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

场景开发程序设计

场景开发程序设计

场景开发工具选择

DuMix内容平台为AR场景开发提供三款工具:

  • 传包器 + 调试工程
  • 模版
  • AR场景编辑器

传包器 + 调试工程 : 适合具备较强开发能力的用户,需熟悉DuMix AR静态场景配置API,可实现对AR场景资源包源码级别的修改。

模版 : 借助模版工具,可在DuMix内容平台提供的模版场景的基础上通过上传资源快速实现AR场景的开发。

AR场景编辑器 : 适合具备一定开发能力的用户。AR场景编辑器提供可视化场景编辑功能,搭配移动端App DuMixView,可实现对AR场景的实时预览和编辑调试。

AR场景编辑器

使用编辑器为主进行场景开发的开发者可重点关注。

功能简介

AR场景编辑器是一款基于WEB的AR场景开发工具,主要功能包括云端资源管理,可视化AR场景搭建,AR效果实时预览与调试等。AR场景编辑器需搭配移动端App DuMix View(可在AppStore,华为应用商店等平台下载)使用。

Hello AR 场景开发

一、创建项目

  • 在DuMix内容平台进入控制台,点击【创建新项目】,并在工具选择页面选择编辑器。
  • 在项目信息编辑页 【技术类型】选项选择 【2D跟踪】, 原型选择【2D跟踪基础模版】。
  • 填写项目名称等信息,完成项目创建,进入编辑器页面。

二、连接APP,预览场景效果

  • 在手机上下载最新版本的DuMix View,并保持手机与电脑在同一局域网网段下。
  • 在编辑器页面,将鼠标移动到顶部二维码图标区域,页面将弹出二维码浮层。
  • 使用DuMix View 二维码扫描器扫描编辑器页面的二维码,DuMix View将进入编辑器模式,并在手机页面展现当前WIFI名称与IP地址。
  • 在编辑器顶部IP输入框内填写DuMix View显示的IP地址,并点击连接按钮,DuMix View将进入预览模式。
  • 在编辑器页面左侧选中【场景】/【AR识别图】,滑动右侧属性面板,展示识别图。
  • 用DuMix View对准识别图,预览AR效果。

三、调整AR场景,预览效果

  • 调整属性:在编辑器页面左侧选中【场景】/【bear】,调整右侧属性面板中【位置】、【大小】、【姿态】等属性,观察DuMix View上的预览效果。
  • 添加节点:在编辑器页面底部左侧选择公共文件夹,并选择任意素材,拖拽到【场景】中,被选中的模型将展现在DuMix View中。

  • 替换识别图:选择【场景】/【AR识别图】,并在右侧属性面板上传新的识别图;待识别图训练完成后,点击替换识别图,DuMix View将重启预览,并应用新的识别图。

  • 控制预览App:点击编辑器顶部工具栏上的【设备】按钮,在弹出的控制面板上控制DuMix View的预览状态。

项目发布

点击顶部工具栏右侧保存按钮,可保存当前场景。 点击提交按钮,即可提交当前场景至DuMix内容平台。

传包器 + 调试工程

使用传包器及调试工程为主进行场景开发的Native SDK开发者可重点关注。

开发环境搭建

基于传包器开发AR场景的用户,可使用sdk中的demo工程进行调试,下载链接如下:

本篇详细讲述了使用调试工程如何完成Hello AR的场景开发。

Hello AR场景包下载

一、AR项目场景包

AR的静态场景搭建以及交互逻辑均是在一个项目场景包中配置,其结构及功能如下图所示:

AR场景包内容

  • res文件下存放的是素材资源、引擎渲染的shader文件以及脚本库(scripts文件夹),shader文件以及脚本库会随着版本迭代不断更新,开发者在使用新能力进行项目制作的时候,可以在github - AR Case上拉取更新的文件。
  • default.lua文件为场景互动脚本,是基于lua进行的脚本配置,在这个文件中可以调用封装好的场景互动脚本API实现交互逻辑,simple_scene.json文件为场景配置协议,是基于json数据格式的节点配置,在这个文件中调用封装好的静态场景配置API可以将res下的资源文件配置为引擎可调用的格式。
  • targets.json是跟踪配置(Tracking Config)文件,其中包含不同技术类型项目需要做的配置,包括2D跟踪、slam、手势识别等。跟踪配置文件说明如下,具体字段含义参考静态场景配置API

二、AR场景开发

1、添加模型和贴图到指定目录

res下的model文件夹中存放的是模型文件,模型文件对应的贴图需放在res/texture文件夹下,texture目录文件下包含了模型贴图、2D图片等,格式为png或jpg。本示例放入的模型名称为BaiDu_Bear_Maya_Normal.pod,对应的贴图名称为Bear_1.0.3.jpg。

截图1

texture

2、添加场景配置字段

将AR场景包拖入Sublime中,并对simple_scene.json文件进行编辑,添加下述代码到simple_scene.json文件中的nodeList节点下,模型节点名可自定义,案例中命名为samplePod,在下一步的操作中会使用这个节点名。

 {
    "name": "samplePod",
    "type": "pod",
    "visible": 1,
    "touchable": 1,
    "meshFileName": "res/model/BaiDu_Bear_Maya_Normal.pod",
    "material":
    {
        "common":
        {
            "texturePath": "res/texture/",
            "disableLightEffect": 0
        }
    },
    "position": "0,0,0",
    "scale": "0.3,0.3,0.3",
    "rotation": "90,0,0",
    "chirlden": [],
    "podSuppl": {
    "allSubnodeTouchable":1
    }
 }
  • 各字段功能以及意义可以参见json字段描述示意图。 json字段描述示意图 :

截图3

3、在脚本中控制播放模型动画 对default.lua文件进行代码编写,在主函数下添加代码如下:

 app_controller = ae.ARApplicationController:shared_instance()
 --引入include.lua脚本文件,必须引入
 app_controller:require('./scripts/include.lua')
 --设置case类型,必须设置
 app = AR:create_application(AppType.Slam, 'slam_bear_application')
 --加载场景文件,必须加载场景文件
 app:load_scene_from_json("res/simple_scene.json","demo_scene")
 --获取当前场景,必须激活当前场景
 scene = app:get_current_scene()

app.on_loading_finish = function ()
   ARLOG("on_loading_finish")
scene.samplePod.on_click = function()
  --点击模型,播放模型动画
  scene.samplePod:pod_anim()
                 :repeat_count(2)
                 :start()
end
end
  • app = AR:create_application(AppType.Slam, 'slam_bear_application')语句创建了一个slam类型的项目,若需创建Imu类型的项目,需要把AppType.Slam改为AppType.Imu。
  • app.on_loading_finish是项目加载完成后的回调,在脚本中相当于主函数。
  • scene.nodename.on_click是一个对nodename节点的点击回调接口,监听到点击事件后需要做的操作都可以写在这个回调里。示例中对模型添加了点击事件,并在点击事件后播放两遍模型动画。
  • repeat_count为模型动画的播放次数接口,后面的参数表示播放次数,示例中参数为2,表示播放两次模型动画;把参数改为-1,则表示播放无限次模型动画。
  • 更多场景互动脚本API的使用请参考场景互动脚本API

至此恭喜您已完成Hello AR的场景开发。
更多精彩内容及AR能力的深度解析请见AR场景开发专题文档。

在case中包含跳转具有时效性H5活动页面时需注意:

为防止活动页面过期,链接为死链情况发生,在case中跳转链接时可添加日期判断,有效期内时跳转对应活动页面,过期则跳转通用页面。如下代码所示

--点击按钮跳转链接
scene.button.on_click= function()
    --分别获取当前日期(年/月/日)
    local date_year=os.date("%Y")
    local date_month=os.date("%m")
    local date_date=os.date("%d")
    --如2019-01-25后链接https://ar.baidu.com失效 需跳转至http://www.baidu.com
    if date_year == "2019" then
        if date_month <= "01" then
          if date_date > "25" then
             app:open_url('http://www.baidu.com')
          elseif date_date <= "25" then
             app:open_url('https://ar.baidu.com') 
          end
        elseif date_month > "01" then
          app:open_url('http://www.baidu.com')
        end
    elseif date_year < "2019" then
        app:open_url('https://ar.baidu.com')
    elseif date_year > "2019" then
        app:open_url('http://www.baidu.com')
    end
end

项目发布

AR项目开发完成后,通过调试工程可以在手机上查看效果,在手机上查看效果无误后打包成zip格式即可通过传包器上传到DuMix内容平台进行分发查看。

选择技术类型时根据上传的项目类型选择,示例中Hello AR为SLAM类型,选择后输入项目标题和项目说明。

在渠道选择一栏里您可以选择已开通的渠道发布自己制作的AR项目,如手百相机渠道、自己的APP渠道等。

如您想在自己的APP里看到发布制作好的AR项目,可以在DuMix AR官网申请开通AR服务并集成我们的AR SDK。

填好相应的信息后点击提交即可。

所有上传提交到内容平台的项目均可通过 “DuMix View”App 扫描平台项目列表的二维码查看场景开发的效果。

  • DuMix View为百度AR自研可快速预览AR效果的APP,iOS开发者可在APP Store中搜索下载,安卓开发者可在华为应用商店中搜索下载,或可使用百度APP相机扫描下方二维码进行下载。

上一篇
场景开发素材设计
下一篇
AR场景开发专题