areaportal visibility by filami. objectivos por em prática técnicas de determinação de...

Post on 18-Apr-2015

109 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

AreaPortal Visibility

By Filami

Objectivos

Por em prática técnicas de determinação de visibilidades usando AreaPortals;

Desenvolver uma aplicação experimental com o intuito de mostrar uma técnica de determinação de visibilidades para cenários de interiores;

Desenvolver “Know How” para futuras aplicações em jogos estilo Doom3 ou Unreal Tournement.

O que são AreaPortals?

Uma técnica que permite separar um cenário em diferentes áreas interligadas por portais;

Permite a determinação de visibilidades dos objectos contidos de forma rápida e eficiente;

Muito eficaz para cenários de interiores, ricos em salas, corredores e correspondentes “portas”.

Como contruir um cenáriocom AreaPortals?

Todos os cenários são constituidos por vários objectos que adicionam detalhe e ambiente ao cenário;

Este cenário é inadequado à contrução das estruturas de dados, contem demasiados pequenos detalhes e será difícil identificar as áreas;

Como contruir um cenáriocom AreaPortals? (cont.)

O cenário é então separado em 2 tipos de objectos: A “Cage” contendo

apenas as “paredes”, “tectos” e “chãos”;

“Static Meshes” com o resto dos detalhes;

Na imagem ao lado, apenas a “Cage” é mostrada no mesmo ponto de vista da imagem anterior.

Como contruir um cenáriocom AreaPortals? (cont.)

À “Cage” são então adicionados novos modelos que serão identificados como portais e que irão ligar as diferentes áreas.

DEMO

Construção

Depois de lido o cenário do disco, este terá de ser preparado: Deverão ser calculadas as áeras que constituem

o cenário; Deverão ser calculados os portais e respetivas

ligações às áreas; Será, no entanto, necessário primeiro

subdividir o cenário original em volumes convexos.

Binary Space Partition (BSP)

O BSP permite a divisão da “Cage” em volumes convexos;

Um BSP é uma árvore computacional binária cujo divisor são planos tridimensionais;

Na imagem ao lado pode-se ver um exemplo de um pequeno cenário em 2D dividido numa BSP.

Binary Space Partition (Cont.)

Como foi possivel constatar, o BSP tende a cortar alguns triangulos do cenário;

Estes cortes devem ser minimizados e isso é possivel graças ao deselvolvimento de uma heuristica de sub-divisão que minimiza os cortes sem sacrificar balanceamento da árvore;

As imagens ao lado demonstram os cortes efectuados pela aplicação.

Binary Space Partition (Cont.)

Ao lado está então representada a àrvore computacional contruída a partir do actual cenário de teste;

Os pontos azuis são os nós contendo os planos de corte;

Os rectangulos são as folhas da árvore contendo o número de faces da “Cage” associados a essa mesma folha.

DEMO

Cálculo das Áreas

Após dividir o cenário em volumes convexos, é então possível determinar onde ficam as áreas do mesmo cenário;

As áreas são computadas através de raytracing; Entre cada par de folhas, são traçados um certo

número de raios aleatórios; Se algum destes raios não for ocludido, as duas

folhas têm de fazer parte da mesma área; Os portais não deixam passar os raios.

Cálculo das Áreas (Cont.)

Cálculo das Áreas (Cont.)

Para alem de ocludirem os raios, os portais também os usam para determinar que áreas é que o portal interliga;

Quanto um portal recebe um raio vindo de uma folha que já pertence a uma área, este portal guarda essa área e a mesma áera é notificada de que aquele portal está no seu interior;

Os portais conhecem as suas áreas e as áreas conhecem os seus portais.

Cálculo das Áreas (Cont.)

Os portais também são simplicados;

A geometria destes são aproximadas a rectangulos que, no futuro, simplificarão o sistema de determinação de visibilidades.

DEMO

Aplicação

Depois de computadas as estruturas de dados necessárias, é então possivel, a partir de um determinado ponto de vista, identificar quais as áreas e folhas da árvore que são potencialmente visiveis.

Como se usam os portais?

É calculado um tronco (frustum) a partir de um ponto de vista; esse tronco é usado para determinar quais os objectos potencialmente visiveis;

Os portais cortam os troncos de visão; desta forma, os troncos não são capazes de observar através das paredes.

DEMO

E os detalhes?

Agora que já foram identificadas as áreas do cenário e que já é possivel determinar quais as áreas potencialmente visiveis para um determinado ponto de vista, como é que se volta a adicionar os detalhes do cenário original?

E os detalhes? (Cont.)

Cada detalhe do cenário é representado por uma malha poligonal e cada malha poligonal contem um volume envolvente em forma de caixa (Bounding Box). Esta caixa pode ser inserida, através da ajuda da BSP, numa folha (e correspondente área);

Depois de inserida na cena, a malha poligonal pode então usar a esturtura subjacente de AreaPortal para determinar se potencialmente visivel para um determinado ponto de vista.

DEMO

Onde são estas técnicas já usadas?

Muitos jogos hoje em dia usam AreaPortals, ou técnicas semelhantes, para acelerar o desenho dos seus cenários de interiores;

Um exemplo concreto é o Doom3, que usa técnicas muitos semelhantes às aqui apresentadas tanto para contrução do cenário como determinação de visibilidades;

O Unreal Engine também é um motor muito eficaz para cenários interiores e, também ele usa algumas das técnicas apresentadas para visualização e outras.

Prey

Prey é um jogo da autoria da 3DRealms que usa o mesmo motor de jogo desenvolvido para o Doom3;

Usa o sistema de visualização usado no motor original;

Estas imagens foram tiradas da demo jogavel do jogo e mostram os portais em funcionamento.

Prey (cont.)

Unreal Engine

Numa artigo escrito por Lee Perry para a Game Developer Magazine, lead level designer da Epic Games, é possivel notar quer este engine usa também o conceito de “Cage” e detail meshes:

“Cage” usado para BSP e criado usando CSG (Constructuve Solid

Geometry)

Adição de “Static Meshes”adicionando detalhes importantes ao cenário.

http://udn.epicgames.com/Three/rsrc/Three/ModularLevelDesign/ModularLevelDesign.pdf

Unreal Engine (cont.)

Os seguintes websites do UDN também explicam em mais algum detalhe as técnicas usadas neste motor para o desenvolvimento dos cenários: http://udn.epicgames.com/Two/IntroToUnrealEd.html http://udn.epicgames.com/Two/LevelOptimization.html

Trabalho Futuro...

Criar uma ferramenta de leitura e compilação de cenários para ser integrada numa workflow artisitica e editores de níveis;

Desenvolver CSG (Contructive Solid Geometry) para a criação das “Cages” facilitando o trabalho dos artistas.

??

??

?

??

?

?

?

top related