Mogre入门

来源:互联网 发布:淘宝营销方式有哪些 编辑:程序博客网 时间:2024/06/06 06:49

Mogre是Ogre在C#环境下的语言。这里记录一下Mogre的基本概念(不全,是我使用中遇到的,可能语言描述不够严谨)。很多概念与Ogre是一样的,因此也可以用于Ogre。

一、SceneManager

它是显示控制器,管理所有屏幕上显示的对象。具体来说,它保存了所有对象的track(追踪)。

二、Entity

它是Mogre世界中的基本对象。所有可视对象都是Entity。它只包含对象的本身属性,而不包含方位信息。

三、SceneNode

它包含着Entity的方位信息。具体有以下几点需要注意:

1、通过AttachObject进行绑定:

SceneNode node;Entity entity;node.AttachObject(entity);

2、不同的Entity可以使用同一个SceneNode的信息。

3、SceneNode的位置信息是相对于其父节点而言的。

四、Camera

用来观察创建的对象。使用方法与组织方式类似于SceneNode,可将其视为特殊的Node。同样需要设置Position属性来确定方位。

使用camera.Near(Far)ClipDistance设定裁剪范围。

可以有多个Camera对象。必须告诉窗体使用哪个Camera对象。必须有ViewPort对象。示例如下:

ViewPort vp = this.RenderWindow.AddViewPort(camera);
五、Listener

添加Frame事件响应。用Listener作为事件响应的优点是实时性较高。具体使用方式如下:

root.FrameStarted += new FrameListener.FrameStarted(hander);
此函数可放在创建场景的函数中。

六、键盘、鼠标响应

Mogre使用MOIS库进行键盘与鼠标的控制。需要注意以下两点:

1、需要添加Timer才能使监听生效。

2、注意使用缓冲区(使用缓冲区,才能改变鼠标键盘的状态)。

七、画基本几何体

使用ManualObject类。

ManualObject mo = smgr.CreateManualObject("mobj");mo.Begin("Core/NodeMaterial", RenderOperation.OperationTypes.OT_POINT_LIST);mo.Position(new Vector3(0, 0, 0));mo.Position(new Vector3(1, 1, 1));mo.End();
其中Begin函数的第一个参数是materialName,不能随便写。

由于ManualObject也属于Entity,因此也需要绑定到SceneNode上。

八、光线探测

在进行场景查询时,例如实现鼠标选择的功能时,MOgre内设了一套光线探测的方法。通过getCameraToViewPortRay()建立一条射线。

场景查询返回的是MovableObj或者WorldFragment(二者之一)。worldFragment结构包含射线击中目标的位置。

待续

0 0
原创粉丝点击