XSIforum.com

Orientación individual de copias por edges.

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

Unaided

  • ***
  • 3293
Orientación individual de copias por edges.
« en: 17 Julio 2014, 15:46:22 »
Tengo que alinear una geoemtría con forma trapezoidal que he posicionado sobre poligonos a través de su normal, de forma que quede uno de sus lados paralelo a uno de los lados de cada triángulo.

Se me ocurren dos modos, pero no veo como construir el procedimiento.
Un modo sería obteniendo los edges más largos, tanto de cada triangulo como de cada copia. Podría hacer clusters, solo de esos lados, con lo que ya no debería buscar el lado más largo, pero igualmente, ¿cómo hacer un "constraint" de paralelismo?

Otro modo que también me serviría, sería tocar la orientación de cada copia de forma individual (manteniendo su alineación con la normal), y rotaría manualemente cada una de ellas.

En la captura, cada boundarie de edges desconectados (cyan) corresponden a triangulos formados por polygonos coplanares. Las lineas verdes representan la orientación de cada trapecio y el lado largo del triangulo.

Si lo pudiera hacer si tener que recurrir al uso de pointclouds mejor que mejor.

Unaided

  • ***
  • 3293
Re:Orientación individual de copias por edges.
« Respuesta #1 en: 17 Julio 2014, 22:38:09 »
He reproducido lo mismo pero hecho con pointcluoud y particulas.

He llegado a tener un control por ID sobre la orientación de cada partícula. Esto supondría lo mismo que orientar a mano cada copia en el caso anterior, pero aunque sea tedioso, lo tendré que hacer así.

Ahora bien, evaluando el ID de una partícula y afectando a su orientación, no entiendo por qué me duplica la partícula (o la instancia) y veo la partícula con la antigua orientación también.

Re:Orientación individual de copias por edges.
« Respuesta #2 en: 18 Julio 2014, 05:51:01 »
Hey Unaided,

Tienes que pensar de "forma procedural". Te he montado un ejemplo muy simple donde las partículas se alinean según el edge de mayor longitud, para ello resto los vértices del polígono correspondiente obteniendo los edges (asumo que la malla está triangulada), selecciono el vector de mayor longitud y lo conecto junto a la normal del polígono correspondiente a un "direction to rotation" para determinar la orientación de cada partícula.



Espero que esto ayude :)

Unaided

  • ***
  • 3293
Re:Orientación individual de copias por edges.
« Respuesta #3 en: 18 Julio 2014, 07:23:48 »
Muchas gracias César! Me lo miro enseguida.

Al respecto de la malla tringulizada, en mi caso parto de una mesh en la que son solo triangulos, pero que he subdividido (type Diamond) para poder tener más de una particula por triángulo. Estoy usando un emit from position > polygonPosition.

Esto seguramente haga que se alineen con el lado más largo de los polys interiores a cada triángulo (island). La alineación debe ser solo con los edges del triángulo.

Para que tu método sea válido debo encontrar como emitir más de una partícula por triángulo (sin subdividir), y distribuir estas en cada uno.

Re:Orientación individual de copias por edges.
« Respuesta #4 en: 18 Julio 2014, 07:49:58 »
Pues tienes 2 opciones: o usas los vértices del island correspondiente en lugar del polígono (la lógica debería ser exactamente igual a la del ejemplo, sólo cambia el "input") o bien haces como el ejemplo y luego clonas+trasladas las partículas (determinas los 3 triángulos internos usando el PolygonPosition o punto central y luego promedias la posición de esos vértices determinando la posición de los clones).

Unaided

  • ***
  • 3293
Re:Orientación individual de copias por edges.
« Respuesta #5 en: 18 Julio 2014, 17:26:24 »
Bueno, al final la parte de orientación de cada instancia la he hecho manualmente. Seleccionando polyislands y rotando en ref.mode con planos temporales usando pick polygon.

Contaba con tres copias por triángulo y debía alinear cada una de forma que su distribución pareciese aleatoria, aunque con uno de los lados del trapecio alineado a uno de los lados del triángulo  (por tanto no tenía porque coincidir con el más largo.

Es un tanto estupido intentar querer alinear trapecios en triángulos, y sobre todo querer mostrar una percepción de orden con esas características geométricas. En fin, cosas de los que mandan.

De tu procedimiento, ¿por qué las operaciones de resta? Según comentabas, para quedarte con los edges, pero ¿no se puede obtener los edges de un polígono con un GetData del mismo modo que un PointPosition?
                                                         
Por otro lado, entre las herramientas de selección hay un "select contorn edges from selection".

Construir un procedimiento en ICE para que obtenga los edges solo del contorno dado una isla, y los indexe dado un ángulo, no debe ser sencillo imagino.             
Estoy pensando en un triángulo con divisiones y en el select edge loop with no corners.

Re:Orientación individual de copias por edges.
« Respuesta #6 en: 18 Julio 2014, 18:42:12 »
De tu procedimiento, ¿por qué las operaciones de resta? Según comentabas, para quedarte con los edges, pero ¿no se puede obtener los edges de un polígono con un GetData del mismo modo que un PointPosition?
Porque no estoy buscando la posición del edge. Estoy construyendo un vector que va desde un vértice al otro, de esa forma puedo consultar su longitud y usar su orientación para lograr el paralelismo.