-
Notifications
You must be signed in to change notification settings - Fork 1
Project Information
This section explains the general flow of the app and what is done when.
The app starts by running the Manager scene. On the start of the Manager scene, it runs the Start() method in the SceneManagement.cs script. This loads the URP, ARFoundation, StartUI, and TrackingQuality scenes. These scenes are loaded to initialize the application, as well as ask the user whether the app is tracking properly.
Once the user confirms or continues, it runs the LoadMainScene() method in the SceneManagement.cs script. This unloads the StartUI and TrackingQuality scenes, then loads the HiveL2, TouchUI, and TrackingQuality scenes. HiveL2 is the starting area for the user, and TrackingQuality is reloaded to ensure it sits on top of the other scenes. This may not be a good method and it may be something to look into in the future.
At this point the user is in the AR world. Tracking and movement is handled by ARFoundation. The TouchUI class draws a menu button to the top right of the screen. If the user presses the button, it will toggle the submenu.
If any functionality is added, this wiki page should be updated.
This project was created using Unity 2021.2.10F1 as well as AR Foundation to allow the user to Interactively walk around the Hive. The current version of the app is optimized to build for Android 7+ (API 24+). Some of the other packages used include the ARCore, ARKit, XR Plugin Management, and Universal Render Pipeline. Some external tools that we use are Git, Blender, and a Code Editor.
Unity is a cross platform game engine and utilizes a drag and drop interface to create scenes, with a simple .NET (C#) scripting API to allow for more complex interactions. We use Unity 2021.2.10F1 for our project, but any 2021.2 version should work. This is NOT an LTS version of Unity and we do plan to update this to a later version of Unity if we continue in later semesters.
Click here for more info about Unity.
Go to the "Getting Started" page for more details.
Android is an open source Operating System primarily for mobile devices, like smartphones, tablets, and other portable devices. This is the primary build target for this application (mostly because the person writing this does not have a Mac or an iOS device). To build for android you will need the Android SDK and build tools. This is an optional package when installing unity so you don't need to install it separately. Here we target Android 7.0 (Nougat), also known as API 24, as this guarantees support for AR functionality.
Click here for more info about Android.
Go to the "Getting Started" page for more details.
AR Foundation is a cross platform API Layer created by Unity Technologies to allow for AR applications created in Unity to be compiled to multiple different platforms, including ARCore (Android), ARKit (iOS), Hololens, and Magic Leap. ARFoundation can be installed as a package through the Unity Package manager.
Click here for more info about AR Foundation. Click the top left to switch AR Foundation versions.
As mentioned above, ARCore is Android's AR API, and ARKit is iOS's AR API. XR plugin management is a Unity Package that tells the application which native API to compile to. On iOS this isn't necessary, as iOS is a relatively closed down platform, and ARKit is the only allowed AR API. However, since Android is open source, other AR/VR APIs exist and other platforms use Android as a base. You can install XR plugin management through the Unity Package Manager. It may get installed automatically because it may be a dependency for other packages.
The Universal Render Pipeline is one of Unity's Scriptable Render Pipelines. It is more extensible than the Built-in render pipeline in unity as well as running faster than other render pipelines as well. The Universal Render Pipeline can be a bit finnicky, especially with mobile devices, but it should result in a quality and performance increase. The Universal Render Pipeline can be installed through the Unity Package Manager.
Click Here for more info about the Universal Render Pipeline. Click the top left to switch URP versions.
Git is a version control system that we use to allow multiple people to share code and work concurrently. Unity uses YAML to represent scenes and many of its Assets (other than textures and models). This allows changes in scenes to be easily merged using Git and prevents us from only allowing 1 user to work on the project at a time, especially with the growing size of the Unity team. We can also utilize branching, letting users working on different components to pushes changes to a branch and then everything merged back into the main branch when features are complete.
Blender is an open source 3D modeling and animation software which we use to create our assets.
Unity uses .NET (C#) for its scripting API, and Unity highly recommends users to Install Microsoft Visual Studio as their default code editor. Other options include VSCode and Jetbrains Rider. VSCode is lightweight, launches quickly, and is very extensible, but has very lackluster code completion and linting. Visual Studio and Jetbrains Rider are full fledged IDEs which provide deeper integration with Unity, better Autocomplete and linting, and can also be used independantly of Unity for other purposes. Visual Studio is completely free. Jetbrains Rider is very similar in look and feel to IntelliJ and Pycharm, and can be obtained for free by getting the Jetbrains Education pack.