AI kit guide · 0.44.2

35 components, with actual geometry

Metres, Y up. O marks the authoring origin; axes use the same camera as the mesh. Images and bounds come from the shipped Builder. Handles and frames may extend beyond nominal sizes.

Machine-readable catalogue · Full contract

Common fields: id, type, name, size [X,Y,Z], material, color, appearance, fixed. Read component exceptions. Object yaw uses degrees; player yaw uses radians. Structural origins may snap to 0.5 m. Images do not certify game physics or lighting.

box: mesh with placement origin and axes

box

Geometry template; specify dimensions and materials.

Default X × Y × Z (m)
1 × 1 × 1
Actual example bounds (m)
1 × 1 × 1
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · box",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "box"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
slab: mesh with placement origin and axes

slab

Geometry template; specify dimensions and materials.

Default X × Y × Z (m)
1 × 0.5 × 1
Actual example bounds (m)
1 × 0.5 × 1
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
Block-editable. One selectable object. Fixed by default.

decor: Up to 128 boxes; position is BOX CENTER

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · slab",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "slab"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
beam: mesh with placement origin and axes

beam

Solid box; no automatic joints or structural simulation.

Default X × Y × Z (m)
0.2 × 3 × 0.2
Actual example bounds (m)
0.2 × 3 × 0.2
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · beam",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "beam"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
cylinder: mesh with placement origin and axes

cylinder

Geometry template; specify dimensions and materials.

Default X × Y × Z (m)
1 × 1 × 1
Actual example bounds (m)
1 × 1 × 1
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

segments: integer 8..64

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · cylinder",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "cylinder"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
wall: mesh with placement origin and axes

wall

Width X, height Y, thickness Z. For a side wall rotate yaw 90; define openings before mounting windows/doors.

Default X × Y × Z (m)
4 × 3 × 0.25
Actual example bounds (m)
4 × 3 × 0.25
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
Block-editable. One selectable object. Fixed by default.

openings: Array of {id,kind?,x=0,bottom=0,width,height}; x along local X
decor: Up to 128 boxes; position is BOX CENTER

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · wall",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "wall"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
door: mesh with placement origin and axes

door

Nominal opening dimensions. Leaf width and height each lose 10 mm; handle projects beyond Z. Mount on a wall opening.

Default X × Y × Z (m)
1 × 2 × 0.06
Actual example bounds (m)
0.99 × 1.99 × 0.13
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
Hinged. One selectable object. Fixed by default.

angle: 15..180 or -180..-15 degrees; default 90; checker samples at most 90

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · door",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "door"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
window: mesh with placement origin and axes

window

Width X, height Y, frame depth Z. Fixed glazing. Rotate yaw 90 for side walls; do not swap width/depth.

Default X × Y × Z (m)
2 × 1.5 × 0.12
Actual example bounds (m)
2 × 1.5 × 0.12
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · window",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "window"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
stairs: mesh with placement origin and axes

stairs

Ascends from local -Z to +Z. Origin Y + height = upper landing. Check both endpoints and finished floor tops.

Default X × Y × Z (m)
1.2 × 3 × 4.5
Actual example bounds (m)
1.2 × 3 × 4.5
Origin
Bottom center; X/Z centered
Orientation
Ascends +Z
Behavior
One selectable object. Fixed by default.

steps: integer 2..128; default ceil(height/0.18); rise <=0.30, tread >=0.18

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · stairs",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "stairs"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
table: mesh with placement origin and axes

table

Geometry template; specify dimensions and materials.

Default X × Y × Z (m)
0.84 × 0.75 × 1.22
Actual example bounds (m)
0.84 × 0.75 × 1.22
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · table",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "table"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
chair: mesh with placement origin and axes

chair

Simple box chair; back +Z, front -Z.

Default X × Y × Z (m)
0.6 × 0.8 × 0.6
Actual example bounds (m)
0.6 × 0.8 × 0.6
Origin
Bottom center; X/Z centered
Orientation
Back +Z, front -Z
Behavior
One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · chair",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "chair"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
light: mesh with placement origin and axes

light

Legacy auto-light component; separate functional object.

Default X × Y × Z (m)
0.3 × 0.12 × 0.3
Actual example bounds (m)
0.3 × 0.12 × 0.3
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
Auto-light. One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · light",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "light"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
water: mesh with placement origin and axes

water

Static swim volume, not flowing liquid. Does not excavate terrain. Use a raised basin/deck for portable recipes. Surface Y = origin Y + height.

Default X × Y × Z (m)
4 × 1.4 × 8
Actual example bounds (m)
4 × 1.4 × 8
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
Swim volume. One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · water",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "water"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
roof: mesh with placement origin and axes

roof

Flat editable panel; no automatic pitch or truss.

Default X × Y × Z (m)
4 × 0.25 × 4
Actual example bounds (m)
4 × 0.25 × 4
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
Block-editable. One selectable object. Fixed by default.

decor: Up to 128 boxes; position is BOX CENTER

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · roof",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "roof"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
floor: mesh with placement origin and axes

floor

Top elevation = position Y + thickness. MeshSun 0.45 clears covered ground beneath horizontal cardinal floors; default thickness 0.5 m.

Default X × Y × Z (m)
4 × 0.5 × 4
Actual example bounds (m)
4 × 0.5 × 4
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
Block-editable. One selectable object. Fixed by default.

decor: Up to 128 boxes; position is BOX CENTER

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · floor",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "floor"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
ceiling: mesh with placement origin and axes

ceiling

Flat editable panel; origin is its bottom surface.

Default X × Y × Z (m)
4 × 0.25 × 4
Actual example bounds (m)
4 × 0.25 × 4
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
Block-editable. One selectable object. Fixed by default.

decor: Up to 128 boxes; position is BOX CENTER

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · ceiling",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "ceiling"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
fence: mesh with placement origin and axes

fence

Posts and two rails; no automatic neighbor connections.

Default X × Y × Z (m)
1 × 1.5 × 0.25
Actual example bounds (m)
1 × 1.5 × 0.25
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · fence",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "fence"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
gate: mesh with placement origin and axes

gate

Legacy Y-hinged gate. Check opening in MeshSun.

Default X × Y × Z (m)
1 × 1.5 × 0.15
Actual example bounds (m)
1 × 1.5 × 0.15
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
Hinged. One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · gate",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "gate"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
trapdoor: mesh with placement origin and axes

trapdoor

Legacy X hinge at local -Z edge.

Default X × Y × Z (m)
1 × 0.1875 × 1
Actual example bounds (m)
1 × 0.1875 × 1
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
Hinged. One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · trapdoor",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "trapdoor"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
pane: mesh with placement origin and axes

pane

Fixed glass. Thin dimension is Z.

Default X × Y × Z (m)
0.5 × 0.5 × 0.0625
Actual example bounds (m)
0.5 × 0.5 × 0.0625
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · pane",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "pane"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
plant: mesh with placement origin and axes

plant

Stylized stacked box foliage; not a realistic plant or growth system.

Default X × Y × Z (m)
0.4 × 0.65 × 0.4
Actual example bounds (m)
0.4 × 0.65 × 0.4
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · plant",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "plant"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
torch: mesh with placement origin and axes

torch

Legacy auto-light. No combustion simulation implied.

Default X × Y × Z (m)
0.1 × 0.6 × 0.1
Actual example bounds (m)
0.13 × 0.6 × 0.13
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
Auto-light. One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · torch",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "torch"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
lantern: mesh with placement origin and axes

lantern

Legacy auto-light; frame extends beyond nominal X.

Default X × Y × Z (m)
0.25 × 0.4 × 0.25
Actual example bounds (m)
0.275 × 0.4 × 0.25
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
Auto-light. One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · lantern",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "lantern"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
armchair: mesh with placement origin and axes

armchair

Box-based upholstered template. Use an assembly for a curved back.

Default X × Y × Z (m)
0.72 × 0.84 × 0.78
Actual example bounds (m)
0.72 × 0.84 × 0.78
Origin
Bottom center; X/Z centered
Orientation
Back +Z, front -Z
Behavior
One selectable object. Fixed by default.

seatHeight: metres; 0.15..height-0.08
surfaces: seat, back, arms, frame

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · armchair",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "armchair"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
sofa: mesh with placement origin and axes

sofa

Rectangular multi-cushion sofa, back +Z. A chaise needs custom assembly geometry.

Default X × Y × Z (m)
2.2 × 0.85 × 0.9
Actual example bounds (m)
2.2 × 0.85 × 0.9
Origin
Bottom center; X/Z centered
Orientation
Back +Z, front -Z
Behavior
One selectable object. Fixed by default.

seatHeight: metres; 0.15..height-0.08
surfaces: seat, back, arms, frame

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · sofa",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "sofa"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
roundTable: mesh with placement origin and axes

roundTable

Elliptical X/Z top supported. Origin at base; top at height.

Default X × Y × Z (m)
1.1 × 0.75 × 1.1
Actual example bounds (m)
1.1 × 0.75 × 1.1
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

segments: integer 8..64
surfaces: top, frame

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · roundTable",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "roundTable"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
floorLamp: mesh with placement origin and axes

floorLamp

Emits warm point light. Default lightMode always; schedule switches at night; off disables light. Dynamic by default.

Default X × Y × Z (m)
0.42 × 1.7 × 0.42
Actual example bounds (m)
0.42 × 1.7 × 0.42
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
Auto-light. One selectable object. Fixed by default.

segments: integer 8..64
surfaces: frame, shade

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · floorLamp",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "floorLamp"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
plate: mesh with placement origin and axes

plate

Geometry template; specify dimensions and materials.

Default X × Y × Z (m)
0.27 × 0.025 × 0.27
Actual example bounds (m)
0.27 × 0.025 × 0.27
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

segments: integer 8..64
surfaces: body

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · plate",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "plate"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
bowl: mesh with placement origin and axes

bowl

Geometry template; specify dimensions and materials.

Default X × Y × Z (m)
0.18 × 0.065 × 0.18
Actual example bounds (m)
0.18 × 0.065 × 0.18
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

segments: integer 8..64
surfaces: body

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · bowl",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "bowl"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
cup: mesh with placement origin and axes

cup

Handle projects past nominal width. Use actual bounds for dish placement.

Default X × Y × Z (m)
0.085 × 0.1 × 0.085
Actual example bounds (m)
0.109875 × 0.1 × 0.085
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

segments: integer 8..64
surfaces: body

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · cup",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "cup"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
glass: mesh with placement origin and axes

glass

Drinking vessel with glass metadata; material named glass alone does not make arbitrary shapes transparent.

Default X × Y × Z (m)
0.075 × 0.18 × 0.075
Actual example bounds (m)
0.075 × 0.18 × 0.075
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

segments: integer 8..64
surfaces: body

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · glass",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "glass"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
bar: mesh with placement origin and axes

bar

Geometry template; specify dimensions and materials.

Default X × Y × Z (m)
3.5 × 1.1 × 0.7
Actual example bounds (m)
3.5 × 1.1 × 0.7
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

surfaces: top, front, trim

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · bar",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "bar"
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
assembly: mesh with placement origin and axes

assembly

One selectable object. Derived bounds may be off-center. No size. Structural/functional children must remain separate.

Default X × Y × Z (m)
Derived; see example
Actual example bounds (m)
1 × 0.8 × 0.6
Origin
Shared authoring origin; see bounds
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

parts: {id,ref,position?,rotation:[X,Y,Z] degrees?,scale:uniform?,material?,repeat?}

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · assembly",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "base",
        "type": "box",
        "size": [
          1,
          0.2,
          0.6
        ]
      },
      {
        "id": "back",
        "type": "box",
        "size": [
          1,
          0.6,
          0.1
        ]
      },
      {
        "id": "model",
        "type": "assembly",
        "parts": [
          {
            "id": "base",
            "ref": "base"
          },
          {
            "id": "back",
            "ref": "back",
            "position": [
              0,
              0.2,
              0.25
            ]
          }
        ]
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
group: mesh with placement origin and axes

group

Layout expanded into separate objects. No size/material/color/appearance. Not a physical in-game group.

Default X × Y × Z (m)
Derived; see example
Actual example bounds (m)
1.66 × 0.84 × 0.78
Origin
Shared authoring origin; see bounds
Orientation
See projected X/Y/Z axes
Behavior
Separate objects. Fixed by default.

parts: World placements {id,ref,position?,yaw?,fixed?,repeat?,mount?}

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "world",
  "units": "m",
  "up": "y",
  "name": "Catalogue · group",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "seat",
        "type": "armchair"
      },
      {
        "id": "table",
        "type": "roundTable",
        "size": [
          0.6,
          0.5,
          0.6
        ]
      },
      {
        "id": "model",
        "type": "group",
        "parts": [
          {
            "id": "seat",
            "ref": "seat"
          },
          {
            "id": "table",
            "ref": "table",
            "position": [
              1,
              0,
              0
            ]
          }
        ]
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ],
    "player": {
      "position": [
        0,
        0.9,
        -3
      ],
      "yaw": 0,
      "pitch": 0
    }
  }
}
lathe: mesh with placement origin and axes

lathe

Profile revolved around Y. Repeat first point to close a hollow cross-section. No size field.

Default X × Y × Z (m)
Derived; see example
Actual example bounds (m)
1.4 × 0.85 × 1.4
Origin
Axis at [0,0,0]; geometry may not surround origin
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

profile: 2..64 ordered [radius,height] pairs; radius 0..150, height 0..300 metres
segments: integer 8..64

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · lathe",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "lathe",
        "profile": [
          [
            0.7,
            0
          ],
          [
            0.45,
            0.7
          ],
          [
            0.05,
            0.85
          ],
          [
            0.05,
            0.8
          ],
          [
            0.4,
            0.65
          ],
          [
            0.65,
            0
          ],
          [
            0.7,
            0
          ]
        ]
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
arc: mesh with placement origin and axes

arc

Ring sector around Y. Origin may be outside visible footprint. No size field.

Default X × Y × Z (m)
Derived; see example
Actual example bounds (m)
2.15 × 0.5 × 1.075
Origin
Axis at [0,0,0]; geometry may not surround origin
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

radius: required center-line radius 0.01..150 metres
thickness: required 0.005..1.99*radius metres
height: required 0.005..300 metres
start: -360..360 degrees from +X; default 0
sweep: 1..360 degrees toward +Z; default 180
segments: integer 2..128

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · arc",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "arc",
        "radius": 1,
        "thickness": 0.15,
        "height": 0.5,
        "start": 0,
        "sweep": 180
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}
blockVolume: mesh with placement origin and axes

blockVolume

Geometry template; specify dimensions and materials.

Default X × Y × Z (m)
Derived; see example
Actual example bounds (m)
4 × 6 × 4
Origin
Bottom center; X/Z centered
Orientation
See projected X/Y/Z axes
Behavior
One selectable object. Fixed by default.

Common fields only.

Download runnable example
Complete JSON recipe
{
  "sunVersion": "1.0",
  "documentType": "asset",
  "units": "m",
  "up": "y",
  "name": "Catalogue · blockVolume",
  "recipe": {
    "builder": "1.0-draft.2",
    "grid": 0,
    "definitions": [
      {
        "id": "model",
        "type": "blockVolume",
        "volume": {
          "schema": 1,
          "boxes": [
            {
              "min": [
                -2,
                0,
                -2
              ],
              "max": [
                2,
                6,
                2
              ],
              "material": "concrete"
            }
          ],
          "voids": [
            {
              "min": [
                -1.5,
                0.5,
                -1.5
              ],
              "max": [
                1.5,
                3,
                1.5
              ]
            }
          ]
        }
      }
    ],
    "objects": [
      {
        "id": "example",
        "ref": "model",
        "position": [
          0,
          0,
          0
        ]
      }
    ]
  }
}