Orbit POP: how do I use a line as the center?

   10423   13   2
User Avatar
Member
27 posts
Joined: July 2005
Offline
I'm just learning Houdini (this is my first post here) so I'm hoping someone will find this question obvious and help me out…

The Orbit POP has many different center types, but they all seem to be ways to define a point about which everything orbits. But what if I want everything to orbit about the axis without introducing axial motion, to simply orbit around a line? Like a stack of pancakes on a turntable…

Mike Anderson
User Avatar
Staff
1072 posts
Joined: July 2005
Offline
Each individual particle can orbit around a different center point. For example, try a default location and a default orbit. Set the orbit center to be the center point, turn on override center point, and set the z component to be $ID/100 and hit play. This results in the first particular orbit around (0, 0, 0.01), the second around (0, 0, 0.02), and so on.

Hopefully that can get you started.
User Avatar
Member
27 posts
Joined: July 2005
Offline
the answer turned out to be simple, but it still took some reading and trial & error to find it:

center_y=$TY

I just didn't expect that $TY would reference each individual particle's y position…

thanks for the lead!
User Avatar
Staff
1072 posts
Joined: July 2005
Offline
Ah. Using the MMB on the help icon in the parameter dialog pane for a pop will bring up a list of the local variables that pop can use. But don't spread that around
User Avatar
Member
225 posts
Joined: July 2005
Offline
Hi

Is it possible to localize the orbital axis via the use of normals?

Suppose I use a circle as the center for per particle orbit, how can I orbit the particles around say the tangent at each point along the curve. Try visualizing a smoke ring. Or is there an easier way to do this?

Thanks

Tallkien
User Avatar
Member
27 posts
Joined: July 2005
Offline
There is a Side Effects demo that demonstrates the orbit around the tangent of a spline very nicely. It's a tornado entitled “Vortex,” and maybe someone here can tell you where to find it. I got a copy from a friend and could post it to my own server if I hear on good authority that Side Effects won't mind.

I tried to make my own tornado by assigning point normals to samples on a spline, with some success, but I was flabbergasted when I discovered someone at Side Effects had built something with the same features, but built much more elegantly. I'm still learning from it.

The demo creates a curve with point normals pointing along the curve, and then uses it as input for two identical Source POPs. One Source POP goes to a Group POP whose group is the Orbit POP's center Group. The other goes to a Property POP, then an Upvector POP, then an Instance POP, then a Group POP (the source group for the Orbit POP). This chain of POPs describes the particles in orbit around the curve. The particles' axes are described in the Property POP's “Orbit” tab as $NX, $NY, $NZ, plus some noise. This works because the particles are birthed on the curve and take on the curve's normal. The Property Pop is also used to define the radius, speed, and orbit index. The Upvector POP defines the particles' individual upvectors according to the $OAXISX, $OAXISY, $OAXISZ defined in the Property POP. The two group POPs are combined in a Collect POP, then funneled into the Orbit POP.

Hope I didn't confuse you too much…I think I confused myself a little. So maybe I'll post that vortex.hip next time I check back here…

Mike
User Avatar
Member
225 posts
Joined: July 2005
Offline
Amazing coincidence (if there is such a thing) coz last night i was hacking the exact same demo

I wasn't aware that the source POP would carry along point normals if the existed on the source SOP, Some more of houdini's voodoo at work :wink: I figured the property and upVector pops would have some significant role to play in what I was trying to achieve, just went right past $N? :?

My previous company had ordered an eval of houdini5 some time ago so I was lucky to have access to the demo material. Lifeline for us n00bs

Anyway thanks a lot mikela, really appreciate it

One question though, couldn't quite understand the Orbit Index= $ORIGIN+1 bit
What exactly is the Orbit Index and how is it used?

Really wish more studios in India would start using Houdini 8) Just love it
User Avatar
Member
225 posts
Joined: July 2005
Offline
Has anyone tried animating the spline in the vortex demo? I get weird results. The particles suddenly decide to use the world origin as the center and everything goes out of whack :cry:

How is the curve supposed to be animated?
User Avatar
Member
3 posts
Joined: July 2005
Offline
I had also a look at this demo, but didn't played with it yet.
I should still be available at www.vislab.usyd.edu.au, but I don't know the exact url. (something like http://www.vislab.usyd.edu.au/sidefx/cd2_5.X.XXX, [vislab.usyd.edu.au] but can't remeber the exact version).

IIRC, the actual implentation of the POP network differs from the one suggested in the comments.
Instead of birthing 101 particles at each frame with a lifespan of 1 frame (so that the particles represent the current position of the curve), simply 101 particles get birthed at frame 1 with a lifespan of 100 secs.

Perhaps you can't animate the curve because of that?

Cheers
Jens
User Avatar
Member
225 posts
Joined: July 2005
Offline
IIRC, the actual implentation of the POP network differs from the one suggested in the comments.
Instead of birthing 101 particles at each frame with a lifespan of 1 frame (so that the particles represent the current position of the curve), simply 101 particles get birthed at frame 1 with a lifespan of 100 secs.

Yeah I figured that part out. The comments just were'nt making any sense. I modified the source to actually birth particles at each frame and live for one frame, so at any given frame the spline group has 101 particles that follow the animated curve closely enough( the count doesn't change so i assume thats ok). The problem is the particles' center. The orbitting particles no longer orbit around individual particles, instead they start orbitting around 0,0,0. This only happens if the spline is animated. I just added a simple xform before the carve_out sop. The Orbit Axis is behaving as expected (using $N?) . I have a feeling $T* also needs to be passed down, just not sure how or where.

will fool around some more and get back

thanks

tallkien
User Avatar
Member
48 posts
Joined: July 2005
Offline
So, the source1 group is not following transforms on the spline.

Anyhow, I'm assuming that if source1 will follow the translation, source2 will follow as well. Am I understanding this correctly?
User Avatar
Member
3 posts
Joined: July 2005
Offline
I just played around a little with it, and I think I got it to work (well kind of).
I removed the group1 node, and set instead in the source1 the birth group to ‘spline’ and impulse activation to constant 1,
and changed in the orbit1 node the orbit index from particle id to particle order,
and now the particles behave correctly when the spline curve is animated at SOP level (just added an xform directly after the model_spline_curve SOP).
The only thing is, during the first few frames a few particles go crazy, but after that, everything seems to work fine.
User Avatar
Member
225 posts
Joined: July 2005
Offline
cytox: Could you post it at odforce, I did the same things but wasn't getting the desired result

Thanks
User Avatar
Member
3 posts
Joined: July 2005
Offline
Sure, have a look here [odforce.net].
  • Quick Links