Schemas / Geometry / paint
rig.geometry.path3d
v0.31.0 · draft 1 field 1 required
Fields
| Field | Type | Meaning | |
|---|---|---|---|
commands |
array<object> | required | Ordered path commands |
Freeform 3D path command stream. Format when present.
The 3D sibling of rig.geometry.path - same command grammar, vec3 points. Cubic Bézier data is the cubic-to command. Planar contours stay on path; do not put z = 0 on path3d to fake 2D.
A contour that stays editable as NURBS belongs on rig.geometry.spline3d. Use a path once it has been resolved to commands, and never both for the same contour. Hosts may convert cubic segments to NURBS for an evaluator; they must not discard the path and claim NURBS is the portable authoring form. Circular and elliptical arcs stay on arc; do not invent path arc commands for them.
Command
Closed contours use a close command. Skip or reject unknown types. Extend only by appending enum values.
Fill rule and hole winding are 2D - they live on rig.geometry.path. Space curves stay unfilled unless the host tessellates to a mesh. Mesh front-face is caller-owned; do not add a winding field here.
Tessellation to polylines or rig.geometry.mesh is host fulfillment.
JSON Schema
Resolves at https://rig.works/schemas/rig.geometry.path3d.schema.json —
raw file.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://rig.works/schemas/rig.geometry.path3d.schema.json",
"title": "rig.geometry.path3d",
"type": "object",
"additionalProperties": false,
"properties": {
"commands": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"move-to",
"line-to",
"cubic-to",
"quad-to",
"close"
]
},
"point": {
"$ref": "./_defs.schema.json#/$defs/vec3"
},
"control1": {
"$ref": "./_defs.schema.json#/$defs/vec3"
},
"control2": {
"$ref": "./_defs.schema.json#/$defs/vec3"
}
}
}
}
},
"required": [
"commands"
]
}