大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
[摘 要]本文针对具体的场景设计,引入MEL语言,详细阐述了Maya的二次开发的流程,通过比较进而说明基于三维设计软件平台的二次开发在三维设计建模中的可用性。 [关键词]MayaMEL语言场景设碧枣计
专注于为中小企业提供成都网站设计、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业赤峰林西免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
[中图分类号]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语言,GO的优势是什么?
1、 Go有什么优势
Go的优势
1:性能
2:语言性能很重要
3:开发者效率纤做不要过于创新
4:并发性通道
5:快速的编译时间
6:打造团队的能力
7:强大的生态系统
8:GOFMT,强制代码格式
9:gRPC 和 Protocol Buffers
可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。
静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的毁耐衡时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。想学习这门编程语言,首先要找到一份不错的教程,兄弟连go语言+区块链培训最近新出了一套go语言的教程,老师讲的非常不错!
伴随着“区块链”概念在全球范围内的热议,金融、物流、征信、制造、零售等日常生活场景中也悄然加入了相关区块链技术应用。有专家表明,未来区块链将与人们的生活息息相关,区块链技术与大众日常生活融合是大势所趋。
区块链市场的火热引发了大量以区块链技术型人员亩此为基础的人才性需求,区块链人才受热捧程度呈光速上升。据拉勾网发布的“2018年区块链高薪清单”显示,腾讯、小米、苏宁、京东等国内企业巨头发布了众多高薪区块链岗需求,力图探索区块链相关技术与应用。清单中同时指出,高薪岗位以区块链相关技术型岗位需求为主,其中苏宁和科达月薪最高已给到100k。
极大的技术型人才市场需求,必然会带动整个区块链培训市场的爆发式涌现与增长。培训模式大都可分为线上培训、传统IT机构培训及主打高端形式的线下短期训练营等几种形式,但市场火爆演进过程中也充斥着种种区块链培训乱象:讲师资质注水化、甚至是最基本的姓名都不敢公开,课程大纲不透明、授课质量缩水化,课时安排不合理及培训收费标准参差不齐等等。
在整个区块链培训市场规模化发展之下,兄弟连教育携手资深区块链专家尹成及其清华水木未名团队成立区块链学院,利用其专业强大的技术讲师团队、细致全面的课程体系及海量真实性企业区块链项目实战,旨在深耕区块链教培领域,并为企业为社会培养更多专业型技术人才。
尹成 资深区块链技术专家 兄弟连区块链学院院长毕业于清华大学,曾担任Google算法工程师,微软区块链领域全球最具价值专家,微软Tech.Ed 大会金牌讲师。精通C/C++、Python、Go语言、Sicikit-Learn与TensorFlow。拥有15年编程经验与5年的教学经验,资深软件架构师,Intel软件技术专家,著名技术专家,具备多年的世界顶尖IT公司微软谷歌的工作经验。具备多年的软件编程经验与讲师授课经历, 并在人机交互、教育、信息安全、广告、区块链系统开发诸多产品。具备深厚的项目管理经验以及研发经验, 拥有两项人工智能发明专利,与开发电子货币部署到微软Windows Azure的实战经验。教学讲解深入浅出,使学员能够做到学以致用。