开天辟地 --------之3dmax脚本浅析
杜浩然
引:古时候流传着一个盘古开天地的神话,盘古以一己之力将天地分开。。。创造了一片新的天地,名叫世界! 而在3d的世界中我们同样也在运用我们的智慧和工具开辟着另一片天地。。。 那么今天,就让我带着你走进3d的世界中,通过3dmax脚本的浅析,领略一番不一样的三维世界!
基础知识: 1 什么是3dmax脚本语言? MAX脚本语言是为完成3D Studio MAX功能专门设计的。它是像3D Studio MAX一样面向对象的,有许多对于MAX用户界面中特征和结构,带动画关键帧的动画模式,并通过层次改变场景对象对应于MAX的对象层次
2脚本语言能有哪些功能呢? •描述3D Studio MAX的全部用途,如造型、动画、材质、渲染等; •将脚本集成在用户应用面板卷展栏工作界面上,给脚本一个标准的MAX用户接口; •使用插入的文件的I/O,建立用户输入/输出工具; •写入可以访问全部场景状态的过程控制器; •建立批处理工具,例如批处理渲染脚本; •通过OLE Automation,与外部系统建立活动接口。 话外语:“嘿,哥们,说啥鸟语呢。。。。太专业听不懂,我是搞艺术的” 其实说白拉,脚本就是在3d中用来人与电脑交流的平台。。。通过这个平台完成一些我们手工操作难以实现的效果
3 脚本语言是什么样的? 在计算机里,程序的概念是:所谓程序是由计算机能够执行的指令构成。程序是一种逻辑思维,程序逻辑主要包括三部分:1.顺序 2.判断 3.循环
那么首先来解释一下逻辑的三个部分:1) 程序中的顺序: 如同我们正常的生活作息一样,从早到晚,从开始到结束。。。2) 程序中的判断: 比如在我们生活中常遇到得这样一个判断语句:“假如今天不下雨,我就出去打球,假如下雨,那我就在家打游戏”换做用程序的语句的表达话,我们可以写做: if (today!=rain) //假如今天不下雨 playbasketball( ); // 这里是打篮球的函数 else //否则的话 HomePlayGame( ); //在家玩游戏
3) 程序中的循环: 比如今天我要在家玩二十盘CS , 程序可以这样写: for(int i=0; i<20; i++) //玩十局游戏, i=0,每玩一次i+1直到i=19为止 { PlayCS(1); //玩CS,1是函数参数,表示玩一局 } //一对大括号表示循环范围
初识3dmax脚本编辑器: 1)打开方式:
(程序命令面版内)
max脚本语言卷展栏
1):打开录入
Max脚本语言输入行
(在这里我们就可以编写我们想对电脑发布的指令) 2):新建脚本
(MAX脚本编辑器)
3 ):打开脚本
脚本的文件扩展名:*.ms
4):运行脚本 将我们编辑好的脚本文件运行使用
动手编辑脚本: 激动人心的时候到拉。。。。接下来我们动手写一个名为“开天辟地”的小的脚本程序 虽然这个程序离我们实际工作中所需要的程序差得很远。。。不过就当是我们的入门程序。。。。让我们对脚本的应用有一个初步的认识吧。。
首先说一下想完成的设想: 通过脚本的方式创建出一个山,并且山顶上满天飞雪,四个字“开天辟地”从远处飞来。。。。。并有固定相机角度观看动画的进成。。。
源程序书写开始: --第一步.生成一个box 长方体设置box参数box length:140 width:300 height:5 \ lengthsegs:30 widthsegs:30 heightsegs:2 \ pos:[0, 0, 0] wirecolor:[59,99,8]\ mapCoords:off --修改box 加入噪波修改使之成为一个凸起的山addModifier $box01(NoiseModifier fractal:true \ seed:9 \ scale:100.0 \ strength:[0, 0, 60] )
--第二步.生成一个粒子雪景及设置参数并赋予变量snsn = snow pos:[4, 16, 100] \ wirecolor:[255, 255,255] \ viewportcount:100 \ rendercount:100 \ flakesize:2.0 \ speed:10.0 \ variation:2.0 \ tumble:0.0 \ tumblerate:1.0 \ display:0 \ start:(-30) \ life:(65) \ constant:true \ emitterwidth:200 \ emitterheight:200sn.hideEmitter = true
--第三步.生成一个“开天劈地” 字体,赋予变量tt = text size:20 pos:[0,200,57] font:"宋体" --设置字体t.text = "开天劈地" --字为rotate t 90 [1,0,0] --字体绕x轴旋转90度addModifier t (extrude amount:(-10)) --挤压成立体字textMat = standardMaterial diffuse:[243, 215, 25] --加入材质光t.mat = textMat
--第四步.生成一个目标摄象机cam=Targetcamera fov:45 nearclip:1 farclip:1000 \ nearrange:0 farrange:1000 \ mpassEnabled:off mpassRenderPerPass:off \ pos:[20.1, -191.169, 89.275] \ --isSelected:on target:(Targetobject transform:(matrix3 [1,0,0] [0,1,0] [0,0,1] [-9.8, 52.891, 11.745]))
--第五步.茶壶动画animate on( at time 100 --时间为100帧 ( move t [0, -200, 0] --字效沿y轴位移 scale t [1.4, 1.4, 1.4] --缩放字效 ))max zoomext sel all --放大视图max time play --场景创建完成 自动播放动画
将以上内容输入在“max脚步编辑器中”如图:
最后file中保存成脚本文件,并运行脚步,得到最终效果: 如图: