ทำไม 4×4 เมทริกซ์ที่ใช้ในการแปลงสิ่งต่าง ๆ ในแบบ 3 มิติ?
เหตุผลเบื้องหลังการใช้ 4×4 เมทริกซ์เพื่อแปลงสิ่งต่าง ๆ ในรูปแบบ 3 มิติ
ตัวอย่างเช่น, การหมุนมักจะทำได้โดยใช้เมทริกซ์, ดังนั้นเพื่อจัดการกับการเปลี่ยนแปลงหลายๆ อย่าง (การหมุน/การแปล/การปรับขนาด/การฉายภาพ…ฯลฯ) อย่างเท่าเทียมกัน, คุณต้องเข้ารหัสพวกมันในเมทริกซ์.
ดี, พูดทางเทคนิคมากขึ้น; การแปลงคือการแมปจุด/เวกเตอร์กับจุด/เวกเตอร์อื่น.
p` = T(p);
โดยที่ p` คือจุดที่ถูกเปลี่ยนและ T(พี) คือฟังก์ชันการแปลง.
เนื่องจากเราไม่ได้ใช้เมทริกซ์ เราจึงจำเป็นต้องทำเช่นนี้เพื่อรวมการแปลงหลายรายการเข้าด้วยกัน:
p1= ต(พี);
พีสุดท้าย = ม(หน้า 1);
เมทริกซ์ไม่เพียงแต่สามารถรวมการแปลงหลายประเภทให้เป็นเมทริกซ์เดียวได้ (เช่น. ละเลย, เชิงเส้น, ฉายภาพ).
การใช้เมทริกซ์ทำให้เรามีโอกาสรวมห่วงโซ่ของการแปลงเข้าด้วยกัน จากนั้นจึงคูณพวกมันเป็นชุด. สิ่งนี้ช่วยเราประหยัดเวลาได้มากโดย GPU (ขอบคุณ @ChristianRau สำหรับการชี้ให้เห็น).
ตู่สุดท้าย = ต * Active Directory * NS; // แปลภาษาหมุนโครงการ
พีสุดท้าย = ตสุดท้าย*พี;
เป็นการดีที่จะชี้ให้เห็นว่า GPU และแม้แต่ CPU บางตัวได้รับการปรับให้เหมาะสมสำหรับการทำงานของเวกเตอร์; CPU ที่ใช้ SIMD และ GPU เป็นโปรเซสเซอร์แบบขนานที่ขับเคลื่อนด้วยข้อมูลตามการออกแบบ, ดังนั้นการใช้เมทริกซ์จึงเหมาะอย่างยิ่งกับการเร่งด้วยฮาร์ดแวร์ (จริงๆ แล้ว, GPU ได้รับการออกแบบเพื่อให้เหมาะกับการทำงานของเมทริกซ์/เวกเตอร์).
เครดิต:
https://gamedev.stackexchange.com/questions/72044/why-do-we-use-4×4-เมทริกซ์เพื่อแปลงสิ่งต่าง ๆ ในรูปแบบ 3 มิติ?answertab=active#tab-top
ทิ้งคำตอบไว้
คุณต้อง เข้าสู่ระบบ หรือ ลงทะเบียน เพื่อเพิ่มคำตอบใหม่.