{
  "title": "foxglove.ModelPrimitive",
  "description": "A primitive representing a 3D model file loaded from an external URL or embedded data",
  "$comment": "Generated by https://github.com/foxglove/foxglove-sdk",
  "type": "object",
  "properties": {
    "pose": {
      "title": "foxglove.Pose",
      "description": "Origin of model relative to reference frame",
      "type": "object",
      "properties": {
        "position": {
          "title": "foxglove.Vector3",
          "description": "Point denoting position in 3D space",
          "type": "object",
          "properties": {
            "x": {
              "type": "number",
              "description": "x component"
            },
            "y": {
              "type": "number",
              "description": "y component"
            },
            "z": {
              "type": "number",
              "description": "z component"
            }
          },
          "required": [
            "x",
            "y",
            "z"
          ]
        },
        "orientation": {
          "title": "foxglove.Quaternion",
          "description": "Quaternion denoting orientation in 3D space",
          "type": "object",
          "properties": {
            "x": {
              "type": "number",
              "description": "x value"
            },
            "y": {
              "type": "number",
              "description": "y value"
            },
            "z": {
              "type": "number",
              "description": "z value"
            },
            "w": {
              "type": "number",
              "description": "w value"
            }
          },
          "required": [
            "x",
            "y",
            "z",
            "w"
          ]
        }
      },
      "required": [
        "position",
        "orientation"
      ]
    },
    "scale": {
      "title": "foxglove.Vector3",
      "description": "Scale factor to apply to the model along each axis",
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "description": "x component"
        },
        "y": {
          "type": "number",
          "description": "y component"
        },
        "z": {
          "type": "number",
          "description": "z component"
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ]
    },
    "color": {
      "title": "foxglove.Color",
      "description": "Solid color to use for the whole model if `override_color` is true.",
      "type": "object",
      "properties": {
        "r": {
          "type": "number",
          "description": "Red value between 0 and 1"
        },
        "g": {
          "type": "number",
          "description": "Green value between 0 and 1"
        },
        "b": {
          "type": "number",
          "description": "Blue value between 0 and 1"
        },
        "a": {
          "type": "number",
          "description": "Alpha value between 0 and 1"
        }
      },
      "required": [
        "r",
        "g",
        "b",
        "a"
      ]
    },
    "override_color": {
      "type": "boolean",
      "description": "Whether to use the color specified in `color` instead of any materials embedded in the original model."
    },
    "url": {
      "type": "string",
      "description": "URL pointing to model file. One of `url` or `data` should be non-empty."
    },
    "media_type": {
      "type": "string",
      "description": "[Media type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of embedded model (e.g. `model/gltf-binary`). Required if `data` is provided instead of `url`. Overrides the inferred media type if `url` is provided."
    },
    "data": {
      "type": "string",
      "contentEncoding": "base64",
      "description": "Embedded model. One of `url` or `data` should be non-empty. If `data` is non-empty, `media_type` must be set to indicate the type of the data."
    }
  },
  "required": [
    "pose",
    "scale",
    "color",
    "override_color",
    "url",
    "media_type",
    "data"
  ]
}
