top of page

Tetra Ski

Introduction:

Tetra Ski is a project I am working on in The GApp Lab, University of Utah. The goal is to build a fully customizable universal control scheme allowing tetraplegia patients to control devices like ski-chairs, boats, bike with different means like joysticks, sip-and-puff, wireless devices, etc.

Build a game to deliver a believable experience on the devices so users could get some idea before riding the actual devices.

http://www.tvc.utah.edu/ces/tetra.php

 

Engine:

Unity3D

 

Platform:

PC

 

Gameplay:

Player can control the ski-chair with various devices including keyboard, joystick, sip/puff device, etc.

What did I do in this Project?

In this project, my main responsibility is to build the train senario, a.k.a. the Game to create a rather "believable" experience and make sure it works well with the universal control scheme.

Since simulating snow physics could take a huge research time, I decided to fake it with a car physics available in Unity3D samples, by adding different behaviors and modifying different parameters, I managed to build a acceptable experience out of the resources I had at hand.

I also helped on the UI setup, and the key-mapping with the Universal Control Scheme.

 

The video below is our latest build:

We return to Tetra-Ski on the last semester and made a lot of improvement on the game. Unlike the previous semester, this time the team size reduced to only 2 person, me and Erica, a technical artist.

 

During the semester, we upgraded the game engine into Unity 5, which provided a lot of visual improvement features, but at the same time causing the physics setup become unusable since there are a lot of difference between the physics system of Unity 4 and 5.

 

The old attempt of recreating a “believable” skiing experience in Tetra Ski was simply taking the sample vehicle project from Unity, modify the car prefab:

  • Replace the visual of the car with a ski-chair

  • Remove the motor

  • Adjust the sideway friction

With this method, we were able to prototype an experience that “looks like” a ski-chair but “drive-like” a car.

 

After upgrading to Unity 5.2, a lot of the variables underneath the physics system had changed. So the old method is no longer available.

And we also received request from the partner for a more “believable” experience.

 

So we decided to rework the physics system and this is what I did:

Setup the physical material of the ski so it has really low dynamic friction, so the ski-chair will now slide down the slope due to gravity.

 

And then I separate the gravity force into different forward and sideway components, so I can apply higher drag on sideway component to make the ski-chair doesn't slide sideway too much.

 

That's the basic part for the ski-movement, pretty straight forward, but what's been bothering me a lot is the steering part.

 

There are so many different factor that affect the steering, here are the ones that I came up with (probably not correct):

  • The ski angles (they have different turning radius depends on the current ski condition, i.e. pizza, french fries)

  • Current velocity of the ski-chair, i.e. ski-chair in stationary shouldn't be able to turn, higher speed should result in lower steering efficiency

  • Local Slope

  • Fall-line Slope

  • Fall-line Direction, i.e. when the ski-chair is running down hill without active steering, the ski-chair should steer itself towards the direction of the Fall-line

I calculate the steering force base on above factors and a bunch of magic numbers and then apply them by AddRelativeTorque().

 

And here is the final product:

Team Members:

Drew (Producer), Ahmad (Engineer), Nick (Engineer), Binoy (Engineer), Erica (Technical Artist), Will (Artist)

bottom of page