-
2 Archivos adjunto(s)
Mi propio impact system en Houdini
Hola a todos, como ha cogido algo más de fama el impact system tool de Slime para 3ds Max, y otras personas tratan de imitarlo, me he decidido a hacer algo parecido, pero en Houdini.
Es una herramienta simple para crear agujeros como los de un disparo y pequeños trozos de piedra. Utiliza la tecnología de los digital assets, de Houdini, que permite automatizar tareas de forma muy fácil. No he utilizado script, y la verdad es que es muy sencillo, no me ha llevado ni 20 minutos, pero sirve para divertirse.
Se controla la posición y rotación del arma, la emisión de disparos, cantidad de disparos, diámetro del agujero, tamaño de los pedazos, su riudo, gravedad, colisión y velocidad.
Pongo un vídeo que acabo de grabar en el que lo utilizo.
http://rapidshare.de/files/25204136/...mple, avi.html.
Y de paso, pongo otra escena en la que he hecho que saliera también sangre de una especie de bicho, y con unos bloques moviéndose (Slime, espero que me perdones por hacer una escena tan parecida a la de tu video de demostración, hasta en el movimiento de los bloques, pero es como mejor queda).
http://rapidshare.de/files/25187066/impacts, rar.html.
-- IMÁGENES ADJUNTAS --
https://foro3d.com/attachment.php?attachmentid=33376
https://foro3d.com/attachment.php?attachmentid=33381
-
Mi propio impact system en Houdini
Oye. Quiero la verdad. De donde has salido? Tu no tienes 14-15 años. Esto es increíble, tío. Los chavales de tu edad deberían estarcon los amigos en el pueblo y las motocicletas, ligando y de fiesta, y tal.
En serio, quiero conocerte, me das envidia, a tu edad yo era un pringado y tu eres ya un monsturo.
Me gusta, tu impactsiste, y tranquilo, que Slime seguro que está orgulloso que un chico de tu edad esté aprendiendo de su trabajo (y por dentro seguro que le corroe un dita sea, este crío ya me está imitando y quiere sustituirme en Sony imgw.).
De veras, un aplauso, llegaras muy lejos.
-
Mi propio impact system en Houdini
No puedo ver el video, pero me lo imagino, gran trabajo i sigue así. Un saludo.
-
Mi propio impact system en Houdini
El primer vídeo dice que no lo encuentra, el segundo está muy bien. Intenta hacerte una escena más completa y acabada, que te quedará muy bien.
La sangre que yo voy a hacer* va a ser una cosa menos gore.
*nota: vete a trabajar ya Beatriz.
-
Mi propio impact system en Houdini
Gracias. Vale, el enlace es este, algo ha pasado.
http://rapidshare.de/files/25204136/...mple, avi.html.
Pero la verdad es que he de mejorarlo. Añadir más cosas como polvo o chispas cuando es metal.
También tiene fallos, por ejemplo, cuando van dos disparos al mismo sitio se ralla y hace cosas raras, porque son operación booleanas en cada impacto. Pero lo mejoraré.
Lástima que no haya muchos houdinieros para probarlo.
-
Mi propio impact system en Houdini
Está muy bien, pero espero que las booleana de Houdini sean más estables que las de 3ds Max, hace tiempo que no las pruebo, pero cuando usabas booleanas animadas petaba como una escopeta de feria.
-
Mi propio impact system en Houdini
En Houdini no pasa eso. Mira la imagen. Simplemente se crean los polígonos nuevos y ya. Aunque a veces ocurren cosas por no hacer otras bien.
-
Mi propio impact system en Houdini
Hey Miguel, puedes subir la segunda animación sin (*.rar) en otro sitio que no sea rapidshare? Estaría bien que te montases una página web, para ensenar todas estas cosas.
Ahora te pongo un problema de producción real. Si tienes tiempo y te animas, intenta diseñar un sistema. No es muy complicado, pero puede ser un reto divertido para ti:
Tienes un modelo de un personaje animado. Sin modificar la topología (no cambiar el número de vértices, puntos, primitivas.) y sin cambiar la posición de los mismos durante todo el rango de fotogramas, podrías hacer que el impact system generara agujeros, pero según la dirección del disparo en ese momento y que mantuvieran esa orientación en todo momento?
Al sistema le darías, por ejemplo, un objeto y un Vector para representar el arma, o también puedes usar puntos en la geometría del objetivo (personaje) que activar en distintos fotogramas.
Dime como lo ves.
El primer video si que lo vi, pero es algo confuso, se ve el otl, pero no se aprecia cómo funciona. Un saludo.
-
Mi propio impact system en Houdini
No puedo ver el segundo vídeo, me dice que ha llegado al máximo de descargas.
Cita:
Generara agujeros, pero según la dirección del disparo en ese momento y que mantuvieran esa orientación en todo momento?
¿cómo para simular un disparo oblicuo?
No acabo de entender el que mantuvieran esa orientación en todo momento, de hecho, estoy pensando a ver a que te puedes estar refiriendo al querer hacer agujeros manteniendo la topología. ¿algo de mapeado normal? Venga Miguel, acepta el reto de Dixan.
-
Mi propio impact system en Houdini
Cita:
¿Cómo para simular un disparo oblicuo? No acabo de entender el que mantuvieran esa orientación en todo momento, de hecho, estoy pensando a ver a que te puedes estar refiriendo al querer hacer agujeros manteniendo la topología. ¿algo de mapeado normal?
Lo de la topología es para instanciar geometría en el modelo.
Lo de la orientación es para que sea realista. Imagínate que disparas una flecha contra un brazo de un tipo y este empieza a moverlo con la flecha clavada. La flecha cambiara de orientación dependiendo del movimiento es algo básico, pero que hay que tener en cuenta.
-
Mi propio impact system en Houdini
¿Y si lo consigue? Prometele curro en Sony.
-
1 Archivos adjunto(s)
Mi propio impact system en Houdini
Cita:
Lo de la topología es para instanciar geometría en el modelo. Lo de la orientación es para que sea realista. Imagínate que disparas una flecha contra un brazo de un tipo y este empieza a moverlo con la flecha clavada. La flecha cambiara de orientación dependiendo del movimiento es algo básico, pero que hay que tener en cuenta.
Tienes toda la razón, la verdad es que me preocupé por ello. Cuando ves las normales de los puntos pegados a la geometría que se mueve, éstas no cambian. Intenté arreglarlo haciendo cosas simples, pero no le di importancia. Simplemente pensé que al no tener demasiado ruido los agujeros, no se notaría que no están orientados correctamente.
Subo el segundo vídeo aquí comprimido con divx, aunque no tiene mucha calidad. Ya tengo una web en iespana, pero tengo puesta la demo y ocupa bastante.
-- IMÁGENES ADJUNTAS --
https://foro3d.com/attachment.php?attachmentid=33393
-
Mi propio impact system en Houdini
Qué interesante todo esto. Miguel, compra un dominio con hosting. Ahorra la paga o suplica en casa o que se yo. El vídeo está muy chulo por cierto.
-
Mi propio impact system en Houdini
No lo consigo. Estoy con el point SOP intentando que la orientación de las normales de las partículas esté correcta respecto a las de la geometría con la que colisionan, pero por ahora no he conseguido nada.
Se basa en orientar las normales correctamente ¿no?
-
Mi propio impact system en Houdini
Hay varias formas de hacerlo. La más sencilla es guardar el Vector de la normal en el momento del impacto y el Vector de la trayectoria del disparo y ajustar la segunda con la primera fotograma a fotograma. Echa un ojo al ángulo dihedral (trigonometria): http://en.wikipedia.org/wiki/dihedral_angle.
Este problema es interesante para darse cuenta de que en producción, muchas veces las reglas establecidas son muy estrictas. Ánimo que estoy seguro de que conseguirás resolverlo.
Por otro lado, lo que dice Bea es una buena idea, pilla un dominio con hosting y así te empezaras a dar a conocer. Allan Mckay empezó a ser conocido con más o menos tu edad y gracias a su página web y tutoriales. Saludos.
-
Mi propio impact system en Houdini
Eso es lo que he hecho yo, coger por una parte el Vector de la normal del punto donde impacta, y la normal de la trayectoria. Lo que pasa es que en vez de intentar ajustarlo manualmente cada frame (no sé si te refieres a eso), intentaba hacerlo automáticamente combinando de alguna forma los dos vectores, para que mantengan el mismo ángulo, y así poder haber muchos impactos.
-
Mi propio impact system en Houdini
Me he estado fijando en algunos detalles de vuestros videos. He visto el tuyo Slime que me parece impresionante. ¿cómo hacéis para que se generen las deformaciones de la superficie después del impacto?
He visto una imagen de un Panzer que tiene los puntos con sus subdivisiones ya preparadas para su deformación. ¿pero que ocurre si el lugar de impacto es aleatorio? ¿cómo generáis esa geometría? Gracias.
-
Mi propio impact system en Houdini
Slime en su herramienta utiliza desplazamiento, y las partes subdivididas se crean al aprieta el botón execute impact system. Le lleva unos segundos calcular, en el que mira donde van a tener que estar las subdivisiones y las crea.
Yo he utilizado operación booleanas, aunque ahora estoy probando desplazamientos.
-
Mi propio impact system en Houdini
Por ahora voy consiguendo cosas calculando las coordenadas polares de las normales y poniendo fórmulas. Creo que me falta poco.
Por otra parte, el hacer esto con los disparos hechos con booleanas, no es completamente necesario, ya que simplemente se le puede transferir a la partícula la normal del punto de impacto y así estará siempre orientrada. Aunque ya sería necesario si los agujeros fueran más profundos según el Vector de la trayectoria.
-
Mi propio impact system en Houdini
A mí se me ocurren varias formas para mantener el proyectil en la posición y orientación a lo largo de toda la secuencia. Pero eso sí, no tengo ni pajolera idea de si se puede aplicar en Houdini.
La más genérica de ellas y que es independiente de si el objeto se deforma (ya sea con Morph targets o Bones) o no se deforma, sería crear un sistema de coordenadas para el polígono donde se produjo la colisión.
Para ello necesitamos una base ortonormal y un origen. La base ortonormal estaría compuesta por el Vector normal del triángulo, una de sus aristas normalizadas y otro Vector que sería el resultado de hallar el producto vectorial entre la normal y la arista. El origen del sistema podría ser perfectamente el punto de colisión.
Una vez tenemos el sistema de coordenadas que define el espacio en relación al polígono, transformamos la posición y la dirección del proyectil por la matriz inversa del sistema de coordenadas que acabamos de definir. Eso nos dará la posición y la rotación en relación a dicho sistema de coordenadas (¿lo llamamos polygon-space?) evidentemente la posición será (0,0,0) si escogimos la posición de impacto como origen del sistema.
Ahora ya sería muy sencillo recalcular la posición y orientación del proyectil en cada frame. Tan sólo habría que volver a hallar el sistema de coordenadas para el polígono en cuestión (tal como he explicado antes) y transformar la posición y dirección del proyectil en polygon-space (que calculamos anteriormente) por la matriz del nuevo sistema de coordenadas del polígono. De esta forma obtendremos la posición y dirección del proyectil en world-space, que es lo que buscamos.
En cualquier caso, éste me parece un método a demasiado bajo nivel. Tal vez Houdini tenga alguna capa superior que facilite está tarea. Saludos.
-
Mi propio impact system en Houdini
Yo lo que he intentado es calcular la diferencia de cada Vector (el normal y la trayectoria) respecto a los ejes en el frame del impacto, y aplicar el mismo ángulo en todos los frames siguientes. Aun así, no he conseguido la fórmula final necesaria. Creo que se basa en lo mismo que tú respuesta, en aplicar la misma diferencia en cada frame. Si lo que decir es una tontería, no hagas caso.
-
Mi propio impact system en Houdini
Esa es la forma a bajo nivel de hacerlo, Halfvector, que, por supuesto se puede aplica en Houdini, pero más sencillo es calcular las dihedrales en los ejes x y, z, grabarlas en una partícula (los sistemas de partículas pueden almacenar información en el tiempo, al contrario que la geometría, que solo se almacena en un fotograma, por culpa del paradigma procedural de Houdini) y luego ajustar las normales con esos ángulos.
Por ejemplo.
Un disparo impacta en el hombro del personaje en el fotograma n. La normal en ese momento del punto de impacto en la geometría es [nx, ny, nz]. La dirección del impacto en ese momento es [ax, ay, az]. Se calculan las dihedrales del Vector [n] con [a] y sale [dx, dy, dz]. Se crea una partícula y se pega en la posición del impacto, guardando el Vector de la dihedral ([d]) y se mantiene constante para ese punto durante toda la secuencia. Para calcular el Vector del impacto en cualquier fotograma, solo tenemos que aplicar la dihedral a la normal en ese fotograma por componentes.
Para que la topología no cambie, en vez de usar booleanas se mueven los puntos en la zona del disparo siguiendo el Vector opuesto al Vector del impacto. Si se subdivide la zona previamente (para toda la secuencia) y se aplican distintas profundidades dependiendo de la distancia al origen y se anyade ruido se pueden conseguir resultados muy buenos sin alterar la topología y que soporten animación en el personaje.
Espero que esto sea interesante. Saludos.
-
Mi propio impact system en Houdini
-
Mi propio impact system en Houdini
Están interesante como complicado. (dónde quedará el bachillerato tecnológico), nada, en realidad se entiende muy bien la idea.
-
Mi propio impact system en Houdini
Cita:
Esa es la forma a bajo nivel de hacerlo, Halfvector, que, por supuesto se puede aplica en Houdini.
Pues si eso se puede hacer con el sistema de nodos de Houdini, debe ser una delicia para un programador gráfico o de física. Menuda maravilla. Saludos.
-
Mi propio impact system en Houdini
Halfvector, animate a probar Houdini. Seguro que te encanta.
-
Mi propio impact system en Houdini
¿A qué te refieres con la dihedral entre los dos vectores? ¿un ángulo diedrico no es el ángulo que forman dos planos que se cortan?
¿Te refieres a la expresión dihedral(v0, v1) de Houdini?
-
Mi propio impact system en Houdini
Cita:
Halfvector, animate a probar Houdini. Seguro que te encanta.
Lo cierto es que estuve mirándolo muy por encima durante una semana, sobre todo su sistema de Shaders. Y la verdad es que ya podía atisbar que tenía un potencial muy grande y su workflow parecía bastante amigable para alguien conocimientos de programación.
Pero lo cierto es que, aunque me encanta el lado artístico y técnico del mundo del CG (y alucino y me da envidia ver las cosas que hace la gente de éste y otros foros), al final siempre acabo sumergido entre líneas y más líneas de código. O sea que me imagino que no tengo remedio, soy programador y es difícil que me saquen de ahí.
Pero bueno, como pasatiempos no descarto profundizar algo más con Houdini algún día. Lo cierto es que me gusta ver el funcionamiento de todos los programas que puedo porque después me da ideas para desarrollar mis propios programas. De hecho, Houdini sería un buen ejemplo para desarrollar un buen editor de partículas. Saludos.
-
Mi propio impact system en Houdini
Ya se ve que disfrutas programando.
-
Mi propio impact system en Houdini
Cita:
¿A qué te refieres con la dihedral entre los dos vectores? ¿un ángulo diedrico no es el ángulo que forman dos planos que se cortan?
¿Te refieres a la expresión dihedral(v0, v1) de Houdini?
Eso mismo. Manana subo un fichero de Houdini.
-
Mi propio impact system en Houdini
Por cierto, ahora que sale el tema de las expresiones, cuando estuve probando Houdini no encontré algo parecido al Maxscript Listener para poder probar expresiones. ¿existe algo similar? Gracias.
-
3 Archivos adjunto(s)
Mi propio impact system en Houdini
Qué bien. Muchas gracias Slime. He hecho lo que decías de crear los agujeros desplazando los puntos y subdividiendo esa zona. A ver qué os parece.
Se basa en que una esfera copiada en las partículas colisionadas, crea un grupo con las primitias que quedan dentro de ella, y ese grupo se subdivide. Luego, la operación se vuelve a repetir, agrupando finalmente unos puntos, que se desplazan en la dirección opuesta a las normales de la geometría, y posteriormente se suavizan (no se subdividen).
-- IMÁGENES ADJUNTAS --
https://foro3d.com/attachment.php?attachmentid=33485
https://foro3d.com/attachment.php?attachmentid=33486
https://foro3d.com/attachment.php?attachmentid=33487
-
1 Archivos adjunto(s)
Mi propio impact system en Houdini
Cita:
Posteriormente se suavizan (no se subdividen).
Sí, no sé si Slime lo hizo así en su impact system (me imagino que sí) pero por lo que yo vi, aplicar un MeshSmooth quedaba muy bien, mejor que hacer una teselación en un edit_mesh.
Lo único raro que veo es que debido a la subdivisión, por alguna razón (tal vez pérdida de precisión), no parece que las nuevas coordenadas de textura se interpolen correctamente para los nuevos vértices, lo cual causa un pequeño desplazamiento en la textura.
Donde más se nota es en la zona que he marcado con el círculo rojo, cuando aparece el agujero que hay más arriba, dentro del círculo.
https://www.foro3d.com/images/upload...2006/07/31.jpg
Por lo demás lo veo muy bien. Desde luego no pierdes el tiempo. Saludos.
-- IMÁGENES ADJUNTAS --
https://foro3d.com/attachment.php?attachmentid=33488
-
Mi propio impact system en Houdini
Si, gracias Halfvector, ya lo vi. Eso pasa por que la geometría se va subdividiendo por cada impacto. Es decir, si en el frame 10 no ha chocado aún la partícula, no estará subdividida, y cuando se subdivida de un frame a otro, producirá esa deformación.
Ahora lo que estoy haciendo es que esté subdividida en las partes que toca desde el pincipio de la animación. Mira que no haberlo pensado antes del render.
-
2 Archivos adjunto(s)
Mi propio impact system en Houdini
Como decía, ya está resuelto. Ahora la naturaleza de la geometría es la misma desde el principio al final, y no provoca deformaciones en la textura.
-- IMÁGENES ADJUNTAS --
https://foro3d.com/attachment.php?attachmentid=33509
https://foro3d.com/attachment.php?attachmentid=33510
-
Mi propio impact system en Houdini
La cosa está que arde, ya casi lo tienes. Pero mi pregunta de profano es: y si los impactos fueran aleatorios? Es decir que no supieras donde va a impactar el proyectil? ¿se podría generar una geometría aparte que se solapara sobre el objetivo como un parche?
Si digo alguna tontería con ignorarme ya es suficiente, no os preocupéis estoy acostumbrado a ello.
-
Mi propio impact system en Houdini
Estupendo.
Cita:
(tal vez pérdida de precisión), no parece que las nuevas coordenadas de textura se interpolen correctamente para los nuevos vértices, lo cual causa un pequeño desplazamiento en la textura.
Houdini generalmente interpola los valores de los puntos cuando se genera nueva geometría usando subdivide, pero a veces no funciona correctamente.
Para mantener los mapas UV después de la subdivisión se puede hacer un attribute transfer de antes de la subdivisión a después.
A veces en geometría compleja, la única forma de conseguir que no haya fallos después de subdividir es usar un divide. El divide no hace interpolación así que, hay que regenerar atributos y grupos (de igual forma, con un attribute transfer).
Ya tienes el sistema casi listo, Miguel. La técnica de mover puntos por las normales la tienes que, aplicar ahora a los ángulos correctos. (ahora te mando el archivo). Lo que te recomiendo después de terminarlo es generar algunos de los sistemas con Vex.
Será un buen ejercicio sencillo y puedes empezar con mover puntos en geometría.
-
Mi propio impact system en Houdini
Gracias Slime. No he utilizado un point para mover los puntos. En este último e utilizado dos software peak, que desplazan los puntos en dirección de las normales y, además se suavizan algo.
Josich, si guardas que primitivas están seleccionadas en el último frame y haces que estén igual en todos, las tienes desde el principio.
Espero ese archivo.
-
Mi propio impact system en Houdini
Aquí tienes. Espero que se entienda, que no tengo tiempo para comentarlo en profundidad. Onv = original normal Vector (normal en el momento de impacto / no cambia).
Anv = actual normal Vector (normal de la geometría en este momento).
Idv = impact direction Vector (Vector de dirección de impacto / no cambia).
New Vector:
(vector3($idvx,$idvy,$idvz) * dihedral(vector3($onvx,$onvy,$onvz), vector3($anvx,$anvy,$anvz)))[0].
(Vector3($idvx,$idvy,$idvz) * dihedral(vector3($onvx,$onvy,$onvz), vector3($anvx,$anvy,$anvz)))[1].
(Vector3($idvx,$idvy,$idvz) * dihedral(vector3($onvx,$onvy,$onvz), vector3($anvx,$anvy,$anvz)))[2]. http://www.danielpferreira.com/Houdini/impacts, hip. Saludos.
-
Mi propio impact system en Houdini
Cita:
No he utilizado un point para mover los puntos. En este último e utilizado dos software peak, que desplazan los puntos en dirección de las normales y, además se suavizan algo.
Buena idea lo de usar el peak. Pero imagínate que quieres que quede realista. Los agujeros no deberían ser perfectamente redondos necesita ruido y diferentes niveles de profundidad, incluso en un mismo impacto.
-
Mi propio impact system en Houdini
-
Mi propio impact system en Houdini
Gracias Slime. Pero la escena no tiene geometría. ¿es adrede? Al abrirla me da varios errores, el primero, el switch que hay al principio del pop network.
Aun así, creo que lo entiendo. Ahora lo intento aplicar.
-
Mi propio impact system en Houdini
Ánimo Miguel. Eres el orgullo de partículas y dinámicas, sigue así.
-
Mi propio impact system en Houdini
Miguel, el switch es porque no encuentra un operador propietario. Suele transformarlos en un switch por alguna extraña razón.
Lo de no pasarte la geometría si que es adrede.
A ver si lo consigues hacer funcionar.
-
Mi propio impact system en Houdini
Vale, lo he intentado. Pero falla al crear el Vector final. Con la fórmula, se crea el atributo del nuevo Vector, pero tiene el mismo valor para x, y, y z en todo los frames.
En todo caso, no sé que geometría va en cada input del popnet. Y aunque he intentado simplemente hacerlo según la teoría, y no imitando tu escena, no estoy seguro de haber elegido correctamente cada Vector. A ver.
Con onv, ¿te refieres al Vector de la normal de la geometría con la que colisiona la partícula, pero que se mantiene siempre igual ya que solo la transferimos en el frame de la colisión?
Con anv, ¿te refieres a el Vector de la normal del punto de impacto, pero que es siempre perpendicular a la geometría, y por lo tanto varía en cada frame?
Con idv, ¿te refieres simplemente a el Vector alineado con la trayectoria, y que siempre apuntara en la misma dirección?
-
Mi propio impact system en Houdini
Cita:
Con onv, ¿te refieres al Vector de la normal de la geometría con la que colisiona la partícula, pero que se mantiene siempre igual ya que solo la transferimos en el frame de la colisión?
Con anv, ¿te refieres a el Vector de la normal del punto de impacto, pero que es siempre perpendicular a la geometría, y por lo tanto varía en cada frame?
Con idv, ¿te refieres simplemente a el Vector alineado con la trayectoria, y que siempre apuntara en la misma dirección?
Eso es. Onv e idv se graban en la partícula, ahora te preparo la escena con geometría. Con un poco de suerte no me echan por no trabajar en lo que debo.
-
Mi propio impact system en Houdini
He actualizado el fichero para que funcione, pero hay un ligero problema de orientación, los vectores cambian ligeramente con el movimiento del objeto. Mirándolo rápido no sé dónde está el problema, mañana le echaré un vistazo con más calma, pero te puede servir para ver cómo funciona. Saludos.
-
Mi propio impact system en Houdini
Gracias. Si, no se orientan debidamente. A ver qué pasa.
-
1 Archivos adjunto(s)
Mi propio impact system en Houdini
Al fin, o eso parece. A ver qué tal. Cometía a veces un fallo, no poner al final de la fórmula el [0], [1], y [2] para especificar el Vector.
Perdona que copie la escena, pero al no salirme con una mía, decidí copiar la tuya. Ahora lo aplico en otra.
Me parece que la sombra de los palitos confunde un poco.
Por cierto, Slime, por curiosidad, ¿Qué hacía ese nodo de Sony que se transformaba en un switch? Y ¿Qué es lo que te tocaba hacer mientras hacías la escena del ejemplo?
-- IMÁGENES ADJUNTAS --
https://foro3d.com/attachment.php?attachmentid=33549
-
Mi propio impact system en Houdini
Ese nodo era para generar partículas a partir de puntos en espacio SOP, heredando valores de los mismos. Estos días estoy intentando conseguir que partículas sigan la animación que yo quiera a la vez que están restringidas a una superficie tridimensional. Es un tema complicado, porque son muchos millones de partículas y el sistema tiene que ser rápido.