Skip to content

enkisoftware/OpenVoxelFileFormat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 

Repository files navigation

OpenVoxelFileFormat

Open Voxel File Format Specification

This is intended as a simple format for exchanging voxel scenes, models and animations etc. There will be a binary voxel data representation with some compression, but extremely highly compressed voxel data is not a primary goal.

Status

The format is currently in the requirements definition and early design stage.

Requirements

Note that these are currently fairly high level to permit some flexibility in the implementation.

Scene Description

  1. As simple as possible - implementations should be able to be lightweight
  2. Open and extensible
  3. Arbitrary transforms
  4. Animation:
    1. Transform animations
    2. Bone animations (per voxel weights can be included in voxel data)
    3. Frame-animations (stretch goal)
    4. Multiple animation tracks
  5. Materials
    1. PBR material properties including those needed for transmissive volumes
    2. Multiple material palettes
  6. Voxel Data (see below)

Voxel Data

  1. Voxels with arbitrary data/attributes including indexed materials (similar to how vertex data can be specified, see below)
  2. No arbitrary limitation on size of voxel volume
  3. Ability to efficiently handle sparsity
  4. Relatively efficient but simple storage and serialization performance

Simplified example Voxel attributes, can potentially be interleaved or separate streams:

Usage,          Number, Type
RGBA_COLOR,     4,      UNSIGNED_BYTE
MATERIAL_INDEX, 1,      UNSIGNED_BYTE
MATERIAL_INDEX, 1,      UNSIGNED_SHORT
DENSITY,        1,      FLOAT32
WEIGHTS_n       4,      UNSIGNED_NORMALIZED_BYTE

See the Voxel data format issue

Implementation Notes

The glTF file format with an extension for voxel data and material palettes meets these goals. The .glb binary format is limited to a uint32 length and single uint32 length binary buffer, which is likely too short for large voxel scenes. Thus either external data (which is part of the spec) may need to be used or an alternative binary format might be required. A compressed zip like format may be a good way to handle bundling a gltf file and its associated binary data files.

A voxel data extension has been propossed for glTF, PR #2496 however this does not look like it would meet our Voxel Data goals, but it might be worth experimenting with to check.

See the issue Implementation decision: modify existing format or custom

About

Open Voxel File Format Specification

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published