三维动画毕业论文 (2).doc_第1页
三维动画毕业论文 (2).doc_第2页
三维动画毕业论文 (2).doc_第3页
三维动画毕业论文 (2).doc_第4页
三维动画毕业论文 (2).doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

吉林大学珠海学院 毕业论文(设计)基于三维动画软件的三维动画技术the 3d animation technology base on the 3d animation software系 别:计算机科学与技术专业名称:计算机科学与技术学生姓名:庄沐弘学 号:04080509指导教师姓名、职称: 王艺璇 老师完成日期 年 月 日基于三维动画软件的三维动画技术摘 要 3d动画也叫三维动画。三维动画是近年来随着计算机软硬件技术的发展而产生的一新兴技术。但由于国内的起步比较晚,三维技术人员常年缺乏。据统计,到目前为止,我国的动画人才缺口达到将近400万!就这个数据我们就可以看出,国内动画的发展相比其他发达国家还有很长的发展路程,更重要的是,在十年前国内还没有完全领悟到三维技术的发展对于国内经济的发展是有多么大的一个重要意义。如今,国内政府慢慢意识到这项技术的发展。对于三维动画的发展,国内很快的给予高度的重视与扶持。在实习这段时间内,本人学习了很多关于3d动画的知识,也了解了3d动画技术的发展与它的强大功能。本次我将通过我这段时间所学习到的知识来研究与探讨三维动画技术的具体功能应用,后台脚本的操作以及它的发展前景。让更多的人可以了解到这项技术的发展,并希望能够把这项技术应用到更加广泛的领域,让它更完善地服务到我们的生活!关键词:3d/三维动画;3d/三维软件;游戏动画;脚本程序。the 3d animation technology base on the 3d animation softwareabstractwith the development of computer hardware and software technology, the 3d animation is one of emerging technologies in recent years. however, it lack of the 3d technical workers in china year-round due to the starting point is so later than other countries. according to statistics, so far, the animation talent in our country is gap of nearly 4 million! on this data we can see that the development of the domestic animation still have to go a long journey compared to other developed countries base on this data. the more importantly thing is a decade ago we did not comprehend importance developing 3d animation technology for the development of economy fully. today, the government starts coming to realize the development of this technology. the government is more and more concerned about it, and give a high degree of support to develop the 3d animation technology.during i practice 3d animation, i get so much knowledge about 3d animation, and i also realize the development of 3d animation technology and its strong function. this time i will investigate the function and usefulness, background script and the outlook for 3d animation technology specifically by means of knowledge i practiced during those mouths. i hope it can be more perfect to serve our life so that more and more people can realize this technology and make use of it to a wider range of field.key words: 3d animation; 3d software; game animation; script.目 录1 绪 论11.1 研究背景11.2 三维动画简介11.3 发展前景简介22 动画设计32.1 认识3ds max32.2 角色建模42.3 角色骨骼绑定与蒙皮52.4 关键帧动画63 maxscript脚本程序83.1 maxscript简介83.2 maxscript基本操作83.2.1 基本界面操作83.2.2 创建和操作简单的对象83.2.3 创建和操作具有复杂关系的对象93.3 maxscript 操作流程103.3.1 创建对象103.3.2 选择对象11 3.3.3 变换对象113.3.4 修改器113.3.5 材质和贴图113.3.6 制作动画113.4 基本语法知识144 动画设计原理与结论194.4 动画设计原理224.6 结论24参考文献29致谢1 绪 论1.1 研究背景当今社会正快速向信息化社会前进,在动画影视方面也不例外,在发达的科技不断创新的前提下迅速发展。当二维的动画效果已经不能满足人们在视觉或者其他感官神经的时候,3d动画出现了。3d动画,也就是三维动画,是近年来随着计算机软硬件技术的发展而产生的一新兴技术。基于三维软件的三维动画革新了人们的眼球对虚拟世界的感官,它的迅速发展推动了全球经济和文化的科技化,立体化和真实化。在如此耀眼的三维动画发展的背后,各种三维软件的疯狂崛起始终支撑着这一技术的发展以至于把它推向高峰。而在众多三维软件大山的崛起中,又属autodesk的三维软件屹立在最高点。1946年美国诞生了世界上第一台计算机,在随后几十年的发展中,美国同样在cg行业成为世界公认的领导者。早在1968年,美国科学家就第一次实验性地将自己亲属的照片图像扫描进计算机。autodesk是世界领先的设计软件和数字内容创建公司,中文译为欧特克,是全球最大的二维、三维设计和工程软件公司,为制造业、工程建设行业、基础设施业以及传媒娱乐业提供卓越的数字化设计和工程软件服务和解决方案。该公司在1982年成立,之后始终致力于发展二维和三维软件。到了90年代,欧特克公司逐渐开始意识到二维的时代已经不能再满足于现今的各大设计行业了,人们的思维开始向三维转化。欧特克公司很快重点着力于三维软件的开发。从1982年成立开始,autocad 的面市到1990 autodesk 成立多媒体部,推出了第一个动画工作3d studio软件,欧特克公司俨然成为了三维软件开发的一座泰山。在经过20多年的努力,1996年4月,3d studio max 1.0 诞生了,这是3d studio系列的第一个windows版本,也是这个系列中最为全面和具有强大功能的一个三维设计软件!如今3d studio max已经开发了12代版本了。最新一款是3d studio max 2012。autodesk把三维动画技术推向了一个极致,更把全球设计文化推向了三维时代。1.2 三维动画简介 随着计算机三维影像技术的飞速发展,三维动画技术越来越被人们所看重。比起二维动画,三维动画能够更直观,更真实的展现出它的艺术效果。无论是简单的几何模型,还是复杂的人体模型;静态的模型展示,还是动态的动画,都能依靠强大的三维动画技术一一为您所呈现。如此强大的三维动画技术,到底是如何去实现这一系列的艺术效果? 三维动画软件在计算机中首先建立一个虚拟的世界,设计师在这个虚拟的三维世界中按照要表现的对象的形状尺寸建立模型及场景,再根据要求设定模型的运动轨迹、虚拟摄影机的运动和其它动画参数,最后按要求为模型赋上特定材质,并打上灯光。当这一切完成后就可以让计算机自动运算,生成最后的画面。 三维动画技术模拟真实物体的方式使其成为一个有用的工具。目前,这项技术广泛应用于建筑、规划、三维动画制作、广告、影视等领域。这极大地推动了全球经济与文化方面的飞速发展。如今,三维动画技术的发展已经处于高峰期的状态,而推动这项技术的成熟当然离不开三维软件的开发。1.3 发展前景简介 三维动画在国内正以高速发展着,我们在电视广告、动画片、电影中经常可以见到三维动画的元素。而目前,在这些三维动画广泛应用的领域中,三维动画人才更是行业人才市场中非常抢手的人才。然而,在三维动画如此迅速的发展中,动画人才缺口却被无限放大。据统计,国内到目前为止动画人才缺口达到一百多万甚至几百万!全国的动画公司纷纷建立,而对于三维动画人才更是求贤若渴。不管是在网上还是在人才市场上,都可以随处可见动画人才的招聘广告,却鲜有合格人才!这更从侧面反映了对三维动画人才的技术有着很高的要求。到目前为止,全球范围内数字娱乐市场的规模将达到1000亿美元,而中国到目前有近500万的动画,网络游戏爱好者,再加上至少400万的潜在用户群体,将会带动市场利益将近10亿元的规模。而随着影视业的竞争的加剧,在未来较长的时间里,我国的三维动画市场还将会成倍增长。从动画人才的酬薪角度来看,月薪一般都是由初入行的1000多元开始涨的。当技术娴熟时,除了固定的工资之外,还会有年底的奖金和额外的不菲的提成。在动画行业,技术中等的才人大概有4000到5000元一个月的固定薪酬,好一定的可以达到7000到8000元的层次。如果对于一系列的动画制作流程技术都很娴熟的话,你甚至可以拿到10000到20000元一个月的高薪酬劳。面对如此广大的发展市场、如此多的三维动画爱好者、如此高的行业就业酬薪,我们在三维动画飞速发展中也有着它的漏洞:人才缺口与三维动画学习培训的滞后。这使我们认识到:想要在这片广阔的土地上开发如此大的三维动画市场,不是一时的事情,在前途如此光明的三维动画行业上,我们得从基本做起,迅速建立起三维动画培训学习机构,及时落实学习教程,甚至让企业提供更多的实习就业培养机会!注重cg行业的发展。当然,这一切更离不开国家政府对这个行业的高度重视与扶持!当人们慢慢认识到这个行业所带来的跨时代的巨大推动力的时候,就是我国三维动画崛起甚至站上高峰的时候!2 动画设计2.1 认识3ds max 在三维动画中,我们所制作的一系列动画,中间包括建模、uv、材质和渲染等,主要依赖于为三维动画而生的三维动画软件。随着动画产业的发展,三维软件也有越来越多的选择,但很多的三维软件不能够满足于整个动画设计流程所要制作的步骤,往往你在一套动画的制作过程中要用到几个不同类型的三维软件来帮助你达到你想要的效果。比如你用3ds max创建模型后,需要用到uvlayout三维软件来拆分模型的uv,用到bodypaint 3d来绘画人物材质贴图。而在众多的三维软件中,3ds max是最主流的一款三维软件。它集齐动画设计的所有强大功能于一身,基本满足一套动画制作的基本操作流程。本次我们就以这款三维软件作为我们动画设计的基本软件。3d studio max,常简称为3ds max或max,是autodesk公司开发的基于pc系统的三维动画渲染和制作软件。其前身是基于dos操作系统的3d studio系列软件,最新版本是2012,如图2-1所示。在全球发展的相对比较成熟的游戏动画制作和建筑动画制作中,3ds max的使用率更是占据了绝对的优势。根据不同行业的应用特点对3ds max的掌握程度也有不同的要求。它要求技术人员的三维空间感要很强,二维空间基础要很熟悉,并且对软件本身大多数的操作命令的熟悉掌握。3ds max本身不仅功能强大,扩展性好,而且操作简单,容易上手。最强大的是它针对各种不同需求开发了丰富的功能性插件,让技术人员各取所需。并且它有着很多与其他三维或者二维软件配合的接口,令你更加方便地制作。做出来的效果逼真程度更是其他三维软件所无法比拟的!几乎从零开始开发的3ds max,如今已经在很多领域都得到了认可,它算得上是三维动画开发软件中崛起的珠穆拉马蜂!图2-1 3ds max 2012软件界面2.2 角色建模 在三维游戏动画中,最重要也是最基本的就是角色建模。它决定着一套动画的风格还有动作的幅度大小,顺畅度以及美观度。顾名思义,角色建模就是一个游戏角色的模型的创建。在平面中,我们可以用笔,手绘板甚至鼠标画出我们想要的东西,但三维建模完全把这种传统的二维手工绘画给立体化了!如果说二维手工就是在平面上画一只飞机,则三维建模可以说是直接拿纸折出一只飞机。在说如何实现角色建模之前,我们要先知道,建模是一个过程,是从一个简单的box拓扑成一个复杂的人体模型的过程!就如同雕塑师把一块石头雕塑成一个复杂的艺术品一样!在3ds max里面,建模实现的方法有三种:polygon(多边形建模):相对简单、灵活,易拓扑和展uv;nurbs(非均匀有理b样条曲面建模):高精度、平滑的表面,多用于电影级别的模型;subdivision (细分建模):分层次制作细节。三者都可以通过特定程序互相转化。总的来说原理还是一样的。所以,建模是一个很简单,很容易学的过程。然而很少人能够创建出一个好的模型。这是因为建模不仅仅是依靠技术,还需要有强大的三维空间感和模型角色的设计想象力!而这些都是在三维建模的漫漫长路中逐渐摸索出来的灵感!在实际的游戏项目中,一个游戏策划必须先确定好游戏人物角色的风格,是写实还是卡通。还必须确定好人物的体型特征,这些都是为做好一个符合游戏风格和背景的游戏角色,也是为建模做好理念铺垫!图2-2所示为本人所想象的怪物独角兽模型!总而言之,建模是一个既简单又需要耐心的过程!而这个过程,就是让一个简单的立方体扩展出很多复杂却有规则的线,让每一个顶点都顺着每一个条线,让每一条线都有着它的作用来约束一个你想要的形体,构成一个复杂的具有三维立体感的人物角色模型。 图2-2 独角兽三维模型2.3 角色骨骼绑定与蒙皮 一个动画的好坏还要看你的角色在动画的某个动作或者某一帧的静止状态中会不会因为模型运动的动作幅度导致模型的顶点的移位甚至塌陷!每个人都知道,我们人体或者动物的肢体运动都是由于大脑神经驱动人体肌肉带动骨骼的运动形成的!骨骼可以说是人体运动最重要最直接的一种构造!而在三维模型上,为了使人物角色模型能够运动形成一套运动动画,我们同理可以认识到,模型也需要一副骨骼来完成它的运动规律!三维软件3ds max从2005版本开始,已经拥有了一套基本完善的模型骨骼系统!随着版本的更新与技术的发展,现在max最新的版本2012已经拥有很多套包括人体,哺乳动作,爬行动作甚至节肢动物的骨骼造型,并且骨骼的运动规律更加逼真,整套骨骼系统非常完善!如图2-3、2-4所示,这为三维动画的制作带来了更为方便的助手!所以,角色骨骼的绑定在一套动画中所占的重要比列也是非常高的,也可以说它是一套动画实现的直接步骤之一!和建模一样,骨骼绑定也是一个过程,是一个在骨骼系统中创建出一幅完美的骨架与模型在位置,大小,角度上的匹配!这一个过程为了方便,也为了不使做好的模型不小心被选中导致移位,通常可以将做好的模型冻结,这样就可以在骨骼匹配的过程中避免选中模型。绑定好骨骼,接下来就是蒙皮了!蒙皮是什么样的一个过程?如图2-5所示,在这一节开头的第一句话已经诠释了蒙皮的重要性!它就是一个让模型身上的每一个顶点的权重值匹配到骨骼上,让模型上的每一个顶点可以随着骨骼的运动而跟着运动,从而达到一整个模型跟着骨骼运动的效果!听着简单,可蒙皮却是一整套动画流程中最繁琐的一个过程!由于模型身体上每一个顶点的位置不同,赋予每一节骨骼的权重值也会有不同,这使得技术人员需要耐心和细心地去匹配好每一个顶点的权重值。如果因为某些顶点的权重值分配得不够好,不能够像预期一样跟着骨骼运动甚至没有收到该有的骨骼的约束,这时就会出现我上述所说的塌陷或者移位的问题,这不仅直接影响了模型动画的美观度,还约束了模型在运动幅度上的大小,导致无法做到预期的动画效果!所以,蒙皮是一个不断调试并且不断测试的过程,要得到一个好的动画效果,就必须要有耐心去做好蒙皮这一步!图2-3 cat对象骨骼图2-4 独角兽的骨骼绑定图2-5 独角兽的蒙皮2.4 关键帧动画 首先,在讨论动画之前,需要了解动画控制项。这些动画控制项统称为“时间控制”。在三维软件3ds max中,时间控制是一项很重要的工具,它们为制作动画提供的很多简便的方法。在制作动画的过程中,这些动画控制项都是通过不同的方法来调节动画的关键点,这些点就是我们所说的关键帧。 关键帧是控制一整套动画的关键所在,它是动画在某个时间段的静态动作的表现(如图2-6、图2-7所示),而这些一连串的静态动作所构成的就是动画。在通过一系列之前所说的建模、绑骨、蒙皮以及赋予材质之后,动画在根据故事原稿,风格或者人为的相关要求之下,为需要动画的每一个模型物体制作动画。在制作动画的过程中,你同样需要耐心而且细心地去一遍又一遍的调试你所做的动画,调节每一个关键帧的位置或者某一部分物体关键帧的位置,使得整套动画看起来顺畅,逼真。 三维动画软件在计算机中首先建立一个虚拟的世界,设计师在这个虚拟的三维世界中按照要表现的对象的形状尺寸建立模型以及场景,再根据要求设定模型的运动轨迹、虚拟摄影机的运动和其它动画参数,最后按要求为模型赋上特定的材质,并打上灯光。当这一切完成后就可以让计算机自动运算,生成最后的画面。在这一连串的过程中,计算机的自动运算可以为制作动画节省很多的时间,可往往我们却不能去依赖这种自动运算,因为计算机再智能也是死的,所谓的自动运算就是从某一关键帧的动画开始每一个部位的关键点自动恢复到下一关键帧物体所在位置以及动作。真正的动画设计师必须依靠自身的想象力与自然运动学来定义模型的动画。当然,在某种特定的情况下,也允许使用这种计算的自动运算效果。 三维动画甩开了二维动画以手绘为核心的传统,却又对二维图形基础需要很大的认知。相对于传统的二维动画,三维动画能够丰富地表现出动画想要的效果,无论是质感,色彩层次感,动画流畅度,还是一些特效精彩镜头的表现,三维动画依靠强大的技术特点一一为我们所实现。图2-6 独角兽某一帧的静态动作图2-7 独角兽某一帧的静态动作3 maxscript脚本程序3.1 maxscript 简介 maxscript语言是为了扩展3ds max功能而专门设计的一种内置在3ds max中的一个脚本语言,是面向对象编程语言中的一种。在max开发出2.0版本之后开始加入的一个功能。它就像一个软件内置的程序语言,几乎能够编写出3ds max中的所有功能。它也能使用在于3ds max相关的产品中,比如autodesk viz和gmax脚本程序中。它可以使用一个开放式界面来自定义和编写3ds max脚本。基本上可以实现max里面的建模,动画,材质和渲染等功能模块。反过来也就是说,3ds max如此强大的功能背后是通过调用maxscript脚本程序语言来实现的。技术开发人员可以通过轻松扩展用户自定义界面和自动化操作后执行批处理。而且它还为用户提供了一个智能界面,方便并且简化了脚本工作流程。也就是说,用maxscript脚本程序语言可以重新编写出一边3ds max的所有内置功能,并且可以实现免鼠标的流程操作!在3ds max软件界面中,可以看到左下角有一个迷你侦听器,或者打开命令面板上的工具命令面板,我们就可以看到有一个为maxscript的命令面板,点击进去之后进去一个界面,这个界面就是脚本侦听器,也是我们编写maxscript脚本语言的用户界面。脚本侦听器可以实时的执行maxscript语言的功能语句,在侦听器界面的左上角点击new script可以重新编写新脚本命令,并且确定后敲键盘回车键可以实时执行你所写下的脚本语句中的功能。 maxscript可以运用各种数学工具来完成高级复杂的程序设计任务。可以对含有大量对象的集合进行操作。例如在复杂的场景中选择物体,可以把大量物体放置在精确的位置上,例如在山或路边放置一些树木,使用maxscript操作起来是非常的方便。它也能将一些功能定义为界面元素,例如工具栏按钮、菜单、浮动窗口,程序面板卷帘窗;可以建行批处理操作提高工作效率,例如建立一次可以渲染多个场景文件的脚本程序; 可以自定义输入输出工具,可以定义修改器,渲染效果插件等。3.2 maxscript 基本操作3.2.1 基本界面操作 在我们进行一系列的创建对象的操作之前,我们必须了解maxscript脚本程序的用户编辑界面的所有功能模块与操作。一个完整的maxscript界面应该包括:maxscript卷帘窗,脚本监听器窗口,脚本编辑窗口。 maxscript卷帘窗:单击命令面板中的按钮,打开应用程序面板,再单击maxscript按钮,在应用程序面板中就会出现一个窗口,这个窗口就是maxscript卷帘窗。 脚本侦听器窗口:图3-8所示,脚本侦听器又叫脚本跟踪器,单击maxscript卷帘窗中的open listener按钮,我们已经知道可选择菜单栏中的maxscriptmaxscript listener 命令,快捷键f11。也可右击用户界面左下角的mini-listener(迷你监听器)打开脚本侦听器窗口,脚本侦听器窗口是一个命令编辑和执行窗口,它由两部分组成,上半部分为宏记录窗口,下半部分为脚本运行结果输出窗口。在运行脚本程序的时后,脚本监听器窗口会输出脚本的运行结果,运行正确就显示为蓝色,运行错误就显示为红色。在窗口中可以编写新的脚本语言或对已有的脚本语言进行修改,用户输入的脚本显示为黑色。选择主菜单中的宏记录macro recorderenable命令,如果此时进行操作,在窗口中淡红色部分将记录所进行的操作,这就是宏记录,选择菜单栏中的filesave as 命令可以将记录保存为一个脚本。脚本编辑窗口:单击maxscript卷帘窗中的new listener按钮,或者选择菜单中的 maxscriptnew script命令就可以打开脚本编辑窗口,它是一个文本编辑窗口,你能在3ds max内部打开、创建或者编辑扩展名为*.ms、*.txt和*.dat格式的文本文件。调试文件时大键盘中的回车键与在记事本中的用法一样的,用来换行,当鼠标光标出现在某一行时,敲一下小键盘区的回车键,就可以执行本行程序。如果选择多行程序,敲下小键盘区的回车键,可以执行选择被选择的程序。按住鼠标左键不放,把选择的一行或者多行程序拖到3dsmax工具栏里,将生成一个宏脚本按钮,单击此按钮,就可以运行这个宏脚本。在脚本编辑窗口或脚本监听器窗口里调用edit()函数,可以打开脚本编辑窗口,语法是:edit 脚本文件名称 。例如打开 effect.ms 文件:输入 edit effect.ms ,运行就可以打开这个脚本文件。图3-1 maxscript脚本侦听器3.2.2 创建和操作简单的对象把相同的对象归类到具有相似特征的类之中,类与类之间如果还有相似的地方,那么就把这些归纳到更高层次的类中,例如把植物类和动物类归纳到生物类。面向对象编程中类和对象的概念就是试图对上述这些比较符合人类认识规律的概念进行描述。首先,我们来看看如何创建一个简单的对象。选择菜单中的 maxscriptnew scrip 命令打开脚本编辑窗口,如果想调试程序,跟踪程序执行结果,也可以把脚本监听器窗口打开,输入: box length:100 width:100 height:2 sphere radius:10 segments:16 按ctrl+e键或者选择脚本编辑窗口菜单中的file/evaluate all命令执行程序,还可以用鼠标全部选定,敲小键盘上的回车键执行程序。结果创建了一个盒子和一个球体。现在单击工具栏按名字选择对象按钮,在弹出的对话框中会出现这个盒子的名字“box01”和球体的名字“sphere01”,这是默认的名字。box length:100 width:100 height:2 这一行代码是一个box构造器,它创建了一个长度为100、宽度为100、高度为2的box。 什么是构造器?在maxscript帮助中常常看到constructor这个单词,中文意思就是构造器。但是帮助中只是说明构造创建对象的语法,但并没有专门的内容来说明构造器这个概念。我把它归纳如下:在maxscript中创建对象的语法就叫作构造器,其实质就是调用函数来创建对象,所以可以把它看作是一个函数调用,也可以说是用一个抽象的类产生一个具体的对象。这个函数的名称就是基类的名称,所谓基类就是不能再分的类。我们创建对象都是从基类开始的。box就是个基类,它的上一级就是几何类,再上一级就是节点。如果学过java,那么知道创建一个box对象的语法是: box box01=new box() ; 可maxscript简化了这一过程,只需输入box()就可以构造一个box,并且不分大小写,分号都可以不用注意。当我们手工单击创建面板中的box按钮,然后在视窗中完成一个长度为100、宽度为100、高度为2的box时,在程序内部就调用了box()函数,就是把我们在界面中的操作转换成了box length:100 width:100 height:2 这行内部代码。构造器由两部分组成,基类名和创建参数。整个构造器就是一个函数调用 ,函数名 box就是基类的名字。创建参数由参数名后跟一个冒号:和参数值组成。如果调用函数没有输入任何参数,那么必须在类名后加上一对英文()括号,例如box(),将创建缺省参数的盒子。知道构造器原理后就知道怎么创建其它的对象了, 例如创建球体,输入 sphere radius:10 就可以了。3.2.3 创建和操作具有复杂关系的对象 明白了如何用maxscript脚本程序去创建一个简单的对象box之后,我们来进一步认识它是如何创建具有复杂关系的对象。 不管是四时花草树木,八方飞鸟走兽,无论是静止着的、运动着的,哪怕是无序的事物,都存在有一定的内在关系,要实现复杂的程序,首先要掌握数据的表现方法,在maxscript脚本程序中用常量和变量来表现。现实生活中有些事物是相对固定的,有些则是经常变化的。就拿人来说吧,人的性别是不变的,年龄是每过一年就增加一岁;拿我们用的电脑硬盘来说,总容量是不变的,但可用磁盘空间经常是变化的。在maxscript中,把那些不能改变的量称为常量(literal constants,字面常量,简称常量),可以变化的量称为变量(variables)。例如15,“hello”等,从字面上一看就知道这些值是不能改变的,所以把常量又叫做字面常量。比如李四的银行存款 , 建行的是20000元,输入 money1=20000 ;工行的是36000,输入 money2=36000;那么用money表示李四这两个银行存款的总和就是money = money1+ money1。而变量就像一个容器,可以存储不同类型的数据。数目,字符串,数组,对象都可以存放在变量中。 现在就来详细解说变量。在程序运行期间,系统会在内存中为程序分配一块内存单元,用来存储各种不同类型的数据。而想访问这个内存单元,就要使用一个标识符来标识它,就像你到单位去找一个人一样,先要告诉这个人的名字。这个标识符就是变量名,内存单元中装载的数据就是变量值。程序可以通过变量名来读取数据。把数据放到内存中就是为变量赋值,是赋值符号。我们把上面的写在一块,如下: money1=20000 money2=36000 money= money1+ money2 当程序运行第一句代码时,分配一块内存,用money1作为这块内存的变量名,然后把2000装入这块内存中作为变量的值,第二句同上,运行到第三句时,分配一块内存,取名为money,程序取出money1和 money2中的数据让它们相加 ,把相加的结果56000装入名为money的内存单元中。 现在回忆一下以前是如何改变对象属性的。例如前面提到改变box01的长度,语法是 $box01.length20,这和给变量赋值的语法是一样的。从这里可以看出,对象的属性实质上也是一个变量,只因为是对象特有的变量,就称为属性了,访问变量直接用变量名,访问属性要在属性名前加上对象名,中间用一个小数点隔开,称为点语法,这就是变量和属性的关系。既然可以把一个变量分配给另外一个变量,就可以把一个对象的属性分配给一个变量,也可以把一个变量分配给一个对象的属性,还可以把一个对象的属性分配给另外一个对象的属性,有的人把它称为双词模式。把整个对象分配给一个变量,以后访问时更加方便,这也是允许的。举例如下: height=50 mybox=box length:20 width:20 height:height zpos=mybox.height+10 mysphere=sphere radius:10 pos:0,0,zpos 第二句中height:height是把变量height分配给这个box的height属性,第三句是算出z轴的坐标,准备分配给后面要产生的球体的z轴坐标,第四句pos:0,0,zpos是把变量zpos的值分配给球体的z轴。这就从简单的对象基础上出现了两层或者两层以上的数据关系,使得对象的创建具有一定的关系复杂性。 我们知道了如何创建这些具有复杂关系的几何体或者模型之后,我们可以发现,每一个模型都是由一个又一个具有复杂关系的box来组成,然而当一个模型多达几百甚至几千几万个面片的时候,我们很难去把握每一个box之间的关系。这时候我们可以引用数组或者集合的方式对它们进行归类然后有规律地命名。比如,先创建几个对象,输入: b01=box pos:-50,-50,0 b02=box pos:50,-50,0 sp01=sphere pos:0,0,0 sp02=sphere pos:50,50,0 sp03=sphere pos:50,50,0 下面的代码创建一个名字为盒子集的选择集,它包含有刚才创建的两个box:selectionsets盒子集=$box*; 下面的代码创建一个名字为球体集的选择集,它包含有刚才创建的两个sphere:selectionsets球体集=$sphere*; 在工具栏中点击命名选择集按钮,可以看到刚才创建的选择集,输入selectionsets盒子集1,访问第一个元素,结果返回: $box:box01 -50.000000,-50.000000,0.000000 输入move selectionsets球体集 0,20,0,整个“球体集”向y轴移动了20。 在使用maxscript 时有许多值都是一系列的集合,很明显的有数组、 通配符路径名选择集,内置对象集。集合不用你特意去指定,它是系统自动完成的。例如我们现在用下面的代码创建一些对象: box() box pos:60,0,0 box pos:-60,0,0 sphere pos:0,70,0 omnilight pos:0,-100,150 circle() 既然是自动完成的,那我们就直接访问了。访问场景中的对象可以使用路径名,前面讲过用路径名,访问单个对象用美元符号$加上对象的名字就可以了,但如果要把刚才创建的三个box一起向y轴移动100,应该怎么办呢?使用带有通配符的路径名: $box*.pos.y=100; $box* 表示场景中所有以box开头的对象,*表示任意个字符。如果把那三个box和一个球体一起操作呢?它们都是内置几何体对象集: select geometry -选择所有的几何 体 geometry.pos=0,0,0-把所有的几何体移动到时原点 选择所有的对象,下面提供有两种方式: select $* -以路径名的方式选择所有的对象 select objects -以内置对象集的方式选择所有的对象 下面把内置对象集列出,以供参考: 对象集 (objectset) 对象集是描述主场景对象种类的。 objects - 全部对象 geometry - 标准的 3ds max 分类(categorie) lights-灯光 cameras-摄像机 helpers-帮助物体 shapes-二维形状 systems-系统对象 spacewarps-空间扭曲 selection - 当前选择的对象 我们接着上面的内容进行操作: 输入selectionsets盒子集.center 返回盒子集中心 0,-50,12.5; 输入selectionsets球体集.count 返回球体集总数3; 输入selectionsets盒子集.max 返回盒子集最大范围62.5,-37.5,25; 输入selectionsets盒子集.min返回盒子集最小范围-62.5,-62.5,0;这四个属性适用于对象集(objectset) ,路径名(pathname)、选择集(selectionset)等集合,从数组、对象集、路径名、选择集等之间的定义可以知道,它们都是存放的数据,这些数据类型可以是数目,字符串,也可以是对象,这和变量是一样的用途,这么说来,它们的实质是变量的集合,因此把它们统称为集合(collections)。集合中的每一个元素都是一个变量,所以访问集合中的元素可以像访问数组中的元素一样来访问,对于数组中的每一个元素可以像对待变量一样。输入: box(); sphere();然后选择它们,再输入: selection1;监听器窗口中会返回第一个元素的路径名和位置。3.3 maxscript操作流程3.3.1 创建对象 经过之前的介绍,我们可以知道,只需要打开maxscript脚本侦听器窗口,我们就可以在此输入我们要创建的对象的脚本程序语句,就可以在max创建界面中创建出想要的对象。比如我们要一个长度为100、宽度为100、高度为2的box,我们可以输入以下代码: box length:100 width:100 height:2这一段代码完整表示出了一个长100、宽100、高度为2的box。同理,我们根据这样的语句规格可以创建出一些其他的几何体,比如一个球: sphere radius:10 表示半径为10的一个球体。这说明我们说所的创建对象只需把想要创建的对象和创建条件按照这样的规格写下,就可以创建任何简单的对象。创建了盒子和球体对象之后,我们想知道刚才的长度、宽度等参数是否正确,就要访问对象的属性。诸如长度、宽度、名字、线框颜色半径等等对象所具有的特性统统称为对象的属性(properties)。访问对象属性的语法是由对象的路径名(pathname)后跟小数点.和属性名组成,路径名由美元符号$后跟对象在场景中的名称组成,$表示当前场景。例如访问box01的长度,输入: $box01.length ,在脚本跟踪器窗口中返回100.0,访问sphere01的半径,输入: $sphere01.radius 返回 10.0 。改变sphere01的线框颜色,输入: $sphere01.wirecolor=blue 或者输入:$sphere01.wirecolor= (color 0 0 255) 都一样。 同理,要改变属性只需给这些属性赋值。 输入$box01.length20,box01的长度变成20。我们以前数学里的等号在maxscript中只能当作赋值符号用了。值的数据类型有几种,现在简单介绍几个典型的不同数据类型,它们是数字,字符串,数组。数字:maxscript区分两个数目类型:integers(整型)和floats(浮点型)。整型就是整数,例如0、1、802。浮点型就是小数,如期而至0.2、25.02、0.68。当maxscript执行数字操作时返回和运算参数相同的类型。例如4+5返回9、而4.0+5.0返回9.0。字符串:字符串是一个常量,需用引号标识。输入hello,maxscript返回hello。如果输入时没有加引号则返回undefined未定义。数组:数组是一些有序的元素的集合。每个元素可以是任何类型的值,并且所有的元素都可以单独的访问。一个数组可以有两种表现形式,第一种是:#(),这是一个空数组,数组定义必须用一个数目符号#和一对括号( )组成,括号里面是数组的元素名,元素可以为一到多个,多个元素之间用逗号分开,例如,#(1,“hello”,3.14159)。想要初始化数组中的元素的时候数组有适当的形式,每一个元素的值可以是数值,一个表达式(例如、30*2),或者是一个字符串(例如,“hello”),元素的名称是不能有同名,而且元素的数目没有限制。关于数组的具体操作,以后的例子中会涉及,这里只作个简单的介绍。输入命令 #(100,hello,pi) ,maxscript返回 #(100, hello, 3.14159)。那么我们怎么可以获取更多的创建参数呢?方法有两种:其一是在创建面板中找到对应的创建参数名,创建好的对象也可以在修改器面板中找到创建参数。其二,根据属性来,因为创建参数实质就是根据对象的属性而定的,没有这个属性就不可能有这个创建参数。显示对象的属性的函数是: showproperties( ),输入 showproperties $box01; 结果在脚本监听器窗口中返回以小数点开头属性名称,冒号后面是值的类型。 其它修改对象的方法还有:select 选择对象、deselect 取消选择、delete 删除对象、hide 隐藏对象,unhide 取消隐藏、freeze 冻结、 unfreeze 取消冻结。例如: select $box01-选择box01 deselect $box01-取消选择box01 delete $* -删除场景中所有对象3.3.2 选择对象 其实在max界面上,我们只需要按住鼠标左键框住想要的对象就可以选择到你想要的对象。这里说的是广义上的选择,即操作指定的对象。以前要改变场景中的对象,首先要选择这个对象。在maxscript中可以在对象没有被选中的情况下改变对象。这要综合运用前面讲到的路径名,选择集,内置对象集,流程控件等等。首先,我们先来遍历选择集:先随便创建几个对象,然后选择它们,例如输入: box() box() sphere() cylinder() sphere()先用手工把它们全部选择,此时这些被选择的对象被称为选择(selection),这是对象集之一。输入下面的代码进行遍历选择的第一个对象,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论