## 3 Materials and Methods
### System Development
#### 3.1.1 Open Software Development Platforms  
The software prototype application adopts component-based software engineering approach [49], employs cutting edge web technologies and embodies code components, frameworks and libraries highly rated and widely used by the open source community. All the components used are stored and can be accessed through node package manager (NPM). This approach ensures the continuous upgrade of the application components and restricts the project lifecycle to the lifecycle of each component individually.  
Regarding the server setup, the \"everything on one server\" approach is adopted, where the entire environment resides on a single server [50]. This includes NGINX as a load balancer and a web server, Node.js/Express.js as the application server and PostgreSQL PostGIS as the database server. All components are hosted in a Linux Debian 9 Machine with 1 CPU, 25 GB of storage and 1 GB RAM provided by Linode free cloud migration service and may be upgraded according to \"Mergin' Mode\"  
\begin{table}
\begin{tabular}{c c} \hline \hline
**Specification** & **Technical Description** \\ \hline \multirow{4}{*}{Import xyz} & Importing space (three dimensions) coordinates values that may be in a CSV file extracted from a typical Digital Elevation Model or DTM/DSM. Practically this is implemented through the transformation of the design dimensions (pixel values) into a specified coordinate reference system \\ \hline CRS Support & Transforming coordinates of a model to a known coordinate reference system \\ \hline Spatial reference & Assigning coordinates of a known CRS to model \\ \hline Geometries Support & Connecting xyz points with lines based on known geometries (e.g., plane geometry) \\ \hline Scaling & Adjusting the size of a model according to the measurement units of the \\  & georeferenced model of the area \\ \hline Web App & Functioning over the World Wide Web \\ \hline Web Services & Exchanging data with data sources and end users via http requests \\ \hline \multirow{2}{*}{Serving Level of Detail} & Adjusting the quality of served 3D models according to end-user device and \\  & network capacity \\ \hline Open Standards & Utilizing W3C and OGC Web Services \\ \hline Animation & Loading animated 3D models \\ \hline Motion & Defining motion paths for animated 3D models \\ \hline Interactive motion & Specifying on-the-fly rules of motion \\ \hline \multirow{2}{*}{Vector layers} & Supporting thematic layers, in order to be used for specifying 3D models placement \\  & or motion paths \\ \hline Overlaying & Supporting superimposition of multiple thematic layers \\ \hline \multirow{2}{*}{Events triggering rules} & Defining topology rules for triggering events. This practically means activating \\  & motions of 3D models based on the end-user location \\ \hline \hline \end{tabular}
\end{table}
Table 2: Specifying “Mergin’ Mode.”needs. The usage of the Docker open source software platform assures a secure building and sharing of the application with the community.  
The application development takes advantage of the state-management supported by React v.16.13.1 and Redux, which makes it extremely fast and responsive as far as rendering is concerned. In terms of 3D rendering, Three.js r.114 was recently released and has completely taken on the weight of creating custom 3D geospatial worlds and enriching them with animated and inanimate georeferenced models. The user may navigate in custom worlds and observe them by modifying the position and the angle of view which in turn enable appropriately virtual events and storytelling. Individual features of the platform (navigation bar, side panels, modals), were developed by employing code components available at NPM. Finally, for any transformation between coordinate systems, including datum transformations, the Proj4.js is employed.