วิธีที่จะทำให้น้ำแข็งที่เหมือนจริง?


45

ฉันกำลังพยายามเขียน ice shader ใน Unity ที่ดูดีและอย่างน้อยกึ่งจริง

หากภาพต่อไปนี้ ( พบใน Google ) คือ CG สิ่งที่รวมไว้ในภาพนี้คืออะไร (ถ้ำเบื้องหน้า) ฉันอาจจะผิด แต่ดูเหมือนว่ามันจะมีรูปแบบแสงที่แตกต่างจากการกระจายแสงเริ่มต้น

ป้อนคำอธิบายรูปภาพที่นี่


นี่คือบทเรียนสำหรับ DirectX 11 โดยใช้ HLSL และ C ++ บางทีคุณสามารถรวบรวมหลักการ นอกจากนี้คุณเห็นว่าภาพนั้นเป็น CG มีการรายงานตามความเป็นจริง
MichaelHouse

ฉันไม่ได้บอกว่ามันเป็น ฉันพูดว่า "ถ้า" มันเป็น และขอบคุณ! ฉันจะตรวจสอบมันออกมา
Daniel Pendergast

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

ขอโทษที่ฉันพลาด "ถ้า"
MichaelHouse

@ Byte56, ไม่มีปัญหา
Daniel Pendergast

คำตอบ:


53

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

นี่คือภาพที่ฉันคิดว่าแสดงให้เห็นถึงผลกระทบที่ดี:

ป้อนคำอธิบายรูปภาพที่นี่

จากภาพในคำถามของคุณเราจะเห็นได้ว่าน้ำแข็งนั้นค่อนข้างสะท้อนแสงดังนั้นคุณอาจต้องการรวมเข้ากับการทำแผนที่สภาพแวดล้อมเพื่อสะท้อนและปรับโทนspecularityเพื่อเสริมสร้างไฮไลท์

นอกจากนี้คุณยังสามารถลองสิ่งอื่น ๆ เช่นการเพิ่มการหักเหของแสงการซ้อนทับพื้นผิวของเสียงเพื่อเพิ่มการเปลี่ยนแปลงเล็กน้อยหรือแม้แต่การทำแผนที่การชนหรือการแมปการกระจัดสำหรับรายละเอียดเล็ก ๆ น้อย ๆ

ทรัพยากร

แหล่งข้อมูลอื่น ๆ ที่ฉันพบขณะเขียนคำตอบ:


คุณอาจต้องการตรวจสอบ Ambient Occlusion ( en.wikipedia.org/wiki/Ambient_occlusion ) เพื่อจำลองความมืดใน crags เพราะโดยทั่วไปแล้วมันค่อนข้างยากที่จะทำให้ถูกต้องโดยใช้เพียงเงา
Koarl

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.