2. AR
Behavioral Authoring System for Augmented Reality
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
3. basAR: Behavioral Authoring System
for Augmented Reality
ferramenta de autoria
Estrutura de pontos
Comportamentos inteligentes
Cross-reality
8. 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
25. COMPORTAMENTO É DIVIDO EM
ESTADOS E A UNIÃO DE ESTADOS GERA
UMA SEQUÊNCIA PROGRAMÁVEL, NUMA
MÁQUINA DE ESTADOS.
26. PARA MUDAR DE UM ESTADO PARA O
OUTRO DEPENDE DO SUCESSO DA AÇÃO!
Autômato
Grafo
Mapa mental
27. Por exemplo
Comportamento
1. Move e mostra quadrado
2. Move e mostra triângulo
3. Atrai o quadrado
Estado 1 Estado 2
28. 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)
29. 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)
33. basAR: Criando movimento
sites.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
40. basAR: Criando movimento
sites.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
50. basAR: Criando movimento
sites.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
53. basAR: Criando movimento
sites.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
55. basAR: Criando movimento
sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Collision between actuator
and action point
Selection
Mapa 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
58. 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)
– DRGRP
Point ID DRGRP ShowMode NextState Audio Overplay
• 1 DRGRP FLASH_BALL
• 6 DRGRP ONLY_BALL 3
• 2 DRGRP BOTH 7 Audio/click.mp3
58
60. basAR: Criando movimento
sites.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
61. 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)
– ATTO
Point 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
62. 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)
– ATTRP
Point ID ATTRP PointWaited ShowMode NextState Audio Overplay
• 5 ATTRP 2 ONLY_BALL 20
62
63. 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)
– ATTA
Point ID ATTA ShowMode NextState Audio Overplay
• 2 ATTA FLASH_BALL 8
63
64. basAR: Criando movimento
sites.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
65. 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)
– RPLO
Point ID RPLO PointWaited ShowMode NextState Audio Overplay
• 3 RPLO 4 BOTH 9
65
66. 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)
– RPLA
Point ID RPLA ShowMode NextState Audio Overplay
• 2 RPLA FLASH_BALL 8
66
67. basAR: Criando movimento
sites.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
68. 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)
– DRP0
Point ID DRPO PointWaited ShowMode NextState Audio Overplay
• 1 DRPO 3 SENSE_PROX 35
68
69. 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)
– DRPA
Point ID DRPA ShowMode NextState Audio Overplay
• 5 DRPA SENSE_PROX 3 Audio/drop.mp3
69
78. basAR: Clicks
sites.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
81. basAR: Clicks
sites.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
83. basAR: Clicks
sites.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
84. basAR: Clicks
sites.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
93. basAR: Clicks
sites.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
94. basAR: Clicks
sites.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
95. basAR: Clicks
sites.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
96. basAR: Clicks
sites.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
99. basAR: Clicks
sites.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
100. basAR: Clicks
sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Arquivo de Comportamento
BEGIN_STATE 1
1 CHGST ONLY_BALL 2
2 CHGST ONLY_BALL 3
3 STAT ONLY_OBJECT
END_STATE
BEGIN_STATE 2
1 STAT ONLY_BALL
3 TRA 0 -5 0
END_STATE GO_TO 1
BEGIN_STATE 3
2 STAT ONLY_BALL
3 TRA 0 5 0
END_STATE GO_TO 1
100
104. basAR: Clicks
sites.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
105. basAR: Clicks
sites.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
106. basAR: Clicks
sites.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
109. basAR: Math.IA
sites.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
119. basAR: Math.IA
sites.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
121. basAR: Math.IA
sites.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
122. basAR: Math.IA
sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Fluxograma
122
123. basAR: Math.IA
sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Arquivo de Comportamento
BEGIN_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 4
END_STATE BEGIN_STATE 6
1 CMPV 6 EQUALS 7
BEGIN_STATE 2 END_STATE GO_TO 1
1 STAT ONLY_BALL
END_STATE GO_TO 5 AFTER 1 BEGIN_STATE 7
1 STAT ONLY_BALL
BEGIN_STATE 3 1 STAT ONLY_BALL
2 STAT ONLY_BALL 1 STAT ONLY_BALL
END_STATE GO_TO 5 AFTER 1 END_STATE
BEGIN_STATE 4
3 STAT ONLY_BALL
END_STATE GO_TO 5 AFTER 1 123
128. basAR: ARDUINO
sites.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
134. basAR: ARDUINO
sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Lookup Table
COM4 # 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 COMMANDS
1 aliveTest
2 aliveAnswer
3 intRequest
4 readRequest
5 readRequestAnswer
# USER COMMANDS
# DEVICE 1 - Light
10 lightOFF
11 lightON
# DEVICE 2 - Button
20 buttonPressed 5 134
135. 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
142. AR
Behavioral Authoring System for Augmented Reality
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