I have tried the below code but I am getting NullPointerException in the below highlighted line.
Class Name: Terrain
Getting Exception in the below line
modelInstance = new ModelInstance(modelBuilder.end(),0,0,0);
Please find the code below
Code:
private PerspectiveCamera camera;
private ModelBatch modelBatch;
private ModelBuilder modelBuilder;
private Model box;
private ModelInstance modelInstance;
private Environment environment;
@Override
public void create () {
camera = new PerspectiveCamera(75,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
camera.position.set(0f, 0f, 3f);
camera.lookAt(0f,0f,0f);
camera.near =0.1f;
camera.far = 300f;
modelBatch = new ModelBatch();
modelBuilder = new ModelBuilder();
modelBuilder.begin();
MeshPartBuilder part=modelBuilder.part("Box1", GL20.GL_TRIANGLES, Usage.Position, null);
part.rect(new Vector3(0,0,0),new Vector3(100,0,0),new Vector3(100,100,0),new Vector3(0,100,0),new Vector3(0,0,0));
modelInstance = new ModelInstance(modelBuilder.end(),0,0,0);
environment = new Environment();
environment.set(new ColorAttribute(ColorAttribute.AmbientLight,0.8f,0.8f,0.8f,1f));
Gdx.input.setInputProcessor(this);
}
@Override
public void render () {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT|GL20.GL_DEPTH_BUFFER_BIT);
camera.update();
modelBatch.begin(camera);
modelBatch.render(modelInstance,environment);
modelBatch.end();
}
@Override
public boolean keyDown(int keycode) {
// In the real world, do not create NEW variables over and over, create
// a temporary static member instead
if(keycode == Input.Keys.LEFT)
camera.rotateAround(new Vector3(0f, 0f, 0f), new Vector3(0f, 1f, 0f), 1f);
if(keycode == Input.Keys.RIGHT)
camera.rotateAround(new Vector3(0f,0f,0f),new Vector3(0f,1f,0f), -1f);
return true;
}
I am getting the below error when I try to execute the above code.
Exception in thread "LWJGL Application" java.lang.NullPointerException at com.badlogic.gdx.graphics.g3d.ModelInstance.invalidate(ModelInstance.java:269) at com.badlogic.gdx.graphics.g3d.ModelInstance.invalidate(ModelInstance.java:283) at com.badlogic.gdx.graphics.g3d.ModelInstance.copyNodes(ModelInstance.java:226) at com.badlogic.gdx.graphics.g3d.ModelInstance.(ModelInstance.java:154) at com.badlogic.gdx.graphics.g3d.ModelInstance.(ModelInstance.java:146) at com.badlogic.gdx.graphics.g3d.ModelInstance.(ModelInstance.java:62) at com.badlogic.gdx.graphics.g3d.ModelInstance.(ModelInstance.java:188) at com.mygdx.game.desktop.Terrain.create(Terrain.java:63) at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:147) at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124)
Can someone please provide a solution to make the code work.