sexta-feira, 22 de outubro de 2010

A arte de gerar marcadores para o FLARManager

Se assim como nos, voce precisa de mais marcadores (ou tags) do que os que ja vem por padrao com o FLARManager, voce ja deve ter notado que e um tato quanto problematico. Entao, aqui esta um passo-a-passo de como conseguimos.

A primeira coisa necessaria e fazer seu marcador. Tenha em mente quando fize-lo que nao pode ser muito detalhado para ser identificado a distancia e de forma alguma podem existir simetrias tanto horizontais quanto verticais.
Aqui fica disponível um modelo generico de marcador (em svg, para ser editado no inkscape) para você criar seu marcador personalizado.

Com o seu marcador em maos, vamos gerar o .pat correspondente a ele (este e o arquivo que o FLARToolkit usa para identificar os marcadores).
Acesse esta paginae clique em "ARToolKit Marker Generator Online". Com o gerador aberto selecione a opcao "Load marker image" da combobox "Mode select" e selecione a imagem do seu marcador. Agora e preciso configurar o gerador.
A opcao "Marker segments" define a resolucao da imagem capturada , "16x16" e uma boa configuracao. Quanto menor a resolucao, melhor vai ser a identificacao dos marcadores a distancia, mas voce perde em detalhes e em variedade de marcadores possiveis (os marcadores do FLARManager estao em 8x8). Tambem, resolucoes muito altas, como 64x64, tornam o processamento extremamente pesado.
A opcao "Marker size" define o quanto da imagem sera usada para a identificacao do marcador. Voce deve saber que apenas as areas que podem variar entre preto e branco devem aparecer na previa, ou seja, nao devem aparece a borda preta e muito menos a borda branca. Para gerar os nossos marcadores utilizamos esta opcao em 45%.
Feito isso, clique em "Get pattern" e deve aparecer uma previa do padrao do marcador. Se estiver de acordo com o descrito acima, otimo clique em "save" e salve o .pat do seu marcador. Mas, nao se esqueca das configuracoes que voce utilizou, pois elas serao necessarias no proximo passo.

Agora, com o .pat em maos vamos configurar o marcador paraser identificado pelo FLARManager.
Dentro da pasta "resources" utilizada pelo seu projeto ha uma pasta "flar" e dentro dela um arquivo "flarConfig.xml". Abra-o. Dentro dele ha a tag <patterns>, com quatro opcoes.
Na primeira, "resolution", voce deve colocar o equivalente ao que voce colocou na "Marker segments" do gerador. Eu quero dizer que, se "Marker segments" foi "16x16", "resolution" deve ser "16".
Nas proximas duas, voce deve colocar o que pos em "Marker size" mas sem o %. Ou seja, se voce usou "Marker size" de "45%" as opcoes "patternToBorderRatioX"  e "patternToBorderRatioY" devem ser "45".
A ultima, "confidence", define o quao sensivel o FLARManager deve ser a deteccao de marcadores. Ou seja, se ele identifica qualquer coisa como marcador, talvez seja bom mudar o valor desta opcao para um valor mais alto. Se a deteccao e muito instavel, talvez seja bom baixar o valor desta opcao. Mas, 0.5 e um bom valor.
A tag <patterns> tem uma subtag <pattern> que e o lugar onde voce deve colocar o caminho para o o .pat que voce gerou na opcao "path". aqui esta um exemplo:

<patterns resolution="16" patternToBorderRatioX="45" patternToBorderRatioY="45" minConfidence="0.3" >
    <pattern path="../markers/pat/marker3a.pat" />
</patterns>

Se voce seguiu todos os passos, ao abrir seu executavel swf novamente, ele deve estar reconhecendo seu marcador.
Aqui ficam disponíveis os 20 marcadores que estao sendo usados em nosso projeto e seus .pat. As configuracoes para estes marcadores são as que foram sugeridas antes.

Fontes:
http://flash.tarotaro.org/blog/2008/12/14/artoolkit-marker-generator-online-released
http://www.squidder.com/2009/03/05/for-nerds-only-custom-flar-markers-explained

terça-feira, 12 de outubro de 2010

Video prova de conceito




Demonstracao da identificacao de 12 tags ao mesmo tempo. As tags sao quadrados de 3cm de lado.

sexta-feira, 8 de outubro de 2010

Debug com Flex SDK

Antes de tudo voce deve ter o Flash Palyer Debbuger (para instalar em Ubuntu fica a dica). Com o flash player para debug, nao se esqueca de compilar com a flag -debug do mxmlc.

Entao, entre na pasta bin do seu Flex SDK (no meu caso ~/.flex/bin). E execute o fdb (./fdb). De o comendo "run" e o fdb (debbuger do Flex) vai ficar esperando o player se conectar. Abra o swf, que voce compilou com -debug, num browser e ele automaticamente vai se conectar ao fdb.

Com o player conectado ao fdb de o comando "continue" e o player vai executar seu programa.

Fontes e mais informacoes (tipo, como setar um breakpoint) em:
http://greencollective.nl/blog/?p=18
http://www.docsultant.com/site2/articles/flex_cmd.html#mxmlc_3_opt

domingo, 3 de outubro de 2010

0 de modelagem 3D




E é com esta bela scrrenshot da renderização do blender que abro este post.

Conversando com um colega da Fatec São Caetano, descobri que este está fazendo um projeto de TCC que é exatamente o que nosso projeto se propõe a fazer, mas em C++. Também o projeto dele está bem mais adiantado, mas por estar adiantado, meu amigo Daniel Vargas da Silva gentilmente cedeu o modelos 3D que ele fez no Blender e que você pode ver na imagem acima.

De agora em diante, no nosso projeto 0 de modelagem 3D.

Receita de bolo: criando um modelo md2 simples para PaperVision3D com o Blender 2.49b

Ingredientes:

  • Blender 2.49b
  • Uma textura com resolucao 256x256 (o md2 trabalha com este tamanho de textura) em jpg e png (o FlashPlayer so consegue importar jpg, png e outro formato que nao me vem a cabeca agora).
Modo de preparo:

  1. Deixe o cubo que ja esta no blender sempre que ele e aberto
  2. Entre no "Edit Mode" (na combobox que esta marcando "Object Mode")
  3. O todos os nos devem estar selecionados. Mas, se nao estiverem, aperte A para selecionar tudo (os nos vao ficar em amarelo e as faces em rosa)
  4. Pressione Ctrl+T para triangularizar o objeto
  5. Pressione U e em menu se abrira. Nele, clique em "Unwrap".
  6. Pressione F6 para entrar no menu de texturas. 
  7. Na combo de "Texture type", selecione "Image" e uma outra caixa se abrira na direita
  8. Clique em "Load" e selecione a textura.
  9. Aperte F5 para entrar no menu de materiais.
  10. No canto direito, na aba "Map input" ao lado da aba "Textures", clique em "cube"
  11. Agora alterne para o modo "UV/Image Editor" (na combobox do canto esquerdo)
  12. Pressione Alt+O para selecionar a textura para as faces e selecione a textura
  13. Finalmente, volte para o "3D View" (na combobox do canto esquerdo), volte para o "Object Mode" (na combobox que deve estar marcando "Edit Mode") e exporte para md2 no menu supaerior "File"