十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
[摘 要]本文针对具体的场景设计,引入MEL语言,详细阐述了Maya的二次开发的流程,通过比较进而说明基于三维设计软件平台的二次开发在三维设计建模中的可用性。 [关键词]MayaMEL语言场景设碧枣计
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、网站建设、外贸营销网站建设、托克托网络推广、微信平台小程序开发、托克托网络营销、托克托企业策划、托克托品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供托克托建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
[中图分类号]TP[文献标识码]A[文章编号]1007-9416(2010)03-0065-03
1 引言
Maya 作为Alias―Wavefront 的旗舰产品,现已成为国际3D 设计制作界的主流软件。它适用于专业角色动画、电影特技、影视广告等。并以其灵活、开放、高速和高效而备受推崇。
MEL 是Maya Embedded Language (Maya嵌入式语言)的缩写,是一种强大的命令和脚本语言,让你直接控制Maya 的特征、进程和工作流程。Maya界面的几乎每一个要点都是在MEL指令和脚本程序上建立的。由于Maya给出了对于MEL自身的完全的访问,你可以扩展和定制Maya。通过MEL,你可以进一步开发Maya使它成为你和你的项目的独特而创新的环境[1]。
2 MEL语言对Maya的进一步开发
目前的主流动画设计软件都或多或少的给用户提供了一个编程接口以进行开发。Maya则使用MEL语言对其进行开发。MEL作为一种脚本语言,受脚本解释器(Command Engine)和Maya内置命令的影响,还是有很多局限的。MEL不能使用ActiveX插件,还只能根据Maya中已有的命令(dll或mll中注册过的命令)进行扩展,无法直接调用dll模块中的函数。我们平常使用的dll或exe程序文件是经过编译器优化的二进制文件,命令的执行速度非常快,而MEL脚本语言是文本,有一个脚本解释器分析的过程,命令的执行速度较慢,大约要慢20倍。MEL不支持指针,不能对内存进行直接操作。这就导致了很多方面的效率超级低下,对内存的间接操作可能会使运行速度降低100倍甚至1000倍以上。不过这样也有一个不容争辩的好处,就是不会产生内存泄漏,保障了Maya的稳定性。尽管如此,考虑到MEL在场景设计中的许多优势,如快速搭建重复的场景,MEL仍不失为一个公认的选祥慧洞择。
2.1 流程简化
Maya中的所有的按钮命令都是通过MEL来调用的,你可以记录并把其中一些命令组合起来,通过一键或按钮来自动执行这一组命令,就像PhotoShop里的Actions一样。在场景设计中,有些环节步骤非常繁琐,通过MEL命令将这些步骤整的命令整合在一起,大大简化了操作的流程。
2.2 功能扩展
对谨枯于一个项目来说,必然有各种特定的需求,这些是Maya库中的基本工具所不能满足的,但是MEL可以按用户需求编辑设计各种细微的场景并封装成块调用,这大大扩充了Maya的功能,使Maya运用起来更友好,更顺手。
2.3 界面友好
MEL有一个很重要的功能是编写界面,Maya的整个界面是用MEL编写的,Maya中的所有界面元素都可以编写到你自己的MEL程序界面中,你可以用MEL跟据自己的习惯定制自己的操作界面。
实际的应用使我们感到:MEL是Maya使用最方便和控制最灵活的编程接口。Maya中的每一步操作都是在执行MEL,因此Maya的任何一个功能,能做的任何一项操作,都可以加到你自己的MEL程序中。正如Maya的图形用户界面(GUI)也是由MEL来控制的。既然在Maya的每个角落都有MEL的存在,那么,对MEL了解得越是深入,Maya就会运用的越好,在场景设计中也会更加得心应手。
3 MEL在场景设计中的应用
3.1 草地建模
场景设计中经常需要在户外铺设草地。草地的制作可以通过对单根小草建模,然后批量复制,在对其细节进行修改,但即便如此,同样是草地,由于区域不同,某个场景下完成的草地效果未必能适合其他场景的需要,所以必须重新建模。这种建模修改的工作非常繁琐,而且耗时。
3.1.1 通过MEL对草地建模提速
草地的特征是草的高度参差不齐,草的方向也会随生长长短倒向不同的方向,通过MEL对这些细节进行编写,可以制作各种样式的草地,由于草地的特征数据是可以手动修改的,这给与设计极大的灵活度,所以创建成后只需修改这些参数就能迅速生成场景设计中需要的样式。结果如图1所示。
3.1.2 基于MEL的草地建模流程
●制作一根草,加变形器
string $grassName[]=`polyCone -r $radius -h $height-sx3-sy 10-sz 0 -ax 0 1 0 -tx 1 -ch 1`;
setAttr ($grassName[0]+".translateY") ($height/2);
setAttr($grassName[0]+".scaleX") 0.25;
string $bendName[]=`nonLinear -type bend-lowBound 0 -highBound $height -curvature $curvature`;
setAttr($bendName[1]+".translateY")0;
草的模型是三棱锥,用polyCone建立单根草的模型,赋予其高度h,底面边数sx,棱划分数sz,再用缩放scaleX对其进行变形,令底面沿x轴方向由顶点向底边靠近,以体现草扁的特质,然后设置弯曲轨迹曲线curvature[2],显出草的弯折。效果如图2所示。
●随机放置每根草
global proc genGrass(float $minX,float $maxX,float $minZ,float $maxZ, int $num,string $style)
{
int $i;
for($i=0;$i 本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文 ●带入具体场景需求的参数,生成草地。
generateGrass(x方向最小值,x方向最大值,z方向最小值,z方向最大值,草的个数,“草的长短”)
genGrass(-10,10,-10,10,20,"long")
效果如图3所示。
经过以上流程,一块草地的设计就初步完成了。实际设计中还要对草地进行渲染,加上光线,这里重点在于介绍草地模型的建立,故不赘述。
可以看出,我们只要修改genGrass()中的参数即可生成各种样式的草地,但是这样在工作中,如果每次设计草地场景都要复制整段的MEL,再修改参数也是不人性化的。因为复制中如果漏了一个符号很可能导致整段MEL语言就无法运行,所以这里就要再次利用MEL对以上的模块进行封装。
3.1.3 基于MEL的草地建模脚本的封装
事实上,我们在使用Maya时,在菜单中创建某个物体,选择某个工具,对某项操作进行参数设置,在属性编辑器中对物体的属性进行调节,等等操作都是在Maya提供的用户图形界面上进行的。这些用户图形界面的使用方法已经以MEL命令的方式公开给了用户,使我们可以通过这些命令,创建自己的界面,在界面上输入或选择相关参数,调用编写好的脚本,起到封装的效果。
●定义图形界面框体
window -title "makeGrass" -w 400 -h 300 grassWin;
通过window命令建立了窗体的宽w,高h,以及formLayout的标题title。
●划分框体份数
string $form=`formLayout-numberOfDivisions 3`;
通过numberOfDivisions,将formLayout划分为3份,这在后面的用attachPosition定位时会起到作用。
●定义各参数按钮
floatSliderGrp -label "mindirectx" -field true -min -100 -max 0 minX;
floatSliderGrp -label "maxdirectx" -field true -min 0 -max 100 maxX;
floatSliderGrp -label "mindirecty" -field true -min -100 -max 0 minY;
floatSliderGrp -label "maxdirecty" -field true -min 0 -max 100 maxY;
floatSliderGrp -label "number" -field true -min 1 -max 1000 num;
radioButton -label "long" long;
radioButton -label "normal" normal;
radioButton -label "short" short;
string $but =`button -label "make grass" -command genGrass`;
根据设计需要,通过floatSliderGrp.生成拖动条,可以定义场景范围,快捷的选择场景需要的数据,通过radioButton生成单选按钮,选择草地的类型。最后设置功能按钮,用-command命令将生成草地genGrass模块与button按钮联系起来。
●显示封装模块操作窗口
showWindow makegrass;该命令将之前设置的按钮属性以图形界面显示出来,效果如图4所示。
通过以上阐述,繁琐重复的草地场景设计就可以通过几个拖动条,几个单选框方便的完成。
3.2 MEL运用的在场景设计中的收益
MEL的运用在设计过程中无疑大大节省了时间,降低了工作人员的工作强度,效率也得到极大的提高,制作人员可以将更多地精力投放到其他诸如场景灯光,道具设计等更重要的工作中去。与之前的重复建模,细节修改相比,运用MEL后一个同样规模的场景设计从之前的1个/2小时缩减到1个/10分钟,并且完成每个场景所需时间随着工作时间增长,前者所需时间会进一步增加,而后者则保持不变,可见MEL带来的不仅仅是单个任务的效率提高,对项目整体也是进一步的优化和提高。
3.3 MEL在场景设计中的应用扩展
MEL功能强大,上述草地场景只是其运用的很小一部分,但通过该设计,可以使我们了解到Maya出色的个性化控制, 其极大的灵活性和良好的开放性可见一斑。运用想象力, 改变上面的程序,还可以变化出更多更出色的效果[3]。MEL不仅在静态场景中表现出众,在设计动态场景如小溪缓缓流下高山,原子弹模拟爆炸,遨游太空行走一样表现不俗,Maya 为实现上述种种效果提供了一个丰富的工具库,而MEL使得动画师可以简便地设置模型或粒子关系,来精确地模拟真实世界中存在的一些作用力(如摩擦、重力和风),而这在过去用二维Flash 软件要花上几个小时的时间用关键帧方法才能实现。
4 结语
有效地使用MEL可以加深对Maya理解 。通过在Maya 的工作流程中使用MEL 语言进行开发工作,可以给你提供最大程度的流程简化,从而节省时间,降低强度,提高效率。同时,人机界面的改进也是亟待解决的问题,现有的工具在实现功能的前提下界面还不够友好,有的工具需要使用者进行简单的学习才能使用。创建简单易学,功能强大,适合设计师自身的界面也是工作的重要部分。MEL不是运用Maya必须精通的,但掌握MEL将会让Maya更好的为我们服务。
[参考文献]
[1] 陈绿春. Maya8.5从新手到高手[M].北京:清华大学出版社,2007.
[2] CompleteMayaProgrammingAnExtensiveGuide[M].北京:电子工业出版社.
[3] 陈汗青,吕杰锋.数码设计艺术[M].上海:人民美术出版社,2004.
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文
go-captcha, 一个简洁易用、交互友好、高安全性的点选行为验证码 Go 库 ,采用 “验证码展示-采集用户行为-验证行为数据” 为流程,用户无需键盘手动输入,极大优化传统验证码用户体验不佳的问题,支持PC端及移动端。
v1.2.3版本后大图默认尺寸为:300×240px,小图默认尺寸为:150×40px。
默认情况下内置了定制的字体。如果设置了其他中文的文字,则可能需要设置字体文件。
你可以拷贝实例中 "__example/resources" 的图片资源和字体文件到你的项目中使用。
1.MicrosoftVisualC++
这是由全球三大信息公司之一的微软公司推出的一款免费C++开发工具,并且集成了便利的除错工具,和微软Windows视窗操作系统应用程序接口、三维动画DirectXAPI、Microsift.NET框架,因软件的自动完成功能和语法高亮的功能而著称。
2.MicrosoftVisualStudio
这也是被世界500强公司之一的微软公司推出的最流行的Windows平台应用森灶程序的集成开发环境之一,是一个基本完整的开发工具集,内部集成了UML工具、代码管控工具、集成开发运春亩环境等软件生命周期所需要的大部分工具。
3.Eclipse
这是一个基于Java的可扩展开发平台开放源代码的编程软件,很多用户喜欢将Eclipse当作Java集成开发环境(IDE)来使用,而这款软件还包括针对希望扩展Eclipse的软件开发人员的插件开发环境。
十大编程软件排行榜(编程软件有哪些推荐)
4.Dev-C++
这款软件是拥有功能简介、技巧提示和支持多语言等众多优点,是在Windows环境下适合初学者使用的一款轻量级C、C++集成开发环境,是一款遵守GPL许可协议分发源代码,集合众多自由软件的编程软件。
5.Notepad++
这款软件是被誉为程序员必备的应用Notepad++是Windows操作系统下的一款免费文本编辑器,支持多国语言编写功能,于Notepad相比这款功能更加强大,且支持数十种计算机程序语言。
6.MyEclipse
这款软件是以Eclipse为基础加入发出的一款企业级集成开发环境,是主要用于Java、JavaEE以及移动应用的开发的十大编程工具之一,而其配合着CodeMix的使用支持也十分广泛。
7.JDK
JDK是由SunMicrosystems开发的一款java编程软件,分为多个版本,可应用于移动和嵌入式设备,自JAVA语言推出以来,JDK就成为使用最广泛的编程软件,而被很多认可就代表着学号JDK是学好Java的第一步。
8.Code::Blocks
这款软件是集开放源码、免费和全功能于一体的跨平台C、C++集成开发环境于一体,使用了著名的图旁森形界面库wxWidgets(3.x)版,是热门C语言编程软件,支持工程管理、项目构建、代码完成等各种功能。
9.Gcc
这款软件是由GNU开发的包含了C、C++、Objective-C、Fortran、Java、Ada和Go语言前端的编程语言翻译器,现在已经成为大多数类Unix操作系统采纳为标准的编译器,支持多种计算机体系结构芯片。
10.SublimeText
这款软件是收费制的现金代码编辑器软件,是一款拥有漂亮用户界面和强大功能的跨平台文本编辑器,支持多种编程语言并拥有优秀代码自动完成功能并支持VIM模式的编程软件,软件还具有良好的扩展能力和完全开放的用户自定义设置。