Platform Selection

Virtual Model

The Swayambhu Stories project is not a typical server-client model, but rather a virtual environment that users can interact with within a web UI. For the virtual model of the Swayambhu site, we chose Unity to render a 3D version of real world structures using photo scan data captured in Nepal. We considered a couple options before ultimately deciding on Unity: Unreal Engine 5 (UE5), Unity, and Potree. UE5 is used for extremely detailed video games, using physics libraries and high resolution models to represent the real world. Unity is a common option for app developers due to its ability to export and integrate with several platforms. It also can produce high resolution games and has a wide variety of asset libraries. Potree is an open-source renderer for point cloud data and works directly with webGL to integrate into web apps, making it ideal for point cloud representations of data. Unlike the previous iteration of this project, which used point cloud data to represent the religious complex, this year’s data will involve photos captured by drones to create the 3D image, which narrowed down our choice to UE5 or Unity. While UE5 had more appealing libraries and integrations for high resolution images, what made Unity the obvious choice was our need for web and (potentially) iOS integration. Unity continues to support web apps through webGL, but the newer versions of UE5 discontinued this feature, nullifying its benefits of high resolution libraries.

TechnologyProsCons
Potree– Works well with point cloud data – New data will not be in the form of a point cloud 
– Resolution was not what was desired by client in previous project 
– Not compatible with VR 
Unreal Engine 5– Able to create detailed and high-resolution models 
– Wide variety of physics & asset libraries 
– More difficult to learn 
– Web apps not supported through WebGL 
Unity – Able to export & integrate with several platforms (web, iOS, etc.) 
– Web apps supported through WebGL 
– Easier to learn than UE5; good option for beginners 
– Not as high-resolution as UE5

Sources: 

Web UI

The web UI part of the project is meant to be an overlay that displays over the Unity 3D render and contains information including a title, a tutorial, and annotations. Between Angular and React, the two main front-end frameworks, we decided on React because we are more familiar with the platform and there are existing open-source examples of Unity integrations. 

TechnologyProsCons
Angular– Can support HTML libraries for front-end components 
– Easy to build and deploy application 
– Easy to integrate backend services with javascript 
– Easy to add state to application 
– Certain user interface components may be difficult to build with just HTML
React– Flexible, modular structure 
– Designed with high performance in mind 
– We have experience in it 
– There are existing open-source examples of Unity integrations 
– Poor documentation
– Not a full-featured framework (only handles view part of MVC)

Client Requirements 

The client wants the model to be accessible via a website and VR experience (and eventually a mobile app). 

The client does not want the model to feel like a tour; users should be able to move around and access annotations freely.