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
