PDA

View Full Version : Instance Generator: Animation on generation?



VermilionCat
12-08-2018, 08:46 AM
I want each instanced object to animate as it appears. Is this possible? LW doesn't seem to respect the generation time.

MonroePoteet
12-08-2018, 12:05 PM
How are you creating Instances over time? Is this a Particle Emitter with the Instancer's type set to Particles? If so, you can calculate the Time that each Particle was generated by subtracting it's Particle Age from the current Time, negating that and using it as the Time Offset for the particle's instance.

A sample scene is attached, with a box being rotated over 120 frames using keyframes (note that Time Offset in the Instancer only works for keyframed motion!). The nodal setup for calculating each successive particles Time Offset is:

143509

This causes each Particle's Instance to start the keyframed motion at the time it's generated. The Emitter's Birth Rate uses an Expression to generate one Particle every 10 frames.

143510 143511

143512 143513

143514

MOV file: 143515

If this isn't what your after, I think you'll need to clarify how the Instances are being generated over time and what you mean by "animate as it appears".

mTp

VermilionCat
12-08-2018, 12:19 PM
Thank you for explanation!
That's exactly what I want but I use "Surface Type" generation.
I'm trying to figure out with your method but I cannot comprehend... Subtracting time? Ummm, why does it have to be this complicated...

MonroePoteet
12-08-2018, 01:40 PM
There may be an easier way to do this, but I don't know how. LW doesn't provide a simple button to "Start Keyframed Motion on Instance Creation", but it'd be a nice feature request.

The same nodal setup should work with an emitter type of Object-Surface. Just copy-n-paste the node network into your Instancer, set the Emitter object in the Particle Info node by double-clicking on it, hook up the Sub (2) output to the Instancer's Time Offset, and it should work.

It's important to note that the Particle Emitter is set to Object-Surface and the Instancer is set to Particles. You can set the Instancer to a generator type of Surface, but then calculating the Particle Age to control the Time Offset won't work (since there are no particles).

Attached is another sample scene which uses an Object-Surface type Particle Emitter and the same node network to "grow trees" on a small section of ground.

143517 143518

143519 143520

MOV File: 143523

mTp

VermilionCat
12-08-2018, 11:33 PM
Thanks again, MonroePoteet!
Indeed the automatic offset should be a default behavior. It doesn't make sense at all otherwise.
I wanted to control the area, the timing of birth and so on. Particles doesn't seem to have much control over them.
I didn't find time node. Maybe because I'm working in LW2015.

MonroePoteet
12-09-2018, 12:06 PM
If you have an account on Lightwave3d.com, you can submit a feature request for the "start keyframed motion at instance creation". It obviously won't be changed in LW2015, though.

Since you can move and resize a Particle Emitter and put an Envelope or Texture on the Birth Rate, I think particle emitters have a very wide control over where particles are created and when. Without a better description of what you're actually trying to do, I can't suggest anything beyond vague generalities.

Yes, LW2015 didn't have a native Time node, and the native Particle Info node didn't have a "Nearest" mode that I used in my LW2018 attempt. In LW2015, I used the Time node from the AS Math Node:

https://www.lightwave3d.com/assets/plugins/entry/as-math-node/

but that doesn't seem to be available online anymore. I used the DP Particle Info node from DPKit for the "Nearest" functionality.

A brief re-construction of the "growing trees" scene in LW2015 using these nodes crashes Layout consistently, I believe in the DP Particle Info node. I don't think it's worth pursuing any further.

Again, without a clear idea of what you're actually trying to do, it's hard to make alternative suggestions.

Good luck!
mTP