虚拟现实技术 · 第 4 次课 · 案例 01

虚拟现实开发常用软件

第 4 章(软件为主 · 结合第 3 章硬件)· 软件生态与工具选型 · Unity XR 环境配置 · 导入模型与第一个脚本 · 模拟器 → 头显双轨验证

中华女子学院4 学时 · 180 分钟(理论 2 + 实验 2)授课人:孙琪翔2026-09-23 · 第 4 周数字媒体技术实验室

本讲导览

上次课回答“硬件能做什么”,这次课回答“用什么软件把它做出来”

这节课以第 4 章“虚拟现实开发常用软件”为骨架,把上一课(第 3 次课)讲过的硬件关键指标作为“软件设置的依据”贯穿全课。课堂产出不是“听懂”,而是一台机器上一个能跑起来的 VR 场景

本课产出 = 期末大作业的第 1 个案例(案例 01)。本学期采用“12 次课 = 8 个课堂案例”的模型:8 个案例从本课开始逐个积累,第 12 次课(12-02)整理成合集整体演示,期末大作业(40%)即该合集。

今天要走完的四步

① 核对版本与插件  →  ② 配置 XR  →  ③ 导入模型 + 写脚本  →  ④ 用 PICO 看一眼
    12 分钟              30 分钟         25 分钟                25 分钟

本讲学习目标(可观测)

目标内容怎么检验
T1说出 VR/AR 开发的四类工具(建模 / 引擎 / 资产 / 验证)各管什么,每类举 2 例提问 + 生态地图
T2解释本课程为何选 Unity 而非 Unreal;Blender 与 3ds Max 的定位差异投票 + 讨论
T3说明模型从建模软件到 VR 场景的五道关,指出三个常见错误管线页 + 测验
T4查到自己机位上的 Unity 版本号并记录任务卡填写
T5配置 XR 环境:XR Plugin + Interaction Toolkit + XR Origin + Device Simulator逐台巡视
T6导入一个模型并修正比例场景截图
T7写出并运行第一个 C# 脚本,让物体动起来课堂验收
T8说出上节课的硬件指标(PPD / 刷新率 / 定位方式)在 Unity 里对应哪个设置测验
T9完成案例 01 的验收验收清单

180 分钟时间轴

时段时长环节主要动作
0:00–0:088'开场本学期模型与今日产出:讲清“期末 = 8 个案例的合集”,今天的产出是第 1 个案例
0:08–0:2012'4.1 软件生态地图四类工具分工;资产模型的“轻重”直接决定设备能否跑满 90Hz
0:20–0:3111'4.2 建模与引擎选型Blender vs 3ds Max、Unity vs Unreal;引擎选择与“生成设备”的关系
0:31–0:4211'4.3 资产从哪来三条来路 + 导入五道关;面数过高 → 掉帧 → 眩晕
0:42–0:5311'4.4 编程入门与机房环境C# 最小认知(GameObject / Component / Start-Update);本机已装好什么、版本怎么查
0:53–1:0310'课间教师巡查机房:插件是否齐全、能否新建项目
1:03–1:1512'实验 A · 核对版本 + 认界面Help → About Unity 查版本号;Package Manager 查插件;认六个面板
1:15–1:4530'实验 B · XR 环境配置 ★XR Plugin Management → Interaction Toolkit → XR Origin → Device Simulator
1:45–2:1025'实验 C · 模型 + 第一个脚本 ★导入 FBX、修比例、写最小脚本让物体转起来
2:10–2:3525'双轨验证 ★8 组轮换戴 PICO 看“自己做的场景”,对比模拟器与真机差异
2:35–2:5015'收束案例 01 逐项验收、记录本机版本、预告下次课

模块地图

软件生态与工具选型

4.1 四类工具各管一段 · 4.2 建模与引擎怎么选

1.1 四类工具:一类工具只干一件事

类别它负责什么典型工具本课程会用到
建模造出物体的形状Blender、3ds Max、MayaBlender(看一眼界面 + 导出一个 FBX)
引擎把内容组织成可运行的应用Unity、Unreal EngineUnity 6(全程)
资产提供现成的模型、贴图、动画、音效Sketchfab、Poly Haven、Mixamo、AI 生成工具素材库 + AI 生成
验证检查“在真机上到底行不行”XR Device Simulator(PC 模拟)、头显真机模拟器为主 + 头显验证
“一类工具只干一件事”是本课的第一条原则:建模软件不做交互逻辑,引擎不做精细建模,资产库不负责优化。知道边界,才知道遇到问题该找哪一环。

1.2 建模软件:Blender 与 3ds Max

Blender(免费 · 开源)

免费、跨平台、更新快,建模/雕刻/渲染/动画一体;社区教程极多,适合个人开发与课程作业。本课程用它做“建模—导出 FBX”的最小闭环。

3ds Max / Maya(行业标准 · 商业授权)

在建筑可视化、影视与游戏公司中使用广泛,插件生态成熟、团队协作流程完善;代价是授权成本与学习曲线。

1.3 引擎:Unity 与 Unreal 怎么选

维度Unity 6(本课程选择)Unreal Engine
上手成本较低,C# 语法友好,教学资料多较高,C++ 与蓝图双轨
XR 支持OpenXR + XR Interaction Toolkit,跨 PICO / Quest / Vive内置 XR 框架,偏向高保真与主机级画面
画面保真够用,移动端一体机表现稳定更强,但更吃 GPU
一体机性能移动端优化路径成熟对头显算力要求更高
为什么本课程选 Unity:C# 上手快、XR Interaction Toolkit 提供现成交互组件、OpenXR 一次配置可跨品牌设备,且对移动端一体机(PICO 4 Ultra)的性能优化路径更成熟。Unreal 更强的是画面上限,但“画面更好”往往意味着更高的 GPU 开销——这正是上次课讲的生成设备的现实意义。
硬件接口 ①②:① 资产产出的模型有多“重”(面数、贴图),直接决定设备能不能跑满 90Hz;② 引擎越追求画面,越吃 GPU——生成设备(也就是“算力在哪”)不是抽象概念,它决定了你能选哪条技术路线。

资产从哪来:一个模型到 VR 的五道关

4.3 三条来路 + 五道关 + 三个最常翻车的坑

2.1 三条来路

素材库(最快)

Sketchfab 模型库、Poly Haven 贴图与 HDRI、Mixamo 角色动画。适合快速搭场景,注意授权与命名规范。

自己建(最可控)

用 Blender 从零建模,尺寸、拓扑、UV 自己说了算。代价是时间——课程里只在必要的小物件上使用。

AI 生成(最新)

Meshy、Hunyuan3D、TRELLIS 等文/图生 3D,适合快速原型。但要检查拓扑、UV、比例与版权,通常需要二次修整。

2.2 五道关:模型从建模软件到 VR 场景

① 建模  →  ② 减面  →  ③ 导出 FBX  →  ④ 导入设置  →  ⑤ 在场景里验证
            控制面数      禁中文路径      单位与缩放 ↑         戴上头显看
                                         最常翻车的一关
关卡要做什么没做好会怎样
① 建模按真实比例建模,统一单位进 Unity 后比例不对
② 减面控制在合理面数(一体机尤其敏感)掉帧、发热、眩晕
③ 导出 FBX路径与文件名不含中文导入失败、材质丢失
④ 导入设置检查 Scale / 轴向 / 材质模型躺倒、悬空、变成粉色
⑤ 验证先在模拟器看,再戴头显看“在 PC 上明明没问题”

2.3 最常见的三个坑

  1. 缩放不对:模型小到看不见、或大到撑爆场景 → 改 Transform → Scale(常用 10.01);
  2. 贴图变粉红:材质丢失或路径含中文 → 重新指定材质,并把素材放到纯英文路径;
  3. 轴向搞错:模型躺倒或漂在空中 → Blender 默认 Z 轴向上,Unity 是 Y 轴向上,需要旋转或导出时校正。
硬件接口 ③:面数过高 → 掉帧 → 眩晕。这不是“画面问题”,而是接上了上次课的刷新率与 Motion-to-Photon 延迟:延迟一旦超标,人就会不适,再好的内容也救不回来。

实验 A · 环境核对与界面认知

12 分钟 · 不安装,只核对:确认版本与插件齐全就能开工

本次课不安装、不下载 Unity——机房已部署好 Unity 及整套 XR 环境。你要做的是把版本与插件核对清楚,然后直接开工。

A1 查 Unity 版本号(今天的第一个任务)

路径打开 Unity → 顶部菜单 Help → About Unity,弹窗里能看到完整版本号,例如 6000.0.83f1
要做的把这个版本号抄到任务卡上(教师会收齐全班版本号,用于排查工程兼容问题)
为什么第一件事就查版本:Unity 只能升级工程,不能降级。如果现在记录的版本低于你以后使用的版本,工程就可能打不开——这是真实工程里最常见的坑之一。

A2 确认项目里装了哪些包

A3 打开或新建项目

A4 认识六个面板(必记)

面板位置作用一句话记忆
Hierarchy 层级左侧列出场景里所有物体场景里“有什么”
Scene 场景中央编辑视角,搭建场景你工作的地方
Game 游戏中央运行时真实画面(相机视角)玩家“看到什么”
Inspector 检视右侧选中物体的组件与属性选中什么改什么
Project 项目底部工程里所有资源文件素材“存在哪”
Console 控制台底部报错、警告、调试输出出问题先看这里

自测三个问题:运行时报错先看哪个面板?哪个面板显示“玩家实际看到的画面”?哪个面板列出场景里“有什么物体”?

A5 保存场景

File → SaveCtrl+S)。场景文件是 Assets/ 下的 .unity 文件,养成随时保存的习惯。

硬件接口 ④:稍后要加的 XR Origin,就是上次课讲的 Inside-Out 定位在软件里的落点——硬件负责“知道自己在哪”,软件负责“把位置用起来”。

实验 B · XR 环境配置 ★

30 分钟 · 把普通 3D 项目变成 VR 项目的一步,后面 9 次课的地基

#操作路径说明 / 注意事项
B1启用 OpenXREdit → Project Settings → XR Plug-in Management在 Windows 标签页勾选 OpenXR;OpenXR 是跨设备开放标准,一次配置可支持 PICO / Vive / Quest。若提示需重启编辑器,按提示重启后继续
B2确认 XR Interaction ToolkitPackage Manager → In Project它提供抓取、射线、传送、UI 交互等现成交互组件;清单里若出现 Samples,展开能看到 Starter AssetsXR Device Simulator 就说明示例包已就绪
B3添加 XR Origin (VR)Hierarchy 空白处右键 → XR → XR Origin (VR)它替代普通相机,负责跟随头显位置与朝向。必须禁用或删除场景里原有的 Main Camera,否则两个相机打架、画面异常
B4添加 XR Device SimulatorProject → Assets/Samples/XR Interaction Toolkit/<版本>/XR Device Simulator → 把预制体拖进 Hierarchy用键盘 + 鼠标模拟头显转头与手柄操作。本课程“PC 开发为主、头显验证为辅”,这个组件就是“PC 上开发”的支柱
B5Play 验证点击顶部 ▶ Play期望结果:Game 视图里视角能随 WASD 与鼠标转动而移动

XR Device Simulator 常用模拟按键(默认)

按键作用
W / A / S / D模拟头显前后左右移动
按住鼠标右键拖动模拟转头
Tab(按住)切换左右手
G(按住)模拟手柄握持(Grip)
鼠标左键模拟手柄触发(Trigger)
按键以你机器上模拟器预制体显示的提示为准(版本不同可能略有差异)。按了没反应?先用鼠标点一下 Game 视图,让焦点落在游戏窗口里。
B 环节的思考题:XR Origin 解决的是上次课讲的哪个硬件问题?——提示:和“头显怎么知道自己在哪”有关,也就是跟踪定位。

实验 C · 导入模型与第一个脚本 ★

25 分钟 · 让场景里真的有东西,而且它会动

C1 导入 FBX 模型

本次课不依赖联网下载模型(避免机房网络问题),统一使用教师提供的模型文件。

C2 放进场景并修正比例

检查项怎么做
比例是否合理与场景里的 Cube / Plane 对比;不对就改 Transform → Scale10.01
位置是否合适调整 Transform → Position 的 Y 值(Unity 是 Y 轴向上
材质是否正常若呈粉红色,说明材质丢失或贴图路径含中文,需重新指定

C3 写出第一个脚本

Project 面板空白处右键 → Create → C# Script,命名为 SpinObject——首字母大写、不能有中文、不能有空格

using UnityEngine;

public class SpinObject : MonoBehaviour
{
    public float speed = 60f;   // 每秒旋转的角度

    // Start 在物体第一次被激活时调用一次
    void Start()
    {
        Debug.Log("SpinObject 启动了");
    }

    // Update 每帧调用一次(适合做持续运动)
    void Update()
    {
        transform.Rotate(0f, speed * Time.deltaTime, 0f);
    }
}

挂载与运行

  1. 选中场景里的模型(或任意物体);
  2. SpinObject 从 Project 面板拖到 Inspector 下方空白处;
  3. 点 ▶ Play,物体开始旋转;
  4. Play 状态下可以在 Inspector 里实时改 Speed,看转速变化(试试从 60 改成 600)。

读代码要点(对应 4.3 开发语言)

概念在这个脚本里的体现
GameObject你挂脚本的那个物体
ComponentSpinObject 本身就是挂在物体上的一个组件
MonoBehaviourUnity 所有脚本的基类,必须继承
Start()只执行一次,适合初始化
Update()每帧执行,适合持续动作
Time.deltaTime让转动速度与帧率无关——快慢机器上转得一样
Time.deltaTime 是本课最值得记住的细节:没有它,高刷新率的机器上物体会转得更快。这和上次课讲的帧率、延迟是同一件事的两面。

双轨验证:模拟器 → HTC Vive 真机 ★

25 分钟 · 同一个场景,在 PC 与头显里各看一遍

你已经在 PC 上用 Device Simulator 跑通了场景。现在戴上 HTC Vive 看一个真实运行的 VR 场景,体会软件设置与硬件体验之间的差距——这就是本课程“双轨流程”的核心。

本实验室的头显是 HTC Vive ×5有线 + 基站方案,头显固定在 5 个机位上、搬不动,所以这一环节看的是教师演示的场景,不是每位同学自己的工程(后续课次设备流程熟练后,再安排"带自己工程上机")。

组织形式

  • 5 组轮换,5 套 HTC Vive 同时开放,按机位号分 1—5 组,每组 8 人;
  • 每人约 3 分钟(只看一眼,不是完整体验);
  • 未轮到的组:继续完善自己的场景,或帮旁边同学排错。

戴上头显做三个动作

  • :画面清不清晰?和 PC 上的 Game 视图比,差别在哪?
  • :快速转头——画面跟得上吗?有没有拖影或延迟?
  • :瞬移一步,感受移动时的舒适度。

记录对比(课堂任务卡填写)

对比项PC 模拟器HTC Vive 真机
画面清晰度
转头时的延迟感
眩晕 / 不适感
思考题:同一个场景,为什么在 PC 上看着没问题,戴到头显里可能出现不适?提示——回想上次课的 PPD、刷新率、Motion-to-Photon 延迟
板书收束句硬件决定上限,软件决定你能不能碰到这个上限。

课堂演示中心

7 个演示 · 浏览器直接打开 · 全部离线可用、无外部依赖

本节课的主线演示是 07 软件生态与管线决策台,它的五个标签分别对应 4.1—4.4 的讲授环节与收束。01—06 为硬件主题,属于上一课(第 3 次课):其中 07 的标签②「硬件 ↔ 软件对照」正好用来回指上次课学过的参数。

课堂演示设计 · 基于本机实装环境

Unity 6000.6.0f1 + XR Interaction Toolkit 3.6.0 · 7 个演示,每个 3—6 分钟

下面 7 个演示全部基于这台机器上今天实际装好的版本设计,不是通用教程。每个演示都遵循同一个结构:先说是哪一步 → 现场做 → 让学生看到现象 → 当场读出数字。演示用的工程是 D:\UnityProjects\VRCase01,场景 Case01.unity

一、实装环境核对表(演示前先念一遍)

组件本机版本在哪看演示时要学生注意什么
Unity 编辑器6000.6.0f1Help → About UnityUnity 只能升不能降:如果你的版本比机房高,机房的工程就打不开。这是第一件要记下来的事
Input System1.20.0Package Manager → In Project手柄按键、模拟器按键、后续所有交互都走它
XR Interaction Toolkit3.6.0Package Manager → In Project抓取、射线、传送、UI 交互的现成组件都在这个包里
XR Plug-in Management4.7.0Package Manager → In Project"一次配置、跨设备"的开关就在它的设置页里
OpenXR1.18.0Package Manager → In Project真正接管头显的运行时;这一个勾错了,Play 之后视角一定不动
XRI 样例包3.6.0(Starter Assets / XR Device Simulator)Assets/Samples/XR Interaction Toolkit/3.6.0关键认知:模拟器不是第三方插件,是官方包自带的样例
PICO Streaming Service(PC 端)已装开始菜单接一体机时才用;接 HTC Vive 走 SteamVR,不需要它
为什么把"核对版本"排成第一个演示:这不是客套。机房有还原卡、教师机与机房机版本可能不同,而版本不一致是唯一一种"后面所有步骤都白做"的故障。先用 3 分钟把它排除掉,后面 150 分钟才安全。

二、7 个课堂演示(U1—U7)

U1 · 3 分钟
版本与包核对
目标:全班机器版本一致,每人知道自己这台是什么环境。
操作Help → About Unity 读版本号 → Package Manager → In Project 读四个包版本 → 填任务卡。
应看到:编辑器 6000.6.0f1;Input System 1.20.0 / XRI 3.6.0 / XR Management 4.7.0 / OpenXR 1.18.0。
翻车点:装成"团结引擎(Tuanjie)"或 2022 LTS,工程直接打不开。
U2 · 6 分钟
OpenXR 一次性配置
目标:让"一次配置支持 Vive / PICO / Quest"这句话变成看得见的东西。
操作Project Settings → XR Plug-in Management → Windows 标签勾 OpenXR → 展开 OpenXR 看 Interaction Profile 列表 → 按提示重启编辑器。
应看到:HTC Vive Controller、PICO、Oculus Touch 等配置项并排在同一张表里。
对应知识点:上次课的 Outside-In 基站定位,落到软件里就是 XR Origin 读取的姿态数据。
U3 · 6 分钟
XR Origin + Device Simulator:看 / 转 / 走 / 抓
目标:没有头显也能把 6DoF 演完整。
操作:Hierarchy 右键 → XR → XR Origin (VR)删掉旧的 Main Camera;把 XR Device Simulator 预制体拖进 Hierarchy;Play 后用 WASD 移动、按住鼠标右键转头、Tab 切左右手、G 握持、鼠标左键触发。
应看到:Game 视图里有虚拟手柄;走动时物体之间出现视差——这就是 6DoF 的价值。
翻车点:按键没反应 → 先用鼠标点一下 Game 视图;画面异常 → 旧主相机没删。
U4 · 5 分钟
射线交互与反馈:Hover / Select / 变色
目标:把"交互 = 事件 + 反馈"这句话讲实。
操作:给立方体挂 XRSimpleInteractable + InteractButton 脚本;Play 后用射线指上去、按下、移开。
应看到:灰色 → 悬停变黄hoverEntered)→ 按下变绿selectEntered)→ 移开复位。
对应知识点:输入设备那一节的"手柄是怎么被看见的",在软件里变成"事件是怎么被触发的"。
U5 · 6 分钟
第一个脚本:Start / Update / Time.deltaTime
目标:讲清"初始化一次"和"每帧一次"的区别,以及转速为什么要乘 deltaTime
操作:把 SpinObject 拖到物体上 → Play(默认 60 度/秒)→ 在 Inspector 把 speed 改成 180 → 再 Play 对比 → 看 Console。
应看到:转速随参数变化;Console 里 Start 的日志只出现一次
对应知识点:如果不乘 deltaTime,高刷新率的机器上物体会转得更快——这就是"帧率"这个硬件指标在代码里的落点。
U6 · 6 分钟
自检与性能读数:F1 与 F2
目标:把"验收"从手感变成数字,把"面数 → 掉帧 → 眩晕"这条链落地。
操作:Play 后 SceneSelfCheck 自动跑五项检查,按 F1 可重查;按 F2 开性能浮层读 FPS / Triangles / Draw Calls;把场景里的树复制成 10 棵,再看这三个数。
应看到:缺项被直接点名;三角面与 Draw Call 上升、帧率下降。
翻车点:个别机器取不到计数器、显示 n/a,属正常,不影响场景运行。
U7 · 5 分钟
模型导入与比例:从建模软件到场景
目标:把"资产导入五道关"里最容易翻车的一段摊开讲。
操作:导入 _woodhouse.fbxPalm.fbx → 检查 Scale Factor 与单位 → 放进场景,和 XR Origin 比高矮 → 材质变粉红时重新指定贴图。
应看到:尺寸正常(人能从门口走过去);粉红材质修好后显示正常。
翻车点:素材路径含中文或空格;贴图丢失(材质的引用关系断了);坐标轴不一致导致模型躺倒(Blender 是 Z 轴向上、Unity 是 Y 轴向上)。

三、演示与课堂时间轴的对应

时段演示为什么放在这个点
0:08–0:53 讲授只做 U1(版本与包)它同时是"实验 A"的起点,提前做掉,实验段就不慌
1:03–1:15 实验 AU1 全班跟做每人都记下自己的版本号,这是后面所有排障的依据
1:15–1:45 实验 B ★U2 + U3地基环节:XR 环境不通,后面全都做不了
1:45–2:10 实验 C ★U4 + U5 + U7先让场景里有东西(U7),再让它动(U5),再让它可交互(U4)
2:10–2:35 双轨验证U6 前半段 + 真机PC 上先读三个数,戴头显时才有对照
2:35–2:50 收束U6 后半段(复制物体再看数字)用它把"优化"第一次讲成可量化的动作

四、演示翻车的三级降级方案

级别触发条件降级做法
一级Package Manager 连不上网、包装不上用提前导出的 XR 相关 .unitypackage 离线安装;U2 改为"看已装好的工程"
二级头显连不上 / SteamVR 找不到设备全部走 Device Simulator,真机环节改为教师机投屏演示,学生只做记录
三级Unity 崩溃或工程打不开用教师机的录屏与截图按原顺序讲完流程,学生改为填写"故障记录表"(也算一次完整练习)

视频资料 · 第 4 次课配套

27 条 B 站视频 · 逐条核验标题、时长与发布日期 · 按学习顺序分组

怎么用:本课视频不能替代动手。建议顺序是"课上跟做 → 卡住了看对应的那一条 → 想深入再看完整系列"。第五组(Pico Neo3 开发系列)与实验室设备直接对应,是最值得课后刷的一条线。播放量、点赞数为 2026-09-15 核验值。

一、引擎认识与安装(对应 4.1 工具选型与实验 A)

知识点视频时长数据怎么看
Unity 6 正确安装别再把团结引擎当 Unity 了!Unity 6 正确下载安装教程(嗜睡的猫咪)18:0013.7 万播放 / 1733 赞本课首推:直接回答"我装的是不是 Unity"——团结引擎是国产分支,工程不通用
Hub 与编辑器安装最简单的手把手保姆级 Unity 入门教程:下载和安装(喵布里)13:248.5 万播放 / 1603 赞课后在自己电脑上补装时用;注意版本要选 LTS 并与机房保持同一大版本
引擎选型:Unity vs UnrealUnity 和 UE 引擎应该选哪个?深入浅出的对比介绍(枫2)12:103.2 万播放 / 1139 赞对应 4.1"一类工具只干一件事":为什么本课选 Unity 而不是 Unreal
Unreal 的门槛在哪深度解析,为什么 Unreal 比 Unity 难?(倾海海海海)12:137.8 万播放 / 1750 赞反方视角:承认 Unreal 的画面上限,再解释"上限高 ≠ 课堂合适"

二、编辑器界面与环境核对(对应实验 A)

知识点视频时长数据怎么看
编辑器全貌(必看)Unity 10 分钟快速入门(Ross-Ning)11:4778.1 万播放 / 2.6 万赞本课首推:11 分钟走完 Hierarchy / Scene / Game / Inspector / Project / Console 六个面板,正好对上实验 A4
界面布置与自定义Unity 新手入门:编辑器界面布置(上月球去写甲骨文)6:372.0 万播放 / 264 赞面板被拖乱了怎么办——多人共用机房机器时人人都会遇到

三、XR 环境配置与交互(对应实验 B)

知识点视频时长数据怎么看
OpenXR 环境配置【Unity VR 开发入门】OpenXR:头盔手柄的环境配置(VR-Sowilo)9:447966 播放 / 114 赞本课首推:把"勾了 OpenXR 之后到底发生了什么"讲得比多数教程清楚
OpenXR + XRI 完整配置Unity VR 开发教程:OpenXR + XR Interaction Toolkit 安装和配置(Teacher_Liu)18:113356 播放 / 36 赞课后再看一遍,把 B 环节的每一步对齐到视频里
XRI 快速配置交互快速配置交互:移动、抓取、UI 交互(XR Interaction Toolkit)(SpatialXR社区)18:441.8 万播放 / 1094 赞本课首推:想在下节课做出"能抓、能传送"的场景,看这一条
XR Device Simulator(官方)Unity 设备模拟器(Device Simulator)教程(Unity 官方)3:521.3 万播放 / 295 赞4 分钟讲完全部模拟按键;官方出品,界面与 3.6.0 最接近
XR 模拟器实操Unity XR 模拟器 XR Device Simulator 使用教程(Cool灬浩)4:436369 播放 / 103 赞补充"按键没反应"这类现场问题,和本页故障速查表配合看
XR Origin 设置Unity 开发 Pico VR 项目基础:导入并设置 XR Origin(老徐看VR)3:111850 播放 / 12 赞补一个"XR Origin 到底替代了相机的什么功能"的直观解释
XR Origin 基本设置XR Origin 基本设置(划破长空那一鸣)2:43773 播放 / 3 赞短平快;播放量很低,但这一步确实没有更好的中文资料
SteamVR 与 OpenXR 的关系使用 OpenXR 代替 SteamVR 以获得更好的 VR 体验(JuiceforeaL_)2:522.4 万播放 / 399 赞回答"为什么现在推荐 OpenXR,而不是直接挂 SteamVR 插件"
SteamVR 报错排查串流时 SteamVR 报错检测不到头盔,怎么解决(赤峰飞人乔尔特)18:018.3 万播放 / 569 赞真机环节最可能撞上的故障,先看症状再对号入座

四、模型、脚本与性能(对应实验 C 与性能读数)

知识点视频时长数据怎么看
模型导入注意事项Blender 模型导入到 Unity 的相关设置以及注意点(愿为磐石守一人)7:064.7 万播放 / 704 赞本课首推:比例、单位、坐标轴、材质四条一次讲全,正好对上 U7
导入 FBX(最短路径)两分钟教会你如何在 Unity 中导入 FBX 的 3D 模型(YuZou邹宇)1:562.2 万播放 / 152 赞课堂只放这 2 分钟,其余留给课后
材质丢失(粉红)修复导入 Unity 的 FBX 丢失了处理方式(经常会遇到)(poorgun慢)5:251.9 万播放 / 127 赞把"模型变粉红"从一个意外变成一个可解释、可修复的常见现象
脚本生命周期零基础学习 C# 在 Unity 中的使用:脚本生命周期(M_Studio)10:352.8 万播放 / 1369 赞本课首推Start / Update 各调用几次、顺序如何,看这一条就够了
从组件到脚本【Unity 游戏开发入门 01】从组件 Component 到 C# 脚本(IGBeginner01)4:043.5 万播放 / 972 赞补"脚本就是一个自定义组件"这个概念,讲清挂载方式为什么是拖拽
Profiler 性能分析简单易懂的 Unity 性能优化:Profiler 使用技巧实例解说(游戏石匠Super)10:417883 播放 / 325 赞本课首推:和 F2 浮层配合,把"掉帧"定位到具体环节
Draw Call 优化几个小动作让帧数立刻提升:Unity 性能优化之 Draw Calls(AliveCat)4:241.2 万播放 / 446 赞回答 U6 里的问题:帧率低时先看三角面还是先看 Draw Call

五、与实验室设备直接对应的开发线(推荐课后刷)

知识点视频时长数据怎么看
Pico Neo3 开发(1)Hello WorldPico VR Neo3 开发入门教程(1)——Hello World(怜子卿如水)6:313.7 万播放 / 567 赞与实验室备用机同型号,也是目前唯一一条完整的中文设备对应教程线
Pico Neo3 开发(2)传送与移动Pico VR Neo3 开发入门教程(2)——射线传送,移动(怜子卿如水)8:191.9 万播放 / 192 赞射线传送是后面"密室逃脱"案例的必备交互
Pico Neo3 开发(4)开关门Pico VR Neo3 开发入门教程(4)——握把手,开关门(怜子卿如水)10:078705 播放 / 90 赞抓取 + 旋转约束的典型做法,可直接迁移到期末案例
Pico Neo3 开发(7)射线事件Pico VR Neo3 开发入门教程(7)——射线悬停和点击事件的回调(怜子卿如水)9:027332 播放 / 110 赞接上 U4 的 Hover / Select,看它在完整项目里怎么用
Unity + SteamVR(Vive)Unity + SteamVR VR 教程(HTC Vive 设备)(镜欲染)10:144832 播放 / 97 赞本实验室头显是 HTC Vive:这条讲的是 Vive 那条老路,和 OpenXR 方案对照看
内容缺口(如实说明):① Unity 6(6000.x)的中文教程还很少,绝大多数优质视频仍是 2021—2022 版界面,菜单路径会有差异,以本课操作手册与现场界面为准;② XR Origin、XR Device Simulator 的中文专门讲解播放量普遍很低(几百到几千),说明这块确实缺资料,上表已是能找到的最好选择;③ 没有找到"VR 项目性能优化"的中文系统课,只能用通用 Profiler 与 Draw Call 视频替代。

课堂作业设计 · 案例 01:第一个可运行的 VR 场景

课内完成 · 个人独立完成 · 期末 8 个案例合集的第 1 个

为什么这样设计:这学期的期末大作业不是最后一节课才开始的——它就是"8 个课堂案例的合集"。所以第一次作业的目标不是做得多漂亮,而是把一条完整链路走通,并留下能复现的证据:环境是什么版本、场景里有什么、脚本干了什么、性能数字是多少。这四样东西后面 7 次课都会反复用到。

一、基本信息

项目内容
作业编号第 4 次课课堂作业 · 案例 01(期末 8 个案例合集的第 1 个)
对应章节第 4 章 虚拟现实开发常用软件
形式个人独立完成:每人一套工程、一份记录
完成方式课内完成:实验 A + B + C 共约 67 分钟;本次课不布置课后任务
计分计入课堂作业 30% 中的一次,同时作为期末 8 个案例合集的第 1 个案例
提交下课前把截图 + 一页记录交到课程群;工程文件夹按"成果带出"流程自行带走

二、任务清单(六项,全部课内完成)

#任务具体动作产出(要能拿出来给别人看)
环境登记Help → About Unity 读编辑器版本;Package Manager → In Project 读四个包版本一张版本表(5 个版本号)
XR 环境勾 OpenXR;加 XR Origin (VR);删掉旧的 Main Camera;加 XR Device SimulatorPlay 后视角能走、能转的截图
模型导入导入至少 1 个外部模型(FBX),修正比例,必要时重新指定材质模型与 XR Origin 同框的截图(能看出比例合理)
第一个脚本给物体挂脚本让它按参数旋转;在 Inspector 里改一次转速并说明差异脚本代码截图 + 改参数前后的两张截图
性能读数按 F2 读 FPS / Triangles / Draw Calls;把场景物体复制成 10 份再读一次两组数字(改前 / 改后)
成果带出把工程文件夹与截图打包带走(机房有还原卡:不带出 = 下课后消失带出后的压缩包(自己留存,第 12 次课要用)

三、课堂达标线(四项,课内可验)

以下四项在全班下课前逐项通过,即视为完成案例 01:

#达标项通过标准
1版本记录任务卡上填了本机 Unity 版本号,并能说出"为什么版本不能降"
2XR 环境场景含 XR Origin + XR Device Simulator,Play 后视角可移动、可转头
3模型导入至少 1 个外部模型导入且比例正常(没有放大 100 倍或躺倒)
4脚本运行物体按自己设定的参数旋转,并能说清 StartUpdate 的区别

四、评分量规(同一份作业,四个等级看增量)

等级运行效果记录与说明
及格四项达标线全部通过版本表齐全,截图能对应上六项任务
及格 + 性能读数完整两组 FPS / Triangles / Draw Calls 数字齐全,并能说出三者关系(物体变多 → 帧率下降)
中 + 场景里有可交互物体InteractButton 或射线交互做出悬停 / 按下反馈,并解释"交互 = 事件 + 反馈"
良 + 有主动优化动作能指出本机环境里某一个包或版本的具体作用,并提出一条可验证的改进(例如"把材质合并后 Draw Call 从 X 降到 Y"),且说明验证方法
评分口径:能复现、能解释,比"做得多"更重要。只交截图不写说明的按及格档计;数字对不上但能讲清原因的不扣分——那恰好说明你真的在自己机器上跑过。

五、作业示例(照这个格式写)

示例 1 · 版本记录(任务一)

项目填写内容
编辑器版本6000.6.0f1(Help → About Unity)
四个包版本Input System 1.20.0 / XR Interaction Toolkit 3.6.0 / XR Plug-in Management 4.7.0 / OpenXR 1.18.0(Package Manager → In Project)
一句话结论Unity 只能升不能降,所以第一天就要记下版本号,否则换一台机器工程可能直接打不开

示例 2 · 性能记录(任务五)

步骤FPSTrianglesDraw Calls说明
初测14238.6k41场景里只有 1 间木屋 + 1 棵树
把木屋与树各复制 5 份96386k391位置不重叠,避免遮挡影响判断

结论怎么写:三角面约 ×10、Draw Call 约 ×9.5,帧率从 142 掉到 96。PC 上 96 fps 还算流畅,但 VR 的底线是 72 fps、推荐 90 fps——同样的场景直接搬到头显里就会掉到线下。所以"优化"不是做完再补,而是每加一批物体就复测一次。(上面数字是示例格式,实际以你自己机器读到的为准。)

六、常见错误(提前避坑)

症状原因处理
Play 后视角完全不动OpenXR 没勾 / 没有 XR Origin / 旧 Main Camera 还在按这三项依次检查
模拟器按键没反应焦点不在 Game 视图先用鼠标点一下 Game 视图
模型是粉红色材质丢失,或贴图路径含中文重新指定材质;素材放到纯英文路径
模型比房子还大 / 躺倒导出单位不一致、坐标轴不同(Blender 的 Z 轴向上,Unity 的 Y 轴向上)调 Scale Factor 与 Rotation
重开工程东西全没了没保存场景Ctrl + S;养成"做完一个小步骤就存一次"的习惯
下课回来工程不见了机房有还原卡,成果没带出下课前必须走"成果带出"流程

七、与期末大作业的关系

第 4—11 次课共 8 次课,每次课产出 1 个案例,案例 01 是这 8 个里的第一个:它定下的是"工程怎么建、版本怎么记、成果怎么带出"这套规矩。后面每个案例都在这套地基上加东西——交互、动画、网络、AR。到第 12 次课(2026-12-02),你要做的是把这 8 个案例整理成一份合集并现场演示,不需要在最后重新做一个项目。所以:今天带走的那份工程,就是你期末作品的第一页。

故障速查 · 课堂达标线

课上照做,出问题先查这两张表

故障速查表

症状最可能原因处理
Project Settings 里找不到 XR Plug-in Management包未安装Package Manager → Unity Registry 安装 XR Plugin Management
勾选 OpenXR 后报错需要重启编辑器按提示重启,重开项目
Play 后视角不动XR Origin 没加 / 旧主相机还在 / 模拟器没加依次检查这三项
模拟器按键没反应焦点不在 Game 视图先用鼠标点一下 Game 视图再按键
物体悬空或穿地轴向差异 / Y 位置不对调整 Transform 的 Position Y
模型是粉红色材质丢失 / 贴图路径含中文重新指定材质;把素材放到纯英文路径
场景重开后东西没了没保存Ctrl+S 或 File → Save

案例 01 的课堂达标线

四项达标线、六项任务清单、四级评分量规与作业示例,已合并到本页的《课堂作业设计》一节,避免两处表述不一致。

本课不布置课后任务——课程自第 3 次课起采用“课内完成”模式,课堂时间就是唯一窗口,所以每节课都设有达标线,核心产出在课内完成。没做完的部分,下次课开头会留时间继续。

下次课预告(2026-09-30)

下次课进入第 5 章 三维全景技术(8 学时,分两次课):全景概念与分类、全景拍摄(节点、重叠率、曝光)、PTGui 拼接与 VR 全景漫游制作,最后在头显里验证——用最低门槛做出一个完整的可漫游作品。