# Black Screen in 3D-Applications



## Max (2. Dez 2003)

Hallo,

Bin Anfänger mit Java (wenn ich nur mal Zeit hätte, richtig anzufangen  ) und habe mir, damit es auch Spass macht, Java 3d von der Sun Site gezogen.
Und zwar die DirectX version. Dann natürlich DirectX installiert (Vers. 9), Ebenos war vorher die J2SDK Vers. 1.4.1_05 und das JRE gleiche Version installiert.

Nach dem Ausprobieren einiger von Buchautoren geschriebener Quellcodes erhalte ich im "DOS-Fenster" folgende Error-Meldung:
Error: Canvas3D with a null GraphicsConfiguration
          This will cause a NullPointerException in a subsequent Release


Wenn ich zuvor die java- Quell Code-Datei mittels javac.... vorcompiliere mosert die SDK nicht, führe ich aus mit: java..... dann erscheint oben besagte Fehlermeldung. Die Anwendung startet zwar, aber im Fenster ist nur schwarz zu sehen wo jetzt eigentlich ein 3D-Objekt mich erfreuen sollte.
(Stevg, falls du Dich an unseren Thread im Anfängerforum erinnerst, das passiert also nicht nur mit Applets, sondern eben auch mit Apllikationen)

Da ich nicht die ganze Seite mit dem Quellcode zumüllen will, hier nur eine Zeile auf die sich die Fehlermeldung vielleicht beziehen könnte:
protected Canvas3D myCanvas3D = new Canvas3D(null);

Ist Euch das schonmal begegnet und habt Ihr idealerweise einen Rat (damit meine Java-Lernerei mal vorankommt, und ich vielleicht irgendwann auch mal was anderes als Fragen dem Forum beisteuern kann  :wink: )

Thanks for all Help
Grüsse aus Wuppertal
Max


----------



## Keld (3. Dez 2003)

laut api hat das so auszusehen:


```
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
```

http://developer.java.sun.com/developer/onlineTraining/java3d/

ohne Weltkonfiguration kein canvas.


----------



## Max (3. Dez 2003)

Keld hat gesagt.:
			
		

> laut api hat das so auszusehen:
> 
> 
> ```
> ...



Hi Keld,
Danke für die schnelle Antwort. Das ist es leider auch nicht. Erstens, hatte ich auch schon Beispielprogramme bei denen es mit dem "null"-parameter lief, zweitens gibt es hier im Forum eine Beispiel Datei, in der  das Canvas genau so erzeugt wird, wie du es oben beschreibst (3.11./"Starthilfe Tei 1: SimpleUniverse"/ Beitrag Hoon).
Das lief auch nicht, bzw. wurde brav vorcompliert, zeigte beim Ablauf aber wieder nur Schwarz.

Noch eine Idee von Dir?
Oder anderen Jungs (natürlich auch Mädels) im Forum?

Danke für die Hilfe, ich hab nämlich echt kene Idee dazu
Grüsse
Max


----------



## hoon (4. Dez 2003)

Hallo Max,

schön, dass Du mein Starthilfe-Progrämmchen probiert hast. Ich hatte es bei mir unter Windows XP und SuSE Linux 8.2 getestet und es läuft ohne Probleme.

In Deinem ersten Beitrag schreibst Du, dass Du das DirectX-SDK installiert hast. Ich selbst habe bisher noch keine Tests hinsichtlich möglicher Probleme beim Einsatz von DirectX gemacht. Deswegen kann ich jetzt auch nicht prinzipiell sagen, dass es am DirectX-SDK liegt.

Persönlich halte ich nicht viel von DirectX. Das liegt daran, da ich privat und berufllich mit mehreren Betriebssystemen arbeite. DirectX faellt also als Entwicklungs-Hintergrund für mich aus. Ich hatte also von Anfang an das OpenGL-SDK installiert und bin unter Windows und Linux sowie HP-UX und IRIX damit glücklich.

Wenn Du Dich also mal kurzzeitig von DirectX trennen kannst, so würde ich Dir die OpenGL-Variante empfehlen - also nur so probehalber. Zumindest wissen wir dann, ob es daran liegt oder nicht liegt  

Gruss hoon

PS: Bin in letzter Zeit etwas fern des Forums, da ich letztens nen gewaltigen Festplatten-Crash hatte. Tipp: Kauft Euch bloß keine IBM-Platten!!! Glücklicherweise konnte ich die Hälfte meiner Daten retten. Der Rest is weg  :cry: 
Bin gerade dabei mein System neu zu installieren - mit RAID-Array


----------



## Max (4. Dez 2003)

Hallo hoon,
Danke für die Antwort und den Tip.
Werd's ausprobieren und dann wieder berichten.

"CU"
Max


----------



## Max Moritz (11. Dez 2003)

Abseits aller Ideologie könntest du mit der OGL-Version das gleiche Problem haben. Ursache für diese Exception ist nämlich eine falsche Konfiguration der Grafikkarte auf Hardwareseite. Schau dir mal bei den erweiterten Einstellungsmöglichkeiten speziell die Ecke mit dem Z-Buffer an, in der Regel liegt es daran, dass der auf 16 statt auf 32 Bit steht.

Ansonsten empfehle ich die Java 3D Interest Group von Sun, da gibt es schnelle und zielgerichtete Hilfe.


----------



## hoon (11. Dez 2003)

So etwas konnte ich wir schon fast denken, da es ja auch keinen Sinn macht bzw. in den Doku's keinen Hinweis gibt, dass man gerade bei so einfachen Beispiel-Programmen spezielle Unterschiede zw. DirectX und OpenGL beachten sollte.

Da eroeffnet sich gleich eine neue Frage: Ab wann machen sich denn Unterschiede zw. DirectX und OpenGL unter Java3D bemerkbar? Ab wann muss ich als Entwickler aufpassen, was ich als Grundlage benutze? Irgend wann muss ich doch mal auf Unterschiede stossen, oder? In den Doku's bin ich bis dort hin noch nicht vorgedrungen.

Gruss hoon


----------



## Oxygenic (14. Dez 2003)

hoon hat gesagt.:
			
		

> Da eroeffnet sich gleich eine neue Frage: Ab wann machen sich denn Unterschiede zw. DirectX und OpenGL unter Java3D bemerkbar? Ab wann muss ich als Entwickler aufpassen, was ich als Grundlage benutze? Irgend wann muss ich doch mal auf Unterschiede stossen, oder? In den Doku's bin ich bis dort hin noch nicht vorgedrungen.



Unter Windoof stößt du meist dann auf Probleme, wenn die Treiber deiner Grafikkarte OGL nicht vernünftig unterstützen. Das merkst du aber sofort ;-)

Ansonsten ist es ja gerade das schöne an Java 3D (und damit ein deutlicher Vorteil gegenüber allen OGL-Wrappern), dass es völlig unwichtig ist, ob darunter DirectX, OpenGL oder GLX angesprochen wird - für den Entwickler macht es keinen Unterschied. Man sollte lediglich so viel wie möglich versuchen, Quads zu verwenden, da diese bei einer darunterliegenden OpenGL-Schicht schneller sind.


----------



## hoon (14. Dez 2003)

Finde ich schonmal gut, dass ich mir da nicht so viel Gedanken machen brauch zwecks DirectX, OpenGL oder GLX  



> Man sollte lediglich so viel wie möglich versuchen, Quads zu verwenden, da diese bei einer darunterliegenden OpenGL-Schicht schneller sind.



Ich bin gerade dabei einen kleinen Viewer/Manipulator fuer etwas weniger bekannte Geometriedaten (mehr ingenieurstechnischer Bereich) zu schreiben. Ich habe dort die sogenannten TriangleStripArrays verwendet. Ich dachte eigentlich, das diese die schnellste Loesung sind.
Was ist nun schneller? Quads oder TriangleStripArrays? Irgendwo habe ich gelesen, dass man TriangleStripArrays anstreben sollte.

Gruss hoon


----------



## Oxygenic (14. Dez 2003)

Tja, das kannst du dir aussuchen, das dürfte dann letztendlich von den Daten selbst abhängen. Die Strips sind deswegen schneller, weil zusammenhängend und hinter einander weg gezeichnet werden können - das selbe gilt ja für die Quads. Und wenn dann doch DirectMurx zugrunde liegt, sind mangels der direkten Quad-Unterstützung sicher die Strips oder besser noch die Fans schneller.


----------



## hoon (14. Dez 2003)

Dann sind die Strips fuer mich am besten geeignet. Die Daten liegen hauptsaechlich in Dreiecks- oder Viereckselementen vor (Finite-Element-Daten). Die Viereckselemente habe ich zu Dreieckselementen reduziert und verwalte eigentlich nur noch die TriangleStrips. Ist auch verdammt schnell. Habe mal ueber 100000 Dreiecke eingelesen - geht immer noch sehr zuegig ohne zu haken. Java 3D ist hier fuer mich ein ideales Werkzeug.

Bist Du eigentlich an der Entwicklung von 3DChat.org beteiligt? Ich bin mal kurz drin gewesen. Is ganz nett. Habe bloss noch nicht so viel Zeit gehabt mich umzusehen. Muss jetzt erst einmal zum Kaffeetrinken.

Uebrigens sind wir hier ja ziemlich vom Thema abgekommen. Es ging ja eigentlich um den Black Screen. 
Mal schauen, ob der Max sich mal meldet

Gruss hoon


----------



## Oxygenic (14. Dez 2003)

hoon hat gesagt.:
			
		

> Bist Du eigentlich an der Entwicklung von 3DChat.org beteiligt? Ich bin mal kurz drin gewesen. Is ganz nett. Habe bloss noch nicht so viel Zeit gehabt mich umzusehen. Muss jetzt erst einmal zum Kaffeetrinken.



Japp, den Link sollte ich vielleicht auch noch in die Signatur mit aufnehmen ;-)



> Uebrigens sind wir hier ja ziemlich vom Thema abgekommen. Es ging ja eigentlich um den Black Screen.
> Mal schauen, ob der Max sich mal meldet



Hm, wenn keine Reaktion mehr kommt, dann heißt das wohl, dass es funktioniert!?


----------



## hoon (15. Dez 2003)

> Japp, den Link sollte ich vielleicht auch noch in die Signatur mit aufnehmen



Das ist toll! Endlich mal ein professioneller Java3Der im Forum. Ich dachte schon ich muss hier alles allein beantworten. Immerhin habe ich ja selbst erst vor kurzem mit Java und Java3D angefangen und Fragen habe ich auch noch genuegend. Dazu aber zu spaeterer Stunde.

Ja, mache es in die Signatur rein. Immerhin treffe ich zu viele Leute die sich 3D unter Java nicht im Geringsten vorstellen koennen. Der 3DChat ist ein gutes Beispiel, dass Java3D doch zu was taugt und nicht immer abgetan wird.

OK, dann bis spaeter

Gruss hoon


----------



## Oxygenic (15. Dez 2003)

hoon hat gesagt.:
			
		

> Ich dachte schon ich muss hier alles allein beantworten. Immerhin habe ich ja selbst erst vor kurzem mit Java und Java3D angefangen und Fragen habe ich auch noch genuegend.



Nur schade, dass wieder jeder sein eigenes Forensüppchen kocht. Ich persönlich bin eigentlich hauptsächlich in dem von JavaCore zu finden (da www.javacore.de auch noch ein interessantes Portal mit Java-News bietet). Vielleicht schaffen es die Admins ja mal, da was zusammen zu machen!?


----------



## hoon (15. Dez 2003)

Darauf habe ich leider keinen Einfluss. Es ist aber eine gute Idee die deutschsprachige Javagemeinde in einem grossen Portal zu vereinen. Es gibt ja zum Beispiel die http://www.java.de, jedoch find ich den Aufbau und die Funktionalitaeten des Forums nicht gerade ideal. Andere schwoeren auf die http://dclj.de und finden diese Blackboards wie dieses ueberhaupt nicht gut. Ich weiss auch nicht wie man all diese Leute unter einen Hut bringen kann. Letztendlich wuerden alle ihren Nutzen daraus ziehen.
Ich denke das wird sich in Zukunft alles polarisieren. Mal schauen wie sich die Sache entwickeln wird.

hoon


----------



## Oxygenic (18. Dez 2003)

hoon hat gesagt.:
			
		

> > Immerhin habe ich ja selbst erst vor kurzem mit Java und Java3D angefangen und Fragen habe ich auch noch genuegend.
> 
> 
> 
> Apropos: http://forum.javacore.de/viewtopic.php?t=334


----------



## Max (5. Mrz 2004)

Hallo Leute,
Ist zwar schon viel zu lange her, aber da ich diesen thread irgenwann mal gestartet habe, sollte ich mich herzlcih bedanken für die Zeit die Ihr zu dieser Frage (auch jedenfalls  :wink: ) dafür investiert habt.
War einige Zeit nicht vernetzt und habe mit Freuden festgestellt, dass so langsam Leben in die 3D-Abteilung dieses Forums kommt.
Ein aussagekräftiges Feedback über die Eigangsproblematik(wird wahrscheinlich eh keinen mehr interessieren) kann ich leider nicht geben, da ich meine alte Kiste verschrottet habe.
Auf der Neuen habe ich die 3D-SDK OGL-Version installiert und alles hat "gefunzt" wie hier so schön gesagt wird.
Viele Grüsse
Max


----------



## Koravel (30. Mrz 2004)

hoon hat gesagt.:
			
		

> Quads oder TriangleStripArrays?


Wenn ich mich nicht irre gibt es in OpenGL doch auch QuadStrips.
Müsste das nicht sogar noch schneller gehen?

Ich kann dazu nix sagen, ich hab sie leider noch nicht genutzt, ich versuche mich noch immer an meiner kleinen 3D Welt, in der ich immerhin mit Viewbob rumlaufen kann, ohne Kollision, aber mit einer Kiste die mir folgt (als Model *g*)


----------



## Oxygenic (30. Mrz 2004)

OpenGL/GLX kann diese Quads, lediglich Microschrotts DirectMurx unterstützt diese (neben einigen Dingen mehr) nicht.

cu 

Oxy 

http://forum.javacore.de - das Java-Forum! 
http://www.3dchat.org - Welcome To The unreal World!


----------

