3D Geometry
Eight nodes that produce a geometry output , six built-in primitives plus a mesh importer (OBJ / USDZ / FBX / GLTF) and 3D text. Connect their geometry port into a scene3d composer or directly to a Root geo_N port to render.
Every geometry node shares a few things: a position / rotation / scale transform and an auto-rotate field on the inspector, an albedoColor input that becomes the diffuse color when no material port is wired, and a material input that, when connected to a pbrMaterial or one of the baked presets , replaces the default shading entirely.
Cube 3D
cube3d3D / GeometryAxis-aligned cube primitive with sharp corners and proper UV unwrapping per face. The simplest test object.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| size | float | 1 | 0.01 – 10 | Edge length in scene units. |
| albedoColor | color | 0.8, 0.8, 0.8, 1 | , | Diffuse color when no material is connected. |
| material | material | , | , | Optional PBR Material override. |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| geometry | geometry | , | , |
24 vertices (4 per face × 6 faces) so per-face normals and UVs are crisp. Indexed as 12 triangles. Cheap enough to instance heavily, a field of 200 cubes still hits frame rate on M-series.
Pair with noiseDisplace3d + a chromeMirror3d material for a quick "melted chrome" look.
Sphere 3D
sphere3d3D / GeometryUV-sphere with adjustable tessellation. Mesh density doubles every 2× of the segments value.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| radius | float | 0.5 | 0.05 – 5 | Sphere radius in scene units. |
| segments | float | 32 | 4 – 128 | Longitude segments, rings = segments / 2. |
| albedoColor | color | 0.8, 0.8, 0.8, 1 | , | |
| material | material | , | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| geometry | geometry | , | , |
Polar UV mapping, there's a slight pinch at the poles, like every UV sphere. For procedural displacement (noise, twist, wave), 64 segments is the sweet spot. Below 16 you start to see the polygons.
The reference object for any new shader: it has every surface orientation in one place, so it's the fastest way to debug a PBR Material.
Plane 3D
plane3d3D / GeometryFlat quad facing +Y. Useful as a floor, a screen for projection, or a backdrop.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| width | float | 1 | 0.1 – 50 | |
| height | float | 1 | 0.1 – 50 | |
| albedoColor | color | 0.8, 0.8, 0.8, 1 | , | |
| material | material | , | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| geometry | geometry | , | , |
Two triangles, one normal. UV coordinates run 0–1 across the entire plane, useful when you want to sample a 2D texture as a sky-ground map or to set up screen-space projection.
Torus 3D
torus3d3D / GeometryDonut. Two radii independently controlled. The crowd-favourite test geometry for materials.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| majorRadius | float | 0.5 | 0.05 – 5 | Distance from center to the tube center. |
| minorRadius | float | 0.15 | 0.01 – 2 | Tube thickness. |
| segments | float | 32 | 4 – 128 | Segments around the major axis. |
| rings | float | 24 | 4 – 96 | Segments around the tube. |
| albedoColor | color | 0.8, 0.8, 0.8, 1 | , | |
| material | material | , | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| geometry | geometry | , | , |
Slow auto-rotation on Y + chrome material + a single warm directional light is the original VJ test pattern for a reason. The double-curved surface stresses materials better than a sphere does.
Cylinder 3D
cylinder3d3D / GeometryCapped cylinder, axis-aligned to Y. Inputs control radius, height and segment count.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| radius | float | 0.5 | 0.01 – 5 | |
| height | float | 1 | 0.1 – 10 | |
| segments | float | 32 | 3 – 96 | |
| albedoColor | color | 0.8, 0.8, 0.8, 1 | , | |
| material | material | , | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| geometry | geometry | , | , |
Includes top and bottom caps. UV mapping wraps once around the side and projects radially on the caps. Useful as a column, a pillar, or (with low segment count) a faceted prism.
Cone 3D
cone3d3D / GeometryCone or pyramid, the segment count determines whether it reads as smooth or faceted.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| radius | float | 0.5 | 0.01 – 5 | Base radius. |
| height | float | 1 | 0.1 – 10 | |
| segments | float | 32 | 3 – 96 | 3 = tetrahedron, 4 = square pyramid, 32 = smooth cone. |
| albedoColor | color | 0.8, 0.8, 0.8, 1 | , | |
| material | material | , | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| geometry | geometry | , | , |
Drop segments to 3 or 4 to use this as a low-poly pyramid. Beyond 32 the silhouette is indistinguishable from a true cone but the GPU cost grows linearly.
Mesh Loader 3D
meshLoader3d3D / GeometryLoads a 3D mesh from disk. Supports OBJ, USDZ, USD, USDA, USDC, PLY, ABC, STL natively, plus FBX, GLTF, GLB, DAE, 3DS, BLEND and others through the bundled Assimp bridge.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| scale | float | 1 | 0.01 – 100 | Uniform scale applied at load time. |
| albedoColor | color | 0.85, 0.85, 0.85, 1 | , | |
| material | material | , | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| geometry | geometry | , | , |
Use the Load… button on the inspector. ModelIO handles the Apple-native formats (OBJ / USD family / PLY / ABC / STL). Anything else routes through Assimp 6, it's included inside the app bundle, no extra install required.
Missing normals and UVs are generated automatically. Multi-mesh files get merged into a single vertex / index buffer at load time, so the whole asset shares a single transform and material.
Text 3D
text3d3D / GeometryA 3D-positioned text card. CoreText rasterizes the string at the chosen font + size, the result becomes an alpha-tested quad with crisp glyph silhouettes that take light, fog, DoF and bloom like any other geometry.
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| height | float | 1 | 0.1 – 50 | World-space height of the rendered text. Width follows the rasterized aspect ratio. |
| albedoColor | color | 1, 1, 1, 1 | , | |
| material | material | , | , |
| Port | Type | Default | Range | Notes |
|---|---|---|---|---|
| geometry | geometry | , | , |
Type the string, font name and pixel size in the inspector. The node sets materialData.alphaTest = true internally so transparent areas around the glyphs are discarded in the G-buffer pass, the result feels native, not like a billboard.
Combine with chromeMirror3d for hard reflective type, or neon3d for a glowing emissive look that interacts with bloom.
A minimal scene
Three nodes plus the Root. This is the smallest reproducible 3D scene in R3NE:
Pasted into the MCP create_composition tool, this paints a slowly rotating chrome-ish torus on screen. From there you stack: add a light or two, swap in chromeMirror3d, wrap the geometry through noiseDisplace3d, etc.