Unidades físicas de luz e câmera

Por que usar unidades físicas de luz e câmera?

O Godot usa unidades arbitrárias para muitas propriedades físicas que se aplicam à luz, como cor, energia, campo de visão da câmera e exposição. Por padrão, essas propriedades usam unidades arbitrárias, pois utilizar unidades físicas precisas traz algumas desvantagens que não valem a pena para muitos jogos. Como o Godot prioriza a facilidade de uso por padrão, as unidades físicas de luz vêm desativadas por padrão.

Advantages of physical units

Se o objetivo do seu projeto é alcançar o fotorrealismo, usar unidades do mundo real como base pode ajudar a tornar os ajustes mais fáceis. Referências de materiais, luzes e brilho de cenas do mundo real estão amplamente disponíveis em sites como Physically Based.

Usar unidades do mundo real no Godot também pode ser útil ao portar uma cena de outro software 3D que utilize unidades físicas de luz (como o Blender).

Desvantagens das unidades físicas

A maior desvantagem de usar unidades de luz físicas é que você terá que prestar atenção cuidadosa ao intervalo dinâmico em uso em um determinado momento. Você pode encontrar erros de precisão de ponto flutuante ao misturar intensidades de luz muito altas com intensidades de luz muito baixas.

Na prática, isso significa que você terá que gerenciar manualmente suas configurações de exposição para garantir que não esteja superexpondo ou subexpondo demais a sua cena. A autoexposição pode ajudar a equilibrar a luz em uma cena para trazê-la a uma faixa normal, mas não consegue recuperar a precisão perdida de um alcance dinâmico que seja alto demais.

Usar unidades físicas de luz e câmera não fará automaticamente o seu projeto parecer melhor. Às vezes, afastar-se do realismo pode, na verdade, fazer uma cena parecer melhor aos olhos humanos. Além disso, o uso de unidades físicas exige um grau maior de rigor em comparação com unidades não físicas. A maioria dos benefícios das unidades físicas só pode ser obtida se as unidades forem configuradas corretamente para corresponder às referências do mundo real.

Nota

Unidades de luz física estão disponíveis apenas em renderização 3D, não em 2D.

Setting up physical light units

Unidades de luz física podem ser habilitadas separadamente das unidades de câmera física.

Para habilitar corretamente as unidades de luz física, são necessárias quatro etapas:

  1. Enable the project setting.

  2. Configure the camera.

  3. Configure the environment.

  4. Configure Light3D nodes.

Como as unidades físicas de luz e câmera exigem apenas alguns cálculos para lidar com a conversão de unidades, habilitá-las não tem nenhum impacto perceptível de desempenho na CPU. No entanto, no lado da GPU, as unidades físicas de câmera atualmente aplicam profundidade de campo. Isso tem um impacto moderado no desempenho. Para aliviar esse impacto, a qualidade da profundidade de campo pode ser reduzida nas Configurações Avançadas do Projeto.

Enable the project setting

Abra as Configurações do Projeto, habilite a opção Configurações Avançadas e depois ative Renderização > Luzes e Sombras > Use Unidades Físicas de Luz. Reinicie o editor.

Configure the camera

Aviso

Quando as unidades físicas de luz estão ativadas e se você tiver um nó WorldEnvironment na sua cena (ou seja, o Environment do editor estiver desativado), você deve ter um recurso CameraAttributes atribuído ao nó WorldEnvironment. Caso contrário, a viewport do editor 3D aparecerá extremamente brilhante se você tiver um nó DirectionalLight3D visível.

No nó Camera3D, você pode adicionar um recurso CameraAttributes à sua propriedade Attributes. Esse recurso é usado para controlar a profundidade de campo e a exposição da câmera. Ao usar CameraAttributesPhysical, sua propriedade de distância focal também é usada para ajustar o campo de visão da câmera.

Quando as unidades físicas de luz estão ativadas, as seguintes propriedades adicionais ficam disponíveis na seção Exposure de CameraAttributesPhysical:

  • Abertura: O tamanho da abertura da câmera, medido em f-stops. Um f-stop é uma razão adimensional entre a distância focal da câmera e o diâmetro da abertura. Uma configuração de abertura alta resultará em uma abertura menor, o que leva a uma imagem mais escura e com foco mais nítido. Uma abertura baixa resulta em uma abertura ampla que permite a entrada de mais luz, resultando em uma imagem mais clara e com menos foco.

  • Velocidade do Obturador (Shutter Speed): O tempo que o obturador leva para abrir e fechar, medido em segundos inversos (1/N). Um valor menor permitirá a entrada de mais luz, resultando em uma imagem mais clara, enquanto um valor maior permitirá a entrada de menos luz, resultando em uma imagem mais escura. Ao obter ou definir esta propriedade com um script, a unidade é em segundos em vez de segundos inversos.

  • Sensibilidade: A sensibilidade dos sensores da câmera, medida em ISO. Uma sensibilidade maior resulta em uma imagem mais clara. Quando a exposição automática está ativada, isso pode ser usado como um método de compensação de exposição. Dobrar o valor aumentará o valor de exposição (medido em EV100) em 1 stop.

  • Multiplicador: Um multiplicador de exposição não-físico. Valores maiores aumentarão o brilho da cena. Isso pode ser usado para ajustes de pós-processamento ou para fins de animação.

O valor padrão de Abertura de 16 f-stops é apropriado para ambientes externos durante o dia (por exemplo, para uso com uma DirectionalLight3D padrão). Para iluminação interna, um valor entre 2 e 4 é mais apropriado.

Um valor típico usado em fotografia e produção de filmes é 1/50 (0,02 segundos). A fotografia noturna geralmente usa um obturador em torno de 1/10 (0,1 segundos), enquanto a fotografia de esportes utiliza uma velocidade de obturador entre 1/250 (0,004 segundos) e 1/1000 (0,001 segundos) para reduzir o desfoque de movimento.

Na vida real, a sensibilidade é geralmente definida entre 50 ISO e 400 ISO para fotografia externa diurna, dependendo das condições climáticas. Valores mais altos são usados para fotografia interna ou noturna.

Nota

Ao contrário de câmeras reais, os efeitos adversos de aumentar a sensibilidade ISO ou diminuir a velocidade do obturador (como grão visível ou rastros de luz) não são simulados no Godot.

Consulte Setting up physical camera units para uma descrição das propriedades de CameraAttributesPhysical que também estão disponíveis quando não se usam unidades de luz físicas.

Configure the environment

Aviso

A configuração padrão é projetada para cenas externas diurnas. Cenas noturnas e internas precisarão de ajustes na intensidade do DirectionalLight3D e do WorldEnvironment background para parecerem corretas. Caso contrário, as luzes posicionais serão mal visíveis em sua intensidade padrão.

Se você ainda não adicionou um nó WorldEnvironment e Camera3D à cena atual, faça-o agora clicando nos 3 pontos verticais na parte superior da viewport do editor 3D. Clique em Add Sun to Scene, abra o diálogo novamente e, em seguida, clique em Add Environment to Scene.

Depois de habilitar as unidades de luz físicas, uma nova propriedade fica disponível para edição no recurso Environment:

  • Intensidade do Plano de Fundo (Background Intensity): A intensidade do céu de fundo em nits (candelas por metro quadrado). Isso também afeta a luz ambiente e refletida se seus respectivos modos estiverem definidos como Background. Se uma Background Energy personalizada for definida, essa energia será multiplicada pela intensidade.

Configure the light nodes

Após habilitar unidades de luz físicas, duas novas propriedades ficam disponíveis nos nós Light3D:

  • Intensidade: A intensidade da luz em lux (DirectionalLight3D) ou lúmens (OmniLight3D/SpotLight3D). Se uma Energy personalizada for definida, essa energia será multiplicada pela intensidade.

  • Temperatura: a temperatura de cor da luz definida em Kelvin. Se uma Cor personalizada for definida, essa cor será multiplicada pela temperatura de cor.

Intensidade do OmniLight3D/SpotLight3D

Lúmens são uma medida de fluxo luminoso, que é a quantidade total de luz visível emitida por uma fonte de luz por unidade de tempo.

Para o SpotLight3Ds, assumimos que a área externa ao cone visível é cercada por um material perfeitamente absorvente de luz. Consequentemente, o brilho aparente da área do cone não muda conforme o cone aumenta ou diminui de tamanho.

Uma lâmpada doméstica típica pode variar de 600 a 1.200 lúmens. Uma vela tem cerca de 13 lúmens, enquanto um poste de luz pode ter aproximadamente 60.000 lúmens.

DirectionalLight3D intensity

Lux é uma medida do fluxo luminoso por unidade de área, equivalente a um lúmen por metro quadrado. Lux é a medida da quantidade de luz que atinge uma superfície em um determinado momento.

Com o DirectionalLight3D, em um dia claro e ensolarado, uma superfície sob luz solar direta pode receber aproximadamente 100.000 lux. Um cômodo típico de uma casa pode receber aproximadamente 50 lux, enquanto o solo iluminado pela luz da lua pode receber aproximadamente 0,1 lux.

Color temperature

6500 Kelvin é branco. Valores mais altos resultam em cores mais frias (mais azuis), enquanto valores mais baixos resultam em cores mais quentes (mais alaranjadas).

A temperatura do sol em um dia nublado é de aproximadamente 6500 Kelvin. Em um dia claro, a temperatura do sol varia entre 5500 e 6000 Kelvin. Em um dia claro, ao nascer ou pôr do sol, a temperatura do sol gira em torno de 1850 Kelvin.

Tabela de temperatura de cor de 1.000 Kelvin (esquerda) a 12.500 Kelvin (direita)

Tabela de temperatura de cor de 1.000 Kelvin (esquerda) a 12.500 Kelvin (direita)

Outras propriedades do Light3D, como Energy e Color, permanecem editáveis para fins de animação, e quando você ocasionalmente precisa criar luzes com propriedades não realistas.

Setting up physical camera units

Unidades de câmera física podem ser ativadas separadamente das unidades de luz física.

Depois de adicionar um recurso CameraAttributesPhysical à propriedade Camera Attributes de um nó Camera3D, algumas propriedades como FOV não serão mais editáveis. Em vez disso, essas propriedades agora são governadas pelas propriedades do CameraAttributesPhysical, como distância focal e abertura.

CameraAttributesPhysical oferece as seguintes propriedades em sua seção Frustum:

  • Distância de Foco: Distância da câmera do objeto que estará em foco, medida em metros. Internamente, este valor será limitado para ser pelo menos 1 milímetro maior que a Distância Focal.

  • Distância Focal: Distância entre a lente da câmera e a abertura da câmera, medida em milímetros. Controla o campo de visão e a profundidade de campo. Uma distância focal maior resultará em um campo de visão menor e uma profundidade de campo mais estreita, o que significa que menos objetos estarão em foco. Uma distância focal menor resultará em um campo de visão mais amplo e uma profundidade de campo maior, o que significa que mais objetos estarão em foco. Esta propriedade anula as propriedades FOV e Keep Aspect do Camera3D, tornando o uso delas somente para leitura no inspector (read-only).

  • Near/Far: As distâncias de recorte próxima e distante em metros. Elas se comportam da mesma forma que as propriedades do Camera3D de mesmo nome. Valores de Near mais baixos permitem que a câmera exiba objetos que estão muito próximos, ao custo de possíveis problemas de precisão (Z-fighting) na distância. Valores de Far mais altos permitem que a câmera veja mais longe, também ao custo de possíveis problemas de precisão (Z-fighting) na distância.

A distância focal padrão de 35 mm corresponde a uma lente grande angular. Ainda assim, resulta em um campo de visão que é visivelmente mais estreito em comparação com o FOV vertical "prático" padrão de 75 graus. Isso ocorre porque casos de uso não relacionados a jogos, como cinema e fotografia, favorecem o uso de um campo de visão mais estreito para uma aparência mais cinematográfica.

Valores comuns de distância focal usados em cinema e fotografia são:

  • Fisheye (grande angular): Abaixo de 15 mm. Quase nenhuma profundidade de campo visível.

  • Wide angle (Grande angular): Entre 15 mm e 50 mm. Profundidade de campo reduzida.

  • Padrão: Entre 50 mm e 100 mm. Profundidade de campo padrão.

  • Telefoto: Maior que 100 mm. Profundidade de campo aumentada.

Assim como ao usar o modo de aspecto Keep Height, o campo de visão efetivo depende da proporção do aspecto da viewport, com proporções de aspecto mais amplas resultando automaticamente em um campo de visão horizontal mais amplo.

O ajuste automático de exposição com base no nível de brilho médio da câmera também pode ser ativado na seção Auto Exposure, com as seguintes propriedades:

  • Sensibilidade Mínima: O brilho mais escuro que a câmera pode atingir, medido em EV100.

  • Sensibilidade Máxima: O brilho mais claro que a câmera pode atingir, medido em EV100.

  • Velocidade: A velocidade do efeito de auto exposição. Afeta o tempo necessário para a câmera realizar a auto exposição. Valores mais altos permitem transições mais rápidas, mas os ajustes resultantes podem parecer distrativos dependendo da cena.

  • Escala: A escala do efeito de auto exposição. Afeta a intensidade da auto exposição.

EV100 é um valor de exposição (EV) medido com uma sensibilidade ISO de 100. Consulte essa tabela para valores comuns de EV100 encontrados na vida real.