资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

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。 0:使用固定间隔;1:使用数组描述的振动间隔
  • 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。0:使用世界坐标系;1:use 使用手机坐标系
  • init_pos | int : 0或者1。0:不使用;1:使用
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 : 业务类型的名称
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(LUA_FUNCTION handler);

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

Parameters

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

application:set_script_loading_finish_handler(on_loading_finish)

KVC支持 (Key-Value Coding)

version 190

set_property

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

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

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

Parameters

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

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

Key Value Type meaning Default
name string application的名字
backface_culling bool 设置渲染是否开启背面剔除 true

示例:

sample code:
local app_controller = ARApplicationController:shared_instance()
local application = app_controller:add_application_with_name("my_ar_application")

application:set_property_bool("backface_culling", true)

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

  • key | string : 对应的要获取的property的名字
  • value | int /bool/ float/ string/ ARVec2 : 用来获取值的对应类型的变量,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:
local screen_size =  application: get_property_vec2("screen_size")

KVO支持(Key-Value Observing)

version 190

add_observer_for_property

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

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

Parameters

  • key | string : 要设置监听的的property的名字
  • on_observer | LUA_FUNCTION : 观察者回调,需要包含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);

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

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