ARApplicationController
所有文档

          AR开放平台

          ARApplicationController

          AR实例的总控制器类,封装了AR实例ARApplication的创建、脚本中消息发送和接收、脚本虚拟机 Script VM的管理、平台共享信息数据接口、算法和传感器数据接口等。

          Public methods
          ARApplicationController shared_instance
          获取当前控制器的实例,它是一个单例
          ARApplicationController add_application_with_name
          创建并添加一个Application的实例
          ARApplicationController get_current_ar_application
          获取当前Application的实例
          ARApplicationController get_script_vm
          获取当前ApplicationController中的Lua脚本虚拟机
          ARApplicationController send_message_to_native
          往native sdk中发送消息
          ARApplicationController set_native_message_handler
          注册从native层发来的消息的响应函数
          ARApplicationController environment
          获取平台和当前运行环境相关的数据
          ARApplicationController native_data_pipe
          获取native层视觉算法输出的当前帧的跟踪数据 / 传感器数据

          shared_instance

          static ARApplicationController& shared_instance();

          获取当前控制器的实例,它是一个单例。

          示例:

          sample code:
          local app_controller = ARApplicationController:shared_instance()

          add_application_with_name

          version 190

          ARApplication* add_application_with_name(const std::string &name);

          创建并添加一个Application的实例。

          Parameters

          • string | name: 指定创建的ARApplication的名字

          Return

          • ARApplication*: 所创建的application实例的指针
          sample:
          local application = app_controller:add_application_with_name("my_ar_application")

          get_current_ar_application

          version 190

          ARApplication* get_current_ar_application();

          获取当前Application的实例。

          sample:
          local application = app_controller:get_current_ar_application()

          get_script_vm

          version 190

          ARScriptVM* get_script_vm();

          获取当前ApplicationController中的Lua脚本虚拟机。

          Return

          • ARScriptVM& : 当前Application中的Lua脚本虚拟机对象的引用
          sample:
          local script_vm = app_controller:get_script_vm()
          script_vm:require_module("ar.lua")

          send_message_to_native

          version 190

          send_message_to_native(LUA_TABLE msg_data)

          往native sdk中发送消息:

          Parameters

          • LUA_TABLE |msg_data : 消息数据,类型是一个Lua 原生的Table,所包含的数据支持嵌套Table,支持number, string, ARVec3, ARVec4, ARMat44。
          sample:
          
          local msg = {}
          local mat44 = basketball_node:get_property_mat44("world_transform")
          local pos = ae.ARVec3:new_local(100, 200, 300)
          local pos2 = ae.ARVec4:new_local(100, 200, 300, 400)
          
          msg["id"] = 21113
          msg["msg"] = "send msg by lua table ok"
          msg["key"] = "test"
          msg["vec3"] = pos
          msg["vec4"] = pos2
          msg["mat44"] = mat44
          
          app_controller:send_message_to_native(msg)
          
          io.write("mesage sent to native:"..msg:to_string())

          当前内置的可用的消息类型包括:(待补充)。

          set_native_message_handler

          version 190

          set_native_message_handler(LUA_FUNCTION handler)

          注册从native层发来的消息的响应函数:

          Parameters

          • LUA_FUNCTION handler : 消息接收响应的回调,类型是一个Lua 原生的Function,这个Function有一个LUA_TABLE类型的参数。
          sample:
          
          function on_message_from_native(msg)
            	io.write("got a message from native:"..msg:to_string())
          end
          
          app_controller:set_native_message_handler(on_message_from_native)

          当前内置的可用的消息类型包括:(待补充)。

          environment

          version 190

          LUA_TABLE environment();

          获取平台和当前运行环境相关的数据,如SDK Version, URLScheme, OS Name 等等(略)

          Return

          • LUA_TABLE : 返回值是一个Lua Table,userinfo字段包含当前运行环境相关的数据,如SDK Version, URLScheme, OS Name 等 ;caseinfo字段包含case相关输入,case适配版本等
          • 字段说明如下

            userinfo:

            "app_version" : app版本

            "channel" : 渠道号

            "os_version" : 设备系统版本

            "os_type" : 设备系统类型

            "device_type" : 设备类型

            "devide_id" : 设备id

            "ar_key" : case的arkey

            "ar_type" : case 的artype

            "url_schema" : 用户的url_schema

            caseinfo:

            "compatible_version ": case适配版本

          sample:
          local env = app_controller:environment()
          local userinfo = env["userinfo"]
          ARLOG("current app version : "..userinfo["app_version"])

          native_data_pipe

          version 190

          LUA_TABLE native_data_pipe()

          获取native层视觉算法输出的当前帧的跟踪数据 / 传感器数据,如ImageTracking、Slam InstantTracking算法输出的RT Matrix、IMU输出的rotation Matrix等。

          Return

          • LUA_TABLE : native层透传的ImageTracking、Slam InstantTracking算法输出的RT Matrix、IMU输出的rotation Matrix等数据。
          sample:
          	local data = app_controller:native_data_pipe()
          	local track_data = data["track"]
          	ARLOG("track_data : "..track_data:to_string())	

          Deprecated methods(建议不再使用的方法)

          add_application_with_type

          ARApplication* add_application_with_type(int type, const std::string name);

          从当前新的版本开始,引擎中不再根据跟踪算法的类型来区分不同的Application,已实现和具体视觉算法的解耦,新的AR场景开发中不建议使用,请使用add_application_with_name代替。

          require

          void require(std::string& filename);

          旧版本中引入已存在的Lua Module 文件的方法,新版本中已改为在ARScriptVM中提供,请使用ARScriptVM中的require方法替代。

          上一篇
          ARApplication
          下一篇
          ARScriptVM