Átlátszó tárgyak

Ebben a cikkben szeretnék egy ilyen figyelemre méltó hatást átláthatóbbá tenni. Számos módja van a jelenet átláthatóságának növelésére, és fontolja meg közülük többet. de egy kicsit később, először szeretnék egy kicsit elmenni a témáról, és megmondanék, hogyan készült a példa, így később nem voltak felesleges kérdések;)

Nem zavarja, hogy az írás alkalmazás keretrendszer, szoktam D3DFramework, ami jön DX9SDK és fel lehet használni, hogy könnyen teremt szerény alkalmazások (mint a miénk). A keret létrehozásához a DX9Appwizard-t használtam.

Továbbá, mivel én vagyok rettenetesen lusta ember, a doboz, amely fel van húzva a példa, nem akartam felhívni rendezi és használt D3DXCreateBox () függvényt. Ezután segítségével CloneMesh () metódus interfész ID3DXMesh tettem a dobozt a jobb vertex formában, az úton, a vertex formátum bemutatása nem a FVF és segítségével Vertex Nyilatkozat (ha bármilyen kérdése van ebben a kérdésben, kérem a fórum, beszélgetés :). Szintén felhívtam a hátteret, hogy világosabban láthassam e vagy a módszer munkáját.

Mint minden, amit elmondtak, tényleg a lényegre!

Az alfa blendelés olyan képeket jelenít meg, amelyekben átlátszó vagy félig átlátszó képpontok vannak. A piros, zöld és kék színkomponens mellett minden pixelnek van egy "átlátszó" komponense, amely népszerű az alfa-csatorna. Az alfa-csatorna általában ugyanannyi bitgel rendelkezik, mint a fő színcsatorna. Például, nyolc-bites alfa csatorna lehet 256 szintű átláthatóság, 0-tól (teljesen átlátszó pixel) és 255 (pixel nem teljesen átlátszó).

Az alfa-keverés engedélyezéséhez a Direct3D-ben be kell állítania a D3DRS_ALPHABLENDENABLE paramétert TRUE értékre:

A Direct3D-ben a szín megadható egy alfa-csatorna (RGBA) és anélkül is (RGB). Az átlátszóság lehet csúcsok, anyag, textúrában. A keretpuffer használatával is végezhet néhány effektust.

Nézzük ezeket a módszereket részletesebben.

A módszer neve önmagáért beszél. Az alfa csatornát az objektum minden csúcsán tároljuk. A módszer engedélyezéséhez be kell állítania a D3DRS_DIFFUSEMATERIALSOURCE paramétert a D3DMCS_COLOR1-ben. Ezzel világossá tesszük, hogy a vertex adatokból színt akarunk használni, nem pedig anyagból.

Vegyük fontolóra, hogy mit jelentenek ezek a paraméterek:
D3DRS_DIFFUSEMATERIALSOURCE - meghatározza a szín forrását a világítás számításához. Lehetséges a következő értékek:
D3DMCS_MATERIAL - az aktuális anyag színét használja
D3DMCS_COLOR1 - diffúz színt használ a csúcsról
D3DMCS_COLOR2 - a csúcsból származó specularis színt használ
Az alapértelmezett érték a D3DMCS_COLOR1.

Továbbá meg kell engednünk a Direct3D-nek, hogy szeretnénk, ha a csúcsfesték részt vesz a világítási számításban. Ez a következőképpen történik:

Alapvetően ez az állapot alapértelmezetten IGAZ, de szükség van tűzoltókra.

Most pedig egy alfa-csatornát kell hozzáadnunk a doboz minden csúcsához:

Az alfa csatornát az első pár szám adja meg. A kényelem érdekében használhatja a D3DCOLOR_ARGB makrót (alfa, piros, zöld, kék). Minden makróparaméter értéke 0 és 255 között lehet.

Nem gondolom részletesen a csúcsok formátumát, mert ez nem felel meg a cikk témájának, de megismétlem, ha vannak kérdések, akkor megkérdezem a fórumot, feltétlenül válaszolok.

Ez az egész, most, miután megteremtettük a renderelő csővezeték szükséges állapotát, felhívjuk a dobozunkat:

És itt az eredmény:

Átlátszó tárgyak

Az alfa csatornát az anyagban is meghatározhatjuk. Ehhez hozzon létre egy anyagot, amely tartalmazza azt:

A módszer engedélyezéséhez állítsa a D3DRS_DIFFUSEMATERIALSOURCE értéket a D3DMCS_MATERIAL mezőbe:

Ez minden. Felejthetetlen az anyagunk felszereléséhez, rajzoljon egy dobozt, és nézze meg, mi történt.

Átlátszó tárgyak

Kapcsolódó cikkek