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)