Files
godot-docs-l10n/classes/zh_Hans/class_proceduralskymaterial.rst

313 lines
16 KiB
ReStructuredText

:github_url: hide
.. _class_ProceduralSkyMaterial:
ProceduralSkyMaterial
=====================
**继承:** :ref:`Material<class_Material>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
一种材质,可为 :ref:`Sky<class_Sky>` 资源定义简单天空。
.. rst-class:: classref-introduction-group
描述
----
**ProceduralSkyMaterial** 提供了一种通过为太阳、天空和地面定义程序参数,来快速创建一个有效背景的方法。天空和地面由主颜色、地平线颜色、以及在它们之间插值的缓动曲线定义。太阳通过天空中的位置、颜色、以及缓动曲线结束时距太阳的最大角度来描述。因此,最大角度定义了天空中太阳的大小。
\ **ProceduralSkyMaterial** 支持最多 4 个太阳,它们使用场景中前四个 :ref:`DirectionalLight3D<class_DirectionalLight3D>` 节点的颜色、能量、方向和角距离。这意味着太阳由其相应的 :ref:`DirectionalLight3D<class_DirectionalLight3D>` 的属性单独定义,并由 :ref:`sun_angle_max<class_ProceduralSkyMaterial_property_sun_angle_max>`:ref:`sun_curve<class_ProceduralSkyMaterial_property_sun_curve>` 全局定义。
\ **ProceduralSkyMaterial** 使用轻量级着色器来绘制天空,因此适合实时更新。这使得它成为简单、低计算成本且不切实际的天空的绝佳选择。如果你需要更真实的程序化选项,请使用 :ref:`PhysicalSkyMaterial<class_PhysicalSkyMaterial>`\ 。
.. rst-class:: classref-reftable-group
属性
----
.. table::
:widths: auto
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`float<class_float>` | :ref:`energy_multiplier<class_ProceduralSkyMaterial_property_energy_multiplier>` | ``1.0`` |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`Color<class_Color>` | :ref:`ground_bottom_color<class_ProceduralSkyMaterial_property_ground_bottom_color>` | ``Color(0.2, 0.169, 0.133, 1)`` |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`float<class_float>` | :ref:`ground_curve<class_ProceduralSkyMaterial_property_ground_curve>` | ``0.02`` |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`float<class_float>` | :ref:`ground_energy_multiplier<class_ProceduralSkyMaterial_property_ground_energy_multiplier>` | ``1.0`` |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`Color<class_Color>` | :ref:`ground_horizon_color<class_ProceduralSkyMaterial_property_ground_horizon_color>` | ``Color(0.6463, 0.6558, 0.6708, 1)`` |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`Texture2D<class_Texture2D>` | :ref:`sky_cover<class_ProceduralSkyMaterial_property_sky_cover>` | |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`Color<class_Color>` | :ref:`sky_cover_modulate<class_ProceduralSkyMaterial_property_sky_cover_modulate>` | ``Color(1, 1, 1, 1)`` |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`float<class_float>` | :ref:`sky_curve<class_ProceduralSkyMaterial_property_sky_curve>` | ``0.15`` |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`float<class_float>` | :ref:`sky_energy_multiplier<class_ProceduralSkyMaterial_property_sky_energy_multiplier>` | ``1.0`` |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`Color<class_Color>` | :ref:`sky_horizon_color<class_ProceduralSkyMaterial_property_sky_horizon_color>` | ``Color(0.6463, 0.6558, 0.6708, 1)`` |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`Color<class_Color>` | :ref:`sky_top_color<class_ProceduralSkyMaterial_property_sky_top_color>` | ``Color(0.385, 0.454, 0.55, 1)`` |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`float<class_float>` | :ref:`sun_angle_max<class_ProceduralSkyMaterial_property_sun_angle_max>` | ``30.0`` |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`float<class_float>` | :ref:`sun_curve<class_ProceduralSkyMaterial_property_sun_curve>` | ``0.15`` |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
| :ref:`bool<class_bool>` | :ref:`use_debanding<class_ProceduralSkyMaterial_property_use_debanding>` | ``true`` |
+-----------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
属性说明
--------
.. _class_ProceduralSkyMaterial_property_energy_multiplier:
.. rst-class:: classref-property
:ref:`float<class_float>` **energy_multiplier** = ``1.0`` :ref:`🔗<class_ProceduralSkyMaterial_property_energy_multiplier>`
.. rst-class:: classref-property-setget
- |void| **set_energy_multiplier**\ (\ value\: :ref:`float<class_float>`\ )
- :ref:`float<class_float>` **get_energy_multiplier**\ (\ )
天空整体亮度的乘数。数值越高,天空就越亮。
.. rst-class:: classref-item-separator
----
.. _class_ProceduralSkyMaterial_property_ground_bottom_color:
.. rst-class:: classref-property
:ref:`Color<class_Color>` **ground_bottom_color** = ``Color(0.2, 0.169, 0.133, 1)`` :ref:`🔗<class_ProceduralSkyMaterial_property_ground_bottom_color>`
.. rst-class:: classref-property-setget
- |void| **set_ground_bottom_color**\ (\ value\: :ref:`Color<class_Color>`\ )
- :ref:`Color<class_Color>` **get_ground_bottom_color**\ (\ )
地面底部的颜色。会与 :ref:`ground_horizon_color<class_ProceduralSkyMaterial_property_ground_horizon_color>` 混合。
.. rst-class:: classref-item-separator
----
.. _class_ProceduralSkyMaterial_property_ground_curve:
.. rst-class:: classref-property
:ref:`float<class_float>` **ground_curve** = ``0.02`` :ref:`🔗<class_ProceduralSkyMaterial_property_ground_curve>`
.. rst-class:: classref-property-setget
- |void| **set_ground_curve**\ (\ value\: :ref:`float<class_float>`\ )
- :ref:`float<class_float>` **get_ground_curve**\ (\ )
:ref:`ground_horizon_color<class_ProceduralSkyMaterial_property_ground_horizon_color>` 渐变到 :ref:`ground_bottom_color<class_ProceduralSkyMaterial_property_ground_bottom_color>` 的速度。
.. rst-class:: classref-item-separator
----
.. _class_ProceduralSkyMaterial_property_ground_energy_multiplier:
.. rst-class:: classref-property
:ref:`float<class_float>` **ground_energy_multiplier** = ``1.0`` :ref:`🔗<class_ProceduralSkyMaterial_property_ground_energy_multiplier>`
.. rst-class:: classref-property-setget
- |void| **set_ground_energy_multiplier**\ (\ value\: :ref:`float<class_float>`\ )
- :ref:`float<class_float>` **get_ground_energy_multiplier**\ (\ )
地面颜色的乘数。值越高,地面越亮。
.. rst-class:: classref-item-separator
----
.. _class_ProceduralSkyMaterial_property_ground_horizon_color:
.. rst-class:: classref-property
:ref:`Color<class_Color>` **ground_horizon_color** = ``Color(0.6463, 0.6558, 0.6708, 1)`` :ref:`🔗<class_ProceduralSkyMaterial_property_ground_horizon_color>`
.. rst-class:: classref-property-setget
- |void| **set_ground_horizon_color**\ (\ value\: :ref:`Color<class_Color>`\ )
- :ref:`Color<class_Color>` **get_ground_horizon_color**\ (\ )
地面在地平线处的颜色。会与 :ref:`ground_bottom_color<class_ProceduralSkyMaterial_property_ground_bottom_color>` 混合。
.. rst-class:: classref-item-separator
----
.. _class_ProceduralSkyMaterial_property_sky_cover:
.. rst-class:: classref-property
:ref:`Texture2D<class_Texture2D>` **sky_cover** :ref:`🔗<class_ProceduralSkyMaterial_property_sky_cover>`
.. rst-class:: classref-property-setget
- |void| **set_sky_cover**\ (\ value\: :ref:`Texture2D<class_Texture2D>`\ )
- :ref:`Texture2D<class_Texture2D>` **get_sky_cover**\ (\ )
要使用的天空覆盖纹理。这个纹理必须使用一个等角投影(类似于\ :ref:`PanoramaSkyMaterial<class_PanoramaSkyMaterial>`\ )。 该纹理的颜色将被\ *添加*\ 到现有的天空颜色中,并将乘以 :ref:`sky_energy_multiplier<class_ProceduralSkyMaterial_property_sky_energy_multiplier>`:ref:`sky_cover_modulate<class_ProceduralSkyMaterial_property_sky_cover_modulate>`\ 。这主要适用于显示夜晚的星星,但也可以用来显示白天或夜晚的云彩(具有非物理精确性的外观)。
.. rst-class:: classref-item-separator
----
.. _class_ProceduralSkyMaterial_property_sky_cover_modulate:
.. rst-class:: classref-property
:ref:`Color<class_Color>` **sky_cover_modulate** = ``Color(1, 1, 1, 1)`` :ref:`🔗<class_ProceduralSkyMaterial_property_sky_cover_modulate>`
.. rst-class:: classref-property-setget
- |void| **set_sky_cover_modulate**\ (\ value\: :ref:`Color<class_Color>`\ )
- :ref:`Color<class_Color>` **get_sky_cover_modulate**\ (\ )
应用于 :ref:`sky_cover<class_ProceduralSkyMaterial_property_sky_cover>` 纹理的色调。可用于改变天空覆盖的颜色或不透明度,不受天空能量的影响,对于昼夜转换或天气转换很有用。只有在 :ref:`sky_cover<class_ProceduralSkyMaterial_property_sky_cover>` 中定义了纹理时才有效。
.. rst-class:: classref-item-separator
----
.. _class_ProceduralSkyMaterial_property_sky_curve:
.. rst-class:: classref-property
:ref:`float<class_float>` **sky_curve** = ``0.15`` :ref:`🔗<class_ProceduralSkyMaterial_property_sky_curve>`
.. rst-class:: classref-property-setget
- |void| **set_sky_curve**\ (\ value\: :ref:`float<class_float>`\ )
- :ref:`float<class_float>` **get_sky_curve**\ (\ )
:ref:`sky_horizon_color<class_ProceduralSkyMaterial_property_sky_horizon_color>` 渐变到 :ref:`sky_top_color<class_ProceduralSkyMaterial_property_sky_top_color>` 的速度。
.. rst-class:: classref-item-separator
----
.. _class_ProceduralSkyMaterial_property_sky_energy_multiplier:
.. rst-class:: classref-property
:ref:`float<class_float>` **sky_energy_multiplier** = ``1.0`` :ref:`🔗<class_ProceduralSkyMaterial_property_sky_energy_multiplier>`
.. rst-class:: classref-property-setget
- |void| **set_sky_energy_multiplier**\ (\ value\: :ref:`float<class_float>`\ )
- :ref:`float<class_float>` **get_sky_energy_multiplier**\ (\ )
天空颜色的倍数。值越高天空越亮。
.. rst-class:: classref-item-separator
----
.. _class_ProceduralSkyMaterial_property_sky_horizon_color:
.. rst-class:: classref-property
:ref:`Color<class_Color>` **sky_horizon_color** = ``Color(0.6463, 0.6558, 0.6708, 1)`` :ref:`🔗<class_ProceduralSkyMaterial_property_sky_horizon_color>`
.. rst-class:: classref-property-setget
- |void| **set_sky_horizon_color**\ (\ value\: :ref:`Color<class_Color>`\ )
- :ref:`Color<class_Color>` **get_sky_horizon_color**\ (\ )
天空在地平线处的颜色。会与 :ref:`sky_top_color<class_ProceduralSkyMaterial_property_sky_top_color>` 混合。
.. rst-class:: classref-item-separator
----
.. _class_ProceduralSkyMaterial_property_sky_top_color:
.. rst-class:: classref-property
:ref:`Color<class_Color>` **sky_top_color** = ``Color(0.385, 0.454, 0.55, 1)`` :ref:`🔗<class_ProceduralSkyMaterial_property_sky_top_color>`
.. rst-class:: classref-property-setget
- |void| **set_sky_top_color**\ (\ value\: :ref:`Color<class_Color>`\ )
- :ref:`Color<class_Color>` **get_sky_top_color**\ (\ )
天空在顶部的颜色。会与 :ref:`sky_horizon_color<class_ProceduralSkyMaterial_property_sky_horizon_color>` 混合。
.. rst-class:: classref-item-separator
----
.. _class_ProceduralSkyMaterial_property_sun_angle_max:
.. rst-class:: classref-property
:ref:`float<class_float>` **sun_angle_max** = ``30.0`` :ref:`🔗<class_ProceduralSkyMaterial_property_sun_angle_max>`
.. rst-class:: classref-property-setget
- |void| **set_sun_angle_max**\ (\ value\: :ref:`float<class_float>`\ )
- :ref:`float<class_float>` **get_sun_angle_max**\ (\ )
太阳完全淡出消失的位置与太阳中心的距离。
.. rst-class:: classref-item-separator
----
.. _class_ProceduralSkyMaterial_property_sun_curve:
.. rst-class:: classref-property
:ref:`float<class_float>` **sun_curve** = ``0.15`` :ref:`🔗<class_ProceduralSkyMaterial_property_sun_curve>`
.. rst-class:: classref-property-setget
- |void| **set_sun_curve**\ (\ value\: :ref:`float<class_float>`\ )
- :ref:`float<class_float>` **get_sun_curve**\ (\ )
在太阳圆盘边缘和 :ref:`sun_angle_max<class_ProceduralSkyMaterial_property_sun_angle_max>` 之间,太阳消失得有多快。
.. rst-class:: classref-item-separator
----
.. _class_ProceduralSkyMaterial_property_use_debanding:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **use_debanding** = ``true`` :ref:`🔗<class_ProceduralSkyMaterial_property_use_debanding>`
.. rst-class:: classref-property-setget
- |void| **set_use_debanding**\ (\ value\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **get_use_debanding**\ (\ )
如果为 ``true``\ ,则启用去色带。去色带会增加少量噪点,这有助于减少天空中颜色的平滑变化而出现的色带。
.. |virtual| replace:: :abbr:`virtual (本方法通常需要用户覆盖才能生效。)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (本方法无副作用,不会修改该实例的任何成员变量。)`
.. |vararg| replace:: :abbr:`vararg (本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。)`
.. |constructor| replace:: :abbr:`constructor (本方法用于构造某个类型。)`
.. |static| replace:: :abbr:`static (调用本方法无需实例,可直接使用类名进行调用。)`
.. |operator| replace:: :abbr:`operator (本方法描述的是使用本类型作为左操作数的有效运算符。)`
.. |bitfield| replace:: :abbr:`BitField (这个值是由下列位标志构成位掩码的整数。)`
.. |void| replace:: :abbr:`void (无返回值。)`