Dandelion
1.1.2
A light-weight 3D builder for educational usage
载入中...
搜索中...
未找到
camera.h
浏览该文件的文档.
1
#ifndef DANDELION_SCENE_CAMERA_H
2
#define DANDELION_SCENE_CAMERA_H
3
4
#include <Eigen/Core>
5
6
/*!
7
* \ingroup rendering
8
* \file scene/camera.h
9
* \~chinese
10
* \brief 包含相机的类,用来表示场景中的相机。
11
*/
12
13
/*!
14
* \ingroup rendering
15
* \~chinese
16
* \brief 表示观察点的相机,既可以用于预览视角,也可以用于渲染视角。
17
*
18
* 这个类封装了从观察点、按一定视角去观察目标点的功能,可以完成相应的几何计算,
19
* 包括观察矩阵和投影矩阵 (view & projection matrix)。
20
* 预览场景中相机的显示不由 Camera 类自己负责,它的功能只是存储参数并构造变换矩阵。
21
* Dandelion 工作于渲染模式下时,Scene 对象将主动渲染一个相机视锥。
22
*/
23
struct
Camera
24
{
25
public
:
26
27
Camera() =
delete
;
28
/*!
29
* \~chinese
30
* \param position 相机位置(观察点)
31
* \param target 相机指向的目标点
32
* \param near_plane 可视范围近平面到观察坐标系原点的距离(正值)
33
* \param far_plane 可视范围远平面到观察坐标系原点的距离(正值)
34
* \param fov_y_degrees 高度方向(Y 方向)的视角大小,单位是角度
35
* \param aspect_ratio 宽高比,即视角的宽度 / 高度
36
*/
37
Camera(
38
const
Eigen::Vector3f&
position
,
const
Eigen::Vector3f&
target
,
float
near_plane
= 0.1f,
39
float
far_plane
= 10.0f,
float
fov_y_degrees
= 45.0f,
float
aspect_ratio
= 1.33f
40
);
41
~Camera() =
default
;
42
/*! \~chinese 获取该相机的 View 矩阵,对应观察变换。 */
43
Eigen::Matrix4f
view
();
44
/*! \~chinese 获取该相机的 Projection 矩阵,对应投影变换。 */
45
Eigen::Matrix4f
projection
();
46
/*! \~chinese 相机的位置(视点)。 */
47
Eigen::Vector3f
position
;
48
/*! \~chinese 相机看向的位置(目标点)。 */
49
Eigen::Vector3f
target
;
50
/*! \~chinese 可视范围近平面到观察坐标系原点的距离(正值)。 */
51
float
near_plane
;
52
/*! \~chinese 可视范围远平面到观察坐标系原点的距离(正值)。 */
53
float
far_plane
;
54
/*! \~chinese Y 方向(上下)的视角大小。 */
55
float
fov_y_degrees
;
56
/*! \~chinese 可视范围的宽度与高度之比。 */
57
float
aspect_ratio
;
58
/*! \~chinese 世界坐标系中的“上”方向向量,用于求相机坐标系的正交基。 */
59
Eigen::Vector3f
world_up
;
60
};
61
62
#endif
// DANDELION_SCENE_CAMERA_H
Camera::far_plane
float far_plane
定义
camera.h:53
Camera::near_plane
float near_plane
定义
camera.h:51
Camera::view
Eigen::Matrix4f view()
定义
camera.cpp:26
Camera::aspect_ratio
float aspect_ratio
定义
camera.h:57
Camera::fov_y_degrees
float fov_y_degrees
定义
camera.h:55
Camera::target
Eigen::Vector3f target
定义
camera.h:49
Camera::world_up
Eigen::Vector3f world_up
定义
camera.h:59
Camera::projection
Eigen::Matrix4f projection()
定义
camera.cpp:46
Camera::position
Eigen::Vector3f position
定义
camera.h:47
src
scene
camera.h
制作者
1.14.0