PixPipeline's 3D features run on two lanes with different goals.
| You want | Lane | Strengths | Output |
|---|---|---|---|
| Carved / fused shapes as pixel art | Solid (sculpting) | SDF union, subtraction, intersection, smooth blending | Surface / image |
| Low-poly assets for a game engine | Model (assembly) | Placing small mesh parts, PBR, rigid-body animation | GLB / Surface / image |
Solid shapes are defined by math, so holes and smooth fusion come naturally — but they never become clean game-ready triangles. Model keeps triangles as the source of truth, which suits GLB export, but performs no booleans. In the Model lane, overlapping parts into each other is the correct way to build.
Isometric — IsoWorld is the canonical path
For isometric work, IsoWorld is the user-facing system. The recommended chain is
IsoBlock / IsoItemBuilder → IsoAssemble → IsoPlace → IsoWorldCompose → IsoWorldToScene. IsoScene is the internal IR right before rasterization,
kept public for compatibility and advanced tweaks.
- Standard:
iso_block,iso_item_builder,iso_assemble,iso_place,iso_world_compose,iso_world_to_scene - Advanced:
iso_surface,iso_extrude,sprite_stack,iso_scene_compose,iso_scene_render,iso_scene_to_surface_geometry
Build new graphs from the World nodes; wire Scene nodes directly only when you need the internal IR structure. Advanced nodes are collapsed in the palette but still searchable.
Solid — the 3D sculpting system
- Build parametric primitives (box / sphere / cylinder / cone / torus / stairs / ramp) in the Solid category, then combine (with smooth blending), subtract, and intersect them
- Extrusions and revolutions from paths are available too
- The 3D view (Solid 3D stage) lets you inspect angles while editing
- Solids cannot be exported as 3D models. If you need a GLB, use Model
Model — game-ready mesh assembly
- Create parts with
model_box/model_cylinder/model_cone/model_wedge model_transformhandles movement, rotation, non-uniform scale, and pivots;model_groupbundles parts into the same GLB. Parts are not stitched together and interior faces are not removedmodel_extrude/model_revolveturn closed bezier paths into meshes- The Model 3D stage lets you select parts and write gizmo edits back to the originating node. Vertex/face/UV hand-editing is not available
model_gltf_exportwrites a self-contained.glb. WithAnimation Framesat 2 or more, rigid-body TRS per stable PartId is baked as a glTF animation
PBR textures from 2D images
pbr_material assigns ordinary Images explicitly to base color / tangent normal /
roughness / metallic / AO / emission. Base color and emission are sRGB, the rest
are linear. Normals require tangent-space maps in the OpenGL or DirectX
convention — a Surface's view-space normal cannot be plugged in directly.
Connect a model generator's Texture Layout to model_texture_layout to get UV
guides, region masks, and recommended resolutions as 2D images. To keep borders
clean under nearest-neighbor sampling, extend edge colors into the gutter with
texture_layout_dilate before bundling with pbr_material.
Saving re-editable assets
Models and Solids can be saved as native assets and reused across projects before the final export.
model_asset_save/model_asset_load.pxmodelstores the Model hierarchy, stable PartIds, meshes, pivots, and PBR images. Default folder:user_data/library/models(configurable)
solid_asset_save/solid_asset_load.pxsolidstores the SDF tree as-is, without polygonization. Default folder:user_data/library/solids(configurable)
Both save nodes start write-disabled; choose CreateIfMissing or Overwrite
only when saving. Writes are atomic with read-back verification, and intermediate
animation frames are never saved mid-evaluation.
Solid Render — 3D to pixel art
solid_renderrenders a solid orthographically (one ray per pixel) into a Surface (a multi-layer image with normals, height, depth, and material IDs)- Angle presets include 2:1 isometric;
pixels_per_unitsets the dot density
model_render converts Models to Surfaces with the same parameter vocabulary.
For animation and 8-direction assets, use frame_mode = FixedCanvas so every
frame keeps the same size and center.

The bundled workflows/solid_turntable_phase10.ppl is the minimal setup that
spins a solid with a time source and bakes it via
solid_render → animation_render.
Surfaces and lighting
- A Surface is a "G-buffer for pixel art": albedo plus normal / height / AO / emission / roughness sub-maps
- Lighting nodes control shading steps, OKLCH grading, and palette snapping to land on pixel-art-style stepped shading
- Lighting definitions live in
user_data/definitions/lighting/and can be shared across assets
Turning drawings into 3D
height_from_image— estimate a height map from a silhouette or brightnessQuick Shade(quick_shade) — one-node light-and-shadow for sprites
Exporting
surface_export— writes a Surface as a texture set for game engines (naming conventions, normal Y-axis convention, integer upscaling)model_gltf_export— writes the Model as a GLB with textures. KeepSave Mode = Disabledwhile editing and switch toCreateIfMissing/Overwriteafter confirming the destination- Saved projects default to
exports/models; unsaved projects use the "3D model export" folder from settings as the dialog's starting point
- Saved projects default to
For step-by-step walkthroughs, see workflows/model-asset-basics.md and
workflows/model-chest-animation.md.