Start here
Getting started
The shortest path from numbered source frames to synchronized playback.
Pre-built packages are not currently available. Build OpenVolumetric from source before following the authoring and playback workflow below.
The workflow
numbered images + numbered OBJ meshes + optional audio
↓
OpenVolumetric Encoder
↓
verified MP4 or adaptive package
↓
Unity or Unreal player
OpenVolumetric authoring is available inside both Unity and Unreal. The two interfaces call the same native authoring library and create the same media format.
Prepare the input
Create one directory for texture images and one for OBJ geometry. Filenames must use contiguous matching frame numbers, consistent zero padding, and one extension per sequence.
capture/
├── images/
│ ├── 000110.jpg
│ ├── 000111.jpg
│ └── 000112.jpg
├── geometry/
│ ├── 000110.obj
│ ├── 000111.obj
│ └── 000112.obj
└── audio.wav
The first frame number does not need to be zero. Image and geometry counts and frame numbers must match exactly.
Choose an output
Use a single MP4 for local playback or fixed-quality HTTP delivery. Use an adaptive package when the player should choose or switch between low and high representations.
single output: performance.mp4
adaptive output:
performance/
├── manifest.json
├── low.mp4
└── high.mp4
Encode
- In Unity, open Tools > OpenVolumetric > Encoder.
- In Unreal, open Tools > OpenVolumetric Encoder.
- Select the source directories, optional audio, frame rate, platform preset, and output.
- Enable geometry compression when matching topology should be reused.
- For streaming, enable fragmented MP4 or adaptive output and choose a one-, two-, or four-second fragment duration.
Authoring needs an FFmpeg executable with libx264, libx265, and AAC encoding support. Draco encoding and MP4 packaging are built into OpenVolumetric.
The encoder publishes an output only after reopening it and validating its tracks, timestamps, geometry packets, and seek points.
Play
For a single asset, select the MP4 as a local source or enter its HTTP(S) URL. For an adaptive package, select manifest.json, enable adaptive-manifest input, and choose Auto, Low, or High.
Start with local playback and confirm:
- Geometry and texture appear together.
- Audio starts and stays synchronized.
- Forward and backward seeking works.
- Pause and resume preserve synchronization.
- Looping crosses the end of the presentation cleanly.
Then repeat the same checks over HTTP before deploying to a constrained network or headset.
Next steps
- Follow Building from source to prepare the native libraries and engine integrations.
- Read Authoring for presets and validation.
- Follow the Unity or Unreal integration guide.
- Read Streaming and adaptation before serving content remotely.