Class MeshAccessor
General purpose utility for accessing mesh data (both read and write).
Inheritance
Namespace: FlaxEngine
Assembly: FlaxEngine.CSharp.dll
Syntax
public class MeshAccessor : Object
Constructors
MeshAccessor()
Declaration
public MeshAccessor()
Properties
Colors
Gets or sets the vertex colors. Null if Color does not exist in vertex buffers of the mesh.
Declaration
public Color[] Colors { get; set; }
Property Value
|
Color[]
|
Remarks
Uses Color() stream to read or write data to the vertex buffer.
Normals
Gets or sets the vertex normal vectors (unpacked, normalized). Null if Normal does not exist in vertex buffers of the mesh.
Declaration
public Float3[] Normals { get; set; }
Property Value
|
Float3[]
|
Remarks
Uses Normal() stream to read or write data to the vertex buffer.
Positions
Gets or sets the vertex positions. Null if Position does not exist in vertex buffers of the mesh.
Declaration
public Float3[] Positions { get; set; }
Property Value
|
Float3[]
|
Remarks
Uses Position() stream to read or write data to the vertex buffer.
TexCoords
Gets or sets the vertex UVs (texcoord channel 0). Null if TexCoord does not exist in vertex buffers of the mesh.
Declaration
public Float2[] TexCoords { get; set; }
Property Value
|
Float2[]
|
Remarks
Uses TexCoord(Int32) stream to read or write data to the vertex buffer.
Methods
AllocateBuffer(MeshBufferType, Int32, GPUVertexLayout)
Allocates the data for the mesh vertex buffer.
Declaration
public bool AllocateBuffer(MeshBufferType bufferType, int count, GPUVertexLayout layout)
Parameters
|
FlaxEngine.MeshBufferType
bufferType
Type of the mesh buffer to initialize. |
|
System.Int32
count
Amount of items in the buffer. |
|
GPUVertexLayout
layout
Layout of the elements in the buffer. |
Returns
|
System.Boolean
True if failed, otherwise false. |
AllocateBuffer(MeshBufferType, Int32, PixelFormat)
Allocates the data for the mesh buffer.
Declaration
public bool AllocateBuffer(MeshBufferType bufferType, int count, PixelFormat format)
Parameters
|
FlaxEngine.MeshBufferType
bufferType
Type of the mesh buffer to initialize. |
|
System.Int32
count
Amount of items in the buffer. |
|
PixelFormat
format
Format of the elements in the buffer. |
Returns
|
System.Boolean
True if failed, otherwise false. |
Attribute(VertexElement.Types)
Access stream with a specific vertex attribute.
Declaration
public MeshAccessor.Stream Attribute(VertexElement.Types attribute)
Parameters
|
VertexElement.Types
attribute
Type of the attribute. |
Returns
|
MeshAccessor.Stream
Mesh data stream (might be invalid if attribute is not provided). |
BlendIndices()
Access stream with vertex skeleton bones blend indices attribute.
Declaration
public MeshAccessor.Stream BlendIndices()
Returns
|
MeshAccessor.Stream
Mesh data stream (might be invalid if attribute is not provided). |
BlendWeights()
Access stream with vertex skeleton bones blend weights attribute.
Declaration
public MeshAccessor.Stream BlendWeights()
Returns
|
MeshAccessor.Stream
Mesh data stream (might be invalid if attribute is not provided). |
Color()
Access stream with vertex color attribute.
Declaration
public MeshAccessor.Stream Color()
Returns
|
MeshAccessor.Stream
Mesh data stream (might be invalid if attribute is not provided). |
Index()
Access stream with index buffer.
Declaration
public MeshAccessor.Stream Index()
Returns
|
MeshAccessor.Stream
Mesh data stream (might be invalid if data is not provided). |
LoadBuffer(MeshBufferType, Span<Byte>, GPUVertexLayout)
Loads the data from the provided mesh buffer.
Declaration
public bool LoadBuffer(MeshBufferType bufferType, Span<byte> bufferData, GPUVertexLayout layout)
Parameters
|
FlaxEngine.MeshBufferType
bufferType
Type of the mesh buffer to load. |
|
System.Span<System.Byte>
bufferData
Data used by that buffer. |
|
GPUVertexLayout
layout
Layout of the elements in the buffer. |
Returns
|
System.Boolean
True if failed, otherwise false. |
LoadMesh(MeshBase, Boolean, Span<MeshBufferType>)
Loads the data from the mesh.
Declaration
public bool LoadMesh(MeshBase mesh, bool forceGpu = false, Span<MeshBufferType> buffers = null)
Parameters
|
MeshBase
mesh
The source mesh object to access. |
|
System.Boolean
forceGpu
If set to |
|
System.Span<FlaxEngine.MeshBufferType>
buffers
Custom list of mesh buffers to load. Use empty value to access all of them. |
Returns
|
System.Boolean
True if failed, otherwise false. |
Normal()
Access stream with vertex normal vector attribute.
Declaration
public MeshAccessor.Stream Normal()
Returns
|
MeshAccessor.Stream
Mesh data stream (might be invalid if attribute is not provided). |
PackNormal(ref Float3)
Packs normal/tangent vector to normalized range from full range.
Declaration
public static void PackNormal(ref Float3 value)
Parameters
|
Float3
value
In and out value. |
Position()
Access stream with vertex position attribute.
Declaration
public MeshAccessor.Stream Position()
Returns
|
MeshAccessor.Stream
Mesh data stream (might be invalid if attribute is not provided). |
Tangent()
Access stream with vertex tangent vector attribute.
Declaration
public MeshAccessor.Stream Tangent()
Returns
|
MeshAccessor.Stream
Mesh data stream (might be invalid if attribute is not provided). |
TexCoord(Int32)
Access stream with vertex texture coordinates attribute (specific UV channel).
Declaration
public MeshAccessor.Stream TexCoord(int channel = 0)
Parameters
|
System.Int32
channel
UV channel index (zero-based). |
Returns
|
MeshAccessor.Stream
Mesh data stream (might be invalid if attribute is not provided). |
UnpackNormal(ref Float3)
Unpacks normal/tangent vector from normalized range to full range.
Declaration
public static void UnpackNormal(ref Float3 value)
Parameters
|
Float3
value
In and out value. |
UnpackNormal(ref Float4, out Single)
Unpacks normal/tangent vector from normalized range to full range.
Declaration
public static void UnpackNormal(ref Float4 value, out float sign)
Parameters
|
Float4
value
In and out value. |
|
System.Single
sign
Encoded sign in the alpha channel. |
UpdateMesh(MeshBase, Boolean)
Updates the mesh vertex and index buffers with data assigned to the accessor (eg. via AllocateBuffer).
Declaration
public bool UpdateMesh(MeshBase mesh, bool calculateBounds = true)
Parameters
|
MeshBase
mesh
The target mesh to update. |
|
System.Boolean
calculateBounds
True if auto-calculate mesh local bounding box based on input positions stream. Otherwise, mesh bound swill stay unchanged. |
Returns
|
System.Boolean
True if failed, otherwise false. |