Panda3D/Manual/A lente ortográfica

A página anterior descreveu a classe PerspectiveLens, e as variadas propriedades das lentes de perspectiva, especialmente seu campo de visao. Existe outro tipo de lentes que são frequentemente usadas na renderização 3D, mas realmente não tem um campo de visao. Essas são as lentes ortográficas

Em uma lente ortografica, as linhas de perspectiva vistas pela lente não convergem, ao inves disso elas permanecem em absoluto paralelo com a imagem. Enquanto uma lente de Perspectiva imita aproximadamente o comportamento das lentes reais de uma camera, não há uma lente fisica que faz o que a OrthographicLens faz. O OrthographicLens, é muito uil para efeitos especiais, onde voce quer uma aparencia nao natural, ou para emular o que é chamado de visao 2 e meio D de varios jogos de estrategia populares, ou estritamente para renderizar objetos 2d que não devem ter qualquer perspectiva de qualquer forma. De fato, a camera padrao criada para o grafo de cena render2d, que é usada para desenhar toda a GUI na tela no panda, usa OrthographicLens.


Já que uma lente ortográfica não possui um angulo de campo de visão, o metodo lens.setFov() não faz nada. Para ajustar o volume do que as lentes ortográficas veem, voce precisa ajustar o tamanho do filme. E diferente das lentes de perspectiva, as unidades de tamanho do filme não são arbitrátrias - para uma lente ortográfica, o tamanho do filme deve ser especificado em unidades espaciais, as mesmas unidades que voce usou para modelar sua cena. Por exemplo, o tamanho do filme da lente ortografica da ilustração acima foi setada com a chamada lens.setFilmSize(20,15), que seta o tamanho do filme em 20 pés por 15 pés - porque a cena é modelada em pés, e o panda tem 12 pés de altura.

Outra bela propriedade das lentes ortograficas é a distancia de perto nao tem que ser maior que 0. de fato, ela pode ser negativa - voce pode colocar o plano proxima atrás do plano da camera, o que significaque a camera vai ver objetos atras de si mesma. As lentes ortograficas para o render23 são setadas com .setNearFar( -1000, 1000 ), de forma que elas vao renderizar qualquer valor Z entre -1000 e 1000. É claro que no render2d quase todos os objetos tem um valor Z de 0, então isso realmente nao importa.

Se voce quiser, voce pode mudar a camera padrao para usar lentes orotgraficas com isso:

lens = OrthographicLens() lens.setFilmSize(20, 15) # Or whatever is appropriate for your scene base.cam.node().setLens(lens)

Note que usando uma lente ortografica pode ser não-intuitivo as vezes, objetos não ficam maiores quando voce se aproxima deles, e eles nao ficam menores quando voce se distancia - entao pode ser impossivel ver que sua camera esta se movendo