Papervision3D在as3中的问题

时间:2012-04-19 11:29:23

标签: actionscript-3 actionscript 3d papervision3d

我在as3中使用Papervision3D愚弄。我目前陷入了BitmapEffectLayer。当我想要为对象添加效果时,具有效果的对象将始终呈现在所有内容的前面。这意味着,即使它落后于cordinat系统中的另一个对象,它也会被吸引到它的前面。 下面是一些源代码,如果有帮助则不知道。

spherer = new Sphere(shadedMaterial, 120, 20, 14);
        //spherer.x = 0;
        //spherer.y = 0;
        //spherer.z = 0;

        displayEarth = new DisplayObject3D();
        displayEarth.x =0;
        displayEarth.y = 0;
        displayEarth.z = 0;
        displayEarth.addChild(spherer);


        smallSphere = new Sphere(flatMaterial, 10, 10, 10);

        smallSphere.x = 0;
        smallSphere.z = 130;
        smallSphere.y = 00;

        displayEarth.addChild(smallSphere);
        //scene.addChild(smallSphere);
        scene.addChild(light);


        var partMaterial:ParticleMaterial = new ParticleMaterial(0x000000, 1.0, ParticleMaterial.SHAPE_CIRCLE);
        var part:Particle = new Particle(partMaterial, 3, 0, -150, 30);
        var part2:Particle = new Particle(partMaterial, 3, 0,0,135);
        var partsHolder:Particles = new Particles();
        partsHolder.addParticle(part);
        parrr.push(part);
        partsHolder.addParticle(part2);
        parrr.push(part2);

        var effectLayer:BitmapEffectLayer = new BitmapEffectLayer(viewport, stage.stageWidth, stage.stageHeight, true, 0x000000, BitmapClearMode.CLEAR_PRE);
        effectLayer.drawLayer.blendMode = BlendMode.OVERLAY;

        effectLayer.addDisplayObject3D(smallSphere);
        viewport.containerSprite.addLayer(effectLayer);

        displayEarth.addChild(partsHolder);

        scene.addChild(displayEarth);
        effectLayer.addEffect(new BitmapLayerEffect(new BlurFilter(2,2,2)));

现在,附加到effectLayer的“smallSphere”将始终呈现在“sphere”的前面。 任何帮助表示赞赏! - 大卫

1 个答案:

答案 0 :(得分:1)

当您将DisplayObject3D设置为它自己的图层(.useOwnContainer = true;是最简单的选项时,基本上您可以将该3D对象渲染为2D典型显示列表中的单独2D精灵。使用ViewportLayer使其成为可能更容易控制这种堆叠/排序,所以一定要仔细阅读Andy Zupko's detailed post on ViewportLayers。想法是如果你将3D对象添加到2D渲染层,你将不得不处理排序。你可以检查z如果对象在3D中移动很多,3D对象的位置和基于该排序的层次。当你进行这种类型的操作时,你显然会放松速度,所以最好稍微规划一下(例如在场景中移动的内容,什么不是' t,添加效果的利弊是什么等。)

考虑到Papervision3D项目现在还没有更新,这也许是一个好主意。它目前只提供软件渲染(使用Flash Player 9,我认为部分使用Flash Player 10的新绘图API,但可能不在稳定分支中)。您可能希望查看Away3D,因为它目前仍在开发中。您可以使用Flash Player 10软件渲染API,甚至是轻量级的Away3DLite版本(比我认为的Papervision3D更快),但也有使用硬件加速的Away3D 4.0版本。