XSIforum.com

Instancias y su orientación

0 Usuarios y 1 Visitante están viendo este tema.

Unaided

  • ***
  • 3293
Instancias y su orientación
« en: 18 Febrero 2014, 22:21:56 »
Quiero posicionar la pieza romboide en el centro de cada quad de la geometría base, pero no sé como resolver la orientación de cada pieza. Espero que se entienda en las imágenes adjuntas.

Haciéndolo a mano, lo puedo resolver haciendo una matriz polar y esa 'roseta' posicionar en cada centro de cada pentágono de un dodecaedro, orientando esta hacia el centro del dodecaedro, y rotando 36º en su local.roty. Este procedimiento lo estaba haciendo con instancias en ICE, pero me surge el problema que para cubrir el poliedro completo se sobreponen diferentes piezas de cada 'roseta' de 5.

Por esa razón estoy intentando este otro procedimiento de instanciar cada pieza en cada polígono. En esta parte de la pieza sería una matríz polar, pero lo que busco es posicionar y orientar cada pieza sobre le dodecaedro completo.

Otro procedimiento que he probado, pero solo a mano, es con cuatro constrain position, a modo de pin-corner, pero en este caso necesitaría un control para rotar cada pieza de un modo semejante a como lo hace el uv editor.

Re:Instancias y su orientación
« Respuesta #1 en: 19 Febrero 2014, 01:43:34 »
He hecho la geometría a instanciar "a mano" y los ángulos no se ajustan perfectamente, pero supongo que se entiende la idea :)

Unaided

  • ***
  • 3293
Re:Instancias y su orientación
« Respuesta #2 en: 19 Febrero 2014, 13:41:18 »
Gracias César!

Lo he mirado por encima y, no entiendo la idea :D Lo debo examinar con algo más de calma. Si veo que se posicionan sobre la geometría del pentagono, la orientación en Y la toman de un valor, y la dirección de la normal de cada poligono. Sin embargo el Closest to surface no trabaja correctamente, puesto que si roto todos los poligonos del pentagono, las piezas no se apoyan sobre los poligonos. No sé si habría que recurrir a un raycast para ello.

Re:Instancias y su orientación
« Respuesta #3 en: 19 Febrero 2014, 15:42:15 »
No es que el closest location no funcione correctamente, lo que sucede es que el polygon position que utilizo para crear las partículas no considera las transofrmaciones de la geometría en si, si multiplicas ese valor por la matriz de transformacion global de la propia geometría antes de conectarlo al add point debería que funcionar :)

Unaided

  • ***
  • 3293
Re:Instancias y su orientación
« Respuesta #4 en: 19 Febrero 2014, 19:33:10 »
He añadido mi interpretación de tus palabras, que debe estar mal porque las piezas no se quedan fijas sobre la geometría en ninguna modificación de su SRT, tanto a nivel objeto, como a nivel componentes. La multiplicación del valor valor del PolygonPosition por el SRT de la geometría la hago en el operador Multiply Vector by Matrix que tenías puesto. Diría que teóricamente hace lo que decías.

He cogido con el kine.global porque en los parámetros del operador polymsh solo están Scale y Orientation.





Unaided

  • ***
  • 3293
Re:Instancias y su orientación
« Respuesta #5 en: 19 Febrero 2014, 20:17:48 »
He cambiado el tinglao que he montado cogiendo escala, rotación y posición por separado y pasarla a una matriz con el SRT to Matrix por un simple Get kine.global como estabas usando para coger la posición del null, y tampoco funcionaba, pero me ha servido para ver que el null está forzando la posición de las partículas a una distancia (controlada por el control numérico que le has creado) del mismo, y he probado a desconectar, y voilá!
Posiciona las partículas en el centro del poligono, pero así me va mucho mejor, es lo que quería, ya que para posicionar las piezas, el centro de cada romboide de la geometría soporte, es el centro exacto.

¡Muchas gracias César!

Voy a trasladar esto a la geometría en la que estoy trabajando (un dodecaedro un poco tuneado) a ver si resulta, y me permite el control que busco.

Re:Instancias y su orientación
« Respuesta #6 en: 19 Febrero 2014, 21:54:20 »
Ouch :P
Vale, plan B... lo he re-hecho sin closest location, los compounds grises son donde está "la magia", lo he hecho de esa forma para que puedas ir conectando/desconectando cosas y puedas entender como funciona :)

Unaided

  • ***
  • 3293
Re:Instancias y su orientación
« Respuesta #7 en: 20 Febrero 2014, 14:54:50 »
Ahora que estaba entendiendo como funciona el anterior ejemplo... y me lo cambias! jaja

Ya le he echado un vistazo, y he hecho alguna prueba con la geometría de soporte base. Tiene algunos problemas en como se posicionan las piezas sobre los poligonos. He desconectado el null center porque no necesito ese control, ya me va bien que se posicione en el centro de cada poligono, o en su defecto hago un midpoint en el edge de cada poligono.

He desmontado un poco tu compound, pero lo que quiero es que se posicionen en el centro de cada poligono y se apoyen sobre estos (bastaria con un up vector hacia el centro en mi caso), y se orienten (local.roty) hacia un punto (ground_center), como ya funciona en este ejemplo, pero no resulta con otra topología.

Con tu ejemplo se me ocurre hacer un detach de cada pentagono y hacer tantos pointclouds como pentagonos. No se apoyan bien cuando los componentes del objeto tienen otra orientación.
« Última modificación: 20 Febrero 2014, 15:14:09 por Unaided »

Re:Instancias y su orientación
« Respuesta #8 en: 20 Febrero 2014, 15:57:04 »
Eso es lo que pasa cuando omites información :/
Yo encantado te ayudo, de verdad, pero necesito que me digas que es lo que quieres resolver, sin omitir "detalles", de otra forma es difícil avanzar.

Unaided

  • ***
  • 3293
Re:Instancias y su orientación
« Respuesta #9 en: 20 Febrero 2014, 22:19:26 »
Bueno, es que quería hacerlo yo, y empecé preguntando en puntos donde me atascaba bajo el procedimiento que empecé, como lo de necesitar un control para la orientación de cada partícula. Tu propuestas de procedimientos ya resuelven las cuestiones que he ido preguntando, y aunque son sofisticados para mi compresión, me van muy bien, tanto que me quedo con tus procedimientos.

Prepararé un poco de documentación gráfica, a ver si consigo explicar bien lo que quiero hacer. Fundamentalmente, viene a ser posicionar una geometría con forma de romboide sobre polígonos, con su dirección en la normal de cada polígono, y su orientación (la de la partícula) en local.roty libre para que pueda orientarse con grados, como ya has hecho en tus compounds. Pero lo dicho, déjame que "desomita" información ;)

Una cuestión: ¿por qué conectas las tres ramas a un 'execute' y este al ICEtree? qué diferencia tiene si computa su ejecución, supongo que secuencial, directamente el nodo ICETree?

Re:Instancias y su orientación
« Respuesta #10 en: 20 Febrero 2014, 23:30:51 »
Si, si... quizás por escrito el comentario puede parecer un poco duro pero vamos, nada más lejos de la realidad, que ya nos conocemos ;)
Lo de no omitir cosas es porque este tipo de soluciones se tienen que basar en algo y si no se conoces las "constantes" que hay en juego es difícil saber por donde pillarlo, por ejemplo en la última escena estoy usando como upvector el eje y del "terreno" lo que evidentemente falla en caso de una superficie "esférica".
Es poco probable que ante un problema de este tipo encuentres una solución 100% reutilizable que funcione automágicamente en todos los escenarios imaginables. Sin duda habrán componentes reutilizables, pero es muy probable que la solución global funcione bajo ciertos términos :)

El execute no significa absolutamente nada, no sabía si subiría el compound o la escena y ante la duda dejé un execute para encapsular todo en 1 salida.

Unaided

  • ***
  • 3293
Re:Instancias y su orientación
« Respuesta #11 en: 24 Febrero 2014, 21:52:12 »
Bueno, lo prometido es deuda. Aquí expongo lo que estoy intentando hacer, César.
El procedimiento A, muestra el resultado casi como necesito, con la salvedad de un par de cosas que voy a comentar y por ellas me planteé el procedimiento B, que es donde no lograba salir adelante.

Procedimiento A:

  • Creo un dodecaedro.
  • Triangulizo con el algoritmo X, todos sus pentágonos, con lo que obtengo el centro de estos.
  • Selecciono los centros de los pentágonos y creo un cluster, a modo de selección guardada y para usarla en adelante; (los clusters de polígonos son únicamente para facilitar la lectura de cada pentágono en futuras ediciones del dodecaedro de origen).
  • Escalo desde el centro del dodecaedro el cluster "Point" para obtener una aproximación esférica en su geometría, que es la posición donde necesito que estén los centros de cada pentágono.
  • Dibujo la pieza a instanciar. Un poligono de cuatro puntos de forma romboide en el espacio haciendo snap en los puntos del dodecaedro.
  • Con centro de rotación en el centro del pentágono superior, duplico con rotación de 72 grados, obteniendo una matriz polar de la pieza.
  • Creo un pointcloud generando partículas únicamente en los centros de los pentágonos (cluster "Point").
  • Instancio cada modelo "Wheel" a modo de molinete sobre cada centro, cada uno mirando hacia el centro del dodecaedro, y con una orientación de 36 grados en su eje local Y.

Con esto tendría lo que buscaba, pero con este procedimiento me encontré con dos inconvenientes como antes mencionada.
    1) La pieza a instanciar la he dibujado en el espacio, y resulta un tanto incomodo su posterior edición. Lo suyo es dibujarla sobre una vista Top (plano XZ) y con independencia de su pivote.
    2) Al instanciar cada "wheel" sobre cada centro de los pentágonos, se produce una duplicado en ciertas piezas, y no veo claro que tenga un logaritmo claro de repetición. Es decir, no sirve ocultar siempre la misma instancia de las 5 que contiene cada "molinete".

Para solventar estos dos puntos, pensé otro procedimiento para instanciar las piezas.


Procedimiento B

  • Mismo que el procedimiento A.
  • Mismo que el procedimiento A.
  • Mismo que el procedimiento A.
  • Mismo que el procedimiento A.
  • Selecciono los egdes que corresponderían a la mitad de cada futuro romboide.
  • Eliminado estos edges me quedo con romboides. Son "no planares", pero no me he topado inconveniente alguno por ello.
  • El centro de cada romboide es el centro para instanciar cada pieza.

A partir de ahí, es donde me atasqué. Necesitaría direccionar cada pieza hacia el centro del dodecaedro, y poder controlar la orientación de las mismas sobre su eje local Y, pero solvento los anteriores inconvenientes. 
    1) Puedo modelar y editar sobre el plano XZ cómodamente la pieza a instanciar.
    2) Cada pieza se instanciaría sobre el centro de cada romboide, por lo que no habría duplicados.

Unaided

  • ***
  • 3293
Re:Instancias y su orientación
« Respuesta #12 en: 25 Febrero 2014, 21:16:35 »
He probado con el operador Create Copies from Polygon Mesh apoyado por un Transform per Copy para posicionar las instancias en cada poligono de la geometría base. He conseguido "fijar" las instancias al Transform y al Rotation del dodecaedro, y que tomen la normal de cada poligono para su dirección, pero me faltaría poder controlar el vector local Y de las instancias, y no veo como hacerlo.
Aun así creo que no me serviría, ya que un mismo valor de rotación en Y de cada instancia no haría que tomen la orientación que busco. Lo suyo sería que cada grupo de 5 instancias apunten a cada centro de cada pentágono (puntos en blanco), pero me queda grande como llevar a cabo esto.
« Última modificación: 25 Febrero 2014, 21:49:59 por Unaided »