3dstuffmaker is a cross‑platform desktop application that focuses on the creation of procedural 3‑D geometry and its integration into game engines, 3‑D printing, and architectural workflows. The user interface is intentionally narrow in scope: a node‑based editor, a real‑time viewport, and a Python scripting console. All code is released under the MIT license and the project is hosted on a public version control system.
Table of Contents
- Overview
- Technical Details
- Features
- Applications
- Comparisons with Related Tools
- Future Development
- Licensing & Distribution
- References
Overview
Purpose
3dstuffmaker is designed for the rapid, repeatable creation of 3‑D assets that can be parameterized and exported to industry‑standard formats. Its core philosophy is “model on demand” rather than “model by hand” – every shape is defined by a directed acyclic graph (DAG) of nodes that can be manipulated programmatically or visually.
Target Audiences
- Game studios and indie developers for prototyping and production.
- Architectural designers for furniture and fixture generation.
- Educators teaching computer graphics or game design.
Core Architecture
3dstuffmaker is built in C++ with a Python interpreter embedded for scripting. The rendering engine is OpenGL‑based and runs in real time, while the node editor implements a DAG model that can be serialized to XML or binary files. Plug‑ins are written in Python and can expose new node types, exporters, or UI panels.
Technical Details
Programming Language & Runtime
- Front‑end: C++ (OpenGL, GLFW).
- Scripting API: Python 3.9+ (exposes Mesh, Node, Material, Scene).
- Build system: CMake (Windows, macOS, Linux).
- Dependencies: SDL2, OpenGL 4.5, pybind11.
Data Model – Directed Acyclic Graph
| Entity | Description | Key Properties |
|---|---|---|
| Scene | Container of nodes, cameras, lights. | nodes[], cameras[], lights[] |
| Node | Operation or primitive; connects via ports. | type, parameters, ports[in/out] |
| Port | Typed connection point. | name, type, direction, value |
| Mesh | Vertex, normal, UV, face data. | vertices[], faces[], attributes[] |
| Material | PBR shaders. | properties: metallic, roughness, albedo, normal, AO |
Viewport & Rendering
- Real‑time shading modes: wireframe, flat, textured, PBR.
- Lighting: directional, point, spot, ambient; shadows, AO.
- Post‑processing: depth‑of‑field, bloom, HDR tonemapping.
- GPU tessellation for subdivided meshes.
Export & Import
- Formats: OBJ, FBX, STL, COLLADA, USD.
- Batch export; separate material library export.
- Scene serialization to JSON/XML for reuse.
- STL export with wall‑thickness and hollowing options.
Scripting & Extensibility
- Python API exposes Mesh, Node, Material, Scene.
- Plug‑in interface with init(), shutdown(), ui() callbacks.
- Full access to DAG traversal, bulk editing, node creation.
Features
Modeling Tools
- Primitives: sphere, cube, cylinder, torus, cone, toric‑cone, toric‑cone (the unique feature).
- Boolean operations: union, difference, intersection.
- Deformation: twist, bend, taper, extrude.
Procedural Generation
- Parameter sliders per node.
- Random seed for noise‑based deformation.
- Export of the full node graph for on‑the‑fly creation.
Physics Integration
- Basic soft‑body: mass‑spring system for cloth and simple skins.
- Future work: full FEM solver.
Utilities
- Python console for quick tests.
- Undo/redo stack (limited to 30 actions).
- Save / load project files (.3ds).
- Import of existing meshes to feed into the node graph.
Applications
| Use‑Case | How 3dstuffmaker Helps |
|---|---|
| Game Development | Creates level geometry and assets with low poly for performance; exports directly to game engines. |
| Architectural Design | Generates furniture, fixtures, and small‑scale building components; exports to SketchUp/3ds Max via OBJ/FBX. |
| 3‑D Printing | Builds printable models with controllable wall thickness; exports STL. |
| Education | Students learn node‑based design, Python scripting, and real‑time rendering. |
| Research | Provides large, annotated datasets of procedurally generated meshes for ML experiments. |
Comparisons with Related Tools
| Tool | Strengths | Weaknesses for 3dstuffmaker | Why 3dstuffmaker is a good complement | |------|-----------|------------------------------|---------------------------------------| | **Blender** | Full feature set, Python API, strong sculpting | Over‑complex for quick procedural work | 3dstuffmaker can be used as a lightweight front‑end for simple geometry | | **Substance Designer / Substance Painter** | Powerful texture generation | No geometry creation | 3dstuffmaker can generate mesh + PBR materials that feed into Substance workflow | | **Houdini** | Procedural node system, VEX, powerful SOPs | Steep learning curve, commercial license | 3dstuffmaker offers a simpler DAG model and is free under MIT | | **Tinkercad / Onshape** | Web‑based CAD | Limited export options, no scripting | 3dstuffmaker can export to industrial formats, add scripting, and run on desktop |Future Development
- Full FEM soft‑body solver (cloth, skin).
- Vulkan rendering backend.
- Dedicated engine plug‑ins (Unreal, Unity, Godot).
- AI‑assisted shape generation via GANs.
- Web‑GL / mobile edition for on‑the‑go modeling.
Licensing & Distribution
MIT license – free for commercial and non‑commercial use. Source code and all plug‑ins are available on GitHub. Users may modify and redistribute 3dstuffmaker or any derived plug‑ins under any compatible open‑source license.
Conclusion
3dstuffmaker delivers a focused, extensible pipeline for procedural 3‑D geometry. Its lean UI, rich export set, and active community make it a useful companion to larger suites such as Blender or texture generators such as Substance Designer. By publishing all source under the MIT license, the project invites collaboration from developers, educators, and hobbyists alike.
``` You can copy the above code into an `.html` file and open it with any modern browser. No external CSS or JavaScript is required, so the specification will render correctly in all browsers that support HTML5.
No comments yet. Be the first to comment!