Skip to main content

ObjectMesh

The ObjectMesh class provides mesh-based geometry support to Object. It manages vertex, index, and morph target buffers and offers methods to efficiently load geometry from meshes and assets. ObjectMesh supports a wide range of configuration options and natively handles up to four vertex colors and texture coordinates, with optional skinning and morph target transformations. Geometry can be loaded from mesh files or embedded within *.scene files.

info

The buffers can be defined as a base indices within Scene vertex, index, and storage buffers.

info

Custom materials can completely redefine the behavior of ObjectMesh.

#include <scene/TellusimObjectMesh.h>

Inheritance

Constructors

explicit ObjectMesh(const char *name = nullptr)
explicit ObjectMesh(Scene &scene, const char *name = nullptr)

Methods

Object flags.

void setFlags(Flags flags)
Flags getFlags() const
bool hasFlag(Flags flags) const
bool hasFlags(Flags flags) const
String getFlagsName() const

Mesh file name.

void setMeshName(const char *name)
void setMeshName(const String &name)
String getMeshName() const

Mesh file scale.

void setMeshScale(float32_t scale)
float32_t getMeshScale() const

Mesh file basis.

void setMeshBasis(Basis basis)
Basis getMeshBasis() const

Load object mesh.

bool load(const char *name, Material *material, Flags flags, float32_t scale, Basis basis, float64_t fps = 30.0, Async *async = nullptr)
bool load(const String &name, Material *material, Flags flags, float32_t scale, Basis basis, float64_t fps = 30.0, Async *async = nullptr)
bool load(Stream &stream, Material *material, Flags flags, float32_t scale, Basis basis, float64_t fps = 30.0, Async *async = nullptr)
bool load(const char *name, Material *material = nullptr, Flags flags = DefaultFlagsTriBasTex, Async *async = nullptr)
bool load(const String &name, Material *material = nullptr, Flags flags = DefaultFlagsTriBasTex, Async *async = nullptr)
bool load(Stream &stream, Material *material = nullptr, Flags flags = DefaultFlagsTriBasTex, Async *async = nullptr)

Create object with new materials.

bool create(const MeshGeometry &geometry, Material *material = nullptr, Flags flags = DefaultFlagsTriBasTex)
bool create(Array<MeshGeometry> geometries, Material *material = nullptr, Flags flags = DefaultFlagsTriBasTex)
bool create(const Mesh &mesh, Material *material = nullptr, Flags flags = DefaultFlagsTriBasTex, float64_t fps = 30.0)

Create object with specified materials.

bool create(const MeshGeometry &geometry, Material *material, const Materials &materials, Flags flags = DefaultFlagsTriBasTex)
bool create(Array<MeshGeometry> geometries, Material *material, const Materials &materials, Flags flags = DefaultFlagsTriBasTex)
bool create(const Mesh &mesh, Material *material, const Materials &materials, Flags flags = DefaultFlagsTriBasTex, float64_t fps = 30.0)

Load object asset.

bool loadAsset(const char *name, Material *material, Flags flags = DefaultFlagsTriBasTex, float32_t scale = 1.0f, Basis basis = Mesh::BasisUnknown, float64_t fps = 30.0, Async *async = nullptr)
bool loadAsset(const String &name, Material *material, Flags flags = DefaultFlagsTriBasTex, float32_t scale = 1.0f, Basis basis = Mesh::BasisUnknown, float64_t fps = 30.0, Async *async = nullptr)
bool loadAsset(const Archive &archive, Material *material, Flags flags = DefaultFlagsTriBasTex, float32_t scale = 1.0f, Basis basis = Mesh::BasisUnknown, float64_t fps = 30.0, Async *async = nullptr)

Load object geometries.

bool loadGeometries(const char *name, Async *async = nullptr)
bool loadGeometries(const String &name, Async *async = nullptr)
bool loadGeometries(Stream &stream, Async *async = nullptr)

Create object geometries.

bool createGeometries(Array<MeshGeometry> geometries)
bool createGeometries(const Mesh &mesh)

Create material textures.

bool createTextures(Array<MeshGeometry> geometries)
bool createTextures(const Mesh &mesh)

Vertex stride.

void setVertexStride(uint32_t stride)
uint32_t getVertexStride() const

Vertices data.

void setBaseVertex(uint32_t base)
void setVertexData(const void *src, size_t size, bool owner)
void setVertexBuffer(Buffer &buffer, size_t offset, size_t size)
const void *getVertexData() const
Buffer getVertexBuffer() const
size_t getVertexOffset() const
size_t getVertexSize() const
uint32_t getVertexAddress() const

Indices data.

void setBaseIndex(uint32_t base)
void setIndexData(const void *src, size_t size, bool owner)
void setIndexBuffer(Buffer &buffer, size_t offset, size_t size)
const void *getIndexData() const
Buffer getIndexBuffer() const
size_t getIndexOffset() const
size_t getIndexSize() const
uint32_t getIndexAddress() const

Targets data.

void setBaseTarget(uint32_t base)
void setTargetData(const void *src, size_t size, bool owner)
void setTargetBuffer(Buffer &buffer, size_t offset, size_t size)
const void *getTargetData() const
Buffer getTargetBuffer() const
size_t getTargetOffset() const
size_t getTargetSize() const
uint32_t getTargetAddress() const

Joint parameters.

uint32_t getNumJoints() const

Morph parameters.

uint32_t getNumMorphs() const

Types

using Materials = Map<MeshMaterial, Material>

Enums

Flags

NameValueDescription
FlagNone0
FlagUpdate(1 << 0)Update scene.
FlagDirect(1 << 1)Direct creation.
FlagVerbose(1 << 2)Verbose creation.
FlagOptimize(1 << 3)Optimize indices.
FlagSkeleton(1 << 4)Animate children.
FlagAnimation(1 << 5)Create animation.
FlagMaterials(1 << 6)Create materials.
FlagVertices16(1 << 7)Create 16-bit vertices.
FlagIndices16(1 << 8)Create 16-bit indices.
FlagTessellation(1 << 9)Create tessellation.
FlagMeshlet(1 << 10)Create meshlet.
FlagTracing(1 << 11)Create tracing.
FlagSpatial(1 << 12)Create spatial.
FlagPoint(1 << 13)Create point primitives.
FlagLine(1 << 14)Create line primitives.
FlagTriangle(1 << 15)Create triangle primitives.
FlagQuadrilateral(1 << 16)Create quadrilateral primitives.
FlagBasis(1 << 17)Create tangent basis attribute (RGBAu32 (normal RGBAf16 packed, tangent RGBAf16 packed)).
FlagNormal(1 << 18)Create normal vector attrubute (RGBf32).
FlagSkinned(1 << 19)Create skinned mesh attributes (weights RGBAf16, joints RGBAu16).
FlagTexCoord(1 << 20)Create one texture coordinate attribute (RGf32).
FlagTexCoord2(1 << 21)Create two texture coordinate attributes (RGBAf32 (RGf32 packed)).
FlagTexCoord4(1 << 22)Create four texture coordinate attributes (RGBAf32 (RGf32 packed) x2).
FlagColor(1 << 23)Create one vertex color attribute (RGBAu8n).
FlagColor2(1 << 24)Create two vertex color attributes (RGu32 (RGBAu8n packed)).
FlagColor4(1 << 25)Create four vertex color attributes (RGBAu32 (RGBAu8n packed)).
FlagMorph(1 << 26)Create morph mesh attributes (vertex index Ru32).
DefaultFlags(FlagUpdate | FlagAnimation)
FlagTriBas(FlagTriangle | FlagBasis)
FlagTriBasCol(FlagTriangle | FlagBasis | FlagColor)
FlagTriBasTex(FlagTriangle | FlagBasis | FlagTexCoord)
FlagTriBasTex2(FlagTriangle | FlagBasis | FlagTexCoord2)
FlagTriBasTexCol(FlagTriangle | FlagBasis | FlagTexCoord | FlagColor)
FlagTriBasTexCol2(FlagTriangle | FlagBasis | FlagTexCoord | FlagColor2)
FlagTriBasTex2Col(FlagTriangle | FlagBasis | FlagTexCoord2 | FlagColor)
FlagTriBasTex2Col2(FlagTriangle | FlagBasis | FlagTexCoord2 | FlagColor2)
FlagTriSkiBas(FlagTriBas | FlagSkinned)
FlagTriSkiBasCol(FlagTriBasCol | FlagSkinned)
FlagTriSkiBasTex(FlagTriBasTex | FlagSkinned)
FlagTriSkiBasTex2(FlagTriBasTex2 | FlagSkinned)
FlagTriSkiBasTexCol(FlagTriBasTexCol | FlagSkinned)
FlagTriSkiBasTexCol2(FlagTriBasTexCol2 | FlagSkinned)
FlagTriSkiBasTex2Col(FlagTriBasTex2Col | FlagSkinned)
FlagTriSkiBasTex2Col2(FlagTriBasTex2Col2 | FlagSkinned)
DefaultFlagsTriBasTex(DefaultFlags | FlagTriBasTex)
DefaultFlagsTriSkiBasTex(DefaultFlags | FlagTriSkiBasTex)
NumFlags27