Portais Renderizveis em 3D Omar Mahmoud Abou Ajoue ... cef/mac499-09/monografias/omar/   Dentre

download Portais Renderizveis em 3D Omar Mahmoud Abou Ajoue ... cef/mac499-09/monografias/omar/   Dentre

of 25

  • date post

    21-Jan-2019
  • Category

    Documents

  • view

    218
  • download

    0

Embed Size (px)

Transcript of Portais Renderizveis em 3D Omar Mahmoud Abou Ajoue ... cef/mac499-09/monografias/omar/   Dentre

  • Portais Renderizveis em 3D

    Omar Mahmoud Abou Ajoue

    Orientador:

    Marcel Jackowski

  • 1. Introduo

    Motivao

    Ao longo de nossa graduao, ns compartilhamos um interesse comum pelo

    desenvolvimento de jogos. Sempre fomos fs de jogos eletrnicos desde crianas e

    sempre tivemos a curiosidade sobre como estes jogos funcionavam. Esta

    curiosidade foi um dos motivos que nos fez optar pelo curso de cincias da

    computao.

    Dentre os jogos que gostamos, um dos quais mais nos fascinou foi um jogo

    chamado Portal, criado pela produtora Valve, lanado para PC e Xbox 360 em 2007.

    A jogabilidade presente neste ttulo nica, e os desafios a serem superados em

    cada fase nos mantinham presos ao jogo por horas. Portal foi aclamado como um

    dos jogos mais originais de 2007.

    Portal um jogo de puzzle para um nico jogador em primeira pessoa. Isto

    significa que o jogador deve resolver quebra cabeas para passar das fases,

    enquanto movimenta seu personagem com uma viso em primeira pessoa.

    O jogador possui uma arma que pode utilizar para ajud-lo a resolver os quebra

    cabeas. A nica funo desta arma a de criar portais nas paredes do mundo 3D,

    que so utilizados pelo jogador para acessar diversas localidades, grande parte

    delas inacessveis pela movimentao convencional do personagem (como grandes

    alturas, por exemplo, ou obstculos).

    A criao dos portais dada por comandos do mouse, com cliques dos botes

    esquerdo e direito. Cada boto cria um portal, que no jogo original, possuem borda

    colorida em azul e laranja para diferenci-los. Ao acionar novamente os botes, o

    portal da cor correspondente trocado pela nova localizao. Os portais criados

    desta forma criam um sistema de entrada e sada. Ao atravessar um dos portais, o

    jogador levado posio do outro portal. Esta transio feita de modo suave, e

    o jogador realmente sente como se estivesse atravessando uma janela at o outro

    lado. Pode-se inclusive ficar parado no meio, entre os dois portais.

    Figura 1: Viso de portais no jogo Portal

  • Alm do tele transporte, os portais possuem um efeito visual muito interessante. Ao

    olhar atravs do portal, o jogador consegue observar com perfeio o mundo do

    outro lado, como se estivesse de fato vendo a sada do portal correspondente do

    par azul-laranja. Se posicionados corretamente, os portais permitem que o jogador

    se veja atravs deles. Outro efeito interessante ocorre quando os dois portais so

    colocados um em frente ao outro. O efeito resultante o mesmo que ocorre quando

    ficamos entre dois espelhos, quando h impresso de uma profundidade infinita.

    Figura 2: Viso atravs do portal azul da Fig. 1

    Figura 3: Viso atravs do portal laranja da Fig. 1

    Todas estas caractersticas deste jogo despertaram grande curiosidade.

    Inicialmente, era desejado entender como seria feita a ligao entre os portais.

    Chegamos a imaginar solues completamente impraticveis, como clonar o

    ambiente 3D e coloc-lo atrs de cada portal.

  • Decidimos explorar esta curiosidade e desenvolver a nossa prpria soluo para o

    problema. O trabalho de concluso de curso a verso de uma implementao

    deste tipo de portais. No do conhecimento dos integrantes se as solues

    encontradas so as mesmas dos desenvolvedores do jogo original, mas

    acreditamos que conseguimos construir uma ferramenta de criao de portais

    satisfatria, que pode ser utilizada pra criar um jogo com cenrios to divertidos

    quanto alguns dos cenrios do Portal.

    Objetivos

    Nosso objetivo implementar um jogo 3D em primeira pessoa, que permita ao

    jogador criar portais com propriedades similares s do jogo Portal.

    Para a concretizao deste objetivo, h diversas tarefas e empecilhos a cumprir.

    Iniciaremos expondo os problemas que encontramos e daremos a seguir as

    solues.

    Problemas

    A criao do nosso jogo envolve vrios problemas, alguns deles no relacionados

    diretamente criao dos portais. Estes problemas so:

    Criar um mundo 3D a ser explorado pelo jogador;

    Criar uma cmera que d ao jogador a iluso de estar dentro de um

    personagem 3D, animado e que se movimenta de acordo;

    Prover ao jogador meios de controlar esta cmera satisfatoriamente e

    atualizar a posio e a rotao do personagem de acordo;

    Criar mecanismos de coliso para este personagem com os objetos do

    mundo 3D e com os portais;

    Criar uma fsica bsica, que aplique gravidade ao personagem;

    Permitir ao jogador escolher pontos nas paredes do mundo 3D onde ele

    deseja criar os portais;

    Criar os portais nos pontos escolhidos pelo jogador, orientados

    corretamente, independentemente das paredes escolhidas;

    Impedir a criao de portais em paredes onde eles no cabem;

    Permitir a visualizao atravs dos portais, incluindo as visualizaes

    recursivas (portais dentro de portais) e uma boa noo de perspectiva;

    Permitir a travessia dos portais.

    Alm disso, nos propomos a criar pelo menos um quebra cabea a ser resolvido

    pelo jogador, utilizando os portais.

  • 2. Conceitos e tecnologias estudadas

    A biblioteca Irrlicht

    A primeira tarefa necessria para a realizao deste trabalho era o entendimento

    do funcionamento de uma mquina grfica 3D, ou seja, conceitos de computao

    grfica precisavam ser entendidos.

    Juntamente necessidade de entendimento na rea de computao grfica,

    imediatamente surgiu tambm a necessidade de relembrar todos os conceitos

    estudados em lgebra linear, j que esto totalmente relacionados.

    Utilizamos, como ferramentas, uma engine grfica chamada Irrlicht, que realizava

    toda a interface com OpenGL e automatizava o processo para renderizao para

    ns, permitindo assim que nos focssemos na soluo dos problemas relacionados

    a portais e facilitando a parte grfica.

    Dos problemas que citamos acima, a engine sozinha no era capaz de solucionar

    nenhum, porm, era capaz de prover um arcabouo de ferramentas para esta

    realizao. Assim, vamos explicar o que era exigido de ns e a soluo que

    utilizamos para resolver cada problema.

    A engine era capaz de prover:

    Facilidade na manipulao da cmera, alm de um grande arcabouo

    vetorial, extenso e muito bem documentado

    Criao de uma cmera em primeira pessoa sem a existncia de um

    personagem atrelado a ela

    Facilidade na realizao de renderizaes a texturas, uma tcnica que ser

    explicada adiante e indispensvel realizao do trabalho

    Possibilidade de carregamento de masmorras pr-montadas em programas

    especficos, alm de modelos 3D, como o personagem e o labirinto em que

    o jogador ser colocado

    Resposta a eventos de mouse e teclado

    Coliso bsica com objetos identificados como "paredes", junto de uma

    gravidade superficial

    Fcil acesso posio e rotao dos objetos, por intermdio de mtodos em

    classes bem estruturadas, programadas em C++

    lgebra Linear

    Para a soluo dos problemas, ser necessrio ter boa noo acerca dos produtos

    vetoriais e produtos escalares entre vetores, e sua respectiva idia de resultado.

    Vamos relembrar sucintamente o que cada um destes produtos indica.

    O produto vetorial uma operao binria entre dois vetores que tem como

    resultado um outro vetor, perpendicular ao plano formado pelos dois primeiros

    vetores e com direo dada pela regra da mo direita.

    J o produto escalar a operao binria entre dois vetores cujo resultado um

    escalar que indica, de certa forma, a relao angular entre os vetores.

    Apresentado o arcabouo que temos e o que nos falta fazer, vamos s atividades

    realizadas, com as respectivas tcnicas envolvidas.

  • Atividades realizadas

    Criao de um mundo bsico

    O primeiro passo foi conseguir ter um modelo bsico de um mundo explorvel

    utilizando a biblioteca da engine Irrlicht. A documentao relacionada a esta

    biblioteca bastante extensa e muito bem detalhada, o que facilitou bastante a

    criao de um incio: um mundo 3D j consagrado no ttulo da srie Quake estava

    pronto nossa disposio, necessitando apenas poucas linhas de comando para ter

    um simples labirinto e as funcionalidades bsicas de movimentao.

    A movimentao dos personagens

    A movimentao toda controlada pela biblioteca, pois esta nos fornece uma

    interface de manipulao de eventos, mas daremos uma breve idia de como

    dada a movimentao da cmera pelo cenrio.

    A entrada dada pela "interface wasd", j conhecida nos jogos em primeira pessoa,

    em que o W move para frente, A para esquerda, S para trs e D para a direita.

    O acionamento dos botes W ou S incrementa ou decrementa, respectivamente, a

    posio atual por um fator do vetor target da cmera, que indica para onde a

    cmera est olhando.

    J os botes A e D realizam um deslizamento lateral, obtido por uma multiplicao

    entre o vetor resultante do produto vetorial entre o vetor target e o vetor up da

    cmera, sendo que este ltimo indica o que o lado de cima no mundo para a

    cmera.

    Desta forma, conseguimos realizar a movimentao via teclado. A rotao dada

    pelo movimento do mouse, em que os movimentos horizontais realizam rotaes

    no eixo X e os movimentos verticais realizam rotaes no eixo Y. Para calcular a

    rotao da cmera pelo mouse, obtemos a posio do cursor na tela no frame atual

    e a comparamos com a posio do cursor no frame anterior, obtendo o ngulo de

    rotao que deve