Main webboard   »   Irrlicht
 ย้อนกลับ  |  ตั้งกระทู้ใหม่  
Started by
Topic:   บทที่ 3 การโหลดโมเดล 3 มิติ  (Read: 1376 times - Reply: 0 comments)   
saruch (Admin)

Posts: 14 topics
Joined: 25/1/2553

บทที่ 3 การโหลดโมเดล 3 มิติ
« Thread Started on 26/1/2553 22:25:00 IP : 110.164.88.154 »
 

ชนิดของโมเดลที่ Irrlicht รองรับ

ประเภ่ท รายละเอียด
.X เป็นไฟล์มาตรฐานที่ถูกสร้างขึ้นมาสำหรับ DirectX เป็นที่นิยมมากมั้งยังแสดงผลได้ทั้งโมเดลธรรมดาและแบบที่มีอนิเมชั่นได้
.MD2 เป็นไฟล์โมเดลจากเกม Quake2 พัฒนาโดย บริษัท ID Software
.MD3 เป็นไฟล์โมเดลจากเกม Quake3 โดยมีรายละเอียดปลีกย่อยที่ดีกว่าMD2
.MS3D เป็น ไฟล์โมเดลจากโปรแกรม MilkShape3Dเป็นโปรแกรมที่นิยมในการสร้างโมเดลเพราะรองรับ import exportโมเดลหลากหลายอีกทั้งค่าลิขสิทธ์ไม่แพง จึงทำให้ถูกใจบรรดานักพัฒนาเกมต่างๆ
.B3D ไฟล์โมเดลจาก Bliz3D Engine แสดงผลได้ทั้งแบบธรรมดาและมีอนิเมชั่นได้
.MESH

ไฟล์โมเดลจากโปรแกรม Ogre3D แสดงผลได้ทั้งแบบธรรมดาและมีอนิเมชั่นได้

 

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

โหลดไฟล์โมเดลตัวอย่างที่จะนำไปใช้ได้ที่นี่เลยครับ

 

โหลดไฟล์โมเดลแล้วนำไปใส่ไว้ใน Folder โปรเจคของเรา

เริ่มแรกให้เรา ไปที่ช่วง

// ------------------------------------------------------------------
// Global Variables
// ------------------------------------------------------------------

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

ICameraSceneNode* camera;

ประกาศตัวแปรเอาไว้ควบคุมกล้อง


IAnimatedMesh* model;

ประกาศตัวแปรสำหรับเอาไว้โหลดโมเดล


IAnimatedMeshSceneNode* node;

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

 

หลังจากนั้นให้ไปที่ฟังชั่น Init() ครับ เป็นส่วนที่จะนำตัวแปรที่เราประกาศไว้ด้านบนมาใส่ค่าให้เราใส่ไปตามนี้เลยครับ

camera = g_engine.smgr->addCameraSceneNodeFPS();

สร้างมุมกล้องแบบมุมมองบุคคลที่1(FPS = First Person Shooting) เราสามารถใช้ลูกศรบนคีย์บอร์ดและเมาในการควบคุมทิศทาง


model = g_engine.smgr->getMesh("jet.x");

เป็นการโหลดโมเดล jet.x ของเราไปเก็บไว้ในตัวแปร model

node = g_engine.smgr->addAnimatedMeshSceneNode( model );

ใส่ model ของเราลงไปในตัวควบคุมเพื่อใช้ในการอ้างอิงเวลาเรา เปลี่ยนตำแหน่งหรือย่อขยายขนาด

node->setMaterialFlag(EMF_LIGHTING, false);

เรียกตัวควบคุมmodelที่ชื่อnodeให้ set พื้นผิวของโมเดลไม่ให้มีการกระทบของแสง

node->setPosition( core::vector3df(0, -1 , 4) );

เรียกตัวควบคุมmodelที่ชื่อnodeให้ setตำแหน่งของเครื่องบินในแกน XYZ ให้อยู่ที่ 0,-1,4 ตามลำดับ

 

หลังจากที่ทำเสดแล้วกด F5 หากไม่มี ERROR ใดๆ ก็จะปรากฏผลตามภาพด้านล่าง

 
   Link to Post - Back to Top

Bookmark and Share

กรุณาเข้าสู่ระบบหรือสมัครสมาชิกก่อนโพสข้อความค่ะ
»
คลิ๊กที่นี่
   Main webboard   »   Irrlicht
 ย้อนกลับ  |  ตั้งกระทู้ใหม่  
Advertising Zone    Close

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