Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Setiap wajah dalam jala memiliki vektor normal unit tegak lurus, seperti yang ditunjukkan dalam ilustrasi berikut. Arah vektor ditentukan oleh urutan di mana simpul didefinisikan dan oleh apakah sistem koordinat bertangan kanan atau kiri. Wajah normal menunjuk jauh dari sisi depan wajah. Di Direct3D, hanya bagian depan wajah yang terlihat. Wajah depan adalah salah satu di mana simpul didefinisikan dalam urutan searah jarang.
Setiap wajah yang bukan wajah depan adalah wajah belakang. Direct3D tidak selalu merender wajah belakang; oleh karena itu, wajah belakang dikatakan dimusnahkan. Anda dapat mengubah mode pemusnahan untuk merender kembali wajah jika anda mau. Lihat Culling State (Direct3D 9) untuk informasi selengkapnya.
Direct3D menggunakan unit puncak normal untuk efek bayangan, pencahayaan, dan teksur Gouraud. Ilustrasi berikut menunjukkan contoh normal.
Saat menerapkan bayangan Gouraud ke poligon, Direct3D menggunakan normal verteks untuk menghitung sudut antara sumber cahaya dan permukaan. Ini menghitung nilai warna dan intensitas untuk simpul dan menginterpolasinya untuk setiap titik di semua permukaan primitif. Direct3D menghitung nilai intensitas cahaya dengan menggunakan sudut. Semakin besar sudutnya, semakin sedikit cahaya yang bersinar di permukaan.
Jika Anda membuat objek yang datar, atur puncak normal untuk menunjuk tegak lurus ke permukaan, seperti yang ditunjukkan dalam ilustrasi berikut.
Namun, kemungkinan besar, objek Anda terdiri dari strip segitiga dan segitiga tidak koplanar. Salah satu cara sederhana untuk mencapai bayangan halus di semua segitiga dalam strip adalah dengan terlebih dahulu menghitung vektor normal permukaan untuk setiap wajah poligonal yang terkait dengan vertex. Puncak normal dapat diatur untuk membuat sudut yang sama dengan setiap permukaan normal. Namun, metode ini mungkin tidak cukup efisien untuk primitif yang kompleks.
Metode ini diilustrasikan oleh diagram berikut, yang menunjukkan dua permukaan, S1 dan S2 terlihat edge-on dari atas. Vektor normal untuk S1 dan S2 ditampilkan dalam warna biru. Vektor normal puncak ditampilkan dengan warna merah. Sudut yang dilakukan vektor normal verteks dengan permukaan normal S1 sama dengan sudut antara vertex normal dan permukaan normal S2. Ketika kedua permukaan ini menyala dan berbayang dengan bayangan Gouraud, hasilnya adalah tepi yang berbayang halus dan bulat di antara mereka.
Jika puncak normal condong ke salah satu wajah yang terkait dengannya, itu menyebabkan intensitas cahaya meningkat atau berkurang untuk titik-titik pada permukaan itu, tergantung pada sudut yang dihasilkannya dengan sumber cahaya. Diagram berikut menunjukkan contoh. Sekali lagi, permukaan-permukaan ini terlihat edge-on. Vertex normal condong ke S1, menyebabkannya memiliki sudut yang lebih kecil dengan sumber cahaya daripada jika vertex normal memiliki sudut yang sama dengan permukaan normal.
Anda dapat menggunakan bayangan Gouraud untuk menampilkan beberapa objek dalam adegan 3D dengan tepi tajam. Untuk melakukannya, duplikat vektor normal verteks di persimpangan wajah mana pun di mana tepi tajam diperlukan, seperti yang ditunjukkan dalam ilustrasi berikut.
Jika Anda menggunakan metode DrawPrimitive untuk merender adegan Anda, tentukan objek dengan tepi tajam sebagai daftar segitiga, bukan strip segitiga. Saat Anda mendefinisikan objek sebagai strip segitiga, Direct3D memperlakukannya sebagai poligon tunggal yang terdiri dari beberapa wajah segitiga. Gouraud shading diterapkan baik di setiap wajah poligon dan antara wajah yang berdekatan. Hasilnya adalah objek yang dinaungi dengan lancar dari wajah ke wajah. Karena daftar segitiga adalah poligon yang terdiri dari serangkaian wajah segitiga yang terputus-putus, Direct3D menerapkan bayangan Gouraud di setiap wajah poligon. Namun, itu tidak diterapkan dari tatap muka. Jika dua atau beberapa segitiga dari daftar segitiga berdekatan, mereka tampaknya memiliki tepi tajam di antara mereka.
Alternatif lainnya adalah mengubah ke bayangan datar saat merender objek dengan tepi tajam. Ini secara komputasi metode yang paling efisien, tetapi dapat mengakibatkan objek dalam adegan yang tidak dirender secara realistis seperti objek yang berbayang Gouraud.
Topik terkait