All Projects → jbienzms → SpatialAlignment

jbienzms / SpatialAlignment

Licence: MIT license
Helpful components for aligning and keeping virtual objects aligned with the physical world.

Programming Languages

C#
18002 projects
Batchfile
5799 projects

Projects that are alternatives of or similar to SpatialAlignment

Stereokit
An easy-to-use mixed reality library for building HoloLens and VR applications with C# and OpenXR!
Stars: ✭ 195 (+572.41%)
Mutual labels:  augmented-reality, hololens, mixed-reality
Mrlightingtools Unity
A Unity library and MRTK extension for estimating and replicating the current environment's lighting on Mixed Reality devices.
Stars: ✭ 142 (+389.66%)
Mutual labels:  augmented-reality, hololens, mixed-reality
hololens-terrain-viewer
Holographic mapping powered by ArcGIS
Stars: ✭ 36 (+24.14%)
Mutual labels:  augmented-reality, hololens, mixed-reality
Ar Vrcourse
VR,AR,MR 开发入门教程
Stars: ✭ 298 (+927.59%)
Mutual labels:  augmented-reality, hololens, mixed-reality
MixedRealityResources
Mixed Reality related resources
Stars: ✭ 190 (+555.17%)
Mutual labels:  augmented-reality, hololens, mixed-reality
Hololenswithopencvforunityexample
HoloLens With OpenCVforUnity Example
Stars: ✭ 142 (+389.66%)
Mutual labels:  augmented-reality, hololens, mixed-reality
HoloLensWithDlibFaceLandmarkDetectorExample
HoloLens With DlibFaceLandmarkDetector Example
Stars: ✭ 19 (-34.48%)
Mutual labels:  augmented-reality, hololens, mixed-reality
Carrot
🥕 Build multi-device AR applications
Stars: ✭ 32 (+10.34%)
Mutual labels:  augmented-reality, mixed-reality
Illixr
ILLIXR: Illinois Extended Reality Testbed
Stars: ✭ 33 (+13.79%)
Mutual labels:  augmented-reality, mixed-reality
MixedRealityToolkit
Evergine.MRTK provides a set of components and features to accelerate cross-platform XR application development in Evergine.
Stars: ✭ 32 (+10.34%)
Mutual labels:  hololens, mixed-reality
immersal-sdk-samples
Immersal SDK Unity Samples
Stars: ✭ 77 (+165.52%)
Mutual labels:  augmented-reality, mixed-reality
Nextlevel
NextLevel was initally a weekend project that has now grown into a open community of camera platform enthusists. The software provides foundational components for managing media recording, camera interface customization, gestural interaction customization, and image streaming on iOS. The same capabilities can also be found in apps such as Snapchat, Instagram, and Vine.
Stars: ✭ 1,940 (+6589.66%)
Mutual labels:  augmented-reality, mixed-reality
PassthroughMeasure
Use your Oculus Quest with Passthrough as a tape measure
Stars: ✭ 43 (+48.28%)
Mutual labels:  augmented-reality, mixed-reality
Arpaint
Draw with bare fingers in the air using ARKit
Stars: ✭ 672 (+2217.24%)
Mutual labels:  augmented-reality, mixed-reality
Apertusvr
Virtual Reality Software Library
Stars: ✭ 112 (+286.21%)
Mutual labels:  augmented-reality, mixed-reality
Realityui
A Swift Package for creating familiar UI Elements and animations in a RealityKit rendered Augmented Reality or Virtual Reality scene.
Stars: ✭ 275 (+848.28%)
Mutual labels:  augmented-reality, mixed-reality
Dirtchamber
A mixed reality testing environment for real-time global illumination algorithms
Stars: ✭ 183 (+531.03%)
Mutual labels:  augmented-reality, mixed-reality
Simple Webxr Unity
⭐ Bringing WebXR to Unity 3D with 3 files ! B-)
Stars: ✭ 215 (+641.38%)
Mutual labels:  augmented-reality, hololens
KEYSDK-WH
Simplified mapping with KEY SDK.
Stars: ✭ 12 (-58.62%)
Mutual labels:  hololens, mixed-reality
Arkit Web
An experimental iOS app for rapidly prototyping ARKit experiences with WebGL.
Stars: ✭ 153 (+427.59%)
Mutual labels:  augmented-reality, mixed-reality

Spatial Alignment for Unity

This reference architecture includes many helpful components for aligning and keeping virtual objects aligned with the physical world.

Release 1.1

Release 1.1 contains the following capabilities:

Spatial Frames

Spatial Frames represent "islands" in the real world. They have a position and a rotation and are designed to hold objects. They also have unique IDs and are available from the moment the application loads (even before they're found in the real world). This simplifies application logic because objects can be loaded up front and automatically aligned when the frame is found.

Alignment Strategies

Each Spatial Frame has an Alignment Strategy. The strategy is what moves the frame and keeps it aligned in the physical world. Alignment Strategies are "plugins", and developers can easily create their own strategies. Developers are also free to mix and match various strategies in the same application.

Alignment Strategies provide information about their state (e.g. whether they've been found) and their accuracy (maximum drift in meters). Applications can use this information to make intelligent decisions about which frames are best to contain which objects. In fact, one of the included alignment strategies is a Multi-Parent strategy that allows objects to automatically "hop" parent frames based on their state and accuracy.

Refinement

Two of the biggest challenges that accompany spatial alignment are:

  1. Initial placement (and rotation) of objects to match up with the physical world
  2. Accounting for drift that accumulates over distance (a challenge that is present in all large-scale tracking systems)

This reference architecture includes components to help address both. To help with accurate alignment, an extensible system of Refinement Controllers is provided. Release 1.1 ships with two refinement controllers in the box:

  • RayRefinement - Aligns a virtual model to a physical place by selecting corresponding origin points and directions.

  • NudgeRefinement - Allows the user to manually "nudge" the virtual model into the correct position and rotation using a stylable 3D D-Pad controller.

To help compensate for drift, Multi-Parent alignment offers the ability to apply different positional and rotational offsets at each parent.

The offset ability can be used together with a Refinement Controller to bring large-scale models back into alignment when viewed from different locations.

The video below demonstrates using RayRefinement to align a Matterport 3D scan of a building with the actual building and keep that scan in alignment from different locations.

Persistence

Applications that leverage spatial alignment generate a notable amount of configuration data:

  • All of the Frames and their IDs
  • All of the configuration settings for each Alignment Strategy
  • Relationships between Frames (e.g. Multi-Parent alignment)
  • Position, Rotation and Scale offsets
  • State requirements (e.g. Resolved, Tracking)
  • Accuracy requirements
  • etc.

To help applications save all of this data, every component in the architecture is serializable. In fact, the included class JsonStore can be used to serialize an entire alignment "graph" into json, which can then be loaded back the next time the application runs.

Examples

Release 1.1 includes the following example scenes:

  • SA-MultiParent - Demonstrates "hopping" between multiple parent spheres in the scene.
  • SA-Persistence - Demonstrates saving an entire "graph" of frames and their strategies into memory then loading them back into the scene.
  • SA-Refinement - Demonstrates using RayRefinement to place a multi-colored cube in a room.
  • SA-RefinementBuilding - Demonstrates using RayRefinement and NudgeRefinement to align a Matterport 3D scan to room. (This example is shown in the video above).

Contributing

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].