Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 09.11.2004, 12:46 Titel: Textur transparent |
|
|
Ich hoffe, dass ich jetzt nicht wieder die Antwort kriege, dass es dafür schon einen Thread gibt. Hab wirklich gesucht, aber komm nicht wirklich weiter.
Ich will auf einen Würfel 2 Texturen aufbringen. Soweit klappt das auch. Die obere Textur ist eine png Datei mit transparent. Von der Textur werden jetzt alle Transparenten Pixel schwarz dargestellt. Ich hab glaub ich schon bald sämtliche Renderstates durchprobiert, aber ich behalte immer diese Pixel schwarz.
Was muss ich machen, damit die pixel die in der Grafikdatei transparent sind, auch auf meinem Würfel transparent sind? _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 09.11.2004, 13:08 Titel: |
|
|
Hast du ein Projekt wo die transparenten Bereiche der PNG-Datei transparent dargestellt werden?
Probier es mal mit einem anderen Format. Am besten .tga |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 09.11.2004, 13:26 Titel: |
|
|
Ah, war ein guter tipp.
Ich hatte es im Photoshop als png-24 gespeichert. Jetzt als png-8 klappts mit der transparenz.
Danke sehr!  _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
Otscho Super JLI'ler

Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 11.12.2006, 18:20 Titel: |
|
|
Ich hab auch das Problem, nur hab ich eine png-Datei ohne Alphakanal. Ich möchte, dass das, was Schwarz ist 100%ig tansparent dargestellt wird.
Im 2D-Bereich klappt das auch mit Sprites, nur im 3D-Bereich nicht. Da wird das auch einfach nur schwarz dargestellt. |
|
Nach oben |
|
 |
Dr. Best Senior JLI'ler

Alter: 35 Anmeldedatum: 17.06.2004 Beiträge: 269 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 11.12.2006, 19:09 Titel: |
|
|
Wenn du die D3DX Funktionen zum Laden der Textur verwendest (D3DXCreateTextureFromFileEx) brauchst du einfach nur 0xFF000000 für den parameter ColorKey übergeben. |
|
Nach oben |
|
 |
Otscho Super JLI'ler

Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 11.12.2006, 20:34 Titel: |
|
|
Ich hab zum testen auch schon gemacht und wie gesagt funktioniert das mit dem Texturenladen schon, nur wenn es darum geht Texturen auf ein 3D-Object zu rendern wird der Alpha-Kanal nicht berücksichtigt.
Weiß jemand zufälligerweise was man beim Rendern von Primitives alleseinstellen muss, damit mein Alphakanal berücksichtigt wird ?
Denn das wäre herrlich.
Vielleicht poste ich mal meinen bisherigen Code, doch der befindet sich gerade auf einem anderen Rechner. |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 12.12.2006, 01:28 Titel: |
|
|
Du musst den entsprechenden Renderstate setzen. Ich weiß zwar gerade nicht mehr genau, wie er heißt, aber in der DirectX-Doku wirst du das sicher finden  _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 12.12.2006, 15:11 Titel: |
|
|
ALPHABLENDENABLE war glaube ich eins davon. Ich was den Präfix net mer genau, aber sollte sich ja was zu finden lassen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Dr. Best Senior JLI'ler

Alter: 35 Anmeldedatum: 17.06.2004 Beiträge: 269 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 12.12.2006, 17:06 Titel: |
|
|
Kleiner Auszug aus dem Code meiner Engine:
CPP: | // Setup the render states
// The render states which are important for proper alpha blending
pGlobal->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
pGlobal->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
pGlobal->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
pGlobal->SetRenderState(D3DRS_ALPHATESTENABLE,true);
pGlobal->SetRenderState(D3DRS_ALPHAREF,0x0F);
pGlobal->SetRenderState(D3DRS_ALPHAFUNC,D3DCMP_GREATEREQUAL);
// Set up the texture stage states
pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
|
|
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 13.12.2006, 16:25 Titel: |
|
|
für das einfache Benutzen des ColorKeys, also das ersetzen durch transparenz, sind nur die ersten drei RenderStates, die Dr.Best geschrieben hat, nötig. Das andere sind kleine Zusätze, wichtig fürs "richtige" Alpha blending. Und nach dem Rendern net vergessen, das wieder zurückzusetzen, wenn das in deinem Projekt nicht egal ist.
Gruß DXer |
|
Nach oben |
|
 |
Otscho Super JLI'ler

Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 14.12.2006, 18:07 Titel: |
|
|
Danke für die Hilfe. Werds gleich mal ausprobieren und schauen wie das wirkt. |
|
Nach oben |
|
 |
Otscho Super JLI'ler

Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 15.12.2006, 15:47 Titel: |
|
|
Ich habs jetzt endlich ausprobiert und es funtzt eigentlich ganz prima.
Nur hat mich das zuerst etwas verwirrt.
Dr. Best hat Folgendes geschrieben: | CPP: | // Set up the texture stage states
pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
|
|
Wenn man das verwendet wird nur eine bestimmte Textur so halbtansparent und viele andere Texturen funzen überhaupt nicht mehr. Drum hab ich das einfach weggelassen. Aber was mich schon noch interessiert : CPP: | pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); |
lässt sich das genauso ferwenden wie eine Modulate-Farbe bei Sprites ? |
|
Nach oben |
|
 |
Dr. Best Senior JLI'ler

Alter: 35 Anmeldedatum: 17.06.2004 Beiträge: 269 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 15.12.2006, 17:32 Titel: |
|
|
Dieser Codeschnippsel bedeutet, dass man D3D (bzw. meiner Engine, deswegen pGlobal statt lpD3DDevice) mitteilt, dass es den Alphawert der Diffusecolor nehmen soll und den Alphawert des jeweiligen Texels der Textur um diese beiden dann zusammen zu multiplizieren um den endgültigen Alphawert des Pixels zu erhalten. Der Alphawert der Diffusecolor ist entweder der Wert den man im D3DMATERIAL9 als Alpha angegeben hat oder der Wert der im Vertexshader berechnet wurde. |
|
Nach oben |
|
 |
Otscho Super JLI'ler

Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 16.12.2006, 16:14 Titel: |
|
|
Gäb es da irgend eine Methode, mit der man nachträglich die Farbe eines Meshes verändern kann, so wie es bei Sprites möglich ist ? |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 16.12.2006, 17:22 Titel: |
|
|
Otscho hat Folgendes geschrieben: | Gäb es da irgend eine Methode, mit der man nachträglich die Farbe eines Meshes verändern kann, so wie es bei Sprites möglich ist ? |
Hmm, du kannst halt Vertex-weise Farben vergeben, die dann interpoliert werden. Das musst du dann aber auch in der Vertex-Struktur angeben(D3DFVF_DIFFUSE mitangeben). Ansonsten kannst du natürlich auch die Farbe der Textur ändern (geht sicher auch mit Shadern).
Bin mir nicht sicher, obs noch eine einfachere Möglichkeit gibt  _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
|