Home Map Index Search News Archives Links About LF
[Top Bar]
[Bottom Bar]
[Foto do Autor]
Carlos Calzada
Sobre o Autor: [escreva um ou dois par�grafos sobre a biografia do Autor aqui]

Indice:
Introdu��o
Posicionamiento b�sico da c�mara
Motion blur
Depth of field

Posicionamiento Básico da C�mara

[Ilustration]

Resumo: [Aqui vai uma descri��o sobre o artigo...]




Introdu��o

Nesta segunda parte, veremos com detalhes o modelo de c�mara de RenderMan. A c�mara � um dos elementos mais importantes de um renderizador e com ela podemos criar efeitos mais interessantes como o Motion Blur (Que � o o que se v� quando fotografamos algo que est� em movimento muito r�pido?) e o Depth of Field (com foco e sem foco). Ainda poderemos fazer modelagens com muito mais efeitos como por exemplo o Lens Flare (o brilho das luzes quando as fotografamos), muitos deles conseguem, n�o modificando o modelo da c�mara (fazendo mais complexos), sem que se modelem como propriedades dos objetos gra�as ao avan�ado sistema de shaders (shaders � o mesmo que texturas dos objetos) que possui, com o qual podemos criar nossos pr�prios "sombreadores" e criar efeitos bastante impressionantes. O modo como programamos e compilamos estes sombreadores, veremos em outro artigo, ainda que este tema � bastante amplo (muito, muito amplo ali�s ainda n�o tenho nem ideia, terei que olhar bem). Como explic�vamos no artigo anterior, para renderizar as imagens devemos por: rendrib arquivo.rib (sa�da para o arquivo) ou rendrib -d arquivo.rib (sa�da para a tela).

Posicionamento b�sico da c�mara

O sistema de coordenadas da c�mara � "left-handed" e conincide com a superf�cie do monitor. A origem se situa no centro da tela com o eixo x at� a direita, e o eixo y acima e o z "dentro". Por default, o "sistema de coordenadas atual" conincide com o sistema de coordenadas da c�mara" tal como vemos na primeira figura ( o eixo x � vermelho, o y � verde e o z azul). A primeira imagem � uma vista a�rea de como vai ficar a cena e a segunda � a cena propriamente dita (as luzes n�o est�o no mesmo lugar das imagens para que se vejam bem). ainda que a cena n�o seja especialmente complexa (a verdade � bastante horr�vel) nos servir� para compreender os arquivos RIB do exemplo sem que dificultem os complicados modelos geom�tricos.

Continuando, provaremos a posi��o da c�mara. O mais l�gico, sobretudo se usamos Pov-Ray, � mover a c�mara. Para ver a cena um pouco mais distante, mudar�amos a c�mara para a posi��o <0,0,-20>, com este movimento mover�amos a c�mara para tr�s, vamos fazer isso com RenderMan, para isto, poremos um Translate 0 0 -20 antes do WorldBegin:

A c�mara se moveu para frente!. Na realidade o que movemos n�o foi a c�mara, movemos o sistema de coordenadas atual para tr�s, o que faz com que a c�mara "avance" . Por tanto, para por a c�mara onde quer�amos, temos que fazer o contr�rio, mover o sistema de coordenadas atual para frente com Translate 0 0 20):

Agora sim, a c�mara est� onde quer�amos. A partir de agora, toda a geometria que incluirmos na cena, ser� referida a esta nova posi��o do sistema de coordenadas atual. No exemplo seguinte, deixaremos o leigo na origem das coordenadas e moveremos a c�mara ao seu redor:

Podemos ver no arquivo RIB as transforma��es que aplicamos na c�mara para posicion�-la:

Display "camara_default2.tif" "file" "rgb" Projection "perspective" "fov" 45 Format 320 240 1 LightSource "ambientlight" 1 "intensity" 0.3 "lightcolor" [1 1 1] LightSource "distantlight" 2 "intensity" 1.0 "from" [10 10 -10] "to" [0 0 0] Translate 0 0 20 Rotate 45 1 0 0 Rotate 135 0 1 0 WorldBegin Color 1 1 1 Sphere 10000 -10000 10000 360 # Background branco # Objeto da cena TransformBegin Color 1 0 0 Sphere 3 -3 3 360 TransformEnd TransformBegin Rotate -90 1 0 0 Translate 0 0 2 Cone 3 3 360 Disk 0 3 360 TransformEnd TransformBegin Rotate -90 0 1 0 Cylinder 1 -4 4 360 Disk 4 1 360 Disk -4 1 360 TransformEnd WorldEnd

Observamos uma transla��o (Translate 0 0 20) e duas rota��es, uma ao redor do eixo y (Rotate 135 0 1 0). Isto pode desconcertar aos usu�rios do Pov-Ray j� que nele as transforma��es s�o aplicadas por ordem de apari��o, com certeza RenderMan junta as transforma��es at� que encontre um token significativo ( no nosso caso o WorldBegin) e ent�o as aplica. De tudo isto, deduzimos que as transforma��es seriam a primeira a serem aplicadas. por tanto nosso exemplo deve ser lido como:

0- Estado inicial (figura de cima a esquerda).

1- Girar o sistema de coordenadas atual 135 graus e o eixo y (figura de cima a direita).

2- Girar o sistema de coordenadas atual 45 graus no eixo x (figura de baixo a esquerda).

3- Deslocar o sistema de coordenadas atual 20 unidades no eixo z (figura de baixo a direita).

Temos que levar em conta que todas as transforma��es do sistema de coordenadas atual (rota��es e transla��es) s�o relativas ao sistema de coordenadas da c�mara, portanto, uma rota��o no eixo x se refere que a rota��o diz respeito ao eixo x da c�mara, n�o do sistema de coordenadas atual.

A partir de agora, entramos na parte mais interessante, j� que entramos de cheio com os efeitos que podemos fazer com a c�mara de RenderMan.

Motion blur (simula��o de objetos m�veis)

O que primeiro veremos � o Motion Blur, � algo assim como "movimento apagado" e � o efeito produzido quando produzido quando fotografamos alguma coisa em movimentos r�pidos.

Para que a c�mara seja capaz de simular este efeito devemos incluir no arquivo o token Shutter 0 1 (com certeza na parte do arquivo dedicado a c�mara), com isto definimos o tempo de exposi��o de nossa c�mara, no nosso caso uma unidade de tempo para que o objetivo se "abra" no instante 0 e se feche no instante 1. Este tempo de exposi��o deixaremos quase sempre com 0 1 j� que, como veremos, s� indica a forma de atua��o do RenderMan.

Deste ponto em diante, temos que dizer ao renderMan que � o que se move, e � feito com o par MotionBegin MotionEnd. Como podemos ver na pr�xima figura (e no seu arquivo RIB), temos uma bola que se move a partir da posi��o 0 10 5 no instante 0 a posi��o 5 10 0 no instante 1. MotionBegin [0 1] indica ao RenderMan que tempos correspondem com as transforma��es (instante 0 para primera e instante 1 para segunda) e os valores devem coincidir com os indicados na se��o Shutter. Como podemos comprovar no exemplo, o efeito � bastante real e em uma anima��o o efeito causa muito mais impacto.

Por conseguinte, as transforma�oes que podemos incluir dentro de MotionBegin MotionEnd n�o se limitam �s transla��es, RenderMan � capaz de renderizar trajet�rias n�o lineares com Motion Blur. No exemplo que se segue, o que temos � uma rota��o dos eixos 25 graus ao redor de seu eixo y.

Ainda que normalmente o que se movimenta s�o os objetos da cena, RenderMan nos brinda com a possibilidade de que seje a c�mara que se mova, portanto tamb�m o efeito de Motion Blur pode ser aplicado ao movimento da c�mara. Neste exemplo movemos a c�mara 5 unidades a esquerda (movemos o sistema de coordenadas atual 5 unidades a direita), e todos os objetos da cena est�o borrados. Por conseguinte o par MotionBegin MotionEnd se encontram na parte da c�mara no arquivo RIB:

Depth of field (com foco e desfocada)

Outro dos aspectos oferecidos por RenderMan � a possibilidade do Dept of Field, o que � o mesmo, a capacidade de focar e desfocar objetos na cena. A forma de indicar estas opera��es � com DepthOfField. Este token necessita de tres par�metros: o primeiro � f-stop, o segundo fov (field of view ou �ngulo de vis�o) e focus-lenght (longitude do foco ou a distancia a qual um objeto aparecer� enfocado). f-stop nos indica a distancia � qual tiramos o foco, no nosso caso, um objeto que est� a 2 unidades ou menos de distancia da c�mara, aparecer� igualmente sem foco (ou com foco). O par�metro fov conv�m deixar com o valor 1.0 j� que conv�m definir antes (com Projection "perspective" "fov" 45 em nosso exemplo) o que conseguir�amos seria multiplicar o valor anterior pelo novo. focus-lenght � o par�metro que nos interessa e define a dist�ncia que devem estar os objetos com foco. No pr�ximo exemplo, temos a c�mara na origem e tres bolas (uma afastada 10 unidades, outra 20 e a �ltima 30), veremos como variando focus-lenght enfocamos as diferentes esferas.

No primeiro exemplo temos DepthOfField 2.0 1.0 10, o que quer dizer que os objetos deslocados em dez unidades da c�mara, estariam com foco (a esfera vermelha):

Continuando temos DepthOfField 2.0 1.0 20. Agora o que est� com foco � a esfera verde (j� que est� 20 unidades da c�mara):

Para enfocar a última esfera (a azul que está deslocada 30 unidades) devemos por DepthOfField 2.0 1.0 30:

O efeito que se consegue ao aplicar o depth of field � dar maior realidade as imagens que geramos. Por suposto, a velocidade da renderiza��o (rendering) aumenta ao introduzir estes efeitos (tanto o Motion Blur como o Depth of Fields) j� que s�o realizados varios passos de renderiza��o.


Este WebSite � mantido por Miguel Angel Sepulveda
© Carlos Calzada 1998
LinuxFocus 1998