Morfer entre mayas de diferente numero de vértices

Hola. Aquí tenéis la primera versión del script que proyecta un objeto sobre otro. Os comento un poco cada cosa (ver imagen):

  • 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.