Skip to content

Repository files navigation

Active dual-engine workspace

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.

AV System Engineering Simulator

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


Problem

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.


What it does vs what it does not

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.


Architecture

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
Loading

Source map (what to open first)

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.


Engineering decisions

  • 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. DesignValidationEngine consumes 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/).

Stack

TypeScript | Three.js | Vite | Vitest

No backend. No environment variables. Static deploy (dist/).


Run / test

npm install
npm run dev
npm run test
npm run build

Vercel: build npm run build, output dist.


Status and limits

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.


License

Apache License 2.0


Managed By:

Abishek Budihal

About

TypeScript AV planning workspace with 3D room layout, equipment placement, signal connections and a shared bill of materials.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages