开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术
AR与VR
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
信息服务
智能园区

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