数字人轻松学Xpresso入门-1
【引言】
很早就想写python 和 Xpresso方面的东西,想在这方面研究一下。毕竟从事软件编程多年,我觉得写这类的东西比写动画类的东西更容易一些,尝试从这篇开始。
【介绍】
先简单谈谈计算机语言。计算机语言包括机器语言和高级语言。机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能,比如汇编语言(assembly language)。机器语言具有灵活、直接执行和速度快等特点,说白了,它是面向硬件的语言。
高级语言比较容易识记和理解,像C B语言等,在编程偏向于人的逻辑思维和语言习惯,编写完成后,由相应地编译器翻译成机器语言代码,控制硬件执行。这种由编译器充当翻译的做法,导致很多跨平台的语言和程序出现,语言如大名鼎鼎的 JAVA,软件如过去辉煌的FLASH。(也就是说编写可以不用考虑执行的平台,而机器语言则不行,它对硬件非常依赖。跨平台语言能实现一次编写到处运行的效果。不说了,谈起编程就涛涛不绝)
在高级语言中,还有一种语言,就是脚本语言。脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。就是说这种语言非常依赖于它的软件环境,,在执行时由其来解释运行,不需要编译。
不行啊,还得往Xpresso方面引导啊! 三维软件中,图形化的操作释放了艺术家的手脚,但脚本语言仍然起着重要作用,尤其是在动画方面,对于物体之间那种看不见的内在的逻辑联系,用“脚本语言”控制比用常规的动画制作方法,在效率方面要高的多。三维软件基本上都有相应的脚本语言。比如3DMAX 中的maxscript , Maya 中的Mel ,在大家熟知的AE中也有脚本语言,可见语言无处不在。
上图是MAXSCRIPT
上图是MAYA 的MEL
大多数从事CG的朋友,看见模型、图形、图像就兴奋,看见程序代码,我晕........你是吗?
(可能这和大脑有关,从事艺术的右脑发达,从事数学逻辑的左脑发达,从事运动的用小脑发达
。显示一下我什么都知道,跑题了)
上图是C4D的xpresso图形编程界面。
1、什么是XPRESSO?
XPresso允许您轻松地定义对象属性之间的依赖关系。换一种说法: 可以使用规则自由地控制场景中的物体动画。例如,如果用对象 A 操作控制对象 B,然后对象 C控制 D。
MAXON 开发的 XPresso是C4D使用的一种基于节点的编程语言,允许您动态链接对象属性。它比其他的三维软件的脚本语言相比,它是模块图形化的,不需要用键盘打英文,记住那么多的函数,使你能看到的各个模块是如何交互。而且整个界面是中文,多么爽啊。最主要的是使不必手动键入这些程序代码代码,你只需要考虑逻辑关系。就是说:无需手动键入命令或脚本可以创建表达式的。
总之,XPresso 提供了一种快速简便的方法,来生成复杂的动画。
2、什么人需要学习Xpresso呢?
如果你从事静态图形生产,比如制作建筑效果图,平面设计,我感觉XPRESSO对于你真的没什么大作用。但如果你从事影视等动画制作,你想随心所欲地控制场景中的模型,按照你的逻辑进行运动变化,那么就学习它吧,它会让你在动画方面更进一步。
【实例一】
还是通过一个例子,入门吧!
XPresso 的主要优点之一就是连接多个对象的属性,简单、 直截了当。过去用过的方法,比如:用克隆和实例去控制更改复制的对象制作变化。但 XPresso 给了我们改变不同对象的各个属性的独特能力。通过下面的实例,学习用一个物体的属性如何控制另一个物体的属性,什么是“驱动”和“被驱动”,通过他们的实质,作为XPRESSO的入门吧。
1、在场景中,建立一个球体和立方体,把他们全部转化多边形。
2、我们想用立方体向上移动一段多少(x)距离,球体就放大多少(x)倍。
C4D有个方便的做法(也是给CG人不用编程用的)。做法是:点击立方体--坐标,找到P.Y 在上面按右键。设置为驱动,就是说用立方体的Y属性去控制。
3、 有“压迫”就有“被压迫”对象,是吧。选中球体(被压迫对象),按SHIFT 在坐标中选中 S.X S.Y S.Z(这是缩放),右键选择如下。
4、场景中发现球体没了。这符合逻辑,因为立方体没有向上移动,Y移动数值为0,按照设置的逻辑关系,球体缩放就是0,不就消失了吗。
5、延Y轴向上移动立方体,看看发生了什么?他们之间确实发生了联系!
6、WHAT HAPPEN? 发生了什么事情。
注意看,发现一个标签,这个标签就是XPRESSO标签。原来是C4D为我们编写了一个程序,把立方体和球体的属性连接起来了。
7、双击这个标签,进入XPRESSO,看看C4D帮我们写了什么?
一目了然,还用解释吗?中间那个“范围映射”是转化不同数据用的,在这里也可以不用。
【实例二】
为了学习XPRESSO,对于上面的这个实例,我们直接用XPRESSO去做。
1、在场景建立一个球体和立方体,转化多边形。建立一个空白物体,在上面右键,选择XPRESSO标签。
这个是个好习惯,建立一个空物体,把XPRESSO标签加到上面去,避免删掉物体时,误删XPRESSO标签。
2、建立标签之后,自动打开编辑器窗口。把球体和立方体对象拖进去,把它摆好。可以缩放它和移动它。
3、在编辑器窗口上右击-选择“范围映射”。
4、用鼠标调整位置和大小,放到两个对象之间。
5、对象的左上角蓝色表示是输入属性,右上角的红色代表为输出属性。用左键点击立方体右上角,选择如下:
6、然后用鼠标把两者联系起来。
7、点击被控制的球体对象,左上角,一次选择X,Y,Z。
8、然后,把“范围映射”连接输出到球体XYZ。
9、点击“范围映射”面板,默认就行(这个模块作用是数据转换,而这个例子,输入和输出的数据都是实数,不需要转换数据,也就是说没有这个模块直接连接也可以。)
10、测试,移动立方体延Y轴移动,发现球体有变化了。
这个例子非常简单,起到说明作用就行了,有很多漏洞和毛病。
【实例三】
入门了,强大吧,不过瘾是吧?
再举一个例子,制作一个只有分秒的“时钟”。
1、首先在场景中制作一个只有分秒“时钟”。一个圆柱加一个管道组成。
2、标记使用圆锥制作的。
3、添加克隆,参数设置如下:
4、用立方体变形制作分针,黑色短的;制作秒针长的,转化多边形,按L,移动轴到下边。然后调整坐标,使分秒针轴心点归到世界坐标中心。(为了渲染准备)
5、这个场景的模型对象列表如下:
6、制作的模型完成。再建立一个空白物体,为其添加一个XPRESSO标签。
7、然后把秒和分拖进编辑器中。这个例子应该用秒的旋转去控制分的旋转。他们之间的数学逻辑是1秒等于六十分之一分。
8、在编辑器中点击如下,建立数学(MATH)模块。
9、点击数学模块,在右侧属性面板设置,如下。
10、然后连接。(旋转.H你应该能够找到)
11、现在的逻辑关系已经建立,并且起作用了。我们先旋转“分”模型,找到R.H提高它的值,发现不能改变。(因为它是被动的,是由“秒”来控制。)我们在转到“秒”模型,找到R.H,提高它的角度,发现“分”开始动了。
12、上面的就已经完成了。但是我还想拓展一些,如何动画呢?K帧吗?那多低级啊
进入编辑器,在左侧的system presets (系统预设),拖入rotate模块,这个是输出旋转的,做如下连接。
逻辑你能明吧,现在时rotate模块控制“秒”,“秒”又控制“分”。
13、其实逻辑关系也可以这样,你明白吗?
14、把动画时间设为400F,太短不过瘾。点击播放,时间走了。
【后记】
1、首先,声明:文章的图片基本来自网上。图片没有商业用途,也没什么大作用,就是用于排版配图,用于缓解一下阅读的节奏而已。这类的编程文章,不做成图文并茂,没有人愿意看。
2、要对编程有信心,不要躲。如果你想研究C4D的TP粒子如何使用, 你是绕不过XPRESSO的。况且,XPRESSO是图形界面,不需要你写什么、记什么。
3、不知朋友们对我讲解XPRESSO,写作方式感想如何?有什么建议,可以留言。