差异与限制

Hime Display 运行系统差异

Windows7

经测试 Windows7 系统下似乎无法获取 webgl2 上下文,因此会改用 webgl 上下文。

Windows

  • 未聚焦于控制面板时,参数似乎无法动态更新显示。

macOS

  • 已证实的 Chrome 内部问题,macOS 下初次启动应用,载入 pmx 的 MMD 模型后立即渲染会导致整个应用完全崩溃,目前通过添加了 1000ms 的延时临时解决了这个问题。
  • macOS 下不设定覆盖于其他窗口上方时,无法进行鼠标跟踪及交互。
  • 系统限制,macOS 下窗口聚焦于控制面板时,模型的视线跟踪会失效。若设置为展示器开启了“窗口置顶”,控制面板失去焦点后,会自动窗口聚焦到展示器上,跟踪恢复正常。

VRoid

坐标系差异

VRoid 采用的坐标系统与 THREE 不同,有左右手系的差异,这导致 VRoid 在 THREE 中默认载入时模型时背对相机的,为了保证使用效果,此应用内部已经默认将模型的根对象沿 Y 轴旋转了 180 度,因此在对象变换中模型根对象的初始欧拉角数值不是(0,0,0)。

VRoid 物理模拟

与 MMD 动画使用 Ammo 作为物理引擎实现物理模拟的原理不同,VRoid 中的物理模拟,变形动画等都是 pixiv 通过非 THREE 标准的自定义方式实现的(在模型的结构树可能会看到一些用于控制的对象,这是模型自带的),这也意味着,关闭物理模拟后,模型的变形动画将无法正确响应。

因此,VRoid 的物理模拟和变形动画是否启用整合成了参数控制下的 VRM 演算选项。

渲染材质

VRoid 采用了 pixiv 自己开发出来的一个叫 MToon 的着色器,要保证模型颜色的正常显示,打光颜色需要设定为#FFFFFF,但在这样的光线环境下,MMD 的模型颜色会显得有些惨白,反之,在 MMD 模型适宜的光线环境下,VRoid 模型会十分昏暗(不过目前尚未对光线环境设定提供支持)。

MMD

物理模拟

目前 MMD 的物理模拟采用的是 THREE 官方载入库中的 Ammo,其中的物理更新和 3D 渲染其实是分离开的,经过实际测试,目前的效果还不是很令人满意,经常会出现炸毛的情况(特别是裙子),而且会受到帧率的影响,有待优化。目前效果实在爆炸的话,请考虑关闭物理模拟,这样感觉还能看。

另一点,物理模拟目前完全用的是 THREE 的原始库,仅支持载入动画时进行模拟,其他状态下不会有物理模拟。

动作捕捉

内存清理

动作捕捉内部使用的是 Google 的 mediapipe,这东西的文档有是有,但是跟没有差距不太大,实在是过于匮乏了,然后 js 版在 npm 上也仅仅找得到发行代码,没有源代码,导致我无法了解其内部结构,试了好久也无法实现完全的垃圾回收,导致每次开关捕捉都会占用一定内存,只有关掉展示器才能释放。

因此目前建议多次开关捕捉的话,还是重载一下展示器,鬼知道他会不会出什么问题。

全身捕捉

目前全身捕捉还处于一个比较爆炸的状态,主要是在 mediapipe 识别数据的解析上,这个之后有待优化。

Contributors: TSKI433