Hello,

I have a problem with Sprite3D and FrustumClipping. When I use
Rectangular or Nearfield clipping Sprite3D objects are displayed
correctly. But FrustumClipping makes all Sprite3D objects disappear
near screen borders. I noticed they disappear when Sprite3D center/
pivot point moves out of view borders (moving over the surface with
arrows):
http://www.kollaps.com.ua/gb/SpriteFrustum/

Here are sources for Flash CS4:
http://www.kollaps.com.ua/gb/SpriteFrustum/SpritePlants.zip

And AS3 code related to Sprites, view, scene and camera setup:

function initEngine():void
{
        scene = new Scene3D();

        scamera = new SpringCam();
        ...
        clipping= new FrustumClipping({minZ:50, maxZ:2000});

        var basicrenderer:BasicRenderer = new BasicRenderer();

       view = new View3D();
       view.renderer=basicrenderer;
       //view.renderer=Renderer.INTERSECTING_OBJECTS;
       view.x = stage.stageWidth / 2;
       view.y = stage.stageHeight / 2;

        view.scene = scene;
        view.camera = scamera;
        view.clipping = clipping;

        addChild(view);
}
function initMaterials():void
{

        floorMaterial = new TransformBitmapMaterial(Cast.bitmap(GrassOld), {
scaleX:0.05,    scaleY:0.05, repeat:true});
        treeMaterial = new BitmapMaterial(Cast.bitmap(OakTree));
        //treeMaterial = new BitmapMaterial(new OakTree(362,263*2));
}
function initObjects():void
{

        floor=new Plane();

        floor.height=PLANE_LENGTH;
        floor.width=PLANE_LENGTH;
        floor.segmentsH=PLANE_SEGMENTS;
        floor.segmentsW=PLANE_SEGMENTS;
        floor.material=floorMaterial;

        view.scene.addChild(floor);

        Trees=new Array();
        var sprite:Sprite3D;
        var spriteMesh:Mesh;

        for (var i:int = 0; i <100; i++) {
                spriteMesh=new Mesh();
                sprite = new Sprite3D(null,362,526);

                spriteMesh.x=PLANE_LENGTH*Math.random()-PLANE_LENGTH/2;
                spriteMesh.z=PLANE_LENGTH*Math.random()-PLANE_LENGTH/2;
                spriteMesh.y=0;
                sprite.material=treeMaterial;

                sprite.scaling=2.0+2.0*Math.random();

                spriteMesh.addSprite(sprite);
                view.scene.addChild(spriteMesh);
        }

}

You may notice that I create a Mesh object for each sprite, because I
would need to add interactivity and zDepth actions. By the way without
this all sprites disappear under Frustum Clipping.

May be I'm doing something wrong?

Thanks beforehand for advice

Reply via email to