Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 12:34

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Beleuchtungsfehler
BeitragVerfasst: Mi Mai 28, 2008 14:36 
Offline
DGL Member

Registriert: Di Mai 27, 2008 17:07
Beiträge: 21
Hallo!

Ich habe mir eine Obj Datei eingelesen und wollte das Objekt nun Darstellen.
Wenn ich die Beleuchtung einschalte habe ich ein paar Fehler. Das Objekt scheint an manchen Stellen durchsichtig zu sein, des Weiteren sieht man irgendwie Fehler im Bild, schaut
euch am Besten mal den Screenshot an. Immer wenn sich Flächen überlagern sieht das seltsam aus.

Bild

Anbei mein Setup (Python Code, aber sollte ja keinen Unterschied machen):

Code:
  1.  
  2.  
  3. def init():
  4. ...
  5.     glEnable(GL_NORMALIZE)
  6.     glEnable(GL_LIGHTING)
  7.     glEnable(GL_LIGHT0)
  8.     glEnable(GL_CULL_FACE)
  9.     glMatrixMode(GL_MODELVIEW)
  10.  
  11. ...
  12.  
  13. def display():
  14.     """ Render all objects"""
  15.     global boundingBox, rotX, rotY, rotZ, rotVals, pointList, shiftX, shiftY, mouseScaleFactor, colorFg, colorBg, colors, faceList, dspList
  16.    
  17.     #set clear color
  18.     glClearColor(colors[colorBg][0], colors[colorBg][1], colors[colorBg][2], 1)
  19.  
  20.     #clear with clear color. IMPORTANT - must be executed after glClearColor()!!!
  21.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
  22.  
  23.     glPushMatrix()
  24.  
  25.  
  26.     # 5. Scaling for middle mouse button
  27.     glScalef(mouseScaleFactor, mouseScaleFactor, mouseScaleFactor)
  28.  
  29.     # 4. Move
  30.     glTranslate(shiftX, shiftY, 0)
  31.    
  32.     # 3. rotate
  33.     glRotate(rotX, 1, 0, 0)
  34.     glRotate(rotY, 0, 1, 0)
  35.     glRotate(rotZ, 0, 0, 1)
  36.  
  37.     # 2. Scale to [-1, 1]
  38.     scalefactor = 2/boundingBox.values['maxLength']
  39.     glScalef(scalefactor, scalefactor, scalefactor)
  40.  
  41.     # 1. Move to center
  42.     glTranslate(-boundingBox.values['mitteX'], -boundingBox.values['mitteY'], -boundingBox.values['mitteZ'])
  43.  
  44.     light_position = [0, 0, -5.0, 1.0]
  45.     glLightfv(GL_LIGHT0, GL_POSITION, light_position)
  46.     glCallList(dspList)
  47.  
  48.     glPopMatrix()                #Pop Matrix from Stack
  49.     glutSwapBuffers()            #swap buffer
  50.  


Zuletzt geändert von Sispi am Mi Mai 28, 2008 14:40, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2008 14:39 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Hast du den Tiefentest an? (glEnable(GL_DEPTH_TEST))

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2008 14:41 
Offline
DGL Member

Registriert: Di Mai 27, 2008 17:07
Beiträge: 21
Dann sieht es noch schlimmer aus!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2008 15:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Hast du Backface-Culling an?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2008 16:08 
Offline
DGL Member

Registriert: Di Mai 27, 2008 17:07
Beiträge: 21
Ja!
Das hatte ich beim ersten bild an:
Code:
  1.  
  2.     glEnable(GL_NORMALIZE)
  3.     glEnable(GL_LIGHTING)
  4.     glEnable(GL_LIGHT0)
  5.     glEnable(GL_CULL_FACE)
  6.     glMatrixMode(GL_MODELVIEW)
  7.     glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)
  8.  

wenn ich normalize rausnehm passiert nichts.

Wenn ich depth_test REINnehme wird es noch schlimmer
und wenn ich cull_face dannn zusätzlich rausnehme wird es NOCH schlimmer.

Also bei diesem Setup:
Code:
  1.  
  2.     #Lighting
  3.     glEnable(GL_DEPTH_TEST)
  4.  
  5.     glEnable(GL_NORMALIZE)
  6.     glEnable(GL_LIGHTING)
  7.     glEnable(GL_LIGHT0)
  8.     #glEnable(GL_CULL_FACE)
  9.     glMatrixMode(GL_MODELVIEW)
  10.  
  11.     glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)

Erziele ich dieses hässliche Ergebnis: :(
Bild
[/code]


Was mich sehr wundert: Schaue ich mir den Kopf von hinten an, ist er durchsichtig, wüsste nicht warum das so sein sollte:
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2008 16:29 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
woher hast du denn das .obj File? Schon beim ersten bild sieht es irgendwie ungesund aus. Fast wie ein Ergebniss eines 3D Scanners. Diese haben meist probleme die gescannten Punkte zu Polygonen zu gruppieren. Wenn die Reihenfolge der Vertices in einem Polygon nicht stimmt, siehts schnell seltsam aus.

Was der Tiefentest und was Backfaceculling machen sollte bekannt sein.
Wenn das solche auswirkungen auf das Modell hat, dann würde ich mir das Modell nochmal in einem 3D Modelling-Tool angucken. Mal sehn ob die damit klar kommen. Vielleicht liegt der Fehler schon da.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2008 16:33 
Offline
DGL Member

Registriert: Di Mai 27, 2008 17:07
Beiträge: 21
Der Hase wurde 3d-gescannt, ja. Den Affen hab ich mir in Blender selbst exportiert. Selbst ein einfacher Quader aus Blender weist diese Macken auf :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2008 17:02 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Hast du auch explizit einen Tiefenpuffer angefordert, und diesen dann auch erhalten? Die Bilder mit dem Affen sehen nämlich so aus als würde in einem Puffer"Müll" bzw. Artefakte liegen. Wenn ja, dann schau auch mal nach ob du evtl. einen Stencilpuffer mitangefordert hast, und wenn ja lösche denn dann auch mit.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2008 17:29 
Offline
DGL Member

Registriert: Di Mai 27, 2008 17:07
Beiträge: 21
Das einzige was ich mit Tiefenpuffer gemacht habe ist

glEnable(GL_DEPTH_TEST)

von Stencils habe ich noch nie gehört, bin noch recht neu dabei :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 28, 2008 22:27 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Du erstellst ja irgendwo deinen Renderkontext, und da forderst du deine Puffer an (Farbe, Tiefe, Stencil, etc.). Evtl. forderst du eine Kombination an bei der die Grafikkarte keinen Tiefenpuffer liefern kann oder so. Am besten ist i.d.R. 24 Bit Farbe, 8 Bit Alpha, 24 Bit Tiefe, 8 Bit Stencil. Das sind dann genau zwei DWords und wird von allen Grafikkarten im Normalfall unterstützt.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]