News Examples Documentation Download Buy Forum Contact
NOTE: This page is from an older version, see the latest version here.

Gyro 2 Plugin gyro2.js Version 1.19-pr8

This plugin uses the gyroscope and acceleration sensors of a mobile / tablet device to control the viewing / looking direction in krpano.

The Gyro 2 plugin is a completely new developed plugin compared to the previously used Gyroscope plugin. It uses the 'devicemotion' browser events plus sensor data inter- and extrapolation instead of the 'device orientations' events as in the old gyro plugin. This make it possible to get faster, more responsive, more accurate and more smoother movement data and it works equally good on iOS, Android and Windows Phone.

Here a side-by-side comparison example - Gyro vs Gyro2.

Device / Browser support

  • iOS - yes
  • Windows Phone 8 / IE11 - yes
  • Android Chrome - yes
  • Android Opera - yes
  • Android Firefox - yes
  • Older Webkit-based Android browsers - no (no 'devicemotion' event support)
Note - the device itself needs to have accelerometer and gyroscope hardware sensors.

Syntax / XML Usage Example

<plugin name="gyro" devices="html5" keep="true"
        url="gyro2.js" 
        enabled="false"
        camroll="true"
        friction="0.0"
        touch_mode="full"
        sensor_mode="1"
        softstart="0.5"
        autocalibration="false"
        onavailable=""
        onunavailable=""
        onenable=""
        ondisable=""
        />

Plugin Attributes

Attribute nameTypeDefault value
enabledBooleanfalse
  • Enable or disable the gyro plugin.
  • Can by changed anytime - e.g. by using the set() or switch() actions.
Attribute nameTypeDefault value
camrollBooleantrue
  • Roll / level the viewer camera according to the device roll.
Attribute nameTypeDefault value
frictionString / Number0.0
  • Friction / vibration dampening of the gyro movement.
  • Values: 0.0 - 0.99 or "auto"
    • 0.0 = no friction / dampening, 0.99 = very strong dampening
      The higher the value the more dampening, but therefore also the movement will be delayed more.
    • auto = use dynamically an automatic zoom friction value based on the current zoom/fov and the current frame-rate based friction - e.g. more shake dampening when zooming in.
Attribute nameTypeDefault value
touch_modeString"full"
  • Available modes:
    • off - No touch control / panning.
    • horizontaloffset - By touch dragging only the horizontal offset will change.
    • full - Full touch control - pan horizontally and vertically. The vertical offset will slowly return to the real device orientation when moving the device.
    • disablegyro - When doing a touch the gyro control gets automatically disabled and the normal controls are taking over. To get the gyro control back, the gyro would need to get enabled again.
Attribute nameTypeDefault value
sensor_modeint1
  • The frame-rendering and the 'sensor-data-events' are happening in different time intervals / rates (depending on the system and browser), so it is necessary to evaluate and interpolate/extrapolate the sensor data somehow to get a smooth and also fast and responsive movement.
  • With this setting, different modes for this process can be selected.
  • Available modes:
    • 0 = Directly use the latest available sensor data. No interpolation or extrapolation. Depending on the sensor-time-intervals of the browser the movement can be either jerky or smooth.
    • 1 = Smoothly interpolate between the latest available sensor data. This will give a very smooth but delayed movement.
    • 2 = Forecast the device rotations and then interpolate between the sensor data.
    • 3 = Extrapolate the latest available sensor data to the current frame time. This will give a fast responsive and smooth movement, but there can be a jerking when the extrapolated/predicted data and the real movement don't match.
    • 4 = Forecast the device rotation to the current frame time. This will give a fast responsive and smooth movement, but there can be a jerking when the extrapolated/predicted data and the real movement don't match.
    • 5 = Forecast the device rotation and extrapolate the sensor data from the latest event to the current frame time.
Attribute nameTypeDefault value
softstartNumber0.5
  • When enabling the gyro tracking fade slowy from the current viewing direction to the gyro-tracked viewing direction.
  • The softstart setting defines the number of seconds for this 'fade-in' process.
  • Set this setting to 0 to disable it to instantly use the gyro-tracked values.
Attribute nameTypeDefault value
autocalibrationBooleanfalse
  • Enable an automatic gyroscope calibration.
  • Some devices have uncalibrated sensors and there this automatic calibration can help to avoid an unintended gyroscope movement / drifting.
  • The automatic self-calibration will be done every time when the device will be hold very still, e.g. either by holding the device very steady or by laying the device on a stable table.

Plugin State Attributes (read only)

Attribute nameTypeDefault value
isavailableBooleanfalse
  • Is gyroscope support available?
  • This variable will be first set to its correctly value after the onavailable or onunavailable events.

Plugin Events

Attribute nameTypeDefault value
onavailableAction Event
  • This event will be called when gyroscope support is available.
  • Could be used to show a 'Gyro' button.
Attribute nameTypeDefault value
onunavailableAction Event
  • This event will be called when no gyroscope support is available on the current device / browser.
Attribute nameTypeDefault value
onenableAction Event
  • This event will be called when gyroscope gets enabled.
Attribute nameTypeDefault value
ondisableAction Event
  • This event will be called when gyroscope gets disabled.

Plugin Actions

resetSensor(hlookat, vlookat*)
  • Reset the sensor tracking to look to the given hlookat (horizontal looking) direction.
  • When using touch_mode=full, it's optionally also possible to set the vlookat (vertical looking) direction.