0

私は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」の前にレンダリングされます。どんな助けでも大歓迎です!-デビッド

4

1 に答える 1

1

DisplayObject3Dを独自のレイヤーに設定すると(.useOwnContainer = true;最も単純なオプションであり、基本的に、その3Dオブジェクトは2Dの一般的なディスプレイリストで別の2Dスプライトにレンダリングされます。を使用ViewportLayerすると、このスタッキング/順序付けを簡単に制御できるため、必ずお読みください。Andy ZupkoのViewportLayersに関する詳細な投稿を参照してください。3Dオブジェクトを2Dレンダリングレイヤーに追加する場合は、並べ替えを処理する必要があります。たとえば、3Dオブジェクトのz位置を確認し、それに基づいてレイヤーを並べ替えることができます。オブジェクトは3Dで大きく移動します。このタイプの操作を行うと、明らかに速度が低下するため、少し計画を立てることをお勧めします(たとえば、シーン内で移動するもの、移動しないもの、効果を追加することの長所と短所、等。)

また、Papervision3Dプロジェクトはしばらくの間更新されていないことを覚えておくことをお勧めします。現在、ソフトウェアレンダリングのみを提供しています(Flash Player 9を使用しており、Flash Player 10の新しい描画APIを部分的に使用していると思いますが、安定したブランチにはない可能性があります)。Away3Dはまだ開発中であるため、ぜひご覧ください。Flash Player 10ソフトウェアレンダリングAPIを使用することも、軽量のAway3DLiteバージョン(Papervision3Dよりも高速だと思います)を使用することもできますが、ハードウェアアクセラレーションを使用するAway3D4.0バージョンもあります。

于 2012-04-19T12:35:57.640 に答える