2011 12 07_curso_bas_ar_start

265 visualizações

Publicada em

Publicada em: Educação
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

2011 12 07_curso_bas_ar_start

  1. 1. ARBehavioral Authoring System for Augmented Reality Christopher Shneider Cerqueira – christophercerqueira@gmail.com Claudio Kirner – ckirner@gmail.comhttps://sites.google.com/site/christophercerqueira/projetos/ear/basar http://www.ckirner.com/basar
  2. 2. basAR: Behavioral Authoring System for Augmented Reality ferramenta de autoria Estrutura de pontos Comportamentos inteligentes Cross-reality
  3. 3. Video
  4. 4. Comofunciona
  5. 5. DIVIDIR EM CAMADAS
  6. 6. Camadas: Controle do feedback do sistema ao receber estimulo do usuário. Como é realizada a interação Comportamento do usuário Localização, orientaçãoe Configurações básicas e com o sistema. dos objetos virtuais. escala genéricas do sistema. Conteúdo Correlação entre o mundo real e o mundo virtual Atuação Estrutura Infraestrutura
  7. 7. InfraestruturaAtuação Comportamento Estrutura Conteúdo
  8. 8. Seleção AçãoLiberaçãoComportamento
  9. 9. Comportamento Estados: Descriçãodas ações e atributos dos pontos da estrutura.
  10. 10. Estado Estado 3 5Estado Estado 1 2 Estado Estado Comportamento 4 6
  11. 11. Comportamento ?• Que ações sao possíveis no mundo virtual? CLICAR MOVIMENTAR
  12. 12. • PODE MOVER?• SE COLIDIR O QUE MOVIMENTAR ACONTECE?• PODE LIBERAR NESTE LOCAL?
  13. 13. • O que acontece se clicar?CLICAR • O que pode ser mudado?
  14. 14. Comportamento ?• O que pode ser alterado?! POS Modelo Animar
  15. 15. • Posição • OrientaçãoPOS • Escala
  16. 16. • Passar para o próximo.ModeloEscolher modelo da • lista.
  17. 17. • Simular uma animação! – ROTAÇÃO Animar – TRANSLAÇÃO – ESCALA
  18. 18. • Enviar comandosCross-Reality para o mundo real! • Receber comandos do mundo real!
  19. 19. Matemática• Cada ponto tem duas variáveis ( A e B ) – Colocar um valor. – Adicionar A B – Inverter – Multiplicar – Comparar
  20. 20. basAR tem umuniverso depossibilidadesde criação decenário.
  21. 21. Como que ascoisasfuncionam nahora certa
  22. 22. COMPORTAMENTO É DIVIDO EM ESTADOS E A UNIÃO DE ESTADOS GERAUMA SEQUÊNCIA PROGRAMÁVEL, NUMA MÁQUINA DE ESTADOS.
  23. 23. PARA MUDAR DE UM ESTADO PARA OOUTRO DEPENDE DO SUCESSO DA AÇÃO! Autômato Grafo Mapa mental
  24. 24. Por exemplo Comportamento1. Move e mostra quadrado2. Move e mostra triângulo3. Atrai o quadrado Estado 1 Estado 2
  25. 25. Estado 1 Estado 2 Estado 3 Estado 4 Estado 5 Estado 6 Estado 7 Controlador de Estados Ação pediu próximo estado! (2) Estrutura (Pontos de Ação)
  26. 26. Modos de exibição:• Forma como o descrever o que é exibido pelo ponto. – Esconder tudo (HIDE) – Apenas a esfera (ONLY_BALL) – Apenas o objeto ativo (ONLY_OBJECT) – Esfera e o objeto (BOTH) – Esfera piscante (FLASH_BALL) – Sensor de proximidade (SENSE_PROX) – Todos os modelos (ALL_OBJECTS)
  27. 27. Vídeo
  28. 28. Criando movimentos Curso basAR Christopher Shneider Cerqueira – christophercerqueira@gmail.com Claudio Kirner – ckirner@gmail.com https://sites.google.com/site/christophercerqueira/projetos/ear/basar http://www.ckirner.com/basar 31
  29. 29. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Introdução• Criar um cenário de Realidade Aumentada. – Duas peças móveis e 1 ponto de encaixe.• Utilizar o software basAR.• Entender a construção do cenário.• Entender os conceitos de movimentação. 32
  30. 30. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Aplicação em camadas• Infraestrutura: especificar a área de trabalho (workspace) da aplicação• Estrutura: os posicionamentos dos pontos de ação sobre a infraestrutura.• Contexto: modelos, sons e outros objetos definidos na estrutura.• Atuação: método de interação com a estrutura.• Comportamento: regras de interação entre os atuadores e a estrutura. 33
  31. 31. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Hierarquia de objetos basAR Feedback Click1.mp3 Feedback Error.mp3 Actuator Behavior ... Feedback Turn real motor ON Base point1 ... pointK app_pointM1 ... app_pointK m1.dat ... m1.dat m2.dat m1.wrl ... m1.wrl M2.wrl 34
  32. 32. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Hierarquia de arquivos config_basAR config_actuator config_behavior config_base app_pointM1 app_arduino app_pointK m1.dat m1.dat m2.dat m1.wrl m1.wrl M2.wrl 35
  33. 33. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Criando INFRAESTRUTURA, ESTRUTURA, CONTEÚDO E ATUAÇÃO 36
  34. 34. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Sistema config_basAR config_actuator config_behavior config_base app_pointM1 app_arduino app_pointK m1.dat m1.dat m2.dat m1.wrl m1.wrl M2.wrl 37
  35. 35. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Sistema #config_basAR basAR• Configura: – a primeira interligação WINDOWED VRML wrl/action/ballBlue.dat dos objetos; VRML Wrl/Action/ballGreen.dat – modo de exibição da VRML Wrl/Action/ballRED.dat VRML Wrl/action/tampa.dat janela; Audio/explosion.wav 0.5 Audio/backTrack.mp3 LOOP 0.3 – objetos padrões. Audio/bell.wav ONCE 0.5 Data/config_behavior # Rule Machine• Arquivo: # Bases {basAR}/Data/config_basAR 1 Data/config_base1 # Actuators 1 ARTKSM Data/config_transport 38
  36. 36. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Infraestrutura config_basAR config_actuator config_behavior config_base app_pointM1 app_arduino app_pointK m1.dat m1.dat m2.dat m1.wrl m1.wrl M2.wrl 39
  37. 37. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Infraestrutura• correlação entre o #config_base1 mundo real e o mundo # This file contains the setup for a workspace virtual BASE1 # Single ARToolKit Marker configuration ARTKSM• Definição de base Data/Markers/base.patt 53.0 0.0 0.0 USE_DEFAULT• Arquivo: {basAR}/Data/config_base # Workspace Sounds Audio/bell.wav ONCE 0.5 # Visible Sound Audio/explosion.wav 0.5 # Error sound wrl/action/status.dat 40
  38. 38. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Estrutura config_basAR config_actuator config_behavior config_base app_pointM1 app_arduino app_pointK m1.dat m1.dat m2.dat m1.wrl m1.wrl M2.wrl 41
  39. 39. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Estrutura• Pontos do espaço virtual com esferas de ação, … modelos associados e Pen # Point Name comportamento. DEFAULT_IPOINT # Action Model File• Localização, orientação e Data/app_pen # OBJECT Model File 20.0 20.0 0.0 # Translation escala dos objetos virtuais. 0.0 0.0 0.0 # Rotation 1.0 1.0 1.0 # Scale 900.0 # Action radius• Arquivo: {basAR}/Data/config_base … 42
  40. 40. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Exemplo com 3 pontos … 3 Triangulo pontoColisao DEFAULT_IPOINT DEFAULT_IPOINT Quadrado Data/app_triang NO_OBJECT DEFAULT_IPOINT 200.0 -200.0 0.0 -200.0 0.0 0.0 Data/app_quad 0.0 0.0 0.0 0.0 0.0 0.0 200.0 200.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0 0.0 0.0 0.0 900.0 900.0 1.0 1.0 1.0 900.0{basAR}/Data/config_base 43
  41. 41. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/Arquivo config_base completo _p1BASE1 3ARTKSM QuadradoData/Markers/base.patt DEFAULT_IPOINT53.0 Data/app_quad0.0 0.0 200.0 200.0 0.0USE_DEFAULT 0.0 0.0 0.0 1.0 1.0 1.0Audio/bell.wav ONCE 0.5 900.0Audio/explosion.wav 0.5wrl/action/status.dat 44
  42. 42. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/Arquivo config_base completo _p2Triangulo pontoColisaoDEFAULT_IPOINT DEFAULT_IPOINTData/app_triang NO_OBJECT200.0 -200.0 0.0 -200.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.01.0 1.0 1.0 1.0 1.0 1.0900.0 900.0 45
  43. 43. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Conteúdo config_basAR config_actuator config_behavior config_base app_pointM1 app_arduino app_pointK m1.dat m1.dat m2.dat m1.wrl m1.wrl M2.wrl 46
  44. 44. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Conteúdo• objetos 3D e áudios que são utilizados. 1• Arquivos:{basAR}/Data/App/app_quad MODEL3D VRML Wrl/quad.dat{basAR}/Data/App/app_triang quad.wrl{basAR}/Wrl/quad.dat 000 0 90 0{basAR}/Wrl/triang.dat 000{basAR}/Wrl/quad.wrl{basAR}/Wrl/triang.wrl 47
  45. 45. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Exemplo do conteúdo dos 2 pontos{basAR}/Data/App/app_quad {basAR}/Data/App/app_triang 1 1 MODEL3D VRML Wrl/quad.dat MODEL3D VRML Wrl/triang.dat{basAR}/Wrl/quad.dat {basAR}/Wrl/triang.dat quad.wrl triang.wrl 000 000 0 90 0 0 90 0 000 000 48
  46. 46. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Atuação config_basAR config_actuator config_behavior config_base app_pointM1 app_arduino app_pointK m1.dat m1.dat m2.dat m1.wrl m1.wrl M2.wrl 49
  47. 47. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Atuação• Interação do usuário com #config_tranport ARTKSM1 o sistema # Single ARToolKit Marker configuration Data/Markers/shovell.patt # Marker 37.0 # Width(mm) 0.0 0.0 # Central USE_DEFAULT # Marker cover VRML wrl/Action/ssd.dat # Symbolic model # Collision point DEFAULT_IPOINT # Point model 20.0 0.0 0.0 # Translation (x,y,z) (mm) 400.0 # Action radius of the point 50
  48. 48. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Criando COMPORTAMENTO DE MOVIMENTAÇÃO 51
  49. 49. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comportamento?• Controle do feedback do sistema ao receber estimulo do usuário.• Baseado em máquina de estados (grafo de cena).• Ações  Comandos• Estados  Blocos de comandos 52
  50. 50. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Exemplo de estado• Inicia estado BEGIN_STATE 1• Ponto 1 estático, exibe tudo 1 STAT BOTH• Ponto 2 estático, exibe tudo 2 STAT BOTH• Ponto 3 estático, exibe tudo 3 STAT BOTH• Finaliza estado END_STATE• Outros comandos vide manual do basAR! 53
  51. 51. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ O que é movimentação?• Seleção  Ação  Liberação• Selecionar um ponto e deslocá-lo, na liberação do ponto deve-se decidir a atitude a tomar dependendo dos pontos que caracterizam a região. 54
  52. 52. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Collision between actuator and action point SelectionMapa de atitudes: If selectable Point selected• Movendo um ponto: Manipulation Move action Configure point System – Zonas reativas: • Atraem • Repelem System Controlled User controlled • Permitem depósito. – Zonas neutras: Release point • Permitem depósito. Attract point Test relsease Release Repels point Release point Reactive zone: collision of the moving point with others action points 55
  53. 53. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Movimento• Comandos de movimentação estabelecem que o ponto seja selecionado pelo atuador e movimentado no espaço virtual.• A liberação depende dos outros pontos que formam ou nao uma zona reativa.• 2 comandos (DRGF e DRGRP) 56
  54. 54. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/Comandos que permitem movimento• Arrastar livremente (Drag Freely) – DRGF Point ID DRGF ShowMode Audio Overplay• 1 DRGF BOTH• 13 DRGF ONLY_OBJECT• 5 DRFG BOTH Audio/click.mp3 57
  55. 55. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos que permitem movimento• Arrastar livremente, mas quando estatico e houver colisão, repele (Drag and Repels) – DRGRPPoint ID DRGRP ShowMode NextState Audio Overplay• 1 DRGRP FLASH_BALL• 6 DRGRP ONLY_BALL 3• 2 DRGRP BOTH 7 Audio/click.mp3 58
  56. 56. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Zonas reativas a movimentação• Existencia de pontos que definem uma zona com uma propriedade de liberação: – Atração – Repulsão – Depósito• A inexistencia de uma zona reativa permite que a liberação seja realizada livremente. 59
  57. 57. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Atração• Atração é uma forma de liberar o ponto em movimento controlada pelo basAR.• Quando o ponto em movimento entra numa zona reativa de atração ele é atraído para a posição do ponto de atração.• Copia para o ponto atraído as características de translação, rotação e escala do ponto de atração 60
  58. 58. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos que habilitam atração • Atrair apenas um (Attract one specific) – ATTOPoint ID ATTO PointWaited ShowMode NextState Audio Overplay • 4 ATTO 3 BOTH 7 Audio/congrat.mp3 • 2 ATTO 1 ONLY_MODEL 4 • 5 ATTO 1 SENSE_PROX 15 61
  59. 59. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos que habilitam atração • Atrai apenas um e repele os outros (Attract one specific and repels others) – ATTRPPoint ID ATTRP PointWaited ShowMode NextState Audio Overplay • 5 ATTRP 2 ONLY_BALL 20 62
  60. 60. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos que habilitam atração• Atrai todos os pontos (Attract all) – ATTAPoint ID ATTA ShowMode NextState Audio Overplay• 2 ATTA FLASH_BALL 8 63
  61. 61. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Repulsão• Repulsão é uma forma de liberar o ponto em movimento controlada pelo basAR.• Quando o ponto em movimento entra na zona reativa de repulsão ele é repelido para a posição inicial.• Retorna para a configuração inicial do ponto. 64
  62. 62. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos que habilitam repulsão • Repele apenas um (Repels only specific) – RPLOPoint ID RPLO PointWaited ShowMode NextState Audio Overplay • 3 RPLO 4 BOTH 9 65
  63. 63. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos que habilitam repulsão• Repele todos os pontos (Repels all) – RPLAPoint ID RPLA ShowMode NextState Audio Overplay• 2 RPLA FLASH_BALL 8 66
  64. 64. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Depósito• Depósito é uma forma de liberação do ponto em movimento controlado pelo usuário.• Quando o ponto em movimento entra na zona reativa de depósito, o usuário ao tampar o marcador de atuação decide pelo depósito.• Caso o depósito não seja permitido o ponto é repelido para a posição inicial. 67
  65. 65. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos que habilitam depósito • Deposita apenas um (Drop one specific) – DRP0Point ID DRPO PointWaited ShowMode NextState Audio Overplay • 1 DRPO 3 SENSE_PROX 35 68
  66. 66. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos que habilitam depósito• Deposita todos os pontos (Drop all) – DRPAPoint ID DRPA ShowMode NextState Audio Overplay• 5 DRPA SENSE_PROX 3 Audio/drop.mp3 69
  67. 67. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comportamento config_basAR config_actuator config_behavior config_base app_pointM1 app_arduino app_pointK m1.dat m1.dat m2.dat m1.wrl m1.wrl M2.wrl 70
  68. 68. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comportamento de atração• Exemplo 1. Criar 2 pontos móveis (quadrado e triângulo), e 1 ponto estático com comportamento de atração.• Arquivo de comportamento: {basAR}/Data/config_behavior 71
  69. 69. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Arquivo de ComportamentoBEGIN_STATE 1 1 DRGF ONLY_OBJECT 2 DRGF ONLY_OBJECT 3 ATTO 1 ONLY_BALL 2END_STATE 1BEGIN_STATE 2 1 STAT ONLY_OBJECT 2 STAT ONLY_OBJECTEND_STATE 2 72
  70. 70. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Atração• Mudar o comportamento do ponto 3 para atrair o ponto 2 e repelir outros pontos. – 3 ATTRP 2 ONLY_BALL 2• Mudar o comportamento do ponto 3 para atrair qualquer ponto – 3 ATTA ONLY_BALL 2 73
  71. 71. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Repulsão• Mudar o comportamento do ponto 3 para repelir o ponto 1. – 3 RPLO 1 ONLY_BALL 2• Mudar o comportamento do ponto 3 para repelir qualquer ponto. – 3 RPLA ONLY_BALL 2 74
  72. 72. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Depósito• Mudar o comportamento do ponto 3 para depositar o ponto 1. – 3 DRPO 1 ONLY_BALL 2• Mudar o comportamento do ponto 3 para depositar qualquer ponto. – 3 DRPA ONLY_BALL 2 75
  73. 73. basAR: Criando movimentosites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ RESUMO 76
  74. 74. basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Resumo comandos utilizados–STAT: [PointID] STAT [ShowMode] <AUDIO> <OVER?>–DRGF: [PointID] DRGF [ShowMode] <AUDIO> <OVER?>–DRGRP: [PointID] DRGRP [ShowMode] [NextState] <AUDIO> <OVER?>–ATTO: [PointID] ATTO [PointWaited] [ShowMode] [NextState] <AUDIO> <OVER?>–ATTRP: [PointID] ATTRP [PointWaited] [ShowMode] [NextState] <AUDIO> <OVER?>–ATTA: [PointID] ATTA [ShowMode] [NextState] <AUDIO> <OVER?>–RPLO: [PointID] RPLO [PointWaited] [ShowMode] [NextState] <AUDIO> <OVER?>–RPLA: [PointID] RPLA [ShowMode] [NextState] <AUDIO> <OVER?>–DRPO: [PointID] DRPO [PointWaited] [ShowMode] [NextState] <AUDIO> <OVER?>–DRPA: [PointID] DRPA [ShowMode] [NextState] <AUDIO> <OVER?> 77
  75. 75. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Introdução• Criar um cenário de Realidade Aumentada. – Dois pontos de seleção e um ponto de exibição• Utilizar o software basAR.• Entender a construção do cenário.• Entender os conceitos de mudança de estado e mudança de atributos 78
  76. 76. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Criando COMPORTAMENTO DE CLICKS 79
  77. 77. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comportamento?• Controle do feedback do sistema ao receber estimulo do usuário.• Baseado em máquina de estados (grafo de cena).• Ações  Comandos• Estados  Blocos de comandos 80
  78. 78. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Exemplo de estado• Inicia estado BEGIN_STATE 1• Ponto 1 estático, exibe tudo 1 STAT BOTH• Ponto 1 estático, exibe tudo 2 STAT BOTH• Ponto 1 estático, exibe tudo 3 STAT BOTH• Finaliza estado END_STATE• Outros comandos vide manual do basAR! 81
  79. 79. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ O que é click?• Seleção  Ação  Liberação• Selecionar um ponto onde a ação é alterar o fluxo de execução para outro estado, onde as ações e atributos dos pontos podem ser alterados. 82
  80. 80. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Mudança de estado• A mudança de estado pode ser realizada pelo sucesso dos comandos de movimentação (Vide tutorial sobre movimentação) ou utilizando um ponto com uma ação de mudança de estado.• Com o click do atuador no ponto de mudança de estado é possível mudar os atributos e reconfigurar a atitude e exibição do ambiente. 83
  81. 81. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Tipos de estados Estado de trabalho Estado de configuração• Este tipo de estado espera • Este tipo de estado, após uma ação ser completada aplicar as alterações de para que ocorra mudança comportamento, altera de estado automaticamente o estado.BEGIN_STATE 4 BEGIN_STATE 4 1 ... 1 ... 2 ... 2 ...END_STATE END_STATE GO_TO 5 84
  82. 82. basAR: Clicks sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comando que habilita mudança de estado• Mudar estado (Change State) – CHGSTPoint ID CHGST ShowMode NextState Audio Overplay• 1 CHGST ONLY_OBJECT 4 85
  83. 83. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Mudanças de modelos• Podem ser alterados os modelos na lista de objetos.• Escolhas possíveis: – Escolha de modelo específico – Próximo modelo da lista (lista circular) 86
  84. 84. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comando que muda modelo• Mudar modelo (Change active object) – CHGM Point ID CHGM ModelToChange• 1 CHGM 4 87
  85. 85. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comando que muda para o próximo modelo• Mudar para o próximo modelo (Change to next model) – CHGNM Point ID CHGNM• 3 CHGNM 88
  86. 86. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Posicionamento do ponto• O posicionamento do ponto pode ser mudado no decorrer da aplicação. +z• É possível mudar a: +y – Translação – Rotação – Escala +x 89
  87. 87. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comando de mudança de translação• Transladar (Translate). Incrementa a posição atual em milimetros. – TRA Point ID TRA X Y Z Time Step• 2 TRA 100 0 0• 2 TRA 0 50 100 10 100 90
  88. 88. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comando de mudança de rotação• Rotacionar (Rotate). Incrementa a rotação atual em graus. – ROT Point ID ROT X Y Z Time Step• 2 ROT 90.0 0.0 0.0• 2 ROT 0.0 0.0 360.0 60 1000 91
  89. 89. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comando de mudança de escala• Alterar Escala (Scale). Incrementa a escala do valor atual multiplicando pelo valor inserido. – SCL Point ID SCL X Y Z Time Step• 1 SCL 0.5 0.5 0.5• 1 SCL 2.0 2.0 2.0 1 50 92
  90. 90. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Matrizes de posicionamento• Para auxiliar o controle dos pontos, cada ponto possui 3 matrizes de posicionamento em referencia ao marcadore de base (infraestrutura) – Matriz inicial. (Start) – Matril última. (Last) – Matriz atual. (Actual) 93
  91. 91. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Matrizes de posicionamento• Matriz inicial (Start) é a matriz que é carregada no início do programa, no arquivo de configuração da base (config_base)• Matriz última (Last) é a matriz que localiza o início de um movimento.• Matriz atual (Actual) é a matriz atual do movimento e a final após a liberação do ponto. 94
  92. 92. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos sobre as matrizes• É possível copiar uma matriz para a outra, de forma a alterar o comportamento. Especialmente usado para alterar o comportamento padrão das ações de atração, repulsão e depósito.• Os comandos copiam: – Actual  Start e Actual  Last – Start  Actual e Last  Actual 95
  93. 93. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos sobre as matrizes• Salva actual em start (Set Start) – SETS Point ID SETS• Salva actual em last (Set Last) – SETL Point ID SETL• Salva start em actual (Get Start) – GETS Point ID GETS• Salva last em actual (Get Last) – GETL Point ID GETL 96
  94. 94. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos sobre as matrizes SETS SETL Start Last Actual GETL GETS 97
  95. 95. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comportamento config_basAR config_actuator config_behavior config_base app_pointM1 app_arduino app_pointK m1.dat m1.dat m2.dat m1.wrl m1.wrl M2.wrl 98
  96. 96. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comportamento de clicks• Exemplo 1. Criar 2 pontos de ação, e 1 ponto estático para receber as alterações de atributos.• Arquivo de comportamento: {basAR}/Data/config_behavior• Ponto 1 move ponto 3 para esquerda, Ponto 2 move o ponto 3 para a direita. 99
  97. 97. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Arquivo de ComportamentoBEGIN_STATE 1 1 CHGST ONLY_BALL 2 2 CHGST ONLY_BALL 3 3 STAT ONLY_OBJECTEND_STATEBEGIN_STATE 2 1 STAT ONLY_BALL 3 TRA 0 -5 0END_STATE GO_TO 1BEGIN_STATE 3 2 STAT ONLY_BALL 3 TRA 0 5 0END_STATE GO_TO 1 100
  98. 98. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Atividade: ALTERAR COMPORTAMENTO 101
  99. 99. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Translação• Mudar para movimento vertical.• Mudar no estado 2 o comando para ir para cima: – 3 TRA -5 0 0• Mudar no estado 3 o comando para ir para baixo – 3 TRA 5 0 0 102
  100. 100. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Rotação• Rotacionar o ponto em dois eixos• Mudar no estado 2 o comando para rotacionar no eixo X: – 3 ROT 5 0 0• Mudar no estado 3 o comando para rotacionar no eixo Y – 3 ROT 0 5 0 103
  101. 101. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Escala• Variar a escala do objeto do ponto• Mudar no estado 2 o comando para aumentar o tamanho do modelo. – 3 SCL 1.25 1.25 1.25• Mudar no estado 3 o comando para diminuir o tamanho do modelo. – 3 SCL 0.75 0.75 0.75 104
  102. 102. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Mudar modelo• Alterar o modelo.• Mudar no estado 2 o comando para chamar o modelo 2 da lista. – 3 CHGM 2• Mudar no estado 3 o comando para chamar o próximo modelo da lista. – 3 CHGNM – END_STATE GO_TO 1 AFTER 1 105
  103. 103. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Animação Simulada• Com um botao o modelo move e com o outro faz o modelo rotacionar.• Mudar no estado 2 o comando para acionar o movimento: – 3 TRA 1 1 0 0 2 20 – END_STATE GO_TO 1 AFTER 2• Mudar no estado 3 o comando para acionar a rotação: – 3 ROT 360 0 0 2 20 – END_STATE GO_TO 1 AFTER 2 106
  104. 104. basAR: Clickssites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ RESUMO 107
  105. 105. basAR: Clicks sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Resumo comandos utilizados–STAT: [PointID] STAT [ShowMode] <AUDIO> <OVER?>–CHGST: [PointID] CHGST [ShowMode] [NextState] <AUDIO> <OVER?>–TRA: [PointID] TRA [X] [Y] [Z] <Time> <Step>–ROT: [PointID] ROT [X] [Y] [Z] <Time> <Step>–SCL: [PointID] SCL [X] [Y] [Z] <Time> <Step>–CHGM: [PointID] CHGM [ModelToChange]–CHGNM: [PointID] CHGNM–SETS: [PointID] SETS–SETL: [PointID] SETL–GETS: [PointID] GETS–GETL: [PointID] GETL 108
  106. 106. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Funções de controle matemáticas• Permitem a construção de lógicas para auxiliar no controle do fluxo do programa.• Permitem loops (For, while, do-while)• Permitem colocar peso nos nós ( Inteligência Artificial) 109
  107. 107. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Variáveis por ponto• Cada ponto B tem uma variável A e B. A Subsistema de comandos matemáticas 110
  108. 108. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos entre as variáveis• Carregar Valor:• Adicionar valor• Subtrair entre variaveis• Swap• Inverter sinal• Multiplicar• Comparar 111
  109. 109. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos de carregar valor• Carregar valor na variável A. A <= Value – LOADA Point ID LOADA Value – 1 LOADA 25.5• Carregar valor na variável B. B<= Value – LOADB Point ID LOADB Value – 1 LOADB 30 112
  110. 110. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos para adicionar valor• Somar valor em A. A <= A + Value – ADDA Point ID ADDA Value – 1 ADDA 15• Somar valor em B. B <= B + Value – ADDB Point ID ADDB Value – 1 ADDB 35 113
  111. 111. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos para subtrair entre variáveis• Subtrair B de A. A <= A - B – AMB Point ID AMB – 1 AMB• Subtrair A de B B <= B - A – BMA Point ID BMA – 1 BMA 114
  112. 112. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos para inverter sinal• Inverte o sinal de A. A <= - A – NEGA Point ID NEGA – 1 NEGA• Inverte o sinal de B. B <= -B – NEGB Point ID NEGB – 1 NEGB 115
  113. 113. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos para multiplicar valor• Multiplica valor em A. A <= A * Valor – MULA Point ID MULA Value – 1 MULA 5• Multiplica valor em B. B <= B * Valor – MULB Point ID MULB Value – 1 MULB 3 116
  114. 114. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comando de troca entre variáveis• Trocar variáveis. A <= B e B <= A – SWAB Point ID SWAB – 1 SWAB 117
  115. 115. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos de comparação• Compara A com B. Com condições. Se comparação é válida muda de estado. – A > B ( GREATER) – A < B ( LESSER) – A = B (EQUALS) – CMP Point ID CMP TYPE NextState – 1 CMP LESSER 7 118
  116. 116. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comandos de comparação• Compara A com Value. Com condições. Se comparação é válida muda de estado. – A > Value ( GREATER) – A < Value ( LESSER) – A = Value (EQUALS) – CMP Point ID CMPV Value TYPE NextState – 1 CMP 35.5 LESSER 7 119
  117. 117. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comportamento config_basAR config_actuator config_behavior config_base app_pointM1 app_arduino app_pointK m1.dat m1.dat m2.dat m1.wrl m1.wrl M2.wrl 120
  118. 118. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Exemplo de Loop• Exemplo 1. Criar loop para contar Clicks.• Arquivo de comportamento: {basAR}/Data/config_behavior• Clicando em qualquer ponto soma contador e quando houver um total de 6 clicks para a aplicação 121
  119. 119. basAR: Math.IA sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/Fluxograma 122
  120. 120. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Arquivo de ComportamentoBEGIN_STATE 1 BEGIN_STATE 5 1 CHGST ONLY_BALL 2 1 ADDA 1 2 CHGST ONLY_BALL 3 END_STATE GO_TO 6 3 CHGST ONLY_BALL 4END_STATE BEGIN_STATE 6 1 CMPV 6 EQUALS 7BEGIN_STATE 2 END_STATE GO_TO 1 1 STAT ONLY_BALLEND_STATE GO_TO 5 AFTER 1 BEGIN_STATE 7 1 STAT ONLY_BALLBEGIN_STATE 3 1 STAT ONLY_BALL 2 STAT ONLY_BALL 1 STAT ONLY_BALLEND_STATE GO_TO 5 AFTER 1 END_STATEBEGIN_STATE 4 3 STAT ONLY_BALLEND_STATE GO_TO 5 AFTER 1 123
  121. 121. basAR: Math.IAsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ RESUMO 124
  122. 122. basAR: Math.IA sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Resumo comandos utilizados– STAT: [PointID] STAT [ShowMode] <AUDIO> <OVER?>– CHGST: [PointID] CHGST [ShowMode] [NextState] <AUDIO> <OVER?>– LOADA: [PointID] LOADA [Value]– LOADB: [PointID] LOADB [Value– ADDA: [PointID] ADDA [Value]– ADDB: [PointID] ADDB [Value]– AMB: [PointID] AMB– BMA: [PointID] BMA– NEGA: [PointID] NEGA– NEGB: [PointID] NEGB– MULA: [PointID] MULA [Value]– MULB: [PointID] MULB [Value]– CMP: [PointID] CMP [GREATER/LESSER/EQUALS] [NEXTSTATE]– CMPV: [PointID] CMPV [Value] [GREATER/LESSER/EQUALS] [NEXTSTATE] 125
  123. 123. basAR: ARDUINOsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Criando COMUNICAÇÃO COM O ARDUINO 126
  124. 124. basAR: ARDUINOsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comportamento?• Controle do feedback do sistema ao receber estimulo do usuário.• Baseado em máquina de estados (grafo de cena).• Ações  Comandos• Estados  Blocos de comandos 127
  125. 125. basAR: ARDUINOsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Exemplo de estado• Inicia estado BEGIN_STATE 1• Ponto 1 estático, exibe tudo 1 STAT BOTH• Ponto 1 estático, exibe tudo 2 STAT BOTH• Ponto 1 estático, exibe tudo 3 STAT BOTH• Finaliza estado END_STATE• Outros comandos vide manual do basAR! 128
  126. 126. basAR: ARDUINOsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ O que é Comunicação?• Envio e recepção de dados entre dois ou mais sistemas.• Protocolo de comunicação.• Lookup table 129
  127. 127. basAR: ARDUINOsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Evento de envio 130
  128. 128. basAR: ARDUINOsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Evento de Recepção 131
  129. 129. basAR: ARDUINOsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Evento de Interrupção 132
  130. 130. basAR: ARDUINOsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Lookup Table• Tabela de tradução de comandos para enviar para o ARDUINO.• Auxilia na separação de qual comando vai ser enviado para o ARDUINO 133
  131. 131. basAR: ARDUINO sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Lookup TableCOM4 # ARDUINO COM# ARDUINO LOOKUP TABLE# THE NUMBERS 00-09, and 255 are RESERVED to Configuration and Test. 10-254# TABLE FORMAT: REQUEST_NUMBER REQUEST_NAME <NEXT_STATE># CONFIGURATION AND TEST COMMANDS1 aliveTest2 aliveAnswer3 intRequest4 readRequest5 readRequestAnswer# USER COMMANDS# DEVICE 1 - Light10 lightOFF11 lightON# DEVICE 2 - Button20 buttonPressed 5 134
  132. 132. basAR: ARDUINO sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ ARDUINO CODE// start global variables void setup() { Serial.begin(9600); // connect to the serial port} void loop () { // read the serial port val = Serial.read(); // Code to adapt data switch(val){ case 1: {// CHECK IF ITS aliveTest Serial.print(2); // send back aliveAnswer break; } case 3: {// CHECK IF ITS intRequest {Serial.print(intNSdata); break; } case 4: {// CHECK IF Its readRequest break; } default: break; } } 135
  133. 133. basAR: ARDUINOsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comando de envio de mensagens• Enviar mensagem (Send message) – ESND• 1 ESND lightON 136
  134. 134. basAR: ARDUINOsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comando de recebimento de mensagens• Receber mensagem (Receive message) – ESND• 1 ERCV buttonPressed 137
  135. 135. basAR: ARDUINOsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Comportamento config_basAR config_actuator config_behavior config_base app_pointM1 app_arduino app_pointK m1.dat m1.dat m2.dat m1.wrl m1.wrl M2.wrl 138
  136. 136. basAR: ARDUINOsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Arquivo de ComportamentoBEGIN_STATE 1 1 CHGST ONLY_BALL 2 2 ESND lightOFFEND_STATE AFTER 2BEGIN_STATE 2 1 CHGST ONLY_BALL 1 2 ESND lightONEND_STATE AFTER 2 139
  137. 137. basAR: ARDUINOsites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ RESUMO 140
  138. 138. basAR: ARDUINO sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Resumo comandos utilizados–CHGST: [PointID] CHGST [ShowMode] [NextState] <AUDIO> <OVER?>–ESND: [PointID] ESND [Message]–ERCV: [PointID] ERCV [Message] 141
  139. 139. ARBehavioral Authoring System for Augmented Reality Christopher Shneider Cerqueira – christophercerqueira@gmail.com Claudio Kirner – ckirner@gmail.comhttps://sites.google.com/site/christophercerqueira/projetos/ear/basar http://www.ckirner.com/basar

×