Next: , Previous: ntransform objects, Up: Objetos nao-geometricos


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)