BirthID Order of Actor Particles
#1
Hello I have two tyflow actors, one is a cat rig, the other is a series of unlinked helper objects (which represent the bones of the cat rig in an unconnected state).

I wish to have particles spawned at the helper objects track to the appropriate bone on the cat rig but as they have a different hierarchy their BirthID's aren't in the same order so I can't set their targets via using an offset value.

Is there a way to create the particles of an actor in the alphabetical order they appear in the Actor objects so they are consistent?

Or can someone suggest another way to approach this?

Thank you
  Reply
#2
Can't you set target by proximity, if the layout matches (even though the IDs are different)?
  Reply
#3
(07-16-2024, 05:13 PM)tyFlow Wrote: Can't you set target by proximity, if the layout matches (even though the IDs are different)?



No the helper objects are scattered about the scene so that the bones of the rig form into the character
  Reply
#4
I guess I'd need to see screenshots or something to better understand what you're trying to do.
  Reply
#5
Sure,

There's a cat rig, and underneath that is the spawn positions for the bone particles. They're spawned under the ground and then need to seek their matching bones which are following an animation. But they don't have the same hierarchy so are spawned in a different order and will not currently seek the correct bone.

The flow will work when using the starting positions in the currently greyed out event "Spawn Starting Positions" as the actors have the same hierarchy, so I could move them between two similarly linked characters. But will not work with the version I need where they bones are each unlinked "Spawn Unlinked Starting Positions".


Attached Files Thumbnail(s)
       
  Reply
#6
Hmm, you could try using a tyProperties modifier to achieve that result. Select each pair of matching meshes and assign a shared tyProperties modifier to them and then assign a unique property value to each pair (this process could be sped up with MAXScript). Then, assign targets by matching cluster value to have them link to their corresponding partner particle.

Attached is a scene file you can use to test this idea. Open it and then select each pair of objects, and after each time you select a pair, run this script:

Code:
global matchInx
if (matchInx == undefined) then
(
matchInx = 0
)

max modify mode

m = undefined
for obj in selection do
(
if (m == undefined) then
(
m = typroperties()
)
addmodifier obj m
)

select selection
m.addnewlistitem()
m.customfloatvalue = matchInx

matchInx += 1

for obj in $*tyflow* do
(
try(obj.reset_simulation())catch()
)

You should see the pairs conjoin as you set their custom float overrides through the tyProperties modifiers.


Attached Files
.max   matching.max (Size: 680 KB / Downloads: 40)
  Reply
#7
Okay I've tested that and it seems like it would allow me to do what I need so thanks very much. I'll try and implement is properly tomorrow, I appreciate the help.

Cheers
  Reply


Forum Jump: