lunes, 29 de octubre de 2012

Cristalab

Cristalab


Convertir personaje a zombie en After Effects

Posted: 29 Oct 2012 04:08 AM PDT

En este videotutorial de After Effects haremos un especial de Halloween 2012, donde transformaremos a cualquiera de nuestros amigos, familiares o incluso a nosotros mismos, en un ser salido de las tenebrosas tinieblas, o en algo muy feo, por lo menos, ayudados por el uso de las capas y uno de los mejores filtros de deformación, que combinaremos gracias a las opciones de fusión de capas y animaremos con técnicas clásicas.

Usaremos en primer lugar el pincel de rotoscopía, para lograr separar el rostro del personaje, en un duplicado previamente creado y de esa forma obtener una especia de máscara que usaremos para filtrar el área concreta y aplicar los efectos de deformación con licuar y de oscurecimiento con formas, únicamente en esa zona.

Para completar el trabajo, añadiremos varios ajustes en el color y retocaremos la animación para sincronizarla con los diferentes cambios que producen los efectos, durante la toma.



Saludos.

Enviar comentario

Escalar un Paper de Raphaël

Posted: 29 Oct 2012 02:32 AM PDT

Ayer mismo culminó el curso de HTML5 de mejorando.la impartido por @freddier y @cvander en Madrid. Entre los muchos contenidos que se impartieron, se enseñaron los principios básicos de cómo utilizar la útil librería de Javascript Raphaël de la cual ya se ha comentado anteriormente por acá. Con esta librería podemos dibujar y manipular elementos vectoriales en el navegador utilizando para ello SVG, con la asombrosa característica de que si se está utilizando Internet Explorer 6+ (que no cuenta con soporte para SVG hasta la versión 9) entonces los gráficos se representarán utilizando VML.

En el curso surgió la duda de cómo lograr escalar un Paper de Raphaël de manera correcta. Aunque existe una solución para lograr esto, a mí en particular me ha dado problemas de no escalar bien los elementos en algunas aplicaciones web. Como lo prometido es deuda y les prometí a los participantes del curso que iba a publicar un pequeño tutorial de cómo lograr esto, aquí cumplo mi promesa.

En realidad no se necesita una función muy compleja para lograr nuestro objetivo, sólo con utilizar el atributo viewBox del SVG se puede lograr de manera sencilla. Este atributo se utiliza para hacer un recorte en los gráficos SVG utilizando para ello unas coordenadas iniciales del recorte y el ancho y el alto del mismo.

Utilizar el atributo viewBox directamente en un SVG


La manera de hacerlo directamente en el código del encabezado del SVG es la siguiente:

Código :

  <svg version="1.1" id="mySVG" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="100px" height="100px" viewBox="0 0 100 100" xml:space="preserve">  ...  ...  ...  </svg>  
En este caso, al tener el documento un viewBox con su mismo tamaño, se escalará proporcionalmente cuando se varíen sus dimensiones sin ocultar ninguna parte del gráfico. Esto mismo es lo que vamos a utilizar en el Paper utilizando un método propio de Raphaël: setViewBox.

Asignar el atributo viewBox al SVG usando Raphaël


La forma de utilizar el método setViewBox es la siguiente:

Código :

  Paper.setViewBox(x, y, w, h, fit);  
Donde x, y, w, h corresponden respectivamente a las coordenadas x e y de inicio y al ancho y alto del recorte. El parámetro fit determinará si se desea que al gráfico se muestre completamente dentro del borde del recorte (en caso de ser true). Utilizando este método ya nuestro SVG se escalará manteniendo sus proporciones cuando se varíe de tamaño el objeto Paper mediante el método setSize.

Utilización opcional del atributo preserveAspectRatio


También existe un atributo que permite que el gráfico SVG se escale comportándose de manera diferente, nos referimos a preserveAspectRatio. Este atributo puede utilizarse para que el gráfico mantenga sus proporciones o se escale sin mantener su relación de aspecto.

Si este atributo tiene valor none el gráfico no mantendrá su relación de aspecto, los demás valores mantendrán su proporción pero variarán la posición del mismo con respecto al borde definido por el tamaño del SVG. Ponemos algunos ejemplos de valores que puede tomar preserveAspectRatio:


1 - xMidYMin. 2 - xMinYMax. 3 - xMaxYMin

Notar que estos valores están compuestos por la posición que deben ocupar las x y las y del gráfico, los cuales pueden ser Min (Mínimo), Mid (Medio) y Max (Máximo).

Para poder añadir este atributo al SVG debemos acceder al objeto SVGSVGElement directamente, para hacerlo accederemos a la propiedad canvas del Paper.

Código :

  paper.canvas.setAttribute("preserveAspectRatio", "xMaxYMin");  

[nota:013220f661]Cada vez que se llame al método setSize del objeto Paper, el atributo preserveAspectRatio tomará su valor por defecto: xMinYMin meet o xMinYMin dependiendo de si el parámetro fit del método setViewBox se sitúa en true o false respectivamente, por lo tanto cada vez que se llame a dicho método, se debe volver a añadir el atributo preserveAspectRatio en el valor deseado.[/nota:013220f661]

Ejemplo práctico


El poder variar las dimensiones del Paper a nuestra conveniencia variando el tamaño de todos los elementos dibujados en él, nos será muy útil si se desea implementar Responsive Design utilizando gráficos vectoriales. Vamos a ver un pequeño ejemplo donde se le dará a un Paper de Raphaël las dimensiones de un div contenedor y los gráficos contenidos en el mismo se ajustarán a las dimensiones de dicho div.

Fichero CSS

[css:1:013220f661]body, html{
height: 100%;
width: 100%;
}

body{
margin: 0;
padding: 0;
}

#raphaelContainer {
height: 100%;
width: 100%;
}[/css:1:013220f661]

Fichero HTML

Código :

<!DOCTYPE HTML>  <html>  <head>  <meta charset="UTF-8">  <title>Responsive Raphael Example</title>  <link href="styles/styles.css" rel="stylesheet" type="text/css">  <script type="text/javascript" src="scripts/leaves.js"></script>  <script type="text/javascript" src="scripts/raphael-min.js"></script>  <script type="text/javascript">          var drawWidth = 100;     var drawHeight = 100;     var paper;          //---Al estar listo el DOM     window.addEventListener("load", init);          //---Inicizalizar la aplicación     function init(){                //---Crear el canvas de Rapahel        paper = Raphael("raphaelContainer", drawWidth, drawHeight);                //---Aplicar el viewBox (esta línea es la que hace que el gráfico se escale proporcionalmente)        if(Raphael.svg) paper.setViewBox(0, 0, drawWidth, drawHeight, true);                //---Dibujar todos los elementos        paper.add(leaves);                //---Al iniciar variar el tamaño        setSize();             }          //---Cambiar las dimensiones del canvas al máximo tamaño     function setSize(){                //---Dimensiones del container        var width = document.getElementById("raphaelContainer").offsetWidth;        var height = document.getElementById("raphaelContainer").offsetHeight;                paper.setSize(width, height);                //---Esta línea es la que varía la propiedad preserveAspectRatio        //paper.canvas.setAttribute("preserveAspectRatio", "xMedYMin");             }          //---Al variar el tamaño de la ventana     window.addEventListener("resize", setSize);    </script>  </head>    <body>       <div id="raphaelContainer">         </div>    </body>  </html>  
Descargar los ficheros usados en el tutorial

Un saludo y ojalá les sirva de ayuda este pequeño tutorial.

Enviar comentario

Partículas, telas y fluidos en Maya

Posted: 28 Sep 2012 08:42 AM PDT

Empezamos una nueva serie, en la que iremos descubriendo las posibilidades que nos ofrecen los sistemas dinámicos de Maya, junto con las herramientas y atributos más útiles que pone a nuestra disposición para trabajar con las simulaciones de este tipo de procesos, que nos ahorrarán tiempo en nuestro trabajo en lo que a animación de físicas y sistemas dinámicos se refiere.

Empezaremos esta serie con una rápida introducción a los diferentes módulos, herramientas y pestañas más utilizados a la hora de trabajar con estos procesos.

Continuaremos cargando ejemplos desde el Visor, para conocer de antemano, los resultados que podremos lograr con el uso adecuado de las herramientas del programa, como partículas, telas y fluidos, mientras realizamos ejercicios de ejemplo para irnos acostumbrando al sistema de trabajo.



Saludos.

Enviar comentario

Diagrama de topología y sus herramientas en Redes

Posted: 27 Sep 2012 05:01 AM PDT

Estudiaremos la necesidad de generar y usar los diagramas de topologia, recuperándolos o incluyéndolos en la documentación de nuestras redes, para conseguir la mayor cantidad de información general de la infraestructura de la red con la que vamos a trabajar, de una forma rápida y efectiva, obteniendo datos sobre su diseño, qué dispositivos la forman y qué áreas participan en su funcionamiento.

Haremos un estudio detallado del formato y los diferentes atributos que forman parte de los diagramas de topo logia, así como los elementos que podremos incorporar.

Para poder trabajar desde el principio con ellos, repasaremos varios programas que nos ayudarán en su creación y practicaremos con sus posibilidades.



Saludos.

Enviar comentario

Vectores estilo retro en Illustrator

Posted: 20 Sep 2012 04:29 AM PDT

Recrearemos una carátula de CD o vinilo en Illustrator, a la que impregnaremos de un marcado aspecto Retro, gracias a los detalles y la utilización de una base de color intenso, que nos recordará diseños que decoraban los discos de grupos musicales de épocas anteriores.



Saludos.

Enviar comentario

Introducción a TDD con Ruby on Rails y Test Unit

Posted: 19 Sep 2012 08:18 AM PDT

Uno de los temas que más me llamó la atención del desarrollo web en esta época fue el uso de todas las metodologías ágiles (si no sabes qué son, debes leer inmediatamente ese vínculo que estamos en el siglo XXI). Una de las que me pareció más intrigante e interesante fue TDD. Para darles un poco de contexto yo venía de una formación un poco más aburrida "formal" donde tenía RUP, Java y PHP como herramientas de desarrollo principal. Sin embargo mi tesis la hice en Action Script 2.0 y Macromedia Flash :cool: (todavía no era Adobe).

Luego de muchos años comencé a escuchar sobre TDD y cuando comencé a trabajar con el equipo de Xenda me encontré con un universo totalmente nuevo y maravilloso. Sobre TDD solamente voy a agregar a lo que dice el vínculo que puse antes, que es una técnica que nos asegura un software bastante limpio. Lo que sí voy a remarcar es que es una forma de desarrollo que está más vinculada a unos lenguajes que a otros. TDD es más usada por programadores de Ruby y Python que programadores de PHP y Java por ejemplo. Sin embargo PHPUnit y JUnit nos permiten trabajar con toda comodidad usando TDD en esos lenguajes.

Es importante que tengas en cuenta que es una metodología de desarrollo que requiere de práctica y que puede parecer un poco engorrosa al inicio pero luego nos trae muchos beneficios como por ejemplo tener un código limpio, asegurarme que, según va creciendo el proyecto mi código se mantiene funcionando correctamente, etc.

Este ejemplo lo voy a hacer usando TDD con Test Unit para Ruby. Test Unit para Ruby no es el único entorno de trabajo en TDD para Ruby y podemos ir más alla de los test unitarios y desarrollar usando test a niveles superiores. Tenemos rspec, capybara, cucumber y otras maravillosas herramientas de desarrollo que podrás investigar luego. Por ahora vamos a la base.

Necesitas para este ejemplo tener instalado Ruby. No te compliques la vida e instala Ruby on Rails, y si eres Windows user recomiendo RailsInstaller.

Para comenzar debemos tener un directorio llamado Calculadora y dentro de él dos archivos con extención rb (de Ruby) llamados Calculadora.rb y Calculadora_Test.rb.

Y ahora comenzamos.

Enviar comentario

No hay comentarios:

Publicar un comentario