maya中mel语言初级教程

maya中mel语言初级教程
maya中mel语言初级教程

MEL 语言初级教程(一)

作者:佚名文章来源:网上收集点击数:436 更新时间:2005-5-26【字体:小大】

首先,我们不讲枯燥的语法,来点实在的。

打开Maya的脚本编辑器(Window->General Editors->Script Editor),脚本编辑器分为上下两栏,上栏为历史栏

,显示的是曾经操作的命令及其结果以及错误、警告等。下一栏是命令输入栏,我们可以在其中输入相关命

令。请试着输入如下语句:

window -vis true;

然后按下Ctrl+Enter键,是不是立即弹出了一个标题为"window1"的窗口?那么这句话是什么意思呢?window

是一个命令,表示我们要创建或修改一个窗口。vis是visible的缩写,即“可见”,-vis是window 命令的一个开关

,true则是该开关的参数,意为“是”。连起来说就是:创建一个窗口并使它可见。于是我们就得到了一个缺

省的窗口,它的标题栏为"window1",名称也为"window1",但注意名称我们看不见,但从历史栏的最后一栏

我们可以得知。下面我们更改该窗口的标题,在输入栏中输入:

window -e -t "ChinaDV" window1;

按下Ctrl+Enter键执行命令。我们看到,窗口的标题变成了"ChinaDV"。这句话又是什么意思呢?e是指edit,t

是指title,表示我们要编辑名称为window1的窗口,把它的标题栏改为"ChinaDv"。当然,我们也可以用一条语

句在生成窗口的同时指定窗口的标题、名称、长宽等属性。试着输入:

window -w 450 -h 600 -vis true -t "Goomoo Studio" myFirstWindow;

并执行之。这次我们得到了一个更大的窗口,它的宽度为450象素,高为600象素,标题为"Goomoo Studio"

,名称为"myFirstWindow"。

关闭标题为"ChinaDV"的那个窗口,将窗口"Goomoo Studio"调小些(怎么调?用鼠标呗!),使之不挡住主网

格。再在命令栏中输入:

sphere;

并执行,看到了什么?视图的中间出现了一个nurbs球体。所以,sphere命令用来生成nurbs 球体。

下面我们要实现这样一个目的:在窗口Goomoo Studio上生成一个按钮,每单击一次该按钮,在视图的随机

位置创建一个半径随机且小于1的nurbs球体。请输入以下两行:

columnLayout;

button -l "Create Random Sphere" -c " sphere -p (rand(-12.0,12.0)) (rand(-12.0,12.0)) (rand(-12.0,12.0)) -r (rand

(1.0));";

输入时请注意大小写和括号、分号和引号,不要输错。执行完后,我们发现,窗口Goomoo Studio上出现了

一个标题为"Create Random Sphere"的按钮。那么,这两句话又是什么意思呢?

欲知详情,请听下回分解。

下课!

作业:单击"Create Random Sphere"按钮1000次,体会mel语言带来的乐趣!

MEL 语言初级教程(二)

作者:佚名文章来源:网上收集点击数:487 更新时间:2005-5-26【字体:小大】

上节课的作业完成得怎样?要单击1000次才能生成1000个随机的球,太累!今天我们的目标是只单击一次

就生成1000个随机的球,让我们为了此目标而奋斗吧!

先解决上节课悬而未决的问题。在上节课中,我们看到了一个很长的命令:

button -l "Create Random Sphere" -c " sphere -p (rand(-12.0,12.0)) (rand(-12.0,12.0)) (rand(-12.0,12.0)) -r (rand

(1.0));";

这里,button表示要创建一个按钮,l即label,也就是要指定按钮上面的文字,而“Create Random Sphere”则

是该开关的参数;c是command,表示单击该按钮后所要执行的命令。注意:这些命令要用双引号括起来。

这里,我们要执行的命令是:

sphere -p (rand(-12.0,12.0)) (rand(-12.0,12.0)) (rand(-12.0,12.0)) -r (rand(1.0));

p即position,指定球的位置,用三个浮点数(即实数)分别表示它的x,y,z坐标,这里x,y,z 的值全为rand(-

12.0,12.0),这是什么意思呢?rand()是一个数学函数,它可以带一个或两个参数。当他带一个参数的时候,

比如rand(10.0),表示从0到10.0中间随机取一个值,这个值可能是3.14159,也可能是2.71828,当然也可

能是7.88414(吃点88试一试,:));当他带两个参数的时候,比如rand(-12.0,12.0),表示从-12到12之间取一

个随机的实数,因此有可能是-9.600,3.245,12.0等。你可以在脚本编辑器中试着输入下列命令来体会

rand()函数:

print(rand(10));

print(rand(-10,10));

命令的结果将显示在命令历史栏中。

r即radius,表示球的半径。

我们再在命令栏中输入下面一段:

window -vis true;columnLayout;

button -l "Create Random Sphere" -c " int $i;

for($i=0;$i<1000;$i++)

sphere -p (rand(-12.0,12.0)) (rand(-12.0,12.0)) (rand(-12.0,12.0)) -r (rand(1.0)); "

按数字键盘上的Enter键执行之,然后单击窗口上的“Create Random Sphere”按钮。****严正声明****:死

机了可别怪我!

哎呀!我要上班了,明天再写。

下课!

MEL 语言初级教程(三)

作者:佚名文章来源:网上收集点击数:534 更新时间:2005-5-26【字体:小大】

执行完上次的命令后,你的机器死过去了吗?没有?那好,这样的机器才有做三维的资格啊。

在上节课的那个更长的命令中,我们看到了三个陌生的东西:“int”、“for(;;)”和“$i”。先从简单的讲起。

$i是一个自定义的变量,它和物体的自定义属性差不多。变量名只能由字母、数字和下划线组成。那么如何

理解变量呢?你可以把一个变量想像成一个盒子,这个盒子里可以存放各种数据,包括整数、实数、字符串

、矢量等。“int”即“integer”是一个定义符,“int $i”指明了代号为$i这个盒子里只能存放整数,此外比较常用

的有:float(实数),string(字符串)等。

注意:在mel中,所有的变量前都需要加一个“$”符号。为什么要这样呢?我想有两个方面的原因:一是与

Maya系统所定义的变量区分开来,以免发生冲突;二是A|W公司可能缺钱花,这样规定之后呢,看着mel脚

本上满眼的美元,心里那个爽啊!哈哈!!

for(;;)语法可就有点难了,大家要可要认真学罗。还是用实例来讲解吧,输入:

int $i,$sum;

$sum=0;

for($i=1;$i<1001;$i++)

$sum=$sum+$i;

print($sum);

执行完后,我们看到了结果:500500。这就是从1加到1000的和(是否想起了高斯?)。第一句定义了两

个整型变量:$i和$sum,$i用来控制循环,$sum用来存放相加的结果。第二句首先将结果置零。

下面就是for循环了,for循环首先执行第一条语句:$i=1,它将变量$i赋值为1;然后执行第二句:$i<1001

,判断$i的值是否小于1001,如果是,就执行$sum=$sum+$i;显然,这条语句马上被执行了,所以,

$sum=0+1=1;(否则,就跳出循环,执行print($sum);这条语句)然后才执行$i++,这是什么意思呢?这表

示变量$i的值自加1,即$i=$i+1,所以$i=1+1=2,然后再次进行判断$i的值是否小于1001,如果是,则再

次执行$sum=$sum+$i;显然,这次又执行了,$sum的值由1增为2...如此循环不已,直至$i的值大于1000为止

,所以这个循环一共执行了1000次,$sum的值也就从1加到1000。说了这么多,不知大家听懂了没有,如

果还没懂,看看附图吧。另外要注意,如果循环体有多条语句,这些语句要用花括号括起来,比如:

float $i,$sum,$multi;

$sum=0;

$multi=1;

for($i=1;$i<51;$i++)

{

$sum+=$i;

$multi*=$i;

}

print($sum);

print("\n");

print($multi);

显示结果:

1275 30414093201713376000000000000000000000000000000000000000000000000

这段程序用来计算1加到50的和与1乘到50的积。Maya可真是厉害,这么大的数都算得出来,比微软的计算

器可强多了!

这里“$sum+=$i;”和“$multi*=$i;”是mel的简写法,它们分别等同于“$sum=$sum+$i;”和“$multi=$multi*$i;”

此外,for语句还有许多变异的写法,这里暂时就不涉及了。

以上全是枯燥的语法,下面来点实用的东西。请在脚本编辑器中输入:

window myWindow;

columnLayout;

intSliderGrp -l "Number Of Spheres:" -field true -min 1 -max 1000 -v 50 slider;

button -l "Create Random Sphere" -c " int $k=0;

int $n=`intSliderGrp -q -v slider`;

for(;$k<$n;$k++)

sphere -p (rand(-12.0,12.0)) (rand(-12.0,12.0)) (rand(-12.0,12.0)) -r (rand(1.0));

";

showWindow myWindow;

执行完后,得到了一个有滑动条和按钮的窗口,这样我们就可以通过滑块来控制生成的球体的数目了。

今天埃了老板K,心情不太好,写出来的东西乱糟糟的,大家不要扔鸡蛋罗。

下课!

MEL 语言初级教程(四)

作者:佚名文章来源:网上收集点击数:365 更新时间:2005-5-26【字体:小大】

执行上节课的最后一段后,我们的程序终于有了人机交互功能,可以由用户来控制生成的球体数目了。我先

来逐句讲解上段程序的意思。

第一句,window myWindow;,创建一个名称为myWindow的窗口,但并不立即显示出来。

第二句,columnLayout;,设置窗口的控件布局为列布局。

第三句,intSliderGrp -l "Number Of Spheres:" -field true -min 1 -max 1000 -v 50 slider;,在该窗口上创建一个整

数滑动条,其标题文字为"Number Of Spheres:";"-field true" 表示显示数值输入框,默认状态为不显

示;"-min 1 -max 1000 -v 50"表示该控件的最小值为1,最大值为1000,默认值为50。连起来说就是:创建

一个标题为"Number Of Spheres:",最小值为1,最大值为1000,默认值为50,名称为"slider"的整数滑条,

并显示其数字输入框。

第四句,很长啊,我只讲解-c后面的命令序列。int $k=0;,定义一个整型变量$k,并将其值设为0;int

$n=`intSliderGrp -q -v slider`;,这个命令有点难理解,定义一个整型变量$n,并将其值设为`intSliderGrp -q -v

slider`,***注意***这句两端并不是单引号,而是“左手单引号”,也就是“Esc”键下、“Tab”键上、“1”键左的

那个按键,用得很少的一个按键啦,A|W公司思想创新,令该键发挥奇效。该键用来括住一个命令,并捕获

该命令执行的结果。有点难理解,还是举个例子来说吧,输入:

string $mySphere[]=`sphere`;

执行之,我们看到视图的中间生成了一个球体。这里,我们定义了一个字符串数组,字符串数组可以用来存

放多个字符串。再输入:

print($mySphere);

执行之,得到结果:

nurbsSphere1

makeNurbSphere1

这和历史栏中显示的//result:后显示的结果是一样的。更进一步,在视图的空白处单击,取消对球体的选取

,然后输入:

move -a 5 0 0 $mySphere[0];

执行之,该球被移到了世界坐标的(5,0,0)处,可以看到,我们既没有选择该球,也不知道该球的名字,但我

们仍然能够通过程序控制它,怎么样,看到“左单引号”的威力了吧!这里,move是移动命令,a即absolute,

表示绝对坐标。

再把思路跳回去,那么intSliderGrp -q -v slider执行的结果是什么呢?q表示query,即“查询”,v表示value,即“

值”,这句话表示我们要查询名称为“slider”的控件的值,并将查询的结果存入变量$n中。剩下的就好理解了

,for(;$k<$n+1;$k++),这是for循环的一个变种,它的括号中的第一条语句省略了,因为我们前面已将$k

的值指定为0;for循环中的第二句把1001改为了$n,这样,这个循环就执行$n次,所以生成了$n个球,也

就是用户输入的球体的数目。

第五句,showWindow myWindow;,这句话用来显示第一句创建的窗口。

至此,大功告成。不知我讲的你们是否都懂了。如有不懂,尽管发问,我有问必答。

几天没布置作业了,很高兴吧,今天出个难题。

今天的作业:在该窗体上再添加一个滑条,用以控制生成球体的最大半径。

下课!

MEL 语言初级教程(五)

作者:佚名文章来源:网上收集点击数:441 更新时间:2005-5-26【字体:小大】

上节课布置的作业完成的怎么样啊?没完成的可是要打手心的哟!

以下是上节课练习的解答。

window myWindow;

columnLayout -adj true;

floatSliderGrp -l "max Radius:" -field true -min 0.1 -max 10.0 -v 1.0 rSlider; intSliderGrp -l "Number of Spheres:" -field true -min 1 -max 1000 -v 50 nSlider;

button -l "Create Ramdom Sphers" -c " int $n=`intSliderGrp -q -v nSlider`;

float $r=`floatSliderGrp -q -v rSlider`;

int $i=0;

for(;$i<$n;$i++)

{ sphere -p (rand(-12.0,12.0)) (rand(-12.0,12.0)) (rand(-12.0,12.0)) -r (rand($r));

}

";

showWindow myWindow;

在上面的程序中,我们看到了一个新的命令:floatSliderGrp,floatSliderGrp和intSliderGrp 的用法基本上是一

样的,只不过intSliderGrp 表示的是整数,而floatSliderGrp 表示的是浮点数,即实数,也就是带有小数部分

的数。

另外,我们还发现了一个严重的问题:随着被用户所控制的参数的增多,button命令的-c

参数后命令序列也

会急剧增加,命令行也会更长,这将给我们阅读、修改和维护程序带来困难。

有没有办法解决这个问题呢?当然有,下面我们来讲讲“函数”(也称为过程)这个重要的东东。当然,函数

不仅仅是为了阅读方便而引入的,它是结构化程序设计的一个重要的概念,它把一个长长的程序分成许多独

立的模块,每个模块仅通过几个变量(函数的参数和返回值)与其他的模块进行沟通,这样极大地简化了程

序的编写,提高了程序代码的可重用性。对于别人已经编好的函数,我们只用采取“拿来主义”,随手拿过来

用就行了,不必考虑他是如何实现的。当然,我们也可编写自己的函数。这段话比较枯燥,不过暂时不理解

也没关系,等我们把函数用熟了,自然就明白了。我们还是以事实来说话。

我们先来写一个简单的函数,该函数可以返回两个实数中较大的那一个。输入:

proc float zjsMax(float $a,float $b)

{ if($a>=$b)

return $a;

else

return $b;

}

执行之。咦?怎么一点反应都没有?反应是有的,只是我们看不见,我们已经定义了一个名为zjsMax的函数

存到maya的内存中去了(不知这样说准不准确?),下面我们再输入:

zjsMax(147.258,258.369);

执行之。咳!有反应了!历史栏中显示出:// Result: 258.369 //。这表示我们的第一个函数编写成功!下

面我们来剖析这个函数。

proc即procedure,意为“函数”、“过程”,告诉Maya下面我们要定义一个函数了。

float,前面讲过,意为“浮点数”、“实数”,表示这个函数的返回值是一个实数。

zjsMax,这是函数名。函数名必须由字母、数字和下划线组成,第一个字符不能为数字,前不用加美元符号

float $a,float $b,表示这个函数需要两个参数,而且都是浮点数。参数必须用圆括号括起来。最后不要加分

号。

下面是函数体,函数体由多条语句组成,这些语句必须用花括号括起来。

if,意为“如果”,后面是条件。条件语句后不要带分号。

($a>=$b),$a大于或等于$b。此外还有>(大于)、<(小于)、<=(小于或等于)、!=(不等于)、==(

等于)。

return,返回;else,否则。

这段函数体翻译成中文就是:如果$a大于或等于$b,就返回$a ,否则,返回$b。所以,它返回的是较大的那

个实数。

下面我们再编写一个函数,它需要两个参数,一个表示球体的最大半径,另一个表示球体的数目。请输入:

proc zjsRandomSphere(float $r,int $n)

{ int $i=0;

for(;$i<$n;$i++)

{ sphere -p (rand(-12.0,12.0)) (rand(-12.0,12.0)) (rand(-12.0,12.0)) -r $r; }

}

执行之,照旧没反应。不过我们已有心理准备啦。再输入:

zjsRandomSphere(1,100);

视图中立即出现了100个最大半径为1的球体。哈哈,连前面的界面都不用了。这个函数没有声明返回的数

据类型,也没有任何返回值。

这样,我们上节课的练习答案可以改成:

proc zjsRandomSphere(float $r,int $n)

{ int $i=0;

for(;$i<$n;$i++)

{ sphere -p (rand(-12.0,12.0)) (rand(-12.0,12.0)) (rand(-12.0,12.0)) -r $r;

}

}

window myWindow;

columnLayout -adj true;

floatSliderGrp -l "max Radius:" -field true -min 0.1 -max 10.0 -v 1.0 rSlider; intSliderGrp -l "Number of Spheres:" -field true -min 1 -max 1000 -v 50 nSlider;

button -l "Create Ramdom Sphers" -c " int $n=`intSliderGrp -q -v nSlider`;

float $r=`floatSliderGrp -q -v rSlider`;

zjsRandomSphere($r,$n);

";

showWindow myWindow;

这段程序看上去比前面那段更长,但更易于阅读和修改。你有这样的感觉吗?如果没有,那是你还没有习惯

,等习惯了就好了。

今天的作业:写一个函数,它需要3个参数,返回这三个数中最大的那一个。

----------------------------------------------------------

*****附:为响应米侬朋友的要求,下面讲一下全局变量。*****

----------------------------------------------------------

以下只是我个人对全局变量的理解,也许不够准确,但希望能够释疑。

全局变量可以认为是多个函数共同享用的变量。如何理解呢?请看例子:

global float $gVar=12345;

proc asignValue(float $value)

{

global float $gVar; //全局变量

$gVar=$value;

}

proc outPut()

{

global float $gVar; //全局变量

print($gVar);

}

proc outPut1()

{

float $gVar; //局部变量

print($gVar);

}

执行之。这里定义了一个全局变量$gVar和三个函数asignValue(float)、outPut()和outPut1()。按照书写约定,

全局变量的前面要加一个g字母。任何一个函数在使用全局变量前都必须先声明该变量。

在函数asignValue和

函数outPut中,使用的是全局变量$gVar,而在函数outPut1中,使用的是局部变量$gVar,他们的变量名相同

,下面我们来看看他们有什么差别:

输入outPut();并执行之,结果:12345;输入outPut1();并执行之,结果:0。

再输入:asignValue(-1000);并执行之。

输入:outPut();并执行之,结果:-1000;输入outPut1();并执行之,结果:0,不变。MEL 语言初级教程(六)

作者:佚名文章来源:网上收集点击数:446 更新时间:2005-5-26【字体:小大】

这是上节课的习题解答:

proc float zjsMax(float $a,float $b,float $c)

{

float $t; //定义一个临时变量$t

if($a>=$b)

$t=$a;

else

$t=$b;

if($t>=$c)

return $t;

else

return $c;

}

如果熟悉了mel以后,这个函数还可以写成一句话:

proc float zjsMax(float $a,float $b,float $c)

{

return $a>($b>$c?$b:$c)?$a:($b>$c?$b:$c);

}

嘿嘿,看不懂吧。这是mel中的一个独特的语句:a>z?a:z,它表示:a大于z吗?如果a大于z,则值为a,否则

,值为z。上面那句只是把z换为了“b>c?b:c”,所以返回的是三个数中的最大值。

在看别人写的脚本的时候,我们经常会看到这样的符号“//”、“/* …… */”这样的符号,这是什么意思呢?这

是mel的注释符号。在“//”后面的语句和“/* …… */”之间的语句是给人看的,maya在执行脚本时是不理会这

些语句的。“//”一次只能注释它后面的一行语句,而“/* …… */”则能注释包含在其中的多行语句。注释语句

有什么作用呢?当我们写一个很长很复杂的脚本的时候,当时看起来也许很简单,但经过很长一段时间后再

转回来看时,也许连自己也看不懂了;另一方面,当多人合作开发一个程序时,注释能使别人更容易理解你

的程序和思路,从而提高程序开发的效率。

我们的创建随机球的程序基本上已经完成了,现在我们要提供给其他人实用。当然,我们不能指望别人在每

次执行这个程序时都将代码重输或复制粘贴一遍,所以我们还需要继续完善。Let's go!

首先,我们要把我们创建随机球的函数zjsRandomSphere改成全局函数,这样,我们就能在maya的任何地方

调用它了,与你一起合作的其他人也可方便地调用它。如下:

global proc zjsRandomSphere(float $r,int $n)

{ int $i=0;

for(;$i<$n;$i++)

{ sphere -p (rand(-12.0,12.0)) (rand(-12.0,12.0)) (rand(-12.0,12.0)) -r $r;

}

}

只用在函数名前加上单词“global”即可。“global”是“全局的”、“全球的”之意。另外,我们还需把创建窗口的

代码放入另一个全局函数中,如下:

global proc createRandomSphere()

{

window myWindow;

columnLayout -adj true;

floatSliderGrp -l "max Radius:" -field true -min 0.1 -max 10.0 -v 1.0 rSlider; intSliderGrp -l "Number of Spheres:" -field true -min 1 -max 1000 -v 50 nSlider;

button -l "Create Ramdom Sphers" -c " int $n=`intSliderGrp -q -v nSlider`;

float $r=`floatSliderGrp -q -v rSlider`;

zjsRandomSphere($r,$n);

";

showWindow myWindow;

}

将以上两个函数复制粘贴到一个文本文件中,将文件存盘。**注意**:存盘后必须将文件名改为

“createRandomSphere.mel”,也就是文件名必须与创建用户界面的函数名相同,还要注意大小写。然后把

createRandomSphere.mel文件拷贝到以下地方,就可以方便的使用它了:

1.Windows 2000 或WindowsXP

<我的文档>\maya\scripts

2.Windows NT

C:/WINNT/Profiles/my-login-name/maya/scripts"

3.UNIX

~username/maya/scripts

拷贝完毕后,请重新启动maya,按一下“左手单引号”(也就是A|W公司令其发挥奇效的那个键),将焦点跳

到maya的命令行中,输入“createRandomSphere;”,然后回车。瞧!我们编的窗口出现了,Enjoy it!为省去每

次输入的麻烦,你可以打开脚本编辑器,在历史栏中,选中“createRandomSphere;”这一行,将其拖到maya

的工具架上,形成一个按钮,以后只用单击该按钮就行啦,maya真是方便呀!如果你记得创建随机球的那

个函数,你还可以直接在命令行中输入:zjsRandomSphere(0.5,500);来创建最大半径为0.5的500个随机球,

这就是在函数前加上“global”所起的作用。

今天讲的东西很简单,就不布置作业了。

下课!

MEL 语言初级教程(七)

作者:佚名文章来源:网上收集点击数:504 更新时间:2005-5-26【字体:小大】

作为本初级教程的最后一课,我们讲一下经典实用的弹簧曲线的生成方法。这里要涉及到一点三角函数的知

识,高中学的,大家应该还没忘吧。

先看看如何生成曲线。输入:

curve -d 3 -p 1 0 0 -p 0.707 0.2 -0.707 -p 0 0.4 -1 -p -0.707 0.6 -0.707 -p -1 0.8 0;

执行之,视图中出现了一个圆弧,这是一个半圈的螺旋线。打开它的CV点,可以看到,一共有5个CV。在上

面的这行命令中,curve表示要创建一条曲线;-d 3,指定曲线的度数(degree)为3;-p x y z,指定CV的位置

。在以上的命令中,我们一共指定了5个CV。

下面我们用循环语句生成一个半径为3的圆。生成一个圆需要8个CV。

int $i=0;float $deg=0.0,$rad=0.0; //$deg:角度数,$rad:弧度数

string $curve=`curve -p 3 0 0`; //定义第一点,同时捕捉生成的曲线的名称,以便追加CV for(;$i<7;$i++) //进入循环

{ $deg+=45; //即:$deg=$deg+45;旋转45度

$rad=deg_to_rad($deg); //deg_to_rad()用来将度数转为弧度

curve -a -p (3*cos($rad)) 0 (3*sin($rad)) $curve; //三角函数的参数必须使用弧度数

}

closeCurve -ps 0 -rpo 1;

在这段语句中,curve命令的-a开关表示追加CV(append),最后要指定追加的曲线名,这里为$curve。

closeCurve为关闭曲线命令,-ps 0,表示保护形状(preserve shape)为否,即不保护形状;-rpo 1,表示替换

原有曲线(replace orignal)。

我们先考虑生成一个弹簧曲线需要哪些参数。首先,应该是弹簧曲线的圈数;其次,如果弹簧曲线的上下底

半径不同,还要考虑它的上下底半径;再次,就是弹簧的旋转方向。这里,弹簧的高度是可以不予考虑的,

因为我们通过简单的缩放就可以调整。假设上半径为r1,下半径为r2,圈数为n,则该曲线所需的CV数为

(8*n+1),每次半径的递增量为(r2-r1)/(8*n+1)当然,这个值可能为正数,也可能为负数。于是,生成弹

簧曲线的函数可以写成:

global proc string spiral(float $r1,float $r2,int $turns,int $direction)

{ string $curve=`curve -p $r2 0 0`;

float $r=$r2; float $y=0; float $deg=0.0,$rad=0.0;

int $numOfCVs=8*$turns+1;

float $r_inc=($r2-$r1)/$numOfCVs;

int $i=0;

for(;$i<$numOfCVs-1;$i++)

{ $y+=0.1; //y坐标递增

$r-=$r_inc;

if($direction==1)

$deg+=45; //顺时针

else

$deg-=45; //逆时针

$rad=deg_to_rad($deg);

curve -a -p ($r*cos($rad)) $y ($r*sin($rad)) $curve;

}

return $curve;

}

spiral(1,3,8,1);

执行之,视图中出现了一个上半径为1,下半径为3,圈数为8,方向为顺时针的弹簧线。再执行

spiral(2,2,10,2);

视图中出现了一个上下半径均为2、圈数为10、方向为逆时针的弹簧线。

一切就这么简单!

至于其他类型的曲线,只需要动一点点脑筋,再加上一点点数学知识,就可以全部写出来啦。有兴趣的朋友

可以试试看。

我们的mel初级教程到这里就要结束了,以后我的水平提高了,再给大家写中级、高级教程吧。但愿我写的

这些东西能给大家一点帮助,至少不辜负我瞒着老板偷偷打这些文字!大家如果以后在mel 方面有什么问题

,可以发EMail(zengjinsong@https://www.360docs.net/doc/ba16220486.html,)给我,我将尽我所能帮你解答。

今天的作业,为弹簧曲线编写图形界面。

解散!

maya新手入门必看

【十万个我知道】之maya入门必看 Autodesk Maya算是三维动画软件中运用最广,效果最好的了。 作为一个大学学习过影视特效制作的学渣,刚进入maya看到满屏的英文和灰扑扑的界画,内心是崩溃的。只看的懂copy和paste根本不懂神马是Follicles、Dynamic Constraints(动力学约束)啊!!然后就看到老师做出的动画视频瞬间被其俘虏,感觉真是牛X啊高大上啊,学好这个软件我就是大神啊,各种烧包炫耀月薪过万不是梦啊!!但是!!!!!!!! 但是首先,想要学好maya,还需要你会一些别的技能,虽然当时我认为零基础也是完全可以的,但是越往后学就觉得这些“别的技能”是多么重要,能够助你一臂之力,事半功倍!!! 1)首先,你英文基础要好些。 因为教室的软件全英语一个汉字都木有啊,这对于英语听力听到的都是@#¥%……&*的我来说,简直了。。。笨人就用笨方法,把不熟悉的单词记在小本子上没事就看一遍,混个脸熟慢慢也就记住了,当然现在是有汉化版的福利了。 2)另外,你还需要有一定的美术功底。 初期学习一些飘动丝绸、粒子特效时,对这方面要求不高,生活中的一些基础色彩知识就可以做的很好。但如果是学习角色模型的话,那么就需要你会一些基础的美术知识比如素描,素描中的线条和结构很重要,会直接影响你模型的身体比例。上学时业余学习素描每天画线条画的都要吐了! Maya在影视动画制作软件中是比较难学的(当然会有人反对这个说法,就像现在好多人都会基础的PS却不了解PS到底有多深还一直在讲自己是PS大神)maya学的越来越多时,说的最多的一句就是“妈呀,maya好难!!”。T_T 大学里老师在课堂上讲的内容基本有限,回宿舍在自己内存条1333的电脑上做maya 作业,做上N个小时是常事,所以如果有条件大家就去搞台配置好的电脑吧!课本上的内容如果单靠脑容量有限的我(嗯。)有一部分也理解不了,这个时候你就需要有个大神来系统的指导你,如果你找不到老师,身边又都是学渣的话,那么你就悲剧了,像我当时就抱着,找不到人哎算了吧以后再说吧的心态,所以现在maya仍然是一知半解的状态。但如果各位看官是要以学习maya为今后职业的话,那么你就很需要去经过系统的学习了,因为自学学到的知识毕竟是有限的,而用人单位更在意的是你有没有出色的作品和你是否经过系统而专业的学习。在这上面,我也曾在面试时遇到过奇葩又犀利的面试官,人家直接就说如果你只有对这行的兴趣和一腔没什么卵用的热血,那么对不起,我们不会用你。别人不会关心你的人品背景是富二代还是负二代,只要你有自己的作品和独立完成项目的能力,而能力又哪里来??上了环球数码以后几个月的学习收获很大,认识了很多业内大牛,还有各种行业各种类型的奇葩小伙伴们,老师也很负责,进步自然也是大大滴!(学到最后如果你能力还不错建议大家在网上接一些项目来做,提升很快!)当然,参加任何学习都要有时间和耐心,布置的每一项作业都是有目的的你要好好的完成并且要大量的练习!混日子的结果大家都知道咯。不多说,直接上图。 模型作品:家具会议

maya动画教程:动画基础概论

第1章动画基础概论 动画(Animation)一词是由拉丁语的动词animate(赋予生命)演变而来。1980年,国际动画组织(ASIFA)在南斯拉夫的Zagreb(今天的克罗地亚首都)召开动画会议,会上对动画(Animation)一词的定义是这样的:动画艺术是指除使用真实之人或事物造成动作的方法之外,使用各种技术所创作出的活动影像,亦即是以人工方式所创造的动态影像。 那么,什么是动画片?在美国,动画和卡通两个词汇曾经没有任何区别。而在日本,Mange就是漫画,Anime就是动画。现代动画片的概念,是从其技术实现的角度来定义的。它是采用“逐格摄影”的方法将影像拍摄在胶片上,然后以每秒钟24格的速度,在银幕上逐一放映的动态影像。由于所拍摄的影像互相之间只有细微的变化,因而形成了系列动态的影像感觉。 本章的主要内容是介绍动画的历史和发展。在学习动画之前,应当先了解动画这个艺术表现形式,动画是影视艺术的一个分支,它的基础源于绘画,将一幅幅连续的图画顺序播放,就得到了一个活动的影像,这就是动画最基本的原理。本章将从动画片的分类、三维动画的技术分类、世界动画的发展史以及中国动画的发展史这四个方面介绍动画的基础概念。 本章主要内容: ●动画片的分类 ●三维动画技术类型 ●世界动画发展史 ●中国动画发展史 动画的起源和发展以及三维动画的技术分类。 1.1.动画片的分类 动画片的分类其实有很多种,主流的分类方式大致会把动画分成以下三种: ●手绘动画(Cel Animation) ●电脑制作动画(computer animation) ●定格动画(stop-motion animation) 1.手绘动画

《HTML基础试题》

《HTML基础试题》 一、单项选择题: 1、下面哪一个属性不就是文本的标签属性?( ) A.  B.size C.color D.face 2、当链接指向下列哪一种文件时,不打开该文件,而就是提供给浏览器下载。( ) A.ASP B.HTML C.ZIP D.CGI 3、关于文本水平对齐,源代码设置不正确的一项就是:( ) A.居中对齐:

B.居右对齐:
C.居左对齐:
D.两端对齐:
4、下面哪一项就是换行符标签?( ) A. B. C.
D. 5、下列哪一项就是在新窗口中打开网页文档。( ) A._self B._blank C._top D._parent 6、下面对JPEG格式描述不正确的一项就是。( ) A.照片、油画与一些细腻、讲求色彩浓淡的图片常采用JPEG格式 B.JPEG支持很高的压缩率,因此其图像的下载速度非常快 C.最高只能以256色显示的用户可能无法观瞧JPEG图像 D.采用JPEG格式对图片进行压缩后,还能再打开图片,然后对它重新整饰、编辑、压缩 7、常用的网页图像格式有____与_____( ) A、gif,tiff B.tiff,jpg C.gif,jpg D.bmp,png 8、下面说法错误的就是( ) A、CSS样式表可以将格式与结构分离 B.CSS样式表可以控制页面的布局 C、CSS样式表可以使许多网页同时更新 D.CSS样式表不能制作体积更小下载更快的网页 9、CSS样式表不可能实现( )功能。 A将格式与结构分离 B.一个CSS文件控制多个网页 C、控制图片的精确位置 D.兼容所有的浏览器 10、在HTML中,( )不就是链接的目标属性。 A、self B.new C.blank D.top 11、在网页设计中,( )就是所有页面中的重中之重,就是一个网站的灵魂所在。 A.标题栏 B.脚本页面 C、导航栏 D.页面内容 12、为了标识一个HTML文件应该使用的HTML标记就是( )。 A. B. C. D.
13、在客户端网页脚本语言中最为通用的就是( ) A、JavaScript B、VB C.Perl D、ASP 14、在HTML中,标记的属性:“Size”所能取的最大取值就是( ) A、6 B.7 C.8 D.9 15、下面不属于CSS插入形式的就是( ) A、索引式 B.内联式 C.嵌入式 D.外部式 16、如果站点服务器支持安全套接层(SSL),那么连接到安全站点上的所有URL开头就是( ) A.http:// B.https:// C.shttp:// D.SSL://

MAYA滚动的方盒子教程

maya入门级教程 和谐校园爱心共建 二、动画篇. 制作人:李慧敏

方盒子翻滚步骤 1.在场景中创建一方盒子 2.(首先确定)要想好让方盒子转动的方向,以(转动方向的底边)那个方向方盒子的底边为中心点 3.改变方盒子的中心点,同时按住键盘上的W D C键(会出现一黄一蓝上下两个点)(会出现一个黄色的小圈,下方还有一个蓝色的圈),按住鼠标中键,把鼠标移动到底边点击(移动鼠标至底边并点击)

4.更改完(更正)中心点后,找到旋转工具,点(击)蓝色的线进行移动,(此时)可以看到方盒子位置发生变化 5.找到时间划条

6.在时间划条上选中要添加关键帧的数字,以想要旋转的轴向选中(并选重将要旋转的轴向),右单机“为选定项设置关键帧”,此时(这时)之前所选中的数字上会出现(呈现出)一个(条)红色的竖线,证明已经在此数字上添加关键帧。(此数字已添加上关键帧) 7.在(再)选择另一个数字,并旋转方盒子,然后在这个数字上也(同样)设置一个关键帧 8.两个关键帧生成好了(待两帧关键帧生成),可以用鼠标拖动时间条上的数字进行确认,看方盒子是否(运)动起来,如果没有,请检查一遍,(如果没有,原因可能是)中途操作

出现了错误。 9.开始第二次翻滚,要先进行打(编)组。首先(然后)在窗口菜单里找到大纲视图。选中方格子的同时,大纲视图中(的pcubel会被同时选中)会有一个pcube1被选中,这个就是方格子。

10.在编辑菜单中找到分组(并)单机,视图大纲中就会出现(会呈现出)一个group1,这就是一个新的组,group1前面有个小的加号,可以展开里面已有的组(可以将里面的组展开)。(Ctel+G键盘分组)

HTML语言与网页设计期末考试题

第1题判断正误 (1)HTML标记符的属性一般不区分大小写。(对) (2)网站就是一个链接的页面集合。(对) (3)将网页上传到Internet时通常采用FTP方式。(对) (4)所有的HTML标记符都包括开始标记符和结束标记符。(错) (5)用H1标记符修饰的文字通常比用H6标记符修饰的要小(错)。 (6)B标记符表示用粗体显示所包括的文字。(对) (7)GIF格式的图象最多可以显示256种颜色。(对) (8)HTML表格在默认情况下有边框。(错) (9)创建图象映射时,理论上可以指定任何形状作为热点。(对) (10)指定滚动字幕时,不允许其中嵌入图象。(错) 1.使用FONT 标记符的size 属性可以指定字体的大小。( T ) 2.网站就是一个链接的页面集合。( T ) 3.GIF格式的图象最多可以显示1024种颜色。( F ) 4.制作图像映射只需要使用 标记符。( F ) 5.在HTML表格中,表格的列数等于第一行中TH与TD的colspan属性的和。 ( F ) 6.在HTML表格中,在TR、TD或TH标记符中使用align 属性可以控制单元格内容的垂直对齐。( T ) 7.指定滚动字幕时,不允许其中嵌入图象。( F ) 8.框架是一种能在同一个浏览器窗口中显示多个网页的技术。( T ) 9. CSS中的color属性用于设置HTML元素的背景颜色。( F ) 10.CSS样式表项的组成格式为:selector{property1:value1, property2:value2, ……} ( F ) 第2题单选题(20分) (1)WWW是的意思。答案:B A.网页B.万维网C.浏览器D.超文本传输协议 (2)在网页中显示特殊字符,如果要输入“<”,应使用_________。答案:D A.lt; B.≪ C.< D.< (3)以下有关列表的说法中,错误的是:。答案:D A.有序列表和无序列表可以互相嵌套。 B.指定嵌套列表时,也可以具体指定项目符号或编号样式。 C.无序列表应使用UL 和LI 标记符进行创建。 D.在创建列表时,LI 标记符的结束标记符不可省略。 (4)以下关于FONT标记符的说法中,错误的是:答案:D A.可以使用color 属性指定文字颜色。 B.可以使用size 属性指定文字大小(也就是字号)。 C.指定字号时可以使用1~7 的数字。 D.语句这里是2号字 将使文字以2号字显示。 (5)以下关于JPEG图像格式中,错误的是:答案:B A.适合表现真彩色的照片。 B.最多可以指定1024种颜色。 C.不能设置透明度。

MAYA-nCloth官方入门教程

MAYA-nCloth官方入门教程

MAYA nCloth官方入门教程 一个MAYA nCloth的官方教程,我们做了一个简单的翻译;给广大的MAYA爱好者学习。 2008-3-23 10:55 //建立场景 polyCylinder -sx 12 -sz 1 -ax 0 1 0 -cuv 3; string $selP[] = `ls -sl`; setAttr ".ty" 3; setAttr ".sy" .1; setAttr ".sx" 3; setAttr ".sz" 3; select ($selP[0]+".vtx[1]") ($selP[0]+".v tx[13]")

($selP[0]+".vtx[3]") ($selP[0]+".vtx [15]") ($selP[0]+".vtx[5]") ($selP[0]+".vtx [17]") ($selP[0]+".vtx[7]") ($selP[0]+".vtx [19]") ($selP[0]+".vtx[9]") ($selP[0]+".vtx [21]") ($selP[0]+".vtx[11]") ($selP[0]+".vtx [23]") ; scale 0.576722 0.576722 0.576722 ; polyCylinder -r .2 -h 3 -sx 20 -sz 1 -sy 3 -ax 0 1 0 -cuv 3;string $selT[] = `ls -sl`; setAttr ".ty" 1.5; select -r ($selT[0]+".e[40:59]"); move -r 0 -1.85 0 ; select ($selT[0]+".e[20:39]"); move -r 0 -0.9 0 ; select -tgl ($selT[0]+".e[0:19]") ; scale 10.5 1 10.5; polyPlane -w 8 -h 8 -sx 10 -sy 10 -ax 0 1

给初学MAYA同胞的建议 少走弯路

给初学MAYA同胞的建议少走弯路 1)先概述一下MAYA吧.MAYA应该来说,是一个比较全面,功能强大的3D 动画软件,他的特色就是灵活,你能够掌握动画的方方面面,控制每一步的 流程,甚至通过MEL接触MAYA的底层----DG. 如果要挑 缺点的话,有两个,1,很难上手,2,默认渲染器与其他软件相比,较差.但是 和他的灵活性比起来,又微不足道.MAYA在美国,日本,加拿大,澳大利亚 比较流行,我看过他们的一些图形杂志,MAYA都是大片广告,相反3DMAX 很少.在中国刚好相反,MAYA只找了一个代理:特新科技,意思一下.在学习 之前,最好先给自己定位,MAYA是针对高端影视特效,动画.如果志向是静帧 ,效果图,建议学习3DMAX,这里没有什么软件高低好坏之分,只是上手快慢 ,出成绩的问题. 就以动画流程说说吧. 2)先说一下各模块的大概吧. modeling----MAYA的建摸工具基本够用,Nurbs,Polygan,Subdiv是三种 基本的面,各有优势,用Polygan的人较多,应为工具全,摸型布线方便,但是有个 问题,就是很容易,造成面数过多,拖慢电脑,Nurbs刚好相反,几条线,就搞定一个 面.谁都不能代替谁,老外一般的做法是先用Nurbs作出大概形状,然后转成polygan ,重新布线,最后再转Subdiv做动画.如果是电影,会用Nurbs做最终的摸.中国 基本用Polygan跑完全程,除了慢一点,还没发现有啥坏处. 以建人为例,制作之前,你要注意几点:做出来的模型要象人,你肯定要清楚人体解剖, 为什么有的人出来象一个吹气公仔,就是因为缺少真人的细节,比如骨点.这方面你 可以买本艺用人体结构学看看,一定有收获. 还有一点,注意布线,如果布线不合理, 模型根本不能用来做动画,布线的走向主要根据肌肉的走向和动画动作的要求,布线的拓扑学是一个很深的话题,以免跑题就到此为止.建议多找外国的线框图研究一下规律,还有,在CDV上,有一个叫"我乱讲的"斑竹,是工业光魔的人,是建模高手中的高手.大家可以看一下他的教程.再多说一句,SimplyMAYA的建模教程,不适用于表情 动画,建议你不要照抄.(如果你不同意,就当我没说吧,呵呵) 建模方面还有几点要留意的,布线要平均,不要太疏,也不要太密, 尽量保持4边形面, 线与线之间的交点,也尽量保持在+,不要出现 5星面或以上.这些要从建模的开始就注意,对于以后的贴图,模型 间的转换,扫权重,动画,变形等一系列的?*****?,都大有好处,不至于 你的作品半途而废. 3)贴图 模型建好后,.对于新手来说,开始以为,将一张图片贴到模型上就大功 告成,其实,在MAYA(3D软件都是),物体的外表表达有两个主要概念. 质感(Material)和纹理(texture),质感的主要区别来自高光,比如白色的 陶瓷和石膏,为什么能一眼就分辨出,这就是质感的所在,至于纹理,就不 多说了.MAYA在Material方面的类型主要有lambert,blinn,phong ,phongE,等等,具体可以了解相关书籍.纹理方面也有各种2D和3D还有 环境贴图,layer_texture的选择.2D纹理,你可以想象成礼物上面的包装纸, 只在模型表面生成,3D纹理生成的范围还包括物体的内部,你可以想象一下玉 石的纹理,与3D纹理类似.环境贴图主要用来模拟物体对外界的反射,比如

MAYA灯光教程基础

MAYA灯光效果基础教程 出处:2345软件大全时间:2011-04-28人气:2571我来评论 教程贴士:在Create>Lights菜单命令下我们可以看到,Maya5.0给我们提供了六种灯光的类型 一、灯光类型: 在Create>Lights菜单命令下我们可以看到,Maya5.0给我们提供了六种灯光的类型: 这六种灯光类型分别是:Ambient Light(环境光源)、Directional Light(平行光源)、Point Light(泛光灯光源)、Spot Light(聚光灯光源)、Area Light(面积光源)、Volume Light(体积光源)。 Point light(泛光灯光源) 又叫点光源,是被使用的最普通的光源。光从一个点光源射向四面八方,所以光线是不平行的,光线相汇点是在灯所在的地方。它模拟一个挂在空间里的无遮蔽的电灯泡。点光源可以投射阴影。

点光源投射阴影的形状如下,注意它的形状是向外发散的。 Directional Light(平行光源) 远光灯是用来模拟一个非常明亮,非常遥远的光源。所有的光线都是平行的。虽然太阳是一个点光源。可是因为它离我们的距离是如此的遥远,以至于太阳光到达地球后实际上是没有角度的,所以我们用平行光源来模拟太阳光。要注意的是,平行光没有衰减属性。平行光可以投射阴影。 平行光投射的阴影如图所示,因为平行光的光线都是平行的,所以它投射的阴影也是平行的,这是它的一大特征 Spot Light(聚光灯光源) 聚光灯是具有方向性的灯,所有的光线从一个点并以你定义的圆锥形状向外扩散。可通过使用Cone Angle(锥角)滑块的方法,从顶点开始以度为单位来度量锥体。聚光灯是所有灯光中参数最复杂的灯光。通过调节它的参数可以产生很多类型的照明效果。 Cone Angle 控制光束扩散的程度,通常采用缺省值40度就够了. 不要把Cone Angle设置太大,否则阴影会出现问题. Penumbra Angle 该值为正时,外部矩形区域边缘模糊不清;该值为负时,内部矩形区域边缘模糊,边缘轮廓不清.

HTML语言入门教程

语言入门教程(一) ?什么是HTML语言 HTML(HyperText MarkUp Language)是使用特殊标记来描述文档结构和表现形式的一种语言,由W3C(World Wide Web Consortium)所制定和更新。我们可以用任何一种文本编译起来编辑HTML文件,因为它就是一总纯文本文件。 ?HTML语言的基本结构 下面我们来看一小段HTML语言的代码,来了解HTML语言的基本结构: HTML语言的基本结构 HTML(HyperText MarkUp Language)是使用特殊标记来描述文档结构和表现形式的一种语言。 将这一小段代码粘贴至文本文件中,然后选择“另存为”,将文件的后缀名改为.htm或者.html即可,然后再所在的目录下就可看到一个IE的图标,名字就是你所存的文件名称。 …… …… 这是声明HTML文件的语法格式。每一个HTML文件,都必须以开头,以结束…… …… 这是文件头声明的语法格式。在这之内的所有文字都属于文件的文件头,并不属于文件本体。

…… …… 这是声明文件标题的语法格式。在这之中写下的所有内容,都将写在网页最上面的标题栏中。 …… …… 这是声明文件主体的语法格式。在者之间写下的内容都是文件的主体,也就是说将会被显示在客户区之中。 注意:几乎每一种HTML语言的语法都是以<>开头,以结束。在编辑HTML语言过程中,也可以使用注释。语法格式为:。就好像C语言中的/* …… …… */ 一样,中间的内容只是解释说明,并不被编译器所编译。 HTML语言的基本单位 1. 长度单位 长度单位可以用来定义水平线、表格边匡、图像等对象的长、宽、高等一系列属性,同时也可以用来定义这些对象在页面上的位置等属性,用来描述页面上可能遇到的各种长度。 长度的表示方法有两种:绝对长度和相对长度。他们的单位都是像素(pixel)和百分比(%),像素代表的是屏幕上的每个点,而百分比代表的是相对于客户区的多少。下面我们就以水平线的宽度为例,说明这两种表示方法。 HTML语言的长度表示 HTML(HyperText MarkUp Language)是使用特殊标记来描述文档结构和表现形式的一种语言。



在文本编译器中编译,改变网页的大小,就会看到这两者表示长度方法的不同。

MAYA建模步骤

课程设计报告 课程名称:三维游戏美工 设计题目:那样纯洁的爱--鹿狐决恋院(系):计算机学院(软件学院) 专业年级:14级软工一班(数媒) 学号:141530257 姓名:魏加新 指导教师:徐丽敏 2016年12月20 日

目录 一.剧情简介 (3) 二.主题思想 (3) 三.角色设计 (3) 四.场景设计 (3) 五.实现过程 (3) 六.技术难点 (6) 七.解决方案 (7) 八.作品渲染 (7) 九.参考文献 (8)

一.剧情简介 在一个风景美丽的草原上,有一户人家养着一只小狗和一头小鹿,而在草原的另一边住着一只狐狸。在一个阳光明媚的一天,这只小狗和这头小鹿一起出去游玩,而就在这天小鹿和小狐偶然相遇了,然而就是那回眸一笑,双方一见钟情,深深的陷入了爱河,就在小狐送给小鹿玫瑰的那一天,小鹿同意和小狐私奔,而早就喜欢这小鹿的小狗就趁机咬死了小鹿,最后小鹿在漫天的玫瑰花下死亡而小狐就伤心的依偎在小鹿身边,久久不忍离去。反观小狗则是嘿嘿笑着。 二.主题思想 主题思想:爱就要爱的纯粹,如果相互喜欢就要敢于追求。相反,如果不喜欢就要和平结束,不要因爱生恨。警示:推物及人,不要让动物的悲剧在人的身上重演。 三.角色设计 共设计了三个动物角色:小狗、小鹿和小狐 四.场景设计 分为一部分:室外场景 五.实现过程 1.创建骨骼 2.下肢骨骼装配 (1)下肢骨骼IK控制 ○1.打断盆骨与腿部的连接,再次确定命名,镜像腿部骨骼 ○2.为腿部添加IK控制柄工具 注意:大腿到脚底为RP,脚底到脚掌为SC,脚掌到脚趾为SC (2).下肢控制器

○1.创建方盒子,绘制点线 ○2.复制线框捕捉到脚腕处,调整大小,冻结变换,复制一个到另一侧,同样冻结变换 3.命名:“L_con_FOOT” ○ (3).下肢控制器添加驱动 ○1.选择脚部控制盒子,为其添加属性 ○2.锁定并隐藏缩放属性 ○3.设置驱动关键帧:walk ○4.设置驱动脚尖:Top Toe (4).向量约束 ○1. 创建圆形修改形状 ○2. 捕捉到膝盖,复制一个 ○3. 同时移动两个至正前方,删历史,冻结 ○4. 选择形状和RPIK执行向量约束 ○5. 把形状P给脚部控制器(方盒子) 图一

MAYA基础教学大纲

MAYA基础 课程代码: 2223120401 学位课程/非学位课程:学位课程 学时/学分: 90/6 先修课程:电脑平面设计课程 一、课程在人才培养中的地位和作用 MAYA建模在三维动画中是一个最基础的模块,培养学生三维软件制作能力,摆脱二维的思维方式。它已成为电影、电视、游戏以及其他媒体中的一部分,它以动画自由化丰富和复杂的表现而著名。它已成为专业人员在这些中的首选工具之一。掌握MAYA的建模模块,利用相关的功能和命令加上自己的灵感创建出神奇的三维效果。 二、课程教学目标 通过对MAYA建模模块的学习,让学生掌握使用MAYA模拟自然界物体模型,理解MAYA 建模的各种方式,着重培养学生的实际操作能力。使学生具备较强的操作技能。以及自学MAYA的其他功能的能力。 三、课程教学内容 (一)课程的知识体系 知识领域1:MAYA的功能 知识单元1:MAYA界面 知识单元2:MAYA的基本操作

知识单元3:MAYA快捷菜单和热键 知识领域2:Polygon建模技术 知识单元1: Polygon简介及物体的创建与编辑 知识单元2:基础Polygo工具 知识单元3:Polygon扩展工具与常用工具 知识单元4:Polygon机械体建模实例、Polygon生物体建模实例知识领域3:NURBS建模技术 知识单元1:NURBS简介及曲线编辑 知识单元2:NURBS曲面创建 知识单元3:NURBS曲面编辑 知识单元4:NURBS建模应用实例 知识领域4:Subdivision建模技术 知识单元1:细分建模简介及创建 知识单元2:细分原始物体的编辑 知识单元3:细分建模应用实例 (二)课程涵盖的知识单元 知识单元1.1:MAYA界面 参考学时: 知识点 界面的组成 学习目标 1.了解MAYA主界面是由八大模块组成。 2.掌握各个模块的主要功能用途。 知识单元1.2:MAYA的基本操作 参考学时: 知识点 MAYA基本操作方式 学习目标 1.掌握项目及物体的创建 2.掌握视图操作及对物体的操纵

Maya mel语言基础入门

一、了解MEL MEL (Maya埋入式语言)为Maya提供了基础。Maya界面的几乎每一个要点都是在MEL指令和脚本程序上建立的。由于Maya给出了对于MEL自身的完全的访问,你可以扩展和定制Maya。通过MEL,你可以进一步开发Maya使它成为你和你的项目的独特而创新的环境。为有效地使用Maya,你并不非得精通MEL。但是,熟悉MEL可以加深你使用Maya的专业能力。使用MEL的许多方面可以由只有很少编程经验或者没有经验者所使用。喜欢MEL 并不非得喜欢编程。有一些方法,它们可以使你获得MEL的好处而不必考虑编程的细节。一旦当你进行了产生MEL脚本语言的尝试,你会发现MEL可以给你提供可以想象到的最先进的数字化画图的方法。 为了获得Maya的输出,大部分可以使用MEL来做。这里是你可以使用MEL来工作的一些例子: ·使用MEL指令脱开Maya的用户界面,快速地产生热键,访问更深的要点。 ·给属性输入准确的值,脱开由界面强制引起的拘谨的限制。 ·对特定的场景自定义界面,对一个特定的项目改变缺省设置。 ·产生MEL程序和执行用户建模、动画、动态和渲染任务的脚本程序。 如何使用本教程 本教程叙述如何学习和使用Maya埋入式语言(MEL)。如果你初次接触MEL,本教材帮助你在使用MEL指令和脚本程序方面开始起步。一旦当你开始开发MEL程序的时候,本教材将继续帮助你,讲解如何能够使你获得用MEL产生的更多的指令、宏、程序和用户界面元素的输出。 本教材假定你对Maya已经有了基本的了解。如果你完全是新开始学习Maya,请看一下学习Maya的教材,并对在Using Maya documentation set中描述的要点进行开发。应该熟悉Maya的在线文件(见Online documentation)。特别是应该使你自己熟悉MEL Command Reference和DG Node Reference。 本教材的各处都有许多有关的MEL指令和程序码的例子。要运行例子程序,你可以把它们粘贴到Maya的脚本语言编辑器(Script Editor)里,并选择Edit > Execute就可以了。使自己进一步地熟悉脚本语言编辑器的要点,执行脚本程序,并把程序保存到Maya的script目录中的一个文件中,可以参考Maya文件和用户指南中的适当章节。 如何学习更多的MEL内容 为了学习更多的MEL内容,可以通过以下途径: ·在线文件 ·训练课程 ·网站资源 在线文件 本教材提供了一个使用MEL指令、程序和脚本语言的总的概览。有关特定的MEL指令的

HTML网页制作基础题试题与答案

HTML网页制作基础题 一、选择 1. 在一个框架的属性面板中,不能设置下面哪一项。( D )A.源文件B .边框颜色C.边框宽度D.滚动条 2. 下列哪一项表示的不是按钮。( C ) A.type="submit" B.type="reset" C.type="image" D .type="button" 3. 下面哪一个属性不是文本的标签属性?( A ) A.nbsp; B .align C .color D.face 4. 下面哪一项的电子邮件链接是正确的?( B ) A.https://www.360docs.net/doc/ba16220486.html, B .xxx@.net C.xxx@com D .xxx@https://www.360docs.net/doc/ba16220486.html, 5. 当链接指向下列哪一种文件时,不打开该文件,而是提供给浏览器下载。( C )A.ASP B.HTML C.ZIP D.CGI 6. 关于表格的描述正确的一项是。( D )A.在单元格内不能继续插入整个表格 B .可以同时选定不相邻的单元格C.粘贴表格时,不粘贴表格的内容 D .在网页中,水平方向可以并排多个独立的表格 7. 如果一个表格包括有 1 行4 列,表格的总宽度为“ 699”,间距为“ 5”,填充为“ 0”,边框为“ 3”,每列的宽度相同,那么应将单元格定制为多少像素宽。( D ) A.126 B.136 C.147 D.167 8. 关于文本对齐,源代码设置不正确的一项是:(A.居中对齐:

?
B.居右对齐:
?
C.居左对齐:
?
D.两端对齐:
?
9. 下面哪一项是换行符标签?(C) A. B . C .
D. 10. 下列哪一项是在新窗口中打开网页文档。(B )A._self B ._blank C._top D._parent 11. 下面对JPEG格式描述不正确的一项是。( C ) A.照片、油画和一些细腻、讲求色彩浓淡的图片常采用JPEG格式 B.JPEG支持很高的压缩率,因此其图像的下载速度非常快C.最高只能以256 色显示的用户可能无法观看JPEG图像 D.采用JPEG格式对图片进行压缩后,还能再打开图片,然后对它重新整饰、编辑、压缩

MAYA快速入门教程4_细分曲面

细分曲面 简介 细分曲面是一种混合型曲面,具有NURBS 曲面和多边形曲面的特征以及其他类型的曲面所没有的功能。与NURBS 一样,细分曲面能够生成平滑的有机形状,并且可使用数量相对较少的控制顶点形成。与多边形曲面一样,细分曲面可用于挤出特定区域并在曲面上创建附加细节。通过以不同的详细程度对细分曲面进行处理并在必要时在两种程度间进行切换,可以完成上述操作。凭借细分曲面,可通过单个基本体构建平滑的有机对象,而且与NURBS 曲面不同的是,您不必将各个曲面连接或缝合在一起。 课程准备 若要确保课程按所述方式运行,请在开始之前执行下列步骤: 1.查看该手册中的“多边形建模”课程。多边形建模工具知识是熟练掌握细分曲面建模的必 要因素。 2.如果尚未下载课程文件,请从https://www.360docs.net/doc/ba16220486.html,/maya-tutorials下载。 将Getting Started 2013 Lesson Files Zip 文件复制到本地驱动器并解压缩该文件夹。 3.创建新项目,如下所示: ?选择“文件> 项目窗口”(File > Project Window),然后单击“新建”(New)按钮。 ?单击“位置”(Location)字段中的文件夹图标以导航到 GettingStartedMaya2013LessonData文件夹,这样会将创建的项目保存在该文件夹中。 ?在“当前项目”(Current Project)下输入细分曲面。 ?单击“接受”(Accept)。 细分曲面项目现已创建。 4.创建新场景。 5.选择“曲面”(Surfaces)菜单集。

6.选择“窗口> 设置/首选项> 首选项”(Windo w > Settings/Preferences > Preferences)。 7.在“首选项”(Preferences)窗口中,从“类别”(Categories)列表中选择“细分曲 面”(Subdivs)以显示细分曲面首选项。 8.在“细分曲面显示”(Subdivs Display)设置中,将“组件显示”(Component display)设定为“编号”(Numbers),然后单击“保存”(Save)。 将细分曲面组件设定为以级别号显示允许您直接在曲面上查看细分曲面级别。 注意 学习本节的的课程之前,请通过选择“创建> 多边形基本体> 交互式创建”(Create > Polygon Primitives > Interactive Creation),确保基本体的“交互式创 建”(Interactive Creation)选项处于禁用状态。也就是确保菜单项旁边不会出现复选标记。 9.在“选择工具”(Select Tool)处于活动状态时通过打开“工具设置编辑器”(Tool Settings Editor)并禁用“软选择”(Soft Selection),确保“软选择”(Soft Selection)处于禁用状态。 第1课:结细分曲面建模 简介 在本课中,将学习一些基本工具,这些工具用于在为人体角色的手建模时处理细分曲面。 在本课中,将学习如何: ?将多边形曲面转化为细分曲面。 ?在“多边形代理模式”(Polygon Proxy Mode)下处理细分曲面。 ?分割细分面来为模型中的更多细节创建区域。 ?挤出分割面以在手上创建手指。

MAYA坦克建模

MAYA tank modeling 这篇教程教飞特的朋友们介绍MAYA坦克建模的过程和具体的建模方法。教程很经典。写的也很详细。这里先感谢作者给我们制作这么好的MAYA建模教程。转发到飞特,也希望飞特的朋友们喜欢这篇教程。先看看最终的效果图: 目录 1.制作坦克模型的前期工作 2.模型的基础搭建 3.倒角的工具的应用 4.分析坦克上的一些部件的制作过程及其工具的应用 5.履带插件的运用方法 第一章制作坦克模型的前期工作 一.对于制作一个好的模型来说前期工作至为重要,所及充分的资料可以让你在制作中省去很多不必要的麻烦提高制作进度及其真实度。所以我在制作这个辆M1A2的时候就收集了大量的资料图片和散视图作为我所要制作的这两坦克的参考。 在补充一句如果你的经济条件允许的话最好买一个模型玩具当作参考这样效果会更加。

二.三视图的制作及其导入 1.首先在PS里打开我们所需要的三视图

这个步骤我想大家应该没什么问题。很简单运用剪切工具在配合ctrl+T来制作出右边的那三张不同角度的视图。 为了使视图的比例完全一直你可以把这三张截玩的视图托到一起运用降低透明度和变形命令(CTRL+T)来调整他们的大小。 调整完成后在分别保存一下为我们下一步工作做准备。 2.视图制作完毕现在我们打开MAYA。然后在front视图中的view/image plane/Imoport Image…点击一下然后导入相应的视图。 3.在执行一次view/image plane/你会发现Imoport Image…下面多出了个Image Plane Attributes点击一下他会出现image Plange点击他就可以进入你所在视图的编辑菜单。

Maya骨骼的基础设置教程

Maya骨骼的基础设置教程 第一步:首先我们要有一副完整且符合我们要求的骨骼。如图。 第二步:这个骨骼是根据要求制作的,所以会有很多的控制器。在胳膊的位置要作IK 和FK的转换控制。

说明:这3个骨头的位置分别在上臂、肘和前臂,我在每一个骨头的原点位置都做了一个环,就如上图的上图,“A”、“B”和“C”,用他们分别操纵上臂、肘和前臂的旋转,再在这个基础上建立一条由上臂到前臂的IK,这样就完成了初步的创建。在这3个环的属性通道里只保留了旋转,这么一项。移动均是被所操纵的骨骼所控制。 后面要做的事情就比较简单了,只需要在IK/FK自己的属性里做驱动关键贞,位置有提过。开Animate>Set Deiven Key >Set,在这个里面选择IK/FK,将它Load Driver,同样也将IK/FK Load Driven,换句话说就是让他自己的属性操纵自己的属性,从而相成关联的动画。 这里的目的说明:需要在这里实现,当我们需要IK做动画的时候,将FK的操纵器(就是A、B和C)隐藏,而当我们需要FK的时候,也要将IK的操纵器(D)隐藏,这个D是控制该IK的位移属性的。 那么就需要象如下的操作,前面已经将FK_Visbility和IK_Visbility做了属性的关联,现在需要将这些属性由IK_FK项一同控制。也就是在IK_FK为0的时候显示IK的操纵器,在IK_FK为5的时候显示FK的操纵器。IK_Visbility为1,IK_FK为0,IK_Visbility为0,IK_FK 为4.95,FK_Visbility为0,IK_FK为0.05,FK_Visbility为1,IK_FK为5,就是这样,现在准备已经结束,可以操作一下IK/FK的IK_FK项0到5动画一下,看看是否可以正确按照需要动画。

最新maya学习心得

maya学习心得 第1篇第2篇第3篇第4篇第5篇更多顶部 目录 第一篇:maya 学习心得 第二篇:maya学习 第三篇:maya学习资料 第四篇:maya英文学习 第五篇:maya 实训心得 更多相关范文 正文 第一篇:maya 学习心得 maya学习心得 maya是美国那边的顶级动画软件,应用的是非常的广泛,无论是在动画片里,还是在影视特效里,都是可以运用的.maya功能完善,工作灵敏,易学易用,制造听从极高,衬着的确感极强,是影戏级此外高端产软件.电影《阿凡达》中许多人物殊效等于通过这

款软件出产,而国表里良多电影、电视、广告的特效也都离不开这款软件.所以假设你想要成为一位专业的影视制造人,学好maya是必须的. 由于maya的功能非常的强大,所以说在试用玛雅的时候非常的困难的,想要学好maya这个软件不是那么轻而易举的.但是maya 只管浅易,但只有静心去学,学不会是不行能的,而且我敢肯定人人均可以学会maya,关头是一种深造法子,这也是我写这篇文章的初志,盼愿人人少走弯路!具体形式各人往下看就知道了,必然对你有所募捐. 在接触maya之前一直觉得这个软件很神秘,当栩栩如生的三维动画就是用它制作出来的,我又对这个软件产生了几分爱意。带着这份爱意我到清美报名了,接待的老师很热情,教学老师也很认真负责,这里不累赘阐述。下面就我第一阶段的学习作一个简单的心得汇报: 许多初学者问学习maya有没有捷径,我觉得学习是没有捷径可言的,唯一的捷径就是不断的学习和练习,只有这样才能学到真功夫,废话不说了,我再次整理一些自己学习maya的心得体会,希望对大家有所帮助。

Maya快速选择技巧

Maya快速选择技巧 这篇教程介绍Maya快速选择技巧,教程属于入门级别的MAYA教程,同时这个教程讲解的只是在我们建模的时候会经常的用到。转发过来和飞特的朋友们一起学习了。 众所周知,影响建模效率的因素有:建模工具命令的强大能力、选择元素的能力、工具调用是否快捷等方面。在选择元素方面,尤其是选择loop点、边和面,在建模中很重要。 1.关于Loop的选择: 点、线和面的loop选择在建模的时候是非常非常常用到的。XSI在这方面好像是做的最早的,其后和max。用XSI的人都知道在其点、边和面的元素级别下先选一条边,然后按住Alt键鼠标出现【...】标记,就可以实现loop选择,其操作是:鼠标左键单击和之前选择的边在同一loop上的另一边,即可选择中间范围的所有边。效果如图01: 图01 Alt+鼠标中间点一个边就整个环选。效果如图02. 图02 这选择功能确实很酷!效率很高!不过maya2009也可以这么做。

在maya中,先选择一个边,然后按住shift键双击同一loop中的一条边,即可选择之间的所有边。如果03所示: 图03 如果是要整个环选,什么都可以不用按,只要鼠标双击一条边即可。效果如图04所示: 图04 如果是点,可以先选一个点,然后按住shift键双击同一loop中的另一个点,即可选择之间的所有点。如果05所示:

图05 如果是要整个环选,就双击和该点相邻的一个点。效果如图06 图06 选面的方法和选点相同。如图07所示.

图07 maya同时多了一种选择:直接双击物体上一个面,会选择整个物体的面。 在xsi中同样的方式还可以选择ring,似乎maya暂时还无法用同样的方式选。当然有其他的工具选ring,大家基本上都知道,我就不说了。 2.关于Drag选择 Maya还新增了一种Drag选择方式,很类似于以前的画笔选择方式,不过没有画笔半径,完全看鼠标移动的路径,我觉得非常好用。具体的操作入下: 先选择一个物体,进入点、边或面层级,然后按住q键,同时按住鼠标左键,在菜单中选择Drag方式,然后就可以按住鼠标在模型上选择元素了。如果想换回普通方式,选择与Drag对应的Marquee方式即可。效果如图08