![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+1 02.03.11]
|
Здравствуйте.
Моделирую в 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 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 ); } } //....... <?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.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. |
|
|||||
|
[1 24.04.2006]
Регистрация: Jul 2005
Сообщений: 29
|
У меня похожая задача стоит.
Нужно сделать вращающийся куб, на каждой грани которого фотография. Вращение куба отрендерил в Swift3D. Но в самой программе нет возможности наложить свои фотографии на грани. Подгрузка извне не нужна. все нужно в одном свф. Как лучше это реализовать?
__________________
Вспышечник |
|
|||||
|
[+1 02.03.11]
|
|
|
|||||
|
[+1 16.03.10]
Регистрация: Feb 2010
Адрес: align=center
Сообщений: 80
|
А у меня еще есть такой вопросик...подскажите плиз... )
по нажатию на кнопку загружаю swf сделанный в 3dSwift, а у меня там ничего не крутится...просто пустые кнопки вылазиют(
__________________
я только учусь...))) |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:35. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|