京东.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

RealityKit | Apple Developer Documentation

GitHub - apple/ARKitScenes: This repo accompanies the research paper, ARKitScenes - A Diverse Real-World Dataset for 3D Indoor Scene Understanding Using Mobile RGB-D Data and contains the data, scripts to visualize and process assets, and training code described in our paper.

Understanding World Tracking | Apple Developer Documentation



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/45271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第11章 规划过程组(三)(11.11规划成本管理)

第11章 规划过程组(三)11.11规划成本管理,在第三版教材第403~404页; 文字图片音频方式 第一个知识点:成本管理概述 1、成本的类型(重要知识点) 直接成本 如项目团队差旅费、工资、项目使用的…

【简历】西安某211大学研究生:Java简历面试通过率低

注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 简历说明 这个同学是211研究生的一份Java简历,这个简历版面没有问题,但是因为主项目重复度过大,所以导致这个简历的简历通过率会大大降低,面试通过…

从基础到进阶:无线局域网技术解析

在局域网刚刚问世后的一段时间内,无线局域网的发展比较缓慢,其原因是价格贵、数据传输速率低、安全性较差。但自20世纪80年代末以来,由于人们工作和生活节奏的加快,以及移动通信技术的飞速发展,无线局域网逐步进入市场…

前端新手小白的React入坑指南

有个小伙伴跟我说,已经毕业了,开始实习了。但公司现在用的还是Vue,领导说是过段时间让他用React做项目,先自己学习起来。 我给他找了一些文档,顺便着呢,反正自己也写博客,自己也写一份吧&#x…

无需构建工具,快速上手Vue2 + ElementUI

无需构建工具,快速上手Vue2 ElementUI 在前端开发的世界中,Vue.js以其轻量级和易用性赢得了开发者的青睐。而Element UI,作为一个基于Vue 2.0的桌面端组件库,提供了丰富的界面组件,使得构建美观且功能丰富的应用变得…

前端JS特效第30集:jQuery焦点图插件edslider

jQuery焦点图插件edslider&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下(全部代码在文章末尾)&#xff1a; <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatib…

Vmware_Mysql8.0.31_安装部署

创建mysql目录&#xff0c;将资料上传到该目录 卸载MySQL依赖&#xff0c;虽然机器上没有装MySQL&#xff0c;但是这一步不可少 sudo yum remove mysql-libs 下载依赖并安装 sudo yum install libaio udo yum -y install autoconf 切换到hadoop102的root用户 su root 执…

大模型【Qwen2-7B本地部署(WEB版)】(windows)

大模型系列文章目录 Qwen2-7B本地部署&#xff08;WEB版&#xff09; 前言 大模型是截止2024年上半年最强的AI&#xff0c;Qwen2是刚出来的号称国内最强开源大模型。这是大模型系列的第一篇文章&#xff0c;旨在快速部署看看最近出来的大模型效果怎么样&#xff0c;效果ok的话…

算法学习day11

一、用最少数量的箭引爆气球() 一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一支箭&#xff0c;若有一个气球的直径的开始和结束坐标为 xstart&#xff0c;xend&#xff0c; 且满足 xstart ≤ x ≤ xend&#xff0c;则该气球会被 引爆 。 输入&#xff…

上机算法刷题暑期篇(一) —— AcWing 3692. 最长连续公共子序列(西电)

题目链接 AcWing 3692. 最长连续公共子序列 题目详情 题目解析 我们一看到题目,最长和连续子串&#xff0c;我们第一反应应该是什么?没错,就是dp,一般来说&#xff0c;子串问题常见的解法有两种&#xff1a; 双指针 dp 这道题无疑就是一道最常见的dp问题&#xff0c;而dp问…

昇思25天学习打卡营第11天 | FCN图像语义分割

昇思25天学习打卡营第11天 | FCN图像语义分割 文章目录 昇思25天学习打卡营第11天 | FCN图像语义分割FCN模型数据处理下载数据集创建训练集可视化训练集 网络构建网络结构张量操作 训练准备导入VGG-16部分预训练权重&#xff1a;损失函数模型评估指标 模型训练模型评估模型推理…

常见 Web漏洞分析与防范研究

前言&#xff1a; 在当今数字化时代&#xff0c;Web应用程序扮演着重要的角色&#xff0c;为我们提供了各种在线服务和功能。然而&#xff0c;这些应用程序往往面临着各种潜在的安全威胁&#xff0c;这些威胁可能会导致敏感信息泄露、系统瘫痪以及其他不良后果。 SQL注入漏洞 …

《昇思25天学习打卡营第16天|基于MindNLP+MusicGen生成自己的个性化音乐》

MindNLP 原理 MindNLP 是一个自然语言处理&#xff08;NLP&#xff09;框架&#xff0c;用于处理和分析文本数据。 文本预处理&#xff1a;包括去除噪声、分词、词性标注、命名实体识别等步骤&#xff0c;使文本数据格式化并准备好进行进一步分析。 特征提取&#xff1a;将文…

5 MySql

5 MySql 一、简介二、SQL语言2.1 导入外部SQL文件2.2 显示表结构2.3 与创建数据库相关的语句2.4 与表相关的语句2.5 操作表中的数据2.6 7种基本的sql查询 三、SQL的注意点3.1 与集合函数相关3.2 SQL语句的书写与执行过程 四、约束 constraint4.1 作用4.2 功能分类4.3 自增 五、…

头歌资源库(25)地图着色

一、 问题描述 任何平面区域图都可以用四种颜色着色&#xff0c;使相邻区域颜色互异。这就是四色定理。要求给定区域图&#xff0c;排出全部可能的着色方案。例如&#xff0c;区域图如下图所示&#xff1a; 要求用四种颜色着色。 则输入&#xff1a; 10 4 &#xff08;分别表示…

python-27-零基础自学python

学习内容&#xff1a;《python编程&#xff1a;从入门到实践》第二版 知识点&#xff1a; 统计文本单词数、 解决问题&#xff1a; gbk codec cant decode byte 0x9d in position 995: illegal multibyte sequence” 练习内容&#xff1a; 练习10-10&#xff1a;常见单词 …

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第二十六章 安装超级终端软件

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

短视频矩阵系统是什么?怎么搭建短视频矩阵系统?一文了解矩阵模式

在数字时代&#xff0c;短视频已成为信息传播的新宠&#xff0c;而短视频矩阵系统则是品牌和个人在短视频领域取得突破的重要工具。那么&#xff0c;短视频矩阵系统究竟是什么&#xff1f;如何搭建这样一个高效的系统&#xff1f;它又能够解决哪些问题呢&#xff1f;本文将为您…

C#绘制阻抗圆图初步

阻抗圆图&#xff0c;或者叫史密斯图&#xff0c;是无线电设计方面用的&#xff1b; 基本的阻抗圆图如下&#xff0c; 下面尝试用C#能不能画一下&#xff1b; 先在网上找一个画坐标的C#类&#xff0c;它的效果如下&#xff1b; 自己再增加一个函数&#xff0c;可以绘制中心在…

地址翻译过程(TLB-->页表-->Cache-->主存-->外存)

目录 1.地址结构 2.查找快表或页表&#xff1a;从虚拟地址--->物理地址 3.通过物理地址访问数据 设某系统满足以下条件&#xff1a; •有一个TLB与一个data Cache •存储器以字节为编址单位 •虚拟地址 14位 •物理地址 12位 •页面大小为 64B •TLB 为四路组相联&#x…