MayaMEL打造螺旋曲线(含脚本代码).pdfVIP

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

文档评论(0)

1亿VIP精品文档

相关文档