martes, 3 de febrero de 2015

Simulación de telas

En las últimas semanas parecía que todo me salía bien, que todo eran alegrías. Pues hoy toca aceptar una derrota, algo que no he conseguido hacer funcionar y que tendré que hacer de otra manera.

Piernas atraviesan faldón

Un compañero de máster me comentó de pasada que podía simular el abrigo del personaje en 3ds max y así no tendría que animarlo a mano. Pero estaba ya casi decidido a quitar el abrigo. El problema vino cuando ya le puse los huesos al modelo, y probé una animación de andar. Muchas cosas no funcionaban bien, como me esperaba, porque hay que ajustar el weighting de los huesos. Pero me llamó mucho la atención el movimiento de la ¿camisa larga?, ¿faldón?, ¿vestido? (la cosa morada) del protagonista. Las piernas lo atravesaban a veces al andar, eso tenía pinta de que no se arreglaba con el pesado de huesos, sino que iba a necesitar retocar las animaciones de esa parte de ropa casi frame a frame.

Y ahí se me encendió la bombilla de intentar usar simulación. Llegué a tutoriales por youtube y parecía sencillo, vi alguno donde se creaba un modelo con 4 cilindros, creaba cierta ropa con un plano y ponía a simular y el resultado era muy bueno, cómo mola, resultado muy bueno con poco trabajo, la parte del tutorial de la simulación física de telas apenas duraba 2 minutos.


Pero al ponerme yo a ello todo se empezó a torcer. Lo primero, la simulación es un modificador (cloth), y por ello necesitaba separar la parte de faldón que quería simular del resto del modelo, ya que no se puede aplicar un modificador solo a una parte de un modelo. Pero esto tiene sus consecuencias.

Al ser el faldón un elemento distinto, no se mueve con el resto del modelo al poner movimiento a los huesos, así que la cadera del personaje sube y baja según anda, pero esa parte de tela se queda quieta, o como descubrí al hacer la primera simulación, que por la gravedad se vaya al suelo (o al no tener suelo, al infinito de los números en coma flotante negativos). Tenía que conseguir que esa parte de tela quedase sujeta al cinturón y se moviese junto a él, para que parezca continuación de la misma tela y no un trapo colgandero.

Aquí busque como hacer restricciones de este tipo, lo cual me vendrá bien para unir la espada a la mano y que la espada se mueva con la mano, un problema similar. Otro caso parecido, en el tutorial parece sencillo, pones unas restricciones y todo funciona bien, lo hago yo y no funciona. Al adjuntar el faldón al cuerpo se iba a cuenca, y daba igual si le ponía distintos tipos de restricciones, de posición, de adjunto, enlaces, si movía la posición relativa del faldón en las restricciones. Lo más que conseguía es que se moviera al ritmo del cuerpo pero flotando medio metro por encima del protagonista. Y eso aún suponiendo que consiguiera que estuviera bien alineado y no girado mirando a la luna. Al final conseguí un efecto más o menos deseado, separando también el cinturón del resto del modelo y haciendo un enlace del faldón al cinturón. Y consiguiendo aplicar el mismo modificador skin al modelo y al cinturón. Se puede aplicar un modificador a varios objetos, pero no a una parte de un objeto. Y digo más o menos deseado, porque el faldón se mueve con el resto del cuerpo, pero al ser ya objetos diferentes se nota que no encaja bien, con el cinturón, quedan pequeños resquicios sin unir y no se si eso se notará en la versión final.

Y ya solo queda hacer la simulación. En teoría no es muy complicado, en el modificador cloth elegir el material del faldón, por ejemplo algodón, y el cuerpo y cinturón como obstáculos físicos, y dar a simular. Y obtengo una forma abstracta que se levanta por encima de la cintura del personaje. Que bien.

Pruebo otros materiales, a cambiar algunos parámetros, sin resultado. Entonces pienso que a lo mejor la malla es poco refinada para una simulación de este tipo. En la mayoría de videos subdividen las telas antes de simular, pues vamos a probarlo. Y pruebo con teselación, subdivide, turbosmooth... todo lo que encuentro para hacer refinamiento de una malla. Y ya no se cual es cual, pero en unos casos seguía obteniendo sacos de patatas y en otros la simulación petaba. Cosa que tarde en darme cuenta, puesto que la ventana de diálogo de simulación se cierra sola al acabar, incluso en caso de error, entonces no ves el mensaje de error, solo que la simulación ha acabado y tu tela sigue sin moverse con los obstáculos que se encuentra (las piernas). En uno de los casos puse un paso de simulación muy bajo, y tardaba mucho y me dio tiempo en la ventana de simulación a quitar el check de cerrar solo al acabar, y ya pude ver el error, que la tela se estrechaba demasiado y petaba la simulación.

Intento de simular contra huesos

Probé de todo, cambiar distancias, pasos de simulación, autocolisiones, simular por vértices o por aristas, comprobar intersecciones, incluso a hacer la simulación contra los huesos en lugar de contra el modelo. Pero nunca llega a funcionar bien. Y además en algunos de los intentos el faldón había pasado de 60 polígonos a 1.000, y claro en un modelo de unos 2.000 polígonos, usar un 50% más en una parte tan reducida de tela es inadmisible.

Subdivisión
Teselación
Primer intento de simulación de telas

No sé si es cosa del programa, uso la versión de 2011 de 3ds max, lo mismo versiones más modernas simulan mejor. O a lo mejor no funciona bien en esas condiciones, o hay que hacer algo más que no sé o hago mal, tampoco encuentro mucha información al respecto, quitando casos facilones. Y puede que este tipo de simulaciones no funcione bien con un modelo de tan baja poligonización. Sea como sea, me doy por vencido, lo animaré a mano.

No hay comentarios :

Publicar un comentario