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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.01.2010, 16:28
vector3d вне форума Посмотреть профиль Отправить личное сообщение для vector3d Найти все сообщения от vector3d
  № 1  
Ответить с цитированием
vector3d
[+1 02.03.11]

Регистрация: Nov 2005
Адрес: г.Воронеж
Сообщений: 139
Отправить сообщение для vector3d с помощью ICQ Отправить сообщение для vector3d с помощью Skype™
Здравствуйте.

Моделирую в 3dmax-е, перегоняю через Swift3D в *.fla файл (экспорт в Papervision3D).

Задумался, как встроить dae, jpg файлы на этапе компиляции, что бы файл new.swf при запуске, не подгружал dae, jpg файлы а хранил всю структуру 3d объектов и все текстуры внутри swf-ки.

Так вот, new3.dae встроить смог (исходник ниже):
http://www.game.30fps.ru/new3.rar
Добавил [Embed(source="01Default.jpg")] встраивания 01Default.jpg.

Не могу изменить код чтобы фото было опознано текстурой.

Для компиляции проекта понадобиться:
- Adobe Flash CS4 Professional
- Для использования [Embed] Flash CS4 потребуется flex_sdk_3

Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.utils.ByteArray;
 
	import flash.utils.Dictionary;
 
	import org.ascollada.*;
 
	import org.papervision3d.cameras.*;
	import org.papervision3d.materials.*;
	import org.papervision3d.materials.utils.*;
	import org.papervision3d.materials.shadematerials.*;
	import org.papervision3d.objects.*;
	import org.papervision3d.objects.parsers.*;
	import org.papervision3d.lights.*;
	import org.papervision3d.scenes.*;
	import org.papervision3d.render.*;
	import org.papervision3d.view.*;
	import org.papervision3d.core.*;
	import org.papervision3d.core.math.*;
	import org.papervision3d.core.proto.*;
	import org.papervision3d.events.FileLoadEvent;
 
	import mx.core.BitmapAsset; 
 
 
	public class ERMain extends MovieClip
	{
 
 
		[Embed(source="new3.dae", mimeType="application/octet-stream")] 
		private var BinaryData:Class;
 
		[Embed(source="01Default.jpg")]
		private var Photo:Class;
 
 
 
		// Member variables
		public var mCamera						:Camera3D;
		public var mCollada						:DAE;
		public var mSceneCenter					:Number3D;
		public var mRenderer					:BasicRenderEngine;
		public var mViewport					:Viewport3D;
		public var mLight						:PointLight3D;
 
		private var mContainer					:Sprite;
 
		private var mRadius						:Number;
		private var mRootNode					:DisplayObject3D;
		private var mRotationAnchor				:Number3D;
 
		private var mScene						:Scene3D;
 
		private var mTarget						:DisplayObject3D;
 
		private var mWheelZoomAmount			:Number				= 1.10;
 
 
 
 
		// Создаем новый экземпляр встроенных данных 
		var byteArray:ByteArray = new BinaryData( ); 
		// Преобразуем экземпляр данных в XML-файл 
		var data:XML = new XML(byteArray.readUTFBytes(byteArray.length)); 
 
		// Растровое изображение, встраиваемое 
		// на уровне переменной 
		var photo:BitmapAsset = new Photo();
		//addChild(photo);
 
 
 
		// Constructor for the ERMain class
		public function ERMain()
		{
 
 
			addChild(photo);
 
 
			stage.quality = "HIGH";
			stage.scaleMode = "noScale";
 
			// 3D redraw mechanism as the 3D scene is manipulated
			this.addEventListener( Event.ENTER_FRAME, EROnEnterFrame );
 
			// Set the event handlers for the mouse to the stage so we will
			// handle all mouse events not just those that click on a display
			// object in this class.  These event handlers handle the interactive
			// rotation and mouse wheel zooming.
			stage.addEventListener(MouseEvent.MOUSE_DOWN, ERMouseDownHandler);
			stage.addEventListener(MouseEvent.MOUSE_UP, ERMouseUpHandler);
			stage.addEventListener(MouseEvent.MOUSE_WHEEL, ERMouseWheelHandler);
 
			mRotationAnchor = new Number3D;
 
			// Perform the 3D initialization.
			ERInitialize();
		}
 
 
		// This method creates and initializes the 3D scene.
		private function ERInitialize():void
		{
			// Create canvas movieclip and center it
			this.mContainer = new Sprite();
			addChild( this.mContainer );
			this.mContainer.x = 275;
			this.mContainer.y = 200;
 
			this.mViewport = new Viewport3D(550, 400, true, true);
			addChild( mViewport );
 
			this.mRenderer = new BasicRenderEngine();
 
			// Create Scene
			this.mScene = new Scene3D( );
 
 
 
			this.mTarget = new DisplayObject3D ( );
 
			// Create Camera.  Camera is based on selected Swift 3D camera at the time of export.
			this.mCamera = new Camera3D();
			this.mCamera.x = 284.737;
			this.mCamera.y = 150.599;
			this.mCamera.z = -245.317;
 
			this.mTarget.x = 72.0461;
			this.mTarget.y = 71.2281;
			this.mTarget.z = -53.8092;
 
			this.mCamera.zoom   = 1.0;
			this.mCamera.fov    = 45;
			this.mCamera.target = this.mTarget;
 
			// Establish the scene center to ensure all rotations
			// occur about that center.
			this.mSceneCenter = new Number3D;
			this.mSceneCenter.x = -20;
			this.mSceneCenter.y = 30;
			this.mSceneCenter.z = 45;
 
			this.mLight = new PointLight3D;
			this.mLight.x = 0;
			this.mLight.y = 0;
			this.mLight.z = 0;
 
			mCollada = new DAE( );
			mCollada.addEventListener(FileLoadEvent.LOAD_COMPLETE, EROnFileLoaded, false, 0, true);
			mCollada.load(data);			
 
			mRootNode = mScene.addChild( mCollada, "mRootNode" );
			}
 
 
 
 
		// The next three functions will turn all of the materials to double sided.
		private function EROnFileLoaded( event :Event ):void
		{
			var lMaterialsList:Object = mCollada.materials;
 
			if ( lMaterialsList )
			{
				for each ( var lMaterial:MaterialObject3D in lMaterialsList )
 
					lMaterial.doubleSided = true;
			}
 
 
			var lChildren:Dictionary = Dictionary (mCollada.children);
			ERProcessChildrenMaterials ( lChildren );
		}
 
		private function ERProcessChildrenMaterials ( aChildren:Dictionary ):void
		{
			if ( aChildren )
			{
				for each ( var lChild:DisplayObject3D in aChildren )
					ERProcessChildMaterials ( lChild );
			}
 
			var lChildren:Dictionary = Dictionary (mCollada.children);
		}
 
		private function ERProcessChildMaterials( aChild:DisplayObject3D ):void
		{
			if ( aChild )
			{
				if ( aChild.materials )
				{
					for each ( var lMaterial:MaterialObject3D in aChild.materials.materialsByName )
 
						lMaterial.doubleSided = true;
				}
 
				var lChildren:Dictionary = Dictionary (aChild.children);
				ERProcessChildrenMaterials ( lChildren );
			}
		}
//.......
new3.dae:
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
	<asset>
		<contributor>
			<authoring_tool>Swift 3D 1.0 for Papervision3D</authoring_tool>
		</contributor>
		<created>2010-01-15T14:32:14Z</created>
		<modified>2010-01-15T14:32:14Z</modified>
		<up_axis>Z_UP</up_axis>
	</asset>
	<library_images>
		<image id="01Default-Image" name="01Default-Image">
			<init_from>01Default.jpg</init_from>
		</image>
		<image id="09Default-Image" name="09Default-Image">
			<init_from>09Default.jpg</init_from>
		</image>
	</library_images>
	<library_effects>
		<effect id="01Default-fx">
			<profile_COMMON>
				<newparam sid="01Default-Surface">
					<surface type="2D">
						<init_from>01Default-Image</init_from>
						<format>A8R8G8B8</format>
					</surface>
				</newparam>
				<newparam sid="01Default-Sampler">
					<sampler2D>
						<source>01Default-Surface</source>
						<minfilter>LINEAR_MIPMAP_LINEAR</minfilter>
						<magfilter>LINEAR</magfilter>
					</sampler2D>
				</newparam>
//........
Вот этот пример http://shooter2.30fps.ru/new4.swf подгружает файлы:
http://shooter2.30fps.ru/new4.dae
http://shooter2.30fps.ru/01Default.jpg
http://shooter2.30fps.ru/09Default.jpg

Следущий пример http://game.30fps.ru/new3.swf ничего не подгружает, но в нём я не знаю как изменить код для того чтобы он брал фотки внутринние и накладывал их на обьекты.

http://www.game.30fps.ru/new3.rar

Для компиляции проекта понадобиться:
- Adobe Flash CS4 Professional
- Для использования [Embed] Flash CS4 потребуется flex_sdk_3


Смысл в том, что бы файл new.swf при запуске, не подгружал dae, jpg файлы а хранил всю структуру 3d обьектов + текстуры внутри swf-ки.
Изображения
 


Последний раз редактировалось vector3d; 17.01.2010 в 03:43.
Старый 25.02.2010, 10:49
Dozore вне форума Посмотреть профиль Отправить личное сообщение для Dozore Найти все сообщения от Dozore
  № 2  
Ответить с цитированием
Dozore
[1 24.04.2006]
 
Аватар для Dozore

Регистрация: Jul 2005
Сообщений: 29
У меня похожая задача стоит.
Нужно сделать вращающийся куб, на каждой грани которого фотография.
Вращение куба отрендерил в Swift3D. Но в самой программе нет возможности наложить свои фотографии на грани.
Подгрузка извне не нужна. все нужно в одном свф.
Как лучше это реализовать?
__________________
Вспышечник

Старый 02.03.2010, 17:30
vector3d вне форума Посмотреть профиль Отправить личное сообщение для vector3d Найти все сообщения от vector3d
  № 3  
Ответить с цитированием
vector3d
[+1 02.03.11]

Регистрация: Nov 2005
Адрес: г.Воронеж
Сообщений: 139
Отправить сообщение для vector3d с помощью ICQ Отправить сообщение для vector3d с помощью Skype™
http://easyflash.org/flashlearn/flat...rvision3d.html

Держи брат

Старый 03.03.2010, 23:31
chabapok вне форума Посмотреть профиль Отправить личное сообщение для chabapok Найти все сообщения от chabapok
  № 4  
Ответить с цитированием
chabapok

Регистрация: Jul 2009
Сообщений: 240
Записей в блоге: 1
попробуйте так:

Код AS3:
[Embed(source="01Default.jpg")]
public class myName extends BitmapData{тралала}

Старый 16.03.2010, 17:49
belai вне форума Посмотреть профиль Отправить личное сообщение для belai Найти все сообщения от belai
  № 5  
Ответить с цитированием
belai
[+1 16.03.10]
 
Аватар для belai

Регистрация: Feb 2010
Адрес: align=center
Сообщений: 80
А у меня еще есть такой вопросик...подскажите плиз... )
по нажатию на кнопку загружаю swf сделанный в 3dSwift, а у меня там ничего не крутится...просто пустые кнопки вылазиют(
__________________
я только учусь...)))

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

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

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


 


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


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