Run npm run dev, npm run build, or npm test for the active application.
- Parametric room: edit dimensions, semantic room type and requested capacity to regenerate procedural architecture, tables, chairs and overlays. Automatic equipment follows placement intent; manual transforms remain intact.
- Simulator catalog: 83 original JSON records with preserved dimensions, ports and provenance; searchable inventory and validated JSON imports. Missing electrical loads remain unknown.
- Spatial workspace: procedural architectural cutaway, rounded wood tables and upholstered seating, textured finishes, room-fitted 2048 px shadows and tone-mapped studio lighting, distinct procedural devices, Plan/Isometric/Seat views, inventory placement, table/wall/ceiling snapping and Alt-drag remounting with Escape rollback.
- Signal schematic: transactional catalog-based JSON imports, synchronized port nodes, draggable node layout, pan/zoom, compatible port connections, rounded orthogonal wiring and connection deletion.
- Planning audit: seat-level viewing checks, direct SPL and optional broadband intelligibility-proxy maps, specified power/heat totals and project budget warnings.
- Audio planning: live microphone pickup regions, rotated speaker dispersion, seat explanations and calculated coverage/SPL fields. Individual or room scope; incomplete source data keeps SPL totals unknown.
- Contextual inspector: mounting, orientation, height and editable equipment specifications. The BOM updates from the same Zustand state.
Visual seat markers show green/yellow/red planning thresholds. Speaker SPL responds to sensitivity, assumed amplifier drive power, distance and approximate directivity. The opening boardroom is illustrative; unspecified hardware details remain unknown. The acoustic preset is explicitly illustrative. State is session-only. These are planning estimates, not certified DISCAS compliance or IEC STI. See engineering basis and limitations.
The build and test script target the new application and workspace modules. Legacy source and tests remain for reference and are not included in the active build. The historical overview below describes the old application.
3D engineering tool for AV system design: room geometry, equipment placement, rack planning, geometric coverage estimates, sightline/viewing checks, signal-path connectivity, cable routing, and rule-based design validation.
This is engineering software (spatial modelling + catalogs + design rules), not a Three.js demo and not a physics-level acoustic or lighting simulator.
Live build: custom-3-d-simulator-for-av-system.vercel.app
AV rooms are designed under constraints that are easy to miss in a 2D drawing:
- Can every seat see the display (distance, angle, obstruction)?
- Does camera FOV cover the talker positions you care about?
- Are loudspeakers and microphones aimed where people actually sit?
- Do ports, cable types, and rack RU allocations form a coherent system?
- What length and type of cable does the design imply for a BOQ?
The tool encodes those questions as geometry + catalogs + validation rules so a designer can iterate in 3D and get a structured finding list instead of an unmarked render.
| It does | It does not |
|---|---|
| Place rooms, furniture, displays, cameras, mics, speakers, racks | Predict reverberation, STI, or phase interference |
| Geometric speaker coverage (catalog dispersion + inverse-square SPL estimate) | Replace EASE / Bose Modeler / acoustic FEM |
| Camera frustum / FOV coverage estimate | Optical lens design or sensor SNR |
| Display viewing distance/angle and sightline obstruction | Human-factors certification |
| Obstacle-aware polyline cable routes and length totals | BIM cable trays or NEC ampacity |
| Port compatibility and system completeness checks | Full SPICE / SI / EMI analysis |
| Catalog-driven equipment and BOQ-oriented cable summaries | Automatic purchasing or live inventory |
Coverage engines are labelled as engineering estimates. Missing catalog data is treated as incomplete - the code does not invent 90-degree dispersion or 100 dB SPL.
Room geometry + seating
->
Equipment catalog + instances (3D placement, racks)
->
Coverage / viewing / sightline engines (geometric estimates)
->
System graph (ports, connections, cable routes)
->
Validation registry (errors / warnings / notes)
->
UI: 3D scene, plan, elevation, system canvas, findings
flowchart TD
Room[RoomModel / seating / furniture]
Cat[EquipmentCatalog]
Place[Placement + snap]
Cov[Coverage engines]
Sys[Connections + CableRouter]
Val[DesignValidationEngine]
UI[Scene / plan / system canvas]
Room --> Place
Cat --> Place
Place --> Cov
Place --> Sys
Cov --> Val
Sys --> Val
Place --> UI
Cov --> UI
Val --> UI
| Area | Path |
|---|---|
| Room / seating | src/room/ |
| Catalog | src/catalog/ |
| Display / camera / speaker / mic estimates | src/av/*CoverageEngine.ts, src/av/DesignAnalysis.ts |
| Heatmap / floor sampling | src/av/HeatmapEngine.ts, src/av/simulation/ |
| Cables / ports / BOQ lengths | src/system/ |
| Rule-based findings | src/av/validation/ |
| Auto-layout pipeline | src/autodesign/ |
| 3D / overlays | src/engine/ |
| UI | src/ui/ |
The Design Assistant panel is a checklist over existing engines (inventory, coverage summaries, validation findings). It is not a generative AI model.
- Catalog is source of truth. Coverage uses manufacturer-style fields (
maxSplAt1m, dispersion, FOV) when present; otherwise the result is incomplete, not guessed. - Validation does not duplicate math.
DesignValidationEngineconsumes viewing, sightline, furniture, rack, cable, and system checks already implemented elsewhere. - Cables are polylines. Length is the sum of segments around obstacles, not a single Euclidean hop through a table.
- Undo vs analysis. Validation reports are derived state; they are not stuffed into undo snapshots.
- TypeScript + tests. Rule and routing behaviour is covered with Vitest (
tests/).
TypeScript | Three.js | Vite | Vitest
No backend. No environment variables. Static deploy (dist/).
npm install
npm run devnpm run test
npm run buildVercel: build npm run build, output dist.
Active development. Geometric coverage, heatmaps, and cable paths are design aids. They are not a substitute for acoustic commissioning, camera commissioning, or a licensed electrical design.
Apache License 2.0
Abishek Budihal