相机控制
更新时间:2021-06-18
ARCamera:ARNode
渲染相机类。
Public methods | |
---|---|
ARCamera | project 将世界坐标系中的一个点投影为屏幕坐标点 |
ARCamera | unproject 将屏幕坐标上的一个点反投影成当前世界坐标系中的一个点 |
ARCamera | is_visible_in_frustum 判断一个节点的包围盒是否在视椎体的可视区域内 |
ARCamera | Key-Value Coding support KVC支持 |
project
API起始版本:190
ARVec2 project(ARVec3 position);
将世界坐标系中的一个点投影为屏幕坐标点
Parameter
- ARVec3 |position 世界坐标系中的一个点的位置
Return
- ARVe2|屏幕坐标点,其中x, y为对应屏幕坐标
sample:
camera = scene:get_active_camera()
local world_pos = ARVec3:new_local(100, 20, 42)
local screen_point = camera:project(world_pos)
io.write("projected screen point: "..screen_point:to_string())
unproject
API起始版本:190
ARVec3 unproject(ARVec2 screen_point, float depth);
将屏幕坐标上的一个点反投影成当前世界坐标系中的一个点
Parameter
- ARVec2 | screen_point 屏幕坐标点
- float | depth 指定的/假设的屏幕点对应的世界坐标系中的点的深度
Return
- ARVec3 | 世界坐标系中的一个位置点
sample:
camera = scene:get_active_camera()
local screen_point = ARVec2:new_local(100, 20)
local world_pos = camera:unproject(screen_point, 1000)
io.write("result point in worldspace: "..world_pos:to_string())
is_visible_in_frustum
API起始版本:190
bool is_visible_in_frustum(BoundingBox *box);
判断一个节点的包围盒是否在视椎体的可视区域内,当所有包围盒的点都不在视锥体内返回false,其余返回true
Parameter
- BoundingBox | box 对应节点的包围盒
Return
- bool | 给定节点是否在可视区内
sample:
camera = scene:get_active_camera()
local bounding_box = node1:get_bounding_box()
local visible = camera:is_visible_in_frustum(bounding_box)
io.write("is node1 visible in the frusum now? "..tostring(visible))
Key-Value Coding support
API起始版本:190
set_property
void set_property_float(const std::string &key, float value);
void set_property_mat44(const std::string &key, ae::ARMat44 value);
通过给定的Key和Value设置当前对象对应Key和类型的属性的值
get_property
float get_property_float(const std::string &key);
ae::ARMat44 get_property_mat44(const std::string &key);
通过给定的Key来获取当前对象对应属性的值
可用的Key和对应的类型如下:
Key | 类型 | 描述 | 默认值 | 适用性 | 备注 |
---|---|---|---|---|---|
view_matrix | ae::ARMat44 | 渲染相机的视图矩阵 | 从场景配置文件中加载的相机配置计算得默认值 | set & get | |
projection_matrix | ae::ARMat44 | 渲染相机的投影矩阵 | 从场景配置文件中加载的相机配置计算默认值 | get only | |
fov | float | 相机的视场角 | 由SDK层设置, 默认为56° | set & get | |
z_near | float | 视椎体近平面的距离 | 1 | set & get | |
z_far | float | 视椎体远平面的距离 | 100 | set & get |
备注:因为ARCamera继承于ARNode,也是一个ARNode,所以 ARNode中的Property也适用于ARCamera。