资源描述:
《获取多边形物体横截面轮廓线的Maya插件开发》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、音画工Skill&Art坊获取多边形物体横截面轮廓线的Maya插件开发□中国传媒大学动画学院李文曦随着人们对于视觉产品的要求越来越高,制作计算机动画所用到的模型的精度也在日益提高,虽然高精度模型能给予观众更多的细节,但是高精度模型也会消耗大量的资源,过高的模型精度常常会引起各种各样的问题,例如:随着三维扫描仪的逐渐普及,在高端的电脑动画制作中,往往都是用艺术家雕塑好的泥模通过三维扫描仪扫描进电脑中来代替我们传统所说的建模的这道工序。这样可以让艺术家用自己更为熟悉的手段在先期就给制作人员一个直观的角色形象。虽然通过三维扫描仪输入的高精度模型基本上可以囊括
2、艺术家所要表现的各种细节。但是在实际制作过程中常常因为硬件资源所限需要在某些步骤降低模型精度以达到更好的运行速度。特别是制作角色动画这一工序,过高的模型精度严重影响到艺术家实施预览其制作的角色的动作,这对于角色动作节奏的把握十分不利。而先前解决这个问题的方法是让有经验的建模师参考原雕塑的结构,按照高精度模型为基准再通过人工从新建立一个低精度模型用于制作动作,但这种方法费时费力。如果我们能找寻一种方法能让电脑重新生成一个低模就能大大提升制作速度,对于成本的降低有很大的作用。另一个需要解决的问题是在Maya现有的转换工具中没有polygontoNURBS这
3、个功能。但是由于这两种建模方式各有所长,常常艺术家为了达到更好的效果需要结合使用。但是因为各种类型的物体在计算机中处理的方式不同,因此在Maya中入如果需要进行转换,那么就必须把多边形物体先转换成表面细分物体,然后再由表面细分物体转换成NURBS曲线。由于步骤复杂,操作难度较大。这种方法不仅使最终的曲面结构十分的混乱,并且在使用上存在着较多的限制,实用意义不高。因此研发一种能进行polygontoNURBS转换的工具对与动画制作有很高的使用价值,只有能让一个模型在不用的曲面下相互高质量的转换才能充分发挥各种曲面的优势。针对以上两个问题,我们首先分析NU
4、RBS与多边形的差别。NURBS能够比传统的网格建模方式更好地控制物体表面的曲线度,从而能够创建出更逼真、生动的造型。NURBS是通过在3D建模的内部空间用曲线和曲面来表现轮廓和外形。它们是用数学表达式构建的,NURBS数学表达式是一种复合体。而多边形物体在计算机中是通过顶点以及相关顶点的各种信息的集合来表示的。由于定义的不同,因此要想得到高质量的NURBS模型,关键的一步就是要对高精度的多边形物体的表面信息进行重新采样,而这个采样结果要适合NURBS的创建。Maya本身由于其结构的优势和可扩展性在计算机动画行业中已经成为非常重要的一种制作工具,它最大
5、的特点就是优良的可扩充性,在这里我们利用其提供的强大的API(应用程序接口)编写一个插件用来获取多边形物体表面点的坐标信息。38音画工Skill&Art坊一.Maya插件的原理插件是经过编译和链接的,最终的插件针对目标运行平台进行了全面的优化,它并不需要像MEL一样进行实时的解1.Maya的运行原理以及DG/DAG等概念释和反馈,这节约了很多的时间。开发人员使用MayaAPIMaya由于它极强的可扩展性在计算机动画中已经成生成插件,而Maya的插件可以实现几乎所有Maya的功能。为了非常重要的一种制作工具,在很多大型公司,Maya用户可以利用它创建命令
6、、节点、工具、文件转换器、变扮演着技术导演们最得力的助手。Maya的整个系统是由形器、材质、控制器、场、发射器、物体和解算器等基本三大部分组成的:图形用户界面(GUI),MEL命令引擎和上Maya中需要用到的一切。而在我们这个插件里,我们DG(DependencyGraph)。其中DG是整个Maya运行的基就要运用API来创建一个自定义节点来解决我们的问题。础框架,DG里面的信息都被存储在节点里。而节点的属性就是用来描述各个节点的特征。因此Maya是通过这种3.MEL运行方式及其特点节点网络结构来处理所有的数据的。在进行数据处理时,MEL即MayaEm
7、beddedLanguage,它是一种专门为客数据是按照由上游节点至下游节点的单向流动顺序进行处户设计的在Maya里面运行的语言。由于它简单的结构和理。当场景发生改变即需要重新计算输出刷新数据的时语法,它比C++的开发环境要简单易用得多。MEL是一候,Maya采取一种名为PUSH—PULL的方法刷新节点网络。种解释性语言,不需要编译和链接就能直接运行,这种性这种方法不是每次都全部重新计算所有的节点,而是只刷质可以使用户立刻看到自己程序的运行结果,很大程度上新需要刷新的部分而其他部分的节点都保存着当前的数提升了小型插件的开发速度。但也是因为它的这种解释性
8、,据。它通过在各个节点设置一个用来表示是否需要刷新的需要先转换成机器语言,然后才能被执行,虽然