CustomMesh.FromMeshDataBuilder


public final class CustomMesh.FromMeshDataBuilder


Builder for CustomMesh providing raw data directly.

This will implicitly create a MeshBuffer for you. You provide the VertexLayout along with the raw vertex and index data:


val builder = CustomMesh.FromMeshDataBuilder(session, myLayout)
     .addVertexData(myVertexData)
     .setIndexData(myIndexData)

From here, you have two options for defining the mesh topology:

  • You can explicitly add one or more subsets:


builder.addSubset(MeshSubset(MeshSubsetTopology.TRIANGLES, 0, subset1Count))
builder.addSubset(MeshSubset(MeshSubsetTopology.TRIANGLES, subset1Count, subset2Count))
  • Or, if the entire mesh uses the same topology, you can define a single subset that spans all the provided index data:


builder.setTopology(MeshSubsetTopology.TRIANGLES)

Finally, build the mesh:


val mesh = builder.build()

Summary

Public constructors

FromMeshDataBuilder(
    @NonNull Session session,
    @NonNull VertexLayout vertexLayout
)

Public methods

final @NonNull CustomMesh.FromMeshDataBuilder

Adds a MeshSubset defining a part of the mesh.

final @NonNull CustomMesh.FromMeshDataBuilder

Adds vertex data for a single buffer.

final @NonNull CustomMesh

Builds a new CustomMesh.

final @NonNull CustomMesh.FromMeshDataBuilder

Sets an optional user-supplied bounding box for culling.

final @NonNull CustomMesh.FromMeshDataBuilder

Sets the index data.

final @NonNull CustomMesh.FromMeshDataBuilder

Sets the MeshSubsetTopology to use for the entire mesh, defining a single subset that spans all provided index data.

Public constructors

FromMeshDataBuilder

Added in 1.0.0-alpha15
public FromMeshDataBuilder(
    @NonNull Session session,
    @NonNull VertexLayout vertexLayout
)

Public methods

addSubset

Added in 1.0.0-alpha15
public final @NonNull CustomMesh.FromMeshDataBuilder addSubset(@NonNull MeshSubset subset)

Adds a MeshSubset defining a part of the mesh.

This cannot be used in combination with setTopology.

Throws
IllegalStateException

if a topology has already been set

addVertexData

Added in 1.0.0-alpha15
public final @NonNull CustomMesh.FromMeshDataBuilder addVertexData(@NonNull ByteBufferRegion vertexData)

Adds vertex data for a single buffer.

The order in which this method is called determines the buffer index. The first call provides data for buffer index 0, the second for buffer index 1, etc. The data is copied, so the original java.nio.ByteBuffer can be modified or released without affecting the underlying MeshBuffer.

build

Added in 1.0.0-alpha15
@MainThread
public final @NonNull CustomMesh build()

Builds a new CustomMesh.

Throws
IllegalStateException

if index data or vertex data are missing, or if both or neither of subsets and topology are provided.

setBounds

Added in 1.0.0-alpha15
public final @NonNull CustomMesh.FromMeshDataBuilder setBounds(@NonNull BoundingBox bounds)

Sets an optional user-supplied bounding box for culling.

If not provided, the auto-computed bounding box of the entire MeshBuffer will be used.

setIndexData

Added in 1.0.0-alpha15
public final @NonNull CustomMesh.FromMeshDataBuilder setIndexData(@NonNull ByteBufferRegion indexData)

Sets the index data.

The data is copied, so the original java.nio.ByteBuffer can be modified or released without affecting the underlying MeshBuffer.

setTopology

Added in 1.0.0-alpha15
public final @NonNull CustomMesh.FromMeshDataBuilder setTopology(@NonNull MeshSubsetTopology topology)

Sets the MeshSubsetTopology to use for the entire mesh, defining a single subset that spans all provided index data.

This cannot be used in combination with addSubset.

Throws
IllegalStateException

if subsets have already been added