加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

pv3d 学习笔记-技巧与总结部分

发布时间:2020-12-15 06:48:47 所属栏目:百科 来源:网络整理
导读:? 1.平铺 在做网络开发时,总是要考虑的文件大小这个因素的。在PV3D 中使用大量的纹理会耗掉大量的带宽资源。 任何可以减少文件大小的方法都应该考虑,尤其是在做大型项目的时候。 一个经常使用到得技巧就是纹理平铺,它的方法是在横向和纵向将纹理重复平铺从
?

1.平铺

在做网络开发时,总是要考虑的文件大小这个因素的。在PV3D 中使用大量的纹理会耗掉大量的带宽资源。
任何可以减少文件大小的方法都应该考虑,尤其是在做大型项目的时候。
一个经常使用到得技巧就是纹理平铺,它的方法是在横向和纵向将纹理重复平铺从而避免为此创建一个大
的位图?? ?

?? ?如:

?? ??? ?private function init():void
?? ??? ?{?? ?
?? ??? ??? ?var material:BitmapFileMaterial = new BitmapFileMaterial("assets/tile.jpg");
?? ??? ??? ?material.addEventListener(FileLoadEvent.LOAD_COMPLETE,loadComplete);
?? ??? ?
?? ??? ??? ?var plane:Plane = new Plane(material,1024,512);
?? ??? ??? ?scene.addChild(plane);
?? ??? ?}
?? ??? ?
?? ??? ?private function loadComplete(e:FileLoadEvent):void
?? ??? ?{
?? ??? ??? ?var material:BitmapFileMaterial = BitmapFileMaterial(e.target);
?? ??? ??? ?
?? ??? ??? ?material.tiled = true;
?? ??? ??? ?//水平和纵向重复次数
?? ??? ??? ?material.maxU = 8;
?? ??? ??? ?material.maxV = 4;
?? ??? ?}

?? ?
2.翻转材质(Flipping your material)

?? ?如:

?? ??? ?private function init():void{?? ?
?? ??? ??? ?var frontMat:BitmapFileMaterial = new BitmapFileMaterial("assets/front.jpg");
?? ??? ??? ?var backMat:BitmapFileMaterial = new BitmapFileMaterial("assets/back.jpg");
?? ??? ??? ?var leftMat:BitmapFileMaterial = new BitmapFileMaterial("assets/left.jpg");
?? ??? ??? ?var rightMat:BitmapFileMaterial = new BitmapFileMaterial("assets/right.jpg");
?? ??? ??? ?var topMat:BitmapFileMaterial = new BitmapFileMaterial("assets/top.jpg");
?? ??? ??? ?var bottomMat:BitmapFileMaterial = new BitmapFileMaterial("assets/bottom.jpg");
?? ??? ??? ?
?? ??? ??? ?frontMat.addEventListener(FileLoadEvent.LOAD_COMPLETE,loadComplete);
?? ??? ??? ?backMat.addEventListener(FileLoadEvent.LOAD_COMPLETE,loadComplete);
?? ??? ??? ?leftMat.addEventListener(FileLoadEvent.LOAD_COMPLETE,loadComplete);
?? ??? ??? ?rightMat.addEventListener(FileLoadEvent.LOAD_COMPLETE,loadComplete);
?? ??? ??? ?topMat.addEventListener(FileLoadEvent.LOAD_COMPLETE,loadComplete);
?? ??? ??? ?bottomMat.addEventListener(FileLoadEvent.LOAD_COMPLETE,loadComplete);
?? ??? ??? ?
?? ??? ??? ?var materialsList:MaterialsList = new MaterialsList();
?? ??? ??? ?materialsList.addMaterial(frontMat,"front");
?? ??? ??? ?materialsList.addMaterial(backMat,"back");
?? ??? ??? ?materialsList.addMaterial(leftMat,"left");
?? ??? ??? ?materialsList.addMaterial(rightMat,"right");
?? ??? ??? ?materialsList.addMaterial(topMat,"top");
?? ??? ??? ?materialsList.addMaterial(bottomMat,"bottom");
?? ??? ??? ?
?? ??? ??? ?var cube:Cube = new Cube(materialsList,800,5,5);
?? ??? ??? ?scene.addChild(cube);
?? ??? ?}
?? ??? ?
?? ??? ?private function loadComplete(e:FileLoadEvent):void{
?? ??? ??? ?var material:BitmapFileMaterial = BitmapFileMaterial(e.target);
?? ??? ??? ?//设置材质的opposite属性为true,这样才能使矩形内面也可见
?? ??? ??? ?material.opposite = true;
?? ??? ??? ?//为横向翻转
?? ??? ??? ?BitmapMaterialTools.mirrorBitmapX(material.bitmap);
?? ??? ?}

3.Power of two textures 2的幂数纹理
?? ?(译者注:Power of two 是指2的幂数是一个集合,如(01,2,4,8,16,32…))
?? ?如果你使用的纹理的尺寸是2的幂数,这会在Flash Player中使用纹理细化成为可能。这完全
是Flash Player原生执行的精细操作。创建位图的多个副本。一旦位图需要使用了,被放大
或者被缩小,Flash Player会从内存中取出出两个最接近的位图,在每一处进行差值处理已
得到一个平滑的图片.渲染光滑的纹理细化的图片是非常快的,甚至你设置材质的光滑属性
为True这样的操作对性能的影响也是微乎其微的

?? ?因此为了能够使用纹理细化这个优势,你应该2的幂数尺寸的位图。这样才能是你的材质光
滑。在flashplayer中有效的2的幂数为2,32,64,128,256,512,和 2048。图片
的纵横比不需要设置成1:1。你可以将位图的长宽随意设置为两个2的幂数组合。比如1024
x256。
当我们无法使用2的幂数的尺寸时,我们可以使用PV3D实现的自动细化功能,这是
BitmapMaterial类的一个静态属性。
BitmapMaterial.AUTO_MIP_MAPPING = true;
当你设置为 true时,那么所有新创建的位图材质都为被PV3D修正以支持纹理细化功能。

?

3.总结

材质就是3D物体的皮肤,线框材质和颜色材质是最基础的材质,高级点的材质就是位图材 质和影片剪辑材质。这些类都可以被扩展用来更简单的创建他们的对象。 在这一章里我们详细的讲解了一下有关材质的类: WireframeMaterial 线框材质 ColorMaterial 颜色材质 BitmapMaterial 位图材质 BitmapFileMaterial 位图文件材质 BitmapAssetMaterial 位图元件材质 MovieMaterial 影片材质 MovieAssetMaterial 影片元件材质 VideoStreamMaterial 视频流材质 CompositeMaterial 组合材质 我们了解了几个有关材质的特别技巧: 平滑材质使用 material.smooth = true. 双面材质使用 material.doubleSided = true. 动画材质使用 material.animated= true. 阻止材质扭曲使用 material.precise = true. 材质和物体可以交互使用 viewport.interactive = True material.interactive = true. 翻转材质使用DisplayObject的 scaleX属性,或者使用BitmapMaterialTools功能类的 静态方法来翻转bitmap数据:BitmapMaterialTools.mirrorBitmapX( material.bitmap). 平铺材质使用 material.tiled = true并设置 material.maxU 和 material.maxV这两个 横线和纵向重复数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读