Skip to content

Dynamic rack builder UI with interactive 3D preview #77

@kellervater

Description

@kellervater

Problem

OpenSCAD and MakerWorld's PMM currently don't support dynamic parameters that adapt based on user input (e.g., adding/removing parameters when "Add a new level" is selected). This significantly limits the flexibility users have when planning custom rack configurations.

Proposed Solution

Build a web-based dynamic UI that allows:

  1. Adaptive Parameters: Form fields that dynamically appear/disappear based on user choices (e.g., number of rack levels, connector types)
  2. Live 3D Preview: Real-time visualization of the configured rack similar to OpenSCAD's customizer
  3. Export Capability: Generate ready-to-print STL files or OpenSCAD code with the selected parameters

Research & Potential Approaches

3D Viewer Libraries (STL/Web-based)

  • Three.js: Most popular WebGL library for 3D rendering (ts-3d-model-viewer, stl-viewer)
  • model-viewer: Google's web component for 3D model display
  • Existing solutions support STL, OBJ, GLTF formats

Parametric Configurator Examples

Technical Stack Options

  1. Frontend Framework: React/Vue/Angular for dynamic UI
  2. 3D Rendering: Three.js or model-viewer custom element
  3. Geometry Generation:
    • OpenJSCAD for web-native SCAD-like modeling
    • Server-side OpenSCAD rendering + STL delivery
    • Pre-compute common configurations

Acceptance Criteria

  • Dynamic form with conditional parameter fields
  • Real-time 3D preview that updates as parameters change
  • Export to STL/3MF for printing
  • (Optional) Export to OpenSCAD code for further customization
  • Responsive design for mobile/tablet/desktop

Additional Considerations

  • Performance: Large/complex models may need optimization or caching strategies
  • Hosting: Static site (GitHub Pages) vs. server-side rendering requirements
  • Integration: Could this become part of the main HomeRacker docs site?

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions