pv3d 学习笔记-材质部分

7 篇文章 0 订阅
 

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);


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值