GEanimator, script Python para gerar animações no Google Earth

GEanimator exemple: Riachuelo Battle mockup

Exemplo do GEanimator: editando maquete animada da Batalha do Riachuelo (Corrientes, AR, Guerra do Paraguai, 1865).

O Google Earth tem o recurso de “tours“, viagens pelo globo controladas pela linguagem KML. No entanto, as ferramentas embutidas para a construção de tours são limitadíssimas dentro do próprio GE, e, em 2011, ainda não existe um editor externo para editar viagens. Atualmente, o gravador de tour do GE apenas gera uma sequência de pontos de vista, sem controle de tempo entre os pontos, sem recursos de animações, sem possibilidades de abrir e fechar balões de placemarks

Para melhorar esta deficiência, criei um script para gerar animações e tours sofisticados com simples operações de cortar-colar. Publico aqui uma versão básica do scrip, usável mas com muito espaço para melhoramentos. Afinal, diz o ditado do software aberto: “release early, release often”.

O funcionamento é simples:

Exemplo de placemarks para animação pelo GEanimator

Exemplo de placemarks para animação pelo GEanimator

  1. Crie uma pasta com modelos DAE (feitos no SketchUp) e com placemarks com os caminhos que os modelos devem percorrer. Os modelos e os respectivos caminhos devem ter o mesmo nome. A pasta deve conter alguns placemarks com nomes especiais que controlam o passeio, além de placemarks opcionais. Estes nomes especiais formam uma espécie de linguagem de programação de passeios.
  2. Copie a pasta.
  3. Rode o script GEanimator.
  4. Em menos de um segundo, o script pega os dados KML da memória clipboard do Windows, gera uma maquete animada completa, com o passeio, e coloca-a de volta no clipboard. Agora, basta colar no painel “Meus Lugares” do Google Earth e rodar o passeio.

Requistos

Os requisitos para rodar o script é ter a linguagem Python  e a extensão Python for Windows corretamente instaladas. Usei a versão Python 2.7. A linha de comando, que pode ser colocada num atalho na barra de ferramentas de início rápido do Windows, é:

c:\python27\python geanimator-2011-07-29a.py

Conceito

O script trabalha com o conceito de frames ou passos de um passeio, mais ou menos como quadros de filmes. A diferença é que a duração dos frames pode ser variável. Quando são usados caminhos como rota de modelos 3D, cada ponto dos placemarks de caminho define um passo.

O processamento do código KML copiado se dá em dois momentos: primeiro, o código é analisado e são construídas estruturas de dados em Python com informações sobre modelos, frames etc. Depois, estas estruturas são usadas para se gerar um novo código KML com os modelos, balões e passeio.

Depois de colado de volta no Google Earth, a pasta resultante deve ser salva para distribuição. Isto também salva os modelos no arquivo KMZ.

A maneira que eu escolhi de passar parâmetros e controlar o script foi através do nomes especiais de placemarks. Neste caso, estes placemarks não são incorporados ao código KML resultante. Atualmente, são estes os placemarks especiais:

MaxTourLen

Define o número máximo de frames de um passeio. Formato do nome do placemark: MaxTourLen=número-de-quadros. Exemplo: MaxTourLen=200. Isto define um passeio com 200 frames. É um placemark obrigatório que deve ser colocado logo no início da pasta.

Timeframe

Define o tempo global dos frames, em segundos. Formato: Timeframe=seconds. Exemplo: Timeframe=3. Isto define em 3 segundos o tempo de cada frame. É um placemark opcional que deve ser colocado logo no início da pasta. Se não houver este placemark, será adotado um tempo default definido no script, na variável frameLen. O conteúdo textual dos balões de placemark também modifica a duração dos frames, para dar tempo de leitura. Quanto mais texto, maior a duração do frame, ou seja, mais tempo vai demorar na tela o balão de placemark.

Step

Modifica a duração de um frame. Formato: Step=frame-to-modify=seconds. Exemplo: Step=3=5. Isto faz o frame 3 durar 5 segundos.

TurnOn

Torna um modelo visível. Por default, os modelos estão invisíveis. Então, cada modelo deve ser explicitamente ligado no momento oportuno. Formato do nome do placemark: TurnOn=nome-do-modelo=quadro-inicial. Exemplo: TurnOn=Carro1=1. Este exemplo torna visível o modelo chamado Carro1 no quadro 1.

TurnOff

Torna um modelo invisível. Por default, os modelos estão invisíveis. Formato do nome do placemark: TurnOff=nome-do-modelo=quadro-inicial. Exemplo: TurnOff=Carro1=12. Este exemplo torna invisível o modelo chamado Carro1 no quadro 12.

Pause

Pausa um modelo durante os frames especificados. Formato: Pause=model=initial-frame=final-frame. Exemplo: Pause=Car1=5=10. Isto irá pausar o modelo chamado Car1 do frame 5 ao frame 10.

FlyTo

Define um ponto de vista para a câmera. O passeio irá “voar” para este ponto, de acordo com a visualização instantânea do placemark. Formato: FlyTo=frame=seconds. Exemplo: FlyTo=24=8. Isto irá criar um novo ponto de vista no quadro 24. A câmera irá se mover do quadro 23 ao 24 durante oito segundos. Evite colocar FlyTos e balões no mesmo frame, pois o balão ficará mudando de lugar durante o voo.

Baloon

Cria um placemark balão que é apresentado durante o tempo necessário para lê-lo. Formato: Baloon=frame=Title. Exemplo: Baloon=23=O trânsito será desviado neste ponto. Isto abrirá um balão no frame 23 com o título fornecido. Evite colocar  balões e FlyTos no mesmo frame, pois o balão ficará mudando de lugar durante o voo. O conteúdo textual dos balões de placemark modifica a duração dos frames, para dar tempo de leitura. Quanto mais texto, maior a duração do frame, ou seja, mais tempo vai demorar na tela o balão de placemark. Este tempo é controlado pela variável readingSpeed no script, que tem o valor de 18 caracteres por segundo.

Fade

Cria um fade in (a tela preta clareia) ou fade out (a tela escurece até fica preta) no quadro desejado durante o tempo determinado. Formato: Fade=[in|out]=frame=duration. Exemplo: Fade=in=1=5. Isto cria um fade in no frame 1 — início do passeio — durando 5 segundos. O fade é criado por um ScreenOverlay preto, sem imagem, ocupando toda a tela. A transição é feita diminuindo a zero ou aumentando a 255 o valor do canal alfa da cor. Very tricky!

Timecode

Uma pasta com este nome gera uma numeração no canto superior esquerdo da tela com o número dos frames, como timecode de vídeo, para auxiliar a edição. Não deve ser usado no produto final. Usa símbolos de placemarks padrão do Google Earth. Um bug do GE impede que os ícones sejam apresentados se não forem carregados antes. Eu tenho outra pasta só com os dez ícones, que ligo antes de ligar o código KML produzido pelo script. Se eles não aparecem, desligo a pasta do passeio, ligo a pasta dos ícones, fecho e abro de novo o GE.

Modelos

Os modelos são no formato DAE, feitos no Google SketchUp. Devem sempre ser construídos com a frente para o norte (eixo verde do SketchUp). Deficiência do Google Earth: os modelos podem ser girados de -360° a +360°. Quando a animação ultrapassa este valor, os modelos fazem um wrap, uma pirueta para o lado oposto complementar ao ângulo desejado.

Os path placemarks que definem a trajetória dos modelos devem ter o mesmo nome do modelo correspondente. Pode haver vários paths com o mesmo nome, desde que se nomeie-os como “modelo=1″, “modelo=2″ etc. Eles resultarão em uma única trajetória.

Download

Baixe o script GEanimator, versão 2011-07-29a.

Exemplo

Este exemplo, sem sincronização de câmeras, é uma prova do conceito. (Infelizmente, ainda não há plugin para Linux, só para Windows e Mac) (Veja em tela inteira).

Licença

Este script é livre para uso não-comercial. Para uso comercial em sites jornalísticos ou empresas, consulte-me sobre licenciamento e treinamento online.

Sobre José Antonio Meira da Rocha

Jornalista, professor de Planejamento Gráfico e Mídias Digitais da Universidade Federal de Santa Maria, campus da cidade de Frederico Westphalen, Rio Grande do Sul, Brasil. Doutorando em Design na UFRGS, Porto Alegre, Brasil, 2014.