开课时间 优惠政策
付款方式 乘车方式
招生简章 关于就业
师资介绍 学生作品
关于食宿 常见问题
您在这里 首页 > 开天辟地(杜浩然)
开天辟地(杜浩然)
2008-02-22 11:43:27  作者:杜浩然  来源:  浏览次数:0

 

开天辟地
                                                            --------之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] )

   --第二步.生成一个粒子雪景及设置参数并赋予变量sn
sn = 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:200
sn.hideEmitter = true

--第三步.生成一个“开天劈地” 字体,赋予变量t
t = 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中保存成脚本文件,并运行脚步,得到最终效果:
  如图:

 
责任编辑:wxq


推荐文章 推荐专题



 【加入收藏】 【告诉好友】 【打印本页】 【关闭窗口】 【返回顶部