Fragmentierung beim Rendern
Verfasst: 23.06.2013, 21:05
Moin zusammen,
Ich baue mir gerade eine eigene kleine Grafik Engine um Geometrische Simulation für ein Studentenprojekt zu ermöglichen.
(Eigenentwicklung da ich sehr hohe Abtastraten auf die 3D Szenerie habe und es nicht in Echtzeit gerendert werden muss)
Dabei lese ich beliebige 3D Szenen aus Collada Dateien ein führe darauf meine Animationen durch. Alles ist dabei mit C++ mit Qt und OpenGl entwickelt. Wenn ich mir nun allerdings meine Szene mittels OpenGl rendern lasse habe ich komische Schattierung auf Teilflächen eines Objektes. (Alle Flächen werden als Dreiecke verarbeitet)
So sieht z.B. meine Szene in Blender aus:

und so die Szene von mir eingelesen und gerendert:

Meine erste Idee war des an den Normalen meiner Flächen liegt, aber diese habe ich mehrfach gegengeprüft und gegengerechnet und sie stimmen!
Meine jetzige Vermutung liegt an der Art meiner Beleuchtung. Hier mal ein Auszug wie ich das Licht in OpenGL initialisiere:
Hat jemand eine Idee woher dieser Effekt kommt ?
Danke im Voraus!
Edit: Wiederrufe die Aussage das die Normalen Stimmen ;-)
Ich baue mir gerade eine eigene kleine Grafik Engine um Geometrische Simulation für ein Studentenprojekt zu ermöglichen.
(Eigenentwicklung da ich sehr hohe Abtastraten auf die 3D Szenerie habe und es nicht in Echtzeit gerendert werden muss)
Dabei lese ich beliebige 3D Szenen aus Collada Dateien ein führe darauf meine Animationen durch. Alles ist dabei mit C++ mit Qt und OpenGl entwickelt. Wenn ich mir nun allerdings meine Szene mittels OpenGl rendern lasse habe ich komische Schattierung auf Teilflächen eines Objektes. (Alle Flächen werden als Dreiecke verarbeitet)
So sieht z.B. meine Szene in Blender aus:
und so die Szene von mir eingelesen und gerendert:
Meine erste Idee war des an den Normalen meiner Flächen liegt, aber diese habe ich mehrfach gegengeprüft und gegengerechnet und sie stimmen!
Meine jetzige Vermutung liegt an der Art meiner Beleuchtung. Hier mal ein Auszug wie ich das Licht in OpenGL initialisiere:
Code: Alles auswählen
glEnable(GL_LIGHTING);
glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
glEnable(GL_COLOR_MATERIAL);
// set up light colors (ambient, diffuse, specular)
GLfloat lightKa[] = {1, 1, 1, 1.0f}; // ambient light
GLfloat lightKd[] = {.7f, .7f, .7f, 1.0f}; // diffuse light
GLfloat lightKs[] = {1, 1, 1, 1}; // specular light
glLightfv(GL_LIGHT0, GL_AMBIENT, lightKa);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightKd);
glLightfv(GL_LIGHT0, GL_SPECULAR, lightKs);
// position the light
float lightPos[4] = {0, 0, 0, 1}; // positional light
glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
glEnable(GL_LIGHT0);
Danke im Voraus!
Edit: Wiederrufe die Aussage das die Normalen Stimmen ;-)