Video summary

Procedural Fish Animation in Blender 3.0 Geometrynodes!

Main summary

Key takeaways

Technology

Overview

This tutorial shows how to build a fully procedural, Geometry Nodes–based fish animation in Blender 3.0 that continues to evolve “until the end of time.” The motion is driven by time/frame math rather than manual keyframes. The author also covers practical tips for:

  • Controlling movement direction
  • Ensuring rotation correctness
  • Adding a final wobble/wave effect for more believable swimming

The animation is primarily non-looping by default, relying on time progression rather than a looping setup.


Key Workflow / Node Ideas (Technology & Features)

1) Start with a clean setup

  • Begin with a clean scene
  • Use one Geometry Nodes position/position-like basis from the fish model

2) Procedural displacement via noise over time

  • Use a Noise Texture (1D) setup
  • Drive its movement by offsetting with time
  • Increase displacement amplitude using:
    • Vector Math → Scale
    • Example scale around 10
  • Recenter displacement so the fish doesn’t drift:
    • Use Subtract
    • Example subtract around 2.5

3) Time-driven animation (no manual animation)

  • Use a Value/Math approach with #frame as a temporary stand-in for a future Scene Time input
  • Drive progression using Math → Divide to set speed, with examples such as dividing by 24, later adjusted (e.g., 50)
  • Notes on looping:
    • The effect is non-looping by default
    • To loop, you’d need to copy the entire node setup and add extra math (not taught in the tutorial)

4) Directional timing: head leads, fins lag

  • Compute distance from origin using a Distance node
  • Use that distance as a factor, experimenting with multiply/divide adjustments (e.g., dividing around 20)
  • Negative scaling may be tried (example: -50) to achieve the desired timing:
    • Head moves first
    • Fins move later

5) Rotation alignment to movement direction

  • Reuse the noise/time section to estimate a future position, so the fish can face where it’s effectively moving
  • Convert computed direction into rotation using:
    • Utilities → Align Euler to Vector
  • Apply the rotation with Vector Rotate (Euler mode), ensuring the wiring order is correct:
    • Position happens first
    • Offset happens second
  • Fix twisting / wonky orientation by tuning rotation parameters:
    • Set pivot to Z (helps prevent upside-down twisting / wrong axis behavior)
    • Optionally adjust an Add node offset (example: 0.3)
    • Further tune with divide/scale changes (examples: divide 10, then 20, scale around 15)

6) Add a wave/wobble for propulsion feel

  • Create a sine-based wave using:
    • Time → Sine (Math/Sine node)
  • Apply the wave to rotation using:
    • Utilities → Rotate Euler
    • Use the Z axis
    • Use Object → Local so rotation behaves consistently with orientation
  • Tune intensity/influence with Multiply nodes, with example values such as:
    • 0.5
    • stronger settings like 50
    • smaller influence like 0.1
  • Use reroutes to keep the node graph organized

7) Pattern variability

  • If the movement doesn’t look right, change the noise/randomness parameters
  • Example approach:
    • Add another Add node with values like 500 to generate a new procedural pattern

Deliverables / Extras

  • The author mentions a complete fish model + node file (including caustics) is available on their Gumroad account (link referenced in description/comments).
  • The tutorial also includes typical promotion calls (e.g., Twitter and like/subscribe).

Main Sources / Speakers (from the subtitles)

  • The primary speaker is the tutorial author, speaking throughout.
  • No additional named sources appear beyond:
    • the author’s Gumroad/Twitter
    • the Blender Geometry Nodes feature set

Rate this summary

Your feedback will help improve summaries.

Improve this summary

Reprocess with a stronger model when the summary feels incomplete or inaccurate.

Pro

Translate summary in another language

Pro

Ask questions to this video

Chat for follow-up questions, clarifications, and source-backed answers.

Coming soon

Share this summary

Original video