contacto[arroba]digitallearning.es

Componentes para Físicas en Unity 3D: indumentaria y articulaciones

Post Series: Conociendo Unity3D (VI)

Para que nuestro videojuego en Unity 3D sea lo más realista posible debemos de dotar de físicas a los objetos y personajes que incluyamos en él. Por ‘físicas’, nos estamos refiriendo a simular en sus movimientos, articulaciones o deformaciones las propiedades mecánicas que deberían tener si estuvieran sometidos a las leyes físicas del mundo real.

En esta publicación vamos a describir varios componentes que nos permitirán aplicar dichas propiedades físicas, como Cloth y Skinner Mesh Renderer, utilizadas en la indumentaria o ropa de los personajes , y Hinge Joint y Fixed Joint para mecánica restringida, es decir articulaciones u objetos que restringen el movimiento de otros.

Cloth

Componente que simulará el comportamiento de una tela con una malla asignada, y que dependerá de que el GameObject también incluya un componente Skinned Mesh Renderer (más abajo, describimos este componente).

Este componente trabajará en conjunto con la malla del personaje al que se asigna, de gran utilidad para la construcción de parte de la indumentaria del modelo implementado en la escena.

En la siguiente tabla, se mostrarán las funciones de cada una de las propiedades que pueden visualizarse en el inspector del componente Cloth:

Inspector Cloth

Propiedad
Función
Stretching Stiffness Establece la rigidez del estiramiento de la tela.
Bending Stiffness Establece la rigidez de la flexión de la tela.
Use Tethers Permite restringir una posición demasiado lejana de las partículas que definen la tela con respecto a las partes estáticas.
Use Gravity Simulación de la gravedad que afectará a la tela.
Damping Movimiento de la tela.
External Acceleration Define la aceleración externa constante que será aplicada con valores independientes en los diferentes ejes de coordenadas.
Random Acceleration Define la aceleración externa aleatoria que será aplicada con valores independientes en los diferentes ejes de coordenadas.
World Velocity Scale Cantidad de movimiento a nivel global que afectará a los polígonos de la tela.
World Acceleration Scale Aceleración a nivel global que afectará a los polígonos de la tela.
Friction Establece el grado de fricción de la tela.
Collision Mass Scale Permite establecer la cantidad en que aumentará la masa de las partículas que colisionan.
Use Continuous Collision Al marcar esta opción se habilitará la colisión continua para mejorar su estabilidad.
Use Virtual Particles Al marcar esta opción se utilizará una partícula virtual por cada polígono para mejorar la estabilidad ante las colisiones que se produzcan.
Solver Frequency Número de iteraciones por segundo.
Sleep Threshold Umbral de inactividad de la tela.
Capsule Colliders Array de referencias a capsule collider que definen las colisiones con la tela.
Sphere Colliders Array de referencias a dos elementos sphere collider que definen las colisiones con la tela.

Skinned Mesh Renderer

Componente encargado de renderizar la malla de la tela construida a partir del componente Cloth, que posibilita las deformaciones de la malla durante las diferentes animaciones del personaje. Este tipo de componente es de gran utilidad para aquellos personajes en los que las articulaciones se doblen, y se añaden de manera automática al añadir un componente Cloth.

Inspector Skinned Mesh Renderer

A continuación, se mostrarán las funciones de cada una de las propiedades que pueden visualizarse en el inspector del componente Skinned Mesh Renderer:

Propiedad
Función
Cast Shadows Al activar esta opción se proyectarán sombras de la tela.
Receive Shadows Al activar esta opción la tela recibirá sombras de otros objetos.
Materials Array de materiales que construirán la tela.
Use Light Probes Al activar esta opción, se habilitará el sondeo de luz (mediciones de la luz en el mundo real).
Quality El número máximo de huesos que pueden afectar a cualquier vértice dado.
Update When Offscreen Si se activa esta opción, la piel de la malla se actualizará incluso cuando no pueda ser visto por cualquier cámara, en caso contrario, las animaciones también se detendrá cuando el objeto esté fuera de la pantalla.
Mesh Malla utilizada por la tela.
Root Bone Hueso raíz del modelo, a partir del cual se mueven el resto en una animación.
Bounds Definen los límites que indican cuando la malla se sitúa fuera de la pantalla.

Hinge Joint

Componente que permite agrupar dos objetos rigidbody a modo de bisagra, limitando su movimiento, y siendo de gran utilidad para el diseño de objetos tales como puertas o cadenas. Entre las diferentes características, destaca la propiedad Connected Body, que permite establecer la referencia con el objeto al que se asociará el GameObject que incluya el componente Hinge Joint. Este componente es posible seleccionarlo a través de la ruta Add Component > Physics > Hinge Joint.

Inspector Hinge Joint

En la siguiente tabla, se describen las principales propiedades que podrán configurarse desde la ventana inspector del componente Hinge Joint:

Propiedad
Función
Connected Body Referencia al objeto que implemente un rigidbody para la articulación. En caso de no asignarse ninguna referencia, se conectará con el mundo.
Anchor Posición del eje en el espacio local, a partir del cual se producen las oscilaciones del objeto.
Axis Dirección del eje en el espacio local, a partir del cual se producen las oscilaciones del objeto.
Auto Configure Connected Anchor Al activar esta opción, la posición del ancla conectado será calculada automáticamente para coincidir con la posición global de la propiedad anchor.
Connected Anchor Configuración manual de la posición del ancla conectado.
Use Spring Al activar esta opción, se habilita el ángulo de alcance con el objeto rigidbody.
Spring Propiedad que se tendrá en cuenta si se habilita la opción anterior, definiendo los valores Spring (fuerza del objeto para moverse a la posición inicial), Damper (cuanto mayor sea este valor, mayor será la ralentización del objeto), Target Position (dirección o ángulo del objetivo hacia el que tirará el muelle, medido en grados).
Use Motor Si se habilita esta opción, se utilizará el motor para girar alrededor del objeto.
Motor Propiedad que se tendrá en cuenta si se habilita la opción anterior, definiendo los valores Target Velocity (velocidad del objeto a alcanzar), Force (fuerza que se aplicará para alcanzar la velocidad), Free Spin (al activar esta opción, el motor se usará para acelerar la rotación).
Use Limits Si se activa esta opción, se establecerán los valores de Min y Max para la rotación de la bisagra.
Limits Propiedad que se tendrá en cuenta si se habilita la opción anterior, definiendo los valores Min (valor mínimo del ángulo de rotación), Max (valor máximo del ángulo de rotación), Min Bounce (rebote del objeto al llegar al valor mínimo), Max Bounce (rebote del objeto al llegar al valor máximo).
Break Force Fuerza que debe aplicarse para romper la unión.
Break Torque Torsión que debe aplicarse para romper la unión.
Enable Collision Si se activa esta opción, se habilitará la detección de colisiones entre cuerpos conectados por una articulación.

Fixed Joint

Componente que permite restringir el movimiento de un GameObject que es dependiente de otro. Este componente es muy similar al concepto de parenting, pero en lugar de utilizar el componente Transform, está orientado al uso de físicas sobre los objetos.

Este tipo de asociación se deberá establecer entre objetos que implementen el componente rigidbody y es posible seleccionarlo a través de la ruta Add Component > Physics > Fixed Joint.

Inspector Fixed Joint

A continuación se mostrarán las principales propiedades del componente Fixed Joint en la siguiente tabla:

Propiedad
Función
Connected Body Referencia al objeto que implemente un rigidbody para la articulación. En caso de no asignarse ninguna referencia, se conectará con el mundo.
Break Force Fuerza que debe aplicarse para romper la unión.
Break Torque Torsión que debe aplicarse para romper la unión.
Enable Collision Si se activa esta opción, se habilitará la detección de colisiones entre cuerpos conectados por una articulación.
Enable Preprocessing Opción que permite ayudar a un procesamiento previo para configuraciones no posibles.

En el siguiente tutorial de esta serie veremos un ejemplo donde implementamos un componente Cloth (que a su vez añadirá un componente Skinned Mesh Renderer) que simulará el diseño de una capa para el personaje controlado por el usuario, además de mostrar un pequeño ejemplo del uso de Hinge Joint con objetos primitivos.


This Post Has 2 Comments

Comments are closed.