Class TriMesh

  • All Implemented Interfaces:
    INamedObject, java.lang.Iterable<Vertex>

    public class TriMesh
    extends Entity
    implements java.lang.Iterable<Vertex>
    A TriMesh contains raw data that can be used by GPU directly. This class is a utility to help to construct a mesh that only contains per-vertex data.
    • Constructor Detail

      • TriMesh

        public TriMesh​(java.lang.String name,
                       VertexDeclaration declaration)
        Initialize an instance of TriMesh
        Parameters:
        name - The name of this TriMesh
        declaration - The vertex's declaration
    • Method Detail

      • getVerticesCount

        public int getVerticesCount()
        The count of vertices in this TriMesh
      • getIndicesCount

        public int getIndicesCount()
        The count of indices in this TriMesh
      • getUnmergedVerticesCount

        public int getUnmergedVerticesCount()
        The count of unmerged vertices that passed in by beginVertex() and endVertex().
      • getCapacity

        public int getCapacity()
        The capacity of pre-allocated vertices.
      • getVerticesSizeInBytes

        public int getVerticesSizeInBytes()
        The total size of all vertices in bytes
      • fromMesh

        public static TriMesh fromMesh​(VertexDeclaration declaration,
                                       Mesh mesh)
        Create a TriMesh from given mesh object with given vertex layout.
        Parameters:
        declaration -
        mesh -
      • copyFrom

        public static TriMesh copyFrom​(TriMesh input,
                                       VertexDeclaration vd)
        Copy the TriMesh from input with new vertex layout
        Parameters:
        input - The input TriMesh for copying
        vd - The new vertex declaration of the output TriMesh
        Returns:
        A new TriMesh instance with new vertex declaration.
      • fromMesh

        public static TriMesh fromMesh​(Mesh mesh,
                                       boolean useFloat)
        Create a TriMesh from given mesh object, the vertex declaration are based on the input mesh's structure.
        Parameters:
        mesh -
        useFloat - Use float type instead of double type for each vertex element component.
        Returns:
        The TriMesh generated from given Mesh
      • fromMesh

        public static TriMesh fromMesh​(Mesh mesh)
        Create a TriMesh from given mesh object, the vertex declaration are based on the input mesh's structure.
        Parameters:
        mesh -
        Returns:
        The TriMesh generated from given Mesh
      • beginVertex

        public Vertex beginVertex()
        Begin adding vertex
        Returns:
        The reference of internal vertex object in type Vertex
      • endVertex

        public void endVertex()
        End adding vertex
      • writeVerticesTo

        public void writeVerticesTo​(com.aspose.threed.Stream stream)
                             throws java.io.IOException
        Write vertices data to the specified stream
        Parameters:
        stream - The stream that the vertices data will be written to
        Throws:
        java.io.IOException
      • write16bIndicesTo

        public void write16bIndicesTo​(com.aspose.threed.Stream stream)
                               throws java.io.IOException
        Write the indices data as 16bit integer to the stream
        Parameters:
        stream -
        Throws:
        java.io.IOException
      • write32bIndicesTo

        public void write32bIndicesTo​(com.aspose.threed.Stream stream)
                               throws java.io.IOException
        Write the indices data as 32bit integer to the stream
        Parameters:
        stream -
        Throws:
        java.io.IOException
      • verticesToArray

        public byte[] verticesToArray()
        Convert the vertices data to byte array
      • indicesToArray

        @Deprecated
        public void indicesToArray​(short[][] result)
        Deprecated.
        Convert the indices to 16bit integer array
        Parameters:
        result -
      • getShortIndices

        public short[] getShortIndices()
        Convert the indices to 16bit integer array
      • getIntIndices

        public int[] getIntIndices()
        Convert the indices to 32bit integer array
      • indicesToArray

        @Deprecated
        public void indicesToArray​(int[][] result)
        Deprecated.
        Convert the indices to 32bit integer array
        Parameters:
        result -
      • toString

        public java.lang.String toString()
        Gets the string representation of TriMesh
        Overrides:
        toString in class java.lang.Object
      • fromRawData

        public static TriMesh fromRawData​(VertexDeclaration vd,
                                          byte[] vertices,
                                          int[] indices,
                                          boolean generateVertexMapping)
        Create TriMesh from raw data
        Parameters:
        vd - Vertex declaration, must contains at least one field.
        vertices - The input vertex data, the minimum length of the vertices must be greater or equal to vertex declaration's size
        indices - The triangle indices
        generateVertexMapping - Generate Vertex for each vertex, which is not necessary for just serialization/deserialization.
        Returns:
        The TriMesh instance that encapsulated the input byte array.
      • loadVerticesFromBytes

        public void loadVerticesFromBytes​(byte[] verticesInBytes)
        Load vertices from bytes, the length of bytes must be an integer multiple of vertex size.
        Parameters:
        verticesInBytes -
        Throws:
        java.lang.IllegalArgumentException
        java.lang.IllegalArgumentException
      • readVector4

        public Vector4 readVector4​(int idx,
                                   VertexField field)
        Read the vector4 field
        Parameters:
        idx - The index of vertex to read
        field - The field with a Vector4/FVector4 data type
      • readFVector4

        public FVector4 readFVector4​(int idx,
                                     VertexField field)
        Read the vector4 field
        Parameters:
        idx - The index of vertex to read
        field - The field with a Vector4/FVector4 data type
      • readVector3

        public Vector3 readVector3​(int idx,
                                   VertexField field)
        Read the vector3 field
        Parameters:
        idx - The index of vertex to read
        field - The field with a Vector3/FVector3 data type
      • readFVector3

        public FVector3 readFVector3​(int idx,
                                     VertexField field)
        Read the vector3 field
        Parameters:
        idx - The index of vertex to read
        field - The field with a Vector3/FVector3 data type
      • readVector2

        public Vector2 readVector2​(int idx,
                                   VertexField field)
        Read the vector2 field
        Parameters:
        idx - The index of vertex to read
        field - The field with a Vector2/FVector2 data type
      • readFVector2

        public FVector2 readFVector2​(int idx,
                                     VertexField field)
        Read the vector2 field
        Parameters:
        idx - The index of vertex to read
        field - The field with a Vector2/FVector2 data type
      • readDouble

        public double readDouble​(int idx,
                                 VertexField field)
        Read the double field
        Parameters:
        idx - The index of vertex to read
        field - The field with a float/double compatible data type
      • readFloat

        public float readFloat​(int idx,
                               VertexField field)
        Read the float field
        Parameters:
        idx - The index of vertex to read
        field - The field with a float/double compatible data type
      • iterator

        public java.util.Iterator<Vertex> iterator()
        Get the enumerator to enumerate Vertex
        Specified by:
        iterator in interface java.lang.Iterable<Vertex>