前有一期我们学习了如何进行物理世界的简单建模仿真,如弹球仿真 https://onebigsoap.blog.csdn.net/article/details/108503788 ,其中可以看到弹球的高度变化等信息。虽然数据能看到小球的高度和速度变化,但是终究是不那么直观的。因此接下来我打算进行一些Simulink动画的学习,毕竟很多时候需要动画来演示仿真结果。这一期我们先来试试为弹球仿真做一个动画来制作一个简单动画演示。
模型建立
这里就是弹球仿真的模型简单描述:
这里我们主要需要使用Simulink® 3D Animation™工具箱中的各种模块。
弹球仿真属于比较简单的模型,这里我们只需要使用一个VR Sink模块。创建VR Sink模块后,打开它会出现如下对话框,点击New创建我们的模型,或者是Browse读取已有的模型。
点击New后会出现一个编辑器,然后点击file,从已有模板创建,这里我们来从已有的模板上创建我们的动画模型,demo中有个小球的模型可以参考。
创建好的模型如下,模板做的比较完整,这里需要改动的不多。
动画模型保存后,回到VR Sink对话框,可以看到右边多出了一些可选的参数,这里我理解center为小球中心因此Position应该输出到这个参数吧,先设置center为输入接口(后面发现是不对的,后面有演示):
随后把此前创建的弹球仿真模型复制粘贴到目前这个模型中,通过VR Signal Expander将我们一维的Position参数转化为一个三维的参数输出到动画模型中。
由于三维模型的左边是xzy,因此输出宽度是3,position为z参数,因此输出位数为2。
模型调试
设置好后我们就可以仿真看看效果了。仿真看看:
可以看到Position的输出没问题,但是小球怎么是倒着跳的?通过多轮尝试,发现可作为输入接口的除了center,还有个translation(平移),点选他替换center作为接口再仿真看看:
这回方向是正确了,但是小球的落点好像没有很好的落到设置的地面上。应该是两者的相对位置设置有问题,这里回到动画模型编辑器,发现是初始位置设置有误,重新设置小球初始位置为10,再次仿真:
可以看到小球总是穿过了地面一半,猜测是因为初始位置未考虑到小球本身的直径,因此这里把初始位置提高3,再次进行仿真:
总结
成功制作三维弹球仿真模型,但是还是有些问题:
1.小球为啥初始位置得提高3而不是1.5?(这里我是试出来的,看上一个仿真我还是认为平移参数应该操作的是小球中心而不是顶点,那么这样应该只需要提高半径1.5才对?)
后续会继续进行Simulink 3D动画的学习,希望能用它来为更多物理建模提高趣味性和可视性。