8.camera and viewport

基于上一个程序添加代码。

1.camera

只需要重写createcamera()就可以了,这里mCamera是ExampleApplication的一个成员。

void createCamera()
{
	mCamera = mSceneMgr ->createCamera("MyCamera1");
	mCamera ->setPosition(0, 100, 200);
	mCamera ->lookAt(0, 0, 0);
	mCamera ->setNearClipDistance(5);
	mCamera ->setPolygonMode(Ogre::PM_WIREFRAME);
}
最后一个是设置成线框模式。


2.viewport

打比方来说,camera是一个摄像头的话,viewport相当于一个屏幕,显示摄像头看到的东西,当然可以发生一定变化,如纵横比例等。

void createViewports()
{
	Ogre::Viewport* vp = mWindow ->addViewport(mCamera);
	vp ->setBackgroundColour(ColourValue(0.0f, 0.0f, 1.0f));
	mCamera ->setAspectRatio(Real(vp ->getActualWidth()) / Real(vp ->getActualHeight()));
}

### 如何配置或调整 Virtual Camera 的视角 在 Unity 中,Cinemachine 提供了一种强大的工具来管理和调整虚拟相机的视角。以下是关于如何配置和调整虚拟相机视角的相关信息: #### 配置虚拟相机的基础属性 在 Cinemachine 中,`CinemachineVirtualCamera` 是核心组件之一,它允许开发者轻松地创建复杂的摄像机行为并调整其视角[^1]。要修改虚拟相机的视角,通常需要关注以下几个方面: - **Field of View (FOV)** FOV 参数决定了虚拟相机的视野范围。较大的 FOV 值会增加透视效果,而较小的 FOV 则会使画面显得更加紧凑和平坦。可以在 `Inspector` 窗口中找到该选项,并手动输入数值进行调整[^2]。 - **Position and Rotation** 调整虚拟相机的位置 (`Position`) 和方向 (`Rotation`) 可以改变观察的角度。这可以通过拖动场景中的虚拟相机对象或者直接编辑其 Transform 组件完成。 #### 实现第一人称视角控制 如果目标是实现类似于 FPS 游戏的第一人称视角,则可以借助 Cinemachine 提供的功能快速达成目的。例如,在安装好 Cinemachine 插件之后,可通过绑定键盘按键(如 WASD 控制移动、QE 左右旋转)以及鼠标事件(如滚轮缩放距离),让玩家自由操控相机视角。 ```csharp // 示例代码:简单的第一人称视角控制器 using UnityEngine; public class FirstPersonController : MonoBehaviour { public float moveSpeed = 5f; public float rotationSpeed = 100f; void Update() { // 移动逻辑 Vector3 movement = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); transform.Translate(movement * moveSpeed * Time.deltaTime); // 旋转逻辑 float mouseX = Input.GetAxis("Mouse X") * rotationSpeed * Time.deltaTime; transform.Rotate(Vector3.up, -mouseX); } } ``` 上述脚本展示了基础的第一人称视角控制方式,实际项目中可能还需要结合 Cinemachine 的内置功能进一步优化体验。 #### 设置视口参数 除了调整相机本身的属性外,还可以通过调节视口(Viewport) 来影响最终呈现的画面比例与布局。例如,在 OSG 开发环境中,使用如下代码片段即可指定视口的具体尺寸及位置[^3]: ```cpp pCamera->setViewport(new osg::Viewport(0, 0, screenWidth, screenHeight)); ``` 这里需要注意的是,不同引擎对于视口的操作可能存在差异,因此需参照各自官方文档执行相应操作。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值