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.
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
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.
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
}