Another 3D Engine
english

Seis Maneiras de Renderizar um Cubo

trabalho 1 trabalho 2 trabalho 3
trabalho 4   trabalho 5   trabalho 6

Requisitos:
Para ver os trabalhos, você deverá ter o plugin Java instalado em seu computador. Se você acessa seu banco pela Internet, você provavelmente já tem Java instalado. Se não, faça o download no site http://www.java.com/.


Sobre Another 3D Engine

3d engines são encontrados em qualquer software (jogo ou aplicativo) que utilize gráficos tridimensionais. Eles são responsáveis pela renderização (exibição) destes gráficos, realizando o desenho de polígonos, o cálculo da perspectiva e do sombreamento, e o preenchimento com texturas. Também calculam as transformações (rotação, deslocamento, escalonamento) dos objetos, e muitos também disponibilizam funções de animação.

Como critério principal de avaliação e como objetivo principal dos criadores de 3d engines, temos a busca do maior grau de realismo possível nas imagens geradas. Mesmo quando temos cenários que não são, aparentemente, realistas, o que muda é o referencial deste realismo. Por exemplo, diversos jogos apresentam cenários de baixa gravidade (onde o referencial é, geralmente, a superfície da Lua) ou de gravidade zero (espaço sideral), mas, nestes casos, raramente temos dificuldade em identificar o referencial utilizado.

Em busca desse realismo, os 3d engines se valem de diferentes métodos de programação. É preciso garantir que os polígonos mais próximos dos observador sejam desenhados sobre os polígonos mais distantes (realiza-se um cálculo para determinar a ordem de desenho); a iluminação precisa levar em conta as fontes de luz disponíveis em cada cena, bem como as características dos materiais; se temos transparências, o sistema também precisa desenhar corretamente os objetos que serão visíveis através do material transparente. São estes e outros cuidados que os programadores precisam levar em conta.

Another 3d engine apresenta uma série de modificações na lógica de um 3d engine. Para isso, me baseei num 3d engine relativamente simples, desenvolvido em Java, chamado Browser3D, distribuído como software open source. A biblioteca Java2D foi utilizada para realizar estas modificações, que atuam na forma como os objetos são desenhados.

Para a realização do primeiro trabalho de Another 3d Engine, procurei uma cena que fosse o equivalente do “hello world” em termos de sistemas geradores de gráficos tridimensionais. Explicação: imprimir a mensagem Hello World na tela do computador é a tarefa do primeiro programa que se aprende no estudo de qualquer linguagem de programação; quase todos os livros e tutoriais de programação incluem um exemplo chamado Hello World. Escolhi como transposição de “Hello World” para o mundo dos gráficos 3d o desenho de um cubo na tela. Não um cubo qualquer, mas sim um cubo de cores, tal como o criado no capítulo 1 do tutorial de Java3D intitulado Getting Started with Java 3D, e que pode ser visto nas imagens ao lado (Java3D é um dos sistema mais poderosos para a geração de gráficos tridimensionais disponíveis. É desenvolvida pela Sun, a empresa responsável pela linguagem de programação Java).

Cada uma das imagens no iníco desta página leva para uma versão diferente de Another 3d Engine; em cada uma, as modificações que realizei são diferentes, de forma que você verá diversas maneiras de se desenhar um cubo de cores, girando sobre si mesmo, na tela do computador.


Janeiro de 2006
Andrei R. Thomaz
andreithomaz@gmail.com



Referências

Lista de 3d Engines
http://cg.cs.tu-berlin.de/~ki/engines.html
http://www.devmaster.net/engines/
Browser3D
http://www.geocities.com/SiliconValley/Horizon/6481/Browser3d.html
Java 3D
http://java.sun.com/products/java-media/3D/
Java
http://java.sun.com/