RigidBodyControl setLinearVelocity NullPointerException


Following along with the collision tutorial, I decided to try it in my own app, and I got this :

[xml]Aug 18, 2011 2:32:58 PM com.jme3.app.Application handleError

SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]


at com.jme3.bullet.objects.PhysicsRigidBody.setLinearVelocity(PhysicsRigidBody.java:457)

at mygame.BoxManager.addPhysics(BoxManager.java:52)

at mygame.Main$1.onAction(Main.java:148)

at com.jme3.input.InputManager.invokeActions(InputManager.java:183)[/xml]

The line it is referring to is any one of the 3 fully commented out ones here :

[java]public void addPhysics(int id, float mass, Vector3f camDir){

RigidBodyControl phy = new RigidBodyControl(mass);

System.out.println(phy.toString()); //com.jme3.bullet.control.RigidBodyControl@12d15a9

System.out.println(camDir.toString()); //(0.0, -17.67767, 17.677671)

System.out.println(gal.get(id).toString()); //Box (Geometry)


//phy.setLinearVelocity(new Vector3f(0f,-10f,0f));





Basically, Im trying to add physics to something on the fly.

Set a collision shape or add the control to the spatial so a RigidBody can be created.

Hey there,

I thought addControl([RigidBodyControl]) did this automagically :

RigidBodyControl(float mass)

When using this constructor, the CollisionShape for the RigidBody is generated automatically when the Control is added to a Spatial.

RigidBodyControl phy = new RigidBodyControl(mass);


gal is a ArrayList [Geometry] (yeah I should use a linked list…)

This also occurs when I do anything (not just setLinearVelocity)

phy.setRestitution(2.0f); //same null pointer error

however, the object is not null.

System.out.println(phy.toString()); // puts out com.jme3.bullet.control.RigidBodyControl@1f3aa07


at com.jme3.bullet.objects.PhysicsRigidBody.setRestitution(PhysicsRigidBody.java:407)

at mygame.BoxManager.addPhysics(BoxManager.java:65)

line 65 : phy.setRestitution(2.0f);

Thats meant for static objects you should create a simple/compound collisionshape instead.

Refer to the collision tutorial :


CollisionShape is not used there. Also it works, boxes fall out of the sky.

I found a ‘solution’. The order matters, this works :

RigidBodyControl phy = new RigidBodyControl(mass);


//phy.setRestitution(2.0f); //not here!


phy.setRestitution(2.0f); //this gotta go here!

It works there because they used simple shapes, box/sphere, and its given a box/sphere simple collisionshape automatically.

o man, these are fun to play with



phy.setGravity(new Vector3f(0f, -40f, 0f));


I got a floor box, and giant rubber balls bouncing all around, its like a racketball court on steroids, this is so cool


<3 JME