Unity Apple Vision Pro 保姆级开发教程-准备阶段

视频教程:

Unity PolySpatial 开发Apple Vision Pro教程, 三十分钟快速了解


Unity Vision Pro 中文课堂教程地址:

Unity3D Vision Pro 开发教程【保姆级】 | Unity 中文课堂


开发Apple Vision Pro 使用原生开发和unity 开发有什么区别

  • 如果你的项目需要充分利用 Apple Vision Pro 的独特功能、追求最佳的性能表现,或者针对特定于 VisionOS 的开发场景,原生开发可能是更好的选择。

  • 如果你想要快速开发一个可在多个 XR 平台上运行的应用,或者你已经熟悉 Unity 并且希望减少开发复杂性,Unity 开发会是更方便的选择。

  • 详细说明

软硬件设备

  • Apple Silicon Mac for development - (M系列芯片的Mac电脑)

    • Unity 2022 LTS(2022.3.18f1 或更新版本) - Unity Pro(我使用的是2022.3.31f1,这个在hub上没有,需要去官网下载,国际版本下载地址 Download Archive)

  • Xcode 15.3 (15E204a) https://developer.apple.com/cn/xcode/

  • visionOS 1.0 (21N301) SDK 或更新版本

账号要求

Apple Developer 账户

https://developer.apple.com/account

Unity Pro/Unity Enterprise/Unity Industry的授权许可证

用于 3D、AR 和 VR 开发的实时工具 | 产品

Unity PolySpatial 官方文档:

Introduction | PolySpatial visionOS | 1.3.9(需要时刻关注开发者文档,因为 PolySpatial 处于早期阶段,在未来可能有些地方会发生变动)

应用程序类型

Unity 在 visionOS 上支持几种不同的应用程序类型,每种类型都有各自的优点:

Windowed

.

在 visionOS 中,用户可以使用窗口来呈现 2D 或 3D 内容,或使用体积来呈现 3D 内容和对象。Unity 将存在于这些窗口中的应用程序描述为窗口化应用程序。

窗口应用使用 Unity 自己的渲染管道,即内置渲染管道或通用渲染管道。这样您就可以访问所有标准 Unity 功能,但无法使用 visionOS 特定功能(例如立体渲染和悬停效果)或 AR 特定功能(例如关节跟踪和锚点)。

默认情况下,如果您构建针对 visionOS 平台的 Unity 应用程序而未通过 XR 插件管理器启用 PolySpatial Runtime 或 visionOS 插件,则您的 Unity 内容将成为 visionOS 中的窗口应用程序。

如果您启用了 visionOS 插件,但仍想制作窗口应用程序,则必须将下的应用程序模式更改Project Settings > XR Plug-in Management > Apple visionOS > App ModeWindowed - 2D Window

Fully Immersive VR

借助 Unity,用户可以利用熟悉的工作流程为 VisionOS 构建完全沉浸式的体验,包括虚拟现实游戏或完全虚拟环境。如今,Unity 提供了广泛的功能和 API,可用于为 visionOS 开发完全沉浸式的体验。这些软件包包括:

  • visionOS plug-in

  • XR Interaction Toolkit

  • XR Core Utilities

  • Input System

  • VR project template

  • Hand tracking

在 Unity 中构建 VR 内容后,只需在XR Plug-in Management 窗口中选择visionOS - Fully Immersive ,选择并构建 visionOS 平台,重新编译原生插件,即可生成 Unity XCode 项目文件。从这里开始,您将继续在 XCode 中进行开发,您可以探索诸如在窗口内容和完全沉浸式内容之间转换等概念。

请注意,Unity 仍在努力实现与 XCode 上的 Metal API 功能对等,因此您可能会看到 Metal 的 API 验证层发出的警告。要解决此问题,您可以通过 XCode 的scheme 菜单关闭 Metal API 验证层。

PolySpatial Mixed Reality

visionOS 上的混合现实内容可以采用两种模式之一,我们称之为“ shared 共享”模式和“ exclusive 独占”模式。

ModesDescription
共享
(Shared)
在"shared"模式下,您的应用程序与共享现实世界空间中活动的任何其他应用程序共存。每个应用程序都有一个或多个bounded volumes(见下文),但没有无界体积。这些体积的位置和方向(包括相对位置和绝对位置)对应用程序来说都是不透明的。此模式下的输入仅限于通过SpatialPointerDevice的“3D touch”机制(请参阅 Input)。此外,在此模式下,手部位置、平面或世界网格等ARKit信息不可用。
独有的
(Exclusive)
在“exclusive”模式下,除了先前创建的有界体积外,单个应用程序还通过unbounded volume(见下文)控制整个视图。在此模式下,应用程序知道其体积的相对位置,可以访问设备的所有AR功能,并使用手/关节位置信息直接驱动输入和交互。该应用程序仍然无法移动有界体积或调整有界体积的大小,因此必须依靠用户来确保有界体积不会与无界体积内的有意义的内容重叠。

Volumes

体积(volumes)是混合现实平台的一个新概念。应用程序可以创建一个或多个体积,用于在混合现实空间中显示内容。每个体积都是一个包含 3D 内容的定向框。在visionOS中,用户可以在现实世界的空间中独立移动和缩放体积,而开发人员则无法通过编程来实现。在Unity中,您可以使用称为 VolumeCamera 的Unity组件与Volume进行交互。

ModesDescription
有界体积

(Bounded Volumes)
有界体积具有有限的盒形范围。用户可以在世界空间中移动和转换有界体积,但开发人员不能以编程方式移动和转换。目前,Unity在一个有界体积中的内容将扩展以填充体积的实际大小。

有界体积的输入仅限于SpatialPointerDevice提供的“3D Touch”。请参阅Input。
无界体积

(Unbounded Volumes)
在独占模式下运行时,内容呈现单个无界体积,没有任何剪切边缘。该应用程序拥有整个混合现实视图,没有其他应用程序可见。来自同一应用程序的其他有界体积可以与此无界体积共存。

在无界体积内,应用程序可以请求访问完整的手部跟踪数据。

Unity PolySpatial

Materials

  • Physically based materials

  • Custom materials

        手写着色器不支持通过 RealityKit进行渲染,但你可以在Unity的RenderTextures 中使用,然后你可以将RenderTexture,作为纹理输入到Shader Graph 中并通过 RealityKit进行显示

  • Effect materials

Mesh renderers

Renderers

  • MeshRenderer

  • Skinned Mesh Renderer

Pipelines

  • Universal render pipeline

  • Built-in render pipeline

Particle effects

  • Simple: Translated to RealityKit 转换成RealityKit支持的

  • Complex: Translated to meshes 转换成mesh

Sprites

Translated to meshes 转换成mesh

Simulation features

  • Physics 物理

  • Animation and Timeline 动画线

  • Pathfinding 寻路导航网格

  • MonoBehaviours 自定义脚本

  • Other non-rendering features 其他非渲染功能

Input types 支持的输入方式

Look & tap

  1. Requires input colliders 相关对象必须配置输入碰撞器

  2. Look & tap from a distance 从远处看&点击

  3. Direct touch 伸手触摸某个物体

  4. Up to two simultaneous taps 用户最多可以 同时进行两个点击操作

  5. Delivered as World Touch events 可用作 WorldTouch事件其类似于2D点击事件,但有完整的3D位置

Hands and Head pose

Requires Input and Hands packages 底层手部数据通过Unity的Hands包提供,头部位姿通过输入系统提供

Unbounded volumes only 只能在无界空间中使用

Hands require permission 并且访问手势跟踪需要你的App,有接收数据的权限

Augmented reality

Plane detection 平面检测

World mesh 环境网格

Image markers 图片追踪

Unbounded volumes only 只能在无界空间中使用

Bluetooth devices

Keyboards 键盘

Controllers 控制器

Other system-supported devices 其他系统支持的设备

总结示意

开发Apple Vision Pro 原生开发,unity 开发 详细

1. 开发环境与工具链

  • 原生开发(Xcode + iOS SDK):

    • 使用 Xcode 开发环境和 Swift/Objective-C 编程语言。

    • 使用苹果专有的 VisionOS SDK,直接调用 Vision Pro 的所有底层 API 和硬件功能。

    • 更加贴近硬件,能够完全利用 Apple Vision Pro 提供的功能(如 3D 空间感知、眼动追踪、手势识别等)。

    • 提供了更精细的控制和性能优化,尤其适合构建针对 Vision Pro 专属的复杂应用程序。

  • Unity 开发:

    • 使用 Unity 编辑器,开发基于 C# 脚本的跨平台应用。

    • 借助 Unity 的 XR Plugin Management 和 AR Foundation 来支持 Apple Vision Pro。

    • Unity 提供了图形化开发环境,方便进行 3D 场景构建和快速迭代。

    • 由于 Unity 是跨平台引擎,应用开发可以轻松迁移到其他 XR 平台(如 Meta Quest、PICO、HTC Vive)。

2. 开发复杂性

  • 原生开发:

    • 更复杂,因为需要理解和使用 VisionOS 的新概念,比如“空间计算”和 3D 用户界面(spatial computing)。

    • 需要直接操作低层的 API 和图形界面,涉及更多的手动配置和细节控制。

  • Unity 开发:

    • 相对简单,尤其适合开发者已经熟悉 Unity 环境,可以利用 Unity 的可视化编辑器和预制系统进行快速开发。

    • Unity 提供了丰富的第三方资源和插件库,减少了重复造轮子的工作。

3. 性能与优化

  • 原生开发:

    • 性能通常优于 Unity,因为原生应用直接与系统 API 交互,可以最大限度地优化特定硬件。

    • 原生开发允许对设备的特性进行更精细的控制,特别是针对高性能需求的应用程序(如大型 3D 渲染和计算)。

  • Unity 开发:

    • Unity 是跨平台的引擎,尽管方便但有额外的开销。Unity 虽然可以很好地支持 Vision Pro,但性能可能会稍逊于原生开发,尤其是在处理高端图形渲染和复杂的物理模拟时。

    • 不过,Unity 的优化工具(如 Profiler 和 Burst 编译器)可以帮助减少性能损耗。

4. 扩展性与跨平台能力

  • 原生开发:

    • 只能运行在 Apple 生态系统中,应用无法轻易移植到其他 AR/VR 平台(如 Meta Quest 或微软 HoloLens)。

    • 强依赖于苹果的框架和工具,但可以利用苹果独特的硬件和软件特性(如眼动追踪、LIDAR 等)。

  • Unity 开发:

    • 更适合跨平台开发,尤其是如果计划将应用移植到其他 XR 设备。

    • Unity 可以为多个平台构建不同版本的应用,具备更高的扩展性。

5. 开发资源与支持

  • 原生开发:

    • 主要依赖苹果官方文档和开发者社区的支持,资源相对有限。

    • VisionOS SDK 及其相关工具较新,因此开发者可能需要花费更多时间去探索。

  • Unity 开发:

    • Unity 社区庞大,文档完善,学习资料和教程丰富。

    • Unity 生态系统中有大量的插件、工具包和现成的资源,可以加速开发过程。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis 高可用:从主从到集群的全面解析

目录 一、主从复制 (基础)1. 同步复制a. 全量数据同步b. 增量数据同步c. 可能带来的数据不一致 2. 环形缓冲区a. 动态调整槽位 3. runid4. 主从复制解决单点故障a. 单点故障b. 可用性问题 5. 注意事项a. Replica 主动向 Master 建立连接b. Replica 主动向 Master 拉取数据 二、…

智能家居的“眼睛”:计算机视觉如何让家更智能

引言 在不远的未来,当我们走进家门,灯光自动亮起,空调已经调至最舒适的温度,甚至音乐也播放着我们最喜欢的歌曲。 这一切,都得益于智能家居系统的发展。而在这个系统中,计算机视觉技术扮演着至关重要的角色…

初识MySQL · 数据库

目录 前言: 数据库 简单使用 存储引擎 前言: 本文也是MySQL的第一篇文章了,新的知识点已经出现,怎么能够停止不前,穿越时空……(迪迦奥特曼乱入哈哈哈)。 言归正传,我们在本文的目标有: …

基于SpringBoot+Vue+uniapp的涪陵区特色农产品交易系统的详细设计和实现(源码+lw+部署文档+讲解等)

详细视频演示 请联系我获取更详细的视频演示 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

MATLAB(Octave)混电动力能耗评估

🎯要点 处理电动和混动汽车能耗的后向和前向算法模型(simulink),以及图形函数、后处理函数等实现。构建储能元数据信息:电池标称特性、电池标识符等以及静止、恒定电流和恒定电压等特征阶段。使用电流脉冲或要识别的等效电路模型类型配置阻抗…

day-13面向对象进阶

面向对象进阶部分学习方法: 特点: ​ 逻辑性没有那么强,但是概念会比较多。 ​ 记忆部分重要的概念,理解课堂上讲解的需要大家掌握的概念,多多练习代码。 day13 第一章 复习回顾 1.1 如何定义类 类的定义格式如…

Linux_进程控制

一&#xff1a;进程创建 fork()函数创建新进程 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1 进程调用fork&#xff0c;当控制转移到内核中的fork代码后&#xff0c;内核做&#xff1a;…

KubeSphere部署Elasticsearch+Kibana

演示示例使用的是3.4.1&#xff0c;各版本有名字差异 功能是一样的 1.配置字典 名称&#xff1a;elasticsearch 键名&#xff1a;elasticsearch-conf 值&#xff1a; network.host: 0.0.0.0 http.port: 9200 transport.port: 9300 # head 插件需要这打开这两个配置,解决跨域…

面试:了解 ThreadLocal 内存泄漏需要满足的 2 个条件吗?

欢迎关注公众号 【11来了】&#xff08;文章末尾即可扫码关注&#xff09; &#xff0c;持续 中间件源码、系统设计、面试进阶相关内容 在我后台回复 「资料」 可领取 编程高频电子书&#xff01; 在我后台回复「面试」可领取 30w 字的硬核面试笔记&#xff01; 感谢你的关注&…

Vim工具使用( Linux 网络操作系统 07)

1 概念部分 vim是vimsual interface的简称&#xff0c;它可以执行输出、删除、查找、替换、块操作等众多文本操作&#xff0c;而且用户可以根据自己的需要对其进行定制。这是其他编辑程序所没有的。vim不是一个排版程序&#xff0c;它不像Word或WPS那样可以对字体、格式、段落…

记录 ruoyi-vue-plus在linux 部署遇到的问题

整理 linux 文件不要放在 /, 根目录下&#xff0c;要放在 home 文件夹下。docker 启动mysql 容器&#xff0c;映射的 my.cnf 文件不能设置太高权限&#xff0c;权限太高有安全问题&#xff0c;无法读取。 linux 使用注意事项 docker 文件夹 部署在home文件夹下 总结学习到的…

linux的随机化处理

Linux的随机化处理&#xff08;或称为地址空间布局随机化&#xff0c;ASLR&#xff09;是一种安全特性&#xff0c;旨在提高系统对抗攻击的能力&#xff0c;尤其是缓冲区溢出和代码注入攻击。随机化处理通过改变进程在内存中的布局来减少攻击者利用漏洞的可能性。 随机化处理的…

SOLIDWORKS参数化软件

在产品设计和工程领域&#xff0c;参数化设计是一种革命性的方法&#xff0c;它允许设计者通过定义一系列规则和关系来创建和修改模型。参数化设计的核心在于将设计过程分解为一系列可调整的参数&#xff0c;如尺寸、形状、材料属性等&#xff0c;这些参数之间通过数学关系相互…

【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第四十九章 平台总线总结回顾

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

Anaconda虚拟环境安装cuda和pytorch

首先电脑上要有Anaconda&#xff0c;使用conda创建一个虚拟环境,并激活 conda create yolov8 conda activate yolov8winR输入cmd&#xff0c;在命令窗口输入 NVIDIA-smi可以查看到自己电脑支持的cuda环境&#xff0c;如下图 再打开torch的官网 pytorch官网 查看目前支持的版…

C++ MFC 标准库 加密解密解惑

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…

第五届光学与图像处理国际学术会议(ICOIP 2025)征稿中版面有限!

第五届光学与图像处理国际学术会议&#xff08;ICOIP 2025&#xff09; 2025 5th International Conference on Optics and Image Processing (ICOIP 2025&#xff09; 重要信息 时间地点&#xff1a;2025年4月25-27日丨中国西安 截稿日期&#xff1a;2024年12月16日23:59 …

Java项目-基于Springboot的应急救援物资管理系统项目(源码+说明).zip

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

【数据结构与算法】力扣 54. 螺旋矩阵

问题描述 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a; matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a; [1,2,3,6,9,8,7,4,5]示例 2&#xff1a; 输入&#xff1a; ma…

【C++】deque(空间适配器))

适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)&#xff0c;该种模式是将一个类的接口转换成客户希望的另外一个接口。 STL标准库中stack和queue的底层结构 deque原理介绍 deque(双端队列)&#xff1a;是一种…