ich versuche jetzt seit zwei Tagen Java3D in Eclipse zu integrieren, aber es will irgendwie nicht klappen.
Ich habe einen Win7 64 bit Rechner!
Ich habe mir die Java3D.Exe runtergeladen, die dann die Files installiert.
Anschließend habe ich die 3 Jar-File dem Buildpath hinzugefügt.
Habe auch die .dll Dateien in den Bin Ordner des JRE kopiert.
Es kommt keine Fehlermeldung, sondern es passiert einfach nichts!
Das Test-Programm läuft immer weiter, bis ich es beende!
Ich weiß nicht mehr woran es liegt.
Es müsste doch eigentlich irgendwo eine Fehlermeldung auftauchen, aber das tut es irgendwie nicht...
Wenn ich versuche das Programm mit einer anderen JRE Version zu starten, in meinem Fall dann JRE6 statt 7, kommt statt keiner Fehlermeldung nun folgende Fehlermeldung:
no j3dcore-ogl-chk in java.library.path
bzw.
22.01.2013 00:23:46 javax.media.j3d.NativePipeline getSupportedOglVendor
SCHWERWIEGEND: java.lang.UnsatisfiedLinkError: no j3dcore-ogl-chk in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-d3d in java.library.path
Hmm, habe alle deine Tipps befolgt aber res tut sich immer noch nichts...
Ich entferne jetzt mal Java komplett, da ich auch mehrere Versionen drauf habe.
Versuche dann Java3D neu zu intsallieren...
Welche Version muss ich eigenlich laden?
64AMD,oder?
Nochmal zum Anfang:
"Das Test-Programm läuft immer weiter, bis ich es beende!"
Mit "weiterlaufen" meinst du hier: Es tut sich nichts, man sieht nichts (d.h. es kommt nur die Fehlermeldung?!)
An Grafikkartentreibern etc. sollte das heute kaum noch liegen. Nach einer normalen Installation von Java+Java3D sollte man das schon zum laufen kriegen. Gibt's denn das Verzeichnis
Programme/Java/Java3D.../
bei dir?
Also ich habe gerade nochmal alles deinstalliert und neu aufgesetzt, so wie du es in dem anderen Thread erklärt hast.
Bevor ich die NAtive Library der Core.Jar auf den bin Ordner im Java 3D gesetzt habe kam immer folgende Fehlermeldung:
Java:
Schwerwiegend: java.lang.: no j3dcore-ogl-chk in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-d3d in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:189)
at java.security.AccessController.doPrivileged(NativeMethod)
at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:180)
at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:137)
at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:948)
at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:280)
at java3dproject.Welt.<init>(Welt.java:31)
at java3dproject.Welt.main(Welt.java:67)
Nachdem ich jetzt die Native Library auf der Core.Jar auf den bin Ordner in dem Java3D Ordner gesetzt habe, läfut das Programm wieder endlos...
Vielleicht gibts ein Fehler in meinem Programm...
Ich teste mal ein anderes...
Also, ich habe jetzt mal ein anderes Testfile ausprobiert:
Java:
importjava.awt.Frame;importjava.awt.GraphicsConfiguration;importjavax.media.j3d.BranchGroup;importjavax.media.j3d.Canvas3D;importjavax.media.j3d.Transform3D;importjavax.media.j3d.TransformGroup;importcom.sun.j3d.utils.geometry.ColorCube;importcom.sun.j3d.utils.universe.SimpleUniverse;publicclassWeltextendsFrame{publicWelt(String title){super(title);// AnzeigeInfos holen (Farbtiefe, usw...GraphicsConfiguration config =SimpleUniverse.getPreferredConfiguration();// ein neues Canvas mit den AnzeigeInfos erzeugen und dem Frame hinzufügenCanvas3D canvas3d =newCanvas3D(config);add(canvas3d);// ein neues Universum im Canvas erzeugen und eine Betrachtungsebene erzeugenSimpleUniverse universe =newSimpleUniverse(canvas3d);
universe.getViewingPlatform().setNominalViewingTransform();// ein kleiner WürfelColorCube colorcube =newColorCube();// neue Transform InformationenTransform3D transform3d =newTransform3D();// neue TransformgruppeTransformGroup transroot =newTransformGroup(transform3d);//colorcube an Transformgruppe hängen
transroot.addChild(colorcube);//neue BranchgruppeBranchGroup branchgroup =newBranchGroup();//Transformgruppe an Branchgruppe hängen
branchgroup.addChild(transroot);// ... an das Universum hängen
universe.addBranchGraph(branchgroup);}publicstaticvoidmain(String args[]){Welt beispiel =newWelt("Beispie");
beispiel.setSize(600,400);
beispiel.setVisible(true);}}
Es klappt jetzt, aber es erscheint nur ein roter Hintergrund...
Muss da nicht ein Cube erscheinen?
Bzw. wenn ich die Größe ändere erscheint ein rotes Viereck, aber alles in 2D...
Danke!
Danke!
Klappt jetzt alles.
Eine Frage habe ich aber noch:
Muss ich für jede Rotation eine eigene Transformgroup machen?
Oder wie vollziehe ich bspw. eine Rotation um x und um z?
Das "x UND z" wirft ja schon die Frage nach der Reihenfolge auf (siehe Gimbal Lock ? Wikipedia ). Wenn man Zweideutigkeiten vermeiden will, macht man für jede Rotation eine eigene TransformGroup, oder beschreibt die Rotation einfach nicht durch "Drehungen um Achses", sondern durch ein Quaternion oder die gesamte Rotationsmatrix.