|
From: <tre...@us...> - 2007-09-17 22:37:59
|
Revision: 404
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=404&view=rev
Author: trevorolio
Date: 2007-09-17 15:38:01 -0700 (Mon, 17 Sep 2007)
Log Message:
-----------
Rewhacked Mike avatar to take a commonly available BVH style, so now he can walk, wave, and point.
Haven't tested it with the other two Croquet models yet, but it might Just Work. (famous last words)
Modified Paths:
--------------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/MultiuserTests.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.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/J3DSplinePath.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/j3d/body/BodyAnimator.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skeleton.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skin.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/bvh/Bvh.java
maven/trunk/ogoglio-common/src/main/resources/avatar/avatar-point.bvh
maven/trunk/ogoglio-common/src/main/resources/avatar/avatar-walk.bvh
maven/trunk/ogoglio-common/src/main/resources/avatar/avatar-wave.bvh
maven/trunk/ogoglio-common/src/main/resources/avatar/avatar.bvh
maven/trunk/ogoglio-common/src/main/resources/avatar/avatar.obj
maven/trunk/ogoglio-common/src/main/resources/avatar/avatar.smap
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/MultiuserTests.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/MultiuserTests.java 2007-09-17 22:37:42 UTC (rev 403)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/MultiuserTests.java 2007-09-17 22:38:01 UTC (rev 404)
@@ -145,7 +145,7 @@
} else if(lastSpun) {
userPosition.set(user.getPosition());
userPosition.rotY(random.nextFloat() % (2 * Math.PI));
- SplinePath path = J3DSplinePath.getSplinePath(userPosition, 1, 0, 0);
+ SplinePath path = J3DSplinePath.getSplinePath(userPosition, 1, 0, 0, 2);
robot.spaceClient.viewpointMotionChanged(path);
try {
sleep(3000 + Math.abs((random.nextInt() % 6000)));
@@ -154,7 +154,7 @@
}
lastSpun = false;
} else {
- SplinePath path = J3DSplinePath.getSplinePath(user.getPosition(), 0, 1, 0);
+ SplinePath path = J3DSplinePath.getSplinePath(user.getPosition(), 0, 1, 0, 2);
robot.spaceClient.viewpointMotionChanged(path);
try {
sleep(1000 + Math.abs((random.nextInt() % 6000)));
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java 2007-09-17 22:37:42 UTC (rev 403)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/model/Space.java 2007-09-17 22:38:01 UTC (rev 404)
@@ -118,7 +118,6 @@
Arrays.sort(things, new DistanceComparator());
if (things.length > 0) {
- Log.info("Adding " + things[0].getName());
listener.thingAdded(things[0]);
}
@@ -128,7 +127,6 @@
}
for (int i = 1; i < things.length; i++) {
- Log.info("Adding " + things[i].getName());
listener.thingAdded(things[i]);
}
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-09-17 22:37:42 UTC (rev 403)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DRenderer.java 2007-09-17 22:38:01 UTC (rev 404)
@@ -48,7 +48,9 @@
import com.ogoglio.client.model.Thing;
import com.ogoglio.client.model.User;
import com.ogoglio.util.Log;
+import com.ogoglio.viewer.j3d.bvh.Bvh;
import com.ogoglio.viewer.j3d.bvh.BvhParseException;
+import com.ogoglio.viewer.j3d.bvh.BvhParser;
import com.ogoglio.viewer.j3d.obj.Obj;
import com.ogoglio.viewer.j3d.obj.ObjParseException;
import com.ogoglio.viewer.j3d.obj.ObjParser;
@@ -109,7 +111,7 @@
private J3DWater water = null;
private boolean rendererStopped = false;
-
+
private boolean completedInitialLoad = false;
public J3DRenderer(SpaceClient spaceClient, boolean offScreen) {
@@ -239,7 +241,7 @@
private class SpaceListener implements Space.Listener {
public void pageMoved(Page page, Transform3D position) {
- if(rendererStopped) {
+ if (rendererStopped) {
return;
}
J3DThingRenderable thingRenderable = (J3DThingRenderable) getThingRenderable(page.getThing().getThingID());
@@ -256,7 +258,7 @@
}
public void pageAdded(Page page) {
- if(rendererStopped) {
+ if (rendererStopped) {
return;
}
J3DThingRenderable thingRenderable = (J3DThingRenderable) getThingRenderable(page.getThing().getThingID());
@@ -280,7 +282,7 @@
}
public void pageContentChanged(Page page) {
- if(rendererStopped) {
+ if (rendererStopped) {
return;
}
J3DThingRenderable thingRenderable = (J3DThingRenderable) getThingRenderable(page.getThing().getThingID());
@@ -301,7 +303,7 @@
}
public void thingAdded(Thing thing) {
- if(rendererStopped) {
+ if (rendererStopped) {
return;
}
try {
@@ -327,7 +329,7 @@
}
public void thingMotionStarted(Thing thing, SplinePath path) {
- if(rendererStopped) {
+ if (rendererStopped) {
return;
}
ThingRenderable renderable = getThingRenderable(thing.getThingID());
@@ -343,7 +345,7 @@
}
public void thingReloaded(Thing thing) {
- if(rendererStopped) {
+ if (rendererStopped) {
return;
}
try {
@@ -386,7 +388,7 @@
}
public void userAdded(User user) {
- if(rendererStopped) {
+ if (rendererStopped) {
return;
}
try {
@@ -404,7 +406,7 @@
}
public void userMotionStarted(User user, SplinePath path) {
- if(rendererStopped) {
+ if (rendererStopped) {
return;
}
J3DUserRenderable renderable = (J3DUserRenderable) getUserRenderable(user.getUsername());
@@ -412,7 +414,6 @@
return;
}
startRenderableMotion(renderable, path);
- /* turn off walking until we have a good animation
if (!offScreen) {
try {
BvhParser bvhParser = new BvhParser(user, 2);
@@ -424,7 +425,6 @@
e.printStackTrace();
}
}
- */
}
public void userMotionStopped(User user, Transform3D position) {
@@ -437,14 +437,13 @@
}
public void userAnimationStarted(User user, long animationID) {
- if(rendererStopped) {
+ if (rendererStopped) {
return;
}
J3DUserRenderable renderable = (J3DUserRenderable) getUserRenderable(user.getUsername());
if (renderable == null) { //haven't loaded the renderable
return;
}
- /*
if (!offScreen) {
try {
BvhParser bvhParser = new BvhParser(user, animationID);
@@ -456,7 +455,6 @@
e.printStackTrace();
}
}
- */
}
public void userRemoved(User user) {
@@ -465,7 +463,7 @@
}
public void doorMotionStarted(Door door, SplinePath path) {
- if(rendererStopped) {
+ if (rendererStopped) {
return;
}
DoorRenderable renderable = getDoorRenderable(door.getDoorID());
@@ -478,7 +476,7 @@
}
public void doorAdded(Door door) {
- if(rendererStopped) {
+ if (rendererStopped) {
return;
}
try {
@@ -499,7 +497,7 @@
}
public void shapeMotionStarted(Shape shape, SplinePath path) {
- if(rendererStopped) {
+ if (rendererStopped) {
return;
}
J3DThingRenderable renderable = (J3DThingRenderable) getThingRenderable(shape.getThing().getThingID());
@@ -531,10 +529,10 @@
}
public void stopRenderer() {
- rendererStopped = true;
+ rendererStopped = true;
physicsBehavior.cleanup();
universe.removeAllLocales();
- if(!offScreen) {
+ if (!offScreen) {
canvas.stopRenderer();
Log.info("Stopped renderer");
}
@@ -598,8 +596,8 @@
}
return (UserRenderable[]) results.toArray(new UserRenderable[0]);
}
- */
-
+ */
+
private void removeUserRenderable(UserRenderable renderable) {
if (renderable == null) {
Log.error("User renderable == null");
@@ -649,11 +647,13 @@
private UserRenderable createUserRenderable(User user) throws IOException, RenderableParseException {
try {
boolean isLocalUser = !offScreen && username != null && user.getUsername().equals(username);
- final J3DUserRenderable renderable = new J3DUserRenderable(user, !offScreen && !isLocalUser);
+ Bvh defaultBvh = new BvhParser(user, 1).parse();
+ final J3DUserRenderable renderable = new J3DUserRenderable(user, !offScreen && !isLocalUser, defaultBvh);
renderable.setID(USER_ID_PREFIX + user.getUsername());
if (isLocalUser) {
- camera.setLocation(new Vector3f(0f, 2f, 0f));
+ float cameraHeight = (float) (renderable.getHeight() - renderable.getHeight() / 5);
+ camera.setLocation(new Vector3f(0f, cameraHeight, 0f));
renderable.setCamera(camera);
motionHandler = new MotionInputHandler(this, renderable, userInputListener);
@@ -667,13 +667,6 @@
renderable.setNameTag(displayName);
}
- /*
- if (!offScreen) {
- BvhParser bvhParser = new BvhParser(user, 1);
- Bvh bvh = bvhParser.parse();
- renderable.playAnimation(bvh, false);
- }
- */
return renderable;
} catch (BvhParseException e) {
e.printStackTrace();
@@ -719,7 +712,7 @@
Obj[] objs = new Obj[GeometryProvider.LOD_DISTANCES.length + 1];
for (int i = 0; i < objs.length; i++) {
objs[i] = getObj(thing, i);
- if(objs[i] != null && objs[i].getGroups().length == 0) {
+ if (objs[i] != null && objs[i].getGroups().length == 0) {
Log.error("Got obj with no groups for thing " + thing.getThingID() + ": " + thing.getName());
objs[i] = null;
}
@@ -769,7 +762,7 @@
lightD1.setInfluencingBounds(DEFAULT_SPACE_BOUNDS);
sceneRoot.addChild(lightD1);
}
- */
+ */
public Canvas getCanvas() {
return canvas;
}
@@ -829,7 +822,7 @@
public double getLandHeight(double x, double z, double pickHeight) {
pickStart.set(x, pickHeight, z);
if (picker.pickRayClosest(pickStart, DOWN_VEC, intersectionPoint) == null) {
- //System.out.println("no land height: 0!");
+ //System.out.println("no land height: 0!");
return 0;
}
//System.out.println("intersected with land: "+intersectionPoint.y);
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DSplinePath.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DSplinePath.java 2007-09-17 22:37:42 UTC (rev 403)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DSplinePath.java 2007-09-17 22:38:01 UTC (rev 404)
@@ -56,7 +56,7 @@
* @param forwardSpeed between -1 and 1
* @param turn between -1 and 1
*/
- public static SplinePath getSplinePath(Transform3D startPosition, float forwardSpeed, float turn, float strafeSpeed) {
+ public static SplinePath getSplinePath(Transform3D startPosition, float forwardSpeed, float turn, float strafeSpeed, float userHeight) {
Vector3f[] positions = null;
Vector3f[] headings = null;
long duration = 0;
@@ -142,7 +142,7 @@
float knotValue = i == positions.length - 1 ? 1 : i * (1f / positions.length);
keyFrames[i] = new J3DSplineKeyFrame(knotValue, false, new Point3f(positions[i]), headings[i].x, headings[i].y, headings[i].z, scale, -1f, 0f, 0f);
}
- return new J3DSplinePath(keyFrames, duration, looping, true, 0.02);
+ return new J3DSplinePath(keyFrames, duration, looping, true, 0);
}
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-09-17 22:37:42 UTC (rev 403)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/J3DUserRenderable.java 2007-09-17 22:38:01 UTC (rev 404)
@@ -18,17 +18,17 @@
import java.io.IOException;
import javax.media.j3d.Billboard;
-import javax.media.j3d.BoundingBox;
+import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Color3f;
-import javax.vecmath.Point3d;
import javax.vecmath.Vector3d;
import javax.vecmath.Vector3f;
import com.ogoglio.client.model.Body;
import com.ogoglio.client.model.User;
+import com.ogoglio.util.ArgumentUtils;
import com.ogoglio.viewer.j3d.body.BodyAnimator;
import com.ogoglio.viewer.j3d.body.Skeleton;
import com.ogoglio.viewer.j3d.body.SkeletonLoader;
@@ -49,6 +49,8 @@
public class J3DUserRenderable extends BranchGroup implements UserRenderable {
+ private static final float MAGIC_SKELETON_SCALE = 2.5f;
+
public static float PERSON_HEIGHT = 2f;
private TransformGroup transformGroup = new TransformGroup();
@@ -57,6 +59,8 @@
private User user = null;
+ private Bvh defaultAnimation = null;
+
private J3DCamera camera = null;
private Skin skin = null;
@@ -65,39 +69,48 @@
private SkinMap skinMap = null;
-// private double skinScale = 0;
+ private float skeletonScale = 1;
- private double skeletonScale = 0;
+ private BodyAnimator animator = null;
- private float skeletonYShift = 0;
+ private BodyAnimatorListener bodyAnimatorListener = new BodyAnimatorListener();
+
+ float userHeight = 2; //meters
- private BodyAnimator animator = null;
-
- public J3DUserRenderable(User user, boolean setVisible) throws IOException, ObjParseException, BvhParseException, SkinMapParseException {
+ public J3DUserRenderable(User user, boolean setVisible, Bvh defaultAnimation) throws IOException, ObjParseException, BvhParseException, SkinMapParseException {
+ ArgumentUtils.assertNotNull(user);
this.user = user;
- BvhParser bvhParser = new BvhParser(user, 1);
- Bvh bvh = bvhParser.parse();
- skeleton = new SkeletonLoader(bvh).generateSkeleton();
- //skeleton.addDebugAttachments();
-
+ ArgumentUtils.assertNotNull(defaultAnimation);
+ this.defaultAnimation = defaultAnimation;
+
if (setVisible) {
ObjParser parser = new ObjParser(user, 0);
parser.setIgnoreMaterialsFiles(true);
Obj obj = parser.parse();
skin = new SkinLoader(obj, user.getBody()).generateSkin();
-
+ userHeight = skin.getHeight();
+
SkinMapParser skinMapParser = new SkinMapParser(user);
skinMap = skinMapParser.parse();
+ }
+ scaleBVH(defaultAnimation);
+
+ skeleton = new SkeletonLoader(defaultAnimation).generateSkeleton();
+ //skeleton.addDebugAttachments();
+ if(setVisible){
skin.setSkeleton(skeleton, skinMap);
}
-
+
setCapability(BranchGroup.ALLOW_DETACH);
+ setCapability(BranchGroup.ALLOW_BOUNDS_READ);
setCapabilities(transformGroup);
addChild(transformGroup);
Transform3D rotationTransform = new Transform3D();
rotationTransform.rotY(Math.PI);
+ float hairHeight = defaultAnimation.getJointHeight("lFoot");
+ rotationTransform.setTranslation(new Vector3d(0, -1 * hairHeight, 0));
bodyGroup.setTransform(rotationTransform);
if (setVisible) {
bodyGroup.addChild(skin);
@@ -106,8 +119,17 @@
transformGroup.addChild(bodyGroup);
setPosition(user.getPosition());
+ playAnimation(defaultAnimation, false);
}
+ private void scaleBVH(Bvh bvh){
+ float bvhHeight = bvh.getHeight();
+ if(bvhHeight != userHeight){
+ skeletonScale = userHeight / bvhHeight / MAGIC_SKELETON_SCALE; //TODO figure out why we need this magic scale number
+ bvh.scale(skeletonScale);
+ }
+ }
+
public void setNameTag(String nameTag) {
TransformGroup nameGroup = new TransformGroup();
nameGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
@@ -129,6 +151,7 @@
}
private void setCapabilities(TransformGroup group) {
+ group.setCapability(TransformGroup.ALLOW_BOUNDS_READ);
group.setCapability(TransformGroup.ALLOW_PICKABLE_READ);
group.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
group.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
@@ -235,24 +258,13 @@
return skeletonScale;
}
- public float getSkeletonYShift() {
- return skeletonYShift;
- }
-
public User getUser() {
return user;
}
-
+
public double getHeight() {
- if (skin == null) {
- return 2;
- }
- BoundingBox bounds = (BoundingBox) skin.getBounds();
- Point3d upper = new Point3d();
- bounds.getUpper(upper);
- Point3d lower = new Point3d();
- bounds.getLower(lower);
- return upper.y - lower.y;
+ BoundingSphere bounds = (BoundingSphere) getBounds();
+ return Math.abs(bounds.getRadius() * 2);
}
public void cleanup() {
@@ -272,14 +284,26 @@
animator.cleanup();
animator = null;
}
+ playAnimation(defaultAnimation, false);
}
+ private class BodyAnimatorListener implements BodyAnimator.Listener {
+ public void bodyAnimationCompleted(BodyAnimator animator) {
+ if(animator.getBvh() == defaultAnimation){
+ return;
+ }
+ playAnimation(defaultAnimation, false);
+ }
+ }
+
public synchronized void playAnimation(Bvh bvh, boolean loop) {
if (animator != null) {
animator.cleanup();
}
+
if (skeleton != null && bvh != null && skin != null) {
- animator = new BodyAnimator(skeleton, bvh, skin);
+ scaleBVH(bvh);
+ animator = new BodyAnimator(skeleton, bvh, skin, bodyAnimatorListener);
animator.animate(loop);
}
}
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-09-17 22:37:42 UTC (rev 403)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/MotionInputHandler.java 2007-09-17 22:38:01 UTC (rev 404)
@@ -64,7 +64,7 @@
private UserInputListener userInputListener = null;
- private UserRenderable userGroup = null;
+ private UserRenderable userRenderable = null;
public MotionInputHandler(Renderer renderer, UserRenderable userGroup, UserInputListener inputListener) {
ArgumentUtils.assertNotNull(renderer);
@@ -72,7 +72,7 @@
ArgumentUtils.assertNotNull(inputListener);
this.userInputListener = inputListener;
ArgumentUtils.assertNotNull(userGroup);
- this.userGroup = userGroup;
+ this.userRenderable = userGroup;
}
private synchronized void reevaluate() {
@@ -91,14 +91,14 @@
dirty = false;
Transform3D position = new Transform3D();
- userGroup.getPosition(position);
+ userRenderable.getPosition(position);
SplinePath path = null;
float turn = (turnLeft ? -1 : 0) + (turnRight ? 1 : 0);
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);
+ path = J3DSplinePath.getSplinePath(position, forwardSpeed, turn, strafeSpeed, (float)userRenderable.getHeight());
userInputListener.viewpointMotionChanged(path);
return;
} else {
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/BodyAnimator.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/BodyAnimator.java 2007-09-17 22:37:42 UTC (rev 403)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/BodyAnimator.java 2007-09-17 22:38:01 UTC (rev 404)
@@ -42,17 +42,28 @@
private boolean loop = false;
private boolean cleaned = false;
-
- public BodyAnimator(Skeleton skeleton, Bvh bvh, Skin skin) {
+
+ private Listener listener = null;
+
+ public BodyAnimator(Skeleton skeleton, Bvh bvh, Skin skin, Listener listener) {
this.skeleton = skeleton;
this.bvh = bvh;
this.skin = skin;
+ this.listener = listener;
}
+ public static interface Listener {
+ public void bodyAnimationCompleted(BodyAnimator animator);
+ }
+
+ public Bvh getBvh(){
+ return bvh;
+ }
+
private void pose(int index) {
Joint joint = bvh.getRootJoint();
pose(joint, bvh.getFrame(index));
- if(cleaned) {
+ if (cleaned) {
return;
}
skin.pose();
@@ -60,7 +71,7 @@
private void pose(Bvh.Joint joint, Bvh.Frame frame) {
workingTransform.setIdentity();
- if(cleaned) {
+ if (cleaned) {
return;
}
Bone bone = skeleton.getRootBone().getBone(joint.getName());
@@ -80,6 +91,7 @@
frameIndex = 0;
} else {
cleanup();
+ listener.bodyAnimationCompleted(this);
return;
}
}
@@ -92,7 +104,7 @@
}
public synchronized void animate(boolean loop) {
- if(cleaned) {
+ if (cleaned) {
throw new IllegalStateException("Can only use a BodyAnimator once (for now)");
}
task.cancel();
@@ -104,11 +116,11 @@
private class AnimationTask extends TimerTask {
public void run() {
- if(cleaned) {
+ if (cleaned) {
cancel();
}
step();
- if(cleaned) {
+ if (cleaned) {
cancel();
}
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skeleton.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skeleton.java 2007-09-17 22:37:42 UTC (rev 403)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skeleton.java 2007-09-17 22:38:01 UTC (rev 404)
@@ -98,7 +98,7 @@
}
public String toString() {
- return name;
+ return name + ":" + offset;
}
public Bone getParentBone() {
@@ -173,7 +173,7 @@
for (int i = 0; i < indent; i++) {
buffer.append("\t");
}
- Log.info(buffer.toString()+bone.getName());
+ Log.info(buffer.toString() + bone);
for (int i = 0; i < bone.getChildCount(); i++) {
print(bone.getChildBone(i), indent + 1);
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skin.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skin.java 2007-09-17 22:37:42 UTC (rev 403)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/body/Skin.java 2007-09-17 22:38:01 UTC (rev 404)
@@ -19,6 +19,7 @@
import java.util.Vector;
import javax.media.j3d.Appearance;
+import javax.media.j3d.BoundingBox;
import javax.media.j3d.ColoringAttributes;
import javax.media.j3d.Geometry;
import javax.media.j3d.GeometryArray;
@@ -31,6 +32,7 @@
import javax.media.j3d.Texture;
import javax.media.j3d.TextureAttributes;
import javax.media.j3d.Transform3D;
+import javax.vecmath.Point3d;
import javax.vecmath.Point3f;
import javax.vecmath.Vector3d;
@@ -173,7 +175,6 @@
if (groups[i] != null) {
ranges[i] = groups[i].getRanges();
} else {
- Log.warn("No ranges for " + bones[i].getName());
ranges[i] = null;
}
lastTransforms[i] = new Transform3D();
@@ -266,4 +267,13 @@
}
}
+ public float getHeight() {
+ BoundingBox bounds = (BoundingBox)getBounds();
+ Point3d upper = new Point3d();
+ bounds.getUpper(upper);
+ Point3d lower = new Point3d();
+ bounds.getLower(lower);
+ return (float)(upper.y - lower.y);
+ }
+
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/bvh/Bvh.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/bvh/Bvh.java 2007-09-17 22:37:42 UTC (rev 403)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/viewer/j3d/bvh/Bvh.java 2007-09-17 22:38:01 UTC (rev 404)
@@ -107,6 +107,17 @@
//TODO stop ignoring scale
}
+ public void scaleFrameData(float amountToScale, Frame frame) {
+ if (startIndex == -1) {
+ return;
+ }
+ if (channelIndices[0] != -1 && channelIndices[1] != -1 && channelIndices[2] != -1) {
+ frame.data[startIndex + channelIndices[0]] = frame.data[startIndex + channelIndices[0]] * amountToScale;
+ frame.data[startIndex + channelIndices[1]] = frame.data[startIndex + channelIndices[1]] * amountToScale;
+ frame.data[startIndex + channelIndices[2]] = frame.data[startIndex + channelIndices[2]] * amountToScale;
+ }
+ }
+
public String getName() {
return name;
}
@@ -169,19 +180,84 @@
public Joint getRootJoint() {
return rootJoint;
}
-
+
+ public Joint getJointByName(String jointName) {
+ Vector joints = new Vector();
+ getJoints(getRootJoint(), joints);
+ for (int i = 0; i < joints.size(); i++) {
+ if (jointName.equals(((Joint) joints.get(i)).getName())) {
+ return (Joint) joints.get(i);
+ }
+ }
+ return null;
+ }
+
+ private void getJoints(Joint joint, Vector results) {
+ results.add(joint);
+ for (int i = 0; i < joint.getChildCount(); i++) {
+ getJoints(joint.getChild(i), results);
+ }
+ }
+
public void printJoint(Joint joint) {
printJoint(joint, 0);
}
-
+
private void printJoint(Joint joint, int offset) {
- StringBuffer buff=new StringBuffer();
+ StringBuffer buff = new StringBuffer();
for (int i = 0; i < offset; i++) {
buff.append("\t");
}
- Log.info(buff.toString()+joint.getName() + ": " + joint.getOffset());
+ Log.info(buff.toString() + joint.getName() + ": " + joint.getOffset());
for (int i = 0; i < joint.getChildCount(); i++) {
printJoint(joint.getChild(i), offset + 1);
}
}
+
+ public float getHeight() {
+ float minY = Float.MAX_VALUE;
+ float maxY = Float.MIN_VALUE;
+ Vector joints = new Vector();
+ getJoints(getRootJoint(), joints);
+ for (int i = 0; i < joints.size(); i++) {
+ Joint joint = (Joint) joints.get(i);
+ if (joint.getOffset().y < minY) {
+ minY = joint.getOffset().y;
+ }
+ if (joint.getOffset().y > maxY) {
+ maxY = joint.getOffset().y;
+ }
+ }
+ if (minY == Float.MAX_VALUE || maxY == Float.MIN_VALUE) {
+ return 0;
+ }
+ return maxY - minY;
+ }
+
+ public void scale(float amountToScale) {
+ Vector joints = new Vector();
+ getJoints(getRootJoint(), joints);
+ for (int i = 0; i < joints.size(); i++) {
+ Joint joint = (Joint) joints.get(i);
+ Vector3f offset = joint.getOffset();
+ joint.setOffset(offset.x * amountToScale, offset.y * amountToScale, offset.z * amountToScale);
+ for (int j = 0; j < getFrameCount(); j++) {
+ joint.scaleFrameData(amountToScale, getFrame(j));
+ }
+ }
+ }
+
+ public float getJointHeight(String jointName) {
+ Joint joint = getJointByName(jointName);
+ if(joint == null){
+ return 0;
+ }
+ float result = joint.getOffset().y;
+ Joint parent = joint.getParent();
+ while(parent != null){
+ result += parent.getOffset().y;
+ parent = parent.getParent();
+ }
+ return result;
+ }
}
Modified: maven/trunk/ogoglio-common/src/main/resources/avatar/avatar-point.bvh
===================================================================
--- maven/trunk/ogoglio-common/src/main/resources/avatar/avatar-point.bvh 2007-09-17 22:37:42 UTC (rev 403)
+++ maven/trunk/ogoglio-common/src/main/resources/avatar/avatar-point.bvh 2007-09-17 22:38:01 UTC (rev 404)
@@ -1,168 +1,184 @@
-HIERARCHY
-ROOT Neck
-{
- OFFSET 0.000000 1.413067 0.000000
- CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation
- JOINT Head
- {
- OFFSET 0.000000 0.288233 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET -0.000840 0.240359 0.000000
- }
- }
- JOINT LeftShoulder
- {
- OFFSET 0.000000 0.000000 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT LeftArm
- {
- OFFSET 0.272146 0.057570 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT LeftForearm
- {
- OFFSET 0.272146 -0.073270 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET 0.382052 -0.120372 0.000000
- }
- }
- }
- }
- JOINT Trunk
- {
- OFFSET 0.000000 0.000000 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT LeftHip
- {
- OFFSET 0.015701 -0.481489 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT LeftThigh
- {
- OFFSET 0.115208 -0.062803 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT LeftShin
- {
- OFFSET 0.007551 -0.350650 0.036635
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT LeftFoot
- {
- OFFSET -0.000000 -0.434387 -0.026168
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET 0.000000 -0.020934 0.225044
- }
- }
- }
- }
- }
- JOINT RightHip
- {
- OFFSET 0.015701 -0.481489 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT RightThigh
- {
- OFFSET -0.130840 -0.078504 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT RightShin
- {
- OFFSET -0.015701 -0.355884 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT RightFoot
- {
- OFFSET -0.015701 -0.392518 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET 0.009601 -0.046108 0.244754
- }
- }
- }
- }
- }
- }
- JOINT RightShoulder
- {
- OFFSET 0.000000 0.000000 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT RightArm
- {
- OFFSET -0.240745 0.062803 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- JOINT RightForearm
- {
- OFFSET -0.277380 -0.073270 0.000000
- CHANNELS 3 Zrotation Xrotation Yrotation
- End Site
- {
- OFFSET -0.387286 -0.130840 0.000000
- }
- }
- }
- }
-}
-MOTION
-Frames: 59
-Frame Time: 0.040000
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 68.751213 -3.608197 9.332540 0.453265 0.000314 0.079923
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 68.625801 -4.314910 11.116751 0.450353 0.000380 0.095028
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 68.092926 -6.539802 16.567228 0.438296 0.000549 0.140530
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 66.647392 -10.548810 25.556679 0.408225 0.000779 0.212617
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 63.339909 -16.868151 37.157478 0.351043 0.000920 0.297681
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 56.742085 -26.435978 49.301502 0.268750 0.000888 0.373657
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 45.511955 -40.189003 59.314606 0.179440 0.000663 0.423851
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 30.843445 -56.701481 65.384270 0.105249 0.000413 0.448068
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 18.505310 -70.131149 67.844505 0.058994 0.000241 0.456470
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 13.933969 -75.057091 68.379097 0.043734 0.000168 0.458187
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 15.592641 -73.271828 68.205055 0.049190 0.000191 0.457633
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 20.462332 -68.015968 67.560570 0.065777 0.000262 0.455548
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 27.960419 -59.863308 66.116219 0.093563 0.000364 0.450658
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 36.834835 -50.061420 63.460114 0.132021 0.000510 0.440926
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 45.514332 -40.186401 59.312763 0.179461 0.000666 0.423845
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 52.840313 -31.417212 53.697868 0.232557 0.000818 0.397201
-0.000000 1.413067 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 0.000001 -0.000002 0.000000 -69.566444 3.475644 9.382329 -0.000008 -0.000000 -0.000007 0.000000 0.000000 -0.000001 -0.000009 0.000002 0.000001 0.000009 -10.000010 0.000007 0.000005 0.000001 -0.000003 0.000002 9.999999 -0.000002 -0.000002 0.000000 -0.000000 0.000009 10.000000 0.000001 0.000002 -0.000000 0.000004 -0.000006 -9.999991 -0.000000 -0.000003 0.000000 0.000000 58.406048 -24.202238 46.952320 0.286579 0.0...
[truncated message content] |