I'm looking for an easy way to flip the y-axis, so increasing values go down and decreasing values go up. Is there anywhere I can flip an argument to a negative or something and have everything magically work?
where do you need that "flip"? i suppose in some cases you could multiply the y component by -1 or in other cases you could rotate your spatial by 180 degrees on x or z
I want it everywhere. See I'm porting my engine from Java's AWT to use JMonkey. The whole engine is built assuming bigger y values mean down. I think I want to do something like change the world coordinate system in JMonkey.
I tried flipping the "up" direction on the camera but then increasing x values go left and decreasing x values go right
You need to set your camera's matrix to:
left: 1,0,0
up: 0,-1,0
dir: 0, 0, -1
You'll probably have to reset the camera to the input system (but I can't remember off hand).
Doesn't seem to be working. Up and down are working correctly, but left goes right and right goes left.
I'm wondering if this could be a bug, because when I do this:
Vector3f left = new Vector3f( 1.0f, 0.0f, 0.0f );
I get the same exact results as when I do this:
Vector3f left = new Vector3f( -1.0f, 0.0f, 0.0f );
I know very little about 3d engines though, so I could be wrong.
Here's my modified code from BaseSimpleGame:
/** Set up how our camera sees. */
cameraPerspective();
Vector3f loc = new Vector3f( 0.0f, 0.0f, 25.0f );
Vector3f left = new Vector3f( 1.0f, 0.0f, 0.0f );
Vector3f up = new Vector3f( 0.0f, -1.0f, 0.0f );
Vector3f dir = new Vector3f( 0.0f, 0f, -1.0f );
/** Move our camera to a correct place and orientation. */
cam.setFrame( loc, left, up, dir );
/** Signal that we've changed our camera's location/frustum. */
cam.update();
/** Assign the camera to this renderer. */
display.getRenderer().setCamera( cam );
Here's how I move the camera:
public void moveCamKeys() {
Camera cam = Game.getRenderer().getCamera();
Vector3f pos = cam.getLocation();
KeyInput keys = KeyInput.get();
if( keys.isKeyDown( KeyInput.KEY_LEFT ) )
pos.x -= speed;
if( keys.isKeyDown( KeyInput.KEY_RIGHT) )
pos.x += speed;
if( keys.isKeyDown( KeyInput.KEY_UP ) )
pos.y -= speed;
if( Keyboard.isDown( KeyInput.KEY_DOWN ) )
pos.y += speed;
if( keys.isKeyDown( KeyInput.KEY_W ) )
pos.z += speed;
if( keys.isKeyDown( KeyInput.KEY_S ) )
pos.z -= speed;
cam.update();
}
Pretty simple, really. I don't see what's going wrong.
Oh yeah, and I also commented this part out:
/** Create a basic input controller. */
/*FirstPersonHandler firstPersonHandler = new FirstPersonHandler( cam, 50,
1 );
input = firstPersonHandler;/**/
Hi jebso,
have you solved the "flip" problem of orizontal axes?
I've the same problem, but in vertical axes…