The asset pipeline runs once per asset. The shot pipeline repeats for every shot. Hover any node for details.
Click any folder to expand or collapse. The pipeline only reads from 03_Output/ and 02_OUT/ — working files are never referenced by shot files.
CNS_{PROCESS}_{SCENE}_{SHOT}_v{##}.{ext}
CNS_Animation_SC01_SH010_v01.ma ← Maya scene file
CNS_Assembly_SC01_SH010_v01.hipnc ← Houdini scene file
CNS_Previs_SC01_SH010_v01.mov ← playblast — viewport previs clip
CNS_Comp_SC01_SH010_v01.nk ← Nuke comp file
CNS_Render_SC01_SH010_v01.1001.exr ← render — all AOVs as channels inside
CNS_Footage_SC01_SH010_v01.mov ← ProRes 422 final output
01_Animation/ or 02_Assembly/ files, playblast to 07_Footage/01_Previs/, and share the clip for review. Once timing is locked, continue refining the same files.Shots are numbered in increments of 10. A new shot between SH010 and SH020 becomes SH015. Existing shot numbers never change — all file references stay intact throughout the project.
03_Output/ subfolders.Frame 1001 is the first deliverable frame. Nothing before 1001 is ever rendered or delivered. The range before 1001 is preroll — and it matters for both animation and FX.
Animate through the preroll so the character is already in motion by frame 1001. This is required for correct motion blur on the first frame, and gives FX artists a character that's moving correctly when their simulations start.
Simulations need warm-up time with an already-moving character — otherwise the first rendered frames look jumpy. Set DOP start frame or ignition start to at minimum frame 900. Communicate the required preroll length to the animator for each shot.
One working colour space throughout. Converted to delivery format exactly once — at the Nuke output stage.
Creature modelling, rigging, animation. Root prim must be Smart or Dumb — do not rename after first Solaris assembly. Creature animation exports as USD to 01_Animation/02_OUT/. Cameras and lights export as separate USD layers directly to Solaris.
PBR texturing for creatures only. Export EXR texture sets to 03_Output/tex/. Normal map format must be set to OpenGL — not DirectX, which is the default in most game pipelines. Wrong format inverts normals in Karma.
Environment geometry, layout, and previs only. No final rendering. Export USD to 03_Output/usd/ per environment folder. Root prim name matches the environment (e.g. MushroomBiome). Solaris assembles under scene/environment/.
Reads creature animation from 01_Animation/02_OUT/. Runs all simulations: ground interactions, foliage, creature impacts. Shared HDAs in otls/. Hip files saved to 02_Assembly/ per shot.
USD scene assembly per shot. Material bindings via Assign Material LOPs — persist when animation updates. Karma XPU renders to multi-channel EXR. AOV config defined once in CNS_karma_template.usd.
scene/creatures/Smart scene/creatures/Dumb scene/environment/ scene/fx/ scene/lights/ scene/cameras/
Nuke handles per-shot compositing. Reads multi-channel EXR, converts ACEScg → Rec.709 at output only, exports ProRes 422 to 07_Footage/02_Footage/.
Premiere assembles the final cut. Sound and music added here.
When an asset is ready, all deliverables go into 03_Output/. Nothing outside that folder is ever referenced by shot files. Working files stay isolated.
Maya exports USD to 01_Animation/02_OUT/. Houdini reads directly from there. No copying needed. Increment the version on each update.
VFX artist confirms final EXRs are in 05_Renders/SC{##}/CNS_{SC}_{SH}/. Nuke picks up from there. No manual copying.
Playblasts go to 07_Footage/01_Previs/. Nuke comp output goes to 07_Footage/02_Footage/. Increment version on revision, never overwrite. Premiere imports from 02_Footage/.