浅析3ds max脚本
1.概述:
3ds max脚本功能强大,方便。本文是介绍3ds max脚本技术,运用一个实例来说明如何编写3ds max脚本,以及程序设计的基本思想。我尽量做到让没有看过和写过任何一行程序的朋友,也能读懂本文,并理解文章后面的源程序,我特意在脚本程序中加上适当的注释方便理解。读懂本文,读者至少使用过3ds max,本文后面的例子程序在3ds max5和3ds max7环境下测试并能正常运行。
2.基础知识:
在计算机里,程序的概念是:所谓程序是由计算机能够执行的指令构成。程序是一种逻辑思维,程序逻辑主要包括三部分:1.顺序 2.判断 3.循环
具体说明程序逻辑三部分:
(1)程序执行顺序,就像我们生活中常见的时间从前到后,从上到下,从左到右。
(2)程序中的判断,在C/C++等大多数计算机语言使用if( )语句来实现,下面以C/C++语言作为说明,if( )括号里边是判断的条件,我举个简单生活中的判断例子:假如今天不下雨,我就去看电影,假如今天下雨我就在家玩游戏,用程序可以这样写,每段程序后的”//”斜杆是程序注释,计算机执行时会忽略注释,把实现的功能写成函数,实现不同的功能写成不同的函数。
if (today!=rain) //假如今天不下雨
SeeMovie( ); // 这里是看电影的函数
else //否则的话
HomePlayGame( ); //在家玩游戏
(3)程序中的循环,就是让计算机不断的执行某段代码,直到不满足条件为止。例如:今天我要在家玩十局星际争霸游戏,程序可以这样写。
for(int i=0; i<10; i++) //玩十局游戏, i=0,每玩一次i+1直到i=9为止
{
PlayStarCraft(1); //玩星际争霸游戏,1是函数参数,表示玩一局
} //一对大括号表示循环范围
3. 3DMax脚本基础知识:
(1) 如何编辑3ds max脚本。
3ds max脚本扩展名为*.ms ,可以使用记事本来编辑脚本另保存为*.ms,3ds max内置有一脚本编辑器,我们通常都使用这种方式来编写脚本,可以直接打开程序中的3ds max7,在菜单栏中,有一个菜单MAXScript ,也可以通过快捷键Alt+M 来打开MAXScript菜单。菜单包括”新建脚本”,”打开脚本”,”运行脚本”, “MAXScript侦听器” ,”宏录制器”,”Visual MAXScript编辑器” 共六个项。这里我简要介绍一下后面三个项的作用。打开”MAXScript侦听器”用于显示我们在视图中的操作,以命令和参数的形式显示。”宏录制器” 用于在操作视图时是否以命令字符显示我们的操作,这个功能用处非常大,我们可以把宏录制器录制下来的命令拷贝到我们自己的程序里边。不过要注意不是所以的操作都能录制宏,如“Video Post”的操作就无法录制成宏命令。”Visual MAXScript编辑器”主要用于写3dsmax插件,以直观的方式编辑和定义插件介面外观,如卷展栏、菜单、按纽、微调控件等,还可以很方便的编写编辑事件处理程序。
(2)如何运行一个脚本。
可以通过3ds max中的”MAXScript”菜单下的 ”运行脚本” 找到脚本所存储的目录并”打开”,即可看到运行脚本的效果。
(3)如何记录我们创建修改对象和设置动画的宏,便于把这些宏运用到我们自己的脚本当中。
首先我们打开”MAXScript”菜单下的 ”宏录制器”,然后再打开“MAXScript侦听器”这样的话我们就可以在视图中操作,比如在透视图中创建一个Box长方体在“MAXScript侦听器”对话框中的顶部窗格,在窗格背景为粉红色上显示
Box lengthsegs:1 widthsegs:1 heightsegs:1 length:44.5692 width:40.1423 height:28.437 mapCoords:on pos:[20.6308,-22.0995,0] isSelected:on
这个宏命令告诉我们我们创建了一个BOX,并定义了长宽高、段数及长宽高数值,是否打开纹理坐标,box创建在视图中的位置,当前是否选择了box。我们可以把这个宏拷贝,然后在“MAXScript侦听器”对话框中下边的窗格中,并修改部分数值,然后敲键盘Enter键,一切OK的话,透视图中会显示你用脚本创建的这个box长方体。
3. 动手编写Max脚本:
最后激动的时刻到了,我们动手写一个”雪山飞壶”3ds max脚本程序。
这算是我们的第一个入门程序吧,(这个程序离实用还很远,庆幸的是你已经入门了)我们要实现的功能:创建一雪山,创建粒子雪,创建一个茶壶,创建“雪山飞壶”字幕,创建一个摄影机,并设置动画。需要说明的是,max脚本程序中注释是使用--两个横杆,写好的max脚本直接选择”MAXScript”菜单下的 ”运行脚本”,就可以看到效果。雪山飞壶脚本运用分模块来设计,先创建雪山,水壶等对象,然后设置动画,每创建一个对象后赋给一个变量,这个变量用于设置动画,设置动画时可以很方便的调用设置好的变量。例如创建一个茶壶,并赋给一个荼壶变量,可以这样做 chahu=Teapot radius:9 ,变量直接可以使用,无需先申明,变量样式是这样: “茶壶变量名= Teapot 茶壶参数”。最后说明一下程序中”/”斜杆是换行符,表示下一行继续书写程序。运行脚本后可以切换到摄影机视图查看到完整动画效果(附图1)。以下是完整的”雪山飞壶”脚本源程序。
<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"></shapetype><stroke joinstyle="miter"></stroke><formulas></formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f><lock v:ext="edit" aspectratio="t"></lock><shape id="_x0000_i1025" style="WIDTH: 207pt; HEIGHT: 145.5pt" type="#_x0000_t75"></shape><imagedata src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/01/clip_image001.jpg" o:title="最终效果"></imagedata>
(附图1)
----------------源程序开始----------------------
--created by: 李英江
--生成一个雪山飞壶脚本
--日期:2005年7月26日
--第一步.生成一个box 长方体设置box参数
box length:140 width:140 height:5 /
lengthsegs:30 widthsegs:30 heightsegs:2 /
pos:[0, 0, 0] wirecolor:[50,250,245]/
mapCoords:off
--修改box 加入噪波修改使之成为一个凸起的山
addModifier $box01(NoiseModifier fractal:true /
seed:9 /
scale:100.0 /
strength:[0, 0, 60] )
--第二步.生成一个水壶并设置参数 赋予chahu变量
chahu=Teapot radius:9 /
smooth:on /
segs:4 /
body:on /
handle:on /
spout:on /
lid:on /
mapCoords:off /
pos:[-117, -18, 65]/
wirecolor:[233, 154, 229]
--第三步.生成一个粒子雪景及设置参数并赋予变量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:[178, 102, 178] --加入材质光
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 chahu [228.0, 0.0, 0.0] --茶壶沿x轴位移
rotate chahu (angleaxis 360.0 [0,1,0]) --茶壶沿y轴旋转360度
move t [0, -200, 0] --字效沿y轴位移
scale t [1.4, 1.4, 1.4] --缩放字效
)
)
max zoomext sel all --放大视图
max time play --场景创建完成 自动播放动画
----------------源程序结束---------------------
分享到:
相关推荐
GNU-ld链接脚本浅析的知识点涵盖了链接脚本的基本原理、基本概念、格式、命令、内存布局控制以及符号处理等方面。 首先,概论部分介绍了链接脚本的作用。链接脚本是一种控制链接过程的文件,它定义了如何将输入文件...
尽管本篇GNU LD脚本浅析文档的完成日期较早(2005年),但GNU LD链接器的基本原理和使用方法到今天仍然具有参考价值。通过本篇浅析,读者应当能够对GNU LD链接脚本有一个全面的了解,并能够在实际工作中灵活运用。
浅析页面中Java与JavaScript脚本的区别 Java 与 JavaScript 脚本是两种不同的编程语言,它们在 Web 开发中扮演着重要的角色。虽然它们都可以嵌入到 HTML 页面中,但是它们的表示方式、执行过程和应用场景都是不...
### GNU LD链接脚本浅析 #### 一、概论 GNU Linker(简称ld)是一种广泛应用于GNU/Linux系统下的链接工具,它负责将编译器产生的目标文件和其他辅助文件合并成可执行文件或者库文件。链接过程由链接脚本(通常以....
GNU-LD链接脚本是控制程序编译链接过程中的重要组成部分,它规定了输入文件内的各个section如何被放置到输出文件中,并且控制输出文件内各部分在程序地址空间内的布局。链接脚本一般以lds作为文件后缀名。在没有特殊...
【自动生成测试脚本方案浅析】 在接口自动化测试领域,编写测试脚本是一项耗时且繁琐的任务。本文主要探讨如何通过自动化手段减轻这一负担,提高工作效率。接口自动化测试工程师通常面临以下三个痛点: 1. **接口...
小白浅析mwan3的配置文件中文说明,openwrt多拨时使用
浅析网络安全技术.pdf浅析网络安全技术.pdf浅析网络安全技术.pdf
浅析电力系统感性无功补偿 浅析电力系统感性无功补偿
【标题】: "浅析如何在C语言中调用Linux脚本" 【描述】: "本文将详细介绍在C语言环境中如何调用Linux操作系统中的脚本程序,为需要此技术的开发者提供参考。" 【标签】: "C语言", "调用", "Linux脚本" 【正文】: ...
WDM PON设备浅析
079 浅析大学生就业中的歧视问题(3)-论文.zip
浅析现代物流管理趋势与发展策略.doc
3ds Max 是目前世界上应用较广泛的三维建模、动画、渲染软件,完全可以满足制作高质量动画、最新游戏、设计效果等领域的需要,被应用于影视、建筑、工业产品造型设计等各个行业。 知识点三:PhotoShop CS5 技术 ...
浅析人工智能体系建设.docx
STUN和TURN技术浅析
计算机网络安全问题浅析 (3).pdf
编辑配置脚本(~/.msmtprc是默认配置文件,也可以使用-C选项指定配置文件路径) luther@gliethttp:~$ vim msmtprc #添加如下内容 defaults #logfile /home/luther/msmtp.log account luther_test host mail.gliethttp....