A class that allows creating or modifying meshes from scripts.
Meshes contain vertices and multiple triangle arrays.
See the Procedural example project
for examples of using the mesh interface.
The triangle arrays are simply indices into the vertex arrays; three indices for each triangle.
For every vertex there can be a normal, two texture coordinates, color and tangent.
These are optional though and can be removed at will. All vertex information is stored in separate
arrays of the same size, so if your mesh has 10 vertices, you would also have 10-size arrays
for normals and other attributes.
There are probably 3 things you might want to use the modifyable mesh interface for:
1. Building a mesh from scratch:
should always be done in the following order:
a) assign vertices
b) assign triangles.
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public Vector3[] newVertices; public Vector2[] newUV; public int[] newTriangles; void Start() { Mesh mesh = new Mesh(); GetComponent<MeshFilter>().mesh = mesh; mesh.vertices = newVertices; mesh.uv = newUV; mesh.triangles = newTriangles; } }
2. Modifying vertex attributes every frame:
a) get vertices
b) modify them
c) assign them back to the mesh.
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { void Update() { Mesh mesh = GetComponent<MeshFilter>().mesh; Vector3[] vertices = mesh.vertices; Vector3[] normals = mesh.normals; int i = 0; while (i < vertices.Length) { vertices[i] += normals[i] * Mathf.Sin(Time.time); i++; } mesh.vertices = vertices; } }
3. Continously changing the mesh triangles and vertices:
a) call Clear to start fresh
b) assign vertices and other attributes
c) assign triangle indices.
It is important to call Clear before assigning new vertices or triangles.
Unity always checks the supplied triangle indices whether they don't reference out of bounds vertices.
Calling Clear then assigning vertices then triangles makes sure you never have out of bounds data.
using UnityEngine;
public class ExampleClass : MonoBehaviour { Vector3[] newVertices; Vector2[] newUV; int[] newTriangles;
void Start() { Mesh mesh = GetComponent<MeshFilter>().mesh;
mesh.Clear();
// Do some calculations... mesh.vertices = newVertices; mesh.uv = newUV; mesh.triangles = newTriangles; } }
bindposes | The bind poses. The bind pose at each index refers to the bone with the same index. |
blendShapeCount | Returns BlendShape count on this mesh. |
boneWeights | The bone weights of each vertex. |
bounds | The bounding volume of the mesh. |
colors | Vertex colors of the Mesh. |
colors32 | Vertex colors of the Mesh. |
indexFormat | Format of the mesh index buffer data. |
isReadable | Returns state of the Read/Write Enabled checkbox when model was imported. |
normals | The normals of the Mesh. |
subMeshCount | The number of sub-Meshes. Every Material has a separate triangle list. |
tangents | The tangents of the Mesh. |
triangles | An array containing all triangles in the Mesh. |
uv | The base texture coordinates of the Mesh. |
uv2 | The second texture coordinate set of the mesh, if present. |
uv3 | The third texture coordinate set of the mesh, if present. |
uv4 | The fourth texture coordinate set of the mesh, if present. |
vertexBufferCount | Get the number of vertex buffers present in the Mesh. (Read Only) |
vertexCount | Returns the number of vertices in the Mesh (Read Only). |
vertices | Returns a copy of the vertex positions or assigns a new vertex positions array. |
Mesh | Creates an empty Mesh. |
AddBlendShapeFrame | Adds a new blend shape frame. |
Clear | Limpia todos los datos de los índices de los vertices y los triángulos. |
ClearBlendShapes | Clears all blend shapes from Mesh. |
CombineMeshes | Combines several Meshes into this Mesh. |
GetBaseVertex | Gets the base vertex index of the given submesh. |
GetBindposes | Gets the bind poses for this instance. |
GetBlendShapeFrameCount | Returns the frame count for a blend shape. |
GetBlendShapeFrameVertices | Retreives deltaVertices, deltaNormals and deltaTangents of a blend shape frame. |
GetBlendShapeFrameWeight | Returns the weight of a blend shape frame. |
GetBlendShapeIndex | Returns index of BlendShape by given name. |
GetBlendShapeName | Returns name of BlendShape by given index. |
GetBoneWeights | Gets the bone weights for this instance. |
GetColors | Gets the vertex colors for this instance. |
GetIndexCount | Gets the index count of the given submesh. |
GetIndexStart | Gets the starting index location within the Mesh's index buffer, for the given submesh. |
GetIndices | Gets the index buffer for the specified sub mesh on this instance. |
GetNativeIndexBufferPtr | Retrieves a native (underlying graphics API) pointer to the index buffer. |
GetNativeVertexBufferPtr | Retrieves a native (underlying graphics API) pointer to the vertex buffer. |
GetNormals | Gets the vertex normals for this instance. |
GetTangents | Gets the tangents for this instance. |
GetTopology | Gets the topology of a sub-Mesh. |
GetTriangles | Gets the triangle list for the specified sub mesh on this instance. |
GetUVs | Get the UVs for a given chanel. |
GetVertices | Gets the vertex positions for this instance. |
MarkDynamic | Optimize mesh for frequent updates. |
RecalculateBounds | Recalculate the bounding volume of the Mesh from the vertices. |
RecalculateNormals | Recalculates the normals of the Mesh from the triangles and vertices. |
RecalculateTangents | Recalculates the tangents of the Mesh from the normals and texture coordinates. |
SetColors | Vertex colors of the Mesh. |
SetIndices | Sets the index buffer for the sub-Mesh. |
SetNormals | Set the normals of the Mesh. |
SetTangents | Set the tangents of the Mesh. |
SetTriangles | Sets the triangle list for the sub-Mesh. |
SetUVs | Set the UVs for a given chanel. |
SetVertices | Assigns a new vertex positions array. |
UploadMeshData | Upload previously done Mesh modifications to the graphics API. |
hideFlags | ¿Debería el objeto estar oculto, guardado con la escena o modificable por el usuario? |
name | El nombre del objeto. |
GetInstanceID | Devuelve el id de la instancia del objeto. |
ToString | Returns the name of the GameObject. |
Destroy | Elimina un gameobject, componente o asset. |
DestroyImmediate | Destroys the object obj immediately. You are strongly recommended to use Destroy instead. |
DontDestroyOnLoad | Hace que el objeto target no sea destruido automáticamente cuando se cargue una nueva escena. |
FindObjectOfType | Devuelve el primer objeto activo cargado de tipo type. |
FindObjectsOfType | Devuelve una lista de todos los objetos activos cargados de tipo type. |
Instantiate | Clona el objeto original y devuelve el clon. |
bool | ¿Existe el objeto? |
operator != | Compare si dos objetos se refieren a un objeto diferente. |
operator == | Compara dos referencias de objeto para ver si se refieren al mismo objeto. |