Optimized geometry for static voxel maps using chunked greedy meshing. More...
| Import Statement: | import Clayground.Canvas3D |
VoxelMapGeometry generates efficient mesh geometry for voxel-based 3D structures. It uses a greedy meshing algorithm to combine adjacent voxels of the same color into larger quads, significantly reducing vertex count for large voxel maps.
The volume is split into cubic chunks (see chunkSize). Only chunks touched by an edit are re-meshed, and meshing runs on worker threads; the resulting per-chunk buffers are concatenated into the single geometry buffer on the main thread. This keeps the geometry a single Model (one draw call, externally instanceable) while making incremental edits cheap.
This geometry is used internally by StaticVoxelMap and is ideal for voxel structures that don't change every frame.
Example usage:
import QtQuick3D import Clayground.Canvas3D Model { geometry: VoxelMapGeometry { voxelCountX: 10 voxelCountY: 10 voxelCountZ: 10 voxelSize: 1.0 } materials: CustomMaterial { } }
See also StaticVoxelMap and VoxelMapInstancing.
chunkSize : int |
Edge length (in voxels) of a meshing chunk.
The volume is divided into cubic chunks of this size. Only chunks affected by an edit are re-meshed, off the main thread. Defaults to 32. Changing this triggers a full re-mesh.
spacing : real |
Gap between adjacent voxels in world units.
Defaults to 0.0 for solid voxel structures.
vertexCount : int |
The current number of vertices in the generated geometry.
Useful for monitoring mesh complexity after greedy meshing optimization.
voxelCountX : int |
Number of voxels along the X axis.
voxelCountY : int |
Number of voxels along the Y axis (height).
voxelCountZ : int |
Number of voxels along the Z axis.
voxelSize : real |
Size of each voxel cube in world units.
Defaults to 1.0.
void commit() |
Triggers geometry regeneration after batch voxel operations.
Call this once after multiple setVoxel or fill operations to update the mesh efficiently.
void fillBox(int cx, int cy, int cz, int width, int height, int depth, list colorDistribution, real noiseFactor) |
Fills a box-shaped region with voxels.
Creates a rectangular region starting at (cx, cy, cz) with the specified dimensions. Colors are distributed according to colorDistribution weights.
void fillCylinder(int cx, int cy, int cz, int r, int height, list colorDistribution, real noiseFactor) |
Fills a cylindrical region with voxels.
Creates a cylinder with center base at (cx, cy, cz), radius r, and specified height. Colors are distributed according to colorDistribution weights.
void fillSphere(int cx, int cy, int cz, int r, list colorDistribution, real noiseFactor) |
Fills a spherical region with voxels.
Creates a sphere centered at (cx, cy, cz) with radius r. The colorDistribution parameter specifies colors and their weights. The noiseFactor adds randomness to the sphere surface.
bool loadFromFile(string path) |
Loads a voxel map from a text file.
Returns true if the load was successful.
bool saveToFile(string path) |
Saves the voxel map to a text file.
Returns true if the save was successful.
void setVoxel(int x, int y, int z, color color) |
Sets the color of the voxel at the specified coordinates.
Setting a voxel to transparent removes it from the map.
See also voxel().
color voxel(int x, int y, int z) |
Returns the color of the voxel at the specified coordinates.
Returns transparent if the coordinates are out of bounds or the voxel is empty.
See also setVoxel().