Normal mapping

จากวิกิพีเดีย สารานุกรมเสรี
(a) นอร์มอลแมพ สร้างจากโมเดล (b) และใช้ UV จาก (c) โดยค่าสีใน 3 channel (RGB) ของแต่ละ pixel จะถูกนำมาเปลี่ยนเป็นค่า XYZ เพื่อนิยามค่าเวกเตอร์ของ normal ในแต่ละจุดบนพื้นผิวของโพลีกอน (b) โมเดลประกอบขึ้นจากสามเหลี่ยม (หรือ tri) 78,642 ชิ้น (c) โมเดลที่ถูกลดรายละเอียดจาก (b) เหลือสามเหลี่ยม 768 ชิ้น (d) โมเดลเดียวกับ (c) 768 ชิ้น แต่เร็นเดอร์โดยใช้นอร์มอลแมพจากภาพ (a)

normal mapping เป็นการใช้ texture ให้ค่า normal บนแต่ละจุดบนโพลีกอนชิ้นหนึ่งๆ โดยจะทำให้การสะท้อนแสงตรงจุดนั้นเปลี่ยนไป ซึ่งจากหลักการนี้ทำให้เราสามารถสร้างภาพลวงตา เพื่อช่วยให้โมเดลสามมิติที่มีความละเอียดต่ำดูเหมือนมีรายละเอียดมากขึ้นทั้งที่มีจำนวนโพลีกอนเท่าเดิม

การคำนวณ[แก้]

การคำนวณแสงสะท้อนแบบ Lambertian (หรือ diffuse) ซึ่งไม่ขึ้นกับทิศทางผู้มองนั้นหาค่าความสว่างได้จากผลคูณจุดของเวกเตอร์หนึ่งหน่วยจากจุดที่จะให้สีไปยังจุดกำเนิดแสง กับเวกเตอร์หนึ่งหน่วยนอร์มอลตรงจุดที่จะให้สีนั้น ผลที่ได้คือค่าความเข้มหรือความสว่างของแสงที่จุดนั้น

I_{D}=\mathbf{L}\cdot\mathbf{N}*C*I_{L}

I_{D} ค่าความเข้มแสงที่สะท้อนแบบ diffuse, \mathbf{L} ค่าเวกเตอร์หนึ่งหน่วยจากจุดตกกระทบไปยังจุดกำเนิดแสง, \mathbf{N} ค่านอร์มอลเวกเตอร์หนึ่งหน่วย, C สี และ I_{L} คือความเข้มแสงขาเข้า

ดูเพิ่ม[แก้]