Hoofdstuk 86Het denkmodel
Fields, domains en attributes -- waar Geometry Nodes anders werkt dan alles ervoor
Geometry Nodes is geen extra Modifier met wat knoppen: het is een eigen manier van denken over een mesh. Wie modelleert door met de hand vertices te verplaatsen, denkt in objecten. Wie een node-boom bouwt, denkt in regels die tegelijk voor duizend punten gelden. Dat verschil is waar de meeste mensen op vastlopen, en waar dit hoofdstuk de tijd voor neemt.
RECCONCEPT00:00:00:00schooliumVan object naar regel
Zet je in Edit Mode drie vertices een stukje omhoog, dan verplaats je die drie vertices. Bouw je in Geometry Nodes een Set Position-node die de hoogte koppelt aan de afstand tot het middelpunt, dan beschrijf je een regel: elk punt gaat omhoog naar gelang hoe ver het van het midden zit. Die regel geldt voor 10 punten net zo goed als voor 10 miljoen, en blijft werken als de onderliggende mesh verandert.
Dat is de kern van Geometry Nodes: je schrijft niet wat er moet gebeuren met specifieke geometrie, je schrijft hoe iets wordt afgeleid uit wat er al is. De node-boom draait die afleiding telkens opnieuw uit zodra er iets verandert -- dat is meteen ook waarom Geometry Nodes traag kan worden bij een complexe boom op een zware mesh: elke wijziging herrekent de hele regel.
RECBLENDER 5.1 · WS-GEOMETRY-NODES00:00:00:001920×1080Wat een field is
Een gewone waarde -- een getal, een vector, een kleur -- is overal in Blender hetzelfde: een Float, een Vector. Een field (veld) is iets anders: het is geen waarde, maar een berekening die per element anders uitkomt. De Position-node bijvoorbeeld levert geen ene positie, maar een field dat, uitgerekend voor punt 1, de positie van punt 1 geeft, en voor punt 5000 de positie van punt 5000.
Sluit je die Position-field aan op Set Position > Offset, dan wordt de field voor elk punt apart uitgerekend op het moment dat de node-boom draait. Vermenigvuldig je die field met Noise Texture, dan krijg je een nieuwe field die per punt weer anders is. Fields stapelen dus: een lange keten van nodes bouwt een grote, per-element-afhankelijke formule op, zonder dat er ooit een lus aan te pas komt -- dat is precies waarom hetzelfde stukje boom foutloos werkt op 12 punten en op 1,2 miljoen.
RECBLENDER 5.1 · GN-SOCKET-VORMEN00:00:00:001920×1080Twee soorten socket

- 1Rondje -- vaste waarde
Een gewone socket met een cirkel: hier staat een vaste waarde in, gelijk voor de hele node-boom (bv. Radius op de Ico Sphere-node).
- 2Ruitje -- field-socket
Een socket die een field toont als een ruit (diamant) zodra er een field op is aangesloten -- hier de Rotation-uitgang van Curve to Points, die naar Instance on Points loopt.
- 3Ongekoppelde field-socket
Blijft die socket leeg, dan toont hij een invulveld met een vaste waarde -- een field-socket kan dus ook gewoon een constante zijn, tot je er een node op aansluit. Hier de nog niet aangesloten Selection-ingang van Instance on Points.
- 4Verbindingslijn
Een dunne lijn tussen twee field-sockets: de field wordt niet uitgerekend op het moment van tekenen, alleen de formule wordt doorgegeven -- pas bij het domain waarop hij landt wordt hij per element geevalueerd.
Voorbeeld: de Position-node
De Position-node (positie) is de eenvoudigste field die er is: ze levert gewoon de coordinaten van elk element terug, geen enkele invoer nodig. Rechtstreeks uit Blender 5.1 uitgelezen.
| Retrieve a vector indicating the location of each element | |
| Ingangen | – |
|---|---|
| Uitgangen | Position (VECTOR) |
De vier domains
Een mesh bestaat niet uit een soort element. Blender onderscheidt vier domains (domeinen) waarop een attribute kan leven:
- Point (punt) -- een vertex op een mesh, een controlepunt op een curve, of een punt in een pointcloud.
- Edge (rand) -- de verbinding tussen twee punten op een mesh.
- Face (vlak) -- een polygoon, omringd door edges.
- Corner (hoek, ook wel Face Corner) -- het punt waar een face en een edge samenkomen; hetzelfde vertex heeft zoveel corners als er faces op aansluiten. UV-coordinaten leven bijvoorbeeld altijd op corners, nooit op points, want dezelfde vertex kan in elke aangrenzende face een andere UV-positie hebben (de naad bij een UV seam).
Een field kent zijn domain niet uit zichzelf -- pas de node waarop hij landt bepaalt op welk domain hij wordt uitgerekend. Dezelfde Position-field op een Set Position (die op points werkt) en op een node die corners verwacht, levert dus een ander aantal uitkomsten: een per point tegenover een per corner.
RECCONCEPT00:00:00:00schooliumEen kubus, vier tellingen

- 18 points
De acht hoekpunten van de kubus -- het domain waarop Position en de meeste transformaties werken.
- 212 edges
De twaalf ribben -- het domain van bijvoorbeeld Edge Angle (de hoek tussen de twee faces aan weerskanten).
- 36 faces
De zes zijvlakken -- het domain van Face Area en van materiaal-toewijzing.
- 424 corners
Elke face heeft 4 corners (4 x 6 = 24) -- meer dan er points zijn, want elk hoekpunt telt hier drie keer mee, een keer per aangrenzende face. Dit kwadrant toont de volledige structuur (Vertices+Edges+Faces samen), niet apart de corners.
Op een ander domain zetten: de Evaluate on Domain-node
Wil je een field die op faces leeft (bv. Face Area) gebruiken om punten te kleuren, dan moet die waarde eerst naar het Point-domain omgezet worden. Dat heet in de cursus en in Blenders eigen documentatie evalueren op een ander domain, en de node die dat doet heet letterlijk Evaluate on Domain. Ze neemt een field, en een doeldomain, en interpoleert of middelt de waarde naar het nieuwe aantal elementen.
De richting maakt uit. Van een grof domain naar een fijn domain (face naar corner) is eenduidig: elke corner van die face krijgt gewoon dezelfde waarde. Van een fijn domain naar een grof domain (point naar face) moet Blender middelen: de waarde van een face wordt het gemiddelde van de waarden op zijn hoekpunten. Vergeet je dat, dan lijkt een field soms willekeurig anders uit te komen dan verwacht -- niet omdat de node kapot is, maar omdat de conversie tussen domains een stap is die je zelf moet begrijpen.
RECBLENDER 5.1 · GN-EVALUATE-ON-DOMAIN00:00:00:001920×1080Evaluate on Domain en Evaluate at Index
Twee nauw verwante nodes: de eerste verplaatst een field naar een ander domain, de tweede haalt de waarde van een specifiek element op -- nuttig om bijvoorbeeld de positie van punt 0 als losse, niet-field waarde te lezen.
| Retrieve values from a field on a different domain besides the domain from the context | |
| Ingangen | Value (VALUE) |
|---|---|
| Uitgangen | Value (VALUE) |
| Retrieve data of other elements in the context's geometry | |
| Ingangen | Value (VALUE), Index (INT) |
|---|---|
| Uitgangen | Value (VALUE) |
Attributes: ingebouwd tegenover eigen
Een attribute is een field die een naam heeft gekregen en op de geometrie is opgeslagen -- het verschil tussen een berekening die onderweg door de node-boom stroomt, en een berekening die blijft staan totdat iets hem overschrijft of verwijdert. Blender kent een handvol ingebouwde attributes die op vrijwel elke mesh aanwezig zijn: position (Point), normal (afgeleid, altijd op te vragen), id (een stabiel volgnummer per punt, blijft kloppen na herschikking), radius (voor curves en pointclouds), en material_index (Face).
Daarnaast kan je zelf custom attributes aanmaken met Store Named Attribute, onder een zelfgekozen naam. Een eigen naam die toevallig gelijk is aan een ingebouwde (bv. zelf iets position noemen) overschrijft die ingebouwde attribute -- krachtig, maar ook een klassieke bron van een mesh die er ineens anders uitziet zonder duidelijke oorzaak in de boom zelf.
RECBLENDER 5.1 · EDITOR-SPREADSHEET00:00:00:001920×1080Named Attribute en Store Named Attribute
De twee nodes die attributes lezen en schrijven -- het venster naar de opgeslagen data van een geometrie, tegenover de veel grotere groep nodes die alleen fields doorgeven zonder iets op te slaan.
| Retrieve the data of a specified attribute | |
| Ingangen | Name (STRING) |
|---|---|
| Uitgangen | Attribute (VALUE), Exists (BOOLEAN) |
| Store the result of a field on a geometry as an attribute with the specified name | |
| Ingangen | Geometry (GEOMETRY), Selection (BOOLEAN), Name (STRING), Value (VALUE) |
|---|---|
| Uitgangen | Geometry (GEOMETRY) |
De Spreadsheet-editor lezen

- 1Domain-tabs
In de zijbalk kies je welk domain je bekijkt: Vertex, Edge, Face, Face Corner, Curve, Instance -- dezelfde geometrie toont hier telkens een andere rijenlijst.
- 2Component-selector
Bij een gemengde geometrie (mesh en curve en instances in een stroom) kies je hier welk component-type je spreadsheet toont -- bij een zuivere mesh zoals hier valt deze knop weg, er is dan maar één component.
- 3Kolommen = attributes
Elke kolom is een attribute die op dat domain leeft: position, normal, en elke custom attribute die je zelf met Store Named Attribute hebt aangemaakt.
- 4Node-koppeling
De Spreadsheet toont het resultaat vanaf de node die je hebt aangeklikt (het Viewer-icoon of Ctrl+Shift+klik) -- niet automatisch het eindresultaat van de hele boom. In dit schermdeel zit geen Node Editor; het vastzet-icoon hier bepaalt of de weergave aan die keuze gekoppeld blijft.
- 5Rijteller
Onderaan staat het totaal aantal rijen (elementen) -- de eerste plek om te checken of een selectie of filter wel het aantal elementen oplevert dat je verwacht.
De Spreadsheet in de praktijk: hoe je een probleem opspoort
Een node-boom die niets doet is bijna altijd een van drie dingen: een selectie die leeg uitkomt (0 rijen in de Spreadsheet in plaats van het verwachte aantal), een attribute op het verkeerde domain (je zoekt crease op Point-domain terwijl hij op Edge-domain staat), of een field die door een eerdere node al is overschreven voordat hij bij de node komt waar je hem verwacht.
De vaste volgorde om dat op te sporen: klik het Viewer-icoontje (Ctrl+Shift+klik op een node) net na de node die verdacht is, open de Spreadsheet-editor, kies het juiste domain bovenin, en kijk of het aantal rijen en de waarden in de kolommen kloppen met wat je verwacht. Werk zo van voor naar achter door de boom -- de eerste node waar de Spreadsheet iets anders toont dan verwacht, is de node waar het probleem zit.
RECBLENDER 5.1 · GN-VIEWER-DEBUG00:00:00:001920×1080Volgorde van uitvoering, en waarom een node soms niets lijkt te doen
Een node-boom voert niet uit van links naar rechts, stap voor stap tegelijk, zoals een filmstrip. Blender bouwt de hele boom om tot een berekening en rekent die pas uit vanaf de node waar de uitkomst nodig is (meestal Group Output), terugwerkend naar alle nodes waarvan die uitkomst afhangt. Een node die nergens via een keten van verbindingen bij de output uitkomt, wordt niet uitgerekend -- ook al staat hij midden in de boom en lijkt hij verbonden.
De meest voorkomende reden dat een node niets doet: zijn uitvoer is wel aangesloten, maar een node verderop in de keten overschrijft dezelfde attribute opnieuw (bv. twee keer na elkaar Store Named Attribute met dezelfde naam -- de tweede wint altijd). Andere klassiekers: een Switch-node die per ongeluk op de verkeerde tak staat, of een field die is aangesloten op een socket die alleen een vaste waarde accepteert (een rondje, geen ruitje) en dus stilzwijgend wordt teruggebracht tot een enkele waarde.
RECBLENDER 5.1 · GN-VIEWER-DEBUG00:00:00:001920×1080Van modifier tot Spreadsheet: het hele pad

- 1Geometry Nodes-modifier
In de Modifier Properties van het object staat welke node-boom actief is en welke invoerwaarden hij meekrijgt (hier nog leeg, vóór “Add Modifier”).
- 2Geometry Node Editor
De boom zelf: Group Input links, Group Output rechts, alles ertussen de regel die de geometrie omzet (hier nog een lege boom).
- 33D Viewport
Toont steeds het eindresultaat van Group Output -- verandert live mee terwijl je in de boom werkt.
- 4Spreadsheet
Toont de rauwe data van elk gekozen tussenpunt -- de enige plek waar je de attributes zelf ziet, in plaats van alleen het gerenderde resultaat.
Een laatste denkfout om te vermijden
Wie voor het eerst met Geometry Nodes werkt, zoekt vaak naar een manier om door de punten heen te lopen zoals in een script -- een lus met een teller. Die lus bestaat niet, en is ook niet nodig: elke node is al de lus, toegepast op elk element van het domain waarop hij werkt. In plaats van voor elk punt, doe dit denk je in Geometry Nodes deze formule geldt voor elk punt -- het resultaat is hetzelfde, maar de node-boom blijft leesbaar en snel, ook bij miljoenen elementen.
Er zijn wel expliciete lus-achtige nodes -- Repeat Zone en Simulation Zone, waarbij het resultaat van de ene doorloop de invoer van de volgende wordt (hoofdstuk 88 werkt dat uit) -- maar dat is een uitzondering voor opeenvolgende stappen, niet de standaardmanier om over geometrie te itereren.
RECBLENDER 5.1 · GN-EVALUATE-ON-DOMAIN00:00:00:001920×1080Zelf proberen: een field volgen van node tot Spreadsheet
Bouw een korte keten die de afstand van elk punt tot het object-midden berekent, en volg die field met de Spreadsheet-editor van domain tot domain om te zien wat er bij elke stap verandert.
- 1Open blends/start_denkmodel.blend: een UV Sphere met een lege Geometry Nodes-modifier.
- 2Voeg een Position-node toe en een Vector Math-node op Length om de afstand tot (0,0,0) te krijgen.
- 3Sluit die field aan op Set Position > Offset (Z) zodat punten verder van het midden meer omhoog komen.
- 4Zet een Viewer-node net na de Vector Math-node en open de Spreadsheet-editor op Point-domain.
- 5Kies in de Spreadsheet-editor achtereenvolgens Point, Face en Face Corner als domain en kijk hoe het aantal rijen elke keer verandert.