You don't need to really use layers or sort them, its only a blur filter
thats applied to the layers.
Just do view.filters

This is for lite
package
{
    import away3dlite.cameras.Camera3D;
    import away3dlite.containers.ObjectContainer3D;
    import away3dlite.containers.Scene3D;
    import away3dlite.containers.View3D;
    import away3dlite.debug.AwayStats;
    import away3dlite.materials.BitmapMaterial;
    import away3dlite.primitives.Sphere;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.display.StageQuality;
    import flash.events.Event;
    import flash.filters.BlurFilter;
    import flash.geom.ColorTransform;
    import flash.geom.Point;
    import flash.geom.Vector3D;
//    import uk.co.shrewballooba.awaylite.camera.CameraControllerAWL;

    /**
     * ...
     * @author not me
     */
    public class MainFur extends Sprite
    {
        [Embed(source = '../lib/zebra.jpg')]
        private var _tigerTextureClass:Class;
        private var _tigerTexture:Bitmap;

        private var _sphereLayer:Sprite

        private var camera:Camera3D;
        private var view:View3D;
        private var scene:Scene3D;
        private var furball:ObjectContainer3D;

        public function MainFur():void
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            stage.quality = StageQuality.LOW;
             _tigerTexture = new _tigerTextureClass();

            // entry point
            initEngine();
            createcontainer()
            createSpheres( 8, 150, 0, 2);
            initListeners();

        }

        private function initEngine():void
        {
            scene = new Scene3D();
            camera = new Camera3D();
            camera.y = -500;
            camera.z = -500;
            camera.rotationX = -45;

            view = new View3D();
            view.camera = camera;
            view.scene = scene;

            addChild(view);

            addChild(new AwayStats(view));

        //    var camC:CameraControllerAWL = new CameraControllerAWL(view,
camera, new Vector3D(0, 0, 0));
        }

        private function createcontainer():void
        {
            furball = new ObjectContainer3D();
            scene.addChild(furball);
        }

        private function createSpheres( layerCount:uint, radius:Number,
color:uint, segment_distance:Number):void
        {
            var sphere:Sphere;
            var material:BitmapMaterial;
            var texture:BitmapData;
            var textures:Array = new Array( layerCount);
            var alphaD:Number = 1 / layerCount;
            var alpha:Number = alphaD;
            var ct:ColorTransform;
            var dissolve:Number = 0.9;



            for ( var i:Number = 0; i < textures.length; i++)
            {
                    ct = new ColorTransform();
                    ct.redMultiplier = 1.5-alpha;
                    ct.greenMultiplier = 1.5-alpha;
                    ct.blueMultiplier = 1.5-alpha;
                    ct.alphaMultiplier = alpha;

                    texture = new BitmapData( _tigerTexture.width,
_tigerTexture.height, true, 0);
                    texture.draw( _tigerTexture);
                    texture.pixelDissolve( texture, texture.rect, new Point(
0, 0), 0, (texture.width*texture.height) * dissolve, 0);
                    texture.colorTransform( texture.rect,
ct);
                    textures[i] = texture;

                    alpha += alphaD;
                    dissolve -= 0.03;
            }

            //view.filters = [new BlurFilter(6,6)]
            //or
            _sphereLayer = new Sprite();
            view.addChild(_sphereLayer);
            _sphereLayer.filters = [new BlurFilter( 6, 6)];

            for( i=0; i< layerCount; i++) {
                    material = new BitmapMaterial( textures[i]);

                    sphere = new Sphere(material, radius, 9, 6);

                    radius -= segment_distance;


                    furball.addChild( sphere);

                    sphere.layer = _sphereLayer;//comment out if
view.filters
            }
        }

        private function initListeners():void
        {
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
            stage.addEventListener(Event.RESIZE, onResize);
            onResize();

        }

        private function onEnterFrame(event:Event):void
        {
            furball.rotationY++

            //render scene
            view.render();
        }


        /**
         * stage listener for resize events
         */
        private function onResize(event:Event = null):void
        {
            view.x = stage.stageWidth / 2;
            view.y = stage.stageHeight / 2;
        }
    }

}

On 3 February 2011 11:24, originaltomato <[email protected]> wrote:

> Could someone help me port this code to Away3D. It uses render layers in
> papervision and I don't know how to do custom sorting in away?
>
> http://kode80.com/2009/06/25/papervision-fur-3d-texture/
>
> tnx
>

Reply via email to