纳金网

标题: pv3d学习笔记-材质部分 [打印本页]

作者: .    时间: 2013-3-21 15:16
标题: pv3d学习笔记-材质部分
1.线框材质(WireframeMaterial)
    var material:WireframeMaterial = new WireframeMaterial(0x000000,0.5,2);创建一个相框材质对象时,可以使用三个参数:
参数 数据类型 默认值 Description
1 Color 颜色 Number 0xFF00FF
一个24位的颜色值,画线框时线
条的颜色
2 Alpha 透明度 Number 1
透明度值(0-1),线条的
3 Thickness 粗细 Number 0 0-255.0 表 2.颜色材质(ColorMaterial)
var material:ColorMaterial = new ColorMaterial(0x00FF00,0.5);
Parameter Data type Default value Description
1 Color颜色 Number 0xFF00FF(品红色) 24位的填充色
2 Alpha透明度 Number 1 (不透明) 透明度:0到1。
3 Interactive交互性 Boolean False(不支持) 设置材质是否支持
交互:如鼠标单击
3.位图材质(BitmapMaterial)var bmp:BitmapData = new BitmapData(200,200,***e,0x0);
var material:BitmapMaterial = new BitmapMaterial(bmp); 4.位图文件材质(BitmapFileMaterial)var material:BitmapFileMaterial = new BitmapFileMaterial("assets/mill.jpg");
5.位图元件材质(BitmapAssetMaterial)var material:BitmapAssetMaterial = new BitmapAssetMaterial("mill");
mill是Flash库文件的中元件的连接标示符在Flex Builder and Flash Builder中使用元件是将元件转换成BitmapAsset对象 ,然后用
BitmapAsset的bitmapData属性然创建一个常规的BitmapMaterial.对象。
嵌入也可以实现。使用元数据标签[Embed]:如下面的代码所示:
[Embed (source="assets/mill.jpg")] public var mill:Class;
我们将mill.jpg文件导入为元件。命名为mill类,下面这行代码将创建mill
对象并将它转换成BitmapAsset格式。
var millAsset:BitmapAsset = new mill() as BitmapAsset;
然后创建位图材质,就像我们前面的做法一样。
var material:BitmapMaterial = new BitmapMaterial(millAsset.bitmapData);6.两种使用影片剪辑作为材质的方法
6.1 影片材质(MovieMaterial)
    如:
    var materialSprite:Sprite = new Sprite();
    materialSprite.graphics.beginFill(0x333333);
    materialSprite.graphics.drawRect(0,0,200,200);    var material:MovieMaterial = new MovieMaterial(materialSprite);
    material.smooth = ***e;
    material.doubleSided = ***e;
    plane = new Plane(material);
   
   
6.2 影片元件材质(MovieAssetMaterial)
    如:
    var material:MovieAssetMaterial = new MovieAssetMaterial("material",false,***e);
    material.doubleSided = ***e;
    plane = new Plane(material,500,500);
    纹理从左至右漂移时因为他影片剪辑在play 的时候尺寸在改变。能看到黑色背景是因为设
置了透明属性为***e,所以要设为false。漂移也有一种简单的办法。你必须为纹理定义一个
矩形对象,在讲解MovieMaterial 类时,构造函数的第五个参数就是一个矩形对象。
MovieAssetMaterial 类略微有些不同。它将这个参数内化为一个属性,MovieMaterial 类也有
这个属性。所以只要加入以下代码:
material.rect = new Rectangle(0,0,200,200);
再次编译发布,纹理漂移的问题解决了。
第二个问题是闪烁和文本像素化了。当我们使用位图作为材质之前我们见过像素化。解决方
法是开启光滑属性。material.smooth = ***e;由于平面材质上有了文本和线条,就很容易看出这个Plane 对象是有两个扭曲的三角形面构成,
当precise 属性设置为***e 时,PV3D 将自动的将三角形面细分以创建更多的新的三角形面这样就更精确    var material:MovieAssetMaterial = new MovieAssetMaterial("material",false,***e,false,***e);
    material.doubleSided = ***e;
    material.rect = new Rectangle(0,0,200,200);
    material.smooth = ***e;
    material.precisionMode = PrecisionMode.STABLE;//是定义精度模式来避免摇晃闪烁效果
    plane = new Plane(material,500,500); PV3d 将材质成2D 方式扭曲,造成***的假象。变形、扭曲后的图片贴在3D 物体上看上去就很逼真
了,这种PV3D 的贴图方式我们叫做仿射贴图。
7.视频流材质(VideoStreamMaterial)
    如:
    var video:Video = new Video();
    video.attachCamera(Camera.getCamera());
    var conn:NetConnection = new NetConnection();
    conn.connect(null);
    var stream:NetStream = new NetStream(conn);
   
    var material:VideoStreamMaterial = new VideoStreamMaterial (video, stream);
    material.animated = ***e;//材质的动画属性设为***e.    var planelane = new Plane(material,640,480,3,3);
8.组合材质(Combining materials)
在某些情况下,你可能需要将不同的材质组合起来当做一种材质来使用。比如在开发期,将线框材质和其
他材质组合起来使用就显得非常有用。这就要用CompositeMaterial 类了
如:
    var bmpMaterial:BitmapFileMaterial = new BitmapFileMaterial ("assets/mill.jpg");
    var wireMaterial:WireframeMaterial = new WireframeMaterial();
   
    var material:CompositeMaterial = new CompositeMaterial();
    material.addMaterial(bmpMaterial);
    material.addMaterial(wireMaterial);    var planelane = new Plane(material,500,375,3,3); 【来源:互联网】
更多精彩教程,尽在web3D纳金网http://www.narkii.com/college/
作者: 89684598    时间: 2014-2-22 15:30
好东西啊,感谢分享




欢迎光临 纳金网 (http://course.narkii.com/club/) Powered by Discuz! X2.5