You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 16, 2024. It is now read-only.
* Remove dependency on tuple from SpacePinVisualizer.
* Bump patch version to 1.5.3.
* Update packaging files for v1.5.3, and lower Unity dependency for core and examples to U2018.4.
* Minor documentation updates (esp ASA only targets ARM64 on HL2).
* Delete unused documentaton icons.
Copy file name to clipboardExpand all lines: DocGen/Documentation/Concepts.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,27 +4,27 @@
4
4
5
5
In the day to day physical world, space is well described by a stationary coordinate system. A motionless object in a stationary coordinate system will continue having the same coordinates forever. A group of objects laid out in a specific configuration will maintain that configuration. Two objects moving with identical velocities will remain at a fixed offset from each other.
6
6
7
-
These and similar laws are such an basic part of existence that when they no longer hold, intuition about the world becomes unreliable.
7
+
These and similar laws are such an basic part of existence that when they no longer hold, intuition about the world becomes unreliable.
8
8
9
9
## Previous solutions
10
10
11
-
Unity's *global coordinate space* and *spatial anchors* each address different aspects of the problems caused by sensor inaccuracies and drift.
11
+
Unity's *global coordinate space* and *spatial anchors* each address different aspects of the problems caused by sensor inaccuracies and drift.
12
12
13
13
Unity's global coordinate space provides a stable frame of reference, in which holographic objects remain fixed relative to one another. While objects in this space will behave consistently relative to each other, consistency with the physical world is not guaranteed nor generally provided. Especially when the user is moving around, inconsistencies will develop.
14
14
15
-
Unity's spatial anchors can maintain a hologram's position in the physical world when the user is mobile, but at the sacrifice of self consistency within the virtual world. Different anchors are constantly moving relative to one another. They are also moving through the global coordinate space, making simple tasks like layout difficult, and physics simulation problematic.
15
+
Unity's spatial anchors can maintain a hologram's position in the physical world when the user is mobile, but at the sacrifice of self consistency within the virtual world. Different anchors are constantly moving relative to one another. They are also moving through the global coordinate space, making simple tasks like layout difficult, and physics simulation problematic.
16
16
17
17
## The source of the problem
18
18
19
-
Discussion here will center around HoloLens technology, but these concepts apply generally to inside out markerless tracking techniques, especially as augmented by inertial systems.
19
+
Discussion here will center around HoloLens technology, but these concepts apply generally to inside out marker-less tracking techniques, especially as augmented by inertial systems.
20
20
21
21
The HoloLens is amazing at determining where it is relative to visible features in the surroundings. By extension, it is also amazing at positioning other virtual objects by those same visible features. So when the user is sitting or standing in a roughly constant position, the device is great at keeping virtual objects registered with visible physical reference points. A virtual cup placed on a physical table, will mostly stay in the same spot on the surface of the table.
22
22
23
23
That's when the HoloLens is confined to the same small volume, with a constant set of visible features in view for reference. But there are other interesting scenarios.
24
24
25
25
When the user gets up and moves about the room, or possibly even between rooms, the HoloLens must switch between old features leaving view and new features coming into view. Without getting into implementation details, it's clear to see that while in transit, tracking accuracy is going to be very much degraded.
26
26
27
-
Here's a simplistic scenario for context.
27
+
Here's a simplistic scenario for context.
28
28
29
29
### Illustration
30
30
@@ -36,17 +36,17 @@ Now looking around at point B, good visible features are recorded. Tracking and
36
36
37
37
When at point A, things around point A look great, and when around point B, things at point B look great. But there's an inconsistency. The 10 meters between points A and B in physical space are only 9 meters in virtual space. That's often referred to as "the scale problem", although "the distance problem" might be more accurate. Regardless, we'll get back to when that's a problem soon.
38
38
39
-
But first, the user walks back to point A. This time the tracking errors make the 10 meters walk from B to A in physical space add up to 10.5 meters in virtual space. And that means that the full walk from A to B to A adds up to a net move of 1.5 meters, when it should obviously be 0.0 meters. This is an obvious problem. A hologram placed at point A before the walk will now appear 1.5 meters away from point A.
39
+
But first, the user walks back to point A. This time the tracking errors make the 10 meters walk from B to A in physical space add up to 10.5 meters in virtual space. And that means that the full walk from A to B to A adds up to a net move of 1.5 meters, when it should obviously be 0.0 meters. This is an obvious problem. A hologram placed at point A before the walk will now appear 1.5 meters away from point A.
40
40
41
41
This is where spatial anchors can help. After walking to B and back, the system recognizes that it is back at point A, yet the head's Unity coordinates have changed by 1.5 meters. But if the hologram at point A has a spatial anchor attached, the spatial anchor can think "I'm at point A, the head is at point A, but my coordinates differ from the head's by 1.5 meters. I'll just change my coordinates by 1.5 meters so that we're in agreement again." And a spatial anchor at point C, a meter to the left of the user, is going through the same process. In essence, the spatial anchor constantly redefines where point A is in Unity space so that the head's coordinates are always right. And each spatial anchor does this independently for its place in the physical world.
42
42
43
43
## World Locking Tools for Unity
44
44
45
-
World Locking Tools keeps an internal supply of spatial anchors it spreads as the user moves around. It analyses the coordinates of the camera and those spatial anchors every frame. It detects when all of those spatial anchors are moving over 1.5 meters to match the coordinates of the head, and says "Hmm, instead of changing the coordinates of everything in the world to compensate for the head having different coordinates than the last time it was here, I'll just fix the head's coordinates instead."
45
+
World Locking Tools keeps an internal supply of spatial anchors it spreads as the user moves around. It analyses the coordinates of the camera and those spatial anchors every frame. It detects when all of those spatial anchors are moving over 1.5 meters to match the coordinates of the head, and says "Hmm, instead of changing the coordinates of everything in the world to compensate for the head having different coordinates than the last time it was here, I'll just fix the head's coordinates instead."
46
46
47
47
That means that, rather than having to have a spatial anchor drag a hologram through Unity space so that it will remain fixed in physical space, the entire Unity world space is locked to physical space. If a hologram is motionless in Unity space, it will remain motionless relative to the physical world features around it. And just as importantly, it will remain fixed relative to the virtual features around it.
48
48
49
-
Obviously it's more complicated under the hood than that. For example, remember that a problem with the spatial anchors is that they move independently, so don't always agree with each other. The underlying FrozenWorld engine arbitrates those disagreements to come up with the most perceptually correct camera correction, and does that every frame.
49
+
Obviously it's more complicated under the hood than that. For example, remember that a problem with the spatial anchors is that they move independently, so don't always agree with each other. The underlying FrozenWorld engine arbitrates those disagreements to come up with the most perceptually correct camera correction, and does that every frame.
50
50
51
51
## The scale problem again
52
52
@@ -58,7 +58,7 @@ This can be inconvenient in many forms, but it becomes a blocking issue when obj
58
58
59
59
And so far in this discussion, the minimum information required to fix the problem has not been introduced.
60
60
61
-
World Locking Tools addresses that problem with the [Space Pins](Concepts/Advanced/SpacePins.md) API, which allows the application to supply enough information relating the physical world and holographic world to correct for the errors in distance traveled. This allows large holograms to appear aligned with the physical world all over.
61
+
World Locking Tools addresses that problem with the [Space Pins](Concepts/Advanced/SpacePins.md) API, which allows the application to supply enough information relating the physical world and holographic world to correct for the errors in distance traveled. This allows large holograms to appear aligned with the physical world all over.
62
62
63
63
## Next
64
64
@@ -68,4 +68,4 @@ These advanced mechanisms will be covered in later sections, but it is useful to
Copy file name to clipboardExpand all lines: DocGen/Documentation/HowTos/WLT_ASA.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,12 +14,13 @@ WLT supports:
14
14
* Unity 2018.4, Unity 2019.4, Unity 2020.3
15
15
* HoloLens, HoloLens2, Android, and iOS
16
16
* Unity Legacy XR, XR SDK, or OpenXR
17
-
* Azure Spatial Anchors v2.9.0-v2.10.0
17
+
* Azure Spatial Anchors v2.9.0-v2.10.2
18
18
19
-
Use of ASA imposes these additional restrictions:
19
+
Use of ASA v2.9+ imposes these additional restrictions:
20
20
21
21
* Unity 2020.3 or later
22
22
* XR SDK or OpenXR
23
+
* At the time of this writing, ASA only targets ARM64 (not ARM32) on HoloLens2. Check the latest [ASA documentation](https://docs.microsoft.com/azure/spatial-anchors/quickstarts/get-started-unity-hololens?tabs=azure-portal).
Copy file name to clipboardExpand all lines: UPM/asa_files/package.json
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
{
2
2
"name": "com.microsoft.mixedreality.wlt.asa",
3
3
"displayName": "WLT-ASA",
4
-
"version": "1.5.2",
4
+
"version": "1.5.3",
5
5
"unity": "2020.3",
6
6
"msftFeatureCategory": "World Locking Tools",
7
7
"description": "World Locking Tools for Unity (WLT) + Azure Spatial Anchors (ASA)\n\nThis optional add-on to WLT leverages ASA to persist coordinate spaces across sessions and share them across devices.\nCross platform support includes HoloLens, Android, and iOS.",
0 commit comments