- 前端
- 开发工具
【免费下载链接】dillinger
The last Markdown editor, ever.
本文基于 dillinger 仓库
.agent技能库中 VR/AR 开发技能文档 展开,它是一份面向 AI Agent 与开发者的沉浸式体验设计原则清单,覆盖平台选型、防晕动舒适性、帧预算性能、交互范式、空间尺度与反模式。读完本文,你将掌握 VR/AR 项目从平台决策到舒适性调优、从 90 FPS 帧预算到手势交互取舍的一整套可落地的检查清单,并能顺着仓库路径继续深入相关技能模块。
1. 技能定位:这份 VR/AR 指南在仓库中的角色
1.1 文档位置与元信息
该技能位于 .agent/skills/game-development/vr-ar/SKILL.md,是 dillinger 仓库内嵌的 AI Agent 能力扩展套件(.agent/ARCHITECTURE.md)中 40 个技能模块之一。文档开头以 YAML frontmatter 声明其元数据:
name: vr-ar description: VR/AR development principles. Comfort, interaction, performance requirements. allowed-tools: Read, Write, Edit, Glob, Grep其中allowed-tools表明该技能属于"知识型"模块,供 Agent 在编码时读取与套用,而非可执行程序;技能的加载遵循User Request → Skill Description Match → Load SKILL.md的协议(见 .agent/ARCHITECTURE.md 的 Skill Loading Protocol)。
1.2 在技能生态中的路由关系
游戏开发编排技能(game-development)是整个游戏领域的"路由器",它按下表将任务分发给平台子技能:
| 若游戏目标平台为… | 使用子技能 |
|---|---|
| Web 浏览器(HTML5、WebGL) | game-development/web-games |
| 移动端(iOS、Android) | game-development/mobile-games |
| PC(Steam、桌面) | game-development/pc-games |
| VR/AR 头显 | game-development/vr-ar |
该编排技能还给出了组合示例:"多人 VR 射击游戏"应依次参考vr-ar(舒适性与沉浸)、3d-games(渲染)与multiplayer(网络)三个子技能——这说明 VR/AR 技能往往需要与其他子技能协同使用,本文第 8 节会给出组合路径。
2. 平台选型:先决定"在哪里体验"
VR/AR 技能文档第 1 节给出两张平台对照表,核心逻辑是按使用场景选平台,而不是按热度选平台。
2.1 VR 平台
| 平台 | 适用场景 |
|---|---|
| Quest | 一体机、无线,移动自由度高 |
| PCVR | 高保真画面,适合重度图形需求 |
| PSVR | 主机市场,客厅主机玩家 |
| WebXR | 浏览器内体验,无需安装、跨设备 |
从使用场景看:若追求"戴上就玩、无束缚",选 Quest 系一体机;若项目对画面保真有硬指标(如高精度场景),选 PCVR;若面向主机玩家生态,选 PSVR;若希望零安装分发、借助链接即点即玩,则 WebXR。
2.2 AR 平台
| 平台 | 适用场景 |
|---|---|
| ARKit | iOS 设备 |
| ARCore | Android 设备 |
| WebXR | 浏览器 AR |
| HoloLens | 企业级场景 |
AR 平台的选型几乎由目标用户的操作系统决定:iOS 优先 ARKit,Android 优先 ARCore;若要绕开应用商店、跨端统一分发,可考虑 WebXR;企业级(如工业巡检、远程协作)场景则对应 HoloLens。
2.3 浏览器端 WebXR 的补充背景
仓库内的 Web 游戏技能 对浏览器端 XR 有更细的工程化说明:其框架选型决策树明确指出,"需要完整引擎(含物理、XR)"时选Babylon.js,"仅聚焦渲染"时选Three.js;同时给出 WebGPU 渐进采用策略——新项目使用 WebGPU 并保留 WebGL 回退,旧项目从 WebGL 起步,并用navigator.gpu做特性检测。这与上表中 WebXR 作为"零安装跨平台入口"的定位形成互补:平台能力边界内能做的,浏览器端技术栈同样需要紧跟。
3. 舒适性原则:防晕动是 VR 的第一生产力
VR/AR 技能文档第 2 节将"舒适性"单列为独立章节,并把晕动症(Motion Sickness)当作头号敌人处理。
3.1 晕动症成因与对策
| 成因 | 对策 |
|---|---|
| Locomotion(位移方式) | 瞬移(Teleport)、分段转向(Snap turn) |
| 低帧率(Low FPS) | 保持 90 FPS |
| 相机抖动(Camera shake) | 避免或最小化 |
| 快速加速(Rapid acceleration) | 渐进式移动 |
这里可以提炼出底层原理:晕动症的根源是视觉前庭冲突——玩家身体没动,眼睛却看到画面在动。因此对策都指向"让视觉位移与身体感知一致"或"用跳变代替连续运动":
- 瞬移:位置从 A 点直接跳到 B 点,中间不产生连续视觉位移,是消除晕动最彻底的手段;
- 分段转向:把 90° 转向拆成 3 次 30° 跳变,避免连续旋转造成的视场流动;
- 固定帧率:掉帧会带来画面卡顿与相机位置抖动,直接加剧不适,对应本文第 4 节的帧预算约束;
- 渐进加速:用缓动曲线代替线性加速,避免突兀的惯性变化。
3.2 舒适性设置清单
技能文档要求为玩家提供以下可选项(不能只做默认值,要给玩家自主权):
- 移动过程中的边缘暗角(Vignette),收窄视野以减少视觉流动;
- 分段转向 vs 平滑转向(Snap vs smooth turning)的切换开关;
- 坐姿 vs 站姿模式(Seated vs standing modes),适配不同游玩环境;
- 身高校准(Height calibration),保证虚拟世界中的身高与现实中一致,避免地板/视角错位。
3.3 一句话原则
文档结尾的提醒非常直接:"Comfort is not optional. Sick players don't play.(舒适不是可选项,晕了的玩家不会再来玩。)"——这句话应作为每次 VR 功能迭代前的自查口号。
4. 性能要求:帧预算决定体验生死
VR/AR 技能文档第 3 节给出关键性能基线,这也是与普通 3D 游戏差异最大的部分。
4.1 目标指标
| 平台 | FPS | 分辨率(单眼) |
|---|---|---|
| Quest 2 | 72-90 | 1832x1920 |
| Quest 3 | 90-120 | 2064x2208 |
| PCVR | 90 | 2160x2160+ |
| PSVR2 | 90-120 | 2000x2040 |
对比可发现两个要点:其一,头显刷新率区间就是硬指标,72/90/120 分别对应不同代际设备;其二,单眼分辨率普遍高于 1080p 且为双路渲染,即每一帧实际要渲染两倍像素,GPU 压力远超平面游戏。
4.2 帧预算的计算逻辑
文档给出了核心约束:
- VR 要求一致的帧时间(consistent frame times),而不是"平均帧率高";
- 单帧掉帧即可产生可见的抖动(judder),这是 VR 与平面游戏体验差异的根源——平面游戏掉帧只是"卡一下",VR 掉帧会引发头部运动与画面的错位感,直接导致眩晕;
- 90 FPS 对应 11.11ms 预算(1000ms ÷ 90)。
由技能文档的指标表可继续推导出其他档位的预算:72 FPS 约 13.89ms、120 FPS 约 8.33ms。这意味着在 Quest 2 上,若以 90Hz 运行,CPU+GPU 每帧总预算只有 11.11ms,且这个预算还必须"稳定",而不是偶发达标。
4.3 与仓库其他技能的联动
游戏开发总技能 给出了 60 FPS(16.67ms)下的子系统预算拆分示例(输入 1ms、物理 3ms、AI 2ms、游戏逻辑 4ms、渲染 5ms、缓冲 1.67ms),并给出优化优先级:算法(O(n²)→O(n log n))→ 批处理(减少 draw call)→ 对象池(避免 GC 尖峰)→ LOD(按距离降细节)→ 剔除(跳过不可见内容)。这套方法论可等比迁移到 VR 的 11.11ms 预算中——只不过余量被压缩得更紧。
3D 游戏技能 则补充了渲染层面的节流手段:视锥剔除(Frustum culling)不渲染视场外内容、遮挡剔除(Occlusion culling)不渲染被遮挡内容、LOD 按距离降三角形数量、批处理合并 draw call——这些正是把 VR 帧时间"锁死"在 11.11ms 内的常用技术组合。
5. 交互原则:控制器与手部追踪的取舍
VR/AR 技能文档第 4 节定义了交互范式选择,核心是"不同交互类型匹配不同任务"。
5.1 控制器交互类型
| 类型 | 用途 |
|---|---|
| Point + click(指向+点击) | UI 操作、远处物体 |
| Grab(抓取) | 物体操控 |
| Gesture(手势) | 施法、特殊动作 |
| Physical(物理交互) | 投掷、挥动 |
要点:UI 与远处交互优先用"激光指向+点击",因为它精确且不易误触;物体操控用"抓取"符合直觉;特殊动作(如魔法)用"手势"强化仪式感;投掷、挥砍等则交给物理模拟,让手感来自真实物理而非脚本。
5.2 手部追踪(Hand Tracking)
文档给出的结论是"更沉浸但更不精确(More immersive but less precise)":
- 适合:社交、休闲类玩法(玩家不需要高精度操作,手部自由带来亲近感);
- 挑战:动作、高精度类玩法(需要精确瞄准、快速操作的场景,裸手追踪的延迟与抖动会成为瓶颈)。
结合第 4 节的帧预算思路,手部追踪通常还要叠加额外算力开销,因此技能文档隐含的取舍逻辑是:根据玩法对"精确度"的要求决定是否启用裸手交互,并保留控制器作为兜底方案。
5.3 输入抽象:跨平台统一行动
游戏开发总技能 的 Input Abstraction 原则(把原始按键抽象为jump、move这样的"行动"而非键值)与 VR 交互天然契合:同一个"抓取"行动,在 Quest 上映射为扳机键、在手部追踪上映射为捏合手势、在 WebXR 中映射为浏览器手柄事件——抽象层让多平台、可重绑定的控制成为可能。
6. 空间设计:以真实世界尺度构建虚拟空间
VR/AR 技能文档第 5 节强调空间设计的物理真实性。
6.1 世界尺度(World Scale)
- 1 个单位 = 1 米(critical,关键约束):引擎世界单位必须与真实米制对齐,这是 VR 与普通 3D 游戏最大的区别——普通 3D 游戏中"一把椅子 1.2 单位高"无所谓,VR 中玩家会直接看到比例失调的虚拟物体并感到不适;
- 物体尺寸必须"手感正确":门把手的高度、桌子的边缘、可抓取物的体积都要符合现实中的人体工程学;
- 用真实测量验证(Test with real measurements):在开发中用卷尺/标尺实测场景,或在编辑器内用等比例的虚拟标尺校对关键物体尺寸。
6.2 深度线索(Depth Cues)与优先级
| 线索 | 重要性 |
|---|---|
| Stereo(双目视差) | 主深度线索 |
| Motion parallax(运动视差) | 次级线索 |
| Shadows(阴影) | 接地感(Grounding) |
| Occlusion(遮挡) | 层次感(Layering) |
工程上的解读:双目视差(左右眼成像差异)是 VR 深度感知的主干,因此双眼渲染的畸变与 IPD(瞳距)设置必须正确;运动视差(转头时近远物体相对位移不同)是次级的、但成本极低——这正是"保持 90 FPS"的另一个理由:帧率不够会导致视差线索错乱;阴影让物体"贴地"(接地感),遮挡关系让物体"分层"(层次感),两者共同决定玩家对空间结构的判断。
7. 反模式清单:一票否决的坏实践
VR/AR 技能文档第 6 节以"❌ 不要 / ✅ 要做"对照表收尾,适合作为代码评审与测试清单:
| ❌ 不要 | ✅ 要做 |
|---|---|
| 未经玩家控制就移动相机 | 相机由玩家控制 |
| 帧率跌破 90 FPS | 守住帧率 |
| 使用极小的 UI 文字 | 使用大号、可读的文字 |
| 忽视手臂长度 | 按玩家可达范围缩放交互 |
逐条解释:
- **"未经玩家控制移动相机"**是 VR 大忌:任何头部/视角的被动位移都会触发晕动(对应第 3 节"相机抖动"成因);
- "跌破 90 FPS":与第 4 节帧预算直接挂钩,掉帧=可见抖动=眩晕;
- "极小 UI 文字":VR 中文本若按屏幕像素设计,会因头显距离与透视变得不可读,必须按"视场角内可辨识"的物理尺寸设计;
- "忽视手臂长度":可抓取物必须落在玩家真实臂展范围内,够不到或太贴脸的交互都是失败设计(呼应第 6 节的真实测量原则)。
8. 落地路径:在项目中如何套用这份技能
8.1 组合式加载
按技能库协议,Agent 依据任务描述匹配技能描述后加载 VR/AR 技能文档,再按需读取配套模块。针对 VR/AR 项目的典型组合路径(来自 游戏开发编排技能 的路由示例):
- "我要做一个浏览器端 2D 平台跳跃游戏"→
web-games(框架选型)→2d-games(精灵/瓦片地图)→game-design(关卡设计); - "我要做一个多人 VR 射击游戏"→
vr-ar(舒适性与沉浸)→3d-games(渲染)→multiplayer(网络)。
8.2 从原则到检查清单
将本文各节浓缩为一页可执行的验收清单:
- 平台:按使用场景(无线一体机/高保真/主机/浏览器)锁定平台与分辨率基线(第 2 节);
- 舒适性:位移用瞬移+分段转向;提供暗角、转向模式、坐/站姿、身高校准设置;杜绝被动相机运动(第 3 节);
- 性能:守住设备目标帧率(Quest 2 为 72-90、PCVR 为 90 等)对应的帧预算,用剔除/LOD/批处理锁定一致帧时间(第 4 节);
- 交互:按任务类型选 Point+click / Grab / Gesture / Physical;裸手追踪仅用于社交与休闲场景(第 5 节);
- 空间:1 单位=1 米,用真实测量校验物体尺寸,保证双目、视差、阴影、遮挡四类深度线索正常(第 6 节);
- 反模式:对照第 7 节表格做逐条排查。
结语
这份 VR/AR 技能文档 的价值不在于发明新概念,而在于把沉浸式开发中最容易踩坑的约束——平台与场景匹配、防晕动设计、帧预算、交互取舍、真实尺度——压缩成了一张可被 Agent 即时检索、可被开发者逐条对照的决策卡。配合 游戏开发编排技能、3D 游戏技能 与 Web 游戏技能 一起使用,即可从"能跑"走向"不晕、不卡、拿得稳"的合格沉浸式体验。记住文档的最后一句话:舒适不是可选项——晕了的玩家不会回来。
- 前端
- 开发工具
【免费下载链接】dillinger
The last Markdown editor, ever.
相关推荐
AG Kit 技能库:VR/AR 开发实战指南——从平台选型到舒适性、交互与性能的完整设计原则
AG Kit 技能库:VR/AR 开发实战指南——从平台选型到舒适性、交互与性能的完整设计原则 本文围绕 AG Kit 仓库中 .agents/skills/g
人工智能AI 技能Diffusion as Shader项目架构解析:从MoGe到VGGT的完整组件指南
Diffusion as Shader项目架构解析:从MoGe到VGGT的完整组件指南 Diffusion as Shader是一个革命性的3D感知视频扩散框架
tldr-pages AR/VR:沉浸式交互体验
tldr pages AR/VR:沉浸式交互体验 你还在为记不住命令行参数而烦恼吗?面对冗长的 man 手册(Manual Page,手动页面)是不是常常感到无
文档教程知识库
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考