# Low Poly 3D LWJGL Shader Problem



## GentleXD (27. Okt 2017)

Guten Tag,

ich probiere mich gerade an einem 3D Spiel (ich weiß ...). Programmieren tue ich dieses mit LWJGL und Java. Ich habe meine Basics geschafft ich kann Modelle laden, rendern und habe die ersten Shader geschrieben. Ich habe Licht implementiert. Bisher alles gut. Da ich kein besonders guter Grafiker bin, aber auch keinen habe der mir diese Aufgabe abnehmen kann möchte ich die Modelle Texturen selber machen. Low Poly war meine Antwort, sehr leicht zu lernen und nicht allzu schwer. Jetzt mache ich meine Models in Blender und gebe diesen eine Farbe (eine Farbe für das komplette Modell). Jetzt möchte ich die Textur mit meinen Shadern machen. 

Also folgendes Problem: 
In Blender habe ich diese Low Poly Kugel erstellt und ihr zum Test eine pinke Farbe gegeben. Aber nur eine Farbe für das ganze Modell. In Blender wird jeder Vertex durch das Licht in eine leicht andere Farbe gesetzt.
https://prnt.sc/h2piul

Jetzt lade ich diese Kugel in mein Spiel: 
Alle Seiten die zum Licht direkt hinzeigen sehen soweit richtig und gut aus (nur das ich jetzt kein Pink sondern blau benutzte):
https://prnt.sc/h2cxuu

In Blender sieht das Modell von allen Seiten so aus wie in meinem Spiel oder zumindest fast.
Aber in meinem Spiel kann ich um die Kugel herumgehen und an Seiten die nicht direkt zum Licht zeigen sieht das ganze so aus:
https://prnt.sc/h2cxq9

Folgendes Problem an sich ist das so garnicht schlecht die Seiten die nicht direkt bestrahlt werden sollen auch dunkler sein. Aber man sollte die Low Poly Dreiecke schon  sehen das heißt die Seiten die nicht bestrahlt werden sollen nicht als flaches Sechseck dargestellt werden sondern in leicht unterschiedlichen dunklen Farben.

Hier noch der Shader Code (jeder der sich mit OpenGL/LWJGL auskennt wird denke ich mal erkennen was hier passiert).
Wenn jemand eine Idee hat wie man das lösen kann wäre es total nett wenn er antowrten könnte.

Mit freundlichen Grüßen,

GentleXD


----------



## Thallius (27. Okt 2017)

Ohne mir das Ganze jetzt angesehen zu haben, so hat jeder Shader eigentlich eine Option ein Umgebungslicht zusetzen was dann als Grundhelligkeit verwendet ird ohne eine bestimmte Richtung zu haben.


----------



## GentleXD (27. Okt 2017)

Genau das habe ich ja auch gemacht sonst wäre das ganze Modell an manchen stellen schwarz aber ich hätte das ja gerne so das die Grundhelligkeit bei denen die nicht bestrahlt werden leicht unterschiedlich ist das man die Struktur des Low Poly Modells nich erkennt.


----------



## JuKu (28. Okt 2017)

Wo ist denn der Shader Code?
Ich glaube du berechnest das Lighting einfach zu ungenau, aber dazu kann ich ohne Code wenig sagen.
Kenne mich mit Lighting auch zu wenig aus.


----------



## GentleXD (28. Okt 2017)

Oh ich habe den Shader Code nicht gepostet srry , habe es aber nach 12 Stunden selber hinbekommen.

https://pastebin.com/YbKgRvdU 

Es gab einfach ein Problem ich habe ja das Skalar Produkt des Abstand Vektor des Objekts zur Sonne und dem Normalen Vektor des vertex berechnet und das glaube als Brightness benutzt. Dabei  setzte ich diesen Wert wenn er kleiner als 0.2 ist auf 0.2 gesetzt. 

Folgende Lösung:

Einfach nicht alle Werte die kleiner sind als 0.0 oder 0.2 (in meinem Fall) konstant auf 0.2 setzten sondern zum Beispiel jeden Wert multiplizieren das nicht jeder Wert gleich ist. 
Ich habe jetzt alle Werte die kleiner sind als 0.0 einfach mal 0.4 rechne damit werden diese größer als 0.0 sind aber nicht alle auf 0.0 gesetzt so entstehen unterschiedliche Werte.


----------

