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

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

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

Регистрация: Jun 2013
Сообщений: 4
По умолчанию Не удается экспортировать модель из 3DMax в FD.

Доброго всем дня! Люди добрые, помогите плз! Не могу справиться с заданием… - это не допуск к экзамену со всеми вытекающими последствиями… Около 2-х месяцев назад мы начали изучать 3DMax и месяц назад Flash Develop, так что уровень моих познаний близок к нулю… Несколько дней читала ваш форум и пыталась что-то сделать сама, но как-то не очень получается… Помогите плз сделать задание на ВАШИХ условиях! Крайний срок сдачи 15.06… 17-го экзамен.
Предмет: компьютерные мультимедийные системы(ведет бывший преподаватель физики). Суть задания: используя пакет Flash Develop необходимо написать программу, которая бы вращала модель созданную в 3Dmax (model2.max) и экспортированную в формат .3ds(model14.3ds). Воспроизводится анимация должна в flash player-Е . При этом необходимо создать панель управления вращением, с возможностью изменения скорости вращения модели и угла отклонения стержня от вертикального вала. Изменение скорости вращения и угла должно производиться "ползунками". Задание построено на базе примера решения задачи по физике, только сильно упрощенное. Фото задачи прилагаю (правда написано на белорусском языке), там важен чертеж по которому строилась модель. Модель я в 3DMax-е сделала (не судите строго ), экспорт сделала (файлики приложены в архиве models.rar), но никак не могу ее «загрузить» (или увидеть) в флэш плеере FD. Текст выводиться, «менюшки» выводятся, а сама модель – нет. Может при экспорте текстуры где-то потеряла… Тут бы уже преподке хотя бы модель в FD показать, а если её еще хоть разок крутнуть получиться! ) Набравшись смелости выкладываю код… Тока громко не смейтесь, ладно…
Код AS3:
package
{    
	import com.gskinner.motion.easing.Cubic;
	import alternativa.engine3d.containers.DistanceSortContainer;
	import alternativa.engine3d.controllers.SimpleObjectController;
	import alternativa.engine3d.core.Camera3D;
	import alternativa.engine3d.core.Object3DContainer;
	import alternativa.engine3d.core.View;
	import alternativa.engine3d.core.Sorting;
	import alternativa.engine3d.loaders.MaterialLoader;
	import alternativa.engine3d.loaders.Parser3DS;
	import alternativa.engine3d.loaders.events.LoaderEvent;
	import alternativa.engine3d.objects.Mesh;
 
	import com.gskinner.motion.GTween;
	import com.gskinner.motion.GTweener;
	import com.gskinner.motion.easing.Linear;
	import com.gskinner.motion.easing.Quintic;
 
 
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.display.MovieClip;
	import flash.display.StageAlign;
	import flash.display.StageDisplayState;
	import flash.display.StageScaleMode;
	import flash.events.MouseEvent;
	import flash.events.ProgressEvent;
	import flash.geom.Vector3D;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;
	//import flash.utils.ByteArray;
 
 
	/**
	 * ...
	 * @author pr1
	 */
 
	 //[Embed(source="../bin/model3.3DS", mimeType="application/octet-stream")]
	public class Main extends Sprite 
	{   
		//задаем частоту развертки кадров в секенду
	     [SWF(backgroundColor = "#DAE9F7", frameRate = "50")]
 
		 private var rootContainer:Object3DContainer = new Object3DContainer();//корень сцены
		 private var loader3ds:URLLoader;//загрузчик формата 3ds
		 private var camera:Camera3D;//камера
		 private var contoller:SimpleObjectController;//контролер камеры
		 //private var array:ByteArray = new ByteArray();//масив
 
		 //окно пораметров
		 private var parametrs:MovieClip;//окно с пораметрами
		 private var paramWinstate:String;//состояние окна
 
		 private var help:MovieClip;//окошко с helpom
		 private var helpWinstate:String;//состояние окна
 
		 private var title:MovieClip;//заголовок модели
		 //индикатор загрузки модели
		 private var progress:MovieClip;
 
		 //для состояния окон свернуто/развернуто
		 private static const SPIN:String = "spin";
		 private static const UNSPIN:String = "unspin";
 
		 //время выдвижения окон
		 public static const TWIN_TIME:Number = 1;
		 public static const FULLSCREEN_TRESHOLD:int = 5;
		 private var fullscreenTime:int = 0;
 
		 //части модели
		 private var Disk1:Mesh;
		 private var vertBrus:Mesh;
		 private var horizBrus:Mesh;
		 private var Disk:Mesh;
		 private var isStart:Boolean = false;
		 private var wasLoaded:Boolean = false;
 
		 //пораметры модели
		 private var brusHeight:Number = 47.6;//высота бруса
		 private var brusRadius:Number = 33.1;//длина 2-го бруса
		 private var allpha:Number = 60;//угол
		 private var v:Number = 0.0;//скорость
		 private var targetv:Number = 0.4;
		 private var pv:Array = [];
 
		 //установка камеры
		 public var cameraRadius:Number;
		 public var cameraRotationX:Number;
		 public var cameraRotationXold:Number;
		 public var cameraRotationZ:Number;
		 private var oldX:Number;
		 private var oldY:Number;
 
 
 
		 private const CAMERA_Y_RANGE:Number = 25;
		 private const CAMERA_X_RANGE:Number = 200;
		 private const CAMERA_DISTANCE_FAR:Number = 120;
		 private const CAMERA_DISTANCE_CLOSE:Number = 150;
		 private const MODEL_CENTER_X:Number = 7.21;
		 private const MODEL_CENTER_Y:Number = -8.05;
 
 
		 public function Main():void 
		{   
		 addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			var text:TextField = new TextField();
			text.multiline = true;
			text.wordWrap = true;
			text.text = "0-0==-==0650-6007-0opkjpkkp";
			this.addChild(text);
 
			initScene();
 
 
		}
 
		//модель 3d
		private function initScene():void {
			//создание сцены
			camera = new Camera3D();
			camera.view = new View(stage.stageWidth, stage.stageHeight);
			addChild(camera.view);
			cameraRadius = CAMERA_DISTANCE_CLOSE;
			//начальные позиции
			camera.rotationX = -130 * Math.PI / 180;
			camera.x = 200;
			camera.y = -200;
			camera.z = 150;
			contoller = new SimpleObjectController(stage, camera, 200);
			rootContainer.addChild(camera);
 
			contoller.lookAt(new Vector3D(0, 0, 100));
			loader3ds = new URLLoader();
			loader3ds.dataFormat = URLLoaderDataFormat.BINARY;
			loader3ds.load(new URLRequest("model4.3DS"));
			loader3ds.addEventListener(Event.COMPLETE,onLoadingComplete);
 
			//окно
			title = new title5();
			title.x = 800 / 2;
			title.y = -5;
 
			paramWinstate = SPIN;
			parametrs = new parameters5();
 
			parametrs.x = 0;
			var tabButton:MovieClip = parametrs.window.tab;
			//tabButton.addEventListener(MouseEvent.CLICK, tabPressed);
			tabButton.buttonMode = true;
 
			//пораметры модели
			//parametrs.window.speed.addEventListener(Event.CHANGE, onSpeedChange);
			//parametrs.window.speed.addEventListener(Event.CHANGE, onHeightChange);
			//parametrs.window.speed.addEventListener(Event.CHANGE, onRadiusChange);
			//parametrs.window.speed.addEventListener(Event.CHANGE, onAllphaChange);
 
			//parametrs.window.ok.addEventListener(MouseEvent.CLICK, onOK);
 
			parametrs.y = 600 / 2;
 
			helpWinstate = Main.UNSPIN;
			help = new help_panel();
 
 
			help.x = camera.view.width - help.width + 50;
			var tabButton2:MovieClip = help.window.tab;
			//tabButton2.addEventListener(MouseEvent.CLICK, tabPressed2);
			tabButton2.buttonMode = true;
			help.y = 600 / 2;
			//stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
 
			camera.view.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
			camera.view.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
			camera.view.addEventListener(MouseEvent.ROLL_OUT, onMouseUp);
			camera.view.addEventListener(MouseEvent.CLICK, onFullScreen);
 
			cameraRotationZ = camera.rotationZ;
			cameraRotationX = camera.rotationX;
			cameraRotationXold = camera.rotationX;
 
 
			}
 
			//вращение камеры
			private function onMouseDown(e:MouseEvent):void {
			oldX = camera.view.mouseX;
			oldY = camera.view.mouseY;
			camera.view.addEventListener(Event.ENTER_FRAME, onCameraMove);
			fullscreenTime = 0;
 
 
			}
 
			private function onMouseUp(e:MouseEvent):void {
 
			camera.view.removeEventListener(Event.ENTER_FRAME, onCameraMove);	
			cameraRotationZ= camera.rotationZ;
			cameraRotationXold = camera.rotationX;
 
			}
			private function onCameraMove(e:Event):void {
			fullscreenTime++;
			camera.rotationZ = cameraRotationZ + Math.PI / 2 * (camera.view.mouseX - oldX) / CAMERA_X_RANGE;
			camera.rotationX = cameraRotationXold + (camera.view.mouseY - oldY) / CAMERA_Y_RANGE / 20;
			if (camera.rotationX - camera.rotationX > CAMERA_Y_RANGE * Math.PI / 180) camera.rotationX = cameraRotationX + CAMERA_Y_RANGE * Math.PI / 180;
			if(camera.rotationX - camera.rotationX <-1.8* CAMERA_Y_RANGE * Math.PI / 180) camera.rotationX = cameraRotationX -1.8* CAMERA_Y_RANGE * Math.PI / 180;	
			}
			//полноэкранный режим
			private function onFullScreen(e:MouseEvent):void {
			if (fullscreenTime < FULLSCREEN_TRESHOLD)   switchFullscreen();
			}
			private function switchFullscreen():void {
			if (stage.displayState == StageDisplayState.NORMAL) {
			stage.displayState = StageDisplayState.FULL_SCREEN;
				}
			else
 
			  stage.displayState = StageDisplayState.NORMAL;
 
		    }
 
			//пораметры загрузки
			private function onLoadingComplete(e:Event):void {
			progress = new pbar();
			addChild(progress);
			progress.bar.scaleX = 0.0;
 
			progress.x = stage.stageWidth / 2 - progress.width / 2;
			progress.y = stage.stageHeight / 2;
 
 
			var parser:Parser3DS = new Parser3DS();
			parser.parse((e.target as URLLoader).data, "model4.3DS");
 
			for (var i:int = 0; i < parser.objects.length; i++){
			var mesh:Mesh = parser.objects[i] as Mesh;
 
			if (mesh.name == "Disk.Disk") Disk = mesh;
			if (mesh.name == "Disk")  Disk1 = mesh;
			if (mesh.name == "VertBrus")  vertBrus = mesh;
			if (mesh.name == "HorizBrus")  horizBrus = mesh;
 
			mesh.weldVertices();
			mesh.weldFaces();
			mesh.sorting = Sorting.DYNAMIC_BSP;
 
			rootContainer.addChild(mesh);
 
			}
 
			var matiRealLoader:MaterialLoader = new MaterialLoader();
			matiRealLoader.load(parser.textureMaterials);
			matiRealLoader.addEventListener(LoaderEvent.PART_COMPLETE, onMaterialProgress);
			matiRealLoader.addEventListener(Event.COMPLETE, onMaterialLoader);
			isStart = true;
 
	}
 
	private function onMaterialProgress(e:LoaderEvent):void {
 
		var percent:Number = e.currentPart / e.partsTotal;
		progress.bar.scaleX = percent;
	}
 
	private function onMaterialLoader(e:Event):void {
		wasLoaded = true;
		addChild(camera.view);
		addChild(parametrs);
		addChild(help);
		addChild(title);
		removeChild(progress);
 
	}
 
 
 
 
 
 
}
}
Вложения
Тип файла: rar models.rar (39.7 Кб, 16 просмотров)


Последний раз редактировалось k_elena; 11.06.2013 в 18:56.
Создать новую тему   Часовой пояс GMT +4, время: 15:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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