Avatar - La Película

lunes, diciembre 21, 2009
Acabo de ver en el cine "Avatar", una película que me pareció muy buena y de la cual quisiera comentar algunas cosas (no se preocupen que no les malograré la película). Trata sobre un futuro en el que los humanos realizan viajes por el espacio, encontrando nuevas tierras y explotando lo que les sirve, así llegan a Pandora que es un planeta-selva con bastante verde en el cual viven unas criaturas llamadas Na'vi, que son unos humanoides azules que viven en profunda armonía con su planeta. Se arma la pelea cuando los humanos deciden desalojarlos de su hogar ya que viven exactamente sobre el mejor yacimiento de un mineral que vale millones (¿será por la inflación?). Bueno para negociar el desalojo crearon unos Avatar (cuerpos de nativos manejados por humanos) para facilitar la integración con los locales. Como podía esperarse, al final trataron de sacarlos a la mala.


Hay varias cosas interesantes, como la habilidad de los nativos para hacer un vínculo con otros seres vivos, y me refiero a vincularse literalmente ya que tienen entre sus cabellos unos flagelos que se conectan con los de otros seres logrando una conexión mental. Me gustó la manera en que están conectados todos los seres en Pandora, cuando vean la película entenderán un poco más.
Otra cosa interesante es la perspectiva que se tiene; una raza llega a un lugar en el que habitan nativos menos avanzados (habría que definir que cosa es ser avanzado) y realiza un genocidio para conseguir lo que quiere sin respetar nada. Esto se ha visto constantemente en la historia humana, aquí en Perú se dió cuando llegaron los españoles y acabaron con la cultura inca. En esta película los humanos somos los malos (bueno no todos).
Ahora vamos a detalles más técnicos, la película fue escrita, producida y dirigida por James Cameron, quien ha tenido otros grandes proyectos como Titanic y Terminator.
La historia para esta película fue escrita en 1995 pero Cameron tuvo que esperar a que la tecnología de efectos especiales y animación por computadora lleguen al nivel que necesitaba.Se planeaba usar actores hechos totalmente en computadora aunque finalmente se usaron actores reales haciendo una captura de actuación.
Hay un juego de video sobre esta película hecho por Ubisoft, aunque entiendo que juegas del lado de los humanos, osea de los malos; hubiera sido mucho mejor usar a los na'vi.
Se planean hacer 2 películas más, lo cual espero que se cumpla pues tengo muchas ganas de ver qué más tiene para ofrecer esta historia.



Efecto de Nieve en ActionScript 3.0

lunes, diciembre 14, 2009
Crear un efecto de nieve usando ActionScript es bastante sencillo. A grandes rasgos consiste en establecer una zona en la cual va a caer la nieve, añadir copos de nieve en la parte superior y luego manejar el evento Enter Frame para mover los copos de nieve hacia abajo y hacia los costados.
Para hacer este efecto me he basado en un código que encontré en liquidjourney, el cual hace el efecto de la nieve cayendo, el problema es que estaba en ActionScript 2.0 así que le hice unos cambios para pasarlo a ActionScript 3.0 ya que puede haber problemas si se quiere usar este efecto en otras animaciones que usan AS3.
Sólo necesitan un símbolo para delimitar la nieve como se ve en la imagen y agregar el código que pongo más abajo


Código:

//Posiciones de fondonieve
//Fondo nieve es un símbolo que marca el cuadro donde caerá nieve
var left:Number = this.fondonieve.x;
var right:Number = left+this.fondonieve.width;
var top:Number = this.fondonieve.y;
var bottom:Number = top+this.fondonieve.height;

//Número de copos de nieve
var total:Number;
total=250;
//Variable que almacenará los copos de nieve
var miArray:Array;

//Crear el fondo, en este caso el Sprite donde va la nieve
//y la máscara para que los copos de nieve no salgan de ahí
function createBackground():void {
//Crear el Sprite para la nieve
var ele:Sprite =new Sprite();
ele.name="ele";
//Posicionarlo en el mismo lugar que fondonieve
ele.x=this.fondonieve.x;
ele.y=this.fondonieve.y;
//Agregalo
addChild(ele)

//Crear el Sprite mask2 que usaremos de máscara
var mask2:Sprite =new Sprite();
mask2.name="mask2";
//Posicionarlo en el mismo lugar que fondonieve
mask2.x=this.fondonieve.x;
mask2.y=this.fondonieve.y;
//Agregalo
addChild(mask2)
//Dibujar un rectángulo con las medidas de fondonieve
var g2:Graphics = mask2.graphics;
g2.beginFill(0x000000, 100);
g2.moveTo(0, 0);
g2.lineTo(this.fondonieve.width, 0);
g2.lineTo(this.fondonieve.width, this.fondonieve.height);
g2.lineTo(0, this.fondonieve.height);
g2.lineTo(0, 0);
g2.endFill();
//Establecer a mask2 como la máscara de ele
ele.mask=mask2;
}

//Creación los copos de nieve
function createParticles() {
//Obtener el Sprite ele del escenario
var ele:Sprite;
ele=Sprite(getChildByName("ele"));
//Instanciar el arreglo
miArray=new Array();

//Usar un for para crear los copos de nieve
for (var i:Number = 0; i //Nieve es una clase-símbolo con la imagen de un copo
var clip3:Nieve=new Nieve();
ele.addChild(clip3);
//Crear un Object con los atributos necesarios: el movieclip del copo de nieve(Sprite), posiciones x - y, velocidad de movimiento x - y, rotación, dos contadores ct y c para realizar los cambios de dirección y hasta donde deben caer fl
var obj:Object = {mc:clip3, mn:1+Math.random()*2, x:Math.random()*this.fondonieve.width, y:-100, movx:Math.random()*2-1, movy:Math.random()*3+0.5, r:Math.random()*10-5, ct:Math.ceil(Math.random()*60), c:0, fl:this.fondonieve.height-Math.random()*3};
//Unicar el copo de nieve en las posiciones establecidas
clip3.x=obj.x;
clip3.y=obj.y;
//Agregar el obj al arreglo
miArray.push(obj);
//Deformar y girar el copo de nieve para que no sean todos iguales
clip3.scaleX= 2+Math.random()*3;
clip3.scaleY= 2+Math.random()*3;
clip3.rotation=Math.random()*360;
}
}

//Funcion que se va a ejecutar en cada evento EnterFrame
function myForEachFunction (obj:Object, index:int, array:Array):void
{
//obj es cada Object que se tiene en miArray
//Recordar que obj.mc contiene el MovieClip del copo de nieve
var mc:MovieClip = obj.mc;
obj.c++;
//Verificar si hay que cambiar la dirección
//Esto es cuando el contador c pasa a ct
if (obj.c>obj.ct) {
//Cambiar la dirección y reestablecer c y ct
obj.movx = Math.random()*5-2.5;
obj.c = 0;
obj.ct = Math.floor(Math.random()*60);
}


//Hacer los cambios en obj
obj.x += obj.movx;
obj.y += obj.movy+obj.mn
//Aplicar los cambios en el movieclip del copo de nieve
mc.rotation += obj.r;
mc.y = obj.y;
mc.x = obj.x;

//Verificar si el copo de nieve ha salido de los bordes derecho o izquierdo
//De ser así reaparece por el borde contrario
if (mc.xthis.fondonieve.width+5) {
obj.x = left-2;
}


//Verificar si el copo de nieve ya cayo completamente
if (mc.y>obj.fl) {
obj.fl=this.fondonieve.height-Math.random()*3;
//Reubicar el copo de nieve arriba
obj.y -=this.fondonieve.height;
obj.movy = Math.random()*3+0.5;
}
}

//Función a realizar en cada evento Enter Frame
function onLoop(evt:Event):void {
//Ejecutar para cada elemento de miArray la función myForEachFunction
miArray.forEach(myForEachFunction)
}

//Agregar un listener al evento Enter Frame y darle la función onLoop
this.addEventListener(Event.ENTER_FRAME, onLoop, false,0, true);

//Llamadas a los métodos para crear todo
createBackground()
createParticles()

El resultado es algo así:


Pueden modificar valores como la cantidad de copos de nieve o mejor aún pueden agregarle sus propias imagenes y ver cómo cae la nieve.


Pueden descargar el archivo .fla AQUI

Nos ponemos Navideños

sábado, diciembre 12, 2009
Ya falta poco para navidad así que para entrar en el aire navideño ya está listo el nuevo header para esta temporada como podrán ver en la parte superior del blog. Por acá no cae mucha nieve que digamos, en realidad acá nos morimos de calor, pero me gusta como se ven los muñecos de nieve (Lástima que este header nomas me va a durar un par de semanas... ). Después postearé cómo crear ese efecto de nieve con Action Script.

Promo de Lost - Temporada 6

miércoles, diciembre 09, 2009
Una promo muy buena que encontré el otro día

La historia de las cosas

lunes, diciembre 07, 2009
Explicación ambientalista:

Esto es libido

miércoles, diciembre 02, 2009
Algunas canciones del no tan nuevo disco de libido.












This is shit

martes, diciembre 01, 2009
Esta imagen es un poquito pasada pero tenía que ponerla xD. Gracias alfreo.