70. CLASE MESH (y II)










FUNCIONES:

Mesh:

static function Mesh () : Mesh


Crea una malla vacía.


Clear:

function Clear () : void


Limpia todos los datos de los vértices y todos los índices de los triángulos. Debes llamar esta función antes de reconstruir el array de triángulos.


RecalculateBounds:

function RecalculateBounds () : void


Recalcula el volumen de bordes de la malla desde los vértices. Después de modificar los vértices debes llamar a esta función para asegurarte de que el volumen de bordes es correcto. Asignando triángulos automáticamente se recalcula el volumen de bordes.


RecalculateNormals:

function RecalculateNormals () : void


Recalcula los normales de la malla desde los triángulos y vértices. Después de modificar los vértices es a menudo útil actualizar los normales para reflejar el cambio. Los normales son calculados desde todos los vértices compartidos. Las mallas importadas a veces no comparten todos los vértices. Por ejemplo un vértice en una costura UV se partirá en dos vértices. En consecuencia la función RecalculateNormals creará normales que no son lisos en las costuras Uv. Notemos también que RecalculateNormals no genera tangentes automáticamente, asi que los bumpmap shaders no trabajarán con la malla después de llamar a esta función. Nosotros podemos sin embargo proveer nuestras propias tangentes.


Optimize:

function Optimize () : void


Optimiza la malla para mostrarla. Esta operación podría tomar un rato pero hace que la geometría se muestre más rápido. Debes usarla si generas una malla desde cero procedimentalmente y quieres un mayo rendimiento en tiempo de ejecución en lugar de un mayor tiempo de carga. Para modelos importados no debes nunca llamarla porque el import pipeline ya lo hace por ti.


GetTriangles:

function GetTriangles (submesh : int) : int[]


Devuelve la lista de triángulos de la submalla. Una submalla es simplemente una lista de triángulos separada. Cuando el mesh renderer usa múltiples materiales, debes asegurarte de que hay tantas submallas como materiales.


SetTriangles:

function SetTriangles (triangles : int[], submesh : int) : void


Establece la lista de triángulos para la submalla.

Es recomentable asignar el array de triángulos después de asignar el array de vértices para evitar el error de fuera de bordes.


CombineMeshes:

function CombineMeshes (combine : CombineInstance[], mergeSubMeshes : boolean = true, useMatrices : boolean = true) : void


Combina varias mallas dentro de la malla. Combinar mallas es útil para optimización de rendimiento. Si mergeSubMeshes es true, todas las mallas serán combinadas en una única submalla. En caso contrario cada malla irá dentro de una submalla diferente. Si todas las mallas comparten el mismo material, coloca esto a true. Si useMatrices es false, el transform matrices en la estructura CombineInstance será ignorado.

POSTED BY UnityScripts
POSTED IN
DISCUSSION 0 Comments

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
Con la tecnología de Blogger.