智能体刷屏的背后,是 AI 应用拐点的来临?AICon 北京站议程重磅公布,50+ 硬核分享不容错过 了解详情
写点什么

iOS 上手 Vision Pro 还未摸到门道?快来听听淘宝 Vision Pro 的最佳实践

  • 2024-10-12
    北京
  • 本文字数:3001 字

    阅读完需:约 10 分钟

大小:1.45M时长:08:27
iOS 上手 Vision Pro 还未摸到门道?快来听听淘宝 Vision Pro 的最佳实践

今年 4 月,淘宝 Vision Pro 版上线,为电商行业带来了全新的购物体验。通过将商品以 3D 立体的方式投影到现实世界中,用户可以近距离、多角度地观察商品,甚至可以实现 1:1 比例的真实模拟。这种“身临其境”的购物体验,无疑将改变我们传统的消费习惯。

 


对于 iOS 开发者来说,Vision Pro 代表着一个充满机遇的全新领域。淘宝作为国内领先的电商平台,率先将 Vision Pro 应用于购物场景,为开发者提供了宝贵的经验。淘宝 XR 工程技术团队核心开发蒋志远在接受 InfoQ 采访时分享了他们在 Vision Pro 开发方面的心得体会。蒋志远指出,Vision Pro 作为一个全新的平台,其实也给开发者带来了巨大的挑战。而淘宝团队则在没有任何前例可循、不断探索的情况下,成功上线了淘宝 Vision Pro 版本。

 

采访嘉宾:蒋志远,来自淘宝 XR 工程技术团队,曾经负责过淘宝 iOS 客户端性能、架构和创新业务,现在负责淘宝 Vision Pro 版本的软件架构工作。重新设计了 淘宝 Vision Pro 版本的软件架构,支持了淘宝 Vision Pro 版本开发上线的全流程。在即将召开的 QCon 上海 2024_ 全球软件开发大会暨智能软件开发生态展_InfoQ 技术大会上,蒋志远将分享更多关于淘宝在 visionOS 上的最佳实践细节。

 


InfoQ:从常规 iOS 开发转为 VR/MR 方向,您感觉这中间过渡大吗?进入 Vision Pro 开发领域,技能 Gap 主要有哪些?

 

蒋志远:Vision Pro 的开发得益于苹果的跨平台策略,它大量采用了与 iOS 相同的基础技术,并且基础 SDK 的 API 与 iOS 相差无几。因此,对于 iOS 开发者而言,转向 Vision Pro 的学习曲线相对平缓。你可以将开发 iOS 应用的经验直接应用于 Vision Pro 应用的开发。这正是 Vision Pro 相对于其他 VR/MR 头显设备的优势所在。

 

在开发 Vision Pro 应用时,主要分为两种类型:纯 2D 应用和结合 3D 内容的应用。对于前者,开发者无需额外学习;而对于后者,则需要对 3D 内容开发流程有所了解。独立开发者可能需要解决 3D 模型的获取、格式处理、3D 内容控制等问题,并需要具备一定的游戏开发知识,如渲染技术和数学变换等。尽管苹果已经提供了简洁的 API,但这些知识仍然是必要的。

 

InfoQ:构建 Apple Vision Pro 应用有两种基本方法:改造现有应用以使其与 Vision Pro 兼容,以及从头开始为 Vision Pro 的空间计算环境构建新应用。那么淘宝选择的是哪一种?为什么这么选?

 

蒋志远:在 Vision Pro 上,现有的 iPhone 和 iPad 应用可以通过兼容模式运行,这意味着即使不做任何修改,我们的 App 也能在 Vision Pro 上运行。这里假设你指的是使用现有代码对 Vision Pro 进行适配。这要求代码具有很高的兼容性,尤其是考虑到 Vision Pro 在 UI 上的显著变化和平台差异性。如果您的 App 已经很好地适配了 iPad 的 UI 并正确处理了多窗口逻辑,尤其是使用 SwiftUI 开发的 App,那么迁移到原生 Vision Pro 的难度会相对较小。然后,您可以针对 Vision Pro 平台微调 UI,并利用新的内容特性。

 

如果情况并非如此,我建议针对 Vision Pro 从头开始开发一个应用。因为面对这个全新的领域,我们更倾向于贴近平台,充分利用 Vision Pro 的潜力,提供全新的用户体验。

 

InfoQ:开发过程中,您认为最大的难点是什么?(某个功能的实现过程、遇到的问题以及解决方法)

 

蒋志远:在开发过程中,我们遇到了各种预料之中和预料之外的问题。Vision Pro 作为一个全新的平台,自然也存在各种挑战。并且苹果在很多细节方面并没有提供详细的文档,我们需要在没有任何经验可借鉴的情况下不断的摸索。

 

淘宝在原生的 visionOS 平台上开发,虽然原生平台已经给了很多能力,但是还有很多能力没有提供,我们自建了很多框架能力来弥补原生平台的不足。还有在如何协调好原生平台和自建的能力方面,我们也付出了很多的努力。

 

InfoQ:从当前实践角度来看,目前的三维显示、三维交互技术是否还存在一些对 VR/MR 发展造成掣肘的地方?

 

蒋志远:目前市面上的三维显示方案主要有两种:以 Vision Pro 为代表的视频透视(VST)方案,还有光学透视(OST)方案。VST 方案对摄像头的质量和图像拼接能力要求较高;而 OST 方案则对光学显示技术有较高要求。两者各有优势和局限。

 

实际上,这些技术的限制主要源于芯片技术,即如何在体积和算力之间找到最佳平衡点。XR 设备作为可穿戴设备,其设计要求是轻便舒适。例如,OST 设备为了实现轻便的眼镜形态,牺牲了一定的算力;而 VST 设备为了提供完整的 XR 体验,往往体积较大且重量较重。

 

在 Vision Pro 上,由于隐私问题,应用无法访问摄像头信息,唯一感知世界的方式是使用苹果的 ARKit,这在一定程度上限制了我们的发挥。我们希望能够继续探索 XR 隐私问题,找到应用感知世界和用户隐私之间的平衡点。

 

InfoQ:Vision Pro 的价格高昂,您认为个人开发者在 Vision Pro 实物调试过程中,除了高昂的硬件成本,还会面临哪些其他的技术门槛或限制?是否有一些开源工具或社区资源,可以帮助个人开发者更方便地进行 Vision Pro 的开发和调试?

 

蒋志远:Xcode 提供的模拟器已经能够满足我们大部分开发需求。然而,对于图像密集型的游戏或应用,模拟器的性能可能无法与真机相媲美。如果需要快速开发 Vision Pro 应用,目前开源的 iOS 能力库大多可以迁移到 Vision Pro 上。您可以在 GitHub 上搜索相关资源,如 Lookin、FLEX 等。

 

InfoQ:淘宝 Vision Pro 版本的开发过程中,您团队在实物调试方面有哪些独特的经验和教训?

 

蒋志远:苹果直接销售的 Vision Pro 没有外部接口,因此调试时需要一个低延迟且高速的局域网环境。如果您开发的是图形密集型应用,或者觉得无线调试速度慢且卡顿,可能需要购买官方推出的 Developer Strap,这是目前唯一支持有线调试 Vision Pro 的解决方案。

 

由于 Vision Pro 在 Xcode 中移除了 View Hierarchy 功能,调试视图时可能需要借助 Lookin 等工具进行辅助。

 

InfoQ:您认为未来的 Vision Pro 应用会呈现出怎样的趋势?是否可以预测下 Vision Pro 在电商领域的发展?

 

蒋志远:我认为 Vision Pro 应用在短期内将主要聚焦于沉浸式观影、效率工具和低交互的放置类 3D 游戏。长期来看,随着 AI、空间感知和协作能力的增强,应用将更倾向于虚拟与现实紧密结合,如协作设计、数字助手、立体说明书等。对于企业用户,Vision Pro 将在关键工序提供支持,如基于空间的设备状态监测、新人虚拟实操培训、增强人工视觉能力等。

 

对于传统电商应用,Vision Pro 提供了一个新的维度来展示商品。在手机上购物通常只能通过文字和图片了解商品,而 Vision Pro 可以通过 3D 技术将商品直观地展示在用户面前。开发者将充分利用这一新维度,以更沉浸、更高效的方式展示内容,如沉浸式逛店、线上车展、商品展览、AI 导购等。

 


InfoQ:对想入门 VR/MR 开发的程序员,您有哪些建议给他们?

 

蒋志远:我认为最重要的是明确自己想要开发的应用类型,然后有针对性地学习。XR 开发目前仍然依赖于特定平台。通用知识包括了解游戏开发的相关工具链、3D 模型相关知识、基础渲染知识以及 OpenXR 等。如果是针对 visionOS 的开发,Swift 和 SwiftUI 是一个很好的入门选择。

 

活动推荐

10 月 18 日 -19 日,QCon 全球软件开发大会将在上海举办。从云原生工程、架构、线上可靠性、大前端、技术管理等经典内容,到 AI Agent、AI Infra、RAG 等大热的 AI 话题,60+ 资深专家共聚一堂,深度剖析相关落地实践案例,共话前沿技术趋势。大会火热报名中,详情可联系票务经理  17310043226 咨询。

 


2024-10-12 17:137847

评论

发布
暂无评论
发现更多内容

我的 Windows 利器

玄兴梦影

工具 Win

知识也会生宝宝?

史方远

个人成长 随笔杂谈

# LeetCode 863. All Nodes Distance K in Binary Tree

liu_liu

算法 LeetCode

一个人,沿着童年的路究竟可以走多远?

zhoo299

童年 NASA 航天

程序员修炼的务实哲学

博文视点Broadview

程序员 软件 编程思维 工程师 编程之路

ARTS 第二周打卡

陈文昕

情绪的力量:如何使用情绪来达成目标

董一凡

情绪

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (十三)编写测试-生命周期方法

编程道与术

Java 编程 TDD 单元测试 JUnit

每个人都是领导者的工程团队

hongfei

工程能力 项目实践

ARTS - Week Two

shepherd

js algorithm

MySQL的各种日志

超超不会飞

MySQL

Go语言分布式系统配置治理

田晓亮

微服务

Python 自动化办公之"你还在手动操作“文件”或“文件夹”吗?"

JackTian

Python 自动化

互联网时代的界限管理

非著名程序员

程序员 职场 提升认知 界限管理

数据产品经理实战-数据门户搭建(上)

第519区

数据中台 开发数据

美团可能会强势涉足 ToB

罗小布

创业 互联网巨头 深度思考 互联网

你不知道的SSD那些事

焱融科技

分布式 存储 SSD nvme

Vue生态篇(二)

shirley

Vue

我为什么开始技术写作?

架构精进之路

技术创作

# LeetCode 215. Kth Largest Element in an Array

liu_liu

算法 LeetCode

开源分布式文件系统大检阅

焱融科技

开源 sds 存储 焱融科技 文件存储

patroni 通过服务启动报错

hobson

数据库 高可用 AntDB

从 0 到 1 搭建技术中台之发布系统实践:集泳道、灰度、四端和多区域于一体的设计与权衡

伴鱼技术团队

架构 系统设计 系统架构 系统性思考 架构设计

【Java 25周年有奖征文获奖名单公布!!!】关于Java,你最想赞扬、吐槽、期待的变化是什么?

InfoQ写作社区官方

写作平台 Java25周年 热门活动

Redis持久化了解一波!

不才陈某

redis 程序员 后端

这是一个测试文档

Geek_073cad

我常用的浏览器插件

彭宏豪95

chrome 效率工具 浏览器 插件

线程池续:你必须要知道的线程池submit()实现原理之FutureTask!

一枝花算不算浪漫

源码分析 并发编程

Vue生态篇(一)

shirley

Java Vue

奈学:传授“带权重的负载均衡实现算法”独家设计思路

奈学教育

分布式

杂谈-JSONP探索

卡尔

Java jsonp

iOS 上手 Vision Pro 还未摸到门道?快来听听淘宝 Vision Pro 的最佳实践_Android/iOS_Tina_InfoQ精选文章