陈童的博客's Archivers

From everyinch on 2011-10-02 22:17:15

Pixel3D

在PV3D中普通的DisplayObject3D对象如基本几何体、TriangleMesh3D等通常可以直接以树形层次添加到scene中,而Pixel3D较为特殊,它需要添加到Pixels容器中,而Pixels容器需要以一个BitmapEffectLayer作为参数,标准的写法是:
[code lang="as3"]var bfx:BitmapEffectLayer = new BitmapEffectLayer(viewport,800,600);
bfx.clearBeforeRender = true;
viewport.containerSprite.addLayer(bfx);
var pixels:Pixels = new Pixels(bfx);
var pixel3d:Pixel3D = new Pixel3D();
pixels.addPixel3D(pixel3d);[/code]
即首先需要定义一个BitmapEffectLayer,并将这个BitmapEffectLayer添加到viewport中。再定义Pixels容器,并以刚才建立的BitmapEffectLayer作为参数。最后是创建具体的Pixel3D,把创建好的Pixel3D添加到Pixels容器中,至此就结束了所有的步骤。当然重点是确定Pixel3D对象,Pixel3D的构造函数如下:
[code lang="as3"]Pixel3D(color:uint, x:Number = 0, y:Number = 0, z:Number = 0)[/code]
需要为Pixel3D指定颜色以及x,y,z的位置。颜色一般指定为Math.random()*0xffffffff这样的随机数。创建Pixel3D所需要的BitmapEffectLayer、Pixels和Pixel3D分别位于:
[code lang="as3"]org.papervision3d.core.effects.BitmapLayerEffect
org.papervision3d.core.geom.Pixels
org.papervision3d.core.geom.renderables.Pixel3D[/code]
所以需要预先导入。下面制作一个简单的示例用来演示这个过程,类文件名为Pixel3DTest.as,源代码如下:
[code lang="as3"]package{
import flash.events.Event;
import flash.filters.GlowFilter;

import org.papervision3d.core.effects.BitmapLayerEffect;
import org.papervision3d.core.geom.Pixels;
import org.papervision3d.core.geom.renderables.Pixel3D;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.view.BasicView;
import org.papervision3d.view.layer.BitmapEffectLayer;

[SWF(width="800", height="600", frameRate="60")]
public class Pixel3DTest extends BasicView{
private var container:DisplayObject3D;

public function Pixel3DTest(){
container = new DisplayObject3D;

var bfx:BitmapEffectLayer = new BitmapEffectLayer(viewport,800,600);
bfx.clearBeforeRender = true;
viewport.containerSprite.addLayer(bfx);
var pixels:Pixels = new Pixels(bfx);
for(var i:int=0;i

查看完整版本: Pixel3D

Tags: pixel3d, pv3d


©陈童的博客