OGRE 引擎官方基础教程 (二)

本文是OGRE引擎的基础教程第二部分,主要介绍了相机的创建和使用,包括相机的位置、视角Viewport的设置,以及光线和阴影的配置。通过创建相机,设置相机的位置和朝向,创建Viewport,并探讨了不同类型的阴影技术,如模态纹理阴影、模态遮罩阴影和添加式遮罩阴影。最后,创建了不同类型的光源,如点光源、聚光灯和方向光,并展示了它们在场景中的效果。
摘要由CSDN通过智能技术生成

同之前的教程一样,我么会使用一些 预先写好的 结构作为切入点。

在第3,4讲里面我们会采用类似的方法

 

在BasicTutorial2类里面加入两个函数createViewport和createCamera,这两个函数在基类BaseApplication是定义好的虚函数

改写头文件如下 BasicTutorial2.h

BasicTutorial2 header

class BasicTutorial2 : public BaseApplication
{
  
public:
	BasicTutorial2(void);
	virtual ~BasicTutorial2(void);
 
protected:
	virtual void createScene(void);
	virtual void createCamera(void);
	virtual void createViewports(void);
};

 

在对应的实现里面加入

BasicTutorial2 implementation
//-------------------------------------------------------------------------------------
BasicTutorial2::BasicTutorial2(void)
{
  
}
 
//-------------------------------------------------------------------------------------
BasicTutorial2::~BasicTutorial2(void)
{
  
}
 
//-------------------------------------------------------------------------------------
void BasicTutorial2::createCamera(void)
{
  
}
 
//-------------------------------------------------------------------------------------
void BasicTutorial2::createViewports(void)
{
  
}
 
//-------------------------------------------------------------------------------------
void BasicTutorial2::createScene(void)
{
  

 

 

现在可以编译,但我们会加一些初始化的操作进去

 

照相机

Ogre的相机

相机是我们用来观看我们所创建的场景的工具。 在OGRE当中,相机的工作原理有些类似于SceneNode, 它具有

setPosition,yaw,rollandpitch这些成员函数,你可以将相机附着到任何一个场景结点,就像SceneNode一样。相机

的位置同样也是针对其父结点而言的。对于移动和旋转操作,你可以把相机视作SceneNode

 

有一点需要说明的是,Ogre的相机跟我们想象的可能有不同之处。 我们不能创建多个相机,然后每一次使用一个然后

关闭其它的。 那么我们如何进行切换呢? 可以通过创建不同的场景结点作为 “相机的位置结点”, 它们定义了相机

的位置和指向的方向, 当需要展示一个场景的时候, 将相机附着到不同的适合的结点。我们会在FrameListener范例

中见到类似的技巧

 

创建一个相机

通过重写BaseApplication的函数来创建相机

因为相机跟SceneManager是关联的,所以我们使用SceneManager的对象来创建相机,在函数中加入下列语句

void BasicTutorial2::createCamera(void)
{
   
    // create the camera
    mCamera = mSceneMgr->createCamera("PlayerCam");
}

创建一个名为“PlayerCam”的相机,注意可以通过调用getCamera函数来获得SceneManager的相机

接下来我们要做的是设置相机的位置和朝向, 我们把相机放在Z+方向, 朝向三维坐标原点

// set its position, direction  
    mCamera->setPosition(Ogre::Vector3(0,10,500));
    mCamera->lookAt(Ogre::Vector3(0,0,0)); 

lookAt函数非常有趣,你可以直接指定相机的朝向而不用作变换。SceneNodes也有这样一个函数,可以使得实体Entities朝向任何方向

 

最后我们设置5个单位的a near clipping distance

这个距离决定了我们能够看多远,超过这个距离的东西引擎就不会再进行渲染,通常可以通过这个方法来提高帧率

加入下列代码

// set the near clip distance mCamera->setNearClipDistance(5);

mCamera->setNearClipDistance(5);

setFarClipDistance也可以简单的完成类似的工作

 

因为我们重写了相机创建,所以我们需要创建一个相机控制器

mCameraMan = new OgreBites::SdkCameraMan(mCamera);   // create a default camera controller

目前为止,

createCamera函数的代码如下所示

void BasicTutorial2::createCamera(void)
{
   
    // create the camera
    mCamera = mSceneMgr->createCamera("PlayerCam");
    // set its position, direction  
    mCamera->setPosition(Ogre::Vector3(0,10,500));
    mCamera->lookAt(Ogre::Vector3(0,0
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值