Thanks alot, because I'm a bit lost over this issue. Here it goes:

<pre>



<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; layout="absolute"
        creationComplete="onCreationComplete()" frameRate="30">
        <mx:Script>
                <![CDATA[
                        import mx.core.UIComponent;
                        import away3d.cameras.*;
                        import away3d.containers.*;
                        import away3d.core.base.*;
                        import away3d.core.utils.*;
                        import away3d.events.*;
                        import away3d.loaders.*;
                        import away3d.loaders.data.*;
                        import away3d.materials.*;
                        import away3d.primitives.*;
                        
                        
[Embed(source="assets/f360.3ds",mimeType="application/octet-stream")]
                        public static var CarModel:Class;
                        
                        [Embed(source="assets/cracks.jpg")]
                        public static var Cracks:Class;
                        
                        [Embed(source="assets/cracksOverlay.png")]
                        public static var CracksOverlay:Class;
                        
                        [Embed(source="assets/fskin.jpg")]
                        public static var RedPaint:Class;
                        
                        [Embed(source="assets/fsking.jpg")]
                        public static var GreyPaint:Class;
                        
                        [Embed(source="assets/fskingr.jpg")]
                        public static var GreenPaint:Class;
                        
                        [Embed(source="assets/fskiny.jpg")]
                        public static var YellowPaint:Class;                    
                        
                        
                        [Embed(source="assets/morning_preview.jpg")]
                        public static var Sky:Class;                            
                                                                                
        
                        
                                                
                        
                        private var scene:Scene3D;
                        private var camera:HoverCamera3D;
            private var view:View3D;

                        //material objects
                        private var carMaterial:BitmapMaterial;
                        private var materialContainer:CompositeMaterial;
                        private var floorMaterial:TransformBitmapMaterial;
                        private var overlayMaterial:BitmapMaterial;
                        private var skyMaterial:BitmapMaterial;
                        private var materialArray:Array;
                        private var materialIndex:int = 0;
                        private var materialData:MaterialData;
                        
                        //scene objects
                        private var loader:Object3DLoader;
                        private var model:ObjectContainer3D;
                        private var floor:RegularPolygon;
                        private var sky:Sphere;
                        
                        //navigation variables
                        private var moving:Boolean = false;
                        private var lastPanAngle:Number;
                        private var lastTiltAngle:Number;
                        private var lastMouseX:Number;
                        private var lastMouseY:Number;
                        
                        private function onCreationComplete():void {
                                initEngine();
                                initMaterials();
                                initObjects();
                                initListeners();
                                trace("frameRate = 
"+Application.application.frameRate);                                
                        }
                        
                        private function initEngine():void {
                                scene = new Scene3D();
                                camera = new HoverCamera3D({zoom:10, focus:50, 
x:0, y:2000,
z:2000, lookat:"center"});
                                camera.distance = 800;
                                camera.maxtiltangle = 20;
                                camera.mintiltangle = 0;
                                camera.targetpanangle = camera.panangle = -140;
                                camera.targettiltangle = camera.tiltangle = 4;
                                view = new View3D({scene:scene, camera:camera});
                                view.x = viewport.width / 2;
                                view.y = viewport.height / 2;
                                var UIRef:UIComponent = new UIComponent();
                                viewport.addChild(UIRef);
                                UIRef.addChild(view);
                        }
                        
                        private function initMaterials():void
                        {
                                carMaterial = new 
BitmapMaterial(Cast.bitmap(GreenPaint));
                                floorMaterial = new 
TransformBitmapMaterial(Cast.bitmap(Cracks),
{scaleX:0.05, scaleY:0.05, repeat:true});
                                overlayMaterial = new 
BitmapMaterial(Cast.bitmap(CracksOverlay));
                                materialContainer = new
CompositeMaterial({materials:[floorMaterial, overlayMaterial]});
                                
                                //create mirrored sky bitmap for sphere texture
                                var sky:BitmapData = Cast.bitmap(Sky);
                                var skyMirror:BitmapData = new 
BitmapData(sky.width*2,
sky.height*4 - 40, true, 0);
                                skyMirror.draw(sky, new Matrix(2, 0, 0, 2), 
null, null, new
Rectangle(0, 0, sky.width*2, sky.height*2-20), true);
                                skyMirror.draw(skyMirror.clone(), new Matrix(1, 
0, 0, -1, 0,
sky.height*4-40));
                                skyMaterial = new 
BitmapMaterial(Cast.bitmap(skyMirror));
                                
                                materialArray = [GreenPaint, RedPaint, 
YellowPaint, GreyPaint];
                        }                       
                        
                        private function initObjects():void
                        {
                                //create ferrari model
                                model = Max3DS.parse(CarModel, 
{material:carMaterial,
ownCanvas:true, centerMeshes:true, pushfront:true});
                                materialData = 
model.materialLibrary.getMaterial("fskin");
                                materialData.material = 
Cast.material(materialArray[materialIndex]);
                                model.blendMode = BlendMode.HARDLIGHT;
                                model.scale(100);
                                model.rotationX = 90;
                                model.y = -200;
                                model.addOnMouseUp(onClickModel);
                                scene.addChild(model);
                                
                                //create floor object
                                floor = new 
RegularPolygon({material:materialContainer,
ownCanvas:true, radius:5000, sides:20, subdivision:20, y:-200});
                                floor.blendMode = BlendMode.MULTIPLY;
                                scene.addChild( floor );
                                
                                //create sky object
                                sky = new Sphere({material:skyMaterial, 
radius:5000, segmentsW:20,
segmentsH:12, pushback:true});
                                sky.scale(-1);
                                sky.y = -200;
                                sky.rotationX = 180;
                                scene.addChild( sky );
                        }
                        
                        /**
                         * Lsitener function for mouse click on car
                         */
                        private function onClickModel(event:MouseEvent3D):void
                        {
                                materialIndex++;
                                if (materialIndex > materialArray.length - 1)
                                        materialIndex = 0;
                                materialData.material = 
Cast.material(materialArray[materialIndex]);
                        }
                        
                        /**
                         * Initialise the listeners
                         */
                        private function initListeners():void
                        {
                                addEventListener( Event.ENTER_FRAME, 
onEnterFrame );
                                //stage.addEventListener(MouseEvent.MOUSE_DOWN, 
onMouseDown);
                                //stage.addEventListener(MouseEvent.MOUSE_UP, 
onMouseUp);
                        }
                        
                        /**
                         * Navigation and render loop
                         */
                        private function onEnterFrame(event:Event):void
                        {
                                if (moving) {
                                        camera.targetpanangle = 
0.3*(stage.mouseX - lastMouseX) + lastPanAngle;
                                        camera.targettiltangle = 
0.3*(stage.mouseY - lastMouseY) + lastTiltAngle;
                                }
                                
                                if (model) {
                                        for each (var object:Object3D in 
model.children) {
                                                if (object.maxY - object.minY < 
1)
                                                        object.rotationX += 40;
                                        }
                                }
                                
                                if (floorMaterial.offsetY < 0)
                                        floorMaterial.offsetY += 512;
                                
                                floorMaterial.offsetY -= 4;
                                
                                camera.hover();
                                view.render();
                        }
                        
                        /**
                         * Mouse down listener for navigation
                         */
                        private function onMouseDown(event:MouseEvent):void
                        {
                                lastPanAngle = camera.targetpanangle;
                                lastTiltAngle = camera.targettiltangle;
                                lastMouseX = stage.mouseX;
                                lastMouseY = stage.mouseY;
                                moving = true;
                                //stage.addEventListener(Event.MOUSE_LEAVE, 
onStageMouseLeave);
                        }
                        
                        /**
                         * Mouse up listener for navigation
                         */
                        private function onMouseUp(event:MouseEvent):void
                        {
                                moving = false;
                                //stage.removeEventListener(Event.MOUSE_LEAVE, 
onStageMouseLeave);
                        }
                        
                        /**
                         * Mouse stage leave listener for navigation
                         */
                        private function onStageMouseLeave(event:Event):void
                        {
                                moving = false;
                                //stage.removeEventListener(Event.MOUSE_LEAVE, 
onStageMouseLeave);
                        }                       
                ]]>
        </mx:Script>
        <mx:Box width="100%" height="100%" horizontalAlign="center"
verticalAlign="middle">
                <mx:Canvas id="viewport" width="50%" height="50%"
mouseDown="onMouseDown(event)" mouseUp="onMouseUp(event)"/>
        </mx:Box>       
</mx:Application>




</pre>

On Thu, Nov 20, 2008 at 3:28 PM, Jensa <[EMAIL PROTECTED]> wrote:
>
> Hi Stan,
> There should be no difference. Care to post the Flex-part of your code
> and I'll have a look at it?
>
> J
>
> On Nov 20, 3:08 pm, Stan <[EMAIL PROTECTED]> wrote:
>> Hello
>>
>> I was trying to find out the reason of poor FPS (imported 3DS model in
>> Flex). So I decided to experiment with "Advanced_SaltFlatsFerrari" in
>> Flex. It resulted in poor 4-5 FPS while getting 14-15 in Flash. What
>> is wrong? Is there some kind of setting one must use. (I set
>> frameRate="30" in the Application class in Flex.)
>>
>> Regards,
>> Stan

Reply via email to