pv3d 学习笔记-技巧与总结部分
来源:互联网 发布:mac bootcamp 删除 编辑:程序博客网 时间:2024/06/08 04:50
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,800,800,5,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, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 和 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这两个
横线和纵向重复数.
- pv3d 学习笔记-技巧与总结部分
- pv3d 学习笔记-材质部分
- pv3d 学习笔记-交互部分
- pv3d学习笔记一
- pv3d笔记
- pv3d 与 dae交互
- ps学习技巧笔记总结
- oracle部分技巧总结
- 学习笔记与总结
- Python 学习 (Leetcode 算法题解【easy部分 技巧总结】)
- STL迭代器与部分算法学习笔记
- Qt学习笔记--编程技巧总结
- Qt学习笔记--编程技巧总结
- Qt学习笔记--编程技巧总结
- vim 使用技巧 部分总结
- vim学习笔记-问题与技巧汇总
- 学习日志——pv3d材质
- 学习设计模式笔记(一)部分总结
- 人际关系
- 迅雷Java上机题
- 读万卷书+行万里路+阅人无数+名师指路+自己悟
- pv3d 学习笔记-交互部分
- windows 主机和vmware ubuntu11.04虚机之间以host-only方式连接网络
- pv3d 学习笔记-技巧与总结部分
- 浅析C# 中object sender与EventArgs e
- (一)什么是SAS?
- linux下bluetooth编程(八)SDP层编程
- Oracle 锁的机制
- 从JDK安装、卸载到tomcat和eclipse的安装、配置再到经典的第一个JAVA程序——Hello World
- 计算机网络基础总结
- C和汇编的对应—main之前之后的汇编到底在干什么
- Ogre笔记九:基础教程六—CEGUI和Ogre