在UE5里玩布料仿真的时候,发现需要给人物模型添加Physics Asset。然而模型打开后却是只包含三个碰撞体,而且没法缩放至合适大小:
Google了一下发现是因为Blender导出的模型放入UE里时,由于Blender单位是米,而UE里单位是厘米,导致模型根骨骼被不正确放大为100倍造成的:
然而在UE视口对其缩放是有最小限度的,但是可以在Details->Body Setup->Primitives->Capsules->index->下修改Radius, Length等数值对其进一步调整:
如果需要添加额外的胶囊碰撞体,可以先显示出所有的骨骼,右键选定骨骼,选择Add Shape添加一个新的碰撞体:
另一种方式更加简便,不过需要在Blender里对模型预先设置好(如果模型是使用Blender导出的)。首先将单位设置为米的前提下把缩放单位设置为0.01:
选择主骨骼,将其缩放至100倍:
物体->应用->缩放来应用缩放到骨骼:
可以看到缩放从100变成了1:
导出模型时,由于Blender和UE的轴向不一致,需要将主骨骼轴向设置为X,次骨骼设置为-Y,不然rag doll的时候可能会有不正确的物理效果,当然只考虑衣服和碰撞体的接触的话应该设不设置都无所谓:
然后改成和之前一样的名字拖进去覆盖就好了!
然后项目就打不开了...每次尝试打开都会报crashed错误...
Google了一下,发现可以修改配置文件解决该问题,具体是用记事本打开:项目\Config\DefaultEngine.ini文件,然后把EditorStartupMap的路径改成另一个Map的路径(保险起见,GameDefaultMap的路径我也改了,貌似直接删掉也可以?)。
然后项目就能重新打开了,只是如果打开和那个资源相关的任何东西都会crash,所以干脆删掉原来的模型重新导入一遍...导入时记得导入选项里勾上Create Physics Asset,不然它不会自动创建碰撞的Physics Asset。然后可以看到根骨骼的缩放是正确的:
另外他也会自动创建一些碰撞体,当然大小啥的还得自己手动调一调,但总比从0开始一个一个创建好:
丢进Viewport下的大小也是正确的:
如果还不明白的话,可以参考Youtbuer RadBoogie的Exporting from Blender to Unreal Engine - Why those settings???以及UE论坛上的Physics Asset Scaling Issues。