max脚本低级教程.docx

上传人:b****6 文档编号:4020033 上传时间:2022-11-27 格式:DOCX 页数:11 大小:35.26KB
下载 相关 举报
max脚本低级教程.docx_第1页
第1页 / 共11页
max脚本低级教程.docx_第2页
第2页 / 共11页
max脚本低级教程.docx_第3页
第3页 / 共11页
max脚本低级教程.docx_第4页
第4页 / 共11页
max脚本低级教程.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

max脚本低级教程.docx

《max脚本低级教程.docx》由会员分享,可在线阅读,更多相关《max脚本低级教程.docx(11页珍藏版)》请在冰豆网上搜索。

max脚本低级教程.docx

max脚本低级教程

入门教程内容结构本教程内容分为五个部份,用几个具体的例子讲解大多数的脚本操作和语法知识。

一、MAXScript简介1、说明什么是MAXScript和它有什么功能,能给用户带来什么益处。

2、访问脚本,熟悉脚本访问的界面。

二、大体操作:

创建和修改简单的对象,给对象赋材质,从而引出下面的概念构造器:

创建对象的语法称为构造器;途径名; 数据类型:

它们是数字,字符串,数组。

 对象和类(层级树);属性和方式;变换;函数和方式的联系;通用属性和动态属性;显示属性的函数;一些经常使用的方式;三、创建和操作具有复杂关系的对象,从而引出下面的概念变量,变量和属性的关系; 对象引用:

引用另外一个对象的属性值作为自己的值;数组和集合等:

数组,数组和变量的关系;运算符和表达式;表达式:

求值的规那么。

 流程操纵:

选择和循环,条件选择。

制作简单的动画:

"attime",动画操纵器。

四、换一角度——从大伙儿熟悉的操作流程来学习脚本这是对前面知识的总结,前面是对语法大体概念的学习,此刻是从大伙儿操作流程的角度来学习,一纵一横,让咱们对脚本有个相对全面的了解,理论和实际彼此联系。

有了前面的基础才勤学下面的内容。

第一步:

创建物体一些经常使用物体的创建方式。

第二步:

选择物体select途径名,变量名引用条件选择用类和集合选择物体组Group:

是一个虚拟对象,不是集合。

第三步:

变换物体变换:

postion,move,scale,rotate,变换坐标系和变换中心第四步:

修改器第五步:

材质和贴图第六步:

制作动画五、大体的语法知识此刻来学语法恐怕可不能那么头痛了吧 

一、MAXScript简介1、MAXScriptMAXScript语言是为了扩展3dsMAX功能而专门设计的一种脚本语言,是面向对象编程语言中的一种。

用它创建的场景物体和材质与在3dsMAX界面中创建的场景物体和材质完全对应。

能够生成自动关键帧的动画模式,并能够通过层级途径名来访问场景中的物体。

有记录在3dsMAX界面中的交互操作进程的能力,在利用界面操作的同时能够利用MAXScript来自由创作。

能够实现3DStudioMAX的全数用途,如建模、动画、材质、渲染等。

MAXScript能够运用各类数学工具来完成高级复杂的程序设计任务。

能够对含有大量对象的集合进行操作。

例如在复杂的场景当选择物体,能够把大量物体放置在精准的位置上,例如在山或路边放置一些树木,利用MAXScript操作起来是超级的方便。

它也能将一些功能概念为界面元素,例如工具栏按钮、菜单、浮动窗口,程序面板卷帘窗。

能够建行批处置操作提高工作效率。

例如成立一次能够渲染多个场景文件的脚本程序。

能够自概念输入输出工具,能够概念修改器,渲染成效插件等。

2、访问脚本、熟悉MAXScript界面:

包括MAXScript卷帘窗,脚本监听器窗口,脚本编辑窗口。

、MAXScript卷帘窗单击命令面板中的按钮,打开应用程序面板,再单击MAXScript按钮,在应用程序面板显现MAXScript卷帘窗,如图1-1所示。

图1-1、脚本监听器窗口脚本监听器又叫脚本跟踪器,单击MAXScript卷帘窗中的OpenListener按钮,也可选择菜单栏中的MAXScript/MAXScriptListener命令,快捷键F11。

如图1-2所示。

图1-2也可右击用户界面左下方的Mini-Listener(迷你监听器)打开脚本监听器窗口,如图1-3所示。

图1-3脚本监听器窗口是一个命令编辑和执行窗口,它由两部份组成,上半部份为宏记录窗口,下半部份为脚本运行结果输出窗口。

如图1-4所示。

图1-4 运行脚本时,脚本监听器窗口会输出脚本的运行结果,运行正确就显示为蓝色,运行错误就显示为红色,希望你的脚本不要显现红色啊。

在窗口中能够编写新的脚本语言或对已有的脚本语言进行修改,用户输入的脚本显示为黑色。

选择主菜单中的宏记录MacroRecorder/Enable命令,若是现在进行操作,在窗口中淡红色部份将记录所进行的操作,这确实是宏记录,选择菜单栏中的File/Saveas命令能够将记录保留为一个脚本。

、脚本编辑窗口单击MAXScript卷帘窗中的NewListener按钮,或选择菜单中的MAXScript/NewScrip命令打开脚本编辑窗口,如图1-5所示。

图1-5脚本编辑窗口是一个文本编辑窗口,你能在3dsMAX内部打开、创建或编辑扩展名为"*.ms"、"*.txt"和"*.dat"格式的文本文件。

调试文件时大键盘中的回车键与在记事本中的用法一样的,用来换行,当鼠标光标出此刻某一行时,敲一下小键盘区的回车键,就能够够执行本行程序。

若是选择多行程序,敲下小键盘区的回车键,能够执行选择被选择的程序。

如图1-6所示。

图1-6按住鼠标左键不放,把选择的一行或多行程序拖到3DSMAX工具栏里,将生成一个宏脚本按钮,单击此按钮,就能够够运行那个宏脚本。

在脚本编辑窗口或脚本监听器窗口里挪用edit()函数,能够打开脚本编辑窗口,语法是:

edit"脚本文件名称"。

例如打开文件:

输入edit"",运行就能够够打开那个脚本文件。

二、大体操作:

创建和改变对象1、创建简单的对象传奇天地未创建之时,是为无极,及有太极,那么宇宙处于浑沌状态,就象鸡蛋一样盘旋着,在空间上无大无小无内无外,在时刻上追溯到远古时期也无法明白其起源,因此把这种状态称为盘古,后来又不知那个好事者把盘古这种状态变成了一个传奇——“盘古开天地”,结果“盘古”变成了一个宇宙开创人。

老子给它起了个玄之又玄的名字——道。

盘古一斧头就把这混混沌沌蛋给劈开了,结果太极判为天地,一气分为阴阳,中国就有了太极八卦和阴阳学说。

自从盘古开辟天地以后,那么万物具有,轻清者上升为天,重浊者下降为地。

在天成象,在地成形,仰观天有日月星辰,俯察地有人鱼鸟兽,花草树木,种类繁多,数量庞大,不可计数。

人类为了征服大自然,把握这些事物,就给它们进行了分类,把相同的对象归类到具有相似特点的类当中,类与类之间若是还有相似的地址,那么就把这些归纳到更高层次的类中,例如把植物类和动物类归纳到生物类。

面向对象编程中类和对象的概念确实是试图对上面这些比较符合人类熟悉规律的概念进行描述。

好吧,此刻就来看看在MAXScript中谁是宇宙万物的制造者——“盘古”。

选择菜单中的MAXScript/NewScrip命令打开脚本编辑窗口,若是想调试程序,跟踪程序执行结果,也能够把脚本监听器窗口打开,输入boxlength:

100width:

100height:

2sphereradius:

10segments:

16 

按Ctrl+E键或选择脚本编辑窗口菜单中的File/EvaluateAll命令执行程序,还能够用鼠标全数选定,敲小键盘上的回车键执行程序(以后都按此方式,再也不说明)。

结果创建了一个盒子和一个球体,如图2-1所示。

此刻单击工具栏按名字选择对象按钮,在弹出的对话框中会显现那个盒子的名字“Box01”和球体的名字“Sphere01”,这是默许的名字。

图2-1boxlength:

100width:

100height:

2这一行代码确实是一个box构造器,它创建了一个长度为100、宽度为100、高度为2的box。

弄了半天,原先构造器确实是“盘古”啊,伟哉,万物之始!

什么是构造器在MAXScript帮忙中常常看到Constructor那个单词,中文意思确实是构造器。

可是帮忙中只是说明构造创建对象的语法,但并无专门的内容来讲明构造器那个概念。

我把它归纳如下:

在MAXScript中创建对象的语法就叫作构造器,其实质确实是挪用函数来创建对象,因此能够把它看做是一个函数挪用。

也能够说是用一个抽象的类产生一个具体的对象。

那个函数的名称确实是基类的名称,所谓基类确实是不能再分的类。

咱们创建对象都是从基类开始的。

Box确实是个基类,它的上一级确实是几何类,再上一级确实是节点。

若是学过JAVA,那么明白创建一个box对象的语法是:

BoxBox01=newbox(); 呵呵,学习MAXScript可舒畅了,只需输入box()就能够够构造一个box了,面且大小写,分号都能够不用注意。

当咱们手工单击创建面板中的Box按钮,然后在视窗中完成一个长度为100、宽度为100、高度为2的Box时,在程序内部就挪用了Box()函数,确实是把咱们在界面中的操作转换成了boxlength:

100width:

100height:

2这行内部代码。

构造器由两部份组成,基类名和创建参数。

整个构造器确实是一个函数挪用,函数名box确实是基类的名字。

创建参数由参数名后跟一个冒号:

和参数值组成,如图2-2所示。

图2-2若是挪用函数没有输入任何参数,那么必需在类名后加上一对英文()括号,例如box(),将创建缺省参数的盒子。

明白构造器原理后就明白怎么创建其它的对象了,例如创建球体,输入sphereradius:

10就能够够了。

注:

由于对象和类、层级关系等详细概念的内容比较复杂,将另立一文讲述。

请看>>2、改变对象创建了盒子和球体对象以后,咱们想明白适才的长度、宽度等参数是不是正确,应该如何办呢那就要访问对象的属性。

诸如长度、宽度、名字、线框颜色半径等等对象所具有的特性通通称为对象的属性(Properties)。

访问对象属性的语法是由对象的途径名(PathName)后跟小数点.和属性名组成,途径名由美元符号$后跟对象在场景中的名称组成,$表示当前场景。

例如访问box01的长度,输入$,在脚本跟踪器窗口中返回,访问Sphere01的半径,输入$返回。

改变Sphere01的线框颜色,输入$=blue或输入:

$=(color00255)都一样。

 那么要改变属性呢只需给这些属性赋值,输入$=20,box01的长度变成20。

咱们以前数学里的等号在MAXScript中只能看成赋值符号用了。

值的数据类型有几种,此刻简单介绍几个典型的不同数据类型,它们是数字,字符串,数组。

 数字:

MAXScript区分两个数量类型:

integers(整型)和floats(浮点型)。

整型确实是整数,例如0、1、802。

浮点型确实是小数,如期而至、、。

当MAXScript执行数字操作时返回和运算参数相同的类型。

例如4+5返回9、而+返回。

字符串:

字符串是一个常量,需用引号标识。

输入"Hello",MAXScript返回"Hello"。

若是输入时没有加引号那么返回undefined未概念。

改变Sphere01的名字,输入$="球体01",此刻打开修改器面板,能够看到如图2-3所示的样子。

图2-3再把名字改回来,输入:

$球体="sphere01"注意双引号不能忘掉输入。

数组:

数组是一些有序的元素的集合。

每一个元素能够是任何类型的值,而且所有的元素都能够单独的访问。

一个数组能够有两种表现形式,第一种是:

#(),这是一个空数组,数组概念必需用一个数量符号#和一对括号()组成,括号里面是数组的元素名,元素能够为一到多个,多个元素之间用逗号分开,例如,#(1,“hello”,。

想要初始化数组中的元素的时候数组有适当的形式,每一个元素的值能够是数值,一个表达式(例如、30*2),或是一个字符串(例如,“hello”),元素的名称是不能有同名,而且元素的数量没有限制。

关于数组的具体操作,以后的例子中会涉及,那个地址只作个简单的介绍。

输入命令#(100,"hello",pi),MAXScript返回#(100,"hello",。

那么咱们怎么能够获取更多的创建参数呢方式有两种:

其一是在创建面板中找到对应的创建参数名,创建好的对象也能够在修改器面板中找到创建参数。

如图2-4A所示。

其二,依照属性来,因为创建参数实质确实是依照对象的属性而定的,没有那个属性就不可能有那个创建参数。

显示对象的属性的函数是showProperties(),输入showProperties$box01,结果在脚本监听器窗口中返回以小数点开头属性名称,冒号后面是值的类型,此刻不要管它。

如图2-4B所示。

三者之间的关系如图2-4所示。

 图2-4细心的读者会发觉,像name、wirecolor这些属性怎么没有显示出来呢这就涉及到节点的通用属性,能够观看另文撰写的文章“面向对象编程中的对象和类”中的“类的继承”内容,此刻不要管它,随着学习后面的文章,就会明白的。

3、变换对象改变位置:

想把那个球体放在Box01上面,先看看这两个物体的坐标吧。

输入$返回[0,0,0],输入$也返回[0,0,0]。

Box01的高度是2,Sphere01的半径是10,要向Z轴移动球体12个单位才能达到目的。

输入move$Sphere01[0,0,12],结果球的底部恰好在盒子的上面。

伶俐的读者也可能会输入$=[0,0,12],结果也达到了目的。

那么move和pos有什么不同呢咱们试着别离把$=[0,0,12]和move$Sphere01[0,0,12]别离持续输入三遍,结果区别就出来了。

pos是绝对坐标,move是相对坐标。

[0,0,12]是什么它是个三点值,在那个地址,方括号中的三个值别离是X轴、Y轴、Z轴坐标值。

 

缩放尺寸:

听说地球以前是圆的,后来人一多就给踩扁了,变成此刻的椭圆形了。

此刻看看咱们创建的球是不是也能踩扁它。

输入$看看结果,返回了[1,1,1],再输入$=[1,1,],结果Box01沿Z轴方向被压扁了一半,重复输入几回,可不能再有转变了。

输入$=[1,1,1],恢恢复状,此刻输入scale$Box01=[,,1],它沿XY轴方向缩小了一半,继续输入就更小了。

$是绝对的,scale$Box01[,,1]是相对的。

输入$=[1,1,1]恢复到原先的状态。

数值1表示原始大小即100%,2表示200%,表示50%,其它如此推算。

方括号中的三个值别离对应于X轴、Y轴、Z轴。

旋转角度:

那个盒子比球大,却被球压迫在底下,很不服气,发出$=(eulerangles9000)命令,来了个侧翻身,结果如图2-5所示。

图2-5(eulerangles9000)这是欧拉角度值,eulerangles表示欧拉角度,后面三个值别离表示X轴、Y轴、Z轴。

上面称动和缩放都有两种操作方式,一种是为属性赋值而变换,另外一种是同意一个动作而变换,那么角度也不例外,输入rotate$Box01(eulerangles9000),结果又把那个盒子给摆平了。

也能写成比较好记的方式如rotate$Box0190x_axis旋转X轴90度,rotate$Box0190y_axis旋转Y轴90度,rotate$Box0190z_axis旋转Z轴90度。

像上面move、scale、rotate等都是函数(Function),能够完成对象的特定功能,在MAXScript中被称为对象的方式(Methods)。

函数和方式实质是一样的,属于对象特有的函数都称为方式。

凡是通过改变对象属性来变换的都是绝对值,通过对象的方式来变换的都是相对值。

4、复制对象那个世界有辛辛苦苦的实干家,那么就有快快活活的投机者。

此刻咱们也来个偷懒的做法,嘿嘿,不要以为是仿照啊。

输入copy$sphere01pos:

[30,30,12]name:

"球体2":

,结果在盒子的斜角处产生了一个新的名字为"球体2"球体。

如图2-6所示。

图2-6copy也是对象的方式,它挪用了另外一个函数作为参数,那个函数确实是前面提到的构造器。

把被挪用的函数称为位置参数(PositionalArguments),把被挪用的参数称为关键词参数(KeywordArguments)。

因为位置参数只能放在固定的位置上,因此称为位置参数,关键词参数是成对显现的,写法就像“关键词:

值”,和上面提到的创建参数一样,没什么区别。

概念是真多,把人给弄晕了,其实弄通了只是是那么回事。

关联和引用复制确实是把copy别离替换为instance、reference。

5、其它方式:

select选择对象、deselect取消选择、delete删除对象、hide隐藏对象,unhide取消隐藏、freeze冻结、unfreeze取消冻结。

例如:

select$Box01--选择Box01deselect$Box01--取消选择Box01delete$*--删除场景中所有对象 6、给予材质自从有了你,世界更漂亮。

给盒子铺上几块地砖,输入:

$=standardMaterialdiffusemap:

(tiles())showInViewport:

true结果如图2-7所示图2-7$是Box01的材质属性,材质也是一个对象,因此标准材质的构造器是standardMaterialdiffusemap:

(tiles())showInViewport:

truestandardMaterial是标准材质类名称,关键词参数diffusemap:

(tiles())是材质的diffusemap贴图,其值tiles()是平铺贴图类型,showInViewport:

true表示是不是在视窗中显示。

其值是true或false,true(真)表示显示,false(假)表示不显示。

那个材质并无在材质编辑器24个球中显现,但点击获取材质按钮在场景选项中能够找到它。

若是想把材质编辑器插槽中的材质球中的一个赋给Sphere01,输入 $=meditmaterials[1]--[1]表示第一个,[2]表示第二个$--设置diffuse的颜色为黄色$--设置高光级别为20结果如图2-8所示图2-8窍门:

参数太多不易把握,可选择主菜单中的宏记录MacroRecorder/Enable命令,然后手工在界面中操作,再观看宏记录,现在不由心中窃笑,哈哈,MAXScript你想难倒我,没门!

关于材质方面的知识太多,不是一时所能把握的,在此只作过初步了解吧。

7、修改对象addmodifier$box01(bend())$=10m$$$像对象的修改器、空间变形等属性,并非对象所固有的,而是后来通过另外的对象附加上去的属性,MAXScript中把它称为动态属性(dynamicproperties)8、概念自己的脚本上面输入的脚本能够保留下来,以备以后再利用。

选择脚本编辑器菜单中的File/Save命令,保留到指定的文件夹中,等以后要历时选择File/Open命令能够进行编辑,也能够选择File/Run命令运行脚本。

三、创建和操作具有复杂关系的对象常量;变量,变量和属性的关系;运算符和表达式;表达式:

求值的规那么,输入的每一行代码都是表达式,因为它老是返回一个值。

对象引用:

有的书叫双词模式(引用另外一个对象的属性值作为自己的值。

);数组和集合等:

数组(一个系列的数据组合),数组和变量的关系; 流程操纵:

选择和循环,条件选择。

闻着春天里散发出来的花香味,忍不住去欣赏那些漂亮的花朵,它们被一些长得井然有序的绿叶衬托着;穿太长着杂乱小草的林间小道,惊动了树上正在戏耍的鸟儿,它们飞向两旁看似有序又无序的青松翠竹林中,刹时不见了踪迹;走在马路上,两旁定有一排排梧桐或扬柳,若是你的眼力好的话,发觉树的皮肤上有好多忙忙碌碌的蚂蚁;白天工作了一天,夜晚来到一个幽静的小河边,抬头望着满天繁星,垂头看着水中的倒影,心情好多了,不由思潮起伏。

不管是四时花草树木,八方飞鸟走兽,不管是静止着的、运动着的,哪怕是无序的事物,都存在有必然的内在关系。

那么究竟是怎么样一个内在关系呢要有具体的内容啊!

最简单最多见的是对称关系,例如昆虫的翅膀,羊头上的角;还有直线关系,例如路边两边的树;最没规律的关系是那些运动着的和杂乱无章的事物,例如飞动着的鸟儿,忙碌着的蚂蚁,水中冒出的气泡,就把它们称为随机关系吧;既没有规律又很杂乱的关系是噪音关系,蝴蝶翩翩起舞的轨迹,杂乱的野草的散布状态;最漂亮的关系是那些按必然的曲线而存在的事物,例如波澜起伏的水面,它是正弦波或正弦波的叠加关系,小朋友向天空方向扔出的石块的运动轨迹,确实是一条抛物线;还有起伏不平的崇山峻岭、狐狸摇动着的尾巴,曲折前进的蛇类等等无不存在着某种关系。

既然能找出这些事物的内在关系,可否用MAXScript来再现这种关系呢答案确实是一个字:

能!

1、常量和变量要实现复杂的程序,第一要把握数据的表现方式,在脚本顶用常量和变量来表现。

现实生活中有些事物是相对固定的,有些那么是常常转变的。

就拿人来讲吧,人的性别是不变的,年龄是每过一年就增加一岁;拿咱们用的电脑硬盘来讲,总容量是不变的,但可用磁盘空间常常是转变的。

在MAXScript中,把那些不能改变的量称为常量(LiteralConstants,字面常量,简称常量),能够转变的量称为变量(Variables)。

例如15,“Hello”等,从字面上一看就明白这些值是不能改变的,因此把常量又叫做字面常量,用age来年龄,而那个age是在转变的,因此age是变量。

那么他人问李四的age是多少,去年问的时候李四或许回答是21岁,今年有人问李四,固然确实是回答是22岁了。

若是他回答age,那他人就不明白他的年龄了,他必需说出具体的数字出来。

age是变量名,22岁是变量值。

那么在MAXScript中该怎么表示那确实是给变量赋值,等于号是赋值符号,输入age=22,脚本监听器中返回22,又如李四的银行存款,建行的是20000元,输入money1=20000,工行的是36000,输入money2=36000,请问用money表示李四这两个银行存款的总和,程序代码应该怎么写没学过编程的人或许可能输入money=56000,呵呵,那个也没有什么错,只是输入money=money1+money2,结果如何一分钱也少不了,照样返回56000,程序自己完成了加法计算,减轻了咱们大脑的负担。

变量就像一个容器,能够存储不同类型的数据。

数量,字符串,数组,对象都能够寄存在变量中。

此刻就来详细讲解变量。

在程序运行期间,系统会在内存中为程序分派一块内存单元,用来存储各类不同类型的数据。

而想访问那个内存单元,就要利用一个标识符来标识它,就像你到单位去找一个人一样,先要告知那个人的名字。

那个标识符确实是变量名,内存单元中装载的数据确实是变量值。

程序能够通过变量名来读取数据。

把数据放到内存中确实是为变量赋值,=是赋值符号。

咱们把上面的写在一块,如下:

money1=20000money2=36000money=money1+money2当程序运行第一句代码时,分派一块内存,用money1作为这块内存的变量名,然后把2000装入这块内存中作为变量的值,第二句同上,运行到第三句时,分派一块内存,取名为money,程序掏出money1和money2中的数据让它们相加,把相加的结果56000装入名为money的内存单元中。

此刻回忆一下以前是如何改变对象属性的。

例如前面提到改变box01的长度,语法是$=20,这和给变量赋值的语法是一样的。

从那个地址能够看出,对象的属性实质上也是一个变量,只因为是对象特有的变量,就称为属性了,访问变量直接用变量名,访问属性要在属性名前加上对象名,中间用一个小数点隔开,称为点语法,这确实是变量和属性的关系。

既然能够把一个变量分派给另外一个变量,就能够够把一个对象的属性分派给一个变量,也能够把一个变量分派给一个对象的属性,还能够把一个对象的属性分派给另外一个对象的属性,有的人把它称为双词模式。

有的人会想,此刻到了这一步,索性来个一不做二不休,把整个对象分派给一个变量,以后访问时加倍方便,这也是许诺的。

举例如下:

height=50myBox=boxlength:

20width:

20height:

heightzPos=+10mySphere=sphereradius:

10pos:

[0,0,zPos

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1