Geometry Types¶
Understanding how 3D geometry is represented in Nodo helps you make better procedural models and use nodes effectively.
Mesh Structure¶
Nodo works with triangle meshes - the most common 3D geometry representation.
Basic Components¶
Vertex (Point)
↓
Edge (Line between 2 vertices)
↓
Face (Triangle from 3 vertices)
↓
Mesh (Collection of connected faces)
Vertices (Points)¶
What are Vertices?¶
Vertices (singular: vertex) are points in 3D space with (x, y, z) coordinates.
Vertex = (x, y, z)
Example:
v1 = (0.0, 0.0, 0.0) # Origin
v2 = (1.0, 0.0, 0.0) # 1 unit on X axis
v3 = (0.0, 1.0, 0.0) # 1 unit on Y axis
Vertex Attributes¶
Vertices can store additional data:
- Position (required): x, y, z coordinates
- Normal: Direction for smooth shading
- Color: RGB or RGBA values
- UV: Texture coordinates
- Custom: Any data you define
Access in expressions:
@P # Position vector (x, y, z)
@P.x # X coordinate
@P.y # Y coordinate
@P.z # Z coordinate
@N # Normal vector
@Cd # Color
Edges¶
What are Edges?¶
Edges connect two vertices, forming the "skeleton" of your mesh.
Edge = (vertex_index_1, vertex_index_2)
Example:
e1 = (0, 1) # Edge from vertex 0 to vertex 1
e2 = (1, 2) # Edge from vertex 1 to vertex 2
Edge Uses¶
- Wireframe rendering - Show mesh structure
- Smoothing - Define hard/soft edges
- Selections - Select edge loops for operations
- Beveling - Round off corners
Faces (Triangles)¶
What are Faces?¶
Faces are flat surfaces defined by 3 or more vertices. In Nodo (via Manifold), all faces are triangles.
Triangle vs Quad¶
Traditional modeling: Often uses quads (4-vertex faces)
Nodo approach: Everything is triangles internally - Simpler math - Guaranteed planar - Better for boolean operations - Game/render engines use triangles anyway
Note: Some display modes may show quads visually, but they're pairs of triangles.
Face Normals¶
Each face has a normal - a vector pointing "outward" from the surface:
Determines: - Which side is "front" (visible) - Lighting calculations - Backface culling
Right-hand rule: Vertices in counter-clockwise order → normal points toward you
Mesh Types¶
1. Manifold Mesh¶
Definition: A "watertight" mesh with no holes, proper edges, valid topology.
Properties: - Every edge connects exactly 2 faces - No isolated vertices - No duplicate faces - Defines a closed volume
Why it matters: - Required for boolean operations - Defines inside/outside - Can calculate volume
Nodo uses Manifold library for robust boolean operations - prefers manifold meshes.
2. Non-Manifold Mesh¶
Definition: Mesh with topological issues.
Common problems: - Holes or gaps - Edges with 1 or 3+ faces - Isolated vertices or faces - Overlapping geometry
Results: - Booleans may fail - Normals may flip - Rendering artifacts
Fix: - Check geometry carefully - Use Merge node (can weld vertices) - Ensure generators create clean topology
3. Boundary Mesh¶
Definition: Mesh with open edges (not closed).
Example:
Use: - Planes, grids (intentionally open) - Partial geometry - Not ideal for booleans
Geometry Attributes¶
Attributes store data on vertices, faces, or edges.
Point (Vertex) Attributes¶
Stored per-vertex:
P Position (x, y, z)
N Normal vector
Cd Color (r, g, b)
uv UV coordinates
id Vertex ID
[custom] Any data you create
Access:
Face Attributes¶
Stored per-triangle:
Use: - Material IDs for multi-material objects - Face selections - Data-driven face operations
Primitive Attributes¶
Stored per-primitive (mesh/object):
Coordinate Systems¶
Local vs World Space¶
Local (Object) Space: - Origin at object's pivot - Coordinates relative to object - What you see in node parameters
World Space: - Global coordinate system - Absolute positions in scene - Used for final placement
Example:
Transform Affects Space¶
Transform node changes object's world position:
But vertex local coords unchanged!
Topology vs Geometry¶
Geometry¶
What it is: The actual shape - vertex positions, face shapes
Changes: - Move vertices - Scale object - Deform mesh
Example:
Topology¶
What it is: The connectivity - how vertices connect to form faces
Changes: - Add/remove faces - Subdivide - Boolean operations - Merge vertices
Example:
Before: Cube with 8 vertices, 12 faces
After: Subdivided cube with 26 vertices, 48 faces (different topology)
Key Point: Some operations change topology, some only geometry.
Common Mesh Operations¶
Adding Geometry¶
Nodes that create: - Sphere, Box, Cylinder → Generate new meshes - Grid, Line → Create planar/linear geometry
Modifying Geometry¶
Nodes that change shape (topology unchanged): - Transform - Move/rotate/scale - Bend, Twist - Deform - Smooth (some modes) - Relax positions
Modifying Topology¶
Nodes that change connectivity: - Subdivide - Add faces - Extrude - Extend faces - Boolean - Cut/combine meshes - Group Delete - Remove faces
Combining Geometry¶
Nodes that merge: - Merge - Combine meshes (optional welding) - Boolean Union - Merge with CSG - Array - Create copies
Normals¶
What are Normals?¶
Normals are vectors indicating surface direction.
Face Normals¶
- Perpendicular to triangle surface
- Automatic from vertex order
- Used for backface culling
Vertex Normals¶
- Averaged from adjacent face normals
- Used for smooth shading
- Can be manually set for hard edges
Smooth vs Flat Shading¶
Flat Shading: - Uses face normals only - Faceted appearance - Good for hard-surface models
Smooth Shading: - Interpolates vertex normals - Rounded appearance - Good for organic shapes
In Nodo: - Smooth node can recalculate normals - Display settings control shading mode
UV Coordinates¶
What are UVs?¶
UV coordinates map 3D surface to 2D texture space.
Range: Usually 0.0 to 1.0 in U and V
Use: - Apply images as textures - Material mapping - Procedural patterns
In Nodo: - Some generators create UVs automatically - UV unwrapping (advanced feature, future)
Inside vs Outside¶
Winding Order¶
Vertex order determines face direction:
Right-hand rule: - Curl fingers in vertex order - Thumb points in normal direction
Normals Point Outward¶
Properly oriented mesh: - All normals point away from solid - Defines "inside" vs "outside" - Essential for booleans
Flip normals: Reverses inside/outside
Manifold Requirements¶
For robust boolean operations, meshes should be:
✅ Closed - No holes or open edges ✅ Non-self-intersecting - No overlapping faces ✅ Proper winding - Consistent face orientation ✅ Two-manifold - Each edge has exactly 2 faces ✅ No duplicate vertices - Welded properly
Check: - Sphere ✅ (closed ball) - Box ✅ (closed cube) - Plane ❌ (open, has boundary) - Overlapping cubes ❌ (self-intersecting)
Performance Considerations¶
Vertex Count¶
More vertices = more computation:
Balance: - Use low poly for iteration - Increase detail for final output
Triangle Count¶
Directly affects: - Boolean operation speed - Rendering performance - File size
Optimize: - Only subdivide where needed - Use LOD (Level of Detail) for distance
Attribute Overhead¶
Each attribute adds memory:
Best practice: - Delete unused attributes - Only create what you need
Best Practices¶
1. Keep Meshes Clean¶
- Remove duplicate vertices
- Ensure proper normals
- Avoid self-intersections
2. Use Appropriate Resolution¶
3. Understand Node Impact¶
- Generators: Create topology
- Modifiers: Often preserve topology
- Booleans: Create new topology
4. Check Manifold Status¶
- Test booleans on simple geometry first
- If boolean fails, check input meshes
Troubleshooting¶
Mesh Looks Inside-Out¶
Cause: Normals flipped
Fix: - Check vertex winding order - Use Reverse node (if available) - Recreate with correct orientation
Boolean Operation Fails¶
Cause: Non-manifold inputs
Fix: - Verify both meshes are closed - Check for self-intersections - Simplify geometry if too complex
Weird Shading¶
Cause: Inconsistent normals
Fix: - Recalculate normals (Smooth node) - Check for duplicate vertices - Ensure consistent winding
Gaps in Mesh¶
Cause: Non-welded vertices
Fix: - Use Merge node with weld enabled - Check tolerance settings
Next Steps¶
- Learn Attributes - Attributes
- Understand Groups - Groups
- See Examples - Quick Start
- Try Workflows - Architectural Modeling
Key Takeaways¶
✅ Meshes = Vertices + Edges + Faces (triangles) ✅ Manifold = Closed, watertight, valid for booleans ✅ Attributes = Data stored on vertices/faces ✅ Normals = Direction vectors for shading ✅ Topology = Connectivity (how it's built) ✅ Geometry = Shape (where vertices are)
Remember: Clean topology → Successful procedural operations!