A method, comprising: generating a three-dimensional virtual environment; tracking a six-degree-of-freedom position and orientation of a first controller in a physical environment; tracking a 6DOF position and orientation of a second controller in the physical environment; detecting a selection of a virtual object (200, 420) displayed in the virtual environment; detecting an input targeted for the selected virtual object based on a detected movement of the first controller in the physical environment with respect to a first coordinate system and a detected movement of the second controller in the physical environment with respect to a second coordinate system; resolving the detected movement of the first controller with respect to the first coordinate system and the detected movement of the second controller with respect to the second coordinate system to a command movement with respect to a common coordinate system, wherein resolving the detected movement of the first controller with respect to the first coordinate system and the detected movement of the second controller with respect to the second coordinate system to a command movement with respect to a common coordinate system includes: defining a first axis of the common coordinate system, the first axis extending from a central portion of the first controller to a central portion of the second controller; defining a second axis of the common coordinate system, the second axis being selected from one of an X axis, a Y axis, or a Z axis of the first coordinate system, wherein defining the second axis of the common coordinate system includes: determining which of the X axis, the Y axis or the Z axis of the first coordinate system is most orthogonal to the first axis; and setting the most orthogonal of the X axis, the Y axis or the Z axis as the second axis of the common coordinate system; and defining a third axis of the common coordinate system, the third axis being the cross product of the first axis and the second axis, and manipulating the selected virtual object in response to the command movement. generating a three-dimensional virtual environment; tracking a six-degree-of-freedom position and orientation of a first controller in a physical environment; tracking a 6DOF position and orientation of a second controller in the physical environment; detecting a selection of a virtual object (200, 420) displayed in the virtual environment; detecting an input targeted for the selected virtual object based on a detected movement of the first controller in the physical environment with respect to a first coordinate system and a detected movement of the second controller in the physical environment with respect to a second coordinate system; resolving the detected movement of the first controller with respect to the first coordinate system and the detected movement of the second controller with respect to the second coordinate system to a command movement with respect to a common coordinate system, wherein resolving the detected movement of the first controller with respect to the first coordinate system and the detected movement of the second controller with respect to the second coordinate system to a command movement with respect to a common coordinate system includes: defining a first axis of the common coordinate system, the first axis extending from a central portion of the first controller to a central portion of the second controller; defining a second axis of the common coordinate system, the second axis being selected from one of an X axis, a Y axis, or a Z axis of the first coordinate system, wherein defining a first axis of the common coordinate system, the first axis extending from a central portion of the first controller to a central portion of the second controller; defining a second axis of the common coordinate system, the second axis being selected from one of an X axis, a Y axis, or a Z axis of the first coordinate system, wherein defining the second axis of the common coordinate system includes: determining which of the X axis, the Y axis or the Z axis of the first coordinate system is most orthogonal to the first axis; and setting the most orthogonal of the X axis, the Y axis or the Z axis as the second axis of the common coordinate system; and determining which of the X axis, the Y axis or the Z axis of the first coordinate system is most orthogonal to the first axis; and setting the most orthogonal of the X axis, the Y axis or the Z axis as the second axis of the common coordinate system; and defining a third axis of the common coordinate system, the third axis being the cross product of the first axis and the second axis, and manipulating the selected virtual object in response to the command movement.