A VR Workspace for Architects & Engineers

Building J.A.R.V.I.S for AEC Design

Visualyze is a room-scale VR workspace built in Unity using the Meta XR SDK, currently prototyped on Meta Quest with optical hand-tracking so architects and engineers can sketch and edit 3D geometry around them instead of using 2D drawings.

Focused on early-stage AEC spatial ideation, with an in-progress export path into existing CAD/BIM tools rather than trying to replace them.

Revit to VR LoopglTF PipelineQuest VR ClientRevit Plugin

Here's what hand-gesture-based 3D manipulation could look like in practice.

Planned MVP Features

  • Room-scale sketching in 3D with hand gestures
  • Pinch, scale, rotate, and place geometry intuitively
  • Full-scale walk-throughs for spatial verification
  • Fast iteration loops for early design review
  • Collaboration-ready foundations for shared sessions
Current State and Metrics

Tech Stack

Laptop Build

  • Unity C# Scripts (Interaction + Logging)
  • JSON Edit Logs for Element Transforms
  • ADB Tooling for Quest File Pulls

VR Runtime

  • Unity 2022.3 LTS
  • Meta XR All-in-One SDK
  • GLTFast for glTF Ingestion

Model Pipeline

  • Revit 2025 Plugin (Visual Studio 2022, .NET 4.8)
  • glTF Export + Model Mapping
  • JSON → Revit Change Application

Current State: The Core Loop

Revit → glTF

Export a Revit model to glTF and load it into the Quest VR client.

Hand-Tracked Edits

Grab and move elements in VR using hand tracking; capture transforms in-session.

JSON Edit Log

Write edits to `visualyze_edits.json`, then pull via ADB to desktop.

Revit Apply

Revit plugin reads JSON and applies updates directly in the model.

gesture-stack.tsv0.8
const grab = hands.pinch(primary) && focus.mesh;
const scale = hands.twoHanded && distance.delta;

// Write element edits to visualyze_edits.json for Revit sync
public void LogEdit(string elementName, Vector3 original, Vector3 next)
{
  float[] origPos = ConvertPosition(original);  // Unity → Revit axes
  float[] newPos  = ConvertPosition(next);

  editLog.edits.Add(new EditEntry {
    element_name = elementName,
    original_position = origPos,
    new_position = newPos,
    timestamp = DateTime.UtcNow.ToString("o")
  });

  SaveEditLog(); // Persist JSON for ADB pull + Revit plugin
}

Metric Achievements

Achieved Low Edit Latency38 ms
Revit Apply Cycle Time2.4 s
Edits Logged Per Session28–55
Model Scale Tested120k triangles
Hand‑Tracking Success Rate86%
End‑to‑End Loop Time~3 min