Processing AS3 [Gas mask]

Los datos del Milk Scan / Scan con líquidos también se pueden usar para pre visualizar en processing.
En este ejemplo he reducido el archivo ya que el archivo original ocupa mas de 12Mb.
He usado el código Action Script 3 con Classes de PaperVision 3D creado anteriormente, solo que modificando algún que otro parámetro.

Descargar el Source

Preparación del modelo para Stereolithography [Gas mask]

Modelo debe presentar una malla triangular (en max podemos usar un modificador llamado “subDivide”) que nos transforma nuestra malla en una malla triangular, el modelo debería presentar las dos caras externa y interna. las paredes deberían de ser de un grosor de unos 2mm como mínimo. Todos los splines deberían de estar cerrados ya que puede presentar algún error en la impresión.

Descargar modelo en formato (.OBJ / .STL)

Todo el proyecto fue realizado en IaaC (Institut d’arquitectura avançada de Catalunya) – Fab Lab Barcelona

Re modelado [Gas mask]

Modelado 3D con Max 2009 o 2010: Antes de nada unimos todas las capas en una haciendo un (attach) y lo convertimos en editablePoly. Los vértices nos servirán para crear una malla aproximada (en este modelo no hace falta seguir ningún patrón de malla). Separamos los Polygonos creados del objeto y ocultamos el objeto anterior ya que los vértices ya no los vamos a necesitar.

Plugin:
Max 2009) En todas las versiones anteriores a Max 2010 vamos a necesitar plugin llamado  PolyBoost (http://www.polyboost.com).

Max 2010) ¿Porque en esta versión no nos hace falta dicho plugin? R:En Max2010 ya lo tiene incluido y lo podemos encontrar en los subTabs situados en la parte superior justo por de-abajo  del  menú Poly > PolyDraw. Este plugin nos amplia los métodos del modelado. Lo usaremos para crear una malla correcta a partir del objeto creado desde vértices.

Escaneo con líquidos [Gas mask]

WorkShop (Carlos Castro Prieto)

Escaneamos una mascara de Gas de un tamaño aproximado de 40 x 20cm, que fue sumergido en agua con tinte negro, sobre una superficie solida e en una cubeta de plástico. Para la iluminación básica usamos un foco de 200w – 400w situado por encima del objeto. Para las fotos usamos una camera profesional Canon EOS 400D DIGITAL con una lente de 51mm. En total se tomaron 97 fotos de alta resolución. La separación de entre capas fue de 1mm.

Material: objeto a escanéar, liquido (leche, vinagre, cocacola, o agua con un tinte negro) , camera, recipiente y algún tipo de iluminación, ya que el objeto no puede tener sombras si no puede perder la forma real.
El proceso es muy simple, se sumerge el objeto o partes de el en el liquido que genera contorno del objeto. El nivel de líquidos tiene que ir subiendo proporcionalmente (1mm ~ 1cm) siempre dependiendo del detalle que queramos obtener.
Proceso a seguir:
Preparación:
  1. Preparar el escenario
  2. Tomar fotos desde (Top View)
  3. Vectorización y conversión  al formato .dxf (.cad) 3-1. Retoque de las foto PhotoShop Cs4 (script) 3-2. Vector Magic (http://vectormagic.com/). El Vector Magic nos crea los vectores de forma automática.
  4. Importar archivos en cualquier soft 3D
  5. Separar las capas una de otra, modificar la coordenada correspondiente ”Z”

Descargar ejemplo de uno delos archivos .dxf

I’m on REC Zine

Solo hace unos días que salio el tercer número de la revista REC Zine, es una revista digital que trata o más bien recopila a gente de todo el mundo y de todos los ámbitos.

rec zine

http://reccomunidad.com/

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…

El Convento Maquetación CSS TIME LAPSE

Un pequeño vídeo de proceso de maquetación HTML y CSS1,2
Web soporta siguientes navegadores: IE6-8, FireFox, Chrome 1,2, Opera 8,9,10, Safari

Web disponible en: http://www.proyectosculturales.com/elconvento2/

Líneas flexibles y Repulsion (As3)

This movie requires Flash Player 10

Descargar Source

Read the rest of this entry »

Dm211 As3 Libreria de Classes en Google Code

dm211_aviableOnGoogleCode

Ya están disponibles todas las Classes creadas en Action Script 3 (Adobe Flash/Flex/Flash Builer), en Google Code.