@docyrus/animaguru 0.35.0 → 0.35.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -61,7 +61,7 @@ CLI 0.33.0 adds **Cartoon Host Explainer** (`cartoon-host-explainer`): the talki
61
61
 
62
62
  CLI 0.34.0 adds `"thumbnail"` to `film.config.json` for a designed cover. It names a PNG, JPEG or WebP in the film's folder, such as generated key art at `production/thumbnail.png`. `npm run export:mp4` saves that image as `FILM.jpg` instead of the `"poster"` frame, cropped to the film's shape, so every re-export keeps the cover and `youtube upload` sets it. A wrong path or an unreadable image stops the export before it renders. `submit --file FILM.mp4` now uses the `FILM.jpg` beside it as the AnimaGuru cover; `--poster FILE` chooses another and `--poster none` skips it. `videos poster VIDEO_ID --file IMAGE --yes` replaces the poster of a video already uploaded, and MCP's `set_video_poster` does the same from a saved project image, a public URL or base64.
63
63
 
64
- CLI 0.35.0 adds photoreal Gaussian splats: `assets generate --type model --model idol --reference SHA` turns the object in a saved image into splats with Sperid Labs' Idol on fal (`--photo` for a camera photo, `--splats` 32,768–1,048,576, `--seed`), saved as `.spz`, upright and facing +Z. New video workspaces include Spark, and the kit's `stage.splat()` draws splats in a three.js shot, sorted for each frame's camera, with `photoView()` to open on the reference image's exact view and `softShadow()` to ground them. See the `animaguru-3d-models` skill.
64
+ CLI 0.35.0 adds photoreal Gaussian splats: `assets generate --type model --model idol --reference SHA` turns the object in a saved image into splats with Sperid Labs' Idol on fal (`--photo` for a camera photo, `--splats` 32,768–1,048,576, `--seed`), saved as `.spz`, upright and facing +Z. New video workspaces include Spark, and the kit's `stage.splat()` draws splats in a three.js shot, sorted for each frame's camera, with `photoView()` to open on the reference image's exact view and `softShadow()` to ground them. See the `animaguru-3d-models` skill. CLI 0.35.1 fixes `photoView()` for product images Idol reads as near-orthographic (a field of view under 0.1°): it widens the view to 6° and moves the camera in, so the shot still opens on the product.
65
65
 
66
66
  CLI 0.16.2 also installs `animaguru-art-motion` for Codex and Claude Code: one skill with 36 English art-treatment references and nine explainer motion grammars, plus AnimaGuru generation, timing, camera and review guidance. Request it explicitly for a custom film treatment; its references are separate from the gallery presets. Source coverage and the upstream MIT notice are included in the skill.
67
67
 
package/dist/animaguru.js CHANGED
@@ -19761,7 +19761,7 @@ var require_ignore2 = __commonJS({
19761
19761
  // cli/package.json
19762
19762
  var package_default = {
19763
19763
  name: "@docyrus/animaguru",
19764
- version: "0.35.0",
19764
+ version: "0.35.1",
19765
19765
  description: "Agent-friendly AnimaGuru CLI built with CrustJS",
19766
19766
  type: "module",
19767
19767
  bin: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docyrus/animaguru",
3
- "version": "0.35.0",
3
+ "version": "0.35.1",
4
4
  "description": "Agent-friendly AnimaGuru CLI built with CrustJS",
5
5
  "type": "module",
6
6
  "bin": {
@@ -214,15 +214,23 @@ export function normalize<T extends THREE.Object3D>(object: T, height: number):
214
214
  return object;
215
215
  }
216
216
 
217
+ /** The narrowest field of view photoView() uses; Idol reports near-orthographic cameras (under 0.1°, ~1,000 units away) for some product shots. */
218
+ const MIN_PHOTO_FOV = 6;
219
+
217
220
  /**
218
221
  Puts the camera where an AnimaGuru splat's reference image was taken from (the asset's result.model.view), after
219
- the splat is placed: a shot that opens on exactly the product photo, then moves into 3D. Returns the point it looks at.
222
+ the splat is placed: a shot that opens on exactly the product photo, then moves into 3D. A field of view under 6°
223
+ is widened to 6°, with the camera moved in along the same line so the product keeps its size in frame. Returns the
224
+ point it looks at.
220
225
  */
221
226
  export function photoView(splat: THREE.Object3D, view: SplatView, camera: THREE.PerspectiveCamera) {
222
227
  splat.updateMatrixWorld(true);
223
- camera.position.copy(splat.localToWorld(new THREE.Vector3(...view.position)));
228
+ const fov = Math.max(view.fov, MIN_PHOTO_FOV);
229
+ const toward = new THREE.Vector3(...view.position);
230
+ toward.multiplyScalar(Math.tan((view.fov * Math.PI) / 360) / Math.tan((fov * Math.PI) / 360));
231
+ camera.position.copy(splat.localToWorld(toward));
224
232
  const target = splat.localToWorld(new THREE.Vector3());
225
- camera.fov = view.fov;
233
+ camera.fov = fov;
226
234
  camera.updateProjectionMatrix();
227
235
  camera.lookAt(target);
228
236
  return target;