Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Ave

Frischling

  • »Ave« ist der Autor dieses Themas
  • Private Nachricht senden

1

29.05.2006, 11:27

Transparente Textur und Culling Problem

Hallo allerseits
Wie die meisten von euch hier, habe auch ich Davids Buch (3. Auflage) gelesen und bin sehr zufrieden. Nun, versuche ich und ein Freund (ein guter Blender Grafiker ^^) ein kleines test Spiel zu entwickeln. Nach ein paar Models, ist vor wenigen Tagen ein Problem mit der Textur aufgetaucht. Die Textur enthält ein transparentes Netz. Besser gesagt, die Farbe 0xFF00FF (Magenta) wird mit Hilfe vom Color-Key beim Laden der Textur mit transparentem Schwarz ersetzt.

Hier ein Ausschnitt von der Textur:
http://myave.my.funpic.de/texture/texture_segment.JPG


Damit das auch funktioniert, habe ich Alpha-Blending eingeschaltet.

Quellcode

1
pDirect3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);


Source-Blend und Destination-Blend sind wie folgt eingestellt:

Quellcode

1
2
pDirect3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
pDirect3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);


So sieht das aus:
http://myave.my.funpic.de/screenshots/screen_01.jpg


So, jetzt das Problem: Manche Teile des Objekts werden hinter dem Netz nicht angezeigt.
http://myave.my.funpic.de/screenshots/screen_02.jpg
http://myave.my.funpic.de/screenshots/screen_03.jpg

Ich weiß bzw. vermute, dass es am Culling liegt. Setzte ich CullMode auf CW so sind alle Teile des Objekts zusehen die im normalen Zustand(D3DCULL_CCW) nicht zusehen sind.

Schaltet man den Z-Buffer aus, dann sieht man, dass die Teile die sonst nicht angezeigt werden vor dem Netz liegen.

http://myave.my.funpic.de/screenshots/screen_04.jpg


Nach einige Stunden vergebliche Mühe, komme ich leider nicht voran.
Ich habe Sowohl im Forum gesucht als auch „gegoogelt“, jedoch vergeblich :/

Ich hoffe, dass ihr mir weiter helfen könnt. Wäre äußerst dankbar!!!


Grüße Jan.

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

2

29.05.2006, 11:41

Durchsichtige Objekte muessen zuletzt gezeichnet werden, hast du das gemacht?

Ave

Frischling

  • »Ave« ist der Autor dieses Themas
  • Private Nachricht senden

3

29.05.2006, 11:57

Leider ist das ganze nur ein Object, ein X File.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

29.05.2006, 12:10

dein problem is der zbuffer.
in dem fall würd ich einfach alpha testing einschalten...

Ave

Frischling

  • »Ave« ist der Autor dieses Themas
  • Private Nachricht senden

5

29.05.2006, 12:27

Bingo, awesome :)

Alpha testing hat das Problem wunderbar gelöst.

Quellcode

1
2
3
pDirect3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);
pDirect3DDevice->SetRenderState(D3DRS_ALPHAREF, 0x0);
pDirect3DDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATER);


Das war's auch schon ^^

Vielen Danke für die schnelle Antwort, sehr nett!

Werbeanzeige