Voxels
Rebuild any shape out of voxels — a flat shape becomes chunky pixel art, a 3D shape a lit voxel model with smooth ambient occlusion, cast shadows, a key light you can orbit or drive, and per-cube colour
Props
Prop
Details
originstringDefault:
centerReference edge the center position is measured from (center default). Lets you pin the shape relative to a corner or the canvas centre.
originstringDefault: centerReference edge the center position is measured from (center default). Lets you pin the shape relative to a corner or the canvas centre.
center{x: number, y: number}Default:
{"x":0.5,"y":0.5}Center position of the voxel model
center{x: number, y: number}Default: {"x":0.5,"y":0.5}Center position of the voxel model
scalenumberDefault:
1Scale of the voxel model (1 = default size)
scalenumberDefault: 1Scale of the voxel model (1 = default size)
rotationnumberDefault:
0Rotation of the voxel model in degrees
rotationnumberDefault: 0Rotation of the voxel model in degrees
voxelSizenumberDefault:
0.035Edge length of one voxel relative to the shape field — small for fine detail, large for chunky blocks
voxelSizenumberDefault: 0.035Edge length of one voxel relative to the shape field — small for fine detail, large for chunky blocks
voxelShape"cube" | "rounded" | "sphere"Default:
cubeWhat each cell is built from: hard cubes, rounded cubes (see Bevel) or spheres
voxelShape"cube" | "rounded" | "sphere"Default: cubeWhat each cell is built from: hard cubes, rounded cubes (see Bevel) or spheres
voxelScalenumberDefault:
1Size of each voxel inside its cell — 1 = touching neighbours, lower opens gaps between the blocks
voxelScalenumberDefault: 1Size of each voxel inside its cell — 1 = touching neighbours, lower opens gaps between the blocks
fillnumberDefault:
0How eagerly cells fill in along the surface — negative carves a thinner model, positive puffs it out
fillnumberDefault: 0How eagerly cells fill in along the surface — negative carves a thinner model, positive puffs it out
bevelnumberDefault:
0.08Edge rounding of each voxel as a fraction of its size — a hairline chamfer catching light on cubes, the corner radius of rounded cubes
bevelnumberDefault: 0.08Edge rounding of each voxel as a fraction of its size — a hairline chamfer catching light on cubes, the corner radius of rounded cubes
depthnumberDefault:
0.12Thickness given to flat shapes (2D shapes and flat SVGs) so they become a slab of voxels — 3D shapes ignore it
depthnumberDefault: 0.12Thickness given to flat shapes (2D shapes and flat SVGs) so they become a slab of voxels — 3D shapes ignore it
gridSpace"shape" | "view"Default:
shapeModel: the grid rotates with the shape like a built voxel model. Screen: the grid is fixed to the canvas and the shape moves through it like a 3D pixelation
gridSpace"shape" | "view"Default: shapeModel: the grid rotates with the shape like a built voxel model. Screen: the grid is fixed to the canvas and the shape moves through it like a 3D pixelation
colorAstringDefault:
#6ea8ffBase colour of the voxels (the first colour of the palette mode)
colorAstringDefault: #6ea8ffBase colour of the voxels (the first colour of the palette mode)
colorBstringDefault:
#1d2b4fSecond palette colour — blended in by height, depth, per voxel or on the side faces
colorBstringDefault: #1d2b4fSecond palette colour — blended in by height, depth, per voxel or on the side faces
colorMode"solid" | "height" | "depth" | "random" | "faces"Default:
heightHow the two colours are laid over the model: one solid colour, a gradient by height or depth, a random pick per voxel, or Color A on top faces and Color B on the sides
colorMode"solid" | "height" | "depth" | "random" | "faces"Default: heightHow the two colours are laid over the model: one solid colour, a gradient by height or depth, a random pick per voxel, or Color A on top faces and Color B on the sides
colorVariationnumberDefault:
0.25Per-voxel tonal jitter — the slightly-off shades that make blocks read as individual bricks
colorVariationnumberDefault: 0.25Per-voxel tonal jitter — the slightly-off shades that make blocks read as individual bricks
colorSpace"linear" | "oklch" | "oklab" | "hsl" | "hsv" | "lch"Default:
oklabColor space for color interpolation
colorSpace"linear" | "oklch" | "oklab" | "hsl" | "hsv" | "lch"Default: oklabColor space for color interpolation
lightAnglenumberDefault:
225Direction the key light comes from, in degrees around the canvas — shadows fall away from it
lightAnglenumberDefault: 225Direction the key light comes from, in degrees around the canvas — shadows fall away from it
lightElevationnumberDefault:
42How high the key light sits above the canvas — low for long raking shadows, high for a flat top-down light
lightElevationnumberDefault: 42How high the key light sits above the canvas — low for long raking shadows, high for a flat top-down light
lightColorstringDefault:
#fff2dfColour of the key light
lightColorstringDefault: #fff2dfColour of the key light
lightIntensitynumberDefault:
1.1Strength of the key light
lightIntensitynumberDefault: 1.1Strength of the key light
ambientColorstringDefault:
#9fb4d8Sky colour of the ambient light — the fill on faces the key light misses
ambientColorstringDefault: #9fb4d8Sky colour of the ambient light — the fill on faces the key light misses
ambientnumberDefault:
0.55Strength of the ambient sky/ground fill
ambientnumberDefault: 0.55Strength of the ambient sky/ground fill
shadowsnumberDefault:
0.85Darkness of the shadows voxels cast onto each other
shadowsnumberDefault: 0.85Darkness of the shadows voxels cast onto each other
shadowSoftnessnumberDefault:
0.35Penumbra of the cast shadows — 0 is razor sharp, higher spreads the light into a soft area source whose shadows sharpen at contact
shadowSoftnessnumberDefault: 0.35Penumbra of the cast shadows — 0 is razor sharp, higher spreads the light into a soft area source whose shadows sharpen at contact
aonumberDefault:
1Ambient occlusion in the creases between voxels — the soft contact darkening that sells the geometry
aonumberDefault: 1Ambient occlusion in the creases between voxels — the soft contact darkening that sells the geometry
glossinessnumberDefault:
0.35How tight the specular highlight is — satin plastic at 0, lacquered at 1
glossinessnumberDefault: 0.35How tight the specular highlight is — satin plastic at 0, lacquered at 1
specularnumberDefault:
0.6Strength of the specular highlight and the fresnel rim on grazing faces
specularnumberDefault: 0.6Strength of the specular highlight and the fresnel rim on grazing faces
seamsnumberDefault:
0.2Dark seam lines along every voxel edge — 0 for seamless blocks, higher for a drawn-outline brick look
seamsnumberDefault: 0.2Dark seam lines along every voxel edge — 0 for seamless blocks, higher for a drawn-outline brick look
shapeShapeConfigDefault:
sphere3DShape to render — choose from 11 built-in analytical shapes or supply a custom SDF. See the Shape Effects guide for all available shapes and their options.
shapeShapeConfigDefault: sphere3DShape to render — choose from 11 built-in analytical shapes or supply a custom SDF. See the Shape Effects guide for all available shapes and their options.
shapeSdfUrlstringDefault:
""URL to a pre-generated SDF `.bin` file — when non-empty, activates SVG mode and triggers a shader recompile. See the Shape Effects guide for how to generate an SDF from an SVG.
shapeSdfUrlstringDefault: ""URL to a pre-generated SDF `.bin` file — when non-empty, activates SVG mode and triggers a shader recompile. See the Shape Effects guide for how to generate an SDF from an SVG.