下面来学习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.
下面是效果图
- 大小: 46.6 KB
分享到:
相关推荐
1. **Camera和Viewport**: 放大镜效果通常需要两个Camera,一个是主Camera负责捕捉整个场景,另一个是放大镜Camera,它只关注一个小的区域。放大镜Camera的viewport设置可以调整其视野范围,使其看起来像一个局部...
4. **Camera和Viewport**: 在3D游戏中,Camera组件负责渲染场景。开发者可以设置相机的viewport Rect,使得在不同分辨率下,相机视口保持一致的视觉效果。 5. **Post-processing Stack**: Unity的后期处理堆栈允许...
通过在`ViewPort3D`内添加`Camera`、`Model3DGroup`和其他3D对象,我们可以构建出一个完整的3D场景。`Camera`用于定义观察3D场景的角度,而`Model3DGroup`则包含了实际的3D几何形状、材质和纹理。 `Helix Toolkit`...
2. **Camera**: 在3D场景中,相机的位置和视角决定了用户看到的内容。在WPF中,通常使用PerspectiveCamera或OrthographicCamera,前者模拟人眼透视效果,后者则用于正交投影。 3. **Model3DGroup**: 这是一个容器,...
在Windows Presentation Foundation (WPF)中,ViewPort3D是用于构建3D图形和场景的主要控件。这个项目,"WPF_Viewport3D-master",旨在提供一个简单的实例,帮助开发者了解如何在WPF环境中创建和操作3D元素。下面将...
### SPVLoc: Semantic Panoramic Viewport Matching for 6D Camera Localization #### 概述 本文介绍了一种名为SPVLoc(Semantic Panoramic Viewport Matching)的新方法,该方法用于解决在未知环境中实现六维度...
react-native-camera 是 React Native 的摄像头 viewport。这个模块应用于开发的早期阶段,它支持摄像头的转换和基本图片捕捉。 使用示例: var React = require('react-native'); var { AppRegistry, ...
所有功能都是可配置和可移动的,因此请根据您的实际需要设置视口。从pixi-viewport v3迁移到v4 视口需要导入或要求如下: import { Viewport } from 'pixi-viewport'// orconst Viewport = require ( 'pixi-...
5. **视口设置(Viewport)**:`glViewport()`函数用于定义渲染区域的大小和位置,它可以适应不同的屏幕分辨率。 6. **固定功能管线和现代OpenGL**:早期的OpenGL使用固定功能管线,其中许多操作(如变换和投影)由库...
摄像机视图 react-native-camera ,react-native-camera 是 React Native 的摄像头 viewport。这...
3. **视口(Viewport)**:指定渲染目标的大小和位置,通常对应于屏幕的分辨率。 4. **世界矩阵(World Matrix)**:虽然不是相机的一部分,但它经常与相机一起使用,用以定义场景中每个物体的位置和方向。 在实际代码...
一个相机(camera)和另外的立方体数据容器。信息的组织和场景图,在先前的文献进行了场景图的理论,我们可以找的到的。如果你已经全部理解了,那么你可以不需要再次了解它,可以直接进入下一步。 //创建一个三D场景...
每个Camera都需要关联一个Viewport,通过设置Viewport的左下角坐标和宽度高度,可以控制相机看到的画面在屏幕上的位置。 3. **渲染策略**:在OSG中,渲染不是直接由Camera执行的,而是由GraphicsContext和...
`Viewport3D`包含一个`Camera`对象,用于定义观察者的位置和视角,以及一个或多个`Model3DGroup`对象,用于存储3D模型的几何、材质和光照信息。 在本例中,描述中提到的3D翻转效果可能是通过变换矩阵实现的。在C#...
viewport3D.Camera zoomCamera = viewport3D.Camera as PerspectiveCamera; zoomCamera.FieldOfView -= e.Delta * 0.05; } private void Viewport3D_MouseMove(object sender, MouseEventArgs e) { // 旋转操作 ...
var project = require ( 'camera-project' ) //projection * view matrix var combinedProjView = mat4 . multiply ( [ ] , projection , view ) //viewport bounds var viewport = [ x , y , width , height ] //...
三、Camera-Viewport Rect 说明 Viewport Rect 代表摄像机在屏幕上的位置及能看到屏幕的尺寸大小比例。Viewport Rect 由四个参数组成:(x,y) 代表摄像机的起始放置点,(W,H) 代表摄像机基于起始点能够看到的屏幕...
1. **设置主相机**:将`MainCamera`的`Normalized Viewport Rect`设置为X=0, Y=0, Width=1, Height=1,并将`Depth`值设置为0。 2. **设置辅助相机**:为辅助相机设置`Normalized Viewport Rect`为X=0.05, Y=0.05, ...
5. **Camera**:用于定义观察者的视角,与ViewPort和SceneManager紧密关联。每个相机对应一个视口,而一个渲染目标可以有多个视口。 6. **SceneNode**:继承自Node,构成场景的树形结构,可以附加多个可移动对象...
viewport.camera = new Camera3D(); // 添加物体到场景 viewport.scene.addChild(car); // 添加摄像机到舞台 addChild(viewport); // 监听鼠标事件 stage.addEventListener(MouseEvent.MOUSE_DOWN, ...