Wednesday, March 10, 2010

I Feel Manipulated

Tom has a new video on youtube of his just finished Falco. The video shows what screen-shots cannot: that the mouse interactions on the plane are really well crafted.

If you're just discovering X-Plane (or just discovering that X-Plane's 3-d cockpits can be very interactive), here's X-Plane's "raw" capabilities for manipulation:
  • The simplest manipulations are based on mapping the mouse from the 3-d cockpit back to the 2-d panel. This can only be done when the 3-d cockpit is textured using a piece of 2-d panel. This is the oldest way to make a clickable cockpit in X-Plane, dating back to the original X-Plane 3-d cockpits. The advantage of this method is that it's very easy to set up; the disadvantage is that the mouse click gestures tend to be "flat" in their operation.
  • As Tom's plane demonstrates, you can manipulate just about any dataref or command via a drag along a specific axis. Axes are subject to animation, so there's a lot of potential for "grabbing" things with this interface.
  • X-Plane also supports direct "click" manipulation - this can be handy for buttons where you don't want to require the user to move the mouse around. There are several types of click manipulation.
Click and drag manipulations can be tied into the plugin system - your plugin sees a manipulation as a change to a plugin-created dataref. This makes it possible to create almost any imaginable mouse effect. If you don't want to write a plugin, you can still write up the manipulators to any of X-Plane's datarefs (there are thousands) or commands (we're getting up toward the 1000 mark on these too).

To create manipulators on your cockpit, you can use the latest plugin for AC3D. A manipulator is a property on a mesh within your object - each mesh can have its own manipulation with its own properties.

X-Plane does not have an IK solver. Rather, movement of "stuff" in your cockpit is indirect.
  1. Your manipulator changes a dataref as the user drags along an axis.
  2. The dataref change shows as an animation on your mesh.
Fortunately, ac3d has a "Guess" button for the axis manipulators. If you set a mesh to be manipulated by dragging along an axis, the guess button will examine your animations and suggest an axis that will create the most "natural" looking animation for the manipulation. For example, if you have a throttle handle that rotates, the guess button will provide a drag axis perpendicular to the throttle (to push the levers); if you have a throttle lever that pushes, the guess button will make a drag axis that runs along the lever.

5 comments:

Steve said...

Most cool, Ben. Fun to find that there always seems to be more depth to the creative possibilities in X-Plane than one can imagine. On a related note....what are the chances of X-Plane ever having an IK solver (now that you mention it)? That would make worlds of difference to some of the more complex landing gear animations, and no doubt other animation capabilities as well.

Benjamin Supnik said...

Hi Steve,

In-sim IK resolver...very very low chance of it happening. I think the IK resolver is really needed for the tool chain - that is, a lot of the time you want the IK resolver to speed up the process of authoring particular animations.

(I can see how if you have a truly independent set of gear, you might want this, but you really want to be modeling the same mechanism that x-plane models.)

Steve said...

The problem, unfortunately, is that X-Plane landing gear is very, very simple. When you model the hydraulics of the retractions, for instance, they cannot be accurately modeled with purely linear rotations and translations. One mount point or the other will wander a bit as the main elements of the gear retract. The same thing happens with shock absorbers that are more complex than simple oleos. I understand that IK integration is likely beyond the scope of X-Plane. A bit of overkill. However, it would be good for those of us that model complex mechanical systems within the sim to be able to manipulate objects more realistically. Perhaps a simple proportional or curve calculator could be implemented so that IK could be simulated simply, rather than injecting a whole bucketload of code.

Dan 31 said...

And what about real button ?
It's perfect to use a mouse for control, but it could be usefull to be able to use real one. I know there are a lot of USB button available, but not so much rotating

Steve said...

Dan 31, we have an excellent cockpit builder's sub-forum at http://www.x-plane.org. You'll find all manner of help interfacing X-Plane with physical controls like rotary switches, potentiometers and the like. The flight sim world is awash in quality products to make this sort of thing happen with both off-the-shelf options as well as parts to roll your own control panels.

My apologies for "manipulating" your blog, by the way, Ben...again!