DirectionalLight QML Type

定义场景中的定向光。更多

Import Statement: import QtQuick3D
Inherits:

Light

属性

详细说明

定向光从无限远处的一个无法识别的光源向一个方向发射光线。这与现实生活中阳光的作用方式类似。定向光的范围是无限的,并且不会减弱。

如果启用castsShadow ,阴影将与光线方向平行。

定向光实际上没有位置,因此移动它不会产生任何影响。光线将始终沿着光线的 Z 轴方向发射。

沿 X 轴或 Y 轴旋转光线会改变光线的发射方向。

只有在以下情况下才会对定向光进行缩放:

  • 如果 Z 轴的刻度设置为负数,则光线将朝相反方向发射。
  • 如果任意轴的缩放比例设置为 0,则光线将沿着世界的 Z 轴发射。

    注: 旋转光线不会产生任何效果。

我们来看一个简单的例子:

import QtQuick
import QtQuick3D
View3D {
    anchors.fill: parent

    PerspectiveCamera { z: 600 }

    DirectionalLight {
    }

    Model {
        source: "#Sphere"
        scale: Qt.vector3d(4, 4, 4)
        materials: PrincipledMaterial {
            baseColor: "#40c060"
            roughness: 0.1 // make specular highlight visible
        }
    }
}

在这里,DirectionalLight 使用默认的white 颜色,沿着 DirectionalLight 节点的 Z 轴方向发光。

绕 X 轴旋转 60 度会产生以下结果。灯光不再沿 Z 轴方向直射,而是 "向下 "60 度:

DirectionalLight {
    eulerRotation.x: 60
}

更多使用示例,请参见Qt Quick 3D - 灯光示例

另请参阅 PointLight,SpotLight, 和阴影贴图

属性文档

csmBlendRatio : real [since 6.8]

该属性定义了任何级联的阴影与前一个级联的阴影混合的程度。

范围:[0.0, 1.0]

默认值:0.05

此属性在 Qt 6.8 中引入。


csmNumSplits : int [since 6.8]

该属性定义了渲染阴影贴图时应分割的挫边数量。不分割意味着渲染阴影贴图时,阴影贴图将覆盖所有阴影投射和接收对象的边界框。

范围[0, 3]

默认值:0

此属性在 Qt 6.8 中引入。

另请参阅 csmSplit1,csmSplit2, 和csmSplit3


csmSplit1 : real [since 6.8]

该属性定义了 CSM 激活时阴影贴图分割的第一个级联发生的位置。

范围:[0.0, 1.0]

默认值:0.1

注: 该属性仅在DirectionalLight::csmNumSplits 大于0 时使用。

此属性在 Qt 6.8 中引入。

另请参阅 csmSplit2csmSplit3


csmSplit2 : real [since 6.8]

此属性定义当 CSM 处于活动状态时,阴影贴图分割的第二个级联将发生在何处。

范围:[0.0, 1.0]

默认值:0.25

注意: 该属性仅在DirectionalLight::csmNumSplits 大于1 时使用。

此属性在 Qt 6.8 中引入。

另请参阅 csmSplit1csmSplit3


csmSplit3 : real [since 6.8]

此属性定义当 CSM 处于活动状态时,阴影贴图分割的第三个级联将发生在何处。

范围:[0.0, 1.0]

默认值:0.5

注意: 该属性仅在DirectionalLight::csmNumSplits 大于2 时使用。

此属性在 Qt 6.8 中引入。

另请参阅 csmSplit1csmSplit2


lockShadowmapTexels : bool [since 6.9]

启用此属性后,阴影贴图的像素会 "锁定 "在世界中的位置,从而消除阴影边缘的闪烁,但代价是阴影贴图的像素会变大。它的工作原理是为每个级联使用统一大小和像素对齐的阴影贴图。

默认值:false

此属性在 Qt 6.9 中引入。


© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.