Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 05.03.2012, 09:55
Sated вне форума Посмотреть профиль Отправить личное сообщение для Sated Найти все сообщения от Sated
  № 1  
Sated

Регистрация: Jan 2012
Сообщений: 25
По умолчанию Skybox

Доброго времени суток!

Я хотел бы узнать, как можно использовать в Away3D версии 4 Skybox с VideoMaterial, чтобы на каждую грань задавать свою *.swf. Поиск по инету почти ничего не дал.

Старый 05.03.2012, 13:07
redefy вне форума Посмотреть профиль Отправить личное сообщение для redefy Посетить домашнюю страницу redefy Найти все сообщения от redefy
  № 2  
redefy
 
Аватар для redefy

Регистрация: Mar 2011
Сообщений: 58
Из SWF вы не сможете сделать текстуру... Только если отрисуете ее в BitmapData, то да... будет вам текстура.

А вот видео-текстуру легко...
http://redefy.net/away3d4-videomaterial/

Код AS3:
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);
		}
 
	}
}

Старый 05.03.2012, 15:03
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Название темы не раскрывает сути вопроса.

Создать новую тему Закрытая тема Часовой пояс GMT +4, время: 19:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:31.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.