การโหลดโมเดล 3 มิติ

Posted: มิถุนายน 18, 2010 in LESSON

หลังจากรู้เรื่องการเขียนเกมไปสักนิดนึงแล้ว

ก็ขออัญเชิญเพื่อนๆ มาเรียนรู้เรื่องต่อไปกันเลยดีกว่า

เรื่อง การโหลดโมเดล 3 มิติ

ทุกคนคงรู้จักคำว่า โมเดล กันดีอยู่แล้ว

สร้างด้วยหลายๆโปรแกรมเช่น Maya 3dsmax อะไรจำพวกนี้ (รู้จักแค่นี้อะ -*-)

ลองมาดูตัวอย่างโมเดลแบบเทพๆกันก่อนดีกว่าเนอะ

Dante : Devil May Cry

Chris & Sheva : Resident Evil 5

นี่ก็เป็นตัวอย่างเล็กๆนะคะ ซึ่งเราอาจจะได้ทำในภายภาคหน้า (หรอ?)

เรามารู้จักชนิดของโมเดลกันดีกว่า มีหลายประเภทมากๆ  ดังนี้

ที่จริงมันก็มีมากกว่านี้นะ ลองไปศึกษาเพิ่มเติมกันนะคะ

วันนี้เราก็ใช้ไฟล์สกุล obj ในการยกตัวอย่างให้เพื่อนๆได้เห็นกัน

ซึ่งเราได้มาจากการปั้นในโปรแกรม MAYA ที่เราๆรู้จักกันดี

เข้าสู่ส่วนต่อไปกันเลยดีกว่า

วิธีการโหลดโมเดล

ขั้นตอนที่ 1 สร้าง project ขึ้นมาแล้วประกาศตัวแปรเพิ่ม ดังรูป

ICameraSceneNode* camera; ใช้ประกาศตัวแปรเพื่อควบคุมมุมกล้องภายในเกมส์

IAnimatedMesh* model;   ใช้ประกาศตัวแปรสำหรับโมเดล 3 มิติ

IAnimatedMeshSceneNode* node; ใช้ประกาศตัวแปรสำหรับการควบคุมโมเดลในการเปลี่ยนตำแหน่งหรือการย่อ ขยาย โมเดล

ขั้นตอนที่ 2 จองหน่วยความจำ 3 มิติ โดยพิมพ์ตาม code ดังรูป

camera = g_engine.smgr->addCameraSceneNodeFPS( 0, 100, 100 ); ใช้สำหรับการสร้างมุมกล้องภายในเกมส์ โดยเป็นมุมกล้องแบบ FPS ในช่องวงเล็บ (0,100,100) ค่า 100 ค่าแรกแทนความเร็วในการเคลื่อนที่ของเมาส์ และ ค่า 100 ค่าที่ 2 แทนการเคลื่อนที่ของคีย์บอร์ด

model = g_engine.smgr->getMesh(“boy.obj”); เป็นการโหลด model ชื่อ boy.obj ลงไปในหน่วยความจำ

node = g_engine.smgr->addAnimatedMeshSceneNode( model ); ใช้ตัวแปรนี้ในการอ้างอิงการเปลี่ยนตำแหน่งหรือย่อ-ขยาย โมเดล

node->setMaterialFlag(EMF_LIGHTING, false);     ใช้สำหรับการแสดงผลของพื้นผิวโมเดล ในที่นี้คือ ไม่มีการกระทบของแสง

node->setPosition( core::vector3df(-4, -6, -2) ); ตำแหน่งของโมเดลจะอยู่ที่ -4,-6,-2 ตามแกน x,y,z

node->setRotation( core::vector3df(90, 0, -160) ); เซ็ทการหมุนของโมเดลจะตั้งฉาก 90 องศาในแนวแกน x และ 160 องศาในแนวแกน z

node->setScale( core::vector3df(0.1f, 0.1f, 0.1f) ); ขนาดของโมเดลจะอยู่ที่ 0.1 หน่วย

node->setAnimationSpeed( 100 ); ความเร็วในการแสดงผล animation อยู่ที่ 100 หน่วย ค่ายิ่งมาก การแสดงผลก็จะยิ่งเร็วขึ้น


หลังจากที่เราเขียนไปหมดแล้ว ก็ถึงเวลาการ build เกมส์แล้วล่ะ

หากทำถูกต้อง และไม่รันใน windows 7 ก็จะไม่เจอ eroor ใดๆ

กด F5 เพื่อ Build ได้เลย แล้วก็จะออกมาเป็นดังนี้

อย่าเพิ่งตกใจว่าทำไมมี 5 ตัวนะคะ คือเราทำแบบนี้ 5 ตัวอะ มันเลยรันเป็น 5 ตัว

สำหรับเพื่อนๆถ้ารันแล้วขึ้นหน้าจอคล้ายๆแบบนี้ ก็ถือว่า คุณประสบผลสำเร็จมาการโหลดโมเดลกันแล้วค่ะ

ปรบมือให้ตัวเอง ^^

วันนี้ขอเวลา ไปพักก่อนนะคะ พิมพ์มาทั้งวันเลย แล้วเจอกันตอนต่อไป    ฟิ้วววววว


ความเห็น
  1. freedesignfree พูดว่า:

    บทความดีครับ

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s