4.3.5 câmera
Um objeto câmera especifica as seguintes propriedades de uma câmera:
- posição e orientação
- especificada por ou uma transformação camera para o objeto mundo ou uma transformação de objeto mundo para a câmera;
essa transformação não inclui a projeção, de forma que essa transformação é tipicamente
apenas uma composição de translação e rotação. Especificado como um
objeto transform, tipicamente uma matriz 4x4.
- "focus" - distância focal
- Ao invés de sugerir uma distância típica da câmera ao objeto de
interesse; usada para o posicionamento padrão da câmera (a câmera é colocada em
(X,Y,Z) = (0,0,focus) quando resetada) e para ajustar o campo de visão quando
alternando entre os modos de visualização ortográfico e perspectivo.
- razão de aspecto da janela
- A verdadeira razão de aspecto no sentido <Xsize>/<Ysize>. Essa razão de aspecto normalmente pode
concordar com a razão de aspecto da janela de camera. Geomview normalmente
ajusta a razão de aspecto de suas câmeras para coincidir com suas janelas
associadas.
- distância de plano de corte próximo e distante
- Note que ambas as distâncias devem ser estritamente maiores que zero. Razões de distância
<distante>/<próximo> muito grandes fazem com que a área de armazenamento temporário do eixo Z comporte-se de forma péssima; parte de um
objeto pode ser visível mesmo se estiver em algum lugar mais distante que outro.
- campo de visão
- Especificado em uma das duas formas a seguir.
- ‘fov’
- é o campo de visão – em graus se perpectivo, ou distância
linear se ortográfico – na menor direção.
- ‘halfyfield’
- é metade do campo projetado no eixo Y, em coordenadas do objeto mundo (não angulo!),
em unidades de distância a partir da câmera. Para uma câmera em perpectiva, halfyfield
é relacionado ao campo angular:
halfyfield = tan( Y_axis_angular_field / 2 )
enquanto para uma câmera em visão ortográfica temos simplesmente:
halfyfield = Y_axis_linear_field / 2
Essa definição singular de visualização é (a) maneira fácil de fazer cálculos que a envolvam e
(b) é bem definida em ambas as formas de visualização ortográfica e perspectiva.
- cor de fundo
- Argumentavelmente (de forma discutível) não é uma propriedade de uma câmera, mas da cena (do cenário). Todavia, como
não existe o objeto "cordefundo" no OOGL, e a cor de fundo pode
não ser uma propriedade do equipamento de desenho, essa propriedade pode ser especificada aqui. No
momento em que esse manual está sendo escrito, todavia, a interface gráfica de usuário (GUI) sempre sobrescreve a
cor de fundo com suas próprias escolhas.
- imagem de fundo
- Pelas mesmas razões mostradas acima,somente a referida GUI não sobrescreve essa
opção. A imagem é centralizada em "Normalized-Device-Coordinates"/NDC
(0,0,-1)
; a imagem
não é redimensonada, apenas dese-nhada por trás de tudo mais como é. Veja Objetos de imagem.
A sintaxe para uma câmera é:
<nomecamera> ::=
[ "camera" ] (palavra chave opcional)
[ "{" ] (abertura de chave, geralmente requerida)
[ "define" <nome> ]
"<" <nomearquivo>
|
":" <nome>
|
(ou qualquer número dos seguintes,
em qualquer ordem...)
"perspective" {"0" | "1"} (padrão 1)
(de outra forma "ortographic")
"stereo" {"0" | "1"} (padrão 0)
(de outra forma mono)
"worldtocam" <transformação> (veja a sintaxe de transfor-
mação acima)
"camtoworld" <transformação>
(nenhum ponto na especificação de ambos
camtoworld e worldtocam; se é
restingido para ser o inverso de the other)
"halfyfield" <meio-campo-linear-Y-em-unidade-de-distância>
(o padrão é tan 40/2 graus)
Nota de tradução:40 é o valor padrão
do campo de visão (fov).
"fov" (campo de visão angular se "perspective",
campo de visão linear em caso contrário.
Medido em qualquer direção é menor,
dando a razão aspecto. Quando a razão de
aspecto muda -- e.g. quando uma janela é
reajustada -- "fov" é preservado.)
"frameaspect" <razão-de-aspecto> (X/Y) (padrão 1.333)
"near" <distância-de-corte-próxima> (padrão 0.1)
"far" <distância-de-corte-afastada> (padrão 10.0)
"focus" <distância-focal> (padrão 3.0)
"bgcolor" <cor RGB(A) em ponto flutuanter>
(padrão 1/3 1/3 1/3 1)
"bgimage" { <especificação de imagem> }
(padrão nenhuma imagem de fundo)
[ "}" ] (correspondente fechamento de chave)