# Turn a CAD model into a cinematic product animation

Make a product film from real CAD in Blender: a faithful import, joints that move where the design moves, an exploded view and macro close-ups.

Author: John Holliman

Canonical: https://voyager.so/blog/cad-model-to-product-animation

Published: 2026-10-16T23:43:00-07:00
Updated: 2026-10-16T23:43:00-07:00

A CAD assembly already knows how the product is built: every part, where it sits and how the pieces fit. A product film made from it should never have to guess.

For this example, we turned an open-source six-axis robot arm into a 34-second film: macro close-ups, real joint motion, a separation into an exploded view and a reassembly, all from the original geometry.

![Macro close-ups of a red and black robot arm's fans and joints, the whole arm articulating in a white factory bay, its parts separating into an exploded hold and reassembling.](https://cdn.moda.app/voyager/blog/cad-model-to-product-animation/hero-c572a8ba16246021.webp)

[Video: Macro close-ups of a red and black robot arm's fans and joints, the whole arm articulating in a white factory bay, its parts separating into an exploded hold and reassembling.](https://cdn.moda.app/voyager/blog/cad-model-to-product-animation/film-25c781382f62c8c5.mp4)

34 seconds at 21:9, rendered in Blender Cycles from the unmodified CAD geometry. Sound on for the industrial score.

Instrumental industrial score. Titles read Thor, then Inside Thor during the exploded view, then Thor again.

**Keep the geometry exactly as designed, and spend your effort on light, lenses and motion.** If the import is wrong, fix the import. Remodelling a part to make a shot easier turns a product film into an illustration of a product.

## What you need

* **Skills:** `edit-in-blender` and `make-music`.
* **Plan:** Starter or higher, for the generated score. Bring your own track and any plan works; the renders ran locally.
* **Tools:** Blender with Cycles, FFmpeg, and a CAD converter such as FreeCAD for formats Blender cannot open.
* **Made in Voyager:** this example is a real Voyager run of the workflow, from the CAD import to the final render.

## Start with the native assembly

We used [Thor](https://github.com/AngelLM/Thor) by AngelLM and contributors, licensed under [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/). Its native FreeCAD assembly links every subassembly, so the parts arrive in their saved positions with their colors. Native files such as .FCStd or STEP beat STL for that reason. Read the actual license file before you start; a model being downloadable does not make it open source.

```text
Make a [duration]-second [aspect] product animation of [product]
from [CAD file]. Keep it accurate to the CAD: no remodelled geometry.
Finish: [main color] with [secondary materials]. Setting: [environment].
Show it moving at its real joints, with an exploded view and
shallow-focus close-ups of [key features]. Camera style like
[reference]. Music: [brief or existing track]. Record the CAD
license and every change in CREDITS.md.
```

When Blender cannot open the format, convert the native geometry and apply the assembly's saved placements. Our 517 parts were tessellated at 0.06 mm. Then compare the part count and the bounds against the source, and treat any mismatch over about a thousandth of a millimeter as a failed import.

## Check the scale before you light anything

Our scene arrived five times too large. Nothing looked obviously wrong, but depth of field depends on real distances and surface grain depends on real size. One Blender unit has to equal one real unit, with cameras and lights scaled together.

![The assembled red and black robot arm stands upright on its base in a plain dark studio.](https://cdn.moda.app/voyager/blog/cad-model-to-product-animation/first-look-f595d9031667d3db.webp)

The first-look still: the whole assembly in its CAD colors, approved for orientation and overall look before any lighting work.

Approve a single still of the whole product first. It is the cheapest place to catch an upside-down part or a missing subassembly.

## Rig the joints from the CAD

Read each joint's anchor from the native assembly and cross-check the axes against the product's own kinematics, here the [Thor URDF](https://github.com/AngelLM/Thor-ROS). Parent each subassembly to its pivot. Group the exploded view by logical subassembly, so covers, fasteners and drives travel together, and present the spacing as illustrative.

```text
Rig articulation from the CAD's own joint anchors, and check each
axis against [kinematics file]. Parent every subassembly to its
pivot. Animate only the real joints and an illustrative exploded
offset. Group the exploded parts by subassembly.
```

## Shape the light, then the lenses

Flat light made the arm look like a diagram, and a white set with broad fill washed the red out. Area lights fixed it: a warm key, a weak cool fill, a cool rim and a soft top strip, with very little world light. The factory walls, glazing and partitions are separate invented geometry behind the product. Treat the materials as presentation choices, not specifications.

Plan the shots before animating: macro openers, a whole-product reveal, joint details, one continuous separation into a five-second exploded hold, the reassembly and a hero ending. Vary the lenses from 24 mm to 135 mm macro.

Two details made the close-ups work. Focus on the visible surface, found by casting a ray every frame; focusing on a part's center left the macro subjects blurred. And keep the separation and hold on one continuous camera. A cut between two near-identical angles made the parts appear to jump.

## Preview cheaply, then render in sections

Render a reduced preview of the whole cut with temporary music, and iterate on pacing there. Put the titles in a separate overlay scene so lens blur never softens them.

We generated an industrial score through Voyager and fitted it to the cut. Benchmark the heaviest shot before committing: the approved final, Cycles at 32 samples with GPU denoising at 1680×720, took about 35 to 40 minutes for 816 frames on an Apple-silicon laptop. A 256-sample version at 2520×1080 projected four to six hours and was not worth it.

Render each shot in its own process to PNG frames. Metal GPU renders crashed at camera switches, and per-shot frames meant a crash cost one section. Then decode the finished file and look for one-frame lighting flashes before delivering.

We also made a heavier photoreal pass. The earlier satin look was preferred, and it is the version shown here, so keep every approved version rather than overwriting it.

The film adapts Thor and is shared under the same CC BY-SA 4.0 license, with the credit shown on screen. Bring your own assembly, and **let the real parts do the explaining.**


## Make your next project in Voyager

Create an account, download Voyager, and start making.

[Sign up](/sign-up)