I’m following this tutorial for loading models using LibGDX: http://blog.xoppa.com/loading-models-using-libgdx/
I’m getting a nullpointer on this line:
modelBatch.render( playerModelInstance, environment );
After some code reformatting, I saw that the
modelBatch.render(
was the cause of the error.
Here’s my error
Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.badlogic.gdx.graphics.g3d.ModelBatch.render(ModelBatch.java:265)
at com.chris.rpg.Client.render(Client.java:74)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:207)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
Here’s my code:
package com.chris.rpg;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.g3d.Environment;
import com.badlogic.gdx.graphics.g3d.Model;
import com.badlogic.gdx.graphics.g3d.ModelBatch;
import com.badlogic.gdx.graphics.g3d.ModelInstance;
import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute;
import com.badlogic.gdx.graphics.g3d.environment.DirectionalLight;
public class Client implements ApplicationListener {
private PerspectiveCamera playerCamera;
private AssetManager assets;
private Model playerModel;
private ModelBatch modelBatch;
private ModelInstance playerModelInstance;
private Environment environment;
private int placeholder_cameraDegrees = 67;
private boolean preloading = false;
@Override
public void create() {
// Set up the environment
environment = new Environment();
environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
environment.add(new DirectionalLight().set(0.8f, 0.8f,0.8f, -1f, -0.8f, -0.2f));
// Set up the model batch
modelBatch = new ModelBatch();
// Set up the player camera
playerCamera = new PerspectiveCamera(placeholder_cameraDegrees, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
playerCamera.position.set(10f, 10f, 10f);
playerCamera.lookAt(0, 0, 0);
playerCamera.near = 1f;
playerCamera.far = 300f;
playerCamera.update();
// Set up the assets manager
assets = new AssetManager();
assets.load("models/characters/goku/ss2.g3db", Model.class);
preloading = true;
}
private void onAssetsLoaded() {
playerModel = assets.get("models/characters/goku/ss2.g3db", Model.class);
playerModelInstance = new ModelInstance(playerModel);
preloading = false;
}
@Override
public void render() {
if(preloading && assets.update()) {
onAssetsLoaded();
}
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT | GL30.GL_DEPTH_BUFFER_BIT);
modelBatch.begin(playerCamera);
modelBatch.render( playerModelInstance, environment );
modelBatch.end();
}
@Override
public void dispose() {
modelBatch.dispose();
playerModel.dispose();
assets.dispose();
}
@Override
public void resume() {
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
public PerspectiveCamera getPlayerCamera() {
return playerCamera;
}
}