4.参考文档
4.1 支持的功能和组件
4.1.1 支持的 Unity 功能和组件
大多数 Unity 组件无需修改即可在此平台上运行 - 包括大多数自定义 MonoBehaviours、动画逻辑、物理、输入处理、资产管理、AI 等。然而,需要渲染的组件需要特殊的支持。因此,一些组件在此平台上提供的功能集有所减少;其他目前不支持。下表总结了该平台上各种渲染组件支持的当前状态。
有关转换旧项目的更多信息,另请参阅将 Unity 项目移植到 PolySpatial XR
4.1.2 Unity 仿真组件/系统
在此页面中不可能列出 Unity 公开的所有系统和软件包,但下表列出了对一系列 Unity 核心功能的支持状态:
| 成分 | 地位 | 
| 转换 | 支持的 | 
| 声音的 | 不支持空间音频 | 
| 网状过滤器 | 支持的 | 
| 动画/动画师 | 支持的 | 
| 二维物理 | 支持的 | 
| 3D 物理 | 支持的 | 
| 脚本 | 支持的 | 
| 人工智能和导航网格 | 支持的 | 
| 地形 | 实验支持 | 
MonoBehaviours预计可以工作,但它们将取决于具体情况,具体取决于您的脚本与哪些其他组件交互。
4.1.3 渲染组件/系统
| 成分 | 地位 | 
| 网格渲染器 | 不支持“Lighting”(阴影、GI) 不支持“Probes” 立即模式下不支持此组件 不支持“Additional Settings”(动态遮挡、渲染层) | 
| 蒙皮网格渲染器 | 仅未优化的动画(如果模型导入检查器的“装备”选项卡上的“优化游戏对象”选项出现,则必须将其勾选。) | 
| 粒子系统 | 部分支持;看粒子系统以下 | 
| 光 | 不支持 | 
| 相机 | 不支持 | 
| 光环 | 不支持 | 
| 镜头光晕 | 不支持 | 
| 线条渲染 | 不支持 | 
| 投影仪 | 不支持 | 
| 轨迹渲染器 | 不支持 | 
| 视觉效果 | 不支持 | 
| 镜头光晕 | 不支持 | 
| 细节层次 (LoD) | 不支持 | 
| 遮挡区域 | 不支持 | 
| 闭塞门户 | 不支持 | 
| 天空盒 | 不支持 | 
| URP 贴花投影仪 | 不支持 | 
| 瓷砖地图渲染器 | 不支持 | 
| 视频播放器 | 支持有限 | 
| 图形光线投射器 | 不支持 | 
| Shaderlab 着色器 | 不支持 | 
| 后处理器 | 不支持 | 
| 光照贴图 | 需要手动支持 | 
| 烘焙照明 | 不支持 | 
| 开导 | 不支持 | 
| 光探头 | 需要手动支持 | 
| 反射探头 | 不支持 | 
| 树木 | 不支持 | 
| 多雾路段 | 不支持 | 
其中一些功能由于平台限制而不受支持(例如,全屏图形后处理器与共享渲染系统的想法不兼容),而其他功能则属于正在进行或计划开发的领域。
4.1.4 粒子系统
PolySpatial XR 中对粒子的支持是一项正在进行的工作。下表显示了 Unity粒子系统当前支持的特定模块和设置的支持状态:
| 模块 | 地位 | 
| 排放 | 部分支持 | 
| 形状 | 部分支持 | 
| 生命周期内的速度 | 部分支持 | 
| 生命周期内的极限速度 | 部分支持 | 
| 继承速度 | 部分支持 | 
| 整个生命周期内的力 | 部分支持 | 
| 整个生命周期的颜色 | 部分支持 | 
| 按速度着色 | 不支持 | 
| 使用寿命期间的尺寸 | 部分支持 | 
| 尺寸按速度 | 不支持 | 
| 整个生命周期内的轮换 | 部分支持 | 
| 按速度旋转 | 不支持 | 
| 外力 | 不支持 | 
| 噪音 | 部分支持 | 
| 碰撞 | 部分支持 | 
| 触发器 | 不支持 | 
| 子发射器 | 部分支持 | 
| 纹理片动画 | 部分支持 | 
| 灯 | 不支持 | 
| 步道 | 不支持 | 
| 自定义数据 | 不支持 | 
| 渲染器 | 部分支持 | 
4.1.4 用户界面(UI)
Unity UI在世界空间中工作,但屏幕空间 UI 和高级视觉功能(如遮罩、阴影等)当前无法工作。下表总结了其他 UI 功能的支持状态:
| 成分 | 地位 | 
| 文本网格 | 支持的 | 
| 画布渲染器 | 部分支持 | 
| 精灵渲染器 | 支持的 | 
| 文本网格专业版 | • 部分支持 | 
| 矩形变换 | 没有对尺寸的具体支持 | 
4.1.5 最后的想法
Unity 有更多组件,但本节涵盖了普通 XR 应用程序的主要部分。一般来说,您现有的 Unity 项目可能需要移植到 PolySpatial XR。
您将需要通过编写自己的 PolySpatial XR 兼容系统或找到这些限制的解决方法来实验、研究和适应 PolySpatial XR 要求和约束,以支持您现有的功能。
4.2 PolySpatial资产支持
1.网格
RealityKit 提供了一组有限的预定义顶点格式。网格可以提供位置、法线、切线、颜色、混合权重和混合索引。Unity 将为 RealityKit 提供最多 8 个纹理坐标,但请注意,在其 MaterialX 实现中只有前两个 UV 通道可用,从而限制了额外几何数据的实用性。
由于Unity和RealityKit使用不同的坐标系,因此在系统之间传递时,一些顶点属性会被修改。针对位置、法线和切线执行惯用手交换。所有 UV 通道的 UV 都会翻转。
2.材质
有关 VisionOS 上材质和着色器支持的详细信息,请参阅PolySpatial 材质支持。
Unity ShaderGraphs
请参阅Shader Graph 支持,了解有关如何将通过 Unity ShaderGraph 定义的自定义着色器转换为 MaterialX 以与 RealityKit 互操作的详细信息。
3.纹理
Unity 在 VisionOS 上提供对 2D 纹理的支持,并利用本机纹理压缩选项。
VisionOS 的 RealityKit 不支持 3D 纹理或立方体贴图,因此用户必须根据 2D 纹理重新实现这些纹理资源。
4.渲染纹理
Unity 会将渲染目标实时复制到 RealityKit,但目前只能按速度进行有限数量的提交。引入额外的渲染目标可能会与 Unity 自己的图形缓冲区提交相冲突,从而影响整体性能。
另请注意,修改 RenderTextures 后必须手动将其标记为脏;目前,不会自动发生此类脏污,并且如果纹理未脏污,则不会将其复制到 RealityKit。
5.字体
VisionOS 支持光栅化字体和 SDF 字体,但我们强烈建议使用 SDF 字体,以确保所有观看距离下的清晰度。
4.3 材质
每个管道的几个重要标准着色器已映射到最接近的可用 RealityKit 模拟。目前的支持包括:
- 标准 URP 着色器:Lit、Simple Lit、Unlit(+TBD - 更多即将推出)
- 标准内置着色器:标准,(+待定 - 更多即将推出)
4.3.1 自定义着色器
可以通过 Unity ShaderGraph 为 VisionOS 创作着色器和材质。在幕后,这些着色器图被转换为 MaterialX。虽然 MaterialX 非常具有表现力,但某些 ShaderGraph 节点在 MaterialX 中没有类似物。在 ShaderGraph 编辑器中,不支持的节点将通过符号来指示#,但另请参阅ShaderGraph 支持。支持点亮和未点亮根节点。
ShaderLab、Metal 和其他基于代码的着色器不可用,因为 VisionOS 的 RealityKit 目前不公开低级着色语言。
4.3.2 无光照材质
4.3.2.1 通用渲染管线/无光照
对于 URP 未光照材质,PolySpatial 支持Base Map颜色和纹理属性以及 和Opaque(Transparent使用混合模式Alpha)曲面类型。 Alpha Clipping可能已启用;如果Threshold大于零,则不会执行混合(仅进行 alpha 测试)。
4.3.2.2 无光照/彩色
对于内置渲染器管道未点亮的颜色材质,Main Color支持该属性。
4.3.2.3 无光照/纹理
对于内置渲染器管线未点亮的纹理材质,Base (RGB)支持该纹理。
4.3.2.4 无光照/透明
对于内置渲染器管道未点亮的透明材质,Base (RGBA)支持纹理。
4.3.3 光照材质
4.3.3.1 通用渲染管线/光照
对于 URP 光照材质,颜色和纹理受到尊重,选项和属性Base Map也是如此。Render FaceSurface Inputs TilingOffset
在Specular工作流程中并Specular Highlights启用时,PolySpatial 支持Specular Map关联颜色的纹理或(灰度)强度。在Metallic工作流程中,PolySpatial 支持Metallic Map纹理或强度并遵循Specular Highlights切换。
对于这两个工作流程,Smoothness都会考虑强度,但Metallic Alpha不支持纹理通道(例如,来自 )的平滑度。 Normal Map支持 [^1],但不支持正常比例。同样,Occlusion Map支持,但不支持遮挡强度。 可以指定Emission颜色或纹理;如果两者都给定,则颜色会降低为灰度并充当乘数。
支持 和 (使用混合模式)曲面Opaque类型Transparent。Alpha在Transparent模式下,该Preserve Specular标志受到尊重。 Alpha Clipping可能已启用;如果Threshold大于零,则不会执行混合(仅进行 alpha 测试)。
4.3.3.2 通用渲染管线/简单光照
对于 URP 简单光照材质,支持的选项与光照材质相同,只是没有Metallic属性且没有Occlusion Map。
4.3.3.3 通用渲染管线/复杂光照
对于 URP 复杂光照材质,支持的选项与光照材质相同,只是添加了选项Clear Coat及其Mask属性Smoothness。
4.3.3.4 标准材质
内置标准光照材质的支持方式与Metallic工作流程中 URP 光照材质的支持方式大致相同。纹理Albedo和颜色同样受到尊重,Metallic贴图或强度和Smoothness强度(但不包括平滑度Source)也是如此。 支持Normal Map[^1] 和(但不支持其相应的强度),颜色或纹理、和以及标志也是如此。支持所有渲染模式:、、和。OcclusionEmissionMain Maps TilingOffsetSpecular HighlightsOpaqueTransparentFadeCutout
4.3.3.5 标准材质(镜面设置)
内置光照镜面材质的支持方式与Specular工作流程中 URP 光照材质的支持方式相同。纹理Albedo和颜色也受到类似的尊重,Specular地图或(灰度)强度和Smoothness强度(但不是平滑度Source)也是如此。 支持Normal Map[^1] 和(但不支持其相应的强度),颜色或纹理、和以及标志也是如此。支持所有渲染模式:、、和。OcclusionEmissionMain Maps TilingOffsetSpecular HighlightsOpaqueTransparentFadeCutout
[^1]:目前,非着色器图形材质中使用的法线贴图必须作为纹理Default类型(即,而不是类型Normal map)导入,并且sRGB (Color Texture)未选中该选项。
4.3.4 特殊用途材质
4.3.4.1 TextMeshPro/距离场
4.3.4.2 TextMeshPro/Mobile/距离场
TMP 距离场材质将转换为仅遵循Face Color和Face Texture属性的着色器图形材质。
4.3.4.3 用户界面/默认
UI 默认材质将转换为尊重色调和纹理属性的无光照材质。
4.3.4.4 通用渲染管线/粒子/无光照
URP 未光照粒子材质将转换为尊重Base Map纹理和颜色的未光照材质以及Surface Type.
4.3.4.5 AR/基本遮挡
4.3.4.6 AR/遮挡
遮挡材质转换为基本等效材质。
4.3.5 着色器图形材质
着色器图可以使用内置或 URP 目标以及 Unlit 或 Lit 材质。支持所有输出块。有关着色器图支持的更多信息,请参阅着色器图转换说明。
4.4 ShaderGraph支持
您可以使用 Unity ShaderGraph 为visionOS 创建自定义材质。这些将在 Unity 中以其编译形式进行预览,但会转换为 MaterialX 以在模拟器和设备上显示。虽然 MaterialX 非常具有表现力,但某些 ShaderGraph 节点在 MaterialX 中没有类似物。在 ShaderGraph 编辑器中,不支持的节点将通过#符号的存在来指示。
出于技术、安全和隐私原因,visionOS 不允许在使用 AR 直通时运行基于 Metal 的着色器或其他低级着色语言。
4.4.1 VisionOS 中的 Shader Graph 限制
下表显示了VisionOS 的 PolySpatial 中Shader Graph 节点的当前支持状态,包括支持的节点列表及其各种注意事项。
如果此处未出现节点,则表示当前不支持该节点。请注意,随着我们继续添加对更多节点的支持,此列表将会更新。
4.4.2 美术
| 部分 | 节点 | 笔记 | 
| 调整 | 对比 | 颜色可能不一致。 | 
| 色调 | 颜色可能不一致。 | |
| 饱和 | 颜色可能不一致。 | |
| 混合 | 混合 | 支持差值、减法、加深、减淡、线性减淡、叠加、滤色、覆盖、求反、乘法 | 
| 筛选 | 抖动 | - 需要模拟屏幕空间位置。 | 
| 普通的 | 正常混合 | ✓ 支持 | 
| 从高度看正常 | ✓ 支持 | |
| 正常重建 Z | ✓ 支持 | |
| 正常强度 | ✓ 支持 | |
| 正常拆包 | ✓ 支持 | |
| 公用事业 | 色彩空间转换 | 不一致 - 未实现线性转换。 | 
4.4.3 通道
| 部分 | 节点 | 笔记 | 
| 渠道 | 结合 | ✓ 支持 | 
| 分裂 | ✓ 支持 | |
| 调配 | ✓ 支持 | 
4.4.4 输入
Custom Interpolators仅限于此特定/名称类型:
- Color:矢量4
- UV0:矢量2
- UV1:矢量2
- UserAttribute:矢量4
| 部分 | 节点 | 笔记 | 
| 基本的 | 布尔值 | ✓ 支持 | 
| 颜色 | ✓ 支持 | |
| 持续的 | ✓ 支持 | |
| 整数 | ✓ 支持 | |
| 滑块 | ✓ 支持 | |
| 时间 | ✓ 支持 | |
| 漂浮 | ✓ 支持 | |
| 向量2 | ✓ 支持 | |
| 矢量3 | ✓ 支持 | |
| 矢量4 | ✓ 支持 | |
| 几何学 | 双切向量 | 切线和视图空间选项不是标准的。 | 
| 法向量 | 切线和视图空间选项不是标准的。 | |
| 位置 | 切线和视图空间选项不是标准的。 | |
| 屏幕位置 | ✓ 支持 | |
| 切向量 | 切线和视图空间选项不是标准的。 | |
| 紫外线 | ✓ 支持 | |
| 顶点颜色 | ✓ 支持 | |
| 顶点ID | ✓ 支持 | |
| 坡度 | 坡度 | ✓ 支持 | 
| 样本梯度 | ✓ 支持 | |
| 灯光 | 主光方向 | ✓ 支持 | 
| 矩阵 | 不起作用(由于常量矩阵节点定义中的错误) | |
| 不起作用(由于常量矩阵节点定义中的错误) | ||
| 矩阵构建 | ✓ 支持 | |
| 变换矩阵 | 切线和视图空间选项不是标准的。 | |
| 场景 | 相机 | 
 | 
| 目的 | ✓ 支持 | |
| 场景深度 | 平台不允许访问深度缓冲区,这只是剪辑或视图空间中的相机距离。 | |
| 屏幕 | ✓ 支持 | |
| 质地 | 2D 纹理示例 | ✓ 支持 | 
| 示例纹理 2D LOD | ✓ 支持 | |
| 采样器状态 | 
 | |
| 纹理 2D 资源 | ✓ 支持 | |
| 纹理尺寸 | ✓ 支持 | 
4.4.5 数学
| 部分 | 节点 | 笔记 | 
| 先进的 | 绝对 | ✓ 支持 | 
| 指数 | ✓ 支持 | |
| 长度 | ✓ 支持 | |
| 日志 | ✓ 支持 | |
| 模块 | ✓ 支持 | |
| 否定 | ✓ 支持 | |
| 标准化 | ✓ 支持 | |
| 基本的 | 添加 | ✓ 支持 | 
| 划分 | ✓ 支持 | |
| 乘 | ✓ 支持 | |
| 力量 | ✓ 支持 | |
| 平方根 | ✓ 支持 | |
| 减去 | ✓ 支持 | |
| 插值法 | 逆向线性化 | ✓ 支持 | 
| 莱普 | ✓ 支持 | |
| 平滑步 | ✓ 支持 | |
| 矩阵 | 矩阵行列式 | 如果使用 Matrix2,将标记为不受支持。 | 
| 矩阵转置 | 如果使用 Matrix2,将标记为不受支持。 | |
| 范围 | 夹钳 | ✓ 支持 | 
| 分数 | ✓ 支持 | |
| 最大限度 | ✓ 支持 | |
| 最低限度 | ✓ 支持 | |
| 一减 | ✓ 支持 | |
| 随机范围 | ✓ 支持 | |
| 重新映射 | ✓ 支持 | |
| 饱和 | ✓ 支持 | |
| 圆形的 | 天花板 | ✓ 支持 | 
| 地面 | ✓ 支持 | |
| 圆形的 | ✓ 支持 | |
| 符号 | ✓ 支持 | |
| 步 | ✓ 支持 | |
| 三角学 | 反余弦 | ✓ 支持 | 
| 反正弦 | ✓ 支持 | |
| 反正切 | ✓ 支持 | |
| 反正切2 | ✓ 支持 | |
| 余弦 | ✓ 支持 | |
| 他的 | ✓ 支持 | |
| 切线 | ✓ 支持 | |
| 向量 | 叉积 | ✓ 支持 | 
| 距离 | ✓ 支持 | |
| 点积 | ✓ 支持 | |
| 菲涅耳效应 | ✓ 支持 | |
| 反射 | ✓ 支持 | |
| 绕轴旋转 | ✓ 支持 | |
| 转换 | 有些空间是模拟的,未在测试中涵盖。 | |
| 海浪 | 三角波 | ✓ 支持 | 
4.4.6 程序
| 部分 | 节点 | 笔记 | 
| 噪音 | 梯度噪声 | - 无法确定目标平台噪声函数的行为是否相同。 | 
| 沃罗诺伊 | - 无法确定目标平台噪声函数的行为是否相同。 | |
| 形状 | 椭圆 | ✓ 支持 | 
4.4.7 Utility
| 部分 | 节点 | 笔记 | 
| Utility | 预览 | ✓ 支持 | 
| 分体式左轮 | 特定于 PolySpatial 的非标准着色器图形节点。实现 splitlr 函数,如中所述材质X规格. | |
| 逻辑 | 分支 | ✓ 支持 | 
| 比较 | ✓ 支持 | |
| 或者 | ✓ 支持 | 
4.4.8 UV
| 部分 | 节点 | 笔记 | 
| 紫外线 | 翻页书 | ✓ 支持 | 
| 旋转 | 仅支持度数。 | |
| 平铺和偏移 | ✓ 支持 | |
| 三平面 | ✓ 支持 | 
4.5 输入
在 VisionOS 上有两种捕获用户意图的方法:3D 触摸和骨骼手跟踪。在独占模式下,开发人员还可以访问头部跟踪数据。
4.5.1 3D Touch 和 TouchSpace
在有界和无界体积中,当用户使用输入碰撞器查看对象并执行“捏”(拇指和食指一起触摸以“点击”或“拖动”)手势时,就会提供3D触摸输入。PolySpatialTouchSpace输入设备向开发人员提供该信息。如果用户按住捏合手势,则会启动拖动,并向应用程序提供相对于原始起点的“移动”更新。如果对象在触手可及的范围内(无需特定注视),用户还可以直接在对象上执行捏合手势。
3D触摸事件通过PolySpatialTouchSpace 输入设备公开,该设备构建在封装之上com.unity.inputsystem,也称为新输入系统。绑定到触摸屏设备的现有操作应该适用于 2D 输入。对于 3D 输入,用户可以将操作绑定到特定的PolySpatialTouchSpace设备以获得 3D 位置向量。
任何可以接收 3D 触摸事件的对象都需要将碰撞遮罩设置为 PolySpatial 输入层的碰撞器。仅报告对这些事件的接触。目前,平台不会在点击手势开始时提供凝视光线。
4.5.2 骨骼手追踪
骨骼手部跟踪由XR Hands 包中的手部子系统提供。使用场景中的手部可视化器组件,用户可以显示玩家手部的蒙皮网格或每关节几何体,以及基于手部物理交互的物理对象。用户可以直接针对手子系统编写 C# 脚本来推断骨骼之间的距离和关节角度。Hand Visualizer组件的代码可在XR Hands Package中找到,并且可以作为利用Hand Subsystem 的代码的良好起点。
4.5.3 头部追踪
ARKit 通过VisionOS Package提供头部跟踪。这可以使用移动 AR 的创建菜单在场景中进行设置:创建 > XR > XR Origin (Mobile AR)。位姿数据来自devicePosition [HandheldARInputDevice]和deviceRotation [HandheldARInputDevice]的新输入系统。
4.6 自定义 PolySpatial 组件
4.6.1 体积相机
PolySpatial 提供了一个名为 的新 Unity 组件,用于Volume Camera与visionOS 环境提供的模式和体积进行交互。体积相机与常规 Unity 相机类似,因为它们指示用户应该看到哪些内容,但不同之处在于它们捕获 3D 内容而不是 2D 图像。
将 VolumeCamera 组件添加到场景中的对象,以指定向用户呈现的内容以及内容的呈现方式。保存 VolumeCamera 的 GameObject 的变换(例如比例)会影响向用户显示的体积大小。VolumeCamera 的编辑器内预览范围可以帮助可视化应渲染的内容。
通常,然后通过相应的“体积渲染器”将该规范体积映射到主机体积渲染器自己的不同OBB,将该内容显示在主机平台上。效果是体积相机边界内的 3D 内容被变换、旋转、拉伸和/或挤压以填充体积渲染器的边界。
当Mode设置为 时Unbounded,一切都与典型的 Unity 相机类似,只是体积相机和体积渲染器各自定义了无界 3 空间而不是有界
VolumeCamera组件公开以下属性:
| 财产 | 描述 | 
| 模式 | 指定音量的模式。 | 
| 有界 | 体积相机具有由其尺寸定义的有限边界。任意数量的体积相机都可以处于“有界”模式。 | 
| 无界 | 体积相机捕获所有内容,无论位置如何,并且尺寸字段被禁用和忽略。对于给定应用程序,在给定时间只能有一台卷相机处于无界模式。将体积相机的模式设置为无界相当于请求您的应用程序切换到“独占”模式。 | 
| 方面 | 定义相机边界框的(未缩放)大小,该边界框以 VolumeCamera变换的位置为中心。世界空间维度是通过维度和变换比例的元素相乘来计算的。 | 
| 剔除掩码 | 定义 Unity 图层的位掩码。体积相机只会显示属于指定图层的对象。对于典型的 Unity 相机和 CullingMask 工作流程,这可用于指定每个单独的体积相机可见的对象。例如,库存体积相机可用于通过定义“库存”图层来渲染一个体积内的 3D 库存,而“小地图”图层可用于渲染第二体积内整个场景的鸟瞰图。 | 
4.6.2 PolySpatial视频组件
为了支持 VisionOS 上的视频内容,PolySpatial 目前包含一个自定义的PolySpatialVideoComponent. 我们预计最终会支持股票视visionOS提供关键视频功能。要使用它,请将 设置Target Material Renderer为频组件,但该组件在此期间为GameObject要MeshRenderer显示视频的资源,并设置Clip为指向要播放的视频资源,例如.mp4
当前系统的一个限制是,必须手动将剪辑复制到../StreamingAssets/PolySpatialVideoClips/文件夹中才能在 VisionOS 上实现完整功能。如果该文件夹不存在,则创建该文件夹。确保剪辑不仅移入此文件夹,而且复制到其中,以便有它的两个实例。
该PolySpatialVideoComponent组件公开以下属性:
| 财产 | 描述 | 
| 目标材质渲染器 | 引用应在其上渲染视频的 MeshRenderer。视频将覆盖该 MeshRenderer 上的当前材质。 | 
| 夹子 | 要播放的视频资源。 | 
| 正在循环 | 当播放到达剪辑末尾时视频是否应重复。 | 
| 醒着玩 | 视频是否应在 | 
| 沉默的 | 当 true 时,音频播放被抑制;如果为 false,则遵循体积值。 | 
| 体积 | 剪辑的当前音频播放音量,范围在 0 到 1 之间。 | 
4.6.3 PolySpatial悬停效果
向平台提供提示,以在用户将鼠标悬停在此对象上时应用系统悬停效果。这通常用于向用户提供该对象是交互式的视觉提示。这种效果可以通过凝视或用手戳来触发。该效果应用于正在悬停的对象,而不是正在悬停的对象。
出于隐私原因,visionOS 不允许应用程序直接访问用户的视线。然而,在视觉上突出显示用户正在注视的对象通常是有帮助的,以便暗示如果用户执行捏合手势,哪个对象将接收输入。为此,Unity PolySpatialPolySpatialHoverEffect为visionOS 提供了一个组件,可以将其添加到可能通过注视接收输入的游戏对象中。该组件的存在指示主机平台 (RealityKit) 在用户的凝视光线与其相应的碰撞体相交时向GameObject'应用着色效果。MeshRenderer
必须存在所有三个组件才能实现效果: 指示PolySpatialHoverEffect应GameObject显示悬停,Collider组件定义凝视光线投射的碰撞形状,提供MeshRenderer将应用着色效果的网格和几何体。
4.7 PolySpatial Tooling
4.7.1 日志
PolySpatial 日志记录消息按类别和级别进行标记,以便于更有针对性的调试。从 Unity 编辑器的主菜单中,选择“窗口”>“PolySpatial”>“日志记录”以打开“PolySpatial 日志记录”窗口。从这里,您可以切换启用哪些类别,是否应生成堆栈跟踪,以及对于启用堆栈跟踪的类别,哪些级别将生成跟踪。
4.7.2 多空间统计
首先,通过启用项目设置 > PolySpatial > 启用统计来启用 PolySpatial 统计跟踪。然后可以在 Unity Editor 主菜单中的Window > PolySpatial > PolySpatial Statistics下找到该编辑器。在播放模式下,此编辑器显示时间的直方图跟踪、跟踪的对象以及已复制到 PolySpatial 主机的资源。
4.7.3 调试链接
为了便于在播放模式下进行调试,PolySpatial 运行时添加了DebugPolySpatialGameObjectLinks组件,以将每个模拟游戏对象连接到Unity SceneGraph 中其相应的支持游戏对象。
4.7.4 资产查找器
在播放模式下,AssetFinder 会跟踪已复制到主机渲染器的所有资源。这对于追踪资产链接非常有用。该编辑器可以在 Unity Editor 主菜单中的PolySpatial > Asset Finder下找到。
4.7.5 录音与回放
要录制 PolySpatial 播放模式会话,请转至Windows > PolySpatial > 录制和播放。按Record进入播放模式并开始录音。正常进行交互并提供输入,然后退出播放模式以停止录制。新文件将添加到列表中;您可以通过选择该录音然后按Play按钮来重播该录音。新输入不会被处理,但原始录音中编码的输入将重播。
录音保存在Library/PolySpatialRecordings任何使用相同版本 PolySpatial 软件包的机器上,并且可以在任何机器上播放。除此之外,这些文件可以提交给 Unity 支持,使我们能够调试许多特定于项目的问题,而无需项目的完整 zip 文件。