Blender infinite loop animation (Organic)

By telleropnul, December 18, 2019

Many thanks to Nathan Duck (Ducky 3D) for a great tutorial!

https://www.nathanduck.com

Source files

organic loop 001.blend

organic loop 002.blend

organic loop 003.blend

Render output

 

Quick tips

Add a plane
[S] 8
Apply scale
Add cylinder
[R X 90]
[S Y 8]
Apply scale
Plane > Object context > Viewport Display > Display As: Wire
Cylinder > Object context > Viewport Display > Wireframe ticked
Cylinder > [TAB] > Select cap faces > [Del]
Add 58 loopcuts
[TAB] Exit edit mode
Add modifier > Displace
Texture New + click on button to the right
Type: Clouds
Depth: 0
Size: 1.75
Add modifier > Decimate (Planar, Angle Limit: 14deg)
Add modifier > Wireframe (Thickness: .104m)
Cylinder > Object context > Viewport Display > Wireframe unticked
Add modifier > Smooth (Repeat: 11)
Edit modifier > Wireframe (Thickness: .304m)
Add modifier > Subdivision surface
[RMB] Shade Smooth
Add empty named “Mirror” Y -8m
Add modifier > Mirror (Y axis, Mirror object: Mirror)
Add camera LocY 8m RotX 90deg RotZ 180deg
End frame 120
Edit > Preferences > Animation > Default interpolation: Linear
Frame 1 > Camera > Object context > LocY 8m click add keyframe button.
Frame 121 > Camera > Object context > LocY -24m click add keyframe button.
Camera > Focal length 24mm
Delete plane
[M] add to new collection named “Tube”
[SHIFT-A] Add collection instance > Tube LocY -32m
[SHIFT-A] Add collection instance > Tube LocY -64m
[SHIFT-A] Add collection instance > Tube LocY -96m
[SHIFT-A] Add collection instance > Tube LocY -128m
[SHIFT-A] Add collection instance > Tube LocY -160m
Edit modifier Decimate > angle 14deg > 16deg
Select Cylinder
[SHIFT-D] ScaleX 3 ScaleY 3
Apply scale
Note: as Cylinder and Cylinder.001 both live inside collection Tube, all changes propagate to instanced collections.
Edit modifier > Cylinder > Wireframe > Thickness: .304 > .263m
Edit modifier > Cylinder.001 > Wireframe > Thickness: .304 > 1m
Edit modifier > Cylinder + Cylinder.001 > Subdivision Surface > Subdivisions: Viewport: 1 > 2 (this now matches Render).

Switch to LookDev viewport mode
Cylinder + Cylinder.001 > Add material (metallic 100%, Roughness .281)
Render context: Tick Ambient Occlusion, Bloom, Screen Space Reflections
World context: Color: Black
Switch to Rendered viewport mode
[SHIFT-A] Add a point light
Select light, select camera, [CTRL-P] Set parent to Object.
Now the light moves with the camera.

For better viewport performance for now:
Edit modifier > Cylinder + Cylinder.001 > Subdivision Surface > Subdivisions: Viewport: 2 > 0

Volumetrics
[SHIFT-A] Add a cube
[S] 8
Apply scale
Drag into Tube collection
[TAB]
[3]
Select right hand side face
[G] [Y] -16
[TAB]
Add new material > Principled Volume
Shader tab > Principled Volume shader material:
Connector from [Volume > Surface] to [Volume > Volume]
Density: 0.01
Emission strength: 0.005
Move light [G] X 2.603m Z 1.861m
Color: #0098FF
Power: 200W

Emission
Select Cylinder
[SHIFT-D]
Object context > ScaleX 2 ScaleY 2
Apply scale
Edit modifier > Cylinder.002 > Subdivision Surface > Subdivisions: Viewport: 0 > 2
Edit modifier > Cylinder.002 > Wireframe > Thickness: 0.004m
Edit modifier > Cylinder.002 > Decimation > Angle limit: 21deg
Material context
Click minus symbol to remove the current material from the slot (unlinks the material from this object).
New material > Emission
Color: #FF6D00
Strength: 30

Darken base material Material.001 default gray color: #E7E7E7 > #212022

Light [G] X0.1725m Y-4.367m Z0.6745m

Shader tab > Principled Volume shader material:
Emission density: 0.01 > 0.003
Emission strength: 0.005 > 0.003
Emission color: #B0D3FF

[SHIFT-A] Add empty named “Focus”
Camera > Tick Depth of Field
Focus on Object: Focus
Aperture > F-Stop: 0.5
Aperture > Blades: 16

[SHIFT-A] Add another point light
Color: #0098FF
Power: 200W

Render context > Color Management > Look: High Contrast > Very High Contrast

Viewport Layout mode
Select Point.001, select camera, [CTRL-P] Set parent to Object
Select empty named Focus, select camera, [CTRL-P] Set parent to Object