วันเสาร์ที่ 15 พฤศจิกายน พ.ศ. 2551

PyOgre Beginner Tutorial 1 - Part 3

 Your first Ogre application


                   กลับสู่โค้ดโปรแกรมที่ได้เขียนไว้แล้วในPyOgre Beginner Tutorial 1 - Part 1 โดยจะปรับปรุงเพิ่มโค้ดในส่วน ของฟังก์ชั่น _createScene โดยสิ่งแรกที่จะทำคือการเซต ambient light สำหรับ Scene เพื่อที่จะทำให้เราสามารถมองเห็นใน Scene ได้ว่าเรากำลังทำอะไรอยู่ โดยจะทำการเรียกฟังก์ชั่น setAmbientLight และทำการตั้งค่าสีของแสงตามที่เราต้องการ โดยให้จำไว้ว่า ค่าที่จะใส่นั้นจะเรียง red, green, blue   และมีค่าในช่วงระหว่าง 0-1


sceneManager = self.sceneManager
sceneManager.ambientLight = ogre.ColourValue(1, 1, 1)


 ขั้นต่อไปเราจะทำการสร้าง Entity ที่จะให้ปรากฏบนจอ เราทำโดยการเรียก 


ent1 = sceneManager.createEntity('Robot', 'robot.mesh')


 คำบางคำถามเกิดขึ้น ก่อนอื่น self.sceneManager มาจากไหนและเราเรียก createEntity ด้วยอะไร self.sceneManager นั้นเป็นตัวแปร ที่มีส่วนของ SceneManager object ปัจจุบัน (ถูกประกาศไว้ใน SampleFramework.Application )

ค่าพารามิเตอร์ตัวแรกสำหรับแมทอด createEntity ก็คือชื่อของ Entity ที่ต้องการสร้างขึ้น ตามด้วยชื่อโมเดล

 เราสามารถทำให้สร้างสิ่งที่สร้าง เกิดปรากฏบนจอได้ เราต้องสร้าง SceneNode เพื่อนำมันมาผูกติดโดยเหตุนี้ทุกๆ SceneManager จึงมีหนึ่ง root SceneNode เป็นตัวหลัก เราสามารถสร้าง node ย่อยผูกต่อโดย


node1  =  sceneManager.rootSceneNode.createChildSceneNode('RobotNode')


 ในส่วนของโค้ดนี้เราได้เรียก method createChildSceneNode ของ root SceneNode ค่าที่ผ่านสู่ createChildSceneNode คือชื่อของ SceneNode ที่เราสร้าง คล้ายในส่วนของ Entity class และ SceneNode ไม่สามารถมีชื่อเดียวกันได้

ขั้นสุดท้ายเราต้องทำการผูก Entity เข้ากับ SceneNode ดังนั้น Robot จึงมีตำแหน่งที่จะเรนเดอร์ที่


node1.attachObject(ent1)


 โค้ดที่ได้จากของเดิมจะเป็น


import ogre.renderer.OGRE as ogre
import SampleFramework as sf
class TutorialApplication(sf.Application):
def _createScene(self):
sceneManager = self.sceneManager
sceneManager.ambientLight = ogre.ColourValue(1, 1, 1)
ent1 = sceneManager.createEntity('Robot','robot.mesh')
node1  =  sceneManager.rootSceneNode.createChildSceneNode('RobotNode')
node1.attachObject(ent1)

if __name__ == '__main__':
ta = TutorialApplication()
ta.go()

และเมื่อทำการทดสอบ Run โค้ดที่สร้างคุณจะเห็นตัวหุ่นยนต์ปรากฏอยู่บนหน้าจอ






หมายเหตุ โค้ดโปรแกรมที่เขียนทดสอบต้องบันทึกใน C:\PythonOgre\demos\ogre เพื่อการอ้างอิงค่าคอนฟิกของโปรแกรมเดิมและโมเดล 3d ที่เรียกใช้ทดสอบโปรแกรม

ไม่มีความคิดเห็น:

แสดงความคิดเห็น