RayCaster
所有文档

          AR开放平台

          RayCaster

          此类封装RayCaster相关操作,RayCaster类提供模型拾取相关能力,包含屏幕射线生成、随屏与非随屏节点拾取等。

          Public methods
          RayCaster ray_from_screen
          获取从屏幕点向场景中垂直发出的射线
          RayCaster get_hit_result
          获取从屏幕点向随屏空间中垂直发出的射线
          RayCaster hud_ray_from_screen
          射线的拷贝构造函数
          RayCaster get_hud_hit_result
          获取与该射线相交的随屏结果
          Demo
          RayCaster Demo RayCaster RayCasterDemo ()
          Demo示例

          RayCaster Demo

          RayCaster RayCasterDemo ()

          demo示例

          sample:
          local ray_caster = scene:get_input_controller():get_ray_caster()
          local ray = ray_caster:ray_from_screen(screen_point)
          
          --拾取射线在场景中相交的第一个节点
          local hit_result = ray_caster:get_hit_result(ray, "first_hit")
          io.write("hit type = "..hit_result["type"])
          local result = hit_result["result"]
          if (result[0] ~= nil) then
              local node = result[0]["node"]
              local distance = result[0]["distance"]
              if (node ~= nil) then
                  local name = node:get_property_string("name")
                  io.write("hit entity with node = "..name.." distance = "..distance)
              end
          end
          
          --拾取射线在场景中相交的所有节点
          local hit_result = ray_caster:get_hit_result(ray, "all_hit")
          io.write("hit type = "..hit_result["type"])
          local result = hit_result["result"]
          for key, value in pairs(result) do  
              io.write("hit entity with i = "..key)
              local node = value["node"]
              local distance = value["distance"]
              if (node ~= nil) then
                  local name = node:get_property_string("name")
                  io.write("hit entity with node = "..name.." distance = "..distance)
              end
          end

          ray_from_screen

          API起始版本:190

          Ray ray_from_screen(screen_point)

          获取从屏幕点向场景中垂直发出的射线

          Parameters

          • ARVec2 | screen_point:屏幕坐标,起点为屏幕左上角

          Returns

          • Ray:从屏幕点向场景中发出的射线
          sample:
          local ray = ray_caster:ray_from_screen(ae.ARVec2:new_local(100,100))

          get_hit_result

          API起始版本:190

          LUATABLE get_hit_result(ray, hit_type)

          获取与该射线相交的非随屏结果

          Parameters

          • Ray | ray:射线
          • string | hit_type:拾取结果的类型("first_hit" - 返回第一个相交的结果, "all_hit" - 返回所有相交的结果)

          Returns

          • LUATABLE:相交结果("type"-拾取类型; "result"-拾取结果数组,数组key为0至#(result)-1,value为拾取结果LUATABLE; 拾取结果LUATABLE中有字段"node"为拾取对象节点,"distance"-射线到拾取节点的距离)
          sample:
          local ray = ray_caster:ray_from_screen(ae.ARVec2:new_local(100,100))
          local hit_result = ray_caster:get_hit_result(ray, "first_hit")
          local type = hit_result["type"]
          local result = hit_result["result"]
          if #(result) > 0 then
          	local node = result[0]["node"]
          	local distance = result[0]["distance"]
          end

          hud_ray_from_screen

          API起始版本:190

          Ray hud_ray_from_screen(screen_point)

          获取从屏幕点向随屏空间中垂直发出的射线

          Parameters

          • ARVec2 | screen_point:屏幕坐标,起点为屏幕左上角

          Returns

          • Ray:从屏幕点向随屏空间中发出的射线
          sample:
          local ray = ray_caster:hud_ray_from_screen(ae.ARVec2:new_local(100,100))

          get_hud_hit_result

          API起始版本:190

          LUATABLE get_hud_hit_result(ray, hit_type)

          获取与该射线相交的随屏结果

          Parameters

          • Ray | ray:射线
          • string | hit_type:拾取结果的类型(含义同get_hit_result)

          Returns

          • LUATABLE:相交结果(含义同get_hit_result)
          sample:
          local ray = ray_caster:ray_from_screen(ae.ARVec2:new_local(100,100))
          local hit_result = ray_caster:get_hud_hit_result(ray, "first_hit")
          local type = hit_result["type"]
          local result = hit_result["result"]
          if (result) > 0 then
          	local node = result[0]["node"]
          	local distance = result[0]["distance"]
          end
          上一篇
          Ray
          下一篇
          场景管理