oops, I was wrong. I didn't notice that Sprite3D extends Element rather than
Object3D. The code should work with other sprites subclassing Object3D.

Personally I don't use Sprite3D in my project so I've no idea how to deal
with it, but I think you can find a way by debugging the source code
(MeshProjector and FrustumClipping, I think), just as I did to find my
solution.

Good luck!

On Thu, Jul 8, 2010 at 8:00 PM, Rujia Liu <[email protected]> wrote:

> I solved a similar problem (with my own kind of sprite) by hacking the
> source code. It might be helpful to you:
>
> in ProjectionTraverser.as, just after computing _viewTransform, add the
> following lines:
>
> if (node is Sprite3D)
> {
>             _nodeClassification =
> _cameraVarsStore.nodeClassificationDictionary[node] = Frustum.IN;
>             return true;
> }
>
> but since in my case I'm dealing with my own kind of sprite, I'm not sure
> if it works for Sprite3D. Good luck!
>
> - Rujia
>
> On Wed, Jun 30, 2010 at 3:35 PM, Gleb Kobzar <[email protected]> wrote:
>
>> The problem is not yet solved. If anybody had the same and got it
>> solved please share your experience!
>>
>> On 10 июн, 15:57, Michael Iv <[email protected]> wrote:
>> > Well ,although i am sure that there is easier solution (still did not
>> look
>> > for it) ,you can go into FrustrumClipping class and hack it. You should
>> work
>> > with Frustrum planes against which the distance to the objects that need
>> to
>> > be clipped  is measured. But it is quite strange that minX maxX don't
>> work.
>> >
>> >
>> >
>> > On Thu, Jun 10, 2010 at 3:48 PM, Gleb Kobzar <[email protected]>
>> wrote:
>> > > Hi Michael,
>> >
>> > > Thanks a lot for the reply. But I can't find properties minX and maxX
>> > > for view3D object. Guess you mean according clipping props. Setting
>> > > clipping properties even up to:
>> > > clipping.minX = -10000;
>> > > clipping.minY = -10000;
>> > > clipping.maxX = 10000;
>> > > clipping.maxY = 10000;
>> >
>> > > doesn't help - there is no effect at all. This is strange because
>> > > smaller values do clip the view.
>> >
>> > > On 10 июн, 15:26, Michael Iv <[email protected]> wrote:
>> > > > As far as I understand that , because Sprites have no meshes of
>> triangles
>> > > > ,so there can be no clipping on triangles level(So only triangles
>> that
>> > > > outside the frustrum are invisible). Therefore When your sprite
>> passes
>> > > the
>> > > > clipping border it disappears completely . Try to push view.minX and
>> maxX
>> > > .
>> > > > to broaden clipping area.
>> >
>> > > > On Thu, Jun 10, 2010 at 3:19 PM, Gleb Kobzar <[email protected]>
>> > > wrote:
>> > > > > 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
>> >
>> > > > --
>> > > > Michael Ivanov ,Programmer
>> > > > Neurotech Solutions Ltd.
>> > > > Flex|Air
>> > > |3D|Unity|www.neurotechresearch.comhttp://blog.alladvanced.nethttp://
>> > >www.meetup.com/GO3D-Games-Opensource-3D/
>> > > > Tel:054-4962254
>> > > > [email protected]
>> > > > [email protected]
>> >
>> > --
>> > Michael Ivanov ,Programmer
>> > Neurotech Solutions Ltd.
>> > Flex|Air
>> |3D|Unity|www.neurotechresearch.comhttp://blog.alladvanced.nethttp://
>> www.meetup.com/GO3D-Games-Opensource-3D/
>> > Tel:054-4962254
>> > [email protected]
>> > [email protected]
>
>
>

Reply via email to