Need some advice
#1
Hi guys!
First off, this plugin is totally awesome !!!
Thanks alot!

Now to the reason for this Thread.
I need some help to set this up:

   

I've got a place where a bunch of Particles will lie around (the purple circle)
Then the wheel (green helpers) picks them up one by one.
One particle per helper. And then they need to get dropped into a tube.
How can I make this happen?
  Reply
#2
The next build has options for linking particles to other particles, which would most likely be the ideal solution to this problem. The build should be out sometime this weekend.
  Reply
#3
Just in time Big Grin

I've been playing around with this a bit but I can't seem to get it to do what it should.
A little scene with a basic setup for this would be highly appreciated.

I is there a way to control the max amount of linked particles per target particle?
  Reply
#4
I think my Problem is that I can't get Tyflow to set the target for a specific group of particles and also let them collide with the others.
I'm trying to use a collision test to set the target on particles that collided with an object. Then I want to use that target to bind the Particles to the object.
But now those Particles would need to still collide with the unbound ones to prevent other particles to take the same position.
But it doesn't work, it binds all particles to the object with this setup.


Attached Files Thumbnail(s)
   
  Reply
#5
I've got a working version in an A&D Scene which isn't applicable for my production scene unfortunately.
But it'll help to illustrate what I want to do.
This version works with forces.
I created a bunch of Motion field forces and linked them to the purple boxes they suck the particles in and help to keep them in.
As you can see, sometimes there are 2 particles in one box and the red plane separates them. The second one falls back into the reservoir. This is intentional, its one feature of the machine I'm trying to animate.
In my production scene, the wheel spins faster and the particles aren't perfect spheres, so this approach just refuses to work.
Keeping them in by forces doesn't seem to be reliable. I'd rather like to somehow link them to the boxes instead.



Here is this test scene in case somebody wants to take a look:
Its made in 2020.

.zip   TyflowTest02.zip (Size: 183.32 KB / Downloads: 258)
  Reply
#6
The next build contains a "Move to Target" operator that can be used to move particles directly to their target. Using that in combination with a Set Target (from neighbors) should allow you to accomplish what you want. You'll want to use Particle Physics for the inter-particle interactions of the pile and then de-activate particles on the wheel so they collide but don't move.
  Reply
#7
I see you've added the move to target operator, thanks alot.
I'm still a little bit lost, setting this up.
This is what I've got now:
   
It works quite well but I'm struggling to control how many blue particles can get linked to the green ones.
There should be at least one and max two particles linked.
I can control it by shrinking the radius of the set target operator.
But below some point I'll get green particles without blue ones and still some with more than 2.
Also, the first linked particle should sit exactly on the position of the green ones but the second should stick to the surface of the first one.
I was trying to use the Move to Target operator but it doesn't seem to do anything I think I'm doing something wrong.
When I use the Move to Target checkbox in the Set Target Operator, every particle will have the position, so when they hit the green box and get pushed into the next event they kind of explode into multiple red particles.
I dont know what you mean by "de-activate particles" how would I do that?
And last but not least, I'd need to be able to know which are the second linked particles to be able to unlink them and let them fall back into the pile. Like in the example above.

Here is the current state:

.zip   Tyflow_WheelLinking.zip (Size: 69.25 KB / Downloads: 275)

Excuse my ignorance, and thanks for your help!

EDIT: I managed to ensure only one particle is linked AND it's on the exact position of the green counterpart (by using the checkbox in the Link to target operator)
I had to raise the Time Steps to make it work.
Now I need to link another Particle to some and be able to drop that one back. Almost there Big Grin
  Reply
#8
I finally managed to make a working and scalable version!!

It looks like this:
   

In case somebody needs it sometime, here is the final RnD scene:
(Max 2020)

.zip   Tyflow_WheelLinkingFinal.zip (Size: 66.31 KB / Downloads: 253)

Thanks a million for this plugin!!
  Reply
#9
While this works, it's a pain to set up for the production scene.
The reason is the way I limit the amount of blue particles that can be linked to the green ones.
Its collision based.
The radius for the set target is smaller than a particle, so as soon as a particle is linked, its radius will prevent other particles from getting in the set target radius. But that's quite error-prone since it depends on the time steps and particle shape.
When the set target radius is too small I get empty green particles. If it's too big on the other hand, I get multiple linked blue particles per green particle.
And I always have to sim quite a bunch of frames to test if I hit the sweet spot.
Is there a way to limit the amount of linked particles per parent particle to one? That would make everything much easier!

And another Question: When I use PhysX particles with this setup. Do I have to raise the time steps or the PhysX substep to ensure the collision is called often enough to prevent other particles from geting in the set target radius?
EDIT: I can't make it work with physx: Either I get empty green particles or more than one in one . At least I have a fallback with none-regular particles.
  Reply
#10
There's not currently a way to limit the number of particles which can target another particle. You could parse all targets using a Script operator and do the assignments manually. A "target" is just the birthID of a particle assigned to a custom float channel, so it wouldn't be hard to do that type of calculation.

Alternatively you could use a Custom Property operator to assign a value to a particle's target which denotes that that particle is "chosen". Then turn on clustering in the Set Target operator to prevent other particles from choosing a target that has been assigned to another particle. However, that will only prevent other particles choosing it during the next time step, it won't prevent more than one particle from choosing it during the same time step (because the Custom Properties operator would be evaluated after Set Target). To elaborate: enter the name of a channel (all default values are 0) in the clustering parameters of the Set Target operator and choose "if equal" as the condition. Then after the Set Target operator, add a Custom Properties operator that's set to take values from a particle and assign them to the custom data channel of the particle's target, and assign any value other than 0. At the next time step, all particles chosen as targets will have some non-zero value in that channel, so particles looking for a target will exclude them.
  Reply


Forum Jump: