|
From: <tre...@us...> - 2007-10-22 10:53:28
|
Revision: 532
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=532&view=rev
Author: trevorolio
Date: 2007-10-22 03:53:31 -0700 (Mon, 22 Oct 2007)
Log Message:
-----------
Added the camera controls from the body editor to the viewer.
Left/right mouse drags rotate the camera.
Up/down mouse drags zoom to and from your camera's default location.
Pressing the "escape" key resets your camera to the location.
Page Up/Down tilts the camera up and down from default position.
This commit is for all the people who just can't get enough of looking at themselves and in support of sitting without locking your viewpoint straight ahead.
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DCamera.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/MotionInputHandler.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/render/Camera.java
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DCamera.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DCamera.java 2007-10-21 23:55:25 UTC (rev 531)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DCamera.java 2007-10-22 10:53:31 UTC (rev 532)
@@ -37,6 +37,8 @@
private TransformGroup rootTransformGroup = new TransformGroup();
+ private Transform3D defaultLocation = new Transform3D();
+
private Transform3D location = new Transform3D();
private ViewPlatform platform = new ViewPlatform();
@@ -113,4 +115,13 @@
public Node getNode() {
return rootTransformGroup;
}
+
+ public void setDefaultLocation(Vector3f location) {
+ defaultLocation.setIdentity();
+ defaultLocation.setTranslation(location);
+ }
+
+ public void setToDefaultLocation(){
+ rootTransformGroup.setTransform(defaultLocation);
+ }
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2007-10-21 23:55:25 UTC (rev 531)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2007-10-22 10:53:31 UTC (rev 532)
@@ -685,7 +685,9 @@
if (isLocalUser) {
float cameraHeight = (float) (renderable.getHeight() - renderable.getHeight() / 5);
- camera.setLocation(new Vector3f(0f, cameraHeight, 0f));
+ Vector3f defaultCameraLocation = new Vector3f(0f, cameraHeight, 0f);
+ camera.setDefaultLocation(defaultCameraLocation);
+ camera.setLocation(defaultCameraLocation);
renderable.setCamera(camera);
motionHandler = new MotionInputHandler(this, renderable, userInputListener);
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java 2007-10-21 23:55:25 UTC (rev 531)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java 2007-10-22 10:53:31 UTC (rev 532)
@@ -182,6 +182,13 @@
}
this.camera = (J3DCamera) camera;
transformGroup.addChild(this.camera.getNode());
+
+ TransformGroup cameraTransformGroup = ((J3DCamera)camera).getTransformGroup();
+ J3DCameraMotionBehavior zoomBehavior = new J3DCameraMotionBehavior(cameraTransformGroup, 1.1);
+ zoomBehavior.setTransformGroup(cameraTransformGroup);
+ cameraTransformGroup.addChild(zoomBehavior);
+ zoomBehavior.setSchedulingBounds(new BoundingSphere());
+
}
public Skin getSkin() {
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/MotionInputHandler.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/MotionInputHandler.java 2007-10-21 23:55:25 UTC (rev 531)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/MotionInputHandler.java 2007-10-22 10:53:31 UTC (rev 532)
@@ -67,6 +67,8 @@
private UserRenderable userRenderable = null;
+ private boolean cameraReset = false;
+
public MotionInputHandler(Renderer renderer, UserRenderable userGroup, UserInputListener inputListener) {
ArgumentUtils.assertNotNull(renderer);
this.renderer = renderer;
@@ -83,6 +85,10 @@
if (cameraDirty) {
cameraDirty = false;
+ if (cameraReset) {
+ renderer.getCamera().setToDefaultLocation();
+ return;
+ }
renderer.getCamera().setRotation(cameraTilt, 0, 0);
}
@@ -91,18 +97,18 @@
}
dirty = false;
- if(userRenderable.getUser().getSeat() != null){
+ if (userRenderable.getUser().getSeat() != null) {
Transform3D standingPosition = new Transform3D();
standingPosition.set(userRenderable.getUser().getSeat().getPosition());
Quat4d seatRotation = userRenderable.getUser().getSeat().getTemplate().getSeatRotation();
Transform3D rotateTransform = new Transform3D();
rotateTransform.set(seatRotation);
standingPosition.mul(rotateTransform);
-
+
userInputListener.viewpointMotionStopped(standingPosition);
return;
}
-
+
Transform3D position = new Transform3D();
userRenderable.getPosition(position);
@@ -111,7 +117,7 @@
float forwardSpeed = (moveForward ? 1 : 0) + (moveBackward ? -1 : 0);
float strafeSpeed = (strafeLeft ? 1 : 0) + (strafeRight ? -1 : 0);
if (turn != 0 || forwardSpeed != 0 || strafeSpeed != 0) {
- path = J3DSplinePath.getSplinePath(position, forwardSpeed, turn, strafeSpeed, (float)userRenderable.getHeight());
+ path = J3DSplinePath.getSplinePath(position, forwardSpeed, turn, strafeSpeed, (float) userRenderable.getHeight());
userInputListener.viewpointMotionChanged(path);
return;
} else {
@@ -160,6 +166,9 @@
} else if (e.getKeyCode() == KeyEvent.VK_PAGE_DOWN) {
cameraDirty = true;
cameraTilt -= 0.1;
+ } else if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
+ cameraDirty = true;
+ cameraReset = true;
}
reevaluate();
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/render/Camera.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/render/Camera.java 2007-10-21 23:55:25 UTC (rev 531)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/render/Camera.java 2007-10-22 10:53:31 UTC (rev 532)
@@ -15,4 +15,6 @@
public interface Camera {
public void setRotation(double xRot, double yRot, double zRot);
+
+ public void setToDefaultLocation();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|