上一篇:CTC文件部分参数的含义
上个教程贴我讲到了ctc文件中各参数的作用,为了方便之后讲如何从零开始(严格来讲应该是从150开始)加物理骨骼、写ctc文件,这里再简单补充一些对物理骨骼的个人理解。
不像上一篇,基本都是照搬大佬们的经验,本帖子的内容是在大佬们的研究基础上自己进行大胆猜测的,仅供参考,如果理解有偏差,还是请以大佬们的总结为准!
绝大多数外观及各部位的物理骨骼ID范围都在150~200之间。
但有一个例外,身体部位(body),这个部位是非常特殊的,有以下几个特点:
- 它不受150~200的范围限制。只要骨骼ID在512以内,且骨架内骨骼(包括身体骨骼)总数不超过255,物理即可生效,其总数可以到达160以上。
- 身体部位的优先级最高。身体骨骼会影响其他部位的骨骼,包括物理骨骼。
这样的话,我们给身体物理的命名就可以从300开始,300~511这个范围完全足够容纳所有身体的物理骨骼。上面又说,身体骨骼有优先级,可以控制其他骨骼,而且其他部位的骨骼大于200就没有物理效果了。
换句话说,即使其他部位不做物理,只要骨骼完全相同,也会被身体骨骼操控。这么说可能有点抽象,举个例子:
假如你有一个模型,要做乳摇,还想把衣服放到其他部位,也做乳摇。过去的方法是给身体和其他部位做完全一样的骨骼、物理。但这样做不仅会占掉其他部位的物理,还可能会随机出现穿模问题。
于是我们就可以把胸部的骨骼直接从300起开始命名,两个部位都用一样的骨骼,但只给身体做胸部物理。由于身体骨骼会控制其他部位的同名骨骼,即使其他部位没有物理,也会跟随身体的胸部骨骼运动。运动完全一致,还省出了4个物理槽位。
补充1:如果你在用旧的物理插件,出现反转姿势变形,就去把骨骼的一个自定义属性symmetric pair改成255,即可解决这个问题。
补充2:可以简单认为,除了身体(优先级高)和头盔(没有物理)外,其他三个部位的物理骨骼是独立、互不影响的,也就是说,如果你做一个东西,用了50个ID发现不够用了,你完全可以把网格拆成两份,把塞不进去的那一部分放到其他部位,然后从150开始再次接着排下去。
补充3:不同部位受风力影响的时间轴是不一样的,所以如果一整个网格用50个骨骼不够,必须拆成多个的话,最好是间隔着拆分网格,并保证每一份网格的对称性。不然如果简单拆成左右两半,就会出现左半边先飘动、右半边后飘动的情况。这一点还可以加以利用,做出波浪形的飘动效果。
一个正常的ctc物理链应该至少有一个固定的首节点和一个引导用的尾节点。
固定的首节点就是物理链(Chain)中的第一个节点(Bone),该首节点自定义属性isParent固定为1,否则会导致整个骨骼链乱飘。在MHW Model Editor中这个参数已经被移除,不需要再关注它了。
尾节点就是物理链中的最后一个节点,由于对应的尾骨骼往往不绑顶点组,所以尾骨骼本身并不直接参与模型的运动。尾节点没有任何实际的物理效果,它只会跟随上一个节点运动。它的存在只是标识这段物理到这儿结束。
而因为大部分部位的骨骼仅在150~200之间有物理效果,所以你可以单独给尾骨骼的id改到大于200,依旧不影响最终效果。这样可以多省一点物理槽位出来。
对应到骨骼链上,就是骨骼链的最后一个骨骼一定是不绑定任何权重的,所以我们就能看到,所有的骨骼链最后都会有一个不控制任何顶点组、且经常垂直向下的尾骨骼,比如下图中的155。把它放到太离谱的位置,会导致骨骼链的尾部乱飘。

此外,按照我目前的经验来看,任何独立物理链/骨骼链之间是互不影响的,所以同一个模型应该也可以用多个骨骼链来控制。比如裙子这种多个骨骼链联合控制的模型,其物理效果是不同的物理链对顶点组(权重)进行不同程度的控制所造成的。
可以在一个骨骼链上面创建多条物理链(即支链),实现同一个模型的不同部位产生不同物理效果。但注意,世界对支链的支持极差,只要包含支链,就会在一些场景的最开始几帧产生强烈的拉伸、卡顿,尽量不要做支链。
根据诸葛不太亮的ctc&ccl插件,这个参数的意义如下:
1-AngleLimit——角度限制
2-AngleLimitRestituion——角度限制回复
4-EndRotConstrain
8-TransAnimation
16-AngleFree
32-StrenchBoth
64-PartBlend
根据以上数字进行加和,可以进行相应的功能启用。
比如常用的几个数:7(1+2+4)、37(1+4+32)、39(1+2+4+32)
当你看完以上两篇,相信你对ctc文件有了一定的理解了,现在让我们开始打造一份独属于自己的物理文件吧!
下一篇:从零开始做物理·其一——工具准备与添加骨骼
by 谛听 · 来自踩蘑菇PC端
更新于 2026-05-28