Realidade Aumentada Fundamentos e Conceitos
Tags: realidadeaumentada, 3d, portugues
Published: 2020-04-19 01:28:21

Atualmente, com a o avanço cada vez mais rápido das tecnologias e da capacidade de processamento dos dispositivos tecnológicos, a realidade aumentada tem sido um recurso muito usado para diversas aplicações. Este artigo tem como objetivo apresentar de forma mais conceitual o que significa e o que contempla essa experiência.

Frequentemente tentamos sempre fazer associações do mundo virtual com o mundo real mas isso ocasionalmente gera um certo esforço cognitivo. A realidade aumentada então chega com um propósito de ligar o mundo real com componentes digitais de forma direta e automática. O princípio básico da realidade aumentada é apresentar informações dentro do ambiente físico. **É como se o conteúdo digital fizesse parte do mundo real na percepção do usuário.**

Dando um passo atrás, precisamos definir primeiro o que nós percebemos como **realidade**: um conjunto de sensações, seja auditiva, visual, palatável, olfativa ou gestual que associamos a memórias e modelos mentais pré adquiridos. Portanto, perceba que cada um tem uma percepção diferente de realidade, pois cada indivíduo tem um conjunto de modelos e memórias diferentes entre si, mesmo que as sensações sejam as mesmas. Com isso, quando uma realidade é "aumentada" - ou estendida - com objetos e/ou informações virtuais, é necessário que estes sejam coerentes ao mundo real em relação a posição e tamanho independente do dispositivo usado. Ou seja, quanto mais consistente for a aplicação dos objetos virtuais no mundo físico, mais transparente é essa experiência.


---

Uma experiência de realidade aumentada precisa ter, necessariamente, três características:

- **Combinar o real e o virtual:** o usuário se mantém no mundo real, podendo sentir (ver, ouvir, cheirar, tocar) tudo que ele sentiria independente da experiência em RA. As informações adicionadas de forma digital devem fazer sentido para ele dentro daquela realidade no momento.
- **Interativo em tempo real:** toda informação virtual tem uma localização ou espaço físico a ser inserido dentro do mundo real. E isto precisa se manter constante independente da movimentação ou ponto de vista do usuário.
- **Feito em 3D:** como seres humanos com dois receptores de imagem (olhos), nós percebemos o mundo real em 3D, portanto as informações digitais que serão inseridos nele precisam estar compatíveis com esse modelo.

Repare que não existe nenhuma limitação de dispositivo e muito menos tem o requisito de ser uma interação visual. Podendo ser também auditiva, gestual ou até mesmo degustativa ou olfativa. Contudo é necessário que o usuário tenha controle em tempo real das informações e um registro do espaço. Portanto é preciso que, independente da movimentação do dispositivo utilizado, as informações estejam atreladas ao ambiente corretamente.


---

## Componentes da Realidade Aumentada

Em geral, duas coisas precisam acontecer em uma aplicação de realidade aumentada, de forma cíclica e contínua:
1. A aplicação precisa determinar o estado atual do mundo real e do mundo virtual.
2. A aplicação precisa mostrar o conteúdo virtual sobreposto ao mundo real de forma que o usuário sinta o mundo virtual como parte do mundo físico.

Existem três componentes em uma aplicação de realidade aumentada:
- **Sensores** que determinam o estado do mundo real onde a aplicação está rodando.
- **Processador** que avalia as informações adquiridas pelos sensores, aplica as leis da física e outras regras necessárias pelo mundo virtual para gerar os sinais necessários para o display das informações.
- Um **display** - ou algum **sistema interativo** adequado para criar a impressão que o mundo real e o virtual são coexistentes e "confundir" o usuário para que ele perceba tudo como uma realidade única.

### Sensores

Para responder corretamente ao ambiente, o mundo virtual precisa de dados atualizados em tempo real do mundo físico. Para isso, são usados diversos sensores, que podem ser divididos em três categorias:

- **Sensores de rastreamento:** como a realidade aumentada tem como princípio ser registrada espacialmente, é necessário ter algum mecanismo que determine informações sobre a posição do participante, o mundo real e qualquer que seja o dispositivo usado na interação com RA. Neste caso, **posição** inclui **localização** e **orientação**. Exemplos de sensores de rastreamento: Câmera, GPS. Giroscópio, Acelerômetro e Bússola. Para determinar de forma completa uma posição é necessário informação sobre **seis graus de liberdade** de cada entidade que é rastreada, segundo a figura abaixo.

![Seis Graus de Liberdade](https://dev-to-uploads.s3.amazonaws.com/i/1v4x1tlldxccjblda2xb.png)

<figcaption>Seis graus de liberdade incluem coordenadas X, Y e Z e também inclinação, direção e rotação do objeto no eixo em que ele se encontra.</figcaption>

- **Sensores de variáveis do ambiente:** Existem uma série de sensores que são menos utilizados em uma experiência de realidade aumentada, mas podem prover diversas informações relevantes sobre o mundo físico. Por exemplo: sensores de temperatura, umidade, pH, etc. Uma forma de aplicar esses sensores seria utilizar a aplicação como uma "lente mágica" que permite ao usuário visualizar as informações que seriam apenas "dados numéricos" em uma tela de computador.
Sensores de entrada do usuário: Enquanto nos outros sensores o usuário não tem controle sobre o que é rastreado ou medido, neste caso os sensores incluem componentes como botões, teclado, ou qualquer interface interativa em que o usuário possa tomar decisões sobre a experiência de realidade aumentada.

### Processador

O processador é o componente que obtém e analisa todos os dados dos sensores e coordena todas as tarefas de um sistema de realidade aumentada. Além de mandar todas a informações necessárias para o display mostrar as informações.
O processador precisa ter poder computacional suficiente para fazer tudo isso citado em tempo real (na percepção do usuário). Para cada ação ou modificação nos dados dos sensores, as informações devem ser atualizadas sem nenhum atraso para o indivíduo.
Por padrão, uma aplicação em realidade aumentada precisa sustentar, no mínimo, uma taxa de 15 frames por segundo - o ideal é que seja maior - para que o participante perceba o display como algo contínuo.

### Display

O display é o componente que vai causar uma "confusão" na percepção de realidade do usuário. Um display pode ser tanto o dispositivo que mostra os sinais computados no processador e vai misturar o mundo real e o mundo virtual como também podem ser os sinais apresentados na interação. Por exemplo, se tenho uma tela de smartphone mostrando uma cena de uma mesa, então essa tela é um display, assim como a mesa. Neste caso, a cena é um display que é apresentado por outro display.


---

## Conceitos relacionados a Realidade Aumentada

Para entender plenamente o funcionamento da realidade aumentada, é necessário saber também de alguns conceitos relacionados.

### Visão computacional

Uma posição (localização e orientação) pode ser tanto absoluta: independe de qualquer outra coisa, ou seja, é relativo ao ambiente global com também pode ser relativa: determinada a partir da posição de outro objeto.

![Computer vision example](https://dev-to-uploads.s3.amazonaws.com/i/da4escamqg1ox5m18vdk.png)

<figcaption>Exemplo: Temos nas imagens um vaso virtual e uma mesa real. Na parte de cima, o vaso está posicionado em relação a mesa e, por isso, ao mover a mesa automaticamente o vaso é movido junto. Na parte de baixo, o vaso está posicionado de forma absoluta no ambiente, então, ao mover a mesa, o vaso permanece na mesma posição.</figcaption>

O sensor (câmera) "enxerga" o mundo real e, baseado no que "vê", consegue determinar onde ela se encontra e sua orientação em relação a cena. Para trabalhar com visão computacional, é necessário analisar as imagens coletadas pela câmera para determinar o que é que ela "vê". Para isso, é necessário que existam pistas no ambiente que serão usados como pontos de referência para que ajude a determinar a localização e orientação em relação a esses pontos. Contudo, nem sempre é possível ou fácil (para o software) de detectar esses pontos.

Para facilitar este problema, diversas aplicações de realidade aumentada utilizam imagens facilmente reconhecíveis que viram pontos de referência colocadas no ambiente de forma artificial. Essas imagens são chamadas de *fiducial markers* ou *fiducial symbols* (marcações ou símbolos impacientes). Quando o sistema encontra essas marcações consegue determinar mais facilmente onde a câmera está e qual sua orientação em relação ao símbolo. Uma marcação fiducial precisa ter um padrão único, um bom contraste para que seja muito fácil para um software de visão computacional reconhecer e também precisa ser assimétrico de forma que seja mais simples o cálculo da orientação da câmera sobre o marcador.

![Fiducial marker example](https://dev-to-uploads.s3.amazonaws.com/i/oh3dv5ih3sqjy22kadqo.png)

<figcaption>Exemplo de uma Fiducial marker</figcaption>

### Computação gráfica

Conforme já mencionado, os objetos de uma experiência de uma realidade aumentada são descritos em 3D, mas esses objetos devem ser renderizados em uma imagem que será visualizada em um display 2D. E essa imagem deve ser gerada respeitando o ponto de vista, iluminação, propriedades do material, perspectiva, etc. Para isso usamos diversos conceitos de computação gráfica, como por exemplo descrever o objeto como uma malha de polígonos em um sistema de coordenadas tridimensional.

Além disso, os objetos possuem propriedades que descrevem a aparência dele, como cor, refletividade, textura, etc. Com o mapeamento de textura uma imagem bidimensional pode ser aplicada a uma malha e mapeada como uma propriedade de superfície.

Por fim, é possível também adicionar luzes na cena que serão incorporadas na renderização final da imagem e podem afetar as cores, sombra e outros aspectos gráficos da cena.

### Dimensionalidade

Conforme visto anteriormente, o mundo físico é tridimensional enquanto o mundo virtual pode existir em inúmeras dimensões. Na realidade aumentada, o mundo real e o virtual são combinados em um display de apenas duas dimensões. Para resolver esse "dilema", além dos conceitos de computação gráfica, também é utilizado uma série de recursos que permitem ao usuário a percepção de profundidade (*deph cues*). Esses recursos nos permitem determinar quão distante estão as coisas de nós e como entendemos o mundo tridimensional em que vivemos. Exemplos de *deph cues*: tamanho - um objeto menor tende a estar mais longe que o objeto maior; iluminação - objetos com menos luz estão mais longe.

### Registro e Latência

Os conceitos de registro e latência se referem ao alinhamento do mundo virtual e real.

O **registro** se refere a quão preciso o mundo virtual se alinha fisicamente com o mundo físico. Quando os registros estão inadequados podem atrapalhar o efeito de realidade aumentada, principalmente se a aplicação é puramente uma "fusão" dos dois mundos. Um registro bem feito depende de diversas variáveis e a principal é a acurácia do sistema de rastreamento do ambiente.

A **latência** é a quantidade de tempo que um componente do mundo virtual demora a ser atualizado em relação ao que deveria ocorrer idealmente (no mesmo instante). Assim, é possível dizer que a latência é um tipo de registro temporal.

---

Embora ainda não vemos tantas aplicações em realidade aumentada frequentemente no nosso dia a dia, cada vez mais ela tem se difundido, principalmente nos aplicativos de jogos, varejo de móveis, além da sua utilização em eventos e campanhas promocionais (muitas vezes com o uso das *fiducial markers*).

Por isso acredito ser cada vez mais importante entender a essência dessa experiência que tem um grande potencial na tecnologia e nos negócios.


---

Referências
1. [Understanding Augmented Reality: Concepts and Applications - Alan B. Craig](https://books.google.com.br/books?id=7_O5LaIC0SwC&lpg=PP1&pg=PP1#v=onepage&q&f=false)
2. [Augmented Reality: Principles and practices - Tobias Höllerer, Dieter Schmalstieg](https://books.google.com.br/books?id=qPU2DAAAQBAJ&lpg=PP1&pg=PP1#v=onepage&q&f=false)