带你读《2022技术人的百宝黑皮书》——进入 WebXR 的世界(1)

简介: 带你读《2022技术人的百宝黑皮书》——进入 WebXR 的世界

3DXR技术篇


推荐语:新的技术浪潮奔涌而来,我们又处在下一代沉浸式互联网的起点之上。硬件设备、交互方式、 内 容载体、应用场景等都会有彻底改变,毫不夸张的说基于移动技术的娱乐、社交、电商等线上应用未来都 将被重塑。趋势是确定性的,路径是不确定性的。回到当下,构建沉浸式互联网将面临一系列挑战,比 如:“杀手级的XR应用是怎么样的?如何低门槛的研发3D/XR应用?如何解决建模成本和渲染质量问 题?”等等。如下文章仅展示了我们在各个方向的一些探索,我们坚定相信技术创造未来,希望跟行业一 同通过技术构建消费新体验。


                                                                      —— 阿里巴巴资深技术专家 吕行



进入 WebXR 的世界

作者:刘子瑛

出品:大淘宝技术  


随着元宇宙的兴起,VR和AR技术再次回到同学们的视野。


比起完全是0%支持率的WebGPU,作为WebVR技术的后继者,WebXR Device API以0%+71.08%的支持率展示 了对于一个新的feature的期待。


image.png


面对越来越碎片化的移动端生态,Web标准作为可能是唯一的跨平台工具,在生态中的重要性不言而喻。 如果想要学习WebXR,从哪里入手呢?别急,虽然WebXR和WebGPU还都不成熟,但是现有的技术已经可以让 我们实现超出你想象的效果了。


3DoF和6DoF

3DoF是Three Degrees of Freedom的简称,意思是三个自由度。同理,6DoF是Six Degrees of Freedom的简 称,表示有6个自由度。


当只有三个自由度的时候,就是我们日常使用的3D模型系统那样的,只能响应旋转操作。千里之行,始于足下。我 们就从3个自由度开始。

2D时代,我们通过布局来管理页面的版面。到了3D情况下有些不同。我们先从一个例子来体会一下。

CSS时代我们就是画各种盒子的,所以为了向CSS致敬,我们也画一个3D的盒子。

前端写3D,最主要的框架是Three.js。我们从Three.js的一个封装,A-frame入手。类似于div,在A-frame中使用a-scene来作为一个场景的容器。场景中放各种实体。实体有各种属性。

a-box是一个3D的盒子。a-sky是一个背景天空。

<!DOCTYPE html>
<html>
 <head>
 <script src="https://aframe.io/releases/1.3.0/aframe.min.js"></script>
 </head>
 <body>
 <a-scene>
 <a-box position="0 0 -5" rotation="0 0 0" color="#d4380d"></a-box>
 <a-sky color="#1890ff"></a-sky>
 </a-scene>
 </body>
</html>


显示出来的效果如下:


image.png


a-box的position属性是x,y,z的值。其中x的正方向向右,y的正方向向上,z的正方向向外。 rotation也是按x,y,z轴旋转。

我们试下先水平向左转30度。为了区分上图我们换个颜色:

<!DOCTYPE html>
<html>
 <head>
 <script src="https://aframe.io/releases/1.3.0/aframe.min.js"></script>
 </head>
 <body>
 <a-scene>
 <a-box position="0 0 -5" rotation="0 -30 0" color="#eb2f96"></a-box>
 <a-sky color="#1890ff"></a-sky>
 </a-scene>
 </body>
</html>


image.png


这个盒子可不是静态的哈,可以拖着玩一玩。


image.png


一个场景不能只有孤零零一个元素啊,我们再给我们的盒子上面顶个球。我们给盒子也换个方向,让它右转30度。

<!DOCTYPE html>
<html>
 <head>
 <script src="https://aframe.io/releases/1.3.0/aframe.min.js"></script>
 </head>
 <body>
 <a-scene>
 <a-box position="0 0 -5" rotation="0 30 0" color="#eb2f96"></a-box>
 <a-sphere position="0 1.4 -5" radius="1" color="#389e0d"></a-sphere>
 <a-sky color="#1890ff"></a-sky>
 </a-scene>
 </body>
</html>


效果如下:


image.png


这两个元素是一体的,可以一起拖来拖去。


从3D到6D


光有形状太单调了,我们需要像加载2D时代的图片一样的3D模型。

a-assets用来指定资源,每一条资源项目用a-assets-item来表示。

<a-assets>
 <a-asset-item id="glass" src="./model.glb"></a-asset-item>
 </a-assets>


引用的时候,我们给模型指定类型就好:

<a-entity position="0 1.5 -4" scale="5.0 5.0 5.0" gltf-model="#glass">
 </a-entity>


我们给上面的例子的球上面加个眼镜吧:

<!DOCTYPE html>
<html>
 <head>
 <script src="https://aframe.io/releases/1.3.0/aframe.min.js"></script>
 </head>
 <body>
 <a-scene>
 <a-box position="0 0 -5" rotation="0 30 0" color="#eb2f96"></a-box>
 <a-sphere position="0 1.4 -5" radius="1" color="#389e0d"></a-sphere>
 <a-sky color="#1890ff"></a-sky>
 <a-assets>
 <a-asset-item id="glass" src="./model.glb"></a-asset-item>
 </a-assets>
 <a-entity position="0 1.5 -4" scale="5.0 5.0 5.0" gltf-model="#glass"></a-entity>
 </a-scene>
 </body>
</html>


然后我们一脚踢开VR的大门,点击右下解的VR按钮,最终变成下面这样子:


image.png


这时候我们需要VR眼镜和支持VR的游览器。需要硬件设备的支持来让我们从3自由度跨越到6自由度。 小伙伴们表示缺少VR设备,我们先按下不表,说说不需要设备就可以使用的AR技术。 比如,上面的图我们通过AR的插件可以支持AR模式:


image.png


带你读《2022技术人的百宝黑皮书》——进入 WebXR 的世界(2)

https://developer.aliyun.com/article/1262253?spm=a2c6h.13148508.setting.15.69d84f0eIRNX5Z

相关文章
|
数据处理 C++ UED
如何作为一个嵌入式软件工程师博主获得铁粉:C/C++ 技术分享之道
如何作为一个嵌入式软件工程师博主获得铁粉:C/C++ 技术分享之道
352 0
|
存储 缓存 自然语言处理
QT基础教程(QMap和QHash)
QT基础教程(QMap和QHash)
1482 0
|
存储 XML 网络协议
|
数据可视化 Java 数据库
28个案例问题分析---20---内存长期占用导致系统慢--jvm调优
28个案例问题分析---20---内存长期占用导致系统慢--jvm调优
697 0
解决:下列软件包有未满足的依赖关系: libc6-dev : 破坏: binutils (< 2.38) 但是 2.35.1-7 正要被安装E: 错误,pkgProblemResolver::Re
解决:下列软件包有未满足的依赖关系: libc6-dev : 破坏: binutils (< 2.38) 但是 2.35.1-7 正要被安装E: 错误,pkgProblemResolver::Re
2275 0
|
6月前
|
人工智能 安全 开发工具
C3仓库AI代码门禁通用实践:基于Qwen3-Coder+RAG的代码评审
本文介绍基于Qwen3-Coder、RAG与Iflow在C3级代码仓库落地LLM代码评审的实践,实现AI辅助人工评审。通过CI流水线自动触发,结合私域知识库与生产代码同仓管理,已成功拦截数十次高危缺陷,显著提升评审效率与质量,具备向各类代码门禁平台复用推广的价值。(239字)
1216 24
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
1261 64
|
机器学习/深度学习 Web App开发 人工智能
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》这篇论文提出了一种基于YOLOv3-Tiny的轻量级目标检测模型Micro-YOLO,通过渐进式通道剪枝和轻量级卷积层,显著减少了参数数量和计算成本,同时保持了较高的检测性能。
580 2
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
|
存储 数据挖掘 BI
数据仓库深度解析与实时数仓应用案例探析
随着数据量的不断增长和数据应用的广泛深入,数据治理和隐私保护将成为数据仓库建设的重要议题。企业需要建立完善的数据治理体系,确保数据的准确性、一致性和完整性;同时加强隐私保护机制建设,确保敏感数据的安全性和合规性。
1222 55
|
存储 安全 编译器
快速入门C++17:了解最新的语言特性和功能(下)
快速入门C++17:了解最新的语言特性和功能

热门文章

最新文章