This project aims to build a C++-based ArchViz platform capable of:
- Importing 3D building models (Revit, ArchiCAD, Blender, FBX, glTF…)
- Rendering them with realistic lighting
- Allowing the user to walk around in VR/XR
- Interacting with doors, windows, lights, materials
- Eventually animating dynamic elements
- Low-level memory management
- Smart pointers
- Object-oriented architecture
- Multithreading basics
- Working with C/C++ libraries
- CMake (CLion uses it by default)
- GPU pipelines, coordinate systems
- Shaders (vertex, fragment)
- Lighting models (Phong, PBR)
- Basic rendering: meshes, textures, materials
- Assimp (FBX, OBJ, many formats)
- tinygltf (recommended for modern workflows)
- Export formats from Revit / ArchiCAD
- OpenXR concepts: views, projection layers, swapchains, tracking, controller inputs, frame loop
- Scene graph, ECS
- Asset loading & caching
- Event system, input abstraction
- Physics integration (optional)
- Linear algebra: matrices, vectors
- Transformations: translate, rotate, scale
- Quaternions (VR tracking)
- CLion IDE
- CMake build system
- Xcode Command Line tools
- Homebrew
- Git
- OpenGL or Vulkan (graphics API)
- OpenXR (VR/XR)
- Assimp, tinygltf (3D import)
- GLM (math)
- stb_image (textures)
- Bullet Physics / PhysX (optional)
- RenderDoc (debugging)
- Blender (3D visualization & conversion)
- Revit / ArchiCAD Exporters
- Unreal Engine (for comparison/testing)
- Your 14-inch M4 MacBook (16GB RAM, 1TB storage) is sufficient
- VR headset recommended (choose one):
- Meta Quest 3S (~€329)
- HTC Vive XR Elite
- Pico Neo 2 / Pico 4 (budget)
/src
/renderer
shaders/
textures/
mesh/
renderer.cpp/h
/xr
openxr_init.cpp
xr_session.cpp
xr_input.cpp
/scene
entity.cpp/h
components/
/import
assimp_loader.cpp
gltf_loader.cpp
/core
application.cpp
window.cpp
math/
utils/
- Learn OpenGL/Vulkan basics
- Learn GLM (matrices, quaternions)
- Load simple model with Assimp
- Render a room with camera controls
- Learn OpenXR
- Stereo rendering pipeline
- Head tracking, controller input
- Render simple cube in VR, implement navigation
- Import full building models (FBX/glTF)
- Materials, textures, lighting
- Navigation (teleport/smooth locomotion)
- Basic interactions (doors, lights)
- UI inside VR
- Shadows, GPU culling, light baking
- Asset optimization
- Multi-floor navigation
- Generate boilerplate code, CMake files
- Explain OpenXR/graphics functions
- Generate shaders
- Optimize rendering loops
- Convert pseudocode to C++
# Install Xcode Command Line tools
xcode-select --install
# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install libraries
brew install cmake glm assimp openxr-sdk renderdoc- Render a simple cube in VR using OpenXR + OpenGL