数年之前,c叔得出了武器和盔甲模型的LCC公式,较为惊人的是,武器和盔甲的LCC公式竟然是不同的。我相信彼时c叔已经明白了LCC的本质,但他压着没说
近日,楼主在研究武器模型时,以外地注意到了可变形武器(如气动拳、断面剑等)模型中LCC与ChildNode的关系,并且经过数日研究,自认为已经将其间的关系摸清楚了个大概。
在模型中,节点分为两类:Node和MacroNode,其中前者是无ChildNode以及LCC的,一般表现为受重力影响的非固定节点;后者一般包含3个或4个ChildNode,对应地也包含3个或4个LCC值。这里仅研究有4个ChildNode的情况。
这里下个定义,将某个MacroNode类节点的4个ChildNode称为一个子节点组。研究可以发现,子节点组总是具有这样的规律:四个子节点中,有三个节点分别具有非常突出的x、y、z坐标,剩余的一个节点则没有任何一个坐标比较突出。事实上,这四个节点构成了一个空间斜坐标系,以无突出坐标的点为原点,由原点指向其余三个点的向量构成了该空间斜坐标系的三个单位向量,LCC即为该点在上述空间斜坐标系中的坐标。或者,我们从向量的角度来解释:假设原生坐标系(即节点坐标xyz的参考坐标系)O-xyz中有一节点P,由P的子节点组所定义的空间斜坐标系为O1-abc,则O1P向量在O1-abc中的坐标表示即为该节点的LCC值,如下图所示:

那么,nekki如此设计的意义何在?显然,当P点在新斜坐标系中的坐标确定了之后,只要构成子节点组的4个节点的相对位置不变,那么P点相对于这4个节点的位置就可以确定,从而使得P点与子节点组的相对位置保持不变。如此一来,若使得武器的不同部分属于不同的子节点组,那样就可以使得武器被划分为数个分离的、可以各自活动的部分,从而做出可变形武器。事实上,双节棍和锁镰也利用了这一原理。至于谁来引导这些可以各自活动的分支,那就是bin文件的工作了。
根据上述描述,我们可以得到以下具有普适性的LCC公式,该公式的描述用到了一些基础的线性代数知识:

注意,该公式中,LCC与ChildNode具有轮换对称性,也就是说,将ChildNode的顺序打乱,再将LCC按照相应的顺序打乱,所得到的结果依然是可用的。楼主写了一个python程序以验证该公式的正确性。对于来自双节棍、阔剑弓等模型的多个具有不同子节点组的节点,该公式的结果与实际LCC值符合得很好,只有一点点误差,可能来自于浮点数的运算精度问题。
然而,该公式比较复杂,实际制作模型时,我们大可以仔细规划子节点组中子节点的坐标,例如使得新斜坐标系变成直角坐标系,且其三个坐标轴分别与原生坐标系的x、y、z三轴平行。这样一来,该公式会被大幅简化。在以上条件下被简化后的LCC公式如下:

同样,该公式的LCC与ChildNode也具有轮换对称性。
数年不见,这里已不再是过去那个文本之风盛行的地方了。即使在现在仍忠实于文本的玩家中,也很少有人关注这种枯燥的数学游戏,大多数人只着眼于贴图、特效等等表面功夫,只想着做出抓人眼球的视觉效果。我知道这个贴发出去必然不会有什么反响,我只希望,对于极少数与我同时代的老人,这个贴子能用几个熟悉的名词,唤醒他们一些尘封的回忆。
那就用这个贴子,来祭奠一个已然结束的时代。
@ccc21232


在模型中,节点分为两类:Node和MacroNode,其中前者是无ChildNode以及LCC的,一般表现为受重力影响的非固定节点;后者一般包含3个或4个ChildNode,对应地也包含3个或4个LCC值。这里仅研究有4个ChildNode的情况。
这里下个定义,将某个MacroNode类节点的4个ChildNode称为一个子节点组。研究可以发现,子节点组总是具有这样的规律:四个子节点中,有三个节点分别具有非常突出的x、y、z坐标,剩余的一个节点则没有任何一个坐标比较突出。事实上,这四个节点构成了一个空间斜坐标系,以无突出坐标的点为原点,由原点指向其余三个点的向量构成了该空间斜坐标系的三个单位向量,LCC即为该点在上述空间斜坐标系中的坐标。或者,我们从向量的角度来解释:假设原生坐标系(即节点坐标xyz的参考坐标系)O-xyz中有一节点P,由P的子节点组所定义的空间斜坐标系为O1-abc,则O1P向量在O1-abc中的坐标表示即为该节点的LCC值,如下图所示:

那么,nekki如此设计的意义何在?显然,当P点在新斜坐标系中的坐标确定了之后,只要构成子节点组的4个节点的相对位置不变,那么P点相对于这4个节点的位置就可以确定,从而使得P点与子节点组的相对位置保持不变。如此一来,若使得武器的不同部分属于不同的子节点组,那样就可以使得武器被划分为数个分离的、可以各自活动的部分,从而做出可变形武器。事实上,双节棍和锁镰也利用了这一原理。至于谁来引导这些可以各自活动的分支,那就是bin文件的工作了。
根据上述描述,我们可以得到以下具有普适性的LCC公式,该公式的描述用到了一些基础的线性代数知识:

注意,该公式中,LCC与ChildNode具有轮换对称性,也就是说,将ChildNode的顺序打乱,再将LCC按照相应的顺序打乱,所得到的结果依然是可用的。楼主写了一个python程序以验证该公式的正确性。对于来自双节棍、阔剑弓等模型的多个具有不同子节点组的节点,该公式的结果与实际LCC值符合得很好,只有一点点误差,可能来自于浮点数的运算精度问题。
然而,该公式比较复杂,实际制作模型时,我们大可以仔细规划子节点组中子节点的坐标,例如使得新斜坐标系变成直角坐标系,且其三个坐标轴分别与原生坐标系的x、y、z三轴平行。这样一来,该公式会被大幅简化。在以上条件下被简化后的LCC公式如下:

同样,该公式的LCC与ChildNode也具有轮换对称性。
数年不见,这里已不再是过去那个文本之风盛行的地方了。即使在现在仍忠实于文本的玩家中,也很少有人关注这种枯燥的数学游戏,大多数人只着眼于贴图、特效等等表面功夫,只想着做出抓人眼球的视觉效果。我知道这个贴发出去必然不会有什么反响,我只希望,对于极少数与我同时代的老人,这个贴子能用几个熟悉的名词,唤醒他们一些尘封的回忆。
那就用这个贴子,来祭奠一个已然结束的时代。
@ccc21232
