Spaces:
Sleeping
Sleeping
| # MechForge Rendering And Simulation Stack | |
| Date: 2026-04-24 | |
| ## The Confusion To Resolve | |
| For MechForge there are four separate jobs: | |
| 1. Generate or modify a design. | |
| 2. Render the design so humans can inspect it. | |
| 3. Simulate or verify the design. | |
| 4. Export the design to real CAD/manufacturing formats. | |
| One tool does not need to do all four. | |
| ## Recommended MVP Stack | |
| | Layer | MVP choice | Why | | |
| |---|---|---| | |
| | Design representation | Structured parametric JSON | Easy for LLMs, easy to validate, easy to convert. | | |
| | Browser renderer | Three.js | Fast, visual, interactive, works inside a web demo. | | |
| | Fast verifier | Custom beam/truss-style solver | Good enough for reward curves and RL feedback. | | |
| | Export | STL from Three.js mesh | Immediate tangible artifact. | | |
| | Future CAD backend | CadQuery first, OpenSCAD second | CadQuery is Python-native and more flexible for OpenEnv. | | |
| | Future simulation backend | simplified FEM, FEniCSx, or specialized solver | Swap in after the environment loop works. | | |
| ## Why Not OpenSCAD First? | |
| OpenSCAD is good for deterministic programmatic CAD. It is available on macOS and can generate real geometry, but it is not the fastest path for a live web app. | |
| Use OpenSCAD later if we want: | |
| - scriptable constructive solid geometry, | |
| - reproducible `.scad` artifacts, | |
| - STL export through the OpenSCAD CLI, | |
| - simple parts made from unions/differences. | |
| For the first experiment, Three.js is better because it gives immediate visual feedback in the browser. | |
| ## Why Not Full FEA First? | |
| Full FEA is the wrong first milestone. It risks spending the hackathon on meshing, solver stability, and packaging instead of the OpenEnv loop. | |
| Better: | |
| 1. Start with a simplified verifier that produces a reward. | |
| 2. Show that LLM behavior improves under that reward. | |
| 3. Add higher-fidelity simulation only after the loop is stable. | |
| The judges care most that the environment trains meaningful behavior and shows improvement. A simple but coherent verifier is acceptable if we explain the limitations honestly. | |
| ## Benchmark Plan | |
| Before committing to the full environment, run GPT-5.4 through a small prompt-to-design benchmark: | |
| - Prompt asks for a lightweight bracket under a load case. | |
| - Model returns structured design JSON. | |
| - Renderer shows the part. | |
| - Verifier scores mass, stress proxy, deflection proxy, safety factor, and manufacturability. | |
| - We inspect whether the model uses real design patterns like ribs, load paths, holes in low-stress areas, and avoids invalid geometry. | |
| This tells us whether current frontier models already solve the task or whether there is room for RL improvement. | |
| ## What The Experiment App Does | |
| The app in `experiment-mechanical-idea/` implements this benchmark: | |
| - Frontend: Vite + Three.js. | |
| - Backend: Express + OpenAI Responses API. | |
| - Input: natural-language mechanical design prompt. | |
| - Output: structured parametric design JSON. | |
| - Render: plate, ribs, holes, bosses, fixed holes, load arrow. | |
| - Verifier: fast beam-style estimate. | |
| - Export: STL from the rendered mesh. | |
| ## Final Recommendation | |
| For the OpenEnv version: | |
| 1. Keep the agent action space constrained. | |
| 2. Use Three.js for the judge-facing demo. | |
| 3. Use Python/CadQuery later for real CAD export. | |
| 4. Keep simulation/verifier independent from the renderer. | |
| 5. Do not let the LLM generate arbitrary meshes in the first version. | |