แอนิเมชันใน OpenGL โดยใช้โมเดล 3 มิติ


11

ฉันได้สร้างแบบจำลองใน Blender ตอนนี้ฉันต้องการอ่านโมเดล 3 มิติในโปรแกรม c ++ ของฉัน ฉันคิดว่าแบบจำลองสามารถส่งออกไปยังรูปแบบไฟล์ต่าง ๆ เช่น. obj, .3ds หรือ COLLADA จากนั้นสามารถอ่านได้ในโปรแกรม c ++ ฉันค้นหาเว็บเพื่อทำสิ่งนั้นมาระยะหนึ่งแล้วพบบทเรียนจำนวนมาก แต่ฉันพบปัญหากับพวกเขาส่วนใหญ่ ตัวอย่างเช่นในการกวดวิชา Nehe พวกเขาใช้ glaux ซึ่งฉันไม่ต้องการใช้ในโปรแกรมของฉัน และบทเรียนที่เหลือใช้ md2 ซึ่ง Blender ไม่รองรับ

ใครสามารถแนะนำฉันว่ารูปแบบไฟล์ใดที่จะใช้สำหรับการส่งออกโมเดล 3 มิติและวิธีโหลดไฟล์นั้นในโปรแกรม OpenGL ของฉัน ฉันจะทำให้โมเดลนั้นเคลื่อนไหวได้อย่างไร เป็นไปได้หรือไม่ที่จะเพิ่มเอฟเฟ็กต์พิเศษเช่นการจับคู่โทนเสียงหลังจากโหลดในโปรแกรม c ++ ด้วย OpenGL แล้ว ถ้าใช่แล้วได้อย่างไร

PS ฉันใช้ Linux สำหรับการพัฒนาเกม

คำตอบ:


2

ฉันจะไปใช้รูปแบบ OBJ อย่างที่คุณคงรู้แล้วมี OBJ ตักร้อยสำหรับ C ++ อยู่ตรงนั้น ฉันเชื่อว่าหนึ่งในคนที่โตแล้วที่สุดคือAssimpสนับสนุนรูปแบบที่หลากหลายและมีการบันทึกไว้ค่อนข้างดี ที่นี่คุณมีตัวอย่างที่พวกเขาใช้


ลิงก์ lighthouse.com ใช้งานไม่ได้
เนป

มันทำงานได้ดีสำหรับฉันในทุกเบราว์เซอร์ของฉัน ... ลองลิงค์นี้x90.es/1CC
Dan

2
Obj ไม่รองรับการเคลื่อนไหวแบบตาข่าย เพียง google "ปั่น OpenGL ผิวตาข่าย" และฉันหวังว่าคุณจะได้พบกับรูปแบบที่เหมาะสมกับสิ่งที่คุณต้องการแก้ไข: couldnt ลบโพสต์ของฉันก็หมายความว่าจะตอบกลับไปโพสต์ก่อนหน้านี้ reccomending รูปแบบ obj ที่
Stowelly

1
.obj ไม่รองรับภาพเคลื่อนไหวและคำตอบนี้ผิด stackoverflow.com/questions/757145/…
Sean Middleditch

2

Blender 2.60 ได้แก้ไขการรองรับแอนิเมชั่น COLLADA ซึ่งมีการหักมากหรือน้อยในเวอร์ชั่นก่อนหน้านี้ อย่างไรก็ตามหากคุณยังไม่ได้โหลดรูปแบบโมเดลใด ๆ ในรหัสของคุณเองฉันขอแนะนำให้เรียนรู้การโหลด. obj ก่อน มันอยู่ใน ASCII ดังนั้นมนุษย์สามารถอ่านได้และอ่านง่ายโดยไม่ต้องมีโหลดเดอร์ภายนอก


1

3ds ไม่มีข้อมูลภาพเคลื่อนไหวใด ๆ เพื่อที่จะไม่ทำงาน Collada ฉันไม่รู้อะไรมาก แต่เมื่อฉันตัดสินใจว่าจะใช้รูปแบบใดในเกมที่ฉันค้นหาและเปรียบเทียบจำนวนมากและในที่สุดฉันก็ใช้รูปแบบ B3D มันรองรับการเคลื่อนไหวของโครงกระดูกและสามารถโหลดได้จาก Irrlicht (มันมีค่าแสงด้วย )

ฉันใช้ผู้ส่งออก 'ไปป์ไลน์ b3d' จาก 3dsMax และฉันเขียนรหัส hlsl shader ของฉันเองเพื่อเคลื่อนไหวและส่องตาข่ายมันทำงานได้ดีจริงๆ

คุณสามารถตรวจสอบว่าIrrlichtทำมันอย่างไร (เช่นการโหลดและการเคลื่อนไหว) มันทำแอนิเมชั่นในซอฟท์แวร์ แต่มีตัวอย่างถ้าคุณค้นหาบิตเกี่ยวกับการใช้ shader (ถ้าคุณต้องการ) สิ่งที่ดีคือ Irrlicht รองรับทั้ง OpenGL และ Linux

รูปแบบอื่นที่ค่อนข้างตรงไปตรงมาคือรูปแบบ. X จะต้องมีตัวอย่างมากมายเกี่ยวกับวิธีการส่งออกโหลดแยกวิเคราะห์และตั้งค่าโครงกระดูกและสร้างภาพเคลื่อนไหวด้วย มันเป็นรูปแบบ Microsof แต่บางทีคุณอาจไม่ต้องการใช้มัน :-)

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

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