三维设计软件XRmaker(4)
2023-02-07王德贵
王德贵
模型运动和摄像机运动一样,是在设计相对运动时常用的应用。为了研究问题的方便,本文将模型运动分为直线运动、曲线运动和空间运动三种,最后做个案例,龟兔赛跑。
一、直线运动
模型的运动轨迹是一条直线。移动的距离和速度,由循环次数和每次移动的距离决定,需要进行计算。
1.固定模型运动
例如,汽车移动10米,比较下列两种情况移动的速度。容易看出,绝对值越大,速度越快,而负号仍然表示方向(图1)。
2.会动模型的运动
每个会动的动物,运动模式和运动状态都有各自的特点,使用时按模型的特点设置即可。比如让乌龟爬行2米,再向前游2米,然后死掉(图2)。
二、曲线运动
即当物体所受的合力(加速度)与速度方向不在同一直线上,则物体做曲线运动。简单的曲线运动,就是在平面上运动,比如模型在x,z平面上运动,那么x,z两个值都在发生变化,而且非线性。我们只讨论两种基本的曲线运动:匀速圆周运动和斜抛运动。其它曲线运动形式,涉及高中平面解析几何知识。
1.圆周运动
可以用中心旋转法、正多边形法、圆标准方程法三种方法实现圆周运动。
(1)中心旋转法
中心旋转法,即是让模型绕中心(0,0,0)旋转而得到。如果想要出现轨迹,需要设置画笔的粗细和颜色等相关属性,画的时候需要落筆,否则没有笔迹,画完要抬笔,这和Scratch类似。这种方法比较好理解,也是经常使用的一种方法(图3)。
(2)正多边形法:即前进一定距离,转过一定角度,如此重复画一个正多边形,那么旋转360度才是圆。假设每次转过10角,那需要移动的距离是多少呢?可以随意设置吗?不可以!
用勾股定理来求解。半径50,顶角1°,做等腰三角形底边上的高,则:l=2×50×sin(0.5×3.1416/180)≈0.8726556米(图4)。
实质上这是360边形,程序设置如图5。
一般认为正多边形边数超过36,即认为是圆,且边数越多误差越小。如果以四十边形代替画圆,则每次旋转90(顶角),程序如图6。
也可以用余弦定理(高中数学知识)求解(图7)。
(3)圆标准方程法
这涉及高中平面解析几何知识和变量。圆心(0,0,0),半径50,则圆标准方程为:x2+z2=502(图8)。
2.斜抛运动
当我们把物体抛向空中,物体下落过程中,留下的轨迹就是抛物线,我们称为斜抛运动,本文只研究斜上抛运动,不考虑阻力,并且设定在x,y平面上(图9)。
简单模拟一下投篮球的过程。这里涉及“二次函数”的知识,抛物线方程设置为:y=-x2+8,球的初始坐标为(6,2,0),这里用到了“直到型”循环,即直到满足条件才终止循环(图10)。
三、空间运动
空间运动更为复杂,所研究的内容也不是中学知识在此不作叙述。在此用中心旋转法做一个半球。
1.设计思想
半球的作法,是由底层开始向上画圆,半径依次减小。变量设置y从0增加到50(大圆半径),那么根据勾股定理,就能求出小圆半径的值x,同时将x坐标设定为画小圆的初始位置(图11)。
仍然用的直到型循环。在y值增大的循环过程中,求出相应的x值,然后确定模型的位置,再让模型绕中心旋转(见前圆周运动方法1),即可得到一个半球。
这里可以调整y值的增大量和中心旋转法画圆的角度,来改变曲线疏密和画圆的精度(图12)。
3.效果图
画出的效果如图13,大图是编辑视图,小图是发布视图(图13)。
四、案例-龟兔赛跑
1.资源列表(图14)
2.导入模型
会动的兔子,原资源库中没有,需要导入一个模型。导入方法如图14。从图中也可以看出,还可以导入图片、环境和音频(图15)。
3.程序设计
(1)乌龟
乌龟模型是会动的动物,因此需要播放动画,这个设定默认即可。由于乌龟爬行较慢,设定为一直前进,直到终点。为了能知道谁赢了,当乌龟到达终点后,显示乌龟赢了,然后关闭显示,程序结束(图16)。
(2)兔子
兔子也要设置播放模式。兔子有时会骄傲,去睡觉,所以播放状态可以选择“Sleeping”(睡觉),这里我加了一个回头看看乌龟和吃东西两个状态,以表示兔子的骄傲。
兔子开始跑了一段距离后,回头看到乌龟在慢慢爬,于是就吃上东西,然后就睡觉了,等待时间用了随机数(注意这个数不是整数,是浮点数)。设置兔子到达终点时,显示兔子赢了,然后关闭显示,程序结束(图17)。
4.效果分析
实际效果如图18。还可以给兔子加一些嘲笑乌龟的台词。