1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Pv3D-4.材质

4 Materials 材质 (让一个不懂英语的人来翻译这部好书,真费神啊,此书的作者英语写作功底何等了得,到处都是从句,oh my god!终于结束了)。 这一章中我们学习材质以及材质是怎么贴到3D物体上去的。有大量的可用的材质类型。从简单的图像到可以与鼠标交互的影片剪辑(MovieClip)和视频流都可以用做素材。每个类型都有些“偏门”,所以都饱受褒贬。所以多所有的材质深入了解才能让你选择材质时做出更好的选择。 这章主要论述以下主题: 介绍材质 相框材质和颜色材质(简单材质) 装载位图作为材质的方法 使用影片剪辑材质的方法 视屏流材质 混合材质 物体和材质的交互性 使用材质的注意点和技巧 例子:创建一个旋转木马效果 介绍材质 材质就是物体的纹理。如果物体上不填上材质,在场景中就看不到这个物体。给物体选择合适的材质可以让简单的物体看上去很真实和有趣。 纹理和材质的区别在于纹理是被用作材质的图像源。材质可以修改属性从而影响纹理贴到物体上的效果,你也可以这样理解材质,就是扩充了的纹理。 在我们介绍每一种材质前,我们将先来检查下材质是如何产生效果的。在PV3D中,材质有些争议。,了解了他们的如何产生效果可以帮助我们解决对他们的争议。 基本属性: 所有的材质继承自一个特殊的基础材质类叫做MaterialObject3D。这个基础类有一些所有子材质类通用的属性,但是某些属性只对某些特殊材质类型起作用。比如可以控制材质平铺的属性就不能用于简单颜色材质,材质平铺是指用一副图在纵向或者横向重复放置的效果。在介绍每一种材质前我们先来介绍对于所有材质都有用的三个属性: 双面和单面贴图 反面贴图 光滑度 当我们设置材质对象的doubleSided属性为true时,我们将对构成物体的三角面两面都可见。什么意思呢?比如对于一个plane对象,就是正面和反面也能看到贴图材质;如果对于一个球体或者长方体就是里面和外面都能看到贴图材质,设置方法如下,用哪种无所谓。 material.doubleSided = true; 或者 material.oneSide = false; 默认的一个3D物体的面会被实现定义为前面和后面(正面和反面),而材质也默认贴在物体的前面(正面)。但是有时候我们只需要贴在后面(反面),这怎么办呢?比如对球体贴图,默认的是贴在外面,如果我们只要要在球体的内侧贴图呢?贴两面肯定会多增加cpu负担,这时候我们就可以将opposite属性设置成true就ok了。 material.opposite = true; opposite:相反 由于3D透视算法对材质的变形和缩放,材质会变得像素化。改变材质的光滑度属性可以解决这个问题。 material.smooth = true; smooth:光滑 遗憾的是,光滑处理会影响到性能。所以在启用这个属性的时候请斟酌下。再接下来的章节中我们会介绍到位图材质(BitmapMaterial)的光滑度属性。第13章,我们来谈谈优化性能的技巧。 基础材质 有两种类型的基础材质: 线框材质 颜色材质 我们把他们归于基础材质是因为他们在实际项目中很少使用。其他的材质提供了更多的功能,并且在做一些模拟现实世界的项目中更加有用。讨论完了这两种材质我们就来介绍他们。 线框材质 到目前为止出现在例子中的物体我们用的都是线框材质,这是PV3D的默认材质。它在3D物体的所有的三角面之间都画上线条,形成一个看上去由三角形网格连起来的物体。在调试时期用的比较多因为它可以实时展示三角面是如何画出来的。虽然听起来它像一个轻量级的材质,实际上渲染起来还是很吃力的。因为它是用flash内置的画线方法来绘制的,而这个过程是比较费时的。 线框材质默认的被使用在PV3D内置3D模型上(如飞机 球等)的创建过程中,然而,我们仍然可以手工创建线框材质。让我们创建一个叫WireframeMaterialExample的项目,手工定义材质。 我们先导入相框材质类。像大多数材质一样线框材质放在org.papervision3d.materials包中。在类的顶部加入以下两行: import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.objects.primitives.Cone; 在你的项目中,内嵌一个材质类型的局部变量来代替类属性可能会出一些问题,所以将它定义成类属性。当一个材质被定义成内嵌的,你将它指向一个对象,那么以后再也不会用到它了(译者注:因为指向这个材质的变量你无法访问,所以建议你将材质类型的变量申明成类属性,以提高材质的复用性)。如果定义成了类属性,你以后还想想调用这个材质,你就可以使用对象的material属性,并且转变成

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档