วันพุธที่ 26 พฤศจิกายน พ.ศ. 2551

PyOgre Beginner Tutorial 2 – Part 2 Cameras&ViewPort

Creating the Camera
การสร้างกล้องเราจะสร้างแทนที่ default method ใน  ExampleApplication ที่ใช้สร้างกล้อง
โดยหาฟังก์ชั่นสมาชิก _createCamera สิ่งแรกที่ต้องทำ เราจะใช้  SceneManager สร้างกล้องขึ้น เพิ่มโค้ดตามนี้

self.camera =  self.sceneManager.createCamera ('PlayerCam')

นี่จะเป็นการสร้างกล้องโดยมีชื่อว่า "PlayerCam" จำไว้ว่าคุณสามารถที่จะใช้  getCamera ฟังก์ชั่นของ  SceneManager เพื่อเข้าถึงกล้องผ่านชื่อ ถ้าคุณตัดสินใจไม่เอาตัวชี้มาอ้างถึงมัน
สิ่งที่เราจะทำต่อไป ทำการตั้งค่าตำแหน่งและทิศการหันในกับ Camera ที่เราสร้างขึ้น โดยจะให้กล้องวางอยู่ห่างจากจุด กำเนิด และหันหน้าเข้าจุดกำเนิด

self.camera.position = (0, 10, 500)
self.camera.lookAt((0, 0, 0))

สำหรับ lookAt function เป็นฟังก์ชั่นที่เราจะใช้ในการบังคับให้ Camera หันหน้าไปในทิศทางที่เราต้องการ โดยที่เราไม่ต้องเข้าไปยุ่งกับการหมุนกล้อง หันกล้อง ทำให้เราสามารถที่จะตั้งค่าการหันกล้องไปในทิศทางที่เราต้องการง่ายมากขึ้น ในขั้นสุดท้าย ทำการตั้งค่าระยะใกล้ ในการแสดงภาพของกล้อง ที่มองออกไป(near clipping distance)

self.camera.nearClipDistance = 5

เรายังสามารถที่จะ ทำการตั้งค่าระยะไกล ในการแสดงภาพของกล้อง ที่มองออกไป(far clipping distance) ได้โดยใช้คุณสมบัติที่เรียกว่า "farClipDistance"

Viewports

Ogre Viewports

เมื่อคุณเริ่มมีการ ใช้กล้องหลายตัว เนื้อหาสำคัญเกี่ยวกับ  Viewport class นั้นจะเริ่มมีประโยชน์สำหรับคุณมากขึ้น หัวข้อที่เริ่มเกิดขึ้นขนาดนี้เพราะว่า มันเป็นสิ่งสำคัญสำหรับคุณที่ จะต้องเข้าใจว่า Ogre ตัดสินใจว่ากล้องอันไหนที่จะต้อง ทำการเรนเดอร์ภาพจากกล้องนั้นให้ปรากฎบนหน้าจอ และมันมีความเป็นไปได้สำหรับ Ogre ที่จะมี  SceneManagers หลายตัวในเวลาเดียวกัน ดังนั้นจึงสามารถที่จะแบ่งหน้าจอให้แสดงผลจากหลายกล้องได้ แต่ต้องเรียนรู้ในระดับที่สูงกว่านี้
ในการทำความเข้าใจเกี่ยวกับการ เรนเดอร์ภาพของ Ogre ซึ่งประกอบไปด้วยส่วนที่สำคัญ  Camera,  SceneManager, และ RenderWindow
RenderWindow มันคือหน้าต่างพื้นฐานที่ใช้ในการแสดงทุกสิ่งให้ปรากฏบนจอ
SceneManager ใช้สร้าง Camera เพื่อแสดง Scene

ในการที่จะเรนเดอร์ภาพจาก Camera ตัวไหนคุณต้องบอก  RenderWindow  ตามธรรมดาที่ใช้ใน Ogre คุณควรจะสร้าง Camera เพียงตัวเดียว และทำการเซต Camera ให้ใช้  RenderWindow และมี Viewport เดียว ซึ่งเราจะได้ศึกษาต่อไปนี้ และยังมีการตั้งค่าภาพพื้นหลังให้กับ Scene อีกด้วย


Creating the Viewport
เพิ่มโค้ดในส่วนของ TutorialApplication._createViewports เพิ่ม Viewport

viewport = self.renderWindow.addViewport (self.camera)

ตั้งค่าสีพื้นหลังเป็นสีดำ

viewport.backGroundColor = (0, 0, 0)

และสิ่งสำคัญคือการตั้งค่า อัตราส่วนการแสดงผลของ Viewport ซึ่งค่าโดยมาตรฐานแล้วคือแสดงเต็มจอ

self.camera.aspectRatio = float (viewport.actualWidth) / float (viewport.actualHeight)

และนี้ก็คือการใช้ Class Viewport อย่างง่ายๆ

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

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