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