Difference between revisions of "Project2W21"

From Immersive Visualization Lab Wiki
Jump to: navigation, search
Line 1: Line 1:
=Homework Assignment 2=
+
=Homework Assignment 2: Covid Testing=
  
 
UNDER CONSTRUCTION
 
UNDER CONSTRUCTION
Line 12: Line 12:
 
'''Learning objectives:'''
 
'''Learning objectives:'''
  
 +
* Wayfinding aids
 +
* First person view
 
* Analog joystick simulation
 
* Analog joystick simulation
* Wayfinding
+
* Collision detection when walking
  
 
'''Overview:'''
 
'''Overview:'''
  
<!--
 
 
The scenario of this project is the following: Tessa is a freshman computer science student at UCSD. Because of Covid, she has never been to the campus before. In a few days she wants to visit her grandparents. To make sure she has not contracted the Coronavirus, she scheduled a time slot for a walk-up Covid test at the Price Center. Her friend dropped her off at the CSE building. Her test appointment is in 5 minutes, so she has no time to lose. Luckily she brought her brand new and stylish Apple AR glasses, into which she entered the destination: Price Center Ballroom West.
 
The scenario of this project is the following: Tessa is a freshman computer science student at UCSD. Because of Covid, she has never been to the campus before. In a few days she wants to visit her grandparents. To make sure she has not contracted the Coronavirus, she scheduled a time slot for a walk-up Covid test at the Price Center. Her friend dropped her off at the CSE building. Her test appointment is in 5 minutes, so she has no time to lose. Luckily she brought her brand new and stylish Apple AR glasses, into which she entered the destination: Price Center Ballroom West.
  
 
To help her find the way you need to program wayfinding aids into the AR glasses, as well as set up wayfinding aids in the environment.
 
To help her find the way you need to program wayfinding aids into the AR glasses, as well as set up wayfinding aids in the environment.
  
The following wayfinding aids are needed:
+
We are going to give an introduction to this project in discussion on January 25th at 4pm. The due date for the project is Sunday, February 7th at 11:59pm.
 +
 
 +
==Implementation==
 +
 
 +
Use this [http://www.calit2.net/~jschulze/tmp/engineering-campus-small.zip UCSD campus model] as the setting for your Unity application. The unit size is one inch, so you have to scale the model to match Unity's unit size, in order for the campus to show up life sized. Load it into your application.
 +
 
 +
Turn the ground plane, as well as the buildings between the CSE building and the Price Center into colliders that cannot be traversed.
 +
 
 +
Implement the following wayfinding aids:
  
 
In the environment:
 
In the environment:
Line 32: Line 41:
 
* Display an arrow pointing to the destination ("as the crow flies") in the top left of the screen. This arrow can rotate in the plane of the screen, or in 3D space. It needs to constantly update to point to the Price Center Ballroom West.
 
* Display an arrow pointing to the destination ("as the crow flies") in the top left of the screen. This arrow can rotate in the plane of the screen, or in 3D space. It needs to constantly update to point to the Price Center Ballroom West.
  
 +
To allow Tessa to walk around, implement a simulation of an analog joystick with the mouse:
 +
* Movement starts when the user clicks anywhere on the screen and holds the mouse button down: this mouse location is the starting point and needs to be memorized.
 +
* From this starting point, when the user drags the mouse to the right (while holding the button down), Tessa turns to the right. The more right the mouse is dragged, the faster the turn. Do the equivalent for mouse movement to the left of the starting point.
 +
* From the same starting point, when the user drags the mouse up on the screen, Tessa walks forward. The further up the mouse is moved, the faster Tessa walks.
 +
* When the user lets go of the mouse button, the motion stops immediately.
  
 +
Make sure Tessa can't walk through buildings by checking for collision with the building colliders.
  
walk from cse building to price center for covid test
+
Also make sure Tessa stays on the ground wherever she goes (will not start floating above it or sink into it).
  
implement walking technique for mouse: click then drag: up is forward, left/right turns, down is back
+
Tessa should start at the main entrance of the CSE building, facing away from the building. The user of your application should see a first person view of what she sees (i.e., you do not need to have a visual representation of Tessa).
  
provide wayfinding aids:
+
The destination is the Price Center Ballroom West. This is the ballroom at the top of the stairs next to the Amazon shipping center by the bookstore. To reach the destination, Tessa does not need to walk up the stairs. It is sufficient that she reaches the bottom of the stairs.
 
+
 
+
 
+
no building collision detection
+
 
+
user starts at cse building main exit towards bear
+
user needs to stay on the ground (snap to ground)
+
end is at stairs to ballroom (next to amazon shipping center)
+
 
+
 
+
 
+
 
+
 
+
In this project you are going to need to implement a simple game on social distancing. A deadly disease (much deadlier than COVID-19) has spread throughout the world and kills anyone who is within less than 6 feet (~2 meters) from an infected person that is not wearing a mask. The game is played in first person view in a 3D environment. People randomly spawn in front of the player, walking slowly towards them. The player's goal is to stare at them long enough for them to get reminded to put their mask on. If the person does not put their mask on before they get within 6 feet (~2 meters) from the player, the player gets infected and loses the game.
+
 
+
Our TA Haoqi created a demo video for you: [[Media:CSE165W21-Project1-Demo.mp4|Social Distancing Demo]]. The buildings in the background are optional.
+
 
+
We are going to give an introduction to this project in discussion on January 11th at 4pm. The due date for the project is Sunday, January 24th at 11:59pm.
+
 
+
==1. Building the 3D Scene (30 Points)==
+
 
+
The only visible elements of your scene are going to be the infected people that are approaching the player, and the masks they put on when the player is successful at staring at them.
+
 
+
We are looking for the following things in this part:
+
 
+
* Choose a 3D model from the Unity asset store that represents an infected person. (5 points)
+
* Also choose a 3D model for a face mask that you can put on the infected person. (5 points)
+
* Resize both to match your application's scale. Note that 1 unit in Unity equals 1 meter. (5 points)
+
* Create a collision box where the infected person's head is (or the collision box can cover the whole person). (5 points)
+
* Position the player in the scene so that the player is facing the spawn points in '''first person view'''. (10 points)
+
 
+
The figure below shows a '''top-down view''' of the 3D environment you are creating.
+
 
+
[[Image:project1-schematic.jpg|300px]]
+
 
+
==2. Gameplay (70 Points)==
+
 
+
* Start a timer to keep track of how long the player survives. (5 points)
+
* Every few seconds, spawn a new infected person in one of the two spawn points (randomly selected). (5 points)
+
* Have the infected person walk slowly along their walking trajectory. The person doesn't have to move their legs. (5 points)
+
* Draw 'crosshairs'/a 'reticle' (e.g., a small sphere) in the center of the screen, indicating the player's viewing direction. (10 points)
+
* Allow the player to turn their head (i.e., the camera) with the mouse: support both left/right rotation and up/down tilt of the camera. (10 points)
+
* Change the color or shape of the crosshairs/reticle when it intersects an infected person's head. At this point also start a 2 second timer. You don't need to display the timer. (10 points)
+
* Once the 2 second timer is up, render a mask on top of the person's face. (5 points)
+
* Detect when each infected person gets within 6 feet (~2 meters) from the player. If the person is not wearing a mask at this point, stop the game and display text such as: "You Survived <n> seconds." Show this message for a few seconds, then restart the game. (10 points)
+
* Let the person keep walking until the de-spawn point, then destroy the game object. (5 points)
+
* Tweak the game parameters (e.g., speed of the infected, frequency of newly appearing infected, size of collision box, sensitivity of mouse control of viewing direction) to make the game hard enough to be a challenge, but not too hard to be frustrating. (5 points)
+
  
 
==3. Extra Credit (Up to 10 points)==
 
==3. Extra Credit (Up to 10 points)==
  
* Add a [https://docs.unity3d.com/560/Documentation/Manual/HOWTO-UseSkybox.html '''Skybox'''] to your scene. You are free to use textures of your own choice. (5 points)
+
TBD
* '''Trigger indicator''': add a visual indicator (no text) showing how long the user has stared at a person and how much longer they need to do it (5 points). Examples:
+
**Radial widget: [[Image:radial.png | x100px]]
+
**Slider widget: [[Image:slider.png | x100px]]
+
**Hexagons:      [https://www.youtube.com/watch?v=uTH9NCxNvZI Hexagons]
+
 
+
If you have your own ideas for extra credit, email us (TAs and/or instructor). If we approve additional extra credit options, we'll add them here.
+
-->
+
  
 
=='''Submission Instructions'''==
 
=='''Submission Instructions'''==

Revision as of 23:26, 24 January 2021

Contents

Homework Assignment 2: Covid Testing

UNDER CONSTRUCTION

Prerequisites:

Learning objectives:

  • Wayfinding aids
  • First person view
  • Analog joystick simulation
  • Collision detection when walking

Overview:

The scenario of this project is the following: Tessa is a freshman computer science student at UCSD. Because of Covid, she has never been to the campus before. In a few days she wants to visit her grandparents. To make sure she has not contracted the Coronavirus, she scheduled a time slot for a walk-up Covid test at the Price Center. Her friend dropped her off at the CSE building. Her test appointment is in 5 minutes, so she has no time to lose. Luckily she brought her brand new and stylish Apple AR glasses, into which she entered the destination: Price Center Ballroom West.

To help her find the way you need to program wayfinding aids into the AR glasses, as well as set up wayfinding aids in the environment.

We are going to give an introduction to this project in discussion on January 25th at 4pm. The due date for the project is Sunday, February 7th at 11:59pm.

Implementation

Use this UCSD campus model as the setting for your Unity application. The unit size is one inch, so you have to scale the model to match Unity's unit size, in order for the campus to show up life sized. Load it into your application.

Turn the ground plane, as well as the buildings between the CSE building and the Price Center into colliders that cannot be traversed.

Implement the following wayfinding aids:

In the environment:

  • Along the way from the CSE building, place at least five "Covid Testing" signs with an arrow to help pedestrians find the Price Center Ballroom. For inspiration for what these signs can look like, google "direction signs". The signs can all be of the same style or different styles. The signs need to be installed in a physically feasible way (e.g., they cannot float in the air, but need to be attached to buildings or a sign post).
  • Please at least one landmark along the way. The simplest would be to place this Bear model (alternate link) in the courtyard between the CSE building and Atkinson Hall.

In the AR glasses:

  • Display a mini map of the campus with current location and destination highlighted (e.g., by differently colored spheres) in forward up orientation in the top right corner of the screen. The map needs to remain in forward up orientation while Tessa walks to the Price Center, so it needs to be rotated accordingly. The current location also needs to be updated to Tessa's actual current location.
  • Display an arrow pointing to the destination ("as the crow flies") in the top left of the screen. This arrow can rotate in the plane of the screen, or in 3D space. It needs to constantly update to point to the Price Center Ballroom West.

To allow Tessa to walk around, implement a simulation of an analog joystick with the mouse:

  • Movement starts when the user clicks anywhere on the screen and holds the mouse button down: this mouse location is the starting point and needs to be memorized.
  • From this starting point, when the user drags the mouse to the right (while holding the button down), Tessa turns to the right. The more right the mouse is dragged, the faster the turn. Do the equivalent for mouse movement to the left of the starting point.
  • From the same starting point, when the user drags the mouse up on the screen, Tessa walks forward. The further up the mouse is moved, the faster Tessa walks.
  • When the user lets go of the mouse button, the motion stops immediately.

Make sure Tessa can't walk through buildings by checking for collision with the building colliders.

Also make sure Tessa stays on the ground wherever she goes (will not start floating above it or sink into it).

Tessa should start at the main entrance of the CSE building, facing away from the building. The user of your application should see a first person view of what she sees (i.e., you do not need to have a visual representation of Tessa).

The destination is the Price Center Ballroom West. This is the ballroom at the top of the stairs next to the Amazon shipping center by the bookstore. To reach the destination, Tessa does not need to walk up the stairs. It is sufficient that she reaches the bottom of the stairs.

3. Extra Credit (Up to 10 points)

TBD

Submission Instructions

Once you are done implementing the project, record a video demonstrating all the functionality you have implemented.

The video should be no longer than 5 minutes, and can be substantially shorter. The video format should ideally be MP4, but any other format the graders can view will also work.

While recording the video, record your voice explaining what aspects of the project requirements are covered.

To create the video you don't need to use video editing software.

If you can't make any screen recorder work, just hold your phone in front of the screen and record with a steady hand.

Components of your submission:

  • Video: Upload the video at the Assignment link on Canvas. Also add a text comment stating which functionality you have or have not implemented and what extra credit you have implemented. If you couldn't implement something in its entirety, please state which parts you did implement and expect to get points for.
    • Example 1: I've done the base project with no issues. No extra credit.
    • Example 2: Everything works except an issue with x: I couldn't get y to work properly.
    • Example 3: Sections 1, 2 and 4 are fully implemented.
    • Example 4: The base project is complete and I did z for extra credit.
  • Executable: Build your Unity project into a Windows .EXE file or the Mac equivalent and upload it to Canvas as zip file.
  • Source code: Upload your Unity project to GitHub: either use the Unity repository initialized from GitHub Classroom or any GitHub repository that you might set up on your own. Make sure you use the .gitignore file for Unity that is included in the repo so that only project sources are uploaded (the .gitignore file goes in the root folder of your project). Then submit the GitHub link to Gradescope by using 'Submission Method: GitHub', along with your Repository link and the respective GitHub branch. (Note: GitHub Classroom is only for starter code distribution, not for grading. Since we don't have any starter code for HW1, you can set up your own repo with Unity .gitignore file we provided and submit to gradescope too.)

In Summary, submit to Canvas with 1. Video and 2. Zipped Executable files (.exe, .dll, etc.), and submit to Gradescope with 3. Source Code.