Toon posts:

[OpenGL] Diepte probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een klein probleempje... Ik heb met opengl een huis getekend die roteert en de polygonen die zich aan de achterkant van het huis bevinden worden ook getekend. Depthtesting is wel ingeschakeld, en volgens mij ook goed, dus ik heb nu geen idee waar het aan ligt. Zou iemand even naar de broncode willen kijken?

De broncode is te downloaden op http://www.nextavenue.com/huis.zip

Alvast bedankt.

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 30-03 17:41
En wat is nu je probleem?

Effe gokken:

glEnable(GL_DEPTH_TEST) is om te zorgen dat de polygonen die later worden getekend maar verder weg zijn dan polygonen die eerder worden getekend daadwerkelijk achteraan zitten.

Dan heb je nog glEnable(GL_CULL_FACE), die zorgt ervoor dat polygonen die van (of naar, mag je zelf kiezen; is afhankelijk van de volgorde van de vertices) de "camera" af staan niet worden getekend.

Wat jij wilt is volgens mij de polygonen, waar andere polygonen voor zitten, niet tekenen. Nou, voor zover ik weet kan je dit niet door OpenGL laten doen en zal je zelf de visibility van een polygoon moeten bepalen. Hier zijn dan weer bepaalde technieken voor (BSP, portals onder andere, maar deze zijn niet van toepassingen op een 3D modeller). Maar dat is dan alles wat ik erover kan vertellen, helaas... :)

[ Voor 8% gewijzigd door Ericston op 08-02-2004 15:42 ]


  • EfBe
  • Registratie: Januari 2000
  • Niet online
depth testing is per pixel en zorgt voor het voorkomen van overdraw, mbv van de depth buffer. Omdat jij wireframes tekent heeft dat niets met jouw code te maken, je kunt dat dus gewoon uitzetten.

Je moet de regels:
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);

eruit halen in InitGL(). Dan zie je alle polygonen. Dit komt omdat anders de polygonen niet worden getekend (en dus ook de lijntjes niet) omdat de normal van die polys van de camera af staat, m.a.w. je staat tegen de achterkant aan te kijken en die zie je normaliter niet in een model.

(edit) * EfBe heeft uiteraard niet goed gelezen.

Je wilt dus die kachel bv niet tekenen? dat kan niet met wireframes. dat object heeft nl. front facing polies en die zie je gewoon. Je moet dan zoals hierboven al is gezegd een scene graph gaan gebruiken die bepaalt welke polys op dit moment zichtbaar zijn.

Ik zie echter het nut niet in van een wireframe model dat roteert en waarbij je polyculling gebruikt. OF filled polies en dan levert depthtesting wat je wilt, OF wireframes en dan zie je gewoon alle polies.

[ Voor 36% gewijzigd door EfBe op 08-02-2004 15:56 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
* Jorgen en Erik hebben natuurlijk de verkeerde zip ge-upload |:(

Op http://www.nextavenue.com/huis.zip staat de goede broncode

Op http://www.nextavenue.com/huis.jpg kan je zien wat er verkeerd getekend wordt...

Het groende, de tuin, moet niet volledig weergeven worden aangezien de muur van het huis er gedeeltelijk voorzit. Het zelfde geldt de paarse muur... Zo ook
de carport (rechts, blauw dak, bruine palen, grijze grond :))

Snappen jullie het nog? :?

Dank voor jullie snelle reacties

  • EfBe
  • Registratie: Januari 2000
  • Niet online
OK, je moet controlleren of je de vertices wel in de goede volgorde tekent (dus linksom of rechtsom. Dit is van belang voor de richting van de normaalvector en voor de culling.

Ik denk dat als je dat uitzoekt je plaatje er wel heel anders uitziet.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
Dat hebben we al uitgebreid gecontroleerd en uitgezocht. Alles is ccw getekend.

Verwijderd

Topicstarter
http://www.nextavenue.com/huis.zip

We hebben eerst commentaar om alle polygonen gezet en ze toen stap
voor stap getekend. De richting was altijd counterclockwise. Zou je het
zip-bestand nog één keer willen downloaden en kijken of dit bij jou wel
goed getekend wordt?

groeten,
Erik en Jorgen

Verwijderd

Topicstarter
Het probleem is opgelost, is was geen probleem...

onze conclusie: werk niet met een videokaart 4 mb :D

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 30-03 17:41
Nou, op mijn videokaart met 64 MB krijg ik ook vaagheden en ik kan echt niks raars vinden in jullie source. Het lijkt erop alsof de depth buffer niet goed gecleared wordt ofzo... alsof de depth check functie niet werkt... erg raar. :/

Verwijderd

Topicstarter
Op mijn ATI M9 64 MB (op laptop jah :)) werkt hij perfect...

Vreemd... :s

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zet 'ns een screenshot online als je wilt, dan wordt het een en ander misschien wat duidelijker (ook al lijkt het probleem vaagjes opgelost) :)

.edit: stond er dus al 7(8)7

[ Voor 11% gewijzigd door .oisyn op 08-02-2004 20:40 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 30-03 17:41
Verwijderd schreef op 08 februari 2004 @ 16:23:
[...]

Op http://www.nextavenue.com/huis.jpg kan je zien wat er verkeerd getekend wordt...

[...]

Verwijderd

Topicstarter
Op mijn Videokaart werkt het nu...
Komt waarschijnlijk door de goede OpenGL ondersteuning van
Erik's 4 Mb videokaart :D

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:03
edit:
D'oh! Dom van mij; ik had je code kant-en-klaar gecompileerd maar er moesten natuurlijk nog wat zaken uitgecomment worden. Zo doet 'ie 't wel goed:
Afbeeldingslocatie: http://hell.student.utwente.nl/temp/1076333972_huis.png

Aangezien ik niet al te gekke dingen zie gebeuren in je code, lijkt me dan ook een probleem met de OpenGL drivers. (Maar, disclaimer, ik werk zelden tot nooit met OpenGL dus ik weet niet exact welke opties je op welke manier mag/moet combineren.)

[ Voor 137% gewijzigd door Soultaker op 09-02-2004 14:40 ]

Pagina: 1