VMD 动画缓存

VMD 动画缓存

逐帧缓存用于SlashBlade MMD动画

优化

概述

VMD 动画缓存 消除了拔刀剑重铸版(SlashBlade Resharped)中冗余的 MMD 动作计算,当拔刀剑实体在屏幕上显示时,可为您提供 约 3.8 倍的 FPS 提升(50 → 190 FPS)。

当拔刀剑渲染基于 MMD 的刀剑动画时,每帧每个实体会调用 VmdAnimation.setupAnim() 60 到 120 次——每次查询骨骼变换时都会调用一次。但刻(tick)和局部刻(partialTick)在同一帧内不会改变。这 120 次调用会产生完全相同的结果,浪费了约 20% 的渲染线程。

此模组添加了一个微小的逐帧缓存:如果使用相同的刻和局部刻再次调用 setupAnim,则会跳过整个 MMD 管线。每帧每个实体 120 次调用 → 1 次调用。

性能

场景 之前 之后
第三人称 FPS(拔刀剑可见时) ~50 ~190

在 Minecraft 1.20.1、Forge 47、拔刀剑重铸版 1.9.65 环境下测试。视野中只有一个拔刀剑实体。

需求

安装

  1. 下载 jar 文件并放入您的 mods/ 文件夹
  2. 启动游戏

兼容性

请勿与 AntiEntropyCore 同时使用——这两个模组都会注入同一个 Mixin 目标(VmdAnimation),将会产生冲突。

工作原理

一个单一的 Mixin 注入到 VmdAnimation.setupAnim() 的开头。它会记住上一次的 (currentTick, partialTick) 组合。命中缓存 -> 取消方法执行。未命中缓存 -> 更新缓存,正常运行。

仅 32 行代码。仅客户端。无需核心模组(coremod)黑科技。

链接

  • 源码:GitHub
  • 许可协议:MIT