您的位置:首页 > Web前端 > Node.js

OGRE基础教程 一 SceneManager、SceneNode、Entity

2012-11-05 18:56 447 查看
英语水平有限,欢迎大家批评指正



[b]本文并没有将原文全部翻译,只是将其中的一些知识点翻译总结了一下,想要查看详细讲解的话,可以到原文处看一下,附上英文原文地址:http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Basic+Tutorial+1&structure=Tutorials[/b]

1.SceneManager

SceneManager管理屏幕上出现的所有东西,当对象(Objects)被加入场景中时,SceneManager记录他们的位置。当你创建Camera(摄像机)、plane(平面)、billboard(广告牌)、light(灯光)等时,都由SceneManager来记录他们。

SceneManager有多种类型,比如渲染terrain(地面)、BSP、Maps等的SceneManager。

2.Entity

Entity是可以渲染到场景中的对象的一种类型。可以认为Entity是有3D mesh(网格)代表的任何东西。一个Robot、一条鱼、character行走的terrain都是Entity,但是像light、Billboard、particles(粒子)、camera等就不是Entity了。

有一点要注意,Ogre将可渲染对象的位置和方向分开,这意味着你不能直接把一个Entity加入到场景中。要使Entity依附于一个SceneNode对象上,而SceneNode包含了位置和方向信息。

3.SceneNode

SceneNode可以记录附加到他的所有对象的位置和方向信息,只有将你创建的Entity附加到一个SceneNode才能渲染到场景中。另外,SceneNode并不是显示到屏幕上的一个对象,只有创建SceneNode并附加一个Entity才能显示出来。

SceneNode可以附加任意多的对象。比如有一个角色于屏幕上走动,你想在他周围生成一个light。要做出来,首先要创建一个SceneNode,然后为角色创建一个Entity并附加到这个SceneNode上,然后再创建一个light对象并且同样附加到这个SceneNode上,SceneNode也可以附加到其他的SceneNode上。

下例是Ogre中添加对象的代码:

Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");


Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("HeadNode");


headNode->attachObject(ogreHead);


其结果如下图:




4.Coordinates and Vectors

Ogre使用X轴和Z轴作为水平面,Y轴作为垂直轴。



Ogre使用Vector类来代表位置和方向,Vector分为2、3、4维,其中Vector3时最常用的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: