Qt3D摄像机QCamera常用代码使用说明

cpp 复制代码
Qt3DRender::QCamera *cameraEntity = view->camera();

    cameraEntity->lens()->setPerspectiveProjection(45.0f, 16.0f/9.0f, 0.1f, 1000.0f);
    cameraEntity->setPosition(QVector3D(0, 0, 20.0f));
    cameraEntity->setUpVector(QVector3D(0, 1, 0));
    cameraEntity->setViewCenter(QVector3D(0, 0, 0));

很多时候,我们只需要设置以上几句代码,就可以设置3D场景中的摄像机参数了。

具体说明如下:

  1. 获取相机实体对象:

Qt3DRender::QCamera *cameraEntity = view->camera();

这行代码通过 `view` 对象获取到当前场景中的相机实体对象 `cameraEntity`,后续的操作将会对这个相机进行设置。

  1. 设置透视投影参数:

cameraEntity->lens()->setPerspectiveProjection(45.0f, 16.0f/9.0f, 0.1f, 1000.0f);

参数依次为:

  • `45.0f`:视场角(field of view),即相机视野的宽度。

  • `16.0f/9.0f`:视野的宽高比(aspect ratio),这里设置为16:9,通常用来匹配屏幕或显示区域的宽高比。

  • `0.1f`:近裁剪面的距离,即相机到视景体近端的距离。

  • `1000.0f`:远裁剪面的距离,即相机到视景体远端的距离。

  1. 设置相机位置:

cameraEntity->setPosition(QVector3D(0, 0, 20.0f));

这行代码设置相机在三维空间中的位置。这里将相机位置设置为 `(0, 0, 20.0f)`,即相机位于坐标原点向正Z方向移动了20个单位的位置。

  1. 设置相机的上向量:

cameraEntity->setUpVector(QVector3D(0, 1, 0));

这行代码设置相机的上向量,这个向量决定了相机在空间中的方向。这里将相机的上向量设置为 `(0, 1, 0)`,即Y轴正方向,表示相机的正上方是沿着Y轴正方向。

  1. 设置相机的观察中心:

cameraEntity->setViewCenter(QVector3D(0, 0, 0));

这行代码设置相机的观察中心点,即相机所观察的目标位置。这里将观察中心设置为 `(0, 0, 0)`,即坐标原点,表示相机将视角对准坐标原点。

这样就可以在3D场景窗口中,正确地显示和渲染场景中的物体。.

这里需要说明的是:

光源的方向指示了光线从光源发射的方向。它决定了光线的传播方向,影响场景中物体的阴影和高光效果。

摄像机的方向指示了从摄像机视角看向场景时的观察方向。它决定了观察者的视野,影响渲染时物体在屏幕上的位置和可见性。

相关推荐
----云烟----9 小时前
QT中QString类的各种使用
开发语言·qt
「QT(C++)开发工程师」14 小时前
【qt版本概述】
开发语言·qt
前端Hardy18 小时前
HTML&CSS:数据卡片可以这样设计
前端·javascript·css·3d·html
一路冰雨18 小时前
Qt打开文件对话框选择文件之后弹出两次
开发语言·qt
老赵的博客19 小时前
QT 自定义界面布局要诀
开发语言·qt
码码哈哈0.019 小时前
VSCode 2022 离线安装插件QT VSTOOl报错此扩展不能安装在任何当前安装的产品上。
ide·vscode·qt
小彭努力中1 天前
138. CSS3DRenderer渲染HTML标签
前端·深度学习·3d·webgl·three.js
feiyangqingyun1 天前
Qt/C++离线地图的加载和交互/可以离线使用/百度和天地图离线/支持手机上运行
c++·qt·qt天地图·qt离线地图·qt地图导航
AI生成未来1 天前
斯坦福&UC伯克利开源突破性视觉场景生成与编辑技术,精准描绘3D/4D世界!
3d·3d场景·4d
gz94562 天前
windows下,用CMake编译qt项目,出现错误By not providing “FindQt5.cmake“...
开发语言·qt