\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[portuges]{babel}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{fullpage}

\renewcommand{\familydefault}{\sfdefault}
\title{Modelagem 3D e Raytracing}
\author{João Paulo Pizani Flor \\ Renato Besen}
\date{19/06/2009}

\begin{document}
	\maketitle

	\section*{Introdução}
		O presente trabalho envolve a modelagem em três dimensões de uma cena, e sua renderização fotorrealística
		utilizando um software de \emph{raytracing}. Como software para a modelagem utilizamos o Google Sketchup 7,
		versão Free. Para realizar a renderização utilizamos um plugin para o Sketchup chamado ``iRender nXt'', que
		permite o \emph{raytracing} tanto de cenas em ambientes externos como internos.
		
		O Google Sketchup é um software proprietário para modelagem em 3D, e que se destaca pela facilidade de uso
		e pela rapidez para modelar objetos utilizando-o. Um ponto forte do Sketchup é o conceito de ``inferência''.
		Utilizando-se de inferências, você pode desenhar a forma de um objeto tomando como referência os pontos
		de outro objeto. Assim pode-se desenhar de maneira muito simples coisas como retas paralelas, cópias deslocadas
		e repetidas de objetos. etc.
		
		Outro ótimo recurso do Google Sketchup é o seu suporte a componentes. As formas criadas podem ser agrupadas de
		forma hierárquica, e todas as modificações realizadas na geometria intrínseca desse componente se repetirão
		em todas as suas cópias. Pode-se, por exemplo, tornar uma janela um componente, e, ao mudar o tipo de vidro
		desse componente, o vidro de todas as instâncias de Janela será alterado.
		
		Usamos a versão gratuita do renderizados iRender nXt, que possui vários recursos interessantes, como a
		renderização de cenas com iluminação tipo HDRI (High Dynamic Range Imaging) e um gerador de árvores e
		vegetação em geral baseado em fractais.
		
		Para a modelagem e renderização da cena foram utilizados dois computadores: um notebook Core 2 Duo, com 1GB
		de RAM e uma placa de vídeo ATI Radeon Xpress 200, e um Athlon XP +1600, com 2GB de RAM e uma placa de vídeo
		Nvidia GeForce FX 5200.
		
		Todos os arquivos da modelagem podem ser encontrados sob o endereço:
		\url{https://svn.inf.ufsc.br/joaopizani/ModelagemBU}. Há um arquivo para cada \emph{componente} modelado, e
		um arquivo (CaixaDaSala), que inclui todos os componentes e é o modelo da cena como um todo.
	
	
	\section*{Detalhes da experiência e do software Google Sketchup}	
		A modelagem dos objetos e da cena com o Google Sketchup foi muito intuitiva e fluiu sem grandes problemas,
		mesmo sem nós nunca antes termos feito qualquer tipo de modelagem 3D. As ferramentas Push/Pull, Move, Rotate
		e Follow-Me, principalmente, funcionam de maneira bastante intuituva e poderosa, exatamente do jeito que
		um novato completo esperaria que elas funcionassem.
		
		O ponto mais positivo do Google Sketchup certamente é o desenho ajudado por inferências. Quase todas as
		ferramentas permitem que você, enquanto desenha um objeto, referencie pontos de outros para que o desenho
		fique com dimensões exatas. Por exemplo, se você tem dois cilindros paralelos e quer fazer com que o segundo
		fique com o mesmo comprimento do primeiro, basta usar a ferramenta Push/Pull na base do segundo cilindro e
		levar o mouse até a base do primeiro. O Google Sketchup então trava essa inferência e deixa os dois com
		exatamente o mesmo comprimento.
		
		Um dos pontos fracos é a relativa desorganização do \emph{Google 3D Warehouse}, o repositório de objetos
		3D do Sketchup. Ainda é relativamente difícil encontrar objetos de boa qualidade, e os títulos e
		informações inconsistentes nos modelos tornam a busca imprecisa.
		
	\section*{Objetos prontos utilizados}
		Para a modelagem da cena ficar o mais fiel possível foram utilizados alguns objetos já prontos, disponíveis
		no Google 3D Warehouse (\url{http://sketchup.google.com/3dwarehouse}). A maioria desses objetos têm muitos
		detalhes, e tomariam muito tempo caso fossem modelados do zero. Por outro lado, têm também pouca importância
		no enquadramento da cena. A maioria dos objetos utilizados foi modificada para atender melhor à cena.
		Abaixo estão listados todos os objetos prontos utilizados, com suas respectivas modificações realizadas.
		
		\subsection*{Extintor de incêndio}
			\begin{figure}[h]
				\includegraphics[scale=0.5]{imagens/extintor.png}
			\end{figure}
			
			\begin{description}
				\item[Link:] \url{sketchup.google.com/3dwarehouse/details?mid=21e8bb0ef3b2d662c33d84e056f4fd5d}
				\item[Modificações] Este modelo incluía dois extintores de incêncio. Foi utilizado apenas um na modelagem
				da cena.
			\end{description}
			
		\subsection*{Cesto de lixo}
			\begin{figure}[h]
				\includegraphics[scale=0.5]{imagens/cestolixo.png}
			\end{figure}
			
			\begin{description}
				\item[Link:] \url{sketchup.google.com/3dwarehouse/details?mid=8675c75413c9938dccf149c7b4065e}
				\item[Modificações] Neste caso o único atributo modificado no modelo foi a textura, que teve a
				cor alterada para um amarelo escuro, semelhante à cor da lixeira real.
			\end{description}

		\subsection*{Ventilador}
			\begin{figure}[h]
				\includegraphics[scale=0.5]{imagens/ventilador.png}
			\end{figure}
			
			\begin{description}
				\item[Link:] \url{sketchup.google.com/3dwarehouse/details?mid=4732769e4ec8d5255d67d8717eae89ee}
				\item[Modificações] Na cena existe um ventilador de parede, porém usamos este modelo pois sua forma
				se assemelhava mais ao original. Foi diminuído o tamanho de seu pé e de seu suporte, e a parte
				com o motor do ventilador foi rotacionada em relação ao suporte.
			\end{description}
			
		\newpage			
		\subsection*{Lâmpada fluorescente}
			\begin{figure}[h]
				\includegraphics[scale=0.5]{imagens/lampada.png}
			\end{figure}
			
			\begin{description}
				\item[Link:] \url{sketchup.google.com/3dwarehouse/details?mid=81f82faef0b44e54a842794815eadf65}
				\item[Modificações] Utilizamos a lâmpada diretamente como baixada do 3D Warehouse. Ela somente foi
				redimensionada de forma desproporcional, para deixá-la com uma espessura menor.
			\end{description}
	
	\section*{Dificuldades enfrentadas}
		A realização do trabalho como um todo foi em geral bastante gratificante. O trabalho de modelagem foi, na
		maior parte do tempo, realizada no notebook. A lentidão forçou a modelagem a ser feita com mais cuidado,
		sempre que possível dividindo a cena em componentes e camadas, para não sobrecarregar a visualização. Isso,
		por outro lado, colaborou com a melhor organização do trabalho e a mais fácil integração e ajuste final do
		enquadramento.
		
		As maiores dificuldades vieram do uso do plugin de renderização \emph{iRender nXt}. Durante várias tentativas
		de renderização, o software travava e/ou fechava sem motivo aparente, deixando a imagem que estava sendo
		gerada corrompida e impossível de se ler. Além disso, os tempos de renderização foram bastante grandes.
		Para renderizar a imagem final, com resolução de aprox. 1280x1024, foram gastas mais de 12h no desktop.
		
	\section*{Modelagem final}
		Esta seção apresenta o resultado final da \emph{modelagem} ainda não renderizado, isto é, sem efeitos de
		iluminação. A figura abaixo é um \emph{screenshot} da janela do Google Sketchup, com todos os objetos
		modelados em cena e no enquadramento final.
		
		\begin{figure}[h]
		\begin{center}
			\includegraphics[scale=0.4]{imagens/modelagem.png}
		\end{center}
		\end{figure}
		
		Destaque para as no lado externo da biblioteca na cena, que foram geradas com o gerador de vegetação
		incluso com o iRender nXt, que se baseia em fractais para gerar as plantas. A posição do sol desejada
		foi conseguida configurando-se a localização através de latitude e longitude no Google Sketchup, alinhando
		o modelo com a orientação geográfica real da BU e setando a posição do sol através do período do dia e 
		do ano.
		\begin{itemize}
			\item Localização: Porto Alegre - RS
			\item Dia e hora: 01 de setembro, às 14:55h
		\end{itemize}
		
		
	\newpage
	\section*{Resultado final da renderização}
		\begin{figure}[h]
		\begin{center}
			\includegraphics[scale=0.3]{imagens/bu_renderizada.jpg}
		\end{center}
		\end{figure}
	
\end{document}
