tutorial pov-ray tutorial pov-ray - fct.unesp.br · o vetor indica a posição da fonte de luz, que...

10
Programa de Pós-Graduação em Ciências Cartográficas Glaucia Gabriel Sass Tutorial Pov-Ray PRESIDENTE PRUDENTE 2010 Programa de Pós-Graduação em Ciências Cartográficas Glaucia Gabriel Sass Tutorial Pov-Ray Trabalho apresentado à disciplina de Computação Gráfica como requisito parcial para aprovação. Prof. Dr. Julio Kiyoshi Hasegawa PRESIDENTE PRUDENTE 2010 Disciplina de Computação Gráfica: Tutorial POV-Ray 3 INDÍCE DE ILUSTRAÇÕES Figura 1: Sistema de coordenada usada pelo POV-Ray (POV-RAY, 2010). ................................... 7 Figura2: Imagem gerada pelo exe01.pov .......................................................................................... 10 Quadro 1: Dicas para o POV-Ray...................................................................................................... 10 Quadro 2: Orientação para o código do exe02.pov. ......................................................................... 11 Figura 3: Imagem gerada pelo exe02.pov......................................................................................... 12 Quadro 3: Forma geral da declaração de pigmentação .................................................................... 14 Quadro 4: Orientação para o código do exe03.pov. ......................................................................... 15 Figura 4: Imagens com alteração do gradiente: <0,1,0>; <1,1,1>; <1,0,0> ................................... 15 Figura 5: Imagem com aplicação de turbulência.............................................................................. 16 Figura 6: Imagem com pigmentação mármore. ................................................................................ 16 Figura 7: Imagem com pigmentação mármore com turbulência. .................................................... 16 Figura 8: Imagem com pigmentação ágata. ...................................................................................... 16 Figura 9: Imagem com pigmentação palhaço................................................................................... 16 Figura 10: Imagem com pigmentação manchada............................................................................. 16 Figura 11: Imagem com pigmentação granito. ................................................................................. 16 Figura 12: Imagem com pigmentação leopardo. .............................................................................. 17 Figura 13: Imagem com pigmentação madeira. ............................................................................... 17 Figura 14: Imagem com pigmentação tabuleiro de xadrez.............................................................. 17 Figura 15: Imagem com pigmentação tabuleiro de xadrez e turbulência. ...................................... 17 Figura 16: Imagem com pigmentação hexágono.............................................................................. 17 Quadro 5: Sintaxe do mapeamento de imagem. ............................................................................... 17 Figura 17: Cena com o mapeamento de imagem, exe04.pov. ......................................................... 18 Figura 18: Cena usando polígonos. ................................................................................................... 18 Quadro 6: Forma geral da declaração de finalização ....................................................................... 19 Figura 20: Imagem com finish {brilliance 5}na esfera e finish {crand 0.6} no cone. .............................................................................................................................................................. 19 Figura 21: Imagem com finish {phong 0.9}na esfera e finish {phong 1 phong_size 2} no cone.............................................................................................................................. 20 Disciplina de Computação Gráfica: Tutorial POV-Ray 4 Figura 22: Imagem com finish { specular 0.5 roughness 0.75} na esfera e finish { phong 1 reflection 0.3} no cone. .............................................................................. 21 Figura 23: Imagem com normal { bumps 1 scale 1/4} na esfera e normal { dents 1 scale 1/4 } no cone............................................................................................................... 23 Figura 24: Imagem com normal { waves 1.0 scale 1/4} na esfera, normal { ripples 1.0 scale 1/4 } no cone e normal {wrinkles 1 scale 1/4} na esfera...... 23 Quadro 7: Dica de texture.inc. ........................................................................................................... 23 Quadro 8: Sintaxe para CSG.............................................................................................................. 24 Figura 25: Exemplo matemático da união (HELP, 2003)................................................................ 24 Quadro 9: Orientação para o código do exe05.pov. ......................................................................... 24 Figura 26: Imagem gerada pelo exe05.pov, união. .......................................................................... 25 Quadro 10: Dica de textura. ............................................................................................................... 25 Figura 27: Exemplo matemático da junção (HELP, 2003).............................................................. 25 Figura 28: Imagem gerada pelo exe05.pov, junção.......................................................................... 26 Quadro 11: Dica: diferença entre junção e união. ............................................................................ 26 Quadro 12: Dica: informação sobre RGBF. ..................................................................................... 26 Figura 29: Exemplo matemático da diferença (HELP, 2003) ......................................................... 26 Figura 30: Diferença entre união e diferença (à esquerda há uma união entre os objetos e à esquerda uma diferença).Imagem gerada pelo exe05.pov.............................................................................. 27 Figura 31: Exemplo matemático da interseção (HELP, 2003)........................................................ 27 Figura 32: Diferença entre união e intersecção (à esquerda há uma união entre os objetos e à direita uma intersecção). Imagem gerada pelo exe05.pov.............................................................................. 28 Quadro 13: Orientação para o código do cena.pov. ......................................................................... 31 Figura 33: Imagem do exercício criando uma cena. ........................................................................ 34 Figura 34:Pebbles by Jonathan Hunt ................................................................................................. 36 Figura 35:Bonsais by Jaime Vives Piqueres..................................................................................... 36 Figura 36:Patio by Jaime Vives Piqueres ......................................................................................... 36 Figura 37:Glasses by Gilles Tran ...................................................................................................... 36 Figura 38:The Kitchen by Jaime Vives Piqueres ............................................................................. 36 Figura 39:Car Study by René Bui ..................................................................................................... 36 Figura 40:The Dark Side of the Trees by Gilles Tran...................................................................... 37

Upload: buithu

Post on 09-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tutorial Pov-Ray Tutorial Pov-Ray - fct.unesp.br · O vetor indica a posição da fonte de luz, que consiste em um pequeno ponto invisível que emite luz. light_source {

Programa de Pós-Graduação em Ciências Cartográficas

Glaucia Gabriel Sass

Tutorial Pov-Ray

PRESIDENTE PRUDENTE

2010

Programa de Pós-Graduação em Ciências Cartográficas

Glaucia Gabriel Sass

Tutorial Pov-Ray

Trabalho apresentado à disciplina de

Computação Gráfica como requisito parcial

para aprovação.

Prof. Dr. Julio Kiyoshi Hasegawa

PRESIDENTE PRUDENTE

2010

Disciplina de Computação Gráfica: Tutorial POV-Ray 3

INDÍCE DE ILUSTRAÇÕES

Figura 1: Sistema de coordenada usada pelo POV-Ray (POV-RAY, 2010). ................................... 7

Figura2: Imagem gerada pelo exe01.pov .......................................................................................... 10

Quadro 1: Dicas para o POV-Ray ...................................................................................................... 10

Quadro 2: Orientação para o código do exe02.pov. ......................................................................... 11

Figura 3: Imagem gerada pelo exe02.pov ......................................................................................... 12

Quadro 3: Forma geral da declaração de pigmentação .................................................................... 14

Quadro 4: Orientação para o código do exe03.pov. ......................................................................... 15

Figura 4: Imagens com alteração do gradiente: <0,1,0>; <1,1,1>; <1,0,0> ................................... 15

Figura 5: Imagem com aplicação de turbulência. ............................................................................. 16

Figura 6: Imagem com pigmentação mármore. ................................................................................ 16

Figura 7: Imagem com pigmentação mármore com turbulência. .................................................... 16

Figura 8: Imagem com pigmentação ágata. ...................................................................................... 16

Figura 9: Imagem com pigmentação palhaço. .................................................................................. 16

Figura 10: Imagem com pigmentação manchada. ............................................................................ 16

Figura 11: Imagem com pigmentação granito. ................................................................................. 16

Figura 12: Imagem com pigmentação leopardo. .............................................................................. 17

Figura 13: Imagem com pigmentação madeira. ............................................................................... 17

Figura 14: Imagem com pigmentação tabuleiro de xadrez .............................................................. 17

Figura 15: Imagem com pigmentação tabuleiro de xadrez e turbulência. ...................................... 17

Figura 16: Imagem com pigmentação hexágono.............................................................................. 17

Quadro 5: Sintaxe do mapeamento de imagem. ............................................................................... 17

Figura 17: Cena com o mapeamento de imagem, exe04.pov. ......................................................... 18

Figura 18: Cena usando polígonos. ................................................................................................... 18

Quadro 6: Forma geral da declaração de finalização ....................................................................... 19

Figura 20: Imagem com finish {brilliance 5}na esfera e finish {crand 0.6}

no cone. .............................................................................................................................................................. 19

Figura 21: Imagem com finish {phong 0.9}na esfera e finish {phong 1

phong_size 2} no cone.............................................................................................................................. 20

Disciplina de Computação Gráfica: Tutorial POV-Ray 4

Figura 22: Imagem com finish { specular 0.5 roughness 0.75} na esfera e

finish { phong 1 reflection 0.3} no cone. .............................................................................. 21

Figura 23: Imagem com normal { bumps 1 scale 1/4} na esfera e normal {

dents 1 scale 1/4 } no cone............................................................................................................... 23

Figura 24: Imagem com normal { waves 1.0 scale 1/4} na esfera, normal {

ripples 1.0 scale 1/4 } no cone e normal {wrinkles 1 scale 1/4} na esfera...... 23

Quadro 7: Dica de texture.inc. ........................................................................................................... 23

Quadro 8: Sintaxe para CSG.............................................................................................................. 24

Figura 25: Exemplo matemático da união (HELP, 2003)................................................................ 24

Quadro 9: Orientação para o código do exe05.pov. ......................................................................... 24

Figura 26: Imagem gerada pelo exe05.pov, união. .......................................................................... 25

Quadro 10: Dica de textura. ............................................................................................................... 25

Figura 27: Exemplo matemático da junção (HELP, 2003) .............................................................. 25

Figura 28: Imagem gerada pelo exe05.pov, junção.......................................................................... 26

Quadro 11: Dica: diferença entre junção e união. ............................................................................ 26

Quadro 12: Dica: informação sobre RGBF. ..................................................................................... 26

Figura 29: Exemplo matemático da diferença (HELP, 2003) ......................................................... 26

Figura 30: Diferença entre união e diferença (à esquerda há uma união entre os objetos e à

esquerda uma diferença).Imagem gerada pelo exe05.pov. ............................................................................. 27

Figura 31: Exemplo matemático da interseção (HELP, 2003) ........................................................ 27

Figura 32: Diferença entre união e intersecção (à esquerda há uma união entre os objetos e à

direita uma intersecção). Imagem gerada pelo exe05.pov. ............................................................................. 28

Quadro 13: Orientação para o código do cena.pov. ......................................................................... 31

Figura 33: Imagem do exercício criando uma cena. ........................................................................ 34

Figura 34:Pebbles by Jonathan Hunt ................................................................................................. 36

Figura 35:Bonsais by Jaime Vives Piqueres ..................................................................................... 36

Figura 36:Patio by Jaime Vives Piqueres ......................................................................................... 36

Figura 37:Glasses by Gilles Tran ...................................................................................................... 36

Figura 38:The Kitchen by Jaime Vives Piqueres ............................................................................. 36

Figura 39:Car Study by René Bui ..................................................................................................... 36

Figura 40:The Dark Side of the Trees by Gilles Tran ...................................................................... 37

Page 2: Tutorial Pov-Ray Tutorial Pov-Ray - fct.unesp.br · O vetor indica a posição da fonte de luz, que consiste em um pequeno ponto invisível que emite luz. light_source {

Disciplina de Computação Gráfica: Tutorial POV-Ray 5

Figura 41:Forgotten Neighbourhood by Hildur Kolbrun Andresdottir........................................... 37

Figura 42:The Wet Bird by Gilles Tran ............................................................................................ 37

Figura 43:The Cool Cows by Gilles Tran ......................................................................................... 37

Disciplina de Computação Gráfica: Tutorial POV-Ray 6

SUMÁRIO

1 INTRODUÇÃO ............................................................................................................. 7

2 INICIANDO O POV-RAY ............................................................................................ 8

3 OBJETOS 3D .............................................................................................................. 11

3.1 Caixa........................................................................................................................... 11

3.2 Cone ........................................................................................................................... 11

3.3 Cilindro ...................................................................................................................... 12

3.4 Torus........................................................................................................................... 12

4 TEXTURA ................................................................................................................... 13

4.1 Atributo: pigmentação............................................................................................... 14

4.2 Atributo: finalização.................................................................................................. 18

4.3 Atributo: normal ........................................................................................................ 22

5 CSG ........................................................................................................................... 24

5.1 União .......................................................................................................................... 24

5.2 Junção ......................................................................................................................... 25

5.3 Diferença .................................................................................................................... 26

5.4 Interseção ................................................................................................................... 27

6 ILUMINAÇÃO............................................................................................................ 29

6.1 Foco de luz ................................................................................................................. 29

6.2 Área luminosa ............................................................................................................ 30

7 LINGUAGEM ............................................................................................................. 31

8 EXERCÍCIO: CRIANDO UMA CENA .................................................................... 33

REFERÊNCIAS .................................................................................................................. 35

ANEXO A – Arte no POV-Ray.......................................................................................... 36

Disciplina de Computação Gráfica: Tutorial POV-Ray 7

1 INTRODUÇÃO

O POV-Ray é um software que usa o algoritmo de ray tracing para gerar

imagens com realismo. Ele está disponível para as plataformas, Microsoft Windows,

Linux e Mac OS. Foi originalmente baseado no DKBTrace, escrito por David Kirk Buck

e Aaron A. Collins. Existem também influências do Polyray, e de contribuição de seu

autor, Alexander Enzmann. O POV-Ray é livre, com seu código-fonte disponível.

Ele consiste em uma linguagem especial para descrição de cenas. É necessário

apenas digitar comandos em um arquivo texto que o POV-Ray lê para gerar a imagem.

Algumas de suas características: suporte para projeção ortográfica e perspectiva;

possibilidade de incluir vários tipos de fontes de luz; radiosidade; primitivas, tais como

cone, cilindro e esfera; técnicas de modelagem mais avançadas, tais como superfície

paramétrica Bèzier, sweep, fractais e CSG; possibilidade de especificar as propriedades

dos materiais incluindo diferentes tipos de texturas.

O POV-Ray utiliza o sistema de coordenadas cartesianas "mão esquerda", isto é,

o eixo z cresce "para dentro da tela do computador". A mão esquerda também é usada

para indicar a direção de rotação. Neste caso, considera-se que a mão envolve o eixo

cartesiano com o dedão apontando para a direção positiva, como mostra a figura abaixo.

A direção dos dedos indica a direção de rotação.

Figura 1: Sistema de coordenada usada pelo POV-Ray (POV-RAY, 2010).

Disciplina de Computação Gráfica: Tutorial POV-Ray 8

2 INICIANDO O POV-RAY

Inicialmente, será descrita a criação de uma cena simples, contendo apenas uma

esfera, para entender o funcionamento do POV-Ray. Abra o programa e comece a

edição de um novo arquivo (clique no ícone New). Inclua as linhas abaixo neste novo

arquivo e salve-o com o nome exe01.pov. É importante salientar que o POV-Ray é case

sensitive, portanto deve-se ter cuidado para digitar os comandos exatamente como eles

aparecem.

#include "colors.inc" #include "stones.inc"

O primeiro include é usado para que seja feita a leitura das definições para as

cores, e o segundo para que seja feita a leitura de uma coleção de texturas de pedras.

Outros includes que aparecem na lista a seguir contêm texturas, formas, vidros, metais e

madeiras pré-definidos. Deve-se incluir apenas os arquivos que realmente serão usados

na composição da cena, pois alguns são muito grandes e podendo consumir memória.

#include "textures.inc" #include "shapes.inc" #include "glass.inc" #include "metals.inc" #include "woods.inc"

O próximo passo consiste em adicionar uma câmera. O comando camera

descreve as informações da câmera em uma cena, que consiste na sua posição e no seu

alvo. Estas informações são passadas por meio de um vetor, que é especificado

colocando-se de três valores numéricos entre "<" e ">", separados por vírgulas.

Portanto, adicione no seu arquivo de descrição da cena (exe01.pov) o comando abaixo.

camera {

location <0, 2, -8> look_at <0, 1, 2> }

Agora basta adicionar os objetos que farão parte da cena. Num primeiro

momento, será incluída uma esfera amarela usando o comando abaixo especificado

(acrescente este comando no final do arquivo exe01.pov). Neste comando, o primeiro

vetor especifica o centro da esfera (x,y,z). Após a vírgula é colocado o raio da esfera,

que é duas unidades neste exemplo. Na seqüência é descrita a aparência da esfera pelo

Page 3: Tutorial Pov-Ray Tutorial Pov-Ray - fct.unesp.br · O vetor indica a posição da fonte de luz, que consiste em um pequeno ponto invisível que emite luz. light_source {

Disciplina de Computação Gráfica: Tutorial POV-Ray 9

comando texture. Com esse comando é possível descrever a cor e as propriedades da

superfície de um objeto. Nesse exemplo está sendo especificada apenas a cor básica,

que é a informação mínima necessária. O brilho e o sombreamento da esfera depende da

luz presente na cena. Como está sendo definida apenas a cor do objeto, ao invés de

especificar como ele deve parecer, este parâmetro é chamado pigment. Existem muitos

padrões de cores pré-definidos que podem ser usados, mas também é possível definir

cores especificas usando a palavra reservada color seguida por Red, Green, Blue, ou

simplesmente rgb (exemplos: color red 1.0 green 0.8 blue 0.8; color rgb <1.0, 0.8,

0.8>).

sphere { <0, 2, 2>, 2 texture { pigment {color White }

} }

Agora é possível gerar a imagem final clicando no botão Run ( ). Observe o

resultado gerado. Para que a imagem pareça 3D falta uma fonte de luz. Se não for criada

uma fonte de luz, a cena fica "no escuro". Para isto, basta adicionar o comando abaixo

no final do arquivo exe01.pov. O vetor indica a posição da fonte de luz, que consiste em

um pequeno ponto invisível que emite luz.

light_source { <2, 4, -3> color White}

Para alterar a cor de fundo da imagem, deve-se utilizar o comando background,

conforme descrito abaixo. O ideal é que este comando seja colocado no início do

arquivo, logo abaixo dos comandos de include.

background { color Blue }

Para que a esfera não fique no ar deve-se colocar um plano.

plane {<0,1,0> 0 pigment { checker Green, Yellow } }

Disciplina de Computação Gráfica: Tutorial POV-Ray 10

Figura2: Imagem gerada pelo exe01.pov

No objeto plane foi usado com o padrão gráfico The Checkered Floor. No

exemplo, foi definido um plano infinito, onde o vetor <0,1,0> é a normal ao plano. O

número que vem após a especificação deste vetor é a distância da origem na qual o

plano foi colocado ao longo da normal. No exemplo, o "chão" foi colocado na posição

y=0. O padrão checker especifica que serão usadas as cores verde e amarela. Olhando

para o chão, se observa que os objetos produzem sombras, que são processadas com

muita precisão pelo ray-tracer.

DICAS:

O POV-Ray possui um excelente recurso de ajuda. Para acessá-lo clique no

menu Help/Help on POV-Ray. Explorando: acesse o menu Help on POV-Ray¸ clique na aba Pesquisar,

digite color. A parte esquerda da tela irá mostrar uma lista de opções que estejam ligadas a palavra color. Dê dois cliques sobre a opção “3.7.3 colors.inc”. Do lado

direito será mostrado as cores pré-definidas, pelo nome. Os pigments também podem ser descritos por valores numéricos de cor

rgb. Por exemplo: color rgb<1,0,0> resulta na cor vermelha. A ferramenta Color

Tools disponível em http://library.thinkquest.org/3285/color_tool.html define os valores rgb para uma determinada cor.

A cada alteração no código, salve-o ante de executá-lo.

Quadro 1: Dicas para o POV-Ray

Disciplina de Computação Gráfica: Tutorial POV-Ray 11

3 OBJETOS 3D

Até aqui foi utilizada apenas uma esfera, entretanto o POV-Ray disponibiliza

outros objetos 3D que podem ser incluídos na cena, tais como cubo, cone, cilindro e

torus.

Abra um novo arquivo, salve com o nome de exe02.pov. Insira no código:

1. As bibliotecas;

2. A câmera;

3. A luz;

4. O backgroud;

5. O plano.

Quadro 2: Orientação para o código do exe02.pov.

3.1 Caixa

Uns dos objetos mais comuns. Ela é definida pela especificação das coordenadas

3D nos cantos opostos. Geralmente o primeiro vetor é a menor coordenada e o segundo

vetor a maior coordenada. Os objetos caixas podem ser rotacionados em qualquer

ângulo.

box { <-1, 0, -1>, // Canto esquerdo mais próximo < 1, 0.5, 3> // Canto direito mais longe

pigment { color OrangeRed } rotate y*30 // Equivalente a "rotate <0,30,0>" }

3.2 Cone

O cone é definido pelo centro e respectivo raio de cada extremidade. No

exemplo dado uma extremidade está em <-2, 1. 0> com raio 0.3 enquanto a outra

extremidade está em <-3, 2, 3> com raio 1. Se quisermos que a extremidade seja um

ponto, então o raio deverá ser zero. O comando open faz com que a extremidades sejam

abertas (exceto para o raio zero).

cone { <-2, 1, 0>, 0.3 // Centro de uma ponta, raio <-3, 2, 3>, 1.0 // Centro de outra ponta, raio open // Remove as extremidades pigment { color BrightGold }

}

Disciplina de Computação Gráfica: Tutorial POV-Ray 12

3.3 Cilindro

O cilindro é semelhante ao cone, defini-se as duas extremidade, porém com um

único raio.

cylinder { <0, 1, 0>, // Centro da primeira extremidade <3, 2, 3>, // Centro da segunda extremidade 0.5 // Raio open // Remove as extremidades pigment{ color MediumOrchid} }

3.4 Torus

O toro é um objeto com formato de argola, na sua definição são usados dois

raios, maior e menor. O objeto toro é criado em torno da origem, por isso, é necessário

aplicar a transformação para usá-lo onde quiser. É um objeto muito usado para criação

de objetos CSG.

torus { 1.5, 0.4 // maior e menor raio pigment { Green } rotate <90,80,0> //definindo a rotação translate <-4,2,0> //definindo a translação }

Figura 3: Imagem gerada pelo exe02.pov

Page 4: Tutorial Pov-Ray Tutorial Pov-Ray - fct.unesp.br · O vetor indica a posição da fonte de luz, que consiste em um pequeno ponto invisível que emite luz. light_source {

Disciplina de Computação Gráfica: Tutorial POV-Ray 13

4 TEXTURA

A pigmentação é, na realidade, parte de um atributo maior chamado textura. A

razão pelo qual o POV-Ray deixa usar o atributo pigmentação fora da textura é porque a

pigmentação é utilizada tão freqüentemente por si só, que facilita o uso.

O atributo textura contém atributos que descrevem a aparência externa do

objeto: pigmentação, finalização e normal. O atributo pigmentação, descreve a cor do

objeto. O atributo acabamento descreve a forma como o objeto "interage com a luz"

(brilho, brilho metálicos, refletividade, etc.). O atributo normal descreve algumas

características tridimensionais dos objetos, tais como ressaltos, ondas e ondulações.

Vimos, até agora, o uso do atributo cor dentro do atributo pigmentação (por

exemplo, “pigment { color blue }”). O atributo mais flexível, é o mapeamento de cor,

utilizado para fazer uma grande variedade de coisas. Basicamente, um mapeamento de

cor define faixas de cores em um "mapa" que vão de 0.0 a 1.0 Vejamos um exemplo

simples:

Color_map { [0.0 0.25 color Red] [0.25 0.9 color Blue] [0.9 1.0 color Green]

}

Este exemplo define três faixas de cores: vermelho de 0,0 até 0,25, azul de 0,25

até 0,9 e verde e de 0,9 até 1,0. Outro formato comumente utilizado tem o seguinte

aspecto:

Color_map { [0.0 color Red] [0.25 color Blue] [0.9 color Green]

}

Ambos os exemplos fazem a mesma coisa, o primeiro contém um pouco mais de

informações sobre as bandas de começo e parada.

O POV-Ray pode fazer várias coisas com isto através dos muitos tipos de

pigmentação. Os pigmentos dão vida às imagens de ray tracing. O POV-Ray suporta

uma vasta gama de tipos de pigmentação, com um número infinito de maneiras eficazes

para alterá-los conforme as necessidades. E se ainda não for suficiente, é possível

mapear a imagem usando texturas em vez de apenas cores. Enfim, a forma geral para

especificar um pigmento é a seguinte:

Disciplina de Computação Gráfica: Tutorial POV-Ray 14

pigment { // É necessário um desses: pigment tipo /* OU */ color cor /* OU */ image_map { /* Especificações do mapeamento da imagem */ } // Todos a seguir são opcionais: color_map { /* Entradas do mapeamento de cor */ } frequency frequência

lambda valor lambda

octaves número de oitavas

omega valor omega

phase fase

quick_color cor

turbulence valor ou vetor de turbulência /* qualquer transformação aparece aqui */ }

Quadro 3: Forma geral da declaração de pigmentação

Qualquer número de transformações (rotações, translações e escalas) pode seguir

a declaração de pigmentação, mas deve ser especificado após o último modificador do

mesmo.

Uma pigmentação é composta por três partes principais, em primeiro lugar o tipo

da pigmentação, então o mapeamento de cor, e finalmente a turbulência. O mapeamento

de cor e a turbulências são opcionais. O tipo de pigmentação pode ser: ágata (agate),

palhaço (bozo), tabuleiro de xadrez (checker), gradiente (gradient), granito (granite),

hexágono (hexagon), leopardo (leopard), mármore (marble), mandel, cebola

(onion), ou madeira (wood).

O segundo tipo de modificador é o mapeamento de cor, visto anteriormente. Os

modificadores são a freqüência, que estende ou comprime o mapeamento de cor, e de

fase, que muda as cores do mapa. A terceira parte da pigmentação é a especificação de

turbulência. É usado basicamente para misturar um pouco o pigmento, o que pode dar

vida a ele. Ela pode assumir qualquer valor (turbulence 0.8) ou um vetor de três

componentes (turbulence <0, 0.9, 0.3>). Quanto maior o valor, maior é a

turbulência.

4.1 Atributo: pigmentação

A pigmentação gradiente cria planos paralelos de pigmentações de cor. A

orientação desses planos é controlada com o parâmetro do gradiente. O parâmetro 3 é

Disciplina de Computação Gráfica: Tutorial POV-Ray 15

um componente normal do vetor que descreve os planos de cor (todos têm a mesma

normal, pois são paralelas). Note que a magnitude do vetor é irrelevante, desde que não

seja zero. Para controlar a largura das faixas de cores, use a palavra-chave “frequency”

(frequência).

Abra um novo arquivo, salve com o nome de exe03.pov. Insira no código:

1. As bibliotecas;

2. A câmera;

3. A luz;

4. O backgroud.

Quadro 4: Orientação para o código do exe03.pov.

Vamos criar um objeto para aplicar alguns tipos de pigmentação.

sphere { <0,0,0>, 5 pigment { gradient <0, 1, 0> color_map { [0.0 color Red] [0.25 color Blue] [1.0 color Green] } scale 3 } }

O vetor após a palavra-chave gradient é o vetor normal para a orientação das

faixas de cores. A declaração da escala aplica-se à pigmentação, e não ao objeto.

Figura 4: Imagens com alteração do gradiente: <0,1,0>; <1,1,1>; <1,0,0>

Podemos adicionar uma turbulência, após a escala, com o valor 2 e observar o

resultado (turbulence 2) na figura 5.

Disciplina de Computação Gráfica: Tutorial POV-Ray 16

Figura 5: Imagem com aplicação de turbulência.

Os outros tipos de pigmentação têm algumas semelhanças com a pigmentação

gradiente, porém com suas próprias características. Abaixo estão os exemplos de

imagens com as demais pigmentações, a inserção no código é igual ao da pigmentação

gradiente sem a definição x, y e/ou z.

Figura 6: Imagem com

pigmentação mármore.

Figura 7: Imagem com

pigmentação mármore com

turbulência.

Figura 8: Imagem com

pigmentação ágata.

Figura 9: Imagem com

pigmentação palhaço.

Figura 10: Imagem com

pigmentação manchada.

Figura 11: Imagem com

pigmentação granito.

Page 5: Tutorial Pov-Ray Tutorial Pov-Ray - fct.unesp.br · O vetor indica a posição da fonte de luz, que consiste em um pequeno ponto invisível que emite luz. light_source {

Disciplina de Computação Gráfica: Tutorial POV-Ray 17

Figura 12: Imagem com

pigmentação leopardo.

Figura 13: Imagem com

pigmentação madeira.

Outros dois tipos de pigmentação são o tabuleiro de xadrez e o hexágono, que

não funcionam com mapeamento de cores. No tabuleiro de xadrez apenas duas cores

são especificadas elas formarão um tabuleiro de xadrez, figura 14, e aceita o

modificador de turbulência, figura 15.

Figura 14: Imagem com pigmentação tabuleiro

de xadrez

Figura 15: Imagem com pigmentação tabuleiro

de xadrez e turbulência.

Por padrão, o hexágono é projetado para o plano x e z, produzindo um tipo de

pilar hexagonal no eixo y. São especificadas três cores que são usadas para criar um

padrão hexagonal sobre os objetos.

Figura 16: Imagem com pigmentação hexágono.

Disciplina de Computação Gráfica: Tutorial POV-Ray 17

O mapeamento de imagem é uma técnica utilizada para produzir cores e padrões

específicos na superfície de um objeto. Ele, basicamente lê um arquivo de imagem e,

em seguida, projeta essa imagem para o objeto. Por padrão a imagem é projetada no

plano xy. Caso queira mudar a posição da imagem, é possível rodar e escalar a imagem,

também é possível alterá-la (até certo ponto) com os modificadores do “map_type”. A

seguir é mostrado um exemplo de declaração:

image_map { tipo "nome_do_arquivo.tipo" //modificadores (são opcionais) Interpolate valor

Filter paleta_de_cor, porcentagem_de_tranparência }

Quadro 5: Sintaxe do mapeamento de imagem.

O tipo pode ser “gif”, “tga”, “iff”, “png” ou outro, seguido do nome do arquivo

(entre aspas), que especifica o arquivo de imagem a ser mapeada.

Como exemplo para usar o mapeamento de imagem abra um novo arquivo com

o nome exe04.pov e digite o seguinte código.

#include "colors.inc" //------definicao da camera ------- camera { location <8, 6, -26> } light_source { <10,10,-30> color rgb <1,1,1> area_light <4, 0, 0>, <0, 0, 4>, 4, 4 // 4*4 = 16 pontos de luz } background { color SkyBlue } plane { <0, 1, 0>, -0.1 pigment { granite color_map { [0.0 color DarkOliveGreen] [0.25 color Green] [1.0 color CadetBlue ] } scale 2 } } polygon { 4, <0,0,0>,<20, 0,0>, //pontos de ida <20,10,0.4>,<0,10,0.4 > //pontos de volta pigment { image_map { png "parede_frente.png" } scale <20,10,0> } }

Disciplina de Computação Gráfica: Tutorial POV-Ray 18

Figura 17: Cena com o mapeamento de imagem, exe04.pov.

Neste exemplo foi utilizado o objeto polígono, no caso para definir um

retângulo. Um polígono pode ser usado para criar qualquer forma planar. Ele é definido

pelo número de pontos que descrevem sua forma. No exe04.pov foram utilizado 4

pontos para definir o retângulo. Na figura 18 foi definido um polígono com 24 pontos

para a estrada a esquerda, que faz uma curva.

Figura 18: Cena usando polígonos.

4.2 Atributo: finalização

A finalização descreve como os objetos interagem com a luz, ou seja, como eles

refletem, como será o brilho, a transparência etc. Todos os atributos de finalização são

fechados em um bloco {}

finish { /*todos os atributos são opcionais*/ ambient luz_ambiente brilliance brilho

Disciplina de Computação Gráfica: Tutorial POV-Ray 19

crand valor_crand diffuse luz_difusa ior indice_de_refração metallic phong valor_phong phong_size tamanho_do_phong reflection luz_de_reflexão refraction refração roughness rugosidade specular polido }

Quadro 6: Forma geral da declaração de finalização

O atributo ambiente controla o quanto da cor de uma superfície é proveniente da

iluminação ambiente. Seu valor varia no intervalo de 0,0 a 1,0, o valor padrão é 0.1

Valores baixos significam que os objetos que não estão diretamente iluminados e

manterão algumas das suas cores, valores maiores podem fazer com que o objeto pareça

estar brilhando.

O atributo brilho modifica o comportamento da iluminação difusa, seu valor

padrão é 1.0. A forma como funciona a iluminação difusa consiste em calcular o ângulo

entre a superfície e o raio de luz. Usando o brilho, podemos chegar a um efeito mais

metalizado.

O atributo crand, figura 20, pode ser usado para simular superfícies rugosas,

como concreto e areia, pois ele deixa as superfícies com um aspecto granulado. Os

valores do crand variam de 0,0 a 1,0, sendo o padrão 0.0. É bom lembrar que o

crand é completamente aleatório, ou seja, possivelmente teremos dois resultados

diferentes usando a mesma imagem.

Figura 20: Imagem com finish {brilliance 5}na esfera e finish {crand 0.6} no cone.

O modelo de iluminação difusa é a principal maneira de diferenciar como os

objetos são iluminados. Por padrão a maior parte da coloração de um objeto vem da

iluminação difusa, pois ela é, basicamente, a luz que vem de uma fonte luminosa e

difunde em todas as direções. Uma superfície que tem a fonte luminosa diretamente

Page 6: Tutorial Pov-Ray Tutorial Pov-Ray - fct.unesp.br · O vetor indica a posição da fonte de luz, que consiste em um pequeno ponto invisível que emite luz. light_source {

Disciplina de Computação Gráfica: Tutorial POV-Ray 20

voltada para ela irá aparecer mais brilhante do que uma superfície que é iluminada a

partir de um ângulo muito baixo de reflexão de luz. O atributo difusão pode modificar

esses efeitos, seu valor varia de 0,0 (ausência de luz a partir de fontes de luz) para 1,0

(muito bem iluminado), sendo o valor padrão 0.6.

Talvez o atributo da finalização mais usado seja o atributo phong, figura 21. O

phong cria um destaque em um objeto que na verdade é a cor da fonte luminosa, seu

valor varia entre 0.0 e 1.0, quanto maior, mais brilhante será o objeto. Isto é feito

através da comparação do ângulo em que está o observador e o ângulo em que a luz

incide na superfície, caso esses ângulos sejam opostos e aproximadamente iguais, a cor

da luz é misturado na cor do objeto.

Existe também um modificador do phong, o parâmetro “phong_size”, figura

21, ele define o tamanho do brilho e pode dar impressão de uma superfície muito polida.

Os valores típicos variam entre 1 a 250 (muito brilhante), mas o padrão é 40. Outro

modificador para phong é o metálico, o que significa que o brilho destacado em um

objeto deve ser modificado pela cor da sua superfície, e não apenas determinado

unicamente a partir da cor da fonte luminosa. O metálico não possui parâmetros, ou

seja, ou o objeto é metálico ou não é.

Figura 21: Imagem com finish {phong 0.9}na esfera e finish {phong 1 phong_size

2} no cone.

Outro atributo da finalização é o polido (specular), é muito semelhante ao

phong, mas este é mais preciso de acordo com as leis físicas, pois produz um destaque

sobre o objeto onde seria o reflexo caso o objeto fosse reflexivo. Seus valores podem

variar entre 0.0 e 1.0 e o padrão é não destacar o brilho (0.0). O tamanho do realce pode

ser controlado, com ao parâmetro rugosidade.

Disciplina de Computação Gráfica: Tutorial POV-Ray 21

A reflexão é outro atributo da finalização, ela dá ao objeto um acabamento

espelhado ou parcialmente espelhado e este objeto irá refletir outros objetos da cena. A

reflexão admite valores entre 0.0 e 1.0, quanto maior o valor, mais espelhado o objeto

fica, sendo que o valor 0.0 desativa a reflexão. Para obter um refletor absolutamente

perfeito, também é preciso especificar "ambient 0" e "diffuse 0” em sua declaração de

finalização. Normalmente os valores de reflexão não precisam ser elevados em objetos

que não são exatamente espelhos, até mesmo para superfícies de vidro uma reflexão

valor de 0,1 é suficiente para torná-la realista. Outra coisa para se saber é que quanto

mais reflexão tiver, mais tempo será necessário para renderizar, pois para cada raio que

atinge um objeto reflexivo, outro raio tem que ser rastreado para determinar que o

primeiro reflete a superfície.

Figura 22: Imagem com finish { specular 0.5 roughness 0.75} na esfera e finish {

phong 1 reflection 0.3} no cone.

O atributo refração só tem sentido em objetos que têm pelo menos um pouco de

transparência. A refração é a flexão dos raios luminosos que passam para uma forma

mais densa ou menos densa. Sem refração, os objetos transparentes possuem a aparência

de ar colorido. Ela só possui dois valores: 0 (desativa a refração) e 1 (ativa a refração).

Valores entre 0 e 1 fazem com que a luz escureça, portanto, a forma mais adequada para

reduzir o brilho da luz refratados é mudar a especificação de cores e de transparência na

declaração da pigmentação.

É preciso lembrar que o valor da refração igual a 1 não faz com que um objeto

fique transparente, é necessário usar transparência no seu pigmento para fazer um objeto

transmitir luz.

Indicando "refraction 1" sozinha não irá mudar a forma como a luz aborda o

objeto, ainda parecerá um ar colorido. Isto porque, por padrão, o ior (índice de

Disciplina de Computação Gráfica: Tutorial POV-Ray 22

refração) é o mesmo que o de espaço vazio. O índice de refração descreve o quanto a

luz “dobra” quando ela passa para dentro e para fora de um objeto. Seus valores são

positivos e, normalmente, superiores a 1.0 (espaço vazio é 1.0).

4.3 Atributo: normal

A componente normal de uma textura permite que você crie efeitos 3D sobre a

superfície de um objeto. Uma vez que grande parte do nosso modo de perceber objetos

baseia-se na forma como eles refletem luz, é possível enganar o olho, fazendo uma

superfície ficar acidentada apenas modificando o vetor normal. Isto é o que o

modificador "normal" faz. Digamos que se quisesse criar um lago com ondulações em

toda a sua superfície, fazer isso matematicamente seria muito trabalhoso, então o POV-

Ray oferece a habilidade de modificar a maneira como luz reflete fora da superfície.

Vale lembrar que especificar um modificador normal para um objeto na

realidade não muda a localização da superfície, apenas o torna diferente na observação.

Normal { tipo /* OU */ bump_map { /* especificação do mapeamento de batida*/ } /* modificadores aqui*/ /* qualquer rotação, escala, e translação vem aqui */ }

A normal possui três partes, o tipo, os modificadores e, em seguida, as

transformações. Uma normal só pode ter um tipo: batida (bumps), acidentes (dents),

ondulações (ripples), oscilações (waves) ou rugas (wrinkles). Cada um possui valores

entre 0,0 (calmo) e 1,0 (violento).

Um modificador que a normal pode ter é a turbulência (vista anteriormente), ela

realmente pode criar normais malucas. Apenas dois tipos de normal (ondulações e

oscilações) respondem aos modificadores "frequence" e "phase", a freqüência controla a

densidade das ondulações ou oscilações, enquanto a fase controla sua localização. As

transformações que são aplicadas a normal só alteram as localizações dos componentes

normais.

A normal batida, figura 23, cria um padrão aleatório acidentado sobre o objeto.

Na verdade, ele usa um padrão semelhante à pigmentação palhaço. Os valore variam de

0,0 (liso) para 1,0 (Serrilhado), eles que descrevem a profundidade das batidas.

Disciplina de Computação Gráfica: Tutorial POV-Ray 23

A normal acidente, figura 23, faz, basicamente, com que o objeto fique como se

tivesse sido atacado com uma marreta.

Figura 23: Imagem com normal { bumps 1 scale 1/4} na esfera e normal { dents 1

scale 1/4 } no cone.

A normal ondulação, figura24, cria suaves ondulações nas superfícies. Assim

como a ondulação, a oscilação, figura 24, cria ondas na superfície, porém as ondas são

embaralhadas. Teoricamente estas parecem profundas ondas do mar.

A normal ruga, figura 24, faz com que o objeto pareça que foi amassado.

Figura 24: Imagem com normal { waves 1.0 scale 1/4} na esfera, normal { ripples

1.0 scale 1/4 } no cone e normal {wrinkles 1 scale 1/4} na esfera.

Aprendemos, então, a incluir texturas nos objetos. Mas devemos saber que o

POV-Ray possui uma biblioteca completa de texturas chamada “textures.inc”, que pode

ser incluída.

Dica: Note que é preciso incluir “colors.inc” antes de “textures.inc”, pois “textures.inc”

utiliza a biblioteca de cor.

Quadro 7: Dica de texture.inc.

Page 7: Tutorial Pov-Ray Tutorial Pov-Ray - fct.unesp.br · O vetor indica a posição da fonte de luz, que consiste em um pequeno ponto invisível que emite luz. light_source {

Disciplina de Computação Gráfica: Tutorial POV-Ray 24

5 CSG

CSG (Constructive Solid Geometry) é uma técnica que cria novos objetos a

partir de combinações de outros objetos. Desse modo, objetos primitivos podem assumir

formas mais construtivas, é possível retirar partes de objetos, adicionar partes

(mantendo dois objetos juntos) e entre outras operações, esculpindo-o da maneira que

desejar. A sintaxe é simples:

CSG_operator { object_1 object_2 etc. }

Quadro 8: Sintaxe para CSG.

A seguir, teremos exemplos e explicações de todos os operadores (união, junção,

diferença e intersecção).

5.1 União

A união é, talvez, o operador de CSG mais simples, ela é usada para combinar

grupos de objetos juntos em um objeto lógico.

Figura 25: Exemplo matemático da união (HELP, 2003)

Abra um novo arquivo, salve com o nome de exe05.pov. Insira no código:

1. As bibliotecas;

2. A câmera;

3. A luz;

4. O backgroud.

Quadro 9: Orientação para o código do exe05.pov.

Para exemplificar a união acrescente no exe05.pov a definição dos triângulos

contido no arquivo “codUnion.txt”. A imagem resultante será como a figura 20.

Disciplina de Computação Gráfica: Tutorial POV-Ray 25

Figura 26: Imagem gerada pelo exe05.pov, união.

Podemos criar um objeto com um grande número de componentes e agrupá-los

em uma união, depois disso, transformá-los, transformando apenas a união em vez de

ter de transformar todos os objetos individuais. Além disso, a textura também pode ser

usada no objeto como um todo.

Dica:

Acrescente a textura:

texture { Jade }

Quadro 10: Dica de textura.

5.2 Junção

O operador junção é muito semelhante à união, pois possui basicamente a

mesma finalidade, juntando um grupo de objetos e formando apenas um. A junção, no

entanto, difere da união pelo fato de que as superfícies que estão dentro do objeto são

removidas. De qualquer maneira, isso não tem importância em objetos opacos, porque

as superfícies internas não são visíveis.

Figura 27: Exemplo matemático da junção (HELP, 2003)

merge{ sphere{<0,1,0>,0.35} cone{<0,-1,0>,1,<0,1.2,0>,0} pigment{color rgbf <0,0,1,0.6>} translate <3, 0, 0> }

Disciplina de Computação Gráfica: Tutorial POV-Ray 26

Figura 28: Imagem gerada pelo exe05.pov, junção.

Dica:

Para observar a diferença de união e junção, troque o “merge” da junção por

“union”. Você vai observar a ponta do cone dentro da esfera, na junção essa ponta é

excluída.

Quadro 11: Dica: diferença entre junção e união.

Mais informação:

Observe que o objeto está transparente. Além do vetor RGB, as cores no POV-

Ray podem ser especificadas pelo vetor RGBF. O vetor RGBF possui um elemento

extra quando comparado ao RGB, esse elemento (F) funciona como um filtro de

transparência, variando de 0,0 (sem transparência) a 1,0 (100% transparente).

Quadro 12: Dica: informação sobre RGBF.

5.3 Diferença

A diferença é utilizada para esculpir as formas de um objeto. A diferença é

especificada da mesma forma que as outras especificações de CSG. O primeiro objeto

especificado é o objeto na qual se quer esculpir, os objetos subsequentes são utilizados

para esculpir o primeiro objeto. A diferença é o único objeto CSG em que a ordem dos

objetos importa.

Figura 29: Exemplo matemático da diferença (HELP, 2003)

Disciplina de Computação Gráfica: Tutorial POV-Ray 27

difference { sphere { <0, 0, -1>, 1 translate 0.5*x pigment { Yellow } rotate 90*y finish { Shiny } } cylinder { <-0.5, 0, -2> <0, 0, 1>, .55 pigment { Magenta } } translate <9,0,0> rotate <0,25,0> }

Figura 30: Diferença entre união e diferença (à esquerda há uma união entre os objetos e à

esquerda uma diferença).Imagem gerada pelo exe05.pov.

A primeira figura é a união de uma esfera com um cilindro, já a segunda é a

diferença, podemos notar que permaneceu o “encaixe” do cilindro na circunferência.

5.4 Interseção

A intersecção de dois ou mais objetos é composta por todos os pontos que estão

dentro de todos os objetos ao mesmo tempo. A ordem dos objetos enumerados na

declaração não importa.

Figura 31: Exemplo matemático da interseção (HELP, 2003)

intersection{ box {<-0.5,-0.5,-0.5>,< 0.5,0.5,0.5> texture{pigment{color Orange } finish {ambient 0.15

Page 8: Tutorial Pov-Ray Tutorial Pov-Ray - fct.unesp.br · O vetor indica a posição da fonte de luz, que consiste em um pequeno ponto invisível que emite luz. light_source {

Disciplina de Computação Gráfica: Tutorial POV-Ray 28

diffuse 0.85}} } sphere{<0,0,0>,0.66 texture{pigment{color OrangeRed} finish {ambient 0.15 diffuse 0.85}} } rotate<0,-30,0> translate<3.5,-0.1,-6> }

Figura 32: Diferença entre união e intersecção (à esquerda há uma união entre os objetos e à

direita uma intersecção). Imagem gerada pelo exe05.pov.

O resultado é o volume corresponde ao espaço que está contido no interior de

ambos os objetos. Podemos notar a diferença das cores na fronteira do objeto, o que é

vermelho está no limite da esfera e o que é laranja está no limite da caixa.

Apesar de todos os recursos, pode ocorrer uma situação em que nem as

primitivas geométricas do POV-Ray usando CSG serão suficientes para descrever um

objeto. Neste caso, existem duas opções:

1. A primeira será especificar o objeto em termos matemáticos.

Obviamente, essa opção é muito difícil, a não ser que se saiba o que está

fazendo.

2. A segunda opção é usar um programa modelador. O programa pode fazer

uma modelagem extremamente complexa usando indicações simples,

como as primitivas geométricas. É possível encontrar bons programas de

modelagem (muitos gratuitos e shareware), assim você irá economizar

tempo e esforço.

Disciplina de Computação Gráfica: Tutorial POV-Ray 29

6 ILUMINAÇÃO

A declaração “ light_source” permite declarar vários tipos de luzes para a sua

cena. Existem quatro tipos de fontes de luz que podem ser definidas. A mais básica é a

luz pontual, que é um ponto geométrico a partir do qual emanam raios luminosos para

todos os lados. Suas propriedades são apenas a sua cor e a sua posição. O segundo tipo é

o foco de luz, estes são, basicamente, fontes de luz pontuais que emanam raios

luminosos apenas em certas direções. O terceiro tipo é a área luminosa, estas não são

mais simples pontos de luz, mas sim um conjunto de luz que pode ser utilizado para

tornar as sombras mais realista. O quarto tipo é uma área de foco de luz, que nada mais

é do que uma área de luz direcional.

Como sabemos, os dois componentes necessários de uma fonte de luz são a sua

localização e sua cor, portanto, todas as fontes de luz deve ter estes dois componentes.

A localização é um vetor de três posições <x, y, z>. A cor é parâmetro utilizado para

definir a cor da fonte luminosa.

Os focos de luz são utilizados para, como o nome já diz, criar focos de luz. Eles

servem para enfatizar partes de uma cena, ou apenas selecionar os objetos que serão

iluminados.

A área luminosa cria uma área que emite luz, muito bom para criar cenas mais

reais. Ela pode ser usada em conjunto com o foco de luz, desse modo os dois efeitos são

somados para determinar a iluminação da cena.

O parâmetro “ looks_like” pode ser usado para atribuir uma "forma" para a luz.

Uma iluminação simples,

// luz light_source { <0,20,-30> color rgb <1,1,1> //cor branca }

6.1 Foco de luz

Todos os parâmetros do foco de luz precisam ser especificados com exceção do

tightness, este é opcional. Em um foco de luz, podem ser considerados dois cones de

luz coaxiais. O cone interno é totalmente iluminado pela luz e seu raio angular é

indicado pela palavra-chave "radius". O cone externo é a região em que a luz não

chega(falloff).

A palavra chave “tightness” pode ser usada para controlar o modo como a luz

cai na parte apagada, entre os ângulos radius e falloff. Veja o exemplo:

Disciplina de Computação Gráfica: Tutorial POV-Ray 30

light_source { <0,20,-30> color rgb <1,1,1> spotlight point_at <0, 0, 0> radius 20 falloff 20

}

O “point_at” é similar ao “ look_at” na declaração da câmera, ele define a direção

do foco de luz. O valor do radius indica, como foi dito, o ângulo da parte iluminada,

portanto se ele for menor, um feixe menor de luz irá incidir na cena, caso seja maior um

feixe maior de luz incidirá na cena. O valor de falloff indica o ângulo da parte que está

apagada, caso o valor seja menor do que o do radius nada irá mudar, pois a parte

apagada fica iluminada. Caso o valor de falloff seja maior que o valor do radius haverá

uma leve sombra entre a parte acesa e a parte apagada da cena.

6.2 Área luminosa

As áreas luminosas são utilizadas para espalhar a sombra e torná-la mais realista.

A área luminosa espalha a intensidade da luz para fora em um retângulo, uma vez que a

luz tem um espaço, ela pode ser parcialmente bloqueada, deixando as sombras com

bordas suaves.

Este tipo de fonte de luz possui dimensões em dois eixos, que são especificados

através de dois vetores. Também é necessário especificar quantas luzes haverá, e é

possível definir um valor adaptativo que diz para o Ray-tracer que ele pode se adaptar a

uma situação e enviar somente os raios necessários para determinar o valor dos pixels.

Caso este parâmetro não seja usado, um raio separado será enviado para cada fonte de

luz na área light, o que faz com que o tempo de processamento aumente. Quanto maior

o valor, mais delineada a umbra ficará e mais lento a imagem será gerada. Geralmente é

utilizado o valor 1 para este parâmetro. Outro parâmetro, jitter, diz para o Ray-tracer

mover suavemente a posição de cada fonte de luz na área light para que as sombras

sejam visualizadas.

light_source { <0,20,-30> color rgb <1,1,1> spotlight area_light <4, 0, 0>, <0, 0, 4>, 8, 8 //adaptive 20 jitter

}

Disciplina de Computação Gráfica: Tutorial POV-Ray 31

7 LINGUAGEM

Até agora, a criação de um grande número de objetos similares tem sido um

exercício de “copiar e colar”. Veremos, então, que o POV-Ray proporciona uma

funcionalidade poderosa e flexível para criar muitos objetos similares usando uma

declaração. A declaração deve ser do tipo “#declare” e pode ser utilizada para criar um

novo tipo de objeto (ou pigmentos, ou textura, ou quase tudo) que você pode usar e re-

usar sempre que quiser.

Abra um novo arquivo, salve com o nome de cena.pov. Insira no código:

1. As bibliotecas;

2. A câmera;

3. A luz;

4. O backgroud.

Quadro 13: Orientação para o código do cena.pov.

No código abaixo, usando CSG, foi definido uma árvore.

//-----------------definicao da arvore------------------------ #declare arvore= union { //Desenhando as arvores cylinder { <-3,-2, -1>, <-3, 2, -1>, -0.4 pigment { gradient <0, 1, 0> color_map { [0.0 color DarkWood] [0.25 color DarkPurple] [1.0 color Flesh] } scale 8 turbulence 10 } } sphere { <-3, 3, -1>, 1.9 pigment { gradient <0, 1, 0> color_map { [0.3 color DarkOliveGreen ] [0.2 color DarkSlateGray] [0.8 color Green] } scale 5 turbulence 10} } } ;

Page 9: Tutorial Pov-Ray Tutorial Pov-Ray - fct.unesp.br · O vetor indica a posição da fonte de luz, que consiste em um pequeno ponto invisível que emite luz. light_source {

Disciplina de Computação Gráfica: Tutorial POV-Ray 32

//----------------- fim definicao da arvore------------------------

Esta é uma declaração de um novo tipo de objeto chamado "arvore", que agora

podemos usar mais tarde no código fonte, desta maneira:

//------------------------- incluindo uma arvore--------------------- #local Here = <-2,1,-5.5>; object {arvore translate Here scale 0.5} #local Here = <-35,-1,4.5>; object {arvore translate Here scale <0.3,0.7,0.3>} #local Here = <-35,-1,7>; object {arvore translate Here scale <0.3,0.7,0.3>} #local Here = <-38,-1,7>; object {arvore translate Here scale <0.3,0.7,0.3>} #local Here = <-11,1,-9>; object {arvore translate Here scale <0.8,1,0.5>} //----------------------fim-----------------

A declaração do objeto diz ao POV-Ray para criar um objeto do tipo

"arvore". Podemos colocar na declaração qualquer objeto que iremos usar.

A linguagem de programação do POV-Ray traz vários outros recursos que

podem se consultado no Help, o #declare e o #local foram somente dois exemplos.

Disciplina de Computação Gráfica: Tutorial POV-Ray 33

8 EXERCÍCIO: CRIANDO UMA CENA

Implemente os passos a seguir para criar uma cena que possui um prédio, várias

árvores, calçada e rua.

1. Abra um novo arquivo, salve com o nome cena.pov.

2. Insira a biblioteca #include "colors.inc".

3. Insira a câmera.

4. Insira a luz.

5. Insira o background, { color DarkTurquoise }.

6. Insira um plano, color Green.

7. Faca um poste usando CSG, union:

a. Construa um cilindro, com as seguintes características:

i. cylinder { <0, 0, 0>, <0, 3, 0>, 0.1 // Raio

ii. pigment{ color DarkSlateGray}}

b. Construa uma esfera, com as seguintes características:

i. { <0, 3, 0>, 0.5

ii. pigment { color Yellow}

c. Construa um cone, com as seguintes características:

i. <0, 4, 0>, 0

ii. <0, 3.5, 0>, 1.0

iii. pigment { color BrightGold }

d. Depois de criado duplique o objeto e distribua na cena

8. Construa uma caixa com 20 de altura(em y), 15 de largura (em x) e 20 de

profundidade (em z). Coloque-o do lado esquerdo do cilindro, a distância

de 1, para o fundo e para o lado.

9. Construa outra caixa com 3 de altura (em y), 10 de largura (em x) e 14

de profundidade (em z). Coloque-o do lado direito do cilindro, a

distância de 1, para o fundo e para o lado.

10. Construa uma calçada que passe em frente às construções, usando um

polígono de 4 vértices, comprimento (em x) de 20 e largura (em z) de 2.

11. Coloque árvores na cena, usando o código da seção 7.

12. Usando CSG, crie caixas pra fazer as janelas e portas. Use declaração.

13. Usando CSG, crie o teto do prédio, azul. Use uma esfera e uma caixa

com diferença.

Disciplina de Computação Gráfica: Tutorial POV-Ray 34

14. Construa a rua, as faixas amarelas, e as calçadas usando um polígono

com quatro pontos.

15. Acrescente mais características a cena, exemplo figura 33.

Figura 33: Imagem do exercício criando uma cena.

Disciplina de Computação Gráfica: Tutorial POV-Ray 35

REFERÊNCIAS

POV-RAY. Introduction to POV-Ray. Disponível em: http://www.povray.org/. Acesso em: 07 out. 2010.

HELP on POV-Ray. Disponível no software POV-Ray, 2003.

Page 10: Tutorial Pov-Ray Tutorial Pov-Ray - fct.unesp.br · O vetor indica a posição da fonte de luz, que consiste em um pequeno ponto invisível que emite luz. light_source {

Disciplina de Computação Gráfica: Tutorial POV-Ray 36

ANEXO A – Arte no POV-Ray

Imagens disponíveis no “Hall of Fame”, http://hof.povray.org/.

Figura 34:Pebbles by Jonathan Hunt

Figura 35:Bonsais by Jaime Vives Piqueres

Figura 36:Patio by Jaime Vives Piqueres

Figura 37:Glasses by Gilles Tran

Figura 38:The Kitchen by Jaime Vives Piqueres

Figura 39:Car Study by René Bui

Disciplina de Computação Gráfica: Tutorial POV-Ray 37

Figura 40:The Dark Side of the Trees by Gilles

Tran

Figura 41:Forgotten Neighbourhood by Hildur

Kolbrun Andresdottir

Figura 42:The Wet Bird by Gilles Tran

Figura 43:The Cool Cows by Gilles Tran