The Emulator lets you test mixed reality applications on your PC without a real XREAL Light glasses and computing unit. With Emulator, you can speed up app development by testing, iterating and debugging without having to build and deploy the app to XREAL device. You could simply use Unity to test your app by importing an Emulator Prefab.
Controlling the Emulator is very similar to common 3D video games. You can use keyboard and mouse to control the head pose movement, controller rotation, trackable planes or images in 3D space.
In this section, you will learn:
How to enable Unity to debug MR apps as an Emulator.
How to simulate input events that are usually read by XREAL Light glasses and controller sensors by using your keyboard and mouse when debugging.
Understanding NRSDK concept and working flow
Import NRSDK into Unity
Have the code and resources of your app ready
NRSDK > Emulator
Emulator folder contains all the code and resources of Emulator, here is a brief introduction for you to lookup.
Editor contains the script used for modifying Unity Editor.
Image contains the UI image resources to show controller state.
Material contains the materials for TrackableImage and TrackablePlane in Emulator.
Model contains the room model used in the sample scene.
Prefabs
NRTrackableImageTarget.prefab
used for simluating the detection of images.
NRTrackablePlaneTarget.prefab
used for simulating the detection of planes.
Resources used for dynamic loading resource.
Scene contains two demos for testing TrackableImage and TrackablePlane.
Script
NativeEmulator.cs
used for calling low-level API.
NREmulatorManager.cs
is the script for managing the life cycle of Emulator.
NREmulatorController.cs
simulates the input of controller.
NREmulatorHeadPose.cs
simulates the headpose movement.
NRTrackableImageBehaviour.cs
is the script to simulate the trackable images.
NRTrackablePlaneBehaviour.cs
is the script to simulate the trackable planes.
NRTrackableObserver.cs
is the observer of trackable target.
TrackableFoundTest.cs
is a testing script that.
Use WSAD on the keyboard to simulate the movement of the position of the head.
W -> move forward. S -> move backward. A -> move left. D -> move right.
Press Space key and Use the Mouse to simulate the rotation of the head.
Sample Code:
Sample Code: NREmulatorController.cs
Selecting Emulate Virtual Display In Editor on NRInput to enable Phone Controller simulation that stays at the lower-right corner of the Game window.
Mouse left on TouchPad area -> Select Button
Mouse left on APP -> App button
Mouse left on HOME -> Home Button
Deselecting Emulate Virtual Display In Editor on NRInput to enable Phone Controller simulation that stays at the lower-right corner of the Game window.
Simulating Controller Rotation
Press Shift + Move Mouse
Simulating Controller Button
Mouse left button -> Select Button
Mouse right button -> Home Button
Mouse middle button -> App Button
Simulating Controller Touch (Swipe Gesture)
Keyboard Left/ Right/ Up/ Down Arrow -> Swipe Left/ Right/ Up/ Down
First , Assets/NRSDk/Emulator/Scenes/TrackableImageEmulator.unity
and Assets/NRSDk/Emulator/Scenes/TrackablePlaneEmulator.unity
are two samples for the Emulator. Developers could directly play the scene in Unity Editor or build them into apk and run on an XREAL Device.
Make sure you have Assets/NRSDK/Prefabs/NRCamreaRig.prefab
and NRSDK/Prefabs/NRInput.prefab
in the scene.
When Unity Editor under runtime, the
NREmulatorHeadPose.prefab
will be automatically loaded byNRCameraRig.prefab
into the scene for simulating the head pose data.When Unity Editor under runtime, the
EmualatorController.Prefab
will be automatically loaded byNRInput.prefab
into the scene for simulating the controller input data.
2. Place Assets/NRSDK/Emulator/Prefabs/NRTrackableImageTarget.prefab
or Assets/NRSDK/Emulator/Prefabs/NRTrackablePlaneTarget.prefab
to simulate the trackable images and planes.
TrackableObserver.cs
is attached to everyNRTrackableImageTarget.prefab
andNRTrackablePlaneTarget.prefab
. You need to register your own logic of Trackable found and lost into TrackableObserver.
3. In /Assets/NRSDK/Emulator/Scripts/TrackableFoundTest.cs
, you could find the sample for the register event.
Sample Code:
TrackableFoundTest.cs
4. If you want to use your image as a detection target, you could switch the image database in NRTrackableImageTarget.prefab
In NRSDK, we provided you with three default images for image detection. If you would like to add your own, please find
NRCameraRig.prefab
Find
NRKernalSessionConfig.asset
under theNRSessionBehaviour.cs
Find TrackingImageDatabase in the
NRKernalSessionConfig.asset
, and drag your own database.asset into it.
Refer to Image Tracking for more inforamtion