---
title: Camera moves, physics and full-body motion — P-Video-2-Pro | Runware Docs
url: https://runware.ai/docs/models/prunaai-p-video-2-pro/guides/camera-and-motion
description: How to direct camera moves in several beats with Pruna P-Video-2-Pro, and how to prompt liquids, fire, fabric and full-body action so they hold together.
---
### [Introduction](https://runware.ai/docs/models/prunaai-p-video-2-pro/guides/camera-and-motion#introduction)

P-Video-2-Pro is the Pruna video model for **shots that travel**. One prompt can take the camera through several moves while everything in front of it keeps behaving like a physical object: water splashes and settles, flames flare and die back, fabric catches the wind, and a runner's stride stays a stride from the first frame to the last.

[Watch video](https://runware.ai/docs/assets/hero.ClyiwwfC.mp4)

*Three camera beats from one prompt, each tied to the runner*

> **Prompt**: A trail runner in a rust windbreaker and black tights runs down a rocky ridge path at sunrise. The camera starts low beside her feet, tracking at running pace as her shoes strike loose gravel. As she reaches a shallow mountain stream, the camera rises to shoulder height and she leaps across it, one foot splashing through the edge of the water and throwing up a spray of droplets. As she lands, the camera slows and pulls back and up into a wide shot that reveals the green valley below as she runs on down the path. One continuous unbroken shot with no cuts. Photoreal outdoor sportswear campaign cinematography, warm low sunlight, no text, no logos. Audio: her steady breathing, shoes crunching on gravel, one sharp splash as she crosses the stream, wind across the ridge, no music, no voice.

Ten seconds and **three camera beats**, each tied to something the runner does. The camera starts at her feet, follows her through the stream and rises into a wide of the valley once she is across. This guide covers writing a move in beats, giving each beat enough time, prompting physics, describing full-body action, and carrying the same language into game cinematics.

### [Writing a move in beats](https://runware.ai/docs/models/prunaai-p-video-2-pro/guides/camera-and-motion#writing-a-move-in-beats)

A beat is **one camera move** with a start and an end, such as a push or a turn. Write the beats in the order they happen and **anchor each change to something in the scene**, a place the camera passes or an event the subject performs. The anchor is what tells the model where one move hands over to the next.

The same loft listing three ways, on one seed, with `settings.promptUpsampling` off so the camera wording is exactly what the model read:

[Watch video](https://runware.ai/docs/assets/beats-one.Clk_1oGR.mp4)

*One move*

> **Prompt**: The camera pushes slowly forward from the front door toward the windows at the far end. A bright converted loft apartment with exposed brick walls, a long oak dining table, a matte black kitchen island and floor-to-ceiling steel-framed windows looking over the city. Late morning daylight. Photoreal real-estate listing cinematography, smooth stabilized camera at eye height, no people, no text. Audio: quiet interior room tone, faint city traffic through the windows, no music, no voice.

[Watch video](https://runware.ai/docs/assets/beats-anchored.E4TtGf4e.mp4)

*Three beats, anchored*

> **Prompt**: The camera starts just inside the front door and glides forward past the dining table. As it reaches the kitchen island it turns left to follow the counter, and once the windows fill the frame it rises slightly and settles on the view over the city. A bright converted loft apartment with exposed brick walls, a long oak dining table, a matte black kitchen island and floor-to-ceiling steel-framed windows looking over the city. Late morning daylight. Photoreal real-estate listing cinematography, smooth stabilized camera at eye height, no people, no text. Audio: quiet interior room tone, faint city traffic through the windows, no music, no voice.

[Watch video](https://runware.ai/docs/assets/beats-listed.DNItw1qi.mp4)

*Three moves, listed*

> **Prompt**: Camera: dolly forward, then pan left, then crane up. A bright converted loft apartment with exposed brick walls, a long oak dining table, a matte black kitchen island and floor-to-ceiling steel-framed windows looking over the city. Late morning daylight. Photoreal real-estate listing cinematography, smooth stabilized camera at eye height, no people, no text. Audio: quiet interior room tone, faint city traffic through the windows, no music, no voice.

The single push is the safe baseline, and it is also the shot every listing already has. The anchored version **turns at the island and rises at the windows** because the prompt says where each move begins. The listed version performs the same three moves at points the model picks, so the turn and the rise happen wherever it decided rather than where the room gives them a reason.

In a walkthrough the anchors double as the tour. The island and the view are what the listing is selling, and **tying a move to each one** is what makes the camera stop on them.

**TypeScript**:

```typescript
import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'prunaai:p-video@2-pro',
  positivePrompt: 'The camera starts just inside the front door and glides forward past the dining table. As it reaches the kitchen island it turns left to follow the counter, and once the windows fill the frame it rises slightly and settles on the view over the city. A bright converted loft apartment with exposed brick walls, a long oak dining table, a matte black kitchen island and floor-to-ceiling steel-framed windows looking over the city. Late morning daylight. Photoreal real-estate listing cinematography, smooth stabilized camera at eye height, no people, no text. Audio: quiet interior room tone, faint city traffic through the windows, no music, no voice.',
  width: 1344,
  height: 768,
  duration: 10,
  seed: 4817305,
  settings: {
    promptUpsampling: 'off'
  },
  deliveryMethod: 'async'
})
```

**Python**:

```python
import asyncio
import os

from runware import Runware

async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "prunaai:p-video@2-pro",
            "positivePrompt": "The camera starts just inside the front door and glides forward past the dining table. As it reaches the kitchen island it turns left to follow the counter, and once the windows fill the frame it rises slightly and settles on the view over the city. A bright converted loft apartment with exposed brick walls, a long oak dining table, a matte black kitchen island and floor-to-ceiling steel-framed windows looking over the city. Late morning daylight. Photoreal real-estate listing cinematography, smooth stabilized camera at eye height, no people, no text. Audio: quiet interior room tone, faint city traffic through the windows, no music, no voice.",
            "width": 1344,
            "height": 768,
            "duration": 10,
            "seed": 4817305,
            "settings": {
                "promptUpsampling": "off"
            },
            "deliveryMethod": "async"
        })

asyncio.run(main())
```

**cURL**:

```bash
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "videoInference",
      "taskUUID": "6d2a9f41-3c87-4e15-b0a2-8f5c1d7e3b94",
      "model": "prunaai:p-video@2-pro",
      "positivePrompt": "The camera starts just inside the front door and glides forward past the dining table. As it reaches the kitchen island it turns left to follow the counter, and once the windows fill the frame it rises slightly and settles on the view over the city. A bright converted loft apartment with exposed brick walls, a long oak dining table, a matte black kitchen island and floor-to-ceiling steel-framed windows looking over the city. Late morning daylight. Photoreal real-estate listing cinematography, smooth stabilized camera at eye height, no people, no text. Audio: quiet interior room tone, faint city traffic through the windows, no music, no voice.",
      "width": 1344,
      "height": 768,
      "duration": 10,
      "seed": 4817305,
      "settings": {
        "promptUpsampling": "off"
      },
      "deliveryMethod": "async"
    }
  ]'
```

**CLI**:

```bash
runware run prunaai:p-video@2-pro \
  positivePrompt="The camera starts just inside the front door and glides forward past the dining table. As it reaches the kitchen island it turns left to follow the counter, and once the windows fill the frame it rises slightly and settles on the view over the city. A bright converted loft apartment with exposed brick walls, a long oak dining table, a matte black kitchen island and floor-to-ceiling steel-framed windows looking over the city. Late morning daylight. Photoreal real-estate listing cinematography, smooth stabilized camera at eye height, no people, no text. Audio: quiet interior room tone, faint city traffic through the windows, no music, no voice." \
  width=1344 \
  height=768 \
  duration=10 \
  seed=4817305 \
  settings.promptUpsampling=off \
  deliveryMethod=async
```

**JSON**:

```json
{
  "taskType": "videoInference",
  "taskUUID": "6d2a9f41-3c87-4e15-b0a2-8f5c1d7e3b94",
  "model": "prunaai:p-video@2-pro",
  "positivePrompt": "The camera starts just inside the front door and glides forward past the dining table. As it reaches the kitchen island it turns left to follow the counter, and once the windows fill the frame it rises slightly and settles on the view over the city. A bright converted loft apartment with exposed brick walls, a long oak dining table, a matte black kitchen island and floor-to-ceiling steel-framed windows looking over the city. Late morning daylight. Photoreal real-estate listing cinematography, smooth stabilized camera at eye height, no people, no text. Audio: quiet interior room tone, faint city traffic through the windows, no music, no voice.",
  "width": 1344,
  "height": 768,
  "duration": 10,
  "seed": 4817305,
  "settings": {
    "promptUpsampling": "off"
  },
  "deliveryMethod": "async"
}
```

> [!NOTE]
> When a shot needs one move on a subject close to the lens and surface detail is what sells it, [P-Video-2](https://runware.ai/docs/models/prunaai-p-video-2) renders that kind of clip at up to 1080p.

### [Giving each beat enough time](https://runware.ai/docs/models/prunaai-p-video-2-pro/guides/camera-and-motion#giving-each-beat-enough-time)

`duration` runs from **5 to 15 seconds and defaults to 5**, which is less than a three-beat move needs. The anchored walkthrough at both lengths, same seed:

[Watch video](https://runware.ai/docs/assets/beats-anchored-short.DY41cGml.mp4)

*duration: 5*

> **Prompt**: The camera starts just inside the front door and glides forward past the dining table. As it reaches the kitchen island it turns left to follow the counter, and once the windows fill the frame it rises slightly and settles on the view over the city. A bright converted loft apartment with exposed brick walls, a long oak dining table, a matte black kitchen island and floor-to-ceiling steel-framed windows looking over the city. Late morning daylight. Photoreal real-estate listing cinematography, smooth stabilized camera at eye height, no people, no text. Audio: quiet interior room tone, faint city traffic through the windows, no music, no voice.

[Watch video](https://runware.ai/docs/assets/beats-anchored.E4TtGf4e.mp4)

*duration: 10*

> **Prompt**: The camera starts just inside the front door and glides forward past the dining table. As it reaches the kitchen island it turns left to follow the counter, and once the windows fill the frame it rises slightly and settles on the view over the city. A bright converted loft apartment with exposed brick walls, a long oak dining table, a matte black kitchen island and floor-to-ceiling steel-framed windows looking over the city. Late morning daylight. Photoreal real-estate listing cinematography, smooth stabilized camera at eye height, no people, no text. Audio: quiet interior room tone, faint city traffic through the windows, no music, no voice.

At five seconds all three beats still happen, **at twice the speed**. The glide and the turn are over in about three seconds, and the camera sweeps where the ten-second version walks. The room is laid out differently too, since a different length is a different generation, so compare the pace rather than the furniture.

**Budget roughly three seconds a beat** when the move should read at walking pace, and count the beats before you set the length. Three beats in five seconds is a sweep. In ten it is a tour. Since the clip bills per second, [speed, quality and size](https://runware.ai/docs/models/prunaai-p-video-2-pro/guides/speed-quality-and-size) covers what the extra seconds cost.

### [Giving physics a cause](https://runware.ai/docs/models/prunaai-p-video-2-pro/guides/camera-and-motion#giving-physics-a-cause)

Liquids, fire and fabric are **where a short prompt costs the most**. "Splashes" names an outcome and leaves the model to invent the event behind it. Describe the event instead: what hits what, how the material reacts, and how it comes to rest.

[Watch video](https://runware.ai/docs/assets/physics-named.B4QC8Mt-.mp4)

*Outcome named*

> **Prompt**: A glass bottle of sparkling lemon soda with a plain yellow label drops into a steel bucket of ice water on a wooden picnic table and splashes. Bright summer daylight, a green park softly out of focus behind. Photoreal beverage advertising cinematography, locked-off close-up at bucket height, no text, no logos. Audio: a loud splash, ice cubes knocking together, distant park ambience, no music, no voice.

[Watch video](https://runware.ai/docs/assets/physics-described.BNQTzevz.mp4)

*Cause, reaction and settle described*

> **Prompt**: A glass bottle of sparkling lemon soda with a plain yellow label drops into a steel bucket of ice water on a wooden picnic table. It punches through the surface, a crown of water rises around its neck and breaks into droplets that rain back down, the ice cubes knock against each other and bob, and the ripples settle against the rim of the bucket. Bright summer daylight, a green park softly out of focus behind. Photoreal beverage advertising cinematography, locked-off close-up at bucket height, no text, no logos. Audio: a loud splash, ice cubes knocking together, distant park ambience, no music, no voice.

Both bottles land in the bucket. The described one **plays the stages in order**: it breaks the surface, throws up a crown of water and lets the ice settle, because each stage was a clause the model could render. The named one leaves the size of the splash to the model, and here that means water over the side and ice cubes scattered across the table.

The same three stages carry over to anything physical:

[Watch video](https://runware.ai/docs/assets/physics-fire.CGrlWNBn.mp4)

*Fat drips, a flame flares, the fire settles*

> **Prompt**: A thick burger patty on the grate of a charcoal grill in an evening backyard. Fat drips from its edge onto the glowing coals, a flame flares up through the grate and licks the side of the patty, then drops back to low flickering flames as the fat burns off. Warm light from the coals. Photoreal food delivery advertising cinematography, locked-off low close-up at grate height, no text, no logos, no people. Audio: loud sizzling fat, a sharp whoosh as the flame flares, crackling coals, no music, no voice.

[Watch video](https://runware.ai/docs/assets/physics-fabric.BcXihXCB.mp4)

*A gust hits, the shirt flies out, then falls loose*

> **Prompt**: A model in a loose white linen shirt and wide-leg sand-colored pants stands on a clifftop path above the sea. A strong gust of wind hits from the left, pressing the shirt flat against her body and snapping the pant legs back, then eases so the fabric falls loose and sways. Medium shot from the knees up so the fabric fills the frame, soft overcast daylight. Photoreal fashion lookbook cinematography, locked-off camera, no text, no logos. Audio: strong wind gusting and then easing, fabric flapping, surf far below, no music, no voice.

**The settle is the stage people leave out**, and it is the one that stops a clip ending mid-reaction. A flare that never drops back reads as a grill fire rather than a sear, and a gust that never eases leaves the shirt stuck mid-flap in the frame a lookbook would use.

### [Full-body motion](https://runware.ai/docs/models/prunaai-p-video-2-pro/guides/camera-and-motion#full-body-motion)

A workout demo needs **the form to be right**, not just a body that moves. Name an exercise and the model recalls roughly what it looks like. Describe the positions in order and the body only has to travel between them.

[Watch video](https://runware.ai/docs/assets/body-named.DZXj9HUp.mp4)

*Exercise named*

> **Prompt**: A woman in a teal sports bra and black leggings on a gray mat in a bright home gym with a white wall behind her. She does one burpee. Full-length vertical framing with her whole body in frame at all times, seen side-on. Even soft daylight. Photoreal fitness-app demonstration cinematography, locked-off camera, no text, no logos. Audio: her breathing, hands and feet landing on the mat, no music, no voice.

[Watch video](https://runware.ai/docs/assets/body-described.DGobETjV.mp4)

*Positions described*

> **Prompt**: A woman in a teal sports bra and black leggings on a gray mat in a bright home gym with a white wall behind her. She drops into a deep squat, plants both hands on the mat, jumps her feet back into a straight plank, jumps her feet back in beside her hands, then leaps straight up with her arms overhead and lands softly. Full-length vertical framing with her whole body in frame at all times, seen side-on. Even soft daylight. Photoreal fitness-app demonstration cinematography, locked-off camera, no text, no logos. Audio: her breathing, hands and feet landing on the mat, no music, no voice.

The described version **passes through every position the prompt lists**: the squat, the plank, the jump back in and the leap. That is the clip a trainer can sign off on. The named one never becomes a burpee: she walks her feet in and out of a plank and never stands up for the jump.

Frame the move full-length and say **the whole body stays in frame**. A hand or foot that leaves the frame has to be reinvented when it returns, and a side-on view shows the joints the movement is about.

Body sequences and camera beats combine. The layup below anchors its one camera beat to the moment he leaves the ground:

[Watch video](https://runware.ai/docs/assets/body-sport.B4BA2hpv.mp4)

*A body sequence with one anchored camera beat*

> **Prompt**: A basketball player in a plain white jersey dribbles at the top of the key on an outdoor court, crosses the ball from his right hand to his left, drives past a defender in a plain black jersey, takes two long steps and lays the ball up off the backboard into the hoop. The camera tracks beside him at waist height, and as he rises for the layup it tilts up to follow the ball into the net. Late afternoon sun, chain-link fence behind the court. Photoreal sports documentary cinematography, no text, no logos, no crowd. Audio: the ball bouncing on asphalt, sneakers scuffing, the ball hitting the backboard and rim, no music, no voice.

Keep the body sequence and the camera move **in separate sentences**, the way that prompt does. Each keeps its own order, and the anchor ("as he rises for the layup") is the single point where the two meet.

### [Stylized and game cinematics](https://runware.ai/docs/models/prunaai-p-video-2-pro/guides/camera-and-motion#stylized-and-game-cinematics)

Without a style instruction the model renders **photoreal footage**. For a game trailer, name the render style in the first clause and rule out live action, since that is the default you are steering away from. Camera beats and physics clauses work the same way inside a stylized render.

[Watch video](https://runware.ai/docs/assets/stylized-game.p9URziON.mp4)

*The same beat and physics language in a stylized render*

> **Prompt**: Stylized cel-shaded 3D racing game cinematic with bold black outlines, flat saturated colors and simple toon lighting, not live-action and not photoreal. A bright orange rally car with plain white number panels powers into a muddy hairpin on a sunny forest stage. As it reaches the apex it swings its rear out into a full sideways slide, and its rear wheels throw a thick arc of brown mud across the track in chunky stylized clumps. The camera starts low at the edge of the apex with the car filling the frame as it slides past, swings around quickly to follow it as it straightens out, then chases close behind its rear bumper up the next straight. Sunny afternoon, tall green pines, puffy stylized clouds. No HUD, no on-screen text, no logos. Audio: the engine revving hard and dropping as the car slides, mud and gravel spraying, a heavy percussion hit as the car exits the corner, no voice.

The mud arc is a physics clause and the chase is two anchored beats, written exactly as they would be for a live-action car ad, so **only the style clause changed**. The exclusions rule out a HUD and on-screen text, which a prompt that says "game" otherwise invites.

### [Tips](https://runware.ai/docs/models/prunaai-p-video-2-pro/guides/camera-and-motion#tips)

1. **Give every beat its own clause.** A push and a turn are two clauses, written in the order they happen.
    
2. **Anchor each change of move.** "As it reaches the kitchen island" tells the model where a turn begins. A bare list of camera terms leaves that to chance.
    
3. **Budget roughly three seconds a beat.** The same three beats in five seconds come back as a sweep, and in ten as a walkthrough.
    
4. **Give physics a cause and a settle.** Name what hits what, how the material responds, and how it comes to rest.
    
5. **Describe positions, not exercise names.** A sequence of body positions produces form you can check. A named exercise produces the model's version of it.
    
6. **Keep the whole body in frame.** Full-length framing and a side-on view keep limbs from leaving and being reinvented.
    
7. **Name the style first for stylized work.** Say what the render is and that it is not live action, then write camera and physics the usual way.
    
8. **Write the sound of the event.** A splash you can see lands harder with a splash you can hear, and [dialogue and audio](https://runware.ai/docs/models/prunaai-p-video-2-pro/guides/dialogue-and-audio) covers directing it.