Turn a real room into a game-ready 3D memory, one scan at a time.
Kinect Room Scanner is a WPF-based room scanning prototype that uses a Kinect v1 sensor to preview live depth and RGB streams, capture a static room as a point cloud, and export the result as ASCII PLY for downstream cleanup and import into tools like Blender.
This project is built around a simple idea: scan a physical space, preserve its shape, and eventually turn that space into something a videogame can understand and reuse.
At the moment, the app focuses on the capture pipeline that makes that possible:
- Detect a Kinect v1 sensor.
- Render live depth and RGB previews.
- Capture a single room frame into a colored point cloud.
- Export that point cloud as PLY for Blender or other 3D tooling.
From the user’s perspective, the flow is intentionally simple.
- Start the sensor.
- Watch the depth and RGB feeds come online.
- Point the sensor at the room you want to preserve.
- Capture a frame when the scene is stable.
- Export the capture to PLY.
- Import the file into Blender, clean it up, and continue toward meshing or game integration.
The application is split into two layers:
KinectRoomScanner.Appcontains the WPF interface, sensor service, commands, and view model.KinectRoomScanner.Corecontains the data models and the PLY exporter.
The current build is centered on a single-frame scan. When a capture is requested, the app samples depth points from the Kinect stream, optionally projects RGB values onto those points, and stores the result in memory as a PointCloud. That point cloud can then be exported as a standard ASCII PLY file.
The capture flow is designed to be practical for static rooms and prototype environments:
- The Kinect sensor starts streaming depth and color data.
- The app keeps the most recent color frame in memory.
- When capture is requested, the depth frame is converted into 3D points.
- If color data is available, RGB values are projected onto the captured points.
- The finished point cloud is stored as the last capture in the current session.
- Export writes the cloud to disk as ASCII PLY.
The exporter writes:
- ASCII PLY headers.
- Vertex positions in meters.
- Per-vertex RGB color when available.
- A Blender-friendly coordinate transform so the imported result uses Z-up.
That makes the output easy to inspect, clean up, and repurpose in downstream 3D software.
The long-term goal is not just to save a scan. It is to preserve the shape and feel of a room in a format that can be turned into usable game assets.
That means the scan should eventually support things like:
- Blockout or greybox reconstruction.
- Collision-ready room geometry.
- Environment reference for level artists.
- Game-world memory that can be revisited, reused, or stylized later.
This repository currently includes:
- A WPF UI shell with live sensor status.
- Depth and RGB preview panels.
- One-shot point-cloud capture.
- ASCII PLY export.
- A Blender import workflow for verifying exported scans.
Known limitations in the current prototype:
- The scan is a single-frame capture, not a full multi-pass reconstruction.
- The live Kinect branch depends on Kinect SDK v1.8 being available on the machine.
- The output is a point cloud, not a watertight mesh.
KinectRoomScanner.App/ WPF app, sensor service, view models, and UI
KinectRoomScanner.Core/ Point-cloud models and ASCII PLY export
docs/ Workflow notes and milestone planning
- Windows
- .NET Framework 4.8
- Kinect for Windows SDK v1.8 for live sensor access
- A connected Kinect v1 sensor for live capture
- Blender if you want to inspect or clean up exported PLY files
If the Kinect SDK assemblies are not available at build time, the app falls back to a stub sensor service so the solution can still compile in a limited mode.
- Open
KinectRoomScanner.slnin Visual Studio. - Restore and build the solution.
- Connect the Kinect v1 sensor.
- Run
KinectRoomScanner.App. - Press Start to begin streaming.
- Press Capture Frame when the room view is stable.
- Press Export PLY to save the capture.
After export, the scan can be imported into Blender with File > Import > Stanford (.ply).
The exported vertices are already converted to Blender-friendly Z-up coordinates and use meters as the unit scale. The result is still a point cloud, so it is best treated as a starting point for cleanup, analysis, or future meshing.
See the more detailed notes in docs/blender-workflow.md.
The current codebase lays the foundation for a fuller room reconstruction pipeline. The natural next steps are:
- Multi-frame capture.
- Frame alignment and registration.
- Noise reduction and filtering.
- Meshing.
- Game-engine export or direct runtime import.
Milestone planning and workflow details live in:
If you are documenting progress visually, add screenshots in docs/screenshots/ and replace the placeholders above as the project matures.










