This page has been translated automatically.
UnigineEditor
Interface Overview
Assets Workflow
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Landscape Tool
Using Editor Tools for Specific Tasks
Extending Editor Functionality
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
UnigineScript
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine Tools
GUI
Double Precision Coordinates
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
Warning! This version of documentation is OUTDATED, as it describes an older SDK version! Please switch to the documentation for the latest SDK version.
Warning! This version of documentation describes an old SDK version which is no longer supported! Please upgrade to the latest SDK version.

Unigine.ObjectMeshDynamic Class

Inherits: Object

This class is used to procedurally create dynamic meshes (i.e. triangles), lines, or points and modify them in runtime. You can also load an existing mesh as a dynamic one to modify it.

See Also#

ObjectMeshDynamic Class

Properties

int NumIndices#

The number of vertex indices.
set
Sets the number of vertex indices.
set value - Number of indices.

int NumVertex#

The number of mesh vertices.
set
Sets the number of mesh vertices.
set value - Number of mesh vertices.

string MeshName#

Gets the mesh name.
set
Sets the mesh name.
set value - Mesh name.

float UpdateDistanceLimit#

The distance from the camera within which the object should be updated.
set
Sets the distance from the camera within which the object should be updated. The default value is infinity.
Notice
This method is effective when the object has BODY_ROPE, BODY_CLOTH, or BODY_WATER assigned.
set value - Distance from the camera within which the object should be updated.

int FPSInvisible#

The update rate value when the object is not rendered at all.
set
Sets the update rate value when the object is not rendered at all. The default value is 0 fps.
Notice
This method is effective when the object has BODY_ROPE, BODY_CLOTH, or BODY_WATER assigned.
set value - Update rate value when the object is not rendered at all.

int FPSVisibleShadow#

The update rate value when only object shadows are rendered.
set
Sets the update rate value when only object shadows are rendered. The default value is 30 fps.
Notice
This method is effective when the object has BODY_ROPE, BODY_CLOTH, or BODY_WATER assigned.
set value - Update rate value when only object shadows are rendered.

int FPSVisibleCamera#

The update rate value when the object is rendered to the viewport.
set
Sets the update rate value when the object is rendered to the viewport. The default value is infinity.
Notice
This method is effective when the object has BODY_ROPE, BODY_CLOTH, or BODY_WATER assigned.
set value - Update rate value when the object is rendered.

Members


static ObjectMeshDynamic ( Mesh mesh, int flags = 0 ) #

ObjectMeshDynamic constructor.

Arguments

static ObjectMeshDynamic ( int flags = 0 ) #

ObjectMeshDynamic constructor.

Arguments

static ObjectMeshDynamic ( string path, int flags = 0 ) #

ObjectMeshDynamic constructor.

Arguments

void SetBoundBox ( BoundBox bb ) #

Sets a bounding box of a specified size for a given dynamic mesh surface.

Arguments

  • BoundBox bb - Bounding box.

void SetBoundBox ( BoundBox bb, int surface ) #

Sets a bounding box of a specified size for a given dynamic mesh surface.

Arguments

  • BoundBox bb - Bounding box.
  • int surface - Surface number in range from 0 to the total number of dynamic mesh surfaces.

void SetColor ( int num, vec4 color ) #

Updates the color of a given vertex.

Arguments

  • int num - Vertex number in range from 0 to the total number of mesh vertices.
  • vec4 color - Color.

vec4 GetColor ( int num ) #

Returns the color of a given vertex.

Arguments

  • int num - Vertex number in range from 0 to the total number of mesh vertices.

Return value

Color.

void SetIndex ( int num, int index ) #

Updates an index in the index buffer (replaces the index with the given number with the specified index of the vertex).

Arguments

  • int num - Index number in the index buffer.
  • int index - Vertex index in the index buffer to set.

int GetIndex ( int num ) #

Returns the index of the vertex by the index number.

Arguments

  • int num - Index number in the index buffer.

Return value

Vertex index in the index buffer.

void SetIndicesArray ( int[] indices ) #

Updates an array of indices.

Arguments

  • int[] indices

int SetMesh ( Mesh mesh ) #

Allows for reinitialization of the ObjectMeshDynamic: it copies a given mesh into the current dynamic mesh. For example, you can copy a mesh into another one as follows:
Source code (C#)
// create ObjectMeshDynamic instances 
ObjectMeshDynamic dynamicMesh = new ObjectMeshDynamic();
ObjectMeshDynamic dynamicMesh_2 = new ObjectMeshDynamic();

// create a Mesh instance
Mesh firstMesh = new Mesh();

// get the mesh of the ObjectMeshDynamic and copy it to the Mesh class instance
dynamicMesh.getMesh(firstMesh);

// put the firstMesh mesh to the dynamicMesh_2 instance
dynamicMesh_2.setMesh(firstMesh);

Arguments

  • Mesh mesh - Mesh.

Return value

1 if the mesh is copied successfully; otherwise, 0.

int GetMesh ( Mesh mesh ) #

Copies the current dynamic mesh into the received mesh. For example, you can obtain geometry of the dynamic mesh and then change it:
Source code (C#)
// a dynamic mesh from which geometry will be obtained
Mesh mesh_0 = new Mesh("box.mesh");
ObjectMeshDynamic dynamicMesh = new ObjectMeshDynamic(mesh_0);
// create a new mesh
Mesh mesh_1 = new Mesh();
// copy geometry to the Mesh instance
if(dynamicMesh.getMesh(mesh_1) == 1) {
	// do something with the obtained mesh
} else {
	Log.Error("Failed to copy a mesh\n");
}

Arguments

  • Mesh mesh - Mesh.

Return value

1 if the mesh is copied successfully; otherwise, 0.

vec3 GetNormal ( int num ) #

Returns the normal vector coordinates of a given vertex.

Arguments

  • int num - Number of the vertex in the vertex buffer.

Return value

Normal vector.

void SetSurfaceBegin ( int begin, int surface ) #

Sets the begin index for the specified surface of the dynamic object mesh.

Arguments

  • int begin - Begin index.
  • int surface - Number of the target surface.

int GetSurfaceBegin ( int surface ) #

Returns the begin index of the specified mesh surface.

Arguments

  • int surface - Surface number.

Return value

Returns the begin index of the surface.

void SetSurfaceEnd ( int end, int surface ) #

Sets the end index for the specified surface of the dynamic object mesh.

Arguments

  • int end - End index.
  • int surface - Number of the target surface.

int GetSurfaceEnd ( int surface ) #

Returns the end index of the specified mesh surface.

Arguments

  • int surface - Surface number.

Return value

Returns the end index of the surface.

void SetSurfaceName ( string name, int surface ) #

Sets the name for the specified surface. The name will be set only if the specified surface was added via the addSurface() method.

Arguments

  • string name - New name of the surface.
  • int surface - Number of a target surface in range from 0 to the total number of surfaces.

void SetTangent ( int num, quat tangent ) #

Updates the tangent vector coordinates of a given vertex.

Arguments

  • int num - Number of the vertex in the vertex buffer.
  • quat tangent - Tangent vector to be set.

quat GetTangent ( int num ) #

Returns the tangent vector coordinates of a given vertex.

Arguments

  • int num - Number of the vertex in the vertex buffer.

Return value

Tangent vector.

void SetTexCoord ( int num, vec4 texcoord ) #

Updates texture coordinates of a given vertex.

Arguments

  • int num - Number of the vertex in the vertex buffer.
  • vec4 texcoord - New coordinate pairs for both texture channels.

vec4 GetTexCoord ( int num ) #

Returns texture coordinates of a given vertex.

Arguments

  • int num - Number of the vertex in the vertex buffer.

Return value

Coordinate pairs for both texture channels.

void SetVertex ( int num, vec3 xyz ) #

Updates coordinates of a given vertex.

Arguments

  • int num - Number of the vertex in the vertex buffer.
  • vec3 xyz - New coordinates in the mesh system of coordinates.

vec3 GetVertex ( int num ) #

Returns coordinates of a given vertex.

Arguments

  • int num - Number of the vertex in the vertex buffer.

Return value

Vertex coordinates in the mesh system of coordinates.

void SetVertexArray ( Vertex[] vertex ) #

Updates the vertex array of the dynamic mesh.

Arguments

  • Vertex[] vertex

Vertex[] GetVertexArray ( ) #

Returns an array of vertices of the dynamic mesh.

Return value

Pointer to the array of vertices.

void AddColor ( vec4 color ) #

Adds a color with given coordinates to the last added vertex.

Arguments

  • vec4 color - Color.

void AddIndex ( int index ) #

Adds an index to the index buffer.

Arguments

  • int index - Index to add.

void AddIndicesArray ( int[] indices ) #

Adds an array of indices.

Arguments

  • int[] indices

void AddSurface ( string name ) #

Adds all the last listed and unsigned vertices and triangles to a new surface with a specified name.

Arguments

  • string name - Name of the new surface.

void AddTangent ( quat tangent ) #

Adds a tangent vector with given coordinates to the last added vertex.

Arguments

  • quat tangent - Tangent to add.

void AddTexCoord ( vec4 texcoord ) #

Adds texture coordinates to the last added vertex.

Arguments

  • vec4 texcoord - Coordinate pairs for both texture channels.

void AddTriangleFan ( int num_vertex ) #

Adds a triangle fan to the mesh. This method does not add vertices, rather it allocates indices, for which vertices should be then created with the addVertex() function. Indices will point to vertices starting from the current last vertex in the vertex buffer.

Arguments

  • int num_vertex - Number of vertices comprising the fan.

void AddTriangleQuads ( int num_quads ) #

Adds a given number of quadrilaterals to the mesh. This method does not add vertices, rather it allocates indices, for which vertices should be then created with the addVertex() function. Indices will point to vertices starting from the current last vertex in the vertex buffer.

Arguments

  • int num_quads - Number of quadrilaterals to add.

void AddTriangles ( int num_triangles ) #

Adds a given number of triangles to the mesh. This method does not add vertices, rather it allocates indices, for which vertices should be then created with the addVertex() function. Indices will point to vertices starting from the current last vertex in the vertex buffer.

Arguments

  • int num_triangles - Number of triangles.

void AddTriangleStrip ( int num_vertex ) #

Adds a triangle strip to the mesh. This method does not add vertices, rather it allocates indices, for which vertices should be then created with the addVertex() function. Indices will point to vertices starting from the current last vertex in the vertex buffer.

Arguments

  • int num_vertex - Number of vertices comprising the strip.

void AddVertex ( vec3 xyz ) #

Adds a vertex with given coordinates to the mesh.

Arguments

  • vec3 xyz - Vertex coordinates in the mesh system of coordinates.

void AddVertexArray ( Vertex[] vertex ) #

Adds an array of vertices to the dynamic mesh.

Arguments

  • Vertex[] vertex

void AllocateIndices ( int num ) #

Allocates a given number of vertex indices in the index buffer. With this function, memory can be allocated once rather than in chunks, making the creation faster.

Arguments

  • int num - The number of indices that will be stored in a buffer.

void AllocateVertex ( int num ) #

Allocates a given number of vertices in the vertex buffer. With this function, memory can be allocated once rather than in chunks, making the creation faster.

Arguments

  • int num - The number of vertices that will be stored in a buffer.

void ClearIndices ( ) #

Clears all vertex indices in the mesh.

void ClearSurfaces ( ) #

Clears all the surface settings.

void ClearVertex ( ) #

Clears all of the mesh vertex settings.

void FlushIndices ( ) #

Flushes the index buffer and sends all data to GPU. This method is called automatically, if the length of the index buffer changes. If you change the contents of the index buffers, you should call this method.

void FlushVertex ( ) #

Flushes the vertex buffer and sends all data to GPU. This method is called automatically, if the length of the vertex buffer changes. If you change the contents of the vertex buffer, you should call this method.

bool LoadMesh ( string path ) #

Loads a mesh file.

Arguments

  • string path - Mesh file name.

Return value

Returns 1 if the mesh is loaded successfully; otherwise, 0.

void RemoveIndices ( int num, int size ) #

Removes the specified number of indices.

Arguments

  • int num - Number of the index in the index buffer.
  • int size - Number of indices to remove.

void RemoveSurface ( int surface ) #

Removes the surface with the given index.

Arguments

  • int surface - Surface index.

void RemoveSurfaces ( string name ) #

Removes the surfaces with the given name.

Arguments

  • string name - Surface name.

void RemoveVertex ( int num, int size, int indices ) #

Removes the specified number of vertices.

Arguments

  • int num - Number of the vertex in the vertex buffer.
  • int size - Number of vertices to remove.
  • int indices - 1 to fix the index buffer after removal of vertices; otherwise, 0.

bool SaveMesh ( string path ) #

Saves the dynamic mesh into a file.

Arguments

  • string path - Mesh file name.

Return value

Returns 1 if the mesh is saved successfully; otherwise, 0.

static int type ( ) #

Returns the type of the node.

Return value

Object type identifier.

bool UpdateBounds ( ) #

Updates a bounding box and a bounding sphere for the current mesh.

Return value

1 if the bounds are calculated successfully; otherwise, 0.

bool UpdateIndices ( ) #

Updates vertex and index buffers by removing duplicated vertices and rearranging the indices of the created mesh to optimize it for faster rendering.

Return value

1 if the indices are updated successfully; otherwise, 0.

void UpdateSurfaceBegin ( int surface ) #

Synchronizes surface begin index.

Arguments

  • int surface - ID of a target surface.

void UpdateSurfaceEnd ( int surface ) #

Synchronizes surface end index.

Arguments

  • int surface - ID of a target surface.

bool UpdateTangents ( ) #

Updates tangents.

Return value

1 if the tangents are updated successfully; otherwise, 0.

void SetFPSVisibleCamera ( int camera = -1 ) #

Sets the update rate value when the object is rendered to the viewport. The default value is infinity.
Notice
This method is effective when the object has BODY_ROPE, BODY_CLOTH, or BODY_WATER assigned.

Arguments

  • int camera - Update rate value when the object is rendered.

int GetFPSVisibleCamera ( ) #

Returns the update rate value when the object is rendered to the viewport.
Notice
This method is effective when the object has BODY_ROPE, BODY_CLOTH, or BODY_WATER assigned.

Return value

Update rate value when the object is rendered.

void SetFPSVisibleShadow ( int shadow = 30 ) #

Sets the update rate value when only object shadows are rendered. The default value is 30 fps.
Notice
This method is effective when the object has BODY_ROPE, BODY_CLOTH, or BODY_WATER assigned.

Arguments

  • int shadow - Update rate value when only object shadows are rendered.

int GetFPSVisibleShadow ( ) #

Returns the update rate value when only object shadows are rendered.
Notice
This method is effective when the object has BODY_ROPE, BODY_CLOTH, or BODY_WATER assigned.

Return value

Update rate value when only object shadows are rendered.

void SetFPSInvisible ( int invisible = 0 ) #

Sets the update rate value when the object is not rendered at all. The default value is 0 fps.
Notice
This method is effective when the object has BODY_ROPE, BODY_CLOTH, or BODY_WATER assigned.

Arguments

  • int invisible - Update rate value when the object is not rendered at all.

int GetFPSInvisible ( ) #

Returns the update rate value when the object is not rendered at all.
Notice
This method is effective when the object has BODY_ROPE, BODY_CLOTH, or BODY_WATER assigned.

Return value

Update rate value when the object is not rendered at all.

void SetUpdateDistanceLimit ( float limit = -1 ) #

Sets the distance from the camera within which the object should be updated. The default value is infinity.
Notice
This method is effective when the object has BODY_ROPE, BODY_CLOTH, or BODY_WATER assigned.

Arguments

  • float limit - Distance from the camera within which the object should be updated.

float GetUpdateDistanceLimit ( ) #

Returns the distance from the camera within which the object should be updated.
Notice
This method is effective when the object has BODY_ROPE, BODY_CLOTH, or BODY_WATER assigned.

Return value

Distance from the camera within which the object should be updated.
Last update: 2020-04-10
Build: ()