GAME JOBS
Contents
From Research To Games: Interacting With 3D Space
 
 
Printer-Friendly VersionPrinter-Friendly Version
 
Latest Jobs
spacer View All     Post a Job     RSS spacer
 
June 7, 2013
 
Sledgehammer Games / Activision
Level Designer (Temporary)
 
High Moon / Activision
Senior Environment Artist
 
LeapFrog
Associate Producer
 
EA - Austin
Producer
 
Zindagi Games
Senior/Lead Online Multiplayer
 
Off Base Productions
Senior Front End Software Engineer
spacer
Latest Blogs
spacer View All     Post     RSS spacer
 
June 7, 2013
 
Tenets of Videodreams, Part 3: Musicality
 
Post Mortem: Minecraft Oakland
 
Free to Play: A Call for Games Lacking Challenge [1]
 
Cracking the Touchscreen Code [3]
 
10 Business Law and Tax Law Steps to Improve the Chance of Crowdfunding Success
spacer
About
spacer Editor-In-Chief:
Kris Graft
Blog Director:
Christian Nutt
Senior Contributing Editor:
Brandon Sheffield
News Editors:
Mike Rose, Kris Ligman
Editors-At-Large:
Leigh Alexander, Chris Morris
Advertising:
Jennifer Sulik
Recruitment:
Gina Gross
Education:
Gillian Crowley
 
Contact Gamasutra
 
Report a Problem
 
Submit News
 
Comment Guidelines
 
Blogging Guidelines
Sponsor
Features
  From Research To Games: Interacting With 3D Space
by Joseph LaViola Jr. [Design, Programming, Art, Serious]
7 comments Share on Twitter Share on Facebook RSS
 
 
April 22, 2010 Article Start Previous Page 3 of 6 Next
 

Grabbing the Air

The "grabbing the air" technique, also first discussed in 1995, uses the metaphor of literally grabbing the world around you (usually empty space), and pulling yourself through it using hand gestures. This is similar to pulling yourself along a rope, except that the "rope" exists everywhere, and can take you in any direction. The grabbing the air technique has many potential uses in video games including climbing buildings or mountains, swimming, and flying.



To implement the one-handed version of this technique (the two-handed version can get complex if rotation and world scaling is also supported), when the initial button press is detected, we simply obtain the position of the hand in the world coordinate system.

Then, every frame until the button is released, get a new hand position, subtract it from the old one, and move the objects in the world by this amount.

Alternately, you can leave the world fixed, and translate the viewpoint by the opposite vector. Before exiting the callback, be sure to update the "old" hand position for use on the next frame.

Note it is tempting to implement this technique simply by attaching the world to the hand, but this will have the undesirable effect of also rotating the world when the hand rotates, which can be quite disorienting. You can also do simple constrained motion simply by ignoring one or more of the components of the hand position (e.g. only consider x and z to move at a constant height).

Selection

3D selection is the process of accessing one or more objects in a 3D virtual world. Note that selection and manipulation are intimately related, and that several of the techniques described here can also be used for manipulation.

There are several common issues for the implementation of selection techniques. One of the most basic is how to indicate that the selection event should take place (e.g. you are touching the desired object, now you want to pick it up). This is usually done via a button press, gesture, or voice command, but it might also be done automatically if the system can infer the user's intent.

One also has to have efficient algorithms for object intersections for many of these techniques. We'll discuss a couple of possibilities. The feedback given to the user regarding which object is about to be selected is also very important. Many of the techniques require an avatar (virtual representation) for the user's hand.

Finally, consider keeping a list of objects that are "selectable", so that a selection technique does not have to test every object in the world, increasing efficiency. Four common selection techniques include the virtual hand, ray-casting, occlusion, and arm extension.

The Virtual Hand

The most common selection technique is the simple virtual hand, which does "real-world" selection via direct "touching" of virtual objects. This technique is also one of the oldest and dates back to the late 1980s. In the absence of haptic feedback, this direction manipulation is done by intersecting the virtual hand (which is at the same location as the physical hand) with a virtual object.

The virtual hand has great potential in many different video game genres. Examples include selection of sports equipment, direct selection of guns, ammo, and health packs in first person shooter games, as a hand of "God" in real-time strategy games, and interfacing with puzzles in action/adventure games.

Implementing this technique is simple, provided you have a good intersection/collision algorithm. Often, intersections are only performed with axis-aligned bounding boxes or bounding spheres rather than with the actual geometry of the objects.

Ray-Casting

Another common selection technique is ray-casting. This technique was first discussed in 1995 and uses the metaphor of a laser pointer -- an infinite ray extending from the virtual hand. The first object intersected along the ray is eligible for selection.

This technique is efficient, based on experimental results, and only requires the user to vary 2 degrees of freedom (pitch and yaw of the wrist) rather than the 3 DOFs required by the simple virtual hand and other location-based techniques. Ideally, ray-casting could be used when ever special powers are required in the game or when the player has the ability to select objects at a distance.

There are many ways to implement ray-casting. A brute-force approach would calculate the parametric equation of the ray, based on the hand's position and orientation. First, as in the pointing technique for travel, find the world coordinate system equivalent of the vector (0,0,-1). This is the direction of the ray. If the hand's position is represented by (), and the direction vector is (), then the parametric equations are given by

Only intersections with should be considered, since we do not want to count intersections "behind" the hand. It is important to determine whether the actual geometry has been intersected, so first testing the intersection with the bounding box will result in many cases being trivially rejected.

Another method might be more efficient. In this method, instead of looking at the hand orientation in the world coordinate system, we consider the selectable objects to be in the hand's coordinate system, by transforming their vertices or their bounding boxes. This might seem quite inefficient, because there is only one hand, while there are many polygons in the world. However, we assume we have limited the objects by using a selectable objects list. Thus, the intersection test we will describe is much more efficient.

Once we have transformed the vertices or bounding boxes, we drop the z coordinate of each vertex. This maps the 3D polygon onto a 2D plane (the xy plane in the hand coordinate system).

Since the ray is (0,0,-1) in this coordinate system, we can see that in this 2D plane, the ray will intersect the polygon if and only if the point (0,0) is in the polygon. We can easily determine this with an algorithm that counts the number of times the edges of the 2D polygon cross the positive x-axis. If there are an odd number of crossings, the origin is inside, if even, the origin is outside.

 
Article Start Previous Page 3 of 6 Next
 
Top Stories

image
Microsoft's official stance on used games for Xbox One
image
Keeping the simulation dream alive
image
A 15-year-old critique of the game industry that's still relevant today
image
The demo is dead, revisited
Comments

Dustin Chertoff
profile image
I feel like I took a class on this a couple years ago. =) (I'm a former UCF student, graduated there last year, and Joe was on my dissertation committee - k, disclosure complete.)



Seriously though, this is good stuff that game developers interested in 3DUI should be aware of. Great article and it puts everything in a nice, centralized location. And it serves as a great refresher for those already familiar with the concepts.

Simon T
profile image
@ Tim



Research informs creation.

Isaiah Williams
profile image
Research creates information.

John Mawhorter
profile image
This article is highlighting for me the fact that 3D UIs and Virtual Worlds are difficult to use and that the mouse and keyboard are by far the superior input device for most tasks. Seriously, controlling my movement by turning my head? This is uncomfortable on a basic level. Also the magical versus realist distinction and your constant use of "natural" and "immersion" are pretty silly.

John Mawhorter
profile image
Not that this isn't a useful starting point for thinking about using these devices in games, but there are many of these techniques that don't work in a time-intensive situation (ie most real-time video games) or when moving. And there's also the problem that head-tracking is needed for some of these, which most of the controllers won't provide. And the real problem is that the virtual world research mostly seems to be based on VR environments that are expensive and complicated, while also being used for specific tasks that aren't really very game-like (military training simulators excepted). If there was a real academic VR-Game research community it would be great.

Dustin Chertoff
profile image
@Tim Carter



Research does not guarantee that the results of the research are immediately applicable towards creating commercial products. In many cases, research exists solely for the sake of figuring out the truth of the very small part of the world the researcher is interested in. But at no point, is research the antithesis of creation.



Creation cannot exist in a vacuum. Creation must be informed through observations of the world. How do you know what problem needs a solution to be created? How do you know how to build the solution? How do you test that your solution works? This is all research. Creation is the process of developing an informed response based upon the questions asked and answered through the research process. Development cannot exist without research to inform what to develop, and research cannot exist without development defining the problems that need to be researched.



And while punk rock pioneers could not play their instruments with the same technical prowess of their contemporaries, they had performed plenty of research regarding the type of music out there. They felt that the music did lot let them express themselves the way they wished to express themselves (the problem). As a result, they created a new form of musical expression.



@John Mawhorter



Yeah, many of the techniques right now are very cumbersome for VR, let alone for gaming. Even the best VR equipment would choke trying to provide the same quality of experience you can get with AAA PC game. But the technology is getting there, slowly... One of the issues though, is the mindset that great games have to fit the "sit in one spot for 3+ hours" paradigm. A new genre of games based around 10-15 minute immersive experiences can emerge (where immersion refers to both physical and psychological immersion). Just like major game developers balked at the power of social gaming, only to realize now that it is a multi-billion dollar industry, the same can be said of the immersive casual game.



The Wii showed that people will buy the tech, (if not 3rd party games). It was enough to make MS and Sony play catch-up with Natal/Move. This tech is not currently suited for AAA FPS games, but it is great for other genres. It's unwise (from a business perspective) to ignore this nascent market segment because it can't be applied to the current style of AAA game. Let the tech be incorporated and refined in the new genres, so that the mature version can be added to traditional blockbuster style games.

Ruthaniel van-den-Naar
profile image
For me nice summary and something between science and design, I hate overly scientific and pieces, this is ideal combanation.


none
 
Comment:
 




UBM Tech