8. Cores e texturas. Acabamentos

Documentos relacionados
POV-Ray. André Tavares da Silva.

Tutorial Pov-Ray. Tutorial Pov-Ray. Glaucia Gabriel Sass. Glaucia Gabriel Sass. Programa de Pós-Graduação em Ciências Cartográficas

O que é? Como funciona?

Tutorial 3ds Max Modelar e texturizar maçãs

Utilizaremos o caminho File > File Link Manager (Figura 02) para referenciar o arquivo DWG no 3ds max 8.

Aprenda como renderizar uma maquete eletrônica no 3ds Max 7

Exercícios de Corel Draw

5.4. Efeitos de iluminação Efeitos de iluminação. 5. Filtros de luz e sombra

Tópicos Especiais em Engenharia de Software (Jogos II)

GUIA DE PREPARAÇÃO DE ARQUIVOS PARA IMPRESSÃO OFFSET.

Curso de extensão em Blender Prof. Luiz Gonzaga Damasceno

UNIDADE 4. TRANSFERÊNCIA DE ENERGIA NO SISTEMA ATMOSFERA- OCEANO. Conteúdo

Como funciona o relógio solar?

Colégio Santa Dorotéia

CARTOGRAFIA TEMÁTICA Teoria das cores. Prof. Luciene S. Delazari Departamento de Geomática Curso de Engenharia Cartográfica e de Agrimensura

LibreOffice Calc: aula 3

Intensidade determina qual o brilho que uma luz provoca na superfície de um objecto (Multiplier).

5. O uso de um pacote de ray-tracing

2) Clique com o botão direito sobre a camada do círculo e vá na opção Blending Options e na guia Inner Shadow, utilize as seguintes configurações:

Texto em 3D (ou efeito Inner Bevel)

Física Legal.NET - O seu site de Física na Internet

Painel inferior direito Escolhando a opção Ângulo de incidência da luz solar (sunlight angle)

PEF 5743 Computação Gráfica Aplicada à Engenharia de Estruturas

1. Crie um novo projeto Scratch. Apague o gato clicando com o botão direito e em apagar.

Estratégia para tirar fotos Configuração da cena (Guia desenvolvido pelo Autodesk Remake) Existem duas maneiras de posicionar o objeto e a câmera:

FENÔMENOS LUMINOSOS PARTE 1. CONTEÚDOS Propagação retilínea da luz Reflexão da luz Refração da luz

TUTORIAL DE MODELAGEM NO RHINOCEROS NESPRESSO. Micaela Benezra Maia Computação Gráfica I Prof. Eduardo Cardoso 2014/1

Tutorial 2 Fireworks CS3. ..: Técnicas básicas para a ferramenta Caneta (Pen-tool) - Parte 1:..

Matemática e Arte com POV-Ray

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL FACULDADE DE ARQUITETURA DESIGN DE PRODUTO E DESIGN VISUAL ARQ computação gráfica I Prof.

FICHA 1 QUAL É A INFLUÊNCIA DO SOL? 50:00. Nível aconselhado. Resultados pretendidos de aprendizagem. Questão-Problema. Materiais. 4.

SEL-0339 Introdução à Visão Computacional. Aula 3 Processamento de Imagens Coloridas

Introdução ao Processamento e Síntese de imagens Rendering 2016

INTRODUÇÃO AO DESENVOLVIMENTO WEB. PROFª. M.Sc. JULIANA H Q BENACCHIO

Superfícies Transparentes Planas e Esféricas

Cap 23 - Ótica Geométrica

Computação Gráfica 3D Studio Max Prof.: Luiz Gonzaga Damasceno

Sejam Bem Vindas!!! Elaborado pela Diretora Valéria Segis

A terceira dimensão. Modelagem tridimensional Elaboração tridimensional Realidade virtual

Então, como saber se uma cor que esteja sendo vista na tela será obtida com a mesma aparência na impressão? É aí que entram os modos de cor.

Computação Gráfica - 13

Circuito CELEPAR de Software Livre 2010 GIMP Editor de Imagens. CELEPAR Companhia de Informática do Paraná.

SIMULAÇÃO DA ATIVIDADE ELETROFISIOLÓGICA DE NEURÔNIOS

Renderização Fácil com o DataCAD

Física B Extensivo V. 1

Como trabalhar com a ferramenta Preenchimento de malha

Tarefa 03 Professor Bernadelli

Exercícios Práticos HTML5 + CSS3. Profa. Flávia Pereira de Carvalho

Usando 123D: Led e Protoboard

10 PROBLEMAS + COMUNS NO V-RAY E COMO CORRIGI-LOS. Problemas ou Erros?

5.2. Clarão em degradê Clarão em degradê. 5. Filtros de luz e sombra

Introdução às Ciências Físicas Módulo 1 Aula 1

PROF. DANILO PRINCÍPIOS DA ÓTICA GEOMÉTRICA TERCEIRO ANO 13/02/2016 FOLHA 03

Tutorial Joia Headband

Computação Gráfica - 13

Modelo RGB - Aplicações

A proteção do dedo opositor deve ser feita com duas linhas curvas, que com um Loft ou Sweep virem uma curva mais grossa.

Processamento Digital de Imagens. Cor

Jorge Gustavo Bandeira dos Santos. Unidade: 3 de março de 2013

Exemplos Práticos HTML5 + CSS3. Profa. Flávia Pereira de Carvalho

Para começar esse passo a passo, temos que falar primeiramente sobre os materiais usados na produção dessa tela:

GUIA DE DIGITALIZAÇÃO ÓTIMA

Esta figura ilustra o fenômeno óptico da

4 Iluminando uma cena

Colégio Santa Dorotéia

A terceira dimensão. A terceira dimensão. Modelagem tridimensional. A terceira dimensão Wilson de Pádua Paula Filho

Quarto projeto computacional (data de entrega: 05/06/17)

Se você estiver usando fontes carregadas, verifique se elas são suportadas pela impressora, pelo computador host e pelo programa.

CRIAR ILUSTRAÇA O DE ESPAÇO COM PLANETAS

2 - Como inserir a esfera que corresponde ao globo ocular.

COMPORTAMENTO ESPECTRAL DE ALVOS

PROCESSAMENTO DE IMAGENS COLORIDAS

Fundamentos da Computação Gráfica

Campo Magnético da Terra

PRINCÍPIOS DA ÓPTICA. Professor Paulo Christakis, M.Sc. 10/10/2016 1

Sistemas Multimídia Aula 3 VRML

Materiais e UVW Map Renderizar com Rhino parte #03

(A) h = 16,2m; x = 18,0m (B) h = 16,2m; x = 9,0m (C) h = 8,1m; x = 9,0m (D) h = 10,0m; x = 18,0m (E) Nenhuma das alternativas anteriores.

CRIE UMA BANCADA EM 3D E ATRIBUA MATERIAIS

Tarefa 01 Professor Bernadelli

Introdução: Neste jogo você deve orientar o grande peixe faminto e tentar comer todas as presas que estão nadando pelo mar.

1º bimestre Sequência didática 1

Tolerância geométrica Tolerâncias de forma

CEDERJ - CENTRO DE EDUCAÇÃO SUPERIOR A DISTÂNCIA DO ESTADO DO RIO DE JANEIRO

EXPERIMENTO 4: SUPERFÍCIES EQUIPOTENCIAIS

Transcrição:

8. Cores e texturas A textura de um objeto é uma importante matéria a ser estudada no sentido de aumentar o grau de realismo de uma cena. Neste capítulo estudaremos algumas maneiras de alterar a aparência de objetos através da textura e das cores. Acabamentos Uma das principais habilidades de um ray-tracer é adicionar efeitos de acabamento às superfície. Como um brilho, por exemplo. Digite o programa seguinte: #include "colors.inc" camera { location < 0, 2, -3> look_at < 0, 1, 2> sphere { <0, 1, 2>, 2 texture { pigment { color Yellow finish { phong 1 // esta linha define o acabamento light_source { < 2, 4, -3> color White Gere a imagem e veja o resultado. O comando phong adiciona ao objeto um brilho da mesma cor da luz incidente. Este pequeno efeito dá mais credibilidade à cena, deixando os objetos mais suaves e brilhantes. Valores diferentes mudam o quanto o efeito phong é aplicado. Bumps Este efeito gera irregularidades suaves na superfície do objeto que afetam a maneira como a luz é refletida. Assim, usaremos comandos que afetam diretamente a normal. Substitua a definição da esfera por: sphere { <0, 1, 2>, 2 texture { pigment { color Yellow normal { bumps 0.4 scale 0.2 finish { phong 1 O POV modificará a normal para efeitos de reflexão com bumps de profundidade 0.4 e escala 0.2. Por default, os bumps têm raio 1, o que seria muito grande para nossa esfera, por isso usamos scale com uma intensidade 0.2. 31

Padrões de cores Exemplo de uma esfera normal e com a aplicação de bumps. Não é necessário que um objeto tenha uma única cor. Podem ser criados padrões tão complexos quanto se queira. Por exemplo: 32

sphere { <0, 1, 2>, 2 texture { pigment { wood color_map { [0.0 color DarkTan] [0.9 color DarkBrown] [1.0 color VeryDarkBrown] turbulence 0.05 scale <0.2, 0.3, 1> finish { phong 1 A declaração wood especifica um padrão de anéis concêntricos como os anéis de madeira. O color_map especifica que a cor da madeira deve variar de DarkTan para DarkBrown nos primeiros 90% dos detalhes e de DarkBrown para VeryDarkBrown nos 10% restantes. A turbulência modifica o desenho padronizado, de forma a deixá-las mais reais, e o fator de escala ajusta o tamanho do mapa a ser aplicado à superfície. Texturas pré-definidas Uma esfera de madeira envernizada. O POV oferece texturas pré-definidas bem sofisticadas, estando todas nos arquivos include. Como exemplo, mude a definição da esfera para 33

sphere { <0, 1, 2>, 2 texture { pigment { DMFWood4 // predefinida em textures.inc scale 4 finish { Shiny // predefinida em finish.inc Note que o pigment DMFWood4 foi aumentado pelo fator de escala. Pode-se usar um identificador de textura que defina todas as propriedades de uma vez: sphere { <0, 1, 2>, 2 texture { PinkAlabaster Criação de texturas Se você não se satisfaz com texturas padrão, então deve criar suas próprias texturas. O POV oferece comandos especiais para criar todas os detalhes necessários da sua cena. Padrões de Pigmentos e Normais Há comandos que apenas afetam a normal e outros que afetam a pigmentação. Assim, a sintaxe dos comandos será normal {... ou 34

pigment {... Pigments Cada superfície deve ter uma cor, que recebe o nome de pigmento, o que não significa que tem uma única cor. O pigmento pode ser um padrão de cores, uma lista de cores ou até mesmo um mapa de cores. Os pigmentos podem ser sobrepostos (desde que tenham detalhes transparentes), o que torna muito interessante seu uso. Vejamos como se usam os pigmentos, através do seguinte exemplo: #include "colors.inc" camera{ location <1, 1, -7> look_at 0 angle 36 light_source { <1000, 1000, -1000> White plane { y, -1.5 pigment { checker Green, White sphere { <0,0,0>, 1 pigment { Red Vemos uma esfera vermelha sobre um plano xadrez verde e branco. Esta esfera será nossa cobaia de texturas. Pigmentos como listas de cores Experimente trocar o pigmento do plano por: pigment { hexagon Green, White, Yellow Isso resulta num padrão hexagonal tricolor. Agora experimente pigment { brick Gray75, Red rotate -90*x scale.25 Como este padrão é normalmente usado para superfícies verticais tivemos que aplicar uma rotação em torno do eixo x para que ele ficasse no chão (horizontal). 35

Exemplo de aplicação de padrão de pigmentos sobre um plano horizontal. Pigmentos e Padrões Apliquemos sobre a esfera um padrão e um mapa de cores composto de três cores. Troque a declaração pigment por: 36

pigment { gradient x color_map { [0.00 color Red] [0.33 color Blue] [0.66 color Yellow] [1.00 color Red] Isso resulta num interessante padrão de listras verticais. Mude o gradient para a direção y. As listras ficam orientadas na horizontal. Se a direção escolhida for z, as listras se comportarão como anéis concêntricos. Volte a direção do gradiente para x e adicione o seguinte à declaração pigmento: pigment { gradient x color_map { [0.00 color Red] [0.33 color Blue] [0.66 color Yellow] [1.00 color Red] rotate -45*z // linha a adicionar As barras verticais estão inclinadas de 45 graus. Todos os padrões podem ser rodados, diminuídos ou aumentados e reposicionados desta maneira. 37

Experimentemos agora padrões diferentes. Tente (uma de cada vez!) as seguintes declarações no lugar de gradient x : bozo marble agata granite leopard spotted wood Cada cena mostrará um padrão diferente. Mas para ser realmente perfeito, cada padrão exige um certo número de parâmetros modificadores. Modificadores de Padrões Alguns modificadores são apresentados nesta sessão. Para começar, volte o exemplo anterior para o padrão bozo, e em seguida adicione o seguinte: 38

pigment { bozo frequency 3 // <- adicionar esta linha color_map { [0.00 color Red] [0.33 color Blue] [0.66 color Yellow] [1.00 color Red] rotate -45*z O modificador frequency especifica o número de vezes que o mapa de cor é repetido por unidade de tamanho. Por isso o padrão bozo que havíamos visto anteriormente tem mais faixas. Agora mude o padrão para marble. Este padrão é muito parecido com o gradient, mas pode ser modificado com o modificador turbulence Mude a declaração frequency 3 para turbulence 1 e veja o que acontece. Experimente colocar frequency 3 junto com turbulence 1. A ordem destes modificadores afeta o resultado. Experimente! O modificador turbulence tem seus próprios modificadores: ômega, lambda e octaves. Tente o seguinte: 39

pigment { marble turbulence 0.5 lambda 1.5 ômega 0.8 octaves 5 frequency 3 color_map { [0.00 color Red] [0.33 color Blue] [0.66 color Yellow] [1.00 color Red] rotate 45*z O resultado mostra que o padrão mudou consideravelmente. Experimente outros valores de turbulence, lambda, ômega, e octaves. Pigmentos transparentes e sobreposição de texturas Pigmentos são descritos por valores numéricos que correspondem aos valores rgb da cor a ser usada. Além dos valores rgb pode ser adicionado um valor filter que dá a transparência do pigmento. Um valor filter 1 significa transparência total, para a cor especificada no pigmento. Uma forma de se especifica um pigmento vermelho transparente seria rgbf <1,0,0,1> Um outro tipo de transparência é chamada de transmitância, ou transmit. Ela é diferente de um filtro no sentido de que a luz passa totalmente por este tipo de pigmento. A transmitância pode ser especificada por 40

rgbt<1, 0, 0, 1> Os pigmentos transparentes podem ser usados para criar texturas sobrepostas, ou camadas de textura. Vejamos como isso funciona. No exemplo anterior adicione a declaração #declare TerraSeca = texture { pigment { agata turbulence 1 lambda 1.5 ômega.8 octaves 8 color_map { [0.00 color rgb <.5,.25,.15>] [0.33 color rgb <.1,.5,.4>] [0.86 color rgb <.6,.3,.1>] [1.00 color rgb <.5,.25,.15>] Esta textura será a terra seca. Agora adicione os oceanos com #declare Oceanos = texture { pigment { bozo turbulence.5 lambda 2 color_map { [0.00, 0.33 color rgb <0, 0, 1> color rgb <0, 0, 1>] [0.33, 0.66 color rgbf <1, 1, 1, 1> color rgbf <1, 1, 1, 1>] [0.66, 1.00 color rgb <0, 0, 1> color rgb <0, 0, 1>] Agora declare uma textura para simular a atmosfera e algumas nuvens: 41

#declare Nuvens = texture { pigment { agata turbulence 1 lambda 2 frequency 2 color_map { [0.0 color rgbf <1, 1, 1, 1>] [0.5 color rgbf <1, 1, 1,.35>] [1.0 color rgbf <1, 1, 1, 1>] E agora aplique estas texturas na nossa esfera: sphere { <0,0,0>, 1 texture { TerraSeca texture { Oceanos texture { Nuvens Gere a cena e veja uma razoável modelagem de um planeta. Para melhorar vamos modificar um pouco a aparência das nuvens. 42

Mapas de pigmentos A melhor maneira de se compreender como se aplica este conceito é através de um exemplo. Adicione as seguintes declarações antes das outras declarações no programa: 43

#declare Clouds1 = pigment { bozo turbulence 1 color_map { [0.0 color White filter 1] [0.5 color White] [1.0 color White filter 1] #declare Clouds2 = pigment { agata turbulence 1 color_map { [0.0 color White filter 1] [0.5 color White] [1.0 color White filter 1] #declare Clouds3 = pigment { marble turbulence 1 color_map { [0.0 color White filter 1] [0.5 color White] [1.0 color White filter 1] #declare Clouds4 = pigment { granite turbulence 1 color_map { [0.0 color White filter 1] [0.5 color White] [1.0 color White filter 1] Agora use este pigmentos nas nuvens do nosso planeta. Troque a declaração de Nuvens por: 44

#declare Nuvens = texture { pigment { gradient y pigment_map { [0.00 Clouds1] [0.25 Clouds2] [0.50 Clouds3] [0.75 Clouds4] [1.00 Clouds1] Como resultado teremos uma simulação meteorológica, com tipos de clima diferentes para cada latitude. 45

Exercícios 1. Apartir do objeto descrito a seguir sphere { <0, 1, 2>, 2 texture { pigment { color Yellow normal { bumps 0.4 scale 0.2 finish { phong 1 faça experiências com os valores de bumps e phong. 2. O modificador de padrão "marble" permite criar texturas semelhantes às do mármore. Atuando sobre os valores de turbulence, octaves e color_map faça experimentos gerando vários mármores diferentes. 3. Considere o seguinte trecho de uma cena: sphere { <0,0,0>, 1 pigment { Gray normal { gradient y frequency 3 turbulence.5 normal_map { [0.00 granite] [0.25 spotted turbulence.35] [0.50 marble turbulence.5] [0.75 bozo turbulence.25] [1.00 granite] Gere a cena e descreva o efeito do uso do modificador normal_map. 46

9. Efeitos de superfície Os objetos vistos até aqui têm superfícies bem lisas, o que não é muito realista. Existem várias formas de perturbar a perfeição de uma superfície, todas elas via manipulação do vetor normal. A normal é um vetor que fica perpendicular à cada ponto de uma superfície, e forma como a luz se comporta depende deste vetor. Operações básicas com o vetor normal Coloque comentários ( // ) na declaração do planeta e, no fim do programa, crie uma nova esfera de cor simples: sphere { <0,0,0>, 1 pigment { Gray75 normal { bumps 1 scale.2 Note que foi adicionada uma declaração normal. Veja o resultado desta cena. Em seguida substitua a palavra bumps por dents wrinkles ripples waves Todos estes parâmetros modificam a normal, com uma dependência do valor que vem em seguida e também do parâmetro scale. Para deixar a coisa mais interessante, modifique a normal do plano: plane { y, -1.5 pigment { color rgb <.65,.45,.35> normal { dents.75 scale.25 Sobreposição de modificadores da normal Os efeitos sobre a normal podem ser sobrepostos como no caso de pigmentos, com efeitos bem interessantes. Modifique a esfera segundo as linhas a seguir: sphere { <0,0,0>, 1 pigment { Gray75 normal { radial frequency 10 normal { gradient y scale.2 Veja o resultado. Note que a textura da esfera não é nem radial nem um gradiente. Mas existem outras formas de manipular a normal, como o uso de mapas de normal. Siga o exemplo a seguir: 47

sphere { <0,0,0>, 1 pigment { Gray75 normal { gradient y frequency 3 turbulence.5 normal_map { [0.00 granite] [0.25 spotted turbulence.35] [0.50 marble turbulence.5] [0.75 bozo turbulence.25] [1.00 granite] Como resultado a esfera fica com uma superfície bem irregular. O efeito do gradiente separa as normais em faixas, mas estas apresentam-se irregulares, com uma aparência caótica. Agora, suponha que queiramos aplicar à normal o mesmo padrão que usamos para criar os oceanos e continentes do nosso planetinha. Qual seria o resultado? Para melhor acompanhar o processo, coloquemos as duas esferas uma do lado da outra para poder comparar os resultados. Tire os comentários da declaração do planeta e introduza as seguintes alterações: sphere { <0,0,0>, 1 texture { TerraSeca texture { Oceanos //texture { Nuvens // <- ponha comentários nesta linha translate -x // <- adicione este deslocamento Agora mude a esfera cinza para 48

sphere { <0,0,0>, 1 pigment { Gray75 normal { bozo turbulence.5 lambda 2 normal_map { [0.4 dents.15 scale.01] [0.6 agata turbulence 1] [1.0 dents.15 scale.01] translate x // <- adicione esta linha Gere a imagem e verifique se os padrões se assemelham. Em seguida comente a esfera cinza e adicione as declarações da normal referentes aos continentes ao planeta. Retire também o comando de deslocamento, para que o planeta fique centralizado. 49

#declare TerraSeca = texture { pigment { agata turbulence 1 lambda 1.5 ômega.8 octaves 8 color_map { [0.00 color rgb <.5,.25,.15>] [0.33 color rgb <.1,.5,.4>] [0.86 color rgb <.6,.3,.1>] [1.00 color rgb <.5,.25,.15>] normal { bozo turbulence.5 lambda 2 normal_map { [0.4 dents.15 scale.01] [0.6 agata turbulence 1] [1.0 dents.15 scale.01] Verifique o resultado. Os continentes têm agora um relevo, enquanto os oceanos continuam lisos. Coloque agora as nuvens de volta e seu planeta está pronto. Acabamentos O acabamento afeta o resultado final da aparência de uma superfície. Ele determina se há brilho e reflexão, ou efeitos devidos ao material, como por exemplo metais, rocha ou chocolate. Também pode especificar o que acontece com a luz quando ela atravessa superfícies transparentes. As propriedades do acabamento são: 50

ambient diffuse brilliance phong specular metallic reflection refraction caustics attenuation crand iridescence Ambient A declaração ambient é usada para simular a luz que é espalhada ao redor dos objetos, e que não vem diretamente de uma fonte de luz. O comando diffuse determina quanto da luz que é vista vem de uma fonte ou do ambiente. Estes dois comandos são usados em conjunto para controlar os efeitos da luz ambiente. Crie um programa com os seguintes objetos: plane {y,-1.5 pigment {checker Green, White sphere { <0,0,0>, 1 pigment {Gray75 finish { ambient.2 diffuse.6 Os valores usados para ambient e diffuse são os default. Veja o resultado desta imagem e em seguida introduza as modificações seguintes: ambient 0 diffuse 0 A esfera ficou preta porque especificamos que nem a luz ambiente nem a luz da fonte são refletidas pela esfera. Agora mude diffuse para 0.6. Agora vemos a parte da superfície da esfera iluminada pela fonte de luz, mas a parte não iluminada ainda está totalmente escura. Mude diffuse para 0.3 e ambient para 0.3. A esfera perdeu um pouco de volume, parecendo um objeto em duas dimensões. Isso porque especificamos muita luz ambiente e pouca luz da fonte. Os valores default de diffuse e ambient dão resultados bons, e podem servir de ponto de partida para a busca de outros valores. Vejamos como se comportam estes acabamentos com superfícies transparentes: 51

sphere { <0,0,0>, 1 pigment { White filter 1 finish { ambient 0 diffuse 0 reflection.25 refraction 1 ior 1.33 specular 1 roughness.001 Isso lembra vidro. Muito pouco da superfície é vista porque ela transmite ou reflete praticamente toda a luz que a alcança. Um objeto totalmente iluminado pode ser obtido com ambient 1 e diffuse 0. Façamos uma experiência: sphere { <0,0,0>, 1 pigment { White finish { ambient 1 diffuse 0 O resultado é uma esfera completamente branca, sem brilhos ou sombras. Brilho O comando phong especifica o quanto uma superfície reflete a luz da fonte. Experimente os comandos a seguir: 52

sphere { <0,0,0>, 1 pigment { Gray50 finish { ambient.2 diffuse.6 phong.75 phong_size 25 Veja o resultado. Agora mude phong_size para 150. Isso dá para a esfera uma aparência mais dura. Existe um outro tipo de brilho, obtido pelos comandos specular e roughness. Seu uso é muito parecido com phong e phong_size. Tentemos um exemplo: sphere { <0,0,0>, 1 pigment { Gray50 finish { ambient.2 diffuse.6 specular.75 roughness.1 Reflexão e efeitos metálicos Pode-se adicionar mais poder de reflexão a uma superfície com o comando reflection: sphere { <0,0,0>, 1 pigment { Gray50 finish { ambient.2 diffuse.6 specular.75 roughness.001 reflection.5 Note que nossa esfera agora reflete o padrão xadrez verde e branco do plano embaixo, mas o cinza da esfera parece um pouco fora de propósito. Esta é uma boa ocasião para diminuir o valor de 53

diffuse. Geralmente, quanto maior a reflexão, menor deve ser o valor de diffuse. Experimente diffuse 0.3 e ambient 0.1. As linhas a seguir deixam a esfera bem brilhante: sphere { <0,0,0>, 1 pigment { BrightGold finish { ambient.1 diffuse.1 specular 1 roughness.001 reflection.75 O resultado é quase bom, mas há algo errado com o brilho. Para que a superfície fique mais próxima de um metal use a palavra metallic. Junte esta palavra e faça um teste: sphere { <0,0,0>, 1 pigment { BrightGold finish { ambient.1 diffuse.1 specular 1 roughness.001 reflection.75 metallic Refração Objetos transparentes tem a propriedade de desviar a luz, como o que ocorre em lentes por exemplo. Esta propriedade recebe o nome de refração. No POV, o comando refraction pode ter valores 1 ou 0, para indicar se a refração vai ser considerada ou não. O grau de refração é dado pelo comando ior. Um ior de 1.33 imita a refração da água, 1.45 para vidro e 1.75 para diamante. Vejamos seu resultado sobre a esfera de vidro: 54

sphere { <0,0,0>, 1 pigment { White filter 1 finish { ambient 0 diffuse 0 reflection.25 refraction 1 ior 1.45 specular 1 roughness.001 Note como o plano visto através da esfera foi distorcido. Experimente outros valores de ior, por exemplo 1.25 e 1.75. Atenuação da luz Objetos transparentes também tem a propriedade de atenuar a luz que passa através. Este efeito é realizado com o uso de dois comandos: fade_distance e fade_power. Teste-os com o exemplo: sphere { <0,0,0>, 1 pigment { White filter 1 finish { ambient.1 diffuse.1 reflection.15 refraction 1 ior 1.45 specular 1 roughness.001 fade_distance 5 fade_power 1 A esfera agora tem uma aparência um pouco enevoada, como se a luz não conseguisse atravessá-la completamente. Note que a sombra da esfera não foi alterada. Afinal, se há refração da luz no interior da esfera, de algum modo isso deve refletir-se na sua sombra. Este problema é resolvido com o comando caustics 1 à declaração finish. Veja o resultado. 55

Iridescência Iridescencia é algo semelhante com o que vemos quando a luz do sol se reflete numa mancha de óleo, algo parecido com um arco-íris localizado. No POV, a palavra para este efeito é irid, seguida de três valores: amount, thickness e turbulence. Verifique o resultado das linhas abaixo: sphere { <0,0,0>, 1 pigment { White filter 1 finish { ambient.1 diffuse.1 reflection.2 refraction 1 ior 1.5 specular 1 roughness.001 fade_distance 5 fade_power 1 caustics 1 irid { 0.35 thickness.5 turbulence.5 Experimente variar os valores de amount, thickness e turbulence e veja como estes parâmetros afetam a iridescencia. 56

Exercícios 1. Gere uma cena com quatro esferas, cada uma com o modificador de normal dents, wrinkles, ripples e waves. Comente o resultado. 2. Na mesma cena do exercício anterior introduza para cada esfera a cláusula finish com valores de ambient 0, 0.25, 0.50, 0.75 e 1. 3. Use o objeto "lente furada", descrito no capítulo sobre CSG e gere uma cena na qual este objeto é transparente e tem um índice de refração (dica: use os comandos filter, refraction e ior). 4. Gere a cena dada como exemplo no ítem "iridescência" deste capítulo. Quais são os resultados observados quando variam-se os valroes de amount, thickness e turbulence? 57

10. Posicionamento e escolha da câmera virtual Todos as propriedade relativas aos detalhes de como uma cena é vista são descritas no comando câmera. Na sua forma mais simples, este comando se reduz a camera { location vetor look_at vetor onde location é onde a câmera está e look_at é para onde suas lentes estão apontadas. A câmera normalmente está de pé, ou seja, a vertical da imagem coincide com o eixo y. Isso pode ser alterado com a declaração sky: camera { location vetor sky vetor look_at vetor O vetor associado à palavra sky determina o ângulo de inclinação da câmera. A declaração angle dá o ângulo de visão em graus. No exemplo seguinte, a imagem será gerada como se a câmera enxergasse apenas um ângulo de 15 graus a partir da posição <0,2,-10> : camera{ location <0, 2, -10> look_at 0 angle 15 Com esta declaração pode-se criar efeitos de uma lente olho-de-peixe, com um ângulo de 180 graus, por exemplo. 58

Exercícios 1. Gere a cena do planetinha posicionando a câmera de forma a obter as seguintes vistas: sobre o equador, do pólo norte, com metade do planeta iluminadoe de um obsrvador sobrevoando a superfície do planeta, mas abaixo das nuvens. 2. Faça um programa em linguagem C que gere várias cláusulas câmera, dadas duas lista de pontos, uma com os valores location e outra com os valores look_at. 59