Instance and offset an animated FBX using GLSL in Touchdesigner - Part 2

Sdílet
Vložit
  • čas přidán 26. 01. 2022
  • In this two part tutorial we're going to build a custom component in Touchdesigner that records an animated geometry file into a texture format. Then in the second part we are going to use GLSL to:
    1. instance the model,
    2. have the ability to offset the animation per instance and most important,
    3. keep a steady 60 fps framerate!
    It's a rather technical tutorial but if you follow along, set it up once, you have the ability and benefit for future projects to instance quite heavy animated geometry files and control the playback per instance at real time speed!
    Part 1 of this tutorial series: • Instance and offset an...
    Please like and subscribe to stay up to date!
    Instagram: / daily.typo
    Facebook: / factory-sett. .
    For our workfiles:
    / factorysettings
  • Krátké a kreslené filmy

Komentáře • 13

  • @edcreativecoder
    @edcreativecoder Před 2 lety +2

    Thank you very much for sharing. Now I can finally implement the ideas that had waited for the technique.

    • @FactorySettings
      @FactorySettings  Před 2 lety

      Thank you, very much appreciated, curious to see what you'll bring up!

  • @Dithdsgn
    @Dithdsgn Před rokem +1

    Great tutorial, thank you !

  • @fizzypopvfx
    @fizzypopvfx Před 2 lety +1

    I've been so close to figuring this out and this video has just helped me finally get there, thanks so much!

    • @FactorySettings
      @FactorySettings  Před 2 lety

      Thank you, great I could help!

    • @fizzypopvfx
      @fizzypopvfx Před 2 lety

      @@FactorySettings i was just wondering, is there a need to update the normals as you displace the vertices?

    • @FactorySettings
      @FactorySettings  Před 2 lety

      @@fizzypopvfx I see what you mean. I don't think so, a normal is usually calculated by taking the cross product of two vectors, and since every point is already connected, the normals should follow along. I've recently experimented with rebuilding a model from one point, then you have to recalculate from scratch. But if you're not sure or experiencing glitches in your lighting, you could use the exact same approach with the normals in the shader (P would be N instead)

    • @fizzypopvfx
      @fizzypopvfx Před 2 lety

      @@FactorySettings I’m yet to try this properly, I was just thinking when I usually do vertex displacement, I redo the normals, and really just wondered if it applied to this method or not :)

  • @bradonwebb2318
    @bradonwebb2318 Před 4 měsíci

    Great Tutorial, is there a way to interpolate or blend between the "flipbook" frames this would be like sub frame interpolation from the original texture3D to blend between those frames?

    • @FactorySettings
      @FactorySettings  Před 4 měsíci

      Thank you! Yes could work in theory, but I'm not sure if it's of much use. Your exporting the alembic based on a certain framerate, personally, if I would like to add a frame in between I'll just export it at 60fps instead of 30fps. You could experimenting with a crossTOP and sample two frames from the flipbook and see how that affects the movement.

    • @bradonwebb2318
      @bradonwebb2318 Před 4 měsíci

      @@FactorySettings I thought about using a different method instead of texelFetch with the tex3D top, but more like a rows and columns texture, where the rows (x-axis) pixels would be the position of the point value of the point geometry and the columns would be time/frame index of the alembic... that way you might be able to sample a point in-between the columns as a floating point value rather than a hard integer (on y-axis) and use the built in interpolation of a pixel to do it. We actually need this function because we want to dramatically slow the motion of an alembic down by quite a lot, linear interpolation is fine, but we want the animation to be very very slow, but interpolated.

    • @FactorySettings
      @FactorySettings  Před 4 měsíci

      @@bradonwebb2318I see what you're trying to do, if you'd like to have float accuracy sampling from a texture make sure you use texture() instead of texelFetch(), but you have to use normalized values instead of pixel coordinates. Another thing to be aware of is that depending on how many points you're going to use, your resolution can get pretty wide. Non commercial is already clamped at 1280, but there is also a maximum depending on your graphics card.

    • @bradonwebb2318
      @bradonwebb2318 Před 4 měsíci

      @@FactorySettings thanks we've got no issue with wide textures, our point counts are not too large and i think it can work, will look into texture()