相机控制
所有文档

          AR开放平台

          相机控制

          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。

          上一篇
          物体识别
          下一篇
          动画