您的位置:首页 > 其它

pv3d 学习笔记-材质部分

2011-09-17 15:41 239 查看
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,true,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 = true;

material.doubleSided = true;

plane = new Plane(material);

6.2 影片元件材质(MovieAssetMaterial)

如:

var material:MovieAssetMaterial = new MovieAssetMaterial("material",false,true);

material.doubleSided = true;

plane = new Plane(material,500,500);

纹理从左至右漂移时因为他影片剪辑在play 的时候尺寸在改变。能看到黑色背景是因为设

置了透明属性为true,所以要设为false。漂移也有一种简单的办法。你必须为纹理定义一个

矩形对象,在讲解MovieMaterial 类时,构造函数的第五个参数就是一个矩形对象。

MovieAssetMaterial 类略微有些不同。它将这个参数内化为一个属性,MovieMaterial 类也有

这个属性。所以只要加入以下代码:

material.rect = new Rectangle(0,0,200,200);

再次编译发布,纹理漂移的问题解决了。

第二个问题是闪烁和文本像素化了。当我们使用位图作为材质之前我们见过像素化。解决方

法是开启光滑属性。material.smooth = true;

由于平面材质上有了文本和线条,就很容易看出这个Plane 对象是有两个扭曲的三角形面构成,

当precise 属性设置为true 时,PV3D 将自动的将三角形面细分以创建更多的新的三角形面这样就更精确

var material:MovieAssetMaterial = new MovieAssetMaterial("material",false,true,false,true);

material.doubleSided = true;

material.rect = new Rectangle(0,0,200,200);

material.smooth = true;

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 = true;//材质的动画属性设为true.

var plane:Plane = 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 plane:Plane = new Plane(material,500,375,3,3);

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: