LibGDX 3d Getting Null Pointer Exception in ModelInstance

207 Views Asked by At

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.

0

There are 0 best solutions below