Reality Bites: What I Learned Building a VR Photovoltaics Simulator
So, the bachelor thesis. Done. Submitted. Dragon defeated. The title is a mouthful: "Empowering the Energy Transition Through Virtual Reality: A Case Study on Promoting Photovoltaic Solutions."
But the real story? Itβs about wrestling with Unreal Engine, C++, performance bottlenecks, user studies, and the often-uncomfortable gap between technological potential and actual human learning. It started with a simple, nagging question: Why is adopting photovoltaics (PV) still such a hurdle for so many? Beyond policy and cost, there's a cognitive barrier. Datasheets, 2D plans β they don't convey the reality, the spatial impact, the feel of putting panels on your roof.
Could Virtual Reality bridge that gap? Offer clarity where brochures fail? That was the bet.
The Starting Point: Learning from KaisergasseVR
My journey didn't start from scratch. I initially looked at KaisergasseVR, an existing VR app by Energiewende Linz showcasing various climate solutions in a real Linz courtyard. The concept was solid: use VR's immersion for environmental education. Users could green the space, click to install PV, power a virtual EV.
A user study I ran on it (Chapter 5) confirmed the potential β people found the real-world context engaging. But it also revealed crucial weaknesses: shallow interactivity, no real simulation feedback, performance issues causing motion sickness, and unintuitive controls. The codebase itself, as I found when trying to build upon it, was fragile. Minor changes broke things. Collaboration was tough.
The verdict: KaisergasseVR was a valuable proof-of-concept but not the right foundation. A rewrite, focused specifically on PV education, was needed. Enter SolarPowerVR.
Building SolarPowerVR: A Quest for Clarity (and Performance)
The goal for SolarPowerVR (Chapter 3 & 4) was clear: build an experience that actually helps people understand PV dynamics through interaction and observation. Key design choices stemmed directly from the KaisergasseVR lessons:
- Real-World Grounding, Better Performance: Keep the Linz location for relatability, but optimize aggressively. Using Google 3D Tiles via the Cesium plugin initially seemed great for realism, but the performance cost (5ms on the game thread just for tile evaluation!) was unacceptable. Solution: Use Blender and the Blosm plugin to bake the Google data into optimized static meshes with multiple LODs, leveraging Unreal's Nanite. Performance first. No nausea allowed.
- Focused Interactivity: Ditch the broad scope. Focus only on PV. Allow users to cycle through distinct, pre-designed layouts (Flat, South-Inclined, East-West Split) based on real SolarProTool planning considerations. Let them run a time-lapsed simulation day-by-day, month-by-month.
- Meaningful Simulation & Feedback: This was critical. Integrate accurate sun positioning. Crucially, show the output: real-time kW on a clock, power graphs, accumulated kWh per day/month, and wattage on individual panels. Connect actions (changing layout, changing month) to visible consequences. We even added empirical correction curves to align the theoretical irradiance model with real-world SolarProTool output data for Linz across seasons.
- Intuitive Controls: Simple teleportation for navigation. Clear button mapping (added after initial testing feedback). A brief pre-experience explanation to set expectations.
The tech stack evolved: Unreal Engine 5.2-5.4, C++ for performance-critical loops (like iterating panels for power calculation), Blueprints for flexibility (UI, game logic, irradiance correction curves), Visual Studio 2022. I wrestled with Virtual Shadow Maps (balancing quality vs. cost with a moving sun), disabled ticking on static environment assets, and meticulously optimized the deployment process for the workshop laptops (driver updates, Oculus Debug Tool tweaks).
One intended feature, an AI assistant using the Convai plugin, didn't fully pan out. It needed tighter game state integration than feasible within the project scope and was ultimately removed β a reminder that sometimes cool ideas hit practical walls.
The Reality Check: What Did People Actually Learn?
Okay, we built the thing. Did it work? Two user studies (Chapter 5 & 6) compared SolarPowerVR against KaisergasseVR and assessed learning outcomes.
The Win: Interactivity does boost conceptual understanding. Participants using SolarPowerVR reported significantly higher understanding of how PV systems are used and their benefits compared to KaisergasseVR users. Letting people do things β change layouts, run simulations, see immediate feedback β clearly helps grasp the core concepts. This aligns with constructivist learning ideas; people build knowledge by doing.
The Nuance: Interactivity doesn't automatically teach specific facts. We asked participants about the optimal panel orientation (flat, south, east-west) for different times (June, December, Annual). The simulation showed this data implicitly β the flat layout consistently produced the most energy overall in the simulation due to sheer panel count on that specific roof, even if south-facing had better winter angles. Yet, participants' answers weren't significantly better than chance.
The Takeaway: Simply providing an interactive sandbox isn't enough for factual recall. Users enjoyed the experimentation in SolarPowerVR, but feedback suggested they needed more explicit guidance to connect their observations to specific rules or facts like optimal tilt. Exploration is great for engagement and conceptual understanding, but factual learning often needs more direct instruction, even in VR.
Personal Reflections
This whole process β from the initial idea, through the tech hurdles, the user studies, to the nuanced results β was a massive learning curve. Coming from web dev, diving into Unreal, C++, 3D modeling, VR specifics, and simulation accuracy was humbling.
The results resonate beyond VR. How often in software development do we build interactive tools assuming users will "discover" the optimal workflow or understand the underlying logic, when really, clear guidance or defaults are needed? It's a tension between exploration and explicit instruction.
The finding that interactivity aids conceptual understanding but not necessarily factual recall feels important. It tempers the hype around "learning by doing" β how the doing is structured and guided matters immensely. Maybe my ADHD brain relates: exploration is fun, but without structure, specific facts can get lost in the noise.
Future plans for SolarPowerVR involve deeper realism (photogrammetry, energy storage, clouds), a smarter AI guide, and better accessibility.
I think the core finding about the limits of interactivity for factual learning is genuinely useful. It's a dose of skeptical optimism about VR in education β powerful, yes, but not magic. Design is everything.
βοΈ This post was drafted by me and refined using Gemini 2.5 Pro.