XSIforum.com

Control para orientación de partículas individualmente

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

Unaided

  • ***
  • 3293
Control para orientación de partículas individualmente
« en: 16 Febrero 2014, 19:42:40 »
Necesito poder controlar la orientación de cada partícula individualmente, pero no se me ocurre cómo hacerlo.
Estaba pensando en coger el id de cada una de ellas y asignarle un Rotation por cada una. Son 30 partículas, por lo que debería tener 30 controles de rotación.

Re:Control para orientación de partículas individualmente
« Respuesta #1 en: 16 Febrero 2014, 19:56:50 »
Hey Unaided,
Si eso es lo que quieres yo haría un group de 30 nulls y usaría un select in array usando el id de cada partícula para asignar la rotación del null respectivo. Dicho esto, es muy probable que exista una forma algo más genérica de lograr lo que quieres.

Puedes darnos más detalles sobre lo que quieres lograr? (y no tan solo el como)

Unaided

  • ***
  • 3293
Re:Control para orientación de partículas individualmente
« Respuesta #2 en: 16 Febrero 2014, 21:40:40 »


Este es un ejemplo simplificado de lo que estoy haciendo, y necesito disponer de un control de rotación para cada partícula.

Entiendo que los nulls que formarían parte de ese grupo no importa su posición, o debo posicionarlos además en cada partícula?

Re:Control para orientación de partículas individualmente
« Respuesta #3 en: 16 Febrero 2014, 22:41:38 »
Mola, pero no me dices que es lo que quieres resolver sino como pretendes hacerlo :)

De todas formas te doy mi opinión:

Si sólo necesitas posicionar/alinear elementos de forma estática, es decir, no necesitas que sigan a la base sobre la que sitúas los elementos y/o se adapten a cambios de topología, lo mismo es más cómodo hacer el scatter a nivel de objetos (probablemente mediante scripting) y ya luego ajustar la orientación de cada elemento si hiciera falta.

Ahora bien, si necesitas que sea dinámico y quieres intentarlo de forma centralizada mediante partículas yo lo que haría sería dar la posibilidad de hacer modificaciones pero no forzarlas dando 1 control por cada punto, en la práctica probablemente de esos "30 offsets" sólo querrás ajustar algunos cuando la orientación base falle en X excepción, de esta forma además el sistema tiende a ser menos rígido y te dará más juego para probar otras cosas (por ejemplo en la captura estoy usando un test inside null para filtrar el offset, aunque bien podrías especificar un offset para cada id de forma manual).

El compound es una especie de sandwich donde: crea las partículas e inicializa un array de rotaciones (1 por partícula), permite que el usuario conecte executes (aka 'modifiers') para que pueda ajustar esos offsets y finalmente añade el array de offsets a las partículas. Es un ejemplo tonto pero lo mismo aporta otro enfoque para el mismo problema.

Un saludo
« Última modificación: 16 Febrero 2014, 22:47:17 por Cesar Saez »

Unaided

  • ***
  • 3293
Re:Control para orientación de partículas individualmente
« Respuesta #4 en: 17 Febrero 2014, 07:36:16 »
Lo pruebo. Gracias César!

No obstante, a simple vista veo un grado de complejidad alto en el procedimiento que has construido. No sé si para lo que busco, poder controlar la orientación de cada partícula individualmente, es necesario de cualquier modo ese nivel de complejidad. Quiero decir, con el compound 'de fabrica' EmitFromPosition, no habría manera simple de controlar esa rotación de particulas individualmente?

Intenté con un Select In Array y un grupo de nulls como exponías, pero he sabido "vincular" cada null a un id de partícula.

Hice otra prueba con un Find in Array con la que si llego a vincular cada particula con el kine.local.roty de cada null (haciendolo a mano, null1 con particula11, null2 con particula27,...), pero no se me ocurre como "individualizar" la orientación del EmitFromPosition.


Unaided

  • ***
  • 3293
Re:Control para orientación de partículas individualmente
« Respuesta #5 en: 17 Febrero 2014, 10:50:05 »
En tu ejemplo César, la asignación de particulas al control de rotación la haces por influencia/escala del null, por lo que parece.

Lo que busco es poder rotar cada partícula con un control asignado a cada una, sea con el local.roty de un null o bien con un operador Rotation por partícula.

agedito

  • ***
  • 1524
  • ¡¡Yo lo que quiero es milonguear!!
Re:Control para orientación de partículas individualmente
« Respuesta #6 en: 17 Febrero 2014, 11:02:35 »
Depende mucho de qué quieras hacer, no es lo mismo si quieres tener partes manuales partes automáticas o todo manual. Si quieres que el control lo decida el usarui cuando más le convenga o ya están definidos desde el principio...

Unaided

  • ***
  • 3293
Re:Control para orientación de partículas individualmente
« Respuesta #7 en: 17 Febrero 2014, 13:46:21 »
Pues, el único control que quiero manual es de la rotación de cada partícula, y que el control esté definido desde el principio, que no el valor de rotación. No sería una herramienta para usuario, es solo para la mi.

Re:Control para orientación de partículas individualmente
« Respuesta #8 en: 17 Febrero 2014, 18:26:01 »
Si lo del set in array añade demasiada complejidad y no necesitarás controlar las partículas como un todo (el comportamiento de una depende de otra o cosas asi), yo pasaría de partículas y lo implementaría como constraint a nivel de objeto (ICE Kinematics), de esa forma tendrás rotaciones libres para animar o hacer lo que quieras.

Unaided

  • ***
  • 3293
Re:Control para orientación de partículas individualmente
« Respuesta #9 en: 17 Febrero 2014, 22:45:07 »
Si, lo he hecho con un pointcloud para instanciar un objeto en puntos, pero diría que versiones actuales, ICE puede clonar o instanciar geometría sin usar un emisor de partículas, o no sé si me estaré equivocando.  De lagoa creo haber utilizado en otras ocasiones un copy al estilo Houdini.
Pero si, realmente no necesito partículas.