View Full Version : R8 :: HOWTO :: Thinking Particles
JoshM 10-03-2002, 10:44 PM A more thorough version (http://www.maxoncomputer.com/index.asp?tutorialID=226) of this tutorial is now available at MAXON's website.
Thinking Particles is a lot different from the old C4D particle system but has A LOT more power. Here is a basic way to create an emitter. (it might be a good idea to look over the Xpresso tips since Thinking Particles is all handled through Xpresso)
Create a Null Object and rename it 'Emitter', this object's position and alignment will control the emitter. Create a Xpresso tag for the object (New Expression=>Xpresso Tag) and then d&d the Emitter object into the Xpresso editor. Create a Global Position output for the node (by clicking the top red square of the node and then go to Coordinates=>Global Position=>Global Position) and also a Global Matrix output as well.
Create a PStorm node (TP's emitter). This PStorm is accessible by going to the X-Pool Manager and then to System Operaters=>Thinking Particles=>TP Generator=>PStorm (all TP nodes are stored in this directory) and then dragging the text into the Xpresso Editor, a PStorm node should be created. On the PStorm node create an Emitter Alignment input (the same way an output is created) and then connect the Global Position output to the Emitter Position input. Also connect the Gloabl Matrix output to the Emitter Alignment input. Now you can control the emitter throuh the Null Object.
Its always a good idea to assign particles to a group, so create a Particle Birth output for the PStorm node and then create a PGroup node (Thinking Particles=>TP Standard=>PGroup). Connect the Particle Birth output to the Particle input of the PGroup. Untill specified, the particles will be assigned to all groups. To chagne this open the Thinking Particles settings dialog from the Xpresso editor go to Custom=>Thinking Particles=>Settings... Right click on the All text (CMND+Click, Mac) and choose Add. A group will be added as a child of the All group. To change the settings of the group right click (CMND+Click, Mac) and choose Settings. Rename the group to Emitter and change the Color (if you want). Select the PGroup node and then you want to d&d the Emitter group to the Group link in the AM.
Don't be alarmed by all the steps it takes to create an emitter, because once you start to understand Thinking Particles it becomes very intuitive and its an awesome way to work with particles IMHO. More to follow...
|
|
JoshM
10-04-2002, 05:08 AM
This is based off of the previous post but I just want to show the Motion Inheritance node. It only takes 2 nodes to setup, and I'm pretty sure that no other particle system has this. Well here we go..
Start by creating a Null Object and then rename it 'Inherit Motion'. The particles will inherit the motion from this object. Make the Project Settings Maximum to 150F. Create a keyframe for the B-axis at 0 degrees at frame 0. At frame 150 set a keyframe for the B-axis at 1080 degrees.
Now its time for the node stuff. Create a PPass node (Thinking Particles=>TP Initiator=>PPass) and also the PMotionInheritance node (Thinking Particles=>TP Dynamic=>PMotionInheritance). The PPass node passes all of a particle groups info (Position, Alignment, Velocity, etc.), its used for all of the Dynamic operators. Connect the Particle output of the PPass node to the Particle input of the PMotionInheritance node. Select the PPass node then D&D the Emitter group from the Thinking Particles settings dialog to the Group link in the AM. Play the animation, the particles still don't inherit the motion of the null object. Well, let's fix that.
Select the PMotionInheritance node and look at all of the attributes in the AM for this node, pretty powerful huh? D&D the Inherit Motion object into the Object link. Change the Inheritance to 50% (Inheritance is pretty much the amount of inheritance the particles will recieve, so our particles will inherit half of the motion from the object) and then play the animation. Simple yet effective.
NOTE: You may want to select the PStorm node and in the AM change the Life to 150 and the speed to 250. More to follow...
Per-Anders
10-06-2002, 01:56 AM
thinking particles is very powerful, as can be seen here, where i've emulated maya's softbodies technique using thinking particles...
http://www.peranders.com/c4d8/softbody.c4d
and the movie preview
http://www.peranders.com/c4d8/preview.mov
enjoy :)
LucentDreams
10-06-2002, 07:11 AM
stills needs a fair bit of work, but funny this is something I mentioned to another beta tester to try, since everyone keeps talking about how great Maya's dynamic system is, and it uses particles on the points to contol the dynamics and calculate much fater, I figured why can't we do that. I was thinking more along the lines of an expression and fizz in XL 7, but TP in R8 makes even more sense. can't wait too see more tests of this.
Per-Anders
10-06-2002, 07:21 AM
did you download the c4d file? you can control tension through the original object to make it more slack (the movie is quite taught)...so there's some degree of control, and of course it would be easy to customize this a bit further, for instance with self collisions, that wouldn't be very hard. but a better thing would be if someone could figure out a way of retaining volume. for the moment though it's only good enough for producing cloth and a certain ammount of character jiggle in parts of characters that aren't easy to bone with softik, or simple to get collision detection onto softik figures. also for things like tiny bubbles or beads of water... hmm well i guess i should learn not to say "it's only good for..." as there's always a million and one uses. anyhow if other poeple feel like playing around with this more to make it a better simulation, please do :). the benifits of this system is that it's realtime for softbodies... wheras dynamics (with collision)... isn't really.
ollle
10-06-2002, 08:17 AM
Originally posted by mdme_sadie
thinking particles is very powerful, as can be seen here, where i've emulated maya's softbodies technique using thinking particles...
http://www.peranders.com/c4d8/softbody.c4d
and the movie preview
http://www.peranders.com/c4d8/preview.mov
enjoy :)
The downloaded file (c4d) can't be opened by Cinema...
olle
LucentDreams
10-06-2002, 08:42 AM
in R8? Opens fine here.
JoshM
10-06-2002, 09:30 AM
Thats weird, i'm running R8 here but I get "Unknown File Format" for the C4D file.
Hi,
me too. It seems the file gets corrupted during download. Maybe we can get a zipped version?
Regards
Srek
Per-Anders
10-06-2002, 05:20 PM
ok, cos it was getting corrupted on the way :-< here's the new softbody file.
http://www.peranders.com/c4d8/tpsoftbody.zip
i hope that noe you'll be able to play around with it. the tension control is on the "original object" just press play and move that baby around :) of course it could be better with certain parts being tighter, and haveing more control... for instance a couple more controls over the tension so you could get different effects, and of course some way of faking volume... and of course as i mentioned before self collision, but that should be simply a matter of putting a library tpcollision object into the scene, dragging the softboy object into that, and setting the offset to be a negative figure slightly (so it doesn't constantly repel itself). also if it could use tags for tension... vertex maps would be ideal, but selection tags would also be good.
How do I use images or material BaseChannels in Xpresso?
darf - bhodiNUT
Per-Anders
10-07-2002, 05:01 AM
You can make a user input of an texture (but it seems to only accept images) on an object, and then use that as an input... however i haven't the faintest idea how you access uv information accross the image :/ on a side note it would seem that as far as textures are concerned becase expresso is evaluated over time rather than on a per ray basis textures are currently out of the question :( but mebbe that'll change, or perhaps someone can set me right on that.
Originally posted by mdme_sadie
You can make a user input of an texture (but it seems to only accept images) on an object, and then use that as an input... however i haven't the faintest idea how you access uv information accross the image :/ on a side note it would seem that as far as textures are concerned becase expresso is evaluated over time rather than on a per ray basis textures are currently out of the question :( but mebbe that'll change, or perhaps someone can set me right on that.
Just prodding MAXON to deliver the SDK that would give me the ability to create my own Xpresso nodes eliminating the need to explain why or how things should be done. There is alot that Xpresso and TP cannot do in functionality as well as interactivity. I would like to fill those gaps ( as I can given the appropriate information, proof is in the pudding and there is alot of pudding ). The idea is to implement Xpresso nodes to communicate with the new JENNA engine as well as the new shading and texturing engine. Maybe when v8 actually ships? Wait, has it shipped? Can someone explain what this whole deal is? :hmm:
darf
Per-Anders
10-07-2002, 05:33 AM
i think there's most of the librarys for the sdk with the early bird... lemme just look.. oh yeah. inside of the resource folder is the api... of course no documentation, but it's a start. :/ though you already know all this... but mebbe those that got their early birds and program didnt check out the other folders.
Originally posted by mdme_sadie
i think there's most of the librarys for the sdk with the early bird... lemme just look.. oh yeah. inside of the resource folder is the api... of course no documentation, but it's a start. :/ though you already know all this... but mebbe those that got their early birds and program didnt check out the other folders.
I am specifically on a mission to get the information ( documentation and examples ) I need to write the Xpresso nodes. For the moment this is not something I can do for a lack of information. Come on MAXON open up the playground so we can fill the holes. This is as important to you as it is us.
David Farmer
Per-Anders
10-07-2002, 04:52 PM
I agree... i've mentioned on the boards several times how useful it would be to have a complete well written SDK documentation set for C++ and COFFEE, and how benificial this would be to both us the users, us as the community and Maxon.
I'm right behind you on this one David.
Per-Anders Edwards
AdamT
10-07-2002, 04:57 PM
Yo yo yo, give up the SDK docs!!
Did that help?
Per-Anders
10-07-2002, 09:54 PM
yeah... i figure, if we start out from the embarcadero, then make our way down market street, before coming to the city hall...
Mike Hooma
10-09-2002, 03:57 AM
mdme sadie could you try making a clothing simulation with TP please :)
Per-Anders
10-09-2002, 04:24 AM
a clothing simulation?!?! i'm not sure tp is the full way to go with that, especially without selection tags/vertex maps to make areas less or more rigid... but you can basically use the tp example i made to try... hmm, well i'll give it a shot, but there's no guarantees
Mike Hooma
10-09-2002, 04:36 AM
I have to wait for final release to get my upgrade, so yeah I don't really know what I'm asking, it just looks like it can be done after seeing your softbody sim :bounce: I hope it can!
Per-Anders
10-09-2002, 05:21 AM
hmm... well, you can certainly give soft objects collision detection, but after that it's a bit hit and miss... right now there's no way to get selection tag o vertex map info into xpresso, also i've discovered that the turbulence in tp wind is in fact a static 3d turbulence field. this basically means that in order to quickly simulate softbodies you end up having to get the vertex normals of the points, which is not really possible but you can get poly normals... so mebbe polys is the way to go instead, the reason you need the normals before i forget is so that you can work out the "cloths" attitude to the wind normal, because a face edge on to the wind will be blown less than one face on, which is why you get those nice ripples... which if tp wind turbulence had a vector you might be able to fake by moving the turbulence position over time (like you can with bhodinut 3d noise).
Per-Anders
10-09-2002, 05:26 AM
oh... i just discovered that you cant set a polygon's properties either (centre point or normal)... oh well that puts that idea out of action.. mebbe maxon might allow this in the finished product, or mebbe a third party will produce these much needed nodes.
JoshM
10-09-2002, 06:17 AM
I haven't looked at your softbody tp example in depth yet but you can access a point selection tag through the PSurfacePosition node. I am not exactly sure how you have your nodes setup but you might be able to use that node for point/poly selections. It might be worth while to check it out.
BTW that softbody setup is awesome, I never thought that TP could be used by that.
Per-Anders
10-09-2002, 09:39 PM
thanks, i'll look into it. what i really want is a uv tag, so i can access the points immediately around my current point for instance and work out facing angle etc from there, also good for making liquid stuff, and cohesion, as currently you can't do that (check my site for a sample of that and you'll see jelly like liquids from tp). also a uv node would just be so useful for accessing info on images and textures... everything in fact.
JoshM
10-10-2002, 07:21 PM
Originally posted by mdme_sadie
also good for making liquid stuff, and cohesion, as currently you can't do that (check my site for a sample of that and you'll see jelly like liquids from tp).
Maybe I missed this somewhere, but where is your site? I would like to check those out.
Per-Anders
10-10-2002, 07:23 PM
just go to http://www.peranders.com/c4d8/
there click the link to the new thinking particles liquids tests
this area of the site is still in a very early construction phase as i only started work on it the day before yesterday, and there's only one tutorial in there etc.
pingo
10-24-2002, 12:48 AM
ok, I've made the emitter. How do I make it emit objects, instead of... nothing:bounce:
Per-Anders
10-24-2002, 12:56 AM
add a pshape node to your newtork, and connect the output of a ppass node (which has your group in it) to it's input, then using the attributes manager, just drag and drop an object you want to use into the box marked object. then go to plugins->thinking particles->Particle Geometry, then drag and drop your particle group (from the thinking particles settings) into it's Group box in the attributes manager.
Are there any examples of the TP PBorn Node?
Also, if anyone wants custom Xpresso / TP Nodes please post in at forum.bhodinut.com in the general forum. The sooner the better.
darf
JoshM
10-25-2002, 06:00 AM
Originally posted by darf
Are there any examples of the TP PBorn Node?
Unfortunately, there are not any examples using the PBorn node at this time. If you want, I could make a few examples showing what it does. Its manly used for surface emission and fragmentation.
Also, if anyone wants custom Xpresso / TP Nodes please post in at forum.bhodinut.com in the general forum. The sooner the better
darf
Alright, will do.
pingo
10-26-2002, 02:51 AM
Now I've made the emitter create spheres (or whatever I guess). So... how do I emit them from an object surface?... something with a PSursface Position... Anyone?:hmm:
Per-Anders
10-26-2002, 03:00 AM
you need three nodes
start off by making a PPass node, and set that node to the particle group of your emitter (the same way you set the particle group of a PGroup Node, i hope you've been good and set that to be a group...). anyhow, then you need a PSurface position node, which you connect the output of the PPass node to, then make sure that position is an output on that node, select teh Psurface position node and in the attributes manager drag and drop the object you want to emit from into the availbale slot. Next you will need a PSetData node, connect the output from the PPass node straight in , then make a new input on the PSetData node to be Position, and connect the Position output from the PSurface Position node, to the Position input on the PSet Data... so now your particles will be on the surface of your object... the next thing would be to use a PAge node connected to an "On" input on the PSet Data node, to make it so that the particles jus start out from the surfface, but move on at their own accord... you can also set the other attributes from the output of the PSurface postiion node, to the PSet data node so that the particles move in the direction of the surface that they're emitted from... jeez thta't was complex, but maybe you can go through that and it'll help you out... :)
pingo
10-26-2002, 03:55 AM
Jeez, it works perfect (and yes, I've been good and made groups;) so now the particles stick, and that's actually what I needed for now, but you made me curious: I made the PAge node, and connected it to a new On port in the PSetData node, but it makes the particles emit from the original emitter again... It must also need some kind of inpotfrom the cube... or?
I really apreciate your help on this. I don't know how you figure all of this out. THANKS so far:applause:
pingo
10-26-2002, 09:19 PM
Hi everyone.
I've followed this thread with great interest. Thanks to everybody, I can now get on with a project I was working on.
I have however encountered a very odd problem, with an object emitter. The c4d (release 8) file is unfortunately to big to upload (only 64kb ???), but I would be happy to mail it to anyone who would be interested in cracking some nuts:p
again thanks y'all, beers are on me:beer:
cheers
pingo
Hi,
no problem, send it to me
srek @ bonkers.de
with a description of your problem and i'll have a look.
Regards
Srek
PS
I prefer Licher Export :)
huijiao2001
12-13-2003, 07:56 AM
OUTDO MAYAS SOFTBODY
CGTalk Moderation
01-13-2006, 06:00 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.
vBulletin v3.0.5, Copyright ©2000-2012, Jelsoft Enterprises Ltd.