您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 第一期3D MAX脚本原理极其运用教材2
首先非常感谢大家对于我的脚本原理杂志第一期的大力支持,使得我有继续写下去的动力。今天很高兴能推出脚本原理杂志的第二期,这和大家对我的支持是分不开的,在此,特别感谢在第一期杂志中回帖的网友,谢谢你们的支持。带领任何一位3D爱好者一步一步走近3DMAX脚本世界!第一期地址:=1&age=30:)其实第一期的时候就有咯00__________________-★丁¤丁★查看公开信息发送悄悄话给★丁¤丁★查找★丁¤丁★发表的更多帖子查找★丁¤丁★发表的精华主题查看Blog2006-07-31,20:46#2★丁¤丁★电影中。。。【火星专家】UID:52546Re:〓〓丁薰教材系列——3DMAX脚本原理杂志(第二期)〓〓〓〓首先非常感谢大家对于我的脚本原理杂志第一期的大力支持,使得我有继续写下去的动力。今天很高兴能推出脚本原理杂志的第二期,这和大家对我的支持是分不开的,在此,特别感谢在第一期杂志中回帖的网友,谢谢你们的支持。第二期开始,我要逐渐引导大家自己研究3DMAX脚本,如何自己一点点的研究,就要从基本的一些方法做起,也基本上所有的3DMAX脚本制作都是基于这个方法进行的。第二讲:第一节:学会使用语句:showProperties()顾名思义,Showproperties意思就是显示物体的信息,为什么要先学会使用这个表达语句呢?譬如,在3DMAX里面有个自带AEC插件,做树木用的,4帖子:2018积分:111火星币:34555声望:11105勋章展示勋章总数:1★丁¤丁★的博客读着爱情坐着地铁(尽管效果很假)。当我在场景中间创建了一个树木。想用脚本来控制他的一些参数,但是我也不知道他有那些参数。怎么办?这个时候Showproperties命令就派上用场了~当我把创建的这个树选中,输入showproperties$回车,立刻白色代码执行区显示出了这个物体的所有属性。(其中符号“$”表示别选中的物体,意思是inselection,但是二者不等同,$更倾向与一个表达试,而inselection更倾向与一个命令)譬如height表示他的高度,seed表示他的随机种子数等。仔细观察,会发现前面都有一个“.”(点)这个点前面也都省略了一个”$”.倘若把$加上,相信大家一定一目了然了~接下来我们就可以自由的使用这些命令了,利用第一讲的知识,我们可以很快的做出许多完全不一样的树~(如图:利用random命令,让他们的高度和种子随机变化,很简单的例子,第一期有详细的介绍.)小结:利用Showproperties命令,查看物体有那些可编辑属性参数,然后就可以使用命令对需要修改的参数进行控制了~第二节:2.1.打开宏记录:你在3DMAX里面创建了一些物体,或者对一些物体属性进行了修改,做的这些事情都会被3DMAX用脚本语言的形式给记录下来,所以,打开了宏记录我们就可以在脚本代码里面看见自己都是怎么对MAX进行操作的.但是宏记录也有不足的地方,那就是不是所有的操作行为都能被3DMAX的宏记录,记录下来.眼下灵活的使用宏记录,是学好3DMAX脚本的关键所在~如图,这就是打开3DMAX宏记录的方法,在书写脚本的窗口上端的MacroRecorder下拉菜单中勾选Enable起用勾选,这样就打开了3DMAX脚本的宏记录.图中是我在世界坐标系中央创建了一个BOX时候被记录下来的命令.Boxlengthsegs:1widthsegs:1heightsegs:1length:29.8779width:33.3667height:48.5474mapcoords:onpos:[-13.0051,-19.3169,0]isSelected:on前面三句lengthsegs:1widthsegs:1heightsegs:1分别表示长宽高上面的片段数.接着就是长宽高的具体数值,然后pos后面中括号里面是XYZ轴的坐标值.接着是一个状态显示参数:isSelected:on表示这个物体正被选中的状态~2.2.:执行一段代码的正规操作现在我们要开始接触更多的MAXScript语言代码了,这意味着我们今后要执行什么命令不会象第一期中单句单句执行的那么简单了,我们将要执行大段大段的代码,而要执行大段大段的代码就不要想按下回车了事~看看这张图吧,由于直接用回车进行代码执行,导致了只执行了一行代码,白色的代码执行区显示出了红色的出错提示语句,而正确的代码执行规则是如图所示:首先保存成MAXScript脚本的*.ms文件,然后再使用RunScript按钮执行。2.3:小括号又一理解思路:在前面第一期我解释过,小括号里面是来表示一个数值的,在这个,我讲一下小括号的又一理解思路,意思是:在小括号内写的是一段完整的可执行的MAXScript代码,有人用过JAVA的一定知道,在JAVA里面是大括号{},大括号内括的是一段完整的可执行代码“{”表示程序开始,“}”表示程序结束,在MAXScript里,小括号也是这么一个用法。00__________________-★丁¤丁★查看公开信息发送悄悄话给★丁¤丁★查找★丁¤丁★发表的更多帖子查找★丁¤丁★发表的精华主题查看Blog2006-07-31,20:49#3★丁¤丁★电影中。。。【火星专家】UID:525464Re:〓〓丁薰教材系列——3DMAX脚本原理杂志(第二期)〓〓〓〓帖子:2018积分:111火星币:34555声望:11105勋章展示勋章总数:1★丁¤丁★的博客读着爱情坐着地铁MentalRay大家都用过的吧。2.4添加控制菜单通过这样的几句话,就完成了控制面板的添加,老规矩还是来解释一下是什么意思。代码是这样写的哟utilityPublicname标题名称(buttonPublicnameenjoy3DMAXpos:[12,20]width:140height:30)什么意思?第一句有一个“utility”语句,他的意思是指在上面图中MAXScript面板里面那条下拉菜单里面添加一个选项。这个语句怎么用?我来说一下:首先他的固定语法是:utility+name+“标题名称”,中间name指的是程序内部的名称,计算机运行代码的时候,他要知道你新添加的东西叫什么名字,才能执行这个东西下面的子代码,所以这个name只能是英文,他表示:你新添加的面板的名称,而后面“标题名称”就是标题名称了,观察下上面的图就明白了,我也不多说咯~我们继续往下看:buttonPublicnameenjoy3DMAXpos:[12,20]width:140height:30这句,首先button(按钮)也是一个他的固定语法也是和utility一模一样的:button+name+“标题名称”,这里我给的标题名称是:enjoy3DMAX。最后这段代码在第一段小括号内还少一句话才显的完整——onPublicnamepresseddo意思是:当Publicname按钮被按下的时候do一件事情。(有关于do的语法第一期有讲)至于做什么事情,我们可以紧接着前面的代码继续一个小括号,在这个小括号内书写一段完整的可执行代码,作为“do“的具体内容utilityPublicname标题名称(buttonPublicnameenjoy3DMAXpos:[12,20]width:140height:30onPublicnamepresseddo))--这里一对小括号内书写一段完整的可执行代码,用语承接上文中“do“的内容(关于button按钮语句,用客观一点的公式来表达应该是这样:button<name>[<caption>][images:<image_spec_array>]\[toolTip:<string>]我不能把什么东西都解释完了,要不然大家的思想会变的很局限,所以关于按钮。我做了一个比较有意思的东西,也希望大家自己能够思考一下这个东西比较有意思,一个渲染按钮,制作起来也比较方便,单击他后,原来按钮的位置就会被渲染出来场景中的物体。大家仔细考虑一下我这个按纽是怎么制作的,其实方法很简单关键看你能不能想的到。代码我也公布给大家,想不出来的时候自己可以对着这代码看一看思路。rolloutimage_button_testImageButton(buttontheButtonPressToRender!width:200height:200ontheButtonpresseddo(theBmp=renderoutputsize:[200,200]vfb:offtheButton.images=#(theBmp,undefined,1,1,1,1,1)))createDialogimage_button_test21021000__________________-★丁¤丁★查看公开信息发送悄悄话给★丁¤丁★查找★丁¤丁★发表的更多帖子查找★丁¤丁★发表的精华主题查看Blog2006-07-31,20:56#4★丁¤丁★Re:〓〓丁薰教材系列——3DMAX脚本原理杂志(第二期)〓〓〓〓第三节:实例:飞船火焰制作电影中。。。【火星专家】UID:525464帖子:2018积分:111火星币:34555声望:11105勋章展示勋章总数:1★丁¤丁★的博客读着爱情坐着地铁思路:创建大气物体,使用环境火焰特效,进行制作,并打开宏录,记录制作流程,最后结合前面所学的命令进行制作优化。创建大气物体——圆柱,3DMAX的宏记录记录了下他的创建过程:CylGizmoradius:15.6403pos:[0.166849,0.496013,0]isSelected:onheight:44.8379当然我们知道很多都是没有用的废话,经过修改后得到CylGizmoradius:10height:33把过长的浮点修改整,去掉一些类似于isSelected:on的废话,pos[]语句也被删除了,pos[]是表示物理坐标位置的语句,如果被删除了,那么物体会自动的被创建在[0,0,0]世界坐标轴中间。宏记录的时候记录的不是很完全了,如图粉色的部分有用的只有这两句其中addAtmospheric(Fire_Effect())表示给物体添加Fire_Effect这个大气特效的意思CylGizmoradius:10height:33addAtmospheric(Fire_Effect())这就是宏记录后被我选择的语句,其中addAtmospheric(Fire_Effect())表示添加FireEffect这个大气特效的意思,但是添加归添加,要把FireEffect这个大气特效添加给哪个物体?通常我们会在环境特效编辑器里面拾取,但是这样的拾取在3DMAX里面是不能被宏记录的,如果想要让FireEffect这个特效指定给特定的大气Gizmo的话,就要用到下面这句话appendGizmo(Fire_Effect())CyLGizmo01意识是:把FireEffect这个特效指定给CylGizmo01。语言是这个意思了,但这样表达不好,因为他只能使用一次,在这里CylGizmo01是一个物体,他不是变量,所以以后的代码再出现CylGizmo01就不能被循环使用了。为了避免这个现象,我们得给这个大气Gizmo设置一个变量这个变量这样写:wy=Fire_Effect()GZM=CylGizmoradius:10height:33使得一个FireEffect特效等于变量wy,由变量wy替代,大气Gizmo由变量GZM替代。加上3DMAX的宏记录就有了以下代码utilityCosmicbrid飞船尾焰
本文标题:第一期3D MAX脚本原理极其运用教材2
链接地址:https://www.777doc.com/doc-3202782 .html