Um blog sobre programação e arte, o conteúdo original pode ser acessado em trialforce.nostaljia.eng.br
PHPSVG Biblioteca de edição/criação de SVG usando PHP Orientado a Objetos
10 de Março de 2011, 0:00 - sem comentários aindaOPA!
Baseado no artigo sobre edição de SVG utilizando PHP criei uma pequena lib para edição de arquivos SVG usando o php.
A lib esta bem documentada, tem suporte a edição de svg compactado ou não, suporte a exportação para png, jpg e gif, bem como faz output para o browser.
A biblioteca só se utiliza de libs do php para fazer isso não é necesário instalar nenhum programa extra no servidor.
Deêm uma olhada em
http://code.google.com/p/phpsvg/
A imagem abaixo não tem nada a ver com o post, mas como ele tinha ficado pequeno resolvi por uma imagem. Mario Kart pra Wii é um jogo muito bom!!
Editando SVG via programação usando PHP (Orientado a objetos)
4 de Março de 2011, 0:00 - sem comentários aindaSVG é um tipo de imagem vetorial, formato base do programa Inkscape, suportado também pelos programas da Adobe e pela Corel.
Este tipo de imagens é multi propósito, tem muitos fins, mas é basicamente um xml, um documento de texto com uma sintaxe específica.
Abaixo segue o exemplo do código fonte de um svg mínimo, incluindo um único retângulo. Note como a estrutura básica é muito simples, mas é importante notar que o SVG possibilita muito mais.
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg"> <width>210mm</width> <height>297mm</height> <version>1.1</version> <g> <rect x="100" y="50" width="30" height="40" style="fill: rgb(242, 242, 242); stroke: rgb(225, 161, 0);"/> </g> </svg>
O código acima gera essa imagem abaixo, como citado um exemplo simplório.
Agora vamos aprender a criar esse desenho, esse mesmo código utilizando php puro (que por sinal é muito completo), utilizando-se dos poderes da orientação a objetos.
Para iniciar precisamos criar o objeto leitor de xml. O PHP disponibiliza a classe SimpleXMLELement que lida com XML de forma muito transparente. Maiores informações sobre o SimpleXmlElement podem ser encontradas no endereço http://br3.php.net/manual/pt_BR/class.simplexmlelement.php.
Vale citar que o PHP tem funcionalidades prontas para lidar com muitos tipos/formatos de arquivos e situações, antes de sair implementando coisas a vontade, verifique se o php já não possui algo pronto nesse sentido, não reinvente a roda.
O código abaixo então cria o nosso svg, sem nenhum conteúdo ou propriedade necessária.
$svg = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg></svg>');
Como segundo passo precisamos definir algumas propriedades básicas necessárias para a intepretação de um svg.
Tamanhos da página, largura e altura, neste caso o formato A4.
//tamanho da página $svg->width = '210mm'; //largura $svg->height = '297mm'; //altura
Versão do SVG, como padrão 1.1
$svg->version = '1.1';
Estilo do SVG, o xmlns, dessa forma definimos que o nosso documento utiliza essa sintaxe definida pela W3c.
$svg->addAttribute('xmlns', 'http://www.w3.org/2000/svg');
Após isso precisamos cria o nosso objeto de desenho, ou objeto gráfico (graphic), no SVG ele é chamado simplesmente G.
$g = $svg->addChild('g');
De posse de nosso G (não confunda com ponto G) podemos adicionar diversos elementos gráficos nele, neste artigos trataremos a adição de um retângulo.
$rect = $g->addChild('rect');
Agora que temos nosso objeto retângulo, definimos o seu tamanho e posição:
$rect->addAttribute('x',100); //posição x $rect->addAttribute('y', 50); //posição y $rect->addAttribute('width', 30); //largura $rect->addAttribute('height', 40); //altura
Então definimos seu estilo, fill é a cor de preencimento e stroke é a cor do contorno, nesse caso utilizamos o sistema hexadecimal de definições de cores.
$rect->addAttribute('style','fill:#f2f2f2;stroke:#e1a100;');
Nosso SVG esta pronto, só precisamos jogar ele para o browser, neste caso precisamos definir o cabeçalho (header) para que o browser entenda que estamos “echoando” um SVG e não uma página html normal.
header('Content-type: image/svg+xml'); echo $svg->asXML();
Abaixo então está o código completo de geração do nosso SVG.
<?php $svg = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg></svg>'); //tamanho da página $svg->width = '210mm'; $svg->height = '297mm'; //versão do svg 1.1 é padrão $svg->version = '1.1'; //estilo do svg, padrão $svg->addAttribute('xmlns', 'http://www.w3.org/2000/svg'); //g de graphics é onde os objetos visuais são adicionais $g = $svg->addChild('g'); //cria o retangulo $rect = $g->addChild('rect'); //define seus attributos $rect->addAttribute('x',100); $rect->addAttribute('y', 50); $rect->addAttribute('width', 30); $rect->addAttribute('height', 40); //estilo de fill=preenchimento stroke = linha $rect->addAttribute('style','fill:#f2f2f2;stroke:#e1a100;'); //define o cabeçalho do arquivo, para que o browser entenda que é um svg e não um xml normal header('Content-type: image/svg+xml'); echo $svg->asXML(); ?>
Vale citar, que neste exemplo criamos um SVG simples praticamente do zero, mas podemos abrir um SVG que já esteja pronto no nosso HD, para isto utilizamos a função file_get_contents, conforme exemplo abaixo.
$svg = new SimpleXMLElement( file_get_contents('meuRetangulo.svg' );
Dessa forma o PHP faz a leitura de nosso documento SVG e o carrega já como objeto para a variável $svg. Com base nisto, podemos obter o G deste documento.
$g = $svg->g;
Com nosso G em mãos estamos prontos para adicionar um retângulo ou o que quer que quisermos ao nosso SVG.
Para conhecer todas as propriedades de um SVG podemos utilizar o endereço http://www.w3.org/TR/SVG/, que tem a espeficicação do projeto, mas também podemos desenhar alguma coisa no Inkscape e ver como fica o código fonte.
Bom desenhos para todos nós!
Video da engine de jogos feita em java Nostaljia
3 de Fevereiro de 2011, 0:00 - sem comentários aindaOla!
Segue abaixo 2 videos do que trabalhamos os últimos dias na engine Nostaljia.
Estamos neste momento melhorando o sistema de som para que flua de forma mais natural e integrada a engine como um todo.
Game do Alpha do Shooter Chrysalis:
Video técnico mostrando sistema de colisão Pixel-Perfect.
Visitem www.nostaljia.eng.br para maiores informações.
Criando transparências com GIMP – Limpando o fundo da imagem (Video Tutorial)
6 de Janeiro de 2011, 0:00 - sem comentários aindaGimp é um ótimo programa de edição de imagens, suporta vários formatos de arquivo e tem muitas funcionalidades, bem como suporta a instalação de diversos plugins, infelizmente as pessoas não o conhecem ou tem dificuldades básicas em suas utilização.
A fim de diminuir as dificuldades em relação ao conhecimento dos princípios básicos do GIMP, este video tutorial visa explicar conceitos de transparência, canal alpha e borrachas, e tratar levemente sobre camadas.
I hope you enjoy!
Aumentar volume de som usando Audacity sem perder qualidade
4 de Janeiro de 2011, 0:00 - sem comentários aindaMuitos podem não conhecer, mas Audacity é um programa de edição de som muito útil e não custa nada, funciona perfeitamente em Windows, Linux e outros sistemas operacionais.
Quando precisamos alterar um pouco algum arquivo de som, separar uma parte de uma música, aumentar o diminuir volume, sempre ficamos na dúvida de qual programa utilizar, neste momento surge o Audicity, um programa bom, estável e com bastante recursos.
Eventualmente técnicos de som podem achar que faltam recursos no Audacity em relação ao Cool Edit por exemplo, acontece que a edição multi-pistas encontradas no Cool Edit não é feita pela Audacity para isso existem outros programas como o LMMS ou Rosegarden.
Exemplificando a facilidade da interface do Audacity iremos abrir um arquivo de som, vale notar que o programa também abre os sons embutidos em vídeos. Os formatos suportados estão diretamente relacionados aos formatos suportados pelo seu sistema operacional, citando por exemplo a instalação de codecs de audio e vídeo.
Então vamos em Arquivo -> abrir, como de praxe para abrir o arquivo video.ogv.
Caso não consiga abrir o video no Audacity, por algum motivo você pode utilizar o comando abaixo (no Linux, apesar de ser possível instalar no Windows também) para extrair um arquivo mp3 do seu vídeo.
fmpeg -i video.ogv audio.mp3
Com o arquivo aberto utilizamos CTRL +A para selecionar tudo o audio, então aplicamos:
Efeitos -> Amplificar
Então selecione somente a parte onde tem ruído (o barulho que quer retirar)
Efeitos -> Remover ruído —- Perceber perfil de audio
Selecione tudo
Efeitos -> Remover ruído —- OK
Pronto, nosso som esta pronto para públicação!
É só exportar o arquivo agora!
Arquivo -> Exportar
Como funciona a remoção de ruídos?
Quando o sistema “percebe o perfil de audio” ele armazena o trecho selecionado como informação de ruído, é importante selecionar uma parte do som onde só exista o ruído.
No segundo momento onde vamos realmente aplicar o efeito, o sistema passa por todo o áudio comparando o seu ruído com áudio oferece e remove o que encontrar de semelhante, FUNCIONA MUITO BEM!
O Audacity ainda oferece sistema para remoção de voz, mas isso é assunto para outro artigo!!