| About the Authors |
|
xiii | |
| About the Technical Reviewer |
|
xv | |
| Acknowledgments |
|
xvii | |
| Introduction: The Mixed Reality Future |
|
xix | |
| Part I: Getting Started |
|
1 | (54) |
|
Chapter 1 Gear Up: The Necessary Hardware and Software Tools |
|
|
3 | (26) |
|
Making Sure Your PC Is Ready |
|
|
3 | (2) |
|
Understanding the HoloLens and Other Windows Mixed Reality Hardware |
|
|
5 | (5) |
|
Inside-Out Tracking and Spatial Mapping |
|
|
6 | (2) |
|
|
|
8 | (1) |
|
Transparent vs. Immersive Headsets |
|
|
8 | (2) |
|
Downloading and Installing the Required and Optional Software Tools |
|
|
10 | (17) |
|
|
|
11 | (4) |
|
|
|
15 | (9) |
|
Downloading the Mixed Reality Toolkit |
|
|
24 | (3) |
|
|
|
27 | (2) |
|
Chapter 2 Unity Crash Course |
|
|
29 | (26) |
|
|
|
29 | (1) |
|
Free vs. Paid Tiers of Unity |
|
|
30 | (1) |
|
|
|
30 | (24) |
|
Step 1: Create a New Unity Project |
|
|
31 | (3) |
|
|
|
34 | (1) |
|
Step 3: Create a Ground Plane |
|
|
35 | (2) |
|
Step 4: Rename Your Plane |
|
|
37 | (1) |
|
Step 5: Reset Ground Plane Position |
|
|
38 | (1) |
|
Step 6: Zoom to Your Ground Plane |
|
|
38 | (1) |
|
Step 7: Scale Your Ground Plane |
|
|
39 | (1) |
|
|
|
40 | (1) |
|
|
|
41 | (1) |
|
Step 10: Reset the Ball's Position |
|
|
41 | (1) |
|
Step 11: Zoom to Your Ball |
|
|
42 | (1) |
|
Step 12: Raise the Ball's Position |
|
|
42 | (1) |
|
Step 13: Color the Ground Blue |
|
|
42 | (5) |
|
Step 14: Add Physics to the Ball |
|
|
47 | (1) |
|
Step 15: Enable Keyboard Control |
|
|
48 | (5) |
|
Step 16: Testing Your App |
|
|
53 | (1) |
|
|
|
54 | (1) |
| Part II: Building Holographic Experiences |
|
55 | (118) |
|
Chapter 3 Creating Your First Hologram |
|
|
57 | (28) |
|
Getting Unity Ready for Mixed Reality Development |
|
|
57 | (11) |
|
Step 1: Import Mixed Reality Toolkit to a New Unity Project |
|
|
58 | (3) |
|
Step 2: Use Mixed Reality Toolkit to Prepare Your Scene for Mixed Reality Development |
|
|
61 | (7) |
|
|
|
68 | (16) |
|
|
|
69 | (1) |
|
Step 2: Zoom to Your Cube |
|
|
70 | (1) |
|
Step 3: Move the Cube Away from the Camera |
|
|
70 | (1) |
|
|
|
71 | (1) |
|
|
|
72 | (1) |
|
Step 6: Install Your App on the HoloLens |
|
|
73 | (11) |
|
|
|
84 | (1) |
|
Chapter 4 Introduction to the Mixed Reality Toolkit |
|
|
85 | (26) |
|
What Is the Mixed Reality Toolkit? |
|
|
85 | (1) |
|
The Three MRTK Repositories |
|
|
86 | (1) |
|
Mixed Reality Toolkit Setup |
|
|
86 | (6) |
|
1. Importing MRTK Asset Files |
|
|
86 | (3) |
|
|
|
89 | (3) |
|
Mixed Reality Toolkit Components |
|
|
92 | (17) |
|
|
|
94 | (3) |
|
|
|
97 | (1) |
|
|
|
98 | (2) |
|
MRTK: Multi-scene Manager |
|
|
100 | (2) |
|
|
|
102 | (1) |
|
|
|
103 | (1) |
|
|
|
103 | (1) |
|
|
|
104 | (1) |
|
|
|
105 | (1) |
|
|
|
106 | (3) |
|
|
|
109 | (1) |
|
|
|
109 | (1) |
|
|
|
109 | (1) |
|
MRTK Help and Documentation |
|
|
109 | (1) |
|
|
|
110 | (1) |
|
Chapter 5 Interacting with Holograms |
|
|
111 | (34) |
|
|
|
111 | (1) |
|
|
|
112 | (8) |
|
Step 1: Set Up Unity Scene |
|
|
113 | (1) |
|
Step 2: Add Scenes to the Build Menu |
|
|
114 | (1) |
|
|
|
114 | (2) |
|
Step 4: Understanding the Scene |
|
|
116 | (4) |
|
Step 5: Use Gaze in Your Project |
|
|
120 | (1) |
|
|
|
120 | (11) |
|
|
|
120 | (1) |
|
|
|
121 | (1) |
|
|
|
122 | (4) |
|
Step 4: Press and Touch Interactions |
|
|
126 | (2) |
|
Step 5: Object Manipulator |
|
|
128 | (3) |
|
Step 6: Implementing Gestures in Your Application |
|
|
131 | (1) |
|
|
|
131 | (11) |
|
Step 1: Load the Example Scene |
|
|
132 | (1) |
|
|
|
133 | (1) |
|
Step 3: Understanding the Scene |
|
|
134 | (3) |
|
Step 4: Add Your Own Voice Command |
|
|
137 | (3) |
|
Step 5: Using Voice Commands in Your Own Project |
|
|
140 | (1) |
|
Best Practices for Voice Commands |
|
|
141 | (1) |
|
|
|
142 | (1) |
|
|
|
143 | (2) |
|
Chapter 6 Using Spatial Awareness |
|
|
145 | (12) |
|
What Is Spatial Awareness? |
|
|
145 | (1) |
|
Spatial Awareness Tutorial |
|
|
146 | (6) |
|
Step 1: Set Up Unity Scene |
|
|
146 | (1) |
|
|
|
147 | (1) |
|
Step 3. Understanding the Scene |
|
|
148 | (2) |
|
Step 4. Using Spatial Mapping in Your Application |
|
|
150 | (2) |
|
|
|
152 | (2) |
|
|
|
152 | (1) |
|
|
|
153 | (1) |
|
|
|
154 | (1) |
|
|
|
155 | (2) |
|
|
|
157 | (16) |
|
|
|
158 | (12) |
|
Step 1: Set Up Unity Scene |
|
|
158 | (1) |
|
|
|
159 | (2) |
|
Step 3: Understanding the Scene |
|
|
161 | (4) |
|
Step 4: Enabling Spatial Sound in Your Application |
|
|
165 | (5) |
|
Spatial Sound Design Considerations |
|
|
170 | (1) |
|
When to Use Spatial Sound |
|
|
170 | (1) |
|
What to Avoid When Using Spatial Sound |
|
|
171 | (1) |
|
|
|
171 | (2) |
| Part III: Growing As a Holographic Developer |
|
173 | (100) |
|
Chapter 8 Azure Spatial Anchors |
|
|
175 | (14) |
|
What Is Azure Spatial Anchors? |
|
|
175 | (1) |
|
Azure Spatial Anchors Tutorial |
|
|
176 | (12) |
|
Step 1: Creating new Unity Scene |
|
|
176 | (1) |
|
Step 2: Installing Inbuilt Unity Packages |
|
|
176 | (1) |
|
Step 3: Download and Import Tutorial Assets |
|
|
177 | (1) |
|
Step 4: Preparing the Scene |
|
|
178 | (1) |
|
Step 5: Configuring the Buttons to Operate the Scene |
|
|
179 | (7) |
|
Step 6: Connecting the Scene to the Azure Resource |
|
|
186 | (1) |
|
Step 7: Test the Application in Device |
|
|
187 | (1) |
|
|
|
188 | (1) |
|
Chapter 9 Shared Experiences |
|
|
189 | (30) |
|
What Are Shared Experiences? |
|
|
189 | (1) |
|
Multiuser Capabilities Tutorial |
|
|
189 | (1) |
|
Setting Up Photon Unity Networking |
|
|
189 | (10) |
|
Step 1: Creating New Unity Scene |
|
|
190 | (1) |
|
Step 2: Enabling Additional Capabilities |
|
|
190 | (1) |
|
Step 3: Installing Inbuilt Unity Packages |
|
|
191 | (1) |
|
Step 4: Importing the Tutorial Assets |
|
|
192 | (1) |
|
Step 5: Importing the PUN Assets |
|
|
193 | (2) |
|
Step 6: Creating the PUN Application |
|
|
195 | (1) |
|
Step 7: Connecting the Unity Project to the PUN Application |
|
|
196 | (3) |
|
Connecting Multiple Users |
|
|
199 | (8) |
|
Step 1: Preparing the Scene |
|
|
199 | (2) |
|
Step 2: Create and Configure the User |
|
|
201 | (2) |
|
Step 3: Create the Avatar |
|
|
203 | (1) |
|
Step 4: Create the Prefab |
|
|
204 | (2) |
|
Step 5: Configuring PUN to Instantiate the User Prefab |
|
|
206 | (1) |
|
Sharing Object Movements with Multiple Users |
|
|
207 | (2) |
|
Step 1: Preparing the Scene |
|
|
207 | (1) |
|
Step 2: Configuring PUN to Instantiate the Objects |
|
|
207 | (2) |
|
Integrating Azure Spatial Anchors into a Shared Experience |
|
|
209 | (8) |
|
Step 1: Preparing the Scene |
|
|
210 | (1) |
|
Step 2: Configuring the Buttons to Operate the Scene |
|
|
210 | (4) |
|
Step 3: Connecting the Scene to the Azure Resource |
|
|
214 | (3) |
|
Trying the Experience with Spatial Alignment |
|
|
217 | (1) |
|
|
|
218 | (1) |
|
Chapter 10 Awe-Inspiring Experiences |
|
|
219 | (30) |
|
What Makes an App Awe Inspiring? |
|
|
219 | (1) |
|
Optimization and Performance |
|
|
220 | (16) |
|
How to Monitor for Performance |
|
|
222 | (2) |
|
Best Practices for Performance |
|
|
224 | (8) |
|
|
|
232 | (1) |
|
|
|
233 | (3) |
|
|
|
236 | (11) |
|
Best Practices for Design |
|
|
237 | (6) |
|
|
|
243 | (4) |
|
|
|
247 | (2) |
|
Chapter 11 Turning Holograms into Money |
|
|
249 | (8) |
|
Publishing Your App to the Microsoft Store |
|
|
250 | (1) |
|
Freelancing and Contracts |
|
|
251 | (3) |
|
Where to Find Mixed Reality Freelance Opportunities |
|
|
252 | (1) |
|
Increasing Your Chances of Winning a Contract |
|
|
253 | (1) |
|
Future Opportunities Today |
|
|
254 | (1) |
|
|
|
254 | (3) |
|
Chapter 12 Community Resources |
|
|
257 | (16) |
|
HoloDevelopers Slack Team |
|
|
257 | (3) |
|
|
|
257 | (1) |
|
What Is the HoloDevelopers Slack Team |
|
|
258 | (1) |
|
How to Join the HoloDevelopers Slack Team |
|
|
259 | (1) |
|
Participating in the HoloDevelopers Slack Team |
|
|
260 | (1) |
|
Other Online Communities and Resources |
|
|
260 | (5) |
|
HoloLens Developers Facebook Group |
|
|
261 | (1) |
|
Unity and Unity HoloLens Forum |
|
|
262 | (1) |
|
|
|
263 | (1) |
|
|
|
264 | (1) |
|
|
|
265 | (1) |
|
|
|
265 | (4) |
|
|
|
266 | (1) |
|
|
|
267 | (1) |
|
|
|
268 | (1) |
|
|
|
269 | (1) |
|
|
|
270 | (1) |
|
|
|
271 | (2) |
| Index |
|
273 | |