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
10
Embed
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 {
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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
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
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
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),
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
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.
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)
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} } } ;
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