8月12日,EA技术美术Shirzad Bahrami发布了一段动画演示,很快引发围观。由于画面中鱼群的运动看起来非常自然流畅,不少人的第一反应是“AI生成的吧”,也有人猜测是基于“vibe coding”一类的自动生成方式。 但Bahrami随即澄清:这段动画并非来自AI——而是基于简单的物理和数学计算,用来模拟波动运动。他同时发布了一篇教程和配套的3ds Max脚本,解释了整个实现过程。 物理动画的核心,是把真实世界的物理规律应用到角色或物体的运动中。Bahrami在教程中展示的这套方法,主要构建在“波动”(undulation)之上——就是我们在鱼尾、绳索、头发上看到的波浪式运动状态。 传统方式下,逐根骨骼手动调节动画的效率很低;而在这套方案中,只需要驱动骨骼链的根部,其余部分会自动跟随形成自然的波浪。其原理可以这样理解:每个骨骼末端都相当于挂在一个弹簧上的质点。弹簧会把末端拉回原本跟随父骨骼刚性运动时所在的位置,随后系统再将末端约束回骨骼长度范围,并让骨骼旋转指向对应的方向。 整个系统所需的输入非常基础,不需要完整的物理引擎,就能产生延迟运动、过冲和稳定收敛等效果。也就是说,想要做出细腻的摆动动画,并不一定要依赖复杂的物理解算器——一些经过设计的数学计算,就能得到足够好的结果。 事实上,这种“用数学驱动运动”的思路在动画领域并不少见。该文还提到了艺术家Vitaliy Kaurov创作的生物动画,同样是利用数学函数来生成运动轨迹。如果你使用Blender,感兴趣的话也可以体验Goo Physics插件,它适合制作风格化模拟;此外,新发布的Hurricane物理引擎同样值得关注。 物理引擎领域最近也有新进展:Erin Catto的Box3D——一个面向游戏应用的新一代3D物理引擎——已获得不少关注,并且已经推出了Unreal Engine的集成版本。 如果你对Bahrami的这套3ds Max脚本和完整教程感兴趣,文中附有他的原始发布链接,可以直接前往查看。你也可以订阅80 Level的Newsletter,加入80 Level Talent平台及官方Discord,或关注其Twitter、LinkedIn和Threads账号,以获取更多类似的技术分享。
![]()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.