Difference between revisions of "Project3S20"

From Immersive Visualization Lab Wiki
Jump to: navigation, search
(Homework Project 3: Coronavirus-Themed AR App)
Line 22: Line 22:
  
 
===Technical Requirements===
 
===Technical Requirements===
 +
# '''Coronavirus Theme (10 Points)''' The theme of your project must be related in some way to the current pandemic. This is for us to keep the overall range of applications in a more focused view.
 
# '''AR App (20 Points)''' Create an application that supports AR and runs on your phone. You will need to import the AR Foundation and ARCore/ARKit packages and set up your scene for AR.
 
# '''AR App (20 Points)''' Create an application that supports AR and runs on your phone. You will need to import the AR Foundation and ARCore/ARKit packages and set up your scene for AR.
 
# '''Plane/Point Detection and Interaction (15 Points)''' Using AR Foundation, you will need to detect either features points or planes and use them for your application. The planes can be either horizontal or vertical (table, floor, wall, etc). Your application will need to use this data in some way such as for object placement or reference points.
 
# '''Plane/Point Detection and Interaction (15 Points)''' Using AR Foundation, you will need to detect either features points or planes and use them for your application. The planes can be either horizontal or vertical (table, floor, wall, etc). Your application will need to use this data in some way such as for object placement or reference points.
 +
# '''Custom Objects (10 Points)''' Import or create a custom object to use in your scene. This can be as simple as a textured cube or as complex as an animated model. Anything that wasn't provided and isn't a basic object is considered custom.
 
# '''Object Placement (15 Points)''' Implement the functionality to place virtual objects in real world space. These may be relative to the camera or using your detection from the previous step.
 
# '''Object Placement (15 Points)''' Implement the functionality to place virtual objects in real world space. These may be relative to the camera or using your detection from the previous step.
 
# '''Collision Physics (15 Points)''' Add collision physics to your objects so they can be interacted with via the user or with each other.
 
# '''Collision Physics (15 Points)''' Add collision physics to your objects so they can be interacted with via the user or with each other.
# '''Room Space Interaction (15 Points)''' Enable your physics bound objects to interact with the real world as well. You can add colliders to locations where real objects are once you’ve detected them.
+
# '''Room Space Interaction (15 Points)''' Enable your physics bound objects to interact with the real world as well. You can add colliders to anchored to locations where real objects are once you’ve detected them.
# '''Custom Objects (10 Points)''' Import or create a custom object to use in your scene. This can be as simple as a textured cube or as complex as an animated model. Anything that wasn't provided and isn't a basic object is considered custom.
+
 
# '''Coronavirus Theme (10 Points)''' The theme of your project must be related in some way to the current pandemic. This is for us to keep the overall range of applications in a more focused view.
+
  
 
===Starter Project Fulfillment===
 
===Starter Project Fulfillment===
 +
# '''Coronavirus Theme''' The gameplay focuses on “cleaning up” viruses before they reach the player with soap projectiles.
 
# '''AR App''' The application is running on the phone and using the camera for AR.
 
# '''AR App''' The application is running on the phone and using the camera for AR.
 
# '''Plane/Point Detection and Interaction''' Upon setup for the scene, it detects planes, displays them, and shows a placement indicator using the plane detection.
 
# '''Plane/Point Detection and Interaction''' Upon setup for the scene, it detects planes, displays them, and shows a placement indicator using the plane detection.
 +
# '''Custom Objects''' Not shown in the demo video, but the cube used in the placement can be replaced with anything.
 
# '''Object Placement''' The application places boundary markers that indicate the position the user has chosen.
 
# '''Object Placement''' The application places boundary markers that indicate the position the user has chosen.
 
# '''Collision Physics''' The enemy and projectile objects can hit and bounce off each other.
 
# '''Collision Physics''' The enemy and projectile objects can hit and bounce off each other.
 
# '''Room Space Interaction''' When an enemy has been defeated, it falls to the ground and rolls around. The projectiles can also bounce off the ground.
 
# '''Room Space Interaction''' When an enemy has been defeated, it falls to the ground and rolls around. The projectiles can also bounce off the ground.
# '''Custom Objects''' Not shown in the demo video, but the cube used in the placement can be replaced with anything.
+
 
# '''Coronavirus Theme''' The gameplay focuses on “cleaning up” viruses before they reach the player with soap projectiles.
+
 
  
 
===Additional Details===
 
===Additional Details===
Line 44: Line 47:
 
2019.2.X is the last version with x86 support for Android if running it on the emulator.
 
2019.2.X is the last version with x86 support for Android if running it on the emulator.
  
 
 
* identify horizontal or vertical plane (table, floor, wall, etc)
 
* place a custom 3D object on it
 
* utilize colliders (for interaction (virtual laser pointer) or physical simulation or other purposes)
 
* virtual gaze with screen tap for interaction
 
* interaction with virtual object(s) that are anchored in the physical space
 
  
 
Suggestions for custom 3D objects:
 
Suggestions for custom 3D objects:
Line 61: Line 57:
 
===Submission Instructions===
 
===Submission Instructions===
 
Finally, record a video demostrating all the functionality you have implemented.
 
Finally, record a video demostrating all the functionality you have implemented.
 +
# '''Coronavirus Theme''' The overall theme of the application should be apparent.
 
# '''AR App''' Show the application running on the phone and using the camera for AR.
 
# '''AR App''' Show the application running on the phone and using the camera for AR.
 
# '''Plane/Point Detection and Interaction''' Show the planes or points you have detected via the AR Framework plane / point manager or your own method.
 
# '''Plane/Point Detection and Interaction''' Show the planes or points you have detected via the AR Framework plane / point manager or your own method.
 +
# '''Custom Objects''' Just make sure it's in the video.
 
# '''Object Placement''' Show your object staying where you placed it in real world space.
 
# '''Object Placement''' Show your object staying where you placed it in real world space.
 
# '''Collision Physics''' Show some objects interacting with the user or each other.
 
# '''Collision Physics''' Show some objects interacting with the user or each other.
 
# '''Room Space Interaction''' Show some objects interacting with the room space (via collision or other means).
 
# '''Room Space Interaction''' Show some objects interacting with the room space (via collision or other means).
# '''Custom Objects''' Just make sure it's in the video.
 
# '''Coronavirus Theme''' The overall theme of the application should be apparent.
 
  
 
Upload this video to Canvas, and comment which functionality you have or have not implemented or and what extra credit you have implemented. If you couldn't implement something in its entirety, please state any issues you have with it.
 
Upload this video to Canvas, and comment which functionality you have or have not implemented or and what extra credit you have implemented. If you couldn't implement something in its entirety, please state any issues you have with it.
Line 76: Line 72:
 
* Example 2: Everything works except an issue with '''x''', I couldn't get '''y''' to work properly.
 
* Example 2: Everything works except an issue with '''x''', I couldn't get '''y''' to work properly.
 
* Example 3: Sections 1-3 and 6-7 work. I had issues with 4-5.
 
* Example 3: Sections 1-3 and 6-7 work. I had issues with 4-5.
* Example 4: The base project is complete and I did '''z''' for extra credit. This is how I ...
+
* Example 4: The base project is complete and I did '''z''' for extra credit. This is how I (...)
  
 
To create the video you don't need to use video editing software, but you should use software to capture your screen to a video file.  
 
To create the video you don't need to use video editing software, but you should use software to capture your screen to a video file.  
Line 84: Line 80:
 
* Newer Samsung Galaxy phones with the Game Tools feature have a built-in screen recording mode that is disabled by default. Find out [https://www.androidcentral.com/how-use-game-tools-samsung-galaxy-s7 here] how to enable and use it.
 
* Newer Samsung Galaxy phones with the Game Tools feature have a built-in screen recording mode that is disabled by default. Find out [https://www.androidcentral.com/how-use-game-tools-samsung-galaxy-s7 here] how to enable and use it.
 
* The [https://play.google.com/store/apps/details?id=com.rsupport.mvagent Mobizen Screen Recorder app] should work on any Android phone. The free version comes with a watermark, which is acceptable.
 
* The [https://play.google.com/store/apps/details?id=com.rsupport.mvagent Mobizen Screen Recorder app] should work on any Android phone. The free version comes with a watermark, which is acceptable.
 
optional: screening of all videos in lecture
 
  
 
==Extra Credit (up to 25 points)==
 
==Extra Credit (up to 25 points)==

Revision as of 12:52, 11 May 2020

Contents

Homework Project 3: Coronavirus-Themed AR App

You will need an AR compatible smartphone for this project. Compatibility lists at:

Due Date: Sun, May 31 @ 11:59 PDT

In this project, you will be building and creating a Coronavirus themed AR application with Unity's ARFoundation and C#.

This time, we are providing you with an unfinished reference project that builds into a simple defense game. However, you are free to build any application you wish so long as it fulfills the core technical requirements (explained below).

Milestones

  • Week 1: Students should have installed the required version of Unity and set up any tools required.
  • Week 2: Students should have imported the original project or have created their own and be working on implementing features.
  • Week 3: Students should be finishing up and testing their final applications.

Project Description (100 Points)

Using Unity and AR Foundation Framework, you will be building a mobile based AR application that can run on your phone. In the base project, you will be completing the starter project that is provided. But you may also take your own approach and create a different application as long as it meets the following technical requirements.

Technical Requirements

  1. Coronavirus Theme (10 Points) The theme of your project must be related in some way to the current pandemic. This is for us to keep the overall range of applications in a more focused view.
  2. AR App (20 Points) Create an application that supports AR and runs on your phone. You will need to import the AR Foundation and ARCore/ARKit packages and set up your scene for AR.
  3. Plane/Point Detection and Interaction (15 Points) Using AR Foundation, you will need to detect either features points or planes and use them for your application. The planes can be either horizontal or vertical (table, floor, wall, etc). Your application will need to use this data in some way such as for object placement or reference points.
  4. Custom Objects (10 Points) Import or create a custom object to use in your scene. This can be as simple as a textured cube or as complex as an animated model. Anything that wasn't provided and isn't a basic object is considered custom.
  5. Object Placement (15 Points) Implement the functionality to place virtual objects in real world space. These may be relative to the camera or using your detection from the previous step.
  6. Collision Physics (15 Points) Add collision physics to your objects so they can be interacted with via the user or with each other.
  7. Room Space Interaction (15 Points) Enable your physics bound objects to interact with the real world as well. You can add colliders to anchored to locations where real objects are once you’ve detected them.


Starter Project Fulfillment

  1. Coronavirus Theme The gameplay focuses on “cleaning up” viruses before they reach the player with soap projectiles.
  2. AR App The application is running on the phone and using the camera for AR.
  3. Plane/Point Detection and Interaction Upon setup for the scene, it detects planes, displays them, and shows a placement indicator using the plane detection.
  4. Custom Objects Not shown in the demo video, but the cube used in the placement can be replaced with anything.
  5. Object Placement The application places boundary markers that indicate the position the user has chosen.
  6. Collision Physics The enemy and projectile objects can hit and bounce off each other.
  7. Room Space Interaction When an enemy has been defeated, it falls to the ground and rolls around. The projectiles can also bounce off the ground.


Additional Details

You must be using 2019 Unity as it supports the AR Foundation Framework.

2019.2.X is the last version with x86 support for Android if running it on the emulator.


Suggestions for custom 3D objects:

  • coronavirus model (scientific or cartoon style)
  • models of wipes, soap bar, syringe, swabs, spray bottle, bucket, mask, face, nose, mouth
  • Coronavirus models on Thingiverse

You can use Meshlab to convert large polygon models to fewer polygons.

Submission Instructions

Finally, record a video demostrating all the functionality you have implemented.

  1. Coronavirus Theme The overall theme of the application should be apparent.
  2. AR App Show the application running on the phone and using the camera for AR.
  3. Plane/Point Detection and Interaction Show the planes or points you have detected via the AR Framework plane / point manager or your own method.
  4. Custom Objects Just make sure it's in the video.
  5. Object Placement Show your object staying where you placed it in real world space.
  6. Collision Physics Show some objects interacting with the user or each other.
  7. Room Space Interaction Show some objects interacting with the room space (via collision or other means).

Upload this video to Canvas, and comment which functionality you have or have not implemented or and what extra credit you have implemented. If you couldn't implement something in its entirety, please state any issues you have with it.

For custom projects that aren't just completing the starter project, you will also need to specify how your project fulfills the technical requirement. If you're not sure if something will, please contact us to verify.

  • Example 1: I've done the base starter 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-3 and 6-7 work. I had issues with 4-5.
  • Example 4: The base project is complete and I did z for extra credit. This is how I (...)

To create the video you don't need to use video editing software, but you should use software to capture your screen to a video file.

  • If you're using the emulator: OBS Studio is available free of charge.
  • On iPhones, screen recording should be easy with these instructions.
  • Newer Samsung Galaxy phones with the Game Tools feature have a built-in screen recording mode that is disabled by default. Find out here how to enable and use it.
  • The Mobizen Screen Recorder app should work on any Android phone. The free version comes with a watermark, which is acceptable.

Extra Credit (up to 25 points)

There are these options for extra credit, for a total of 25 points maximum.

  1. A (15 points) Create a significantly different application than what was shown in the demo. Simply changing models or adding a few features to the existing starter project does not count (including the following extra credit options).
  2. B (10 points) Add a user intractable interface that supports more than just taps (for example, the swiping in Pokemon Go)
  3. C (10 points) Use additional sensors (Microphone, Accelerometer, Magnetometer, etc) to implement some custom functionality.
  4. D (5 points) Use real time data (GPS, Weather, Time, etc) to implement some custom functionality.
  5. E (5 points) Support saving and loading scenes between application instances (exiting out completely and restarting).
  6. F (3/5 points) (3) Add sound effects or music to your application. (5) Have the sound be spatial.