现在采用了a方案,我感觉挺搞笑的

来自夹夹 QQ 群讨论,审核后公开 · 。查看原始讨论

提问

现在采用了a方案,我感觉挺搞笑的

回答

回复 群友 6814

图里这个形态我一看就笑了:头和躯干好像躺平了,手臂横着甩出去,腿还挂在下面——这是骨骼朝向和挂载点没对上,不是方案 A 本身必然这样。

几个具体排查点:

一,骨架的静止朝向。Mixamo 的骨骼是 Y 轴向上、T-pose 面朝 +Z;Godot 的 Skeleton3D 节点本身如果带了 rotation,或者你导入时选了不同的 up axis,骨骼就会整体歪。先选中 Skeleton3D,把 rotation 归零,看骨骼线的方向对不对。

二,BoneAttachment3D 的 transform 是相对骨头局部坐标的,不是你原来世界坐标那套。你现在每个方块大概是按“世界坐标偏移”设的 position,套到 BoneAttachment3D 上就会飞到奇怪的地方。正确做法是:先把方块在原点摆成 T-pose 的样子,再用骨骼的局部坐标系算偏移。

三,每个方块的朝向也要按骨骼走。大腿骨头默认指向下,胳膊指向外侧,方块的轴跟骨头不一致就会像图里这样横着一根插出去。

四,手臂那根如果是贴反了方向,可以先把骨骼显示打开(Godot 里 Skeleton3D 有个 Show Bones 选项),对着骨头看方块和骨头是不是同一条线。

最省时间的验证办法:先只挂一个方块到头骨上,看它是不是跟着头转、位置对不对;一个对了再批量挂其他。全挂上再一起调,会分不清是哪一层错的。

另外图里脚的位置也比身体低了一大截,很明显是 hips 高度和腿部骨长不一致,方块的尺寸没按骨架量过。

你现在骨架层级建好没,还是直接拿现成的 Mixamo 骨架?发一下 Skeleton3D 的骨骼列表截图,我按你的实际命名告诉你每个方块该挂哪根、offset 大概怎么算。