# CustomMesh

Artifact: [androidx.xr.scenecore:scenecore](https://developer.android.com/jetpack/androidx/releases/xr-scenecore) [View Source](https://cs.android.com/search?q=file:androidx/xr/scenecore/CustomMesh.kt+class:androidx.xr.scenecore.CustomMesh) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-scenecore#1.0.0)

*** ** * ** ***


```
class CustomMesh : AutoCloseable
```

<br />

*** ** * ** ***

A resource that defines the structure of a renderable mesh.

A `CustomMesh` is composed of a `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/MeshBuffer` and a list of `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/MeshSubset`. Each `MeshSubset` defines a part of the mesh that can be rendered with a single `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/Material`.

## Summary

| ### Nested types |
|---|
| `class https://developer.android.com/reference/kotlin/androidx/xr/scenecore/CustomMesh.BuilderFromMeshBuffer` Builder for `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/CustomMesh` using an existing `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/MeshBuffer`. |
| `class https://developer.android.com/reference/kotlin/androidx/xr/scenecore/CustomMesh.BuilderFromMeshData` Builder for `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/CustomMesh` providing raw data directly. |

| ### Public functions |
|---|---|
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread https://developer.android.com/reference/kotlin/androidx/xr/scenecore/CustomMesh#close()()` Closes the given `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/CustomMesh`. |

| ### Public properties |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/xr/runtime/math/BoundingBox` | `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/CustomMesh#bounds()` Bounding box of the mesh, used for culling. |
| `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/MeshBuffer` | `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/CustomMesh#meshBuffer()` The `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/MeshBuffer` containing the vertex and index data for this mesh. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/xr/scenecore/MeshSubset>` | `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/CustomMesh#subsets()` The list of `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/MeshSubset` defining the parts of the mesh. |

## Public functions

### close

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-scenecore#1.0.0)

```
@MainThread
open fun close(): Unit
```

Closes the given `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/CustomMesh`.

The `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/CustomMesh` can be explicitly closed at anytime or garbage collected. An exception will be thrown if the `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/CustomMesh` is used after being closed.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if the resource has already been closed. |

## Public properties

### bounds

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-scenecore#1.0.0)

```
var bounds: BoundingBox
```

Bounding box of the mesh, used for culling.

It is an axis-aligned bounding box in the mesh's local coordinate space. It does not need to be tightly fit to the mesh, but tighter bounds will result in more efficient culling.

When the vertex positions are dynamically updated in the underlying `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/MeshBuffer`, this culling volume is not automatically recalculated on the CPU to avoid expensive synchronization or active memory copies. Instead, the application can manually set this property to specify the updated bounds.

The setter for this property must be called on the main thread.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if the property is set after this mesh has been closed. |

### meshBuffer

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-scenecore#1.0.0)

```
val meshBuffer: MeshBuffer
```

The `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/MeshBuffer` containing the vertex and index data for this mesh.

### subsets

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/xr-scenecore#1.0.0)

```
val subsets: List<MeshSubset>
```

The list of `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/MeshSubset` defining the parts of the mesh.