WLT documentation has moved.

We are publishing both conceptual docs and API references on docs.microsoft.com. For conceptual docs, please visit our new landing page. For API references, please visit the Core WLT section of the dot net API explorer and related pages. Existing content will remain here but will not be updated further.

Search Results for

    Show / Hide Table of Contents

    Class SpacePin

    Component helper for pinning the world locked space at a single reference point.

    Inheritance
    Object
    SpacePin
    SpacePinOrientable
    Namespace: Microsoft.MixedReality.WorldLocking.Core
    Assembly: cs.temp.dll.dll
    Syntax
    public class SpacePin : MonoBehaviour
    Remarks

    This component captures the initial pose of its gameObject, and then a second pose. It then adds that pair to the WorldLocking Alignment Manager. The manager then negotiates between all such added pins, based on the current head pose, to generate a frame-to-frame mapping aligning the Frozen Space, i.e. Unity's Global Space, such that the pins match up as well as possible. Another way to phrase this is: Given an arbitrary pose (the "modeling pose"), and a pose aligned somehow to the real world (the "world locked pose"), apply a correction to the camera such that a virtual object with coordinates of the modeling pose will appear overlaid on the real world at the position and orientation described by the locked pose. For this component, the locked pose must come in via one of the following three APIs: SetFrozenPose(Pose) with input pose in Frozen Space, which includes pinning. SetSpongyPose(Pose) with input pose in Spongy Space, which is the space of the camera's parent, and is the same space the camera moves in, and that native APIs return values in (e.g. XR). SetLockedPose(Pose) with input pose in Locked Space, which is the space stabilized by the Frozen World engine DLL but excluding pinning. Note that since the Frozen Space is shifted by the AlignmentManager, calling SetFrozenPose(p) with the same Pose p twice is probably an error, since the Pose p would refer to different a location after the first call.

    Properties

    AlignmentManager

    Accessor for overriding the AlignmentManager from script.

    Declaration
    public IAlignmentManager AlignmentManager { get; set; }
    Property Value
    Type Description
    IAlignmentManager

    AnchorId

    This wrapper for the anchorId is because the anchorId has to be stored as a ulong, which is the base class for the AnchorId enum. Unity only supports int-based enums, so will complain on serialization etc. for the ulong based AnchorId.

    Declaration
    public AnchorId AnchorId { get; }
    Property Value
    Type Description
    AnchorId

    AnchorName

    Provide a unique anchor name. This is used for persistence.

    Declaration
    protected virtual string AnchorName { get; }
    Property Value
    Type Description
    String

    FragmentId

    Id for fragment this pin belongs in.

    Declaration
    public FragmentId FragmentId { get; }
    Property Value
    Type Description
    FragmentId

    GlobalFromParent

    Return the Pose transforming from parent space to global space.

    Declaration
    protected Pose GlobalFromParent { get; }
    Property Value
    Type Description
    Pose
    Remarks

    If the SpacePin has no parent, this will be the identity Pose.

    LockedPose

    Accessor for world locked pose for derived classes.

    Declaration
    public Pose LockedPose { get; protected set; }
    Property Value
    Type Description
    Pose

    Manager

    Read only access to manager dependency from derived classes.

    Declaration
    protected WorldLockingManager Manager { get; }
    Property Value
    Type Description
    WorldLockingManager

    ModelingPoseGlobal

    First of the pair of poses submitted to alignment manager for alignment.

    Declaration
    public Pose ModelingPoseGlobal { get; }
    Property Value
    Type Description
    Pose

    ModelPositionSource

    Where to find model space position on target. Transform is preferable, but if transforms are baked in, renderer or collider may be more appropriate.

    Declaration
    public SpacePin.ModelPositionSourceEnum ModelPositionSource { get; set; }
    Property Value
    Type Description
    SpacePin.ModelPositionSourceEnum
    Remarks

    Note that orientation always comes from transform, as renderer and collider bounds have no orientation.

    ParentFromGlobal

    Return the Pose transforming from global space to the parent's space.

    Declaration
    protected Pose ParentFromGlobal { get; }
    Property Value
    Type Description
    Pose

    PinActive

    Whether this space pin is in active use pinning space

    Declaration
    public bool PinActive { get; }
    Property Value
    Type Description
    Boolean

    RestorePoseLocal

    Pose to restore after manipulation (if any).

    Declaration
    protected Pose RestorePoseLocal { get; }
    Property Value
    Type Description
    Pose

    Methods

    ExtractModelPose()

    Declaration
    protected Pose ExtractModelPose()
    Returns
    Type Description
    Pose

    ExtractModelPoseFromCollider()

    Declaration
    protected Pose ExtractModelPoseFromCollider()
    Returns
    Type Description
    Pose

    ExtractModelPoseFromRenderer()

    Declaration
    protected Pose ExtractModelPoseFromRenderer()
    Returns
    Type Description
    Pose

    ExtractModelPoseFromTransform()

    Declaration
    protected Pose ExtractModelPoseFromTransform()
    Returns
    Type Description
    Pose

    ForceAttachment()

    Ensure that there is an attachment, and it is positioned up to date.

    Declaration
    protected void ForceAttachment()

    GetModelPoseFromGlobalPosition(Vector3)

    Declaration
    protected Pose GetModelPoseFromGlobalPosition(Vector3 globalPosition)
    Parameters
    Type Name Description
    Vector3 globalPosition
    Returns
    Type Description
    Pose

    OnDestroy()

    On destroy, unregister for the loaded event.

    Declaration
    protected virtual void OnDestroy()

    OnLocationUpdate(Pose)

    Callback for refit operations. Apply adjustment transform to locked pose.

    Declaration
    protected virtual void OnLocationUpdate(Pose adjustment)
    Parameters
    Type Name Description
    Pose adjustment

    Adjustment to apply.

    PushAlignmentData(IAlignmentManager)

    Communicate the data from this point to the alignment manager.

    Declaration
    protected void PushAlignmentData(IAlignmentManager mgr)
    Parameters
    Type Name Description
    IAlignmentManager mgr

    ReleaseAttachment()

    Dispose of any previously created attachment point.

    Declaration
    protected void ReleaseAttachment()

    Reset()

    Go back to initial state, including removal of self-artifacts from alignment manager.

    Declaration
    public virtual void Reset()

    ResetModelingPose()

    Reset the modeling pose to the current transform.

    Declaration
    public virtual void ResetModelingPose()
    Remarks

    In normal usage, the modeling pose is the transform as set in Unity and as cached at start. In some circumstances, such as creation of pins from script, it may be convenient to set the transform after Start(). In this case, the change of transform should be recorded by a call to ResetModelingPose(). This must happen before the modeling pose is used implicitly by a call to set the virtual pose, via SetFrozenPose, SetSpongyPose, or SetLockedPose.

    RestoreOnLoad()

    Callback on notification of the alignment manager's database to check if this preset has been persisted, and restore it to operation if it has.

    Declaration
    protected virtual void RestoreOnLoad()

    SendAlignmentData(IAlignmentManager)

    Notify the manager that all necessary updates have been submitted and are ready for processing.

    Declaration
    protected void SendAlignmentData(IAlignmentManager mgr)
    Parameters
    Type Name Description
    IAlignmentManager mgr

    SetFrozenPose(Pose)

    Transform pose to Locked Space and pass through.

    Declaration
    public void SetFrozenPose(Pose frozenPose)
    Parameters
    Type Name Description
    Pose frozenPose

    Pose in frozen space.

    SetLockedPose(Pose)

    Record the locked pose and push data to the manager.

    Declaration
    public virtual void SetLockedPose(Pose lockedPose)
    Parameters
    Type Name Description
    Pose lockedPose

    SetSpongyPose(Pose)

    Transform pose to Locked Space and pass through.

    Declaration
    public void SetSpongyPose(Pose spongyPose)
    Parameters
    Type Name Description
    Pose spongyPose

    Pose in spongy space.

    Start()

    Declaration
    protected virtual void Start()
    In This Article
    Back to top Generated by DocFX