京东.Vision 首登苹果 Vision Pro 背后的技术探索
去年 6 月,苹果正式发布首款头显设备 Apple Vision Pro,今年 6 月 28 号,Apple Vision Pro 正式在中国发售。京东.Vision 作为首批原生应用登陆 Vision Pro 平台,首期以家电家居与潮流数码产品作为切入口,未来将逐步拓展至全品类,用户可以在 visionOS 的 App Store 搜索“京东.Vision”进行下载和体验。
京东.Vision 利用 Vision Pro 的空间计算技术,提供了一种全新的购物方式。用户可直接将心仪的家电家居或潮流数码产品以 1:1 等比例“拖拽”到自己家中,直接在空间计算环境中真实预览每件物品在空间中的布局和外观。负责京东.Vision 开发的京东零售技术团队成员在过去一年持续关注技术发展动向,不断进行产品尝试,本文将系统性地对过程中遇到的技术问题、思考和实践做简单总结,欢迎大家一起讨论交流。
一、与以往的头显设备相比,Vision Pro 有什么不同?
Apple Vision Pro 于今年 6.28 号正式在中国发售。从我们的持续观察来看,苹果强大的软硬件整体设计能力,使得 Vision Pro 成为第一款真正意义的空间计算设备,与以往的头显设备相较,它带来了明确的技术方向和能力升级:
1.VST(Video See Through)是通过摄像头捕捉真实世界的画面,在头显内屏显示摄像头采集的画面,再实现虚实融合的展示效果。Vision Pro 上将 VST 延迟降低到 12ms,远低于其它产品的 50ms 以上水平。 未来很可能会继续引领其他高端设备的技术发展方向,不只是画面的采集和显示,而是采集后同步进行空间场景的数字化建模。
2.Vision Pro 结合眼动追踪,实现了准确度极高的“手眼”控制系统,眼动追踪相比手柄的定位精度更高,手势操作比手柄更加方便。未来发展方向将是“手眼”操控,也会引领其它高端设备的操控方式。
3.苹果在 Vision Pro 上提出“空间计算”概念,即先将真实环境全部数字化,在数字化之后的真实 3D 空间中实现可交互,提供了更加沉浸式的互动体验。
二、京东.Vision 背后的技术探索,如何在 Vision Pro 上做应用开发?
作为 AR/VR 技术开发者,我们过往已经在手机端实现了 VR 全景、AR 摆摆看、AR 试穿戴、3D 展示等产品功能,也在思考 Vision Pro 上最适合的产品功能。过去一年,我们重点围绕与用户实体环境相关的功能应用进行探索与创新,希望提供给用户相比手机 APP 跃升式的使用体验。
过程中遇到了诸多挑战: 作为苹果第一款空间计算设备,Apple Vision Pro 带来了全新的 visionOS 平台,开发者需要适应这一平台的特质,理解其提供的无边空间画布式的交互环境。 其次,在 Apple Vision Pro 上开发原生 3D 应用,需要涉及大量对新功能的验证与试错,没有太多现成的范例可供参考。以及,由于 visionOS 和配套的开发工具仍在不断完善中,某些个性化应用所需的能力尚未提供,这就需要开发者进行自定义功能的扩充,如自定义手势、自定义碰撞效果和自定义组件系统等。
接下来,我们将从首页 3D 商品和场景展示、环境融合的空间计算应用、自定义着色器和手势等方面详细介绍。
1. 3D 商品和场景展示
作为第一款真正的空间计算设备,Vision Pro 提供了 3 种内容承载容器:Windows、Volumes、Spaces。默认情况下,APP 启动时会进入共享空间。为了实现动态可编排的首页,我们采用 Windows 容器在主界面展示商品内容,并包含可交互的 2D、 3D 等内容形态,实现实体商品橱窗的 3D 展示效果。由于 Volumes 容器对于模型动画的兼容能力有限,我们采用 RealityView 进行 3D 模型的装载,实现了在静态首页上的动态模型展示。
2. 虚实融合的空间计算应用
Vision Pro 搭载摄像头、激光雷达、环境光等多种传感器,通过多种传感器的组合,以及 M2、R1 等芯片的强大处理能力,实现了对空间环境的高精度、高鲁棒性定位和地图构建。 如下图苹果的 ARKitScenes 环境感知示例。
在空间计算的电商场景中,我们实现了真实空间中的多个虚拟商品摆放问题,来满足用户多品搭配需求。 首先是商品在真实空间的自由移动、旋转、缩放等空间操作,涉及坐标系变换与仿射变换等技术。在 3D 视觉中常用的三个坐标系:图像坐标系、相机坐标系、世界坐标系,它们之间可通过仿射变换、投影变换、刚体变换等方式实现运动。Vision Pro 中通常涉及 SwiftUI CoordinateSpaceProtocol 与 RealityCoordinateSpace 两个坐标系的转换,转换过程中的世界坐标等参数便由空间计算结果提供。
利用空间计算的环境感知能力实现平面检测和地图建模,结合商品的实际尺寸信息实现虚拟商品与真实空间平面、垂面的吸附、摆放等在实体空间的摆放操作。
3D 环绕与 AR 摆摆看等典型空间计算应用是将现实世界和虚拟世界融合在一起。在 Vision Pro 中可以使这个过程更加真实,将虚拟模型的遮挡、碰撞、光影反射等各种属性在现实世界模拟呈现。为了实现碰撞效果,首先需要进行模型与周围环境的碰撞检测,通过定义模型的碰撞形状和属性,并赋予物理属性,如质量、摩擦力和恢复系数,可以实现物理碰撞模拟。常见的碰撞形状包括:矩形,球体,胶囊,凸形状等,为了提升碰撞性能通常使用矩形碰撞形状来进行碰撞检测。碰撞检测示意图如下:
当检测到与实体碰撞后,我们根据已经设置的实体物理属性,实时计算实体在三维空间中的移动速度与位移大小,并更新实体位置。通过模拟碰撞,我们可以实现虚拟模型实体与环境实体,虚拟模型实体与虚拟模型实体之间的碰撞运动,以及虚拟模型实体之间的叠放。
解决单个商品在实体空间的摆放之后,进一步实现多品摆放,并使多个虚拟商品可实现真实的碰撞交互,解决了用户体验多件商品搭配效果的需求。为此,我们动态调整虚拟商品的物体属性,允许模型碰撞相交,保证初始化时多个模型在视野中全部可见,之后逐步摆放到合适位置。多品摆放示意图如下:
3. 自定义手势识别
Vision Pro 利用摄像头和传感器进行手势识别,例如点击,捏合,缩放,旋转等。这是空间计算所能实现的最具沉浸感的方面之一,因为它允许用户通过显示器操控他们看到的数字对象。这种操控方式流畅且最为熟悉。除了苹果官方提供了 Tap,Pinch,Zoom,Rotate 等基础手势。
我们利用 Hand Tracking 以及 AI 深度学习技术扩展了苹果的手势识别功能,让用户可以用更多自定义手势,例如与 3D 商品进行更精确、流畅的旋转缩放交互。Vision Pro 为每只手掌提供 25 个关键点的数据,其中每个手指有 4 个关键点,手腕处一个关键点。官方提供 6 种基础手势,我们在此基础上丰富手势识别功能。通过将关键点信息输入到 Rule-based system、DNN、LSTM 等模块中,实现动态手势的识别。
4. 自定义着色器
依托 M2 芯片+R1 芯片的加持,Vision Pro 提供了强大的渲染能力,使得我们可以用自定义着色器实现一些特殊的材质表现和渲染效率优化。比如上文提到的碰撞后的网格特效、商品中的呼吸灯、模型指示器中的 UI 九宫格等。我们通过 Composer Shadergraph 实现的 UI 九宫格,用于指示模型在世界空间中的位置,同时对于不同大小的模型需要保证 UI 九宫格的 4 角区域不发生形变,Shadergraph 方案以及 UI 九宫格示意如下所示。
5. 空间计算优化
空间计算与传统运算相比,需要计算的数据量提升了一个维度。在处理大量 3D 数据时,我们采取了多种优化措施来保持高效率的资源应用和流畅的操作体验。例如,根据商品类别动态调整 3D 模型质量,合理分配面数以控制资源大小。使用 Reality Composer Pro 工具打包 3D 场景和资源,实现有效压缩。此外,通过资源预加载、动态加载与释放以及缓存减少 IO 等操作,提升界面流畅度和降低响应时间。
通过优化技术,我们实现了“3D 无界场景”等功能,在一个“无限大”的空间场景中,我们载入了多套高精度模型组,使得用户可以在一个空间内,一站式沉浸浏览。
三、未来探索方向
Apple Vision Pro 作为下一代终端设备,正在引入更多交互方式,提升混合现实的体验效果。京东一直致力于提供多快好省的用户体验,探索更多元、丰富的购物方式。未来我们还将持续打造 3D 体验和全沉浸式场景体验,引入更多高质量的 3D 模型与场景、景深视频等资源,逐步补齐 3D 场景搜索、智能导购、试搭等内容,进一步提升沉浸式体验效果。期待随着技术的不断成熟,一起为用户带来更多新鲜的购物体验。
四、 参考文献
Andrei, Constantin-Octavian. “3D affine coordinate transformations.” (2006).
A novel hybrid bidirectional unidirectional LSTM network for dynamic hand gesture recognition with Leap Motion[J]
Dynamic Hand Gesture Recognition Based on Short-Term Sampling Neural Networks[J]
https://www.cnblogs.com/ghjnwk/p/10852264.html
https://developer.mozilla.org/en-US/docs/Games/Techniques/3D_collision_detection
https://developer.apple.com/documentation/realitykit/
https://github.com/apple/ARKitScenes
版权声明: 本文为 InfoQ 作者【京东零售技术】的原创文章。
原文链接:【http://xie.infoq.cn/article/a057f01a6a7902481dedd2593】。文章转载请联系作者。
评论