mrtk_developmentreleases/2.0.0releases/2.1.0releases/2.2.0releases/2.3.0releases/2.4.0releases/2.5.0releases/2.5.1releases/2.5.2releases/2.5.3
  • Features and Architecture
  • API Documentation

We've moved!

Starting from MRTK 2.6, 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 MRTK-Unity section of the dot net API explorer. Existing content will remain here but will not be updated further.

  • Features and Architecture
  • Feature Overviews
  • UX Building Blocks
  • Elastic System [Experimental]
Search Results for

    Show / Hide Table of Contents
    • Welcome to MRTK
      • Installation Guide
      • Configuration
        • Using the Unity Package Manager
        • MRTK configuration dialog
        • Getting started with MRTK and XR SDK
      • Updates and Deployment
        • Updating from earlier versions
        • Upgrading from HTK
        • Building and Deploying MRTK
      • Packages and Release Notes
        • Release Notes
        • MRTK Packages
      • Performance and Best Practices
        • Performance
        • Hologram Stabilization
        • Using MRTK in large projects
    • Architecture
      • Overview
      • Framework and Runtime
      • Input System
        • Terminology
        • Core System
        • Controllers, Pointers, and Focus
      • Systems, Extension Services and Data Providers
    • Feature Overviews
      • Boundary System
        • Boundary System Overview
        • Configuring the Boundary Visualization
      • Camera System
        • Camera System Overview
        • Camera Settings Providers
          • Windows Mixed Reality Camera Settings
          • Unity AR Camera Settings [Experimental]
          • Creating a camera settings provider
      • Cross Platform Support
        • Configure MRTK for iOS and Android
        • Configure MRTK for Leap Motion Hand Tracking
        • Configure MRTK for Oculus Quest
      • Detecting Platform Capabilities
      • Diagnostics System
        • Diagnostics System Overview
        • Configuring the Diagnostics System
        • Using the Visual Profiler
      • Extension Services
        • Extension Service Creation Wizard
        • Scene Transition Service Overview
        • Hand Physics Service Overview
      • Input System
        • Input Overview
        • Input Actions
        • Input Events
        • Input Providers
          • Input Providers Overview
          • Creating an input data provider
        • Controllers
        • Eyes
          • Overview
          • Getting Started
          • Access Data via Code
          • Validate Tracking Calibration
        • Gaze
        • Gestures
        • Hands
        • How to Add Near Interaction
        • In-Editor Input Simulation
        • Pointers
        • Voice Input
          • Dictation
          • Speech (Command and Control)
      • Multi Scene System
        • Multi Scene System Overview
        • Scene Types
        • Content Scene Loading
        • Monitoring Content Loading
        • Lighting Scene Operations
      • Packaging
        • MRTK Packages
        • MRTK Modularization
      • Profiles
        • Profiles Overview
        • Configuration Guide
      • Rendering
        • MRTK Standard Shader
        • Material Instance Overview
        • Hover Light Overview
        • Proximity Light Overview
        • Clipping Primitive Overview
      • Services
        • What makes a mixed reality feature
        • What are the MixedRealityServiceRegistry and IMixedRealityServiceRegistrar
        • Extension services
      • Spatial Awareness System
        • Spatial Awareness Overview
        • Spatial Observers
          • Configuring Observers for Device
          • Configuring Observers for Editor
          • Controlling Observers via Code
          • Creating a custom Observer
      • Teleport System Overview
      • Tools
        • Dependency Window
        • Extension Service Creation Wizard
        • Holographic Remoting
        • Input Animation Recording
          • Input Animation File Format Specification
        • Migration Window
        • Optimize Window
        • Runtime tools
          • Controller Mapping tool
          • InputFeatureUsage tool
      • UX Building Blocks
        • Toolbox Window
        • Button
        • Bounds Control
        • Object Manipulator
        • Constraint Manager
        • Slate
        • System Keyboard
        • Interactable
        • Solvers
          • Tap to Place
        • Object Collection
        • Scrolling Object Collection
        • Tooltips
        • Slider
        • Hand Menu
        • Near Menu
        • App Bar
        • Fingertip Visualization
        • Progress Indicator
        • Dialog [Experimental]
        • Hand Coach [Experimental]
        • Pulse Shader [Experimental]
        • Dock Control [Experimental]
        • HoloLens Keyboard Helpers [Experimental]
        • Rigged Hand Visualizer [Experimental]
        • Elastic System [Experimental]
        • Bounding Box [Obsolete]
        • Manipulation Handler [Obsolete]
      • Example Scenes
        • Examples Hub
        • Hand Interaction Example
        • Eye Tracking Interaction Example
    • Contributing
      • Contributing Overview
      • Coding Guidelines
      • Writing and Running Tests
      • Writing Documentation
      • Pull Requests
      • Experimental Features
      • Breaking Changes
      • How to use DocFX
    • Planning
      • Roadmap
    • Notice
    • Authors

    Elastic system (experimental)

    Elastic System

    MRTK comes with an elastic simulation system that includes a wide variety of extensible and flexible subclasses, offering bindings for 4-dimensional quaternion springs, 3-dimensional volume springs and simple linear spring systems.

    Currently the following MRTK components supporting the elastics manager can leverage elastics functionality:

    • Bounds control
    • Object manipulator

    Elastics manager

    Elastic System2

    The elastics manager processes passed transforms and feeds them into the elastics system.

    Enabling elastics for custom components can be achieved by two steps:

    1. Calling the Initialize method on manipulation start, updating the system with the current host transform.
    2. Querying ApplyHostTransform whenever a elastics calculation should be performed on the updated target transform.

    Note that elastics will continue simulating once manipulation ends (through the elastics manager update loop). To block the behavior, elastics auto update EnableElasticsUpdate can be set to false.

    By default, the elastics manager component, when added to a game object, won't have elastics enabled for any transforms type. The field Manipulation types using elastic feedback needs to be enabled for specific transform types to create elastics configuration and extents for the selected type.

    Elastics configurations

    Similar to bounds control configurations, elastic manager comes with a set of configuration objects that can be stored as scriptable objects and shared between different instances or prefabs. Configurations can be shared and linked either as individual scriptable asset files or nested scriptable assets inside of prefabs. Further configurations can also be defined directly on the instance without linking to an external or nested scriptable asset.

    The elastics manager inspector will indicate whether a configuration is shared or inlined as part of the current instance by showing a message in the property inspector. In addition, shared instances won't be editable directly in the elastics manager property window itself, but instead the asset it's linking to has to be directly modfied to avoid any accidental changes on shared configurations.

    Elastics manager offers configuration objects options for the following transform types, each of them represented by a elastic configuration object:

    • Translation Elastic
    • Rotation Elastic
    • Scale Elastic

    Elastic configuration object

    A elastics configuration defines properties for a damped harmonic oscillator differential system. The following properties can be adjusted but already come with a set of defaults in MRTK:

    • Mass: mass of the simulated oscillator element.
    • HandK: hand spring constant.
    • EndK: end cap spring constant.
    • SnapK: snap point spring constant.
    • Drag: drag/damper factor, proportional to velocity.

    Elastics extents

    Elastics extents settings vary depending on the type of manipulation. Translation and scale are represented by volume elastic extents and rotation is represented by a quaternion elastic extent.

    Volume elastic extent

    Volume extents define a three dimensional space in which the damped harmonic oscillator is free to move.

    Elastic Volume Stretch Bounds

    • StretchBounds: represents the lower bounds of the elastic space.
    • UseBounds: whether the stretch bounds should be respected by the system. If true, when the current iteration of the target position is outside the stretch bounds, the end force will be applied.
    • SnapPoints: points inside the space to which the system will snap.
    • RepeatSnapPoints: repeats the snap points to infinity. Existing snap points will serve as a modulo where the actual snap points are mapped to the closest integer multiples of every snap point.
    • SnapRadius: distance at which snap points begin forcing the spring.

    Elastic Volume Snap Grid

    Quaternion elastic extent

    Quaternion extents define a four dimensional rotation space in which the damped harmonic oscillator is free to rotate.

    Elastic Rotation Example

    • SnapPoints: euler angles to which the system will snap.
    • RepeatSnapPoints: repeats the snap points. Existing snap points will serve as a modulo where the actual snap points are mapped to the closest integer multiples of every snap point.
    • SnapRadius: arc-angle at which snap points begin forcing the spring in euler degrees.

    Elastics example scene

    You can find examples of elastics configurations in the ElasticSystemExample scene.

    Elastics Example Scene

    • Improve this Doc
    In This Article
    • Elastics manager
      • Elastics configurations
        • Elastic configuration object
      • Elastics extents
        • Volume elastic extent
        • Quaternion elastic extent
    • Elastics example scene
    Back to top Generated by DocFX