Voxel Shapes#

Voxel shapes are the primary tool for building voxel worlds in IOLITE and are exposed in the editor via a component of the same name (see Voxel Shape).

Voxel shapes form a three-dimensional grid where each cell stores either a solid or an air value. Voxels are stored as 8-bit values serving as indices into a color and material palette, allowing you to represent 255 different types plus empty (air) voxels.

  • Shapes support storing up to 256³ voxels

  • Each voxel shape can reference a unique color and material palette

  • Palette index 0 is reserved for marking empty (air) voxels

  • Palette indices 1-255 map to slots 0-254 of the palette

Voxel shapes can either be created procedurally, authored in the editor via the 🧊 Voxel Editing plugin, or imported via the VOX file format generated by voxel editors like Avoyd or MagicaVoxel.

The following screenshot shows a single voxel shape which represents a cow character in the scene:

../_images/cow_voxel_shape.jpg

Since shapes are relatively limited in space, large worlds must be built using compounds of shapes. For procedurally generated terrain, shapes can be used for rendering the world in chunks. This approach is utilized in many games, like, e.g. Minecraft. Depending on the style, characters can be built using more minor compounds of shapes. So, a single shape can be used for the head, one for the torso, and so on. Splitting characters into multiple pieces also allows you to animate the parts of the character separately.

Splitting shapes also has the upside that it allows you to reduce the amount of wasted space to a minimum, which can influence the overall performance and memory usage. This and more is explained in detail in the section Best practices.