Posts tagged papervision
Embed 3D Modelo con PV3D
¿Que es Embed y como usarlo?
Embed: En traducción de ingles quiere decir "incrustar", real mente es lo que hace al pie de la letra al compilar nuestro archivo SWF.
Que tipo de archivos podemos incluir o incrustar? Bien real mente cualquier archivo o formato empezando desde Fonts hasta mp3, Video, Xml o otro tipos de datos...
Ejemplo de uso manera 1:
... esta manera seria la mas correcta, esta opción es mas usada en Flex ya que si se usaría la manera nº2 os saldría error al compilar.
Archivo "EmbedObj.as"
package { import flash.utils.ByteArray; //en la variable source asignamos la ruta hasta nuestro modelo 3D [Embed(source="3Dobj.DAE", mimeType="application/octet-stream")] public class EmbedObj extends ByteArray { public function EmbedObj():void { return; } } }
Archivo "embed.as"
package { import flash.events.*; import flash.utils.ByteArray; import org.papervision3d.objects.parsers.DAE; import org.papervision3d.view.BasicView; //Configuración de nuestro SWF desde Clase AS3 [SWF(width="500", height="400", backgroundColor="#ffffff", frameRate="60")] public class embed extends BasicView { //declaramos las variables private var collada:DAE; private var modelo:EmbedObj; public function embed():void { addEventListener(Event.ADDED_TO_STAGE, dm211_initStage); //____________________________________________________SET DEBUG CAMERA //interrumpimos el arranque básico de la clase BasicView y la reemplazamos con estos parámetros super(stage.stageWidth, stage.stageHeight, true, true, "Debug"); } private function dm211_initStage(event:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, dm211_initStage); //____________________________________________________COLLADA CALL //invocamos nuestro modelo 3D var _loc:ByteArray = new EmbedObj(); collada = new DAE( false ); //cargamos el contenido Embed collada.load( _loc ); //añadimos el elemento en el Stage scene.addChild( collada ); //____________________________________________________START RENDERING startRendering(); } } }
Resultado:
Ejemplo de uso manera 2:
Aquí asignamos directamente la clase al Embed, en vez de crear un archivo para ello.
Archivo "embed.as"
package { import flash.events.*; import flash.utils.ByteArray; import org.papervision3d.objects.parsers.DAE; import org.papervision3d.view.BasicView; //Configuración de nuestro SWF desde Clase AS3 [SWF(width="500", height="400", backgroundColor="#ffffff", frameRate="60")] public class embed extends BasicView { //declaramos las variables private var collada:DAE; //incluimos el Embed y le asignamos una Clase [Embed(source="3Dobj.DAE", mimeType="application/octet-stream")] private var modelo:Class; public function embed():void { addEventListener(Event.ADDED_TO_STAGE, dm211_initStage); //____________________________________________________SET DEBUG CAMERA //interrumpimos el arranque básico de la clase BasicView y la reemplazamos con estos parámetros super(stage.stageWidth, stage.stageHeight, true, true, "Debug"); } private function dm211_initStage(event:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, dm211_initStage); //____________________________________________________COLLADA CALL //invocamos nuestro modelo 3D y cargamos la clase como ByteArray var _loc:ByteArray = new modelo() as ByteArray; collada = new DAE( false ); //cargamos el contenido Embed collada.load( _loc ); //añadimos el elemento en el Stage scene.addChild( collada ); //____________________________________________________START RENDERING startRendering(); } } }
Resultado:
Conclusión: Gracias a Embed podemos incluir datos que no aparecerán con Decompiler, aunque el archivo final pese algo mas...
![[Dm211] [Dm211]](http://blog.dm211.com/wp-content/themes/mystique-extend/uploads/dm211_2k11_logoShaded_102.png)