Skip to content

Cinematic Videos

A cinematic video is a recording of your model in which every frame is path traced instead of drawn by the real-time renderer. Light bounces between the parts, shadows are soft, metal and glass reflect their surroundings. The simulation runs exactly as in the viewer — conveyors move, robots pick, parts appear at sources and vanish at sinks — but each frame takes seconds instead of milliseconds. A ten-second clip at full HD renders in a couple of hours, typically overnight.

Cinematic videos are part of the commercial edition of realvirtual.

  • Google Chrome (or Chromium) with WebGPU. The recorder starts Chrome itself with WebGPU enabled; check chrome://gpu if it reports that WebGPU is unavailable.
  • A dedicated GPU. A GeForce GTX 1060 with 6 GB renders the reference station at 1920×1080 in about 22 seconds per frame; large plants need more GPU memory (a 7.5-million-triangle line peaked at about 3.4 GB).
  • For the command line only: Node.js and the realvirtual workspace (npm run record), with the viewer running locally (npm run dev). Recording from the viewer needs neither.
  • Disk space for the frames: about 1.3 MB per full-HD frame, so roughly 400 MB for a ten-second clip at 30 fps.

The easiest way is Record video in the ⋯ menu of the view controls at the bottom right of the viewer. It opens a small dialog:

  • Camera — Orbit (from current view) circles once around the point you are looking at, at your current distance and height; Fixed (current view) keeps the camera where it is. Set up the view first, then press the button. Orbit is not available in first-person or follow view.
  • Length, Resolution and Frame rate — 2 s and 640 × 360 are meant for quick previews.
  • Quality — Standard, High and Max record in real-time quality and download the MP4 when done. Cinematic path traces every frame; choose Samples (8 for a preview, 32 for a draft, 64 for the final video), the Look (see Looks), Depth of field, Motion blur with its shutter (see Motion blur) and whether the denoiser runs. Cinematic records at 30 fps.
  • Estimate — how long the recording will take and how large it will be. Very long videos at high resolution and 60 fps are refused because the MP4 is assembled in the browser’s memory.

For a cinematic video, click Choose folder… and pick an empty folder (or the folder of a recording you want to continue). The frames, the cinematic.json file and finally the MP4 are written into that folder. Cinematic recordings always start from the beginning of the simulation, with the camera you set up.

While the recording runs, a progress bar shows the current frame, the time per frame and the remaining time. Keep this tab visible: the browser pauses the GPU work of a hidden tab, so a cinematic recording stops progressing while you look at another tab and continues when you come back. The screen is kept awake while recording.

Stop ends a cinematic recording after the current frame; every frame written so far stays in the folder. To continue later — also after closing the browser — open the same model, press Record video, choose the same folder (or click Use “folder”), and the dialog shows Resume at frame N. If the settings differ from the stored recording, the dialog says which one and offers Use the recording’s settings. A folder that holds frames of a different recording is refused.

Only one cinematic recording can run at a time per browser. Recording from the viewer needs Chrome or Edge with WebGPU; in other browsers the cinematic option is disabled.

Switch the dialog’s Mode from Video to Still image to save a single picture of the 3D scene as a PNG — for a quote, a manual or a product page. The image shows exactly what you see at the moment you click: the current state of the simulation (nothing is reset, the simulation does not take a single step) and the current camera. When the image is saved, the simulation continues from where it was.

  • Resolution — Viewport (the first choice) uses the size of the 3D view on your screen, so the framing is exactly what you see. Fixed sizes from 640 × 360 to 3840 × 2160 are available as well; if their aspect ratio differs from your screen, the picture is cropped differently (the vertical field of view stays). A very large screen is scaled down to the maximum image size.
  • Quality — Standard, High and Max save the image in the same quality as a video frame of that quality, within a second or two. Cinematic path traces the picture; choose Samples (64 for a draft, 256 for a final image, 1024 for close-ups with fine glass or polished metal), the Look, Depth of field and the denoiser. Viewer (as on screen) is the look that comes closest to the screen. A still needs no folder.
  • Save image renders the picture and downloads <model>-<date>-<time>.png. A cinematic image shows its progress and can be cancelled at any time — nothing is saved, and the viewer is back as before. While the traced scene is being prepared the browser is busy for a few seconds; a cancel then takes effect right afterwards.

Raster images contain 3D labels and gizmos like a video, never the selection, hover highlights or the on-screen panels. A cinematic still needs the perspective camera; switch the projection in the settings if the orthographic camera is active. Labels in a Viewport image have the same size relative to the picture as on screen.

Open the model you want to record in the viewer, note its URL, and run the recorder with --quality cinematic and an output folder:

Terminal window
npm run record -- "http://localhost:5173/?project=my_project&doc=my_document" \
--quality cinematic --out-dir recordings/line-cinematic \
--size 1920x1080 --fps 30 --seconds 10

The recorder opens its own Chrome window, loads the model, prepares the traced scene and then renders frame after frame. Each finished frame is saved immediately as frame-000000.png, frame-000001.png, … in the output folder, together with a small cinematic.json that describes the recording. After the last frame the frames are combined into an MP4 in the same folder (or at --mp4 <file>).

While it runs, the recorder prints one line per frame with the time it took and an estimate of the remaining time. The window may be minimised; the result does not depend on it.

The camera options are the same as for regular recordings: --path orbit|presets|fixed, --views, --target, --radius-scale, --sweep and so on.

A video can show your operator panels and live read-outs together with the machine — frame by frame in step with the plant, so a lamp lights up in the same frame in which the cylinder moves. This works for real-time and cinematic videos and for still images.

What appears: operator panels, panels that show signal values, the read-outs of the property inspector and the CONNECT panel. Everything else of the viewer — toolbars, menus, the search, messages and dialogs — is left out, so the picture shows the plant and its HMI, not the editing tools.

In the viewer, set Include HMI in the record dialog to Composite. When you press Start, Chrome asks to share this tab: choose it and confirm. The video then records exactly what the tab shows, at the size of your browser window (the resolution choice disappears). Keep the tab visible while it records; Stop sharing or Esc ends the recording. A still image with the HMI shows the state at the moment sharing was granted.

On the command line, pass --hmi:

  • --hmi composite writes one MP4 with machine and HMI combined.
  • --hmi layer writes the machine video exactly as without HMI, plus the HMI alone as a sequence of transparent PNG images (hmi-000000.png, …) to combine in your editing program.
  • --hmi-open <panel> opens an operator panel for the whole recording (use the panel’s id; connect opens the CONNECT panel). An unknown id is refused with the list of panels that can be shown.
  • Real-time recordings with the HMI need a new, empty --out-dir and an --mp4 file.
  • --still <file.png> --at 0.5 saves a single image 0.5 seconds of simulation time after the start, with or without the HMI.
Terminal window
npm run record -- "http://localhost:5173/?project=my_project&doc=my_document" \
--path fixed --size 1920x1080 --seconds 10 \
--hmi composite --hmi-open operator-panel \
--out-dir recordings/line-hmi --mp4 recordings/line-hmi.mp4

Keep the recorder’s window visible while it runs; a hidden window cannot take the HMI pictures.

Samples (--samples, default 64) is the number of light paths per pixel and frame. More samples mean less noise and proportionally more time. A denoiser removes the remaining noise.

SamplesTime per frame (GTX 1060, 1920×1080)Use
32about 12 sdrafts, camera checks
64 (default)about 22 sfinal videos
128about 41 sclose-ups with a lot of glass or polished metal

Denoiser (--denoise, default aux): aux uses the surface colours and normals to keep edges and glass sharp, noaux uses the image alone and is slightly softer, off shows the raw path-traced image.

Before a long render, record a short draft with a small size — for example --size 640x360 --samples 16 --seconds 2 — to check the camera path and framing in minutes.

A look decides what surrounds your machine and how it is lit. Choose it in the dialog or with --look:

LookWhat you get
Studio (default)A light-grey photo studio: a seamless backdrop that curves from the floor into the wall behind the machine, three large soft lights (key, fill and a rim light from behind) and a studio environment for reflections. The backdrop follows your camera — a fixed view or a short camera move gets a back wall, a full orbit gets a backdrop all around.
ViewerExactly what the viewer shows: the environment of its visual preset, its lights and background, on a neutral floor.
HallAn industrial hall around the machine, visible in the background and in reflections.
OutdoorA bright sky with sun and clouds above a ground plane.

Every look except Viewer uses a filmic tone curve that keeps bright highlights from clipping, and a subtle vignette darkens the corners of the image (--vignette 0.15 by default; --vignette 0 turns it off). To light a look with your own equirectangular HDR image, pass --hdr my-environment.hdr — the look’s backdrop and lights stay.

Cinematic videos give typical machine materials a more realistic finish — only in the video, never in the viewer:

  • Glass (transparent parts, or parts named glass, Glas or Scheibe) refracts and reflects like real glass.
  • Brushed metal (metallic parts, or parts named alu/aluminium) gets a satin sheen.
  • Paint (strongly coloured, smooth parts, or parts named lack/paint) gets a clear-coat gloss.
  • Rubber (dark, rough parts, or parts named Gummi/rubber) becomes matte.
  • Signal-tower lamps glow in their current colour while they are on.

To decide yourself, put the rules into a cinematic-materials.json and pass it with --material-overrides:

{
"rules": [
{ "match": "Schutzscheibe", "preset": "glass" },
{ "match": "^Rahmen", "preset": "paint", "params": { "color": "#c8102e" } },
{ "match": "Kabel", "preset": "none" }
]
}

match is a regular expression tested against part and material names (case does not matter), preset is one of glass, brushedMetal, paint, rubber or none. Rules only reach parts that keep their name in the viewer (textured parts and parts with their own component); everything else is classified by its colour and finish. --no-material-presets renders the materials exactly as the viewer has them.

Turn on Depth of field in the dialog or pass --dof to focus on the point the camera looks at — the orbit centre, the target of a fixed view, or the target of the camera bookmarks while the camera moves between them. Everything in front of and behind it gets softly out of focus. --fstop sets the aperture (default 5.6; smaller numbers blur more).

Like a film camera, a cinematic video blurs what moves during a frame: conveyors, turning axes, robots, travelling parts and the camera itself. Without it, fast motion looks choppy because every frame is a razor-sharp instant. Motion blur is on by default for cinematic videos and costs only a few percent more time per frame.

  • Shutter — how long the virtual shutter stays open, as an angle like on a film camera. 180° (the default) is the classic film look; 90° blurs less and looks crisper, 270° blurs more. In the dialog choose Motion blur on or off and the Shutter; on the command line pass --motion-blur on|off and --shutter 90|180|270. --blur-subframes (default 8) sets how finely the motion within one frame is resolved; the default is right for almost every video.
  • Fewer than 8 samples render without motion blur — a quick preview stays sharp, and the recorder says so.
  • Things that jump instead of moving — a part appearing at a source or vanishing at a sink, a reset, an axis set to a new position at once — are shown sharp at their final place rather than smeared across the jump.

Motion blur applies to videos only; a still image is always a sharp instant.

A long render can be interrupted at any time: press Ctrl+C, close the window, or restart the computer. Every frame on disk stays valid. To continue, run exactly the same command again — the recorder finds the first missing frame, fast-forwards the simulation to it without rendering, and continues from there.

A recording started on the command line can be continued with Record video in the viewer, as long as the settings and the camera view match. (The other direction is not possible: a viewer recording stores its camera as absolute positions, which the command line cannot express.)

The recorder only resumes when the output folder belongs to the same recording. If you changed an option, the look, the material rules, the motion blur, the model or the HDR image in between, it refuses and names what differs; use a new --out-dir or delete the old frames to start over. A recording made with motion blur is never continued without it, and the other way round. Recordings made before looks or motion blur existed cannot be continued.

When the recorder stops on its own because a frame did not progress or the GPU was reset by the driver, it ends with exit code 3 — run the command again to resume.

  • Overlays are not rendered: 3D labels, gizmos, selection outlines and sensor visualisation do not appear in cinematic videos. Operator panels and read-outs can be added with the HMI (see Showing the HMI in a video); other side panels are not recorded.
  • Special effects drawn by custom shaders, such as laser beams or animated pipe flow, are not part of the traced scene.
  • Glowing lamps light up in the video, but they do not cast coloured light far onto their surroundings; small lamps can look slightly grainy at low sample counts.
  • Material rules reach named parts only: parts that the viewer merges for speed keep no name and are classified by colour and finish.
  • Random behaviour: models that use unseeded randomness (for example a Source with random spacing) produce the same motion when rendered in one go, but a resumed recording may differ from an uninterrupted one. The recorder warns about this when it resumes.
  • The browser is busy while the scene is prepared (a few seconds for a station, up to a minute for a large plant); an interruption takes effect afterwards.