Portfolio / Capstone Project

Telus Spark VR

Laser scan to immersive virtual reality — a full-pipeline geomatics project.

Laser Scanning Point Cloud Processing Mesh Generation Unreal Engine VR
Photo: CharlesAPhillips63 / CC BY-SA 4.0
Location Telus Spark Science Centre
Calgary, Alberta
Primary Deliverable Immersive VR Environment
Meta Quest / PC VR
Data Scale 100 GB+ point cloud
Full first floor capture

Project Goal

The main objective was to use geomatics and 3D visualization technology to capture Telus Spark and turn it into a usable VR model. Instead of only viewing the building as a point cloud, we wanted to process the data into a more realistic and interactive environment that users could walk through.

The project connected several areas of geomatics: laser scanning, point cloud registration, 3D modelling, mesh generation, texture processing, VR optimization, and Unreal Engine visualization. The final goal was not just to scan the building — it was to create something that felt like a real virtual tour.

01 Field Scan
02 Register & Export
03 Mesh & Texture
04 Blender Optimize
05 Unreal VR

Data Collection

Before entering Telus Spark, a GPS control network was established outside the building — placing a GNSS receiver on a tripod at control points to provide a georeferenced framework that grounded the entire interior survey.

GNSS receiver on tripod outdoors establishing GPS control

GNSS receiver on tripod — establishing the exterior control network

Two complementary Leica scanners were then used to capture the interior, each suited to different areas and conditions within the building.

Leica RTC360

Deployed in larger interior spaces for high-quality, high-density static scans. Provided the accuracy and detail needed for the main exhibit areas, delivering reliable scan coverage and strong geometric fidelity throughout.

Leica BLK2GO

Used in tighter and harder-to-reach areas thanks to its SLAM-based mobile scanning. Allowed continuous capture while walking through the environment, efficiently filling in spaces where static setups were impractical.

Together the two scanners produced a more complete model than either could achieve alone — the RTC360 providing accuracy and detail, the BLK2GO providing coverage and speed in complex spaces.

Colourised point cloud of planetarium seating area with measurement line BLK2GO mobile scanner capturing interior corridor

RTC360 capture — planetarium seating area with distance measurement

BLK2GO mobile scan — continuous SLAM-based capture through tighter spaces

Registration & Point Cloud Processing

After scanning, data was imported into Leica Cyclone REGISTER 360 / REGISTER 360+ to register scan positions, align the individual setups, and create a unified point cloud. The resulting dataset was substantial — E57 exports exceeded 100 GB — which made file size and processing power a major constraint throughout the project.

To manage this, the project was broken into smaller sections rather than processed as a single massive file. Data was exported in multiple formats depending on the downstream workflow: unified E57 files, per-setup E57 files, colourized point clouds, and mesh formats including OBJ, PLY, and FBX.

Cyclone Register 360 floor plan showing all scan positions

Cyclone Register 360 — registered scan positions overlaid on the first floor plan

Meshing & Texture Challenges

One of the most significant challenges was getting the point cloud into RealityCapture / RealityScan properly. Some E57 exports caused issues because they did not contain the image data RealityCapture required — in those cases the software treated the data as pure LiDAR and produced errors such as "no features detected" or "no virtual images generated."

This required systematic testing of export methods to determine whether each E57 contained embedded panoramic images, vertex colour, scanner image data, or only raw point cloud geometry. When colour was present but usable images were absent, alternate approaches were used including CloudCompare meshing, Blender cleanup, and external photo texture projection.

CloudCompare was also tested for point cloud viewing, density reduction, and Poisson surface reconstruction. Cyclone 3DR was used to create limit boxes, divide the dataset into manageable sections, and export smaller chunks for downstream processing.

Colourised point cloud of exhibit room Point cloud of main floor in Cyclone 3DR

Colourised point cloud — exhibit room captured by RTC360

Cyclone 3DR — full first floor point cloud sectioned for processing

Blender Optimization

Once mesh data was generated, Blender was used to make the model suitable for real-time VR. Raw scan meshes are typically far too heavy for interactive use — a model can render well on a workstation but be completely unusable on a headset without significant optimization. This stage included polygon decimation, geometry cleanup, scale and origin correction, UV layout, texture baking, and FBX export for Unreal Engine.

Unreal Engine VR Setup

The optimized model was imported into Unreal Engine and built into an interactive VR experience. This involved setting the correct real-world scale, adding collision geometry so users could physically walk through the space without falling through floors or walls, configuring a spawn point at realistic human height, and implementing VR navigation controls for joystick-based movement. The experience was tested and validated on the Meta Quest 3S headset.

An exterior intro scene was also explored — using architectural references, photos, and simplified Blender geometry — to allow the VR experience to begin outside Telus Spark before transitioning into the scanned interior.

Key Challenges

  • Extremely large file sizes — E57 exports exceeded 100 GB
  • Limited computer memory and processing capacity
  • E57 files not consistently preserving panoramic image data
  • RealityCapture failing to detect features from some scan exports
  • Converting dense point clouds into clean, watertight meshes
  • Maintaining realistic textures through the processing pipeline
  • Reducing model polygon count to meet real-time VR performance targets
  • Fixing scale and collision in Unreal Engine for a scan-derived mesh
  • Achieving stable, smooth performance on the Meta Quest headset

Our Telus Spark capstone transformed real-world laser scan data into an interactive VR environment. By combining RTC360 and BLK2GO scanning, point cloud registration, mesh processing, Blender optimization, and Unreal Engine VR development, we created a repeatable workflow for turning large geomatics datasets into immersive virtual experiences — demonstrating both the potential and the practical challenges of using laser scanning for real-time VR applications.

Location Telus Spark Science Centre
Calgary, Alberta
Primary Deliverable Interactive VR Environment
Meta Quest / PC VR
Field Equipment
Leica RTC360 Leica BLK2GO Total Station GNSS Receiver
Processing Software
Cyclone Register 360 Cyclone 3DR StarNet CloudCompare RealityCapture
3D & VR Software
Blender Unreal Engine OBS
VR Platform
Meta Quest 3S PC VR
See It In Action View on LinkedIn ↗
Data Volume 100 GB+ E57 point cloud
Services Demonstrated
Laser Scanning Point Cloud Processing Mesh Generation VR Visualization
More Coming Soon

Additional projects are on the way

Have a project to discuss? Get in touch →