Difference between revisions of "General X3D Navigation Behaviors"
Line 4: | Line 4: | ||
Hello 3D Navigation | Hello 3D Navigation | ||
− | As we can easily see, VRML/X3D standardized navigation deals with some very primary yet weakly specified types and utilities. Our X3D helped some with closer definitions and a defined utility LookAt. The current standard needs upgrade because it needs strengthening. Some features that are now proven simple and consistent to describe and implement are missing. | + | |
+ | This is just intended to be a basis for a recommendation to work on the ISO Standard X3D Navigation standards. As we can easily see, VRML/X3D standardized navigation deals with some very primary yet weakly specified types and utilities. Our X3D helped some with closer definitions and a defined utility LookAt. The current standard needs upgrade because it needs strengthening. Some features that are now proven simple and consistent to describe and implement are missing. | ||
When navigation was originally defined there was hesitation to specify anything too closely. Even though quite advanced navigation styles and techniques for using the available controls of mouse and keyboard were demonstrated, only general and mostly optional recommendations are made. It remains very brave for then but for example Walk mode navigation seems not to absolutely require realistic terrain following and collison. This is a signal that not all paricipating players could do all those things at some time in the past, so the standard was weak. | When navigation was originally defined there was hesitation to specify anything too closely. Even though quite advanced navigation styles and techniques for using the available controls of mouse and keyboard were demonstrated, only general and mostly optional recommendations are made. It remains very brave for then but for example Walk mode navigation seems not to absolutely require realistic terrain following and collison. This is a signal that not all paricipating players could do all those things at some time in the past, so the standard was weak. | ||
Line 15: | Line 16: | ||
interface it can work where +y is go forward and +x is go right, there is no way to go "up" or "down" without changing what I called the 'current navigation plane'. In X3D/VRML with the typical setup, to change pitch or roll you switch from fly to a mode like pan or roll or examine that will allow you to set up that current plane so you can aim at where you want to go, then switch back to fly and go forward. | interface it can work where +y is go forward and +x is go right, there is no way to go "up" or "down" without changing what I called the 'current navigation plane'. In X3D/VRML with the typical setup, to change pitch or roll you switch from fly to a mode like pan or roll or examine that will allow you to set up that current plane so you can aim at where you want to go, then switch back to fly and go forward. | ||
− | + | First the fundamental movements: | |
− | First the | + | |
Walk | Walk | ||
- Follow terrain with collision and apparent gravity effect | - Follow terrain with collision and apparent gravity effect | ||
− | - on current surface. relative +-y controls forward and reverse and turning, relative +-x controls gaze | + | - on current surface. relative +-y controls forward and reverse and turning, relative +-x controls gaze along the current navigation plane. |
Fly | Fly | ||
− | - Follow current x,z surface with collision no gravity effect (except if | + | - Follow current x,z surface with collision no gravity effect (except if applied by physics) |
- same as walk, forward, back, rightyaw, leftyaw on current x,z plane | - same as walk, forward, back, rightyaw, leftyaw on current x,z plane | ||
− | Specifically, the gaze direction is the movement direction. | + | Specifically, the gaze direction is the movement direction. The gaaze direction is limited to sweeping the current x,z navigation plane. |
+ | |||
+ | More Necessary 3D Navigation | ||
− | |||
Next, some more for what is actually needed to support basic mouse-type x,y navigation. | Next, some more for what is actually needed to support basic mouse-type x,y navigation. | ||
Line 44: | Line 45: | ||
- move right and left, and up, down if Fly, on current view x,y plane to displace current x,z navigation plane. | - move right and left, and up, down if Fly, on current view x,y plane to displace current x,z navigation plane. | ||
− | With these we can actually move around on a surface and even change | + | With these we can actually move around on a surface and even change orientation of the navigation surface to simulate flying, if only in a clunky way. If done right, then you could Pan to pick your relative z direction and pitch, roll some for orientation, and Fly to go forward and set your relative x,z plane heading, and maybe Slide to change relative x,y position. Since VRML/X3D 'fly' with a mouse should be only yaw turns, you need to switch back and forth between these various modes to set your desired pitch, roll, yaw, position, and direction. |
+ | |||
+ | Those are Basic | ||
− | + | So, these five Walk, Fly, Pan, Slide, Roll, are the basic movements for mouse-type surface/point mivements in this type of one-input navigation control scheme. Every truely X3D Web3D browser should do these and call the same the same. | |
− | So, these five Walk, Fly, Pan, Slide, Roll, are the basic movements for mouse-type surface/point mivements in this type of navigation control scheme. Every truely X3D Web3D browser should do these and | + | |
− | call the same the same. | + | |
As well as a typical looking context menu, uniform keyboard keys must allow easy ways to select a current mode. | As well as a typical looking context menu, uniform keyboard keys must allow easy ways to select a current mode. |
Revision as of 19:49, 17 March 2007
General X3D Navigation Behaviors
X3D Navigation - Planar and Free
Hello 3D Navigation
This is just intended to be a basis for a recommendation to work on the ISO Standard X3D Navigation standards. As we can easily see, VRML/X3D standardized navigation deals with some very primary yet weakly specified types and utilities. Our X3D helped some with closer definitions and a defined utility LookAt. The current standard needs upgrade because it needs strengthening. Some features that are now proven simple and consistent to describe and implement are missing.
When navigation was originally defined there was hesitation to specify anything too closely. Even though quite advanced navigation styles and techniques for using the available controls of mouse and keyboard were demonstrated, only general and mostly optional recommendations are made. It remains very brave for then but for example Walk mode navigation seems not to absolutely require realistic terrain following and collison. This is a signal that not all paricipating players could do all those things at some time in the past, so the standard was weak.
So, VRML/X3D browser vendors now can all do pretty much the same navigation effects if they want to and have generally all tried to do something innovative and generally offering much more than the standard actually requires.
First, there is only so much you can do with the current setup. It is totally composed to operate using a pointing system that operates on relative x,y only. I mean that whatever 'movement' you pick, the movement can only describe changing the viewer position or direction with regard to the single current navigation plane or the current position.
As in a motion like typical VRML/X3D 'fly' using a normal mouse interface it can work where +y is go forward and +x is go right, there is no way to go "up" or "down" without changing what I called the 'current navigation plane'. In X3D/VRML with the typical setup, to change pitch or roll you switch from fly to a mode like pan or roll or examine that will allow you to set up that current plane so you can aim at where you want to go, then switch back to fly and go forward.
First the fundamental movements:
Walk - Follow terrain with collision and apparent gravity effect - on current surface. relative +-y controls forward and reverse and turning, relative +-x controls gaze along the current navigation plane.
Fly - Follow current x,z surface with collision no gravity effect (except if applied by physics) - same as walk, forward, back, rightyaw, leftyaw on current x,z plane
Specifically, the gaze direction is the movement direction. The gaaze direction is limited to sweeping the current x,z navigation plane.
More Necessary 3D Navigation
Next, some more for what is actually needed to support basic mouse-type x,y navigation.
Pan - Free look view direction with position fixed no collision - look around in any direction +y is up, +x is rotate right - Changes current view z to change x,z navigation plane.
Roll - Control viewer orientation around z with collision - Rotate around viewer z to change current view x,z navigation plane.
Slide - only the position relative x.y is changed with collision - move right and left, and up, down if Fly, on current view x,y plane to displace current x,z navigation plane.
With these we can actually move around on a surface and even change orientation of the navigation surface to simulate flying, if only in a clunky way. If done right, then you could Pan to pick your relative z direction and pitch, roll some for orientation, and Fly to go forward and set your relative x,z plane heading, and maybe Slide to change relative x,y position. Since VRML/X3D 'fly' with a mouse should be only yaw turns, you need to switch back and forth between these various modes to set your desired pitch, roll, yaw, position, and direction.
Those are Basic
So, these five Walk, Fly, Pan, Slide, Roll, are the basic movements for mouse-type surface/point mivements in this type of one-input navigation control scheme. Every truely X3D Web3D browser should do these and call the same the same.
As well as a typical looking context menu, uniform keyboard keys must allow easy ways to select a current mode.
In all cases a uniform way to allow select 'mousedown' for navigation without activating underlying touchsensor/anchor nodes must be provided.
The arrow keys must be defined consistently with expected mouse operation in the current mode.
It is most fun to be able to hold the mousedown while switching modes without halting and manually restarting the movement.
Navigation Utilities Navigation utilities are added to ease the pains of mouse-only navigation.
Examine - Change the view to orbit an object of interest with respect to a defined centerofrotation with collision. - active pointer motion causes the position and orientation of the view to move with constant radius around the centerofrotation while maintaining the gaze aimed at the centerofrotation.
LookAt - Allows the user to point at and select an object of nterest. - Moves the viewpoint closer to the object, sets a new centerofrotation based on the selection, and aims the gaze upon the new centerofrotation.
The current navigation plane must not change its 'up' during LookAt. That is, only pitch and yaw are changed to move the view, not roll. The navigation mode must not change by selecting LookAt. All sensors active during movement.
Uniform method of selecting and activating the LookAt operation without changing the navigation mode is required.
Effective method of switching between Walk, Fly, Slide, Pan, Roll, Examine is required.
That about does it for this kind of primary mouse-driven navigation. One problem? Is it still too soon to think that a standardized user would have a pointing device with at least three ways to make it active, plus at least one wheel?
Stand Together Here the X3D browsers should stand together. There should be standard, simple, non-optional but user-settable controls for these simple yet necessary navigation features. Further, these form the basis for author control of more complex tour-type user assisted navigation.
Now for some Real 3D Navigation As a next step, realistic navigation requires that more than one of these navigation modes are active simultaneously. In a venacular, this means at least two navigation vectors are active: gaze and movement direction.
One great success for terrain navigation is the idea of using one set of keys for forward, back, slideleft,slideright movement and another set and/or the the Mouse for gaze and direction. The effective mouse pointer position provides the gaze direction, along with x and z reference for the movement directions. When you select forward, you go where you are looking, and you can slide right and left relative to your gaze.
Play - Free gaze direction by mouse pointer, like Pan, +y moves gaze up and +x moves gaze right. - WASD keys provide direction control for movements forward, slideleft, back, and slideright.
At this time, this type of interface is well enough proven to standardize as a Play navigation mode. Does any browser maker have a problem implementing gaze tracking the mouse? Any Problems using WASD keyboard for forward, slideright, back, slideleft?
Since this mode requires several controls just for movement and several more features may be added to accomplish other play iteractions it is unclear what to recommend concerning other shortcut controls of the X3D browser and supporting platform.
That one, Play, should be simple to write up.
What About Free-Flight? X3D Standardization of free flight navigation is not necessary at this time. To change direction, we use instant combinations of pitch, roll, and yaw plus forward, back, slideleft, slideright movements. For now, this is all best done by connection of an appropriate controller. Some flight controls using multiple sets of keys and mouse are seen but are not satisfactory and thus not necessary to consider. Maybe you can steer free flight with only mouse and roll. who cares, gimme the joystick and it is done.
Conclusion Navigation is hard. every application has differing but common requirements. When movement is required, the author must be able to offer satisfactory solutions. The above analysis and comments comes from the best I have seen and needed. The five basic movements and two utilies will provide the basic tools needed to provide performant navigation and an outline for updating the X3D standard.
Thanks and Best Regards, Joe