vawe-camera

Generates calculated camera movement keyframes for vawe scene JSON using pure camera-move generators.

3|Updated Jun 9, 2026
One-click install
npx skills add https://github.com/Vandit1604/vawe --skill vawe-camera-vandit1604
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: vawe-camera
Source: https://github.com/Vandit1604/vawe/tree/main/skills/vawe-camera
Command: npx skills add https://github.com/Vandit1604/vawe --skill vawe-camera-vandit1604

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Hand-typing camera keyframes in a vawe scene JSON produces jerky, discontinuous motion and forces authors to guess pixel coordinates. This Skill provides calculated camera-move generators that bake smooth, velocity-continuous camera paths directly into the scene data. ## Core Features & Use Cases - Calculated move generators: slowPush, diveIn, travel, truck, panFollow, workspaceZoomOut, orbit, and multiPhase, all emitted with interior linear easing for velocity-continuous paths per rule #125. - Element-targeted camera work: diveIn and travel stations can reference a layer by ID (e.g. "#cta") and automatically resolve centering and scale with margin, instead of hand-computed tx/ty coordinates. - Camera-as-transition: the travel move flies station-to-station across a canvas larger than the frame, replacing cuts entirely, with depth parallax via the plane modifier. - Use Case: Author a product demo film where the camera dives into a CTA button, then travels across a 3x2 station grid revealing each feature beat, with zero cuts and parallax depth between foreground and background layers. ## Quick Start Add a cameraMove block at the root of my vawe scene JSON that dives into the layer with id cta over 2.2 seconds starting at 1 second.

Frequently Asked Questions about vawe-camera

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add camera movement to a vawe scene JSON?

Add a cameraMove block at the scene root, for example {"move": "diveIn", "start": 1.0, "dur": 2.2, "tx": 960, "ty": 420, "to": 1.6}. It bakes into data.camera at load via bakeCameraMove, and you can pass an array of specs to chain multiple moves.

How do I zoom the camera into a specific layer instead of typing coordinates?

Use a target reference like {"move": "diveIn", "target": "#cta", "margin": 0.1}. The baker resolves the layer's authored box, centers on it, and picks the largest scale keeping the box plus margin inside the frame. Layers need numeric x/y and a declared w/h or size.

Why does my chained camera animation look shaky or pulsing?

Chained ease-in-out keyframes cause accelerate-stop-accelerate pulsing, known as the shaking zoom problem in rule #125. The generators emit interior ease:"linear" automatically; if hand-writing keyframes, set interior keys to linear and let only the final leg ease out.

Does the camera reset to the default frame after a move or cut?

No. A move holds its end pose forever until another move changes it; nothing resets at a cut or recipe seam. Author a return leg such as {"move": "slowPush", "to": 1} to come back to the normal frame.

How do I get parallax depth during a camera move?

Apply the plane modifier to separate layers in z, for example {"plane": -600} behind and {"plane": {"z": 240}} in front. Without depth differences every layer moves identically, so the move reads as a flat slide rather than a scene.

What are the limitations of element-targeted camera moves?

Targets need a measurable size: a text layer without w/h is refused rather than guessed, and [data-part] selectors require a live render so they cannot be resolved. Raw tx/ty values on the same spec always take precedence over a target.