feat: PC 版 Live/拍摄陀螺仪模拟(右键拖动 + 小键盘)

Windows 没有陀螺仪,Live 全景拍摄的陀螺仪按钮在 DMM 版被禁用。
新增 enableGyroEmu 开关(GUI 摄像机设置,含灵敏度与轴反转),打开后
按住鼠标右键拖动转动视角,小键盘 4/6 8/2 左右上下、7/9 翻滚、5 复位。

实现分三层,每层都有过失败尝试,原因记录在注释里:
- GyroIcall:改写 il2cpp icall 包装里的 static 缓存指针,向
  SystemInfo.IsGyroAvailable / Gyroscope.getEnabled/setEnabled/
  attitude/gravity 提供假读数。不能 hook 原生 icall——Windows 上它们是
  return 常量的桩,被链接器 ICF 合并进 IsDebugBuild 等无关函数,改一个
  等于改全局(实测 [Debug] 变 True、开场黑屏);也不能 hook 托管包装——
  PC 版 MSVC 把它们内联进了调用方,实测一次不被调用。
- GyroForceInit:PC 版把 IsPanoramaGyroDisabledOnPlatform() 内联成
  常量 true,CampusGyroController 根本不会创建,IsGyroReady 永远 false。
  在 LivePanoramaCameraManager.LateUpdate 里自己 new 出控制器和 VLGyro,
  按 3.3.0 布局置字段后复用游戏自己的 ResetRotation。
- 两个方法体足够大、实测会被调用的托管 hook 放开 UI 闸门。

姿态换算来自反汇编:gyroRotationRaw = base ⊗ (-a.x, -a.y, a.z, a.w),
相对旋转里 base 被消掉,因此 attitude 直接编码相机欧拉角。

顺带:Windows 版日志同步写 gakumas-local/log.txt,便于无控制台排查。

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
chihya72andClaude Fable 5.1 committed 2026-09-08 17:17:40 +08:00
1 parent 937c45ba8c
commit 860f02d32a
12 files changed
+284

No files matched your search

+4
View File
@@ -11,6 +11,10 @@
"gameOrientation": 0,
"forceExportResource": false,
"enableFreeCamera": false,
"enableGyroEmu": false,
"gyroSensitivity": 1.0,
"gyroInvertX": false,
"gyroInvertY": false,
"targetFrameRate": 0,
"unlockAllLive": true,
"unlockAllLiveCostume": true,