<!-- # hard line break macro for HTML -->

# fiftyone.core.threed.mesh

Mesh definitions for 3D visualization.

Copyright 2017-2026, Voxel51, Inc.
<br/>
[voxel51.com](https://voxel51.com/)
<br/>
<br/>

**Classes:**

| [`Mesh`](#fiftyone.core.threed.mesh.Mesh)(name[, material, visible, position, ...])      | Represents an abstract 3D mesh.   |
|------------------------------------------------------------------------------------------|-----------------------------------|
| [`ObjMesh`](#fiftyone.core.threed.mesh.ObjMesh)(name, obj_path[, mtl_path, ...])         | Represents an OBJ mesh.           |
| [`FbxMesh`](#fiftyone.core.threed.mesh.FbxMesh)(name, fbx_path[, default_material, ...]) | Represents an FBX mesh.           |
| [`GltfMesh`](#fiftyone.core.threed.mesh.GltfMesh)(name, gltf_path[, ...])                | Represents a gLTF mesh.           |
| [`PlyMesh`](#fiftyone.core.threed.mesh.PlyMesh)(name, ply_path[, is_point_cloud, ...])   | Represents a PLY mesh.            |
| [`StlMesh`](#fiftyone.core.threed.mesh.StlMesh)(name, stl_path[, default_material, ...]) | Represents an STL mesh.           |

### *class* fiftyone.core.threed.mesh.Mesh(name: str, material: [MeshMaterial](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial) | None = None, visible=True, position: [Vector3](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Vector3) | List[float] | Tuple[float] | array | None = None, scale: [Vector3](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Vector3) | List[float] | Tuple[float] | array | None = None, quaternion: [Quaternion](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Quaternion) | None = None)

Bases: [`Object3D`](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D)

Represents an abstract 3D mesh.

* **Parameters:**
  * **name** – the name of the mesh
  * **material** (`fiftyone.core.threed.MeshMaterial`, optional) – the default material for the mesh. Defaults to
    [`fiftyone.core.threed.MeshStandardMaterial`](fiftyone.core.threed.md#fiftyone.core.threed.MeshStandardMaterial)
    if not provided
  * **visible** (*True*) – default visibility of the mesh in the scene
  * **position** (*None*) – the position of the mesh in object space
  * **quaternion** (*None*) – the quaternion of the mesh in object space
  * **scale** (*None*) – the scale of the mesh in object space

**Methods:**

| [`set_default_material`](#fiftyone.core.threed.mesh.Mesh.set_default_material)(material)          | Sets the material of the mesh.                                              |
|---------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| [`add`](#fiftyone.core.threed.mesh.Mesh.add)(\*objs)                                              | Add one or more objects as children of this one.                            |
| [`as_dict`](#fiftyone.core.threed.mesh.Mesh.as_dict)()                                            | Converts the object to a dict.                                              |
| [`clear`](#fiftyone.core.threed.mesh.Mesh.clear)()                                                | Remove all children from this object.                                       |
| [`find_and_execute`](#fiftyone.core.threed.mesh.Mesh.find_and_execute)(node, predicate, on_match) | Recursively search the scene graph and execute an action on matching nodes. |
| [`remove`](#fiftyone.core.threed.mesh.Mesh.remove)(\*objs)                                        | Remove one or more objects from the scene graph recursively.                |
| [`remove_by_name`](#fiftyone.core.threed.mesh.Mesh.remove_by_name)(name)                          | Remove all objects with the given name from the scene graph recursively.    |
| [`remove_by_uuid`](#fiftyone.core.threed.mesh.Mesh.remove_by_uuid)(target_uuid)                   | Remove the object with the given UUID from the scene graph recursively.     |
| [`traverse`](#fiftyone.core.threed.mesh.Mesh.traverse)([include_self])                            | Traverse the scene graph.                                                   |

**Attributes:**

| [`local_transform_matrix`](#fiftyone.core.threed.mesh.Mesh.local_transform_matrix)   | The local transform matrix of the object.     |
|--------------------------------------------------------------------------------------|-----------------------------------------------|
| [`position`](#fiftyone.core.threed.mesh.Mesh.position)                               | The position of the object in object space.   |
| [`quaternion`](#fiftyone.core.threed.mesh.Mesh.quaternion)                           | The quaternion of the object in object space. |
| [`rotation`](#fiftyone.core.threed.mesh.Mesh.rotation)                               | The rotation of the object in object space.   |
| [`scale`](#fiftyone.core.threed.mesh.Mesh.scale)                                     | The scale of the object in object space.      |
| [`uuid`](#fiftyone.core.threed.mesh.Mesh.uuid)                                       | The unique ID of the object.                  |

#### set_default_material(material: [MeshMaterial](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial))

Sets the material of the mesh.

* **Parameters:**
  **material** ([*MeshMaterial*](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial)) – the material to set as the default

#### add(\*objs: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D)) → None

Add one or more objects as children of this one.

#### as_dict()

Converts the object to a dict.

#### clear() → None

Remove all children from this object.

#### find_and_execute(node: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D), predicate, on_match, stop_on_first_match: [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool) = False) → [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool)

Recursively search the scene graph and execute an action on
matching nodes.

This is a generic method for traversing the scene graph and
performing operations on nodes that match a given predicate.
It can be used for finding and removing nodes, collecting nodes,
updating nodes, etc.

The traversal continues into the subtrees of both matching and
non-matching nodes. For matching nodes, the subtree is traversed
when on_match returns True and stop_on_first_match is False.

* **Parameters:**
  * **node** – the node to start searching from
  * **predicate** – a function that takes a child Object3D and returns
  * **criteria** (*True if it matches the search*)
  * **on_match** – a function called when a match is found, takes
  * **(****parent**
  * **searching** ([*child*](fiftyone.core.odm.md#fiftyone.core.odm.WorkspaceDocument.child) *)* *and returns True to continue*)
  * **to** (*False*)
  * **stop**
  * **stop_on_first_match** – if True, stop searching after first match
  * **processed** (*is*)
* **Returns:**
  True if a match was found and we should stop, False otherwise

### Example

# Find all nodes with a specific name and collect them
matches = []
def predicate(child):

> return child.name == “target”

def on_match(parent, child):
: matches.append(child)
  return True  # continue searching

scene.find_and_execute(scene, predicate, on_match)

#### *property* local_transform_matrix

The local transform matrix of the object.

Setting this property also decomposes the matrix into
its constituent position, quaternion, and scale components.
However, decomposition of matrices with skew / shear components
(non-uniform scaling) might have unexpected results.

#### *property* position

The position of the object in object space.

#### *property* quaternion

The quaternion of the object in object space.

#### remove(\*objs: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D)) → None

Remove one or more objects from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes any matching objects from their parent’s
children list.

* **Parameters:**
  **\*objs** – one or more Object3D instances to remove
* **Raises:**
  * **ValueError** – if any of the objects to remove is this object itself
  * **ValueError** – if any of the objects is not found in the scene graph

#### remove_by_name(name: str) → None

Remove all objects with the given name from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes all objects matching the given name from
their parent’s children lists.

* **Parameters:**
  **name** – the name of the objects to remove
* **Raises:**
  * **ValueError** – if attempting to remove this object itself by name
  * **ValueError** – if no objects with the given name are found

#### remove_by_uuid(target_uuid: str) → None

Remove the object with the given UUID from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes the object matching the given UUID from its
parent’s children list. UUIDs should be unique, so only one match is expected.

* **Parameters:**
  **target_uuid** – the UUID of the object to remove
* **Raises:**
  * **ValueError** – if attempting to remove this object itself by UUID
  * **ValueError** – if no object with the given UUID is found

#### *property* rotation

The rotation of the object in object space.

#### *property* scale

The scale of the object in object space.

#### traverse(include_self=True)

Traverse the scene graph.

#### *property* uuid

The unique ID of the object.

### *class* fiftyone.core.threed.mesh.ObjMesh(name: str, obj_path: str, mtl_path: str | None = None, default_material: [MeshMaterial](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial) | None = None, visible=True, position: [Vector3](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Vector3) | List[float] | Tuple[float] | array | None = None, scale: [Vector3](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Vector3) | List[float] | Tuple[float] | array | None = None, quaternion: [Quaternion](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Quaternion) | None = None)

Bases: [`Mesh`](#fiftyone.core.threed.mesh.Mesh)

Represents an OBJ mesh.

* **Parameters:**
  * **name** (*str*) – the name of the mesh
  * **obj_path** (*str*) – the path to the `.obj` file. The path may be either
    absolute or relative to the directory containing the `.fo3d`
    file
  * **mtl_path** (*str* *,* *optional*) – the path to the `.mtl` file. Defaults to
    `None`. The path may be either absolute or relative to the
    directory containing the `.fo3d` file
  * **material** (`fiftyone.core.threed.MeshMaterial`, optional) – the default material for the mesh if `mtl_path` is not provided
    or if material in `mtl_path` is not found. Defaults to
    [`fiftyone.core.threed.MeshStandardMaterial`](fiftyone.core.threed.md#fiftyone.core.threed.MeshStandardMaterial)
  * **visible** (*True*) – default visibility of the mesh in the scene
  * **position** (*None*) – the position of the mesh in object space
  * **quaternion** (*None*) – the quaternion of the mesh in object space
  * **scale** (*None*) – the scale of the mesh in object space
* **Raises:**
  * **ValueError** – if `obj_path` does not end with `.obj`
  * **ValueError** – if `mtl_path` does not end with `.mtl`

**Methods:**

| [`add`](#fiftyone.core.threed.mesh.ObjMesh.add)(\*objs)                                              | Add one or more objects as children of this one.                            |
|------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| [`as_dict`](#fiftyone.core.threed.mesh.ObjMesh.as_dict)()                                            | Converts the object to a dict.                                              |
| [`clear`](#fiftyone.core.threed.mesh.ObjMesh.clear)()                                                | Remove all children from this object.                                       |
| [`find_and_execute`](#fiftyone.core.threed.mesh.ObjMesh.find_and_execute)(node, predicate, on_match) | Recursively search the scene graph and execute an action on matching nodes. |
| [`remove`](#fiftyone.core.threed.mesh.ObjMesh.remove)(\*objs)                                        | Remove one or more objects from the scene graph recursively.                |
| [`remove_by_name`](#fiftyone.core.threed.mesh.ObjMesh.remove_by_name)(name)                          | Remove all objects with the given name from the scene graph recursively.    |
| [`remove_by_uuid`](#fiftyone.core.threed.mesh.ObjMesh.remove_by_uuid)(target_uuid)                   | Remove the object with the given UUID from the scene graph recursively.     |
| [`set_default_material`](#fiftyone.core.threed.mesh.ObjMesh.set_default_material)(material)          | Sets the material of the mesh.                                              |
| [`traverse`](#fiftyone.core.threed.mesh.ObjMesh.traverse)([include_self])                            | Traverse the scene graph.                                                   |

**Attributes:**

| [`local_transform_matrix`](#fiftyone.core.threed.mesh.ObjMesh.local_transform_matrix)   | The local transform matrix of the object.     |
|-----------------------------------------------------------------------------------------|-----------------------------------------------|
| [`position`](#fiftyone.core.threed.mesh.ObjMesh.position)                               | The position of the object in object space.   |
| [`quaternion`](#fiftyone.core.threed.mesh.ObjMesh.quaternion)                           | The quaternion of the object in object space. |
| [`rotation`](#fiftyone.core.threed.mesh.ObjMesh.rotation)                               | The rotation of the object in object space.   |
| [`scale`](#fiftyone.core.threed.mesh.ObjMesh.scale)                                     | The scale of the object in object space.      |
| [`uuid`](#fiftyone.core.threed.mesh.ObjMesh.uuid)                                       | The unique ID of the object.                  |

#### add(\*objs: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D)) → None

Add one or more objects as children of this one.

#### as_dict()

Converts the object to a dict.

#### clear() → None

Remove all children from this object.

#### find_and_execute(node: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D), predicate, on_match, stop_on_first_match: [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool) = False) → [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool)

Recursively search the scene graph and execute an action on
matching nodes.

This is a generic method for traversing the scene graph and
performing operations on nodes that match a given predicate.
It can be used for finding and removing nodes, collecting nodes,
updating nodes, etc.

The traversal continues into the subtrees of both matching and
non-matching nodes. For matching nodes, the subtree is traversed
when on_match returns True and stop_on_first_match is False.

* **Parameters:**
  * **node** – the node to start searching from
  * **predicate** – a function that takes a child Object3D and returns
  * **criteria** (*True if it matches the search*)
  * **on_match** – a function called when a match is found, takes
  * **(****parent**
  * **searching** ([*child*](fiftyone.core.odm.md#fiftyone.core.odm.WorkspaceDocument.child) *)* *and returns True to continue*)
  * **to** (*False*)
  * **stop**
  * **stop_on_first_match** – if True, stop searching after first match
  * **processed** (*is*)
* **Returns:**
  True if a match was found and we should stop, False otherwise

### Example

# Find all nodes with a specific name and collect them
matches = []
def predicate(child):

> return child.name == “target”

def on_match(parent, child):
: matches.append(child)
  return True  # continue searching

scene.find_and_execute(scene, predicate, on_match)

#### *property* local_transform_matrix

The local transform matrix of the object.

Setting this property also decomposes the matrix into
its constituent position, quaternion, and scale components.
However, decomposition of matrices with skew / shear components
(non-uniform scaling) might have unexpected results.

#### *property* position

The position of the object in object space.

#### *property* quaternion

The quaternion of the object in object space.

#### remove(\*objs: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D)) → None

Remove one or more objects from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes any matching objects from their parent’s
children list.

* **Parameters:**
  **\*objs** – one or more Object3D instances to remove
* **Raises:**
  * **ValueError** – if any of the objects to remove is this object itself
  * **ValueError** – if any of the objects is not found in the scene graph

#### remove_by_name(name: str) → None

Remove all objects with the given name from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes all objects matching the given name from
their parent’s children lists.

* **Parameters:**
  **name** – the name of the objects to remove
* **Raises:**
  * **ValueError** – if attempting to remove this object itself by name
  * **ValueError** – if no objects with the given name are found

#### remove_by_uuid(target_uuid: str) → None

Remove the object with the given UUID from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes the object matching the given UUID from its
parent’s children list. UUIDs should be unique, so only one match is expected.

* **Parameters:**
  **target_uuid** – the UUID of the object to remove
* **Raises:**
  * **ValueError** – if attempting to remove this object itself by UUID
  * **ValueError** – if no object with the given UUID is found

#### *property* rotation

The rotation of the object in object space.

#### *property* scale

The scale of the object in object space.

#### set_default_material(material: [MeshMaterial](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial))

Sets the material of the mesh.

* **Parameters:**
  **material** ([*MeshMaterial*](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial)) – the material to set as the default

#### traverse(include_self=True)

Traverse the scene graph.

#### *property* uuid

The unique ID of the object.

### *class* fiftyone.core.threed.mesh.FbxMesh(name: str, fbx_path: str, default_material: [MeshMaterial](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial) | None = None, visible=True, position: [Vector3](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Vector3) | List[float] | Tuple[float] | array | None = None, scale: [Vector3](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Vector3) | List[float] | Tuple[float] | array | None = None, quaternion: [Quaternion](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Quaternion) | None = None)

Bases: [`Mesh`](#fiftyone.core.threed.mesh.Mesh)

Represents an FBX mesh.

* **Parameters:**
  * **name** (*str*) – the name of the mesh
  * **fbx_path** (*str*) – the path to the `.fbx` file. Path may be either
    absolute or relative to the directory containing the `.fo3d`
    file
  * **material** (`fiftyone.core.threed.MeshMaterial`, optional) – the default material for the mesh if FBX file does not contain
    material information. Defaults to
    [`fiftyone.core.threed.MeshStandardMaterial`](fiftyone.core.threed.md#fiftyone.core.threed.MeshStandardMaterial)
  * **visible** (*True*) – default visibility of the mesh in the scene
  * **position** (*None*) – the position of the mesh in object space
  * **quaternion** (*None*) – the quaternion of the mesh in object space
  * **scale** (*None*) – the scale of the mesh in object space
* **Raises:**
  **ValueError** – If `fbx_path` does not end with `.fbx`

**Methods:**

| [`add`](#fiftyone.core.threed.mesh.FbxMesh.add)(\*objs)                                              | Add one or more objects as children of this one.                            |
|------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| [`as_dict`](#fiftyone.core.threed.mesh.FbxMesh.as_dict)()                                            | Converts the object to a dict.                                              |
| [`clear`](#fiftyone.core.threed.mesh.FbxMesh.clear)()                                                | Remove all children from this object.                                       |
| [`find_and_execute`](#fiftyone.core.threed.mesh.FbxMesh.find_and_execute)(node, predicate, on_match) | Recursively search the scene graph and execute an action on matching nodes. |
| [`remove`](#fiftyone.core.threed.mesh.FbxMesh.remove)(\*objs)                                        | Remove one or more objects from the scene graph recursively.                |
| [`remove_by_name`](#fiftyone.core.threed.mesh.FbxMesh.remove_by_name)(name)                          | Remove all objects with the given name from the scene graph recursively.    |
| [`remove_by_uuid`](#fiftyone.core.threed.mesh.FbxMesh.remove_by_uuid)(target_uuid)                   | Remove the object with the given UUID from the scene graph recursively.     |
| [`set_default_material`](#fiftyone.core.threed.mesh.FbxMesh.set_default_material)(material)          | Sets the material of the mesh.                                              |
| [`traverse`](#fiftyone.core.threed.mesh.FbxMesh.traverse)([include_self])                            | Traverse the scene graph.                                                   |

**Attributes:**

| [`local_transform_matrix`](#fiftyone.core.threed.mesh.FbxMesh.local_transform_matrix)   | The local transform matrix of the object.     |
|-----------------------------------------------------------------------------------------|-----------------------------------------------|
| [`position`](#fiftyone.core.threed.mesh.FbxMesh.position)                               | The position of the object in object space.   |
| [`quaternion`](#fiftyone.core.threed.mesh.FbxMesh.quaternion)                           | The quaternion of the object in object space. |
| [`rotation`](#fiftyone.core.threed.mesh.FbxMesh.rotation)                               | The rotation of the object in object space.   |
| [`scale`](#fiftyone.core.threed.mesh.FbxMesh.scale)                                     | The scale of the object in object space.      |
| [`uuid`](#fiftyone.core.threed.mesh.FbxMesh.uuid)                                       | The unique ID of the object.                  |

#### add(\*objs: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D)) → None

Add one or more objects as children of this one.

#### as_dict()

Converts the object to a dict.

#### clear() → None

Remove all children from this object.

#### find_and_execute(node: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D), predicate, on_match, stop_on_first_match: [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool) = False) → [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool)

Recursively search the scene graph and execute an action on
matching nodes.

This is a generic method for traversing the scene graph and
performing operations on nodes that match a given predicate.
It can be used for finding and removing nodes, collecting nodes,
updating nodes, etc.

The traversal continues into the subtrees of both matching and
non-matching nodes. For matching nodes, the subtree is traversed
when on_match returns True and stop_on_first_match is False.

* **Parameters:**
  * **node** – the node to start searching from
  * **predicate** – a function that takes a child Object3D and returns
  * **criteria** (*True if it matches the search*)
  * **on_match** – a function called when a match is found, takes
  * **(****parent**
  * **searching** ([*child*](fiftyone.core.odm.md#fiftyone.core.odm.WorkspaceDocument.child) *)* *and returns True to continue*)
  * **to** (*False*)
  * **stop**
  * **stop_on_first_match** – if True, stop searching after first match
  * **processed** (*is*)
* **Returns:**
  True if a match was found and we should stop, False otherwise

### Example

# Find all nodes with a specific name and collect them
matches = []
def predicate(child):

> return child.name == “target”

def on_match(parent, child):
: matches.append(child)
  return True  # continue searching

scene.find_and_execute(scene, predicate, on_match)

#### *property* local_transform_matrix

The local transform matrix of the object.

Setting this property also decomposes the matrix into
its constituent position, quaternion, and scale components.
However, decomposition of matrices with skew / shear components
(non-uniform scaling) might have unexpected results.

#### *property* position

The position of the object in object space.

#### *property* quaternion

The quaternion of the object in object space.

#### remove(\*objs: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D)) → None

Remove one or more objects from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes any matching objects from their parent’s
children list.

* **Parameters:**
  **\*objs** – one or more Object3D instances to remove
* **Raises:**
  * **ValueError** – if any of the objects to remove is this object itself
  * **ValueError** – if any of the objects is not found in the scene graph

#### remove_by_name(name: str) → None

Remove all objects with the given name from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes all objects matching the given name from
their parent’s children lists.

* **Parameters:**
  **name** – the name of the objects to remove
* **Raises:**
  * **ValueError** – if attempting to remove this object itself by name
  * **ValueError** – if no objects with the given name are found

#### remove_by_uuid(target_uuid: str) → None

Remove the object with the given UUID from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes the object matching the given UUID from its
parent’s children list. UUIDs should be unique, so only one match is expected.

* **Parameters:**
  **target_uuid** – the UUID of the object to remove
* **Raises:**
  * **ValueError** – if attempting to remove this object itself by UUID
  * **ValueError** – if no object with the given UUID is found

#### *property* rotation

The rotation of the object in object space.

#### *property* scale

The scale of the object in object space.

#### set_default_material(material: [MeshMaterial](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial))

Sets the material of the mesh.

* **Parameters:**
  **material** ([*MeshMaterial*](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial)) – the material to set as the default

#### traverse(include_self=True)

Traverse the scene graph.

#### *property* uuid

The unique ID of the object.

### *class* fiftyone.core.threed.mesh.GltfMesh(name: str, gltf_path: str, default_material: [MeshMaterial](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial) | None = None, visible=True, position: [Vector3](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Vector3) | List[float] | Tuple[float] | array | None = None, scale: [Vector3](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Vector3) | List[float] | Tuple[float] | array | None = None, quaternion: [Quaternion](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Quaternion) | None = None)

Bases: [`Mesh`](#fiftyone.core.threed.mesh.Mesh)

Represents a gLTF mesh.

* **Parameters:**
  * **name** (*str*) – the name of the mesh
  * **gltf_path** (*str*) – the path to the `.gltf` or `.glb` file. The path
    may be either absolute or relative to the directory containing the
    `.fo3d` file
  * **material** (`fiftyone.core.threed.MeshMaterial`, optional) – the default material for the mesh if gLTF file does not contain
    material information. Defaults to
    [`fiftyone.core.threed.MeshStandardMaterial`](fiftyone.core.threed.md#fiftyone.core.threed.MeshStandardMaterial)
  * **visible** (*True*) – default visibility of the mesh in the scene
  * **position** (*None*) – the position of the mesh in object space
  * **quaternion** (*None*) – the quaternion of the mesh in object space
  * **scale** (*None*) – the scale of the mesh in object space
* **Raises:**
  **ValueError** – if `gltf_path` does not end with ‘.gltf’ or `.glb`

**Methods:**

| [`add`](#fiftyone.core.threed.mesh.GltfMesh.add)(\*objs)                                              | Add one or more objects as children of this one.                            |
|-------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| [`as_dict`](#fiftyone.core.threed.mesh.GltfMesh.as_dict)()                                            | Converts the object to a dict.                                              |
| [`clear`](#fiftyone.core.threed.mesh.GltfMesh.clear)()                                                | Remove all children from this object.                                       |
| [`find_and_execute`](#fiftyone.core.threed.mesh.GltfMesh.find_and_execute)(node, predicate, on_match) | Recursively search the scene graph and execute an action on matching nodes. |
| [`remove`](#fiftyone.core.threed.mesh.GltfMesh.remove)(\*objs)                                        | Remove one or more objects from the scene graph recursively.                |
| [`remove_by_name`](#fiftyone.core.threed.mesh.GltfMesh.remove_by_name)(name)                          | Remove all objects with the given name from the scene graph recursively.    |
| [`remove_by_uuid`](#fiftyone.core.threed.mesh.GltfMesh.remove_by_uuid)(target_uuid)                   | Remove the object with the given UUID from the scene graph recursively.     |
| [`set_default_material`](#fiftyone.core.threed.mesh.GltfMesh.set_default_material)(material)          | Sets the material of the mesh.                                              |
| [`traverse`](#fiftyone.core.threed.mesh.GltfMesh.traverse)([include_self])                            | Traverse the scene graph.                                                   |

**Attributes:**

| [`local_transform_matrix`](#fiftyone.core.threed.mesh.GltfMesh.local_transform_matrix)   | The local transform matrix of the object.     |
|------------------------------------------------------------------------------------------|-----------------------------------------------|
| [`position`](#fiftyone.core.threed.mesh.GltfMesh.position)                               | The position of the object in object space.   |
| [`quaternion`](#fiftyone.core.threed.mesh.GltfMesh.quaternion)                           | The quaternion of the object in object space. |
| [`rotation`](#fiftyone.core.threed.mesh.GltfMesh.rotation)                               | The rotation of the object in object space.   |
| [`scale`](#fiftyone.core.threed.mesh.GltfMesh.scale)                                     | The scale of the object in object space.      |
| [`uuid`](#fiftyone.core.threed.mesh.GltfMesh.uuid)                                       | The unique ID of the object.                  |

#### add(\*objs: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D)) → None

Add one or more objects as children of this one.

#### as_dict()

Converts the object to a dict.

#### clear() → None

Remove all children from this object.

#### find_and_execute(node: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D), predicate, on_match, stop_on_first_match: [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool) = False) → [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool)

Recursively search the scene graph and execute an action on
matching nodes.

This is a generic method for traversing the scene graph and
performing operations on nodes that match a given predicate.
It can be used for finding and removing nodes, collecting nodes,
updating nodes, etc.

The traversal continues into the subtrees of both matching and
non-matching nodes. For matching nodes, the subtree is traversed
when on_match returns True and stop_on_first_match is False.

* **Parameters:**
  * **node** – the node to start searching from
  * **predicate** – a function that takes a child Object3D and returns
  * **criteria** (*True if it matches the search*)
  * **on_match** – a function called when a match is found, takes
  * **(****parent**
  * **searching** ([*child*](fiftyone.core.odm.md#fiftyone.core.odm.WorkspaceDocument.child) *)* *and returns True to continue*)
  * **to** (*False*)
  * **stop**
  * **stop_on_first_match** – if True, stop searching after first match
  * **processed** (*is*)
* **Returns:**
  True if a match was found and we should stop, False otherwise

### Example

# Find all nodes with a specific name and collect them
matches = []
def predicate(child):

> return child.name == “target”

def on_match(parent, child):
: matches.append(child)
  return True  # continue searching

scene.find_and_execute(scene, predicate, on_match)

#### *property* local_transform_matrix

The local transform matrix of the object.

Setting this property also decomposes the matrix into
its constituent position, quaternion, and scale components.
However, decomposition of matrices with skew / shear components
(non-uniform scaling) might have unexpected results.

#### *property* position

The position of the object in object space.

#### *property* quaternion

The quaternion of the object in object space.

#### remove(\*objs: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D)) → None

Remove one or more objects from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes any matching objects from their parent’s
children list.

* **Parameters:**
  **\*objs** – one or more Object3D instances to remove
* **Raises:**
  * **ValueError** – if any of the objects to remove is this object itself
  * **ValueError** – if any of the objects is not found in the scene graph

#### remove_by_name(name: str) → None

Remove all objects with the given name from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes all objects matching the given name from
their parent’s children lists.

* **Parameters:**
  **name** – the name of the objects to remove
* **Raises:**
  * **ValueError** – if attempting to remove this object itself by name
  * **ValueError** – if no objects with the given name are found

#### remove_by_uuid(target_uuid: str) → None

Remove the object with the given UUID from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes the object matching the given UUID from its
parent’s children list. UUIDs should be unique, so only one match is expected.

* **Parameters:**
  **target_uuid** – the UUID of the object to remove
* **Raises:**
  * **ValueError** – if attempting to remove this object itself by UUID
  * **ValueError** – if no object with the given UUID is found

#### *property* rotation

The rotation of the object in object space.

#### *property* scale

The scale of the object in object space.

#### set_default_material(material: [MeshMaterial](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial))

Sets the material of the mesh.

* **Parameters:**
  **material** ([*MeshMaterial*](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial)) – the material to set as the default

#### traverse(include_self=True)

Traverse the scene graph.

#### *property* uuid

The unique ID of the object.

### *class* fiftyone.core.threed.mesh.PlyMesh(name: str, ply_path: str, is_point_cloud: [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool) = False, center_geometry: [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool) = True, default_material: [MeshMaterial](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial) | None = None, visible=True, position: [Vector3](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Vector3) | List[float] | Tuple[float] | array | None = None, scale: [Vector3](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Vector3) | List[float] | Tuple[float] | array | None = None, quaternion: [Quaternion](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Quaternion) | None = None)

Bases: [`Mesh`](#fiftyone.core.threed.mesh.Mesh)

Represents a PLY mesh. A PLY mesh can be a point cloud or a mesh.

* **Parameters:**
  * **name** (*str*) – the name of the mesh
  * **ply_path** (*str*) – the path to the `.ply` file. The path may be either
    absolute or relative to the directory containing the `.fo3d` file
  * **is_point_cloud** ([*bool*](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool)) – whether the PLY file is a point cloud. Defaults
    to `False`
  * **center_geometry** ([*bool*](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool)) – whether to center the geometry. Defaults to
    `True`
  * **material** (`fiftyone.core.threed.MeshMaterial`, optional) – default material for the mesh if PLY file does not contain
    vertex colors. Defaults to
    [`fiftyone.core.threed.MeshStandardMaterial`](fiftyone.core.threed.md#fiftyone.core.threed.MeshStandardMaterial). If the PLY
    file contains vertex colors, the material is ignored and vertex
    colors are used
  * **visible** (*True*) – default visibility of the mesh in the scene
  * **position** (*None*) – the position of the mesh in object space
  * **quaternion** (*None*) – the quaternion of the mesh in object space
  * **scale** (*None*) – the scale of the mesh in object space
* **Raises:**
  **ValueError** – if `ply_path` does not end with `.ply`

**Methods:**

| [`add`](#fiftyone.core.threed.mesh.PlyMesh.add)(\*objs)                                              | Add one or more objects as children of this one.                            |
|------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| [`as_dict`](#fiftyone.core.threed.mesh.PlyMesh.as_dict)()                                            | Converts the object to a dict.                                              |
| [`clear`](#fiftyone.core.threed.mesh.PlyMesh.clear)()                                                | Remove all children from this object.                                       |
| [`find_and_execute`](#fiftyone.core.threed.mesh.PlyMesh.find_and_execute)(node, predicate, on_match) | Recursively search the scene graph and execute an action on matching nodes. |
| [`remove`](#fiftyone.core.threed.mesh.PlyMesh.remove)(\*objs)                                        | Remove one or more objects from the scene graph recursively.                |
| [`remove_by_name`](#fiftyone.core.threed.mesh.PlyMesh.remove_by_name)(name)                          | Remove all objects with the given name from the scene graph recursively.    |
| [`remove_by_uuid`](#fiftyone.core.threed.mesh.PlyMesh.remove_by_uuid)(target_uuid)                   | Remove the object with the given UUID from the scene graph recursively.     |
| [`set_default_material`](#fiftyone.core.threed.mesh.PlyMesh.set_default_material)(material)          | Sets the material of the mesh.                                              |
| [`traverse`](#fiftyone.core.threed.mesh.PlyMesh.traverse)([include_self])                            | Traverse the scene graph.                                                   |

**Attributes:**

| [`local_transform_matrix`](#fiftyone.core.threed.mesh.PlyMesh.local_transform_matrix)   | The local transform matrix of the object.     |
|-----------------------------------------------------------------------------------------|-----------------------------------------------|
| [`position`](#fiftyone.core.threed.mesh.PlyMesh.position)                               | The position of the object in object space.   |
| [`quaternion`](#fiftyone.core.threed.mesh.PlyMesh.quaternion)                           | The quaternion of the object in object space. |
| [`rotation`](#fiftyone.core.threed.mesh.PlyMesh.rotation)                               | The rotation of the object in object space.   |
| [`scale`](#fiftyone.core.threed.mesh.PlyMesh.scale)                                     | The scale of the object in object space.      |
| [`uuid`](#fiftyone.core.threed.mesh.PlyMesh.uuid)                                       | The unique ID of the object.                  |

#### add(\*objs: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D)) → None

Add one or more objects as children of this one.

#### as_dict()

Converts the object to a dict.

#### clear() → None

Remove all children from this object.

#### find_and_execute(node: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D), predicate, on_match, stop_on_first_match: [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool) = False) → [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool)

Recursively search the scene graph and execute an action on
matching nodes.

This is a generic method for traversing the scene graph and
performing operations on nodes that match a given predicate.
It can be used for finding and removing nodes, collecting nodes,
updating nodes, etc.

The traversal continues into the subtrees of both matching and
non-matching nodes. For matching nodes, the subtree is traversed
when on_match returns True and stop_on_first_match is False.

* **Parameters:**
  * **node** – the node to start searching from
  * **predicate** – a function that takes a child Object3D and returns
  * **criteria** (*True if it matches the search*)
  * **on_match** – a function called when a match is found, takes
  * **(****parent**
  * **searching** ([*child*](fiftyone.core.odm.md#fiftyone.core.odm.WorkspaceDocument.child) *)* *and returns True to continue*)
  * **to** (*False*)
  * **stop**
  * **stop_on_first_match** – if True, stop searching after first match
  * **processed** (*is*)
* **Returns:**
  True if a match was found and we should stop, False otherwise

### Example

# Find all nodes with a specific name and collect them
matches = []
def predicate(child):

> return child.name == “target”

def on_match(parent, child):
: matches.append(child)
  return True  # continue searching

scene.find_and_execute(scene, predicate, on_match)

#### *property* local_transform_matrix

The local transform matrix of the object.

Setting this property also decomposes the matrix into
its constituent position, quaternion, and scale components.
However, decomposition of matrices with skew / shear components
(non-uniform scaling) might have unexpected results.

#### *property* position

The position of the object in object space.

#### *property* quaternion

The quaternion of the object in object space.

#### remove(\*objs: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D)) → None

Remove one or more objects from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes any matching objects from their parent’s
children list.

* **Parameters:**
  **\*objs** – one or more Object3D instances to remove
* **Raises:**
  * **ValueError** – if any of the objects to remove is this object itself
  * **ValueError** – if any of the objects is not found in the scene graph

#### remove_by_name(name: str) → None

Remove all objects with the given name from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes all objects matching the given name from
their parent’s children lists.

* **Parameters:**
  **name** – the name of the objects to remove
* **Raises:**
  * **ValueError** – if attempting to remove this object itself by name
  * **ValueError** – if no objects with the given name are found

#### remove_by_uuid(target_uuid: str) → None

Remove the object with the given UUID from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes the object matching the given UUID from its
parent’s children list. UUIDs should be unique, so only one match is expected.

* **Parameters:**
  **target_uuid** – the UUID of the object to remove
* **Raises:**
  * **ValueError** – if attempting to remove this object itself by UUID
  * **ValueError** – if no object with the given UUID is found

#### *property* rotation

The rotation of the object in object space.

#### *property* scale

The scale of the object in object space.

#### set_default_material(material: [MeshMaterial](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial))

Sets the material of the mesh.

* **Parameters:**
  **material** ([*MeshMaterial*](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial)) – the material to set as the default

#### traverse(include_self=True)

Traverse the scene graph.

#### *property* uuid

The unique ID of the object.

### *class* fiftyone.core.threed.mesh.StlMesh(name: str, stl_path: str, default_material: [MeshMaterial](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial) | None = None, visible=True, position: [Vector3](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Vector3) | List[float] | Tuple[float] | array | None = None, scale: [Vector3](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Vector3) | List[float] | Tuple[float] | array | None = None, quaternion: [Quaternion](fiftyone.core.threed.transformation.md#fiftyone.core.threed.transformation.Quaternion) | None = None)

Bases: [`Mesh`](#fiftyone.core.threed.mesh.Mesh)

Represents an STL mesh.

* **Parameters:**
  * **name** (*str*) – the name of the mesh
  * **stl_path** (*str*) – the path to the `.stl` file. The path may be either
    absolute or relative to the directory containing the `.fo3d`
    file
  * **material** (`fiftyone.core.threed.MeshMaterial`, optional) – default material for the mesh. Defaults to
    [`fiftyone.core.threed.MeshStandardMaterial`](fiftyone.core.threed.md#fiftyone.core.threed.MeshStandardMaterial)
  * **visible** (*True*) – default visibility of the mesh in the scene
  * **position** (*None*) – the position of the mesh in object space
  * **quaternion** (*None*) – the quaternion of the mesh in object space
  * **scale** (*None*) – the scale of the mesh in object space
* **Raises:**
  **ValueError** – if `stl_path` does not end with `.stl`

**Methods:**

| [`add`](#fiftyone.core.threed.mesh.StlMesh.add)(\*objs)                                              | Add one or more objects as children of this one.                            |
|------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| [`as_dict`](#fiftyone.core.threed.mesh.StlMesh.as_dict)()                                            | Converts the object to a dict.                                              |
| [`clear`](#fiftyone.core.threed.mesh.StlMesh.clear)()                                                | Remove all children from this object.                                       |
| [`find_and_execute`](#fiftyone.core.threed.mesh.StlMesh.find_and_execute)(node, predicate, on_match) | Recursively search the scene graph and execute an action on matching nodes. |
| [`remove`](#fiftyone.core.threed.mesh.StlMesh.remove)(\*objs)                                        | Remove one or more objects from the scene graph recursively.                |
| [`remove_by_name`](#fiftyone.core.threed.mesh.StlMesh.remove_by_name)(name)                          | Remove all objects with the given name from the scene graph recursively.    |
| [`remove_by_uuid`](#fiftyone.core.threed.mesh.StlMesh.remove_by_uuid)(target_uuid)                   | Remove the object with the given UUID from the scene graph recursively.     |
| [`set_default_material`](#fiftyone.core.threed.mesh.StlMesh.set_default_material)(material)          | Sets the material of the mesh.                                              |
| [`traverse`](#fiftyone.core.threed.mesh.StlMesh.traverse)([include_self])                            | Traverse the scene graph.                                                   |

**Attributes:**

| [`local_transform_matrix`](#fiftyone.core.threed.mesh.StlMesh.local_transform_matrix)   | The local transform matrix of the object.     |
|-----------------------------------------------------------------------------------------|-----------------------------------------------|
| [`position`](#fiftyone.core.threed.mesh.StlMesh.position)                               | The position of the object in object space.   |
| [`quaternion`](#fiftyone.core.threed.mesh.StlMesh.quaternion)                           | The quaternion of the object in object space. |
| [`rotation`](#fiftyone.core.threed.mesh.StlMesh.rotation)                               | The rotation of the object in object space.   |
| [`scale`](#fiftyone.core.threed.mesh.StlMesh.scale)                                     | The scale of the object in object space.      |
| [`uuid`](#fiftyone.core.threed.mesh.StlMesh.uuid)                                       | The unique ID of the object.                  |

#### add(\*objs: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D)) → None

Add one or more objects as children of this one.

#### as_dict()

Converts the object to a dict.

#### clear() → None

Remove all children from this object.

#### find_and_execute(node: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D), predicate, on_match, stop_on_first_match: [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool) = False) → [bool](fiftyone.core.stages.md#fiftyone.core.stages.Exists.bool)

Recursively search the scene graph and execute an action on
matching nodes.

This is a generic method for traversing the scene graph and
performing operations on nodes that match a given predicate.
It can be used for finding and removing nodes, collecting nodes,
updating nodes, etc.

The traversal continues into the subtrees of both matching and
non-matching nodes. For matching nodes, the subtree is traversed
when on_match returns True and stop_on_first_match is False.

* **Parameters:**
  * **node** – the node to start searching from
  * **predicate** – a function that takes a child Object3D and returns
  * **criteria** (*True if it matches the search*)
  * **on_match** – a function called when a match is found, takes
  * **(****parent**
  * **searching** ([*child*](fiftyone.core.odm.md#fiftyone.core.odm.WorkspaceDocument.child) *)* *and returns True to continue*)
  * **to** (*False*)
  * **stop**
  * **stop_on_first_match** – if True, stop searching after first match
  * **processed** (*is*)
* **Returns:**
  True if a match was found and we should stop, False otherwise

### Example

# Find all nodes with a specific name and collect them
matches = []
def predicate(child):

> return child.name == “target”

def on_match(parent, child):
: matches.append(child)
  return True  # continue searching

scene.find_and_execute(scene, predicate, on_match)

#### *property* local_transform_matrix

The local transform matrix of the object.

Setting this property also decomposes the matrix into
its constituent position, quaternion, and scale components.
However, decomposition of matrices with skew / shear components
(non-uniform scaling) might have unexpected results.

#### *property* position

The position of the object in object space.

#### *property* quaternion

The quaternion of the object in object space.

#### remove(\*objs: [Object3D](fiftyone.core.threed.object_3d.md#fiftyone.core.threed.object_3d.Object3D)) → None

Remove one or more objects from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes any matching objects from their parent’s
children list.

* **Parameters:**
  **\*objs** – one or more Object3D instances to remove
* **Raises:**
  * **ValueError** – if any of the objects to remove is this object itself
  * **ValueError** – if any of the objects is not found in the scene graph

#### remove_by_name(name: str) → None

Remove all objects with the given name from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes all objects matching the given name from
their parent’s children lists.

* **Parameters:**
  **name** – the name of the objects to remove
* **Raises:**
  * **ValueError** – if attempting to remove this object itself by name
  * **ValueError** – if no objects with the given name are found

#### remove_by_uuid(target_uuid: str) → None

Remove the object with the given UUID from the scene graph recursively.

This method searches recursively through the entire scene graph starting
from this object and removes the object matching the given UUID from its
parent’s children list. UUIDs should be unique, so only one match is expected.

* **Parameters:**
  **target_uuid** – the UUID of the object to remove
* **Raises:**
  * **ValueError** – if attempting to remove this object itself by UUID
  * **ValueError** – if no object with the given UUID is found

#### *property* rotation

The rotation of the object in object space.

#### *property* scale

The scale of the object in object space.

#### set_default_material(material: [MeshMaterial](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial))

Sets the material of the mesh.

* **Parameters:**
  **material** ([*MeshMaterial*](fiftyone.core.threed.material_3d.md#fiftyone.core.threed.material_3d.MeshMaterial)) – the material to set as the default

#### traverse(include_self=True)

Traverse the scene graph.

#### *property* uuid

The unique ID of the object.
