หลังจากที่ในบทความก่อนหน้านี้ได้อธิบายถึงสีพื้นฐาน (base) และสีสเป็กคิวลาร์ (specular) ไปแล้ว (
https://phyblas.hinaboshi.com/20210915 และ
https://phyblas.hinaboshi.com/20210916)
คราวนี้มาต่อกันด้วยเรื่องของค่า
metalness (メタル性) ซึ่งเป็นค่าที่แสดงถึงความเป็นโลหะ
เมื่อลองเปิดดูแอตทริบิวต์อีดิเตอร์ จะพบว่าค่า metalness ปรากฏอยู่ที่ลำดับสุดท้ายของสีพื้นฐาน
แต่จริงๆเรื่องของความเป็นโลหะนั้นเกี่ยวเนื่องไปถึงสเป็กคิวลาร์ด้วย จึงขอแยกมาเขียนถึงหลังจากที่ได้ทำความเข้าใจทั้งส่วนของสีพื้นฐานและสีสเป็กคิวลาร์ไปแล้ว
เช่นเดียวกับบทความก่อนหน้านี้ คราวนี้เราจะลองมาทำการปรับค่าต่างๆแล้วเรนเดอร์เปรียบเทียบความแตกต่างของภาพที่ได้กันดู
สำหรับตัวอย่างคราวนี้จะใช้โมเดลฮารุซาเมะ (
春雨) (ที่มา
https://3d.nicovideo.jp/works/td27807)
ความเปลี่ยนแปลงไปตามค่าความเป็นโลหะ
ค่า metalness นั้นถ้าจะอธิบายง่ายๆก็คือค่าที่กำหนดระดับความเป็นโลหะของวัสดุนั้นๆนั่นเอง โดยปกติแล้วถ้าไม่ใช่โลหะจะให้เป็น 0 ถ้าเป็นโลหะก็จะเป็น 1 อาจมีบางกรณีเช่นสารที่มีความเป็นโลหะปนบางส่วนเช่นพวกสีทารถ แบบนั้นอาจใช้ค่าระหว่าง 0 ถึง 1
การปรับให้เป็นโลหะนั้นคือการทำให้เกิดสีสเป็กคิวลาร์เป็นสีเดียวกับสีพื้นฐานขึ้นมา ทำให้ดูระยิบระยับเป็นโลหะขึ้นมา ซึ่งส่วนนี้จะไปเสริมในส่วนของสเป็กคิวลาร์ พวกค่าดัชนีหักเหและความหยาบตรงนี้ก็ถูกกำหนดโดยคุณสมบัติในส่วนของสีสเป็กคิวลาร์ไปด้วย
ตัวอย่างเช่น ลองให้ค่าน้ำหนักของสเป็กคิวลาร์เป็น specular=0, specularIOR=1.5, specularRoughness=0.1 แล้วลองปรับค่า metalness เพิ่มขึ้นเรื่อยๆตั้งแต่ 0 จนถึง 1
จะเห็นว่ายิ่งค่าความเป็นโลหะมากขึ้นก็ยิ่งดูเหมือนเป็นโลหะ แสงที่สะท้อนมานั้นเป็นสีเดียวกับสีพื้นฐาน ซึ่งกำหนดสีตามเท็กซ์เจอร์
ในที่นี้ให้ specular=0 การสะท้อนทั้งหมดจึงเกิดขึ้นจากความเป็นโลหะทั้งหมด
เมื่อลองใช้พร้อมกับสเป็กคิวลาร์
ค่า metalness นั้นสามารถใช้ร่วมไปพร้อมกันกับส่วนของแสงสเป็กคิวลาร์ที่กำหนดในแผง specular
ลองทำแบบตัวอย่างที่แล้ว คือปรับค่า metalness เพิ่มขึ้นเรื่อยๆจาก 0 ถึง 1 แต่คราวนี้ให้ specular=1 และ specularColor เป็นสีขาว และ specularRoughness=0.1
จะเห็นว่าเริ่มต้นมาก็ดูมีความแวววาวเพราะสเป็กคิวลาร์ แต่แสงที่สะท้อนทั้งหมดนั้นเป็นสีขาว ดูแล้วไม่เหมือนการสะท้อนของผิวโลหะ แต่พอปรับค่าความเป็นโลหะมากขึ้น สีที่สะท้อนก็จะออกมาดูสมเป็นโลหะขึ้นมา
ความเปลี่ยนแปลงไปตามค่าความหยาบ
ความหยาบของสเป็กคิวลาร์ก็ส่งผลถึงความเป็นโลหะด้วย คราวนี้ลองให้น้ำหนัก specular=0 อีกที ให้แสงสเป็กคิวลาร์กำหนดด้วย metalness ทั้งหมด จากนั้นลองปรับ specularRoughness ตั้งแต่ 0 ไปจนถึง 1
ความเปลี่ยนแปลงไปตามค่า anisotropy
นอกจากความหยาบแล้ว ค่าอื่นๆเช่น specularAnisotropy ก็มีผลเมื่อใช้ metalness เช่นกัน
ลองให้ specularRoughness=0.2 แล้วปรับค่า specularAnisotropy ตั้งแต่ 0 ถึง 1 แล้วเทียบดู
เปรียบเทียบภาพที่มุมมองต่างๆ
สุดท้ายนี้ ลองปรับมุมกล้องดูจากมุมต่างๆเพื่อแสดงให้เห็นว่าผลจาก metalness ก็เปลี่ยนไปตามทิศทางของที่มอง
สำหรับตัวอย่างนี้ให้ specularRoughness=0.2, specularIOR=1.5, specularAnisotropy=0
จากตัวอย่างที่ลองทำมาจะเห็นได้ว่าเราสามารถจำลองผิวที่ดูระยิบระยับเหมือนโลหะได้โดยการปรับที่ค่า metalness และปรับค่าต่างๆในส่วนของ specular เพื่อให้ได้ผลการสะท้อนแสงเป็นไปตามที่ต้องการ