◍ B3BOP.RENDER← B3BOP.render
// Motion System · Portfolio · Services

Motion Lab

The B3BOP.render motion language — every card is a live sketch, a Blender build recipe, and a piece I can make for you. Warm, futuristic motion built in Blender — no After Effects, all render. Render the Future.

Available for motion work firstbrett@gmail.com @b3bop.render
Build progress0 / 50 built
BuiltLearningIdea
Method key:KeyframesGeo NodesShaderCompositorSimulation
Type
Method
Showing 50 of 50
No techniques in this slice yet. Want it built for your project? Let’s talk →

Signal Pulse

SignatureGeo NodesB3B_SignalPulse

A broadcast ping — the core B3BOP heartbeat.

Blender build
  1. One point per ring, each running the same loop with an index offset — one wave leaves as the next arrives.
  2. Rings are unit circles scaled to frac(phase + offset)·Max Radius.
  3. Brightness fades with distance travelled, which makes it read as a pulse rather than a ripple.
Signal Pulse rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Drone Idle Bob

SignatureGeo NodesB3B_DroneIdleBob

The mascot floating, alive and waiting.

Blender build
  1. Takes any geometry — drop the drone mascot in and it idles.
  2. Sway runs at twice the bob rate, so it traces a figure-of-eight rather than a straight up-down, and leans into the sway.
  3. Seamless; verified over time, since a uniform effect has no cross-point spread.
Drone Idle Bob rendered in Blender 5.2, Signal DuskRendered in Blender 5.2
B3BOP

VHS Glitch

GlitchCompositorB3B_AnalogComp

Scan-lines, RGB split, a passing dropout.

Blender build
  1. A compositor group, not a material — B3B_AnalogComp grades the whole frame, which is what sells an analog look.
  2. Horizontal RGB split (separate → translate R and B → recombine) + YCC chroma bleed, so colour smears while luma stays sharp.
  3. Scanlines, vignette, grain and a tape dropout band come from one packed mask image — ShaderNodeTexCoord does not exist inside a compositor tree.
VHS Glitch rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Audio-Reactive Bars

AudioGeo NodesB3B_LinearBars

The room listening — sound made visible.

Blender build
  1. Geo Nodes: Mesh Line → Instance on Points (cubes).
  2. Sample Sound Frequencies — drive Low/High from Index so every bar reads a different band. One node, no baking.
  3. Amplitude is tiny and unnormalised — Map Range it, tilt the highs, then clamp.
Audio-Reactive Bars rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Lofi Turntable

LoopGeo NodesB3B_LofiTurntable

A seamless spin — vinyl warmth, endless loop.

Blender build
  1. Cylinder primitive with 48 fill segments, so concentric grooves have geometry to ride on.
  2. Grooves from frac(radius·Grooves), masked off inside Label Size.
  3. Full turn per period plus a slight off-axis Wobble for the lofi feel.
Lofi Turntable rendered in Blender 5.2, Signal DuskRendered in Blender 5.2
RENDER THE FUTURE

Transmission Decode

RevealGeo NodesB3B_TransmissionDecode

Text resolving out of noise — a signal locking in.

Blender build
  1. Pieces stay full size throughout — the reveal is positional, not a scale-up.
  2. floor(Progress·Ticks) re-rolls a hashed XY offset per tick, scaled by (1−r)·Jitter: packets jump, then lock.
  3. sin(r·π)^4 · Lock Flash spikes emission exactly as each packet lands. Peak b3b_amp 1.41, inside budget.
Transmission Decode rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Particle Assemble

RevealGeo NodesB3B_ParticleAssemble

Scattered points converge into the signal — then scatter.

Blender build
  1. Distribute Points on Faces, so piece count comes from Density and not from the input topology.
  2. Coord = a hash of Index — arrival order reads as a swarm, not a sweep.
  3. The offset spirals in: radial direction rotated by (1−r)·Swirl, scaled by (1−r)·Spread, plus a Z lift.
Particle Assemble rendered in Blender 5.2, Signal DuskRendered in Blender 5.2
B3BOP

Neon Sign Flicker

GlitchShaderB3B_NeonEmission

Rain-on-neon energy — a sign buzzing to life.

Blender build
  1. Emission on a thin tube; Brightness 1.6 sits just over Glare’s 1.0 so it blooms without flooding.
  2. Flicker is a discrete blink: floor(t·Rate) holds one hashed value per tick, lit when rand > Amount.
  3. A Noise Texture was tried first and never fired — 1D Perlin sits near 0.5 and never reaches the tails.
Neon Sign Flicker rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Depth Parallax

EnvironmentKeyframesSET_DepthParallax

Layered hills drifting — humid air, real depth.

Blender build
  1. Build 3–4 flat “cards” (hills) at different depths.
  2. Move the camera laterally; nearer cards shift more (natural parallax).
  3. Add volumetric fog graded by depth; a cyan key light as the moon.
Depth Parallax loop rendered in Blender 5.2, Signal DuskRendered in Blender 5.2 . 240-frame loop

Wireframe → Render

RevealGeo NodesB3B_WireframeBuild

Viewport to final — your case-study format, in motion.

Blender build
  1. Faces below the front are deleted so the Mesh to Curve wires show through; above it, the solid mesh.
  2. A tight sin(r·π)^5 band lights the boundary between the two.
  3. Built as Geo Nodes rather than a compositor pass, so it works per-object and ships as an asset.
Wireframe → Render rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Orbit Turntable

3DGeo NodesB3B_OrbitTurntable

A wireframe world spinning — product / showcase spin.

Blender build
  1. Mesh to Curve turns the edges into curves, swept to thin tubes for the wireframe.
  2. A dot instanced on every vertex stops the wires reading bald.
  3. Full 2π orbit with a Tilt; seam delta 0.0.
Orbit Turntable rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Rain on Neon

EnvironmentGeo NodesB3B_RainFall

Falling light on a wet floor — the core mood, moving.

Blender build
  1. Drops fall on 1 − frac(phase + hash) and wrap, so the rain is endless and seamless.
  2. A drop is a stretched cube — at speed that is all a streak is.
  3. Brightness rises as it falls, so the streaks read as catching the neon.
Rain on Neon rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Ramen Steam

SignatureGeo NodesB3B_SteamRising

Steam curling off a 2am bowl — pure comfort.

Blender build
  1. Resampled curves curling on 4D noise with W on the loop phase, so the churn returns to itself.
  2. Drift widens with height, so it opens out like real steam instead of rising in a column.
  3. Thins out at the top via a smoothstep on b3b_amp.
Ramen Steam rendered in Blender 5.2, Signal DuskRendered in Blender 5.2
> RENDER THE FUTURE

Terminal Boot

RevealGeo NodesB3B_TerminalBoot

A retro-computer type-on — The Lab, booting up.

Blender build
  1. Coord = (row + column) / Rows — a whole row types left to right, then the next row down.
  2. Row index from object Z measured from the top, column from X, both normalised over Width / Height.
  3. sin(r·π)^6 · Cursor Glow is a tight cursor riding the leading edge. Peak b3b_amp 1.61.
Terminal Boot rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Hologram Scan

3DShaderB3B_HologramScan

A projected panel — scanning, flickering, alive.

Blender build
  1. frac(z·Density − t·Speed) in object Z, through a Map Range line profile = scrolling scanlines.
  2. A second band travels up Z; max() of the two, plus a Fresnel rim.
  3. Alpha drops to Base Alpha 0.22 between lines. Time comes from the View Layer frame_current attribute — no driver.
Hologram Scan rendered in Blender 5.2, Signal DuskRendered in Blender 5.2
B3BOP

Light Sweep

LoopGeo NodesB3B_LightSweep

A specular glint travelling across the mark.

Blender build
  1. Changes no geometry — it only writes b3b_amp, so it layers on top of anything.
  2. Distance to the band is measured on the circle (frac, then fold about 0.5), so the band re-enters from the far side instead of popping.
  3. Seamless: the band’s peak travels while frame 1 and frame 97 match exactly.
Light Sweep rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Synthwave Grid

EnvironmentShaderB3B_SynthwaveGrid

A neon grid floor racing to the horizon.

Blender build
  1. Lines from frac(x·Scale) distance-to-cell-edge, Map Range SMOOTHSTEP for the soft edge.
  2. Y scrolls on the clock; radial distance drives both the horizon fade and the rust → cyan ramp.
  3. All in object-local coords, so scaling the floor object does not change the grid.
Synthwave Grid rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Bokeh Drift

EnvironmentGeo NodesB3B_BokehDrift

Fireflies / embers drifting up through humid air.

Blender build
  1. Each ember rides the same loop with a hashed phase offset, so the column is continuous and still wraps.
  2. Smoothstep fades at both ends mean nothing pops into or out of existence.
  3. Geo Nodes rather than a particle sim — a sim cannot loop seamlessly or ship as a droppable asset.
Bokeh Drift rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Mode Shift

SignatureGeo NodesB3B_ModeShift

Warm ↔ electric — day into dusk, the brand breathing.

Blender build
  1. A split-flap board: tiles flip a half turn as the front sweeps the grid diagonally.
  2. Driven by LoopTime’s Ping Pong, so switching there and back is one seamless loop.
  3. b3b_band carries the diagonal, so a material can colour the two modes differently.
Mode Shift rendered in Blender 5.2, Signal DuskRendered in Blender 5.2
RendertheFuture

Kinetic Type

RevealGeo NodesB3B_KineticTypeB3B_DuskGradient_NPR

Words snapping into place — your tagline with rhythm.

Blender build
  1. String to Curves hands back one instance per character — that instance index is what staggers the letters.
  2. Letters drop in and land with the family’s sin(r·π) overshoot pop, applied on instances.
  3. Fill Curve DROPS point attributes, so b3b_amp is re-derived from the bounding box after the fill.
Kinetic Type rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Extrude Grow

3DGeo NodesB3B_ExtrudeGrow

A flat mark lifting into dimensional depth.

Blender build
  1. Coord = position projected on Axis ÷ Extent — the same sweep as WipeReveal.
  2. The cube instance is shifted +0.5 Z by Transform Geometry so it grows out of its base, not through the floor.
  3. Scale is (Thickness, Thickness, (r + pop)·Height + Base); Base keeps a footprint visible before it grows.
Extrude Grow rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Iso City Rise

3DGeo NodesB3B_IsoCityRise

A cyberpunk skyline growing out of the grid.

Blender build
  1. Coord = (x + y) / (2·Extent) — an isometric diagonal sweep.
  2. Per-building height is hash(index)^2 across Min → Max, so it is mostly low blocks with a few towers.
  3. Blocks are shifted +0.5 Z and scale only in Z, so they rise out of the ground.
Iso City Rise rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Fresnel Glass Spin

3DShaderB3B_FresnelGlass

A translucent orb with a glowing rim, turning.

Blender build
  1. Principled Transmission 1, IOR 1.45, Roughness 0.03.
  2. A Fresnel raised to ^3 drives Emission Strength, so only the silhouette lights up.
  3. Rim Glow 1.2 peaks ~1.7 — over a Glare threshold of 1.0 on the rim alone, which is the point.
Fresnel Glass Spin rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Metallic Turntable

3DShaderB3B_BrushedMetal

Reflections sweeping across worn metal.

Blender build
  1. One Noise stretched hugely along object X — Mapping Scale (1, Grain, Grain) — so it varies across the brush, not along it.
  2. That noise drives Roughness 0.14 → 0.44 plus a 0.02 bump for glints.
  3. Principled Anisotropic is avoided on purpose — EEVEE Next does not render it. Spin it with RIG_Turntable.
Metallic Turntable rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Pendulum Swing

LoopGeo NodesB3B_PendulumSwing

A hypnotic swing — the simplest perfect loop.

Blender build
  1. Rod and bob rotating on sin(2π·phase)·Max Angle — sin wraps, so the swing is seamless.
  2. b3b_amp peaks at the centre of the arc, where a real pendulum is fastest.
  3. A uniform effect: cross-point spread is legitimately 0, so it is verified over time instead.
Pendulum Swing rendered in Blender 5.2, Signal DuskRendered in Blender 5.2
B3BOP ▸ RENDER ▸ THE FUTURE ▸ B3BOP ▸ RENDER ▸ THE FUTURE ▸

Conveyor Marquee

LoopGeo NodesB3B_ConveyorMarquee

Endless scrolling type — a ticker that never stops.

Blender build
  1. u = frac((x + L/2)/L + phase) — a piece leaving one end re-enters at the other, so the belt is endless.
  2. Both ends fade symmetrically over Fade Ends, which hides the teleport.
  3. Driven by B3B_LoopTime, so it loops with no crossfade (seam delta 0.0).
Conveyor Marquee rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Wave Ripple

LoopGeo NodesB3B_WaveRipple

A sine wave travelling through a field of points.

Blender build
  1. B3B_LoopTime turns the frame into a phase that wraps: frac((f − Start) / Period · Cycles).
  2. Z displacement is sin(2π(r/Wavelength − phase)) with a radial falloff — the wave travels outward.
  3. Seamless by construction: frame 97 evaluates identically to frame 1 (measured delta 0.0).
Wave Ripple rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Radial Spectrum

AudioGeo NodesB3B_RadialSpectrum

The equalizer, wrapped into a pulsing ring.

Blender build
  1. Curve Circle → Instance on Points; rotate each bar to face outward.
  2. Sample Sound Frequencies with Low/High driven by Index, log-spaced.
  3. Ping-pong the band index so the ring reads symmetrically; emissive + bloom.
Radial Spectrum rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

VU Meter

AudioGeo NodesB3B_VUMeter

Levels dancing — teal to red on the peaks.

Blender build
  1. A row of segment cubes along X.
  2. One broad band through Sample Sound Frequencies gives the level.
  3. Compare (level > i/N) lights each segment; ramp teal → camel → red.
VU Meter rendered in Blender 5.2, Signal DuskRendered in Blender 5.2
B3BOP

Bass Hit Chroma

AudioCompositorB3B_BassChroma

The mark punching apart on every kick.

Blender build
  1. A compositor group — the kick drives a horizontal RGB split, a few-percent swell of the whole frame, and a bloom spike.
  2. Geo Nodes amplitude cannot reach the compositor. The envelope is extracted with the Mesh Line + Sample Sound Frequencies trick, read back with to_mesh, and written as keyframes on the Kick input.
  3. Verified independently: autocorrelation of the envelope peaks at lag 12, and 125 BPM at 25 fps is exactly 12 frames per beat.
Bass Hit Chroma rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Waveform Line

AudioGeo NodesB3B_WaveformLine

An oscilloscope trace riding the sound.

Blender build
  1. A line of points along X (Geo Nodes).
  2. Sample Sound Frequencies — drive Time from Index so each point reads a different moment in the track.
  3. Leave instances centred (not base-shifted) so they mirror about the axis; cyan emission + bloom.
Waveform Line rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Frequency Rings

AudioGeo NodesB3B_FrequencyRings

Ripples firing outward on every hit.

Blender build
  1. Instance a unit Curve Circle per ring, scaled to its radius; Realize → one Curve to Mesh.
  2. Time Offset = −ring × delay — outer rings show older hits, so beats visibly travel outward.
  3. Emission driven by amplitude; bloom.
Frequency Rings rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Beat Bounce

AudioGeo NodesB3B_BeatBounce

A ball hitting the floor on the kick.

Blender build
  1. Ball plus a floor ring that widens as it rises.
  2. Amplitude has no attack — build an envelope: max of N look-back taps × decayk.
  3. Drive height + squash/stretch. No simulation zone needed, so it evaluates on any frame.
Beat Bounce rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Circular Waveform

AudioGeo NodesB3B_CircularWaveform

A ring breathing with the waveform.

Blender build
  1. Curve Circle; sample the points around it.
  2. Time driven by angle, so one lap of the ring is a time window; offset each point radially by amplitude.
  3. Curve to Mesh for the stroke; emission + bloom.
Circular Waveform rendered in Blender 5.2, Signal DuskRendered in Blender 5.2
B3BOP

Strobe Pulse

AudioCompositorB3B_StrobePulse

The frame flashing to the beat — use sparingly.

Blender build
  1. Exposure flash, a small black lift and a bloom spike across the whole frame, driven by the beat.
  2. Same baked-envelope route as Bass Hit Chroma — one extraction feeds both.
  3. Use sparingly: the Lift knob keeps the frame from going fully dark between hits.
Strobe Pulse rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Cube Array Wave

3DGeo NodesB3B_CubeArrayWave

An ocean of cubes rolling in a ripple.

Blender build
  1. Grid of cubes, height from sin(2π(r/Wavelength − phase)) — a concentric wave travelling outward.
  2. Cubes shifted +0.5 Z by Transform Geometry so they grow from the floor, not through it.
  3. Seamless off B3B_LoopTime; seam delta 0.0.
Cube Array Wave rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Torus Spin

3DGeo NodesB3B_TorusSpin

A glowing ring turning in space.

Blender build
  1. Swept from two circles — a circle profile along a circle spine — so Major and Minor Radius stay real sockets.
  2. A highlight band travels round the ring from atan2 of position, folded about 0.5 so it re-enters from the far side.
  3. A full 2π turn per period; seam delta 0.0.
Torus Spin rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Chrome Sphere

3DShaderB3B_Chrome

Reflections sliding over polished metal.

Blender build
  1. Principled Metallic 1, Roughness driven by the Polish knob (0.035).
  2. A Layer Weight Facing term tints the grazing angle silver → teal, so it reads B3BOP rather than generic chrome.
  3. Needs an environment to reflect — pair with WRL_SignalDusk_Night or the emissive grid floor.
Chrome Sphere rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Exploded View

3DGeo NodesB3B_ExplodedView

Parts flying apart to show the build — then back.

Blender build
  1. Rides B3B_Reveal but driven by LoopTime’s Ping Pong, so apart-and-back is one seamless loop.
  2. Coord is a hash of Index, not distance from centre — on a sphere every point is equidistant, which made all parts flip at once.
  3. Parts fly out by (1−r)·Spread and tumble by (1−r)·Spin.
Exploded View rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Ribbon Flow

3DGeo NodesB3B_RibbonFlow

A satin band flowing through the frame.

Blender build
  1. Resampled curve displaced by a travelling sine along its Spline Parameter, then Curve to Mesh with a flat profile.
  2. A sin(t·π) taper settles both ends so the band never stops mid-air.
  3. Attributes are stored on the CURVE — Spline Parameter does not resolve after Curve to Mesh, which flattened b3b_amp to a constant until fixed.
Ribbon Flow rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Scatter Field

3DGeo NodesB3B_ScatterField

Instances strewn across a surface, twinkling.

Blender build
  1. Distribute Points on Faces, so density is independent of the input topology.
  2. Every piece runs the same loop with a hashed phase offset — the field twinkles and still wraps.
  3. Twinkle drives scale and a small Z lift together; seam delta 0.0.
Scatter Field rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Vine Growth

3DGeo NodesB3B_VineGrowth

Overgrowth creeping up — solarpunk in motion.

Blender build
  1. Coord = distance from a Seed Point ÷ Reach, then a Noise adds Wander so the growth front is not a perfect circle.
  2. Each leaf gets its own hashed heading and curls open as it lands — (1−r)·Curl on X.
  3. Leaves are icospheres flattened to 0.35 in Z.
Vine Growth rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Point Sphere

3DGeo NodesB3B_PointSphere

A globe of points, slowly turning.

Blender build
  1. Icosphere → Mesh to Points, then an icosphere instanced on each point.
  2. A full 2π revolution over the loop period — seamless because a full turn wraps exactly.
  3. Per-point hashed size jitter stops it reading as a regular lattice.
Point Sphere rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Noise Blob

3DGeo NodesB3B_NoiseBlob

An organic form breathing — living, not machined.

Blender build
  1. 4D Noise Texture displacing an icosphere along its normals.
  2. B3B_LoopTime's phase drives the noise W, so the churn returns to itself — seamless, measured seam delta 0.0.
  3. Displacement also writes b3b_amp, so the material lights the bulges.
Noise Blob rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Voronoi Fracture

3DGeo NodesB3B_VoronoiFracture

A shape breaking into cells and reassembling.

Blender build
  1. Rides B3B_Reveal — breaking apart is a reveal run backwards (Progress 1 = whole).
  2. Coord comes from Voronoi Colour, which is constant per cell, so a shard flies as one piece instead of dissolving into dust.
  3. Shards fly outward by (1−r)·Spread and tumble by (1−r)·Spin.
Voronoi Fracture rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Spectrum Grid

AudioGeo NodesB3B_SpectrumGrid

A spectrogram wall lighting up left to right.

Blender build
  1. Grid; col = Index mod N → Time Offset (history), row → frequency band.
  2. Uses Time AND Low/High as fields at once — a whole spectrogram out of one node.
  3. Instance cubes, height by amplitude; the sweep runs low → high.
Spectrum Grid rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Audio Ripple Plane

AudioGeo NodesB3B_RipplePlane

A field rippling out from the beat.

Blender build
  1. Grid; Time Offset = −distance × delay so the beat travels outward as a wave.
  2. Set Position Z by amplitude, with a radial falloff so the edges settle.
  3. Smooth-shade and colour by height.
Audio Ripple Plane rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Point Burst

AudioGeo NodesB3B_PointBurst

Points exploding outward on every hit.

Blender build
  1. Ico sphere points; normalise position for the outward direction.
  2. Envelope (peak-hold + decay) so points fire on the hit and ease back.
  3. Offset outward by rest + env × burst; emission + bloom.
Point Burst rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Pulse Grid

AudioGeo NodesB3B_PulseGrid

A whole grid breathing in time with the track.

Blender build
  1. Grid → Instance on Points (cubes).
  2. One low band through Sample Sound Frequencies scales every instance in unison.
  3. Keep instance scale well under the point spacing or the cubes fuse into a solid slab.
Pulse Grid rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Waveform Tunnel

AudioGeo NodesB3B_WaveformTunnel

Rings racing toward you — flying through the sound.

Blender build
  1. Rings receding on −Z: Curve Circles instanced along a Mesh Line.
  2. Time Offset = −ring × delay — depth becomes time.
  3. Perspective camera down the tunnel; ring radius by amplitude.
Waveform Tunnel rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Polar Spectrogram

AudioGeo NodesB3B_PolarSpectrogram

A spectrogram bent into a radar sweep — angle is time, radius is pitch.

Blender build
  1. Grid points placed by Set Position at (r·cos θ, r·sin θ); rotate each cell to its sector.
  2. Sector → Time Offset, ring → frequency band — both fields, one node.
  3. Scale cell width with radius or the sectors collide at the hub.
Polar Spectrogram rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Stacked Ridges

AudioGeo NodesB3B_StackedRidges

Rows of history stacked into a ridgeline. Every row behind is an older moment.

Blender build
  1. Rows from a Curve Line + Resample Curve, instanced along a Mesh Line.
  2. Realize Instances first, then col = i mod N and row = floor(i/N) span every row.
  3. Row → older audio, X → a time window. A sin(t·π) taper settles the edges flat.
Stacked Ridges rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Spectrum Helix

AudioGeo NodesB3B_SpectrumHelix

The spectrum wound into a spiral — bands climbing as it turns.

Blender build
  1. Points on a spiral: angle = t·turns, Z = (t−0.5)·length.
  2. Band from Index, log-spaced; bars rotated to radiate outward.
  3. Bars radiate, so a head-on camera sees them end-on — frame it 3/4.
Spectrum Helix rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Audio Orb

AudioGeo NodesB3B_AudioOrb

A planet whose latitudes ripple, each band reading its own slice of the track.

Blender build
  1. Ico sphere; normalise position for the outward direction.
  2. Latitude → frequency band — each ring of the shell reads its own range.
  3. Displace along the normal and smooth-shade. Tilt before the clamp or the shell blows up.
Audio Orb rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Noise Field

AudioGeo NodesB3B_NoiseField

A turbulent field that churns on its own and swells with the track.

Blender build
  1. Grid displaced by a 4D Noise Texture (W = Scene Time × flow) so it evolves by itself.
  2. Amplitude scales the displacement — the music drives an organic surface, not a graph.
  3. The soft counterweight to the hard-edged spectrum pieces.
Noise Field rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Spectrum Skyline

AudioGeo NodesB3B_SpectrumSkyline

A city block where every tower is a frequency band. Ties straight into the iCity work.

Blender build
  1. Grid of buildings: X → band, rows behind → older audio.
  2. Height by amplitude, varied widths so it reads as architecture not a chart.
  3. Depth rows make it a skyline instead of an equaliser.
Spectrum Skyline rendered in Blender 5.2, Signal DuskRendered in Blender 5.2
B3BOP

Reactive Wordmark

AudioGeo NodesB3B_ReactiveWordmark

The B3BOP mark breathing on the beat — the most directly on-brand of the set.

Blender build
  1. Text object → curve → mesh, fed into Geo Nodes as the input geometry.
  2. Envelope (peak-hold + decay) drives scale, or per-letter offset via Index.
  3. Keep it subtle — the mark should pulse, not wobble.
Reactive Wordmark rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Frequency Mandala

AudioGeo NodesB3B_FrequencyMandala

Radial symmetry, mirrored petals — a spectrum folded into an ornament.

Blender build
  1. Petals instanced around a circle; band from Index, ping-ponged for symmetry.
  2. Mirror across several axes so it reads as ornament rather than a meter.
  3. Petal length and emission both driven by amplitude.
Frequency Mandala rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Directional Wave

AudioGeo NodesB3B_DirectionalWave

A wave crossing the field in one direction — the flag to Ripple Plane’s pond.

Blender build
  1. Grid; Time Offset = −X × delay so the wave travels along one axis.
  2. Contrast with Audio Ripple Plane, which propagates radially from the centre.
  3. Add a cross-axis falloff so the edges settle.
Directional Wave rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Audio Scatter

AudioGeo NodesB3B_AudioScatter

Points scattered on any mesh, density and size on the beat. A modifier for other work, not a standalone piece.

Blender build
  1. Distribute Points on Faces over any input geometry.
  2. Amplitude drives density and instance scale; envelope for the pop.
  3. Drop it onto the forest, a client model, or the mascot — it travels.
Audio Scatter rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Assemble / Dissolve

RevealGeo NodesB3B_AssembleFly

Pieces fly in from nowhere and settle — or run it backwards and it’s a dissolve.

Blender build
  1. Scatter direction from a deterministic hash of Index (no Random Value node — its socket indices are unreliable).
  2. B3B_Reveal gives each piece its own 0–1; offset = dir × (1−r) × Fly Distance, plus a tumble.
  3. Reverse toggle flips r, so one group covers assemble AND dissolve.
Assemble / Dissolve rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Scan Build

RevealGeo NodesB3B_ScanBuild

A scan line crosses the frame and the geometry builds in behind it.

Blender build
  1. Coord = position projected on Axis, normalised over Extent.
  2. B3B_Reveal drives piece scale; sin(r·π)^3 makes a tight band that peaks mid-transition.
  3. That band feeds b3b_amp, so emission spikes exactly at the leading edge.
Scan Build rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Grow Radial

RevealGeo NodesB3B_GrowRadial

Growth spreading outward from a seed point, like something taking root.

Blender build
  1. Coord = distance from a Seed Point, divided by Radius and clamped.
  2. Radial counterpart to Wipe Reveal — same core, different Coord.
  3. sin(r·π) adds an overshoot pop as each piece lands.
Grow Radial rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

Wipe Reveal

RevealGeo NodesB3B_WipeReveal

A straight wipe across any object, with a small pop as each piece lands.

Blender build
  1. Coord = position projected on an Axis, normalised over Extent.
  2. B3B_Reveal turns that into a per-piece 0–1 with stagger and easing.
  3. sin(r·π) adds the overshoot as each piece arrives.
Wipe Reveal rendered in Blender 5.2, Signal DuskRendered in Blender 5.2

LED Face Screen

SignatureGeo NodesB3BOP_LED_Screen

The mascot’s face, one LED at a time — blinks, dissolves, scrolls, glitches.

Blender build
  1. Faces are written once in code (faces.py) and baked to a dot map: 1 pixel = 1 LED.
  2. A 30×20 grid samples it per dot; face A → B dissolves dot by dot on a random per-dot timing.
  3. Same grid, more modes: scrolling text (raycast into letters), glitch rows, audio EQ bars.
B3BOP bot LED face screen loop: blink, dissolve to happy, to love, back to neutralRendered in Blender 5.2 . 7.5 s loop