เครื่องตัดโลหะที่สมจริง


13

คุณจะสร้าง shader โลหะที่ดีได้อย่างไร

สำหรับโลหะที่แตกต่างกันและพูดมากหรือน้อยก็กัดเซาะ / เป็นสนิมและอื่น ๆ

ฉันรู้ว่าแตกต่างจากวัสดุธรรมดาคือโลหะควร 'สี' แสง specular แต่เมื่อฉันทำเช่นนั้นด้วยทองคำมันก็ดูเหมือน "สีเหลือง" ไม่ใช่โลหะเลย

ความช่วยเหลือใด ๆ ชื่นชม!


1
คำถามของคุณดูเหมือนจะเป็นสิ่งที่เรียบง่ายและเฉพาะเจาะจง แต่ก็ไม่จริง คุณไม่สามารถจำลองรูปลักษณ์โลหะได้ด้วย shader เพียงอย่างเดียว การทำเช่นนั้นต้องใช้พื้นผิวที่เหมาะสมดังนั้นคุณจำเป็นต้องมีพื้นผิวมันวาวแบบ specular อาจเป็นแผนที่ชนหากโลหะผิดปกติ ฯลฯ หากโลหะขัดเงาในระดับใดคุณต้องสะท้อนสภาพแวดล้อม (หรือภาพล้อเลียนบางส่วน) เป็น ดี. ไม่ใช่เรื่องง่าย "นี่คือปัญหาของรหัส shader โลหะ"
Nicol Bolas

ดูเรื่องของการสะท้อนแสงแบบแอนไอโซทรอปิกด้วยปรากฏการณ์ที่มักจะเห็นในโลหะที่ถูกแปรง
David Gouveia

@ David: ที่มีลักษณะเย็นจริงๆบางทีมันอาจจะเป็น overkill บิตสำหรับฉันในขณะนี้ แต่แน่นอนฉันจะตรวจสอบมันออกมาและใช้มันหากฉันสามารถ :-)
Valmond

@Nicol ขอบคุณสำหรับความคิดเห็นฉันตกลงโดยสมบูรณ์กับการใช้พื้นผิว shader 'ปกติ' ของฉันประกอบด้วย 3: Diffuse, Glow และ controlmap รวมถึง Specular, Spec-power และการสะท้อน (จากแผนที่ลูกบาศก์)
Valmond

การค้นหาอย่างรวดเร็วทำให้เกิดเฉดโลหะที่แตกต่างกันมากมายและส่งตรงจากปากม้า: developer.download.nvidia.com/shaderlibrary/webpages/…
Patrick Hughes

คำตอบ:


4

ฉันเพิ่งสร้างเฉดสีสำหรับโลหะที่สะอาดและแปรงสำหรับเกมของฉันและฉันมีความสุขมากกับผลลัพธ์

โลหะสะอาด: คุณลักษณะที่สำคัญที่สุดในการทดลองของฉันคือการสะท้อนสภาพแวดล้อมด้วยแผนที่ลูกบาศก์ ฉันปรับใช้พวกเขาด้วยสภาพแวดล้อมแบบเรียลไทม์ระหว่างการเรนเดอร์กับพื้นผิว แต่บ่อยครั้งที่ภาพนิ่งจะให้ผลลัพธ์ที่ดีและทำให้เบลอง่ายขึ้น คุณสมบัติที่สำคัญที่สุดลำดับที่สองคือเอฟเฟ็กต์เฟรส (fresnel effect) ซึ่งทำให้ silhuettes ของวัตถุดีขึ้น ตัวอย่างนี้ให้มุมมองที่กลมสำหรับลูก ไม่จำเป็นต้องใช้แสงแบบพิเศษเนื่องจากแผนที่ลูกบาศก์สามารถให้ไฮไลต์ได้โดยตรง การเรนเดอร์ HDR เป็นสิ่งสำคัญเช่นกันเพื่อทำให้การสะท้อนแผนที่คิวบ์ดูดี

แปรงโลหะ: สำหรับโลหะแปรงคุณได้ผลลัพธ์ที่ดีค่อนข้างง่ายโดยใช้พื้นผิวแปรงสิ่งนี้พร้อมกับแสงแบบแอนไอโซทรอปิก สำหรับแสงแบบแอนไอโซโทรปิกคุณสามารถหาบทช่วยสอนได้จากเว็บ แต่ฉันใช้ตัวเองโดยใช้ blinn-phong เป็นฐาน ซึ่งหมายความว่าคุณต้องการแทนเจนต์หรือบิทูเมนนอกเหนือไปจากบรรทัดฐานในโมเดลของคุณ การสะท้อนสภาพแวดล้อมนั้นยุ่งยากสำหรับโลหะขัดเงา คุณสามารถสุ่มตัวอย่างจากหลายทิศทางจากแผนที่คิวบ์โดยขึ้นอยู่กับทิศทางสัมผัส / ทิศทางของบิทเบนท์ แต่คุณอาจต้องการตัวอย่างจำนวนมากเพื่อให้ได้ผลลัพธ์ที่ดี อย่างไรก็ตามไม่จำเป็นต้องใช้สิ่งนี้เนื่องจากพื้นผิวและแสงแบบแอนไอโซโทรปิกที่มีแหล่งกำเนิดแสงหลายจุดดูดีอยู่แล้ว ผลลัพธ์ที่ได้ในกรณีของฉันมีลักษณะเช่นนี้:

วัสดุโลหะขัดเงา


6

ดังที่ Nicol ได้กล่าวไว้ในความคิดเห็นของเขามีหลายสิ่งหลายอย่างที่เข้าสู่เครื่องตัดโลหะคุณภาพสูง เพื่อให้ได้ผลลัพธ์ที่ดีที่สุดความต้องการ renderer ของคุณจะแกมมาที่ถูกต้องและใช้ร่างกายตามแรเงารุ่น (ดูโดยเฉพาะอย่างยิ่งสองเอกสารโดย Naty ฮอฟแมนที่ลิงค์นั้น)

จากสิ่งเหล่านั้นวิธีการทั่วไปในการทำวัสดุโลหะก็คือการมีสีกระจายที่ต่ำมากหรือไม่มีเลยและมีการสะท้อนแสงสูงตั้งแต่ 50% ถึง 100% (ในพื้นที่สีเชิงเส้น) ดังที่คุณระบุไว้สำหรับโลหะบางชนิด specular จะมีสี

เนื่องจากการปรากฏตัวของโลหะนั้นมีลักษณะเฉพาะที่มีการกระจายน้อยหรือไม่มีเลยการสะท้อนจึงมีความสำคัญอย่างยิ่ง ถ้ามันสะท้อนแสงแบบจุด ๆ เท่านั้นคุณจะได้รูปลักษณ์ของวัสดุสีดำเนื่องจากสภาพแวดล้อมส่วนที่เหลือหายไป (แม้แต่โลหะที่หยาบมากก็จะสะท้อนภาพเบลอของสภาพแวดล้อม) วิธีทั่วไปในการรับการสะท้อนมากขึ้นคือการใช้ cubemap การสะท้อนที่เหมือนจริงในกราฟิกแบบเรียลไทม์เป็นหัวข้อใหญ่และมีวิธีการที่แตกต่างกันออกไป


ขอบคุณนี่คือสิ่งที่ฉันกำลังมองหา! ในขณะที่ฉันสะท้อนภาพด้วยแผนที่ลูกบาศก์ฉันอาจใช้แสงสิ่งแวดล้อมเป็นแสงส่องทางที่สูงมากได้ไหม
Valmond

@Valmond ฉันไม่แน่ใจว่าสิ่งที่คุณหมายถึงโดย "ใช้แสงสิ่งแวดล้อมเป็นแสง specular สูงมาก" สิ่งที่ฉันหมายถึงคือการสะท้อนแสงควรรวมทั้งแหล่งกำเนิดแสงและทุกอย่างอื่นในสภาพแวดล้อม (รวมเข้าด้วยกัน) ซึ่งส่วน "ทุกอย่างอื่น" สามารถนำไปใช้เป็นคิวบ์ได้ วิธีโดยทั่วไปคือการสร้าง cubemaps เบลอหลายความขรุขระที่แตกต่างกันตามที่แสดงไว้ที่นี่
นาธานรีด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.