การเปลี่ยนรูปพื้นผิว


10

ฉันกำลังพยายามทำให้พฤติกรรมทางฟิสิกส์ที่ผิดรูปสำหรับพื้นผิวระดับสำเร็จ แต่ยังไม่มีความคิดว่าจะเริ่มต้นอย่างไรกับการดำเนินการจนถึงปัจจุบัน

โดยไม่คำนึงถึงรูปร่างของพื้นผิว (เครื่องบิน, ก้อน, ทรงกลม…), ฉันต้องการให้มีการเยื้องเล็กน้อยที่ตำแหน่งจากเอนทิตีของเกม (ผู้เล่น, ศัตรู, วัตถุ ... )

มันเป็นเรื่องซับซ้อนที่จะอธิบายดังนั้นฉันจึงแสดงสิ่งที่ฉันกำลังพูดถึงนี่เป็นตัวอย่างของทรงกลม:

เกมทำอาหาร

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

ฉันกำลังเขียนโปรแกรมใน C / C ++ กับ OpenGL แต่คำแนะนำใด ๆ ในทิศทางที่ถูกต้องจะใช้ได้

คำตอบ:


5

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

ดังนั้นเพื่อให้เนื้อหาเยื้องภายใต้ตัวละครให้เลือกจุดที่เขา / เธอยืนอยู่และกำจัดมันลง

ขึ้นอยู่กับเอฟเฟ็กต์ที่คุณต้องการเก็บถาวรคุณอาจต้องการใช้การแปลงแบบโกลบอลแบบโลคัลหรือไป / ห่างจากศูนย์กลางวัตถุและ / หรือใช้ฟังก์ชันต่าง ๆ เพื่อจำลองวัสดุที่แตกต่างกัน

ตัวอย่างง่ายๆของการเยื้องเครื่องบินโดยใช้ฟังก์ชัน sin / cos falloff สามารถพบได้ใน www.lighthouse3d.com/opengl/terrain/


1
ฉันได้รับข้อผิดพลาดต้องห้าม 403 บนลิงค์
George Duckett

1
ดี ... 'Lil สับอยู่ในลำดับแล้ว (ยังโดยตรงไปยังส่วนในคำถาม): web.archive.org/web/20100927141645/http://lighthouse3d.com/...
Exilyth
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.