◆MaxScript大全--xs

合集下载

MAXScript2

MAXScript2

飞浪脚本零起点入门系列(二)MAXScript数据类型著作:飞浪制作:【WEWE】声明:本教程为CG++原创,未经本人允许,禁止一切形式的转载,谢谢合作:)上一节:飞浪脚本零起点入门系列(一)MAXScript的初步知识飞浪脚本零起点入门系列(二)MAXScript数据类型本节关键词:float Integer string time color booleanClass undefined MAXScript可以对MAX的Node(节点)进行操作,但它也是程序语言,对于没接触过程序的人来说,了解程序的基本知识是必要的,这里本人先对MAXScript跟其他程序的一些共同元素进行讲解。

为以后写脚本打下基础。

MAXScript数据类型计算机处理的是数据,而数据是以某种特定的形式存在的,(例如整数、浮点数、字符等形式)。

不同的数据之间往往还存在某些特定联系,如数组。

MAXScript除了具备其他程序的数据类型外,还有自己独特的数据类型,以下本人选择性的讲解,其他用到了再讲。

常量常量的值是不变的,比如23,1.2,"cgplusplus",一般从字面形式就能判断是否是常量。

float浮点型常量,有的程序叫实型常量,MAXScript的浮点数值都是单精度类型,占用内存4个字节,可以简单的理解为带有小数点的常量,如1.2,123.456,-.0234,1.0e-6,100.,.123等等。

其中着重讲一下:1.0e-6这是科学计数法,等同于1.0乘以10的-6次方即0.000001。

100.就是一个整数后面加个点,没写错,MAXScript会默认为浮点数,在后面自动加零,即100.0。

.123跟上面一样,程序自动记为0.123,这样的常量可以节省时间。

MAXScript 输入浮点数时可以省略小数点前面或者后面的数,但是不能两个都省略,嘿嘿~~好了,现在打开MAXScript Listener看看这些具体的数是怎么显示的,如图:此主题相关图片如下:tutorial001.jpg在光标指着的这一行按小键盘Enter,或者大键盘Shift+Enter就执行此行语句,下面显示执行结果。

maxscript macro script error exception

maxscript macro script error exception

maxscript macro script error exception一、引言Maxscript是一种用于3D建模软件Max的编程语言,而宏脚本(Macro Script)则是Max用户常用的一种自动化工具,可以提高工作效率。

然而,在编写和执行宏脚本的过程中,可能会遇到各种错误,其中一种常见的错误是Error Exception。

本篇文章将探讨Maxscript宏脚本错误异常的来源、分类、解决方法以及预防措施。

二、Maxscript宏脚本错误异常的来源Maxscript宏脚本错误异常主要来源于以下几个方面:1. 语法错误:包括但不限于错误的代码结构、缺失的分号、括号不匹配等。

2. 变量未定义或使用不当:在宏脚本中,需要确保所有使用的变量都已正确定义,并且在调用时具有正确的数据类型。

3. 对象无效或不存在:在操作3D模型时,需要确保所引用的对象有效且存在于场景中。

4. 外部库或工具问题:有时宏脚本依赖于外部库或工具,如果这些库或工具存在问题,可能会导致脚本错误。

三、Maxscript宏脚本错误异常的分类Maxscript宏脚本错误异常主要分为以下几类:1. 运行时错误:包括类型错误、对象不存在或无效等,这些错误在脚本执行过程中发生。

2. 编译时错误:包括语法错误、变量未定义等,这些错误在脚本编译阶段出现。

3. 异常处理错误:当脚本中使用了异常处理语句(如try-catch 结构),如果出现异常而未正确处理,也会导致错误。

四、Maxscript宏脚本错误异常的解决方法针对不同类型的Maxscript宏脚本错误异常,解决方法如下:1. 仔细检查代码,确保语法正确,并注意检查变量定义和使用。

2. 确保所引用的对象存在且有效,可以使用调试工具进行检查。

3. 检查所依赖的外部库或工具是否正确安装和可用。

4. 对于异常处理错误,需要确保正确处理异常,并使用适当的日志或调试工具记录错误信息。

5. 测试脚本:在执行宏脚本之前,进行充分的测试是非常重要的,以确保脚本在不同情况下都能正常工作。

maxscript 数值范围

maxscript 数值范围

Maxscript是一种针对Autodesk 3ds Max软件的脚本语言,它允许用户通过编写脚本来控制3ds Max的各种功能和操作。

在Maxscript 中,数值范围是非常重要的一个概念。

本篇文章将围绕Maxscript数值范围展开讨论,以便让读者更深入地了解Maxscript的数值范围的相关知识。

一、Maxscript的数值范围概述1.1 何为数值范围在编程和脚本语言中,数值范围是指数值类型所能表示的有效取值范围。

不同的数值类型具有各自的数值范围,了解数值范围对于编写稳健的脚本和程序至关重要。

1.2 Maxscript中常见的数值类型Maxscript中常见的数值类型包括整数(Integer)、浮点数(Float)、角度(Angle)等。

每种数值类型都有其特定的数值范围。

1.3 数值范围在Maxscript中的作用了解数值范围可以帮助程序员在编写脚本时避免数值溢出、精度丢失等问题,确保程序的正确性和稳定性。

二、Maxscript中的整数范围2.1 整数(Integer)的表示方法在Maxscript中,整数使用关键字“int”来表示,例如:int_num = 100;2.2 整数的数值范围Maxscript中整数的数值范围约为-xxx到xxx。

2.3 使用整数范围的注意事项在编写脚本时,应当注意整数范围的上下限,避免超出整数的有效取值范围。

三、Maxscript中的浮点数范围3.1 浮点数(Float)的表示方法在Maxscript中,浮点数使用关键字“float”来表示,例如:float_num = 3.14;3.2 浮点数的数值范围Maxscript中浮点数的数值范围约为1.xxxe-38到3.xxxe+38。

3.3 使用浮点数范围的注意事项浮点数的精度和范围可能会导致精度丢失和舍入误差等问题,在编写涉及浮点数计算的脚本时,需要特别注意。

四、Maxscript中的角度范围4.1 角度(Angle)的表示方法在Maxscript中,角度使用关键字“angle”来表示,例如:angle_num = angle 45;4.2 角度的数值范围Maxscript中角度的数值范围为0到360度。

maxscript 三维曲线语句

maxscript 三维曲线语句

Maxscript是3ds Max中的一种脚本语言,可以用来对3D模型进行编程和自动化操作。

其中,Maxscript的曲线语句可以帮助用户对三维曲线进行操作和控制,为三维模型的制作和动画效果提供了更多的可能性。

本文将对Maxscript的三维曲线语句进行详细介绍,包括语法结构、常用功能和实际应用技巧,帮助读者更好地理解和应用这一功能。

1、语法结构Maxscript的曲线语句主要包括对三维曲线对象的创建、编辑和操作。

在使用曲线语句时,需要先选中对应的曲线对象,然后使用相关的命令和参数完成相应的操作。

以下是一些常用的曲线语句的语法结构:1.1 创建曲线对象使用命令createLine创建一条曲线:createLine startPoint endPoint其中,startPoint表示曲线的起始点,endPoint表示曲线的结束点。

1.2 编辑曲线对象对曲线对象进行编辑和调整:- 添加节点:addNewSplineNode <splineObj> <pos>- 删除节点:deleteSplineNode <splineObj> <nodeIndex>- 移动节点:setSplineNodePosition <splineObj><nodeIndex> <pos>1.3 操作曲线对象对曲线对象进行操作和控制:- 获取节点数量:getNumKnots <splineObj>- 获取节点位置:getKnotPoint <splineObj> <nodeIndex>2、常用功能Maxscript的曲线语句可以实现多种常用功能,包括创建各种形状的曲线、调整曲线的形状和位置、控制曲线的动画效果等。

以下是一些常用功能的示例及实现方式:2.1 创建不同形状的曲线通过调整曲线的节点和控制点,可以创建各种不同形状的曲线,如直线、曲线、圆弧等。

MAXScript零起点系列教程6

MAXScript零起点系列教程6

飞浪脚本零起点入门系列(六)MAXScript的条件选择语句和找面数为0的物体著作:飞浪制作:【WEWE】声明:本教程为CG++原创,未经本人允许,禁止一切形式的转载,谢谢合作:)查看上一节:MAXScript的数组,循环语句和重命名脚本写法飞浪脚本零起点入门系列(六)MAXScript的条件选择语句和找面数为0的物体本节关键词:if...then...[else]if...do case...of前面讲过数组,讲过for循环,程序里面还有一个重要的组成部分,那就是今天要讲的条件选择语句。

大家知道程序是非常严格的,对就是对,错就是错,不像哲学那么似是而非,那么如何通过程序语句判断对错呢?首先登场的是程序语句的一个重量级语句:If Expression(If表达式)If Expression在线参考手册:/online-reference/maxscript-reference/source/if_expression.htm语法形式有两种类型:if<expr>then<expr>[else<expr>]或者if<expr>do<expr><expr>是表达式,if后面的<expr>必须返回布尔常量true或者false,即对或者错。

then,else,do后面的<expr>可以是任何其他的maxscript表达式。

中括号表示可选择。

一个简单的例子:a=1b=2if a<b then print"a小于b"--这句执行是这样的:首先执行if后面的表达式: a<b返回结果对(true),是正确的就继续执行后面的print"a大于b"就输出了字符串"a大于b"。

如果把它改一下:if a>b then print"a大于b"--首先判断a>b返回错(false),那么then后面的语句就不继续执行了。

MAX Script语言的基础知识

MAX Script语言的基础知识

为什么要学习3D MAX脚本?3D MAX Script是我迄今为止见过编程语言最自由的一种脚本开源环境,他的自由程度远远超过了Sun 的JAVA,她没有大小写的区分,以及固定的公式和程序工作流程树,MAX Script一旦被编写,人们就可以从任何一行进行代码的编译,不需要符合格式的束缚。

而且MAX Script的功能相当强大。

详细的说明一下MAX Script功能到底有多强大:MAX Script是完全基于OpenGL开源以及VC核心制作出来的,而当今世界上任何一款CG制作软件也主要依赖这两点编写,也就是说如果MAX Script使用的好,我们完全有那个能力在3D MAX里面集成Maya的所有功能!这不光光是二次开发的乐趣,我想她更是一次CGer思维的革命,很多使用传统制作方法难以完成的任务,在使用了MAX Script后就会变的非常简便、快捷!我认为想要学好MAX Script不在于你前面有多少编程的基础和学习经验,关键在于是否能很好的理解MAX Script里面每一个字串符的使用方法和他的作用。

举个很简单的例子:“()小夸号”和“[]中夸号”有什么区别呢?他们可以在什么地方使用?两个符号可以结合在一起使用吗?怎么结合在一起使用更加科学合理?其实就是这样的几个问题解决好了,你甚至可以模仿出一些美国大片级别的视频特效!(以上的几点我会在接下来的杂志中进行详细讲解)第一讲:MAX Script基础片认识MAX Script界面:按下键盘上的F11,或者按照图示单鸡按钮,即可弹出MAX ϑScript窗口第一讲,第二节:基础应用片:用实例讲解MAX Script的基础符号.很多人感觉MAX Script很难,其实我觉得他们觉得很难的原因是因为基础没有学好,而我认为的MAX Script基础就是符号,倘若能把几个基本符号理解的很好的话,相信很多问题就可以迎刃而解. MAX Script真的不难,关键是在于你对他的理解.ϑ现在我开始讲解MAX Script中最基础的符号,希望大家认真学习,因为在这一节学好了,接下来的学习就会显的很轻松MAX Scrip中:使用―― $、””、()、[]、和. 的理解。

Max script基本知识

Max script基本知识

Max script基本知识内容图文并茂,语言高度概括,文采形象生动,思路清晰可见;指出要害,抓住关键,透彻理解那些难懂的编程概念;不用担心数学基础很差,无需害怕英文单词不懂,只需初中数学知识,把英文单词作图形符号看待,拿脚本编程当文字游戏把玩。

能够提高解决问题的能力,可以降低学习脚本的门槛。

不用费力看英文帮助,何需辛苦找编程资料,减轻学习负担,节省宝贵时间!发挥自己的聪明才智,运用科学的学习方法,首先认真学好入门教程,然后虚心请教各位高手,脚本编程从此不再难!一、MAXScript简介1、MAXScriptMAXScript语言是为了扩展3ds MAX 功能而专门设计的一种脚本语言,是面向对象编程语言中的一种。

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

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

有记录在3ds MAX界面中的交互操作过程的能力,在使用界面操作的同时可以使用MAXScript来自由创作。

可以实现3D Studio MAX的全部用途,如建模、动画、材质、渲染等。

MAXScript可以运用各种数学工具来完成高级复杂的程序设计任务。

可以对含有大量对象的集合进行操作。

例如在复杂的场景中选择物体,可以把大量物体放置在精确的位置上,例如在山或路边放置一些树木,使用MAXScript操作起来是非常的方便。

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

可以建行批处理操作提高工作效率。

例如建立一次可以渲染多个场景文件的脚本程序。

可以自定义输入输出工具,可以定义修改器,渲染效果插件等。

2、访问脚本2.1、认识MAXScript界面:包括MAXScript卷帘窗,脚本监听器窗口,脚本编辑窗口。

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

MAXScript零起点系列教程3

MAXScript零起点系列教程3

飞浪脚本零起点入门系列(三)MAXScript算术表达式与赋值表达式著作:飞浪制作:【WEWE】声明:本教程为CG++原创,未经本人允许,禁止一切形式的转载,谢谢合作:)上一节:飞浪脚本零起点入门系列(二)MAXScript数据类型飞浪脚本零起点入门系列(三)MAXScript算术表达式与赋值表达式本节关键词:+-*/^as=+=-=*=/=本节跟上节紧密联系,希望没学过程序的朋友把开始这几节一定要弄懂。

你要是学过程序,了解一下MAXScript的规则吧。

算术表达式MAXScript算术表达式与我们小学时学的算术一个道理,都是对数值进行运算如加、减、乘、除等。

MAXScript数学运算符有:+数学中的加号,如1+1,a+b-数学中的减号,如2-1,a-b*数学中的乘号,如5*6,a*b/数学中的除号,如4/2,a/b^数学中的幂运算,如2^6即2的6次方as强制类型转换,严格说这不是数学运算符,以后会发现as会用在很多地方。

好,现在打开MAXScript Listener试试以上数字运算:运算符可以对数字进行运算,同时运算符左右还可以是函数调用或另外的数学表达式,即复合运算,如:(a+b)/c;(sin x)*-d。

as,具体表达式为:操作数as类型,这里的类型就包括上节讲的部分数值类型,用法如下:1.234as integer--1.234是float类型数值,integer是整形数值,这句就是强制把1.234变为整形数值,它不是四舍五入,而是直接将小数点后面的尾巴去掉,所以上面那句跟1.934as integer一个效果得到结果1。

123456789as string--强制把数值123456789转化为字符常量,结果为"123456789"。

下面大家试试数值转换的结果:我们知道,数学运算有优先级,以前背的口决:先算乘除,后算加减,有括号先算括号,那么在MAXScript里面也是一样的,唯一不同的是,MAXScript 运算里面只有小括号(),那么如果我想括号里面再加括号怎么办呢?还是小括号。

maxscript 数组 差值

maxscript 数组 差值

Maxscript 数组差值1. 简介Maxscript 是一种用于Autodesk 3ds Max软件的脚本语言,可以用于创建自定义工具和自动化任务。

其中,数组是Maxscript中的一种数据类型,可以存储多个数值或其他数据类型的元素。

在数组中,差值是指数组中连续两个元素之间的差值,常用于数据分析和图形绘制中。

2. 数组的定义和初始化在Maxscript中,数组可以通过以下方式定义和初始化:```myArray = #(1, 2, 3, 4, 5) -- 定义并初始化一个整数数组myArray = #(1.0, 2.0, 3.0, 4.0, 5.0) -- 定义并初始化一个浮点数数组myArray = #("apple", "banana", "orange", "pear") -- 定义并初始化一个字符串数组```通过以上代码,我们可以创建不同类型的数组并赋予初始值,以便后续的差值计算。

3. 数组的差值计算在Maxscript中,可以使用循环结构和索引来计算数组的差值。

以下是一个示例代码:fn calculateDifference arr =(diffArray = #() -- 定义一个空数组,用于存储差值for i = 1 to arr.count-1 do(diff = arr[i+1] - arr[i] -- 计算相邻两个元素的差值append diffArray diff)diffArray)myArray = #(3, 6, 9, 12, 15) -- 定义并初始化一个整数数组resultArray = calculateDifference myArray -- 计算数组的差值```在上述代码中,我们先定义了一个用于计算差值的函数calculateDifference,然后通过循环结构和索引遍历数组,计算相邻两个元素之间的差值,并将结果存储到一个新的数组diffArray中。

maxscript基本语法

maxscript基本语法

maxscript基本语法语法:showClass <pattern_string> [ :<stream> ]showClass "Box.* "--显⽰Box这个类所包含的属性showClass "path*"--显⽰所有类名以path 开头的类showClass "noise.*" --显⽰noise 类贴图所有可存取的属性showClass "*:mod*" --显⽰所有modifier 类showClass "*.*rad*" --显⽰拥有属性名中包含字符rad 的属性的所有类showClass "*.*" to:f --显⽰所有类、超类、属性,并输出到指定⽰件showClass "*:*controller*" --显⽰所有在其超类名中包含字符controller 的类showProperties()函数showProperties()函数⽰来显⽰某⽰特定MAXWrapper 类对象的属性语法:showProperties <maxwrapper_object> [ <property_pattern> ] [ to:<stream> ] showProperties $foo.bend --显⽰对象foo 的Bend_modifier 的属性ffdmod = $baz. ' FFD_Box_4x4x4 ' --指向对象baz 的FFD_modifiershowProperties ffdmod "disp*" to:log--显⽰FFD_modifier ⽰以disp 开头的属性showProperties $foo.pos.controller--显⽰position类controller⽰的次级controller移动旋转缩放move(移动)move <name_obj> [(x,y,z)]move myBox [10,0,0]scale(缩放)scale <name_obj> [(x,y,z)]rotate(旋转)rot_obj=eulerangles x y zrotate myBox rot_obj添加修改器语法:addmodifier obj_name (modifier_name<parameters>)addmodifier myBox (Twist angle:30)myBox.twist.angle=60--修改Modifier参数创建动画animate On(at time 0(myBox.pos=[-100,0,0]; myBox.scale=[1,1,0.25])at time 100(myBox.pos=[100,0,0]; myBox.scale=[1,1,3]))数组数组是⽰组数据的集合,在MAXScript ⽰,数组的每个元素可以是任何不同的数据类型,⽰且可以被单独获取语法:#(<expr>,<expr>)每个<expr>都可以为数字、表达式、字符⽰法classOf <value>--返回<value>所属的数据类型superClassOf <value>--返回<value>的超级类,也即<value>所属类的⽰类for obj in $* do(if classOf obj == Box then append allBoxes obj)isKindOf <value> <class>--如果<value>继承⽰类<class>,则返回True,否则返回False allBoxes=for obj in $* where(isKindOf obj Box)do collect objissTructDef <value>--如果<value>是⽰个结构定义,则返回TrueisStruct <value>--如果<value>是⽰个结构类的数据,则返回TrueisController <value>--如果<value>是⽰个控制器,则返回True。

maxscript 旋转轴心 代码 -回复

maxscript 旋转轴心 代码 -回复

maxscript 旋转轴心代码-回复Maxscript(3dsMax脚本语言)中的旋转轴心是一个非常常用的功能,可以帮助我们在3D建模和动画制作中实现复杂的旋转效果。

本文将一步一步回答关于Maxscript旋转轴心的使用和代码实现问题。

首先,让我们了解一下旋转轴心的概念。

在3D空间中,物体的旋转通常是相对于某一个轴心进行的。

这个轴心可以是物体本身的中心点,也可以是用户自定义的点。

Maxscript提供了一个内置的属性叫做“pivot”,用来表示一个物体的旋转轴心。

我们可以通过Maxscript对这个属性进行控制,从而实现旋转轴心的改变。

在Maxscript中,我们可以通过以下步骤来实现旋转轴心的改变:第一步:选择要操作的物体我们首先需要选择一个要操作的物体。

在Maxscript中,可以使用“_”这个关键字表示当前被选中的物体。

我们可以通过以下代码来获取当前被选中的物体:selectedObj =第二步:获取轴心数据在Maxscript中,物体的旋转轴心数据是保存在一个叫做”pivot“的属性中的。

我们可以通过以下代码来获取当前物体的旋转轴心数据:pivotPos = selectedObj.pivot这个代码会将物体的旋转轴心位置保存在一个三维坐标变量“pivotPos”中。

第三步:设置新的轴心位置接下来,我们可以通过修改“pivot”属性来设置新的轴心位置。

下面的代码演示了如何将轴心位置设置为物体的顶部:newPivotPos = selectedObj.max - [0,0,selectedObj.max.z] selectedObj.pivot = newPivotPos在这个代码段中,我们首先计算了物体的顶部“newPivotPos”位置。

然后,我们将这个位置赋值给物体的“pivot”属性,从而改变物体的旋转轴心位置。

第四步:验证轴心位置为了验证轴心位置的改变,我们可以使用一个辅助工具来显示物体的旋转轴心位置。

maxscript 语法

maxscript 语法

maxscript 语法Maxscript是一种基于脚本的语言,是Autodesk 3ds Max软件内置的脚本语言。

Maxscript具有强大的功能和灵活性,可以实现对3ds Max的全面控制,包括创建、修改和操作对象、材质、动画等。

首先,我们需要理解Maxscript的基本语法结构。

Maxscript的语句通常以分号结尾,虽然在某些情况下可以省略,但为了保持代码的清晰和一致性,建议总是使用分号。

Maxscript支持单行注释(以两个斜杠//开始)和多行注释(以/*开始,以*/结束)。

Maxscript的数据类型包括数字(integer, float, boolean)、字符串、向量、矩阵、颜色、点、选择集、物体、材质、动画控制器等。

可以通过内置函数或运算符进行数据类型的转换。

例如:```maxscripta = 10.5; -- 浮点数赋值b = true; -- 布尔值赋值c = "Hello, world!"; -- 字符串赋值d = [1,2,3]; -- 向量赋值```Maxscript的变量声明不需要指定类型,它会根据赋值自动推断类型。

但是,我们也可以显式地为变量指定类型,这在处理复杂的数据结构时非常有用。

Maxscript提供了丰富的控制流语句,如if-else、switch-case、for、while、do-while、repeat-until等,这些语句可以帮助我们编写复杂的逻辑和算法。

例如:```maxscriptx = 1;for i = 1 to 10 do (x += i;)print x; -- 输出55```Maxscript的函数定义也非常简单,只需要使用function关键字,然后指定函数名、参数列表和返回类型(如果有的话),最后在大括号中编写函数体。

例如:```maxscriptfunction add a b =(return a + b;)result = add 1 2;print result; -- 输出3```此外,Maxscript还支持类和对象的概念。

MAX脚本

MAX脚本

Variables and Math FunctionsMAXScript is located in the Utilities Panel. When initiated, the following options appear:Open Listener - Opens the Listener window,which is the place you type the commands.New Script - Starts a new script, opening aNotepad-like editor.Open Script - Opens a script in the text editor.Run Script - Executes a script file.Utilities - Allows the user to select among loadedscripts.All commands, variables, etc. can be declared directly in the Listener, or can be written using the New Script option, or still can be created using Notepad, and executed using the Run Script option.Open the Listener and type b = 1 and press SHIFT+Enter.Variable declaration in MAXScript is done typing the variable name and its value. Variables can be letters and numbers (alphanumeric), but must start with a letter, with the exception of the special characters (%*&...) and built in functions. Variable names cannot have spaces.Variables can be:Integer numbers - 1,10, -5, 3876Float numbers - 0.1, 0.0542, -358.245Text (strings) - "abc", "text example"Points (point3) - [25,30,15]etc.After typing something in the Listener, you must execute the code for the script to run. To do so you can use SHIFT+Enter, or you can press the Enter key in the Number Keypad. Simply pressing Enter might not work if not at the end of the line of code in the Listener. Every time you are asked to enter something in the Listener in any of these tutorials, that means you are evaluating this series of commands.∙In the Listener, type c = 1.5 and type d = b + cMath functions are executed directly, just like variables definition.Math functions can be:<operator> + <operator><operator> - <operator><operator> * <operator><operator> / <operator><operator> ^ <operator> -- exponential<operator> as <type of variable> -- conversion between variable typesAll arithmetic rules apply (parenthesis and precedence, where multiplication takes place before subtraction).Examples:2 + 5.4 = 7.42 + 2 ^ 4 = 18 (^ precedes the addition)(2 + 2) ^ 4 = 256 (the parenthesis define the precedence)3 * sin 256 (sin function used in a formula)23.65 as integer = 23 (variable type conversion)This tutorial might seem theoretical but these fundamentals are crucial for learning how to work with MAXScript.Object CreationObjects can be created in a straightforward way, by assigning them to variables.∙Type b = box()A BOX will be created, with default dimensions (25,25,25) and located in the origin (0,0,0).To view the object properties, we can use the built-in Showproperties function, which will list all properties of an object.∙Type showproperties bThe following properties will be listed:.height : float.length : float.lengthsegs : integer.width : float.widthsegs : integer.mapCoords : boolean.heightsegs : integerTo modify these properties, we simply type the object variable followed by the property, separated by a dot, just like the following example:∙Type b.height = 30, b.width = 60 and b.heightsegs = 15Notice the object will be livetime updated in the viewports.Besides these properties, we can access Position, Rotation and Scale properties this way:<object>.pos.x = 17.5 - indicates the X position<object>.pos = [10,20,-15] - indicates de [X,Y,Z] position<object>.rotation.x = 90 - indicates the X rotation (using TCB)<object>.rotation.x_rotation = 90 - indicates the X rotation (using Euler)<object>.scale.y = 1.5 - indicates the Y scaleThese properties can vary according to the animation controllers assigned to the object.∙Type b.pos.x = 25 and b.rotation.z_rotation = 45We can assign modifiers using the built-in addmodifier function.∙Type addmodifier b (bend())Using the same processes we used above, we can list all properties of the Bend modifier.∙Type Showproperties b.bendMAXScript will then list all properties:.angle : float.axis : integer.direction : float.limit : boolean.upperlimit : float.lowerlimit : float.center : point3.gizmo : transform∙Type b.bend.angle = 45to change the Bend angle and b.bend.direction = 90to change the Bend direction.From the steps you've seen so far, you can imagine it's easier to create a Box and apply Bend to it directly.On the next tutorial you will see how to make these steps practical.Creating a User InterfaceStart a New Script, so we can create an interface to create a Box with Bend.∙Click New Script, and type:utility box_bend "Box with Bend"()The brackets are extremely important, becausethey specify where the script starts and where itends.A utility is a script that will appear in the UtilityPanel, in MAXScript.∙Select File/Evaluate in the MAXScript Editor.The Evaluate command (CTRL + E) executes thescript. It will be added to the list of utilities, and cannow be selected.∙Select Box with Bend in the Utilities list in the MAXScriptUtility.There's nothing in the Interface, except a Close button. MaxScript creates the close button, and the utility interface, by default.You will now create a button that will start theobject creation.∙In the script, between the brackets type button make_it"Create Box"and Evaluate it again. If your script is notopened, select it again in the Utilities list.The script now has an interface, but nothinghappens when the button is selected, because noevent was associated to it.∙Right after the command we entered, type:on make_it pressed do(b = box()b.height = 30b.width = 60b.heightsegs = 15b.pos.x = 25b.rotation.z_rotation = 45addmodifier b (bend())b.bend.angle = 45b.bend.direction = 90)This sequence, that is the same one we executed before, is the event that will be called from the script when the button is pressed.This is the completed script:utility box_bend "Box with Bend"(button make_it "Create Box"on make_it pressed do(b = box()b.height = 30b.width = 60b.heightsegs = 15b.pos.x = 257b.rotation.z_rotation = 45addmodifier b (bend())b.bend.angle = 45b.bend.direction = 90))The last step required is a way to insert the Box in any place. This can be done using the Pickpoint() command.∙In the Editor, before b = box(), add one more line:pt = pickpoint prompt:"\nSelect the position of the Box: "∙Substitute b.pos.x = 25 with b.pos = pt, which will indicate that the Box position is the coordinate picked by the user in the pickpoint command.This is the completed script already containing the pickpoint command:utility box_bend "Box with Bend"(button make_it "Create Box"on make_it pressed do(pt = pickpoint prompt:"\nSelect the position of the Box:"b = box()b.height = 30b.width = 60b.heightsegs = 15b.pos = ptb.rotation.z_rotation = 45addmodifier b (bend())b.bend.angle = 45b.bend.direction = 90))Manipulating Objects in SceneMaybe the most important MAXScript feature is the ability to manipulate objects in the scene, making it easier to create animations.In this exercise, you will use a simple eyemodel, which will be animated usingMAXScript.∙Open file Script_eye.MAX∙Using Freeze, freeze object PN_Tube01The eye is a simple sphere, with a multi-submaterial applied. The eyelid and the basewere modeled with MeshSmooth. Severaldummies were created to help the eyeanimation.First, you will make a script to adjust the eye's rotation.∙Start a new script and type:utility control "Eye Control"()In this utility, you will use a Slider to control therotation of the eye, to the left and to the right. You willlimit the rotation in 45º to for each side.∙In the utility, type:slider eyeh "Horizontal Movement" range:[-45,45,0]You will now define the action that will take placewhen the user moves this slider. Basically, the slidervalue indicates the Z rotation of the object (eye). Toindicate it's the eye object that is being rotated, youwill use $eye, where eye is the exact name of theobject in the scene.∙Type:on eyeh changed val do $eye.rotation.z_rotation = valUsing Evaluate, execute the script and see how it works. Now you will see the first problem in this script. You cannot move it back to zero. You will solve it creating a reset button.∙Type, below the slider:button reseth "Reset"on reseth pressed do($eye.rotation.z_rotation = 0eyeh.value = 0)You now created an option that will return the eye to the original position. Repeat all the steps above, specifying the rotationaround the X axis, so that the eye will be rotatedvertically.slider eyev "Vertical Movement" range:[-45,45,0]button resetv "Reset"on resetv pressed do($eye.rotation.x_rotation = 0eyev.value = 0)on eyev changed val do $eye.rotation.x_rotation = valPay attention to the X rotation value, cause a 0ºrotation will make the eye look upwards, instead oflooking ahead. You will then need to add 90º to therotation, so it's done correctly.Now, to better organize the script:slider eyeh "Horizontal Movement" range:[-45,45,0]button reseth "Reset"slider eyev "Vertical Movement" range:[-45,45,0]button resetv "Reset"on eyeh changed val do $eye.rotation.z_rotation =valon eyev changed val do $eye.rotation.x_rotation =val + 90on reseth pressed do($eye.rotation.z_rotation = 0eyeh.value = 0)on resetv pressed do($eye.rotation.x_rotation = 90eyev.value = 0)To create an animation, simply move the slider to the frame you want, turn on Animate, and play with the script.Execute the Eye03.ms script and notice the eyelid movement options.Open the file Script_eye2.MAX and execute Eye04.ms, which now controls the movement of each eye independently.Modifiers and ControllersWe can add modifiers to the objects using the Addmodifier command.∙Create a cylinder width radius=20, height=100 and height segments = 20:cyl = cylinder radius:20 height:100 heightsegs:20Using MAXScript, apply a Bend and a Twist modifier to this object.∙Type addmodifier cyl (Bend()) and addmodifier cyl (Twist())To access a modifier applied to an object, you can use many ways:∙cyl.bend accesses the Bend modifier in the cyl object∙cyl.twist accesses the Twist modifier in the cyl object∙cyl.modifiers[1] accesses the first modifier in the list (Twist)∙cyl.modifiers[#twist] accesses the modifier named "Twist"Renaming modifiers like Xform, Mesh Select, among others, makes it easier to select them through MAXScript, if not you would have problems to know which modifier you were accessing, because multiple modifiers would have the same names. To rename modifiers in the Stack List, use the Edit Stack button. Change the Bend angle to 45º and the direction to 30º.∙Type cyl.bend.angle = 45 and cyl.bend.direction = 30We can also change the animation controller of any parameter in MAX, using the .controller property.You will now change the position controller of the cylinder to a Path Controller.∙Type cyl.pos.controller = Path()Using showproperties, list the Path Controller's properties:.axis : integer.constantVelocity : boolean.Path.follow : boolean.bank : boolean.bankAmount : float.smoothness : float.allowUpsideDown : boolean.axisFlip : boolean.percent : floatNow create a shape anywhere in your drawing, and name it Path01.Using MAXScript you will select this shape as the path in the Path Controller.∙Type cyl.pos.controller.path = $Path01If you wish, you can change more parameters in the Path Controller.You can download the cylinder_bend.max file, which is the result of this lesson.Script ControllerThe Script Controller is an animation controller that evaluates a math formula and return its result to the track. For instance, you can create a formula that will make the Bend value half of the Twist Value. The Script Controller has more flexibility and is easier to use than Expression Controllers.There are two ways to assign a Script Controller. First one is through Track View or Motion Panel. The second one is through MAXScript.You will now create a Script Controller thatwill specify that the Bend value is half of theTwist value.Create a cylinder:∙Type: cyl = cylinder radius:20 height:100heightsegs:20∙Type: addmodifier cyl (Bend())and addmodifier cyl(Twist())∙Open Track View∙Select Cylinder/Modified Object/Bend/Angle∙Using Assign Controller, assign a Float ScriptController∙Right click it and select PropertiesType $Cylinder01.Twist.Angle/2 and click EvaluateIf you change a script controller, the changes will not be shown in the screen, until the current time has changed. To view the changes on screen, advance one frame, and return back one frame. This way you will view the changes.Specify a 30º Twist and notice the Bend being modified.Now create an animation with Twist ranging from 0 to 180º.Another example of Script Controller is to assign it to a Optimize Modifier and adjust the optimizer according to the distance between the object and the camera.To execute it, create the objects below:Type:cyl = cylinder radius:20 height:100 heightsegs:20name:"Cyl"cam = freecamera pos:[0,-200,120] name:"Cam"cam.rotation.x_rotation = 70Add a Optimize Modifier to the cylinder,manually, and change the Perspective Viewto a Camera View.In the Track View, add a Float ScriptController to the Face Threshold L1 in thisobject's Optimize Modifier.Select Properties and observe the valuedisplayed in the field. This value(0.0698132) is the value displayed in theModify Panel, but it's in radians.The formula to be typed is thefollowing:4*(pi*2/360)*((distance $Cam$Cyl) - 200)/(500 - 200) where:4 is the final value (highest) ofthe Optimize Thresholdpi*2/360 is the conversion toradians200 is the minimum distancefrom the object to the camera,where Optimize is zero500 is the biggest distancebetween the object and thecamera, where Optimize is 4 (thevalue above)The values used above (4, 200,500) can be altered according toeach scene, as well as the objectnames.Now you will see it working. Increase the number of Height Segments of the cylinder and add a Noise Modifier prior to the Optimize. Animate the object from scene 0 to 100, moving it closer to the camera in frame 0 and about 600units far, in frame 100. Play the animation and observe the object's optimization.If you prefer, you can download the optimize_script.max file, which already contains all these changes.Loops and ArraysTo manipulate various objects or properties you will use arrays. Arrays are variables that contain several other variables indexed.An array is created using:variable = #()Its values are accessed this way:variable[x], where x is an integer number indicating an element in the array Inside MAX we have several predefined arrays, such as object classes: Lights, geometry, shapes, cameras, helpers, spacewarpsTo access each object in these arrays, simply add [1], [2], etc. after the class name. This makes it easier to manipulate all scene lights in a script.Among array properties you can use .count, which indicates how many elements are in that array. An example is light.count, which indicates how many lights exist in the scene.To manipulate arrays you useLoop functions. These functionsallow you to step through eachelement of an array using asingle command.The main loop function is FOR.It repeats the function betweentwo specified numbers of aninterval, always adding 1 unit tothe latest value.Type for i in 1 to 10 do boxheight:i width:i length:i pos:[i,0,0]This command draws a box withthe actual value of the loop,stepping from 1 to 10. Thisvalue is assigned to the Ivariable, and can be used bythe commands inside the loop.Using Arrays and Loops, you can create a script that will create several copies of an Omnilight, positioning each of them in an object's vertex, simulating an area light.The interface needs only a singlebutton, which will select theobject. You will add a spinned toadjust the power (multiplier) ofthe lights.Create a new script with thefollowing commands:utility area "Area Light"(pickbutton pickobj "Select Object"spinner mult "Multiplier"range:[0,100,1.0]on pickobj picked obj do(addmodifier obj (mesh_select())nvert = getnumverts objl = #()for i in 1 to nvert do(vt = getvert obj il[i] = omnilight pos:vtmultiplier:(mult.value/nvert)))on mult changed val do(for i in 1 to l.count do l[i].multiplier= (mult.value/l.count)))You can download this scripthere, and this sample MAX filehere.Notice the soft shadows on therendered image.The Mesh Select modifier was added to allow the commands getnumvert and getvert to work, since they require an Editable Mesh object to work.Notice that without loops and arrays, you would not be able to use this script in any object, cause you would not know how many vertices that object would have, making it impossible to know how many lights to create, etc.Execute the Enhanced_area_light.ms script, and observe how many more features can be added to a script.。

MAXScript零起点系列教程5

MAXScript零起点系列教程5

飞浪脚本零起点入门系列(五)MAXScript的数组,循环语句和重命名脚本写法著作:飞浪制作:【WEWE】声明:本教程为CG++原创,未经本人允许,禁止一切形式的转载,谢谢合作:)查看上一节:MAXScript对物体的初步控制飞浪脚本零起点入门系列(五)MAXScript的数组,循环语句和重命名脚本写法本节关键词:Array Values数组for loop selection objects uniquenameArray Values数组Array Values在线手册数组,即有序数据的集合。

这个数据可以是任何数据类型,甚至表达式。

语法:#(<value>,<value>,...)#()--空数组例子:#(1,2,"cgplusplus",5+6,123as float)--注意,括号,引号等字符要在英文半角状态下输入。

那么,我们用数组就可以把一些相干或者不相干的数据都统一起来,放到一起,这样操作起来非常方便。

比如说刚才那个数组,你可以一个一个的赋值:a=1,b=2,c="cgplusplus"...,然后调用。

如果用数组,可以很方便:数组引用<array>[<integer>],其中<array>就是数组,<integer>就是序号。

数组调用的序号用中括号[]括起来。

比如如果想调用第5个的值是这样:#(1,2,"cgplusplus",5+6,123as float)[5]。

这样还是很麻烦啊,先赋值再调用,就简单多了。

a=#(1,2,"cgplusplus",5+6,123as float)a[1]就是第一个值,a[2]就是第二个值,依次类推。

但是序号不能超出数组数据的最大数目,如a[6]就是错误引用,返回错误代码。

其他相关操作讲解:<array>.count:Integer--数组元素的个数,只能读取。

maxscripts 逻辑语句

maxscripts 逻辑语句

MaxScript是3ds Max的脚本语言,它可以用于自动化3D建模、动画和渲染等任务。

在MaxScript中,逻辑语句是编写复杂脚本的重要组成部分。

逻辑语句允许脚本根据条件执行不同的代码,因此它们在编写高效、灵活的脚本时非常重要。

本文将介绍MaxScript中的逻辑语句,包括条件语句、循环语句和其他常用的逻辑控制语句,以帮助读者更好地理解和使用MaxScript。

一、条件语句条件语句允许根据不同的条件执行不同的代码。

在MaxScript中,最常用的条件语句是if语句。

if语句用于检查一个条件,如果条件为真,则执行相应的代码块,否则执行另一个代码块。

if语句的语法如下:if condition do(-- execute code if condition is true)else(-- execute code if condition is false)在这个语法中,condition是一个逻辑表达式,可以是比较表达式、逻辑表达式或函数调用。

如果condition为真,则执行if代码块中的代码;否则执行else代码块中的代码。

在实际应用中,条件语句经常与变量和函数结合使用,以根据不同的情况执行不同的操作。

二、循环语句循环语句允许重复执行一段代码多次。

在MaxScript中,最常用的循环语句是for循环和while循环。

for循环用于按照指定的次数重复执行代码,其语法如下:for i = start to end do(-- execute code for each value of i)在这个语法中,i是循环变量,start和end分别是循环的起始和结束值。

for循环会从start开始逐步增加i的值,直到达到或超过end为止。

在每次循环中,都会执行循环代码块中的代码。

for循环通常用于遍历数组或执行固定次数的操作。

另一种常用的循环语句是while循环。

while循环根据一个条件重复执行代码,其语法如下:while condition do(-- execute code as long as condition is true)在这个语法中,condition是一个逻辑表达式,只有在条件为真时,才会执行循环代码块中的代码。

maxscript 语法

maxscript 语法

maxscript 语法深入理解Maxscript语法Maxscript是Autodesk 3ds Max软件内置的脚本语言,主要用于实现自动化操作和自定义功能。

它是一种基于事件驱动的解释型编程语言,具有易学易用、灵活高效的特点。

本文将详细介绍Maxscript的语法结构,帮助读者更好地理解和使用这种强大的工具。

一、基本数据类型Maxscript支持多种基本数据类型,包括数字(number)、字符串(string)、布尔值(boolean)、点(point)、向量(vector)、颜色(color)等。

这些数据类型可以直接赋值和操作,例如:```maxscripta = 10.5 -- 定义一个浮点数b = "Hello" -- 定义一个字符串c = true -- 定义一个布尔值d = [1,2,3] -- 定义一个向量```二、变量与常量在Maxscript中,可以使用“=”运算符来定义变量。

变量名必须以字母或下划线开头,后续可以包含字母、数字和下划线。

如果需要定义常量,可以在变量名前加上感叹号“!”,例如:```maxscriptx = 10 -- 定义一个变量!y = 20 -- 定义一个常量```三、控制流语句Maxscript提供了丰富的控制流语句,包括条件判断(if...else...end if)、循环(for...next、while...wend)、选择(case...of...end case)等。

这些语句可以帮助我们编写出更加复杂和灵活的程序。

例如:```maxscripta = 10if a > 0 do (print "a is positive") else (print "a is non-positive")```四、函数与类Maxscript支持用户自定义函数和类。

函数是一组相关操作的集合,通过调用函数可以复用代码并提高程序的可读性。

max script

max script
bmp_w = work_bmp.width
--读取位图的宽度并把值赋给变量bmp_w
bmp_h = work_bmp.height
--读取位图的高度并把值赋给变量bmp_h
progressstart "Generating Objects..."
--显示程序执行进度
for h = 1 to bmp_h do
注意:在MAXScript中你必须要指定清楚文件的路径。
bmp_w = work_bmp.width
bmp_h = work_bmp.height
**bmp_w ,bmp_h这两个变量用于储存当前载入图象文件的宽和高。如果你改变路径,载入另外的一个图像,这个脚本仍然可以正确的工作。用户变量work_bmp 代表位图物体。在MAX中每个物体都有自己的属性。属性可以通过在当前物体名字的后面加上一个“.”来引用。要查看某个物体的可用属性,你可以查看帮助文件或者用showproperties object 这个命令。
--在位图中循环所有行
(
pixel_line = getpixels work_bmp [0,(h-1)] bmp_w
--储存单个行到数组
progressupdate (h as float /bmp_h *100)
--更新进度指示
for w = 1 to bmp_w do
--在当前的行中循环所有的象素
一:变量
MAX Script中的变量代表其他的值。当在公式中提到一个变量时,实际上指的是变量存储的值。而且除了数字以外,MAX Script中的变量还可以存储其他的内容。变量命名可以用任何名称。最好把它们命名成能帮助你记住变量代表什么含义的名称。

maxscript脚本语言的(四十一)【图文教程】

maxscript脚本语言的(四十一)【图文教程】

maxscript脚本语言的(四十一)【图文教程】【正文】今天的新知识不多,但是运用老知识解决新问题的技法比较多。

而且,是非常实战的。

主要是制作顶棚和墙壁的吸音板。

因为整个模型充满了随机的内容。

第一反应就是借助脚本来制作。

我们先从墙壁开始。

先来制作一个基本形状。

基本型有切角,有起伏,而且方向随机,所以我们要仔细的处理一下。

先创建一个BOX注意,为了将来能看出接缝,所以box做得是99*99的,这样按照100阵列时,中间就有一个2的缝。

调节形状好了,基本形做好了。

接下来我们进行阵列。

注意不要关联,否则后面用脚本计算时会慢。

可以看到,虽然阵列了,基本形的朝向都是一样的,而原图是随机朝向的。

这就要用到脚本了。

我们来写一下。

这是在陈云龙老师的指导下写出来的。

我们以前比较常用的是(random -180 180)的写法,意思是在-180度和180度之间随便选一个角度让物体进行旋转。

而现在我们是想让物体只旋转90度的倍数。

那么就不能大范围的写了。

这里最关键的语句是a = #(0,90,180,270)i = a[ random 1 4 ]这两句。

什么意思呢?就是先定义一个数组a,这个组里只有0,90,180,270这四个元素。

而 i 呢,就是随机在这个数组中调用其中的某一个元素。

因为只有四个元素,所以是random 1 4其他的就是旋转的for循环语句,我以前的教程专门讲过,在这里不赘述了。

刚接触的同学请点击下面的文字链接,跳过去看。

在max中旋转的三种写法来看看运行脚本后的效果:随机的墙面就做好了,后面我们还要给随机材质,现在还不能塌陷,先成组。

来看看旋转复制三面后的效果:调节一个漩涡材质复制出另外四个,调出明显的深浅不同,注意材质命名和随机感的更改。

运行随机赋予的材质的脚本,将这五个材质随机付给场景中的面砖。

随机附材质后的效果。

这时,可以塌陷了。

将所有物体塌陷成为一个物体,并改名为墙面。

塌陷时注意保留材质接下来我们来做顶棚仔细观察,会发现顶棚其实是有两种形态的,一种是为了安装灯的切角砖,一种是矩形砖:我们先来做矩形砖的阵列。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MaxScript概述MaxScript是3dsmax和Autodesk VIZ内置的脚本语言,它的形式非常自由和简单,它比较浅层,也几乎不涉及内存与数据的操作MaxScript有很多结构是非常有特色的。

如坐标系关联、原始物体和材质结构;可自动设置关键帧的动画模式;还可以使用表示3dasmax层级关系的路径名来访问场景物体。

MaxScript的语法非常简单,标点符号和书写规则都非常少。

通过与命令行侦听器窗口交互,把工具安装为按钮,提取操作记录为脚本命令,可以大大的提高工作效率;MaxScript可以足够充分的能力完成复杂的程序任务,因为它拥有矢量、矩阵、四元数等数据类型进行代数运算。

MaxScript非常适合大数量对象的工作。

例如编写复杂的选择程序,构建星空MaxScript与3ds Max界面的整合性非常好。

可以把脚本打包进工具面板的卷帘窗或非模块化的窗口里,或者与工具条的按钮、菜单、四元菜单或快捷键相关联。

MaxScript还可以扩展或替换物体、修改器、材质、贴图、渲染或大气效果的用户界面。

还可以创建自定义的网格物体、修改器和渲染特效用户界面。

这种良好的整合可以使技术部门针对特定任务用脚本编写工具,使艺术家或动画师可以象在原有的3dsmax用户界面中那样通过点击式操作使用脚本工具MaxScript支持格式化文本和二进制数据的输入和输出。

所以,可以直接从3dsmax场景文件中直接输出文档的结构报告,或者从其他程序管理软件中读取包含场景布局、名称、贴图细节等内容的文件。

外部文件和目录访问功能使MaxScript十分适合执行数据收集和分析、形成数据结构和渲染文件等的报告,通过内置的命令行和壳的支持与其他程序或脚本语言进行交互访问。

MAXScript还可以被用作高层场景的输出工具。

通过输出包含物体生成命令的脚本,使输出对任何高层3dsmax结构的应用成为可能。

MaxScript甚至可以用来把max高版本文件转换到低版本的max中去,而不必求诸第三方数据格式入门部分一认识Maxscript界面打开脚本编辑器打开脚本侦听器Mini脚本侦听器在侦听器中查看操作记录在操作记录中提取脚本编辑器中运行脚本数字键盘回车单行运行或运行被选择语句Ctrl+e 执行整个脚本二入门实例书写规则书写形式非常自由,对大小写不敏感,一个表达式结束后进行换行时不需要加分号2+54*6-7-9a+b与A+B是一样的换行,并可以在任何操作符后面打断语句换行,MaxScript会读取代码直到读取一个完整的表达式a+b*c /d - e + f * g / ha+b * c / d - e +f *g / h错误的换行a +b *c /d -e +f* g / h用斜杠换行a +b *c /d – e\+f * g / h如果在同一行中书写多个表达式,用分号分开1+2;2^3;sin 30注释,使用双减号如Sphere()--创建一个球体变量赋值变量赋值的语法变量名=变量值注意变量的名的书写由下划线或英文字母开头,可以包含任意数量的英文字母或数字变量值可以是一个数,字符串或表达式给变量赋予一个字符串mystring = "This is my string."通过输入变量引用变量的值Mystring为这个变量重新赋值mystring = "This is not your string." Mystring基本的运算35.0*2PiPi系统预定义的全局变量4/3*pi*2.5^3字符串操作a=”MaxScript ”b=”is a freeform language”a+b随机数的生成Random 1 100Random [0,0,0][100,100,100]自运算X=5X=x+1可以写作x+=1加减乘除都可以使用这种快捷方式X*=2x-=2x/=2对物体进行操作Box()b=box()b=box length:20 width:20 height:20对指定的物体进行操作$box01Select $box01改变物体颜色b.wirecolor=greenb.wirecolor=color 0 0 255b.pos=[0,0,15]b.scale=[1,1,2]move b [0,0,-15]scale b [1,1.5,1]rotate b 30 z_axisrotate b -30 [0,0,1]修改物体特有的属性b.height=30b.width=10b.length=10查看物体属性的两种办法Showclass()使用方法 Showclass “box.*”可以在脚本侦听器窗口中显示 box类的属性Box : GeometryClass {10,0}.height : float.length : float.lengthsegs : integer.width : float.widthsegs : integer.mapcoords : boolean.heightsegs : integerShowProperties()使用方法showProperties b需要针对专门物体复制物体Copy b复制时可以修改一些通用属性,如位置,旋转,线框颜色Copy b pos:(b.pos+[0,10,0]) wirecolor:green使用循环语句进行阵列P=b.posFor i=1 to 50 do(P.x+=50Copy b pos:p)--------------------------------For i=1 to 50 do(P.x+=50C=Copy b pos:pc.height=50+25*sin(i*360/8.0))---------------------------animate onFor i=1 to 50 do(P.x+=50at time i(C=Copy b pos:pc.height=50+25*sin(i*360/8.0)))创建星空在+400和-400的空间中创建用 showclass()查看球类的属性For i=1 to 500 do(P=random [-400,-400,-400] [400,400,400]Sphere radius:(random 10 1.0) segs:4 pos:p)定义函数Fn starField size segs num:100 =(For i=1 to num do(P=random (size*[-1,-1,-1]) (size*[1,1,1])Sphere radius:(random 10 1.0) segs:segs pos:p))函数调用Starfield 500 4 num:300MaxScript的基本结构——表达式什么是表达式?在各种计算机语言的相关书籍中都有对其概念的介绍,尽管措辞不同,但都有一个共识,那就是——表达式是可以对其求值的任何语句。

在MAXScript中的任何结构都是表达式,都产生值,这种基于表达式的结构使MAXScript的书写非常简单,自由,而且十分直观。

只要是可以书写<表达式>的地方,就可以书写MAXScript的任何结构。

我们用if结构来说明。

例如:if a > b then print c else print d我们可以把这个if表达式写进赋值语句中:x = if a > b then c else d而if结构和赋值语句本身也是表达式,所以又可以把它们嵌套在一个if结构中:x = if (if a > b then c else d) < e then f else (g = 23)还有一个例子是块表达式。

块表达式就是用圆括号括起来的一连串表达式,在语法描述中被标记为<块表达式>。

(print aprint bif a > b then print "the big a")块中的表达式用换行分割,你还可以把这些表达式写到一行里,用分号(“;”)隔开:print a; print b; if a > b then print "the big a")块表达式本身也是表达式。

它按顺序执行执行每一个子表达式,然后把最后一个表达式的值作为块表达式的值,一定要记住这一点。

数据类型NumberStringBooleanClassPoint3Matrix3QuatArray1.NumberMAXScript有两种数的类型:单精度浮点数和32位整型数。

这两种数的类型相当于max中使用的浮点数和整数类型。

123123.45-0.003451.0e-60x0E.1abs <数> 求绝对值,返回类型与给定的参数一致mod <数1> <数>。

模运算,即第一个数被第二个数除后的余数,返回结果为浮点数ceil <数> ceiling是上限的意思,返回大于或等于给定数的那个最近的整数,返回类型总是为浮点数,如ceil 15.1的结果为16floor <数> 求小于或等于给定数的那个最近的整数,返回类型总为浮点数.如floor 1.5的结果为15三角函数MAXScript 中还有标准三角函数,角度以度为单位,返回结果为浮点数。

这些三角函数是:acos <数> --反余弦函数asin <数> --反正弦函数atan <数> --反正切函数atan2 <数> <数>--反正切函数的另一种形式cos <数> --余弦函数cosh <数> --双曲余弦函数sin <数> --正弦函数sinh <数> --双曲正弦函数tan <数> --正切函数tanh <数> --双曲正切函数exp <数> -- e的指数函数log <数> -- 以e为底的自然对数log10 <数> --以10为底的常用对数pow <数> <数> --指数函数sqrt <数> --平方根函数随机函数random <数> <数> --随机函数,返回值的类型为第一个参数的类型seed <数>--随机种子函数角度转换函数degToRad <数>把度转换为弧度,结果总为浮点数radToDeg <数>把弧度转换为度,结果总为浮点数2.String字符串是用括号括起来的一系列字符如:s1 = "Truth, Justice And The American Way"s2 = "The American Way"s3 = "All That Stuff"用.count属性访问字符个数访问某个字符用索引数(下标)如 s1[3]3.BooleanClass字面常量truefalseon –-相当于trueoff -- 相当于false"true" as booleanClass"false" as booleanClass"on" as booleanClass"off" as booleanClass运算符not <布尔值>如果布尔值为false返回true,为true则返回false<布尔值> and <布尔值>如果两个布尔值都为true则返回true,否则为false<布尔值> or <布尔值>如果只有其中一个为true就可返回true。

相关文档
最新文档