现在的位置: 首页 > 综合 > 正文

3dmax脚本教程 2

2013年10月07日 ⁄ 综合 ⁄ 共 2974字 ⁄ 字号 评论关闭

本文转载自http://jiurong995294.blog.163.com/blog/static/195133243201192531546490/

方便以后需要时候使用

第二讲:第一节:学会使用语句 : showProperties() 

顾名思义,Showproperties意思就是显示物体的信息,为什么要先学会使用这个表达语句呢?譬如,在3D MAX里面有个自带AEC插件,做树木用的,(尽管效果很假)。当我在场景中间创建了一个树木。想用脚本来控制他的一些参数,但是我也不知道他有那些参数。怎么办?这个时候Showproperties命令就派上用场了~
3dmax脚本教程 2 - 九荣 - 鹏鹏的博客
当我把创建的这个树选中,输入showproperties$回车,立刻白色代码执行区显示出了这个物体的所有属性。(其中符号 “$” 表示别选中的物体,意思是in selection,但是二者不等同,$更倾向与一个表达试,而in selection更倾向与一个命令)譬如height表示他的高度,seed表示他的随机种子数等。仔细观察,会发现前面都有一个
“.”(点)这个点前面也都省略了一个”$”.倘若把$加上,相信大家一定一目了然了~

接下来我们就可以自由的使用这些命令了,利用第一讲的知识,我们可以很快的做出许多完全不一样的树~(如图:利用random命令,让他们的高度和种子随机变化,很简单的例子,第一期有详细的介绍.)
小结: 利用Showproperties命令,查看物体有那些可编辑属性参数,然后就可以使用命令对需要修改的参数进行控制了~
第二节:2.1.打开 宏记录:
你在3D MAX 里面创建了一些物体,或者对一些物体属性进行了修改,做的这些事情都会被3D MAX用脚本语言的形式给记录下来,所以,打开了宏记录我们就可以在脚本代码里面看见自己都是怎么对MAX进行操作的.但是宏记录也有不足的地方,那就是不是所有的操作行为都能被3DMAX的宏记录,记录下来.眼下灵活的使用宏记录,是学好3D
MAX脚本的关键所在~

3dmax脚本教程 2 - 九荣 - 鹏鹏的博客
如图,这就是打开3D MAX宏记录的方法,在书写脚本的窗口上端的MacroRecorder下拉菜单中勾选Enable起用勾选,这样就打开了3DMAX脚本的宏记录.图中是我在世界坐标系中央创建了一个BOX时候被记录下来的命令.
Box lengthsegs:1 widthsegs:1 heightsegs:1 length:29.8779 width:33.3667 height:48.5474 mapcoords:on pos:[-13.0051,-19.3169,0] isSelected:on 
前面三句lengthsegs:1 widthsegs:1 heightsegs:1分别表示长宽高上面的片段数.接着就是长宽高的具体数值,然后pos后面中括号里面是XYZ轴的坐标值.接着是一个状态显示参数: isSelected:on表示这个物体正被选中的状态~
2.2.:执行一段代码的正规操作
现在我们要开始接触更多的MAX Script语言代码了,这意味着我们今后要执行什么命令不会象第一期中单句单句执行的那么简单了,我们将要执行大段大段的代码,而要执行大段大段的代码就不要想按下回车了事~
3dmax脚本教程 2 - 九荣 - 鹏鹏的博客
看看这张图吧,由于直接用回车进行代码执行,导致了只执行了一行代码,白色的代码执行区显示出了红色的出错提示语句,而正确的代码执行规则是如图所示:首先保存成MAX Script 脚本的*.ms文件,然后再使用Run Script按钮执行。
2.3:小括号又一理解思路:
在前面第一期我解释过,小括号里面是来表示一个数值的,在这个,我讲一下小括号的又一理解思路,意思是:在小括号内写的是一段完整的可执行的MAX Script代码,有人用过JAVA的一定知道,在JAVA里面是大括号 { } ,大括号内括的是一段完整的可执行代码 “{”表示程序开始,“}”表示程序结束,在MAX
Script里,小括号也是这么一个用法。




3dmax脚本教程 2 - 九荣 - 鹏鹏的博客
Mental Ray大家都用过的吧。
3dmax脚本教程 2 - 九荣 - 鹏鹏的博客
2.4添加控制菜单
通过这样的几句话,就完成了控制面板的添加,老规矩还是来解释一下是什么意思。
代码是这样写的哟
utility Publicname "标题名称" 
(
button Publicname "enjoy 3D MAX" pos:[12,20] width:140 height:30
)
什么意思?第一句有一个“utility”语句,他的意思是指在上面图中MAX Script面板里面那条下拉菜单里面添加一个选项。这个语句怎么用?我来说一下:首先他的固定语法是:utility + name +“标题名称”, 中间name指的是程序内部的名称,计算机运行代码的时候,他要知道你新添加的东西叫什么名字,才能执行这个东西下面的子代码,所以这个name只能是英文,他表示:你新添加的面板的名称,而后面“标题名称”就是标题名称了,观察下上面的图就明白了,我也不多说咯~
我们继续往下看:
button Publicname "enjoy 3D MAX" pos:[12,20] width:140 height:30
这句,首先button(按钮)也是一个他的固定语法也是和utility一模一样的:button + name + “标题名称”,这里我给的标题名称是:"enjoy 3D MAX" 。
最后这段代码在第一段小括号内还少一句话才显的完整——on Publicname pressed do意思是:当Publicname按钮被按下的时候do一件事情。(有关于do的语法第一期有讲)至于做什么事情,我们可以紧接着前面的代码继续一个小括号,在这个小括号内书写一段完整的可执行代码,作为“do“的具体内容 
utility Publicname "标题名称"
(
button Publicname "enjoy 3D MAX" pos:[12,20] width:140 height:30
on Publicname pressed do 
)
)
--这里一对小括号内书写一段完整的可执行代码,用语承接上文中“do“的内容

关于button按钮语句,用客观一点的公式来表达应该是这样:
button <name> [ <caption> ] [ images:<image_spec_array> ] \
[ toolTip:<string> ] 
我不能把什么东西都解释完了,要不然大家的思想会变的很局限,所以关于按钮。我做了一个比较有意思的东西,也希望大家自己能够思考一下
3dmax脚本教程 2 - 九荣 - 鹏鹏的博客
这个东西比较有意思,一个渲染按钮,制作起来也比较方便,单击他后,原来按钮的位置就会被渲染出来场景中的物体。
大家仔细考虑一下我这个按纽是怎么制作的,其实方法很简单关键看你能不能想的到。
代码我也公布给大家,想不出来的时候自己可以对着这代码看一看思路。
rollout image_button_test "Image Button"
(
button theButton "Press To Render!" width:200 height:200
on theButton pressed do 
(
theBmp = render outputsize:[200,200] vfb:off
theButton.images = #(theBmp, undefined, 1,1,1,1,1 )
)
)
createDialog image_button_test 210 210

抱歉!评论已关闭.