Houdini Tutorial - Time Offset Instances

แชร์
ฝัง
  • เผยแพร่เมื่อ 15 ต.ค. 2024
  • source files available on timvanhelsdingen.com
    For some reason I never figured this out until a while ago. Thought i'd record a little video about it.
    Hope you enjoy.

ความคิดเห็น • 41

  • @mattbrumit8592
    @mattbrumit8592 3 ปีที่แล้ว

    Thank you Tim. Seeing your workflow and set-up from scratch was useful. Much appreciated.

  • @АнатолийЮрков-я1о
    @АнатолийЮрков-я1о ปีที่แล้ว +2

    to fix the viewport bug you need to dive into the instance sop and turn off the checkbox "cache stamping geometry" of copy sop

  • @BloomGlare
    @BloomGlare 5 ปีที่แล้ว

    Thanks Tim, loving the clarity of your tutorials - and the pace you take is excellent. Will definitely be supporting you via patreon.

  • @irRATional_adoRATion
    @irRATional_adoRATion ปีที่แล้ว

    simple, robust, right to the point. saved me a day.

  • @KevRyanCG
    @KevRyanCG 2 ปีที่แล้ว

    Had to come back to this one. Very helpful as always Tim. Thank you.

    • @TimvanHelsdingen
      @TimvanHelsdingen  2 ปีที่แล้ว +1

      thanks! I also have another video where we use alembic primintrinsics where you can actually also use subframes for stuff that supports it. So also check that one out!

    • @KevRyanCG
      @KevRyanCG 3 หลายเดือนก่อน

      @@TimvanHelsdingen I am once again back, because I'm trying to get this working in Solaris :D
      I went all around the houses trying to get some sort of offsetting working in Solaris itself and instead just did this tutorial and imported the instanced packed prims directly into Karma. Occam's Razor for sure.

  • @PoissonRouj
    @PoissonRouj 2 ปีที่แล้ว

    Amazing ! I've been searching for a way to do this for so long :D

  • @raphaelpareit5301
    @raphaelpareit5301 3 ปีที่แล้ว

    Thanks for the Tutorial it helped me a lot, i was looking for a solution to this problem for quite some time and i couldn't find anything decent enough until i found this!
    Also to fix the viewport bug appending a Normal SOP after the instance seems to do the trick ;)

    • @TimvanHelsdingen
      @TimvanHelsdingen  3 ปีที่แล้ว +1

      another way to do this is using abcframe btw, I'm not really using the bgeo method that much anymore. Check out my regrowth series for more on this.

  • @Kumodot
    @Kumodot 2 ปีที่แล้ว

    Thanks for your video ! Does it always need to be cached ? Isn't there a way to offset animation that is keyframed and "live" in houdini ?

  • @massimobaita7178
    @massimobaita7178 3 ปีที่แล้ว

    Thank You very much, Tim!

  • @CodyBurke3D
    @CodyBurke3D 2 ปีที่แล้ว

    Can this be used with rs proxies?

  • @Electricvfx
    @Electricvfx 3 ปีที่แล้ว

    Thanks for this was really doing my head in. But for some reason in my setup its skipping the first few 10 frames of the sequence that I am instancing, So the objects are just popping on and continuing,

  • @jeffwthomson
    @jeffwthomson 3 ปีที่แล้ว

    any thoughts on how to offset individual pieces in time from a sim, i.e. each piece of the rbd fracture or pieces in a vellum sim? not sure if the logic here would apply as its not instances...

  • @ruidongcai3198
    @ruidongcai3198 3 ปีที่แล้ว

    Hello, I try it it work really well, but how can I attach a trigger animation with attribute transfer and copy?

  • @MsRaumal
    @MsRaumal 4 ปีที่แล้ว

    Nice, thanks! Would this work with RS render proxies as well?

  • @danlefe
    @danlefe 3 ปีที่แล้ว

    This is great my only comment is this doesn't seems to allow a flag to be set on a proxy version of your instance for things like dense volumes or high polycount objects when even using an instance becomes delayed. I'm probably missing the logic here but its tricky.

    • @danlefe
      @danlefe 3 ปีที่แล้ว

      i figured out a caveperson way about it

  • @philippaps44
    @philippaps44 4 ปีที่แล้ว

    Thank you!!Really helpfull!! weird you cant do that easily like randomizing pscale or orient in an attributeRandomise SOP node. Vertex attributes are not preserved though. uvs?

    • @philippaps44
      @philippaps44 4 ปีที่แล้ว

      my bad, if you unpack after, everything is there

  • @dariosaquetti1194
    @dariosaquetti1194 4 ปีที่แล้ว

    Is there a way to offset per point instead of using the transfer Cd attribute?. i.e Each point would offset , say 5 frames linearly?

    • @TimvanHelsdingen
      @TimvanHelsdingen  4 ปีที่แล้ว

      All the setup does is offset which instance it loads, you can modify it however you see fit.

    • @dariosaquetti1194
      @dariosaquetti1194 4 ปีที่แล้ว

      @@TimvanHelsdingen Thanks for the reply. I kind of figured it out; in the offset I add @ptnum to the slider and it does the trick that I was looking for. Thanks for the tut.

  • @irRATional_adoRATion
    @irRATional_adoRATion ปีที่แล้ว

    BUT! how can we orient instanced geometry along normals. 'instance' node doesn't seem to have such functionality

    • @TimvanHelsdingen
      @TimvanHelsdingen  ปีที่แล้ว +1

      Use @orient instead.

    • @irRATional_adoRATion
      @irRATional_adoRATion ปีที่แล้ว

      @@TimvanHelsdingen yes. works like a charm. for the sake of all the gentlemen with the same tasks, let me show you what I have in my wrangle. basically, now it orients instances along normals and randoms rotations properly:
      v@up = set(0,1,0);
      matrix3 m = maketransform(@N,@up);
      m*=rand(@ptnum);
      rotate(m,float(rand(@ptnum)*6.28),@N);
      @orient = quaternion(m);
      v@scale = 0.1 + rand(@ptnum)*0.15;
      string path = chs('path');
      string flowername = chs('flowername');
      int ver = 3;
      string version = concat ("0",itoa(ver));
      int f = int(@Frame);
      int offset = int(rand(@ptnum) * chi('random'));
      int len = chi('length');
      f -= offset;
      f -= chi('start');
      if(flen) f=len;
      string frame = itoa(f);
      string ext = "bgeo.sc";
      s@instancepath = concat(path,flowername,"_",version,"/",flowername,"_",version,".",frame,".",ext);
      I may mistake, but this solution seems to work much faster than copytopoints

    • @irRATional_adoRATion
      @irRATional_adoRATion ปีที่แล้ว

      ​@@KirillovVladimir1980 You are correct! My bad. At first, the solution with copying within the SOP appeared faster to me. It was because of small quantity of points which has been used to compare this method with the Instance node). BUT, on the large scale, the latter is WAY faster! And also, it utilizes the @instance attirbute, which can be used in the same fashion as @instancepath from the abovegiven example, allowing to randomize output.

  • @ВладиславРябов-у9ч
    @ВладиславРябов-у9ч 4 ปีที่แล้ว

    Awesome technic, thanks!

  • @wemcatt
    @wemcatt 3 ปีที่แล้ว

    Thank you very much

  • @miphone2816
    @miphone2816 4 ปีที่แล้ว

    I bunch of random frame range animation to a single long sequence, how can I get that?

    • @TimvanHelsdingen
      @TimvanHelsdingen  4 ปีที่แล้ว

      Could you rephrase your question? I don't understand what you're asking.

  • @raoulleminion8839
    @raoulleminion8839 3 ปีที่แล้ว

    thank you very much! do you know if there's a way to do it but with the instance object node ?

    • @TimvanHelsdingen
      @TimvanHelsdingen  3 ปีที่แล้ว

      Also works on the obj level instancer, either with instancefile or instancepath attribute

    • @raoulleminion8839
      @raoulleminion8839 3 ปีที่แล้ว

      @@TimvanHelsdingen strange, I think i miss something because it takes the node's object path in count but not my wrangle

  • @Dominic-du4ow
    @Dominic-du4ow 4 ปีที่แล้ว

    For some reason, the instance SOP won't read the bgeo sequence. This works fine with s@instancepath set to "path" but not with concat function. The path in spreadsheet is correct so not sure why it won't work here.

    • @TimvanHelsdingen
      @TimvanHelsdingen  4 ปีที่แล้ว

      that's weird. You sure path is okay?.. maybe just make a new instance node? Alternatively you could also use the sprintf function by the way, only heard about that until after I made that video.
      With that you can replace a part in a string with an attrobute.
      sprintf("../mypath/myobject_%s", i);
      would add the value of i into the string.

  • @mrmaxim77726
    @mrmaxim77726 5 ปีที่แล้ว

    super cool stuff, thx

  • @Ateruber
    @Ateruber 5 ปีที่แล้ว

    thanks for the tutorial ! How to fix(freeze) last frame cache ?

    • @TimvanHelsdingen
      @TimvanHelsdingen  5 ปีที่แล้ว

      hey man, glad you like it!
      You could just do it with a simple if statement. Something like:
      if (f > 100) f = 100;
      So in this case it would just stick to frame 100 at the end.

    • @Ateruber
      @Ateruber 5 ปีที่แล้ว

      @@TimvanHelsdingen Thanks !
      if (f>chi('Last_Frame')) f=chi('Last_Frame');
      else f = @Frame+offset;