I am sorry, I did not make myself clear. The code I post fails 100% of the times on my machine. What I learnt just before writnig the last post is that this bug is sensitive to numeric accuracy, and will manifest itself for different values of q1 and q2 depending on version (maybe even build) of jme3 or bullet.
I tested the bug on 3.3.0-alpha2, here is the output (the program never ends, I just close the window at the end):
/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java -javaagent:/home/user/.local/share/JetBrains/Toolbox/apps/IDEA-C/ch-0/191.7479.19/lib/idea_rt.jar=38189:/home/user/.local/share/JetBrains/Toolbox/apps/IDEA-C/ch-0/191.7479.19/bin -Dfile.encoding=UTF-8 -classpath /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/cldrdata.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/dnsns.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/icedtea-sound.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/jaccess.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/java-atk-wrapper.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/nashorn.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/sunec.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/sunjce_provider.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/zipfs.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/management-agent.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/resources.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/rt.jar:/home/user/Perforce/user_all/utils/javautils2/collisionlib/main/out/production/classes:/home/user/Perforce/user_all/utils/javautils2/collisionlib/main/out/production/resources:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-lwjgl/3.3.0-alpha2/2f8c92e0f76f4d1851d811c944ecb89c408b1b7e/jme3-lwjgl-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-blender/3.3.0-alpha2/bbbb865a4808e9dcc1f8b940c6bed16449cd4018/jme3-blender-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-desktop/3.3.0-alpha2/8c9fcea2c6702ef9d187deae1a0e15271b60df8c/jme3-desktop-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-bullet-native/3.3.0-alpha2/ad86b62f2fede98bd644eefe37a1c628afd69270/jme3-bullet-native-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-bullet/3.3.0-alpha2/6424a539a5447407bcaa53269ff2208cd6b41956/jme3-bullet-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-terrain/3.3.0-alpha2/87d1a36ee894d2cf14e455fe830c8751d521b249/jme3-terrain-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-effects/3.3.0-alpha2/518d7034117255846c0ee1989656b6ec4af548/jme3-effects-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-core/3.3.0-alpha2/31f8f6a9bdc73b0b182204e056e2b4da93674316/jme3-core-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/22.0/3564ef3803de51fb0530a8377ec6100b33b0d073/guava-22.0.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/home/user/.gradle/caches/modules-2/files-2.1/external.com.github.riccardobl/jme3-bullet-vhacd/1.0/96327c3992b6af277b1a80ae8a7b5bee1d441935/jme3-bullet-vhacd-1.0.jar:/home/user/.gradle/caches/modules-2/files-2.1/external.com.github.riccardobl/vhacd-native/1.1.1/7ce06b1a0dc09c69a5739174b96dd2cfb77f3f68/vhacd-native-1.1.1.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.lwjgl.lwjgl/lwjgl/2.9.3/3df168ac74e4a8c96562cdff24ad352e255bf89c/lwjgl-2.9.3.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.ejml/simple/0.27/957fc40035f6a084304d64b28febcbe66c0994c7/simple-0.27.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.ejml/dense64/0.27/ea70271f286016777ac079a5b33941d4e2b56d00/dense64-0.27.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.ejml/denseC64/0.27/2529c9f8ffa12e15a1d7a21ad8d05f4a6cddfc0c/denseC64-0.27.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.ejml/core/0.27/21d79552c6e103a850e82bfe3a5cb7294d1870b2/core-0.27.jar:/home/user/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/1.3.9/40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf/jsr305-1.3.9.jar:/home/user/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_annotations/2.0.18/5f65affce1684999e2f4024983835efc3504012e/error_prone_annotations-2.0.18.jar:/home/user/.gradle/caches/modules-2/files-2.1/com.google.j2objc/j2objc-annotations/1.1/976d8d30bebc251db406f2bdb3eb01962b5685b3/j2objc-annotations-1.1.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.codehaus.mojo/animal-sniffer-annotations/1.14/775b7e22fb10026eed3f86e8dc556dfafe35f2d5/animal-sniffer-annotations-1.14.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.lwjgl.lwjgl/lwjgl-platform/2.9.3/fbc2afb3e288578e9942578decb6291a490549a0/lwjgl-platform-2.9.3-natives-windows.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.lwjgl.lwjgl/lwjgl-platform/2.9.3/b1eafe80093381c56415731e1d64279e6140bcd0/lwjgl-platform-2.9.3-natives-linux.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.lwjgl.lwjgl/lwjgl-platform/2.9.3/6686cf6ddaa20b4290aa6599a09bc0d17369be05/lwjgl-platform-2.9.3-natives-osx.jar:/home/user/.gradle/caches/modules-2/files-2.1/net.java.jinput/jinput/2.0.5/39c7796b469a600f72380316f6b1f11db6c2c7c4/jinput-2.0.5.jar:/home/user/.gradle/caches/modules-2/files-2.1/net.java.jutils/jutils/1.0.0/e12fe1fda814bd348c1579329c86943d2cd3c6a6/jutils-1.0.0.jar:/home/user/.gradle/caches/modules-2/files-2.1/net.java.jinput/jinput-platform/2.0.5/7ff832a6eb9ab6a767f1ade2b548092d0fa64795/jinput-platform-2.0.5-natives-linux.jar:/home/user/.gradle/caches/modules-2/files-2.1/net.java.jinput/jinput-platform/2.0.5/385ee093e01f587f30ee1c8a2ee7d408fd732e16/jinput-platform-2.0.5-natives-windows.jar:/home/user/.gradle/caches/modules-2/files-2.1/net.java.jinput/jinput-platform/2.0.5/53f9c919f34d2ca9de8c51fc4e1e8282029a9232/jinput-platform-2.0.5-natives-osx.jar com.xxx.Bug
Jul 01, 2019 10:08:20 AM com.jme3.system.JmeDesktopSystem initialize
INFO: Running on jMonkeyEngine 3.3-alpha2
* Branch: HEAD
* Git Hash: 3f1f2e8
* Build Date: 2019-05-22
Jul 01, 2019 10:08:21 AM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: LWJGL 2.9.3 context running on thread jME3 Main
* Graphics Adapter: null
* Driver Version: null
* Scaling Factor: 1
Jul 01, 2019 10:08:21 AM com.jme3.renderer.opengl.GLRenderer loadCapabilitiesCommon
INFO: OpenGL Renderer Information
* Vendor: Intel Open Source Technology Center
* Renderer: Mesa DRI Intel(R) UHD Graphics 620 (Kabylake GT2)
* OpenGL Version: 3.0 Mesa 18.2.8
* GLSL Version: 1.30
* Profile: Compatibility
Jul 01, 2019 10:08:21 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.ogre.MeshLoader
Jul 01, 2019 10:08:21 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.ogre.SkeletonLoader
Jul 01, 2019 10:08:21 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.ogre.MaterialLoader
Jul 01, 2019 10:08:21 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.ogre.SceneLoader
Jul 01, 2019 10:08:21 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.fbx.FbxLoader
Jul 01, 2019 10:08:21 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.gltf.GltfLoader
Jul 01, 2019 10:08:21 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.gltf.BinLoader
Jul 01, 2019 10:08:21 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.gltf.GlbLoader
Jul 01, 2019 10:08:21 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.audio.plugins.OGGLoader
Jul 01, 2019 10:08:22 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio Renderer Information
* Device: OpenAL Soft
* Vendor: OpenAL Community
* Renderer: OpenAL Soft
* Version: 1.1 ALSOFT 1.15.1
* Supported channels: 64
* ALC extensions: ALC_ENUMERATE_ALL_EXT ALC_ENUMERATION_EXT ALC_EXT_CAPTURE ALC_EXT_DEDICATED ALC_EXT_disconnect ALC_EXT_EFX ALC_EXT_thread_local_context ALC_SOFT_loopback
* AL extensions: AL_EXT_ALAW AL_EXT_DOUBLE AL_EXT_EXPONENT_DISTANCE AL_EXT_FLOAT32 AL_EXT_IMA4 AL_EXT_LINEAR_DISTANCE AL_EXT_MCFORMATS AL_EXT_MULAW AL_EXT_MULAW_MCFORMATS AL_EXT_OFFSET AL_EXT_source_distance_model AL_LOKI_quadriphonic AL_SOFT_buffer_samples AL_SOFT_buffer_sub_data AL_SOFTX_deferred_updates AL_SOFT_direct_channels AL_SOFT_loop_points AL_SOFT_source_latency
Jul 01, 2019 10:08:22 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
WARNING: Pausing audio device not supported.
Jul 01, 2019 10:08:22 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio effect extension version: 1.0
Jul 01, 2019 10:08:22 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio max auxiliary sends: 4
Bullet-Native: Initializing java classes
Furthermore, since my test code is sensitive to the values of q1 and q2, I write a new example that will find angles that show the bug. I’d appreciate if you could run this in your machine, as it should trigger the error AND find a quaternion for which the error always happens in your machine.
This time one of the boxes is added with no rotation and other is created with a random rotation vector. If a collision is detected the box is removed and re-introduced at another angle, until the collision is not detected. I also fixed the lighting and removed some irrelevant stuff.
Here is the code:
import com.jme3.app.SimpleApplication;
import com.jme3.bullet.BulletAppState;
import com.jme3.bullet.collision.PhysicsCollisionEvent;
import com.jme3.bullet.collision.PhysicsCollisionListener;
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.Quaternion;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.Mesh;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import com.jme3.scene.VertexBuffer;
import com.jme3.scene.shape.Box;
import static java.lang.Math.PI;
public class Bug2 extends SimpleApplication implements PhysicsCollisionListener {
private int ticks = 0;
private int lastCollisionTick = 0;
private Mesh boxMesh;
private Material mat;
private BulletAppState bulletAppState;
private Node box2;
public static void main(String[] args) {
Bug2 bug = new Bug2();
bug.showSettings = false;
bug.start();
}
@Override
public void simpleInitApp() {
bulletAppState = new BulletAppState();
this.stateManager.attach(bulletAppState);
bulletAppState.getPhysicsSpace().addCollisionListener(this);
viewPort.setBackgroundColor(ColorRGBA.Gray);
viewPort.getCamera().setLocation(new Vector3f(0,0,-10000));
viewPort.getCamera().lookAt(Vector3f.ZERO, Vector3f.UNIT_Y);
viewPort.getCamera().setFrustumFar(20000);
/*
Here the original code builds the cube from coordinates.
The issue does not happen with JMonkey's Box at least for these particular values.
*/
boxMesh = new Mesh();
Box q = new Box(2000,2000,2000);
for(VertexBuffer origin : q.getBufferList()) {
boxMesh.setBuffer(origin.getBufferType(), origin.getNumComponents(), origin.getFormat(), origin.getData());
}
boxMesh.updateBound();
mat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
mat.setColor("Diffuse", ColorRGBA.Blue);
final DirectionalLight light = new DirectionalLight();
light.setDirection(new Vector3f(0.5f, -0.7f, 1.0f));
rootNode.addLight(light);
createBoxGivenRotation(new Quaternion());
box2 = createBoxGivenRotation(randomQuaternion());
}
private Node createBoxGivenRotation(Quaternion q) {
Geometry spatial = new Geometry("Box", boxMesh);
RigidBodyControl control = new RigidBodyControl(1.0f);
spatial.setMaterial(mat);
spatial.addControl(control);
control.setKinematic(true);
Node node = new Node();
node.attachChild(spatial);
rootNode.attachChild(node);
bulletAppState.getPhysicsSpace().add(control);
node.setLocalRotation(q);
node.setLocalTranslation(Vector3f.ZERO);
return node;
}
private static Quaternion randomQuaternion() {
return new Quaternion().fromAngles(randomAngle(), randomAngle(), randomAngle());
}
private static float randomAngle() {
return (float)(Math.random() * 2 * PI);
}
@Override
public void simpleUpdate(float tpf) {
super.simpleUpdate(tpf);
/* If no collision is detected we abort (collisions are detected in 1 tick, 200 is an overkill) */
if(ticks - lastCollisionTick > 200){
System.out.println("Bug in physics! You can replace the random quaternion for the one printed on the previous line.");
System.exit(0);
}
ticks++;
}
/* If a collision is detected, remove the second cube and try again with another random rotation. */
@Override
public void collision(PhysicsCollisionEvent event) {
Quaternion q = randomQuaternion();
int ticksSinceLastCollision = ticks - lastCollisionTick;
System.out.println("Collision event in " + ticksSinceLastCollision + " ticks : retry with rotation quat " + q);
lastCollisionTick = ticks;
destroyBox(box2);
box2 = createBoxGivenRotation(q);
}
private void destroyBox(Node box) {
Spatial spatial = box.getChildren().get(0);
RigidBodyControl control = (RigidBodyControl) spatial.getControl(0);
control.getPhysicsSpace().removeCollisionObject(control);
box.getChildren().get(0).removeFromParent();
}
}
It takes 5-30 seconds to hit a bad angle, here is the output:
/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java -javaagent:/home/user/.local/share/JetBrains/Toolbox/apps/IDEA-C/ch-0/191.7479.19/lib/idea_rt.jar=34091:/home/user/.local/share/JetBrains/Toolbox/apps/IDEA-C/ch-0/191.7479.19/bin -Dfile.encoding=UTF-8 -classpath /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/cldrdata.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/dnsns.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/icedtea-sound.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/jaccess.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/java-atk-wrapper.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/nashorn.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/sunec.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/sunjce_provider.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/zipfs.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/management-agent.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/resources.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/rt.jar:/home/user/Perforce/user_all/utils/javautils2/collisionlib/main/out/production/classes:/home/user/Perforce/user_all/utils/javautils2/collisionlib/main/out/production/resources:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-lwjgl/3.3.0-alpha2/2f8c92e0f76f4d1851d811c944ecb89c408b1b7e/jme3-lwjgl-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-blender/3.3.0-alpha2/bbbb865a4808e9dcc1f8b940c6bed16449cd4018/jme3-blender-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-desktop/3.3.0-alpha2/8c9fcea2c6702ef9d187deae1a0e15271b60df8c/jme3-desktop-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-bullet-native/3.3.0-alpha2/ad86b62f2fede98bd644eefe37a1c628afd69270/jme3-bullet-native-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-bullet/3.3.0-alpha2/6424a539a5447407bcaa53269ff2208cd6b41956/jme3-bullet-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-terrain/3.3.0-alpha2/87d1a36ee894d2cf14e455fe830c8751d521b249/jme3-terrain-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-effects/3.3.0-alpha2/518d7034117255846c0ee1989656b6ec4af548/jme3-effects-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-core/3.3.0-alpha2/31f8f6a9bdc73b0b182204e056e2b4da93674316/jme3-core-3.3.0-alpha2.jar:/home/user/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/22.0/3564ef3803de51fb0530a8377ec6100b33b0d073/guava-22.0.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-math3/3.6.1/e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf/commons-math3-3.6.1.jar:/home/user/.gradle/caches/modules-2/files-2.1/external.com.github.riccardobl/jme3-bullet-vhacd/1.0/96327c3992b6af277b1a80ae8a7b5bee1d441935/jme3-bullet-vhacd-1.0.jar:/home/user/.gradle/caches/modules-2/files-2.1/external.com.github.riccardobl/vhacd-native/1.1.1/7ce06b1a0dc09c69a5739174b96dd2cfb77f3f68/vhacd-native-1.1.1.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.lwjgl.lwjgl/lwjgl/2.9.3/3df168ac74e4a8c96562cdff24ad352e255bf89c/lwjgl-2.9.3.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.ejml/simple/0.27/957fc40035f6a084304d64b28febcbe66c0994c7/simple-0.27.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.ejml/dense64/0.27/ea70271f286016777ac079a5b33941d4e2b56d00/dense64-0.27.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.ejml/denseC64/0.27/2529c9f8ffa12e15a1d7a21ad8d05f4a6cddfc0c/denseC64-0.27.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.ejml/core/0.27/21d79552c6e103a850e82bfe3a5cb7294d1870b2/core-0.27.jar:/home/user/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/1.3.9/40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf/jsr305-1.3.9.jar:/home/user/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_annotations/2.0.18/5f65affce1684999e2f4024983835efc3504012e/error_prone_annotations-2.0.18.jar:/home/user/.gradle/caches/modules-2/files-2.1/com.google.j2objc/j2objc-annotations/1.1/976d8d30bebc251db406f2bdb3eb01962b5685b3/j2objc-annotations-1.1.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.codehaus.mojo/animal-sniffer-annotations/1.14/775b7e22fb10026eed3f86e8dc556dfafe35f2d5/animal-sniffer-annotations-1.14.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.lwjgl.lwjgl/lwjgl-platform/2.9.3/fbc2afb3e288578e9942578decb6291a490549a0/lwjgl-platform-2.9.3-natives-windows.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.lwjgl.lwjgl/lwjgl-platform/2.9.3/b1eafe80093381c56415731e1d64279e6140bcd0/lwjgl-platform-2.9.3-natives-linux.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.lwjgl.lwjgl/lwjgl-platform/2.9.3/6686cf6ddaa20b4290aa6599a09bc0d17369be05/lwjgl-platform-2.9.3-natives-osx.jar:/home/user/.gradle/caches/modules-2/files-2.1/net.java.jinput/jinput/2.0.5/39c7796b469a600f72380316f6b1f11db6c2c7c4/jinput-2.0.5.jar:/home/user/.gradle/caches/modules-2/files-2.1/net.java.jutils/jutils/1.0.0/e12fe1fda814bd348c1579329c86943d2cd3c6a6/jutils-1.0.0.jar:/home/user/.gradle/caches/modules-2/files-2.1/net.java.jinput/jinput-platform/2.0.5/7ff832a6eb9ab6a767f1ade2b548092d0fa64795/jinput-platform-2.0.5-natives-linux.jar:/home/user/.gradle/caches/modules-2/files-2.1/net.java.jinput/jinput-platform/2.0.5/385ee093e01f587f30ee1c8a2ee7d408fd732e16/jinput-platform-2.0.5-natives-windows.jar:/home/user/.gradle/caches/modules-2/files-2.1/net.java.jinput/jinput-platform/2.0.5/53f9c919f34d2ca9de8c51fc4e1e8282029a9232/jinput-platform-2.0.5-natives-osx.jar com.xxx.Bug2
Jul 01, 2019 11:03:24 AM com.jme3.system.JmeDesktopSystem initialize
INFO: Running on jMonkeyEngine 3.3-alpha2
* Branch: HEAD
* Git Hash: 3f1f2e8
* Build Date: 2019-05-22
Jul 01, 2019 11:03:25 AM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: LWJGL 2.9.3 context running on thread jME3 Main
* Graphics Adapter: null
* Driver Version: null
* Scaling Factor: 1
Jul 01, 2019 11:03:25 AM com.jme3.renderer.opengl.GLRenderer loadCapabilitiesCommon
INFO: OpenGL Renderer Information
* Vendor: Intel Open Source Technology Center
* Renderer: Mesa DRI Intel(R) UHD Graphics 620 (Kabylake GT2)
* OpenGL Version: 3.0 Mesa 18.2.8
* GLSL Version: 1.30
* Profile: Compatibility
Jul 01, 2019 11:03:25 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.ogre.MeshLoader
Jul 01, 2019 11:03:25 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.ogre.SkeletonLoader
Jul 01, 2019 11:03:25 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.ogre.MaterialLoader
Jul 01, 2019 11:03:25 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.ogre.SceneLoader
Jul 01, 2019 11:03:25 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.fbx.FbxLoader
Jul 01, 2019 11:03:25 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.gltf.GltfLoader
Jul 01, 2019 11:03:25 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.gltf.BinLoader
Jul 01, 2019 11:03:25 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.gltf.GlbLoader
Jul 01, 2019 11:03:25 AM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.audio.plugins.OGGLoader
Jul 01, 2019 11:03:26 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio Renderer Information
* Device: OpenAL Soft
* Vendor: OpenAL Community
* Renderer: OpenAL Soft
* Version: 1.1 ALSOFT 1.15.1
* Supported channels: 64
* ALC extensions: ALC_ENUMERATE_ALL_EXT ALC_ENUMERATION_EXT ALC_EXT_CAPTURE ALC_EXT_DEDICATED ALC_EXT_disconnect ALC_EXT_EFX ALC_EXT_thread_local_context ALC_SOFT_loopback
* AL extensions: AL_EXT_ALAW AL_EXT_DOUBLE AL_EXT_EXPONENT_DISTANCE AL_EXT_FLOAT32 AL_EXT_IMA4 AL_EXT_LINEAR_DISTANCE AL_EXT_MCFORMATS AL_EXT_MULAW AL_EXT_MULAW_MCFORMATS AL_EXT_OFFSET AL_EXT_source_distance_model AL_LOKI_quadriphonic AL_SOFT_buffer_samples AL_SOFT_buffer_sub_data AL_SOFTX_deferred_updates AL_SOFT_direct_channels AL_SOFT_loop_points AL_SOFT_source_latency
Jul 01, 2019 11:03:26 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
WARNING: Pausing audio device not supported.
Jul 01, 2019 11:03:26 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio effect extension version: 1.0
Jul 01, 2019 11:03:26 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio max auxiliary sends: 4
Bullet-Native: Initializing java classes
Collision event in 1 ticks : retry with rotation quat (-0.32744917, -0.21652637, 0.3380672, -0.85533845)
Collision event in 1 ticks : retry with rotation quat (0.37618935, 0.37625277, -0.78039175, -0.32848758)
Collision event in 1 ticks : retry with rotation quat (0.101112604, 0.48361745, 0.5124898, -0.7023137)
Collision event in 4 ticks : retry with rotation quat (0.71556497, -0.18872455, -0.40624976, -0.5360139)
Collision event in 1 ticks : retry with rotation quat (0.28006914, -0.56971985, 0.6337262, -0.44200873)
Collision event in 1 ticks : retry with rotation quat (-0.733985, -0.5282083, -0.40346587, 0.13956141)
Collision event in 1 ticks : retry with rotation quat (0.81895703, 0.4648125, 0.25438598, -0.22033261)
Collision event in 1 ticks : retry with rotation quat (0.57673204, 0.59146553, -0.39953756, -0.39738956)
Collision event in 1 ticks : retry with rotation quat (-0.12692942, 0.7286861, 0.5379135, -0.40441895)
Collision event in 1 ticks : retry with rotation quat (-0.17857423, -0.18616566, 0.23010072, 0.9383535)
Collision event in 1 ticks : retry with rotation quat (-0.6680585, -0.70620763, 0.21943428, 0.08256641)
Collision event in 1 ticks : retry with rotation quat (-0.7338361, -0.6498605, 0.106110305, 0.16705249)
Collision event in 1 ticks : retry with rotation quat (0.01515869, 0.3795779, 0.92501026, 0.006858067)
Bug in physics! You can replace the random quaternion for the one printed on the previous line.
AL lib: (EE) alc_cleanup: 1 device not closed
Process finished with exit code 0