Camera和Viewport

下面来学习OGRE 引擎中很重要的几个概念。 Camera和Viewport.

从真实的世界来看,是不存在这两样东西的,真实的世界只有场景(Scene). 而这里OGRE抽象出的两个概念则是模拟观察者(人)的位置和眼睛.

从真实世界来讲,人如果要观察这个世界,首先需要确定自己的位置(在什么地方观察),然后把观察到的景象通过眼睛来传递给大脑。 那么在计算机中,Camera和Viewport就是虚拟这两样东西的.

一个Viewport是对一个Camera所拍摄到的场景的反映。所以说一个Viewport只能绑定一个Camera.

而一个Camera所拍摄到的场景可以通过多个Viewport反映到不同的区域,所以一个Camera则可以绑定多个Viewport.

一个Camera同时只可以拍摄一个场景,所以一个Camera只可以绑定一个场景.

一个场景可以由多个观察者去观察,所以它可以绑定多个Camera.

从代码上来反映问题. 以下是OGRE的伪代码.
Camera * camera1 = scene->CreateCamera("camera1"); (一个camera1 绑定到了scene)
Camera * camera2 = scene->CreateCamera("camera2"); (一个camera2 绑定到了scene)

scene创建了2个Camera对象,即一个场景绑定了多个Camera.
我们可以通过设置Camera的位置,角度等来确定观察者的位置.如:
camera1->SetPosition(Vector3(0,0,100));
camera1->LookAt(Vector3(0,0,0);

camera2->SetPosition(Vector3(0,0,0));
camera2->LookAt(Vector3(-300,0,-300);

Viewport * vp1 = render_win->addViewport(camera1,0,0,0,1,1);
Viewport * vp11 = render_win->addViewport(camera1,1,0.7,0.7,0.3,0.3);
Viewport * vp2 = render_win->addViewport(camera2,2,0,0,0.3,0.3);

这里我们用 vp1和vp11来同时绑定了camera1,不同的只是它们的大小和位置不同而已.

vp2绑定了camera。3个Viewport在render_win上的显示的位置是由他们的Z值决定的。所以顺序是vp1 vp11 vp2.

下面是效果图


 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值