← Back to CoursesBlendercursus
Blendercursus
86. Het denkmodel
schoolium · Blendercursus
Blendercursus
86. Het denkmodel
IDeel I · Geometry Nodes

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.

8× uitleg4× ontleed3× naslag1× zelf doen1 oefenbestand12 beelden
Een formule die tegelijk over duizend punten wordt uitgerekend, in plaats van duizend keer apart hetzelfde te doen.RECCONCEPT00:00:00:00schoolium
beeld-i-veld-van-puntenEen formule die tegelijk over duizend punten wordt uitgerekend, in plaats van duizend keer apart hetzelfde te doen.
Uitleg · 86.1

Van object naar regel

1/16

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.

De Geometry Nodes-workspace: links de node-boom, rechts de viewport die het resultaat live toont.RECBLENDER 5.1 · WS-GEOMETRY-NODES00:00:00:001920×1080
shot-ws-geometry-nodesDe Geometry Nodes-workspace: links de node-boom, rechts de viewport die het resultaat live toont.
Uitleg · 86.2

Wat een field is

2/16

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.

Het ruitje op een aangesloten socket is het visuele teken van een field: dezelfde node, een andere uitkomst per element.RECBLENDER 5.1 · GN-SOCKET-VORMEN00:00:00:001920×1080
shot-gn-socket-vormenHet ruitje op een aangesloten socket is het visuele teken van een field: dezelfde node, een andere uitkomst per element.
Ontleed · 86.3

Twee soorten socket

3/16
shot-gn-socket-vormen
RECBLENDER 5.1 · GN-SOCKET-VORMEN00:00:00:001920×1080
Wijs een nummer aan: de camera zoomt in op dat onderdeel. Klik om vast te zetten.
  1. 1
    Rondje -- 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).

  2. 2
    Ruitje -- 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.

  3. 3
    Ongekoppelde 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.

  4. 4
    Verbindingslijn

    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.

Naslag · 86.4

Voorbeeld: de Position-node

4/16

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.

Position GeometryNodeInputPosition
Retrieve a vector indicating the location of each element
Ingangen–
UitgangenPosition (VECTOR)
Uitleg · 86.5

De vier domains

5/16

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.

Dezelfde kubus, vier keer geteld — één telling per domain, zie het volgende blad voor de exacte aantallen.RECCONCEPT00:00:00:00schoolium
beeld-i-domains-kubusDezelfde kubus, vier keer geteld — één telling per domain, zie het volgende blad voor de exacte aantallen.
Ontleed · 86.6

Een kubus, vier tellingen

6/16
beeld-i-domains-kubus
RECCONCEPT00:00:00:00schoolium
Wijs een nummer aan: de camera zoomt in op dat onderdeel. Klik om vast te zetten.
  1. 1
    8 points

    De acht hoekpunten van de kubus -- het domain waarop Position en de meeste transformaties werken.

  2. 2
    12 edges

    De twaalf ribben -- het domain van bijvoorbeeld Edge Angle (de hoek tussen de twee faces aan weerskanten).

  3. 3
    6 faces

    De zes zijvlakken -- het domain van Face Area en van materiaal-toewijzing.

  4. 4
    24 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.

Uitleg · 86.7

Op een ander domain zetten: de Evaluate on Domain-node

7/16

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.

De Evaluate on Domain-node: een field op Face-domain wordt uitgemiddeld naar Point-domain.RECBLENDER 5.1 · GN-EVALUATE-ON-DOMAIN00:00:00:001920×1080
shot-gn-evaluate-on-domainDe Evaluate on Domain-node: een field op Face-domain wordt uitgemiddeld naar Point-domain.
Naslag · 86.8

Evaluate on Domain en Evaluate at Index

8/16

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.

Evaluate on Domain GeometryNodeFieldOnDomain
Retrieve values from a field on a different domain besides the domain from the context
IngangenValue (VALUE)
UitgangenValue (VALUE)
Evaluate at Index GeometryNodeFieldAtIndex
Retrieve data of other elements in the context's geometry
IngangenValue (VALUE), Index (INT)
UitgangenValue (VALUE)
Uitleg · 86.9

Attributes: ingebouwd tegenover eigen

9/16

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.

Elke kolom in de Spreadsheet is een attribute — position en normal zijn ingebouwd, een eigen naam ernaast zou een custom attribute zijn.RECBLENDER 5.1 · EDITOR-SPREADSHEET00:00:00:001920×1080
shot-editor-spreadsheetElke kolom in de Spreadsheet is een attribute — position en normal zijn ingebouwd, een eigen naam ernaast zou een custom attribute zijn.
Naslag · 86.10

Named Attribute en Store Named Attribute

10/16

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.

Named Attribute GeometryNodeInputNamedAttribute
Retrieve the data of a specified attribute
IngangenName (STRING)
UitgangenAttribute (VALUE), Exists (BOOLEAN)
Store Named Attribute GeometryNodeStoreNamedAttribute
Store the result of a field on a geometry as an attribute with the specified name
IngangenGeometry (GEOMETRY), Selection (BOOLEAN), Name (STRING), Value (VALUE)
UitgangenGeometry (GEOMETRY)
Ontleed · 86.11

De Spreadsheet-editor lezen

11/16
shot-editor-spreadsheet
RECBLENDER 5.1 · EDITOR-SPREADSHEET00:00:00:001920×1080
Wijs een nummer aan: de camera zoomt in op dat onderdeel. Klik om vast te zetten.
  1. 1
    Domain-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.

  2. 2
    Component-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.

  3. 3
    Kolommen = 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.

  4. 4
    Node-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.

  5. 5
    Rijteller

    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.

Uitleg · 86.12

De Spreadsheet in de praktijk: hoe je een probleem opspoort

12/16

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.

Een Viewer-node gekoppeld aan een tussenstap in de boom, met de Spreadsheet ernaast die precies dat resultaat toont.RECBLENDER 5.1 · GN-VIEWER-DEBUG00:00:00:001920×1080
shot-gn-viewer-debugEen Viewer-node gekoppeld aan een tussenstap in de boom, met de Spreadsheet ernaast die precies dat resultaat toont.
Uitleg · 86.13

Volgorde van uitvoering, en waarom een node soms niets lijkt te doen

13/16

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.

Dezelfde Viewer-koppeling helpt hier ook: zet hem op de node vlak vóór de plek waar je een effect verwacht, en zie meteen of hij daar al klopt.RECBLENDER 5.1 · GN-VIEWER-DEBUG00:00:00:001920×1080
shot-gn-viewer-debugDezelfde Viewer-koppeling helpt hier ook: zet hem op de node vlak vóór de plek waar je een effect verwacht, en zie meteen of hij daar al klopt.
Ontleed · 86.14

Van modifier tot Spreadsheet: het hele pad

14/16
shot-ws-geometry-nodes
RECBLENDER 5.1 · WS-GEOMETRY-NODES00:00:00:001920×1080
Wijs een nummer aan: de camera zoomt in op dat onderdeel. Klik om vast te zetten.
  1. 1
    Geometry 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”).

  2. 2
    Geometry Node Editor

    De boom zelf: Group Input links, Group Output rechts, alles ertussen de regel die de geometrie omzet (hier nog een lege boom).

  3. 3
    3D Viewport

    Toont steeds het eindresultaat van Group Output -- verandert live mee terwijl je in de boom werkt.

  4. 4
    Spreadsheet

    Toont de rauwe data van elk gekozen tussenpunt -- de enige plek waar je de attributes zelf ziet, in plaats van alleen het gerenderde resultaat.

Uitleg · 86.15

Een laatste denkfout om te vermijden

15/16

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.

Evaluate on Domain herrekent een field per domain in één node — het alternatief voor een handmatige lus over elk element.RECBLENDER 5.1 · GN-EVALUATE-ON-DOMAIN00:00:00:001920×1080
shot-gn-evaluate-on-domainEvaluate on Domain herrekent een field per domain in één node — het alternatief voor een handmatige lus over elk element.
Zelf doen · 86.16

Zelf proberen: een field volgen van node tot Spreadsheet

16/16

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.

  1. 1Open blends/start_denkmodel.blend: een UV Sphere met een lege Geometry Nodes-modifier.
  2. 2Voeg een Position-node toe en een Vector Math-node op Length om de afstand tot (0,0,0) te krijgen.
  3. 3Sluit die field aan op Set Position > Offset (Z) zodat punten verder van het midden meer omhoog komen.
  4. 4Zet een Viewer-node net na de Vector Math-node en open de Spreadsheet-editor op Point-domain.
  5. 5Kies in de Spreadsheet-editor achtereenvolgens Point, Face en Face Corner als domain en kijk hoe het aantal rijen elke keer verandert.
Gelukt als…Een bolvormig object dat naar de randen toe omhoog bolt, en een duidelijk beeld van hoe hetzelfde field-resultaat er per domain anders uitziet in de Spreadsheet.
Sleep om rond te draaien
001
start_denkmodel.blend
VeldBol1 materialen482 vertices