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

  1. 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.

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.

Clipboard by valeriydeyneca

1 Model, 21/30 Models

Interactable, 3/20 Models.

Rustic Chair by Araon

1 Model, 22/30 Models

Leather Couch by Tenshinzo

2 Models, 24/30 Models

Smartphone by germydan

1 Model, 25/30

1 Interactable, 4/20 Interactable Models

Coffee Table by JrMadMan

1 Model, 26/30

Light Fixture by Aullwen

1 Model, 27/30

Model used for Hod's Floor lighting, 1/4 Lights.

gear low-poly free by ruslan malovsky

2 Models, 29/30

Round Table and Chairs by vilsonpistori

1 Model, 30/30

The Pen by Artieee

1 Model, 31/30 Imported Models

1 Interactable, 5/20 Interactable Models

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.

Beer can by Arte Hexe

1 Model, 38/30 Imported Models

1 Interactable, 6/20 Interactable 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:

  1. ch8_Malkuth.wav

  2. ch8_.Yesod.wav

  3. ch8_Hod.wav

  4. 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.