Search - User list
Full Version: Particle Flow Trajectory - Steel Wire Effect
Root » Technical Discussion » Particle Flow Trajectory - Steel Wire Effect
Ponge
Hey guys,
I'm a relatively new Houdini user, studying Visual Effects at university, and I'm looking to try and use Houdini to create a ‘wire sculpture’ effect similiar to this tutorial (which is for 3ds Max)

http://www.cgarena.com/freestuff/tutorials/max/pflow_splines/index.html [cgarena.com]

In that tutorial, particles are spawned and locked onto a surface and then moved around using various wind and turbulance parameters. A trail is then calculated from the particles positions which can be used to create a spline.

What I'm basically looking to do, is to recreate this effect on a growing l-system tree to create a ‘wire tree’, with each wire animated along the curve path

http://farm4.static.flickr.com/3140/2921580404_62f910f17a.jpg [farm4.static.flickr.com]

I'm still doing preliminary research so I've not tried this out yet, but I'm looking forward to getting into our studios and finally giving it a shot. I just wondered if anyone had any suggestions for techniques or particular nodes that I should look into to achieve this sort of animation?

Also, I've been looking into L-systems to create the tree geometry, and I had a question regarding animation the generations (to create a growing tree effect). If I add $F to the generations, I quite rightly get 1 new generation per frame. However this gives a very ‘stop motion animation’ effect, and I'm looking to get a much smoother transition between each generation. Is there something extra I need to do to achieve this?

Thanks,
Ponge
Okay, I've managed a very simple version of the scene…

It spawns a single particle which is then creeped onto a surface (in this case an L-system tree) and moved with a force. A split node is used to create particles from the trail and a curve is appended to these particles.

I have a couple of problems however, the particles seem to rotate around the object once and then stop rotating. They just move up in the Y-axis instead of ‘orbiting’ round the geometry.

Also, I would like to spawn several particles to create several ‘wires’, however when I spawn additional particles my network doesn't seem to work. Does anyone have any suggestions on how I should attempt multiple wires?

Thanks guys,
midorime
Hi Ponge,

The rotation problem is in your Creep POP, I used a frac() expression to loop through the range 0-1.

The multiple wires problem is in your Delete SOP, I just changed the group's name to delete.


Emanuele
Ponge
Mido, that is absolutely fantastic! Thank you very much for your help, I really do appreciate it. I've played around with some parameters and attached a work in progress shot of the current tree :-)

I had another question if you don't mind… At the moment these wires intersect each other, do you have any idea how I might pre-calculate their trajectories to avoid them intersecting each other? If you had an idea I'd be incredibly grateful if you could point me in the right direction.

Thanks again for your help!
midorime
Glad to be useful…

About the intersections… I had just a quick idea, I'm sure it isn't the best one but it's a start…

I did a test using an attribute transfer SOP…
You should test how it could work with a lot of different lines, maybe could be helpful bake everything out and use that texture to displace each line separately.

Emanuele
Ponge
Mido, wow that network looks awesome. I'm going to have to sit down with it and really spend some time with it, thank you for the starter though!

I had another question if you don't mind…? (I feel almost cheeky for asking, but this forum is such an incredibly helpful source of information for Houdini starters like myself).

I have attached the basic version of my scene file, with what I'm trying to achieve.

I have an initial spline that is generated along an L-System surface (as you so kindly helped me figure out earlier). This produces curve onto which I have appended a Polywire Sop. What I would now like to do is use this Polywire sop as the Creep surface for another particle system (so that the particles flow over this surface as they did the L-System).

When I use this Polywire node in the creep sop in the ‘Outer_wires’ popnet the simulation doesn't work. It seems to generate all the points on primative 0, so I'm assuming that this has something to do with the ‘Prim Number’ parameter of the Creep Sop. This is currently set to $POSPRIM and I'm having trouble figuring out what I should change this to.

Thank you again for your help, it has been invaluable so far in my student project!
midorime
Well Ponge, I feel a newbie too…
I started only 9 months ago on Houdini…
so, I'm happy to help you as a test of what I've learnt so far…

As you said the problem was the primitives…
I solved it creating a nurbs surface to point at in your second system so you still have one primitive to play with.
But this time, because you wrote this is your student project I decided to help you AND to give you an homework.

After you'll see my scene, find a way to control how fast the second particle system spins around the first one.
Because so far, it spins with different speed based on the LENGTH of the first one.

Don't be angry with me… this is the wonderful side of learning something.

Hope to see your final project soon.

Cheers

Emanuele
Ponge
Hi Mido,
For 9 months work I'm very impressed! Have you been working in the vfx industry on other software for much longer? I enjoyed your showreel on your site.

Your solution proved very useful, and homework is always welcome! (I am here to learn after all!). I actually had quite a lot of success in controlling the speed of the particles by modiying the Prim U/V parameter in the Creep sop.

For example U/V values of:
frac(0.9+$FF/30)
($FF/300)

are twice as fast as:
frac(0.9+$FF/60)
($FF/600)

By slightly modifying these figures I got the exact result that I was looking for (attached image). Was that the solution you were looking for or have I misunderstood the problem?


Now… The advanced problem! (i'm not even sure if this is possible).

At the moment, I need to copy and paste each location+creep+split tree and slightly modify the U/V Parameters in the creep sop to create additional curves (which are then collected by the collect sop and fed out of the popnet). This hasn't been an issue so far but it is quite a manual process to create and modify multiple wires, what would be an ideal situation is to have just one location+creep+split tree that spawns multiple particles which are then fed down the tree and out of the popnetwork to create multiple splines (I hope that made sense). Basically to condense the multiple tree's into one network that I could then turn into a digital asset.

Now this is all just extra-curricular activities, the current solution works excellently for my project, however if you had advice on how to achieve this I would love to try and implement it.

Thanks again Mido,
Gary
midorime
Hi Ponge,

Thanks for your compliments, I did 5 years of productions using Maya and sometime Realflow before my decision to switch to Houdini.

Because so far, it spins with different speed based on the LENGTH of the first one.

Was that the solution you were looking for or have I misunderstood the problem?

I'm sorry, my mistake, with “different speed” I meant “different spacing”.

I meant a different problem you could have if you'd like to animate the InnerWire and the OuterWire at the same time and have a regular spacing spirals.

In animation because the Uvs of the InnerWire are distribuited on a different length, the spacing between OuterWire spirals change;
so, you will have the initial spirals with less spacing and, near to the end of your animation, spirals with more spacing, hope it makes sense.
To avoid that I think you should compensate the length of the InnerWire in the Creep POP of the OuterWire, hope that makes sense too.

About your “Advanced problem” I've to wait until the weekend.

Cheers

Emanuele
Ponge
It's me again!

I've been trying a different method to create a steel wire ‘tree’ and have the current solution (attached file).

It uses the creep sop to randomly jump between different primatives on an lsystem tree, creating a curve between each point and then resampling it as a nurbs curve and turning it into a polyline.

The issue is when this is animated, the nurbs curves ‘pop’s between each new point. I know why it is doing this (as the points are being birthed each frame and jumping all over the tree), but I would like to remove this effect, and have it somehow animate smoothly between points. I just don't know how to achieve this :-(

if anyone had any idea's I would really appreciate it.

Thanks,
Gary
Ponge
Hey, just thought that I would update this thread now that our project is finished (and I've had a few days off to recover after a major last minute crunch!)

Here is the finished animation:
http://vimeo.com/9997404 [vimeo.com]

A team of 3 of us over 7 weeks. We're quite proud of it however the last few scenes are a bit rushed so the anim,ation is a little dodgy, I plan to go back and fix that later.

I ended up changing the systems we used to create the tree, I created an L-System tree and then grouped various branches into groups of primatives. I then used a particle system to jump between random particles in each group, creating a curve that was then polywired.

If anyone had any feedback or constructive criticism it would be great to hear it.

Cheers,
Gary
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB