3D MAX脚本教程1
本文转载自http://jiurong995294.blog.163.com/blog/static/195133243201192531546490/
方便以后须要时候使用
为什么要学习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里面每个字串符的用法和他的作用。举个非常easy的样例:“()小夸号”和“[]中夸号”有什么差别呢?他们能够在什么地方使用?两个符号能够结合在一起使用吗?怎么结合在一起使用更加科学合理?事实上就是这种几个问题解决好了,你甚至能够模仿出一些美国大片级别的视频特效!(以上的几点我会在接下来的杂志中进行具体解说)
第一讲:MAX Script基础片
认识MAX Script界面:
按下键盘上的F11,或者依照图示单鸡button,就可以弹出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之间随机变化。”说到这里,你已经豁然开朗了吧?
事实上原理是非常easy的,关键在于你能不能想的到。
第一讲第三部分:实例2:
完毕了上一个样例.好,有人又说了:“丁,怎么样把那些房子都做成不一样的颜色?”最简单的方法就是一个一个的点击物体,然后一个一个的对他们的线筐颜色进行调整。(— | | |)—凸—)~_~)——_—)。这个这个。呵呵。。倘若想使用MAX Script,细致想一下,事实上这也是非常easy的,学会一个属性命令——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
-- Frame:
-- 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中执行代码的时候,是从上向下依次逐行运算,细致观察,发现错误代码为:
a+b/c
+d
MAX Script在进行运算的时候,在第一行,会把他当成a+b/c进行运算然后直接输出结果,运行第二行的时候,就会提示“+号”使用错误,这是一段断开的代码,没有从头到尾的连续性。VC 和JAVA在这方面都使用了——{}大夸号来表示一段完整的程序代码。然后一段代码中还能继续使用{}大夸号继续定义子程序树。在MAX Script,加上反斜杠\就显得比較合理了
a+b/c\
+d
这样效果就等同于a+b/c+d.。假设想要把几条表达式合并成一行,也能够使用分号隔离.比方如图.
3D MAX脚本教程1的更多相关文章
- 转:3d max 2013 安装教程,凭着一种互联网精神提供给广大朋友
看到有人在ps区咨询如何安装3d max教程,当你进行第一步之前,请先断开网络连接第一步:运行安装程序 第二步:接受安装协议,点击下一步会提示输入序列号 第三步:你会看到已经安装完成了的界面 第四部: ...
- 3ds Max脚本的使用实例教程
本教程主要讲解了一个关于草地脚本的使用,应用到max与photoshop的一些命令及参数设置. 这个场景使用了3DSMAX5.1进行建模,使用VRAY渲染器进行的渲染,并且在最后使用PHOTOSHOP ...
- 我所遭遇过的中间件--3D MAX SDK
搞图形的人都知道3D MAX,而3D MAX SDK就是在该软件基础上的一套软件开发包.至于该不该将3D MAX SDK归纳为中间件,不要在意这细节了,反正我觉得SDK和中间件就差不多是一个东西.实际 ...
- 转:windows BAT 批处理脚本教程
转自:http://www.cnblogs.com/mq0036/p/3412171.html BAT 批处理脚本教程 第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文 ...
- 3ds Max实例教程-顽皮的小孩
本教程介绍使用3ds Max制作设计一个顽皮的小孩,这个作品的灵感来源于作者的亲身经历,也是以真实人物为原型做出来这么一个小人. 作者: Claudius Vesting 使用软件:3ds Max,P ...
- Cocos Creator 3D 打砖块教程(二) | 子弹发射与摄像机平滑移动
在线体验链接: http://example.creator-star.cn/block3d/ 前面一篇文章,我们讲了[打砖块]游戏中的3D物体的场景布局.材质资源.物理刚体与碰撞组件,接下来本篇文章 ...
- 3D MAX在立方体的使用
3D MAX不会“复用”立方体的顶点-----它直接计算该立方体需要12个三角面,每个三角面需要3个顶点,这样一共是36个顶点-----其实有大量顶点的位置是相同的,但3D MAX不管这些.它认为 ...
- Linux Shell脚本教程
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程
Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/
随机推荐
- 用gradle管理android项目出现的问题以及解决方法
1.项目结构 最好是全部在root 项目配置 一个settings.gradle 一个build.gradle 2.多项目依赖 http://www.gradle.org/docs/current/u ...
- Android Fragment的介绍与使用(案例Demo)
应用场景: 众所了解Android上的界面展示都是通过Activity实现的,可是Activity也有它的局限性,相同的界面在手机上显示可能非常好看,在平板上就未必了.为了让界面能够在平板上更好地展示 ...
- DJ_Java_Decompiler新手入门教程
首先声明:这篇文章并不是我原创,只是感觉挺有用处,想跟大家分享一下,所以标注为原创,希望能有更多的朋友可以看到,还请原作者谅解. 昨天大D说让我写下DJ入门的基础,今天写了一大半了,结果不小心把浏览器 ...
- JDBC增删改数据库的操作
JDBC入门及简单增删改数据库的操作 一.JDBC的引入 1.JDBC的概念 JDBC:Java Database Connection,表示数据库连接(任何数据库都支持JDBC的连接),是一个独立于 ...
- webservice之cxf样例
整理參考于网上资源: http://wenku.baidu.com/link?url=MbPPOKCficQCAwSZduszpMFSD3f8xCKeNz6YUtwFS1TkHharz1aPPfkXD ...
- Spark SQL Catalyst源代码分析Optimizer
/** Spark SQL源代码分析系列*/ 前几篇文章介绍了Spark SQL的Catalyst的核心运行流程.SqlParser,和Analyzer 以及核心类库TreeNode,本文将具体解说S ...
- .net Mvc文件下载的功能,大文件下载完成之后修改数据库功能
原文:.net Mvc文件下载的功能,大文件下载完成之后修改数据库功能 我服务器上文件只能下载一次,下载了之后就不能下载了,大文件或网速不好时,可能服务端文件流发送完了,客户端还没下载完,导致下载失败 ...
- C# 计算字符串/文件的哈希值(MD5、SHA)
原文 C# 计算字符串的哈希值(MD5.SHA) 已做修改 一.关于本文 本文中是一个类库,包括下面几个函数: /// 1)计算32位MD5码(大小写):Hash_MD5_32 /// 2)计算16位 ...
- H3C S5120交换机ACL应用的问题
下午在S5120上ACL的时候发现不起作用,ACL如下: acl number 3001 name deny-wan-to-lan-vpn rule 0 deny ip source 10.3.0.0 ...
- 微通道对接ERP、CRM、OA、HR、SCM、PLM和其他管理系统解决方案
公司现有ERP.CRM.OA.HR.SCM.PLM等管理系统的对接微信公共平台服务 方法1:开放接口 企业开放现有系统数据接口给第三方,或由第三方开发数据接口对接微信公众平台 方法2:获取数据库 企业 ...