|
From: <tre...@us...> - 2007-11-24 12:43:17
|
Revision: 601
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=601&view=rev
Author: trevorolio
Date: 2007-11-24 04:43:06 -0800 (Sat, 24 Nov 2007)
Log Message:
-----------
Now the camera motion imitates many games:
Left-mouse-drag pans and tilts the camera, rotating around the head.
Escape key resets camera position.
Scroll-wheel zooms in and out.
Modified Paths:
--------------
maven/trunk/ogoglio-body-editor-applet/src/main/java/com/ogoglio/bodyeditor/BodyEditorApplet.java
Modified: maven/trunk/ogoglio-body-editor-applet/src/main/java/com/ogoglio/bodyeditor/BodyEditorApplet.java
===================================================================
--- maven/trunk/ogoglio-body-editor-applet/src/main/java/com/ogoglio/bodyeditor/BodyEditorApplet.java 2007-11-24 12:43:01 UTC (rev 600)
+++ maven/trunk/ogoglio-body-editor-applet/src/main/java/com/ogoglio/bodyeditor/BodyEditorApplet.java 2007-11-24 12:43:06 UTC (rev 601)
@@ -18,6 +18,8 @@
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Panel;
+import java.awt.event.MouseWheelEvent;
+import java.awt.event.MouseWheelListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
@@ -51,7 +53,6 @@
import com.ogoglio.util.UIConstants;
import com.ogoglio.viewer.j3d.J3DBodyData;
import com.ogoglio.viewer.j3d.J3DCamera;
-import com.ogoglio.viewer.j3d.J3DCameraMotionBehavior;
import com.ogoglio.viewer.j3d.J3DCanvas;
import com.ogoglio.viewer.j3d.J3DDataManager;
import com.ogoglio.viewer.j3d.J3DRenderer;
@@ -67,7 +68,7 @@
* NOTE: String arrays don't function in LiveConnect in IE, so we use the getXXXCount and getXXX(index) pattern
*/
-public class BodyEditorApplet extends Applet {
+public class BodyEditorApplet extends Applet{
private URI serviceURI = null;
@@ -127,9 +128,9 @@
return bodyPanel.bodyData.getMorphDeltaMaps().length;
}
- public String getMorphName(int index){
+ public String getMorphName(int index) {
String[] names = getMorphNames();
- if(index < 0 || index > names.length - 1){
+ if (index < 0 || index > names.length - 1) {
return null;
}
return names[index];
@@ -162,18 +163,18 @@
bodyPanel.renderable.updateMorphs();
}
- public int getAnimationCount(){
+ public int getAnimationCount() {
return getAnimationNames().length;
}
- public String getAnimationName(int index){
+ public String getAnimationName(int index) {
String[] names = getAnimationNames();
- if(index < 0 || index > names.length - 1){
+ if (index < 0 || index > names.length - 1) {
return null;
}
return names[index];
}
-
+
public String[] getAnimationNames() {
if (user == null || bodyPanel == null || bodyPanel.renderable == null) {
return new String[0];
@@ -200,18 +201,18 @@
return new BodyConfigurationDocument(user.getBodyConfiguration()).toElement().toString();
}
- public int getBaseTextureCount(){
+ public int getBaseTextureCount() {
return getBaseTextureNames().length;
}
-
- public String getBaseTextureName(int index){
+
+ public String getBaseTextureName(int index) {
String[] names = getBaseTextureNames();
- if(index < 0 || index > names.length - 1){
+ if (index < 0 || index > names.length - 1) {
return null;
}
return names[index];
}
-
+
public String[] getBaseTextureNames() {
if (user == null || bodyPanel == null || bodyPanel.bodyData == null) {
return null;
@@ -297,7 +298,7 @@
}
- private class BodyPanel extends Panel {
+ private class BodyPanel extends Panel implements MouseWheelListener {
Dimension dimension = new Dimension(300, 400);
private J3DUniverse universe = null;
@@ -326,6 +327,7 @@
universe = new J3DUniverse();
canvas = new J3DCanvas(J3DRenderer.getGraphicsConfiguration(), false);
+ canvas.addMouseWheelListener(this);
camera = new J3DCamera();
camera.setCanvas(canvas);
@@ -337,6 +339,8 @@
try {
bodyData = dataManager.getBodyData(user.getBodyConfiguration().getBodyDataID());
renderable = new J3DUserRenderable(user, bodyData, dataManager.getBodyTexture(user.getUsername(), user.getBodyConfiguration().getBodyConfigurationID()));
+ renderable.setCamera(camera);
+ renderable.getCameraBehavior().setAllowXRotation(false);
userGroup.addChild(renderable);
return true;
} catch (Exception e) {
@@ -379,20 +383,26 @@
userGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
userGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
- J3DCameraMotionBehavior zoomBehavior = new J3DCameraMotionBehavior(camera.getTransformGroup(), 1.1);
- zoomBehavior.setTransformGroup(camera.getTransformGroup());
- camera.getTransformGroup().addChild(zoomBehavior);
- zoomBehavior.setSchedulingBounds(bounds);
-
canvas.getView().setTransparencySortingPolicy(View.TRANSPARENCY_SORT_GEOMETRY);
canvas.getView().setSceneAntialiasingEnable(true);
- camera.setRotation(-0, Math.PI, 0);
- camera.setLocation(new Vector3f(0f, 1.5f, -1.1f));
- userGroup.addChild(camera.getNode());
-
+ camera.setDefaultLocation(0, 0, 0);
+ camera.setRelativePosition(0, 1.5f, 1f);
+ Transform3D rotTransform = new Transform3D();
+ rotTransform.rotY(Math.PI);
+ camera.getTransformGroup().setTransform(rotTransform);
universe.makeLive();
}
+
+ public void mouseWheelMoved(MouseWheelEvent event) {
+ int zoomDelta = event.getWheelRotation();
+ if (zoomDelta == 0) {
+ return;
+ }
+ int cameraZoom = zoomDelta > 0 ? 1 : -1;
+ camera.changeRelativePosition(0, 0, cameraZoom);
+ }
+
}
public void start() {
@@ -498,4 +508,5 @@
add(errorLabel);
}
}
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|