Форум 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 Кб, 15 просмотров)


Последний раз редактировалось k_elena; 11.06.2013 в 18:56.
Старый 11.06.2013, 12:25
vorodis2 вне форума Посмотреть профиль Отправить личное сообщение для vorodis2 Найти все сообщения от vorodis2
  № 2  
Ответить с цитированием
vorodis2

Регистрация: Feb 2011
Адрес: Украина Днепропетровск
Сообщений: 106
http://a3dplayer.com/
Там можно загрузить код вставки Вашей модели.

Старый 11.06.2013, 18:59
k_elena вне форума Посмотреть профиль Отправить личное сообщение для k_elena Найти все сообщения от k_elena
  № 3  
Ответить с цитированием
k_elena

Регистрация: Jun 2013
Сообщений: 4
vorodis2, спасибо что откликнулись! Не могли бы Вы пояснить - "загрузить код вставки"?

Старый 11.06.2013, 19:32
vorodis2 вне форума Посмотреть профиль Отправить личное сообщение для vorodis2 Найти все сообщения от vorodis2
  № 4  
Ответить с цитированием
vorodis2

Регистрация: Feb 2011
Адрес: Украина Днепропетровск
Сообщений: 106
Там можно загрузить модель + текстуры. А потом это скачать как проект, по моему сразу под FlashDevelop. То есть они Вам в архиве зашют папку в которой есть главный класс и ваша модель

Старый 11.06.2013, 19:45
NikolyA вне форума Посмотреть профиль Отправить личное сообщение для NikolyA Найти все сообщения от NikolyA
  № 5  
Ответить с цитированием
NikolyA
 
Аватар для NikolyA

Регистрация: Dec 2006
Сообщений: 1,764
k_elena заходим по ссылке вьювера, грузим модель, так же не забываем добавлять к своей модели текстуры, затем когда все загрузилось, смотрим все ли в порядке, после чего жмем кнопку Export to A3D, а после уже когда получили классы, создаем воспроизводим у себя в проекте все это, так же не забываем подключать библиотеки Alternativa3D
__________________
а за окном атлантический океан!

Старый 12.06.2013, 01:22
k_elena вне форума Посмотреть профиль Отправить личное сообщение для k_elena Найти все сообщения от k_elena
  № 6  
Ответить с цитированием
k_elena

Регистрация: Jun 2013
Сообщений: 4
vorodis2, NikolyA - ребята, огромное спасибо за помощь! Все получилось! Осталось разобраться как заставить модель вращаться... Очень надеюсь на Вашу поддержку! Еще раз спасибо!

Старый 12.06.2013, 02:46
NikolyA вне форума Посмотреть профиль Отправить личное сообщение для NikolyA Найти все сообщения от NikolyA
  № 7  
Ответить с цитированием
NikolyA
 
Аватар для NikolyA

Регистрация: Dec 2006
Сообщений: 1,764
а разве в генерируемом классе нету описания данной функции?
__________________
а за окном атлантический океан!

Старый 12.06.2013, 16:58
k_elena вне форума Посмотреть профиль Отправить личное сообщение для k_elena Найти все сообщения от k_elena
  № 8  
Ответить с цитированием
k_elena

Регистрация: Jun 2013
Сообщений: 4
что-то я не нашла описания этой функции... может не там искала. Пока не получается ее вращать...

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

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

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


 


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


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