webAR涉及的技术「建议收藏」

webAR涉及的技术「建议收藏」1.技术体系1.1技术体系整理其中绿色底色的代表Demo中表现出的能力比较成熟,可以直接应用。脑图地址:http://naotu.baidu.com/file/3392a895a90397252

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1.技术体系
1.1技术体系整理
webAR涉及的技术「建议收藏」
 
其中绿色底色的代表Demo中表现出的能力比较成熟,可以直接应用。
 
 
1.2 兼容性
Web AR的兼容性,可以认为是其用到两大核心技术的兼容性:
 
WebRTC:
 
webAR涉及的技术「建议收藏」
 
WebGL:
webAR涉及的技术「建议收藏」
 
 
1.3案例分析
公司的王者荣耀貂蝉AR广告, 《Web前端也能做的AR互动》
 
实际上就是一个基于Three.js渲染模型,并自行基于Three.js实现空间定位的一个AR应用。效果类似的是awe.js的空间定位功能,下面的Demo中有提供。
 
其开发模式为:
 
UI开发
 
开发or导出貂蝉游戏人物模型
 
开发人物皮肤贴图纹理
 
开发模型动画
 
使用3D软件导出Three.js支持的模型格式(这里看似简单,实际有大坑,不同的模型、骨骼、贴图、动画,导出时会有不同问题,还要控制模型资源大小,不能过大)
 
前端开发
 
· WebGL全景场景(不支持WebRTC设备柔性降级)
 
· 空间定位开发
 
· 模型渲染
 
· 交互与动画控制
 
· 终端适配
 
2.业界相关的库及Demo
 
2.1JsArtoolkit
Artoolkit的js版本,支持pat marker和nft marker的识别与跟踪,配合threejs可渲染模型,目前的问题是nft marker跟踪的帧率不高。
 
JsArtoolkit的项目地址为:
https://github.com/artoolkit/jsartoolkit5
 
Pat识别
 
 
效果较好:
webAR涉及的技术「建议收藏」
 
 
Nft识别
 
 
2.2 Awejs
基于jsartoolkit实现了图片marker识别,并封装了空间定位能力,提供了AR/VR设备体验版本的Demo。
 
Awejs的项目地址为:
https://github.com/buildar/awe.js
 
pat识别
 
webAR涉及的技术「建议收藏」
 
 
空间定位
 
此Demo需要在手机中打开
 
 
webAR涉及的技术「建议收藏」
 
结合Oculus Rift
 
暂未调研
 
结合体验仪器的体验(Google Glass、Kinect(XBOX体感外设))
 
暂未调研
 
2.3 JsObjectDetect
JsObjectDetect亮点功能在人脸和手势识别跟踪方面的表现,且能识别、跟踪人脸五官。
 
JsObjectDetect的项目地址:
https://github.com/mtschirs/js-objectdetect/
 
人脸、五官识别
 
该Demo提供了人脸识别能力(嘴巴、眼睛、鼻子),从图片识别:
 
 
webAR涉及的技术「建议收藏」
 
识别+跟踪
 
 
从效果来看,该库是Web AR中少有的人脸识别跟踪效果较好,且帧率较高的AR库。下面的Demo中可以选择一款眼镜,Demo识别到人脸后把眼镜放在眼部并跟踪。
 
webAR涉及的技术「建议收藏」
 
另外,
http://facedetection.jaysalvat.com/ 这是一个基于js-objectdetect的人脸识别jquery插件,可以识别图片和视频中的人脸,没有提供摄像头帧实时识别的Demo,估计是此插件计算性能应该跟不上,帧率不会高。
 
性能
 
JsObjectDetect自称人脸识别方面能力和效果秒杀其他库:
webAR涉及的技术「建议收藏」
webAR涉及的技术「建议收藏」
 
Chrome 40 / FF 35    Detections per Second    Detections    Seconds
js-objectdetect    17.5 / 16.9    50 / 50    2.86 / 2.96
jsfeat    9.4 / 6.3    30 / 30    3.18 / 4.75
tracking.js    7.7 / 8.97    48 / 48    6.24 / 5.35
Beyond Reality Face    7.4 / 1.7    41 / 41    5.50 / 23.98
CCV    2.2 / 4.4    8 / 8    2.22 / 1.80
手势控制3D模型
 
用手势控制3 D模型的姿态,可以控制,但是效果不佳,有点莫名其妙的意思。
 
 
webAR涉及的技术「建议收藏」
 
手势翻页
 
用手势控制网页翻页,手在镜头下部时向下翻页,在镜头上部时向上翻页,点红框内链接开始。
 
 
webAR涉及的技术「建议收藏」
 
2.4 Tracking.js
Tracking.js提供了人脸识别的能力,但是在浏览器里边表现不佳。另外,这个库还提供了显示识别特征点等能力。
 
tracking.js的项目地址为:
https://github.com/eduardolundgren/tracking.js/
 
 
 
tracking.js人脸+姿态 帧率不高 17.5 fps
webAR涉及的技术「建议收藏」
 
 
2.5 caffejs
Caffejs支持在Web中运行神经网络功能,该项目提供了一些示例模型的演示。
 
如果能有一套成熟的方案把这个库包装一下用起来,意义还是挺大的:将图片识别的工作放在浏览器中完成,可以节省大量的网络流量和服务器资源。
 
但是目前浏览器中做识别由于性能原因,识别耗时较长,不能太过频繁的识别。
 
 
2.6 其他
CCV
 
 
基于CCV的人脸识别demo
 
webAR涉及的技术「建议收藏」
 
帧率并不高,没有深入看
 
Jsfeat
 
暂未研究
 
Beyond Reality Face
 
暂未研究
 
3.总结
目前Web AR业界已经有了一定的技术积累,但是还没有达到成熟可用的地步,用一句话概括一下:底层识别能力弱,上层渲染能力强。
 
3.1底层能力
Marker识别方面,jsartoolkit的pat模式识别跟踪效果不错,但是nft识别速度慢,且卡顿,无法达到可以应用的地步。
 
人脸识别方面,JsObjectDetect的表现还算不错,可以识别、跟踪人脸以及五官位置,据观察应该是只支持2D坐标的识别,不支持3D姿态的识别。
 
手势识别方面,JsObjectDetect支持手势识别能力,根据其提供的Demo来看,识别是可以识别,但是不够稳定,经常识别丢,难以在现实项目中应用。
 
图像识别方面,之前经x哥介绍看了下caffejs这个Web神经网络的项目,目前是官方的Demo可以跑起来,但是我们自己训练的模型跑出来结果不对。
 
3.2上层渲染
模型渲染,目前看到的Web中主流3D模型渲染方式是Three.js,做Web AR方面的开发,无论底层能力采用何种方案,都是必须系统学习一下Three.js的。
 
3D模型开发,需要专业的UI开发工程师来开发3D模型、贴图以及动画,涉及到maya、3Dmax等软件的学习。
 
模型导出,3D模型要让Three.js能够使用,需要导出成特定格式,导出的过程中因模型、动画的不同,会有一些坑。另外资源大小的优化、压缩也是一个问题。
 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167110.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 级联分类器原理(级联器是什么)

    级联分类器即为Emgucv中的CascadeClassifier。使用CascadeClassifier来加载一个.xml分类器文件,然后使用DetectMultiScale函数来对图片进行检测。这是DetectMultiScale函数。publicRectangle[]DetectMultiScale(IInputArrayimage,doublescaleFactor=1.

    2022年4月10日
    280
  • java转义字符之换行字符

    java转义字符之换行字符我们知道,java代码中,\r和\n和\r\n都表示换行,当我们想输出“\n”时,如果直接写System.println(“\n”);是看不到任何东西的,因为其自动被转义为换行了。这时,我们就需要使用转义字符了。这里先给出转义字符:使用示例:输出结果为:注: \r是回车符;&nbsp…

    2022年7月7日
    122
  • JavaScript页面后退或关闭

    JavaScript页面后退或关闭后退方法history.go(-1)如果无法后退时,会返回一个undefined,利用这一点来判断是否可以后退,不能后退时执行window.close();if(!history.go(-1)){window.close();}window.close();对于火狐浏览器经常会无法关闭。因为火狐浏览器只能关闭通过JS新建的窗口,即有target=”_blank”属性的标签,或者

    2022年7月25日
    45
  • 苹果手机绕ID解锁_怎么绕过id

    苹果手机绕ID解锁_怎么绕过id小伙伴们注意:公众号的推送机制不再按照时间前后推送了,微信公众号信息流乱序。君哥建议大家把科技毒瘤君公众号置顶(设为星标⭐),以便第一时间看到推送,非常感谢~,方法如下图:记得我写过几篇…

    2022年9月22日
    0
  • 什么是Java多态?如何实现Java多态?[通俗易懂]

    什么是Java多态?如何实现Java多态?[通俗易懂]java多态这个概念在同学们深入学习java的时候就会被提出,很多同学并不知道是什么意思,如何实现。今天小千就来给大家介绍一下什么是java多态和java如何实现多态。什么是多态?指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)实现多态的技术称为:动态绑定(dynamicbinding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。多态的作用:消除类型之间的耦合关系。现实中,关于多态的例子不胜

    2022年7月8日
    39
  • java 工作流 详解

    java 工作流 详解工作流基本概念:什么是工作流? 工作流:两个或两个以上的人,为了共同的目标,连续的以串行或并行的方式去完成某一业务。 业务:工作流所指业务涵盖了与经营相关的活动。   串行或并行:业务中的步骤也许以一步接着一步的方式进行,我们称之为串行;或者由不同的人或组合根据不同的情况处理,我们称之为并行。   两个或两个以上的人:如工作流的名称所表达的含义,一个人处理的业务

    2022年5月16日
    341

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号