ใน 2.5D คุณใช้สินทรัพย์ 2D / เทคนิคการแสดงผลเพื่อให้ความรู้สึกของสภาพแวดล้อม 3 มิติ
ขณะนี้ด้วยคำจำกัดความดังกล่าวในสถานการณ์ที่อาจคลุมเครือดังต่อไปนี้จำเป็นต้องมีรายละเอียดบางอย่าง:
เกม
ใช้กราฟิก 3D, GPU เร่งความเร็วและทั้งหมด (วัตถุเกมเป็นตาข่ายไม่ใช่ภาพ) ด้วยมุมกล้องคงที่ ช่วยให้แย่ยิ่งขึ้นไปอีกการฉายภาพเป็นออโธกราฟฟิคคลาสสิก 63.43 องศา วิธีเดียวที่จะสังเกตุเห็นได้อย่างชัดเจนว่ากราฟิกไม่ใช่ 2D ไม่ใช่เพราะ 3DGC ยกเว้นว่าคุณแสดงด้วยความระมัดระวังอย่างมากจะแตกต่างจากสไปรต์การวาดภาพด้วยมืออย่างง่ายดายไม่ว่าจะใช้การฉายภาพแบบใดก็ตาม คุณอาจทดลองใช้เทคนิคการเรนเดอร์พารามิเตอร์ shaders ฯลฯ ที่แตกต่างกันและคุณจะต้องพยายามซ่อนความจริงที่ว่าพวกเขาเป็นตาข่ายสามมิติ
เกม B
พอร์ตของเกม A แต่กำหนดเป้าหมายแพลตฟอร์มที่ทราบกันดีว่ามีฮาร์ดแวร์ที่ไม่สามารถจัดการกับกราฟิก 3D ได้เป็นอย่างดีหรือไม่รองรับเลย จากนั้นพอร์ตจะแทนที่ตาข่ายด้วยสไปรต์ มันยังคงใช้กล่อง Bounding 3D สำหรับการชนตัวอย่างเช่นและวัตถุมีคุณสมบัติตำแหน่งที่มีค่า x, y และ z เนื่องจากตรรกะของเกมส่วนใหญ่ไม่ได้สัมผัสหรือไม่ได้สัมผัสเลยมีเพียงการเปลี่ยนรหัสการแสดงผลเท่านั้น
เนื่องจาก sprite ของเกม B เป็นเนื้อหา 3D ของเกม A และเพื่อทำให้สิ่งต่าง ๆ มีความคลุมเครือมากขึ้นเกม A ไม่ได้ทำอะไรที่ต้องมีความซับซ้อนใน 99% ของ GPU ทั้งหมดที่นั่นคุณไม่สามารถแยกความแตกต่างของเฟรมจากเกม B ของเฟรมจาก Game A
ใน 2.5D การโต้ตอบระหว่างออบเจกต์เกมจะถูก จำกัด ในชุดของสถานการณ์ที่ภาพลวงตาของ 3D ไม่สามารถถูกทำลายได้ ในการแทนการกอดตัวละครสองตัวตัวอย่างเช่นคุณจะต้องสร้างไฟล์รูปภาพเดียวโดยที่ตัวละครทั้งสองกำลังโต้ตอบกันเนื่องจากพยายามที่จะเป็นตัวแทนของแอคชั่นกอดโดยใช้เพียงภาพเดียวต่อตัวละครนั้นจะยากหรือเป็นไปไม่ได้ บางทีคุณอาจจะมีตัวละครแบ่งออกเป็นส่วน ๆ และวาดตามลำดับที่ถูกต้อง ใน 3D ปัญหานี้ไม่มีอยู่ (มีอยู่อีกตัวหนึ่งนั่นคือการวางตัวละครทั้งสองอย่างถูกต้องดังนั้นพวกเขาจึงไม่ทะลุเข้าไปในตาข่ายของตัวละครอื่น)
ลองนึกภาพว่าเกม A และ B มีข้อผิดพลาดที่ในบางสถานการณ์อนุญาตให้ตัวละครของผู้เล่นผ่านวัตถุเกมอื่นทำให้เราสามารถแยกความแตกต่างระหว่าง 2.5D หนึ่งและ 3D ได้อย่างง่ายดาย
เกม B, 2.5D Render, sprite นั้นเรียงลำดับตามค่า z ของตำแหน่งเวกเตอร์ ในตัวอย่างนี้บวก z ลงและลบ z ขึ้น แกน z และแกน y นั้นขนานกัน แต่ z จะถูกปรับอัตราส่วนด้วย 0.5 ของ y ดังนั้นหากพื้นที่ที่มองเห็นอยู่ระหว่าง 10y ถึง -10y ในพื้นที่เดียวกันเรามีตั้งแต่ 20z ถึง -20z วัตถุที่มีค่า z มากกว่าจะถูกดึงกลับมาดังนั้นพวกเขาจะถูกมองว่าอยู่ด้านหน้าวัตถุที่มีค่า z ต่ำกว่า เงาของตัวละครของผู้เล่นดูแปลก ๆ เพราะเงาอยู่ในชั้นที่เหนือกว่าพื้น แต่ในชั้นที่ต่ำกว่าซึ่งวัตถุอื่นทั้งหมดดังนั้นเงาของตัวละครของผู้เล่นจึงไม่เคยอยู่ด้านบนของลูกบาศก์
เกม A, 3D Render บัฟเฟอร์ความลึก (หรือที่เรียกว่า z-buffer) ใช้สำหรับการทดสอบความลึกของความแม่นยำของพิกเซล ดังนั้นวัตถุไม่จำเป็นต้องบังวัตถุอื่นอย่างสมบูรณ์แม้แต่สามเหลี่ยมก็จำเป็นต้องบังวัตถุอื่นอย่างสมบูรณ์เราจึงมีการทดสอบความแม่นยำของพิกเซล เราสามารถหมุนวัตถุเกมในทางใดทางหนึ่งและยังคงได้รับผลลัพธ์ที่สมจริงเมื่อพวกเขาโต้ตอบ
ในประวัติย่อ: ใน 2.5D สไปรต์อาจอยู่ด้านหน้าหรือด้านหลังสไปรต์อื่น ใน 3D ตาข่ายทำมาจากสามเหลี่ยม แต่สามเหลี่ยมไม่ใช่หน่วยขั้นต่ำเมื่อทำการทดสอบความลึกคุณสามารถมีความแม่นยำของพิกเซล แน่นอนว่าการหมุนกล้องใน 2.5D นั้นเป็นไปไม่ได้เนื่องจากสินทรัพย์ถูกสร้างขึ้นสำหรับมุมกล้องคงที่ในขณะที่ในแบบ 3 มิตินั้นเป็นธรรมชาติถ้ามุมกล้องถูก จำกัด โดยการออกแบบในเกม 3D เป็นอีกเรื่องหนึ่ง
มีเทคนิคต่าง ๆ ที่ให้ความรู้สึกเหมือนอยู่ในโลก 3 มิติเมื่อคุณสามารถแสดงกราฟิก 2 มิติได้ฉันเพียงนำเสนอตัวอย่างที่สร้างขึ้นอย่างรวดเร็วโดยใช้ทรัพย์สินบางส่วนของโครงการร้างของฉัน
ทำไมไม่ใช้ 3D เสมอและลืมเรื่อง 2.5D ไป?
ฉันคิดได้ในตัวอย่างว่าทำไมนักพัฒนาซอฟต์แวร์อาจชอบวิธี 2.5D:
- บางทีพวกเขาอาจไม่รู้หรือไม่ชอบ 3D API (Direct3D, OpenGL และอื่น ๆ )
- บางทีแพลตฟอร์มเป้าหมายไม่รองรับกราฟิก 3 มิติที่ดี (คอมพิวเตอร์เดสก์ท็อปเก่าคอนโซล 2D)
- ทีมของคุณสามารถทำสไปรท์ที่น่าทึ่ง แต่ไม่ใช่โมเดล 3 มิติ
คุณสามารถประมาณผลลัพธ์ของกราฟิก 3 มิติโดยใช้ 2.5D ได้เท่าใด
มีประสิทธิภาพและขอบฟ้าความซับซ้อนในการเขียนโปรแกรม เมื่อคุณประมาณเส้นขอบฟ้าคุณจะเริ่มสงสัยว่าโครงการของคุณเป็นไปได้จริง ๆ ใน 2.5D หรือถ้าคุณต้องใช้ 3D เต็มรูปแบบ ตัวอย่างเช่นคุณสามารถใช้ z-buffering ใน 2.5D (ในทางทฤษฎี) แต่คุณสามารถชำระค่าใช้จ่ายหน่วยความจำวิดีโอ (คอมพิวเตอร์เดสก์ท็อปเก่าที่มีกราฟิกออนบอร์ดไม่ใช่อุปกรณ์มือถือที่มีประสิทธิภาพ) ได้หรือไม่ คุณต้องการชำระค่าใช้จ่ายในการจัดเก็บภาพพิเศษเพื่อบันทึก z-mask ของผีสางทุกตัวหรือไม่?
ผู้สมัครที่ดีสำหรับ 2.5D คือเกมสวมบทบาทคิดว่าชุด Baldur's Gate หรือ RTS คิดว่า Age of Empires 1 และ 2 (AoE 3 เป็น 3D เต็มรูปแบบและแยกแยะได้ง่าย)
การอ้างอิงที่มีประโยชน์:
Z-Buffering: http://en.wikipedia.org/wiki/Z-buffering
ประมาณการ Orthographic: http://glasnost.itcarlow.ie/~powerk/GeneralGraphicsNotes/project/orthographicproject.html