projeto de realidade virtual com estereoscopia aplicado à

51
PROJETO DE REALIDADE VIRTUAL COM ESTEREOSCOPIA APLICADO À CONSTRUÇÃO CIVIL PARA A VISUALIZAÇÃO DE MODELOS E ESTRUTURAS Victor Teixeira Rodrigues Projeto de Graduação apresentado ao Curso de Engenharia Eletrônica e de Computação da Escola Politécnica, Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários à obtenção do título de Engenheiro. Orientador: Sergio Barbosa Villas Boas Rio de Janeiro Abril de 2016

Upload: vuongthuy

Post on 08-Jan-2017

216 views

Category:

Documents


1 download

TRANSCRIPT

PROJETO DE REALIDADE VIRTUAL COM

ESTEREOSCOPIA APLICADO À CONSTRUÇÃO CIVIL

PARA A VISUALIZAÇÃO DE MODELOS E

ESTRUTURAS

Victor Teixeira Rodrigues

Projeto de Graduação apresentado ao Curso de

Engenharia Eletrônica e de Computação da Escola

Politécnica, Universidade Federal do Rio de

Janeiro, como parte dos requisitos necessários à

obtenção do título de Engenheiro.

Orientador: Sergio Barbosa Villas Boas

Rio de Janeiro

Abril de 2016

ii

PROJETO DE REALIDADE VIRTUAL COM

ESTEREOSCOPIA APLICADA À CONSTRUÇÃO CIVIL

PARA A VISUALIZAÇÃO DE MODELOS E

ESTRUTURAS

Victor Teixeira Rodrigues

PROJETO DE GRADUAÇÃO SUBMETIDO AO CORPO DOCENTE DO CURSO

DE ENGENHARIA ELETRÔNICA E DE COMPUTAÇÃO DA ESCOLA

POLITÉCNICA DA UNIVERSIDADE FEDERAL DO RIO DE JANEIRO COMO

PARTE DOS REQUISITOS NECESSÁRIOS PARA A OBTENÇÃO DO GRAU DE

ENGENHEIRO ELETRÔNICO E DE COMPUTAÇÃO

Autor:

_________________________________________________

Victor Teixeira Rodrigues

Orientador:

_________________________________________________

Prof. Sergio Barbosa Villas Boas

Examinador:

_________________________________________________

Prof. Ricardo Guerra Marroquim

Examinador:

_________________________________________________

Prof. Flávio Luis de Mello

Rio de Janeiro – RJ, Brasil

Abril de 2016

iii

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO

Escola Politécnica – Departamento de Eletrônica e de Computação

Centro de Tecnologia, bloco H, sala H-217, Cidade Universitária

Rio de Janeiro – RJ CEP 21949-900

Este exemplar é de propriedade da Universidade Federal do Rio de Janeiro, que

poderá incluí-lo em base de dados, armazenar em computador, microfilmar ou adotar

qualquer forma de arquivamento.

É permitida a menção, reprodução parcial ou integral e a transmissão entre

bibliotecas deste trabalho, sem modificação de seu texto, em qualquer meio que esteja

ou venha a ser fixado, para pesquisa acadêmica, comentários e citações, desde que sem

finalidade comercial e que seja feita a referência bibliográfica completa.

Os conceitos expressos neste trabalho são de responsabilidade do(s) autor(es).

iv

DEDICATÓRIA

Dedico este trabalho ao povo brasileiro que contribuiu de forma significativa à

minha formação e estada nesta universidade. Este projeto é uma pequena forma de

retribuir o investimento e confiança em mim depositados. Dedico também aos meus

amigos e familiares por todo o suporte sem o qual não teria conseguido concluir essa

etapa de minha formação.

v

AGRADECIMENTO

Agradeço, inicialmente, aos meus pais Ana Cristina e Luiz Alberto, que sempre

me motivaram e incentivaram a continuar mesmo nas horas mais difíceis, cobrando, mas

sempre com o carinho de quem quer o melhor para o outro.

A minha avó Armanda que sempre acreditou no meu potencial e me fez acreditar

que eu era capaz de vencer qualquer desafio.

Agradeço em especial a minha namorada Carolina Miranda pelo carinho

incondicional, colaboração na elaboração e produção desse projeto e apoio emocional

nas horas em que tudo parecia sem saída.

Agradeço aos meus amigos da faculdade, que sempre juntos, apoiamos e

ajudamos uns aos outros, seja tirando dúvidas, estudando juntos ou apenas sendo um

ombro amigo nos momentos difíceis.

Aos meus amigos de longa data, que estiveram sempre presentes em minha vida,

me divertindo não me deixando perder a sanidade mental nas vésperas de prova.

Agradeço também aos meus professores da faculdade, sempre solícitos para tirar

qualquer dúvida, independentemente de ser diretamente relacionada a matéria por eles

lecionada ou não.

vi

RESUMO

Este trabalho trata da criação de um projeto de realidade virtual com

estereoscopia, focado no uso para visualização de modelos tridimensionais de ambientes

em projetos de arquitetura. Para isso é utilizado a crescente capacidade de

processamento gráfico que pode ser encontrada nos celulares, junto o dispositivo

Google Cardboard para a elaboração de um projeto de baixo custo.

Palavras-Chave: realidade virtual, estereoscopia, cardboard, arquitetura, baixo custo.

vii

ABSTRACT

This work is about the development of a virtual reality project with stereoscopy,

used in the viewing of tridimensional models of architecture projects. To achieve this, it

is used the advanced graphics processing found the in smartphones in combination with

the Google Cardboard device to create a low cost application.

Keywords: virtual reality, stereoscopy, cardboard, architecture, low cost.

viii

SIGLAS

API – Application Programming Interface

DRM – Digital Rights Management

HTTP – Hypertext Transfer Protocol

IDE – Integrated Development Environment

FPS – First Person Shooter

FOV – Field of View

SDK – Software Development kit

UFRJ – Universidade Federal do Rio de Janeiro

UML – Unified Modeling Language

VR – Virtual Reality

ix

Sumário

1 Introdução 1

1.1 - Tema ........................................................................................... 1

1.2 - Delimitação ................................................................................. 1

1.3 - Motivação ................................................................................... 2

1.4 - Justificativa ................................................................................. 3

1.5 - Objetivos ..................................................................................... 3

1.6 - Metodologia ................................................................................ 4

1.7 - Descrição .................................................................................... 5

2 Realidade Virtual 6

2.1 - Definição ..................................................................................... 6

2.2 - Histórico ...................................................................................... 7

2.4 - Proposta ...................................................................................... 9

3 Tecnologias e Configuração 10

3.1 - Tecnologias disponíveis .............................................................. 10

3.1.1 - Display ..................................................................................... 10

3.1.2 - Controle de movimento ........................................................... 13

3.2 - Escolha de ferramentas ............................................................... 14

3.3 - Configuração do ambiente .......................................................... 16

x

4 Projeto 18

4.1 - Unity 3D ..................................................................................... 18

4.2 - Câmera ........................................................................................ 20

4.3 - Movimento .................................................................................. 21

4.4 - Interação ...................................................................................... 22

4.5 - Modelagem ................................................................................. 23

4.6 - Implementação ............................................................................ 24

5 Conclusões 27

Bibliografia 28

A Plantas Utilizadas 30

B Especificação de Requisitos de Software 32

xi

Lista de Figuras

2.1-1 – Sistema de Realidade Virtual....................................................................... 7

2.2-1 – Esquemático do Sensorama ........................................................................ 8

3.1-2 – Dispositivo Utilizado .................................................................................. 10

3.1-2 – Head Mounted Display ............................................................................... 11

3.1-3 – Google Cardboard ....................................................................................... 12

3.2-1 – PlayStation® Move Navigation Controller ................................................ 15

3.1-1 – Sixaxis Controller ....................................................................................... 17

4.1-1 – Logotipo da Unity ....................................................................................... 18

4.1-2 – Interface do Unity ....................................................................................... 19

4.2-1 – Rotação ....................................................................................................... 20

4.2-2 – Estereoscopia .............................................................................................. 21

4.5-1 – Modelo 3D de Planta .................................................................................. 23

4.6-1 – Entrada do apartamento no modelo ............................................................ 24

4.6-2 – Entrada do apartamento real ....................................................................... 24

4.6-3 – Ambiente decorado ..................................................................................... 25

1

Capítulo 1

Introdução

1.1 – Tema

Este trabalho tem como tema a realização de um estudo de viabilidade e

usabilidade de técnicas de realidade virtual aplicadas em projetos de construção civil e

de design de interiores em projetos de arquitetura. Para tal, desenvolveu-se uma

aplicação que permite resolver o problema de visualização de um projeto por todos os

interessados, auxiliando assim o processo de tomada de decisão quanto às mudanças a

serem realizadas nos projetos, antes da etapa de construção, que em geral é um processo

mais oneroso do que a simulação e modelagem.

A partir de um modelo definido, será possível utilizá-lo diretamente na aplicação

desenvolvida, de forma a permitir através de um determinado conjunto de dispositivos,

a exibição de tais modelos a clientes e responsáveis pelos projetos, fazendo este ficar

imerso neste ambiente virtual. Acredita-se que essa experiência deva influenciar

positivamente os futuros clientes na decisão de aquisição de um determinado produto ou

influenciar a decisão de aceitar determinado projeto por um responsável.

Esta imersão do usuário no sistema se dará pelo uso de técnicas de realidade

virtual, isolando quem estiver utilizando a aplicação de qualquer relação com o

ambiente a sua volta e utilizando o movimento natural do corpo como meio de controlar

os movimentos da aplicação.

1.2 – Delimitação

O objetivo deste projeto é possibilitar a visualização de modelos gerados a partir

de plantas de edificações e desenhos de arquiteturas a um baixo custo de

implementação. Dessa maneira, o desenvolvimento do projeto foi limitado a utilização

de tecnologias mais acessíveis a todos os profissionais que tiverem interesse em se

2

utilizar da aplicação. Outro fator limitante do projeto é a necessidade de portabilidade,

permitindo levar a solução diretamente ao cliente; evitando assim a necessidade de

locomoção até algum ambiente previamente preparado.

No mérito da aplicação, não será trabalhado nesse projeto quesitos como a

otimização do tempo de resposta do processamento gráfico dos elementos e exibição em

tela, em virtude da limitação técnica de desempenho dos dispositivos que venham a ser

utilizados no projeto. Também não se abordará no escopo desse projeto os possíveis

efeitos colaterais causados pelo uso contínuo dessa tecnologia, tal qual náuseas, tonturas

e dores de cabeça.

1.3 – Motivação

Um problema real que existe quanto a construção civil é como convencer os

clientes a tomarem uma decisão de compra de um imóvel ainda na planta. As estratégias

mais tradicionais são a exibição de uma planta detalhada em panfletos de divulgação,

exibição de um protótipo 3D com fotos ou vídeos, construção de maquetes ou ainda, a

construção de um apartamento modelo. Dentre as soluções apresentadas, a que possui

maior efetividade na hora de convencer os clientes é a apresentação de um apartamento

modelo, no entanto esta também é a solução mais custosa. Essa solução passa a ser

ainda mais complicada de ser efetivada uma vez que nem sempre os clientes em

potencial e o local de construção do imóvel se encontram geograficamente próximos

uns dos outros. Um bom exemplo disso foi o crescimento expressivo do mercado

imobiliário de Macaé, movido pela indústria do petróleo, onde a grande maioria dos

possíveis compradores dos novos empreendimentos da região se encontravam nas

capitais estaduais como Rio de Janeiro e São Paulo. A proposta consiste então em

construir uma aplicação que seja tão efetiva para a decisão de compra quanto a

construção de um apartamento modelo, que permita ser levada até os clientes com

facilidade de mobilidade e que não seja tão onerosa.

No caso da construção civil e arquitetura, com a necessidade de se trabalhar com

projetos personalizados, uma interação mais elaborada com o cliente é fundamental,

evoluindo assim o nível de detalhamento e precisão do conteúdo dos projetos

3

elaborados. De acordo com Carvalho, Heineck e Angelim (2010), ao se tomar

estratégias de flexibilização para tornar o empreendimento mercadologicamente mais

atrativo, é preciso boa capacidade gerencial para se obter as vendas nas fases iniciais de

construção a fim de permitir uma negociação com os clientes sobre as personalizações

desejadas.

1.4 – Justificativa

Apesar de diferentes estudos na área de virtualização da realidade existirem a

bastante tempo, recentemente, grandes empresas têm investindo bastante em novas

soluções para esta área. Assim, é previsto que em um futuro próximo a utilização dessas

tecnologias venham fazer parte da vida cotidiana das pessoas.

Existem ainda, diversas aplicações que ainda não foram devidamente exploradas

pelas soluções em realidade virtual hoje existentes. Hoje, as áreas que mais recebem

investimentos para o desenvolvimento dessa tecnologia são as aplicações para

simulações militares, indústria de jogos e a indústria cinematográfica. Criar então uma

aplicação que seja voltada para a área de engenharia e arquitetura é interessante por ser

uma área ainda pouco explorada e com enorme potencial de crescimento.

A originalidade desse projeto se deve a junção dos usos de tecnologias ainda

pouco exploradas de realidade virtual com estereoscopia, alinhadas com um

desenvolvimento focado em projetos de baixo custo para os usuários, tanto a nível de

equipamentos quanto a requisitos para sua utilização. É fundamental que a aplicação

criada tenha um processo de configuração e execução simples, permitindo aos usuários

modificarem seus ambientes.

1.5 – Objetivos

O objetivo geral do projeto será, portanto, desenvolver um sistema

computacional capaz de simular ambientes em três dimensões dentro de uma aplicação

de realidade virtual com o uso de estereoscopia. Desta forma, os objetivos específicos

são: a criação de uma aplicação capaz de interpretar dados de softwares de modelagem,

4

a projeção desse ambiente modelado dentro desta aplicação de realidade virtual

desenvolvida e a utilização de módulos de controle de movimento para navegação no

ambiente virtual.

Como validação do projeto desenvolvido deverá ser utilizado um modelo

tridimensional baseado em um ambiente físico real, testando assim a eficiência em se

promover a sensação de realismo e imersão do usuário no projeto. Outro elemento

interessante para aumentar a imersão do usuário com o ambiente virtual ao seu redor,

será a possibilidade de interagir com alguns dos elementos que devem compor o cenário

como por exemplo portas e equipamentos eletrônicos.

1.6 – Metodologia e Materiais

O projeto é subdividido em 4 etapas: preparação do ambiente, desenvolvimento

do aplicativo, modelagem 3D de plantas de edificações e validação com usuários sobre

a efetividade alcançada com o uso do produto desenvolvido. Na configuração do

ambiente será definida a forma de integração dos componentes utilizados na aplicação e

as tecnologias consideradas para o projeto. Essa sessão será mais detalhada no capítulo

3 quando será feita uma análise das tecnologias disponíveis, suas vantagens e

desvantagens para o cumprimento dos objetivos esperados.

Para a etapa de configuração do ambiente é levado em consideração o efeito que

deseja ser alcançado e assim, escolhido as tecnologias e os materiais necessários para a

elaboração do projeto.

Na etapa seguinte, com as tecnologias definidas e o ambiente de execução

configurado será desenvolvida uma aplicação que deverá atender os requisitos do

projeto, encontrados no Apêndice B, utilizando como metodologia de desenvolvimento

o “Scrum Academic”.

5

1.7 – Descrição

O capítulo 2 apresentará uma ambientação, definindo o que é o conceito de

realidade virtual e mostrando como essa tecnologia foi trabalhada e desenvolvida

durante a história.

O capítulo 3 apresentará as tecnologias existentes no mercado e que poderiam

ser utilizadas no desenvolvimento do projeto, assim como a justificativa da tomada de

decisão quanto qual delas será efetivamente utilizada para o desenvolvimento da

solução proposta. Com essa informação definida, neste capítulo abordaremos também

as mudanças nas configurações de dispositivos necessárias para a execução da

aplicação.

Já no capítulo 4, é feita a descrição da realização do projeto, com a apresentação

detalhada de quais foram os métodos utilizados para se conseguir realizar cada um dos

casos de uso propostos no projeto, definidos no Anexo B. Será tratado também como foi

realizada a execução da modelagem de um projeto 3D a partir de uma planta real e

implantação desse modelo no projeto.

Com esse modelo implantado e funcionando será apresentado no capítulo 5 uma

avaliação do desempenho da aplicação de forma a validar o funcionamento e efetividade

do projeto como solução para o problema de visualização de modelos e projetar

melhorias futuras.

6

Capítulo 2

Realidade Virtual

2.1 – Definição

Para trabalhar o sentido do que é pretendido, devemos entender o significado de

realidade virtual. Recorrendo ao dicionário, obtemos que entre os possíveis significados

de virtual está: “Que não existe como realidade, mas sim como potência ou faculdade.”.

Contrapondo esta definição com o significado de realidade, notamos que essa junção de

palavras de sentido aparentemente contraditórios implica que a realidade virtual é algo

que apesar de inexistente fisicamente, é capaz de produzir a sensação de ser algo real.

Pimentel [5] definiu o termo “Realidade Virtual” como “o uso da alta tecnologia para

convencer o usuário que ele está em outra realidade.”.

Esse termo foi utilizado pela primeira vez por Jaron Lanier em 1987 durante seu

trabalho na “VPL Research”, empresa que veio a ser pioneira na comercialização dos

primeiros protótipos de óculos de realidade virtual. O termo surgiu da necessidade de

diferenciar as simulações por computadores tradicionais do mundo digital que ele

almejava criar.

Realidade virtual pode definir uma gama muito abrangente de aplicações.

Geralmente, ela é dividida em três aspectos básicos: a imersão, a interação e o

envolvimento. A ideia de imersão está ligada ao o sentimento de estar dentro do

ambiente, normalmente obtido através do uso de capacetes/óculos ou simulações dentro

de salas especiais. Sistemas não imersivos por exemplo são como um simulador de voo

rodando em um computador tradicional, onde qualquer movimento de olhar para fora do

monitor já transporta o usuário de volta para o mundo real. A interação, é a capacidade

do computador de detectar os movimentos do usuário e modificar instantaneamente o

mundo virtual de acordo com as entradas recebidas. O envolvimento está diretamente

relacionado a capacidade de engajamento dos usuários dentro do mundo virtual, este

7

podendo ser ativo tal qual a participação no enredo de um videogame, ou passivo como

a leitura de um livro ou acompanhar uma série de televisão.

No mérito da aplicação desenvolvida nesse projeto, o objetivo com realidade

virtual será criar um produto que possa de ludibriar o usuário se sentir totalmente

imerso no ambiente que a ele será apresentado, portanto que seja imersivo e que possua

interação.

Figura 2.1-1 Sistema de realidade virtual

Fonte: Repositório digital da UPF[9]

2.2 – Histórico

Os primeiros estudos de aplicações e ferramentas que possibilitassem a

realização da virtualização de ambientes datam de meados da década de 50, quando

ainda nem se utilizava o termo “realidade virtual”. Essas primeiras utilizações de

tecnologias semelhantes surgiram como experimentos para a indústria do cinema,

porém se aproximam mais com a tecnologia que hoje chamamos de cinema 4D, pois

além de tentar explorar uma visão tridimensional, buscava excitar outros sentidos como

a audição, o olfato e tato.

O primeiro equipamento que se tem registro, com o objetivo explorar esses

conceitos de realidade virtual, foi o Sensorama, criado por Morton Heilig e patenteado

8

em 1962. Esse equipamento era uma cabine que combina filmes 3D com visão

estereoscópica, som estéreo, vibrações mecânicas, aromas e movimentação do ar com

uso de ventiladores.

Figura 2.2-1 Esquemático do Sensorama.

Fonte: Wikipédia[4]

Nos anos seguintes, diversas outras tecnologias passaram a surgir explorando

novas aplicações de interação entre usuários e os mundos virtuais desenvolvidos. Para

ser capaz de detectar o movimento da cabeça surgiram diversas tentativas de

videocapacetes e detectores de movimento. Nesse período as principais tecnologias

desenvolvidas eram voltadas para aplicações militares, por exemplo, o projeto

conhecido como “Super Cockpit” que tinha como objetivo simular uma cabine de voo,

permitindo treinar pilotos sem colocar em risco o investimento com aviões. Essas

tecnologias, no entanto, historicamente possuem dois grandes problemas: baixo

desempenho e custo muito elevado.

9

2.3 – Proposta

Segundo Dodge (1997), na arquitetura e na construção civil a necessidade de um

desenho surge logo na primeira etapa de desenvolvimento de um projeto. A

transformação desses desenhos em 2 dimensões para modelos em 3 dimensões é apenas

uma evolução natural das etapas de projeto, hoje sendo bastante comum em quase todos

os projetos de grande porte. Com esses modelos prontos, a implantação dentro de uma

aplicação VR passa a ser bastante simples, o que favorece bastante a criação de uma

plataforma que se aproveite dessa simplicidade.

Recentemente, com diversas grandes empresas voltando novamente sua atenção

para o mercado de realidade virtual, começaram a surgir novas abordagens que

possibilitaram resolver um dos grandes problemas tratados na história dessas aplicações,

seu custo. Em 2014, a Google apresentou ao mercado uma tecnologia capaz de levar a

realidade virtual a qualquer um que estivesse interessado a preço de apenas um pedaço

de papelão. Com o Google Cardboard, o desenvolvimento de novas aplicações que

envolvam realidade virtual imersiva se tornou muito mais acessível aos

desenvolvedores.

Tirando proveito da facilidade no desenvolvimento de aplicações em VR que

essa tecnologia trouxe, tem-se como proposta do trabalho, a utilização desta para buscar

soluções aos problemas mencionados no capítulo 1.4, apresentando uma solução que

possa vir futuramente a ser aproveitada comercialmente por empresas de construção e

profissionais da área.

10

Capítulo 3

Tecnologias e Configuração

3.1 – Tecnologias Disponíveis

3.1.1 – Displays

Para começar uma análise das tecnologias disponíveis será filtrada as que não

atendem nossos objetivos, isso é trataremos apenas as que possuem imersão,

possibilitam interatividade e envolvimento e que sejam de baixo custo. Como

mencionado anteriormente diversas companhias tem investido bastante em tecnologias

de realidade virtual recentemente, principalmente no desenvolvimento de visor

estereoscópico de cabeça (head mounted displays). Alguns dos que serão listados a

seguir ainda não foram lançados, tendo o lançamento previsto para meados de 2016.

Figura 3.1-1 Dispositivo Utilizado

Fonte: Fotografia pelo autor

11

Figura 3.1-2 Head Mounted Display

Fonte: Adaptado de Robotikmedizin[10]

O mais famoso dispositivo de realidade virtual imersivo existente é o

Oculus Rift, que começou como uma campanha do site “Kickstarter”, mas foi comprado

pelo Facebook em 2014. Ele é um dispositivo HMD totalmente imersivo que deve ser

ligado a um computador com uma placa de vídeo para que faça o processamento das

imagens e dos dados de posição enviados. A versão mais recente do aparelho planejada

para o primeiro semestre de 2016 tem seu preço estimado de venda em 699€

(R$2900,00). Como custo estimado de requisitos foi considerado um preço médio de

um computador pré-montado com as peças iguais aos requisitos mínimos do

dispositivo.

Seguindo a linha histórica, o segundo aparelho que apareceu no mercado foi a

solução da Google para a visualização de realidade virtual, o Cardboard. Esse

dispositivo foi uma aposta da empresa de Mountain View para a popularização da

realidade virtual, pois permitia aos usuários montar seus próprios dispositivos usando

uma base simples feita com papelão e acoplando seus celulares. A restrição dessa

solução, é que para funcionar, é necessário que o celular seja um smartphone e possua

12

um módulo de giroscópio acoplado para que seja capaz de captar os movimentos do

usuário. Para uma estimativa do preço base, foram considerados os smartphones listados

na página da companhia como compatíveis, e selecionado o menor preço encontrado

nas principais lojas de varejo do Brasil.

Figura 3.1-3 Google Cardboard

Fonte: Google Cardboard [11]

Semelhante a aproximação do Cardboard, o Samsung VR foi feito para se usar

os smartphones da linha Samsung Galaxy como display, sensores e processador gráfico

das aplicações de realidade virtual.

O HTC Vive é um dispositivo feito em parceria da empresa taiwanesa HTC

Corporation com a empresa americana Valve, dona de uma plataforma de distribuição

de videogames online. Esse dispositivo segue a linha de desenvolvimento do Oculus

Rift se ligando a um computador para realizar o processamento. Seu preço de pré-

lançamento nos Estados Unidos está em $799,00 USD (R$3200,00) e possui requisitos

de processamento parecidos.

O Playstation VR se diferencia das demais aplicações pois no lugar de utilizar

um computador para realizar o processamento ele foi planejado para utilizar o

videogame Playstation 4, se aproveitando do hardware voltado para trabalhar com

13

aplicações que requerem um alto desempenho no tratamento de elementos gráficos. Seu

preço previsto de acordo com dados revelados da empresa será $800,00USD

(R$3200,00).

Por último, há o Beenoculus, um projeto de uma empresa brasileira que

semelhante ao Samsung VR e o Cardboard onde se propõe transformar um smartphone

em um dispositivo VR, sua vantagem em relação aos concorrentes é levar junto do

produto um kit de desenvolvimento de aplicativos em VR para atrair novos

desenvolvedores. Seu preço é R$160,00 sem considerar o smartphone.

Tabela 3.1.1-1 Comparação de Preços

Aparelho Custo Requisitos Total

Oculus Rift $500,00 USD $1000,00 USD $1500,00 USD

Google Cardboard $0,00 USD $120,00 USD $120,00 USD

Samsung VR $1000,00 USD $250 USD $1250,00 USD

HTC Vive $600 USD $1000,00 USD $1600,00 USD

Playstation VR $800,00 USD $500,00 USD $1300,00 USD

Beenoculus $40,00 USD $120,00 USD $160,00 USD

3.1.2 – Controladores de Movimento

Os dispositivos HMD são capazes de controlar os movimentos da cabeça do

usuário dentro de uma determinada aplicação, mas para este projeto, apenas isso não é o

suficiente. É desejável permitir aos usuários poder navegar livremente dentro do

ambiente no qual está inserido, e para isso, deve ser usado algum captador de

movimento por imagens ou controle remoto para isso. A solução mais comum é tomar

proveito dos padrões de controle de movimento existentes em jogos de videogame,

utilizando um joystick para realizar essa movimentação.

Como opções, há um controle de videogame clássico, como o Dualshock do

Playstation ou o controle de XBOX. Possuem a vantagem de poder se conectar ao

14

computador ou outros dispositivos sem precisar utilizar fios, o que facilita a

movimentação do usuário no mundo real enquanto utiliza a aplicação. Outra solução

para a movimentação, é tentar simular um controle como uma espécie de camada dentro

do aplicativo desenvolvido, em que o usuário controle o andar/parar olhando para um

ponto específico no mundo virtual. Uma terceira solução, é utilizar um controle que seja

menos complexo que um controle de videogame tradicional, mas que permitisse usar os

mesmos preceitos de controle de movimento. Como os preços dos componentes listados

nesse tópico não variam muito e nem possuem tanta relevância para o custo total em

relação aos preços listados no tópico anterior, não será feita uma comparação direta para

a escolha da ferramenta adotada.

3.2 – Escolha de ferramentas

Como o objetivo deste projeto é fornecer uma solução de baixo custo para o

problema de visualização de modelos, a ferramenta escolhida para o desenvolvimento

foi o Google Cardboard, pois além de possuir o menor custo entre as aplicações listadas,

é o produto de mais fácil obtenção, já que está presente no mercado, pode ser fabricado

manualmente e não requer a compra de nenhuma licença/kit de desenvolvedor.

Escolhendo essa ferramenta, temos em mente que a aplicação desenvolvida terá como

limitação a capacidade de tratamento gráfico do dispositivo utilizado. Caso seja

escolhido trabalhar com um nível de detalhamento muito grande dos ambientes

retratados, pode ser que a solução apresente desempenho diferente de acordo com qual a

capacidade do smartphone utilizado.

Como controlador de movimentos, a ferramenta escolhida foi o controle de

Playstation 3, pois como foi escolhido trabalhar com um equipamento que use como

base um smartphone, ele possui uma conexão sem fio via bluetooth, tecnologia que está

presente na grande maioria dos aparelhos celular hoje em dia. A desvantagem de utilizar

esse tipo de equipamento é que muitas pessoas que não tem costume de manusear

controles de videogame podem se sentir desconfortáveis com sua utilização. Esse

desconforto pode em parte ser resolvido utilizando o Playstation Move Navigation, uma

15

versão do controle de Playstaion 3, simplificado na quantidade de botões e que o

usuário pode manusear utilizando apenas uma mão.

Figura 3.2-1 PlayStation®Move Navigation Controller

Fonte: Site do Playstation[17]

Agora que está definido a utilização do o Google Cardboard, é possível analisar

quais ferramentas de desenvolvimento existem disponíveis para esta plataforma. A

própria Google oferece em seu site[11] duas opções de APIs para a produção de

aplicações, uma que possibilita utilizar como IDE a ferramenta tradicional de

desenvolvimento de aplicativos para Android, o Android Studio e a outra é um SDK

para a plataforma Unity3D. A escolha realizada para essa ferramenta então será

trabalhar com a Unity, pois como ela é pensada originalmente para o desenvolvimento

de jogos em 3D, podemos simplesmente realizar pequenas alterações em algumas

funções de movimento dos objetos em cena para adaptar a necessidade em VR. Outra

grande vantagem de se trabalhar com essa aplicação, é sua facilidade em importar

modelos 3D feitos em outros softwares de modelagem, possibilitando assim a

reutilização de modelos arquitetônicos que tenham sido desenvolvidos na

implementação de projetos anteriores.

16

3.3 – Configuração do ambiente

Após as definições de todas as ferramentas utilizadas para a realização do

trabalho, é importante atentar para como será feita a integração entre elas. No

desenvolvimento do projeto em Unity3D, as entradas do sistema responsáveis pelo

movimento, ou seja, as recebidas pelo controle são mapeadas como entradas de teclado,

lidas pela aplicação como os números de 0 a 9 do teclado. O sistema operacional deve

então ser capaz de ler os comandos de entrada do usuário como se fosse o apertar destes

botões. Nativamente, o sistema operacional Android não é capaz de interpretar os dados

enviados via bluetooth pelo controle escolhido, para realizar essa tarefa, será utilizado

uma aplicação para Android chamada Sixaxis Controller [12]. Essa aplicação é capaz de

sobrescrever o driver de bluetooth original do Android para conseguir mapear os

comandos recebidos em entradas de teclado.

Para ser capaz de sobrescrever as funções de bluetooth do sistema operacional, é

preciso que o usuário tenha acesso a “root” do aparelho. Este procedimento tem esse

nome visto o fato do sistema Android ser baseado em Linux, o qual possui um

superusuário com este mesmo nome, bem como acesso a configurações, comandos e

arquivos sensíveis do sistema operacional, e por isso, protegido da maioria dos usuários.

Legalmente em diversos países da Europa e nos Estados Unidos, liberar o acesso à raiz

do sistema operacional pode ser considerado uma prática ilegal, por permitir aos

usuários meios alternativos de reproduzir os conteúdos de arquivos que sejam

protegidos por DRM; no entanto, no Brasil, juristas defendem que a prática de “root”

não caracteriza um mau uso do produto, portanto seu uso é liberado de acordo com o

Código de Defesa do Consumidor [13].

17

Figura 3.3-1 Sixaxis Controller

Uma vez com o programa instalado no smartphone, o usuário deve conectar o

controle no computador via USB e trocar o endereço MAC do bluetooth no qual o

controle estava originalmente pareado para o mesmo endereço do celular. Para isso no

computador deve ser executado uma ferramenta chamada “Sixaxis Pair Tool”,

disponível no site do fabricante do aplicativo[12], conectar o celular via USB e colocar

na janela que é exibida o número que aparece na parte inferior do aplicativo.

18

Capítulo 4

Projeto

4.1 – Unity3D

Quando se trabalha com a ferramenta Unity existe a vantagem de com a

elaboração de apenas um projeto, ser capaz de compilar a aplicação para diferentes

plataformas, como Android, iOS, Windows ou Web. Desta maneira, em um único

projeto de realidade virtual facilmente pode ser gerada uma visualização web do projeto

caso os clientes tenham desejo de acompanhar o projeto sem possuir o equipamento

necessário para visualizar a aplicação originalmente proposta.

Figura 4.1-1 Logotipo da Unity

Fonte: Site do Unity

No Unity3D, todo o ambiente de uma aplicação fica salvo dentro de uma Cena.

Um programa pode possuir mais do que uma cena, mas apenas uma será carregada por

vez, o que serve para melhorar a performance da aplicação visto que apenas os

componentes do programa que estiverem presentes na cena serão carregados. Esses

componentes da aplicação podem ser modelos, áudios, imagens, scripts ou uma junção

desses elementos pré-fabricados. Esses elementos ao serem carregados para dentro de

uma cena, são incorporados como componentes de um GameObject. Cada GameObject

19

é um objeto que possui uma posição tridimensional do espaço da cena (posição x, y e z,

rotação em cada um dos eixos e escala). Originalmente esses objetos são invisíveis

dentro da cena, mas podem assumir a aparência de um modelo tridimensional que a ele

tenha sido atribuído; isso se dá carregando para o objeto as informações sobre o Mesh

(malha de pontos que compões os triângulos que formam o objeto) e sua textura. Para

tornar esse objeto real dentro da aplicação é necessário também incluir os elementos

Collider, que funciona como uma malha simplificada dos limites do objeto para que o

sistema possa detectar colisão entre eles, (evitando por exemplo que o usuário seja

capaz de atravessar as paredes) e o elemento Rigidbody, que adiciona aos objetos

propriedades físicas como gravidade, tração e elasticidade. Os GameObjects também

podem servir como containers de outros GameObjects, criando assim uma hierarquia

que pode ser utilizada tanto para simples organização pessoal dos objetos em uma cena

quanto para a atualização simultânea de determinada característica de diversos objetos

presentes dentro de uma única hierarquia.

Figura 4.1-2 Interface do Unity

20

4.2 – Câmera

Um dos componentes que o GameObject pode receber é o elemento Câmera.

Esse elemento é fundamental para qualquer aplicação pois ele que vai controlar o que

deve ser exibido em tela. No caso da realidade virtual imersiva, para produzir o efeito

de estereoscópica precisaremos de duas câmeras gravando a cena, ambas ligeiramente

afastadas uma da outra para capturar as imagens que são enviadas para cada um dos

olhos do usuário. Para conseguir esse efeito utilizamos a SDK fornecida pela Google,

onde é possível encontrar um elemento pré-fabricado para Unity que é composto por

uma câmera principal, duas câmeras secundárias afastadas uma da outra e seus

respectivos scripts de controle.

Figura 4.2-1 Rotação

Fonte: The Bored Engineers[15]

Como não existe uma maneira direta de mapear para qual ponto da tela cada

câmera estará jogando sua imagem específica, esses scripts feitos em C# são os

responsáveis por mapear a imagem que está sendo obtida por essas câmeras para os dois

lados da câmera principal, essa sim, sendo a responsável por transmitir a imagem para o

dispositivo de saída. Essa imagem que será enviada das câmeras secundárias para a

principal recebe um pequeno ajuste do FOV (campo de visão) transformando a imagem

de um retângulo em uma imagem mais larga nos centros e mais estreita nas bordas, para

assim reduzir a distorção causada pelas lentes presentes no Cardboard. Essas lentes

servem para facilitar os olhos a focarem em pontos específicos da tela, aliviando o

desconforto de tentar focar em algo a 5cm de distância.

21

Figura 4.2-2 Estereoscopia

Fonte: Taishimizu [14]

No mesmo elemento pré-fabricado oferecido pela Google, é possível encontrar

também um outro script responsável por receber os dados do componente de giroscópio

do celular e traduzir esses dados em comandos de rotação em torno dos eixos x, y e z

(guinada [yaw], arfagem [pitch] e rolagem [roll]) da câmera principal (e

consequentemente das secundárias vide sistema de hierarquia). Esse script recebe como

parâmetro o elemento GameObject que representa a cabeça do usuário na cena e a todo

momento atualiza sua posição para igualar os dados recebidos.

4.3 – Movimento

Para realizar o movimento de translação no cenário, é anexado ao objeto

responsável por conter os componentes físicos do usuário um script que recebe as

entradas de dados vindas do controlador e atualizam a posição atual do centro do objeto.

Esse script é baseado em um script tradicional de jogos FPS (jogos de tiro em primeira

22

pessoa), onde é feita uma transformação dos eixos do ambiente para igualar a direção de

onde o usuário estiver olhando para assim traduzir os comandos de movimento para a

direção correta. Para isso, a cada update, esse script iguala a rotação do objeto do

usuário ao objeto da cabeça, responsável por conter as câmeras.

Para controlar a velocidade com que o usuário se movimenta é definido um

parâmetro no objeto que controla a velocidade caso o usuário esteja andando ou

correndo. Na implementação desse projeto foi considerado que uma pessoa anda em

média com uma velocidade de 3 metros por segundo e corre com uma velocidade de 6

metros por segundo. Foi feito também um algoritmo de pulo, que altera

temporariamente a posição do usuário no eixo y e deixa a física embutida no sistema

trazer o usuário de volta plano original.

4.4 – Interação

Na aplicação é desejável que se permita ao usuário interagir com os objetos no

cenário, como por exemplo abrir e fechar portas ou ligar e desligar luzes e

equipamentos eletrônicos. A implementação desta funcionalidade se inspirou

novamente nos jogos FPS, onde é desejável saber se um disparo realizado por um

jogador acertou o corpo de um adversário, e se para isso ele passou por algum obstáculo

pelo caminho. A partir do centro da câmera principal e seguindo na direção em que o

usuário estiver olhando, é traçado uma linha invisível responsável por fazer um

algoritmo de “Ray Casting” que retorna uma lista de objetos pelos quais esse raio

atravessou seus “Colliders” e a distância até eles.

Esta informação pode ser usada então como gatilho da chamada de funções

específicas de cada objeto, como por exemplo alterar sua posição espacial no caso das

portas. Outro exemplo de uso dessas funções é alterar seus próprios atributos, como

alterar seu material, a emissão de sons ou aumentar e diminuir a intensidade das luzes

em um ambiente.

Essa chamada de algoritmo de rastreamento foi mapeada para o botão traseiro

(gatilho) do controle utilizado, de forma a simplificar seu uso uma vez que o usuário da

23

aplicação enquanto estiver dentro do mundo virtual, não conseguirá olhar para o

controle em sua mão para saber exatamente qual botão apertar.

4.5 – Modelagem

O Unity3D pode importar diretamente modelos produzidos pelos softwares

Maya, Cinema4D, 3DS Max, Cheetah3D, Modo, Lightwave, Blender e SketchUp. É

possível também caso não se deseje utilizar nenhuma ferramenta externa fazer a

modelagem do ambiente dentro do próprio Unity. Isso se faz criando o ambiente a partir

de elementos básicos como retângulos, cubos e esfera.

Uma técnica bastante utilizada para modelar um ambiente desse tipo é importar

a planta baixa original do projeto como um arquivo de imagem exibida no plano XZ e ir

completando a imagem desenhando retângulos por cima de cada ambiente e paredes.

Após essa etapa basta adicionar volume aos objetos desejados como por exemplo

adicionando uma altura (eixo y) aos paralelepípedos que vão formar as paredes do

ambiente. Outra maneira de montar o esqueleto do ambiente diretamente em Unity é

calcular para cada parede de nosso ambiente seu tamanho, centro e rotação, e assim

adicionar esses atributos diretamente para os paralelepípedos que vão formar a

construção.

Figura 4.5-1 Modelo 3D de Planta

24

4.6 – Implementação

Para a demonstração desse projeto, foi utilizada a última técnica de modelagem

listada no tópico anterior para elaborar o modelo da figura 4.5-1. Como base para a

construção dele, foi utilizada uma planta baixa real que pode ser encontrada no Anexo

A deste projeto. Essa planta foi elaborada por uma empresa de arquitetura em 2013

como um plano de reforma para um apartamento, residência do autor deste projeto.

Figura 4.6-1 Entrada do apartamento no modelo

Figura 4.6-2 Entrada do apartamento real

25

A escolha deste projeto específico foi feita para poder demonstrar através de um

comparativo de imagens que pode ser visto nas figuras 4.6-1 e 4.6-2 quanto a eficiência

do projeto para permitir aos usuários terem uma noção espacial dos espaços visitados. O

projeto foi elaborado para simular o ponto de vista de uma pessoa com 1,65m, que é

aproximadamente a média de altura entre homens e mulheres de 30 a 34 anos no brasil

(dado do IBGE[16]). As cores usadas no modelo foram escolhidas apenas com o critério

de separar os ambientes na imagem 4.5-1, sem qualquer referência ao projeto real.

Como é possível perceber comparando as imagens, aparentemente existe uma

pequena diferença na largura do corredor, que era prevista na planta baixa, mas não foi

levada em consideração no modelo tridimensional produzido, e na profundidade da

imagem. Essas diferenças podem ser explicadas por diversos fatores, entre eles uma

diferença na angulação entre a foto e a reprodução do modelo em tela; uma distorção

causada pela lente do aparelho utilizado para tirar a fotografia; pela presença de mobília

iludindo a percepção espacial devido ao preenchimento do espaço.

Figura 4.6-3 Ambiente decorado

26

Além do desenvolvimento deste aplicativo que simplesmente tem como objetivo

representar a modelagem de um espaço real, foi desenvolvido para demonstrar as

funcionalidades possíveis um ambiente menor, porém totalmente decorado (visível na

figura 4.6-3) em que o usuário é capaz de interagir com o ambiente abrindo as portas

que foram modeladas dentro desse aplicativo.

Esse mesmo ambiente foi replicado novamente em outro aplicativo

(representado na figura 4.1-2) que além do interior, também representa um exterior com

mais detalhes, incluindo um terreno, vegetação, água e vento. O objetivo deste segundo

ambiente é mostrar a limitação de se trabalhar utilizando um smartphone para fazer o

processamento gráfico, pois com apenas essas mudanças, já é possível perceber uma

queda significativa de desempenho, rodando a aplicação com uma taxa de quadros por

segundo abaixo dos 24fps que costuma ser o mínimo para uma aplicação rodar sem

causar desconforto ao usuário.

27

Capítulo 5

Conclusões

O sistema desenvolvido se mostrou eficiente na demonstração da disposição

espacial dos ambientes para o usuário. Segundo opiniões de usuários que testaram o

projeto feito a partir da planta real, o ambiente virtual serviu como uma ótima

ferramenta para se ter a noção de espaço do ambiente. Infelizmente, não foi possível

realizar esse teste com um número maior de participantes, pois para isso as pessoas

teriam tanto que ter acesso ao dispositivo quanto conhecer pessoalmente o ambiente

modelado. Outro ponto aprovado por quem testou o projeto foi o uso do aplicativo para

demonstrar um ambiente totalmente decorado, sugerindo como trabalhos futuros

permitir o usuário em tempo real ser capaz de alterar a posição dos objetos e suas cores

por dentro do aplicativo. Um ponto que deve ser melhor trabalhado é a usabilidade, pois

mesmo o uso do controle simplificado não foi o suficiente para resolver a dificuldade de

controlar o personagem no mundo virtual de quem não tem costume de jogar com esse

tipo de joystick em videogames.

Tanto o processo de importação de um modelo para dentro do Unity, quando a

modelagem de um ambiente dentro da própria IDE é um processo bem simples que não

requer nenhum conhecimento de programação, possibilitando que qualquer um importe

seus modelos para um projeto base em que já tenha sido pré-carregado os objetos que

contêm os scripts de controle de câmera e personagem. Um projeto simples para que

esses desenvolvedores usem de base, assim como um pequeno tutorial de utilização e

criação de aplicativo para Android pode ser encontrado no GitHub

https://github.com/sbvb/RealidadeVirtual.

Outra sugestão de trabalho futuro é construir uma plataforma online que seja

capaz armazenar os modelos 3D de diferentes usuários, e se criar em uma única

aplicação uma funcionalidade de baixar e carregar em tempo real modelos armazenados

em um servidor. Dessa maneira bastaria disponibilizar o aplicativo uma única vez para

o cliente, dando maior liberdade para os desenvolvedores trabalharem nos modelos.

28

Bibliografia

[1] REVISTABW. Modelagem de Ambientes Virtuais em Realidade Virtual. Revista

Brasileira de Web. http://www.revistabw.com.br/revistabw/modelagem-de-

ambientes-virtuais-em-realidade-virtual/ (Acesso em 25 fevereiro 2016).

[2] “Virtual”. Dicionário Michaelis. http://michaelis.uol.com.br/. (Acesso em 01 março

2016).

[3] "Jaron Lanier". Wikipedia, The Free Encyclopedia.

https://en.wikipedia.org/w/index.php?title=Jaron_Lanier&oldid=704425163

(Acesso em 3 março 2016).

[4] "Sensorama". Wikipedia, The Free Encyclopedia,

https://en.wikipedia.org/w/index.php?title=Sensorama&oldid=648461523 (Acesso

em 3 março 2016).

[5] PIMENTEL, K.; TEIXEIRA, K. “Virtual reality - through the new looking glass”.

2.ed. New York, McGraw-Hill, 1995.

[6] MACHADO, L. S. Conceitos básicos da realidade virtual, Monografia, INPE-5975-

PUD/025, Instituto Nacional de Pesquisas Espaciais, São José dos Campos/SP.

Disponível on-line em: http://www.lsi.usp.br/~liliane/conceitosrv.html, 1995.

[7] McGEE, J. PRUSAK, L. Gerenciamento estratégico da informação. Rio de Janeiro:

Campus, 1994.

[8] CARVALHO, L. HEINECK, L. ANGELIM, V. Flexibilidade arquitetônica e

gerenciamento de empreendimentos: O Caso de um Perfil de Vendas Retardatário,

ENTAC, 2010.

[9] Visão geral de realidade virtual. Universidade de Passo Fundo

http://usuarios.upf.br/~pasqualotti/ccc053/intr_rv/ (Acesso em 04 março 2016)

[10] Technische Realisierungen und medizinische Anwendungen von Head-Mounted-

Displays. http://www.robotikmedizin.de/robot_4.htm (Acesso em 05 março 2016)

[11] Google Cardboard. https://developers.google.com/cardboard/ (Acesso em 05

março 2016)

[12] Sixaxis Controller. http://dancingpixelstudios.com/ (Acesso em 06 março 2016)

[13] "Root no Android" Wikipedia, The Free Encyclopedia,

https://pt.wikipedia.org/wiki/Root_no_Android (Acesso em 06 março 2016).

[14] Taishimizu. http://taishimizu.com/193/3D-Considered-Harmful (Acesso em 06

março 2016).

29

[15] The Bored Engineers. http://theboredengineers.com/2012/05/the-quadcopter-

basics/. (Acesso em 07 março 2016).

[16] Altura média no brasil. IBGE. Disponível on-line em:

http://www.ibge.gov.br/home/estatistica/populacao/condicaodevida/pof/2008_2009

_encaa/tabelas_pdf/tab1_1.pdf. (Acesso em 08 março 2016).

[17] Playstation. Disponível on-line em: https://www.playstation.com/pt-br/ (Acesso

em 10 março 2016).

[18] Scrum Academic. http://www.sbvb.com.br/proposals/Scrum-Academic-

sbvb.com.br.pdf (Acesso em 19 março 2016).

1

Apêndice A

Plantas utilizadas

2

1

Apêndice B

Especificação de requisitos de Software

Sumário

Sumário ......................................................................................................................................... 1

1 Introdução ............................................................................................................................. 2

1.1 Objetivo ......................................................................................................................... 2

1.2 Escopo do Sistema ........................................................................................................ 2

1.3 Definições ..................................................................................................................... 2

2 Descrição Geral do Sistema .................................................................................................. 3

2.1 Interface ......................................................................................................................... 3

2.2 Usuários ......................................................................................................................... 3

3 Requisitos do Sistema ........................................................................................................... 4

3.1 Prioridades ..................................................................................................................... 4

3.2 Requisitos Funcionais ................................................................................................... 4

3.3 Requisitos não-funcionais ............................................................................................. 5

3.4 Casos de Uso ................................................................................................................. 6

3.4.1 Diagrama de Casos de Uso .................................................................................... 6

3.4.2 Descrição dos Casos de Uso .................................................................................. 6

2

1 Introdução

1.1 Objetivo

O objetivo desse documento é descrever e especificar o Sistema de realidade virtual a

ser desenvolvido como projeto de graduação para o curso de Engenharia Eletrônica e de

Computação, servindo de suporte para o desenvolvimento do mesmo.

1.2 Escopo do Sistema

O Sistema deve ser capaz de rodar em uma plataforma Android para ser utilizado em

conjunto com o hardware Google Cardboard de forma a transferir imagens

estereoscópicas para a tela do dispositivo que representem um modelo que foi

previamente carregado por uma equipe de desenvolvimento.

1.3 Definições

Abreviação Definição

Ator Chama-se Ator ao estereótipo padrão do UML usado para definir o papel que um

utilizador representa relativamente ao sistema informático modelado.

Um ator representa um conjunto coerente de papéis que os usuários de casos de uso

desempenham quando interagem com esses casos de uso. Tipicamente, um ator

representa um papel que um ser humano, um dispositivo de hardware ou até outro

sistema desempenha com o sistema.

FR Functional Requirement. Requisito funcional define uma função de um

sistema de software ou seu componente

GUI Graphical User Interface. Interface gráfica do usuário

NFR Non-functional Requirement. Requisito não funcional é um requisito

que não define uma função a ser desempenhada pelo software, mas que

ainda assim ele deve ser capaz de atender

UML Unified Modeling Language. É a linguagem de modelagem de um

sistema que permite representa-lo de forma padronizada.

3

2 Descrição Geral do Sistema

O Sistema será composto por um aplicativo para o sistema operacional Android e um

projeto base para ser executado na IDE Unity.

2.1 Interface

A interface com o usuário final será toda realizada dentro do aplicativo Andoid, os

desenvolvedores devem utilizar o projeto base em Unity para carregar os modelos,

controlar as interações com o ambiente e gerar o aplicativo.

2.2 Usuários

Seguindo o que foi especificado acima, os usuários são separados em categorias

dividindo sua responsabilidade no software

Ator Definição

Usuário Usuário que vai executar a aplicação gerada pelo desenvolvedor.

Desenvolvedor Responsável por traduzir os modelos dentro da aplicação.

Modelador Usuário responsável por criar o modelo 3D utilizado na aplicação.

4

3 Requisitos do Sistema

3.1 Prioridades

Essencial É um requisite sem o qual o Sistema não é capaz de funcionar

Importante Um requisite que o Sistema é capaz de funcionar sem ele, mas não de

maneira satisfatória.

Desejável Um requisite que não compromete o funcionamento do Sistema, mas que

sua implementação pode trazer benefícios a utilização pelo usuário.

3.2 Requisitos Funcionais

Título FR 1 – Rotacionar a câmera

Descrição Esse requisito funcional permite ao usuário da aplicação conseguir mover

a direção para onde se está olhando de dentro da aplicação apenas com o

movimento natural da cabeça.

Prioridade Essencial

Título FR 2 – Mover o Personagem

Descrição Este requisito funcional permite ao usuário navegar no mundo virtual

dentro da aplicação usando o controlador externo e a direção na qual ele

está observando.

Prioridade Essencial

Título FR 3 – Interagir com o Ambiente

Descrição Este requisito funcional permite ao usuário interagir com os elementos

que compõem o ambiente como por exemplo abrir portas, ligar

equipamentos eletrônicos, controlar a iluminação ou trocar a cor de

paredes.

Prioridade Importante

Título FR 4 – Ouvir Sons

Descrição Este requisito funcional permite ao usuário ouvir os sons do ambiente ao

seu redor, podendo identificar a direção de onde ele está sendo emitido.

Prioridade Desejável

Título FR 5 – Detectar Colisões

Descrição Este requisito funcional permite ao sistema detectar a colisão do objeto

que compõe o usuário com os demais objetos que compõem o ambiente,

assim evitando que seja possível atravessar esses objetos.

Prioridade Essencial

5

3.3 Requisitos não-funcionais

Título NFR 1 – Portabilidade

Descrição O Sistema deve ser capaz de rodar em qualquer dispositivo android com

versão acima da 4.4 (KitKat) que possuam módulos de giroscópio

integrados.

Prioridade Importante

Título NFR 2 – Tempo de resposta

Descrição O tempo de resposta para exibição dos elementos na tela não pode causar

sentimento de “lag” em quem estiver utilizando a aplicação.

Prioridade Essencial

Título NFR 3 – Simplicidade de controles

Descrição O Sistema de controles de movimento deve ser simples a ponto de

qualquer usuário com pouca ou nenhuma experiência em sistemas

computacionais e controles de videogame seja capaz de manipular.

Prioridade Essencial

6

3.4 Casos de Uso

3.4.1 Diagrama de Casos de Uso

Mover Camera

Andar

InteragirUsuário

Desenvolvedor

Modelador

CarregarModelos

GerarAplicativo

CriarModelos

AndroidUnity

3.4.2 Descrição dos Casos de Uso

ID UC-01

Nome Mover Câmera

Criado por Victor Rodrigues Ultimo update por -

Dia Criado 07-03-2016 Dia do último update -

Atores Usuário

Descrição Controla a câmera da aplicação com o movimento de cabeça do

usuário

Trigger Abrir o aplicativo

Pré-condições Ator está usando o cardboard

Pós-condições N/D

Fluxo normal 1) Ator move a cabeça

2) Sistema recebe os dados de movimento

3) Sistema processa os dados e exibe nova tela para o usuário

Fluxo alternativo N/D

Exceções N/D

Inclusão N/D

Frequência Todo ciclo de update interno na aplicação

Requisitos especiais N/D

Pressupostos N/D

Notas N/D

ID UC-02

Nome Andar

Criado por Victor Rodrigues Ultimo update por -

7

Dia Criado 07-03-2016 Dia do último update -

Atores Usuário

Descrição Controla a posição especial do objeto que representa o usuário na

aplicação

Trigger Clicar em algum botão do controlador que seja responsável pelo

realizar um movimento

Pré-condições Ator está usando o cardboard

Pós-condições Ator visualizará sua nova posição

Fluxo normal

1) Ator aperta um botão no controle

2) Sistema detecta qual botão foi apertado

3) Sistema realiza as transformações necessárias para andar na

direção para onde se está olhando

4) Sistema atualiza a posição do objeto na cena

5) Sistema atualiza a câmera para a nova posição

6) Sistema processa os dados e exibe nova tela para o usuário

Fluxo alternativo Passo 2 Se o botão não for responsável por realizar movimento, não executa a

alteração da posição

Exceções N/D

Inclusão UC-01

Frequência Todo ciclo de update interno na aplicação

Requisitos especiais N/D

Pressupostos N/D

Notas N/D

ID UC-03

Nome Interagir

Criado por Victor Rodrigues Ultimo update por -

Dia Criado 07-03-2016 Dia do último update -

Atores Usuário

Descrição Controla as chamadas de funções específicas de interação com

cada objeto na cena

Trigger Clicar no botão do controlador que seja responsável pela

interação

Pré-condições Ator está usando o cardboard

Pós-condições N/D

Fluxo normal

1) Ator aperta um botão no controle

2) Sistema traça um raio na direção de onde o usuário estiver

olhando

3) Sistema recebe os dados de quais objetos foram atravessados

por esse raio

4) Sistema chama as funções de ativação desses objetos

5) Sistema atualiza a câmera e tela com os objetos atualizados

Fluxo alternativo N/D

Exceções N/D

Inclusão UC-01, UC-02

Frequência Todo ciclo de update interno na aplicação

Requisitos especiais N/D

Pressupostos N/D

Notas N/D

8

ID UC-04

Nome Carregar Modelos

Criado por Victor Rodrigues Ultimo update por -

Dia Criado 07-03-2016 Dia do último update -

Atores Desenvolvedor

Descrição Inserir o arquivo do modelo 3D dentro da plataforma Unity.

Trigger Início do desenvolvimento da aplicação

Pré-condições Existe um modelo 3D que poderá ser importado para dentro de

um projeto em Unity

Pós-condições Existe um projeto pronto para ser compilado e distribuído

Fluxo normal

1) Ator abre o Unity

2) Ator carrega o modelo 3D para dentro da aplicação

3) Ator ajusta a escala do modelo importado para estar de acordo com

o tamanho real dos objetos

4) Ator atualiza os componentes de colisão dos objetos carregados

5) Ator salva o projeto com todos os componentes carregados

Fluxo alternativo N/D

Exceções N/D

Inclusão N/D

Frequência A cada update de modelo.

Requisitos especiais N/D

Pressupostos N/D

Notas N/D

ID UC-05

Nome Gerar aplicativo

Criado por Victor Rodrigues Ultimo update por -

Dia Criado 07-03-2016 Dia do último update -

Atores Desenvolvedor

Descrição

Trigger Projeto já está pronto para ser entregue ao cliente.

Pré-condições Existe um projeto pronto para ser compilado e distribuído

Pós-condições Existe um aplicativo pronto para ser executado pelo usuário

Fluxo normal

1) Ator abre o projeto no Unity.

2) Ator seleciona a plataforma que deseja compilar o projeto.

3) Sistema compila e salva um arquivo em formato “.apk”

4) O ator publica o aplicativo na loja, instala no celular ou envia para

o cliente.

Fluxo alternativo N/D

Exceções N/D

Inclusão N/D

Frequência Sempre após o UC-04

Requisitos especiais N/D

Pressupostos N/D

Notas N/D

9

ID UC-06

Nome Criar Modelos

Criado por Victor Rodrigues Ultimo update por -

Dia Criado 07-03-2016 Dia do último update -

Atores Modelador

Descrição Gera arquivos de modelos 3D que possam ser carregados na

aplicação.

Trigger Início de um projeto.

Pré-condições Existe uma planta do modelo que deve ser modelado.

Pós-condições 1) Existe um modelo 3D que poderá ser importado para dentro de um

projeto em Unity.

Fluxo normal

1) Ator recebe um desenho do ambiente que precisa ser modelado.

2) Ator abre o software de modelagem 3D.

3) Ator cria o modelo baseado na planta.

4) Ator salva o modelo em um arquivo de formato legível pelo Unity.

5) Ator envia o modelo salvo para o desenvolvedor.

Fluxo alternativo N/D

Exceções N/D

Inclusão N/D

Frequência Todo início de projeto.

Requisitos especiais N/D

Pressupostos 1) Existe um desenho/planta no qual o ator deve se basear

2) Ator tem acesso a um software de modelagem 3D.

Notas N/D