Next: window objects, 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)