Away3D是Flash可用的最流行的、最受开发者欢迎的实时3D引擎,它可创建多种3D应用程序,包括可视的精细3D环境,显示3D动画模型,建立3D文本,还有大量的3D特殊效果显示。利用Away3D和少量的ActionScript代码,给开发者提供了无穷的创意空间。 本书将引导你学习Away3D中各种可用的功能,这些特性对Flash平台是完全开放的,通过书中的实例和一些实用的技巧,你可以很快建立并运行一个用Away3D编写的应用程序。 本书从最基本的要素开始,通过下载 Away3D的源代码,教会你在很多程序编写工具如Flex Builder,Flash Builder,FlashDevelop和Flash CS4里使用Away3D来创建你的第一个Away3D的应用程序。接下来,你可以很容易地从零开始创建第一个原始3D 对象,然后,逐步教你建立非常好的、具有精细纹理和动画效果的3D环境。你还将学会如何使应用程序响应用户的请求,学会使照相机聚焦的方法,以及从任意的视角观察场景。同时,还会教你很多的优化技术,使应用程序获得在Away3D里有最好的运行性能,而不会降低视觉效果,使应用程序提升到一个新的级别。
本书从显示一个球开始,到创建一个完整的3D城市,逐步教你必须掌握的编程步骤、编程技术和大量的技巧,使你避免犯常见错误。
原书序
Away3D是Flash可用的最流行的、最受开发者欢迎的实时3D引擎,它可创建多种3D应用程序,包括可视的精细3D环境,显示3D动画模型,建立3D文本,还有大量的3D特殊效果显示。利用Away3D和少量的ActionScript代码,给开发者提供了无穷的创意空间。
本书将引导你学习Away3D中各种可用的功能,这些特性对Flash平台是完全开放的,通过书中的实例和一些实用的技巧,你可以很快建立并运行一个用Away3D编写的应用程序。
本书从最基本的要素开始,通过下载 Away3D的源代码,教会你在很多程序编写工具如Flex Builder,Flash Builder,FlashDevelop和Flash CS4里使用Away3D来创建你的第一个Away3D的应用程序。接下来,你可以很容易地从零开始创建第一个原始3D 对象,然后,逐步教你建立非常好的、具有精细纹理和动画效果的3D环境。你还将学会如何使应用程序响应用户的请求,学会使照相机聚焦的方法,以及从任意的视角观察场景。同时,还会教你很多的优化技术,使应用程序获得在Away3D里有最好的运行性能,而不会降低视觉效果,使应用程序提升到一个新的级别。
本书从显示一个球开始,到创建一个完整的3D城市,逐步教你必须掌握的编程步骤、编程技术和大量的技巧,使你避免犯常见错误。
本书包含的内容:
第1章,搭建第一个Away3D应用程序,教你如何在各种不同的集成开发环境(IDEs、Flex Builder、Flash Builder、FlashDevelop和 FlashCS4)里,搭建第一个Away3D的应用程序。
第2章,建立并显示原始3D模型,在这一章你将浏览Away3D里的各种有用的原始对象。
第3章,移动对象,教你如何在场景里直接移动、旋转、缩放3D对象,或者通过缓动库来进行。
第4章,Z排序,探索能用的景深排序技巧以及在Away3D程序里出现的渲染问题。
第5章,材质,带你进入到Away3D里,查看它包含的各种材质,从显示单色的材质到Pixel Bender的高级材质,此外本章还将讲述光源的知识。
第6章,模型和动画,你将学会如何载入和显示用其他3D建模软件创建的静态3D模型及其动画效果。
第7章,照相机,显示那些影响场景效果的各个属性,展示Away3D里的各种照相机类,它们使你能够追踪和查看场景里的3D对象。
第8章,鼠标交互,你会学到如何响应鼠标的请求,建立交互的应用程序。
第9章,使用精灵的特殊效果,本章展示了各种各样的特殊效果,包括如何与Stardust粒子引擎集成。
第10章,建立3D文本,本章将讲述如何创建和管理3D文本。
第11章,突显法和修改工具,本章将讲述如何直接使用Away3D创建复杂的3D对象,而不使用其他3D建模软件。
第12章,过滤器和后继处理效果,本章讲述如何在Away3D应用程序里添加振奋人心的效果。
第13章,Away3D的运行技巧,教你如何优化Away3D应用程序,使你能创建维持高级别的运行环境。
这本书可以为你提供:
希望建立能参与性与交互性强、引人注目的网站或吸引人的3D游戏的人都会欣赏Away3D的强大功能,本书提供了如何利用这些功能的所有资料和信息。你需要做的工作是通过互联网来下载Away3D和诸如Flex/Flash Builder、Flash CS4或者Flash Develop这样的ActionScript集成开发环境,这些软件都是免费下载使用的。
这本书面向的对象:
这本书是为那些希望在Flash中使用Away3D引擎创建3D应用的初学者和经验丰富的Flash开发人员而写的。无论你是Away3D的初次使用者还是经验丰富的开发者,这本书都将为你进一步学习Flash提供一个坚实的基础,同时这本书也可以作为已经熟悉Away3D的Flash 开发人员的参考指南。
相关约定:
在本书中你可以发现很多风格的文本区分不同类型的信息,下面列举了一些文本风格及其含义的解释。
文本中的代码词显示如下:
“通过扩展Away3Dtemplate类,我们可以用SphereDemo类和少量的几行代码就可以创建一个简单的3D应用程序。”
代码段建立如下:
import away3d.core.base.Object3D;
import away3d.primitives.Cone;
import away3d. primitives.Cube;
import away3d. primitives.Cylinder;
import away3d. primitives.GeodesicSphere;
新的术语和重要的词都加粗显示了。例如在屏幕、菜单或对话框里显示的文本: “在Flex/Flash Bulider和Flash CS4中将TweenLite库添加到Source path,或者在FlashDevelop中添加到Project Classpaths.”
读者反馈意见:
本书深受读者欢迎,让我们了解你对本书的看法——无论是喜欢本书还是不喜欢本书。读者的反馈意见是非常重要的,因为这样有助于我们对读者真正需要的主题进行改进。
请把反馈意见发到电子邮箱: feedback@packtpub.com,并在邮件的主题中注明书名。
如果您有需要的书并希望我们出版,请在网站http://www.packtpub.com 的SUGGEST A TITLE中给予提醒或者给我们发邮件: suggest@packtpub.com。
如果有你专业领域的主题,你有兴趣出版或参编相关的书,也可以通过http://www.packtpub.com/authors查看作者指南。
消费者支持:
现在你是Packt出版社的尊贵主人,我们为你的书籍消费提供了最大帮助。
下载本书的例程代码
你可以通过你的账号从http://www.packtpub.com购买Packt出版社的书籍并下载相应的例程源码。如果你在别处购买的Packt出版社的书籍,可以访问http://www.packtpub.com/support并注册, 我们将把例程源码文件直接发电子邮件给你。
错误之处:
尽管我们十分仔细认真以保证我们内容的正确性,但错误还是难以避免。如果你在我们的书中发现一个错误——无论是文本错误还是代码错误——如果你愿意告知我们,我们将十分感激。这样,你可以帮助其他读者,也有助于帮助我们改进这本书的后续版本。如果你发现书中的任何错误,可以访问http://www.packtpub.com/support,选择该书,单击链接“errata submission form”,输入错误的详细描述,报告这些错误。一旦你提交的错误通过审核,你的提交将被接受并上传到我们的网站,或被增加到Errata的已有错误列表中。从http://www.packtpub.com/support可以查看你选中书目的所有错误。
版权声明:
对所有媒体而言,互联网上的版权材料的盗版是一个持续存在的问题。在Packt,我们非常认真地对待版权和著作权的保护。如果你在互联网上遇到以任何形式非法拷贝我们的著作,请立即为我们提供地址或网站,这样我们可以采取补救措施。
请将可疑盗版资料的地址发给我们: coptright@packtpub.com。
我们十分感激你为保护我们作者所提供的帮助,我们将尽力为你提供有价值的内容。
问题:
如果你对本书的任何内容有疑问的话请联系我们: question@packtpub.com,我们将尽力解决这个问题。
译者序
当前,国内在很多地方投入了大量的人力、物力和财力,开发基于互联网的三维动漫游戏、工业产品展示、实时模拟教学等。然而却缺少一本专业的、教读者如何编写开发三维动漫程序的书。为此作者编译了本书,以期推动3D动漫的教学、研究和开发。
读者在阅读本书之前,最好学习过Java,MyEclipse, Flash,3D Max和“计算机图形学”这些前期课程。没有学也没关系,跟着本书的讲解,照着例子练习,一样可以学会Away3D编程。
在此书的编译过程中,得到了实践经验丰富的黄传贤教授、伍宁工程师的精心指正和帮助,邓盾同学也协助编者对书中的部分例程进行编排和调试,本书的出版受到了国家自然科学基金项目(61103085)资助,并由武汉纺织大学学术著作出版基金资助出版,在此一并感谢。
本书各章讲解的所有例子均在Flash Builder 4.0和Away3D 4.0的环境下调试且成功运行过。
由于编译者水平所限,书中内容难免有不对之处,敬希读者指教,以便再版时改正。
胡新荣
2014年7月
第1章搭建第一个Away3D应用程序
1.1在FlashPlayer10和FlashPlayer9之间选择适合它的Away3D版本
1.2下载Away3D
1.3下载Away3D的源码压缩ZIP文件
1.4使用版本管理SVN下载Away3D的源码
1.5建立空的Away3D工程项
1.5.1AdobeFlexBuilder或FlashBuilder
1.5.2FlashDevelop
1.5.3AdobeFlashCS4
1.6配置针对FlashPlayer10的运行环境
1.6.1AdobeFlexBuilder和AdobeFlashBuilder
1.6.2FlashDevelop
1.6.3AdobeFlashCS4
1.7建立初始的应用程序
1.8运行Away3DTemplate
1.8.1AdobeFlexBuilder和AdobeFlashBuilder
1.8.2FlashDevelop
1.8.3AdobeFlashCS4
1.8.4最终结果
1.9在一个3D场景中定位对象
1.10继承Away3DTemplate类构建一个场景
1.10.1运行SphereDemo应用程序
1.10.2最终结果
第2章建立并显示原始3D模型
2.1一个3D对象的基本元素
2.1.1顶点
2.1.2三角面
2.1.3Sprite3D精灵
2.1.4段
2.2UV纹理贴图坐标系统
2.3创建原始的3D对象
第3章移动对象
3.1全局坐标、父坐标和局部坐标
3.1.1世界空间
3.1.2父空间
3.1.3局部空间
3.2转换函数/属性及其坐标系统
3.3修改位置
3.3.1x、y和z属性
3.3.2位置属性
3.3.3移动函数
3.3.4moveTo()函数
3.3.5translate()函数
3.3.6修改旋转
3.3.7修改缩放
3.3.8修改转换
3.3.9渐变操作
3.4嵌套
第4章景深排序
4.1画家算法
4.2场景排序
4.3调整排序的顺序
4.3.1前推和后推属性
4.3.2屏幕Z位移属性
4.3.3画布属性
4.4有关Z?排序的说明
4.5附加的渲染器
第5章材质
5.1纹理和材质的区别
5.2资源管理
5.3在Away3D中定义彩色
5.3.1用整数定义色彩
5.3.2用颜色名字的字符串定义色彩
5.4PixelBender
5.5光源和材质
5.6着色技术
5.6.1纹理映射
5.6.2法向贴图
5.6.3环境映射
5.6.4平面着色
5.6.5Phong着色
5.7应用材质
5.8基本材质
5.8.1线色彩材质
5.8.2线框材质
5.8.3彩色材质
5.8.4Bitmap材质
5.8.5动画材质
5.8.6复合材质
5.8.7光源材质
5.8.8PixelBender材质
5.8.9从外部文件载入纹理图
第6章模型和动画
6.1Away3D支持的3D格式
6.2输出3D模型
6.2.1从3dsMax输出模型文件
6.2.2从MilkShape输出模型文件
6.2.3从Sketch?up输出模型
6.2.4从Blender输出模型
6.2.5有关Collada输出器的注意事项
6.3载入3D模型
6.4动画模型
6.4.1MD2载入一个嵌入式文件
6.4.2MD2载入一个外部文件
6.4.3Collada载入一个嵌入式文件
6.4.4Collada载入一个外部文件
6.4.5AS载入转换后的模型
6.5静态模型
6.5.13DS载入嵌入文件
6.5.23DS载入外部文件
6.5.3AWD载入嵌入文件
6.5.4AWD载入外部文件
6.5.5ASE载入嵌入文件
6.5.6ASE载入外部文件
6.5.7OBJ载入嵌入文件
6.5.8OBJ载入外部文件
6.5.9初始化对象的使用问题
6.6把载入的模型转换成ActionScript类
第7章照相机
7.1照相机类的属性
7.2照相机的镜头
7.2.1放大焦距镜头和透视镜头类
7.2.2球面镜头类
7.2.3正交镜头类
7.3照相机类
7.3.1目标照相机
7.3.2旋转照相机
7.3.3跟踪照相机
第8章鼠标互动性
8.1Away3D鼠标事件
8.2ROLL_OVER/ROLL_OUT和MOUSE_OVER/MOUSE_OUT之间
的区别
8.3将鼠标的位置投影到场景
第9章使用精灵的特殊效果
9.1使用Sprite3D类
9.2使用定向精灵类
9.3使用景深精灵类
9.4使用粒子系统
9.4.1建立Away3DStardust初始化程序类
9.4.2建立Away3D星团粒子渲染器
9.4.3建立星团发射器
9.4.4把上面的全部功能集合到一起
第10章建立3D文本
10.1嵌入文字
10.1.1在场景里显示文本
10.1.23D文本材质
10.2突出显示3D文本
10.3弯曲3D文本
第11章突显法和修改工具
11.1使用PathExtrusion类建立标记
11.2使用LinearExtrusion类建立围墙
11.3使用LatheExtrusion类建立花瓶
11.4使用SkinExtrusion类建立地形图
11.5用海拔阅读类读出地形图表面高度
11.6高度映射修改类
第12章过滤器和后继处理效果
12.1Flash和Away3D过滤器
12.1.1Flash过滤器
12.1.2Away3D的过滤器
12.2渲染器会话对象
第13章Away3D的运行技巧
13.1确定当前的帧速度
13.2设置最大的帧速度
13.3设置Flash舞台的质量低一点
13.4减小视口尺寸的大小
13.5缩放视口输出
13.6三角缓存
13.7模型的细节层次
13.8Away3D过滤器
13.8.1Z景深过滤器
13.8.2最大多边形过滤器
13.8.3在后台进行画图
13.9模型格式