Build a rough 3D set from boxes, spheres, planes, cylinders, cones, tori, and lights. Move things by hand or ask the agent to do it, then render the scene as a reference image for a shot.
Quick access: Click the + button in the workspace tab bar and choose New 3D model, or open a
.glbor.gltfasset and switch its tab to edit mode.

What a 3D model is
A 3D model in NodeTool is a glTF asset. The editor reads and writes .glb and .gltf files only. A new model is a .glb, and Save always writes binary glTF back over the same asset. The asset id does not change, so anything that points at it keeps working.
| File | Opens in the editor | Notes |
|---|---|---|
.glb, .gltf |
Yes | Editable and saveable |
.obj, .fbx, .stl, .ply, .usdz |
No | The tab opens, but the viewer reports that the format is not supported. Supported formats are .glb and .gltf |
When a model is not editable, or the tab is in view mode, you get the viewer instead. The viewer orbits, zooms, and toggles the grid, axes, and wireframe. See Asset Management.
Creating or opening a model
There are four ways in.
- New model. Click + in the workspace tab bar and choose New 3D model. NodeTool creates an asset in the current project that holds a single box named “Box”, and opens it in edit mode.
- From an asset. Open a
.glbor.gltfin the asset viewer and click Edit in 3D Editor. This button appears for assets in your library. - From the examples. On the Examples page, open the 3D models tab. It lists low-poly game models in six packs: Adventure, Dungeon, Platformer, Seaside, Sci-fi, and Sci-fi outpost. Open model copies the model into the current project and opens the copy in edit mode, so the original stays untouched.
- From the agent. Ask the agent to create a model, as described under Asking the agent.
Layout
The editor has a toolbar across the top, three panels under it, and a status bar along the bottom.
- Scene on the left is the outliner.
- The viewport is in the middle.
- Inspector is on the right.
- Assistant is an optional chat panel on the far right. You can resize it.
- The status bar names the selection, tells you what the mouse does in the current mode, and counts the objects, lights, vertices, and triangles in the scene.
The viewport starts with the camera framing the whole model, shows a ground grid with a red X axis and a blue Z axis, and lights the scene with a studio environment. That lighting is for editing only. It is not saved into the model and does not count as a light in the scene. It is built in, so it also works offline.
Toolbar
| Control | What it does |
|---|---|
| Undo, redo | Steps back and forward through your edits. The tooltip names the step |
| Move, rotate, scale | Sets the gizmo mode |
| Transform space | Switches the gizmo between world axes and the object’s own axes |
| Snapping | Turns snapping on or off: 0.25 units, 15 degrees, and 0.1 scale. Holding Ctrl while you drag inverts the setting |
| Add | Adds a shape, light, or empty group. See Adding and deleting objects |
| Duplicate, delete | Act on the selected object and its children |
| Keyboard shortcuts | Lists every shortcut |
| Assistant | Shows or hides the chat panel. NodeTool remembers whether you left it open |
| Export | Downloads the scene or the selected object as a file. See Exporting |
| Save | Writes the scene back to the asset. A dot next to the model name marks unsaved changes |
| Close | Returns the tab to view mode. With unsaved changes, it asks before discarding them |
Viewport controls
The bar in the top-left corner of the viewport holds View (front, back, right, left, top, and bottom views), frame all, focus on the selection, and three display toggles: the grid, a wireframe overlay, and light icons. The display toggles are remembered between sessions. The axis widget in the bottom-right corner turns the camera to an axis when you click it.
Drag to orbit, right-drag to pan, and scroll to zoom. Camera moves from View, frame, and focus are animated, so you keep your bearings.
Each light has an icon in the viewport. Click it to select the light. Directional and spot lights also draw a dashed line in the direction they shine.
Keyboard shortcuts
The shortcuts work only while this editor is the visible tab and no text field has focus. Press ? to see them in the editor.
| Keys | Action |
|---|---|
Ctrl+Z, Ctrl+Shift+Z or Ctrl+Y |
Undo, redo |
Ctrl+S |
Save |
G or W, R or E, S |
Move, rotate, scale |
X |
Toggle world and local space |
J |
Toggle snapping |
Ctrl+D or Shift+D |
Duplicate |
Delete or Backspace |
Delete |
Esc |
Clear the selection |
H, Alt+H |
Hide or show the selection, show everything |
F |
Focus the selection |
Home or Shift+A |
Frame the whole scene |
1, 3, 7 |
Front, right, and top views. Add Ctrl for back, left, and bottom |
Shift+G, Shift+W |
Toggle the grid, toggle the wireframe overlay |
On macOS, Cmd works in place of Ctrl for undo, redo, save, and duplicate.
Undo and redo
Every edit can be undone: gizmo drags, Inspector values, adding, duplicating, deleting, renaming, hiding, and moving objects in the outliner. Edits the agent makes go into the same history, so you can undo them too. A slider drag or a run of typing in one field undoes as one step. History keeps the last 200 steps and is cleared when the model is reloaded.
The outliner
The Scene panel lists every object in the scene as a tree, with children indented under their parent. Each row shows an icon for the object type (mesh, light, camera, or group), its name, and an eye button that appears on hover and hides or shows the object. Hidden objects and their children are dimmed.
- Click a row to select the object. Click empty space in the outliner or the viewport to clear the selection.
- Type in the filter box to show only matching objects and their parents.
- Click the arrow next to a parent to collapse or expand it.
- Double-click a name, or press
F2, to rename it. - Use the arrow keys to move through the list. Left and right collapse and expand.
- Drag a row onto another row to make it a child of that object. Drop it on empty space to move it back to the scene root. The object keeps its place in the world.
- Right-click a row for rename, duplicate, focus, hide, move to scene root, and delete.
Adding and deleting objects
Add opens a menu in three groups:
| Entry | Starts as |
|---|---|
| Box | 1 x 1 x 1 |
| Sphere | Radius 0.5 |
| Plane | 2 x 2, laid flat |
| Cylinder | Radius 0.5, height 1 |
| Cone | Radius 0.5, height 1 |
| Torus | Radius 0.5, tube 0.2 |
| Directional Light | White, intensity 1, aimed at the view center |
| Point Light | White, intensity 1, 2 units above the view center |
| Spot Light | White, intensity 10, 30-degree cone, aimed at the view center |
| Empty | An empty group to organize other objects under |
New objects appear at the point the camera orbits around, and shapes rest on the ground. New shapes get a light grey material with low metalness and high roughness. Each new object gets a unique name, so you can address it later by name.
Duplicate copies the selection with its children, its own geometry, and its own materials, so editing the copy leaves the original alone. The copy gets the next free name, for example “Crate 3” after “Crate 2”.
There is no entry for cameras. A camera that comes in with an imported model shows up in the outliner.
Importing a model
To add another model to the scene, choose Import model… at the bottom of the Add menu, drop a model file onto the viewport, or drag a model asset from the Asset Explorer onto the viewport. The model arrives as one group named after the file, centered on the view and resting on the ground, and is selected. Its objects are listed under that group, so it moves, hides, and deletes as one. Its animations are not imported. Importing can be undone like any other edit.
| Format | Extensions | Notes |
|---|---|---|
| glTF | .glb, .gltf |
Keeps materials, textures, lights, and editor settings |
| Wavefront OBJ | .obj |
Materials come from the .mtl file the OBJ names, when you pick it too |
| FBX | .fbx |
Units are not converted, so a file modeled in centimeters arrives 100 times too large. Scale the group down |
| STL | .stl |
Geometry only. Gets a grey material |
| PLY | .ply |
Keeps vertex colors. A PLY without faces arrives as a point cloud |
| Collada | .dae |
|
| 3MF | .3mf |
|
| USD | .usdz, .usda, .usdc |
Pick or drop the files a model refers to together with it: the .mtl of an OBJ, the .bin of a .gltf, and texture images. The editor matches them to the model’s references by file name. A model asset dragged from the Asset Explorer resolves its references next to the asset, so a .gltf asset must be self-contained. OBJ, Collada, and 3MF materials are converted to the PBR material the Inspector edits, keeping color, textures, and transparency.
Animation playback
When the model has animations, a playback bar sits along the bottom of the viewport. Press play to run the clip in a loop, drag the time slider to scrub, and pick another clip from the list when there is more than one.
Playback moves objects without editing them. The gizmo is hidden while the preview runs. Press stop to put every object back in the pose it had before playback, then edit as usual. Saving stops the preview first, so the saved model keeps that rest pose, not the frame on screen. The animations themselves are kept on save.
Transforms and the gizmo
Select an object and a gizmo appears on it, with a box around its bounds. Drag the gizmo handles to move, rotate, or scale the object.
For exact values, use the Transform section of the Inspector. Position, Rotation, and Scale each have X, Y, and Z fields. Rotation is in degrees. The numbers update while you drag the gizmo. Drag an X, Y, or Z label left or right to scrub its value. Hold Shift for fine steps or Ctrl for coarse ones. The reset button next to each row sets it back to zero, or to one for scale.
Children move with their parent, because transforms are relative to the parent in the tree.
Inspector
The Inspector shows the selected object’s name and type, then collapsible sections. Which sections appear depends on what you selected.
Transform
Position, rotation, and scale, as described above.
Light
A light has Color and Intensity. A point or spot light also has Range and Decay, and a spot light has Angle and Penumbra.
Directional and spot lights shine down their own forward axis. Use the rotate gizmo to aim them. Lights are written into the file with the glTF KHR_lights_punctual extension, so other glTF tools read them.
Geometry
Shapes you added from the Add menu get a Geometry section. It edits the size and segment counts of that shape and rebuilds the mesh live. A box has width, height, depth, and segments. A sphere has radius, segments, and angle ranges. The plane, cylinder, cone, and torus have their own sets.
Meshes that arrive inside an imported model have no editable geometry parameters, so they have no Geometry section.
Material
Meshes get a Material section. A mesh with several materials shows a Slot picker first. The section has:
- Colors: Base Color, Emissive, and a few specialty colors
- Sliders: Metalness, Roughness, Emission intensity, Opacity, and the physical-material set (Clearcoat, Sheen, Transmission, Iridescence, IOR, and others)
- Toggles: Transparent, Wireframe, Flat Shading, Depth Test, Depth Write, and others
- Side, with Front, Back, and Double
Lowering Opacity turns on transparency. Raising it back to 1 turns transparency off again, unless the material was transparent before you changed it. For a blockout, Base Color, Roughness, and Metalness are usually enough.
Rendering
Visible, Cast Shadow and Receive Shadow for meshes, Frustum Cull, and Render Order.
Asking the agent
Click the sparkle button in the toolbar to open the Assistant panel. It is labeled “3D Assistant” and suggests prompts such as “add a red box and a sphere above it”, “make the floor blue”, and “list everything in the scene”.
While the editor is the visible tab, the agent works on the live scene, and you see each change as it happens. It can:
- List the scene, read the selection, and read one object in full: its children, every material slot, its light settings, and its shape parameters
- Add shapes, lights, and empty groups, and select, rename, duplicate, show, hide, or delete objects
- Move an object under another object, or back to the scene root
- Set position, rotation (degrees), and scale
- Change a material’s color, emissive color and strength, metalness, roughness, and opacity, for one slot or all of them
- Change a light’s color and intensity, a point or spot light’s range and decay, and a spot light’s cone angle and penumbra
- Resize a shape from the Add menu by changing its geometry, for example a box’s width or a cone’s height
- Undo and redo, including your own edits
- Frame the scene and capture a screenshot of the viewport, which it can look at to check its own work. The screenshot shows the model only, without the grid, gizmo, or light icons
Objects are addressed by id or by name, and names are matched without regard to case. Duplicate names make that ambiguous, so give objects distinct names.
The agent changes the open scene, and each change is a step you can undo. Changes are not on the asset until you press Save.
Outside the editor, the agent can also work on a model by asset id with no editor open. It can list models, create a model (optionally building the whole scene in the same call), read the scene with its bounds, apply up to 60 edit operations in one call, and validate the glTF. These edits save straight to the asset, and an open editor reloads it. See the nodetool-3d-scene skill for the operation list.
A few things need an open editor with a working WebGL context: framing the scene and capturing the viewport.
Rendering a shot reference
The editor viewport is a quick preview. For a rendered image, the agent has a render_model3d tool that renders a saved model through headless Blender and store the result as a PNG image asset.
The editor has no Render button. You ask the agent for the render in chat, for example “render the set from a low angle at 1920 by 1080”. The render takes these settings:
| Setting | Default | Notes |
|---|---|---|
| Camera | Scene camera if the model has one, otherwise an orbit camera | Orbit cameras take azimuth (45 degrees), elevation (25 degrees), field of view (35 degrees), and a zoom multiplier |
| Size | 1024 x 1024 | Plus a resolution percentage |
| Lighting | studio |
Presets are studio, soft, and flat. Used only when the scene has no lights of its own |
| Light intensity | 1 | Multiplies the preset lights |
| Background | #808080 |
Or transparent |
| Engine | eevee |
cycles is slower and higher quality |
| Samples | 16 | Denoise is on by default and applies to Cycles |
Requirements and behavior:
- Blender 5.2 or newer must be installed on the machine that runs the NodeTool server. NodeTool looks at
BLENDER_PATHfirst, thenblenderonPATH, then the usual install locations. SetBLENDER_PATHto the executable if it is not found. - Rendering is off on cloud deployments. It is available on the desktop app, a local server, and a self-hosted install. A server without Blender answers with an error that names the missing install.
- The render reads the saved asset. Press Save before you ask for a render, or the image will not show your latest edits.
- A render can run in the background. The agent gets a generation id and collects the finished image later.
- The result is an image asset in your library, so you can use it anywhere an image goes.
If you prefer a graph, the Blender nodes (nodetool.blender.RenderImage, RenderAnimation, RenderPasses, PrepareForEngine, and ExportModel) use the same Blender install.
Exporting
Save serializes the scene to a .glb and updates the asset, then shows “Saved” with the asset name. Animations that came with an imported model are kept, also after you rename the animated object. Hidden objects are saved too, marked with a nodetool_hidden value in the node’s extras, and come back hidden when the model is reopened. Other glTF tools ignore that value and show them. Names keep their spaces and punctuation. If saving fails, a banner over the viewport shows the error with a button to report it. Open the asset in the Asset Explorer to download or reuse the file like any other asset. See Asset Management.
Export downloads a file for another tool and leaves the asset alone. Pick Scene as a format to export everything, or Selection as a format to export the selected object and its children, placed where it sits in the scene. The Cmd+K menu lists the scene exports too. Hidden objects are left out. Unsaved edits are included. If an animation preview is playing, it stops first, so the file holds the rest pose.
| Format | What it keeps |
|---|---|
| GLB | Geometry, materials, textures, lights, and, for the whole scene, the model’s animations |
| glTF | The same as GLB, as one JSON file with its data embedded |
| OBJ | Geometry. No materials |
| STL | Geometry, in binary STL, for 3D printing |
| PLY | Geometry with vertex colors, in binary PLY |
| USDZ | Geometry, materials, and textures, for Apple AR Quick Look |
A selection exported to GLB or glTF has no animations. OBJ, STL, and PLY need at least one visible mesh. If an export fails, a banner over the viewport shows the error with a button to report it.
Using a model elsewhere
- Workflows. Drag the asset from the Asset Explorer onto the canvas to add a
nodetool.constant.Model3Dnode. - Timelines. The timeline add menu has a 3D model entry that lists the glTF assets in your library and places the one you pick as a clip on a video or overlay track. You can also drag the asset onto a track. See Video Editor.
- Image references. A rendered PNG is an ordinary image asset, so you can drop it into a sketch or use it as a reference in an image workflow.
The editor has no direct link to the storyboard surface. Use a rendered image asset to bring a set into one.
Limits
- Only
.glband.gltfassets open in the editor. Other formats can be imported into an open model. - You cannot add cameras from the Add menu, and you cannot add new materials or textures. You can change existing material values.
- The viewport camera is not saved. It is for looking around, not for authoring a shot.
- The editor has no render button. Rendering goes through the agent and needs Blender 5.2 or newer on the server, and it is unavailable on cloud deployments.
- The agent can work on the live scene only while the editor is the visible tab.
- A render uses the saved asset. Unsaved edits do not appear in it.
- One
edit_model3dcall applies at most 60 operations.
Related
- Asset Management
- Video Editor
- Sketch Editor
- Game Editor, where a 3D game binds glTF models to its entities