经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 游戏设计 » 查看文章
Unity基础:AR(增强现实)的学习
来源:cnblogs  作者:优梦创客  时间:2019/9/17 11:04:25  对本文有异议

版权申明:

  • 本文原创首发于以下网站:
  1. 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123
  2. 优梦创客的官方博客:https://91make.top
  3. 优梦创客的游戏讲堂:https://91make.ke.qq.com
  4. 『优梦创客』的微信公众号:umaketop
  • 您可以自由转载,但必须加入完整的版权声明!

AR

  • AR的应用
    • 扫描并视频展现 //输入是一幅图像
    • 扫描并3d展现
  • AR设备:
    -扫描:手机摄像头
    -展现:手机屏幕
  • MR设备:
    -hololens
    • 扫描:眼镜
    • 展现:全息影像投影在眼镜上
  • AR软件SDK:
    -voforia
    -FasyAr
    -HiAr //我们学习的

  • unity中的特殊文件夹
    -Editor 对unity菜单进行拓展
    -Resource 动态加载资源
    -Plugins 所有的插件
    -StreamingAssets 从网络下载的资源

  • 上传图片
  • 打包成图集(HIAR完成)
  • 下载打包后的图集(unity package)
  • 将图集作为插件导入unity
  • 也可以直接在网站上创建个空的应用,以获取Appkey和Secret,并使用插件自带的图片资源,位置在Assets\Editor\HiAR\ImageIargetTexures\Sample(需要ctrl + o在文件目录中预览, unity中无法直接预览)

  • 导入SDK
  • 创建HiARCamera
  • 添加ImageTarget //识别图的预制体
  • 设置Image Target中Image Target Behaviour使用的图集 Target Group,并设置我们需要识别的图片Image Target
  • 在Image Target下添加我们识别之后要表现的物体

  • 当图片被识别后,就根据图片显示的角度与位置动态调整Image Target的位置,此时作为子节点的位置,对应位置也会实时变化,实现AR效果

  • 在Image Target下添加Animation 添加Video player等东西都可以播放 显示

  • 多图识别:
  • 在HI AR Engine Behaviour中勾选MultiTarget 并可以指定最多可识别的imageTarget
  • 然后就可以创建多个ImageTarget进行选择需要识别的图像和表现形式

  • 动态加载:
  • 使用TargetDynamic组件
  • 从外部加载识别图(本地文件或网络下载)
  • 在TargetDynamic组件中使用AddTmageTarget()动态加载图片资源
  • 如:
  1. void OnGUI()
  2. {
  3. if (GUI.Button(new Rect(30, 30, 200, 80), "Add Key"))
  4. {
  5. AddTmageTarget(System.IO.path.Combine(Application.streamingAssetsPath, "HiAR/sample"), "e58931", 854, 480);
  6. }
  7. }
  • 然后动态加载的图片就可以作为一个被识别图识别,然后在OnDynamicReco的回调中实时识别后的操作(新建一个cube设置为该TargetDynamic组件的子节点就可以跟着动了) //TargetDynamic本身就是一个Image Target

  • 设置中心点 //将taget固定到一个位置,使重力方向始终向下
  • 在Image Target Behaviour中选择Center pointer,该ImageTarget就可以成为中心,与重力方向垂直,在unity中就不会随着识别的图片移动,在一些需要物理应用的场景中使用(如小球弹起降落,视频播放等)

  • 涂涂乐:
  • 在ImageTarget下添加我们要表现的场景(一条鱼fish),指定ImageTarget识别的图片
  • 在fish上添加HiAR/HiARPaint(设置shader),添加Hi AR Paint的脚本并指定current Material为Fish的材质 //这步就相当于把小孩子画的部分作为一个shader,然后当做了fish的meterial

  • shader 着色器 把图像上绘制的部分作为纹理贴到模型上

原文链接:http://www.cnblogs.com/raymondking123/p/11531729.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号