hi tim, thanks for the tutorial! but I have some trouble saving alembic. my alembic is saved without subframes. is there any option I have to check? + before the ROP Alembic output, it has subframes.
Hey, Thanks for the content! If you are offsetting the imported cache per point and bringing in new geometry for each point are we not then eliminating the effeciency of using an instance? Mainly asking this because once I scatter more that a few points I get a fair bit of slowdown.
Yeah that’s right. is not really meant for keeping efficiency of instances, because you’re not getting all of that. What you are getting is full control over the timing of your copies which makes this extremely useful. perhaps I could have picked a better title.
@@TimvanHelsdingen no no your title was perfect, Thats what brought me here. We have used this method at our studio but for what ever reason we didnt think to randomise a offset for the frame number which is what got me thinking. Many Thanks
First of all thanks for your content! When i put the attribwrangle i've seen it offsets the abcframe for each mesh on my alembic, how would one do so it offsets all the parts of the mesh at the same time? I'm scattering animated alembics coming from other software so i don't want each part of the mesh but the whole mesh to be offseted.
**updated: Yeah, these are instances, just not the kind I thought they were. Thanks for the reply Tim!** I noticed your "pack and Instance" toggle is not checked (copy to points), so these are not instances. The intrinsics disappear once these are packed, unfortunately. Any way to work with packed instances?
If you copy something that’s already packed (which the alembic is) you don’t need to pack and instance since that would double pack it. All of the copied boxes here are in fact instances.
So how would you do this setup if you want to scatter the alembics but then control the start of animation per point from a trigger attribute? Say a trigger attribute that the grid gets from a mask from geo? Im having a hard time understanding how to get it all to work, part 1 is okay to get the mask from geo and a trigger attribute set up. but hooking that attribute up with a solver so that another attribute starts counting from 0 and upwards from the frame the trigger attribute is over 0 i dont understand.
Are you trying to do this from a mask attribute that’s being generated in a solver?… You can create age attribute in for example a sopsolver by wriging f@age += @TimeInc You could for example have a growth happening on your geo, then say that age should start incrementing when the grow attributes is above 0. Then simply use the age attribute in your wrangle in sops to offset the primintrinsic.
@@TimvanHelsdingen Thank you for your reply, i tried to create the mask before the solver. with just mask from geo. Im havent done to many projects in houdini so i am at the beginning of learning and not sure if im doing it the right way. i create a grid, a sphere that then goes into a mask from geo node. i get the mask attribute and i want to use this to start the animation. But when using this the animation on the first points work but as soon as the sphere applies it mask on the next point that animation is starting on the actual alembicframe that the timeline is on. therefore i would like to have a attribute trigger that starts from 0 and then counts upwards. What does the TimeInc do? do i need to plug in the previous frame to the attribute wrangle if i write it like you do?
I believe mops also has it’s own time offset node (also using intrinsics) But in general it would just mean remapping a value. For example if you’d have a falloff value from 0-1 and an animation which is 3 seconds, you would remap the falloff with a fit01(@falloff, 0,3) and then use that in the intrinsic, then your animation would play across the falloff. I’m using this technique with a falloff as well in my GROW animation (on my channel) to grow some flowers based on a falloff
Yeah been really putting that off having I? haha. I was thinking of maybe making it a more modular thing that I can release in small parts instead of something of similar scope to 101. Because I already know what I want to cover but wasn’t sure on what to do for the end result yet to bring it all together.
Ah well its good to hear that you havent forgot about it! I would love a series of videos just focusing 100% on VEX used in different scenarios & that covers most of the language features.
Oops, totally forgot about that! yeah you’re right if you want to keep stuff instances. Still useful if you just have redshift treat it as regular geo though, i’ve always just used it like that.
@@TimvanHelsdingen I used this workflow for my master thesis "simulation of plants based on algorithmic systems" and realized this issue 4 days before delivery :D
@@junglingmitapfel2902 Oh damn xD how did that turn out? got it done in time?… When you mentioned it did ring a bell but it’s never posed an issue for me, but i guess if you really need to push thousands of instances that’s gonna be quite problematic xD
I was wondering if you are alive :D Great job, Tim.
Haha, yep still alive and kicking!
Amazing ! thanks mate.
hi tim, thanks for the tutorial! but I have some trouble saving alembic.
my alembic is saved without subframes. is there any option I have to check?
+ before the ROP Alembic output, it has subframes.
Hey, Thanks for the content!
If you are offsetting the imported cache per point and bringing in new geometry for each point are we not then eliminating the effeciency of using an instance? Mainly asking this because once I scatter more that a few points I get a fair bit of slowdown.
Yeah that’s right. is not really meant for keeping efficiency of instances, because you’re not getting all of that. What you are getting is full control over the timing of your copies which makes this extremely useful. perhaps I could have picked a better title.
@@TimvanHelsdingen no no your title was perfect, Thats what brought me here. We have used this method at our studio but for what ever reason we didnt think to randomise a offset for the frame number which is what got me thinking. Many Thanks
good one! :)
Haha well I guess you can tell where the inspiration for this one came from :P
thanks!!!!
First of all thanks for your content! When i put the attribwrangle i've seen it offsets the abcframe for each mesh on my alembic, how would one do so it offsets all the parts of the mesh at the same time? I'm scattering animated alembics coming from other software so i don't want each part of the mesh but the whole mesh to be offseted.
Hi Tim,i'm using redshift,if i check the "instance sop level packed primitives" option,the time offset will have no effect,what should i do?
You should use the instance node on obj level and use instancefile to instance them instead.
**updated: Yeah, these are instances, just not the kind I thought they were. Thanks for the reply Tim!**
I noticed your "pack and Instance" toggle is not checked (copy to points), so these are not instances. The intrinsics disappear once these are packed, unfortunately. Any way to work with packed instances?
If you copy something that’s already packed (which the alembic is) you don’t need to pack and instance since that would double pack it. All of the copied boxes here are in fact instances.
So how would you do this setup if you want to scatter the alembics but then control the start of animation per point from a trigger attribute?
Say a trigger attribute that the grid gets from a mask from geo? Im having a hard time understanding how to get it all to work, part 1 is okay to get the mask from geo and a trigger attribute set up. but hooking that attribute up with a solver so that another attribute starts counting from 0 and upwards from the frame the trigger attribute is over 0 i dont understand.
Are you trying to do this from a mask attribute that’s being generated in a solver?…
You can create age attribute in for example a sopsolver by wriging f@age += @TimeInc
You could for example have a growth happening on your geo, then say that age should start incrementing when the grow attributes is above 0. Then simply use the age attribute in your wrangle in sops to offset the primintrinsic.
@@TimvanHelsdingen Thank you for your reply, i tried to create the mask before the solver. with just mask from geo. Im havent done to many projects in houdini so i am at the beginning of learning and not sure if im doing it the right way. i create a grid, a sphere that then goes into a mask from geo node. i get the mask attribute and i want to use this to start the animation. But when using this the animation on the first points work but as soon as the sphere applies it mask on the next point that animation is starting on the actual alembicframe that the timeline is on. therefore i would like to have a attribute trigger that starts from 0 and then counts upwards. What does the TimeInc do? do i need to plug in the previous frame to the attribute wrangle if i write it like you do?
Nice one as always! Im wondering how would the vex look if there was a mops fallof node before to activate the cubes?
I believe mops also has it’s own time offset node (also using intrinsics) But in general it would just mean remapping a value. For example if you’d have a falloff value from 0-1 and an animation which is 3 seconds, you would remap the falloff with a fit01(@falloff, 0,3) and then use that in the intrinsic, then your animation would play across the falloff. I’m using this technique with a falloff as well in my GROW animation (on my channel) to grow some flowers based on a falloff
@@TimvanHelsdingen got it, thanks! Really nice explanation🙏🙏✨
Howdini102? :3
Yeah been really putting that off having I? haha. I was thinking of maybe making it a more modular thing that I can release in small parts instead of something of similar scope to 101. Because I already know what I want to cover but wasn’t sure on what to do for the end result yet to bring it all together.
Ah well its good to hear that you havent forgot about it! I would love a series of videos just focusing 100% on VEX used in different scenarios & that covers most of the language features.
One thing to mention here: Does not work with Redshift!
Oops, totally forgot about that! yeah you’re right if you want to keep stuff instances. Still useful if you just have redshift treat it as regular geo though, i’ve always just used it like that.
@@TimvanHelsdingen I used this workflow for my master thesis "simulation of plants based on algorithmic systems" and realized this issue 4 days before delivery :D
@@junglingmitapfel2902 Oh damn xD how did that turn out? got it done in time?… When you mentioned it did ring a bell but it’s never posed an issue for me, but i guess if you really need to push thousands of instances that’s gonna be quite problematic xD
you mean doesnt work with redshift proxies ?
@@requa3314 the time offsets break once you turn on that redshift should use sop level packed primitives