惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
Jina AI
Jina AI
The Cloudflare Blog
V
Visual Studio Blog
博客园_首页
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
博客园 - Franky

马浩飞丨博客

ROS实现多机话题通信 ROS实现多机话题通信 · Haofei Ma Cloudflare R2 个人图床 Cloudflare R2 个人图床 · Haofei Ma Isaac Sim 机械臂逆运动学控制 Isaac Sim 机械臂逆运动学控制 · Haofei Ma ROS2_Rviz2显示URDF模型 ROS2_Rviz2显示URDF模型 · Haofei Ma ROS2基本命令总结 ROS2基本命令总结 · Haofei Ma 使用zsh创建更高效的shell环境 使用zsh创建更高效的shell环境 · Haofei Ma Isaac Sim 仿真环境使用简介 Isaac Sim 仿真环境使用简介 · Haofei Ma Ubuntu设置定时任务 Ubuntu设置定时任务 · Haofei Ma 审稿意见撰写流程 Ubuntu 固定USB设备端口名(ttyUSB0->自定义) Ubuntu 固定USB设备端口名(ttyUSB0->自定义) · Haofei Ma Git+Github的代码备份与多设备同步 Git+Github的代码备份与多设备同步 · Haofei Ma 【设备使用】法奥意威 FR5 机械臂 Python 控制 【设备使用】法奥意威 FR5 机械臂 Python 控制 · Haofei Ma Python识别图片中文字和数字_easyocr Python识别图片中文字和数字_easyocr · Haofei Ma 【设备使用】omega.7主手配置与使用方法 【设备使用】omega.7主手配置与使用方法 · Haofei Ma 【论文笔记】ACT 使用低成本硬件的双手操作模仿学习 【论文笔记】ACT 使用低成本硬件的双手操作模仿学习 · Haofei Ma HDF5数据文件格式
【Apple Vision Pro开发】开发入门 · Haofei Ma
Haofei Ma · 2025-03-12 · via 马浩飞丨博客

0. Vision Pro 开发简介

Vision Pro 可以使用之前的 Swift 开发工具进行开发,也可以使用 Unity 工具进行开发,后者更适合 MR/VR 游戏和 3D 交互相关内容的开发。

Unity 的 Apple Vision Pro 开发工具包叫做 PolySpatial

(1)硬件要求

  • M 系列芯片的 Mac 电脑
  • Apple Vision Pro

(2)软件要求

  • Xcode 15.2以上,并导入 visionOS 模块
  • visionOS SDK(可在 Unity 中 导入)
  • Unity Pro 2022.3.18f1 及以上版本(通过 学生计划 免费申请 Pro 许可)
  • 苹果开发者账号(如果需要在 Vision Pro 实物运行)

1. Vision Pro 开发者模式与无线调试

将 Apple Vision Pro 和电脑连接在同一个 Wi-Fi 中,通过网络将电脑中的程序传输到 Vision Pro 中。

(1)配对 Vision Pro 与 Mac

打开 Xcode,创建一个新 Project。

选择 visionOS 模板。

Xcode 新建项目模板中选中 visionOS App

取一个项目名字,与选择项目位置。

新建完成 Xcode 工程。

进入 Vision Pro 的设置页面,位置在 Settings > General > Remote Devices。

回到 Xcode,点击菜单栏的 Window > Devices and Simulators,会看到配对界面,点击 Pair。(注意要保证 Vision Pro 和 Mac 在同一个局域网内,如果看不到配对界面,可以替换成手机热点试一下)

Xcode Devices and Simulators 中的 Vision Pro 配对对话框

Vision Pro 中会显示配对码,输入然后 Connect 即可完成连接。

Vision Pro 头显上显示的配对码

(2)打开 Vision Pro 开发者模式

Vision Pro 设置页面拉到最下面,可以看到 Developer Mode,可以将它开启,进入开发者模式。

(3)将 Xcode 程序打包到 Vision Pro 真机中运行

Xcode 默认是使用模拟器运行,要想在真机中运行,需要点击界面上方的 Apple Vision Pro 按钮,设备切换为与电脑配对的 Vision Pro。(注意需要保证 Vision Pro 系统版本高于项目最低 visionOS 版本)

Xcode 工具栏将运行目标切换为 Apple Vision Pro

点击左侧项目文件夹顶部(上图同样位置),点击 Signing & Capabilities,选择 Team,找到自己的开发者账号。将当前项目与开发者账号关联,每次创建新的工程都需要手动添加。

Xcode Signing & Capabilities 中已选择开发者 Team

点击运行,可以将程序打包到 Vision Pro 中,可以在菜单中看到新建的项目应用,打开可以看到 Hello World 字样。

可能的 Error: Apple Vision Pro’s visionOS doesn’t match project. 说明需要匹配 Apple Vision Pro 系统版本和 Xcode 设置的 visionOS 版本。 可以点击左侧项目栏上方项目名,在 General 中设置最低系统版本 Minimum Deployments 的 visionOS 版本。

2. Unity 2022.x 与 PolySpatial 1.0 安装

(1)安装 Unity

在 Unity 官网下载 Unity Hub【一定要是国际版】,并在 Unity Hub 中安装 Unity Pro 2022.3.18f1 及以上版本(通过 学生计划 免费申请 Pro 许可)。

点击 Unity 版本右侧的齿轮 > Add modules,添加 visionOS Build Support 模块。

Unity Hub 添加模块对话框中的 visionOS Build Support

Unity Hub 模块列表已勾选 visionOS Build Support

(2)创建项目

需要创建 Universal 3D 模板的项目,右侧可以更改项目名称和位置。

Unity Hub 使用 Universal 3D 模板创建项目

在项目中,点击左上角 File > Build Settings,切换项目平台为 visionOS(注意选择真机调试):

Unity Build Settings 已切换到 visionOS 真机

(3)安装插件

点击 Edit > Project Settings,找到 XR Plug-in Management,安装这个插件(如果开发 AR/MR 必须安装这个插件,如果只开发窗口应用则不需要)。

Project Settings 中的 XR Plug-in Management 安装页

安装完成后,再次点击 XR Plug-in Management,勾选 Apple visionOS(如果没有 Pro 许可证,是没有这个选项的),这里可能会跳一个 Warning,只要点击 Yes 即可,之后 Unity 会重启重新导入一些包,这时再勾上 Apple visionOS 即可。

已启用 Apple visionOS 的 XR Plug-in Management

还是在这个界面,点击 XR Plug-in Management > Apple visionOS,在第一行 App Mode 可以修改开发模式为 VR/MR,因为之后的项目都是 MR 应用,因此这里切换为 MR,系统会自动帮我们安装 PolySpatial。

Apple visionOS 的 App Mode 设为 Mixed Reality

还是在这个界面,点击 Project Validation,找到其中的 Vision Pro 图标下面的 Fix All,点击后 Unity 会自动帮我们修复一些环境配置。

Project Validation 中 Vision Pro 图标下的 Fix All

还是在这个界面,点击 Apple visionOS,填写 Hands Tracking Usage Description 和 World Sensing Usage Description。

当程序想要访问手势追踪和空间数据的权限的时候,在 Vision Pro 中会跳出一个弹窗确认,这里填写的就是通知大标题下面的小字具体内容。

Hands Tracking 与 World Sensing 用途说明填写栏

(4)导入 PolySpatial 样例场景

点击左上角 Window > Package Manager,找到 PolySpatial 包,其中有 Samples 选项,在这里可以导入 PolySpatial 的模板设置和模板场景。

Package Manager 中 PolySpatial 包的 Samples

导入之后,可以在下方找到 Assets > Samples > PolySpatial > Scenes,里面是 PolySpatial 提供的样例场景。

可以打开其中的 ProjectLauncher,按照要求导入 TMP。

ProjectLauncher 示例场景提示导入 TMP

然后打开 File > Build Settings,将 PolySpatial 的所有样例场景都拖到上面的 Scenes in Build 栏中,并将 ProjectLauncher 拖动到第一个(因为这个是所有场景的启动器)。

Build Settings 的 Scenes in Build 将 ProjectLauncher 放在首位

(5)配置实机串流调试

找到 PolySpatial 的 Play to Device 页面,可以看到其中有一条 TestFlight 的链接,点开安装 TestFlight 以及 Unity 的 Play to Device 软件。

Unity Play to Device 文档中的 TestFlight 链接

然后在头显端也安装 TestFlight 软件,并登录与 Mac 相同的账号,这里可以看到 Unity Play to Device 应用。

然后打开 Unity Play to Device Host 这个应用,可以看到页面中显示了一个 IP 地址,记住这个 IP 地址。

打开 Unity 的 Window > Play to Device,在下方输入 Vision Pro 的 IP 地址,名字任意,点击 Add Device。在上方列表可以看到添加后的设备,在此处勾选 Connect,并将上面的 Connect on Play 设置为 Enable。

Play to Device 窗口已连接 Vision Pro

回到 Unity,点击 Play,可以将程序打包发布到头显上。

退出时,最好在 Unity 界面中结束程序运行,而不要在 Vision Pro 中关闭。 如果点击 Play 没有将程序发布到 Vision Pro 中,首先确认 IP 地址无误。可以同时长按 Vision Pro 顶部两个按钮,然后终止 Unity Play to Device 应用,重新启动该应用,然后再运行 Unity 程序。

这种情况,可以在 Unity 中运行程序显示,不过无法脱离 Unity,下面介绍如何将 Unity 中的程序打包成一个应用发布到 Vision Pro 头显中。

(6)打包为 Xcode 工程

打开左上角 File > Build Settings,点击下方 Build 按钮,创建一个文件夹用来保存打包后的 Xcode 工程文件,然后点击 Choose 开始打包。

Build 对话框选择生成 Xcode 工程的文件夹

打包完成后,就会在创建的文件夹中,生成一个 Xcode 工程。此时可以使用 Xcode 打开该项目,具体运行方式与上一节相同。

3. Unity 6 与 PolySpatial 的安装

(1)安装 Unity

在 Unity 官网下载 Unity Hub【一定要是国际版,国际版才能安装 Unity 6】,并在 Unity Hub 中安装 Unity 6.0 及以上版本(通过 学生计划 免费申请 Pro 许可)。

点击 Unity 版本右侧的齿轮 > Add modules,添加 visionOS Build Support 模块。

(2)创建项目

注意 Unity Editor 的版本,以及选择 Universal 3D。

Unity 6 Hub 使用 Universal 3D 创建项目

(3)导入 PolySpatial 2.0

首先点击 Unity 的 File > Build Profiles,切换开发平台为 visionOS,并设置 target SDK 为 Device(如果要真机调试的话)。

Unity 6 Build Profiles 中 visionOS 与 Device SDK

打开 Edit > Project Settings,找到最下方的 XR Plug-in Management,安装,并启用 Apple visionOS,在电脑端勾选 PolySpatial XR。

XR Plug-in Management 勾选 Apple visionOS 与 PolySpatial XR

然后打开 Apple visionOS 选项,按照如下选择(其中两个 Description 可以随意填写)

Apple visionOS 播放器设置及用途说明

剩余的 Sample 导入与 Play to Device 均与之前相似,注意需要安装 Play to Device v2

4. visionOS 应用形态

(1)空间类型分类

  • Shared Space: 不同的 2D 窗口或 3D 应用能够在同一个空间中一起运行
  • Full Space / Immersive Space: 应用单独占据整个空间

可以理解为在电脑上的应用程序,Shared Space 就是不同的应用可以同时以窗口的形式进行显示,而 Full Space 就是应用的全屏显示。

需要注意的是,Full Space 中才能够使用 ARKit 的功能,例如手势追踪,网格数据获取,头部跟踪,物体跟踪等,在 Shared Space 中是无法获取的。

(2)应用形态

  • 窗口模式:类似于 iOS 或 Mac 的 App 开发,是一个 2D 窗口。
  • VR 模式:完全虚拟的环境,使用 Unity 渲染。
  • MR 模式:在现实环境中加入虚拟内容,分为 shared 模式和 exclusive 模式(Full Space),适配苹果的 CompositorServices,使用 Metal 渲染。

5. 体积相机

  • 在共享空间中,应用被包裹在立方体范围内,有边界盒;
  • 而在独占空间中的应用,应用没有边界,整个空间都是应用载体

(1)创建场景

首先打开 Project 面板,进入 Assets > Scenes 目录下,新建一个场景,任意命名(例如 SharedSpace_VolumeCamera),然后双击打开。

在 Assets/Scenes 下新建的场景

(2)添加体积相机

打开 Hierarchy 面板,在空白区域右键,点击 XR > Setup > Volume Camera 添加体积相机。

Hierarchy 菜单添加 XR Volume Camera

接下来需要设置体积相机的配置文件。点击 Volume Camera,找到右侧的属性栏,按下图找到其中的 Volume Window Configuration,点击右侧的圆圈符号,如果前面正确加载 PolySpatial 的样例场景的话,此时会有两个可以选择的 Volume Camera 配置,分别是 Bounded… 有边界的,和 Unbounded… 无边界的体积相机。

Volume Camera 配置选择 Bounded 与 Unbounded 预设

如果想自己创建配置文件,可以找到 Assets > Samples > PolySpatial > Resources 文件夹,然后新建配置文件。(右键 > Create > PolySpatial > Volume Camera Window Configuration)。

配置文件必须要在 Resources 文件夹下,但 Resources 文件夹的位置可以是任意的,只要是在 Assets 包含的目录中即可。

(3)应用与体积相机边界盒大小的区别

  • 应用的边界盒大小:在配置文件Bounded_VolumeCameraConfiguration中的Output Dimensions修改,单位为米
  • 体积相机的边界盒大小:在 VolumeCamera 属性菜单中修改,大小为 Dimensions x Scale。

应用的边界盒大小,决定了 Vision Pro 中启动应用时,应用在空间中占据空间的大小。

体积相机的边界盒大小,决定了在 Unity 中渲染时,有多少物体会被渲染(所有在边界盒范围内的物体才会被渲染)。

如果应用的边界盒大小不变,体积相机的边界盒大小变大,那么应用中物体的大小就会变小来保证所有物体都能够被渲染显示。