本贴只是个人经验,如有错误,还请指正。写这个帖子的初衷还是因为群里天天有人问物理没生效/方向不对/物理做不好......等,所以来写个解析,希望你看完之后能收获到东西。
为什么物理没生效?ReChain生成的链和官方给出的链有差距,有些未知的参数有可能也会导致碰撞失效,这里贴出官方链的Header,clsp里的碰撞形状选胶囊,其他的目前不建议用
在执行其他文件没问题的情况下,这个问题大概率是flag没设置好。Chain2里影响碰撞的生效的flag有两个,一是chain group和clsp里的CLSP Flag,二是chain group里的Attribute Flags。我们这里主要讲CLSP Flag,Attribute Flags保证勾上角色碰撞就行。
CLSP Flag从卡婊的技术介绍视频来看,就是一个Flag过滤器。但因为我们的工具是逆向出来的,ReChain也还没做对应的功能到blender,所以目前就靠自己算对应的clsp flag
重点来了!
假设我们现在有两个碰撞体A、B,他们的clsp flag分别为2、4,现在我们有三个物体1、2、3需要和他们碰撞,1和A碰撞、2和B碰撞、3和A、B同时有碰撞。
这时候我们需要变换A和B的clsp flag的储存方式,变成二进制A:10 B:100,然后把他们右对齐,补0位,得到A:010,B:100。
现在我们把A和B的二进制表示想象成开关,0是关1是开。1要和A碰撞,很简单,只需要第二位同时处于打开状态就行,所以我们得到了010、011、110,这三个数都可以和A碰撞,转换为十进制就是2、3、6。同理我们得到1和B碰撞,100、110、111转换得到4、6、7。
那聪明的朋友估计已经想到了,3要和A、B同时碰撞,需要对位A、B同时打开的值,2+4也就是6(二进制110),那3可用的值有,110(十进制6)、111(十进制7)、1110(十进制14)......以此类推
至此,你已经完全掌握了clsp flag.jpg
贴一个群友收集的卡婊官方骨骼的clsp对应值
BitFLag A值
身体 2 spine_0 > spine_0 2 spine_1 > spine_1 4 spine_2 > spine_2 8
Neck_0 > L_UpperArm 16 Neck_0 > R_UpperArm 32
L_UpperArm > L_Forearm 64 R_UpperArm > R_Forearm 128
L_Forearm > L_Hand 256 R_Forearm > R_Hand 512
SPHERE Spine_2 67108864 注意这里是球形 Spine_2 > Spine_2 67108864
手腕 1 L_UpperArm > L_Forearm 64 R_UpperArm > R_Forearm 128
L_Forearm > L_Hand 256 R_Forearm > R_Hand 512
L_Hand > L_MiddleF1 1024 R_Hand > R_MiddleF1 2048
头部 3 Neck_0 > Head 4096 Head > Head 8192
腿部 4 L_Thigh > L_Knee 16384 R_Thigh > R_Knee 32768
L_Shin > L_Foot 65536 R_Shin > R_Foot 131072
L_Foot > L_Toe 262144 R_Foot > R_Toe 524288
腰部 5 Hip_HJ_00 > Hip_HJ_00 1 Hip_HJ_00 > Hip_HJ_00 8388608
Ⅰ.为什么骨骼和我选的方向不对?
一般都是骨骼朝向导致,请打开骨骼轴向,检查骨骼朝向,如果不是Z轴朝上,请归零旋转和扭转
Ⅱ.为什么莫名其妙会有虚空碰撞?
荒野ReChain的clsp是全套通用的,在头里的物体是会和身体的clsp碰撞的,如果你在物体里的clsp里填了-1,又希望他只和自己的clsp碰撞,那就会有你不需要的虚空碰撞。解决方法参考上面的clsp解析,计算出对应clsp flag值。
Ⅲ.二次元mod眼睛合不上?
严格来说不算碰撞问题,但问的人太多,放张图在这。不过这只能算暴力解决方法,有能力可以尝试编辑脸部的jcns
有问题可以评论问,祝大家都能实现自己想做的mod!
最后夹带个私货,来看看我做的mod吧,不引流完全没人看!!!


