
Maya、XSI、MAX是目前世界上最优秀的三维动画和特效制作软件,其中Maya被广泛使用于电影电视、游戏设计等领域。多年来,Maya开发工程师不断完善开发软件包,使其成为全球许多顶级动画工作室和制作公司首选的三维设计平台之一。与其他的开发平台不同,Maya应用平台采用开放式的框架体系结构,设有许多三维组件,可以重新设定这些组件的用途,以实现用户所需的特定功能。
Maya是一个基于节点结构的软件,这是一种比较先进的软件结构,有点像搭积木,一切都取决于拼装方式。在Maya 中节点是无处不在的,但在不同的工作领域其作用突显的程度却有很大差异。比如在建模工作中节点总是处在后台,而在灯光材质中节点就完全处在前台了。Maya的节点是用户与底层Maya引擎DG通信的特殊构件。把一系列节点链接在一起,进行数据传递,可以完成很多3D任务。Maya自定义节点也是一种Maya插件,创建自定义节点最好的方法是利用Maya的C++API,并且这些自定义的节点可以直接集成到Maya中,与其他节点无缝链接。
有人认为XSI那种节点方式不是节点,其实那些也是通过节点方式工作的。只不过XSI不能输出Structure,只能输出一个属性,并且这个属性有明确的连接要求,如COLOR类型的属性只能输入出到COLOR类型的属性上,而Maya提供的方式则不同,一是能够在一个节点中输出多个属性,另外是这个属性可以输出到任何一个属性上。
Maya分为两部分:Maya底层和应用层,底层本质是一个和MFC非常类似的东西,提供了一些类,一些管理类的方法,当然还包含一个OPENGL的显示引擎。而应用层则全部用MEL编写,打开Maya的安装目录,可以看到大量的MEL,就是它们构成了Maya的GUI(图形用户界面)。在大部分情况下,是无法接触底层的,即使是使用MEL也不行。MEL是一个解释型的脚本语言,它的源代码公开,执行速度也低下,大概只有C++代码的十分之一左右。为什么不做成像MAX那样的一整块呢?这是由于在底层和用户之间隔了一个应用层抽象层,用户无法直接接触底层,这就保证了底层的安全性,这使得Maya的稳定性在同类软件中出类拔萃。而熟悉MEL 的用户,完全可以绕过MEL创建的界面,通过Maya-prompt 来开启一个纯命令行方式的界面。这在很多时候很有用,用户也完全可以使用MEL创建一个完全属于自己的用户界面。
DAG是为了实现物体之间的关系,而提出的一种数学模型。当物体中存在这样的关系:当A移动时B、C都跟着移动;当B移动时,A不动,C跟着B移动;当C移动时,只有它自己会移动。使用单纯的DG来实现,会显得十分繁琐。有了DAG的界入,只需要设定为:C是B的子物体,B又是A的子物体就可以了。DAG是一个相对容易理解的根念,多做几个场景就能了解。
DG的另外一个优势体现在二次开发上。这种高度可开发性在个人艺术家看来,简直多此一举,所以大部分个人艺术家选择了Lightwave,3DS Max,这些易于使用,但不易于开发的工具。另外一方面,如digital domain(数字王国),industrial light&magic(工业光魔),Weta Digital(威塔)这些大型CG 工作团队,全部不约而同地选择了Maya作为他们主要的CG 制作工具。因为在高复杂度的电影效果制作中,如果不能随时进行二次开发,几乎是不可想象的。
Maya与XSI、MAX节点技术的分析
赵旸
(天津轻工职业技术学院,天津300161)
摘要:Maya、XSI、MAX是目前世界上最为优秀的三维动画和特效制作软件。Maya广泛应用于专业的影视广告、角
色动画、电影特技等领域,与其他三维动画软件不同的是,Maya中引入了节点的概念。这些节点遍布建模、材质、动
画、动力学系统等Maya的各个模块,每个节点都有其特殊的属性,节点与节点之间还有着各种各样的联系。从程序设
计的角度解释Maya的节点会更好理解。通过对Maya与XSI、MAX节点技术的分析,体会它们各自的特点和优势。
关键词:Maya;XSI;MAX;三维动画软件;角色动画;电影特技;节点技术
Maya and XSI、MAX Node Technology Analysis
ZHAO Yang
(Tianjin Light Industry Vocational Technical College,Tianjin300161)
Abstract:XSI,Maya,MAX is the world's most excellent3D animation and special effects software.Maya is widely used in
professional film and television advertising,character animation,films,special effects and other areas,Unlike other3D
animation software,Maya introduces the concept of a node.These nodes are located throughout the modeling,material
quality,animation,dynamic systems,individual modules of the Maya,each node has its special properties,and node and
node also has a variety of links.From program design point of view of the nodes are interpreted Maya better understanding.
By Maya and,XSI MAX node technology analysis,experience in their respective characteristics and advantages.
Key words:Maya;XSI;MAX;Three dimensional animation software;role animation;movie stunt;Node technology
作者简介:赵旸(1976-),女,本科,研究生在读,讲师,
研究方向:数码影视动画、数字媒体设计方向。
收稿日期:2010-08-07
28
--SOFTWARE DEVELOPMENT AND DESIGN软件开发与设计
4.1查询概念模型
根据图2概念模型,查询一个学生的成绩集合就很简单,首先根据查询需要建立一个Course视图,选择各表中需要的字段,利用概念模型框架设计查询所有已开课程的成绩信息代码:SELECT C ourse.学号ID,Course.课程ID,Course.班级, Course.课程ID,Course.成绩,Course.课程类别FROM Courses as Cousre WHERE Course IS OF(TestCourse)and(Course IS NOT OF(TypeA)OR TREAT(Course AS实践类课程). IsPracticeCourse=False)
此查询中不需要开发人员编写任何联接,实体是强数据类型,关系通过属性来遍历,根据层次内的类型来过滤集合。Web应用程序框架经常需要将同一数据通过不同的Web应用程序展现为不同的视图。例如,向没有授权的Web客户端展现的内容往往是信任客户端展现内容的子集,同样在应用程序框架内部处理的数据架构也与在进行商业事务交换的数据架构大不相同。ADO.NET实体框架将不同的概念模型映射到同一数据库架构,从而满足了这些类型场景的需求。
4.2将结论建模为对象
在ADO.NET实体框架中,将查询结果以DataReader类型返回,并可以对其进行扩展,上面的例子将返回结果表示为记录。有了实体,就可以对同一个概念模型编写查询,返回强类型的业务对象结果,当把结果建模为业务对象时,关系就可以通过对象的类型属性进行导航和更新,而不需要操作大量的外键值[5]。
以下代码是业务对象使用概念模型的例子,通过查询概念模型将Courses中课程为考试课且成绩>=60分的结果返回为对象,通过课程类别集合的属性导航,对数据库的更改通过对SaveChanges()的调用进行保存:
//定义一个查询字符串MySQL
string mySql=”SELECT*FROM courses AS course WHERE EXISTS(SELECT CourseType From course
WHERE course.学号ID=LogStudentID and course.课程类型=‘专业课程’)”;
courseInventory inventory=new courseInventory();ObjectQuery foreach(Course Course in CourseResultsList) {if(Course.成绩<60or Course.考核方式=‘考查’) Course.Grade.Remove(CourseID); } inventory.SaveChanges(); 与前面的概念查询实例一样,这里的查询中也不需要联接,对象的返回结果是强类型和可更新的,对两个不同类型关系的导航、修改是通过属性和方法来完成,而不需更新大量键值。 5结语 对象模型和关系模型在数据库存储上不存在阻抗不匹配,面向对象的程序设计和面向数据库的程序设计应该是一致的,而不应该是对立和冲突的,设计过程中直接向数据库存储框架编写应用程序,存在很多问题,它既不能控制应用程序对象模型,也不能控制存储架构。数据库的规范化程度使其很难直接在应用程序中使用,从而使应用程序很难对其进行跟踪和维护。ADO.NET实体框架允许应用程序使用应用程序概念(如强类型、继承和关系)来建立概念模型,该概念模型可以映射到各种存储架构中。映射是在应用程序外声明的,因此当数据库架构的访问模式发生改变时,仅需要更改映射,应用程序便可以继续使用同一查询,在同一概念模型提取同一结果。 参考文献 [1]张光华,李晓红.基于三方架构的存储备份系统设计与实 现[J].软件导刊,2009,02:157-159. [2]陈志忠.数据存储的架构方式与选择[J].现代远程教育 研究,2007,02:66-68. [3]汪春妍,刘洪星.基于XML的数据仓库概念模型设计[J]. 微计算机信息,2009,06. [4]黄光芳.面向接口编程在三层架构系统中的设计及应用 [J].计算机应用与软件,2009,06:133-135. [5]马瑞新.ASP.NET2.0程序设计安全教程[M].清华大学出 版社,2009. DG模型当然也有劣势,最大的问题就是,如果完全基于Data Flow(数据流)模型,模拟一系列的加工过程,执行效率将会无比低下,非常慢。XSI中也存在这方面的问题,在XSI中工作的时候,总是需要小心的保证历史不会堆积得太多。然而为什么没有人会觉得Maya比MAX慢得多?因为Maya在DG的基础上,提出了PUSH-PULL。 PUSH-PULL不是节点架构,而只是节点更新的法则,它规定了节点什么时候会被更新。根据一般的数据流模型,当一个场景需要更新的时候,所有的节点都将会更新。如果每个节点都很简单,这当然不成什么问题。假定每个节点的更新需要0.1秒时间,网络每次需要0.6秒来更新,显然不是什么问题。但是,通常制作中的场景,其复杂度都是1000倍以上,那么仅仅是更新一下视图,就需要600秒以上。这是整整10分钟,PUSH-PULL很好地缓解了这一矛盾。 MAX是不是节点架构其实不是那么重要,MAX到今天已经相当成熟。不过MAX节点没有像Maya那样表现的那么明确罢了。Maya,XSI和MAX的节点的区别在于Maya,XSI几乎任何操作节点都能被查看。对于操作也完全可以不理会这些后台工作,MAX也是,但是MAX在界面里却没有完全显示出来,而且很多节点是无法看到的,因为被整和成一套工具了。Maya、MAX对物体每个点的操作。都可以观察到,Maya更直观。 Maya的节点可以做到别的软件是暂时无法做到的,它的节点遍布建模、材质、动画、动力学系统等Maya的各个模块,因为Maya本身就是一个节点概念的东西。处处体现着节点。因此材质的节点并非只能材质所用,无论是动画、特效统统可以用,也可以说,场景所有的元素都可以互联。 参考文献 [1]陈跃琴.Maya角色动画技术.清华大学出版社,2001. [2]John Wiley&Sons.mental ray for Maya,3ds Max,and XSI 出版.2001. (上接第7页) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 29 --
