Copy Particles to Rigid Bodies

Hi, as Bullet is now integrated and finally in trunk I thought of updating this little script. It is a quick way to populate a RB simulation that takes a particle system as a reference to generate the simulation… Just set up the particle system to emit a rigid body object -or a group of them- and that’s all you need. Hope you can have some fun with this.

2.80 version: https://www.dropbox.com/s/ks7us38zzpl52eg/copy_particles_to_sim_280.py?dl=1

2.79 version: https://www.dropbox.com/s/3wc1vc23mg310nj/copy_particles_to_sim.py?dl=1

edit: a simple testfile added, run script and press button
https://www.dropbox.com/s/svxezk2cr7vryee/testfile.blend?dl=1

1 Like

Thank you, liero! You and sergof are doing a great work with bullet GSoc! Thank you!
This option related to particles is very handy!
There’s a bug with animated checkbox in physics tab… But I’m sure it will be fixed soon, then I’ll try your add-on.
Thank you agin!!!

Hi Eversimo, happy to see Bullet integration in trunk too, but I had absolutely nothing to do with it so cheers to developers!
A powerful feature and pretty easy to use, but if you face the need of some advanced setups a minimal knowledge of python will really help -as we have no parametrical cloners or effectors here… yet?-

Liero,

I have some issues understanding how to use the script.

I have a scene with a collision object a particle emitting surface and a RB cube that is being used as the geometry object for the particles.

I copied your script into the text editor and ran it, but nothing changes.

Only my RB cube acts like it and all other particle cubes act as particles but not RB. Any tip or idea?

Here is a scene file if you want to take a look at it:
CloudApp

Sorry… wrong thread. Woops.

hi cekuhnen, run script or install and you’ll see an extra tab in tool-shelf with a ‘copy particles’ button… just updated the file btw

select your emiter and hit the ‘copy’ button, if particles are set as render unborn they will be visible, otherwise they will be hidden until emision time

this little script tries to copy transformations, initial speed and born time from each particle, and the mesh and rigid body settings from dupliobject… I remember your old corn project, just did a quick test here and it is not that easy to get a nice arc with particles following the path, everything looks more chaotic, but shouldn’t be too difficult to get it working

Argh - that project is what I was trying to update. Darn. I get some more than chaotic results.

My former particle cubes move a little and then stop, while the master rigged body cube falls down nicely.


WOW… Just played a bit with this and I can’t believe we actually have rigid body particles. But it leads me to a number of questions

  1. once you set up your particle system and copy the particles, is there anyway to tweek your particle settings after copying? If so, what is the proper work flow. It would be so nice to even have some kind of way to make changes to the particle set up and then tell it to redue the copy.

  2. What I noticed is I tried to delete the particle emmitter… thinking it would delete the particles (this was after copying) but even after deleating the emmitter the particles still remain

  3. After copying… can you make any changes to settings of the rigid body object that is used to generate the particles. The reason I ask is sometimes the RB particle objects might not land correctly on the surface (usually due to margin settings or choosing the wrong type of rigid body) or there are stability problems. Is it possible to change the RB settings to the main RB object, or can I make changes to the container or floor the particles are landing on after doing the copy particles.

  4. Finally… Oh I so hoped I could use curve guides with this, but I tried a set up and the particles would not release from the emmitter, after adding the curve guide… didn’t try incorporating any other forces. Do you think it would be possible to get curve guides /forces to work in conjunction with this most excellent add on?

Thanks so much Liero, this script is just wonderful!

glad you had some fun :stuck_out_tongue: the script will just hide the emiter and create a rigid body for each particle, trying to emulate their original values… there is some weird stuff with rotations I should try to fix, also see if it can be faster

anyway, to modify all particles settings use the ‘copy from active’ operator from toolshelf, or the ‘copy to selected’ on your right click menu for individual values… also all object share their data, so you only need to edit one mesh

all particles are parented to an empty so you can easily move or rotate the entire simulation… or just Shift+G > select children and delete them

some day we will have real stuff going, but curve guides should come earlier -some force fields already affect rigid bodies-

and a tip: you should always enable ‘Split Impulse’ in World settings to have a clean emision of objects

Great work, thank You!!!

Test render of Liero’s very cool new script that gives us Rigid body particles. in the new bullet integration … Just lovin it , looking forward to being able to use curve guides for even more control (fingers crossed)

Maybe I do something wrong here, but my particles converted into rigged bodies turn out into cubes that move a bit and then stop floating in space instead of behaving like cubes that got an acceleration and then drop down onto the ground plane.

Here is a blend file.

CloudApp

I’ve tested your file here and I see them being thrown and sometimes they loose the influence of the start impulse… but they are frigging on the ground crazily…

I confirm the problem with my own file with latest trunk svn(54186)
What I THINK:
The problem seems to be subframes, the keyframes are spread into the timeline but they’re not “snapped” to the frame number, they’re sliding a little increasing the slide during the time… causing the “issue” that makes the initial motion won’t affect the impulse of the rigid bodies…
THE FIX:
Just select all rigid bodies an go to dope sheet;
Select all keyframes and move them one frame to any side and confirm, make sure that automatic time snapping is set to “nearest frame”;
This will force all keyframes to snap to near keyframe… duh…
Try with my file:
(sorry, I’m still learning English…)

http://www.pasteall.org/blend/19127

cekuhnen I think you should avoid simulating such small objects, try scaling meshes up x10? also reset collision margins
eversimo thanks for taking the time to help on this, will give a look to that time issues, and try to improve things a bit

edit: added a simple fix -some time rounding- hope it helps

so object size matters here? I will give it a try!

hi! This is a really interesting script! Thanks a lot for it!

I have some question… does it work on builds without bullet integration? Im on a mac and I get an error when I try to convert a particles emitter with cubes instanced as particles… It says that object has no attribute ‘rigid body’. I am using blender 2.65.

Thanks!

hi Sdados, you’re right, need a recent build to test this script… or just wait for 2.66
then just download example, run script and set speed and time to 3 to see if it works

ok liero thanks a lot for the answer! I have to use the mac at work and im a little noob with that :smiley: Moreover right now I am without my desktop at home. Anyway tomorrow I will check if there is some newer build for macos, otherwise I will have to wait for 2.66 (but I hope it won’t be long)

liero, absolutely awesome script and test file! I’m amazed at the completely new possibilities your script adds to this…this should be in trunk or adapted to C and incorporated into blender… Thanks so much for this!!!

This script is awesome! Just what I was looking for. A small test I did: http://www.youtube.com/watch?v=d99dLbM4eGY

One thing that I would appreciate if possible is for the particle clones to inherit the display properties of the parent. Because the geometry that got displayed when I increased the coin amount started slowing Blender down a lot. I tried displaying the parent as a bounding box but the particles did not inherit it.