写点什么

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:137497

评论

发布
暂无评论

ARTS week 2

锈蠢刀

你为什么“啃不动”你手中的技术书?

图灵社区

Java Python 算法 HTTP R语言

你的团队想做出什么成果?

姜戈

团队管理

突破困局

Neco.W

感悟 工作 创业心态

栀子花,我们应该像你一样静静绽放

小天同学

个人感想 感悟 日常思考

假如孔乙己是程序员

顿晓

学习 程序员 孔乙己

python实现·十大排序算法之计数排序(Counting Sort)

南风以南

Python 排序算法 计数排序

宕机原因千千万,被雷劈了最无奈

田晓旭

联邦学习与推荐系统

博文视点Broadview

人工智能 大数据 学习 推荐系统

终于,我也到了和Eclipse说再见的时候,难说再见

程序员小跃

Java eclipse IDEA

健身一周年:持续锻炼带来无法想象的改变

小鲸数据

学习 职业 专注 健身

redis过期策略和内存淘汰机制

wjchenge

管理规划篇

姜戈

团队管理 团队组织

100天从 Python 小白到大神最良心的学习资源!

JackTian

Python GitHub 学习 Python-100-Days Python-Core-50-Courses

一致性算法 Raft 简述

架构精进之路

raft 一致性算法

提升输入效率第一步——切换双拼

dongh11

效率工具 提升效率 生产力 分享 有趣

Spring Security 两种资源放行策略,千万别用错了!

江南一点雨

Java spring springboot springsecurity

点击劫持:无X-Frame-Options头信息(修复)

唯爱

你真的会用Mac中的Finder吗

Winann

macos 效率 App Mac

Vol.1 Java初探,新手必看!

pyfn2030

编程 新手指南

码农远程办公指北

大伟

好的软件工程原则

pydata

源码分析 | Mybatis接口没有实现类为什么可以执行增删改查

小傅哥

Java 源码分析 小傅哥 mybatis 编程思维

你的团队是干什么的?

姜戈

团队管理 团队职能

实现元素等高: Flexbox vs. Grid

寇云

CSS css3

揭秘神经拟态计算:缘何成为AI界新宠?

最新动态

数据与广告系列三:合约广告与与衍生的第三方广告数据监控

黄崇远@数据虫巢

数据挖掘 互联网 广告 移动互联网

软件开发生产率改进之我见(二)

清水

软件工程 软件开发 技术管理

使用<input>标签实现六个格子验证码输入框

AR7

Java vue.js 大前端

Android原生人脸识别Camera2+FaceDetector 快速实现人脸跟踪

sar

多线程与线程安全(实例讲解)

YoungZY

Java 多线程 线程安全

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