Skip to content

论 VRChat 如何反制盗模 ​

视频: https://www.bilibili.com/video/BV1nb2KY3EVZ/

为什么你的模型会被盗 ​

VRChat 的模型资源和地图资源本质上是一个 Unity 的 AssetBundle 文件, 里面包含了所有的资源文件, 比如模型, 贴图, 着色器等.

AssetBundle 只是一种打包格式, 这种格式仅有简单的压缩功能, 可以通过简单的开源工具进行解包.

在 VRChat 中模型和地图资源的加载都会将资源下载到本地, 再解包资源并加载到内存中. 你可以很简单地找到这些资源文件, 并使用开源地工具解包. 在技术上 AssetBundle 的安全性是不存在的.

可能有人会问为何 VRChat 不对上传后的资源进行加密? 但了解过逆向工程的人都知道, 你的资源最终还是会解密并加载到内存中, 只需要简单读取内存就可以获取到解密后的资源. 并且解密会占用很多 CPU 资源, 这只会让性能本就糟糕的 VRChat 更加糟糕.

我会如何防止我的模型被盗 ​

在软件开发领域, 我们从不指望能通过技术手段防止被破解. 只要代码最终是在客户端执行的, 不被破解是不可能的.

要完全避免模型被盗, 唯一的可能性是将渲染流程全部放到 VRChat 的服务器中. 但考虑到成本问题, 这也是不可能的.

但大家要有一个概念, 时间是需要成本的.

我们只需要做到让盗模者付出大于自己改一个模型的成本, 他们的盗模行为就变得毫无意义.

Shader (着色器) ​

Shader 在打包时会被编译, 哪怕是解包后也很难还原原始的 Shader 代码. 但现在热门的 Shader 也就 lilToon 和 Poiyomi, 简单尝试后其实就能还原材质.

也有人利用了这个特性, 对 Shader 打补丁, 只有特定的 Shader 才能将模型正常渲染出来. 比如 AntiRip 项目.

但 VRChat 因为其糟糕的优化, 不少人都会关闭低信用等级的玩家的 Shader, 正常情况下 VRChat 会使用内置的 Fallback shader 渲染. 但如果你的模型是需要特定 Shader 才能正常渲染, 那你的模型在别人的视角里就是一个类似于刺猬的东西.

这其实是最好的做法, 缺点过于明显, 我认为得不偿失.

Mesh (网格) 与 Texture (贴图) ​

你需要接受一个前提, 会盗模的人都是蠢蛋. 一个会自己改模的人不会通过盗模的方式获取模型.

只需要简单将 Mesh 合并, 并将 UV 重新映射, 再将 Texture 进行合并, 盗模者二次编辑你的模型的成本就会大大增加.

简单的做法就是在你的模型上放一些表明这个模型是你的标识, 进行我上面说的处理. 盗模者将模型直接二次上传就会保留这些标识, 而他将这些标识去除成本又很大.

这是! 精神攻击!!!

Animation Controller (动画控制器) ​

有不少人会给模型添加"密码锁"这个功能, 进阶一些的会结合 VRChat 提供的 OSC 特性来解锁模型.

但我并不看好这种做法, 这只能避免盗模者将模型直接二次上传, 但无法阻止他们将模型资源提取出来直接获取到密码.

在早期盗模的工具不成熟, 不能很好地解析动画控制器, 但现在的工具已经可以很好地解析动画控制器, 所以这样做意义不大.

但使用工具生成的动画控制器一般都比较复杂, 也是能增加盗模者修改模型的成本.

相关资源 ​

如果你遇到了问题 ​

你可以在上面的视频底下留言, 或加入我的 QQ 群 324617456 交流.

金主爸爸们 ​

👉 点击立即成为金主!👈

赞助者

Released under the CC BY-NC-SA 4.0.