这并不是一个真正的教程,而是对你现在屏幕上正在观看的这个动画制作过程的一些简要分享。在动画中,一个足球射入球门并带动球网摆动,然后又弹了回来。


本教程不提供中文配音。您可以在下方观看英语配音的视频,并选择中文、英文或其他语言的字幕。视频下方提供了翻译成中文的文字稿。


视频文字稿

这并不是一个真正的教程,而是对你现在屏幕上正在观看的这个动画制作过程的一些简要分享。在动画中,一个足球射入球门并带动球网摆动,然后又弹了回来。

我的目标是通过 Rigid Bodies 和 Cloth 模拟来实现这一效果,这样我就可以根据不同力度和不同方向的射门生成各种动画。

这些射门实际上是通过一个 passive 且带有动画的 Rigid Body 对象与足球发生碰撞来完成的,而足球本身则是一个 active Rigid Body 对象。

我之前已经在我的 YouTube 频道发布过一个视频教程,使用台球开球作为实际案例,讲解了如何创建这类动画。

足球还添加了一个 Collision 组件,因此它能够与使用 Cloth 模拟器设置的球网发生交互。

球网本身并不是经过真实建模的网状结构,而是由带有半透明贴图的平面组成。这些平面自然包含了足够多的 subdivisions,以便生成逼真的布料模拟效果,但与真实建模的球网相比,它们的模拟计算要简单得多。

构成球网的平面中,有一些顶点通过 Pinning 被固定住了。具体来说,就是将这些顶点分配到一个 Vertex Group 中,然后在 Cloth 模拟中把这个 Vertex Group 作为 Pinning Group 使用,从而确保这些顶点在模拟过程中保持静止。

理论上一切都应该运行正常,因为足球会飞向球网,而且 Cloth 模拟器确实检测到了碰撞。问题在于,至少据我所知,Cloth 模拟器不会把物体反弹回去。因此,足球最终会穿过几何体,并继续无限飞行。也许我可以通过 Soft Bodies 来解决这个问题,但因为我并不熟悉它,所以我想出了一个小技巧作为替代方案。

我从一个简单的立方体开始,创建了一个网格,用来作为球网外侧区域的隐形墙。这个新对象添加了 passive Rigid Body 组件,并且把 collision shape 从 Convex Hull 改成了 Mesh。

使用这些设置后,足球一旦撞到这个隐形障碍物就会停下来。为了让它产生反弹效果,我提高了足球和这个隐形对象的 Bounciness 值。

最终效果就是我在视频开头展示的那样。我还展示了其他一些渲染结果,其中球网在撞击后似乎立刻裂开了。这是因为在原始对象中,球网本身具有一定厚度,所以实际上存在两个带有半透明贴图的平面,它们在球网变形时会彼此分离。解决这个问题非常简单,你只需要删除其中一个平面即可。

不过,我必须完全坦白地说,这个结果并不总是理想的!根据撞击点或撞击角度的不同,可能会出现一些奇怪的行为。有时候这些效果甚至会显得有趣,但它们显然并不准确!当然还有改进空间,但我认为,作为一种不太优雅但快速而简单的解决方案,它已经能够发挥作用了!

搜索教程

输入短语,或输入多个用逗号分隔的关键词进行搜索。

本站提供 Francesco Milanese 制作的 3D 模型、教程及计算机图形相关资源。3D 模型的使用许可可通过各模型页面上的链接前往第三方商店购买,并须遵守适用的许可条款。 Francesco Milanese — 意大利增值税号:06321250877。 联系方式:info@francescomilanese.com


高级隐私策略信息和cookie文件的使用