Alpha-Blending / W-Buffer / Z-Buffer (Durscheinen)

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

JPD

Betreff: Alpha-Blending / W-Buffer / Z-Buffer (Durscheinen)

BeitragDo, Jul 28, 2005 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich habe ein Problem mit Alpha-Blending. Betreibe ich mein Game ohne Alpha-Maps funktioniert alles Prima, schalte ich jedoch über die TextureFX (32) die Alpha-Map hinzu, so dass Glasscheiben oder Zäune nachkonstruiert werden können, so sieht man "verborgene" Wände. Ich wüsste nicht wie ich das Problem mit "EntityOrder" lösen könnte. Ich habe auch schon mit "WBuffer True" rumprobiert, nix zu machen.

Eventuell ein Problem der Engine?

mfg JPD
 

Dreamora

BeitragDo, Jul 28, 2005 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
B3D macht kein Alpha Ordering, deswegen kann es in gewissen Fällen zu solchen Problemen kommen, ja.

Allerdings liegt dein Problem wohl eher wo anderst, denn du meinst sicher EntityFX 32 und nicht Texture denn bei Texturen wäre es die Ladeflag 2 (Alpha) welche du verwenden müsstest. Hast du das versucht?


Wenn du mit EntityFX 32 arbeitest, so musst du dich selbst um die richtige Zeichnungsanordnung kümmern (am einfachsten mittels Berechnung über TForm und Kamerablickrichtung und Entityposition)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am Do, Jul 28, 2005 23:00, insgesamt einmal bearbeitet

JPD

BeitragDo, Jul 28, 2005 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Sagen wirs so, ich lad die Textur mit

Code: [AUSKLAPPEN]

Dim textur(10)
textur(1) = LoadTexture("zaun.tga",2)
...


... und wende die Textur auf meinem Object an, jeh nach Object (Wand) halt ne andere Textur.

Ich hab somit dank TGA die EntityFX abschalten können. Die Grafiken überblenden sich halt, sieht ned soo doll aus ... was hat das mit dem W oder Z-Buffer von Blitz3D eigentlich auf sich?

mfg JPD
 

Dreamora

BeitragDo, Jul 28, 2005 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
W Buffer: nur von wenigen Karten unterstützt. Deswegen nutzt aktivieren meist auch nix.
Z Buffer: Der normale Buffer für Tiefeninformationen. Hat aber halt ne begrenzte Genauigkeit.


Was meinst du genau mit "Grafiken überblenden"?
Das man durch die Textur durchsieht dürfte ja der Sinn von Glass sein oder?
Zäune gehen über masked Texturen eh besser und ressourcensparender (musst nur EntityFX auf doublesided schalten bei den Zäunen)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

JPD

BeitragDo, Jul 28, 2005 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Masked Texturen ... da währe dann z.B. schwarz dann durchsichtig ... hm, ja, für die Zäune und co würde es gehen ...

Doubleside? Ich hab die Funktion unter EntityFX nicht gefunden.

Ich habe so etwas wie n grooßes Labyrinth, die Wände sind nicht 3D, sondern eher "2d", also nur 2 triangeln. Das Problem mit dem Backfacing hab ich so geregelt, dass ich ne gespiegelte Kopie hinzugefügt habe.

Es könnte sein, dass der Z-Buffer evtl. bei den Konstruktionen meiner Wände ins Schwanken kommt. Lol Wink ...

Das mit dem Durchscheinen sieht so auf, dass eine WandB, welche hinter der WandA nun halt vor WandA ist, so wie wenn du einen Zaun vor dir hast und das Blumenbeet dahinter vor dem Zaun ist ...

gibts da nicht simple Tricks?

mfg JPD
 

Dreamora

BeitragDo, Jul 28, 2005 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Also für deine 2D Wände: Mach 2 Triangles, beide mit EntityFX 16 (oder +16 wenn noch andere aktiv sind), dann sind sie double sided, sprich man sieht sie von hinten und vorne weil sie nicht wegradiert werden wenn man sie von hinten sehen würde.

Das sollte eigentlich dann auch dein Alpha - Durchschimmer Problem beheben, sofern ich es richtig verstanden habe.
(EntityFX 32 nutzt du ja nicht mehr oder?)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

JPD

BeitragDo, Jul 28, 2005 23:21
Antworten mit Zitat
Benutzer-Profile anzeigen
EntityFX 32 - nein,

arbeite nun mit TGA's ...

ich hab es nun probiert und die "Rückwand" weggelassen. Das Problem bleibt das gleiche. So siehts aus:

[img]
http://www.jpdeutschmann.de/fehler3d.jpg
[/img]

ich werde nun mal das doubleside versuchen ...

mfg JPD

JPD

BeitragDo, Jul 28, 2005 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Backface - ja es funktioniert vom Prinzip, aber es scheint immernoch durch ... und der Text ist übrigens gespiegelt Wink ...

hm ... brauch ich massive Wände oder an was liegt das? Bei anderen funktioniert die ganze Sache doch auch?

mfg JPD
 

Dreamora

BeitragFr, Jul 29, 2005 0:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du eventuell ein kleines Source Beispiel dass das Problem auch hat?
Ich habe irgendwie das Gefühl, dass Problem rührt von etwas anderem her ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

JPD

BeitragFr, Jul 29, 2005 0:32
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, sourcebeispiel ... mal sehen ...

also hier mal wie ich so eine Wand meines Labyrinths generiere:

(Ein wenig ein Durcheinander, wegen reduzieren der Triangles)

Code: [AUSKLAPPEN]

V1b = AddVertex(surf1,0,1,0, 1, 0)
V3b = AddVertex(surf1,0,1,2, 0, 0)
V4b = AddVertex(surf1,0,0,0, 1, 1)
V6b = AddVertex(surf1,0,0,2, 0, 1)
AddTriangle(surf1,V3b,V1b,V4b)
AddTriangle(surf1,V6b,V3b,V4b)
EntityTexture walls(z),tex(2) ;Textur
UpdateNormals walls(z)
PositionEntity walls(z),(x*2)-2,0,(y*2)-2 ;Positionieren


... dürfte noch ok sein ...

dann die Tastatursteuerung braucht man hier ja nicht, was eventuell noch wichtig währe das: Wink


Code: [AUSKLAPPEN]

Graphics3D 1024,768,32,1
WBuffer 1
SetBuffer BackBuffer()

...

WireFrame 0

...

UpdateWorld()
RenderWorld()

...



der Rest ist die Berechnung des Labyrintes, Tastatursteuerung, der Boden, die Decke, Himmel, automatisches "Pathfinding", mehr steckt gar nicht dahinter ...

ich weiß echt nimmer weiter, das ganze würde mti Transparenz ehct nett aussehen ...

mfg JPD
 

Dreamora

BeitragFr, Jul 29, 2005 2:21
Antworten mit Zitat
Benutzer-Profile anzeigen
wbuffer bringt wie gesagt auf den meisten Systemen nix, die Zeile kannste insofern getrosst auskommentieren.

Die elementaren Dinge, die für solche Fehler verantwortlich sind, fehlen in den Source allerdings:
Die Teile wo LoadTexture mit Flag drin ist, wo EntityFX gesetzt wird und wo (was eigentlich für diesen Fall garnicht gebraucht wird) EntityOrder eingesetzt wird, denn der Source der hier steht wird in jedem Fall fehlerfrei funktionieren.

Denn bei deinem Bild sind es ja speziell 2 Dinge die Fehlerhaft zu sein scheinen: Das grüne was wohl himmel/boden sein soll und dann die grosse wand im Hintergrund ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

JPD

BeitragFr, Jul 29, 2005 9:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

also die Texturen lade ich so:

Code: [AUSKLAPPEN]

tex(1) = LoadTexture("wall.tga",2)
tex(2) = LoadTexture("boden.tga",2)
tex(3) = LoadTexture("decke.tga",2)


.. verwende ich hier anstatt TGA's BMP's und setze 2 auf 1, funktioniert das ganze ...

ich verstehs jetzt nun mal nicht warum das mit Transparenz nicht klappt ...

mfg JPD
 

Dreamora

BeitragFr, Jul 29, 2005 9:21
Antworten mit Zitat
Benutzer-Profile anzeigen
graphics ist 32bit? ansonsten gibts kein Alpha ausser "da" und "nicht da"

Alpha ist in der TGA vorhanden? (weiss nicht ob TGA irgendwo probleme hat, da ich selbst nur PNG nutze)

Der Fehler kommt mir langsam ein wenig komisch vor ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

JPD

BeitragFr, Jul 29, 2005 9:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich versuche jetzt mal folgendes:

- Vergleich TGA zu PNG
- Versuch mit EntityAlpha
- Meine ATI-Grafikkarteneinstellungen überprüfen

mfg JPD

JPD

BeitragFr, Jul 29, 2005 10:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Fehlgeschlagen,

es bringt nichts ... egal wie ich Transparent auf eine Wand bringe, es spinnt. Shocked

Eventuell hat irgendwer ne Lösung ... ich weiß echt nimmer weiter ...

mfg JPD Wink

x-pressive

BeitragDo, Aug 11, 2005 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist genau das gleiche Problem, das ich auch habe -das Problem taucht nur auf, wenn man Alpha-Channel PNGs mit Texturflag 2 (Alpha) lädt -was ja eigentlich der Sinn ist.

Sobald man eine Alpha-PNG-Textur auf ein Mesh legt, spielt dessen Z-Buffer verrückt und man weiss nicht mehr, wo hinten und wo vorne ist.

Der Tipp mit den .TGAs hilft hier -der Z-Buffer spielt nicht mehr verrückt, aber dafür benutzt Blitz (bei mir zumindest) keinen Alpha-Channel, sondern einfach die dunklen Farben.

Das ist eine monströse Einschränkung -und ich wundere mich, warum das so wenige bemerken? Arbeiten alle nur mit masked Textures? Sieht doch grottig aus.

Würde mich interessieren, ob JPD (order irgendjemand) inzwischen schon eine Lösung gefunden hat.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

Dreamora

BeitragDo, Aug 11, 2005 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir tratt das problem nie auf, bei allen Grass Systemen etc mit denen ich zu tun hatte auch nicht.
Informationen zu deinem Mesh wären von daher sicher von nutzen oder das mesh selbst das angeblich probleme macht.

Was TGA betrifft: ich denke du hast es ohne Alpha gespeichert womit Blitz aus "schwarz" alpha erzeugt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

x-pressive

BeitragFr, Aug 12, 2005 7:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Mesh:
Das tritt bei mir bei MD2-Dateien auf, aber auch bei selbsterzeugten Meshes. Ob es auch bei .3ds und .b3d auftaucht, müsste ich mal testen.

TGA:
Habe gerade mal gesehen, daß mein gutes altes PaintShop TGAs ohne Alphakanal exportiert. Da hat mich der Kumpel aber enttäuscht. Ich habe das Format immer selten benutzt, aber WENN es den Z-Buffer-Bug beheben würde, wäre es das vielleicht wert. Jetzt muß ich mir mal ein Konvertierungsprogramm suchen (PNG -> TGA), damit ich nicht extra auf PhotoShop umsteigen muß. Mal sehe, ob ACDSee oder IrfanView das können.

Ich teste jetzt noch mal, ob das mit TGAs, .3ds und .b3d auch auftritt.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Jan_

Ehemaliger Admin

BeitragFr, Aug 12, 2005 8:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, das Problem ist algemein bekannt,

dazu gibt es im Englischen Forum, Hilfe, schaut dort nach Z-Ordering.
eine 2. Möglichkeit ist, Multitexturing zu verwenden, wodurch die Texturen wieder das Z-Buffering wieder richten (testen, ich hatte das mal gemacht, aber irgendwo auf der Festplatte.)
between angels and insects

x-pressive

BeitragFr, Aug 12, 2005 8:54
Antworten mit Zitat
Benutzer-Profile anzeigen
* EDIT *

@Jan: Was meinst du genau mit Multitexturing? Die alpha-Textur auf einen anderen Layer legen? Würde mich schon interessieren, falls das den Fehler behebt. Exclamation
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group