Как сделать 3D в библиотеке обработки - PullRequest
1 голос
/ 12 апреля 2020

Я использую библиотеку обработки в простом Java проекте, и я пытался сделать 3D, но я получил ошибки, это мой код:

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);

    }
}

Но когда я запускаю код, я получаю эта ошибка:

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

Так что я просто не знаю, как это работает?

1 Ответ

1 голос
/ 13 апреля 2020

P3D использует OpenGL за кулисами, и вам нужно связываться с нативными библиотеками.

В этом случае это библиотеки jogl и gluegen-rt, представленные в Processing / Java / core / library: просто скопируйте правильные jar-файлы для вашей платформы (или все, если вы хотите запустить проект на нескольких платформах) и добавьте их в путь сборки.

Вот пример затмения OSX: enter image description here

...