这个dll补丁能够一次性直接解决以往、未来VRoidMod里带运镜的舞蹈的所有问题,包括会在多人下锁定队友镜头、声音忽大忽小、部分舞蹈运镜在部分角色上不生效的问题。
并且使用之后,只要使用的舞蹈带有正确规范的运镜,那么使用该舞蹈时,所有的角色模型都会支持运镜(强行兼容);如果使用的舞蹈不带有运镜,那么也会回退到默认的VRoidMod的镜头逻辑(即视角锁定在脖子)。因此,作为一个补丁,它几乎是有益无害的。
此外,带*GUI的版本里还添加了一个GUI,可以允许你开关运镜,以及调整舞蹈运镜的缩放(GUI版本会自动读取EyeHeight并自动计算调整,当然也允许手动调),这样可以避免某些小个子角色模型在套用大个子舞蹈镜头时虚空对焦到头顶(萝莉控狂喜!)
(调整镜头缩放高度,看右上角鼠标)
(调整开关,看右上角鼠标)
通过网盘分享的文件:VRoidDanceCamera
链接: https://pan.baidu.com/s/1kovRViCS5-PGEf9zMaWHBQ?pwd=7dfb 提取码: 7dfb
仅在VRoidMod最新版测试,但理论上兼容比较宽泛的版本,不过建议升级到最新版
(那你可能会问了,哪里找有运镜的舞蹈呢?答案是可以看【七日杀/图文&视频教程】5分钟内教会你在七日杀内跳舞蹈/MMD – 角色模型 – 七日杀中文网自己转换(在这里期待一下你的作品);也可以蹲一蹲大佬们的舞蹈,预计过段时间就会有大佬分享制作的高质量的带运镜的舞蹈);此外,过去一二三佬也分享过一些,我之前也放过几个。
带有运镜MMD的效果:
(舞蹈由勇气佬转换,请关注勇气佬喵)
对于普通用户
使用方式:
把我写好的编译的dll直接放到VRoidMod文件夹即可:(提供有两个版本的.dll,选择其一即可)
在游戏内可以按F7关闭UI。
后面的都不用看了,不过如果你在添加这个补丁后遇到问题,或者感兴趣,也可以往后看。
如果你遇到了某个角色、某个舞蹈在引入该补丁后出现了bug,可以阅读下面QA,如果显然是本补丁的bug,请尽量提供详细的信息反馈。在确认无法自行解决问题后提供角色unity3d和舞蹈unity3d,并反馈。
——————————更新日志———————
代码开源在:https://github.com/maoxig/VroidDanceCamera
25.8.10:
fix:修复了死亡后运镜补丁失效的bug;优化性能和逻辑
25.8.12:
fix:修复某些情况下多人仍然锁镜头的bug
feat:新增一个GUI版本,可以选择开关舞蹈镜头、调整视线高度
对于感兴趣的用户/角色mod、舞蹈mod开发者,建议阅读以下QA以及原理介绍(也有提供代码):
Q:会影响原有的转换流程吗?
A:不会,之前怎么转化的现在就怎么搞,我做了许多前向、后向兼容的考虑,因此理论上是都能兼容的。添加了这个dll后,无论角色模型是否内嵌镜头,只要舞蹈unity3d支持运镜,那么就一定会运镜;如果舞蹈unity3d不支持运镜,那么会回退到VRoidMod的镜头逻辑(锁定在人物大概脖子的位置)。因此对于角色模型,不需要再内嵌镜头。对于舞蹈unity3d,可按喜好添加运镜,舞蹈unity3d的制作、运镜的添加、原理我前面的帖子里有详细的图文视频说明:
【七日杀/图文&视频教程】5分钟内教会你在七日杀内跳舞蹈/MMD – 角色模型 – 七日杀中文网
Q:用了xx舞蹈有问题,镜头、表情、动作很怪,是不是这个补丁的问题?
A:显然不是,不过不确定的话可以先移除该补丁然后再对比尝试,如果没法解决可以带着详细的信息反馈。如果是舞蹈本身的问题,请找原作者。
Q:兼容性如何?未来官方出第三人称会导致失效吗?
A:理论上,这套方案只要七日杀不修改第一人称镜头的相关变量、接口,在未来都是可行且不会报错的,并且理论上兼容以往、未来所有的角色模型和舞蹈动作。未来官方出了第三人称,如果那时VRoidMod还能用,那该补丁也能用;如果VRoidMod用不了了,那也问题不大,毕竟这本来就是VRoidMod的补丁(感觉有点废话),并且这个补丁会跟进最新版的支持(也会尽可能兼容旧版)
Q:即使修复了多人锁镜头,我也不想有运镜,怎么办?
A:添加了一个GUI,包含开关和滑块,关闭后使得所有舞蹈即使有镜头也会回退到VRoidMod的默认镜头逻辑,滑块能够调整镜头缩放,可以避免锁头失败。
Q:联机需要每个人都添加这个补丁吗?
A:我没试过有人不加会发生什么,但是最好都添加吧
Q:原理是什么?是怎么修复多人联机锁镜头的?
首先你要知道原先的运镜方法的原理(见我前面的教程帖子)。但是帖子提到,那种方法会导致多人下队友锁镜头。这是因为激活了不恰当的镜头(Camera_root/Camera_root_1/Camera)导致的冲突(后面我意识到这个错了,其实并不是冲突,而是多人模式下的某种机制)。正确的获取和修改镜头位置与旋转的方法是从EntityPlayerLocal.vp_FPCamera.transform(这是一个当前玩家的第一人称镜头,但是因为七日杀还没提供第三人称镜头,因此VRoidMod是把第一人称镜头伪装成第三人称)。
因此我们的目的是使得舞蹈的AnimClip内对Camera_root/Camera_root_1/Camera这三个节点的位移的信息能够合理地传递给外部的EntityPlayerLocal.vp_FPCamera.transform。我设想了许多种方法,最终的方法是在每次EntityPlayerLocal的LateUpdate后面patch一个postfix函数(这个函数在原有的VRoidMod镜头控制逻辑之后执行,因此会覆盖VRoidMod的镜头控制),然后我们检测这三个节点是否在初始位置,如果不在,说明产生了运动,我们就更新EntityPlayerLocal.vp_FPCamera。
此外,为了兼容过去的、未来的所有的情况,我考虑了一下4种(可以合并为2种)情况:
-
情况 a:人物 Avatar 模型包含 Camera_root/Camera_root_1/Camera 路径层级,舞蹈的动画曲线也包含对该路径的控制。
-
只需禁用模型中的 Camera 组件,并将 vp_FPCamera 同步到该节点的世界位置和旋转。
-
情况 b:人物 Avatar 模型不包含上述路径层级,舞蹈的动画曲线也不包含该路径层级。
-
希望使用 VRoidMod 默认的镜头机制(锁定在人物脖子上),无需额外同步操作。
-
情况 c:人物 Avatar 模型不包含上述路径层级,但舞蹈的动画曲线包含该路径层级。
-
动画曲线会尝试控制不存在的路径,可能导致错误。为解决此问题,需要动态创建 Camera_root/Camera_root_1/Camera 层级,并让动画曲线绑定到这些新节点。
-
情况 d:人物 Avatar 模型包含上述路径层级,但舞蹈的动画曲线不包含该路径层级。
-
动画曲线不控制镜头,应使用 VRoidMod 默认镜头机制,与情况 b 相同。
因此,在每次开始跳舞前(Prefix),我的补丁会查找 Camera_root/Camera_root_1/Camera 路径,如果不存在,会创建这样的层级(包括镜头),但是会禁用其他所有的镜头(避免镜头竞争)。此外,为了兼容以往的一些错误的模型,我还尝试删除了所有前人多余额外的AudioListener(因为这会导致声音变大变小,并且unity不允许>1的AudioListener)
而在每次EntityPlayerLocal的LateUpdate后面的postfix函数(这个函数会在每一帧周期性执行),我们查找Camera_root/Camera_root_1/Camera 路径,检查每一个节点的变换,只要有一个节点的变换不符合初始位置,这说明舞蹈controller控制了镜头,那么我们判定需要把人称镜头vp_FPCamera的变换、视野与Camera同步。
总之,如果不理解也可以看下面的源代码,如果未来我不维护了,或者因版本更新导致问题,你也可以尝试自行解决:
VroidDanceCamera/VroidDanceCamera/VroidCameraFix.cs at master · maoxig/VroidDanceCamera
Q: 是怎么修复声音忽大忽小的?
A:这里我也尝试了很多种方案,包括但不限于创建新的AudioListener,使用-二三佬的舞蹈unity修复。但是搞了半天发现很麻烦。后来我发现了最简单最本质的方法:
在开始舞蹈之后,我通过PostFix,把VRoidMod播放音频时的AudioSource设置为 2D 音效(.spatialBlend = 0),这种情况下无论当前玩家镜头在哪音量都是稳定的。而且通过判断是否为当前玩家,可以使得对自己来说,声音不管在哪都是一致的大小;而对其他玩家,声音是3D的(会随距离衰减),这样即使你在家里跳舞也不会影响到在做任务的队友。总之这套方案应该是很完美的。
Q: 怎么反馈问题?
A:如果你有一定能力,可以先尝试自行解决,如果无法解决可以看看代码理解、问问AI;如果你不太理解,可以带着比较详细的信息(版本、行为、结果等等)在评论区反馈
太好了,联机的时候总算不用担心再被强锁镜头了
品赛博烧鸡,做电子魅魔
好 测试
不过这屌皮条客说官方要出第三人称功能,到后面整个模组DLL可能又得被重改
不过管他的,反正是饼,真更新了也得先等Alter更新
正式版了嘛?如正!
你好,希望你今天过得愉快,真的很抱歉打扰你。
我已经在论坛上发帖并联系了许多人和社区寻求帮助,但一个月以来,每个英语社区都未予回应。我尝试在这里提交问题,但难以确定发帖位置,且我的帖子已处于“待审核”状态数日。
我和朋友已经尝试制作7天模型超过一个月了,每次制作时,肢体通常会变形或扭曲,我不知道该如何解决这个问题。肘部或脚部通常会脱落并突出。
示例:
https://imgur.com/a/EjbZuqP#683HYPS
我已经搜索了这里和英文社区中所有能找到的帖子,从未见过有人遇到过这些问题或解释如何解决,我尝试了超过20个模组,它们几乎都存在相同的问题。你知道我该怎么办吗?我和我的朋友都非常希望将我们的模型放入游戏中。
感谢大佬的付出,赞一个!