# VR Model Viewer Interactive 3-D model viewer built with **OpenSceneGraph** and **Assimp**. Designed for inspecting PMX (MikuMikuDance), FBX, OBJ and other model formats. ## Dependencies (already installed on Gentoo) | Library | Gentoo package | |---------|----------------| | OpenSceneGraph ≥ 3.6 | `dev-games/openscenegraph` | | Assimp ≥ 5.0 | `media-libs/assimp` | | CMake ≥ 3.16 | `dev-build/cmake` | | GCC / Clang (C++17) | `sys-devel/gcc` | ## Build ```bash # From the project root: cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug cmake --build build --parallel $(nproc) ``` Or inside VSCodium press **Ctrl+Shift+B** → *Configure + Build*. ## Run ```bash ./build/VRModelViewer path/to/model.pmx # or ./build/VRModelViewer path/to/model.fbx ``` ## Controls | Input | Action | |-------|--------| | **LMB drag** | Orbit camera | | **MMB drag** | Pan | | **Scroll** | Zoom (dolly) | | **R** | Reset camera to default humanoid view | | **F / Space** | Frame whole scene | | **S** | Toggle stats overlay (FPS, draw calls) | | **Esc** | Quit | ## Project structure ``` vr_model_viewer/ ├── CMakeLists.txt ├── include/ │ ├── Application.h # Top-level app / viewer owner │ ├── ModelLoader.h # Assimp → OSG conversion │ ├── SceneBuilder.h # Grid, axes, lights helpers │ └── OrbitManipulator.h # Tweaked orbit camera ├── src/ │ ├── main.cpp │ ├── Application.cpp │ ├── ModelLoader.cpp │ ├── SceneBuilder.cpp │ └── OrbitManipulator.cpp └── assets/ └── models/ # drop your .pmx / .fbx files here ``` ## Roadmap - [x] Phase 1 – Basic render pipeline + PMX/FBX loading - [ ] Phase 2 – Model placement & transform gizmos - [ ] Phase 3 – Bone / pose inspector - [ ] Phase 4 – ImGui UI panel - [ ] Phase 5 – VR headset integration (OpenXR)