数字人轻松学Xpresso入门-3

【引言】

        通过上一篇的讲解,希望能够带领CG人进入图形化编程领域。三维软件在模拟物质世界的运动和相互联系规律时,利用脚本语言要比“传统的K帧”和“应用动力学模拟”制作效率高得多,这一点,随着你对XPRESSO深入认识,你会不断地有这方面感悟。

         如何教会CG人用好XP,还真让我费脑筋。从编程讲起?面向过程的编程方法,变量、函数、常量、逻辑判断?面向对象的编程方法,对象、属性、方法、接口?一定会让从事图形图像的人头晕。我想还是用实例,通过详细地分析,把复杂的编程概念分散开讲解和研究,这样能顺利一些。(当过老师的人会讲课,善于编写教案,这是我的优势,嘿嘿)。以前有百度C4D吧友问:如何制作齿轮动画?当时我想用动力学制作,现在就用xpresso制作这个例子,深入学习和了解XPRESSO在动画方面的优势。

实例:齿轮咬合动画

1、制作齿轮最好用C4DR16。在样条建模工具中有“齿轮”曲线工具。

设置如下:命名为B,数据供参考。

数字人轻松学Xpresso入门-3_第1张图片
数字人轻松学Xpresso入门-3_第2张图片

2、按CTRL复制出来一个,命名为A。以下的数据供参考。

数字人轻松学Xpresso入门-3_第3张图片

3、放好位置。两个齿轮的半径“调整”为1:2。

数字人轻松学Xpresso入门-3_第4张图片

4、建立一个空物体,为其添加Xpresso标签。把a和b曲线对象拖进XP编辑器中。以a为主动轮,b为从动轮。

数字人轻松学Xpresso入门-3_第5张图片

5、它的旋转角度应该为R.B。

数字人轻松学Xpresso入门-3_第6张图片

6、齿轮的传动比逻辑理论为:

数字人轻松学Xpresso入门-3_第7张图片

简单说就是:相互接触,线速度相同(每秒转动的周长相同),对于单个圆转动:线速度等于角速度×半径。

对于两个相互接触的圆(齿轮),由于线速度相同,所以每个轮的角速度比等与其半径倒数比。就是半径越大,转动越慢。按照这个理论,这个例子小轮a的转速(角速度)为大轮b的2倍。角速度的单位不是度,而是“弧度”。这就涉及角度转换问题。

7、在XPRESSO边界窗口,右键添加“角度”节点。

数字人轻松学Xpresso入门-3_第8张图片

8、选择“角度”节点的属性是“有度数到弧度”。那么角度节点输入的是角度,转换输出为弧度。

数字人轻松学Xpresso入门-3_第9张图片

9、角度和弧度的换算关系如下:

数字人轻松学Xpresso入门-3_第10张图片

在编辑窗口添加两个结果节点,看看数值。

数字人轻松学Xpresso入门-3_第11张图片

10、我们旋转a 的角度为16.616度(其实显示它是弧度,我们当做角度)。我们用计算机算一算:16.616×3.14÷180=0.2898 OK!从监测结果看,角度节点转换正确!

数字人轻松学Xpresso入门-3_第12张图片

11、在编辑面板右键,添加--计算--数学(math)节点。它有两个输入端口:把输入端口1与角度节点输出连接(数据类型为实数),数学节点的输入端口2,则设置为2,功能为“除”。这样从数学节点输出的数据为输入数据的一半。(XPRESSO做除法是这个样子的)

数字人轻松学Xpresso入门-3_第13张图片

12、添加一个结果看看,非常正确。

数字人轻松学Xpresso入门-3_第14张图片

13、因为齿轮曲线b的旋转是角度,所以不能把数学节点的输出的弧度数据直接给b的旋转。

按CTRL把角度节点复制,在属性面板把功能改为:有弧度到度数。然后连接b。

数字人轻松学Xpresso入门-3_第15张图片

14、测试一下,点击a对象,旋转R.B角度。发现速度匹配都对,但是方向是一致的,都向一个方向转,这是不对的。

数字人轻松学Xpresso入门-3_第16张图片

图文表现不出来转动方向,这是它的缺点,但你可以想啊。

数字人轻松学Xpresso入门-3_第17张图片

15、解决的办法非常简单。打开XPRESSO编辑窗口。

右键--添加:新建节点--计算--相反数节点。然后加在“数学节点”和“角度节点”之间。发生了什么事情,添加两个“结果节点”进行监测,原来是添加一个“负号”而已。在C4D中代表相反方向。

数字人轻松学Xpresso入门-3_第18张图片

16、再测试正确了。下面给a添加一个“动力”。在XPRESSO编辑面板上选择sysytem presets(预置),选择Rotate,与a节点的输入旋转.B相连。

数字人轻松学Xpresso入门-3_第19张图片

17、把动画设为400F。点击播放,转动的方向和转速都正确,不错吧。

数字人轻松学Xpresso入门-3_第20张图片

18、这个线条不好看,把它转化3D立体也是非常容易啊!添加个挤压,然后设置其“圆角封顶”。

数字人轻松学Xpresso入门-3_第21张图片

19、再点击播放,测试是正确的。(唉!图文看不出运动的样子,你就想吧。)

数字人轻松学Xpresso入门-3_第22张图片

20、材质渲染,这里就不说了,那不是重点。

通过以上讲解。不用动画K帧,不用动力学就完成了齿轮咬合动画,你感觉如何?

数字人轻松学Xpresso入门-3_第23张图片

【补充说明】

1、上面第9、10步,齿轮a输出的旋转值是什么?是弧度还是角度?从结果看16.616应该是弧度值。在这里我把它当角度计算了。为什么这么做呢?一是我现在没有从官方证明说:对象节点输出的是弧度值,不是角度值。那么下图如何解释?

数字人轻松学Xpresso入门-3_第24张图片

上图结果节点显示的确是弧度值,但我是这么想的:结果节点的数据类型没有度数显示,所以它只能以实数显示,自动转化为弧度值(它是显示,是表象,不要轻易相信结果的值,如果数据类型不对,显示就不对,不信改改数据类型试一试);二是我想通过本篇讲解“角度”节点的应用;三是我看国外教程老外都是这么转换的,(带有地方的英语,实在难以听清)。所以,上面即使的确是弧度,就把它当角度转弧度,计算后再把它当弧度转回角度,逻辑上应该没有错误。

2、如果,你把旋转输出的值就认为是弧度,也没有错误。你可以按照下面的逻辑,替代第15步的逻辑,效果是一样的。

数字人轻松学Xpresso入门-3_第25张图片

3、在我确认旋转输出的确是弧度值以前,我就按“角度”来算。由于水平有限,请高手看到后,能够给予指点。

【后记】

        1、如果你已经熟悉了一门高级语言,并且亲自参与开发过一两个项目,那么学习新的计算机高级语言对于你来说是很简单的事。就像你熟悉键盘乐器,突然想学吉他那样简单,两者共同使用的乐理是相同的,唯一不同的是乐器的“操作”不同,这需要下点功夫练习,是熟悉新乐器的过程,而不是重新开始。在你熟悉其他语言的基础上,学习全新的语言,那么,你学的是新语言的语法和规则,很短的时间熟悉以后,你只需要在你的电脑中保存一份电子版的“对象函数手册”即可。

        2、如果你有其他计算机高级语言的基础,学习XPRESSO很容易。如果没有其他语言的基础,也没有什么,学习XPRESSO也是非常容易的事情,MAXON公司开发它,就是想让CG人很容易地用它。(如果你用过MAXSCRIPT和MEL编写过脚本,你试一试,那个难度) 学习XPRESSO好处是代码不用键盘输入,节点不需要你记忆,但你必须熟悉每个节点、甚至每个接口的用途,然后,通过多做练习,熟练对动画、粒子、纹理、颜色等方面进行控制应用。只有这样不断练习,我想当你在遇到复杂物体运动表现的时候,XPRESSO能真正地成为你解决问题的利器。

        3、下一篇还是用xpresso研究皮带轮传动。

你可能感兴趣的:(数字人轻松学Xpresso入门-3)