Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Unidades físicas de luz y cámara
¿Por qué usar unidades físicas de luz y cámara?
Godot utiliza unidades arbitrarias para muchas propiedades físicas que se aplican a la luz, como el color, la energía, el campo de visión de la cámara y la exposición. Por defecto, estas propiedades utilizan unidades arbitrarias porque el uso de unidades físicas precisas conlleva algunas desventajas que no valen la pena para muchos juegos. Dado que Godot favorece la facilidad de uso por defecto, las unidades físicas de luz están desactivadas de manera predeterminada.
Ventajas de las unidades físicas
Si buscas el fotorrealismo en tu proyecto, utilizar las unidades del mundo real como base puede ayudar a que las cosas sean más fáciles de ajustar. Las referencias de materiales, luces y brillo de escenas del mundo real están ampliamente disponibles en sitios web como Physically Based.
Utilizar unidades del mundo real en Godot también puede ser útil al portar una escena desde otros programas 3D que utilizan unidades físicas de luz (como Blender).
Desventajas de las unidades físicas
La mayor desventaja de utilizar unidades físicas de luz es que tendrás que prestar mucha atención al rango dinámico que se esté utilizando en cada momento. Puedes encontrarte con errores de precisión de coma flotante al mezclar intensidades de luz muy altas con intensidades de luz muy bajas.
En la práctica, esto significa que tendrás que gestionar manualmente los ajustes de exposición para asegurarte de no sobreexponer o subexponer demasiado la escena. La autoexposición puede ayudarte a equilibrar la luz de una escena para llevarla a un rango normal, pero no puede recuperar la precisión perdida debido a un rango dinámico demasiado elevado.
El uso de unidades físicas de luz y cámara no hará que tu proyecto se vea mejor automáticamente. A veces, alejarse del realismo puede hacer que una escena se vea mejor para el ojo humano. Además, el uso de unidades físicas requiere un mayor nivel de rigor en comparación con las unidades no físicas. La mayoría de los beneficios de las unidades físicas solo pueden obtenerse si las unidades se configuran correctamente para que coincidan con las referencias del mundo real.
Nota
Las unidades físicas de luz solo están disponibles en el renderizado 3D, no en el 2D.
Configurar unidades de iluminación física
Las unidades físicas de luz pueden activarse de forma independiente de las unidades físicas de cámara.
Para habilitar las unidades físicas de luz correctamente, se requieren 4 pasos:
Habilita el ajuste del proyecto.
Configura la cámara.
Configura el entorno.
Configura los nodos Light3D.
Dado que las unidades físicas de luz y cámara solo requieren un puñado de cálculos para gestionar la conversión de unidades, habilitarlas no tiene ningún impacto de rendimiento notable en la CPU. Sin embargo, en el lado de la GPU, las unidades físicas de cámara actualmente obligan a utilizar profundidad de campo (depth of field). Esto tiene un impacto de rendimiento moderado. Para mitigar este impacto, se puede disminuir la calidad de la profundidad de campo en los ajustes avanzados del proyecto.
Enable the project setting
Abre la Configuración del Proyecto, activa el interruptor de modo Avanzado y luego habilita Renderizado > Luces y Sombras > Usar Unidades de Luz Física. Reinicia el editor.
Configurar la cámara
Advertencia
Cuando las unidades físicas de luz están activadas y tienes un nodo WorldEnvironment en tu escena (es decir, el entorno del editor está desactivado), debes tener un recurso CameraAttributes asignado al nodo WorldEnvironment. De lo contrario, el viewport del editor 3D aparecerá extremadamente brillante cuando tienes un nodo DirectionalLight3D visible.
En el nodo Camera3D, puedes añadir un recurso CameraAttributes a su propiedad Attributes. Este recurso se utiliza para controlar la profundidad de campo y la exposición de la cámara. Al utilizar CameraAttributesPhysical, su propiedad de distancia focal también se utiliza para ajustar el campo de visión de la cámara.
Cuando las unidades físicas de luz están activadas, las siguientes propiedades adicionales pasan a estar disponibles en la sección Exposure de CameraAttributesPhysical:
Apertura: El tamaño de la apertura de la cámara, medido en f-stops. Un f-stop es una relación sin unidades entre la distancia focal de la cámara y el diámetro de la apertura. Un ajuste de apertura alto dará como resultado una apertura más pequeña, lo que produce una imagen más tenue y un enfoque más nítido. Una apertura baja da como resultado una apertura amplia que deja pasar más luz, produciendo una imagen más brillante y menos enfocada.
Velocidad de obturación (Shutter Speed): El tiempo que el obturador tarda en abrirse y cerrarse, medido en segundos inversos (
1/N). Un valor más bajo dejará pasar más luz, lo que dará lugar a una imagen más brillante, mientras que un valor más alto dejará pasar menos luz, lo que dará lugar a una imagen más oscura. Al obtener o establecer esta propiedad mediante un script, la unidad se expresa en segundos en lugar de segundos inversos.Sensibilidad (Sensitivity): La sensibilidad de los sensores de la cámara, medida en ISO. Una sensibilidad más alta da como resultado una imagen más brillante. Cuando la autoexposición está activada, esto puede usarse como un método de compensación de exposición. Duplicar el valor aumentará el valor de exposición (medido en EV100) en 1 paso.
Multiplicador (Multiplier): Un multiplicador de exposición no físico. Los valores más altos aumentarán el brillo de la escena. Esto puede utilizarse para ajustes de post-procesamiento o con fines de animación.
El valor de Apertura por defecto de 16 f-stops es adecuado para exteriores durante el día (es decir, para usar con una DirectionalLight3D predeterminada). Para la iluminación de interiores, un valor entre 2 y 4 es más apropiado.
La velocidad de obturación típica utilizada en fotografía y producción cinematográfica es de 1/50 (0.02 segundos). La fotografía nocturna generalmente utiliza un obturador de alrededor de 1/10 (0.1 segundos), mientras que la fotografía deportiva utiliza una velocidad de obturación de entre 1/250 (0.004 segundos) y 1/1000 (0.001 segundos) para reducir el desenfoque de movimiento (motion blur).
En la vida real, la sensibilidad suele establecerse entre 50 ISO y 400 ISO para la fotografía de exteriores durante el día, dependiendo de las condiciones climáticas. Se utilizan valores más altos para la fotografía de interiores o nocturna.
Nota
A diferencia de las cámaras en la vida real, los efectos adversos de aumentar la sensibilidad ISO o disminuir la velocidad de obturación (como grain visible o estelas de luz) no se simulan en Godot.
Consulta Setting up physical camera units para obtener una descripción de las propiedades de CameraAttributesPhysical que también están disponibles cuando no se utilizan unidades físicas de luz.
Configurar el entorno
Advertencia
La configuración por defecto está diseñada para escenas de exterior durante el día. Las escenas nocturnas y de interior necesitarán ajustes en la DirectionalLight3D y en la intensidad del fondo (background) del WorldEnvironment para verse correctamente. De lo contrario, las luces posicionales apenas serán visibles con su intensidad predeterminada.
Si aún no has añadido un nodo WorldEnvironment y un nodo Camera3D a la escena actual, hazlo ahora haciendo clic en los 3 puntos verticales en la parte superior del viewport del editor 3D. Haz clic en Añadir un Sol a la Escena, abre el diálogo de nuevo y haz clic en Añadir Entorno a la Escena.
Después de activar las unidades físicas de luz, una nueva propiedad pasa a estar disponible para editar en el recurso Environment:
Intensidad del Fondo: La intensidad del cielo de fondo en nits. Esto también afecta a la luz ambiental y reflejada si sus respectivos modos están configurados como Background. Si se establece una Background Energy personalizada, esta energía se multiplica por la intensidad.
Configurar los nodos de luz
Después de activar las unidades físicas de luz, pasan a estar disponibles 2 nuevas propiedades para editar en los nodos Light3D:
Intensidad: La intensidad de la luz en lux (DirectionalLight3D) o lúmenes (OmniLight3D/SpotLight3D). Si se establece una Energía personalizada, esta energía se multiplica por la intensidad.
Temperatura: La temperatura de color de la luz definida en Kelvin. Si se establece un Color personalizado, este color se multiplica por la temperatura.
Intensidad de OmniLight3D/SpotLight3D
Los lúmenes son una medida del flujo luminoso, que es la cantidad total de luz visible emitida por una fuente de luz por unidad de tiempo.
Para las SpotLight3D, asumimos que el área fuera del cono visible está rodeada por un material que absorbe la luz perfectamente. En consecuencia, el brillo aparente del área del cono no cambia a medida que el cono aumenta o disminuye de tamaño.
Una bombilla doméstica típica puede oscilar entre unos 600 lúmenes y 1,200 lúmenes. Una vela tiene unos 13 lúmenes, mientras que una farola de calle puede tener aproximadamente 60,000 lúmenes.
Intensidad de DirectionalLight3D
El lux es una medida del flujo luminoso por unidad de área; equivale a un lumen por metro cuadrado. El lux es la medida de cuánta luz incide sobre una superficie en un momento determinado.
Con DirectionalLight3D, en un día soleado y despejado, una superficie bajo la luz solar directa puede recibir aproximadamente 100000 lux. Una habitación típica de una casa puede recibir aproximadamente 50 lux, mientras que el suelo iluminado por la Luna puede recibir aproximadamente 0.1 lux.
Temperatura de color
6500 Kelvin es el blanco. Los valores más altos dan como resultado colores más fríos (más azules), mientras que los valores más bajos dan como resultado colores más cálidos (más naranjas).
El sol en un día nublado es de aproximadamente 6500 Kelvin. En un día despejado, el sol está entre 5500 y 6000 Kelvin. En un día despejado al amanecer o al atardecer, el sol oscila alrededor de los 1850 Kelvin.
Tabla de temperatura de color desde 1.000 Kelvin (izquierda) hasta 12.500 Kelvin (derecha)
Otras propiedades de Light3D, como Energía y Color, siguen siendo editables para fines de animación y para cuando ocasionalmente necesites crear luces con propiedades no realistas.
Setting up physical camera units
Las unidades de cámara física pueden activarse independientemente de las unidades de luz física.
Despues de añadir un recurso CameraAttributesPhysical a la propiedad de Atributos de cámara de un nodo Camera3D, algunas propiedades como FOV dejarán de poder editarse. En su lugar, esas propiedades pasarán a estar controladas por las propiedades de CameraAttributesPhysical, como la distancia focal y la apertura.
CameraAttributesPhysical ofrece las siguientes propiedades en su sección Frustum:
Distancia de Enfoque: Distancia entre la cámara y el objeto que estará enfocado, medida en metros. Internamente, este valor se limitará para que sea menos 1 milímetro mayor que la Distancia focal.
Distancia focal: Distancia entre la lente de la cámara y la apertura de la cámara, medida en milímetros. Controla el campo de visión y la profundidad de campo. Una distancia focal mayor dará como resultado un campo de visión más pequeño y una profundidad de campo más reducida, lo que significa que habrá menos objetos enfocados. Una distancia focal menor dará como resultado un campo de visión más amplio y una mayor profundidad de campo, lo que significa que más objetos estarán enfocados. Esta propiedad sustituye las propiedades FOV y Mantener Aspecto de Camera3D, haciendo que pasen a ser de solo lectura en el inspector.
Cerca/Lejos: Las distancias de recorte cercana y lejana, medidas en metros. Funcionan igual que las propiedades de Camera3D con el mismo nombre. Valores más bajos de Cerca permiten que la cámara muestre objetos muy cercanos, a costa de posibles problemas de precisión (Z-fighting) en la distancia. Valores más altos de Lejos permiten que la cámara vea más lejos, también a costa de posibles problemas de precisión (Z-fighting) en la distancia.
La distancia focal predeterminada de 35 mm corresponde a un objetivo gran angular. Aun así, da como resultado un campo de visión notablemente más estrecho en comparación con el FOV vertical “práctico” predeterminado de 75 grados. Esto se debe a que, en usos no relacionados con videojuegos, como el cine y la fotografía, se suele preferir un campo de visión más estrecho para lograr una apariencia más cinematográfica.
Valores comunes de distancia focal en cine y fotografía:
[b]Ojo de pez (gran angular extremo):[/b] Por debajo de 15 mm. Casi no se nota la profundidad de campo.
Wide angle: Entre 15 mm y 50 mm. Profundidad de campo reducida.
Standard: Entre 50 mm y 100 mm. Profundidad de campo estándar.
Teleobjetivo: Mayor de 100 mm. Mayor profundidad de campo.
Como al usar el modo de aspecto Mantener Altura, el campo de visión efectivo depende de la relación de aspecto de la ventana de visualización, y las relaciones de aspecto más amplias resultan automáticamente en un campo de visión horizontal más amplio.
El ajuste automático de la exposición basado en el nivel de brillo promedio de la cámara también se puede habilitar en la sección Auto Exposure, con las siguientes propiedades:
Min Sensitivity: El brillo más oscuro que se permite alcanzar a la cámara, medido en EV100.
Max Sensitivity: El brillo máximo que se le permite alcanzar a la cámara, medido en EV100.
Speed: La velocidad del efecto de autoexposición. Afecta al tiempo que necesita la cámara para realizar la autoexposición. Los valores más altos permiten transiciones más rápidas, pero los ajustes resultantes pueden distraer dependiendo de la escena.
Scale: La escala del efecto de autoexposición. Afecta a la intensidad de la autoexposición.
EV100 es un valor de exposición (EV) medido con una sensibilidad ISO de 100. Consulta esta tabla para ver los valores EV100 comunes que se encuentran en la vida real.