Oh, fixed now. Thanks for reporting.vinpowful wrote:Hi, jezek2 !
Since few days, i'm unable to go on the website http://jbullet.advel.cz/ , I get an 403 error![]()
I'm a student and i'll surely use JBullet for a big project, is there another place to get the last version and find Javadoc / API reference ?
thank you and keep up the great work
Java port of Bullet
-
- Posts: 40
- Joined: Fri Jan 11, 2008 8:33 am
Re: Java port of Bullet
-
- Posts: 5
- Joined: Tue Nov 24, 2009 3:58 pm
Re: Java port of Bullet
Hi, i am currently trying to integrate jbullet into my own project. I am using netbeans and used the build script to build jbullet. After this i added all generated libraries (jar files in the dist folder) into my own project. Then i integrated (basically copied) some code from the hello world file into my main file and tried to run the program but i get the following error:
Exception in thread "main" java.lang.Error: not instrumented
at cz.advel.stack.Stack.alloc(Stack.java:110)
at com.bulletphysics.collision.broadphase.AxisSweep3Internal.<init>(AxisSweep3Internal.java:90)
at com.bulletphysics.collision.broadphase.AxisSweep3.<init>(AxisSweep3.java:52)
at com.bulletphysics.collision.broadphase.AxisSweep3.<init>(AxisSweep3.java:48)
at environement.Physics.PhysicsWorld.initPhysics(PhysicsWorld.java:65)
I already found something here to solve the problem but i do not understand it.
Can somebody help me?
Thanks,
Thomas
Exception in thread "main" java.lang.Error: not instrumented
at cz.advel.stack.Stack.alloc(Stack.java:110)
at com.bulletphysics.collision.broadphase.AxisSweep3Internal.<init>(AxisSweep3Internal.java:90)
at com.bulletphysics.collision.broadphase.AxisSweep3.<init>(AxisSweep3.java:52)
at com.bulletphysics.collision.broadphase.AxisSweep3.<init>(AxisSweep3.java:48)
at environement.Physics.PhysicsWorld.initPhysics(PhysicsWorld.java:65)
I already found something here to solve the problem but i do not understand it.
Can somebody help me?
Thanks,
Thomas
-
- Posts: 5
- Joined: Tue Nov 24, 2009 3:58 pm
Re: Java port of Bullet
I got it to work
The problem seems strange to me but it seems that cross referencing libraries from the jbullet netbeans project to my own netbeans project produced the bug. If i copy the generated libraries (the generated dist folder of the jbullet project) into some folder without a netbeans project in it and use this libraries in my own netbeans project everything works fine.
Bye,
Thomas
![Smile :)](./images/smilies/icon_smile.gif)
Bye,
Thomas
-
- Posts: 5
- Joined: Wed Sep 09, 2009 5:52 pm
Re: Java port of Bullet
I stumbled onto JBullet today, and I'm very impressed with it. It runs very well and, at least on my system, it's hard to tell it apart from the original Bullet. I do, however, have some questions:
Why are you using a separate library for stack allocation when automatic stack allocation was added in Java 6? ( http://www.ibm.com/developerworks/java/ ... 09275.html )
Do you plan to implement the KinematicCharacterController, and/or would it be difficult for someone with less experience (like me) to implement?
Edit:
I seem to have answered my own questions to a certain degree.
It looks like KinematicCharacterController is already in the repository after someone on JavaGaming.org implemented it, and I'm seeing people complaining that Java's stack allocation is really too conservative.
Why are you using a separate library for stack allocation when automatic stack allocation was added in Java 6? ( http://www.ibm.com/developerworks/java/ ... 09275.html )
Do you plan to implement the KinematicCharacterController, and/or would it be difficult for someone with less experience (like me) to implement?
Edit:
I seem to have answered my own questions to a certain degree.
It looks like KinematicCharacterController is already in the repository after someone on JavaGaming.org implemented it, and I'm seeing people complaining that Java's stack allocation is really too conservative.
-
- Posts: 40
- Joined: Fri Jan 11, 2008 8:33 am
Re: Java port of Bullet
Please note the article publish date, it was written before Java 6 release and the actual release didn't have such capability. Current status is that in some development builds of Java 7 there is such option but only available on Server VM. There is probably backport to some Java 6 update, but would need to check. On older computers Server VM introduces serious lags throughput the whole application run so it's not option for interactive applications.debio264 wrote:Why are you using a separate library for stack allocation when automatic stack allocation was added in Java 6? ( http://www.ibm.com/developerworks/java/ ... 09275.html )
Not sure what you mean, can you describe it more?debio264 wrote: ... and I'm seeing people complaining that Java's stack allocation is really too conservative.
-
- Posts: 5
- Joined: Wed Sep 09, 2009 5:52 pm
Re: Java port of Bullet
Escape analysis is available as an experimental feature in JRE 6u14 (see http://java.dzone.com/articles/escape-a ... a-6-update), so yea, you're right, it's not mainstream yet. You should probably try it out though.jezek2 wrote:Please note the article publish date, it was written before Java 6 release and the actual release didn't have such capability. Current status is that in some development builds of Java 7 there is such option but only available on Server VM. There is probably backport to some Java 6 update, but would need to check. On older computers Server VM introduces serious lags throughput the whole application run so it's not option for interactive applications.debio264 wrote:Why are you using a separate library for stack allocation when automatic stack allocation was added in Java 6? ( http://www.ibm.com/developerworks/java/ ... 09275.html )
Not sure what you mean, can you describe it more?debio264 wrote: ... and I'm seeing people complaining that Java's stack allocation is really too conservative.
As for the conservative thing, it's a comment I saw in a few places, but given that it's still an experimental feature, I should probably just ignore those until it becomes official. By conservative, the posters meant that escape analysis was too cautious in its optimizations.
-
- Posts: 11
- Joined: Fri Dec 18, 2009 7:19 pm
Re: Java port of Bullet
Exception in thread "main" java.lang.Error: not instrumented
at cz.advel.stack.Stack.alloc(Stack.java:110)
at com.bulletphysics.collision.broadphase.AxisSweep3Internal.<init>(AxisSweep3Internal.java:90)
at com.bulletphysics.collision.broadphase.AxisSweep3.<init>(AxisSweep3.java:52)
at com.bulletphysics.collision.broadphase.AxisSweep3.<init>(AxisSweep3.java:48)
at environement.Physics.PhysicsWorld.initPhysics(PhysicsWorld.java:65)
I am still having troubles on Eclipse trying to debug the application. And yes, I succeded building the source via ANT. But the only way I found to run is via ANT though. So I cannot debug it.
Is there a way to run and debug the code "normally" ?
Somebody can please help me?
Thank you.
at cz.advel.stack.Stack.alloc(Stack.java:110)
at com.bulletphysics.collision.broadphase.AxisSweep3Internal.<init>(AxisSweep3Internal.java:90)
at com.bulletphysics.collision.broadphase.AxisSweep3.<init>(AxisSweep3.java:52)
at com.bulletphysics.collision.broadphase.AxisSweep3.<init>(AxisSweep3.java:48)
at environement.Physics.PhysicsWorld.initPhysics(PhysicsWorld.java:65)
I am still having troubles on Eclipse trying to debug the application. And yes, I succeded building the source via ANT. But the only way I found to run is via ANT though. So I cannot debug it.
Is there a way to run and debug the code "normally" ?
Somebody can please help me?
Thank you.
-
- Posts: 5
- Joined: Wed Sep 09, 2009 5:52 pm
Re: Java port of Bullet
Take a look at the build instructions - you've missed a step somewhere if you're getting that error.
Are you sure you built the project with Ant, and if so, what command did you use?
Are you sure you built the project with Ant, and if so, what command did you use?
-
- Posts: 11
- Joined: Fri Dec 18, 2009 7:19 pm
Re: Java port of Bullet
I've made my way and it worked.
Now, another question. It's possible to load a custom model and use its mesh to run some simulations?
Thank you.
Now, another question. It's possible to load a custom model and use its mesh to run some simulations?
Thank you.
-
- Posts: 5
- Joined: Wed Sep 09, 2009 5:52 pm
Re: Java port of Bullet
Yes, the same way you would with plain old Bullet. Check the demos for examples.
A physics library wouldn't be very useful if it could only use hardcoded primitives.
A physics library wouldn't be very useful if it could only use hardcoded primitives.
-
- Posts: 11
- Joined: Fri Dec 18, 2009 7:19 pm
Re: Java port of Bullet
Sure debio.
But there is only the MovingConcaveDemo(bunny thing) that reads a static array of vertices and faces indexes.
So I've been trying to write my own Model Loader based on that structure(vertices and indexes). The routing reads the data from a file generated from a maxscript exporter I wrote.
And it didn't worked.
The exception below just keep coming and I cannot figure it out.
The data generated looks like this:
6 vertices and 8 faces.
It's a simple piramid. A primitive in 3ds max.
It seems the problem is floating around the "vertex stride" thing. Which I am using the same value(4 * 3) from the bunny example: MovingConcaveDemo.java:111
Why is 4*3? And why the ByteBuffer objects are being created by multiplying the vertices and indexes by 4?
How can I determine an adaptive way to load my custom models?
Please help me.
And merry christmas to all of you.
Thank you.
But there is only the MovingConcaveDemo(bunny thing) that reads a static array of vertices and faces indexes.
So I've been trying to write my own Model Loader based on that structure(vertices and indexes). The routing reads the data from a file generated from a maxscript exporter I wrote.
And it didn't worked.
The exception below just keep coming and I cannot figure it out.
Code: Select all
java.lang.IndexOutOfBoundsException
at java.nio.Buffer.checkIndex(Buffer.java:520)
at java.nio.DirectByteBuffer.getFloat(DirectByteBuffer.java:806)
at com.bulletphysics.collision.shapes.ByteBufferVertexData.getVertex(ByteBufferVertexData.java:58)
at com.bulletphysics.extras.gimpact.TrimeshPrimitiveManager.get_vertex(TrimeshPrimitiveManager.java:121)
at com.bulletphysics.extras.gimpact.TrimeshPrimitiveManager.get_primitive_triangle(TrimeshPrimitiveManager.java:138)
at com.bulletphysics.extras.gimpact.TrimeshPrimitiveManager.get_primitive_box(TrimeshPrimitiveManager.java:128)
at com.bulletphysics.extras.gimpact.GImpactBvh.buildSet(GImpactBvh.java:127)
at com.bulletphysics.extras.gimpact.GImpactShapeInterface.calcLocalAABB(GImpactShapeInterface.java:204)
at com.bulletphysics.extras.gimpact.GImpactShapeInterface.updateBound(GImpactShapeInterface.java:71)
at com.bulletphysics.extras.gimpact.GImpactMeshShape.calcLocalAABB(GImpactMeshShape.java:237)
at com.bulletphysics.extras.gimpact.GImpactShapeInterface.updateBound(GImpactShapeInterface.java:71)
at br.com.rsl.temp.ModelLoader.buildTriMesh(ModelLoader.java:45)
Code: Select all
6
0.0 -0.907649 0.419731
0.0 -0.907649 0.419731
0.0 -0.907649 0.419731
0.900354 0.0 0.435159
0.0 0.907649 0.419731
0.0 0.0 -1.0
8
1.0 2.0 3.0
1.0 3.0 4.0
1.0 4.0 5.0
1.0 5.0 2.0
2.0 6.0 3.0
3.0 6.0 4.0
4.0 6.0 5.0
5.0 6.0 2.0
It's a simple piramid. A primitive in 3ds max.
It seems the problem is floating around the "vertex stride" thing. Which I am using the same value(4 * 3) from the bunny example: MovingConcaveDemo.java:111
Why is 4*3? And why the ByteBuffer objects are being created by multiplying the vertices and indexes by 4?
Code: Select all
ByteBuffer.allocateDirect(indexes.length * 4).order(ByteOrder.nativeOrder());
Please help me.
And merry christmas to all of you.
Thank you.
-
- Posts: 11
- Joined: Fri Dec 18, 2009 7:19 pm
Re: Java port of Bullet
The model loading issue was solved.
But I got another doubt. How is the best way to implement a altimeter?
Given a position x,y,z a ray must be cast down on the Y axis until hit something. The distance between this object is your altitude. Right?
So, how can I do that?
thanks
But I got another doubt. How is the best way to implement a altimeter?
Given a position x,y,z a ray must be cast down on the Y axis until hit something. The distance between this object is your altitude. Right?
So, how can I do that?
thanks
-
- Posts: 19
- Joined: Sat Jan 17, 2009 10:51 am
Re: Java port of Bullet
Hi, i'm having some troubles with the IDebugDraw.
here is the initialization code
called in the draw loop
the implemented IDebugDraw
It's not like the code doesn't do anything. I does. It draws RGB axis lines regardless of what I set it too. I would like to get it to work so I can see the wireframe rigid bodies.
here is the initialization code
Code: Select all
iDebugDraw = new JPCTDebugDraw(world, buffer);
iDebugDraw.setDebugMode(DebugDrawModes.DRAW_WIREFRAME);
dynamicWorld.setDebugDrawer(iDebugDraw);
Code: Select all
dynamicWorld.debugDrawWorld();
Code: Select all
package jpctbullet;
import java.awt.Color;
import java.awt.Graphics;
import javax.vecmath.Vector3f;
import com.threed.jpct.*;
import com.bulletphysics.linearmath.IDebugDraw;
import com.bulletphysics.linearmath.VectorUtil;
public class JPCTDebugDraw extends IDebugDraw{
private int _debugMode;
private World _world;
private FrameBuffer _buffer;
private SimpleVector Vec3fToSVec(Vector3f vector)
{
// JPCT uses a inverted ZY axis and coordinates so flip them
return new SimpleVector(vector.x, -vector.y, -vector.z);
}
public JPCTDebugDraw(World w, FrameBuffer b)
{
_world = w;
_buffer = b;
}
public void setDebugMode(int debugMode)
{
_debugMode = debugMode;
}
public int getDebugMode()
{
return _debugMode;
}
public void drawLine(Vector3f from, Vector3f to, Vector3f color)
{
if(_debugMode > 0)
{
Camera cam = _world.getCamera();
Graphics g = _buffer.getGraphics();
Color lastColour = g.getColor();
SimpleVector pointA = Interact2D.project3D2D(cam, _buffer, Vec3fToSVec(from));
SimpleVector pointB = Interact2D.project3D2D(cam, _buffer, Vec3fToSVec(to));
g.setColor(new Color(color.x, color.y, color.z));
// do not know why, but some times pointB is null
if(pointA != null && pointB != null){
g.drawLine((int)pointA.x, (int)pointA.y, (int)pointB.x, (int)pointB.y);
}
g.setColor(lastColour);
}
}
public void draw3dText(Vector3f location, String textString)
{
Camera cam = _world.getCamera();
Graphics g = _buffer.getGraphics();
SimpleVector loc = Interact2D.project3D2D(cam, _buffer, Vec3fToSVec(location));
g.drawString(textString, (int)loc.x, (int)loc.y);
}
public void drawContactPoint(Vector3f pointOnB, Vector3f normalOnB, float distance, int lifeTime, Vector3f color)
{
}
public void reportErrorWarning(String warningString)
{
System.out.println(warningString);
}
}
It's not like the code doesn't do anything. I does. It draws RGB axis lines regardless of what I set it too. I would like to get it to work so I can see the wireframe rigid bodies.
-
- Posts: 1
- Joined: Sun Mar 21, 2010 3:30 am
Re: Java port of Bullet
Hi, a little big question: is JBullet deterministic? has anyone test this? It was developed thinking about it or if I found jbullet acting in deterministic way is just a lucky shoot?
thanks for reply![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
thanks for reply
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
-
- Posts: 9
- Joined: Tue Jul 13, 2010 7:52 pm
Re: Java port of Bullet
I am trying to create a roulette game using jBullet for the spinning of the ball. I am not sure what collision shape to use for the wheel.
I chose ConvexHullShape and passed in the vertices of the model, however I am not sure I have done this part properly.
ModelPhysics.getVertices3f(node) just passes through all the nodes of my model and returns the vertices.
When I drop a ball into the model, it stops around 25 units on top of the floor and then proceeds to role/hover to the edge of the model and fall off. Why is the ball not touching the model surfaces?
Any help would be appreciated.
Thanks,
Dave
I chose ConvexHullShape and passed in the vertices of the model, however I am not sure I have done this part properly.
Code: Select all
ConvexShape staticScenario = new ConvexHullShape(ModelPhysics.getVertices3f(node));
Transform startTransform = new Transform();
startTransform.setIdentity();
float mass = 0f;
startTransform.origin.set(new Vector3f(0, 0, 0));
RigidBodyConstructionInfo info = new RigidBodyConstructionInfo(mass, new DefaultMotionState(
startTransform), staticScenario, new Vector3f(0, 0, 0));
wheel = new RigidBody(info);
wheel.setCollisionFlags(wheel.getCollisionFlags() | CollisionFlags.STATIC_OBJECT);
dynamicsWorld.addRigidBody(wheel);
When I drop a ball into the model, it stops around 25 units on top of the floor and then proceeds to role/hover to the edge of the model and fall off. Why is the ball not touching the model surfaces?
Any help would be appreciated.
Thanks,
Dave