In Lesson 2, we introduced 3D application building software like Unity as part of a general 3D/VR application building workflow. The main role of 3D application building software can be seen in providing the tools to combine different 3D models into a single application, to add dynamics (and, as a result, making the model more realistic), and to design ways for a user to interact with the 3D environment. We also learned that 3D application building software typically provides support to build stand-alone applications for different target platforms including common desktop operating systems, different mobile platforms, and also different VR devices.
A schematic diagram outlines the following information (in summary):
Input data (in a variety of formats) imported into either a 3D modeling software or a 3D application building software such as a game engine
In 3D modeling software, 3D models are created either manually or automatically based on computational methods
The resulting models could be either directly used for visualization (i.e. on the web) or imported into 3D application building software such as Unity3D for more elaborate functionalities
The application made from game engines (e.g. Unity 3D) can be deployed on both web and a variety of platforms including VR headsets
In the previous lesson, you already use some of the tools available in Unity for adding dynamics and interaction possibilities to a 3D scene in the form of giving the user control over the movement of gameobjects, animating gameobjects via scripting, collision detection, basic graphical user interface, and scripting more advanced behaviors, e.g. collecting coins and awarding points. As you have already experienced, adding behavior to your gameobjects is done either through standard unity components (e.g. rigidbody, colliders, etc.) or through scripting.
In this lesson, you will gain more practical experience with other tools available in Unity. But first, let's start the lesson with a brief overview of general tools utilized by Unity for 3D application building. As we go through this first part of the lesson, you will begin to realize that you have already used some of these tools in the previous lesson! We roughly divided the following list into ways to make a scene dynamic and ways to add interactions. However, this is a very rough distinction with certain aspects or tools contributing to both groups. In particular, scripting can be involved in all of these aspects and can be seen as a general-purpose tool capable of extending Unity in almost unlimited ways (e.g. in the previous lesson we used scripting to both animate our coins by constantly rotating them, as well as collecting them upon collision with the ball).
Animations: Animations [1] obviously are one of the main tools to make a scene dynamic. We will talk about animations quite a bit in this lesson and you will create your own animation clip to realize a camera flight over a scene. Here are a few examples of animations that can make a scene more realistic and dynamic:
Since this is a Geography/GIS class, we also want to briefly mention that support for importing GIS data into 3D modeling and application building software to employ it as part of 3D or VR application is slowly increasing. The image below shows a world map GameObject consisting of meshes for all countries in the Unity editor. The meshes were created from an ESRI shapefile using BlenderGIS, an add-on for importing/exporting GIS data into Blender. Then the meshes were exported and imported into Unity as an Autodesk .fbx file.
Recently, Mapbox announced the Mapbox Unity SDK [11], providing direct access to Mapbox hosted GIS data and Mapbox APIs within Unity. We believe that more initiatives like this can be expected for the near future, partially driven by the huge potential that current developments in VR and AR technology offer to GIS software developers.
Links
[1] https://docs.unity3d.com/Manual/AnimationSection.html
[2] https://docs.unity3d.com/Manual/StateMachineBasics.html
[3] https://docs.unity3d.com/Manual/ParticleSystems.html
[4] https://docs.unity3d.com/Manual/PhysicsSection.html
[5] https://docs.unity3d.com/Manual/Audio.html
[6] https://docs.unity3d.com/Manual/class-InputManager.html
[7] https://docs.unity3d.com/Manual/UISystem.html
[8] https://learn.unity.com/search?k=%5B%22q%3AUser+Interface%22%5D
[9] https://www.youtube.com/watch?v=dzOsvgc2cKI
[10] https://www.vive.com/us/accessory/controller/
[11] https://blog.mapbox.com/announcing-the-mapbox-unity-sdk-afb07d33bd96