谁能帮我写一篇关于3D maxrevit古建筑建模模漫游的毕业论文? 要求10000字以上,希望热心人帮我解决一下。

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
3D_max毕业论文
下载积分:1000
内容提示:3D_max毕业论文
文档格式:DOC|
浏览次数:57|
上传日期: 23:22:01|
文档星级:
该用户还上传了这些文档
3D_max毕业论文
官方公共微信4425人阅读
为什么要学习3D MAX脚本?
3D MAX Script是我迄今为止见过编程语言最自由的一种脚本开源环境,他的自由程度远远超过了Sun 的JAVA,她没有大小写的区分,以及固定的公式和程序工作流程树,MAX Script一旦被编写,人们就可以从任何一行进行代码的编译,不需要符合格式的束缚。而且MAX Script的功能相当强大。
详细的说明一下MAX Script功能到底有多强大:MAX Script是完全基于OpenGL开源以及VC核心制作出来的,而当今世界上任何一款CG制作软件也主要依赖这两点编写,也就是说如果MAX Script使用的好,我们完全有那个能力在3D MAX里面集成Maya的所有功能!这不光光是二次开发的乐趣,我想她更是一次CGer思维的革命,很多使用传统制作方法难以完成的任务,在使用了MAX Script后就会变的非常简便、快捷!
我认为想要学好MAX Script不在于你前面有多少编程的基础和学习经验,关键在于是否能很好的理解MAX Script里面每一个字串符的使用方法和他的作用。举个很简单的例子:“()小夸号”和“[]中夸号”有什么区别呢?他们可以在什么地方使用?两个符号可以结合在一起使用吗?怎么结合在一起使用更加科学合理?其实就是这样的几个问题解决好了,你甚至可以模仿出一些美国大片级别的视频特效!(以上的几点我会在接下来的杂志中进行详细讲解)
第一讲:MAX Script基础片
认识MAX Script界面:
按下键盘上的F11,或者按照图示单鸡按钮,即可弹出MAX Script窗口
第一讲,第二节:基础应用片:
用实例讲解MAX Script的基础符号.
很多人感觉MAX Script很难,其实我觉得他们觉得很难的原因是因为基础没有学好,而我认为的MAX Script基础就是符号,倘若能把几个基本符号理解的很好的话,相信很多问题就可以迎刃而解. MAX Script真的不难,关键是在于你对他的理解.&
现在我开始讲解MAX Script中最基础的符号,希望大家认真学习,因为在这一节学好了,接下来的学习就会显的很轻松
MAX Scrip中:使用―― $、””、()、[]、和. 的理解。
接下来我向大家演示两个例子,并且在此例中向大家讲解以上几个符号的使用方法,和如何理解.
首先,来看一张效果图:比较抽象些,只是表达个意思
一张大数量,宏观城市景观,共15376个BOX,怎样制作速度最快?
最简单的方法就是――制作许许多多个BOX,然后一个一个的对他们进行高度、大小设置(― | | |)―凸―)~_~)――_―)。。。不过这个。。这个这个。。呵呵,冷不?好冷。。。
而我使用了MAX Script后,只要一句就可以高定!&
1:随便拉一个BOX
2:阵列一下(我的是30*30一共900个BOX)
3:选中所有物体!写入脚本
4:渲染,完成局部的制作。
我使用的语句是:for a in selection do a.height=(random 0 10)
有人说:“老师,你写的那句话是什么意思?”好,我现在说明一下。
首先是:for a in selection。什么意思?for a in selection是一个固定搭配,表示“被选择的物体”而被选择的物体就是用――a来表示。
然后是――do,这个不用多解释了,“做,做一件事情” 被选中的物体去做一件事情;那是去做什么事情?这就是代码运算的结果――a.height=(random 0 10)
a.&&height=(random 0 10):
表示被选择的物体――a的 高度等于(0到10之间的一个随机数)
random是随机的意思; 0 10表示范围;height表示物体的高。他应该=…………
有了上面的这些解释,下面我们返回这一讲的主题:
仔细观察上面所给的代码,首先我们发现一个有趣的表达式a.height,很有意思,a表示已选择的物体,而height表示物体的高度,而者怎么联系到一起去的呢?原来是中间的一个 . 号。这个符号是关键,如何理解?你可以把他理解成――“什么什么的属性”这个后面再跟具体属性,比如这个a.height,他的意思是说a的高的属性。然后再继续接表达式。a.height=什么什么(一个可选的数)
再仔细观察,有没有发现什么?呵呵――小夸号!小夸号()怎么理解?不能说理解了,应该说怎么使用,在这里小夸号的使用方法为――“(加可选的客观数值,或者运算表达式)”向在这里,小夸号()里面就是一个表达式,他的取值范围在0到10之间。连接上前面的a.height,意思就是“被选择的物体高度在0到10之间随机变化。”讲到这里,你已经豁然开朗了吧
其实原理是很简单的,关键在于你能不能想的到。
第一讲第三部分:实例2:
完成了上一个例子.好,有人又说了:“丁,怎么样把那些房子都做成不一样的颜色?”最简单的方法就是一个一个的点击物体,然后一个一个的对他们的线筐颜色进行调整。(― | | |)―凸―)~_~)――_―)。这个这个。呵呵。。倘若想使用MAX Script,仔细想一下,其实这也是很简单的,学会一个属性命令――wirecolor就可以做到了,这个属性命令我是在――亓鑫辉老师的公开讲课中学到的。在此非常感谢火星培训部的亓鑫辉老师!也希望大家支持亓鑫辉老师!&
1:这里有100个BOX,选中他们。
2:然后脚本
3:然后完成,我这里有100BOX他们的颜色都是不一样的。
来看一下代码:for a in selection do a.wirecolor=color(random 0 255) (random 0 255) (random 0 255)
有人说:“老师,什么意思?”在这里for a in selection不说了,do 后面跟的是a 及wircolor两个关键词。Wirecolor是线筐颜色的意思,中间 . 号连接表示a的线筐颜色,后面是一个新的表达式:color
现在我来说一下color的使用方法。
Color+RGB是理论表达式,RGB都用0到255之间的数字表示,好了这样就有人写出了这样的表达式:Color 50 250 150。回车执行代码后,发现是错误的。而我就觉得这些人在我前面说的内容还是没有理解。Color后面既然想表达3个数字分别对应RGB,能这样表达吗?是3个数字,不是一个数字。50 250 150,这是什么值?虽然可以表达RGB,但是格式不对。前面的内容我已经详细的讲解过了一点了:小夸号()的使用方法,小夸号()里面用来表示一个具体的数值。所以在这里,写成Color (50)(250)(150),就显的更加合理
跟上前面的表达式连起来看一下。for a in selection do a.wirecolor=color(random 0 255) (random 0 255) (random 0 255)显然,我把已选择的物体的RGB都在0到255上面进行随机取值,这样就可以做到颜色都不一样了。&
以上是MAX Script经常出现的几中情况错误,仔细观察。红色的文字告诉你是什么地方出了问题。
1:-- Error occurred in a loop
-- a: $Box101
-- Argument count error: Color wanted 4, got 1
这个提示应该还是比较好理解的,他告诉你BOX101没有办法按照代码被赋予正确的线筐颜色。而且也告诉了你是在“Color”这一指令后出的问题,很明显这个就说明Color的表达有问题。
仔细观察,发现错误语句中的Color表达是:Color(0 255 255)。而实际上3DMAX Scrip中的――()小夸号,里面只能存一个固定的数值,0 255 255虽然是“RGB”色彩代码的表示方法,但是不符合语法,小夸号内必须存一个固定的数值,在MAX Scrip中“Color”指令后确实是要跟三个数字来表达R、G、B的,此时我们使用3个小夸号:()就比较合理了。
2:-- Syntax error: at keyword parameter, expected name
-- In line: for a in selection do a.wirecolor:color&
出错了没有关系,MAX Scrip中的错误是最好排除的,仔细观察红色的提示代码,要认认真真的找下在什么地方出错。他告诉你咯,这个“for a in selection do a.wirecolor:后出现了错误,”意思是这个“等于”号不能这么打,而输入“=”就比较合理了。(我上是用“冒号”代替“等于号”的)
3:我胡乱打的虾米…...看看他告诉我什么:undefined。意思是有定义。
解决办法比较传统,入下:“没有定义的变量或者名称”=*即可(*可以是任何数值或者表达式,总之必须是一个已经被定义过的语句。)
4:这是在MAX Script中一个比较典型的错误,如何判断一个有效的表达式。MAX Script中运行代码的时候,是从上向下依次逐行运算,仔细观察,发现错误代码为:
MAX Script在进行运算的时候,在第一行,会把他当成a+b/c进行运算然后直接输出结果,执行第二行的时候,就会提示“+号”使用错误,这是一段断开的代码,没有从头到尾的连续性。VC 和JAVA在这方面都使用了――{}大夸号来表示一段完整的程序代码。然后一段代码中还能继续使用{}大夸号继续定义子程序树。在MAX Script,加上反斜杠\就显得比较合理了
a+b/c\
这样效果就等同于a+b/c+d.。如果想要把几条表达式合并成一行,也可以使用分号隔离.比如如图.
&第二讲:第一节:学会使用语句 : showProperties()
顾名思义,Showproperties意思就是显示物体的信息,为什么要先学会使用这个表达语句呢?譬如,在3D MAX里面有个自带AEC插件,做树木用的,(尽管效果很假)。当我在场景中间创建了一个树木。想用脚本来控制他的一些参数,但是我也不知道他有那些参数。怎么办?这个时候Showproperties命令就派上用场了~
当我把创建的这个树选中,输入showproperties$回车,立刻白色代码执行区显示出了这个物体的所有属性。(其中符号 “$” 表示别选中的物体,意思是in selection,但是二者不等同,$更倾向与一个表达试,而in selection更倾向与一个命令)譬如height表示他的高度,seed表示他的随机种子数等。仔细观察,会发现前面都有一个 “.”(点)这个点前面也都省略了一个”$”.倘若把$加上,相信大家一定一目了然了~
接下来我们就可以自由的使用这些命令了,利用第一讲的知识,我们可以很快的做出许多完全不一样的树~(如图:利用random命令,让他们的高度和种子随机变化,很简单的例子,第一期有详细的介绍.)
小结: 利用Showproperties命令,查看物体有那些可编辑属性参数,然后就可以使用命令对需要修改的参数进行控制了~
第二节:2.1.打开 宏记录:
你在3D MAX 里面创建了一些物体,或者对一些物体属性进行了修改,做的这些事情都会被3D MAX用脚本语言的形式给记录下来,所以,打开了宏记录我们就可以在脚本代码里面看见自己都是怎么对MAX进行操作的.但是宏记录也有不足的地方,那就是不是所有的操作行为都能被3DMAX的宏记录,记录下来.眼下灵活的使用宏记录,是学好3D MAX脚本的关键所在~
如图,这就是打开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.9,0] isSelected:on
前面三句lengthsegs:1 widthsegs:1 heightsegs:1分别表示长宽高上面的片段数.接着就是长宽高的具体数值,然后pos后面中括号里面是XYZ轴的坐标值.接着是一个状态显示参数: isSelected:on表示这个物体正被选中的状态~
2.2.:执行一段代码的正规操作
现在我们要开始接触更多的MAX Script语言代码了,这意味着我们今后要执行什么命令不会象第一期中单句单句执行的那么简单了,我们将要执行大段大段的代码,而要执行大段大段的代码就不要想按下回车了事~
看看这张图吧,由于直接用回车进行代码执行,导致了只执行了一行代码,白色的代码执行区显示出了红色的出错提示语句,而正确的代码执行规则是如图所示:首先保存成MAX Script 脚本的*.ms文件,然后再使用Run Script按钮执行。
2.3:小括号又一理解思路:
在前面第一期我解释过,小括号里面是来表示一个数值的,在这个,我讲一下小括号的又一理解思路,意思是:在小括号内写的是一段完整的可执行的MAX Script代码,有人用过JAVA的一定知道,在JAVA里面是大括号 { } ,大括号内括的是一段完整的可执行代码 “{”表示程序开始,“}”表示程序结束,在MAX Script里,小括号也是这么一个用法。
Mental Ray大家都用过的吧。
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& ]
我不能把什么东西都解释完了,要不然大家的思想会变的很局限,所以关于按钮。我做了一个比较有意思的东西,也希望大家自己能够思考一下
这个东西比较有意思,一个渲染按钮,制作起来也比较方便,单击他后,原来按钮的位置就会被渲染出来场景中的物体。
大家仔细考虑一下我这个按纽是怎么制作的,其实方法很简单关键看你能不能想的到。
代码我也公布给大家,想不出来的时候自己可以对着这代码看一看思路。
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
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3781118次
积分:49993
积分:49993
排名:第33名
原创:71篇
转载:3847篇
评论:774条
声明:早期转载的文章未标明转载敬请原谅,以后将陆续改过来,向原创者致敬!
有问题可留言
痞子龙3D编程
QQ技术交流群: 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
论3D发展以及MAX基础应用-三维建模方法【毕业论文,绝对精品】
下载积分:1000
内容提示:论3D发展以及MAX基础应用-三维建模方法【毕业论文,绝对精品】
文档格式:DOC|
浏览次数:253|
上传日期: 15:42:16|
文档星级:
该用户还上传了这些文档
论3D发展以及MAX基础应用-三维建模方法【毕业论文,绝对
官方公共微信 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
毕业论文《3D平职校园漫游设计》
下载积分:1000
内容提示:毕业论文《3D平职校园漫游设计》
文档格式:DOC|
浏览次数:25|
上传日期: 00:25:13|
文档星级:
该用户还上传了这些文档
毕业论文《3D平职校园漫游设计》
官方公共微信

我要回帖

更多关于 3dmax古建筑建模 的文章

 

随机推荐