Post on 06-Jun-2015
transcript
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
basAR: Behavioral Authoring System for Augmented Reality
ferramenta de autoria
Estrutura de pontos
Comportamentos inteligentes
Cross-reality
Video
Como funciona
DIVIDIR EM CAMADAS
Configurações básicas e genéricas do sistema.
Correlação entre o mundo real e o mundo virtual
Infraestrutura
Estrutura Atuação
Conteúdo
Comportamento Localização, orientação e escala dos objetos virtuais.
Como é realizada a interação do usuário
com o sistema.
Controle do feedback do sistema ao receber estimulo do usuário.
Camadas:
Atuação
Comportamento
Infraestrutura
Estrutura
Conteúdo
Comportamento
Comportamento
Seleção Ação Liberação
Comportamento
Estados: Descrição das ações e atributos
dos pontos da estrutura.
Comportamento
Estado 1
Estado 2
Estado 3
Estado 4
Estado 5
Estado 6
Comportamento ?
• Que ações sao possíveis no mundo virtual?
CLICAR MOVIMENTAR
• PODE MOVER?
• SE COLIDIR O QUE ACONTECE?
• PODE LIBERAR NESTE LOCAL?
MOVIMENTAR
• O que acontece se clicar?
• O que pode ser mudado?
CLICAR
Comportamento ?
• O que pode ser alterado?!
POS Modelo Animar
• Posição
• Orientação
• Escala
POS
• Passar para o próximo.
• Escolher modelo da lista.
Modelo
• Simular uma animação!
– ROTAÇÃO
– TRANSLAÇÃO
– ESCALA
Animar
Cross-Reality • Enviar comandos
para o mundo real!
• Receber comandos do mundo real!
Matemática
• Cada ponto tem duas variáveis ( A e B )
– Colocar um valor.
– Adicionar
– Inverter
– Multiplicar
– Comparar A B
basAR tem um universo de possibilidades de criação de cenário.
Como que as coisas funcionam na hora certa
COMPORTAMENTO É DIVIDO EM
ESTADOS E A UNIÃO DE ESTADOS GERA UMA SEQUÊNCIA PROGRAMÁVEL, NUMA
MÁQUINA DE ESTADOS.
Autômato
Grafo
Mapa mental
PARA MUDAR DE UM ESTADO PARA O OUTRO DEPENDE DO SUCESSO DA AÇÃO!
Comportamento
Por exemplo
1. Move e mostra quadrado
2. Move e mostra triângulo
3. Atrai o quadrado
Estado 1 Estado 2
Controlador de Estados
Estado 1 Estado 2 Estado 3 Estado 4 Estado 5 Estado 6 Estado 7
Estrutura (Pontos de Ação)
Estado 1
Ação pediu próximo
estado! (2)
Estado 2
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)
Vídeo
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
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
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
• 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.
Aplicação em camadas
33
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Hierarquia de objetos
basAR
Behavior
Base
Actuator
point1 ... pointK
app_pointM1
m1.dat
m1.wrl
...
...
...
Feedback
Feedback
Feedback
Click1.mp3
Error.mp3
Turn real motor ON
...
app_pointK
m1.dat
m1.wrl
m2.dat
M2.wrl
34
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Hierarquia de arquivos config_basAR
config_behavior
config_base
config_actuator
app_pointM1
m1.dat
m1.wrl
app_arduino app_pointK
m1.dat
m1.wrl
m2.dat
M2.wrl
35
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
INFRAESTRUTURA, ESTRUTURA, CONTEÚDO E ATUAÇÃO
Criando
36
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Sistema config_basAR
config_behavior
config_base
config_actuator
app_pointM1
m1.dat
m1.wrl
app_arduino app_pointK
m1.dat
m1.wrl
m2.dat
M2.wrl
37
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
• Configura:
– a primeira interligação dos objetos;
– modo de exibição da janela;
– objetos padrões.
• Arquivo:
{basAR}/Data/config_basAR
Sistema
38
#config_basAR basAR
WINDOWED VRML wrl/action/ballBlue.dat VRML Wrl/Action/ballGreen.dat VRML Wrl/Action/ballRED.dat VRML Wrl/action/tampa.dat Audio/explosion.wav 0.5 Audio/backTrack.mp3 LOOP 0.3 Audio/bell.wav ONCE 0.5 Data/config_behavior # Rule Machine # Bases 1 Data/config_base1 # Actuators 1 ARTKSM Data/config_transport
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Infraestrutura config_basAR
config_behavior
config_base
config_actuator
app_pointM1
m1.dat
m1.wrl
app_arduino app_pointK
m1.dat
m1.wrl
m2.dat
M2.wrl
39
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
• correlação entre o mundo real e o mundo virtual
• Definição de base
• Arquivo:
{basAR}/Data/config_base
Infraestrutura
#config_base1 # This file contains the setup for a workspace BASE1 # Single ARToolKit Marker configuration ARTKSM Data/Markers/base.patt 53.0 0.0 0.0 USE_DEFAULT # Workspace Sounds Audio/bell.wav ONCE 0.5 # Visible Sound Audio/explosion.wav 0.5 # Error sound wrl/action/status.dat
40
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Estrutura config_basAR
config_behavior
config_base
config_actuator
app_pointM1
m1.dat
m1.wrl
app_arduino app_pointK
m1.dat
m1.wrl
m2.dat
M2.wrl
41
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
• Pontos do espaço virtual com esferas de ação, modelos associados e comportamento.
• Localização, orientação e escala dos objetos virtuais.
• Arquivo:
{basAR}/Data/config_base
… Pen # Point Name DEFAULT_IPOINT # Action Model File Data/app_pen # OBJECT Model File 20.0 20.0 0.0 # Translation 0.0 0.0 0.0 # Rotation 1.0 1.0 1.0 # Scale 900.0 # Action radius
…
Estrutura
42
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Exemplo com 3 pontos
…
3
Quadrado
DEFAULT_IPOINT
Data/app_quad
200.0 200.0 0.0
0.0 0.0 0.0
1.0 1.0 1.0
900.0
Triangulo
DEFAULT_IPOINT
Data/app_triang
200.0 -200.0 0.0
0.0 0.0 0.0
1.0 1.0 1.0
900.0
pontoColisao
DEFAULT_IPOINT
NO_OBJECT
-200.0 0.0 0.0
0.0 0.0 0.0
1.0 1.0 1.0
900.0
{basAR}/Data/config_base 43
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Arquivo config_base completo _p1
BASE1 ARTKSM Data/Markers/base.patt 53.0 0.0 0.0 USE_DEFAULT Audio/bell.wav ONCE 0.5 Audio/explosion.wav 0.5 wrl/action/status.dat
3 Quadrado DEFAULT_IPOINT Data/app_quad 200.0 200.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 900.0
44
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Arquivo config_base completo _p2
Triangulo
DEFAULT_IPOINT
Data/app_triang
200.0 -200.0 0.0
0.0 0.0 0.0
1.0 1.0 1.0
900.0
pontoColisao
DEFAULT_IPOINT
NO_OBJECT
-200.0 0.0 0.0
0.0 0.0 0.0
1.0 1.0 1.0
900.0
45
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Conteúdo config_basAR
config_behavior
config_base
config_actuator
app_pointM1
m1.dat
m1.wrl
app_arduino app_pointK
m1.dat
m1.wrl
m2.dat
M2.wrl
46
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
• objetos 3D e áudios que são utilizados.
• Arquivos:
{basAR}/Data/App/app_quad
{basAR}/Data/App/app_triang
{basAR}/Wrl/quad.dat
{basAR}/Wrl/triang.dat
{basAR}/Wrl/quad.wrl
{basAR}/Wrl/triang.wrl
1 MODEL3D VRML Wrl/quad.dat
Conteúdo
quad.wrl 0 0 0 0 90 0 0 0 0
47
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Exemplo do conteúdo dos 2 pontos
1 MODEL3D VRML Wrl/quad.dat
1 MODEL3D VRML Wrl/triang.dat
quad.wrl 0 0 0 0 90 0 0 0 0
triang.wrl 0 0 0 0 90 0 0 0 0
{basAR}/Data/App/app_quad {basAR}/Data/App/app_triang
{basAR}/Wrl/quad.dat {basAR}/Wrl/triang.dat
48
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Atuação config_basAR
config_behavior
config_base
config_actuator
app_pointM1
m1.dat
m1.wrl
app_arduino app_pointK
m1.dat
m1.wrl
m2.dat
M2.wrl
49
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
• Interação do usuário com o sistema
#config_tranport ARTKSM1 # 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
Atuação
50
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
COMPORTAMENTO DE MOVIMENTAÇÃO
Criando
51
basAR: Criando movimento sites.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
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Exemplo de estado
• Inicia estado
• Ponto 1 estático, exibe tudo
• Ponto 2 estático, exibe tudo
• Ponto 3 estático, exibe tudo
• Finaliza estado
• Outros comandos vide manual do basAR!
BEGIN_STATE 1
1 STAT BOTH
2 STAT BOTH
3 STAT BOTH
END_STATE
53
basAR: Criando movimento sites.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
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Mapa de atitudes:
• Movendo um ponto:
– Zonas reativas: • Atraem
• Repelem
• Permitem depósito.
– Zonas neutras: • Permitem depósito.
55
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/ Collision between actuator
and action point
Move action
point
System
ControlledUser controlled
Release point
Test relseaseAttract point
Repels point
Reactive zone: collision of the moving point with others
action points
Se
lec
tio
nM
an
ipu
lati
on
Re
lea
se
Point selected
If selectable
Configure
System
Release point
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
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Comandos que permitem movimento
• Arrastar livremente (Drag Freely)
– DRGF
• 1 DRGF BOTH
• 13 DRGF ONLY_OBJECT
• 5 DRFG BOTH Audio/click.mp3
57
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Point ID DRGF Audio OverplayShowMode
Comandos que permitem movimento
• Arrastar livremente, mas quando estatico e houver colisão, repele (Drag and Repels)
– DRGRP
• 1 DRGRP FLASH_BALL
• 6 DRGRP ONLY_BALL 3
• 2 DRGRP BOTH 7 Audio/click.mp3
58
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Point ID DRGRP Audio OverplayNextStateShowMode
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
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
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
• 4 ATTO 3 BOTH 7 Audio/congrat.mp3
• 2 ATTO 1 ONLY_MODEL 4
• 5 ATTO 1 SENSE_PROX 15
61
Point ID ATTO Audio OverplayNextStatePointWaited ShowMode
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
• 5 ATTRP 2 ONLY_BALL 20
62
Point ID ATTRP Audio OverplayNextStatePointWaited ShowMode
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
• 2 ATTA FLASH_BALL 8
63
Point ID ATTA Audio OverplayNextStateShowMode
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
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
• 3 RPLO 4 BOTH 9
65
Point ID RPLO Audio OverplayNextStatePointWaited ShowMode
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
• 2 RPLA FLASH_BALL 8
66
Point ID RPLA Audio OverplayNextStateShowMode
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
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
• 1 DRPO 3 SENSE_PROX 35
68
Point ID DRPO Audio OverplayNextStatePointWaited ShowMode
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
• 5 DRPA SENSE_PROX 3 Audio/drop.mp3
69
Point ID DRPA Audio OverplayNextStateShowMode
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Comportamento config_basAR
config_behavior
config_base
config_actuator
app_pointM1
m1.dat
m1.wrl
app_arduino app_pointK
m1.dat
m1.wrl
m2.dat
M2.wrl
70
basAR: Criando movimento sites.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
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Arquivo de Comportamento
BEGIN_STATE 1
1 DRGF ONLY_OBJECT
2 DRGF ONLY_OBJECT
3 ATTO 1 ONLY_BALL 2
END_STATE 1
BEGIN_STATE 2
1 STAT ONLY_OBJECT
2 STAT ONLY_OBJECT
END_STATE 2
72
basAR: Criando movimento sites.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
basAR: Criando movimento sites.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
basAR: Criando movimento sites.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
basAR: Criando movimento sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
RESUMO
76
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
basAR: Criando movimento 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
basAR: Clicks sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
COMPORTAMENTO DE CLICKS Criando
79
basAR: Clicks sites.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
basAR: Clicks sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Exemplo de estado
• Inicia estado
• Ponto 1 estático, exibe tudo
• Ponto 1 estático, exibe tudo
• Ponto 1 estático, exibe tudo
• Finaliza estado
• Outros comandos vide manual do basAR!
BEGIN_STATE 1
1 STAT BOTH
2 STAT BOTH
3 STAT BOTH
END_STATE
81
basAR: Clicks sites.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
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
basAR: Clicks sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Tipos de estados
Estado de trabalho
• Este tipo de estado espera uma ação ser completada para que ocorra mudança de estado
BEGIN_STATE 4
1 ...
2 ...
END_STATE
Estado de configuração
• Este tipo de estado, após aplicar as alterações de comportamento, altera automaticamente o estado.
BEGIN_STATE 4
1 ...
2 ...
END_STATE GO_TO 5
84
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)
– CHGST
• 1 CHGST ONLY_OBJECT 4
85
Point ID CHGST Audio OverplayNextStateShowMode
basAR: Clicks sites.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
basAR: Clicks sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Comando que muda modelo
• Mudar modelo (Change active object)
– CHGM
• 1 CHGM 4
87
Point ID CHGM ModelToChange
basAR: Clicks sites.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
• 3 CHGNM
88
Point ID CHGNM
basAR: Clicks sites.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.
• É possível mudar a:
– Translação
– Rotação
– Escala
89
+z
+y
+x
basAR: Clicks sites.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
• 2 TRA 100 0 0
• 2 TRA 0 50 100 10 100
90
Point ID TRA X Y Z Time Step
basAR: Clicks sites.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
• 2 ROT 90.0 0.0 0.0
• 2 ROT 0.0 0.0 360.0 60 1000
91
Point ID ROT X Y Z Time Step
basAR: Clicks sites.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
• 1 SCL 0.5 0.5 0.5
• 1 SCL 2.0 2.0 2.0 1 50
92
Point ID SCL X Y Z Time Step
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
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
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
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
• Salva actual em last (Set Last) – SETL
• Salva start em actual (Get Start) – GETS
• Salva last em actual (Get Last) – GETL
96
Point ID SETS
Point ID SETL
Point ID GETS
Point ID GETL
basAR: Clicks sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Comandos sobre as matrizes
97
Start Last Actual
SETS
SETL
GETS
GETL
basAR: Clicks sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Comportamento config_basAR
config_behavior
config_base
config_actuator
app_pointM1
m1.dat
m1.wrl
app_arduino app_pointK
m1.dat
m1.wrl
m2.dat
M2.wrl
98
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
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
basAR: Clicks sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
ALTERAR COMPORTAMENTO Atividade:
101
basAR: Clicks sites.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
basAR: Clicks sites.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
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
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
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
basAR: Clicks sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
RESUMO
107
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
basAR: Clicks 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
basAR: Math.IA sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Variáveis por ponto
110
A B
Subsistema de comandos
matemáticas
• Cada ponto tem uma variável A e B.
basAR: Math.IA sites.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
basAR: Math.IA sites.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
– 1 LOADA 25.5
• Carregar valor na variável B. B<= Value
– LOADB
– 1 LOADB 30
112
Point ID LOADA Value
Point ID LOADB Value
basAR: Math.IA sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Comandos para adicionar valor
• Somar valor em A. A <= A + Value
– ADDA
– 1 ADDA 15
• Somar valor em B. B <= B + Value
– ADDB
– 1 ADDB 35 113
Point ID ADDB Value
Point ID ADDA Value
basAR: Math.IA sites.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
– 1 AMB
• Subtrair A de B B <= B - A
– BMA
– 1 BMA 114
Point ID AMB
Point ID BMA
basAR: Math.IA sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Comandos para inverter sinal
• Inverte o sinal de A. A <= - A
– NEGA
– 1 NEGA
• Inverte o sinal de B. B <= -B
– NEGB
– 1 NEGB 115
Point ID NEGB
Point ID NEGA
basAR: Math.IA sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Comandos para multiplicar valor
• Multiplica valor em A. A <= A * Valor
– MULA
– 1 MULA 5
• Multiplica valor em B. B <= B * Valor
– MULB
– 1 MULB 3 116
Point ID MULB Value
Point ID MULA Value
basAR: Math.IA sites.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
– 1 SWAB
117
Point ID SWAB
basAR: Math.IA sites.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
– 1 CMP LESSER 7
118
Point ID CMP TYPE NextState
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
– 1 CMP 35.5 LESSER 7
119
Point ID CMPV TYPE NextStateValue
basAR: Math.IA sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Comportamento config_basAR
config_behavior
config_base
config_actuator
app_pointM1
m1.dat
m1.wrl
app_arduino app_pointK
m1.dat
m1.wrl
m2.dat
M2.wrl
120
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
basAR: Math.IA sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Flu
xogr
ama
122
basAR: Math.IA 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 CHGST ONLY_BALL 4
END_STATE
BEGIN_STATE 2
1 STAT ONLY_BALL
END_STATE GO_TO 5 AFTER 1
BEGIN_STATE 3
2 STAT ONLY_BALL
END_STATE GO_TO 5 AFTER 1
BEGIN_STATE 4
3 STAT ONLY_BALL
END_STATE GO_TO 5 AFTER 1
BEGIN_STATE 5
1 ADDA 1
END_STATE GO_TO 6
BEGIN_STATE 6
1 CMPV 6 EQUALS 7
END_STATE GO_TO 1
BEGIN_STATE 7
1 STAT ONLY_BALL
1 STAT ONLY_BALL
1 STAT ONLY_BALL
END_STATE
123
basAR: Math.IA sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
RESUMO
124
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
basAR: Math.IA sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
COMUNICAÇÃO COM O ARDUINO Criando
126
basAR: ARDUINO sites.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
basAR: ARDUINO sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Exemplo de estado
• Inicia estado
• Ponto 1 estático, exibe tudo
• Ponto 1 estático, exibe tudo
• Ponto 1 estático, exibe tudo
• Finaliza estado
• Outros comandos vide manual do basAR!
BEGIN_STATE 1
1 STAT BOTH
2 STAT BOTH
3 STAT BOTH
END_STATE
128
basAR: ARDUINO sites.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
basAR: ARDUINO sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Evento de envio
130
basAR: ARDUINO sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Evento de Recepção
131
basAR: ARDUINO sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Evento de Interrupção
132
basAR: ARDUINO sites.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
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
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
basAR: ARDUINO sites.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
basAR: ARDUINO sites.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
basAR: ARDUINO sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
Comportamento config_basAR
config_behavior
config_base
config_actuator
app_pointM1
m1.dat
m1.wrl
app_arduino app_pointK
m1.dat
m1.wrl
m2.dat
M2.wrl
138
basAR: ARDUINO 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 ESND lightOFF
END_STATE AFTER 2
BEGIN_STATE 2
1 CHGST ONLY_BALL 1
2 ESND lightON
END_STATE AFTER 2
139
basAR: ARDUINO sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
RESUMO
140
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
basAR: ARDUINO sites.google.com/site/christophercerqueira/projetos/ear/basar ou www.ckirner.com/basar/
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