I have prepared a test case with these parameters.
Floor = static = RigidBodyControl(mass 0f)
Sphere left side = with control that extends RigidBodyControl with mass = 1 and is Kinematic with a PhysicsCollisionListener
Sphere right side = with control that extends BetterCharacterControl with mass = 1 with a PhysicsCollisionListener
Sphere left side is elevated
off floor and never makes contact.
Sphere right side drops to floor.
Problem: Sphere left side with RigidBodyControl is reporting collisions from sphere right side with BetterCharacterControl.
Sphere right side with BetterCharacterControl reports its own collisions.
package mygame;
import com.jme3.app.SimpleApplication;
import com.jme3.bounding.BoundingBox;
import com.jme3.bullet.BulletAppState;
import com.jme3.bullet.collision.PhysicsCollisionEvent;
import com.jme3.bullet.collision.PhysicsCollisionListener;
import com.jme3.bullet.collision.shapes.CollisionShape;
import com.jme3.bullet.collision.shapes.SphereCollisionShape;
import com.jme3.bullet.control.BetterCharacterControl;
import com.jme3.bullet.control.RigidBodyControl;
import com.jme3.light.DirectionalLight;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import com.jme3.scene.shape.Box;
import com.jme3.scene.shape.Sphere;
public class RigidBodyTest extends SimpleApplication {
public static void main(String[] args) {
RigidBodyTest app = new RigidBodyTest();
app.start();
}
@Override
public void simpleInitApp() {
//Create the physics space.
BulletAppState bulletAppState = new BulletAppState();
bulletAppState.setDebugEnabled(true);
getStateManager().attach(bulletAppState);
this.getFlyByCamera().setMoveSpeed(5f);
this.getCamera().setLocation(new Vector3f(0, 1, 10));
//floor
Box b = new Box(5, 0.1f, 2);
Geometry floor = new Geometry("floor", b);
Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat.setColor("Color", ColorRGBA.Gray);
floor.setMaterial(mat);
floor.addControl(new RigidBodyControl(0));
bulletAppState.getPhysicsSpace().add(floor);
rootNode.attachChild(floor);
//right node w BetterCharacterControl added to node
Node sphereNodeRight = new Node("sphereNodeRight");
sphereNodeRight.setLocalTranslation(new Vector3f(3, 3f, 0));
Sphere sphereR = new Sphere(32, 32, .5f);
Geometry sphereGeoR = new Geometry("sphereRight", sphereR);
BoundingBox bounds = (BoundingBox) sphereGeoR.getWorldBound();
sphereGeoR.setLocalTranslation(0, bounds.getYExtent() - bounds.getCenter().y, 0);
sphereNodeRight.attachChild(sphereGeoR);
Material srm = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
srm.setColor("Color", ColorRGBA.Green);
sphereGeoR.setMaterial(srm);
sphereNodeRight.addControl(new PCControl(.5f, 1f, 1));
bulletAppState.getPhysicsSpace().add(sphereNodeRight);
bulletAppState.getPhysicsSpace().addCollisionListener(sphereNodeRight.getControl(PCControl.class));
rootNode.attachChild(sphereNodeRight);
//left node w RigidBodyControl added to Geometry
Node sphereNodeLeft = new Node("sphereNodeLeft");
sphereNodeLeft.setLocalTranslation(new Vector3f(-5, 1f, 0));
Sphere sphereL = new Sphere(32, 32, .5f);
Geometry sphereGeoL = new Geometry("sphereLeft", sphereL);
sphereNodeLeft.attachChild(sphereGeoL);
Material slm = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
slm.setColor("Color", ColorRGBA.Red);
sphereGeoL.setMaterial(slm);
SphereCollisionShape sphereShapeL = new SphereCollisionShape(.7f);
sphereGeoL.addControl(new NPCControl(sphereShapeL, 1f));
bulletAppState.getPhysicsSpace().add(sphereGeoL);
bulletAppState.getPhysicsSpace().addCollisionListener(sphereGeoL.getControl(NPCControl.class));
rootNode.attachChild(sphereNodeLeft);
/**
* A white, directional light source
*/
DirectionalLight sun = new DirectionalLight();
sun.setDirection((new Vector3f(-0.5f, -0.5f, -0.5f)).normalizeLocal());
sun.setColor(ColorRGBA.White);
rootNode.addLight(sun);
}
@Override
public void simpleUpdate(float tpf) {
//TODO: add update code
}
@Override
public void simpleRender(RenderManager rm) {
//TODO: add render code
}
public class NPCControl extends RigidBodyControl implements
PhysicsCollisionListener {
public NPCControl(CollisionShape shape, float mass) {
super(shape, mass);
super.setKinematic(true);
}
@Override
public void update(float tpf) {
super.update(tpf);
}
int count = 0;
@Override
public void collision(PhysicsCollisionEvent event) {
if (event.getNodeA().getName().equals("floor")) {
final Spatial nodeB = event.getNodeB();
System.out.println((count++) + ":SphereLeftSide:" + nodeB.getName()
+ ":nodeB: " + nodeB.getLocalTranslation());
} else if (event.getNodeB().getName().equals("floor")) {
final Spatial nodeA = event.getNodeA();
System.out.println((count++) + ":SphereLeftSide:" + nodeA.getName()
+ ":nodeA: " + nodeA.getLocalTranslation());
}
}
}
public class PCControl extends BetterCharacterControl implements
PhysicsCollisionListener {
public PCControl(float radius, float height, float mass) {
super(radius, height, mass);
}
@Override
public void update(float tpf) {
super.update(tpf);
}
//need to overide because we extended BetterCharacterControl
@Override
public PCControl cloneForSpatial(Spatial spatial) {
try {
PCControl control = (PCControl) super.clone();
control.setSpatial(spatial);
return control;
} catch (CloneNotSupportedException ex) {
throw new RuntimeException("Clone Not Supported", ex);
}
}
//need to override because we extended BetterCharacterControl
@Override
public PCControl jmeClone() {
try {
return (PCControl) super.clone();
} catch (CloneNotSupportedException ex) {
throw new RuntimeException("Clone Not Supported", ex);
}
}
int count = 0;
@Override
public void collision(PhysicsCollisionEvent event) {
if (event.getNodeA().getName().equals("floor")) {
final Spatial nodeB = event.getNodeB();
System.out.println((count++) + ":SphereRightSide:" + nodeB.getName()
+ ":nodeB: " + nodeB.getLocalTranslation());
} else if (event.getNodeB().getName().equals("floor")) {
final Spatial nodeA = event.getNodeA();
System.out.println((count++) + ":SphereRightSide:" + nodeA.getName()
+ ":nodeA: " + nodeA.getLocalTranslation());
}
}
}
}
Edit: Forgot to show some output with duplicate entries removed.
0::SphereRightSide:sphereNodeRight:nodeA: (3.0, 0.17962483, 0.0)
0::SphereLeftSide:sphereNodeRight:nodeA: (3.0, 0.17962483, 0.0)
1::SphereRightSide:sphereNodeRight:nodeA: (3.0, 0.17969988, 0.0)
1::SphereLeftSide:sphereNodeRight:nodeA: (3.0, 0.17969988, 0.0)
3::SphereRightSide:sphereNodeRight:nodeA: (3.0, 0.17975992, 0.0)
3::SphereLeftSide:sphereNodeRight:nodeA: (3.0, 0.17975992, 0.0)
5::SphereRightSide:sphereNodeRight:nodeA: (3.0, 0.17980795, -4.109906E-11)
5::SphereLeftSide:sphereNodeRight:nodeA: (3.0, 0.17980795, -4.109906E-11)
7::SphereRightSide:sphereNodeRight:nodeA: (3.0, 0.17984636, -8.219812E-11)
7::SphereLeftSide:sphereNodeRight:nodeA: (3.0, 0.17984636, -8.219812E-11)
9::SphereRightSide:sphereNodeRight:nodeA: (3.0, 0.1798771, -5.898844E-11)
9::SphereLeftSide:sphereNodeRight:nodeA: (3.0, 0.1798771, -5.898844E-11)
11::SphereRightSide:sphereNodeRight:nodeA: (3.0, 0.17990169, 4.440677E-12)
11::SphereLeftSide:sphereNodeRight:nodeA: (3.0, 0.17990169, 4.440677E-12)
13::SphereRightSide:sphereNodeRight:nodeA: (3.0, 0.1799213, 6.786979E-11)
13::SphereLeftSide:sphereNodeRight:nodeA: (3.0, 0.1799213, 6.786979E-11)
15::SphereRightSide:sphereNodeRight:nodeA: (3.0, 0.17993698, 1.3129892E-10)
15::SphereLeftSide:sphereNodeRight:nodeA: (3.0, 0.17993698, 1.3129892E-10)
17::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17964068, -1.5805045E-7)
17::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17964068, -1.5805045E-7)
19::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17971256, -3.1623222E-7)
19::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17971256, -3.1623222E-7)
21::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17977007, -4.7437965E-7)
21::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17977007, -4.7437965E-7)
23::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17981607, -6.324842E-7)
23::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17981607, -6.324842E-7)
25::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17985287, -7.9058873E-7)
25::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17985287, -7.9058873E-7)
27::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17851964, -1.9065502E-6)
27::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17851964, -1.9065502E-6)
29::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17881572, -3.0225117E-6)
29::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17881572, -3.0225117E-6)
31::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17905259, -4.1384733E-6)
31::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17905259, -4.1384733E-6)
33::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17924209, -5.2544347E-6)
33::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17924209, -5.2544347E-6)
35::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.1793937, -6.370396E-6)
35::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.1793937, -6.370396E-6)
37::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17951494, -7.4862446E-6)
37::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17951494, -7.4862446E-6)
39::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17961197, -8.602093E-6)
39::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17961197, -8.602093E-6)
41::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17968954, -9.717687E-6)
41::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17968954, -9.717687E-6)
43::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17975163, -1.0833187E-5)
43::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17975163, -1.0833187E-5)
45::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17980132, -1.1948607E-5)
45::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17980132, -1.1948607E-5)
47::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17984106, -1.3063977E-5)
47::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17984106, -1.3063977E-5)
49::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17987286, -1.4179285E-5)
49::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17987286, -1.4179285E-5)
51::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17989829, -1.5294594E-5)
51::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17989829, -1.5294594E-5)
53::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17991865, -1.6410291E-5)
53::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17991865, -1.6410291E-5)
55::SphereRightSide:sphereNodeRight:nodeA: (2.9999986, 0.17964065, -1.961529E-5)
55::SphereLeftSide:sphereNodeRight:nodeA: (2.9999986, 0.17964065, -1.961529E-5)
57::SphereRightSide:sphereNodeRight:nodeA: (2.9999986, 0.17971253, -1.9935744E-5)
57::SphereLeftSide:sphereNodeRight:nodeA: (2.9999986, 0.17971253, -1.9935744E-5)
59::SphereRightSide:sphereNodeRight:nodeA: (2.9999983, 0.17929417, -2.0116902E-5)
59::SphereLeftSide:sphereNodeRight:nodeA: (2.9999983, 0.17929417, -2.0116902E-5)
61::SphereRightSide:sphereNodeRight:nodeA: (2.9999983, 0.17943534, -2.0297824E-5)
61::SphereLeftSide:sphereNodeRight:nodeA: (2.9999983, 0.17943534, -2.0297824E-5)
63::SphereRightSide:sphereNodeRight:nodeA: (2.9999983, 0.17954826, -2.0478537E-5)
63::SphereLeftSide:sphereNodeRight:nodeA: (2.9999983, 0.17954826, -2.0478537E-5)
65::SphereRightSide:sphereNodeRight:nodeA: (2.9999983, 0.17963862, -2.0659209E-5)
65::SphereLeftSide:sphereNodeRight:nodeA: (2.9999983, 0.17963862, -2.0659209E-5)
67::SphereRightSide:sphereNodeRight:nodeA: (2.9999983, 0.17971091, -2.0839825E-5)
67::SphereLeftSide:sphereNodeRight:nodeA: (2.9999983, 0.17971091, -2.0839825E-5)
69::SphereRightSide:sphereNodeRight:nodeA: (2.9999983, 0.17976873, -2.1020407E-5)
69::SphereLeftSide:sphereNodeRight:nodeA: (2.9999983, 0.17976873, -2.1020407E-5)
71::SphereRightSide:sphereNodeRight:nodeA: (2.9999983, 0.179815, -2.1200945E-5)
71::SphereLeftSide:sphereNodeRight:nodeA: (2.9999983, 0.179815, -2.1200945E-5)
73::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17914659, -2.1308831E-5)
73::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17914659, -2.1308831E-5)
75::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17931728, -2.1416718E-5)
75::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17931728, -2.1416718E-5)
77::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17945383, -2.1524647E-5)
77::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17945383, -2.1524647E-5)
79::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.179563, -2.1631786E-5)
79::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.179563, -2.1631786E-5)
81::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17851876, -2.3140561E-5)
81::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17851876, -2.3140561E-5)
83::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17881502, -2.4649336E-5)
83::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17881502, -2.4649336E-5)
85::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17905204, -2.6158112E-5)
85::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17905204, -2.6158112E-5)
87::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17924164, -2.7666887E-5)
87::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17924164, -2.7666887E-5)
89::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17939328, -2.9175662E-5)
89::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17939328, -2.9175662E-5)
91::SphereRightSide:sphereNodeRight:nodeA: (2.999999, 0.17951463, -3.0684438E-5)
91::SphereLeftSide:sphereNodeRight:nodeA: (2.999999, 0.17951463, -3.0684438E-5)
93::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17910133, -3.3200096E-5)
93::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17910133, -3.3200096E-5)
95::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17928107, -3.3451663E-5)
95::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17928107, -3.3451663E-5)
97::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.1794248, -3.370323E-5)
97::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.1794248, -3.370323E-5)
99::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17953981, -3.3954726E-5)
99::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17953981, -3.3954726E-5)
101::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17963187, -3.4206223E-5)
101::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17963187, -3.4206223E-5)
103::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17970552, -3.445772E-5)
103::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17970552, -3.445772E-5)
105::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17976443, -3.4709217E-5)
105::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17976443, -3.4709217E-5)
107::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17981155, -3.4960714E-5)
107::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17981155, -3.4960714E-5)
109::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17984925, -3.521216E-5)
109::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17984925, -3.521216E-5)
111::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17987925, -3.5463607E-5)
111::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17987925, -3.5463607E-5)
113::SphereRightSide:sphereNodeRight:nodeA: (2.9999993, 0.17990342, -3.571497E-5)
113::SphereLeftSide:sphereNodeRight:nodeA: (2.9999993, 0.17990342, -3.571497E-5)
115::SphereRightSide:sphereNodeRight:nodeA: (2.9999995, 0.17970672, -3.438346E-5)
115::SphereLeftSide:sphereNodeRight:nodeA: (2.9999995, 0.17970672, -3.438346E-5)
117::SphereRightSide:sphereNodeRight:nodeA: (2.9999995, 0.1797654, -3.3051954E-5)
117::SphereLeftSide:sphereNodeRight:nodeA: (2.9999995, 0.1797654, -3.3051954E-5)
119::SphereRightSide:sphereNodeRight:nodeA: (3.0000012, 0.17914659, -3.3556506E-5)
119::SphereLeftSide:sphereNodeRight:nodeA: (3.0000012, 0.17914659, -3.3556506E-5)
121::SphereRightSide:sphereNodeRight:nodeA: (3.0000012, 0.17931728, -3.4061057E-5)
121::SphereLeftSide:sphereNodeRight:nodeA: (3.0000012, 0.17931728, -3.4061057E-5)
123::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.1791011, -3.3925506E-5)
123::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.1791011, -3.3925506E-5)
125::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17928089, -3.3789955E-5)
125::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17928089, -3.3789955E-5)
127::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.1794247, -3.3654404E-5)
127::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.1794247, -3.3654404E-5)
129::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17953977, -3.3518718E-5)
129::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17953977, -3.3518718E-5)
131::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17963183, -3.3383032E-5)
131::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17963183, -3.3383032E-5)
133::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17970547, -3.3247346E-5)
133::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17970547, -3.3247346E-5)
135::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17976438, -3.3111573E-5)
135::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17976438, -3.3111573E-5)
137::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.1798115, -3.2975717E-5)
137::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.1798115, -3.2975717E-5)
139::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17851944, -3.384477E-5)
139::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17851944, -3.384477E-5)
141::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17881557, -3.4713827E-5)
141::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17881557, -3.4713827E-5)
143::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17905247, -3.558288E-5)
143::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17905247, -3.558288E-5)
145::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17924199, -3.6451936E-5)
145::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17924199, -3.6451936E-5)
147::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17939349, -3.7319856E-5)
147::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17939349, -3.7319856E-5)
149::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17914642, -3.8687653E-5)
149::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17914642, -3.8687653E-5)
151::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17931716, -4.005545E-5)
151::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17931716, -4.005545E-5)
153::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17945375, -4.1423245E-5)
153::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17945375, -4.1423245E-5)
155::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17956302, -4.2791005E-5)
155::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17956302, -4.2791005E-5)
157::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17965043, -4.4158765E-5)
157::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17965043, -4.4158765E-5)
159::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17972036, -4.5526525E-5)
159::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17972036, -4.5526525E-5)
161::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.1792943, -4.6338824E-5)
161::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.1792943, -4.6338824E-5)
163::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17943539, -4.715017E-5)
163::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17943539, -4.715017E-5)
165::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17954832, -4.7961465E-5)
165::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17954832, -4.7961465E-5)
167::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17963867, -4.877276E-5)
167::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17963867, -4.877276E-5)
169::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17971094, -4.9584054E-5)
169::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17971094, -4.9584054E-5)
171::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17976877, -5.039535E-5)
171::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17976877, -5.039535E-5)
173::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17981501, -5.1206516E-5)
173::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17981501, -5.1206516E-5)
175::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17985202, -5.2017684E-5)
175::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17985202, -5.2017684E-5)
177::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17988163, -5.2828716E-5)
177::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17988163, -5.2828716E-5)
179::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17990533, -5.363975E-5)
179::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17990533, -5.363975E-5)
181::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17992425, -5.4450993E-5)
181::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17992425, -5.4450993E-5)
183::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17964065, -5.7569257E-5)
183::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17964065, -5.7569257E-5)
185::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17971253, -5.7881083E-5)
185::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17971253, -5.7881083E-5)
187::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17976984, -5.8191672E-5)
187::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17976984, -5.8191672E-5)
189::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17981589, -5.850226E-5)
189::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17981589, -5.850226E-5)
191::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17985272, -5.881274E-5)
191::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17985272, -5.881274E-5)
193::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17851953, -6.035372E-5)
193::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17851953, -6.035372E-5)
195::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17881563, -6.1894694E-5)
195::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17881563, -6.1894694E-5)
197::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17905253, -6.343567E-5)
197::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17905253, -6.343567E-5)
199::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17924204, -6.4976644E-5)
199::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17924204, -6.4976644E-5)
201::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17939365, -6.6517416E-5)
201::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17939365, -6.6517416E-5)
203::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17951493, -6.805819E-5)
203::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17951493, -6.805819E-5)
205::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17961195, -6.9598915E-5)
205::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17961195, -6.9598915E-5)
207::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17968947, -7.113894E-5)
207::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17968947, -7.113894E-5)
209::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17975159, -7.267889E-5)
209::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17975159, -7.267889E-5)
211::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17980129, -7.4218806E-5)
211::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17980129, -7.4218806E-5)
213::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17984103, -7.575872E-5)
213::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17984103, -7.575872E-5)
215::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17987283, -7.729863E-5)
215::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17987283, -7.729863E-5)
217::SphereRightSide:sphereNodeRight:nodeA: (3.0000026, 0.17989828, -7.8838544E-5)
217::SphereLeftSide:sphereNodeRight:nodeA: (3.0000026, 0.17989828, -7.8838544E-5)
219::SphereRightSide:sphereNodeRight:nodeA: (3.0000021, 0.17940034, -8.0329046E-5)
219::SphereLeftSide:sphereNodeRight:nodeA: (3.0000021, 0.17940034, -8.0329046E-5)
221::SphereRightSide:sphereNodeRight:nodeA: (3.0000021, 0.1795197, -8.181466E-5)
221::SphereLeftSide:sphereNodeRight:nodeA: (3.0000021, 0.1795197, -8.181466E-5)
223::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17851855, -8.489733E-5)
223::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17851855, -8.489733E-5)
225::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17881486, -8.52056E-5)
225::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17881486, -8.52056E-5)
227::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17905189, -8.5513864E-5)
227::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17905189, -8.5513864E-5)
229::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17924152, -8.582213E-5)
229::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17924152, -8.582213E-5)
231::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17939323, -8.61304E-5)
231::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17939323, -8.61304E-5)
233::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.1795146, -8.643863E-5)
233::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.1795146, -8.643863E-5)
235::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17961168, -8.674678E-5)
235::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17961168, -8.674678E-5)
237::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17968921, -8.705585E-5)
237::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17968921, -8.705585E-5)
239::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17975129, -8.736543E-5)
239::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17975129, -8.736543E-5)
241::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17980105, -8.767496E-5)
241::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17980105, -8.767496E-5)
243::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17984083, -8.7984496E-5)
243::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17984083, -8.7984496E-5)
245::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17929414, -8.8508976E-5)
245::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17929414, -8.8508976E-5)
247::SphereRightSide:sphereNodeRight:nodeA: (3.0000024, 0.17943533, -8.9033456E-5)
247::SphereLeftSide:sphereNodeRight:nodeA: (3.0000024, 0.17943533, -8.9033456E-5)
249::SphereRightSide:sphereNodeRight:nodeA: (3.0000021, 0.17851838, -9.031301E-5)
249::SphereLeftSide:sphereNodeRight:nodeA: (3.0000021, 0.17851838, -9.031301E-5)
251::SphereRightSide:sphereNodeRight:nodeA: (3.0000021, 0.17881471, -9.159257E-5)
251::SphereLeftSide:sphereNodeRight:nodeA: (3.0000021, 0.17881471, -9.159257E-5)
253::SphereRightSide:sphereNodeRight:nodeA: (3.0000021, 0.17905179, -9.287213E-5)
253::SphereLeftSide:sphereNodeRight:nodeA: (3.0000021, 0.17905179, -9.287213E-5)
255::SphereRightSide:sphereNodeRight:nodeA: (3.0000021, 0.17924145, -9.4151685E-5)
255::SphereLeftSide:sphereNodeRight:nodeA: (3.0000021, 0.17924145, -9.4151685E-5)
257::SphereRightSide:sphereNodeRight:nodeA: (3.0000021, 0.17939316, -9.543124E-5)
257::SphereLeftSide:sphereNodeRight:nodeA: (3.0000021, 0.17939316, -9.543124E-5)
259::SphereRightSide:sphereNodeRight:nodeA: (3.0000021, 0.17951454, -9.67108E-5)
259::SphereLeftSide:sphereNodeRight:nodeA: (3.0000021, 0.17951454, -9.67108E-5)
261::SphereRightSide:sphereNodeRight:nodeA: (3.0000021, 0.17961155, -9.798971E-5)
261::SphereLeftSide:sphereNodeRight:nodeA: (3.0000021, 0.17961155, -9.798971E-5)
263::SphereRightSide:sphereNodeRight:nodeA: (3.0000021, 0.17968924, -9.926862E-5)
263::SphereLeftSide:sphereNodeRight:nodeA: (3.0000021, 0.17968924, -9.926862E-5)
265::SphereRightSide:sphereNodeRight:nodeA: (3.0000021, 0.17975141, -1.0054753E-4)
265::SphereLeftSide:sphereNodeRight:nodeA: (3.0000021, 0.17975141, -1.0054753E-4)
[snip]
1618::SphereRightSide:sphereNodeRight:nodeA: (3.000012, 0.17942889, -1.9447165E-4)
1618::SphereLeftSide:sphereNodeRight:nodeA: (3.000012, 0.17942889, -1.9447165E-4)