Ayfri
Ayfri

Reputation: 637

How to make 3D in processing library

I'm using the Processing library in a simple Java project and I tried to make 3D but I got errors, this is my code :

package fr.ayfri;
import processing.core.PApplet;
import processing.core.PConstants;

public class Main extends PApplet {

    public void settings() {
        size(1600, 900, PConstants.P3D); // <--- P3D this tells Processing to work with 3D
    }

    public void draw() {
        background(140, 190, 255);
    }

    public static void main(String[] args) {

        String[] processingArgs = { "Main" };
        Main main = new Main();
        PApplet.runSketch(processingArgs, main);

    }
}

But when I run the code I get this error :

java.lang.NoClassDefFoundError: com/jogamp/opengl/GLCapabilitiesImmutable
    at processing.opengl.PGraphicsOpenGL.createPGL(PGraphicsOpenGL.java:712)
    at processing.opengl.PGraphicsOpenGL.<init>(PGraphicsOpenGL.java:569)
    at processing.opengl.PGraphics3D.<init>(PGraphics3D.java:35)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
    at processing.core.PApplet.makeGraphics(PApplet.java:2266)
    at processing.core.PApplet.createPrimaryGraphics(PApplet.java:2345)
    at processing.core.PApplet.initSurface(PApplet.java:10983)
    at processing.core.PApplet.runSketch(PApplet.java:10922)
    at fr.ayfri.Main.main(Main.java:20)
Caused by: java.lang.ClassNotFoundException: com.jogamp.opengl.GLCapabilitiesImmutable
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 13 more
java.lang.RuntimeException: com/jogamp/opengl/GLCapabilitiesImmutable
    at processing.core.PApplet.makeGraphics(PApplet.java:2299)
    at processing.core.PApplet.createPrimaryGraphics(PApplet.java:2345)
    at processing.core.PApplet.initSurface(PApplet.java:10983)
    at processing.core.PApplet.runSketch(PApplet.java:10922)
    at fr.ayfri.Main.main(Main.java:20)

Process finished with exit code 1

So I just don't know how to make this works ?

Upvotes: 1

Views: 350

Answers (1)

George Profenza
George Profenza

Reputation: 51837

P3D uses OpenGL behind the scenes and you need to link against the native libraries.

In this case it's the jogl and gluegen-rt libraries present in Processing/Java/core/libraries: simply copy the correct jars for your platform (or all if you want to run the project on multiple platforms) and add them to the build path.

Here's an eclipse OSX example: enter image description here

Upvotes: 1

Related Questions