Schemas / Geometry / paint

rig.geometry.path3d

v0.31.0 · draft 1 field 1 required

Fields

FieldTypeMeaning
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.jsonraw 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"
  ]
}

Seen in

path3d-spline3d.json