[Java3D] Szene richtig einfärben^

CPU

Lieutenant
Registriert
Jan. 2006
Beiträge
704
Hallo Community,

ich möchte eine Vorschau eines 3D-Modells erzeugen. Nun habe ich in diesem Beitrag versucht einen eigenen kleinen Renderer zu entwickeln. Doch ich habe jetzt festgestellt, dass ich eine Bibliothek verwenden sollte. Daher experimentiere ich im Moment mit Java3D.

Anbei ein kleines lauffähiges Beispiel, dass meinen Stand wiederspiegelt. Da ich die Punkte direkt im Speicher vorliegen habe, fällt das "Laden" weg und ich wollte die Faces, wie in der Methode "createContent" gezeigt, zu einer Szene zusammen setzen. Keine Ahnung ob das für größere Meshes (~ 200.000 Dreiecke) auch performant ist.

Nun mein Problem ist vorher aber ein ganz Anderes: wenn ihr mein kleines Beispiel ausführt, dann seht ihr nur eine weiße "Form". Ich würde die Ansicht jedoch gerne so gestalten:

example.jpg

Ich habe jetzt alle möglichen Variationen (zumindest fühlt es sich so an) mit "Apperance" und "Material" am Ende der Methode "createContent" probiert, war jedoch nur im Stande die Farbe zu verändern - es ist so ein 2D-Klotz geblieben. Dass so ein "Schattenspiel" (einfache Schattierung mit Phong-Diffuse-Shading) entsteht, um die Konturen erkennen zu können habe ich nicht geschafft.

Habt Ihr eine Idee, wie ich das hin bekomme?

Viele Grüße,
CPU

Hier mein Beispielcode: Anhang anzeigen SSEE.java.txt
 
Suchst du ein Feature, das dir das Shading magisch herzaubert oder Informationen, wie es funktioniert?
In letzterem Fall: http://www.cs.northwestern.edu/~ago820/cs395/Papers/Phong_1975.pdf

In ersterem: Traurig mitanzusehen, wie Benutzer "moderner" Programmiersprachen plötzlich im Regen
stehen, wenn sie ein bestimmtes Feature nicht vorgekaut bekommen :(
 
Zuletzt bearbeitet:
Mit OpenGL hätte ich dir direkt weiterhelfen können; von Java3d habe ich leider 0 Plan. Was mir beim anschauen allerdings so gekommen ist und worüber du dir Gedanken machen solltest:

-Hat dein Objekt Normalen? In der Regel werden die Normalen nicht automatisch generiert, da es oft vortreilhaft ist seine eigenen Normalen zu verwenden. Ohne Normale gibts kein Phong-Diffuse-Shading.
-Du hast dein Ambient Licht auf 1,1,1 eingestellt. Das heißt die Szene ist bereits "überbeleuchtet", wodurch du keinen anderne Lichteinfluss mehr merken wirst.
-Hast du die Diffuse-Intensität, das Diffuse-Material, die Lichtrichtung eingestellt und festgelegt ob das Licht eine parallel oder eine Punktlichtquelle sein soll? All das sehe ich in deinem Quelltext nicht.
 
Zurück
Oben