ARApplication
所有文档

          AR开放平台

          ARApplication

          AR实例的类,用于场景的管理、渲染生命周期控制、全局的运行环境状态信息管理、其他的App级的操作等。

          Public methods
          ARApplication shared_application
          获取ARApplication的实例
          ARApplication get_current_scene
          获取当前场景
          ARApplication get_scene_by_name
          通过场景名称获取场景
          ARApplication get_current_scene_name
          通过场景名称获取场景
          ARApplication reset
          将场景的姿态(rst)恢复到初始位置
          ARApplication relocate_current_scene
          将场景的姿态(rst)恢复到初始位置
          ARApplication pause
          将整个场景暂停,比如游戏中需要暂停的功能,暂停时会将整个场景隐藏
          ARApplication resume
          将整个暂停中的场景恢复,比如游戏中需要的恢复功能
          ARApplication add_scene_from_json
          从JSON文件中加载场景
          ARApplication destroy_scene_by_name
          根据场景名称销毁场景(建议:用于项目情景中只出现1次的场景)
          ARApplication active_scene_by_name
          根据场景名称激活场景
          ARApplication open_url
          在宿主app上打开一个url链接
          ARApplication call
          打电话
          ARApplication vibrate
          让手机振动
          ARApplication open_imu_service
          开启imu
          ARApplication close_imu_service
          关闭imu
          ARApplication get_platform_name
          获取当前设备信息接口
          ARApplication get_engine_version
          获取引擎版本号
          ARApplication get_screen_size
          获取屏幕尺寸
          ARApplication switch_app_type
          切换当前的业务类型
          ARApplication mirror_driven_data
          设定业务驱动数据是否镜像使用
          ARApplication set_script_loading_finish_handler
          注册当前实例加载完成后的响应回调
          ARApplication Key-Value Coding
          KVC支持
          ARApplication Key-Value Observing
          KVO支持

          shared_application

           ARApplication shared_application();

          获取ARApplication的实例

          sample code: 
          local application = ae.ARApplication:shared_application()

          get_current_scene

           ARScene get_current_scene();

          获取当前场景

          sample code: 
          local scene = application:get_current_scene()

          get_scene_by_name

           ARScene get_scene_by_name(string name);

          通过场景名称获取场景

          Parameters

          • name |string : scene的名称
          sample code: 
          local scene = application:get_scene_by_name("demo_scene")

          get_current_scene_name

           string get_current_scene_name();

          通过场景名称获取场景

          sample code: 
          local application = ae.ARApplication:shared_application()
          local name = application:get_current_scene_name()

          reset

           void reset();

          将场景的姿态(rst)恢复到初始位置

          sample code: 
          local application = ae.ARApplication:shared_application()
          application:reset()

          relocate_current_scene

           void relocate_current_scene();

          将场景的姿态(rst)恢复到初始位置

          sample code: 
          local application = ae.ARApplication:shared_application()
          application:relocate_current_scene()

          pause

          version 190

           void pause();

          将整个场景暂停,比如游戏中需要暂停的功能,暂停时会将整个场景隐藏

          sample code: 
          local application = ae.ARApplication:shared_application()
          application:pause()

          resume

          version 190

           void resume();

          将整个暂停中的场景恢复,比如游戏中需要的恢复功能

          sample code: 
          local application = ae.ARApplication:shared_application()
          application:resume()

          add_scene_from_json

          void add_scene_from_json (string path, string scene_name, string common_config_path)

          从JSON文件中加载场景

          Parameters

          • path | string:描述场景的json文件路径
          • scene_name | string:指定当前场景名称
          • common_config_path | string:如果common文件为空,默认为common_config.json
          sample:  
          app:add_scene_from_json("res/simple_scene.json", "demo_scene", "common_config.json")

          destroy_scene_by_name

          void destroy_scene_by_name (string scene_name)

          根据场景名称销毁场景(建议:用于项目情景中只出现1次的场景)

          Parameters

          • scene_name | string:需要销毁场景的名称
          sample:  
          app:destroy_scene_by_name("demo_scene")

          active_scene_by_name

          void active_scene_by_name (string scene_name)

          根据场景名称激活场景

          Parameters

          • scene_name | string:需要激活场景的名称
          sample:  
          app:active_scene_by_name("demo_scene")

          open_url

          version 190

          void open_url (string url)

          在宿主app上打开一个url链接(若打开链接出现白页面需检查链接格式如下:是否添加协议头http://或https://,未添加协议头需补上;定制链接无法打开,需在链接后补问号,如下方示例,确保链接拼接的完整性)

          Parameters

          • url | string:string类型
          sample:  
          正确: app:open_url('http://www.baidu.com?x=123')
          正确: app:open_url('http://www.baidu.com?')
          正确: app:open_url('https://www.baidu.com?x=123')
          错误: app:open_url('http://www.baidu.com')
          错误: app:open_url('www.baidu.com?x=1')

          call

          void call (string number)

          打电话

          Parameters

          • number | string:需要拨打的电话号码
          sample:  
          app:call("10086")

          vibrate

          void vibrate (int type, int interval, string pattern)

          让手机振动

          Parameters

          • type | int:0:使用固定间隔 1:use 使用数组描述的振动间隔
          • interval | int:立即振动时间 pattern | string:间隔振动参数 例如:"200,400" 200代表间隔时间 400代表振动时间
          sample:  
          app:vibrate(1,10000,"200,400,600,800,600,1000,4000,400,600,800,600,1000,4000")

          open_imu_service

          void open_imu_service (int type, int init_pos)

          开启imu,陀螺仪,用于通过陀螺仪控制相机的场景中,比如请财神case

          Parameters

          • type | int: 0: 使用世界坐标系 1:use 使用手机坐标系
          • init_pos | int: 是否使用
          sample:  
          application:open_imu_service(1,1)

          close_imu_service

          void close_imu_service ()

          关闭imu

          sample:  
          application:close_imu_service()

          get_platform_name

          void get_platform_name()

          获取当前设备信息接口(可判断当前手机系统为iOS或者Android)

          sample:  
          app:get_platform_name()

          get_engine_version

          void get_engine_version()

          获取引擎版本号

          sample:  
          app:get_engine_version()

          get_screen_size

          version 190

          ARVec2 get_screen_size()

          获取屏幕尺寸

          Returen

          • size | ARVec2: 屏幕的宽高
          sample:  
          local screen_size = app:get_screen_size()

          switch_app_type

          version 190

          void switch_app_type (string type)

          切换当前的业务类型

          Parameters

          • type | string : 业务类型的名称 (Slam,None)
          sample:  
          app:switch_app_type("Slam")

          mirror_driven_data

          version 190

          void mirror_driven_data (bool is_mirrored)

          设定业务驱动数据是否镜像使用,目前用于前置摄像头时修正imu业务类型传感器数据。

          Parameters

          • is_mirrored | bool : 否镜像使用数据
          sample:  
          app:mirror_driven_data(true)

          set_script_loading_finish_handler

          version 190

           void set_script_loading_finish_handler(ARLuaFunction handler);

          注册当前实例加载完成后的响应回调(调用application:reset()重置接口时此回调也会被调用)

          Parameters

          • LUA_FUNCTION | handler 一个Lua原生的方法,作为加载完成的处理的回调
          sample code: 
          function on_loading_finish() 
              ARLOG("The ar application finished loading scene") 
          end 
          
          application:register_script_loading_finish_handler(on_loading_finish)

          KVC支持 (Key-Value Coding)

          version 190

          set_property

          void set_property_int(std::string &key, int value);

          void set_property_bool(std::string &key, bool value);

          void set_property_float(std::string &key, float value);

          void set_property_string(std::string &key, std::string value);

          void set_property_vec2(std::string &key, ae::ARVec2 value)

          通过Key-Value的方式来设置Application的属性。

          Parameters

          • string | key: 对应的要修改的property的名字
          • int /bool/ float/ string/ ARVec2 | value , 要设置的值

          当前版本可用的Key和对应的Value Type如下:

          Key Value Type meaning Default
          name string application的名字
          empty bool 是否是一个有效的application(加载失败时 empty = true)
          platform_name string 平台名称,如"android","iOS"
          version_string string 引擎版本号,如"1.3.0"
          screen_size ARVec2 屏幕尺寸,如(750,1136)
          device_orientation string 当前设备朝向,取值为"portrait","portrait_upsidedown","landscape_right","landscape_left"
          foreground bool 当前设备是否在前台
          backface_culling bool 设置渲染是否开启背面剔除 true

          示例:

          sample code:
          local app_controller = ARApplicationController:shared_instance()
          local application = app_controller:add_application_with_name("my_ar_application")
          
          local screen_size = ae.ARVec2:new_local(1136, 750)
          application:set_property_vec2("screen_size", screen_size)

          get_property

          void get_property_int(std::string &key) const;

          void get_property_bool(std::string &key) const;

          void get_property_float(std::string &key) const;

          void get_property_string(std::string &key) const;

          void get_property_vec2(std::string &key) const;

          通过Key-Value的方式来获取Application的属性。

          Parameters

          • string | key: 对应的要修改的property的名字
          • int /bool/ float/ string/ ARVec2 | value 用来获取值的对应类型的变量,value将会在get_property方法内部被赋值。

          当前版本可用的Key和对应的Value Type如下:

          Key Value Type meaning Default
          name string application的名字
          empty bool 是否是一个有效的application(加载失败时 empty = true)
          platform_name string 平台名称,如"android","iOS"
          version_string string 引擎版本号,如"1.3.0"
          screen_size ARVec2 屏幕尺寸,如(750,1136)
          device_orientation string 当前设备朝向,取值为"portrait","portrait_upsidedown","landscape_right","landscape_left"
          foreground bool 当前设备是否在前台
          backface_culling bool 设置渲染是否开启背面剔除 true

          示例:

          sample code:
          string orientation = "portrait";
          application:get_property_string("device_orientation", orientation)

          KVO支持(Key-Value Observing)

          version 190

          add_observer_for_property

           void add_observer_for_property(std::string &key, ARLuaFunction on_observer);

          为指定的property设置观察者回调,当对应的property值发生改变时,会触发所注册的回调, 并将改变前和改变后的数据以参数形式传递到对应的回调函数中。

          Parameters

          • string | key: 要设置监听的的property的名字
          • LUA_FUNCTION | on_observer 观察者回调, 需要包含3个参数, key、old_value和new_value
          sample code:
          
          function on_observer(key, old_value, new_value)
               ARLOG("property"..key.."changed from"..old_value.."to new value"..new_value)
          end
          
          application:add_observer_for_property("orientation", on_observer)

          remove_observer_for_property

           void remove_observer_for_property(std::string &key);

          删除指定的property已设置的观察者回调,删除不存在的Observer或者重复删除将会被忽略。

          Parameters

          • string | key: 要删除监听设置的的property的名字
          application:remove_observer_for_property("orientation")

          废弃或不建议使用的接口( Deprecated API)

          relocate_current_scene

          void relocate_current_scene()

          新版本中建议使用设置ARScene的对应节点的tranforminitial tranform来代替。

          set_on_loading_finish_handler

          void set_on_loading_finish_handler(int handler_id);

          新版本中请使用register_script_loading_finish_handler替代。

          set_on_landscape_left_handler

          void set_on_landscape_left_handler(int handler_id)

          新版本中请使用上述KVO的方式代替,注册"orientation" 的监听。

          set_on_landscape_right_handler

          void set_on_landscape_right_handler(int handler_id)

          新版本中请使用上述KVO的方式代替,注册"orientation" 的监听。

          set_on_portrait_handler

          void set_on_portrait_handler(int handler_id);

          新版本中请使用上述KVO的方式代替,注册"orientation" 的监听。

          set_camera_look_at

          void set_camera_look_at(std::string& eye_pos, std::string& center_pos, std::string& up_direction, bool animated = true);

          通过gl_look_at设置渲染相机的view_matrix, 新版本中请使用ARMat44 : create_look_atARCamera : set_view_matrix替代,动画效果推荐使用相机节点刚体动画。

          set_active_scene_camera_look_at

          void set_active_scene_camera_look_at(std::string& eye_pos, std::string& center_pos, std::string& up_direction, bool animated = true);

          同上,新版本中请使用ARMat44 : create_look_atARCamera : set_view_matrix替代。

          reset_active_scene_camera_look_at

          void reset_active_scene_camera_look_at(bool animated = false);

          用于重置渲染相机的view_matrix,新版本中可以使用ARCamera : set_view_matrix = ARMat44 :inverse (ARCamera : initial_transform)替代。

          set_gl_cull_face

          void set_gl_cull_face(bool b_cull_face)

          设置渲染开启背面剔除(全局)默认开启。新版本中请使用KVC的方式代替,application:set_property_bool("backface_culling", true / false)

          get_lua_handler

          LuaHandler* get_lua_handler();

          新版本中LuaHandler已不再需要,消息发送和响应注册等api改由ARApplicationController提供。

          switch_camera_by_name

          void switch_camera_by_name(std::string &camera_name, bool animated = false)

          切换相机,该方法已移动到ARScene中。

          switch_to_scene_with_name

          void switch_to_scene_with_name(std::string& scene_name);

          由于加载场景可能比较耗时,切换时不流畅体验差,不建议使用。建议使用分步加载的方式代替。

          详细请见分布加载专题文档ARScene:load_batch

          set_show_offscreen_button_handler

          void set_show_offscreen_button_handler(int handler_id)

          旧版本中设置场景中主体离开/进入屏幕时的回调。新版本中请通过KVO的方式,注册ARScene的"offscreen_guidance/current_state" 的监听来实现。

          set_hide_offscreen_button_handler

          void set_hide_offscreen_button_handler(int handler_id)

          旧版本中设置场景中主体进入屏幕时的回调。新版本中请通过KVO的方式,注册ARScene的"offscreen_guidance/current_state" 的监听来实现。

          play_bg_music

          void play_bg_music(const std::string &path, int repeat_count = 0, float delay = 0);

          播放背景音乐,新版本中请使用ARMusicPlayer中的功能替代。

          pause_bg_music

          void pause_bg_music();

          暂停播放背景音乐,新版本中请使用ARMusicPlayer中的功能替代。

          resume_bg_music

          void resume_bg_music();

          恢复播放背景音乐,新版本中请使用ARMusicPlayer中的功能替代。

          stop_bg_music

          void stop_bg_music()

          停止播放背景音乐,新版本中请使用ARMusicPlayer中的功能替代。

          reset_imu_location

          void reset_imu_location(int with_interaction);

          旧版本中对于IMU跟踪的场景,用于将场景的rootnote复位到屏幕中央。新版本中可以通过获取相机的transform,在脚本中计算rootnode的transform。

          上一篇
          简介
          下一篇
          ARApplicationController