◆MaxScript大全--xs
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是一种用于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是一种针对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是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的条件选择语句和找面数为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语言的基础知识

为什么要学习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基本知识内容图文并茂,语言高度概括,文采形象生动,思路清晰可见;指出要害,抓住关键,透彻理解那些难懂的编程概念;不用担心数学基础很差,无需害怕英文单词不懂,只需初中数学知识,把英文单词作图形符号看待,拿脚本编程当文字游戏把玩。
能够提高解决问题的能力,可以降低学习脚本的门槛。
不用费力看英文帮助,何需辛苦找编程资料,减轻学习负担,节省宝贵时间!发挥自己的聪明才智,运用科学的学习方法,首先认真学好入门教程,然后虚心请教各位高手,脚本编程从此不再难!一、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算术表达式与赋值表达式著作:飞浪制作:【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 运算里面只有小括号(),那么如果我想括号里面再加括号怎么办呢?还是小括号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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。