AR floor & wall surface builder for any try‑on. Draw boundaries, generate surfaces, scale, select, and place objects with clean composition‑root architecture and full Unity test coverage.Build, scale, and visualise AR surfaces in secondsCustom Surface Builder AR is a production-ready package for try‑on experiences. Users draw a custom boundary, then generate floors and/or walls with adjustable heights. Scale surfaces with vertical swipes, tap to select, and toggle visibility per surface type.Why Custom Surface Builder Over AR Plane Detection?AR Foundation's built-in plane detection has critical limitations for production AR try-on experiences:Vertical Plane Detection is Unstable on Android — ARCore's vertical plane detection is inconsistent, unreliable, and often fails. Your app breaks on a major mobile platform because AR Foundation can't reliably detect walls.No Control Over Surface Area — AR planes are detected automatically with unpredictable size and shape. You get whatever the AR subsystem decides to track. For furniture placement or tile visualisation, you need precise control over where the surface starts and ends.Can't Generate Custom Surfaces — AR plane detection only finds existing surfaces. It cannot create surfaces where none were detected (e.g., a partial wall, an imaginary boundary, or a floor area that AR missed entirely).No Unified Floor + Wall Workflow — AR Foundation detects floors and planes separately with no coordination. Custom Surface Builder generates both from a single boundary drawing session, keeping the experience seamless.No Post-Generation Editing — Once AR Foundation detects a plane, it's immutable. No scaling, no deletion, no visibility toggles. With this package, users can scale walls after generation, delete individual surfaces, and toggle visibility per type.Inconsistent Surface Roles — AR planes are just "planes" with no semantic meaning. Custom Surface Builder assigns explicit `Floor`/`Wall` roles at registration time, so visibility, interactability, and object placement decisions are always clear.Custom Surface Builder AR solves all of this:Draw any shape on the detected surfaceGenerate floors and/or walls with precise boundaries you controlScale walls in real time with gesture inputSelect and delete surfaces individuallyToggle floor/wall visibility independentlyWorks reliably on Android (doesn't depend on ARCore's vertical plane detection)Key Features:Draw‑to‑Build — Place boundary points by tapping on detected surfaces; visual markers and real‑time line rendering guide the shapeFloor & Wall Generation — Generate polygonal floor meshes and vertical walls with configurable heightGesture Scaling — Swipe up/down to adjust wall height in real timeSurface Selection — Tap any surface to select it; delete individual surfaces with confirmationVisibility Toggles — Show/hide all floors or all walls independentlyUndo/Redo — Full command‑pattern undo/redo stack for boundary drawingReset Safety — Clean, idempotent reset at any flow stage; no stale markers or listener leaksComposition‑Root Architecture — No singletons, no global event hub; all dependencies wired via `ARTryOnBootstrapper`Scoped Event Channels — `SurfaceDrawingEvents`, `GeneratedSurfaceEvents`, and `OverlayEvents` for modular communicationFull Test Coverage — 10+ unit tests covering placement, services, and selectionWhat’s IncludedComplete demo scene with tutorial and non‑tutorial modesComprehensive documentation (Setup, Architecture, API, Configuration, Troubleshooting, Known Limitations)README and demo walkthrough guidesDocumentationTechnical Highlights:Unity 2022.3+ LTS and Unity 6 are compatibleAR Foundation 5.x integrationURP render pipeline supportEvent‑driven design with lifecycle‑bound subscriptionsExplicit plane role tracking (`Floor`/`Wall`) — no hierarchy inferenceThread‑safe cancellation in async operationsEditor‑time reset safety with null guardsSupported OS: Windows, iOSSupported Platform: Android, iOSAI-assisted tools were used during the development process for tasks such as brainstorming, code review, documentation refinement, and workflow optimization. All code, assets, and package functionality were reviewed, validated, and verified before release.

