收藏 分享(赏)

MAX脚本语言.doc

上传人:jw66tk88 文档编号:6255701 上传时间:2019-04-03 格式:DOC 页数:28 大小:430.50KB
下载 相关 举报
MAX脚本语言.doc_第1页
第1页 / 共28页
MAX脚本语言.doc_第2页
第2页 / 共28页
MAX脚本语言.doc_第3页
第3页 / 共28页
MAX脚本语言.doc_第4页
第4页 / 共28页
MAX脚本语言.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、MAX 脚本语言是基于 3DS-MAX2.0 以上版本的,所以你只能在 3D-MAX 运行的时候使用脚本语言。这里有很多种方法从内部访问 MAX 的脚本语言。最简单的方法是从 MAX 的菜单中选择 MAX 脚本语言编辑器。 又要写新的教程了,现在把我去年写的脚本入门教程发上来,这些教程是站在初学者角度写的,尽可能做到形象生动,通俗易懂,让 3D 爱好者以最少的时间透彻理解和掌握初步的脚本知识。内容图文并茂,语言高度概括,文采形象生动,思路清晰可见;指出要害,抓住关键,透彻理解那些难懂的编程概念;不用担心数学基础很差,无需害怕英文单词不懂,只需初中数学知识,把英文单词作图形符号看待,拿脚本编程当

2、文字游戏把玩。能够提高解决问题的能力,可以降低学习脚本的门槛。不用费力看英文帮助,何需辛苦找编程资料,减轻学习负担,节省宝贵时间!发挥自己的聪明才智,运用科学的学习方法,首先认真学好入门教程,然后虚心请教各位高手,脚本编程从此不再难!一、 MAXScript 简介1、MAXScriptMAXScript 语言是为了扩展 3ds MAX 功能而专门设计的一种脚本语言,是面向对象编程语言中的一种。用它创建的场景物体和材质与在 3ds MAX 界面中创建的场景物体和材质完全对应。可以生成自动关键帧的动画模式,并可以通过层级路径名来访问场景中的物体。有记录在 3ds MAX 界面中的交互操作过程的能力

3、,在使用界面操作的同时可以使用MAXScript 来自由创作。可以实现 3D Studio MAX 的全部用途,如建模、动画、材质、渲染等。MAXScript 可以运用各种数学工具来完成高级复杂的程序设计任务。可以对含有大量对象的集合进行操作。例如在复杂的场景中选择物体,可以把大量物体放置在精确的位置上,例如在山或路边放置一些树木,使用 MAXScript 操作起来是非常的方便。它也能将一些功能定义为界面元素,例如工具栏按钮、菜单、浮动窗口,程序面板卷帘窗。可以建行批处理操作提高工作效率。例如建立一次可以渲染多个场景文件的脚本程序。可以自定义输入输出工具,可以定义修改器,渲染效果插件等。2、访

4、问脚本2.1、认识 MAXScript 界面:包括 MAXScript 卷帘窗,脚本监听器窗口,脚本编辑窗口。2.1.1、MAXScript 卷帘窗单击命令面板中的 按钮,打开应用程序面板,再单击 MAXScript 按钮,在应用程序面板出现 MAXScript 卷帘窗,如图 1-1 所示。图 1-12.1.2、脚本监听器窗口脚本监听器又叫脚本跟踪器,单击 MAXScript 卷帘窗中的 Open Listener 按钮,也可选择菜单栏中的 MAXScriptMAXScript Listener 命令,快捷键 F11。如图 1-2 所示。图 1-2也可右击用户界面左下方的 Mini-Liste

5、ner(迷你监听器)打开脚本监听器窗口,如图 1-3 所示。图 1-3脚本监听器窗口是一个命令编辑和执行窗口,它由两部分组成,上半部分为宏记录窗口,下半部分为脚本运行结果输出窗口。如图 1-4 所示。图 1-4运行脚本时,脚本监听器窗口会输出脚本的运行结果,运行正确就显示为蓝色,运行错误就显示为红色,希望你的脚本不要出现红色啊。在窗口中可以编写新的脚本语言或对已有的脚本语言进行修改,用户输入的脚本显示为黑色。选择主菜单中的宏记录 Macro RecorderEnable 命令,如果此时进行操作,在窗口中淡红色部分将记录所进行的操作,这就是宏记录,选择菜单栏中的 FileSave as 命令可以

6、将记录保存为一个脚本。2.1.3、脚本编辑窗口单击 MAXScript 卷帘窗中的 New Listener 按钮,或者选择菜单中的 MAXScriptNew Scrip 命令打开脚本编辑窗口,如图 1-5 所示。图 1-5脚本编辑窗口是一个文本编辑窗口,你能在 3ds MAX 内部打开、创建或者编辑扩展名为“*.ms“、“*.txt“和“*.dat“格式的文本文件。调试文件时大键盘中的回车键与在记事本中的用法一样的,用来换行,当鼠标光标出现在某一行时,敲一下小键盘区的回车键,就可以执行本行程序。如果选择多行程序,敲下小键盘区的回车键,可以执行选择被选择的程序。如图 1-6 所示。图 1-6按

7、住鼠标左键不放,把选择的一行或者多行程序拖到 3DSMAX 工具栏里,将生成一个宏脚本按钮,单击此按钮,就可以运行这个宏脚本。在脚本编辑窗口或脚本监听器窗口里调用 edit()函数,可以打开脚本编辑窗口,语法是:edit “脚本文件名称“ 。 例如打开 effect.ms 文件:输入 edit “ effect.ms “,运行就可以打开这个脚本文件二、基本操作:创建和改变对象1、创建简单的对象传说天地未创建之时,是为无极,及有太极,则宇宙处于浑沌状态,就象鸡蛋一样盘旋着,在空间上无大无小无内无外,在时间上追溯到远古时代也无法知道其起源,所以把这种状态称为盘古,后来又不知那个好事者把盘古这种状态

8、变成了一个传说“盘古开天地”,结果“盘古”变成了一个宇宙创始人。老子给它起了个玄之又玄的名字道。盘古一斧头就把这混混沌沌蛋给劈开了,结果太极判为天地,一气分为阴阳,中国就有了太极八卦和阴阳学说。自从盘古开辟天地之后,则万物具备,轻清者上升为天,重浊者下降为地。在天成象,在地成形,仰观天有日月星辰,俯察地有人鱼鸟兽,花草树木,种类繁多,数量庞大,不可计数。人类为了征服大自然,掌握这些事物,就给它们进行了分类,把相同的对象归类到具有相似特征的类之中,类与类之间如果还有相似的地方,那么就把这些归纳到更高层次的类中,例如把植物类和动物类归纳到生物类。面向对象编程中类和对象的概念就是试图对上面这些比较符

9、合人类认识规律的概念进行描述。好吧,现在就来看看在 MAXScript 中谁是宇宙万物的创造者“盘古”。选择菜单中的 MAXScriptNew Scrip 命令打开脚本编辑窗口,如果想调试程序,跟踪程序执行结果,也可以把脚本监听器窗口打开,输入box length:100 width:100 height:2sphere radius:10 segments:16按 Ctrl+E 键或者选择脚本编辑窗口菜单中的 File/Evaluate All 命令执行程序,还可以用鼠标全部选定,敲小键盘上的回车键执行程序(以后都按此方法,不再说明)。结果创建了一个盒子和一个球体,如图 2-1 所示。现在单

10、击工具栏按名字选择对象按钮,在弹出的对话框中会出现这个盒子的名字“Box01”和球体的名字“Sphere01”,这是默认的名字。图 2-1box length:100 width:100 height:2 这一行代码就是一个 box 构造器,它创建了一个长度为 100、宽度为 100、高度为 2 的 box。搞了半天,原来构造器就是“盘古”啊,伟哉,万物之始!什么是构造器?在 MAXScript 帮助中常常看到 Constructor 这个单词,中文意思就是构造器。但是帮助中只是说明构造创建对象的语法,但并没有专门的内容来说明构造器这个概念。我把它归纳如下:在 MAXScript 中创建对象的

11、语法就叫作构造器,其实质就是调用函数来创建对象,所以可以把它看作是一个函数调用 。也可以说是用一个抽象的类产生一个具体的对象。这个函数的名称就是基类的名称,所谓基类就是不能再分的类。我们创建对象都是从基类开始的。Box 就是个基类,它的上一级就是几何类,再上一级就是节点。如果学过 JAVA,那么知道创建一个 box 对象的语法是:Box Box01=new box() ;呵呵,学习 MAXScript 可舒服了,只需输入 box()就可以构造一个 box 了,面且大小写,分号都可以不用注意。当我们手工单击创建面板中的 Box 按钮,然后在视窗中完成一个长度为 100、宽度为100、高度为 2

12、的 Box 时,在程序内部就调用了 Box( )函数,就是把我们在界面中的操作转换成了 box length:100 width:100 height:2 这行内部代码。构造器由两部分组成,基类名和创建参数。整个构造器就是一个函数调用 ,函数名 box 就是基类的名字。创建参数由参数名后跟一个 冒号 : 和参数值组成,如图 2-2 所示。图 2-2如果调用函数没有输入任何参数,那么必须在类名后加上一对英文 ( )括号,例如box(),将创建缺省参数的盒子。知道构造器原理后就知道怎么创建其它的对象了, 例如创建球体,输入sphere radius:10 就可以了。注:由于对象和类、层级关系等详细

13、概念的内容比较复杂,将另立一文讲述。2、改变对象创建了盒子和球体对象之后,我们想知道刚才的长度、宽度等参数是否正确,应该怎么办呢?那就要访问对象的属性。诸如长度、宽度、名字、线框颜色半径等等对象所具有的特性统统称为对象的属性(Properties)。访问对象属性的语法是由对象的路径名(PathName)后跟小数点.和属性名组成,路径名由美元符号$后跟对象在场景中的名称组成,$表示当前场景。例如访问 box01 的长度,输入 $Box01.length ,在脚本跟踪器窗口中返回 100.0,访问 Sphere01 的半径,输入 $Sphere01.radius 返回 10.0 。改变 Spher

14、e01 的线框颜色,输入 $sphere01.wirecolor=blue 或者输入:$sphere01.wirecolor= (color 0 0 255) 都一样。那么要改变属性呢?只需给这些属性赋值, 输入$Box01.length20,box01 的长度变成 20。我们以前数学里的等号在 MAXScript 中只能当作赋值符号用了。值的数据类型有几种,现在简单介绍几个典型的不同数据类型,它们是数字,字符串,数组。数字:MAXScript 区分两个数目类型:integers(整型)和 floats(浮点型)。整型就是整数,例如 0、1、802。浮点型就是小数,如期而至 0.2、25.02

15、、0.68。当 MAXScript 执行数字操作时返回和运算参数相同的类型。例如 4+5 返回 9、而 4.0+5.0 返回 9.0。字符串:字符串是一个常量,需用引号标识。输入“Hello“,MAXScript 返回“Hello“。如果输入时没有加引号则返回 undefined 未定义。改变 Sphere01 的名字,输入$Sphere01.name=“球体 01“,现在打开修改器面板 ,可以看到如图 2-3 所示的样子。图 2-3再把名字改回来,输入:$球体 01.name=“sphere01“注意双引号不能忘掉输入。数组:数组是一些有序的元素的集合。每个元素可以是任何类型的值,并且所有的

16、元素都可以单独的访问。一个数组可以有两种表现形式,第一种是:#(),这是一个空数组,数组定义必须用一个数目符号#和一对括号( )组成,括号里面是数组的元素名,元素可以为一到多个,多个元素之间用逗号分开,例如,#(1,“hello”,3.14159)。想要初始化数组中的元素的时候数组有适当的形式,每一个元素的值可以是数值,一个表达式(例如、30*2),或者是一个字符串(例如,“hello”),元素的名称是不能有同名,而且元素的数目没有限制。关于数组的具体操作,以后的例子中会涉及,这里只作个简单的介绍。输入命令 #(100,“hello“,pi) ,MAXScript 返回 #(100, “hel

17、lo“, 3.14159)。那么我们怎么可以获取更多的创建参数呢?方法有两种:其一是在创建面板中找到对应的创建参数名,创建好的对象也可以在修改器面板中找到创建参数。如图 2-4A 所示。其二,根据属性来,因为创建参数实质就是根据对象的属性而定的,没有这个属性就不可能有这个创建参数。显示对象的属性的函数是 showProperties( ),输入 showProperties $box01 ,结果在脚本监听器窗口中返回以小数点开头属性名称,冒号后面是值的类型,现在不要管它。如图 2-4B 所示。三者之间的关系 如图 2-4 所示。图 2-4细心的读者会发现,像 name、wirecolor 这些

18、属性怎么没有显示出来呢?这就涉及到节点的通用属性,可以观看另文撰写的文章“面向对象编程中的对象和类”中的“类的继承”内容,现在不要管它,随着学习后面的文章,就会知道的。3、变换对象改变位置:想把那个球体放在 Box01 上面,先看看这两个物体的坐标吧。输入 $Box01.pos 返回 0,0,0 ,输入 $Sphere01.pos 也返回 0,0,0 。Box01 的高度是2,Sphere01 的半径是 10,要向 Z 轴移动球体 12 个单位才能达到目的。输入 move $Sphere01 0,0,12, 结果球的底部刚好在盒子的上面。聪明的读者也可能会输入 $Sphere.pos0,0,1

19、2 ,结果也达到了目的。那么 move 和 pos 有什么不同呢?我们试着分别把$Sphere01.pos 0,0,12 和 move $Sphere01 0,0,12 分别连续输入三遍,结果区别就出来了。pos 是绝对坐标,move 是相对坐标。0,0,12 是什么?它是个三点值,在这里,方括号中的三个值分别是 X 轴、Y 轴、Z 轴坐标值。缩放尺寸:据说地球以前是圆的,后来人一多就给踩扁了,变成现在的椭圆形了。现在看看我们创建的球是不是也能踩扁它。输入$Box01.scale 看看结果,返回了 1,1,1,再输入 $Box01.scale=1,1,0.5 ,结果 Box01 沿 Z 轴方向

20、被压扁了一半,重复输入几次,不会再有变化了。输入 $Box01.scale=1,1,1 ,恢复原状,现在输入 scale $Box01= 0.5,0.5,1,它沿 XY 轴方向缩小了一半,继续输入就更小了。 $Box01.scale 是绝对的,scale $Box01 0.5,0.5,1是相对的。输入$Box01.scale=1,1,1 恢复到原来的状态。数值 1 表示原始大小即 100%,2 表示 200%,0.5 表示 50%,其它如此推算。方括号中的三个值分别对应于 X 轴、Y 轴、Z 轴。旋转角度:那个盒子比球大,却被球压迫在底下,很不服气,发出 $Box01.rotation=(eu

21、lerangles 90 0 0) 命令,来了个侧翻身,结果如图 2-5 所示。图 2-5(eulerangles 90 0 0) 这是欧拉角度值,eulerangles 表示欧拉角度,后面三个值分别表示 X 轴、Y 轴、Z 轴。上面称动和缩放都有两种操作方式,一种是为属性赋值而变换,另外一种是接受一个动作而变换,那么角度也不例外,输入 rotate $Box01 (eulerangles 90 0 0),结果又把这个盒子给摆平了。也能写成比较好记的方式如rotate $Box01 90 x_axis 旋转 X 轴 90 度,rotate $Box01 90 y_axis 旋转 Y 轴 90度

22、, rotate $Box01 90 z_axis 旋转 Z 轴 90 度。像上面 move、 scale、rotate 等都是函数(Function),能够完成对象的特定功能,在 MAXScript 中被称为对象的方法(Methods)。函数和方法实质是一样的,属于对象特有的函数都称为方法。凡是通过改变对象属性来变换的都是绝对值,通过对象的方法来变换的都是相对值。4、复制对象这个世界有辛辛苦苦的实干家,那么就有快快活活的投机者。现在我们也来个偷懒的做法,嘿嘿,不要认为是模仿啊。输入 copy $sphere01 pos:30,30,12 name:“球体2“:,结果在盒子的斜角处产生了一个新

23、的名字为“球体 2“球体。 如图 2-6 所示。图 2-6copy 也是对象的方法,它调用了另外一个函数作为参数,这个函数就是前面提到的构造器。把被调用的函数称为位置参数(Positional Arguments),把被调用的参数称为关键词参数(Keyword Arguments)。因为位置参数只能放在固定的位置上,所以称为位置参数,关键词参数是成对出现的,写法就像 “关键词:值”,和上面提到的创建参数一样,没什么区别。概念是真多,把人给搞晕了,其实搞通了不过是那么回事。关联和引用复制就是把 copy 分别替换为 instance、reference。5、其它方法:select 选择对象、de

24、select 取消选择、delete 删除对象、hide 隐藏对象,unhide 取消隐藏、freeze 冻结、 unfreeze 取消冻结。示例:select $Box01-选择 Box01deselect $Box01-取消选择 Box01delete $* -删除场景中所有对象6、赋予材质自从有了你,世界更美丽。给盒子铺上几块地砖,输入:$box01.material=standardMaterial diffusemap tiles() showInViewport:true结果如图 2-7 所示图 2-7$box01.material 是 Box01 的材质属性,材质也是一个对象,所

25、以标准材质的构造器是standardMaterial diffusemap tiles() showInViewport:truestandardMaterial 是标准材质类名称,关键词参数 diffusemap tiles() 是材质的 diffusemap 贴图,其值 tiles()是平铺贴图类型,showInViewport:true 表示是否在视窗中显示。其值是 true 或者 false,true(真)表示显示,false(假)表示不显示。这个材质并没有在材质编辑器 24 个球中出现,但点击获取材质按钮在场景选项中可以找到它。如果想把材质编辑器插槽中的材质球中的一个赋给 Spher

26、e01,输入开始访问 MAXScript MAX 脚本语言是基于 3DS-MAX2.0 以上版本的,所以你只能在 3D-MAX 运行的时候使用脚本语言。这里有很多种方法从内部访问 MAX 的脚本语言。最简单的方法是从 MAX 的菜单中选择 MAX 脚本语言编辑器。开始脚本的另外一个方法是: 1 在命令面板上选择 UtilIty 并点击 MAXScript 会出现一个面板。 2 点击 Open Listener.MAX 脚本语言编辑窗口就会出现。 MAX 脚本语言编辑窗口是一个交互式的语言翻译,它的工作方式就如同 DOS 的命令窗口.输入 MAX 脚本语言中的命令,并且回车就可以立即执行命令。

27、一次只有一个 MAX 脚本语言编辑窗口可以被打开。当你在使用的时候,你可以在 MAX和脚本语言编辑器之间互相切换。如果你关闭了语言编辑窗口然后再打开它,先前的命令和文字将被保留下来。 语言编辑器分为两格。顶部粉红色的窗口是宏记录器窗口;底部白色窗口是输出窗口。如果当语言编辑起启动以后,宏记录面板是关闭的,那么可以把分隔条向下拖曳来打开它。 当宏记录器处于可运行状态的时候,每一条可以记录的命令都会显示在宏记录窗口里,而输出的结果就会在白色的输出窗口里输出。从宏记录器窗口中输出的执行代码会被显示在输出窗口里以防止错误或混乱的记录。两个窗口都允许你进行剪切、复制、拖曳、编辑、选择或执行命令(代码)

28、。你可以拖动分隔条来调整两个窗口之间的大小。 在状态栏的左边界包括了可定义大小的小型编辑窗口。 如果小型编辑窗口不可见,可以拖动状态面板左边的分割条来让它显示出来。THE MINI LISTENER PANES ACT AS SINGLE-LINE IN CORRESPONDING LISTENER PANES。小型编辑窗口总是显示你正在输入的东西或者是你把光标放置于编辑窗口的位置。反过来说,任何你输入到小型编辑窗口的内容都会输入到光标所处位置的编辑窗口中。 怎样把编辑器安装到一个视图中 1、右击视图标签(viewport label) 2、选择 Extended 3、选择 MAXScript

29、 Listener. 源代码输出 MAX 脚本语言代码的输出不同于大多数的程序语言。MAX 脚本提供给你具有自由形式的语言,就如同 C 和 C+那样,没有数量庞大的标点符号。 MAX 脚本语言让你打破变量声明、公式的限制,并且可以在任何你需要的地方进行跳行执行。语句的断点可以设在表达式的中间。MAX 脚本语言会解读你的代码直到每一行的终点,不管这行代码是否完整。如果不完整的话,它回继续解读后面的代码,只到代码结束为止。怎样有效的打断一条命令 a+b*c/d-e +f*g/h 这个表达式的打断是无效的,因为 MAX 语句会把 a+b*c/d-e 看成一个合法的运算而把独立的“+f*g/h“看成一

30、个错误的表达式.,但是我们可以用反斜杠来使其合法,比如: a+b*c/d-e +f*g/h 这样 MAX 脚本语言就可以正确的识别这个语句了,它的运算结果同 a+b*c/d-e+f*g/h 无论何时,MAX 脚本语言都把 XX 作为一条命令的最后一个元素(除了空格.TAB.和注释文字),它回继续解读下一行,虽然这个断点并没有显现出来.对于把复杂的和很长的语句行变的简单易读,行的有效打断是非常重要的.MAX 脚本语言也允许你把几条表达式或声明语句合并为一行.表达式与表达式之间用分号来分隔. 比如说: 1+2;23 ;sin 0 3 8 0.0 有时候在语句的旁边添加注释文字来让你明白程序上下文之

31、间的含义是十分有用的。你可以用两个-号来注明你的注释文字。 比如: 1+2+3 -you dont really need MAXScript to do this,do you? 6 把信息输入到 MAXScript 有几种非常有代表性的不同类型数据是你要输入到 MAX 脚本语言编辑窗口中去的信息。包括数字变量,字符串变量和数组。通常输入信息的方法是输一个值或者是一个表达式并且按下回车键。无论怎样,各种类型的信息必须用一种稍微与众不同的方法来输入。 MAX 脚本语言对两中类型的数据进行区分:整型变量和浮点型变量。整型变量就是一整个的数字,就像 0,1,2,10,527。浮点型变量就是带小数点

32、的数字,比如 2.5,72.0和 0.33 当 MAX 脚本语言进行数字运算的时候,计算结果的数据类型一般和计算类型相同。比如说 1+2 3 2.0+3.0 5.0 当 MAX 脚本语言进行包括整数和浮点数的混合运算的时候,无论怎样它都会把这个整数看成浮点数。 比如说: 3+4.0 7.0 MAX 脚本语言是一种基于正常语言的表达方法。它的所有构成都能产生一个值。字符串变量是 MAX 脚本语言的构成,他们被插入脚本内部作为记号使用。输出一个字符串变量的命令,意味着在 MAX 脚本里产生的一个字符串变量是字符串本身。 1、在 MAX 脚本编辑窗口打开的情况下,输入 HELLO 到 MAX 脚本编

33、辑窗口然后按回车。 MAX 脚本回答“undefined“(未定义) 这是因为 MAX 脚本语言无法识别 HELLO 这个词,它不是一个命令,变量或者是任何可以识别的东西。 2、再次输入单词“HELLO“,这次要在这个词旁边加上双引号,然后按回车。这个时候“”就是输出命令。 现在看上去 MAX 脚本可以识别这个字符串变量“HELLO”因为它非常友好的用“HELLO”来回答你。实际上它仅仅知道你输入了一个字符串,并且输出命令的回复值总是你输入的字符串的值。 在 MAX 脚本语言里输入数组。 你可以使用数组来对几个元素进行编组。一个数组是几个值(元素)的有序集合。在MAX 脚本语言里每一个数组里的

34、元素可以包括任何类型的值,并且所有的元素都可以被个别的存取。 一个数组可以表达成两个部分,第一个部分是#() 这是一个最基本类型的数组:一个空数组。要注意,所有的数组在使用前都必须使用一对括号定义。 当你想要定义一个或者多个初级元素的时候这个数组的模式是十分恰当的。每一个数组的元素可以是一个数或者是一个表达式。 (比如说,SIN,PI,6.23)(“hello,你好“).元素没有必要一定是相同类型的信息,并且在一个数组里有多少元素没有限制.比如: #(5,PI,“STRING“,6+23) #(5,3.14159,“STRING“,14) 变量的赋值 在先前的例子中,你在 MAX 脚本程序中输

35、入了字符串“HELLO“,于是 MAX 脚本显示了相同的字符串作为它的命令输出.当你输入其他字符串的时候,MAX 脚本语言会显示你后来输入的字符串而忘记了先前的.要让 MAX 脚本记住一个字符串的值的时候你就需要给变量赋值.在 MAX 脚本语言中给变量赋值的通常语法是: variable_name = variable_value(变量名=变量名) 以一个字母,文字或者下划线“_“开头,跟上任何的文字的或者是数字的字符.可以是字符串变量,数字,或者其他任何的表达式给一个变量赋予一个字符串: 1、在编辑器内输入如下命令: mystring = “This is my string“ 注:其中“m

36、ystring“是变量名, “This is my string“是变量值. 于是 MAX 脚本语言就会返回这个字符串变量的值: mystring = “This is my string“ “This is my string“ 现在你就可以输入变量名来随时查阅这个变量的值了.这种方法比你重新输入这个字符串要快很多.MAX 脚本语言在开启的过程中会始终记忆这个字符串变量,直到你改变了这个字符串变量的值为止. 给一个已经存在的变量赋予新的值. 1.输入 mystring = “This is not your string.“回车当你做到这一步的时候 ,MAX 脚本语言已经为这个变量记忆了新的

37、值.现在你再输入 mystring 的时候,计算机会回复“This is not your string“ 要注意 MAX 脚本语言不能区分大小写字母不同的变量名,MAX 脚本语言的命名不是很敏感. MAX 脚本语言里的数据流转 除了字符串以外,你还可以把其他类型的数据输入 MAX 的脚本语言里.MAX 的脚本语言不仅可以识别数字型字符,也可以对它们进行精确的数字运算.和字符串一样,如果你只输入数字本身,MAX 脚本语言只会把这个数字回复给你,它评估这个数据,并且显示数据的值.数据运转更加的有趣. 基本的数据流转. MAX 脚本语言有许多内置的函数可以让你把它作为计算机器来使用. 比如 36.

38、5*2 73.0 MAX 脚本语言也能识别少数的几个数学常量. 比如: PI 3.14159 MAX 脚本语言识别出了 PI 的值并且返回了这个值 你可以在更多复杂的运算中使用这个值.比如说,如果你想知道一个半径为 2.5 英寸的球体的容积,那么就用正方体的半径的三次方乘以 PI,然后乘以 4 再除以 3. 4/3*PI*2.53 49.0874 字符串的运算. 你也可以用字符串执行一些简单的数学运算.比如说你对变量 a 和变量 b 进行如下定义. a=“MAXScript“;b=“is fun!“ 那么变量 a 加上变量 b 的最终结果就是 “MAXScript is fun!“ 更多的关于

39、字符串的运算规则会在以后的“字符串值”中加以详细的说明。 额外的数据运算。 MAX 脚本语言可以执行很多数学运算,包括三角函数(SIN,COSH,ATAN)和对数函数(EXP,LOG,SQRT).这一章节介绍了两种最有用的运算:随机数和增量。 创建随机数 在 MAX 脚本语言里一个非常有用的数据运算是随机数函数.它返回指定的两个值之间的随机数.例如: random 1 100 返回的随机整数在 1 与 100 之间.返回值的类型(整型和浮点型)和函数中第一个定义的数据类型相同,所以如果你输入: random 1.0 100 MAX 脚本语言就会返回一个在 1 与 100 之间的随机浮点数 注意

40、,这个命令在运行中有可能产生相同的数字.如果关闭这个软件然后重新启动脚本,这样的情况就有可能发生.但是千万不要一次又一次的运行脚本.如果你想要软件在每次启动的时候都会产生不同的数字.你可以用以下的命令: seed 这个数字可以是整型数或者是浮点数,每次你改变这个值的时候.MAX 脚本语言都会生成新的随机数. 增量 另外一个有用的数据运算是 MAX 脚本语言提供的增量.这是一个可以快速改变赋予值的方法.如下例所举: X=X+1 有 4 种数学运算可以分配相应的算子.(+,-,*,/) 比如我们先给 X 赋值 X=1 然后我们可以通过 X+=1 对 X 进行加 1 的动作. 这个时候输入 X+=1

41、,那么 X=2. 再输入 X+=2,那么 X 就等于 4,等于号后面的值可以是数字或者是变量,比如我们输入X+=X,那么 X 就会等于 8.X-,X*和 X/与 X+同理.用 MAX 脚本语言画一个 BOX 在先前的课程中,你可以看到 MAX 脚本语言的一些有用的能力;但是在界面里我们却什么都看不见.MAX 脚本语言对普通的物体的操作也是十分有用的.就好象六面体和圆柱体.你可以用 MAX 脚本语言来画一个六面体,只需要输入如下命令: BOX() 这条命令可以创建一个默认参数的六面体.一般情况下,把一个物体赋予一个变量能更好的练习.因为你可以通过变量名来方便的查找到它.比如: mybox=box

42、() 当你使用 MAX 脚本语言来创建一个没有指定任何参数的物体的时候,使用一对空的括号是十分重要的,代表没有参数,或者可以理解成参数是“.这两个引号告诉 MAX 脚本程序这个物体使用默认参数.如果你想在穿件的时候指定任何参数,比如物体的大小和位置,你就不需要这对括号了。比如说: mybox = box length:20 width:20 height:20 MAX 脚本语言返回这个六面体的名称和位置.下载这个例子创建了一个六面体,并且提供了三个参数:这个六面体的长,宽,高.参数的名字后面跟着冒号和这个参数的值.你可以不加任何标点符号输入所有的参数.MAX 脚本语言返回以下数据段 $Box:

43、Box01 0.000000, 0.000000, 0.000000. 数据段的第一个部分称为路径名.MAX 脚本语言里的路径名和 WINDOWS 里面的路径名相似.就像 c:3dmaxexamplesfile.max 一样,它描述了文件的详细的层级和路径.在 MAX 脚本语言里,使用了一个类似的路径概念.但是在 MAX 脚本语言里的路径不是针对于文件的,而是针对于物体的.MAX 脚本语言里的路径总是以“$“开头数据段的第二个部分是物体名,在这个例子中,这个名字显示在物品选择对话框里,当你使用 Select by Name(按名称选择)钮的时候.它不是你的六面体的变量名.这个参数只是一个指向这

44、个物体的占位符在中括号里的值对应着六面体的中心位置所处的坐标. MAX 脚本语言同时也在视图中画出了这个六面体.它在透视图中显示如下:编辑六面体 在上面的课程里,你用变量赋值的方法创建了一个六面体.因为你把六面体赋予了一个变量,你现在可以非常容易的编辑和存取这个六面体的所有参数.变量名就如同是这个六面体的把手一样,在变量名后加一个点(.)再加参数名.比如 mybox.height 可以解读成 mybox的高度。所有的 3DS MAX 物体都有创建参数,就像六面体的长,宽,高.或者是圆形的半径,这些物体也有转变参数,比如 scale(比例),rotation(旋转),position(位置).和

45、普通参数比如名字,颜色等等.要改变任何属性,你可以给这些参数设定一个新的值. 比如,你想要改变物体的大小: 输入 mybox.scale=1.5,1.5,1.5可以看到六面体比原来的尺寸等比放大了 1.5倍. 比例属性要求给予 X,Y,Z 轴各一个缩放元素.在这个例子里,你没有必要把同样的值给予六面体缩放元素.除非你想均衡的调整六面体的大小. 如果你只想要改变物体的宽和高,而不改变长.可以使用以下语句: mybox.scale = 1,3,2 当你用任何元素来缩放你的原始六面体(长 20,宽 20,高 20)的时候,六面体的参数始终是长 20,宽 20,高 20.你可以在编辑面板里看到六面体的

46、参数没有被缩放改变。如下图虽然改变六面体的高度和宽度参数可以在视觉上达到相同的结果,但是上面的缩放结果和我们使用下面两条命令的结果是不一样的. mybox.height = 40 mybox.weidth = 60 产生这种情况的原因是因为用参数来改变六面体高度的时候,被改变的是创建参数.使用缩放参数来改变物体的高度的时候不会改变创建参数。此外,不管使用任何方法来改变物体的大小,在通常的情况下是一样的,但是,当你想要保持一个物体的创建参数的时候(那样的话你甚至可以在对物体进行一连串不同的变形之后仍然可以改变物体),你必须使用缩放属性来熟练的改变物体的大小,而不是单独的改变他们的创建参数。怎样寻

47、找物体所有的附加的参数 参数展示面板显示了六面体在创建时的所有参数.你可以用参数展示面板里的微调钮来改变这些参数.如果你想要改变长,宽,高的段数,或者是在 MAX 脚本语言里设置生成贴图坐标,你就需要知道改变这些属性的语法.为了找到所有属性设置的语法,这里有两种不同的检查函数.第一个是“.“ 这个函数会显示 3DSMAX 指定的级别信息.在圆括号里输入的信息是一个字符串和一个统配符来和 3DMAX 的级别名,超级别名和参数名来对应。MAX 脚本语言显示了六面体的所有属性,相当于你可以在参数展示面版里看到的,包括了六面体所属的级别和每一个属性的数据类型。现在我来解释一下数据类型 float:浮点

48、型,简单的来说就是带小数点的数字类型。但是我现在还不知道可以延伸到小数点后面的几位。:( integer:整型,不带小数点的数据类型,范围不明。boolean:布尔型,它的值只有 True(真)和 False(假)两种。 注意,你可以用“*“号作为统配符来查看六面体的所有属性.如果你已经输入了,MAX 脚本语言就已经列出了所有的参数和级别 例子: showclass “box*“ 显示所有 3DSMAX 里面的级别是 BOX 的物体。 showclass “box.*“显示所有级别是 BOX 的物体的可存取参数。 showclass “*:mod*“ 显示所有的编辑级别。showclass “

49、*.*rad*“ 显示参数中包括 rad 三个字符的所有在场景中存在的物体。进行标准的变化 现在,你知道了如何创建和编辑六面体的基本属性了.你需要学习怎样对它进行标准的变形.(移动,缩放和旋转) 在物体创建的时候就对其指明位置,大小和方向是可行的.但是,你也同样能够在物体创建以后再对它实行这些操作.就如同你在 3DMAX 的标准世界里所能做的那样。移动六面体 移动一个物体的 MAX 脚本语言非常简单: move name_obj (move 物体变量名 ) 你想要移动的物体的名字在那里,你想要它移动多少?要非常注意的是,你不是在手动移动这个物体,而是用数字在移动.所以,如果你要是使用移动函数不止一次的话,那么这个物体就会持续移动.这对缩放和旋转操作同样有效.与设定一个物体的初始属性来移动这个物体相比,如果你设定这个物体的位置,缩放比率和角度属性几次,这个物体不会改变,即使你每次给相同的值。 比如说: mybox.pos = 10,0,0 mybox.pos = 10,0,0 mybox.pos = 10,0,0 只有第一行语句能够被执行.第二行和第三行语句对你的六面体没有进行任何位置上的改变. 他们没有改变六面体的位置另一

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

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报