Blog

Medidores FPS (FrameRates)

En Internet rondan varios tipos de medidores de FPS "Frames Per Second - Fotogramas Por Segundo"
los podemos encontrar de todos los colores y hasta con gráficas en tiempo real.

1) Viene incluido con PV3D - Papervision 3D "ascollada"
Nos muestra FPS, Mili segundos y Uso de memoria representada por una barra roja por de-abajo del texto.
un ejemplo rápido de uso:

package
{
	import org.ascollada.utils.FPS;
 
	public class main extends Sprite
	{
		public function main():void
		{
			//creamos en el stage
			addChild( new FPS() );
		}
	}
}


Resultado:
ascollada

2) Este es escrito por mr.doob
Esta clase incluye gráfica en tiempo real que nos representa el uso de Memoria Usada, Memoria Disponible, Fotogramas, Mili segundos
un ejemplo rápido de uso:

package
{
	import net.hires.debug.Stats;
 
	public class main extends Sprite
	{
		public function main():void
		{
			//creamos en el stage
			// Stats(__THEME PARAMS__)
			// theme params: { bg: 0x202020, fps: 0xC0C0C0, ms: 0x505050, mem: 0x707070, memmax: 0xA0A0A0 }
			addChild( new Stats() );
		}
	}
}


Resultado:
mrdoob

3) Es escrito por Oaxoa
Este clase nos muestra los FPSes y uso de memoria representada con una gráfica linear.
un ejemplo rápido de uso:

package
{
	import com.oaxoa.components.FrameRater;
 
	public class main extends Sprite
	{
		public function main():void
		{
			//creamos en el stage
			// FrameRater(__PARAMS__)
			// params: textColor:uint=0x000000, drawShadow:Boolean=false, showGraph:Boolean=true, graphColor:uint=0xff0000
			addChild( new FrameRater(0x000000, true, true) );
		}
	}
}


Resultado:
Oaxoa

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:

This movie requires Flash Player 10

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:

This movie requires Flash Player 10

Conclusión: Gracias a Embed podemos incluir datos que no aparecerán con Decompiler, aunque el archivo final pese algo mas...

Líneas flexibles y Repulsion (As3)

This movie requires Flash Player 10

Descargar Source

(more...)

FL10 2D vs. PV3D (Primer Test)

Después de que el Mr. Doob y Román Cortés han publicado el Código Abierto de su proyecto. Que básicamente se trata de renderizar pixel a pixel las coordenadas X,Y y Z en entorno Flash.

Direcciones de interes:
http://mrdoob.com/blog/post/571
http://www.romancortes.com/blog/voxel-head-in-flash/
http://mrdoob.com/79/Voxel_Head

He decidido seguir el experimento. Para ello he creado un simple código para convertir el archivo .v con compression "Zlib" a simple tabla de coordenadas sin ninguna compresión.

v2csv

Descargar Air Converter c2csv, Descargar Proyecto comprimido en Zip

Después de la conversión de archivos toca representar los resultados obtenidos. He usado misma Tecnologia "Flash"  pero con ligera molificación en código, ya que en el proyecto Voxel_Head el Mr. Doob ha usado cálculos matemáticos para obtener el radio de una esfera imaginatoria, y luego ha colocado los pixels correspondientes alrededor de ella. Mi código interpreta las coordenadas directamente en el espacio 3D gracias al componente PaperVison3D. Final mente he obtenido un resultados algo penoso. Ya que con las mismas condiciones que el Voxel_Head, solo he conseguido renderizar con una media de 5fps - 7fps.

vox_test_pv3d_v0001_3
vox_test_pv3d_v0001_2
vox_test_pv3d_v0001_1
Descargar Proyecto en Zip

Vox (PV3D Pixel3D – Processing)

Hace ya un tiempo se han publicado los Archivos Open Source del proyecto del video clip RADIOHEAD House o_f Cards que fue realizado con herramientas Open Source como Lenguaje

Processing es un lenguaje y entorno de programación de código abierto basado en Java, de fácil utilización, y que sirve como medio para la enseñanza y producción de proyectos multimedia e interactivos de diseño digital. Fue iniciado por Ben Fry y Casey Reas a partir de reflexiones en el Aesthetics and Computation Group del MIT Media Lab.

Processing es desarrollado por artistas y diseñadores como una herramienta alternativa al software propietario. Puede ser utilizado tanto para aplicaciones locales así como aplicaciones para la web (Applets).

Al estar basado en Java, puede heredar todas sus funcionalidades, convirtiéndose en una herramienta poderosa a la hora de encarar proyectos complejos.

El ví­deo clip fue grabado con unas cameras y sensores especiales que emiten y vuelven a captar ultrasonido, registrando todo su alrededor. Si nos descargamos los archivos zip de la página nos encontramos con unos dos-mil archivos de texto (.csv). Bien cada archivos corresponde a un fotograma que se reproduce a unos (30 fps). Dentro de cada archivo encontramos unos números separados por comas, cada número corresponde a coordenadas X,Y,Z y Intensidad de cada Pixel que final mente forma una imagen en entorno 3D.

Una vez interpretado todos los coordenadas aparece una imágen como acontinuación...

This movie requires Flash Player 10

El proyecto se ha elaborado con Tecnologia Flash Action Script 3 (AS3) y con PaperVision3D que me servio como entorno 3D para interpretar coordenadas 3D.

(more...)

Como añadir, modificar o reemplazar UVW en ZBrush

En el modelado 3D siempre debe de haber un orden de pasos a seguir, al contrario haremos trabajo doble o incluso varias veces... Todo depende cuanto cabezudos sois :)

Pondré dos ejemplos de pasos que finalmente nos llevaran al mismo sitio.

1) Creamos un modelo low poly en vuestro programa favorito ya sea (Max,Maya,Modo, etc) no tiene importancia, y lo exportáis a ZBrush 3.1. Una vez dentro trabajamos el modelo con todos los detalles posibles. Evidente mente ya os habeis gastado unas horas o unos días de vuestro tiempo y esfuerzo. Y es cuando os dais cuenta que, antes de importar el objeto no habeis hecho el UVW Unwrap :( aquí es donde entra desaparición y perdida de ganas a seguir con el modelo y con 3D en general.

2) Creais un modelo directa mente en el ZBrush a base de sheips y objetos básicos. ZBrush por defecto solo puede hacer UV mapping de un par de maneras básicas, cuales en nuestro caso no nos servirán para modelos mas complejos.

Bien en este punto coinciden los dos ejemplos expuestos: ¿Donde, como asigno o modifico UV maps?

No hace falta buscar ya que ZBrush no tiene ningun modo ni editor para tal.

Entonces surge siguiente pregunta como los creo? Bien aquí es donde empieza todo el follon.

ZBrushLogo_zbrush
• Dentro de la solapa Texture del menu de la derecha activamos la tecla EnableUV.zbrushUv_1_uvEnable

• En solapa Geometry bajamos las SDiv (Sub Division) a 1, osea a nivel básico Low Poly.

zbrushUv_2_dwnSDiv

• Tambien activamos el buton StoreMT (Store MorphTarget) de la solapa Morph Target. Esta opción sirve mas que nada para fijar la pozición del objeto.

zbrushUv_3_Morph
• Y finalmente le damos al botón Export de la primera solapa Tools. Exportamos como formato .OBJ ya que es un formato bastante utilizado.

zbrushUv_4_export

NOTA: Muy Importante! No modificar los vertices ni la estructura en general del modelo!

Método con el ModoLogo_modo
Abrimos Modo, en el menú de arriba clicamos File y Import.
Luego clicamos en la solapa UV que se encuentra justo encima del viewport.

modo1_import
modo2_uvSolapa

En el menú de la derecha aparecerá una especie de menú des plegable donde habrá objeto Mesh , Directional Light, Camera y una carpeta Default dentro del cual habrá otro objeto Mesh(2). Bien arrastramos este Mesh(2) encima del Mesh y borramos la carpeta Default. Apretamos sobre Mesh(2), ya que sera el objeto con cual vamos a trabajar.

modo3_1

Apretamos al botón Edges y seleccionamos las lineas que serán el corte de UVs.

modo4_edges

Una vez teniendo seleccionado las lineas deseadas, nos dirigimos a menú de arriba Texture -> UV Tools -> Unwrap Tool , con el click izquierdo sobre la ventna de UV abierta anteriormente y arrastramos hacia izquierda o derecha, nos aparecerá el recorte  de nuestro modelo.

modo5_uvw
modo5_1

En cuando acabamos de modificar el UV map, nos dirigimos al menú Files y apretamos sobre  ExportAs.

Nos aparecerá una ventana de información "OBJ only supports geometry and simple texturing. Partial UVs are omitted." Presionamos sobre el buton Save.

modo6_1

Método con el 3DsMax 2010Logo_MAx
· Abrimos Max2010, nos dirigimos al menú y seleccionamos Import, en la siguiente ventana que nos aparecerá (OBJ Import Options), seleccionamos las siguientes casillas: Reset scene, Import as Editable Poly

Geometry: Flip ZY-axis, Texture coordinates, Smoothing groups
Normals: Import from file
Material: Import materials, Import into Mat-Editor

max1_import
max1_1

En el lado derecho, dentro de la segunda solapa apretamos sobre Editable Poly y seleccionamos nuevo modificador (Unwrap UVW).

max2_2

Una vez acabamos de modificar el mapa, colapsamos el Unwrap UVW con botón derecho del ratón.

max3_colapse all

De nuevo hacemos  File -> Export -> Export Seleceted del objeto ya modificado. El cual final mente importaremos en el ZBrush.

max4_export

ZBrushLogo_zbrush
Aquí vuelve a coincidir los dos ejemplos expuestos anteriormente. Lo primero de todo importamos el modelo modificado.

modo-z import

Para comprobar que real mente los UVs se han modificado nos dirigimos a la solapa Texture y apretamos al botón Uv Check (Uv Check Overlapping), también podéis apretar el botón de al lado Uv>Txr (Uv to Texture) que genera una textura de colores al cual la asigna al modelo

modo-z import3
modo-z import4

Si el modelo se ha desplazado hacia algún lado nos dirigimos a la solapa Morph Target y apretamos sobre el botón Switch. Automaticamente el modelo vuelve a su posicion original al cual lo hemos tenido antes de exportar.

Portfolio Planing Update 2 (Primera Imagen)

Los primeros screens de mi nuevo portfolio 2009-2010. Hecho en Flash (AS3) con WordPress como base de administración.

Utilizare XML como base de comunicacion entre los dos sistemas e lenguajes de programación.

Main Clip

Category Image Asociation v0.6.6

Descripcion:  Este plugin se encarga de asignar imagen desde librería o url externa. También se puede asignar url a la dicha imagen.

Manejo: "Post -> Category Image" Aqui es donde podemos asignar o asociar una imagen a una categorí­a especifica.

Conflagración: "Settings -> Category Image"

  1. Url local de la carpeta que contiene imagenes.
  2. Url completa  de la carpeta que contiene imagenes.
  3. Tipo de las imagenes que vamos a mostrar (JPG,GIF,PNG ...).
  4. Alto y Ancho de la imagen que se mostrara en el template.
  5. Alto y Ancho de la imagen preview dentro del menu.
  6. Calidad de imagenes.
  7. Opción Global Target (_blank, _self, _top, _parent).
  8. El plugin incluye de checkeo del UpDate, con cual os permitirá estar al dí­a.
  9. Crea thumb al vuelo.
  10. Carga de archivos desde disco duro.


El codigo a añadir dentro del Template

 
<div id="cat-<?php echo $i; ?>" class="category">
<div>
		< ?php echo showon_outer($category); ?></div>
 
< ?php query_posts("showposts=1&amp;cat=$category"); ?>
<span class="cat_title"><a href="<?php echo get_category_link($category);?>" >< ?php single_cat_title(); ?></a></span>
		<a href="<?php echo get_category_link($category);?>">< ?php echo category_description($category); ?></a></div>
 

Descargar Plugin para WordPress

Portfolio Planing Update

Mini presentación de nueva actualizacion del Porfolio.
Usare WordPress como motor de administración para el control de contenido.
La pagina seguirá estando en Flash pero esta vez estará escrita en Action Script 3 con Papervision3D.

¿Que es Papervision3D?
Papervision es una librerí­a class que permite crear y usar entorno 3D dentro de Flash.

Realmente la transformación ya ha comenzado.

Esto son los pasos que voy a seguir:

  1. Creación y adapción de WordPress
  2. Creación de Plugins necesarios para WordPress
  3. Creación de 3D para Flash
  4. >Flash Programación
  5. Beta testing
ZD YouTube FLV Player

WordPress 2.7.1 Solucion a HTTP error al utilizar Flash Uploader

Nomas instalar el WordPress, me he encontrado con el problema al subir archivos atravez de Flash UpLoader, que esta integrado por defecto.

Usar el uploader del browser no me hizo mucha gracia, ya que solo permite subir un archivo.

La solución al problema:

1) Abrimos nuestro FTP Cliente y nos conectamos a nuestro WEB.

2) nos dirigimos al dirictorio donde esta instalado el WordPress.

3) dentro del directorio principal creamos un nuevo archivo llamado ".htaccess".

contenido del ".htaccess"

#BEGIN Image Upload HTTP Error FixSecFilterEngine Off
SecFilterScanPOST Off
 
SecFilterEngine Off
SecFilterScanPOST Off
 
SecFilterEngine Off
SecFilterScanPOST Off
 
#END Image Upload HTTP Error Fix

Descargar Source

Go to Top