查看: 2805|回复: 0
打印 上一主题 下一主题

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

[复制链接]
.    

3797

主题

11

听众

5万

积分

首席设计师

Rank: 8Rank: 8

纳金币
32328
精华
41

活跃会员 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2013-3-21 15:14:36 |只看该作者 |倒序浏览
1.平铺在做网络开发时,总是要考虑的文件大小这个因素的。在PV3D 中使用大量的纹理会耗掉大量的带宽资源。
任何可以减少文件大小的方法都应该考虑,尤其是在做大型项目的时候。
一个经常使用到得技巧就是纹理平铺,它的方法是在横向和纵向将纹理重复平铺从而避免为此创建一个大
的位图        如:        private function init():void
        {   
            var material:BitmapFileMaterial = new BitmapFileMaterial("assets/tile.jpg");
            material.addEventListener(FileLoadEvent.LOAD_COMPLETE,loadComplete);
        
            var planelane = new Plane(material,1024,512);
            scene.addChild(plane);
        }
        
        private function loadComplete(e:FileLoadEvent):void
        {
            var material:BitmapFileMaterial = BitmapFileMaterial(e.target);
            
            material.tiled = ***e;
            //水平和纵向重复次数
            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,800,800,5,5,5);
            scene.addChild(cube);
        }
        
        private function loadComplete(e:FileLoadEvent):void{
            var material:BitmapFileMaterial = BitmapFileMaterial(e.target);
            //设置材质的opposite属性为***e,这样才能使矩形内面也可见
            material.opposite = ***e;
            //为横向翻转
            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会从内存中取出出两个最接近的位图,在每一处进行差值处理已
得到一个平滑的图片.渲染光滑的纹理细化的图片是非常快的,甚至你设置材质的光滑属性
为***e这样的操作对性能的影响也是微乎其微的    因此为了能够使用纹理细化这个优势,你应该2的幂数尺寸的位图。这样才能是你的材质光
滑。在flashplayer中有效的2的幂数为2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 和 2048。图片
的纵横比不需要设置成1:1。你可以将位图的长宽随意设置为两个2的幂数组合。比如1024
x256。
当我们无法使用2的幂数的尺寸时,我们可以使用PV3D实现的自动细化功能,这是
BitmapMaterial类的一个静态属性。
BitmapMaterial.AUTO_MIP_MAPPING = ***e;
当你设置为 ***e时,那么所有新创建的位图材质都为被PV3D修正以支持纹理细化功能。

3.总结
材质就是3D物体的皮肤,线框材质和颜色材质是最基础的材质,高级点的材质就是位图材
质和影片剪辑材质。这些类都可以被扩展用来更简单的创建他们的对象。
在这一章里我们详细的讲解了一下有关材质的类:
WireframeMaterial 线框材质
ColorMaterial 颜色材质
BitmapMaterial 位图材质
BitmapFileMaterial 位图文件材质
BitmapAssetMaterial 位图元件材质
MovieMaterial 影片材质
MovieAssetMaterial 影片元件材质
VideoStreamMaterial 视频流材质
CompositeMaterial 组合材质
我们了解了几个有关材质的特别技巧:
平滑材质使用 material.smooth = ***e.
双面材质使用 material.doubleSided = ***e.
动画材质使用 material.animated= ***e.
阻止材质扭曲使用 material.precise = ***e.
材质和物体可以交互使用 viewport.interactive = ***e
material.interactive = ***e.
翻转材质使用DisplayObject的 scaleX属性,或者使用BitmapMaterialTools功能类的
静态方法来翻转bitmap数据:BitmapMaterialTools.mirrorBitmapX( material.bitmap).
平铺材质使用 material.tiled = ***e并设置 material.maxU 和 material.maxV这两个
横线和纵向重复数.
【来源:互联网】
更多精彩教程,尽在web3D纳金网http://www.narkii.com/college/
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-4-28 04:03 , Processed in 0.088707 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部