Jump to content

Sprite Particles - start animation sequence at particle birth ?


GDonkey

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

Link to comment
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
Link to comment
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

Link to comment
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
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...