3D Mobius - Boy's Surface (Apéry & Bryant-Kusner) in Geometry Nodes
Overview
This package contains two standalone Geometry Nodes node trees implementing Boy’s surface—a smooth, non-orientable immersion of the real projective plane ℝℙ² with 3-fold rotational symmetry:
-
Math_Visualization(Apéry Formulation): Explicit trigonometric evaluation over a parameterized domain grid (u,v)(u, v)(u,v). -
Math_Visualization.001(Bryant–Kusner Formulation): Rational complex polynomial mapping over a polar disk (r,θ)(r, θ)(r,θ), followed by ℝ³ spherical inversion.
Accompanying PDF reference sheets map each mathematical equation directly to its corresponding colored frame inside the node editor.
What is Boy's Surface:
Discovered by Werner Boy in 1901, it is an immersion of the real projective plane (ℝℙ²) in 3D space — topologically equivalent to sewing a Möbius strip to the boundary of a disk without any pinch points or sharp singularities.
How it works (Two Complete Implementations Included):
-
Apéry Parameterization: Generates the surface from a parametric (u, v) grid using François Apéry's explicit trigonometric equations, organized into a shared denominator branch
D(u, v) = 2 − √2·sin(3u)·sin(2v)and dedicated X, Y, and Z coordinate branches. -
Bryant–Kusner Parameterization: Maps a polar grid (r, θ) on the complex unit disk (
w = r·e^(iθ)) into Robert Bryant and Rob Kusner's Willmore-energy-minimizing immersion. The node tree explicitly separates the Real and Imaginary parts of the complex denominatorD(w) = w⁶ + √5·w³ − 1and coordinate numerators, performs ℝ³ spherical inversion (P = g / ||g||²), and constructs a dual-offset shell (±0.001) with flipped faces to eliminate shading seams across the non-orientable Möbius twist.
Geometry Nodes Setup & Controls
-
Resolution (
Valuenode in FrameResolution): Controls grid density (X×YX \times YX×Y). Higher values produce smoother self-intersection curves and tunnel silhouettes. -
Domain Grid (
Gridnode in FrameBase Grid):- Size X=2πX = 2\piX=2π (≈6.283185\approx 6.283185≈6.283185), Size Y=1.0Y = 1.0Y=1.0.
- Shifted internally to map X∈[−π,π]X \in [-\pi, \pi]X∈[−π,π] (polar angle θ\thetaθ) and Y∈[0,1]Y \in [0, 1]Y∈[0,1] (radial distance rrr on the complex disk).
-
Shape Calibration (Bryant–Kusner
ScaleFrames):-
XXX & YYY Branches (
Math.064&Math.043): Multiplier kkk (default:-1.650). Governs the radial span and thickness of the 3 outer underbranching lobes. -
ZZZ Branch (
Math.079): Offset ccc (default:0.850). Shifts the center of the spherical inversion, governing the scale of the central triangular cap and the aperture of the 3 internal tunnels.
-
XXX & YYY Branches (
-
Non-Orientable Dual Shell:
-
Uses dual ±0.001\pm 0.001±0.001 offsets with face flipping and side-wall stripping (
Delete Geometry: Not Top). This resolves the normal-inversion boundary artifact across the Möbius twist without requiring heavy post-boolean operations.
-
Uses dual ±0.001\pm 0.001±0.001 offsets with face flipping and side-wall stripping (
-
Surface Attributes:
-
Outputs
FlowUV(r2r^2r2), a normalized scalar field running smoothly from0.0at the triple point to1.0along the outer perimeter seam, accessible in the Shader Editor via anAttributenode.
-
Outputs
Shader & EEVEE 5.2 Recommended Settings
For translucent/X-ray styling with internal tunnel visibility:
- Render Engine: EEVEE (Blender 4.2+ / 5.2)
-
Surface Settings (Material Properties):
-
Render Method:Blended (avoids dithered noise across gradient alpha) -
Backface Culling:Camera: ON (prevents double-rendering of the ±0.001\pm 0.001±0.001 dual shells) -
Transparency Overlap:ON (ensures all 3–4 internal overlapping layers composite smoothly) -
Shadows / Ray Visibility:Uncheck Shadow on the object to prevent the inner shell from self-shadowing the outer skin.
-
Discover more products like this
Shader topology math visualization boys surface animation eevee next mobius strip abstract moebius geometry_nodes educational procedural