MayaMEL教程之mel打造螺旋曲线了解Maya的人都知道Maya本身不可以创建螺旋曲线,这给我们在建模电话线、弹簧等具有螺旋结构的模型时带来了很多不便。那么怎样解决这个问题呢?就目前来看,主流的解决方法是采用外部插件,但由于需要到国外网站上下载,普通中国用户很难发掘到;而通过手动创建螺旋曲线的方法不仅方法笨拙,效率低下,而且在很多时候也很难满足我们的工作要求。今天小编就通过一个简单MEL程序来达到我们的要求,也希望借此抛砖引玉。熟悉Maya的人都知道,Maya的任何一条命令都是一个MEL口令,例如我们在Maya中创建一条样条曲线,在Maya的脚本编辑器中就会显示这样的一条MEL口令:“curve-d3-p0-p0-p0-p0-p0-k0-k0-k0-k1-k2-k2-k2;”而我们创建螺旋曲线的思路也正基于此。首先看代码:mand="curve-d3";for($i=1;$i<=100;$i++){float$x=5*sin($i);float$z=5*cos($i);float$y=$i;$command+="-p"+$x+""+$y+""+$z;};mand; 解释: 第一行——Maya的mel语言规定,变量前必须添加符号$。curve是mel命令,即创建曲线;-d定义曲线精度为3;该行的含义就是定义字符串变量“$command”。第二行——执行for循环语句。定义整数$i,自增100次,其实就是表示有100个CV点。第四行——定义实数$x,并将5*sin($i)赋值给$x。而第五行、第六行的语法与第四行相同。在本例中,第四行、第五行、第六行是程序关键,其实这三行就是螺旋线的数学方程式。第七行——将字符串合并,也就是获得一个创建曲线的完整表达方式,类似于:curve-d3-p0-p0-p0... 第九行——eval命令是求函数返回值,也就是将我们的程序计算结果输出。这一步很重要,如果没有这一步,用户可能看不到你所创建的曲线。总结: 该mel程序的扩张性很强,用户可通过修改螺旋线的参数,进而获得其他形式的曲线。例如,当将螺旋线的半径5修改为$i,则可以获得圆锥螺旋线。为方便大家以后的建模,现附上经过修改后的第三方插件,源代码:globalprocinthelix_startSequence(){float$h,$t,$r1,$r2,$a,$k,$t0;int$prec,$encs,$encr,$encp,$helpVar;string$nm,$NM;$nm=`textField-q-textname`;$NM=$nm+helix_checkName($nm);$h=`floatSliderGrp-q-valueheight`;$t=`floatSliderGrp-q-valueturns`;$r1=`floatSliderGrp-q-valuer1`;$r2=`floatSliderGrp-q-valuer2`;$prec=`intSliderGrp-q-valueprec`;$helpVar=`radioButtonGrp-q-slradioButtons`;if(`textField-q-enA`){$a=`textField-q-textA`;$k=`textField-q-textK`;$t0=`textField-q-textT`;}
Maya螺旋曲线MEL 来自淘豆网m.daumloan.com转载请标明出处.