Blender 制作碎裂效果并导入unity

Posted on Fri 26 November 2021 in Blender

首先,摆一个地面和要碎裂的物体

img

注意被碎裂的物体不能有面的穿插,例如互穿的两个cube,ctrl+l并在一块是不行的,可以用boolean的union来做处理。

首先我们来做碎块。

在blender的插件列表中搜索Cell Fracture并启用这个插件。

img

选中立方体,按f3,输入cell,调出菜单开碎

img

最简单的设置只要改两个选项,Source Limit 是碎出的块数,Noise是随机扰动

img

点击OK,一个碎裂物体就生成了,并和原本的叠在一块

img

删掉原物体,Shift+A添加一个空对象

img

空对象在场景中显示为两个十字叠起来的坐标轴

img

将碎块parent到空对象上。

然后我们将所有碎块加上物理模拟。

选中所有碎块(不要包含空对象),点选物理选项卡,再点击Collision和Rigid Body

img

展开Collision,调整一点摩擦力

img

然后做这个操作复制刚体到所有碎块上。

img

这样碎块的物理就设置好了。

现在物理可以运行了,但是会直直的掉下去。所以我们还需要做一个地面。

选中plane,依然是Collision和Rigid Body两件套。随后展开Rigid Body的设置,Type改为Passive。

img

现在按空格键播放动画,就可以看到掉落碎裂的过程了。

img

这样一来,效果已经实现,流程也即将结束。

接下来我们把物理模拟烘焙成顶点动画:

img

img

完成之后时间轴上出现很多的点。这时即使我们删掉物理模拟,碎块还是会按照轨迹播放。

img

最后我们需要导出动画到游戏引擎。

首先修改动画时间轴上的End来获得一个合理的帧数

img

接下来选中空节点和所有碎块,File -> Export -> DAE

img

不用fbx是因为fbx不支持这种动画,所以用fbx导出到unity会发生很可怕的事情。外网有个哥们做了解释:

img

另外abc格式也可以,但是unity要装个package(见参考)。

导出的时候选一下Selection Only,不然整个场景都被导出了。

img

进unity看看:

img

img

完事。

参考:

https://blenderartists.org/t/cell-fracture-physics-fbx-export/1227694

https://docs.unity3d.com/Packages/[email protected]/manual/index.html

https://youtu.be/ihY4KkSXfhI