เอ็นจิ้นเกม 3D แสดงสภาพแวดล้อม 3 มิติเป็นหน้าจอ 2D ได้อย่างไร


9

สำหรับเกมสไปรต์ 2 มิติฉันสามารถเข้าใจได้ว่าสไปรต์เคลื่อนที่บนแกน X และ Y อย่างไรก็ตามสำหรับเกมสามมิติเอ็นจิ้นเกมจะคำนวณวิธีการแสดงสภาพแวดล้อม 3 มิติบนจอคอมพิวเตอร์ 2D แบบแบนได้อย่างไร


18
คณิตศาสตร์มากมาย
ชะลอตัวลง

3
Magic Imps ออกแบบดินแดนแล้วถ่ายภาพลงบนหน้าจอโดยใช้ไม้เท้าวิเศษ

Math.PIมันเยอะมาก
Nick Bedford

คำตอบ:


10

Sprite 3 มิติจะได้แกน Z ใหม่ที่เก็บความลึกขนาดการปรับขนาดและการเคลื่อนไหวในระนาบ X / Y สไปรต์ที่อยู่ไกลออกไปมีค่า Z ที่ใหญ่กว่า ตอนนี้แบ่งขนาดของสไปรท์และการเคลื่อนไหวของแกน X / Y โดยแกน Z เป็นคนอื่นได้ตั้งข้อสังเกตนี้เป็นมุมมองของการฉายภาพ 3 มิติ นี่คือภาพประกอบที่ดีที่สุดที่ฉันสามารถหาได้:

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

สิ่งนี้ทำให้เกิดความรู้สึกตามแนวคิดเพราะสิ่งต่าง ๆ ที่อยู่ห่างออกไปดูเล็ก การเคลื่อนไหวที่ชัดเจนของพวกเขายังดูเล็กลงอีกด้วย

นอกจากนี้วัตถุใกล้จะต้องวาดบนวัตถุที่อยู่ไกล อีกครั้งสิ่งนี้ทำให้เกิดความคิดในเชิงแนวคิดเพราะวัตถุใกล้จะแยกมุมมองของวัตถุที่อยู่ด้านหลัง

เทคนิคเหล่านี้สามารถนำมาใช้ในระดับเทพดา อย่างไรก็ตามสำหรับการฉายภาพที่สมจริงที่สุดแต่ละสไปรต์มีโมเดล 3 มิติและแสดงผลที่ระดับพิกเซล


2
แผนภาพคือสิ่งที่มาถึงฉัน ภาพที่มีค่าพันคำ.
Kim Jong Woo

17

มันคล้ายกับวิธีที่คุณสามารถจับภาพ 2D ของโลกของเราในกล้อง สภาพแวดล้อม 3 มิติได้รับการอธิบายในแง่ของพิกัด X, Y และ Z แต่ในที่สุดคุณจำเป็นต้องแมปกับหน้าจอ 2D ที่มีแกน X และ Y เท่านั้น ทำได้โดยการฉายภาพที่จุด 3D แต่ละจุดถูกฉายบนระนาบมุมมอง 2D

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

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


5

มันเกี่ยวกับการฉายการดำเนินการทางเรขาคณิตที่ช่วยให้คุณกำหนดช่องว่างจากพื้นที่อื่นของมิติที่เหนือกว่า (โดยทั่วไปในกรณีของคุณคุณกำลังอธิบายภาพ 2D จากสภาพแวดล้อม 3 มิติ)

นี่เป็นวิธีที่เอ็นจิ้นการเรนเดอร์ 3D สร้างภาพ (จากฉาก 3 มิติ & การฉายภาพ):

สำหรับแต่ละพิกเซลของภาพผลลัพธ์

  • คำนวณทิศทางการมอง (ตามเส้นโครง) เป็นพื้นเวกเตอร์ 3 มิติ
  • ค้นหาวัตถุที่ใกล้ที่สุดในฉากของคุณที่ "เห็น" ในทิศทางนี้ (เพียงเดาว่าวัตถุใดที่ตัดกันด้วยเวกเตอร์และเก็บวัตถุที่ใกล้ที่สุด)
  • คำนวณสีของวัตถุนี้คุณมีสีของพิกเซล!

แน่นอนว่านี่เป็นแบบง่าย ๆ ฉันไม่ได้พูดเกี่ยวกับวัตถุสะท้อนแสง / การหักเหของแสง / โปร่งแสงของเอฟเฟกต์พิเศษเช่นควัน ...


2

เดอะเมทริกซ์ หรือมากกว่านั้นคือเมทริกซ์คณิตศาสตร์จำนวนมาก

มันเป็นสิ่งที่น่ากลัวสำหรับมือใหม่ โดยทั่วไปแล้วจะมีเมทริกซ์ 4x4 สามตัวที่เกี่ยวข้องในการเปลี่ยนพิกัด 3D ในพื้นที่เป็นพิกัด 2D บนหน้าจอ (รวมถึงความลึกของหน้าจอเป็น Z)

เมทริกซ์ 3D เป็นชุดของค่าทศนิยม 16 ค่าที่จัดเรียงในตาราง 4x4 อัลกอริทึมถูกใช้เพื่อสร้างค่าที่ต้องการจากนั้นใช้การคูณเมทริกซ์เวกเตอร์ตัวเลขเหล่านี้จะแปลงเวกเตอร์ 3 มิติ (X, Y, Z)

[ 1, 0, 0, 0 ]
[ 0, 1, 0, 0 ]
[ 0, 0, 1, 0 ]
[ 0, 0, 0, 1 ]

นี่คือเมทริกซ์เอกลักษณ์ มันไม่ได้ทำอะไรกับพิกัดของเวกเตอร์


แบบ

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


ดู

เมทริกซ์ที่สองคือเมทริกซ์มุมมอง สิ่งนี้จะใช้เวลาพิกัดโลกและแปลงพวกเขาเพื่อให้พวกเขาอยู่ในบริบทของมุมมอง โดยทั่วไปแล้วแนวคิดของกล้องจะใช้เพื่อสร้างเมทริกซ์นี้

กล้องมักจะมีเวกเตอร์ตำแหน่งทิศทางหรือเวกเตอร์เป้าหมายและเวกเตอร์ขึ้น เวกเตอร์อัพนี้อธิบาย 'การหมุน' ของกล้อง

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

เวกเตอร์เหล่านี้ใช้เพื่อสร้างสิ่งที่เรียกว่าดูเมทริกซ์

ผลกระทบนี้มีความคล้ายคลึงกับเมทริกซ์โลกในความจริงที่ว่ามันหมุนและแปลโลกรอบตัวกล้องเป็น "ตำแหน่ง" กล้อง

กล้องที่มี 10 หน่วยตามแนวแกน X จะแปลพิกัดโลก 10 หน่วยในทิศทางอื่น


ติ่ง

ชิ้นสุดท้ายของปริศนาคือเมทริกซ์การฉาย ในการประมาณการมุมมองเหมือนกล้องเมทริกซ์เปลี่ยนเกือบพิกัดหน้าจอเพื่อให้ภาพลวงตาของมุมมองด้วยมุมมอง x องศา

หากคุณคิดในแง่ของมุมของหน้าจอ (สำหรับเกม 640x480) นี่คือวิธีการฉายภาพ "จัดตำแหน่ง" พิกัดตามแนวแกน Z ภายในพิกัด 2D ของหน้าจอ สำหรับการฉายภาพ orthographic ไม่มีการปรับสเกลตามแนวแกน Z ในหน้าจอ สำหรับมุมมองที่ไกลออกไปวัตถุที่มีขนาดเล็กมันจะกลายเป็นความสัมพันธ์กับขอบเขตของหน้าจอ

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

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