Jump to content
Sign in to follow this  
GDonkey

Sprite Particles - start animation sequence at particle birth ?

Recommended Posts

Hi there,

A bit of a noob question so I apologise for that.

I have a file attached with a basic particle system, connected to a copy to points, and a grid with a png image sequence as the particle geometry ( 12 frames long ).

Everything is working well, except I cannot figure out how to start the image sequence on a per particle basis. All the particles start their animation on frame 10 simultaneously and new ones born after that just start with the last hold frame.

I have this - " Star Sparkle_`padzero(5, clamp($F-10 ,1 , 12))`.png " in the texture field on my principled shader and this seems to give me a 10 frame offset, and it holds the first and last frame, instead of turning into a white grid, which is great.

 

But how do I get each particles animation to start at it's birth or at an offset from it's birth time/age/frame ?

I've included the required png sequence with the file.

 

Thanks to anyone who can help me with this, it's making me feel very silly that I can't figure it out in over a week.

Have a great day !

Sprite Particles.7z

Share this post


Link to post
Share on other sites

not saying i'm pretty but in your mat, texture instead of $F.....for the hell of it i put @nage....try it.

Share this post


Link to post
Share on other sites

if that's what you want...don't blame me i just thought F### it...i'll try it...what have i got to lose ?

Share this post


Link to post
Share on other sites

hmmm...it doesn't seem to 'grow' now.

$F-@nage-10 seems to do something....:huh:

Edited by Noobini
  • Haha 1

Share this post


Link to post
Share on other sites

At that point, you might want to consider how you are going to render them. That affects the final technique. You also might need to answer the question "what does my particle display after it displays the final frame?" Is it dead after 13 frames? If so, match the life of the particle to the frame count based upon $FPS.

You might want to try instancing. Life set to 0.5 @24fps.

Another thing to try, is to leverage the just_born group. Drop down a PopWrangle inside your popnetwork and assign the frame each particle is born to an attribute.

i@frame_born = int(@Frame);

Then you can use that value, later to know how to start counting from the beginning of the sequence.

instance_sparkle.gif

Edited by Atom
  • Thanks 1

Share this post


Link to post
Share on other sites

Noobini,

Haha. Thanks for trying !

 

Atom,

Thanks so much for taking the time to reply !

I had to re-read your reply a few times as this is all quite new to me and I wanted to really try to understand everything. But I think I've made a bit of headway.

Quote

You also might need to answer the question "what does my particle display after it displays the final frame?" Is it dead after 13 frames? If so, match the life of the particle to the frame count based upon $FPS.

What I was thinking of doing is having the first and last frames be empty drawings, and then use clamp to decide on what frame after birth the animation should trigger. Then alternatively, having it start on birth frame and play then die after last frame. Both scenarios would be useful to me. 

In my file I've not put empty drawings yet so that I can see what I'm doing.

Quote

You might want to try instancing. Life set to 0.5 @24fps.

Ok, 0.5 at 24fps for a 12 frame sequence makes perfect sense.

Instancing is new to me in Houdini but I think I figured that part out after looking at the help a bit. So I'm not using a copy to points at all anymore, and rather have 2 geo nodes, one with the grid/particle geo, and another with the pop network. I put a pop instance node and told it to point to the grid geo node. Then I put an instance node at the sop level. This gives me the same result as I was getting with the copy to points but instanced. Thanks ! I learned something new :)

I put a pop wrangle with " i@frame_born = int(@Frame); " . I'm not very good with VEX, but from what I can see in the geo spreadsheet, you are creating an attribute called frame_born that is tied to the frame number on every point.

This is the part where I get stuck. I see how it is useful to have this attribute/counter but I don't understand now how to use the attribute to start the sequence for each point at birth.

We're in lockdown here now and I only have access to apprentice at home, so I'm uploading the working file here of where I'm at. When you have the time, I would appreciate another poke in the right direction :)

Have a great day !

Sprite Particles Instance.7z

Share this post


Link to post
Share on other sites

I messed around with your scene, yesterday. In my settings I decided to ping pong the frames back and forth until the particle dies, this way you can extend the life of the particle. So you may have to revisit the frame counting code inside the wrangle to implement a one-shot die setup. I didn't get the file instancing fully working, but local object instancing is in place. I basically made 13 grids and a point wrangle constructs a path to each one based upon what frame it decided it needs to display.

ap_rm_lops_sequence_particles.hiplc

Edited by Atom

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×