Canvas3D Plugin
Overview
The Canvas3D plugin provides components for creating 3D visualizations in
Clayground applications. It offers primitives for 3D boxes, lines, and
voxel-based structures with support for custom edge rendering, toon shading,
and efficient batch rendering.
Getting Started
To use Canvas3D components, import the module in your QML file:
import Clayground.Canvas3D
Minimal Example
Here’s a simple example showing a red box with dark edges:
import QtQuick
import QtQuick3D
import Clayground.Canvas3D
View3D {
anchors.fill: parent
PerspectiveCamera {
position: Qt.vector3d(0, 200, 300)
eulerRotation.x: -30
}
DirectionalLight {
eulerRotation.x: -30
castsShadow: true
shadowFactor: 78
shadowMapQuality: Light.ShadowMapQualityVeryHigh
}
Box3D {
width: 100
height: 100
depth: 100
color: "red"
useToonShading: true
}
}
Core Components
Box3D
The Box3D component creates a 3D box with customizable dimensions, edge
rendering, and cartoon-style shading.
Use scale properties to create pyramids, trapezoids, and other shapes:
// Pyramid
Box3D {
width: 100; height: 100; depth: 100
scaledFace: Box3DGeometry.TopFace
faceScale: Qt.vector2d(0.1, 0.1)
}
Edge Mask Usage
Control which edges are visible:
Box3D {
edgeMask: topEdges | bottomEdges // Only horizontal edges
}
Lines
Canvas3D provides three components for drawing lines in 3D space:
- Line3D: Simple wrapper for drawing a single line
- MultiLine3D: Efficient component for drawing multiple lines in a single draw call
- BoxLine3D: Creates a line using connected box segments for thicker, more visible lines
Voxel Maps
Voxel maps create 3D structures composed of cubic voxels with support for both
dynamic updates and static optimization.
- DynamicVoxelMap: Best for voxel maps that change frequently
- StaticVoxelMap: Optimized for large, static voxel structures using greedy meshing
Toon Shading
Canvas3D implements cartoon-style rendering using a half-lambert lighting
model, providing flat, stylized lighting with distinct shadow boundaries.
Optimal Lighting Setup
Toon shading requires specific shadow settings for the characteristic cartoon look:
DirectionalLight {
eulerRotation.x: -35 // Optimal lighting angle
castsShadow: true
shadowFactor: 78 // Strong shadows
shadowMapQuality: Light.ShadowMapQualityVeryHigh // Crisp edges
pcfFactor: 2 // Minimal softening
shadowBias: 18 // Artifact prevention
}
Usage
Enable toon shading on any Canvas3D component:
Box3D {
useToonShading: true
edgeColorFactor: 2.0 // Increase edge contrast for cartoon look
}
StaticVoxelMap {
useToonShading: true // Creates Minecraft-like blocky aesthetics
}
Coordinate System
Canvas3D uses Qt Quick 3D’s coordinate system:
- X-axis: Points right
- Y-axis: Points up
- Z-axis: Points toward the viewer
Voxel Coordinates
The relationship between voxel coordinates and world positions:
worldPosition = voxelCoordinate * (voxelSize + spacing) + voxelOffset
Example dimensions calculation:
StaticVoxelMap {
voxelCountX: 10
voxelCountY: 5
voxelCountZ: 10
voxelSize: 2.0
spacing: 0.5
// width = 10 * (2.0 + 0.5) - 0.5 = 24.5
// height = 5 * (2.0 + 0.5) - 0.5 = 12.0
// depth = 10 * (2.0 + 0.5) - 0.5 = 24.5
}
Choosing Voxel Map Types
- DynamicVoxelMap: Frequent updates, smaller maps (< 50^3 voxels)
- StaticVoxelMap: Static content, large maps, performance-critical applications
Optimization Tips
- Batch Operations: Call
model.commit() once after multiple voxel changes
- Edge Control: Disable
showEdges for large voxel maps
- Shadow Quality: Balance shadow settings with performance needs
Examples
Toon-Shaded Voxel Terrain
import QtQuick
import QtQuick3D
import Clayground.Canvas3D
View3D {
environment: SceneEnvironment {
clearColor: "#87CEEB" // Sky blue
backgroundMode: SceneEnvironment.Color
}
PerspectiveCamera {
position: Qt.vector3d(200, 300, 400)
eulerRotation.x: -30
}
DirectionalLight {
eulerRotation.x: -35
eulerRotation.y: -70
castsShadow: true
shadowFactor: 78
shadowMapQuality: Light.ShadowMapQualityVeryHigh
pcfFactor: 2
shadowBias: 18
}
StaticVoxelMap {
id: terrain
voxelCountX: 80
voxelCountY: 30
voxelCountZ: 80
voxelSize: 5
useToonShading: true
showEdges: false // Avoid artifacts with terrain
Component.onCompleted: {
// Create layered terrain
for (let x = 0; x < voxelCountX; x++) {
for (let z = 0; z < voxelCountZ; z++) {
let h = Math.sin(x * 0.1) * Math.cos(z * 0.1) * 8 + 15
for (let y = 0; y < h; y++) {
let color = y < 5 ? "#8B4513" : // Dirt
y < 12 ? "#228B22" : // Grass
"#708090" // Stone
set(x, y, z, color)
}
}
}
model.commit()
}
}
}
Best Practices
Toon Shading
- Use strong directional lighting with high shadow factor (70-80)
- Enable crisp shadow maps (VeryHigh quality, low PCF factor)
- Increase
edgeColorFactor for enhanced cartoon aesthetics
- Consider scene ambient lighting balance
- Choose appropriate voxel map type based on update frequency
- Batch voxel operations when possible
- Use edge rendering selectively on large scenes
- Profile shadow quality vs. performance trade-offs
Visual Design
- Consistent lighting setup across toon-shaded objects
- Use the demos (
Box3DDemo.qml, VoxelDemo.qml) as implementation references
- Test both rendering modes during development
Implementation References
For developers wanting to understand or extend the system:
- Toon Shading:
box3d.frag, voxel_map.frag - complete shader implementations
- Edge Rendering:
shouldShowEdge() function, grid line calculations
- Greedy Meshing:
VoxelMapGeometry::generateGreedyMesh()
- Demo Implementation:
Box3DDemo.qml, VoxelDemo.qml - complete working examples
API Reference
BenchLogger
Samples a View3D's renderStats at a fixed interval and writes them to a CSV file
View full documentation
Properties
| Name | Type | Description |
extra | var | Map of extra column name to value or zero-argument function. Each entry adds one CSV column; functions are evaluated per sample. The key set is captured when logging starts |
intervalMs | int | Sampling interval in milliseconds |
outputPath | string | Destination CSV file path (plain path or file:// URL) |
running | bool | Set true to open the file and start sampling, false to flush, close and stop |
view3D | var | View3D whose renderStats are sampled. Required |
Methods
| Method | Returns | Description |
annotate(string key, var value) | void | |
Signals
| Signal | Description |
sampleTaken() | |
Box3D
A 3D box with customizable dimensions, edge rendering, and toon shading
View full documentation
Properties
| Name | Type | Description |
allEdges readonly | int | Convenience constant for showing all edges |
color | color | Base color of the box |
depth | real | Depth of the box along the Z axis |
edgeColorFactor | real | Darkening factor for edges (0-1) |
edgeMask | int | Bitmask controlling which edges are visible |
edgeThickness | real | Thickness of edge lines |
faceScale | vector2d | Scale factor for the selected face |
height | real | Height of the box along the Y axis |
scaledFace | enumeration | Which face of the box should be scaled |
showEdges | bool | Whether to render dark edge lines |
useToonShading | bool | Enables cartoon-style rendering |
width | real | Width of the box along the X axis |
Box3DGeometry
Custom geometry for 3D boxes with edge rendering support
View full documentation
Properties
| Name | Type | Description |
edgeColorFactor | real | Darkening factor for edge colors |
edgeMask | int | Bitmask controlling which edges are visible |
edgeThickness | real | Thickness of edge lines in normalized units |
faceScale | vector2d | Scale factor applied to the selected face |
scaledFace | enumeration | Which face of the box should be scaled |
showEdges | bool | Whether to render edge lines on the box |
size | vector3d | Dimensions of the box as a 3D vector (width, height, depth) |
BoxLine3D
Renders a 3D line as connected box segments using GPU instancing
View full documentation
Properties
| Name | Type | Description |
color | color | Of the line |
material | Material | Used for rendering |
positions | vector3d | List of 3D positions defining the line path |
width | real | Of the box-shaped line segments |
Connector3D
A dynamic connection line between two scene nodes, drawn in a batch
View full documentation
Properties
| Name | Type | Description |
color | color | Connector color. Defaults to the layer's color |
from | QtObject | Node the connector starts at (its scene position is tracked) |
layer | ConnectorLayer3D | This connector draws into |
styleId | int | Style-table row selecting dash/cap/opacity. Defaults to the layer's styleId. See LineBatch3D::styles |
to | QtObject | Node the connector ends at (its scene position is tracked) |
width | real | Connector width. Defaults to the layer's width |
ConnectorLayer3D
Draws many dynamic Connector3D lines as a single instanced batch
View full documentation
Properties
| Name | Type | Description |
arcHeight | real | Arc lift as a fraction of link length (only when segmentsPerLink > 1) |
color | color | Default line color for connectors that do not set their own |
count readonly | int | Number of connectors currently drawn in the batch |
depthBias | real | Depth bias forwarded to the batch, see LineBatch3D::depthBias |
flowTime | real | Animation clock forwarded to the batch, see LineBatch3D::flowTime |
segmentsPerLink | int | Number of straight segments each connector is drawn with |
styleId | int | Default styleId for connectors that do not set their own |
styles | list | Style table forwarded to the batch, see LineBatch3D::styles |
viewportSize | vector2d | Enclosing View3D pixel size, forwarded to the batch. Required in Pixel width mode |
width | real | Default line width for connectors that do not set their own |
widthUnits | enumeration | How connector width is interpreted, see LineBatch3D::widthUnits |
DynamicInstances3D
Fast, general-purpose dynamic instance table for animated fleets
View full documentation
Properties
| Name | Type | Description |
bytesLastUpload readonly | int | Size in bytes of the instance data handed to the renderer on the last upload (count * 80) |
capacity | int | Preallocated number of entries the table can hold |
count readonly | int | Number of active entries currently rendered |
packMsLast readonly | real | Wall-clock milliseconds spent packing the last updatePoses call |
uploadsPerSecond readonly | real | Rolling rate of updatePoses calls over the last second |
Methods
| Method | Returns | Description |
setBulk(list scales, list colors, list customData) | void | |
setEntryColor(int i, color c) | void | |
setExtents(vector3d min, vector3d max) | void | |
updatePoses(int first, ByteArray poses) | void | |
DynamicVoxelMap
Voxel map optimized for frequent updates using GPU instancing
View full documentation
Properties
| Name | Type | Description |
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 |
Label3D
A camera-facing callout label anchored to a 3D node or position
View full documentation
Properties
| Name | Type | Description |
anchorNode | QtObject | Node the label tracks; its scene position drives placement |
anchorPosition | vector3d | Fixed scene position to anchor to when anchorNode is null |
camera | QtObject | The label faces. Defaults to view.camera |
distanceFade | bool | When true, fade the label out with camera distance (Screen mode) |
fadeFar | real | Camera distance at and beyond which the label is fully transparent |
fadeNear | real | Camera distance at and below which the label is fully opaque |
iconSource | url | Optional icon shown left of the text. Empty hides it |
labelOffset | vector3d | World-space offset of the pill from the anchor |
labelStyle | QtObject | Grouped pill styling: colors, radius, padding, halo and font |
leaderStyle | QtObject | Grouped leader-line styling: color and width (pixels) |
maxScreenSize | real | Upper clamp for the on-screen pill height in pixels (0 disables) |
minScreenSize | real | Lower clamp for the on-screen pill height in pixels (0 disables) |
priority | int | Ordering hint for the future declutter manager; higher wins |
scaleQuantum | real | Relative scale change required before the pill is re-scaled (0 disables) |
screenHeight | real | Target on-screen pill height in pixels (Screen size mode) |
showLeader | bool | When true, draw a thin line from the pill edge to the anchor |
sizeMode | int | Active size mode, see SizeMode |
text | string | Label text |
view | QtObject | Enclosing View3D, used to resolve the camera, size the leader and register with the per-view label registry |
worldHeight | real | Pill height in world units (World size mode) |
LabelBatch3D
Renders thousands of SDF text labels in a few instanced draw calls
View full documentation
Properties
| Name | Type | Description |
ascentPx readonly | real | Font ascent in atlas base pixels (for mapping a world text height onto setCurvedLabels sizes) |
atlasHeight readonly | int | Current glyph-atlas height in texels |
atlasWidth readonly | int | Current glyph-atlas width in texels |
batchOpacity | real | Batch-wide opacity multiplier (0..1). Default 1 |
capHeightPx readonly | real | Font cap height in atlas base pixels |
count readonly | int | Number of labels currently in the batch |
depthBias | real | Shifts the glyph depth toward the camera (0..~0.001). Default 0 |
descentPx readonly | real | Font descent in atlas base pixels |
font | QtObject | Grouped font config for the shared glyph atlas |
glyphCount readonly | int | Number of glyph instances currently drawn |
halo | bool | Whether glyphs get a halo outline for busy backgrounds. Default true |
haloColor | color | Halo color (a dark halo is the robust default on bright and dark) |
haloWidth | real | Halo band width in SDF units past the glyph edge (0..0.5). Default 0.18 |
labels | list | Declarative list of labels |
orientation | int | Active orientation, one of the Orientation values. Default Billboard. Only applies in World size mode |
pill | bool | Whether a rounded background pill is drawn behind each label. Default false |
pillColor | color | Pill fill color (dark semi-transparent default) |
pillPadding | real | Padding in base pixels between the text box and the pill edge |
pillRadius | real | Pill corner radius in base pixels |
shapeMsLast readonly | real | Wall-clock milliseconds spent shaping on the last setLabels |
sizeMode | int | Active size mode, one of the SizeMode values. Default Screen |
viewportSize | vector2d | Pixel size of the enclosing View3D |
writesDepth | bool | Whether inked glyph fragments write depth. Default false |
Methods
| Method | Returns | Description |
glyphAdvances(string text, real size) | list | |
priorities() | list | |
setCurvedLabels(list labels) | void | |
setLabels(list labels) | void | |
updatePositionsBulk(ByteArray positions, int first) | void | |
LabelBatchInstancing
Per-glyph instance table for the batched LabelBatch3D renderer
View full documentation
Properties
| Name | Type | Description |
labels | list | Declarative list of labels to render |
Methods
| Method | Returns | Description |
glyphAdvances(string text, real size) | list | |
setCurvedLabels(list labels) | void | |
updatePositionsBulk(ByteArray positions, int first) | void | |
LabelGlyphAtlas
Incremental single-channel SDF glyph atlas for LabelBatch3D
View full documentation
Properties
| Name | Type | Description |
baseSize | int | Rasterization size in pixels. Higher = crisper when magnified, larger atlas. Changing it clears the atlas |
fontFamily | string | Font family baked into the atlas. Changing it clears the atlas |
fontWeight | int | Font weight (e.g. 400 normal, 700 bold). Changing it clears the atlas |
LabelPillInstancing
Per-label pill-background instance table for LabelBatch3D
Line3D
A simple 3D line connecting multiple points
View full documentation
Properties
| Name | Type | Description |
color | color | Of the line |
coords | vector3d | List of 3D points defining the line path |
width | real | Of the line in world units |
LineBatch3D
Renders very large sets of styled polylines in a single instanced draw call
View full documentation
Properties
| Name | Type | Description |
count readonly | int | Number of lines currently in the batch |
depthBias | real | Pulls the lines toward the camera to win depth fights |
flowAutoPlay | bool | Convenience clock that advances flowTime automatically |
flowTime | real | Animation clock (seconds) driving every flowing/pulsing style |
lines | list | Declarative list of styled polylines (convenience path) |
opaque | bool | Renders the batch as opaque geometry with early depth rejection |
orientation | int | Active ribbon orientation, one of the Orientation values |
styles | list | Per-styleId table of pattern, cap shape, opacity and effects |
viewportSize | vector2d | Pixel size of the enclosing View3D |
widthUnits | int | Active width interpretation, one of the WidthUnits values |
Methods
| Method | Returns | Description |
pathLength(int lineId) | real | |
positionAt(int lineId, real distance) | vector3d | |
setBulk(ByteArray positions, ByteArray startIndices, ByteArray colors, ByteArray widths, ByteArray styleIds) | void | |
updateEndpointsBulk(ByteArray positions) | void | |
updateLinePoints(int lineIndex, list points) | void | |
updatePolylinesBulk(ByteArray positions, int pointsPerLine) | void | |
LineBatchGeometry
Base quad geometry for the instanced LineBatch3D renderer
View full documentation
Properties
| Name | Type | Description |
boundsMax | vector3d | Maximum corner of the axis-aligned bounding box covering all lines |
boundsMin | vector3d | Minimum corner of the axis-aligned bounding box covering all lines |
LineBatchInstancing
Per-line instance table for the batched LineBatch3D renderer
View full documentation
Properties
| Name | Type | Description |
count readonly | int | Number of lines (polylines) currently in the batch |
lines | list | Declarative list of styled polylines |
Methods
| Method | Returns | Description |
pathLength(int lineIndex) | real | |
positionAt(int lineIndex, real distance) | vector3d | |
setBulk(ByteArray positions, ByteArray startIndices, ByteArray colors, ByteArray widths, ByteArray styleIds) | void | |
updateEndpointsBulk(ByteArray positions) | void | |
updateLinePoints(int lineIndex, list points) | void | |
updatePolylinesBulk(ByteArray positions, int pointsPerLine) | void | |
LineInstancing
GPU instancing for rendering lines as connected box segments
View full documentation
Properties
| Name | Type | Description |
color | color | Applied to all line segment instances |
positions | list<vector3d> | List of 3D positions defining the line path |
width | real | Of the line segments in world units |
LineStyleTextureData
Bakes a list of line styles into a small RGBA32F lookup texture
View full documentation
Properties
| Name | Type | Description |
styleCount readonly | int | Number of style columns in the texture (always at least 1) |
styles | list | Declarative list of line styles baked into the texture |
MultiLine3D
Renders multiple 3D line paths in a single draw call
View full documentation
Properties
| Name | Type | Description |
color | color | Of all lines. Defaults to red |
coords | list<vector3d> | Array of line paths, each path being an array of 3D points |
orientation | int | LineBatch3D.Billboard (default) or LineBatch3D.Flat |
width | real | Of all lines in world units. Defaults to 1 |
OrbitCamera3D
An orbit camera on a leash: circles a pivot, never dives through the floor
View full documentation
Properties
| Name | Type | Description |
camera readonly | alias | |
camera \readonly readonly | PerspectiveCamera | |
distance | real | |
distance \brief Distance to the pivot. | real | |
fieldOfView | real | |
fieldOfView \brief Vertical FOV of the camera. | real | |
maxDistance | real | |
maxDistance \brief Furthest allowed retreat. | real | |
maxPitch | real | |
maxPitch \brief Steepest allowed angle (< 90). | real | |
minDistance | real | |
minDistance \brief Closest allowed approach. | real | |
minHeight | real | Lowest the camera may sit above the pivot plane |
minPitch | real | |
minPitch \brief Flattest allowed angle. | real | |
pitch | real | |
pitch \brief Angle above the pivot plane, degrees. | real | |
pivot | vector3d | |
pivot \brief The point the camera looks at. | vector3d | |
yaw | real | |
yaw \brief Angle around the pivot, degrees. | real | |
Methods
| Method | Returns | Description |
applyState(var s) | void | |
clamp() | void | |
frame(var points, real pad) | void | |
orbitBy(real dYaw, real dPitch) | void | |
state() | var | |
zoomBy(real factor) | void | |
PathLabel3D
Street-name style text laid flat on the ground, following a line
View full documentation
Properties
| Name | Type | Description |
at | real | Path distance (world units) the label centers on |
glyphBatchActive readonly | bool | Whether the lazy internal glyph batch currently exists (read-only) |
glyphPlacement | bool | Selects per-glyph text-on-curve placement instead of per-word quads |
groundOffset | real | Height in world units the quads sit above y=0 to avoid z-fighting |
labelStyle | QtObject | Grouped ground-paint styling: color, halo, optional background, font |
lineId | int | Index of the line inside lines to run the text along |
lines | QtObject | LineBatch3D whose geometry the label follows |
oversample | real | Texture oversample factor for crispness (2 renders at 2x texels) |
readingDirection | vector2d | Reference reading direction in the ground (X, Z) plane |
repeatEvery | real | Spacing in world units between repeated placements (0 = single) |
skippedPlacements readonly | int | Number of placements skipped by the curvature guard (read-only) |
text | string | Label text; split on whitespace into per-word quads |
uniqueTextureCount readonly | int | Number of distinct word textures currently in use (read-only) |
wordSpacing | real | Gap in world units between consecutive words. Negative auto-derives it from worldHeight |
worldHeight | real | Text height in world units; the quad width follows the text aspect |
Methods
| Method | Returns | Description |
rebuild() | void | |
PerfHud
Compact always-on-top performance overlay for a View3D
View full documentation
Properties
| Name | Type | Description |
extended | bool | When true, additionally shows Qt's DebugView with resource details next to the compact panel |
view3D | var | View3D whose renderStats are displayed. Required |
PerfRegistry
App-wide singleton for measuring named code sections and event rates
View full documentation
Methods
| Method | Returns | Description |
begin(string name) | void | |
end(string name) | void | |
reset() | void | |
snapshot() | list | |
tick(string name) | void | |
StaticVoxelMap
Optimized voxel map for large, static structures
View full documentation
Properties
| Name | Type | Description |
chunkSize | int | Edge length (in voxels) of a meshing chunk |
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 |
VoxelMap
Base type for voxel-based 3D structures
View full documentation
Properties
| Name | Type | Description |
autoCommit | bool | Whether to automatically commit changes |
depth readonly | real | Total depth of the voxel map in world units |
edgeColorFactor | real | Darkening factor for edges |
edgeThickness | real | Thickness of grid edge lines |
height readonly | real | Total height of the voxel map in world units |
model | var | Underlying voxel data model |
showEdges | bool | Whether to render voxel grid lines |
spacing | real | Gap between adjacent voxels in world units |
useToonShading | bool | Enables cartoon-style rendering |
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 |
voxelOffset | vector3d | Offset applied to voxel edge calculations |
voxelSize | real | Size of each voxel cube in world units |
width readonly | real | Total width of the voxel map in world units |
Methods
| Method | Returns | Description |
fill(var shapes) | void | |
get(int x, int y, int z) | color | |
load(string path) | void | |
save(string path) | void | |
set(int x, int y, int z, color color) | void | |
VoxelMapGeometry
Optimized geometry for static voxel maps using chunked greedy meshing
View full documentation
Properties
| Name | Type | Description |
chunkSize | int | Edge length (in voxels) of a meshing chunk |
spacing | real | Gap between adjacent voxels in world units |
vertexCount readonly | int | Current number of vertices in the generated geometry |
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 |
Methods
| Method | Returns | Description |
commit() | void | |
fillBox(int cx, int cy, int cz, int width, int height, int depth, list colorDistribution, real noiseFactor) | void | |
fillCylinder(int cx, int cy, int cz, int r, int height, list colorDistribution, real noiseFactor) | void | |
fillSphere(int cx, int cy, int cz, int r, list colorDistribution, real noiseFactor) | void | |
loadFromFile(string path) | bool | |
saveToFile(string path) | bool | |
setVoxel(int x, int y, int z, color color) | void | |
voxel(int x, int y, int z) | color | |
VoxelMapInstancing
GPU instancing for dynamic voxel maps with per-voxel colors
View full documentation
Properties
| Name | Type | Description |
spacing | real | Gap between adjacent voxels in world units |
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 |
Methods
| Method | Returns | Description |
commit() | void | |
fillBox(int cx, int cy, int cz, int width, int height, int depth, list colorDistribution, real noiseFactor) | void | |
fillCylinder(int cx, int cy, int cz, int r, int height, list colorDistribution, real noiseFactor) | void | |
fillSphere(int cx, int cy, int cz, int r, list colorDistribution, real noiseFactor) | void | |
loadFromFile(string path) | bool | |
saveToFile(string path) | bool | |
setVoxel(int x, int y, int z, color color) | void | |
voxel(int x, int y, int z) | color | |