# 丫乌蛋餐厅体验 · Play 0.1 / Body R002

2026-09-14 用户确定：这是让投资人和粉丝亲自操作丫乌蛋的公开体验。使用原 Blender 角色，第三人称行走，空格跳跃，能沿餐区、原后门、独立厨房、室外后门连续通行。

用户随后否决了脱离身体、黑点闪烁、耳朵外围穿插的独立毛丝，授权先用无毛丝版本。最终美术要求是“她本身就是毛毡做的”，不是光滑模型外贴毛层。当前 BODY_R002 是过渡的闭合哑光表面，**不宣称已经达到视频毛毡效果**。

## 使用

- 桌面：点击开始探索；WASD / 方向键行走，空格跳跃，Shift 小跑，鼠标拖动观察，滚轮调整跟随距离，Esc 暂停。
- 触控：左摇杆移动、右按钮跳跃，拖动画面观察。手机布局已实现；物理手机性能须另测。
- 暂停、回到门口、退出可随时使用。设计对照和交付文件保留在折叠的制作区域。

## 来源与复现

餐厅视觉继续使用 Restaurant R1.0 的真实训练 SPZ，未改训练母版。Rapier 0.19.2 的静态三角形碰撞来自该母版 GLB 与独立玻璃 GLB，包含家具和门框。角色为运动学胶囊：高 0.65 SU，半径 0.21，步高 0.16；固定 60 Hz 模拟，重力 10 SU/s²，步速 1.45、小跑 2.35 SU/s。跳高约 0.57 SU。镜头球体检测实际建筑，并避开墙面；不可见环境边界只阻挡角色。

```powershell
& 'C:\Program Files\Blender Foundation\Blender 5.1\blender.exe' --background --python scripts/modeling/export_yawudan_playable.py
npx tsx scripts/modeling/restaurant_collision.ts
npx tsx scripts/modeling/verify_restaurant_walk.ts
npm run build
```

`modeling/yawudan/yawudan-v001.blend` 为不覆盖的原母版。`modeling/yawudan/playable/` 中是派生的可编辑 Blender 和网页 GLB；`asset-record.json` 记录来源、SHA-256、9 张原材质法线烘焙及零独立毛丝。原分离的脚、手臂做轻量摆动，不伪称已有骨骼动画。

`collision.bin`：所有 Float32 XYZ 顶点后接 Uint32 索引，小端、Three.js Y-up；数量与源文件哈希见 `collision.json`。`physics-verification.json` 是同一物理模块在真实几何上的测试，覆盖绕过家具的完整路径、墙、柜台、跳跃、镜头及掉落恢复，不等于手机实机验证。

## 本体毛毡研究标准

1. 先制作同一角色、同一灯光和镜头的近景、全身及转台对照，基准为原短剧视频与 `../validation/material-reference.jpg`，不是任意 AI 参考图。
2. 以压实羊毛的体积和表面为主：低对比纤维组织、微小凹凸、宽而柔的反射、耳缘和缝合处自然过渡。黑色保留层次，不能变成有高光的塑料或带噪点的石头。
3. 可试验材质内的多尺度微表面和织物散射，再判断是否需要极短、扎根于表面的轮廓纤维。不能把本次失配的独立曲线重新覆盖到身体外。动态转身、手脚摆动和近距离观察都不能脱层、露壳或闪烁。
4. Blender 高质量参考先过视觉检查，再在网页评估近景、运动、遮挡与帧率。Three.js 的 sheen 是织物反射工具，不自动产生毛毡体积或修复几何问题；不能仅开一个参数就宣称“视频同款”或“SOTA”。
5. 建议验证顺序：闭合体的毡面光照 → 微表面组织 → 必要的贴合短纤维。每步与无毛丝版本同机比较，保留失败证据。达到材质目标后单独替换版本，不回退到当前已否决的毛丝。

参考：[Three.js MeshPhysicalMaterial](https://threejs.org/docs/pages/MeshPhysicalMaterial.html) 的 sheen / 粗糙度与性能说明；[Rapier character controller](https://rapier.rs/docs/user_guides/javascript/character_controller/) 的滑移、台阶及贴地行为。上述研究路径是本项目的技术判断，尚未验收。
