Monthly Archives: November 2013

Alpha 5: Configurable Walk Speed and Kinect Control

Configurable walk speed and Kinect for Windows enable

Configurable walk speed and Kinect for Windows enable

In the time-honoured tradition of making things do that which they weren’t quite designed for, I’ve added a variable walking speed to the CtrlAltStudio Viewer, Alpha 5 1.1.0.34376. I’ve also added “spot standing” Kinect control of avatar movement for people to try out. These two items can be used with all display modes: normal, stereoscopic 3D, and Oculus Rift.

The variable walk speed came about through a confluence of factors. When using the Oculus Rift, the jolt when starting and stopping movement was quite severe, and it seemed to be exacerbated in my initial Kinect control trials. Also, the high speed of movement and lack of fine control in position was a problem both when walking and when flying with the Rift. I happened across a Firestorm JIRA, FIRE-11098, in which Adeon Writer notes SL server support for slow walking if you hold the spacebar down while walking. I expanded on this idea so that you can set your walk speed to 1 of 5 levels from really slow to the “normal” fast walk. The setting also controls your flying speed.

This variable speed is admittedly a bit of a kludge, and the avatar’s animations at some speeds and directions is not very good. Also, it unfortunately doesn’t work very well at all with OpenSim: walking is always done at normal speed and flying at slow speeds is stuttery. And it doesn’t work properly with the SpaceNavigator (yet). Still, I find variable speed much better than the default fast walk and if other people do too, perhaps Second Life and OpenSim might be updated with better support for it.
 

Kinect control gestures

Kinect control gestures

The variable walk speed improves the usability of Kinect “spot standing” control, usable in Windows builds on PCs with Kinect for Windows sensors installed. You set a “home” position of zero movement, then once you move out of a dead zone around that position your avatar starts moving in the direction you’ve moved in. Avatar movement starts off slow and increases speed as you move further out, with the maximum being that of the walk speed you’ve configured. Except that for forwards movement you start running after the maximum walk speed. Also, if you move too far away then movement stops.

To turn, rotate your shoulders. To fly up or down use the gestures shown above. You can also crouch down to fly down. The speed of turning and flying up or down depend on how far you turn or lower and raise your arms. To stop control, either use the “stop” gesture or walk out of Kinect range.

I like the experience of the Kinect control when standing using the Rift, however it does take a bit of getting used to and can be a bit laggy in operation. The new Kinect sensor due out in the not too distant future will have lower latency and increased resolution, both of which should help improve the experience.
 

Oculus Rift orientation prediction setting

Oculus Rift orientation prediction setting

One other particular item of note added this version is configurable Rift orientation sensor prediction. Sensor prediction helps reduce latency and you can configure how far into the future your orientation is predicted. With your Rift on, adjust the Prediction Delta value until moving your head feels most comfortable.

Further changes this version are listed in the release notes.

Downloads:

You can install this version over the top of a previous 1.1 alpha version.

Using the Oculus Rift’s Configuration Utility

oculus-rift-configuration-utility

The Oculus Rift’s configuration utility

The Oculus Rift’s Software Development Kit includes a very useful configuration utility which you should be aware of. In particular, it enables you to measure your eye separation (inter pupillary distance or IPD), calibrate your Rift so that its orientation sensors work properly, and update the Rift’s firmware.

To get the latest SDK, visit the “Developer” section of Oculus’s Web site: developer.oculusvr.com (registration required). Download the SDK from the “Downloads” page and unzip it. You’ll then find the configuration utility in \OculusSDK\Tools\OculusConfigUtil. Close any other Rift programs before using.

IPD Measurement

Click the utility’s “Measure” button then don your Rift and follow the on-screen instructions. Once complete, your eye separation is reported beside the “Measure” button. You can then enter the value, rounded to the nearest whole number, as the eye separation in the CtrlAltStudio Viewer’s preferences. This provides a good initial value, however you should try increasing and decreasing the value by 1 or 2 clicks to see what provides the most comfortable viewing.

Calibration

To calibrate your Rift, press the “Calibrate” button then follow the instructions, rotating your Rift “in all directions” until the calibration bar gets to 100%. What this means in practice is: hold it in place at about the position it will be used in, press the “Start” button, and rotate the Rift 360 degrees about all 3 axes: e.g., rotate 360° about the vertical axis, then 360° about the left axis, then 360° about the forwards axis.

If the calibration bar doesn’t get to 100%, turn the Rift’s display off by briefly pressing and releasing the power button on the Rift’s control box — the blue light will go out — and try again.

Firmware Update

The configuration utility displays the version of firmware currently installed in your Rift. The first Rifts were shipped with version 0.16. The latest Rift SDK, 0.2.5, includes firmware version 0.18 which has some improvements to reduce orientation drift. If you are finding your orientation is drifting a lot despite recalibrating, you may want to update your firmware.

Firmware update is straightforward: select “Update Firmware…” from the Tools menu and browse to the firmware file in the \OculusSDK\Firmware directory then follow the instructions. Recalibrate your Rift after updating the firmware.