sábado, 30 de julio de 2016

Convertir un GIF animado en una hoja de sprites

Buscando animaciones de ejemplo para crear animaciones de sprites, me encontré con este artículo que explica cómo hacer el típico ciclo para caminar.

Quería convertir a spritesheets los GIF animados, para usarlos como referencia al crear mis propios sprites en Inkscape.

Primero convertí el GIF animado en imágenes separadas, usando en Linux el comando 'convert' de ImageMagick:

convert -coalesce animation.gif target.png

Este tip lo encontré en StackOverflow.

Después, para combinar todas las imágenes en un solo spritesheet hay varias maneras. Decidí usar GIMP y un script genial, llamado Fuse Layers, que hace exactamente esto.

Descargamos el script, lo copiamos en $HOME/.gimp-2.8/scripts/fuse-layers-0.1.scm. Abrimos GIMP. Usamos Archivo -> "Abrir como capas...". Seleccionamos todas las imágenes que van a formar nuestro spritesheet. Luego usamos el script o plugin de GIMP que instalamos antes. Lo encontramos en Filtros -> Combinar -> "Fuse Layers". Se abre un popup que nos pide un número. Es la cantidad de imágenes o columnas que queremos por fila (cuántos sprites de ancho tendrá el spritesheet). Y listo!




Yapa:

Cuando se trabaja con animaciones en GIMP, es conveniente tratar cada cuadro de la animación como una capa. Así podemos probar cómo queda la animación usando el Filtro de Animación "Reproducción...", que nos hace una previsualización de la misma.

Cuando tenemos varias animaciones en la misma imagen, por ejemplo: caminar, saltar, atacar, etc., puede ser conveniente agrupar las capas en grupos. Pero hay un detalle. La opción de agrupar capas no funciona con imágenes en modo 'indexadas', solo en modo RBG. Y cuando importamos un GIF las imágenes quedan modo Indexado por defecto. Así que basta con cambiar de modo. Entonces, si la opción de crear un grupo de capas está desactivada... ya sabemos a qué se debe, y cómo solucionarlo :)

jueves, 28 de enero de 2016

Corebird: exportar fragmentos

Hice este script para exportar los fragmentos que creamos en Corebird:

cat export-fragments.sh
#!/bin/bash
sqlite3 Corebird.db <<!
.output fragments.sql
.dump snippets
!

Para importar la tabla, después hacemos:

sqlite3 Corebird.db <fragments.sql

NOTA: habrá errores de importación si la tabla, o los datos, ya existen.

La idea es simple: usar el autocompletar para reemplazar emoticones por emojis. Por ejemplo:

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE `snippets`(
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  key VARCHAR(20),
  value VARCHAR(200)
);
INSERT INTO "snippets" VALUES(1,'dealwithit','(•_•) ( •_•)>⌐■-■ (⌐■_■)');
INSERT INTO "snippets" VALUES(2,'tableflip','(╯°□°)╯︵ ┻━┻');
INSERT INTO "snippets" VALUES(3,':)','🙂');
INSERT INTO "snippets" VALUES(4,':(','🙁');
INSERT INTO "snippets" VALUES(5,'xD','😆');
INSERT INTO "snippets" VALUES(6,';)','😉');
INSERT INTO "snippets" VALUES(7,':P','😛');
INSERT INTO "snippets" VALUES(8,';P','😜');
INSERT INTO "snippets" VALUES(9,'<- br="">INSERT INTO "snippets" VALUES(10,'->','🠆');
INSERT INTO "snippets" VALUES(11,'+1','👍');
INSERT INTO "snippets" VALUES(12,'-1','👎');
INSERT INTO "snippets" VALUES(13,'ok','👌');
COMMIT;


Entonces, escribiendo xD y pulsando la tecla <tab>, se reemplazará por 😆

domingo, 24 de enero de 2016

Icono alternativo para Argentum Online

El servidor oficial de Argentum Online hace poco publicó la versión 1.0. Hay muchísimos cambios y mejoras, es una importante renovación y la esperada versión 1.0. 

Lo instalé en Ubuntu usando Wine, y la verdad que funciona muy bien. La instalación sobre Wine tuvo sus complicaciones, hay varias guías al respecto de cómo solucionar cada problema, pero finalmente quedó funcionando perfectamente.
 
El único detalle, y uno muy menor, es que el icono del lanzador de AO es de muy baja resolución, y quedaba feo en mi escritorio. Así que hice un nuevo icono alternativo, muy simple, y de diseño similar al original. 

Lo comparto por si alguno quiere usarlo: Descargar iconos (svg + png)

jueves, 14 de agosto de 2014

Iconos adicionales para Ubuntu Unity



Hace un tiempo hice un par de iconos adicionales para el área de notificaciones de Ubuntu Unity. Son iconos para aplicaciones que no siguen el estilo la interfaz Unity, así que los adapté para que no queden fuera de lugar.

El de JDownlader va en la carpeta JDownloader/jd/img/logo
 

Y el del HP Device Manager va en la carpeta /usr/share/hplip/data/images/32x32


Por el momento son solo estos dos íconos :)


jueves, 12 de junio de 2014

Cómo compartir la TDA por la red local usando Ubuntu

Usaremos la aplicación MuMuDVB  (Multi Multicast DVB) para hacer el streaming sobre la red. Es una aplicación de consola, que puede quedar corriendo como un servicio o demonio. Queremos hacer multicast por UDP en la red local, para usar el mínimo de recursos, y que puede soportar cualquier cantidad de clientes recibiendo el streaming.
Otra alternativa sería hacer unicast por HTTP, pero no lo veremos aquí.

1) bajar MuMuDVB

En Ubuntu 12.04 está la versión 1.6.x de MuMuDVB. Para esta guía, se usó la versión 1.7.2 (enlace directo), descargada directamente de su sitio oficial:  http://www.mumudvb.net/node/25

Para descomprimir el archivo, compilar e instalar el programa, seguimos estos comandos:
unzip MuMuDVB-1.7.2.zip
cd MuMuDVB-1.7.2
./configure make
sudo make install

Nota: puede ser necesario instalar antes las herramientas de compilación, si no se instalaron anteriormente:
sudo apt-get install build-essential

2) crear el archivo de configuración mumudvb.conf

freq=527
bandwidth=6MHz
autoconfiguration=full
El dato freq es muy importante. Indica en qué frecuencia de canales se va a sintonizar el receptor de TDA.
El bandwidth es el ancho de banda, que para Argentina es siempre 6 Mhz.
El parámetro autoconfiguration=full hace una configuración automática, agregando todos los canales que se encuentren disponibles en esa frecuencia.

3) configurar la direccion de multicast en la placa de red:

sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
Para habilitar el broadcast de paquetes UDP sobre la LAN conectada a dicha interfaz de red ethernet, en este caso la eth0.

4) arrancar el servidor MumuDVB:

mumudvb -d -c mumudvb.conf
Para ver información más detalla, se puede agregar el parámetro -v, por ejemplo:
mumudvb -v -d -c mumudvb.conf
El parámetro -d indica que no quede corriendo como servicio (don't demonize).
El parámetro -s muestra la fuerza de la señal, que puede ser muy útil.
El parámetro -h muestra una pequeña ayuda con información sobre otros parámetros.

5) Para reproducir el streaming desde las otras PCs:

Las otras PCs pueden tener Linux, Windows, o cualquier sistema operativo. El reproductor de video recomendado es VLC (VideoLan Client) (descargar aquí). Es recomendable usar la versión 2.0 en adelante.
Se debe una URL de la forma:
udp://@239.100.0.X:1234
donde 239.100.0.x es la IP de brodcast que informó MuMuDVB más arriba. En la configuración automática de MuMuDVB, el último número de la IP arranca en 0 (cero) para el primer canal, y continúa con 1, 2, ..., correspondientes a los siguientes canales, con tantos canales como se hayan detectado y configurado.

Ejemplos de cómo iniciar VLC o Mplayer (otro reproductor) desde la línea de comandos:
vlc udp://@239.100.0.0:1234
vlc udp://@239.100.0.1:1234 
mplayer udp://@239.100.0.0:1234

Notas:

Cada canal tendrá una IP distinta. Con un solo receptor, solo se podrán ver los canales que compartan la misma frecuencia, normalmente entre 2 y 4 canales. Para poder sintonizar más frecuencias, se necesitan más adaptadores USB, cada uno sintonizado en diferentes partes del espectro, y cada uno haciendo broadcast con IPs distintas.

Con la configuración automática de MuMuDVB, se agregan todos los canales de la frecuencia. Si solo queremos un canal, podemos hacer una configuración manual. Un ejemplo de configuración manual con 2 canales:
freq=527
bandwidth=6MHz

ip=239.100.0.0
port=1234
name=TV Publica HD
pids=258 289 290 291 288

ip=239.100.0.1
port=1234
name=TV Publica SD
pids=259 305 306 307 304

Y otro ejemplo de configuración manual con un solo canal:
freq=533
bandwidth=6MHz

ip=239.100.0.1
port=1234
name=DeporTV
pids=257 272 273 769
El número de frecuencia (freq) corresponde a los 3 primeros dígitos del archivo canales_tda.conf que usa VLC, que creamos en el artículo anterior.
Obtener los números de PIDs (Program IDs) puede ser algo complicado. La forma más fácil y directa es arrancar MuMuDVB en autoconfiguration=full, en la frecuencia deseada (freq), agregando el parámetro -v para obtener los PIDs de los canales deseados. Después copiamos esos PIDs y así podemos configurar a mano solo los canales deseados.
Pueden crearse varios archivos de configuración, uno por cada frecuencia y canales que se deseen transmitir, y luego reiniciar MuMuDVB con el archivo de configuración deseado en cada momento.


Alternativas:

Como alternativa a MuMuDVB, tenemos al fantástico TvHeadend. Se configura y se administra totalmente por web, y puede integrarse con XBMC (un completísimo centro multimedia) mediante un plugin. TvHeadend tiene muchas funcionalidades adicionales, como la posibilidad de cambiar de canales vía web, funciones de DVR para programar la grabación automática de nuestras series o programas favoritos, ver la guía de programación que emiten algunos canales, etc. Pero quedará para otro artículo, porque es muy extenso en si mismo :)

Fuentes:
Toda la documentación provista por estos programas y sus sitios web.
http://gcp.fcaglp.unlp.edu.ar/_media/integrantes:psantamaria:tdt:charla-jrsl2011.pdf

Actualización 19/06/14:

En el sitio de Fabio, hicieron una buena nota explicando otra alternativa para emitir TDA por streaming en LAN, pero usando solo VLC. Ambas opciones tienen sus ventajas y desventajas. Si conocen más alternativas, no dejen de comentarlo :)