Lab 3 - Personal Project Ergonomics & Optimization
Tutorial
·
Beginner
·
+10XP
·
120 mins
·
(197)
Unity Technologies

By the end of this lab, your personal project will be filled with beautiful art, optimized for performance and ready to share.
This lab will draw on skills learned in the following lessons:
This lab is part of the Create with VR course.
Languages available:
Overview Video
1. Fill in Design Document for ergonomics & optimization
Before you resume work on your project, you need a plan for what you’re actually going to work on. You will continue filling out your design document so you have a clear plan of action for this lab.
1. Pick up where you left off with your design document:
2. Fill out Section 5 (Optimization & Publishing) of the document:
- List the ways you intend to make the user experience more comfortable or accessible.
- Write down the target performance metrics for your target device(s).
- Describe the lighting strategy you will implement.
3. (Optional) Add more specific details to your design document:
- Continue to fill out section 6 (Other features)
- Continue to fill out section 7 (Sketch)
- Continue to fill out section 8 (Timeline)
You should now have section 4 of your Design Document complete, providing direction for this lab where you will be implementing your app’s core functionality.
Related resources:
2. Replace primitive objects with 3D art
Before we begin optimizing our app and improving the user experience, it’s time to replace some of our primitive assets with some real 3D art.
1. Browse assets on the asset store:
- Go to assetstore.unity.com.
- Sign in to the Unity Asset Store.
- Search for “low poly” assets.
Tip: You can also filter by “Free”.
2. Import an asset pack you like:
- Click Add to My Assets > Open in Unity.
- From the Package Manager, click Download.
- Then click Import to add the assets to your project.
3. To create your own 3D models inside Unity using Probuilder:
- From the Package Manager, install the Probuilder package.
- From the top menu in Unity, click Tools > Probuilder > Probuilder Window.
4. Replace the primitive shapes in your scene with custom or imported 3D art:
- Add the 3D models as child objects of empty parent objects in your scene.
- To achieve appropriate scale, adjust the scale of the child object rather than the scale of the parent object.
- As necessary, add colliders to your objects to make them collide appropriately.
- As necessary, adjust the attach points of your objects so that they are grabbed appropriately.
- If possible, try to use the same shaders to reduce draw calls.
Your scene should now look a lot nicer with some real 3D art.
Related resources:
3. Improve comfort and accessibility
You should take time to consider how comfortable and accessible your app will be. This will allow it to be enjoyed by as many people as possible and make sure fewer people are excluded from using your app due to design decisions you’ve made.
1. Make sure your app’s locomotion is as comfortable as possible.
- Follow the instructions in the Comfort and Accessibility tutorial.
2. Add settings and menu options that increase the accessibility of your app:
- Follow the instructions in the Comfort and Accessibility tutorial.
Your app should now be more comfortable and accessible, allowing it to be enjoyed by more people than it was before.
4. Optimize draw calls and polycount
Now that the app is largely functional and has some real 3d assets, you can attempt to optimize your app’s performance to hit your target metrics.
1. Determine your app is currently performing, including fps, draw calls (batches), and polycount (tris):
- Follow the instructions in the Optimization tutorial.
2. Reduce polycount (tris):
- Follow the instructions in the Optimization tutorial, including replacing high-poly assets with lower-poly ones.
3. Reduce draw calls (batches):
- Follow the instructions in the Optimization tutorial, including marking objects as static and using shared materials.
4. Improve jagged lines with anti-aliasing:
- Follow the instructions in the Optimization tutorial.
5. Quickly experiment with changes to your app’s performance:
- Locate the UniversalRenderPipelineAsset and tweak its settings to see what has an impact.
You should now have an understanding of how your app is performing and, if it is performing poorly, what the cause of that poor performance might be. You should not be discouraged if your frames per second is still too low, though, since you have not yet optimized lighting.
Related resources:
5. Optimize lighting
In VR, performance is critical to the user experience and lighting is one of the biggest components of performance. In order to optimize performance for VR, baking most of the lighting is highly recommended, using a minimal number of real-time or mixed lights.
1. Add and bake environmental lighting in your scene:
- Follow the instructions in the Lighting tutorial.
2. Improve realtime lighting with mixed lights and light probes:
- Follow the instructions in the Lighting tutorial.
You should now have baked lighting in your scene with realtime effects on dynamic objects from mixed lights and light probes.
6. Confirm settings and build your app
The final step before building a version of an app that you would consider sharing or publishing is double-checking that you are using all of the recommended build settings for your target platform.
1. Confirm that your app’s project settings are following best practices for VR:
- Follow the instructions in the Building and Sharing tutorial, including Player settings, Quality settings, Build settings, Render Pipeline Asset properties, Lighting and shadow settings
2. Build a version of your app that can be shared or published:
- Follow the instructions in the Building and Sharing tutorial.
You should now have a built app, ready for distribution, following all best practices for build settings.
7. Recap
New Functionality:
- New art
- Improved comfort and accessibility
- Optimized key metrics
- Improved, baked lighting
- Built app
New Concepts & Skills:
- Optimizing and publishing your own VR app.
Next Lab:
- Next Steps and the rest of your VR development life!