|
|
|||||
Регистрация: Jan 2012
Сообщений: 25
|
Skybox
Доброго времени суток!
Я хотел бы узнать, как можно использовать в Away3D версии 4 Skybox с VideoMaterial, чтобы на каждую грань задавать свою *.swf. Поиск по инету почти ничего не дал. |
|
|||||
Регистрация: Mar 2011
Сообщений: 58
|
Из SWF вы не сможете сделать текстуру... Только если отрисуете ее в BitmapData, то да... будет вам текстура.
А вот видео-текстуру легко... http://redefy.net/away3d4-videomaterial/ package { import away3d.cameras.*; import away3d.containers.*; import away3d.controllers.*; import away3d.debug.*; import away3d.entities.*; import away3d.events.MouseEvent3D; import away3d.materials.*; import away3d.materials.utils.IVideoPlayer; import away3d.primitives.*; import away3d.textures.*; import flash.display.*; import flash.events.*; import flash.geom.*; import flash.ui.Keyboard; /** * ... * @author redefy */ public class HoverControllerTest extends Sprite { [Embed(source = 'resources/back.jpg')] public const Texture01:Class; private var camera:Camera3D; private var scene:Scene3D; private var view:View3D; private var conteiner:ObjectContainer3D; private var mesh:Mesh; private var controller:HoverController; private var material:TextureMaterial private var texture:VideoTexture; private var move:Boolean = false; private var lastPanAngle:Number; private var lastTiltAngle:Number; private var lastMouseX:Number; private var lastMouseY:Number; private var tiltSpeed:Number = 5; private var panSpeed:Number = 5; private var distanceSpeed:Number = 15; private var tiltIncrement:Number = 0; private var panIncrement:Number = 0; private var distanceIncrement:Number = 0; private var aSide:Array = []; public function HoverControllerTest():void { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; camera = new Camera3D(); camera.lens.near = 10; camera.lens.far = 10000; scene = new Scene3D(); conteiner = new ObjectContainer3D(); conteiner.mouseChildren = true; scene.addChild(conteiner); //верхняя сторона texture= new VideoTexture("http://dl.************/u/27749741/Alternativa%208/Exception/ezampleVideo/one.flv", 512, 512, true, false); material = new TextureMaterial(texture); mesh = new Mesh(new PlaneGeometry(300, 300), material); mesh.addEventListener(MouseEvent3D.CLICK, handlers); mesh.y = 150; mesh.mouseEnabled = true; aSide.push(conteiner.addChild(mesh)); //нижняя сторона texture = new VideoTexture("http://dl.************/u/27749741/Alternativa%208/Exception/ezampleVideo/two.flv", 512, 512, true, false); material = new TextureMaterial(texture); mesh = new Mesh(new PlaneGeometry(300, 300), material); mesh.addEventListener(MouseEvent3D.CLICK, handlers); mesh.rotationX = 180; mesh.y = -150; mesh.mouseEnabled = true; aSide.push(conteiner.addChild(mesh)); //дальняя сторона texture = new VideoTexture("http://dl.************/u/27749741/Alternativa%208/Exception/ezampleVideo/three.flv", 512, 512, true, false); material = new TextureMaterial(texture); mesh = new Mesh(new PlaneGeometry(300, 300, 1, 1, false), material); mesh.addEventListener(MouseEvent3D.CLICK, handlers); mesh.rotationY = 180; mesh.z = 150; mesh.mouseEnabled = true; aSide.push(conteiner.addChild(mesh)); //ближняя сторона texture = new VideoTexture("http://dl.************/u/27749741/Alternativa%208/Exception/ezampleVideo/four.flv", 512, 512, true, false); material = new TextureMaterial(texture); mesh = new Mesh(new PlaneGeometry(300, 300, 1, 1, false), material); mesh.addEventListener(MouseEvent3D.CLICK, handlers); mesh.z = -150; mesh.mouseEnabled = true; aSide.push(conteiner.addChild(mesh)); //левая сторона texture = new VideoTexture("http://dl.************/u/27749741/Alternativa%208/Exception/ezampleVideo/five.flv", 512, 512, true, false); material = new TextureMaterial(texture); mesh = new Mesh(new PlaneGeometry(300, 300, 1, 1, false), material); mesh.addEventListener(MouseEvent3D.CLICK, handlers); mesh.rotationY = 90; mesh.x = -150; mesh.mouseEnabled = true; aSide.push(conteiner.addChild(mesh)); //правая сторона texture = new VideoTexture("http://dl.************/u/27749741/Alternativa%208/Exception/ezampleVideo/six.flv", 512, 512, true, false); material = new TextureMaterial(texture); mesh = new Mesh(new PlaneGeometry(300, 300, 1, 1, false), material); mesh.addEventListener(MouseEvent3D.CLICK, handlers); mesh.rotationY = -90; mesh.x = 150; mesh.mouseEnabled = true; aSide.push(conteiner.addChild(mesh)); //mesh.showBounds = true; //var axis:WireframeCube = new WireframeCube( 200, 200, 200, 0x00FF00, 5); //conteiner.addChild(axis); view = new View3D(scene, camera); view.antiAlias = 4; addChild(view); view.background = new BitmapTexture(new Texture01().bitmapData); var stats:AwayStats = new AwayStats(view, true, false, 5); addChild(stats); controller = new HoverController(camera, conteiner, 0, 10, 1000, -90, 90); controller.yFactor = 1.4; addEventListener(Event.ENTER_FRAME, update); view.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); view.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp); } private function handlers(e:MouseEvent3D):void { var mesh:Mesh = e.target as Mesh; var material:TextureMaterial = mesh.material as TextureMaterial; var videoTexture:VideoTexture = material.texture as VideoTexture; var player:IVideoPlayer = videoTexture.player; player.playing ? player.stop() : player.play(); } private function update(e:Event):void { if (move) { controller.panAngle = 0.3*(stage.mouseX - lastMouseX) + lastPanAngle; controller.tiltAngle = 0.3*(stage.mouseY - lastMouseY) + lastTiltAngle; } controller.panAngle += panIncrement; controller.tiltAngle += tiltIncrement; controller.distance += distanceIncrement; controller.update(); view.render(); } private function onKeyDown(event:KeyboardEvent):void { switch (event.keyCode) { case Keyboard.UP: case Keyboard.W: tiltIncrement = tiltSpeed; break; case Keyboard.DOWN: case Keyboard.S: tiltIncrement = -tiltSpeed; break; case Keyboard.LEFT: case Keyboard.A: panIncrement = panSpeed; break; case Keyboard.RIGHT: case Keyboard.D: panIncrement = -panSpeed; break; case Keyboard.Z: distanceIncrement = distanceSpeed; break; case Keyboard.X: distanceIncrement = -distanceSpeed; break; } } private function onKeyUp(event:KeyboardEvent):void { switch (event.keyCode) { case Keyboard.UP: case Keyboard.W: case Keyboard.DOWN: case Keyboard.S: tiltIncrement = 0; break; case Keyboard.LEFT: case Keyboard.A: case Keyboard.RIGHT: case Keyboard.D: panIncrement = 0; break; case Keyboard.Z: case Keyboard.X: distanceIncrement = 0; break; } } private function onMouseDown(event:MouseEvent):void { move = true; lastPanAngle = controller.panAngle; lastTiltAngle = controller.tiltAngle; lastMouseX = stage.mouseX; lastMouseY = stage.mouseY; stage.addEventListener(Event.MOUSE_LEAVE, onStageMouseLeave); } private function onMouseUp(event:MouseEvent):void{ move = false; stage.removeEventListener(Event.MOUSE_LEAVE, onStageMouseLeave); } private function onStageMouseLeave(event:Event):void{ move = false; stage.removeEventListener(Event.MOUSE_LEAVE, onStageMouseLeave); } } } |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Название темы не раскрывает сути вопроса.
|
Часовой пояс GMT +4, время: 20:50. |
|
« Предыдущая тема | Следующая тема » |
|
|