Morfer entre mayas de diferente número de vertices
Pues eso. Lo que me gustaría saber es si se puede mediante script hacer un morfer de una malla a otro de diferente número de polígonos. Es posible hacer en 3dsmax que una mano se convierta en cuchilla? Ya sabéis, en plan Terminator 2.
Es que si se puede, mañana mismo me pongo a hacer a matanza. Así ya tengo el trío spidergay, digo man, enom y mantanza.
Me suena que se comentó que se podía hacer, pero que la transición es muy chunga. Es factible conseguir hacerlo, o me olvido desde ya?
Un saludo.
Morfer entre mayas de diferente número de vertices
Pues lo de hacer Morphs entre distintas mallas con diferente número de vértices lo veo complicado, si no los programas de 3d lo traerían de serie, básicamente el Morph traslada en línea recta (siempre que no uses Morphs intermedios) el vértice x de la malla 1 a la posición del vértice x de la malla 2, es decir si tuvieses dos objetos exactamente iguales, pero la numeración de los vértices fuese distinta en cada uno, lo que te saldría del Morph sería un amasijo de polígonos bastante inútil:
Para poder hacer un Morph entre mallas con una cantidad de vértices diferentes tendrías que ser capaz de parametrizar la forma del objeto (si no se me va la pinza sería poder sacar la forma del objeto mediante ecuaciones matemáticas, vamos como las primitivas del 3ds Max).
Resumiendo que es difícil, difícil, alternativas que se me ocurren a bote pronto, usar mapas de desplazamiento para animar la malla, así siempre tendrías el mismo objeto base con sus huesos y demás, pero por encima podrías cambiarle la forma mediante el desplazamiento de la malla.
Para lo del script mejor que se pase Halfvector que es el que controla de estas cosas.
2 Archivos adjunto(s)
Morfer entre mayas de diferente número de vertices
Hola. Hace un tiempo Ballo planteó el mismo tema de hacer morphing entre objetos con distinto número de vértices y topología. En el último mensaje de ese hilo puse un par de papers con soluciones a dicho problema.
En cualquier caso, ahora puedo aportar un poco más de información (si no recuerdo mal es una solución similar a la que se daba en uno de los papers del mensaje que escribí en ese hilo).
Supongamos que queremos hacer un morphing entre dos objetos con distinto número de vértices (y por lo tanto, distinta topología), el objeto a y el objeto b. La cuestión sería trabajo el objeto a sobre el objeto b (llamémosle objeto ab) y viceversa (objeto ba). Luego se hace un merge del objeto a con el objeto bellas artes y otro merge entre el objeto ab y el objeto b. Justo en ese orden, de lo contrario la topología será totalmente distinta. Una imagen puede venir bien:
https://www.foro3d.com/images/upload...2006/11/54.jpg
En este caso se ha proyectado un cubo sobre una esfera.
De todas formas, la calidad del resultado final va a depender de la forma y complejidad geométrica de los objetos. Hay que tener en cuenta que al hacer la proyección y el merge, en realidad estamos creando dos elementos separados. Lo ideal sería que todo fuera un mismo objeto, de esta forma los resultados serían mejores. Lo que pasa es que entonces lo más probable es que estuviéramos cambiando la topología.
Por ejemplo, en el caso del cubo y la esfera se pueden ver ciertas fallas al hacer el morphing. Tal vez se podrían disimular poniendo Morph targets intermedios. He subido un pequeño video demostrativo para que veas de lo que hablo. Saludos.
-- IMÁGENES ADJUNTAS --
https://foro3d.com/attachment.php?attachmentid=38877
https://foro3d.com/attachment.php?attachmentid=38879
Morfer entre mayas de diferente número de vertices
Edito: lo siento, mensaje duplicado.
Morfer entre mayas de diferente número de vertices
Vaya, me parece que a pesar de los fallos en la transición es una solución bastante buena. Si se suaviza media Morph targets intermedios podría salir algo interesante. Además, en animaciones rápidas no se notaria (a no ser que seamos muy freakys y pasemos frame a frame). Voy a buscar el mensaje a ver si que tal. Gracias.
Posdata: voy a publicar otro mensaje de puntos y líneas.
Morfer entre mayas de diferente número de vertices
Tengo que pulir un poco el script que hace la proyección y en cuanto lo tenga lo pongo aquí. Saludos.
Morfer entre mayas de diferente número de vertices
Ostia que bueno, esto puede tener un montón de aplicaciones, lo dejes tío.
Morfer entre mayas de diferente número de vertices
En al Maya 8 se puede hacer bastante fácil con la herramienta transfer, y luego un blendshape (Morph) siguiendo los mismos pasos, funciona bastante bien para superficies bastante suaves, como una cara o así, en superficies más angulosas da problemas, pero siempre se podría tener una geometría base que se deformase hacia las dos de modo que fuese una intermedia.
Morfer entre mayas de diferente número de vertices
Cita:
En al Maya 8 se puede hacer bastante fácil con la herramienta transfer, y luego un blendshape (Morph) siguiendo los mismos pasos, funciona bastante bien para superficies bastante suaves, como una cara o así, en superficies más angulosas da problemas, pero siempre se podría tener una geometría base que se deformase hacia las dos de modo que fuese una intermedia.
Maldito Maya, porque no podías dar los mismo problemas que max?
Morfer entre mayas de diferente número de vertices
Cita:
Es que si se puede, mañana mismo me pongo a hacer a matanza. Así ya tengo el trío spidergay, digo man, enom y mantanza.
Vaya, veo que te pico lo suficiente.
Sé que tú puedes hacerlo, Sheen, suerte.
Morfer entre mayas de diferente número de vertices
Cita:
Maldito Maya, porque no podías dar los mismo problemas que max?
Tranquilo, tu deja que los de Autodesk sigan metiendo las zarpas en el código de Maya. Veas que poco tarda en cargar mal las versiones anteriores de los archivos, y esas nuevas features que incorpora el 3ds Max.
Morfer entre mayas de diferente número de vertices
Lo primero es que ya me casca Maya muchísimo más que antes, hola?
Morfer entre mayas de diferente número de vertices
Pregunto: si dos más dos siguen siendo cuatro, si tenemos dos modelos con las mismas cantidad de polígonos, que más daría que uno tenga forma de cubo y otro de esfera, o cono, o cara, etc. No he hecho la prueba, pero me da que tendría que funcionar.
Sino, no funcionaría el hecho de morphear dos caras de igual poligonización, pero distintas formas, no. Un saludo.
Morfer entre mayas de diferente número de vertices
Cita:
Pregunto: si dos más dos siguen siendo cuatro, si tenemos dos modelos con las mismas cantidad de polígonos, que más daría que uno tenga forma de cubo y otro de esfera, o cono, o cara, etc. No he hecho la prueba, pero me da que tendría que funcionar.
No sé si he entendido bien. Si el problema sólo fuese el número de vértices/Faces, sería bastante sencillo. El problema es que tienen que tener la misma topología, es decir, exactamente el mismo orden de creación de caras, de lo contrario el resultado final del Morph será una masa de vértices sin sentido. Saludos.
Morfer entre mayas de diferente número de vertices
Cita:
La cuestión sería trabajo el objeto a sobre el objeto b.
Repasando esa idea me acordé del script que habías hecho para plantar árboles sobre una superficie, usabas una función que trazaba un rayo desde el objeto a plantar a la superficie y así obtenías las coordenadas, en teoría ¿no se podría hacer algo similar, pero en vez de calcularlo por objeto hacerlo por vértice? Lo único que las mallas tendrían que tener una densidad de polígonos parecida porque si no haría cosas raras, ahí queda eso, me voy para cama ya repasaré lo escrito por si he soltado demasiadas burradas. Saludos.
Morfer entre mayas de diferente número de vertices
Cita:
Repasando esa idea me acordé del script que habías hecho para plantar árboles sobre una superficie, usabas una función que trazaba un rayo desde el objeto a plantar a la superficie y así obtenías las coordenadas, en teoría ¿no se podría hacer algo similar, pero en vez de calcularlo por objeto hacerlo por vértice? Lo único que las mallas tendrían que tener una densidad de polígonos parecida porque si no haría cosas raras, ahí queda eso, me voy para cama ya repasaré lo escrito por si he soltado demasiadas burradas.
Eso es lo que hago.
Se bombardea el objeto b con rayos lanzados desde el objeto a. Aquí hay varias posibilidades. O bien lanzas los rayos con su origen en los vértices de a y dirección la normal del vértice, o bien creas una esfera virtual y proyectas desde ahí con dirección igual al origen de la esfera.
De todas formas, dependiendo de la forma de lo objetos, puede ocurrir que al trabajo el objeto a sobre b, hayan polígonos que crucen espacios vacíos. Por ejemplo, imagina una mano con sus dedos. Puede ocurrir que un vértice sea proyectado en la punta de un dedo y otro vértice del mismo polígono se proyecte en la punta del dedo contiguo. Eso generaría geometría que rompería la forma de la mano.
En cualquier caso, a ver si le doy los últimos retoques y lo saco. No hay nada que perder. Saludos.
2 Archivos adjunto(s)
Morfer entre mayas de diferente número de vertices
Hola. Aquí tenéis la primera versión del script que proyecta un objeto sobre otro. Os comento un poco cada cosa (ver imagen):
https://www.foro3d.com/images/upload...2006/11/61.jpg
- virtual sphere Radius: especifica el radio de la esfera (virtual) desde la cual se proyectara el objeto. En la imagen podéis ver dicho radio en 2d. Tened en cuenta que las unidades del radio son genéricas, aunque vosotros tengáis las unidades puestas enpreguntao lo que sea.
- ray direction: especifica la dirección en la cual se proyectaran los vértices. Tenemos dos opciones. O bien se proyectan utilizando la normal de cada vértice, o bien lo hacen utilizando el radio-Vector, es decir, el Vector que va del vértice al centro de la esfera virtual (ver imagen). La dirección óptima dependerá de la forma del objeto.
- object todo Project: con este botón puedes seleccionar el objeto (objeto a) que se proyectara (debe ser Editable Poly).
- object todo Project on: con este botón puedes seleccionar el objeto sobre el que se proyectara (objeto b) el objeto a (también debe ser Editable Poly).
- Project: ejecuta la proyección. Se creara un nuevo objeto (copia del objeto a) proyectado sobre el objeto b.
- exit: hm.
Bien, con esto no está todo hecho para poder hacer el morphing.
Imaginad que tenéis un cubo y una esfera. Primero proyectais (el orden da igual) el cubo sobre la esfera y tendréis como resultado el objeto, llamémosle cube_proj. Ahora proyectais la esfera sobre el cubo y tendréis como resultado el objeto sphere_proj. Lo siguiente es atachar sphere_proj al cubo y la esfera a cube_proj. Aquí el orden de asociación sí es importante, de lo contrario la topología se nos ira al carajo.
Una vez hecho todo eso, tenemos dos objetos, lo más probable es que no sean perfectos. Seguramente habrán aristas cruzando espacios vacíos (esto dependerá de la forma de los objetos) y habrá que mover los vértices de forma que dichas aristas queden dentro del objeto original. Otra cosa que seguramente necesitaréis para obtener resultados decentes a la hora de hacer el Morph es utilizar varios Morph targets intermedios. De esta forma la transición será más controlable. También se suelen obtener mejores resultados con objetos suaves y bastante teselados. Otra cosa que suele venir bien es escalar (utilizando el centro como pivote) el objeto proyectado, de forma que quede más en el interior del objeto que sirvió como referencia para la proyección. De esta forma evitaréis z-fighting en el render.
En fin, eso es todo por ahora. Si tenéis dudas o encontráis fallos no tenéis más que comunicarlo por aquí y haré lo que pueda. Saludos.
-- IMÁGENES ADJUNTAS --
https://foro3d.com/attachment.php?attachmentid=38968
https://foro3d.com/attachment.php?attachmentid=38969
Morfer entre mayas de diferente número de vertices
Y todo esto no es lo mismo que un conformí. Corregidme si me equivoco, porque no lo entiendo, la verdad.
Morfer entre mayas de diferente número de vertices
Pues sí, eso parece. De hecho, hay opciones en el Conform que tenía pensado meter en el script también. En fin, es lo que tiene no conocer el 3ds Max.
Morfer entre mayas de diferente número de vertices
Básicamente sí que es lo mismo, pero siempre mola ver cómo Halfvector se curra estos scripts, además nunca se sabe cuándo te puede hacer falta programar y siempre tienes estas aplicaciones para estudiar el código, en cuanto pueda lo prueba y comento si encuentro algún fallo.
Editado : no había visto el mensaje de half, pero la idea de aprender del código sigue siendo valida.