数字人轻松学Xpresso入门-3
【引言】
通过上一篇的讲解,希望能够带领CG人进入图形化编程领域。三维软件在模拟物质世界的运动和相互联系规律时,利用脚本语言要比“传统的K帧”和“应用动力学模拟”制作效率高得多,这一点,随着你对XPRESSO深入认识,你会不断地有这方面感悟。
如何教会CG人用好XP,还真让我费脑筋。从编程讲起?面向过程的编程方法,变量、函数、常量、逻辑判断?面向对象的编程方法,对象、属性、方法、接口?一定会让从事图形图像的人头晕。我想还是用实例,通过详细地分析,把复杂的编程概念分散开讲解和研究,这样能顺利一些。(当过老师的人会讲课,善于编写教案,这是我的优势,嘿嘿)。以前有百度C4D吧友问:如何制作齿轮动画?当时我想用动力学制作,现在就用xpresso制作这个例子,深入学习和了解XPRESSO在动画方面的优势。
实例:齿轮咬合动画
1、制作齿轮最好用C4DR16。在样条建模工具中有“齿轮”曲线工具。
设置如下:命名为B,数据供参考。
2、按CTRL复制出来一个,命名为A。以下的数据供参考。
3、放好位置。两个齿轮的半径“调整”为1:2。
4、建立一个空物体,为其添加Xpresso标签。把a和b曲线对象拖进XP编辑器中。以a为主动轮,b为从动轮。
5、它的旋转角度应该为R.B。
6、齿轮的传动比逻辑理论为:
简单说就是:相互接触,线速度相同(每秒转动的周长相同),对于单个圆转动:线速度等于角速度×半径。
对于两个相互接触的圆(齿轮),由于线速度相同,所以每个轮的角速度比等与其半径倒数比。就是半径越大,转动越慢。按照这个理论,这个例子小轮a的转速(角速度)为大轮b的2倍。角速度的单位不是度,而是“弧度”。这就涉及角度转换问题。
7、在XPRESSO边界窗口,右键添加“角度”节点。
8、选择“角度”节点的属性是“有度数到弧度”。那么角度节点输入的是角度,转换输出为弧度。
9、角度和弧度的换算关系如下:
在编辑窗口添加两个结果节点,看看数值。
10、我们旋转a 的角度为16.616度(其实显示它是弧度,我们当做角度)。我们用计算机算一算:16.616×3.14÷180=0.2898 OK!从监测结果看,角度节点转换正确!
11、在编辑面板右键,添加--计算--数学(math)节点。它有两个输入端口:把输入端口1与角度节点输出连接(数据类型为实数),数学节点的输入端口2,则设置为2,功能为“除”。这样从数学节点输出的数据为输入数据的一半。(XPRESSO做除法是这个样子的)
12、添加一个结果看看,非常正确。
13、因为齿轮曲线b的旋转是角度,所以不能把数学节点的输出的弧度数据直接给b的旋转。
按CTRL把角度节点复制,在属性面板把功能改为:有弧度到度数。然后连接b。
14、测试一下,点击a对象,旋转R.B角度。发现速度匹配都对,但是方向是一致的,都向一个方向转,这是不对的。
图文表现不出来转动方向,这是它的缺点,但你可以想啊。
15、解决的办法非常简单。打开XPRESSO编辑窗口。
右键--添加:新建节点--计算--相反数节点。然后加在“数学节点”和“角度节点”之间。发生了什么事情,添加两个“结果节点”进行监测,原来是添加一个“负号”而已。在C4D中代表相反方向。
16、再测试正确了。下面给a添加一个“动力”。在XPRESSO编辑面板上选择sysytem presets(预置),选择Rotate,与a节点的输入旋转.B相连。
17、把动画设为400F。点击播放,转动的方向和转速都正确,不错吧。
18、这个线条不好看,把它转化3D立体也是非常容易啊!添加个挤压,然后设置其“圆角封顶”。
19、再点击播放,测试是正确的。(唉!图文看不出运动的样子,你就想吧。)
20、材质渲染,这里就不说了,那不是重点。
通过以上讲解。不用动画K帧,不用动力学就完成了齿轮咬合动画,你感觉如何?
【补充说明】
1、上面第9、10步,齿轮a输出的旋转值是什么?是弧度还是角度?从结果看16.616应该是弧度值。在这里我把它当角度计算了。为什么这么做呢?一是我现在没有从官方证明说:对象节点输出的是弧度值,不是角度值。那么下图如何解释?
上图结果节点显示的确是弧度值,但我是这么想的:结果节点的数据类型没有度数显示,所以它只能以实数显示,自动转化为弧度值(它是显示,是表象,不要轻易相信结果的值,如果数据类型不对,显示就不对,不信改改数据类型试一试);二是我想通过本篇讲解“角度”节点的应用;三是我看国外教程老外都是这么转换的,(带有地方的英语,实在难以听清)。所以,上面即使的确是弧度,就把它当角度转弧度,计算后再把它当弧度转回角度,逻辑上应该没有错误。
2、如果,你把旋转输出的值就认为是弧度,也没有错误。你可以按照下面的逻辑,替代第15步的逻辑,效果是一样的。
3、在我确认旋转输出的确是弧度值以前,我就按“角度”来算。由于水平有限,请高手看到后,能够给予指点。
【后记】
1、如果你已经熟悉了一门高级语言,并且亲自参与开发过一两个项目,那么学习新的计算机高级语言对于你来说是很简单的事。就像你熟悉键盘乐器,突然想学吉他那样简单,两者共同使用的乐理是相同的,唯一不同的是乐器的“操作”不同,这需要下点功夫练习,是熟悉新乐器的过程,而不是重新开始。在你熟悉其他语言的基础上,学习全新的语言,那么,你学的是新语言的语法和规则,很短的时间熟悉以后,你只需要在你的电脑中保存一份电子版的“对象函数手册”即可。
2、如果你有其他计算机高级语言的基础,学习XPRESSO很容易。如果没有其他语言的基础,也没有什么,学习XPRESSO也是非常容易的事情,MAXON公司开发它,就是想让CG人很容易地用它。(如果你用过MAXSCRIPT和MEL编写过脚本,你试一试,那个难度) 学习XPRESSO好处是代码不用键盘输入,节点不需要你记忆,但你必须熟悉每个节点、甚至每个接口的用途,然后,通过多做练习,熟练对动画、粒子、纹理、颜色等方面进行控制应用。只有这样不断练习,我想当你在遇到复杂物体运动表现的时候,XPRESSO能真正地成为你解决问题的利器。
3、下一篇还是用xpresso研究皮带轮传动。