Skip to content

New featuresΒ #287

@vsla

Description

@vsla

Problem or motivation

Contribution Proposal: SketchUp-grade UX Improvements

Hi everyone πŸ‘‹

I've been working on a series of improvements to bring ArcEditor closer to a professional-grade architectural tool β€” inspired by SketchUp's core UX. Here's what I'm planning to work on and submit as separate PRs.


What I'm Working On

I've created a detailed ROADMAP.md with 26 tickets grouped into 7 epics. Here's a summary:

πŸŽ₯ Epic 1 β€” Camera, Navigation & Viewport

  • Orbit around cursor β€” pivot follows mouse position instead of scene center
  • Unrestricted zoom β€” zoom all the way into surfaces, no hard stops
  • Standard views β€” Top/Front/Side/Isometric with keyboard shortcuts (Numpad)
  • First-person walk mode β€” WASD walkthrough at eye level
  • Camera bookmarks β€” save and recall named viewpoints

🧲 Epic 2 β€” Smart Snap & Inference Engine

  • Vertex, edge & face snap β€” magnetic snapping to geometry, not just the grid
  • Alignment inference lines β€” colored guide lines when objects align on X/Y/Z
  • Angle snap & axis lock β€” hold X/Y/Z to constrain movement to an axis
  • Construction guide lines β€” persistent reference lines like SketchUp's tape measure

πŸ“ Epic 3 β€” Dimensions, Scale & Measurement

  • Item dimension panel β€” W/H/D panel for placed items with live resize
  • Type during placement β€” type a value mid-drag to set exact dimension
  • Free measure tool β€” point-to-point distance + area calculation, pinnable to scene
  • Angle measurement β€” measure angles between edges/surfaces

✨ Epic 4 β€” Visual Quality & Rendering

  • SSAO β€” ambient occlusion using Three.js WebGPU native ao-pass
  • Soft shadows β€” PCFSoftShadowMap / VSMShadowMap
  • HDRI environment lighting β€” presets for exterior/interior/neutral
  • Material library UI β€” visual thumbnail grid for 80+ existing material presets
  • Selection outline effect β€” postprocessing outline instead of color swap

πŸ”§ Epic 5 β€” Direct Modeling

  • Push/pull faces β€” extrude/inset faces directly (SketchUp's killer feature)
  • Edge offset tool β€” offset wall/slab edges at exact distance

πŸ“¦ Epic 6 β€” Export & Import

  • Collada (.dae) export β€” for SketchUp interoperability
  • GLB/GLTF import β€” bring external furniture/equipment models into the scene
  • IFC export β€” BIM standard for engineers and contractors
  • PDF floor plan export β€” clean 2D drawings for clients

πŸ€– Epic 7 β€” AI Features

  • Room layout suggestions β€” AI proposes furniture arrangements for a selected room
  • Natural language to scene β€” "add 3 chairs around the table" via command palette

Approach

  • Each epic = 1 PR, isolated and reviewable independently
  • Starting with Camera (highest impact, lowest complexity)
  • All changes follow the existing layer architecture (core / viewer / editor separation)
  • No breaking changes to existing schemas β€” all new fields are optional

Questions / Input Welcome

Before I get too deep into implementation, I'd love feedback on:

  1. Is there a preferred approach for the snap system β€” build on top of use-placement-coordinator or a separate system?
  2. For Push/Pull β€” should extruded geometry create new nodes (slab/wall) or mutate existing geometry directly?
  3. IFC export β€” is web-ifc the preferred library or is there another being considered?

Happy to discuss any of these before submitting PRs. Thanks!

Proposed solution

No response

Alternatives considered

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions