Project 2
One More Cup of Coffee
Project 2 had the professor give us a template of a new university building, loaded up with a kiosk inside. The kiosk itself had a few items to interact with, ones to grab in VR, as well as audio playing in 3D space.
The project requirements wanted us to reinvent the kiosk, implementing a sort of currency, as well as a way to produce objects for the user to then interact with. Essentially, we just had to liven up and change the existing kiosk, all the while ensuring it could perform on the Oculus Quest well.
One More Cup of Ego
This project was designed by both Ian Ubaldo and myself. If you're interested in looking at Ian's other works, you can find his page here.
Me and Ian decided to collaborate to create a project inspired heavily off of the games made by the Korean game company, Project Moon. More specifically, we took heavily influence from both Lobotomy Corporation and Library of Ruina.
The games' narrative focuses on a sort of dystopian future, where there exist creatures that are very similar to that of the ones in the SCP Fictional Universe. We decided to create kiosks that reflected some of the characters of Library of Ruina, specifically the patron librarians Malkuth, Hod, Netzach, and Yesod, depicted in the image. We created floors that contained items reflective of their library floors in the games, and we created items for the kiosks that reflect the weapons portrayed in lobotomy corporation.
Live Project
Here is a short video of what the project looks like in VR!
How-To
Project Files
For the project files, you'll want to download the zip that can be found in the github repository here. Follow the next few steps:
Download the code ZIP by clicking on the green code button, then pressing download ZIP.
Create a folder for the project files on your computer.
Drag and drop the zip from your downloads folder into your new folder.
Extract the contents of the project zip into your folder.
Other Files
For extra files, you'll have to download the UniVRM v0.105.0, specifically for VRM-1.0 package, which you can find here.
Unity Setup
Register for an account for Unity, and then download Unity Hub from here.
2. Open Unity Hub. Press Installs, and click Install Editor.
3. Press Archive, and then visit the download archive.
4. Click on Download LTS Releases, and download the unity hub version of LTS Unity 2021.3.6f1.
5. Once that finishes installing, go back to the Projects section of Unity Hub. Press Open, then select the folder which you put the project files in. This will open the project.
6. Once the project is open, open the file option and press Open Scene.
7. From there, go to the path Assets/Scenes and select MainScene.unity
8. In the case of an Asset Import failure message, go to the folder path of Assets/Models/Sephirah in the project files in Unity itself.
9. You'll have to fix each of the VRoid Models (Sorry for the inconvenience!)
Do the process below for each of the following paths:
Assets/Models/Sephirah/Hod/HodAvatar
Assets/Models/Sephirah/Ian/IanLobCorpEmployee
Assets/Models/Sephirah/Malkuth/Malkuth Avatar
Assets/Models/Sephirah/Netzach/Netzach Avatar
Assets/Models/Sephirah/rob/Robert Petrov
Assets/Models/Sephirah/Yesod/Yesod Avatar
Essentially, what needs to be done is reimporting the models, as VRM can sometimes awkwardly export when moving to projects.
10. If on PC, follow this step. If not, jump to step 12.
Under the MainScene Hierarchy, press the arrow next to VR to open the VR settings.
Click on CameraRigs.SpatialSimulator and make sure that it is checked off under the inspector. Consequently, click on CameraRigs.UnityXRPluginFramework and make sure it is NOT checked off.
11. Press the Play button in the middle of the scene screen and enjoy!
12. Under the MainScene Hierarchy, press the arrow next to VR to open the VR settings.
Click on CameraRigs.SpatialSimulator and make sure that it is NOT checked off under the inspector. Consequently, click on CameraRigs.UnityXRPluginFramework and make sure it IS checked off.
13. Click on File and open the Build Settings. Select the Android platform, and press Switch Platform.
14. Plug your quest device in and select your device under the Run Device section.
Then press Build And Run once you select your device. Enjoy the project!
Assets and Project Requirements
As Ian and I worked on the project together, we had to get double the requirements for the project. This includes:
30 Unique Web Imported Models
20 Interactable Models
4 New Lights for the Kiosk
4 Animated Models
4 Objects in Scene that produce new objects.
8 Unique Sounds that get louder as you get closer, or sounds produced by object interaction/collision.
2 Models of ourselves that are animated and produce sound on contact.
Imported Assets
Portal 2 Tubes Kit by Portaller
2 Imported Models, as the top and bottom parts are two pieces put together, 2/30.
Counter for Shop by m31odyr
1 Imported Model, 3/30.
Vintage Record Player by JennyB
1/30 Imported Models, 4/30.
Table (Dark) by Arseniy Kruglov
1/30 Imported Models, 5/30.
Vintage Books by Feivelyn
Models: 1 on History Floor,
2 on Technology Floor (1 Interactable)
3 on Literature Floor
2 on Art Floor
8 Models, 13/30 Total Imported Models, 1/20 Interactable Models.
Bookcase by Bec
2 Models, 15/30 Total Imported Models.
Lowpoly Gold Coin by BlobFortress
1 Model, Interactable, 2/20 Interactable, 16/30 Total.
Old Books by Arkikon
1 Model, 17/30 Total.
Vintage globe by AnnaBelle Fibonacci
1 Model, 18/30 Total.
Game Ready Rustic Table by OmegaRedZA
1 Model, 19/30.
Antique Wooden Bookcase by Lorenzo Dragon
1 Model, 20/30.
Rustic Chair by Araon
1 Model, 22/30 Models
Leather Couch by Tenshinzo
2 Models, 24/30 Models
Coffee Table by JrMadMan
1 Model, 26/30
gear low-poly free by ruslan malovsky
2 Models, 29/30
Round Table and Chairs by vilsonpistori
1 Model, 30/30
art deco wall light by AleixoAlonso
1 Model, 32/30 Imported Models
Model used for Netzach and Yesod floor lighting, 3/4 Lights.
Wall Clock by FelipseMSX
1 Model, 33/30 Imported Models.
Wall Light by Lucas Garnier
1 Model, 34/30 Imported Models.
Model used for Malkuth Floor lighting, 4/4 Lights.
easel by Every 3D
3 Models, 37/30 Imported Models.
Self-Made Assets
These models were designed, rigged, and animated by both Ian and myself. Here is the software we used for designing the models and animating them.
Ian's models focused on the EGO equipment we were selling in the kiosk. They were made in blender.
The avatar models that are animated were done by me, made in VRoid Studio, and using blender and mixamo to rig/animate them.
Ego Buttons by Ian Ubaldo
The images themselves can be found here.
15/4 Required Objects that spawn objects on Interaction.
The following assets are the physical models.
Da Capo by Ian Ubaldo
7/20 Interactable Models
1/8 Models with Sound
by Ian Ubaldo
8/20 Interactable Models
2/8 Models with Sound
Fragments from Somewhere by Ian Ubaldo
9/20 Interactable Models
3/8 Models with Sound
Hornet by Ian Ubaldo
10/20 Interactable Models
Wingbeat by Ian Ubaldo
11/20 Interactable Models
4/8 Models with Sound
by Ian Ubaldo
12/20 Interactable Models
5/8 Models with Sound
Fourth-match Flame by Ian Ubaldo
13/20 Interactable Models
Bloody Desire by Ian Ubaldo
14/20 Interactable Models
6/8 Models with Sound
Red Eyes by Ian Ubaldo
15/20 Interactable Models
7/8 Models with Sound
Laetitia by Ian Ubaldo
16/20 Interactable Models
Harmony by Ian Ubaldo
17/20 Interactable Models
8/8 Models with Sound
Regret by Ian Ubaldo
18/20 Interactable Models
9/8 Models with Sound
Solemn Vow by Ian Ubaldo
19/20 Interactable Models
Magic Bullet by Ian Ubaldo
20/20 Interactable Models
Grinder Mk4 by Ian Ubaldo
21/20 Interactable Models
10/8 Models with Sound
Robert Petrov by Robert Petrov
1 of 2 Avatars of ourselves that play sound on touch. The voice was recorded by myself.
Ian Lob Corp Employee by Robert Petrov
2 of 2 Animated Models of ourselves, that play sound on touch, sound for this model recorded by Ian Ubaldo.
Netzach Avatar by Robert Petrov
1 of 4 Animated Models.
Malkuth Avatar by Robert Petrov
2/4 Animated Models
Yesod Avatar by Robert Petrov
3/4 Animated Models
Hod Avatar by Robert Petrov
4/4 Animated Models
Audio Assets
The audio used was downloaded from a google drive folder containing the in-game assets of Library of Ruina, which can be found here. All credit for these sounds goes to Project Moon once again.
The audio that we used as ambient sound, which counted for 4 of our 8 proximity based/interactive sounds, can be found here. The sound played specifically from the record player asset aforementioned. The assets we specifically used from this section are here:
ch8_Malkuth.wav
ch8_.Yesod.wav
ch8_Hod.wav
ch8_Netzach.wav
The 4 remaining audios needed were filled out by implementing interactive sounds for the melee-style EGO items of every floor, with sounds being added beyond fulfilling the required 8.
The audio for these items was directly decompiled from the files of the game Lobotomy Corporation, you can find the link to the game here.
Performance
More analysis of the performance in the quest can be found on Ian's page, here.
Overall, the performance of the device seems to have remain steady. It retains relatively high frames, only dropping in the image below due to screenshotting. The most interesting thing was that frames also dropped a bit when objects were being held, which was interesting due to the fact that they didn't really cause issues when not being held. It was likely the fact that the quest was forced to persistently re-render a relatively high poly object, especially when it came to including real time lighting in the mix of this. The overall conclusion is that lighting is likely a very expensive operation for the quest devices.
Interaction Difference
If you're interested in Ian's views on the difference between the simulator and the headset, you can find his analysis more attached to his here. If you're interested in my analysis, please feel free to read below.
The biggest difference between using the Headset over the Simulator regards the perspective itself. In the simulator, it is very easy to find everything, especially given that unity lets you directly focus on items in the hierarchy, and mess around with them as you please. On the simulator, while you feel much more detached from unity and concepts of the programming backend, you become much more in tune with the physical things you put in front of the user, which ultimately ends up being much more important.
Using the hand controls of the spatial simulator is incredibly difficult, as you must first select a hand, and then aim with the mouse, and then use WASD to move the key relative. In the headset, this complex movement is unnecessary, as you can simply move the hand with the controller however you need to. On top of that, the spatial simulator is unable to simulate both hands moving at once, whereas the headset can read all movements the user makes simultaneously.
This lack of fine motor movement in the simulator makes the headset feel much better in comparison. That, and the headset gives you a better feel of what the project’s intentions truly are. When you lay out furniture, while you could ballpark something like the scale for it in the simulator, you have no idea how it truly feels until you enter the VR space and try it. A couch can “look” fine in the simulator, but feel awkward when you approach it and try to move around it, be it as a result. Even so, VR gives you a much more realistic feel of scale and positioning, as you get a proper perspective of what things would look like to a real human. You have a sense of realism that carries over into the headset, that indicates that something is off if you see it in the headset.
Collisions also become heavily impacted by the simulator, as the limited movement means you can’t really interact with the space like a real person should. One glaring issue is that even in the headsets, you can’t really grab something with both hands, as the control is delegated to the last hand that touched it. And the headset, much like the simulator, has no real feeling of weight. If you collide into something, you can’t feel the thud of running into a wall or a heavy piece of furniture, nor can you feel the texture when you run your hands along it. When you interact with objects, there is no weight to any of them, in the sense that no matter what, you will always be able to pick up objects regardless of your own real physical strength. Unless all of your items have proper colliders, there will be awkward phasing at times too.
Ultimately, while the simulator and the headset both fail in some areas, the headset provides a much more real feeling of scale and positioning relative to yourself, allowing for much more fine-tuning of the scenes you make.
Ian's Analysis
The biggest difference between using the Headset over the Simulator regards the perspective itself. In the simulator, it is very easy to find everything, especially given that unity lets you directly focus on items in the hierarchy, and mess around with them as you please. On the simulator, while you feel much more detached from unity and concepts of the programming backend, you become much more in tune with the physical things you put in front of the user, which ultimately ends up being much more important.
Using the hand controls of the spatial simulator is incredibly difficult, as you must first select a hand, and then aim with the mouse, and then use WASD to move the key relative. In the headset, this complex movement is unnecessary, as you can simply move the hand with the controller however you need to. On top of that, the spatial simulator is unable to simulate both hands moving at once, whereas the headset can read all movements the user makes simultaneously.
This lack of fine motor movement in the simulator makes the headset feel much better in comparison. That, and the headset gives you a better feel of what the project’s intentions truly are. When you lay out furniture, while you could ballpark something like the scale for it in the simulator, you have no idea how it truly feels until you enter the VR space and try it. A couch can “look” fine in the simulator, but feel awkward when you approach it and try to move around it, be it as a result. Even so, VR gives you a much more realistic feel of scale and positioning, as you get a proper perspective of what things would look like to a real human. You have a sense of realism that carries over into the headset, that indicates that something is off if you see it in the headset.
Collisions also become heavily impacted by the simulator, as the limited movement means you can’t really interact with the space like a real person should. One glaring issue is that even in the headsets, you can’t really grab something with both hands, as the control is delegated to the last hand that touched it. And the headset, much like the simulator, has no real feeling of weight. If you collide into something, you can’t feel the thud of running into a wall or a heavy piece of furniture, nor can you feel the texture when you run your hands along it. When you interact with objects, there is no weight to any of them, in the sense that no matter what, you will always be able to pick up objects regardless of your own real physical strength. You can
Ultimately, while the simulator and the headset both fail in some areas, the headset provides a much more real feeling of scale and positioning relative to yourself, allowing for much more fine-tuning of the scenes you make.