69. CLASE MESH (I)




Esta clase permite crear o modificar mallas desde scripts.

Las mallas contienen vértices y múltiples arrays de triángulos. Los arrays de triángulos son meramente índices dentro del array de vértices, tres índices para cada triángulo.

Para cada vértice puede haber un normal, dos coordenadas de texturas, color y tangentes. Toda la información de los vértices es almacenada en arrays separados del mismo tamaño, así que si tu malla tiene 10 vértices, debe tener tambíen arrays de 10 de tamaño para normales y otros atributos.


VARIABLES:

vertices:

var vertices : Vector3[]


Devuelve una copia de la posición del vértice o asigna un nuevo array de posiciones de vértices.

El número de vértices en la malla es cambiado asignando un array de vértices con un diferente número de vértices. Debemos tener en cuenta que si redimensionamos el array de vértices entonces todos los otros atributos (normales, colores, tangentes, Uvs) serán automáticamente redimensionados también. RecalculateBounds automáticamente será invocado si no se han asignado vértices a la malla cuando se establecieron los vértices.


normals:

var normals : Vector3[]


Los normales de la malla. Si la malla no contiene normales un array vacío es retornado.


tangents:

var tangents : Vector4[]


Las tangentes de la malla.

Las tangentes son mayormente usadas en bump-mapped shaders. Una tangente es un vector de una unidad de longitud que sigue la malla a lo largo de la dirección de textura horizontal. Las tangentes en Unity son representadas como Vector4 con componentes x,y,z definiendo el vector, y w usada para dar la vuelta a la binormal si es necesario.

Unity calcula los otros vectores de supervicie (binormal) tomando un producto cruzado entre normal y tangente y multiplicando el resultado por la tangente w. Así w debe ser siempre 1 o -1.

Debes calcular tangentes por ti mismo si planeas usar bump-mapped shaders en la malla. Asigna tangentes después de asignar normals o usando RecalculateNormals.


uv:

var uv : Vector2[]


Las coordenadas de la textura base de la malla.


rv2:

var uv2 : Vector2[]


El segundo conjunto de coordenadadas de textura de la malla, si lo hubiere.


bounds:

var bounds : Bounds


El volumen de bordes de la malla. Esto es la caja de bordes alineadas en el eje de la malla en el espacio local (esto es, no afectada por el transform). Existe por otro lado la propiedad Renderer.bounds que retorna los bordes en espacio global.


colors:

var colors : Color[]


Devuelve los colores del vértice de la malla. Si no hay colores devuelve un array vacío.


triangles:

var triangles : int[]


Un array conteniendo todos los triángulos de la malla. El array es una lista de triángulos que contiene índices dentro del array de vértices. El tamaño del array de triángulos debe siempre ser múltiplo de 3. Los vértices pueden ser compartidos meramente indexando dentro del mismo vértice. Si la malla contiene múltiples sub mallas (materiales) la lista de triángulos contendrá todos los triángulos de todas las submallas. Cuando asignas un array de triángulos, subMeshCount es colocado a 1. Si quieres tener múltiples submallas, usa subMeshCount y SetTriangles.

Es recomendable asignar el array de triángulos después de asignar el array de vértices para evitar errores de fuera de límite (out of bounds)


vertexCount:

var vertexCount : int


Variable de sólo lectura que devuelve el número de vértices en la malla.


subMeshCount:

var subMeshCount : int


El número de submallas. Cada material tiene una lista de triángulos separada.


boneWeights:

var boneWeights : BoneWeight[]


La pintura de pesos de cada vértice. El tamaño del array es o el mismo que vertexCount o vacío.

Cada vértice puede ser afectado por un máximo de 4 diferentes huesos. Las cuatro pinturas de peso deben sumar hasta 1.

POSTED BY UnityScripts
POSTED IN
DISCUSSION 0 Comments

Leave a Reply

Con la tecnología de Blogger.