- 1、本文档共32页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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属性,并且转变成
您可能关注的文档
最近下载
- 全过程造价咨询投资控制目标承诺及保证措施.pdf VIP
- 牛津深圳版五上Unit 9 Around the city 第二课时课件.pptx
- 信息安全数学基础(第二版)裴定一课后习题答案.pdf
- 光电信息科学与工程专业的职业生涯规划 (修正).pptx VIP
- 2022年11月中日友好医院2022年应届毕业生公开招聘(一)笔试参考题库+答案详解.docx
- 三维激光扫描仪使用手册faro scene lt.pdf
- 名著阅读《西游记》练习试题(含答案).pdf VIP
- 华为H12-891 V1.0 HCIE-Datacom认证考试题库资料大全-下(多选、判断题汇总).pdf
- 医学电子书包考试找答案.pdf
- 物业起诉业主不交物业费官司超完美答辩状.doc
文档评论(0)