Blender(免费 · 开源)
免费、跨平台、更新快,建模/雕刻/渲染/动画一体;社区教程极多,适合个人开发与课程作业。本课程用它做“建模—导出 FBX”的最小闭环。
第 4 章(软件为主 · 结合第 3 章硬件)· 软件生态与工具选型 · Unity XR 环境配置 · 导入模型与第一个脚本 · 模拟器 → 头显双轨验证
上次课回答“硬件能做什么”,这次课回答“用什么软件把它做出来”
这节课以第 4 章“虚拟现实开发常用软件”为骨架,把上一课(第 3 次课)讲过的硬件关键指标作为“软件设置的依据”贯穿全课。课堂产出不是“听懂”,而是一台机器上一个能跑起来的 VR 场景。
① 核对版本与插件 → ② 配置 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 的验收 | 验收清单 |
| 时段 | 时长 | 环节 | 主要动作 |
|---|---|---|---|
| 0:00–0:08 | 8' | 开场 | 本学期模型与今日产出:讲清“期末 = 8 个案例的合集”,今天的产出是第 1 个案例 |
| 0:08–0:20 | 12' | 4.1 软件生态地图 | 四类工具分工;资产模型的“轻重”直接决定设备能否跑满 90Hz |
| 0:20–0:31 | 11' | 4.2 建模与引擎选型 | Blender vs 3ds Max、Unity vs Unreal;引擎选择与“生成设备”的关系 |
| 0:31–0:42 | 11' | 4.3 资产从哪来 | 三条来路 + 导入五道关;面数过高 → 掉帧 → 眩晕 |
| 0:42–0:53 | 11' | 4.4 编程入门与机房环境 | C# 最小认知(GameObject / Component / Start-Update);本机已装好什么、版本怎么查 |
| 0:53–1:03 | 10' | 课间 | 教师巡查机房:插件是否齐全、能否新建项目 |
| 1:03–1:15 | 12' | 实验 A · 核对版本 + 认界面 | Help → About Unity 查版本号;Package Manager 查插件;认六个面板 |
| 1:15–1:45 | 30' | 实验 B · XR 环境配置 ★ | XR Plugin Management → Interaction Toolkit → XR Origin → Device Simulator |
| 1:45–2:10 | 25' | 实验 C · 模型 + 第一个脚本 ★ | 导入 FBX、修比例、写最小脚本让物体转起来 |
| 2:10–2:35 | 25' | 双轨验证 ★ | 8 组轮换戴 PICO 看“自己做的场景”,对比模拟器与真机差异 |
| 2:35–2:50 | 15' | 收束 | 案例 01 逐项验收、记录本机版本、预告下次课 |
4.1 四类工具各管一段 · 4.2 建模与引擎怎么选
| 类别 | 它负责什么 | 典型工具 | 本课程会用到 |
|---|---|---|---|
| 建模 | 造出物体的形状 | Blender、3ds Max、Maya | Blender(看一眼界面 + 导出一个 FBX) |
| 引擎 | 把内容组织成可运行的应用 | Unity、Unreal Engine | Unity 6(全程) |
| 资产 | 提供现成的模型、贴图、动画、音效 | Sketchfab、Poly Haven、Mixamo、AI 生成工具 | 素材库 + AI 生成 |
| 验证 | 检查“在真机上到底行不行” | XR Device Simulator(PC 模拟)、头显真机 | 模拟器为主 + 头显验证 |
免费、跨平台、更新快,建模/雕刻/渲染/动画一体;社区教程极多,适合个人开发与课程作业。本课程用它做“建模—导出 FBX”的最小闭环。
在建筑可视化、影视与游戏公司中使用广泛,插件生态成熟、团队协作流程完善;代价是授权成本与学习曲线。
| 维度 | Unity 6(本课程选择) | Unreal Engine |
|---|---|---|
| 上手成本 | 较低,C# 语法友好,教学资料多 | 较高,C++ 与蓝图双轨 |
| XR 支持 | OpenXR + XR Interaction Toolkit,跨 PICO / Quest / Vive | 内置 XR 框架,偏向高保真与主机级画面 |
| 画面保真 | 够用,移动端一体机表现稳定 | 更强,但更吃 GPU |
| 一体机性能 | 移动端优化路径成熟 | 对头显算力要求更高 |
4.3 三条来路 + 五道关 + 三个最常翻车的坑
Sketchfab 模型库、Poly Haven 贴图与 HDRI、Mixamo 角色动画。适合快速搭场景,注意授权与命名规范。
用 Blender 从零建模,尺寸、拓扑、UV 自己说了算。代价是时间——课程里只在必要的小物件上使用。
Meshy、Hunyuan3D、TRELLIS 等文/图生 3D,适合快速原型。但要检查拓扑、UV、比例与版权,通常需要二次修整。
① 建模 → ② 减面 → ③ 导出 FBX → ④ 导入设置 → ⑤ 在场景里验证
控制面数 禁中文路径 单位与缩放 ↑ 戴上头显看
最常翻车的一关
| 关卡 | 要做什么 | 没做好会怎样 |
|---|---|---|
| ① 建模 | 按真实比例建模,统一单位 | 进 Unity 后比例不对 |
| ② 减面 | 控制在合理面数(一体机尤其敏感) | 掉帧、发热、眩晕 |
| ③ 导出 FBX | 路径与文件名不含中文 | 导入失败、材质丢失 |
| ④ 导入设置 | 检查 Scale / 轴向 / 材质 | 模型躺倒、悬空、变成粉色 |
| ⑤ 验证 | 先在模拟器看,再戴头显看 | “在 PC 上明明没问题” |
Transform → Scale(常用 1 或 0.01);12 分钟 · 不安装,只核对:确认版本与插件齐全就能开工
| 路径 | 打开 Unity → 顶部菜单 Help → About Unity,弹窗里能看到完整版本号,例如 6000.0.83f1 |
| 要做的 | 把这个版本号抄到任务卡上(教师会收齐全班版本号,用于排查工程兼容问题) |
XR Plugin Management、XR Interaction Toolkit;Input System,说明输入系统已就绪;.unitypackage 本地导入(Assets → Import Package → Custom Package)。VRCase01),工程路径必须是纯英文。| 面板 | 位置 | 作用 | 一句话记忆 |
|---|---|---|---|
| Hierarchy 层级 | 左侧 | 列出场景里所有物体 | 场景里“有什么” |
| Scene 场景 | 中央 | 编辑视角,搭建场景 | 你工作的地方 |
| Game 游戏 | 中央 | 运行时真实画面(相机视角) | 玩家“看到什么” |
| Inspector 检视 | 右侧 | 选中物体的组件与属性 | 选中什么改什么 |
| Project 项目 | 底部 | 工程里所有资源文件 | 素材“存在哪” |
| Console 控制台 | 底部 | 报错、警告、调试输出 | 出问题先看这里 |
自测三个问题:运行时报错先看哪个面板?哪个面板显示“玩家实际看到的画面”?哪个面板列出场景里“有什么物体”?
File → Save(Ctrl+S)。场景文件是 Assets/ 下的 .unity 文件,养成随时保存的习惯。
30 分钟 · 把普通 3D 项目变成 VR 项目的一步,后面 9 次课的地基
| # | 操作 | 路径 | 说明 / 注意事项 |
|---|---|---|---|
| B1 | 启用 OpenXR | Edit → Project Settings → XR Plug-in Management | 在 Windows 标签页勾选 OpenXR;OpenXR 是跨设备开放标准,一次配置可支持 PICO / Vive / Quest。若提示需重启编辑器,按提示重启后继续 |
| B2 | 确认 XR Interaction Toolkit | Package Manager → In Project | 它提供抓取、射线、传送、UI 交互等现成交互组件;清单里若出现 Samples,展开能看到 Starter Assets 与 XR Device Simulator 就说明示例包已就绪 |
| B3 | 添加 XR Origin (VR) | Hierarchy 空白处右键 → XR → XR Origin (VR) | 它替代普通相机,负责跟随头显位置与朝向。必须禁用或删除场景里原有的 Main Camera,否则两个相机打架、画面异常 |
| B4 | 添加 XR Device Simulator | Project → Assets/Samples/XR Interaction Toolkit/<版本>/XR Device Simulator → 把预制体拖进 Hierarchy | 用键盘 + 鼠标模拟头显转头与手柄操作。本课程“PC 开发为主、头显验证为辅”,这个组件就是“PC 上开发”的支柱 |
| B5 | Play 验证 | 点击顶部 ▶ Play | 期望结果:Game 视图里视角能随 WASD 与鼠标转动而移动 |
| 按键 | 作用 |
|---|---|
W / A / S / D | 模拟头显前后左右移动 |
| 按住鼠标右键拖动 | 模拟转头 |
Tab(按住) | 切换左右手 |
G(按住) | 模拟手柄握持(Grip) |
| 鼠标左键 | 模拟手柄触发(Trigger) |
25 分钟 · 让场景里真的有东西,而且它会动
Models 文件夹;.fbx(或 .obj)拖进 Assets/Models;| 检查项 | 怎么做 |
|---|---|
| 比例是否合理 | 与场景里的 Cube / Plane 对比;不对就改 Transform → Scale(1 或 0.01) |
| 位置是否合适 | 调整 Transform → Position 的 Y 值(Unity 是 Y 轴向上) |
| 材质是否正常 | 若呈粉红色,说明材质丢失或贴图路径含中文,需重新指定 |
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);
}
}
SpinObject 从 Project 面板拖到 Inspector 下方空白处;Speed,看转速变化(试试从 60 改成 600)。| 概念 | 在这个脚本里的体现 |
|---|---|
| GameObject | 你挂脚本的那个物体 |
| Component | SpinObject 本身就是挂在物体上的一个组件 |
| MonoBehaviour | Unity 所有脚本的基类,必须继承 |
| Start() | 只执行一次,适合初始化 |
| Update() | 每帧执行,适合持续动作 |
| Time.deltaTime | 让转动速度与帧率无关——快慢机器上转得一样 |
Time.deltaTime 是本课最值得记住的细节:没有它,高刷新率的机器上物体会转得更快。这和上次课讲的帧率、延迟是同一件事的两面。25 分钟 · 同一个场景,在 PC 与头显里各看一遍
你已经在 PC 上用 Device Simulator 跑通了场景。现在戴上 HTC Vive 看一个真实运行的 VR 场景,体会软件设置与硬件体验之间的差距——这就是本课程“双轨流程”的核心。
| 对比项 | PC 模拟器 | HTC Vive 真机 |
|---|---|---|
| 画面清晰度 | ||
| 转头时的延迟感 | ||
| 眩晕 / 不适感 |
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.0f1 | Help → About Unity | Unity 只能升不能降:如果你的版本比机房高,机房的工程就打不开。这是第一件要记下来的事 |
| Input System | 1.20.0 | Package Manager → In Project | 手柄按键、模拟器按键、后续所有交互都走它 |
| XR Interaction Toolkit | 3.6.0 | Package Manager → In Project | 抓取、射线、传送、UI 交互的现成组件都在这个包里 |
| XR Plug-in Management | 4.7.0 | Package Manager → In Project | "一次配置、跨设备"的开关就在它的设置页里 |
| OpenXR | 1.18.0 | Package 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,不需要它 |
Help → About Unity 读版本号 → Package Manager → In Project 读四个包版本 → 填任务卡。Project Settings → XR Plug-in Management → Windows 标签勾 OpenXR → 展开 OpenXR 看 Interaction Profile 列表 → 按提示重启编辑器。XR → XR Origin (VR);删掉旧的 Main Camera;把 XR Device Simulator 预制体拖进 Hierarchy;Play 后用 WASD 移动、按住鼠标右键转头、Tab 切左右手、G 握持、鼠标左键触发。XRSimpleInteractable + InteractButton 脚本;Play 后用射线指上去、按下、移开。hoverEntered)→ 按下变绿(selectEntered)→ 移开复位。deltaTime。SpinObject 拖到物体上 → Play(默认 60 度/秒)→ 在 Inspector 把 speed 改成 180 → 再 Play 对比 → 看 Console。Start 的日志只出现一次。deltaTime,高刷新率的机器上物体会转得更快——这就是"帧率"这个硬件指标在代码里的落点。SceneSelfCheck 自动跑五项检查,按 F1 可重查;按 F2 开性能浮层读 FPS / Triangles / Draw Calls;把场景里的树复制成 10 棵,再看这三个数。n/a,属正常,不影响场景运行。_woodhouse.fbx 与 Palm.fbx → 检查 Scale Factor 与单位 → 放进场景,和 XR Origin 比高矮 → 材质变粉红时重新指定贴图。| 时段 | 演示 | 为什么放在这个点 |
|---|---|---|
| 0:08–0:53 讲授 | 只做 U1(版本与包) | 它同时是"实验 A"的起点,提前做掉,实验段就不慌 |
| 1:03–1:15 实验 A | U1 全班跟做 | 每人都记下自己的版本号,这是后面所有排障的依据 |
| 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 崩溃或工程打不开 | 用教师机的录屏与截图按原顺序讲完流程,学生改为填写"故障记录表"(也算一次完整练习) |
27 条 B 站视频 · 逐条核验标题、时长与发布日期 · 按学习顺序分组
| 知识点 | 视频 | 时长 | 数据 | 怎么看 |
|---|---|---|---|---|
| Unity 6 正确安装 | 别再把团结引擎当 Unity 了!Unity 6 正确下载安装教程(嗜睡的猫咪) | 18:00 | 13.7 万播放 / 1733 赞 | 本课首推:直接回答"我装的是不是 Unity"——团结引擎是国产分支,工程不通用 |
| Hub 与编辑器安装 | 最简单的手把手保姆级 Unity 入门教程:下载和安装(喵布里) | 13:24 | 8.5 万播放 / 1603 赞 | 课后在自己电脑上补装时用;注意版本要选 LTS 并与机房保持同一大版本 |
| 引擎选型:Unity vs Unreal | Unity 和 UE 引擎应该选哪个?深入浅出的对比介绍(枫2) | 12:10 | 3.2 万播放 / 1139 赞 | 对应 4.1"一类工具只干一件事":为什么本课选 Unity 而不是 Unreal |
| Unreal 的门槛在哪 | 深度解析,为什么 Unreal 比 Unity 难?(倾海海海海) | 12:13 | 7.8 万播放 / 1750 赞 | 反方视角:承认 Unreal 的画面上限,再解释"上限高 ≠ 课堂合适" |
| 知识点 | 视频 | 时长 | 数据 | 怎么看 |
|---|---|---|---|---|
| 编辑器全貌(必看) | Unity 10 分钟快速入门(Ross-Ning) | 11:47 | 78.1 万播放 / 2.6 万赞 | 本课首推:11 分钟走完 Hierarchy / Scene / Game / Inspector / Project / Console 六个面板,正好对上实验 A4 |
| 界面布置与自定义 | Unity 新手入门:编辑器界面布置(上月球去写甲骨文) | 6:37 | 2.0 万播放 / 264 赞 | 面板被拖乱了怎么办——多人共用机房机器时人人都会遇到 |
| 知识点 | 视频 | 时长 | 数据 | 怎么看 |
|---|---|---|---|---|
| OpenXR 环境配置 | 【Unity VR 开发入门】OpenXR:头盔手柄的环境配置(VR-Sowilo) | 9:44 | 7966 播放 / 114 赞 | 本课首推:把"勾了 OpenXR 之后到底发生了什么"讲得比多数教程清楚 |
| OpenXR + XRI 完整配置 | Unity VR 开发教程:OpenXR + XR Interaction Toolkit 安装和配置(Teacher_Liu) | 18:11 | 3356 播放 / 36 赞 | 课后再看一遍,把 B 环节的每一步对齐到视频里 |
| XRI 快速配置交互 | 快速配置交互:移动、抓取、UI 交互(XR Interaction Toolkit)(SpatialXR社区) | 18:44 | 1.8 万播放 / 1094 赞 | 本课首推:想在下节课做出"能抓、能传送"的场景,看这一条 |
| XR Device Simulator(官方) | Unity 设备模拟器(Device Simulator)教程(Unity 官方) | 3:52 | 1.3 万播放 / 295 赞 | 4 分钟讲完全部模拟按键;官方出品,界面与 3.6.0 最接近 |
| XR 模拟器实操 | Unity XR 模拟器 XR Device Simulator 使用教程(Cool灬浩) | 4:43 | 6369 播放 / 103 赞 | 补充"按键没反应"这类现场问题,和本页故障速查表配合看 |
| XR Origin 设置 | Unity 开发 Pico VR 项目基础:导入并设置 XR Origin(老徐看VR) | 3:11 | 1850 播放 / 12 赞 | 补一个"XR Origin 到底替代了相机的什么功能"的直观解释 |
| XR Origin 基本设置 | XR Origin 基本设置(划破长空那一鸣) | 2:43 | 773 播放 / 3 赞 | 短平快;播放量很低,但这一步确实没有更好的中文资料 |
| SteamVR 与 OpenXR 的关系 | 使用 OpenXR 代替 SteamVR 以获得更好的 VR 体验(JuiceforeaL_) | 2:52 | 2.4 万播放 / 399 赞 | 回答"为什么现在推荐 OpenXR,而不是直接挂 SteamVR 插件" |
| SteamVR 报错排查 | 串流时 SteamVR 报错检测不到头盔,怎么解决(赤峰飞人乔尔特) | 18:01 | 8.3 万播放 / 569 赞 | 真机环节最可能撞上的故障,先看症状再对号入座 |
| 知识点 | 视频 | 时长 | 数据 | 怎么看 |
|---|---|---|---|---|
| 模型导入注意事项 | Blender 模型导入到 Unity 的相关设置以及注意点(愿为磐石守一人) | 7:06 | 4.7 万播放 / 704 赞 | 本课首推:比例、单位、坐标轴、材质四条一次讲全,正好对上 U7 |
| 导入 FBX(最短路径) | 两分钟教会你如何在 Unity 中导入 FBX 的 3D 模型(YuZou邹宇) | 1:56 | 2.2 万播放 / 152 赞 | 课堂只放这 2 分钟,其余留给课后 |
| 材质丢失(粉红)修复 | 导入 Unity 的 FBX 丢失了处理方式(经常会遇到)(poorgun慢) | 5:25 | 1.9 万播放 / 127 赞 | 把"模型变粉红"从一个意外变成一个可解释、可修复的常见现象 |
| 脚本生命周期 | 零基础学习 C# 在 Unity 中的使用:脚本生命周期(M_Studio) | 10:35 | 2.8 万播放 / 1369 赞 | 本课首推:Start / Update 各调用几次、顺序如何,看这一条就够了 |
| 从组件到脚本 | 【Unity 游戏开发入门 01】从组件 Component 到 C# 脚本(IGBeginner01) | 4:04 | 3.5 万播放 / 972 赞 | 补"脚本就是一个自定义组件"这个概念,讲清挂载方式为什么是拖拽 |
| Profiler 性能分析 | 简单易懂的 Unity 性能优化:Profiler 使用技巧实例解说(游戏石匠Super) | 10:41 | 7883 播放 / 325 赞 | 本课首推:和 F2 浮层配合,把"掉帧"定位到具体环节 |
| Draw Call 优化 | 几个小动作让帧数立刻提升:Unity 性能优化之 Draw Calls(AliveCat) | 4:24 | 1.2 万播放 / 446 赞 | 回答 U6 里的问题:帧率低时先看三角面还是先看 Draw Call |
| 知识点 | 视频 | 时长 | 数据 | 怎么看 |
|---|---|---|---|---|
| Pico Neo3 开发(1)Hello World | Pico VR Neo3 开发入门教程(1)——Hello World(怜子卿如水) | 6:31 | 3.7 万播放 / 567 赞 | 与实验室备用机同型号,也是目前唯一一条完整的中文设备对应教程线 |
| Pico Neo3 开发(2)传送与移动 | Pico VR Neo3 开发入门教程(2)——射线传送,移动(怜子卿如水) | 8:19 | 1.9 万播放 / 192 赞 | 射线传送是后面"密室逃脱"案例的必备交互 |
| Pico Neo3 开发(4)开关门 | Pico VR Neo3 开发入门教程(4)——握把手,开关门(怜子卿如水) | 10:07 | 8705 播放 / 90 赞 | 抓取 + 旋转约束的典型做法,可直接迁移到期末案例 |
| Pico Neo3 开发(7)射线事件 | Pico VR Neo3 开发入门教程(7)——射线悬停和点击事件的回调(怜子卿如水) | 9:02 | 7332 播放 / 110 赞 | 接上 U4 的 Hover / Select,看它在完整项目里怎么用 |
| Unity + SteamVR(Vive) | Unity + SteamVR VR 教程(HTC Vive 设备)(镜欲染) | 10:14 | 4832 播放 / 97 赞 | 本实验室头显是 HTC Vive:这条讲的是 Vive 那条老路,和 OpenXR 方案对照看 |
课内完成 · 个人独立完成 · 期末 8 个案例合集的第 1 个
| 项目 | 内容 |
|---|---|
| 作业编号 | 第 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 Simulator | Play 后视角能走、能转的截图 |
| 三 | 模型导入 | 导入至少 1 个外部模型(FBX),修正比例,必要时重新指定材质 | 模型与 XR Origin 同框的截图(能看出比例合理) |
| 四 | 第一个脚本 | 给物体挂脚本让它按参数旋转;在 Inspector 里改一次转速并说明差异 | 脚本代码截图 + 改参数前后的两张截图 |
| 五 | 性能读数 | 按 F2 读 FPS / Triangles / Draw Calls;把场景物体复制成 10 份再读一次 | 两组数字(改前 / 改后) |
| 六 | 成果带出 | 把工程文件夹与截图打包带走(机房有还原卡:不带出 = 下课后消失) | 带出后的压缩包(自己留存,第 12 次课要用) |
以下四项在全班下课前逐项通过,即视为完成案例 01:
| # | 达标项 | 通过标准 |
|---|---|---|
| 1 | 版本记录 | 任务卡上填了本机 Unity 版本号,并能说出"为什么版本不能降" |
| 2 | XR 环境 | 场景含 XR Origin + XR Device Simulator,Play 后视角可移动、可转头 |
| 3 | 模型导入 | 至少 1 个外部模型导入且比例正常(没有放大 100 倍或躺倒) |
| 4 | 脚本运行 | 物体按自己设定的参数旋转,并能说清 Start 与 Update 的区别 |
| 等级 | 运行效果 | 记录与说明 |
|---|---|---|
| 及格 | 四项达标线全部通过 | 版本表齐全,截图能对应上六项任务 |
| 中 | 及格 + 性能读数完整 | 两组 FPS / Triangles / Draw Calls 数字齐全,并能说出三者关系(物体变多 → 帧率下降) |
| 良 | 中 + 场景里有可交互物体 | 用 InteractButton 或射线交互做出悬停 / 按下反馈,并解释"交互 = 事件 + 反馈" |
| 优 | 良 + 有主动优化动作 | 能指出本机环境里某一个包或版本的具体作用,并提出一条可验证的改进(例如"把材质合并后 Draw Call 从 X 降到 Y"),且说明验证方法 |
| 项目 | 填写内容 |
|---|---|
| 编辑器版本 | 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 只能升不能降,所以第一天就要记下版本号,否则换一台机器工程可能直接打不开 |
| 步骤 | FPS | Triangles | Draw Calls | 说明 |
|---|---|---|---|---|
| 初测 | 142 | 38.6k | 41 | 场景里只有 1 间木屋 + 1 棵树 |
| 把木屋与树各复制 5 份 | 96 | 386k | 391 | 位置不重叠,避免遮挡影响判断 |
结论怎么写:三角面约 ×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 |
四项达标线、六项任务清单、四级评分量规与作业示例,已合并到本页的《课堂作业设计》一节,避免两处表述不一致。
下次课进入第 5 章 三维全景技术(8 学时,分两次课):全景概念与分类、全景拍摄(节点、重叠率、曝光)、PTGui 拼接与 VR 全景漫游制作,最后在头显里验证——用最低门槛做出一个完整的可漫游作品。