Unity Apple Vision Pro 开发(三):visionOS 应用形态

文章目录

  • 📕教程说明
  • 📕常用名词解释
  • 📕visionOS 空间类型
    • ⭐Shared Space 共享空间
    • ⭐Full Space/Immersive Space 独占空间
  • 📕visionOS 渲染框架
  • 📕Unity 开发 visionOS 应用的不同模式
    • ⭐**窗口模式**
    • ⭐VR 模式
    • ⭐MR 模式
  • 📕总结

此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区。这是一个高质量 XR 开发者社区,博主目前在内担任 XR 开发的讲师。该社区提供专人答疑、完整进阶教程、从零到一项目孵化保姆服务、投资|融资对接、工程文件下载等服务。

社区链接:
SpatialXR社区:完整课程、项目下载、项目孵化宣发、答疑、投融资、专属圈子

在这里插入图片描述


📕教程说明

这期教程我将介绍使用 visionOS 的应用形态,以及 Unity 是如何适配 visionOS 的。掌握了相关的知识点后,我们就能明白能在苹果头显中开发什么类型的应用,每一种类型在开发的时候有哪些限制,能够利用上什么特性。

视频讲解:
https://www.bilibili.com/video/BV1XS421d7rK


📕常用名词解释

Metal:苹果系统的底层图形 API,负责渲染。

ARKit:苹果的 AR 框架,提供了跟踪、检测和姿态估计等核心功能。

RealityKit:基于 ARKit 的一套更高层的框架。拥有 3D 引擎来处理AR应用的渲染,物理,动画等效果。【AR+3D渲染】渲染的底层也是基于 Metal,但是提供了更高层的封装。


📕visionOS 空间类型

在这里插入图片描述

⭐Shared Space 共享空间

在这里插入图片描述

不同的 2D 窗口和 3D 应用能够在空间中一起运行。打开头显默认进入的就是共享空间。

高级版的程序多开:共享空间中的所有应用由 RealityKit 渲染。

交互方式:眼睛注视+Pinch 捏合手势(Pinch:捏合拇指和食指),近距离 Poke,近距离 Pinch

在这里插入图片描述

应用载体:Window 窗口和 Volume 体积分别装载平面窗口和 3D 应用。其中 3D 应用都是被包裹在了一个立方体的范围内。

在这里插入图片描述

⭐Full Space/Immersive Space 独占空间

  • 应用单独占据整个空间,会隐藏共享空间中的其他应用,然后整个空间只显示这个应用。类比电脑,电脑屏幕上可以显示多个窗口,对应共享空间;也可以一个应用全屏显示,对应独占空间。只不过现在这些应用被搬到了三维空间中,并且既可以有 2D 窗口,也可以有 3D 模型。独占空间中整个空间都是应用载体,也可以存放窗口或体积类型的内容。
  • 能够使用 ARKit 的功能(共享空间无法使用)。例:
    1. 手势追踪获取手部骨骼数据。用法:手部与虚拟物体碰撞,手势识别。
    2. 获取到房间的网格数据。用法:实现虚拟物体与现实物体之间的碰撞。
    3. 平面识别。
    4. 图片识别。
    5. 物体跟踪。
    6. 头部跟踪。

应用沉浸度:

在这里插入图片描述
在这里插入图片描述

📕visionOS 渲染框架

两种渲染方式。

RealityKit:一般用于渲染 Shared Space 和 Full Space 下的 Passthrough 模式【现实环境+虚拟内容】

CompositorServices:使用底层的 Metal 图形 API 和 ARKit 相关的环境感知等能力,来做渲染的合成。其他引擎的渲染能够基于这套 API 将自己渲染的内容适配到 visionOS 上,因此在渲染时能保留自己的渲染管线。
visionOS 1.0 时期一般用于渲染 Full Space下 的 Fully Immersive 模式(VR)。其他的游戏引擎开发 visionOS 的 VR 应用就是使用这种渲染方式。

visionOS 2.0 时期也支持 Full Space 下的 Passthrough 模式。

Full Space 下的渲染框架图:

在这里插入图片描述


📕Unity 开发 visionOS 应用的不同模式

窗口模式

Unity 里渲染的画面会显示在空间中的一个平面窗口中,使用 Metal 渲染。无需使用 Unity Pro 许可证和 XR 开发工具包,只需适配眼手交互的输入。

在这里插入图片描述

⭐VR 模式

显示完全虚拟的环境。渲染由 Unity 引擎完成,底层适配了苹果的 CompositorSevices,使用 Metal 渲染。使用 XR 开发工具包进行开发,和传统的 VR 开发方式类似。

在这里插入图片描述

⭐MR 模式

现实环境中添加虚拟内容。分为 Shared 模式(对应 Shared Space)和 Exclusive 模式(对应 Full Space)。使用 PolySpatial 工具包进行开发,Unity 不负责渲染,而是把渲染相关的东西转换成 RealityKit 能够理解的东西,最终交给 Realitykit 处理渲染。在 Unity 支持了 visionOS 2.0 之后开发 Full Space 下的 MR 应用也能使用 Metal 渲染,能使用 Unity 自己的渲染管线。

在这里插入图片描述


📕总结

在这里插入图片描述

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

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

相关文章

基于matlab的高斯滤波与图像去噪

1 高斯滤波原理 1.1 原理 高斯滤波是一种线性平滑滤波技术,主要用于消除图像中的高斯噪声。它的工作原理可以理解为对整幅图像进行加权平均的过程,即每个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到。 高斯滤波实质上是一种信号的滤…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-25使用块的网络VGG

25使用块的网络VGG import torch from torch import nn import liliPytorch as lp import matplotlib.pyplot as plt# 定义VGG块 # num_convs: 卷积层的数量 # in_channels: 输入通道的数量 # out_channels: 输出通道的数量 def vgg_block(num_convs, in_channels, out_channel…

VS Code Arduino编程

①Arduino Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。 ②VS Code(全称 Visual Studio Code) 是由微软开发的一款开源、轻量级的跨平台现代代码编辑器…

昇思25天学习打卡营第4天|数据变换Transforms

学习内容复盘 1.1 数据变换 什么是数据变换、为何要数据变换 通常情况下,直接加载的原始数据并不能直接送入神经网络进行训练,此时我们需要对其进行数据预处理。MindSpore提供不同种类的数据变换(Transforms),配合数…

Jenkins定时构建自动化(二):Jenkins的定时构建

目录 ​编辑 一、 jenkins定时构建语法: 1. 语法规则: 2. 常见用法举例 3. 再次举例 接上一篇:Jenkins定时构建自动化(一):Jenkins下载安装配置:Jenkins定时构建自动化(一):Jenkins下载安装配置-CSDN博客 …

32 - 判断三角形(高频 SQL 50 题基础版)

32 - 判断三角形 select *,if(xy>z and xz>y and zy > x,Yes,No) triangle fromTriangle;

[GXYCTF2019]禁止套娃1

buu打开题目进去看到,只有一行字 只有一行字的话,那么没有可用的信息,那么可以去查看一下源码或者是看一下network里是不是有一些提示,发现都没有,那就利用dirsearch去扫描一下目录 python dirsearch.py -u http://f87…

华为海思CPU解读

安全可靠CPU测评结果(华为海思篇) 中国信息安全测评中心于2024年5月20日发布安全可靠测评结果公告(2024年第1号),公布依据《安全可靠测评工作指南(试行)》的测评结果,自发布起有效期…

昇思25天学习打卡营第4天 | 数据变换

内容介绍:通常情况下,直接加载的原始数据并不能直接送入神经网络进行训练,此时我们需要对其进行数据预处理。MindSpore提供不同种类的数据变换(Transforms),配合数据处理Pipeline来实现数据预处理。所有的T…

免杀笔记 ---> C语言

这次的更新可能有点慢,因为这段时间也比较忙,加上C语言还得和汇编结合,导致小编一个知识点总是得反复揣摩(太菜了),所以免杀的更新篇幅长度可能会达到两个月和三个月,但是小编能保证&#xff0c…

RabbitMQ高频面试题整理

文章目录 1、RabbitMQ如何保证消息不丢失1)confirm 消息确认机制 (生产者)2)消息持久化机制 (RabbitMQ 服务)3)ACK 事务机制(消费者) 2、RabbitMQ 中有哪几种交换机类型?1) Direct Exchange2)Fanout Exchange3&#x…

Netty 入门实例

文章目录 1. 概述2. 代码实例2.1 服务端2.2 客户端2.3 运行截图 3. 整体结构4. 重要组件4.1 EventLoopGroup、EventLoop4.2 Handler & Pipeline4.3 ByteBuf 参考文献 1. 概述 Netty 是一款用于高效开发网络应用的 NIO 网络框架,它大大简化了网络应用的开发过程…

【物联网】室内定位技术及定位方式简介

目录 一、概述 二、常用的室内定位技术 2.1 WIFI技术 2.2 UWB超宽带 2.3 蓝牙BLE 2.4 ZigBee技术 2.5 RFID技术 三、常用的室内定位方式 3.1 信号到达时间 3.2 信号到达时间差 3.3 信号到达角 3.4 接收信号强度 一、概述 GPS是目前应用最广泛的定位技术&#xff0…

流行的app抓包工具详解和案例--开发人员首选

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

游戏大厂“脱钩”安卓商店: 独立渠道TapTap们能否渔利

一纸公告将游戏厂商与渠道的博弈再度摆上了台面。 近日,腾讯控股旗下手游《地下城与勇士:起源》(下称“DNF手游”)运营团队发布公告称,自6月20日起,DNF手游将不再上架部分安卓平台的头部应用商店。 下架的…

Unity踩坑记录

1. 如果同时在父物体和子物体上挂载BoxCollider&#xff0c;那么当使用&#xff1a; private void OnTriggerEnter2D(Collider2D collision){if (collision.CompareTag("CardGroup")){_intersectCardGroups.Add(collision.GetComponent<CardGroup>());}} 来判…

WebStorm 环境配置带@符号的相对路径穿透

在使用WebStorm 环境开发web页面项目时有时想快速查看页面的引用代码&#xff0c;只能手工找到引入文件路径&#xff0c;这很不方便&#xff0c;只需通过配置webStorm单击打开。 1 使用符号相对路径&#xff0c;在默认情况下没有配置环境是无法打开&#xff0c;如下图&#xf…

docker内apt-get update Waiting for headers 0%

问题描述 docker运行debian等容器时&#xff0c;执行apt update或者apt-get update&#xff0c;可能会出现以下错误&#xff1a;root754a91d3630a:/# apt-get update 0% [Waiting for headers] [Waiting for headers] [Connected to developer.download.nvidia.com (152.199.3…

yolov8环境搭建+训练自己数据集

一、yolov8环境搭建 1. 安装miniconda环境 地址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda 选择Python3.8版本 最好安装在C盘 勾选自动添加环境变量 ***以下操作安装过程中关闭代理软件 *** 2. 创建虚拟环境 conda create -n yolov8 python3…

Axios-入门

介绍 Axios对原生Ajax进行了封装&#xff0c;简化书写&#xff0c;快速开发 官网&#xff1a;Axios中文文档 | Axios中文网 (axios-http.cn) 入门 1引入Axios的js文件 <script src"js/axios.js"></script> 2使用Axios发送请求&#xff0c;并获取响应…