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

1

23.04.2008, 23:03

Modell / Effekt: Material transparent machen

Guten Abend

Nachdem ich bis jetzt immer ohne große Effekte gearbeitet habe, brauche ich nun einen für ein kleines Projekt. Dazu habe ich mit der mitgelieferten Demo von Milkshape ein Modell entworfen. Das besteht im Grunde aus 2 Teilen: Einem Haus und einem großen Viereck, was den Boden darstellt.
Nun soll der "Boden" am Ende wie eine Art quadratisches Raster aussehen (http://grafikladen.de/sites/wordpress/wp-content/uploads/2006/11/raster01.gif wobei weiß hier durchsichtig sein soll)
Dazu habe ich eine Textur, die aus einem einfachen quadratischen Rahmen und schwarzer Füllung besteht.
Zwar glaube ich, dass die Füllung mit Hilfe des ColorKeys transparent wird, aber dann sieht man an der Stelle die Eigenfarbe des Materials. Versuche ich, die Materialfarben unsichtbar zu machen, so verschwindet auch die Textur. Daher meine Frage:
Mit welchem Effekt schaffe ich es, dass die Textur zwar undurchsichtig (bis auf die Stellen die dem ColorKey entsprechen), das Material aber durchsichtig wird?
Und noch ein ähnliches Problem:
Wie schaffe ich es, dass die Textur in Originalgröße mehrfach nebeneinander auf das Viereck gezeichnet wird, anstatt über die ganze Fläche gestreckt?

Benutze natürlich die TriBase-Engine sowie den beigelegten ModelConverter (2. Auflage habe ich, falls das wichtig ist).

2

24.04.2008, 10:45

Hi mal wieder! :)

1. Möchtest du das Alphablending mit Shadern oder Fixed Function realisieren?

2. Idealerweise vergibst du die Texturkoordinaten bereits in Milkshape. Ansonsten müßtest du um zu kacheln (Textur wiederholen), die Texturkoordinaten per Code zuweisen.

3

24.04.2008, 14:28

hi :)

1)da bin ich eigentlich offen *G* Ist es denn möglich das Ganze nur mit Hilfe des Effektes zu realisieren? Ansonsten würde ich die einfachere Methode bevorzugen.

2)Wo vergibt man denn die Texturkoordinaten bei Milkshape? Hab nach so einer Einstellung vergeblich gesucht.

4

24.04.2008, 15:57

Alpha mit der Fixed Function Pipeline,
pinsel alles, was kleiner ist als weiß (FF bzw. 255):

C-/C++-Quelltext

1
2
3
4
5
6
7
Device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);                   
Device->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);
Device->SetRenderState(D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA);
Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

Device->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_LESS); // Kleiner, siehe Doku

Device>->SetRenderState(D3DRS_ALPHAREF, (DWORD)0xff); // Dein Farbwert

Probier mal, ob es das ist, was du suchst.

Milkshape verwende ich nicht und kann dir deshalb auch nichts zu den Texturkoordinaten sagen. In 3dsmax gibts dafür z.B. einen UVW-Map Modifier.

5

24.04.2008, 16:09

hi

Um in Milkshape den Texturkoordinaten - Editor aufzurufen drück "strg + T"
oder gehe zu Window->Texture Coordinate Editor .

Du musst aber vorher eine Gruppe mit zugewiesenem Material(Textur) auswählen, sonst bringt dir der schöne Editor auch nix ;)

Wenn du jetzt einfach alles auswählst und größer machst(skalierst), hast du eine schön gekachelte Fläche.

6

29.04.2008, 18:43

war übers Wochenende weg, daher hats ein bißchen länger gedauert, bis ich gucken konnte:

Also das mit den Texturkoordinaten hab ich hinbekommen. Aber das mit der Fixed Funktion Pipeline klappt vorne und hinten nicht:
Schon wenn ich einfach nur den Code oben einfüge, pinselt er mir das Modell schon nicht mehr und die Schrift (ich lasse mir 2 Vektoren in weiß aufs Bild schreiben, weil ich auch gerade an der Kamerasteuerung arbeite) wird auch nur sehr "aufgelöst" dargestellt. Bei jedem kleineren Wert bleibt der Bildschirm komplett schwarz!

7

29.04.2008, 20:59

Komisch... :) Hatte das doch getestet.

Bin mal anders vorgegangen:

1. Textur (DDS) mit dem DirectX Texture Tool erstellt, 512x512, A8R8G8B8
2. File -> Open Onto This Surface -> Deine Grafik, anschließend abspeichern

3. Textur mit D3DXCreateTextureFromFileEx geladen, Format D3DFMT_A8R8G8B8, ColorKey 0xFFFFFFFF

4. Rendern:

C-/C++-Quelltext

1
2
3
4
5
6
7
Device()->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE );                 
Device()->SetRenderState(D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA);
Device()->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

Device()->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
Device()->SetRenderState(D3DRS_ALPHAREF,  250);
Device()->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);

Nach dem Rendern AlphaBlend und AlphaTest wieder aus:

C-/C++-Quelltext

1
2
Device()->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE );           
Device()->SetRenderState(D3DRS_ALPHATESTENABLE,  FALSE);

Beweisstück A:

(Link)

(jeweils mit rotem und blauem Hintergrund/Backbuffer gerendert, weiß weg, schwarz bleibt...)

8

01.05.2008, 13:37

ok, ich werds so mal versuchen... weiß aber nicht ob ich dieses Wochenende noch zu komm. Liegt noch ne Menge Arbeit hier rum die getan werden muss^^

Werbeanzeige