Randomise instance time?

Hey, sorry for the barrage of questions lately, the post-ICE transition has it's learning curve but I'm hopeful. I'm currently trying to make a simple crowd tool that uses a mesh for an emmiter and an alembic with multiple point caches for the instances.

Currently I have the lovely Fabric frog jumping off of my grid points and I'm looking to offset their times. Looking through the presets I can't really see anything relating to the instance time, so will I need to create a bunch of loaders for the alembic and offset them randomly pre-instance? Perhaps using a repeat of some kind? Any tips with working with instances would be great :)

Regards,

Tim

Tagged:

Comments

  • HelgeHelge Moderator, Fabric Employee Posts: 314 Fabric Employee

    Hey Tim,

    interesting. Indeed there isn't. With the next release around the corner (2.1.0) you'll have access to the time that you are pulling. You won't be able to feed multiple time values, however.

    I suggest to have a look at these presets once they land (sorry - be patient a little bit) and create a new KL node which would be the "getMeshAtDifferentTimes" or something like that. It would take the AlembicARchive, an array of times and return an array of meshes. It would literally be the same code like the getMesh preset, just in a loop.

    Looking forward to seeing your results once you get your hands on 2.1.0!

    I hope this helps.

    Research Engineer @ Fabric Software

  • timbtimb Posts: 30

    I'll wait for it then before jumping in to this one ;p Any rough idea when the new update will land? Probably the million dollar question right now sorry!

  • HelgeHelge Moderator, Fabric Employee Posts: 314 Fabric Employee

    We are working on it as we speak. I can't commit to any dates. All I can say is: Very soon. :smile:

    Research Engineer @ Fabric Software

  • HelgeHelge Moderator, Fabric Employee Posts: 314 Fabric Employee

    Hey Timb,

    the release is out now.

    http://fabricengine.com/whats-new-in-fabric-engine-2-1/

    Best!

    Research Engineer @ Fabric Software

  • timbtimb Posts: 30

    Hi Helge and the team, great work on the updates, I've been taking a look through the sample scenes and I'm loving all the new additions.

    Just continuing with this "randomise mesh time array", I started building the node that you described in your previous post, but then stumbled across the "inline_drawing_alembic" sample scene. I have been adapting the scene to work with randomised meshes, and randomised time offsets.

    I'm going to attach the .canvas file and an accompanying alembic file too if you or anyone want's to delve in there. Generally it's working and I'm happy with the progress, plus I even managed to do a bit of scripting to boot :)

    Moving forward I see the structure of the system as follows. Right now I'm building an array of 20 different mesh's each with a different time. Let's assume I'm happy with these 20 unique meshes, what would be great is if I could take this array and populate my stadium with instances of these, each taking randomly from my 20 mesh array. So memory wise I'm not going to have 30,000 unique meshes. I would also look at an ID system, so I can manually place or remove certain meshes at certain positions later on down the tree.

    First of all, how would an ID system work? Does each mesh come with it's own ID by default? Or do I need to set this somewhere on my crowd emmiter using a "fill interperlated" for example? Secondly, is the current instantiate system set up for multiple mesh inputs? Just browsing through the sample scene's, the draw Instantiate's node takes an array of Xfo's and I can't see much else. Would this kind of functionality need to be scripted?

    Again though, good work on the updates, I have a little more time so I'm going to try and continue with this system :)

    p.s I have an unfinished kl node in there that kept throwing up errors, I couldn't get it to work and so will leave it for the moment. If anyone has any suggestions or explanation for it breaking I'm all ears ;)

  • HelgeHelge Moderator, Fabric Employee Posts: 314 Fabric Employee

    I've taken a peek. I can't spend too much time supporting you going forward, but this should get you started. Essentially you can see three groups - the meshes at the time 0.0, then the same meshes at time variations, and finally the crowd. The crowd is using a small list of input meshes, but a large variety of transforms and an index lookup, which specify which mesh to use for which transform (also driven by a random node).

    Research Engineer @ Fabric Software

  • timbtimb Posts: 30

    Thank you Helge! This works really well, and proves that there is definitely more than one way to skin a cat ;) Am I correct in thinking then that from a memory and computation standpoint the final meshes(green) are effectively instances of the blue time-shifted meshes? This would be ideal, and I'll lay to bed the idea that my meshes need to pass through and "instance" node to be memory efficient.

  • HelgeHelge Moderator, Fabric Employee Posts: 314 Fabric Employee
    edited March 2016

    There's a little issue with the way you see this coming from Softimage. :smile: There isn't a master and an instance. There's just geometry and where you see it on the screen. All of the unique meshes you see on the screen share the same memory. So yes - in other words: There's only 30 meshes in this case and precisely 5 + 30 + 120 = 155 transforms.

    Research Engineer @ Fabric Software

  • timbtimb Posts: 30

    Ah that's what I had hoped, and this gives me a good foundation to build from. I'll try and keep people posted on the progress of the system.

Sign In or Register to comment.