首页 > 技术文章 > Blender物理效果教学:如何自制“牛顿摆”

blendermx 2021-09-17 21:18 原文

可能看到这个标题你会问:什么是牛顿摆?其实大家应该都见过,有时候也被称为“永动球”“碰碰球”等等,就是五个质量相同的球体由吊绳固定彼此紧密排列,摆动其中一端的单个球体去撞击其它球体时,只会有另一端的单个球体会弹起,如果拉起两个球碰撞球组,另一端的两个球将以相同的速度弹开,同理,如果拉起四个球,另一端的四个球将弹开,而位于中间的球体保持相对静止的状态,这个物理实验反映了动量守恒定律和能量守恒定律。

而在Blender里,其实我们也可以复现这个经典的物理实验,那么具体是怎样操作呢?

第一步:建立牛顿摆的球体模型

为了让球体沿固定旋转轴进行运动,所以牛顿摆的球体都需要两条线来牵引,在建模时也最好按照这个逻辑来进行设计,建议大家搜索一个牛顿摆的模型来“依葫芦画瓢”。

1

首先我们新建一个球体,再新建两条牵引线,然后先选择牵引线再按住Shift选择球体,将球体设置为牵引线的父级,这样我们的球体运动时牵引线也会自然跟随,具体设计如图1所示。考虑到Blender的物理引擎对小尺寸、小重量物体的模拟精度并不高,反倒很容易出现各种稀奇古怪的问题,所以在这里我们并不需要按照严格比例来制作。

第二步:设置刚体碰撞关系

接下来在两条牵引线顶端的中间位置新建一个方块,在物理面板中将其设置为刚体效果的被动模块,然后再把球体设置为刚体模式的活动项,这里注意要把碰撞修改为球形,表面响应里的摩擦会让碰撞变得粘连,所以要设置为0,而弹跳力是保证球体正常弹起,但如果设置为1会出现不受控的乱弹,所以设置为0.95,具体参考图2。

 2

这时候如果直接播放视频,你会发现球体会带着牵引绳一起往下掉,所以我们还需要把它们和方块进行物理绑定。先选择球体,再按住Shift选择方块,在物体菜单中选择刚体、连接,如图3所示。

 3

这时候会出现一个刚体约束的空物体,我们把这个空物体移动到方块的位置,然后在刚体约束中,把类型从“固定”切换为“点”,具体设置可参考图4。这个操作的含义就是球体的物理运动是以方块为中心进行旋转

 

 4

第三步:补全牛顿摆的其他部件,实现物理效果

搞定前两步之后,我们接下来需要做的就是完成整个牛顿摆的构建和达到想要的效果,接下来如图5所示地复制4组我们刚刚做好的全部物体,注意在物体之间要预留一点点空间,避免出现胡乱碰撞的问题。

 5

然后将第一个球体进行旋转,也就是把它“拉起来”,这时候只需深吸一口气,按下播放键,大多数情况下,你都能成功获得如图6的牛顿摆效果啦!

 6

如果你的效果出现了问题,要么就是初始摆动幅度过大,要么就是球体摆放距离不均匀,要么就是刚体世界环境的设置有问题,我们可以在场景属性中调整刚体世界环境的数值,如图7。

 7

Blender的刚体设置比较麻烦的地方在于它在播放时就会主动烘焙数据,但当你修改参数后它并不会主动删除烘焙数据,所以如果忘记手动删除,就会出现“为什么我明明修改了参数但还是不按套路出牌”的窘境。所以建议在刚体世界环境中一是调高子步数和迭代次数,二是每次修改数据后一定要先清除、再烘焙,还可以根据需要来调整速率,毕竟我们不是严格按照物体比例来设计,往往会出现球体移动速度过慢等问题。

效果完成后,接下来就是把整个牛顿摆的造型搞定,这一步也很简单,基本上就是按图索骥,照着你找的参考图简简单单做一个就完事儿,最终的效果如图8所示。

 8

本章小结:刚体物理系统可玩性很丰富

作为Blender最好玩的物理系统之一,刚体系统可以做的事情实在太多,虽然在算法精度上并没有特别高,但仍然可以实现许多有趣的效果,而联动刚体约束之后的可玩性又进一步得到升华。在本次教学中,牵引球体沿轨迹碰撞就是一个很好的例子,感兴趣的读者朋友们可以自行尝试各种设置,相信你们都能发现很多的“新大陆”!

推荐阅读