Ende mit Blende ?!

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Ava

Gast

Betreff: Ende mit Blende ?!

BeitragFr, Nov 05, 2004 4:02
Antworten mit Zitat
Hallo!

Ich hab grad eine fürchterliche Entdeckung gemacht und würd gern wissen, woran DAS liegt !! Mad
Also folgendes: In meinem Projekt überlagern sich einige Objekte (und Texturen) mit unterschiedlichen Alphawerten und Blendmodi. Und scheinbar bin ich da gerade an eine mir bisher unbewusste Grenze gestossen ... Confused ... denn plötzlich funktioniert die Transparenz neuer Objekte nicht mehr und sie werden in max. Alpha angezeigt. Sad
Wenn ich die Blendvorgänge darunter reduziere (zb. 1-2 Texturen entferne), dann werden die darüberliegenden Objekte wieder ganz wie geplant angezeigt.

Woran liegt das?
Gibt es da einschränkungen innerhalb von BB3D?
Oder liegt es an meiner (eher schlechten) Grafikkarte?

Und kann ich diesen Fehelr irgendwie umgehen?!
(ohne auf Texturen und Alphaentitys zu verzichten! - davon ist nämlich jedes einzelne super wichtig !! Sad)

+ Ava +
 

Dreamora

BeitragFr, Nov 05, 2004 4:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du möchtest kannst du mir ne kompilierte Version mailen und ich teste obs an der Hardware liegt.

Sofern Mark in den letzten Patches nicht das interne verhalten total gedreht hat, könnts jedoch an Alpha + Multitexture liegen, dort gabs ja das eine oder andere Problem.

Wenn du übrigens ne schwache Grafikkarte hast, könnte speziell der Textureblendmode 5 Probleme machen, hatte mit dem auf meiner Geforce 4MX auch die grössten Probleme, wenn er zusammen mit "zuvielen" anderen Blends kommt, dann drehen die blends total durch.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Slope

BeitragFr, Nov 05, 2004 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst vielleicht bei allen Objekte die hinter der Kamera liegen und zu weit weg sind, den Alphawert wieder auf 1 setzen. Dann werden die anderen die man sieht evtl. richtig dargestellt. Müsste Speicherplatz sparen.

nur so' ne Idee. Smile
 

Ava

Gast

BeitragFr, Nov 05, 2004 15:53
Antworten mit Zitat
Nee, also der Fehler tritt nur auf, wenn sich die Objekte überlagern ! (also primär wenn etwas über meiner Karte / meinem Terrain liegt). Ich habe das als erstes bei meiner transparenten "Minimap" beobachtet, konnte dort aber das Problem lösen, indem ich den Blendmode von 1 auf 3 umgestellt habe (warum auch immer es dann funktioniert hat ist mir ein Rätsel). Dann habe ich angefangen, einen transparenten Mapcursor zu erstellen, und auch bei diesem funktionierte die Transparenz nicht mehr. Wenn ich im Terrain eine der drei Texturen deaktiviere, klappt es (aber das sit ja nicht Sinn der Sache!). Mittlerweile habe ich auch dort durch einen Trick einen Teil des Problems gelöst: Ich habe die Entity-Order meines Cursors auf -1 umgestellt, nun wird er wenigstens in Camera 1 vernünftig angezeigt ! (in Camera 2 fehlt noch immer die Transparenz Mad).

Also ich find das total schrecklich, ich kann soo nicht arbeiten !!

Weis denn niemand einen Rat ?! kennt jemand anderes ähnliche Probleme ? (ist das n BB Bug ?!)


@Dreamora
Dein Angebot ist sehr nett. Ich muss mal gucken ob es mir möglich, dass Problem irgendwie zu isolieren und Dir eine Datei davon zu geben. (weil sonst ist das alles n bissel viel, weil schon viele Grafikdateien und 3D-Modelle eingebunden sind). Confused
 

Dreamora

BeitragFr, Nov 05, 2004 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab sonst ein grosses Mailfach.

Haben die Texturen auf dem Terrain spezielle Textureblendmodes?
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Ava

Gast

BeitragFr, Nov 05, 2004 20:50
Antworten mit Zitat
Was meinst du mit "speziell" ?

Also bevor Du es vorhin gepostet hasttest, wusste ich noch gar nicht, dass es nen 4ten und 5ten Mode gibt !! *g*

Texturlayer 2+3 haben jeweils Blendmode 2. Der unterste ist natürlich auf standard.

*hm hm hm*

eizdealer

BeitragSo, Nov 07, 2004 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Könntest du einen Screen posten?

So was ich im überfliegen mitbekommen habe, könnte ich mir vorstellen, woran es liegt:
Alphaobjekte (EntityAlpha oder EntityFX 32) haben untereinander kein ZOrder sorting.
Ein bisschen was zur Theorie: Bei "normalen" Objekten wird ja schon seit Jahren der ZBuffer benutzt. Dieser prüft, ob der gerenderte Pixel auch wirklich gerendert werden muss und nicht vorher gerenderte Objekte, die im Vordergrund sind, auf diesen Pixel gerendert wurden.
Bei Alphaobjekten sieht das ganz anders aus, weil ja immer alle Objekte auf den Pixel gerendert werden müssen, um ein korrektes Ergebnis zu erreichen (schließlich siehst du durch den Pixel "durch" auf die anderen Objekte dahinter). Wenn jetzt aber das Objekt im Vordergrund zuerst gerendert wird und anschließend das Objekt im Hintergrund, ist es natürlich klar, dass Grafikfehler auftreten. Wenn das Objekt im Vordergrund allerdings ebenfalls in den ZBuffer schreiben würde, hätte es folglich keine korrekte Durchsichtbarkeit.
-> Alphaobjekte lesen nur ZBuffer und beschreiben ihn nicht

Also gibt es für dieses Problem keine Hardwarelösung. Das hat übrigens nichts mit Blitz zu tun, das ist in C++ und in allen anderen Sprachen genauso. Eine (aufwändige und langsame) Möglichkeit, das zu verhindern, gibt es aber trotzdem: Vor jedem Rendern müsstest du alle Objekte untereinander auf Entfernung zur Kamera prüfen, sortieren und anschließend in der Reihenfolge der Entfernung alle Triangles wieder neu erstellen. Das ist übrigens auch der Grund, warum Partikel Engines relativ langsam sind.

Meiner Meinung nach hätte es schon längst eine integrierte Hardwarelösung in den neueren GraKas geben müssen.

Ach und wenn's das nicht war, ist es doch gut, dass das mal im deutschen Forum geschrieben wurde. Ist eine ziemlich blöde Sache...
 

Ava

Gast

BeitragSo, Nov 07, 2004 20:47
Antworten mit Zitat
Ja, es ist auf jeden Fall eine verdammt blöde Sache! Und ich danke Dir für Deinen ausführlichen Beitrag! Smile

Der Fehler mit der Transparenz scheint aber wirklich von meiner Hardware abhängig zu sein, denn zumindest das Problem mit dem Alphablending trat bei Dreamora (der so gut war, mal einen Blick in das Programm zu werfen) nicht auf!

Ich denke es liegt auch daran, dass meine Grafikkarte nur 2 TexUnits unterstützt ?!

Allerdings habe ich mittlerweile eine ganze Menge kleinerer Fehler in der Darstellung, die dann auch bei Dreamora auftraten.

Bespielsweise werden einige Objekte nicht oder nur teilweise gezeichnet, obwohl diese durch keine anderen Objekte verdeckt sind (und auch nicht ausserhalb der Camera/Reichweite liegen!). Die Teilausschnitte, die gezeichnet werden, verändern sich mit der CameraPosition. Wenn ich das (Mesh)Terrain verstecke, auf dem sich die Objekte befinden, dann tritt dieser Fehler nicht mehr auf.

Keine Ahnung, vielleicht habe ich auch zu wenig Speicher, dass Blitz3D nicht mehr vernünftig klar kommt?! Sad

Jedenfalls habe ich mein Projekt wieder eingestampft. Ich konnte nach drei Tagen intensives rumprobieren die Probleme nicht beheben. Ich werde nun noch einmal alles von grundauf neu schreiben und wenn die Fehler dann wieder auftreten, hat sich Blitz3D für mich erledigt! Mad
 

Ava

Gast

BeitragMo, Nov 08, 2004 1:27
Antworten mit Zitat
Ich habs nun zum Austesten noch einmal ganz simpel mit Primitives gemacht. Das Ergebnis ist das selbe: die Objete verschwinden teilweise oder sogar gänzlich. Ich habe aber mittlerweile heraus gefunden, dass es wirklich nur an dem Alphawert bzw. dem Blendmode liegt.

Also muss ich mich wohl geschlagen geben und damit abfinden? oder eben auf Alpha/Blending verzichten ... Confused
(das wird dann natürlich ein sehr spektukuläres Spiel: ich freue mich schon auf schwarz-eingerahmte Explosionseffekte! Rolling Eyes)

Immerhin scheint es bei Maskierungen keine Probleme zu geben. Ja, immerhin ... Confused
 

Ava

Gast

BeitragDi, Nov 09, 2004 0:38
Antworten mit Zitat
Problem vorerst gelöst! (hätte nicht mehr daran geglaubt!)

Arrow Auslöser der Schwierigkeiten war ein EntityFX 32 Flag. Ohne den scheinen nun alle Objekte fehlerfrei angezeigt zu werden. *puh*

(aber warum ist sowas nirgendwo dokumentiert? Confused)

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group