-
Introduction
-
Tracking modes
-
ArUco markers and marker-based tracking features
-
ArUco markers
-
Marker-based tracking features
-
-
Marker-Based Location Sharing setup
- Setting up Marker-Based Location Sharing
- Creating ArUco markers for Marker-Based Location Sharing
- Aligning the height of a virtual scene using an ArUco marker
- Moving a user to a specific point in a virtual scene
- Setting up Marker-Based Location Sharing with VIVE Business Streaming
- Marker-Based Location Sharing APIs (AIO)
- Marker-Based Location Sharing APIs (PC VR)
-
LBE Mode/LBE Hybrid Mode setup
-
LBE map configuration
-
Marker-Based Drift Prevention setup
-
Marker-Based Advanced Relocation setup
-
Marker-Based Scene Alignment setup
- Setting up Marker-Based Scene Alignment
- Configuring the position of an ArUco marker in a virtual scene (Unity)
- Creating ArUco markers for Marker-Based Scene Alignment
- Setting up Marker-Based Scene Alignment with VIVE Business Streaming
- Marker-Based Scene Alignment APIs (AIO)
- Marker-Based Scene Alignment APIs (PC VR)
-
Simulator VR Mode setup
- Setting up Simulator VR Mode
- Pairing wrist trackers with a headset
- Installing an anchor controller or tracker in a VR simulator
- Coordinate alignment
- Anchor controller and tracker origin points
- Aligning VR and anchor coordinate systems using a VR controller
- Aligning VR and anchor coordinate systems using an ArUco marker
- Simulator VR Mode FAQs
-
Other services
-
Additional features
Marker-Based Scene Alignment APIs (AIO)
LBSS provides several application programming interfaces (APIs) to assist in
Marker-Based Scene Alignment.
Note:
These APIs can only be used with compatible All-in-One (AIO) VR applications developed using the VIVE Wave VR SDK. For APIs designed for use with PC VR applications, see Marker-Based Scene Alignment APIs (PC VR).
Configure marker ID and dictionary
Configures the marker ID and dictionary for one or two ArUco markers. Scene alignment only starts after users scan the secondary marker when configuring two markers.
One ArUco marker
In this sample, the marker ID is
66, and the marker size is
0.280. This marker size value corresponds to a marker measuring 280 millimeters on each side.
string polling_value; string key = "PLAYER00InitMA"; key += "{\"marker1\": {\"id\": 66,\"behavior\": 0,\"size\": 0.280}}"; uint RETURN_SIZE = 256; IntPtr value = Marshal.AllocHGlobal(new IntPtr(RETURN_SIZE)); Interop.WVR_GetParameters(WVR_DeviceType.WVR_DeviceType_HMD, Marshal.StringToHGlobalAnsi(key), value, RETURN_SIZE); polling_value = Marshal.PtrToStringAnsi(value); Marshal.FreeCoTaskMem(value); if(string.Compare(polling_value, "InitMAErr") == 0) // Handles the case where initialization failed. Check the configuration string to determine the cause of the error and write the appropriate error handling code. { // Write your error handling code here. } |
Two ArUco markers
In this sample, the marker IDs are
66 and
88 and both marker sizes are
0.280.
string polling_value; string key = "PLAYER00InitMA"; key += "{\"marker1\": {\"id\": 66,\"behavior\": 0,\"size\": 0.280,\"isMainMarker\": true,\"pairMarkerID\": 88},\"marker2\": {\"id\": 88,\"behavior\": 0,\"size\": 0.280,\"isMainMarker\": false,\"pairMarkerID\": 66}}"; uint RETURN_SIZE = 256; IntPtr value = Marshal.AllocHGlobal(new IntPtr(RETURN_SIZE)); Interop.WVR_GetParameters(WVR_DeviceType.WVR_DeviceType_HMD, Marshal.StringToHGlobalAnsi(key), value, RETURN_SIZE); polling_value = Marshal.PtrToStringAnsi(value); Marshal.FreeCoTaskMem(value); if(string.Compare(polling_value, "InitMAErr") == 0) // Handles the case where initialization failed. Check the configuration string to determine the cause of the error and write the appropriate error handling code. { // Write your error handling code here. } |
Retain alignment
Keeps alignment results intact if you change environmental settings or switch VR apps.
key = "ClearRecenterXform"; Interop.WVR_SetParameters(WVR_DeviceType.WVR_DeviceType_HMD, Marshal.StringToHGlobalAnsi(key)); // This clears the recenter transform for the headset and other tracking devices or objects. You can also manage each device separately, but this is not necessary for most applications. |
此内容对您有帮助吗?
是
否
提交
谢谢!您的反馈可以帮助其他人了解最有用的信息。