health

[tahir][bigposts]

vehicles

[tahir][bigposts]

business

[tahir][bigposts]

Game maker 3D dersleri 9:Aydınlatma ekleme

Aydınlatma
Yukarıdaki işlevlerle çizdiğiniz sahneler, ışık olmadığı için oldukça düz görünmektedir. Yüzler eşitse, yönlerinden bağımsız olarak renk. Daha gerçekçi görünümlü sahneler oluşturmak için, aydınlatmayı etkinleştirmeniz ve ışıkları doğru yerlere yerleştirmeniz gerekir. Doğru aydınlatılmış sahneler oluşturmak kolay değildir, ancak efekt çok iyidir.
Aydınlatmayı etkinleştirmek için aşağıdaki işlevi kullanabilirsiniz;


d3d_set_lighting (etkin) Aydınlatma kullanımını etkinleştirir veya devre dışı bırakır.

Işık kullanırken, bir poligonun her köşesi için renk belirlenir. Ardından, iç piksellerin rengi bu köşelerin rengine dayanır. Bunun yapılabilmesi için iki yol vardır: Ya tüm çokgen aynı renk alır ya da renk çokgen üzerinde sorunsuz bir şekilde enterpolasyonludur. Varsayılan pürüzsüz gölgelendirme kullanılır. Bu, aşağıdaki işlev kullanılarak değiştirilebilir:


d3d_set_shading (pürüzsüz) Yumuşak gölgelendirmenin kullanılıp kullanılmayacağını ayarlayın.

Aydınlatmayı kullanmak için açık bir şekilde ışıkları tanımlamanız gerekir. İki farklı ışık vardır: yönlü ışıklar (güneş gibi) ve konumsal ışıklar. Işığın bir rengi vardır. (Sadece diffüz ışığı değil, speküler yansımayı destekliyoruz.) Işıkları tanımlamak ve kullanmak için aşağıdaki fonksiyonlar mevcuttur:


d3d_light_define_direction (ind, dx, dy, dz, col) Yönlendirilen ışığı tanımlar. ind, ışığın indisidir (küçük bir pozitif sayı kullanın). (dx, dy, dz) ışığın yönüdür. col ışığın rengidir (çoğunlukla c_white kullanmak istersiniz.) Bu işlev ışığı açmaz.
d3d_light_define_point (ind, x, y, z, aralık, col) Bir nokta ışığı tanımlar. ind, ışığın indeksi küçük bir pozitif sayıdır). (x, y, z) ışığın pozisyonudur. aralık, ışığın ne kadar uzandığını gösterir. Işığın yoğunluğu bu aralıkta azalacaktır. col ışığın rengi. Bu işlev ışığı açmaz.
d3d_light_enable (ind, enable) Işık numarasını ind (etkinleştir) (true) veya devre dışı bırakır.

Bir nesnenin ışığı yansıttığı yol, ışık yönü ile yüzeyin normali arasındaki açıya, yani yüzeyden uzağa işaret eden vektöre bağlıdır. Bu nedenle, aydınlatılmış nesneler yaratmak için yalnızca köşelerin konumunu değil normallerini de sağlamanız gerekir. Bu dört ilave fonksiyon için ilkellerin köşe noktalarını tanımlamak mümkündür:


d3d_vertex_normal (x, y, z, nx, ny, nz) Normal vektörle (nx, ny, nz) ilkel değere köşe (x, y, z) ekleyin.
d3d_vertex_normal_color (x, y, z, nx, ny, nz, col, alfa) Normal vektörle (nx, ny, nz) ve kendi rengi ve alfa değeriyle ilkel öğeye vertex (x, y, z) ekleyin .
d3d_vertex_normal_texture (x, y, z, nx, ny, nz, xtex, ytex) Normal vektörle (nx, ny, nz) ve (xtex, ytex) konumu ile ilkel değere vertex (x, y, z) ekleyin dokuda, daha önce ayarlanmış olan renk ve alfa değeriyle harmanlanır.
d3d_vertex_normal_texture_color (x, y, z, nx, ny, nz, xtex, ytex, col, alfa) Normal vektörle (nx, ny, nz) ve konumla (ilkel) vertex (x, y, z) ekleyin. xtex, ytex) dokusunda, kendi rengi ve alfa değeriyle harmanlanır.

Normal çizilebilecek temel şekiller için otomatik olarak doğru şekilde ayarlanmış olduğunu unutmayın.

No comments:

Post a Comment