sexta-feira, 29 de outubro de 2010

Mudança de ambiente de desenvolvimento

Testamos um outro plugin para trabalhar com AS3 no Eclipse que tem as ferramentas de que estávamos sentindo falta: autocompletar, compilação de arquivos com vetores, acesso fácil aos comentários das funções, exibição de traces no console, etc....

O nome do plugin é FB4Linux.

Para instalá-lo nós:

1. Tivemos que desinstalar os plugins do AXDT e do Flex para faze-lo funcionar corretamente (help -> Install New Software -> Already installed -> Selecionar os plugins desejados -> uninstall)

2. Baixamos os 4 arquivos FB4Linux aqui.

3. Depois seguimos essas instruções.

Para configurarmos as bibliotecas, acessamos as propriedades do projeto, fomos em "ActionScript Build Path" e colocamos a pasta src do FLARManager em "Source Path" e a pasta lib em "Library Path".
Nesta mesma janela, preenchemos o campo 'output folder" com "deploy" (para mantermos o mesmo diretório de antes).

Depois, fomos em "External Tools Configurations" e colocamos "/usr/bin/flashplayer" em "Location" e "endereço da pasta src do projeto/Main.swf" no campo "Arguments" para rodarmos nosso swf apenas clicando em "Run Main" (dessa forma os traces aparecem no console).

quarta-feira, 27 de outubro de 2010

Próximas tarefas

Na reunião de hoje decidimos também os próximos passos e algumas responsabilidades específicas.

  • Estudar como fazer interface: Todos
  • Escrever a história: Su
  • Fazer gerenciador de AR: Samuel
  • Pegar modelos 3D e imagens de opções conforme a história: Su e ajuda
  • Colocar as imagens atrás do modelo 3D (pesquisar): Todos
Além disso, precisamos implementar as classes:

  • Opcao (Cindy)
  • SituacaoHistoria (Su)
  • GerenciadorRumo (Samuel)
  • MapaOpcoes (Su)
  • Pagina (Samuel)
  • PossivelProximaPagina (Cindy)
  • PreRequisito (Cindy)
Tentaremos terminar essas coisas até a próxima reunião, ainda por ser marcada.

Decisões de design do projeto

Hoje decidimos algumas coisas referentes à estrutura do código do projeto para o que teremos que implementar a seguir.

Decidimos criar uma classe GerenciadorAR, responsável pelas tarefas relacionadas à realidade aumentada: inicialização, controle das tags, atualização por frame (talvez temporariamente), etc.

Criaremos também a classe MapaOpções, que lida com as regiões da tela durante a interação com o usuário.


Também discutimos a implementação da feature do programa de que certas decisões têm consequências a longo prazo, isto é, a "memória" do livro.

Nossa primeira idéia foi de que o programa guarde certas informações-chave para que, em certo momento da história, possa decidir se uma decisão desencadeia essa ou aquela reação.
(Exemplo: o que acontece se a Bela Adormecida vai para o castelo? Depende se ela casou com o príncipe, brigou com ele ou eles nem se conhecem)

Assim, poderíamos term uma tabela de hashing (vetor associativo?) em que as chaves são "perguntas" sobre a situação atual e os valores são as respostas.
Exemplo:
...
situacao["marido chapeuzinho"] = "Joao"
...

Com essa solução, precisamos que alguém decida, a cada decisão do usuário, qual das possíveis consequências será desencadeada, isto é, qual página será carregada.
Sugerimos, então, a criação da classe GerenciadorDeRumo.

A solução é um pouco mais difícil do que parece porque precisamos indicar essas informações de algum modo nos arquivos XML que descrevem as páginas e opções (que ainda não criamos).
O XML de cada opção deve indicar as páginas "candidatas" a serem a próxima e seus requisitos.
(Se a Branca de Neve fez amizade com a avó da Chapeuzinho em algum momento, esta opção nos leva à página 120).

sexta-feira, 15 de outubro de 2010

Tarefas finais para a prova de conceito

Documentação

Especificação melhorada do projeto
Como instalar e rodar o programa?
Estrutura da prova de conceito (classes e interações - sugestão: representar com diagramas UML)

Refatoração

Melhorar o nome das funções da classe Main
Terminar de comentar o código
Reorganizar o código de acordo com as últimas atualizações (falta integrar algumas partes)

Código novo

Implementar a parte que se encarrega pela confirmação de uma escolha.[falta testar]
Contar o num_frames que cada tag fica na tela para podermos identificar melhor a entrada e saída dos marcadores [Ajustar o número de frames que queremos que seja esperado]
Implementar a identificação da região em que a tag está e identificar o papel da tag.[ainda não está funcionando a identificação da região]

Estudar
Como fazer o modelo3D aparecer em cima das imagens

Imagens e modelos

Decidir quais serão as imagens do cenário
Decidir quais serão os modelos 3D



terça-feira, 12 de outubro de 2010

Documentação do Action Script

Estou postando uns sites legais que encontrei de documentação.

Action Script:
http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/

FLARManager:
http://transmote.com/flar/reference/
flarConfig.xml:
http://words.transmote.com/wp/flarmanager/flarmanager-documentation/

Papervision3D:
http://www.papervision3d.org/docs/as3/

quinta-feira, 7 de outubro de 2010

Decisões e tarefas para a prova de conceito

Decisões sobre a prova de conceito

- A prova de conceito foi reformulada.
- 3 opções a serem escolhidas através da tag (2 visíveis e 1 oculta)
- 1 personagem por tag
- 3 tipos de personagem: protagonista (faz as decisões), secundário (faz surgir nova(s) opção(ões)) e figurante (O que estou fazendo aqui?)

Tarefas

- Fazer telas de fim de apresentação (as telas aparecem com a tag de confirmação na prova de conceito) [Cindy]
- Controlar frames [Samuel]
- Identificar tags (confirmação, personagens) [Suzana]
- Pensar em: como exibir opções, identificação das regiões, reação ao identificar regiões [todos]

Próxima reunião

Dia: 13/10

O que deverá estar pronto
- Classes implementadas
- As tarefas que mencionamos acima
- Montagem dos arquivos

O que fazer?
Identificar reugiões

Próximos passos: (15/10) terminar a prova de conceito.

quarta-feira, 6 de outubro de 2010

Algumas especificações para os arquivos que irão descrever nossos objetos

Arquivo que descreve uma instância de "Opcao"

Nome: opcaoXXX_Y (XXX é o número da página e Y é o número da opção na página XXX)

Conteúdo:
caminho imagem
&
texto
List personagens (para as opções ocultas)

Arquivo que descreve uma instância de "Personagem"

Nome: personagemZZ (ZZ é o ID do personagem)

Conteúdo:
Caminho para a imagem

Arquivo que descreve uma instância de "PagLivro"

Nome: pagAA (AA é o ID da página)

Conteúdo:
List OpcoesVisiveis
List OpcoesOcultas
List Personagens (personagens secundários)
Protagonista

segunda-feira, 4 de outubro de 2010

Nova Proposta do Projeto

Para ampliar a interação com o usuário através da realidade aumentada, vimo-nos obrigados a alterar algumas coisas na tela de decisões de AR. Segue abaixo a nova proposta alterada:
"Era uma nova vez " é um livro interativo em que o usuário acessa sua conta e lê um trecho de uma história (página do livro) para, em seguida, tomar uma decisão sobre o seu rumo na tela de realidade aumentada. A decisão é tomada movendo-se o personagem principal, através da tag correspondente, para uma região da tela que está vinculada a uma escolha. Se o usuário, por meio de outras tags, inserir novos personagens na cena, podem surgir novas opções.
O programa é capaz de salvar o perfil de vários usuários, que contém informações relevantes para a continuidade da história (decisões-chave e página atual), bem como informações sobre o próprio usuário (login e senha).

Baseado nessa nova descrição da proposta, foram definidas algumas classes:
Classe Livro {
    -> abrir a página
    -> exibir a página
}

Classe Usuario {
    -> acessar a conta
    -> ler página
    -> tomar decisão
}

Classe Pagina {
    -> carregar trecho do livro
    -> carregar opção
    -> saber quais opções mostrar
    -> carregar pergunta

}

Classe Opcao{
    -> indicar próxima página
    -> carregar a descrição da opção
    -> carregar a imagem que representa a opção
}

Classe TelaAR {
    -> exibir as opções
    -> criar as regiões de escolha
    -> identificar tag
    -> identificar região da decisão
}

Classe Personagem{
    -> carregar imagem do personagem

}

Classe RegiaoDaTela {
    -> carregar posições (x_0, y_0, x_1, y_1)
    -> popular opções conforme as regiões
}

Classe Tag{
    -> implementar biblioteca de realidade aumentada, com tratamento de frames
}

Classe SituacaoDaHistoria {
    -> salvar decisões-chave
    -> salvar última página
    -> carregar decisões-chave
}