Posicionamiento Básico da C�mara
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.
|