灯具
灯光组件是 Qt Design Studio 场景中光源的主要来源。作为次要光源,您可以使用基于图像的照明。
要将灯光组件添加到您的 UI 中,请执行以下操作之一
- 将灯光组件从“组件”>“Qt Quick 3D”拖动到 3D 视图或“导航器”>“3D”>“场景”。
- 在 3D 视图中右键单击并从上下文菜单中选择“创建”>“灯光”。
如果在“组件”中找不到灯光组件,按照添加和删除模块的说明将“Qt Quick 3D”模块添加到您的项目中。
注意:如果您在创建项目时选择将 目标 Qt 版本 设置为 Qt 5,则可用的灯光组件及其属性将略有不同。这些属性可能也位于“属性”视图中不同的位置。
默认情况下,所有导入的场景都创建了一个方向性光源。您可以使用以下组件添加灯光
注意:额外灯光的添加会负面影响您场景的渲染性能。尽量使场景简单,并适当使用灯光。使用“Scene Environment”组件应用基于图像的照明,可产生柔和而微妙的照明。
要编辑灯光属性,请选择导航器或 3D 视图中的灯光组件,然后在“属性”视图或通过拖动 3D 视图中的黄色光图把手调整其属性。
指定光照组件效果的总体倍数,请调整亮度属性。范围属性指定哪些组件及其子组件被光照。将颜色属性设置为指定光照模型的颜色。将环境光颜色属性设置为指定在光照之前应用于材质的环境颜色。
您可以在时间轴视图中对光照属性进行动画处理。
方向光
方向光从不可识别的无限远处源发出单一方向的光线。这类似于阳光。
使用光源图标的亮度操纵杆(1),调整任意光照组件的亮度属性。
如果启用了投射阴影属性,阴影将沿着光照方向定位。方向光具有无限的范围且无衰减。
移动方向光不会产生任何效果。光始终沿光源的z轴方向发出。沿x或y轴旋转光会改变光照发出方向。
在以下情况下调整方向光的比例会产生效果
- 如果z轴比例设置为负数,光将沿相反方向发出。
- 如果任何轴的比例设置为0,光将沿世界z轴发出。旋转光没有效果。
点光
点光可以描述为一个从光源中心向所有方向以相等的强度发出光线的球体。这类似于灯泡发出光的方式。
从点光中心向外应用光照,距离中心越远,光照越暗。移动点光会改变光的发射位置。旋转或缩放点光不会有任何效果。
要控制点光的衰减和范围,设置恒定衰减、线性衰减和二次衰减属性。恒定衰减是光衰减项的常数因子。衰减是指由于光子的吸收或散射,光在穿过介质时强度的减少。
提高线性衰减值可以增加光照效果在距离光的比例上减弱的速率。值0.0表示没有线性衰减。
提高二次衰减值可以增加光照效果在远离光源的表面减弱的速率。值为1.0表示点光衰减严格遵守平方反比定律。例如,当距离组件加倍时,光的强度减少到四分之一。在属性视图中调整二次衰减,或使用光源图标的操纵杆(2)。
除了衰减外,点光具有与方向光相同的属性。
聚光灯
聚光灯以锥形向外发出光线。光强度在锥角属性值接近时减弱。光照强度开始减弱的角度由内锥角属性定义。这两个角度均在属性视图中以度为单位定义。使用属性视图或光源图标的操纵杆调整锥角(3)、内锥角(4)和二次衰减(5)属性。
在锥形角内部,聚光灯的行为类似于点光源。那里的光强度根据逆平方定律减弱。然而,可以通过线性渐灭、线性渐灭和二次渐灭属性来控制光强度的衰减(和范围)。
区域光源
注意: 区域光源组件仅在Qt 5中可用。
区域光源类似于方向光源。然而,与在整个场景中发射均匀明亮的光不同,区域光源从矩形形状的组件处发射方向光源。使用光图工具或属性视图来设置宽度(6)和高度(7)属性以确定区域光源的大小。
除了大小外,区域光源与方向光源具有相同的属性。
此图像展示了如何使用两个不同的区域光源为组件着色不同颜色。
您可以旋转、缩放和移动区域光源。
阴影
要使用此灯光模拟阴影,请启用投掷阴影复选框。投影阴影与区域或点光源配合最佳。
要指定阴影的暗度,设置阴影因子属性。值0表示不会投射阴影。
要指定应用到阴影的模糊量,设置阴影滤镜属性。
如果您看到组件本身投射阴影,可以尝试小幅调整阴影偏移的属性值。
要指定为阴影渲染生成的阴影贴图的质量,设置阴影贴图质量属性。较低的质量使用资源较少,但产生的阴影质量较低;而较高的质量使用更多的资源来产生更好的阴影质量。
要指定阴影贴图的最大的距离,设置阴影贴图远点属性值。使用较小的值可能会提高图的精度和效果。
烘焙光照贴图
注意:光映射烘焙在Qt设计工作室4.1中作为技术预览发布。
烘焙光照贴图允许预先生成来自光源的直接照明,例如方向光源、点光源以及聚光灯,包括由灯光产生的阴影。在运行时,不再执行片段着色器中的适当计算,并在阴影的情况下,实时生成可能昂贵的阴影贴图,而是采样预先生成的光贴图。
烘焙光照贴图
要为3D场景中的模型烘焙光照贴图
- 在3D视图工具栏中,选择,或在任何地方右键单击3D视图并选择烘焙光源以打开光源烘焙设置对话框以定义烘焙灯光的设置。
- 为每个光源设置烘焙模式
- 要同时烘焙直接照明(漫射和阴影)和间接照明,请选择烘焙所有。
- 要仅烘焙间接照明,请选择烘焙间接照亮。
- 要不包括光源在内的灯光烘焙,请选择烘焙禁用。
- 对于您希望将其烘焙到光照贴图中的每个3D模型,选择已使用和启用,并设置所需分辨率。
- 可选。如果您有未公开模型或光线(例如,在其他软件中创建的导入3D模型),请选中公开模型和光线,将此组件的模型和光线添加到对话框的模型和光线部分。
- 选择烘焙。
手动烘焙3D模型的烘焙光贴图
注意:默认情况下,烘焙的光贴图组件在导航器视图中不可见。要使其可见,请在导航器视图中选择
要为3D模型烘焙光贴图
- 从组件,将烘焙光贴图组件拖到导航器视图中的3D模型上。
- 在导航器视图中,选择bakedLightmap,在属性视图中
- 选择启用。
- 在键中,设置生成光贴图的文件名基本。这必须是一个唯一的名称。
- 在加载前缀中,设置保存生成光贴图文件的文件夹的相对路径。
- 在导航器视图中,选择3D模型,在属性视图中,选择用于烘焙照明。
- 可选。调整分辨率来设置光贴图分辨率。这将影响光贴图烘焙的准确性和耗时。
- 在导航器视图中,选择要为烘焙光贴图的照明组件,在属性视图中,将烘焙模式设置为BakeModeAll。
- 在3D视图的任何位置单击鼠标右键,然后选择烘焙光线。
- 选择手动设置烘焙,然后选择烘焙。
在子组件内手动烘焙3D模型的烘焙光贴图
要为子组件内的3D模型烘焙光贴图,首先添加局部自定义属性以公开模型
- 在导航器视图中,右键单击子组件并选择编辑组件。
- 在导航器视图中,选择根组件。
- 在属性视图中,选择局部自定义属性部分中的
- 添加一个新属性,将类型设置为别名。
- 对于此属性,将值设置为要为烘焙光贴图指定的3D模型的ID。
- 在导航器视图中,选择3D模型,在属性视图中
- 选择用于烘焙照明。
- 将分辨率设置为,例如,128。
- 保存您的更改(按Ctrl+S)并返回主项目文件。要做到这一点,请选择顶栏中的面包屑。
- 从组件视图中,将烘焙光贴图组件拖到导航器视图中的子组件上。
- 在导航器视图中,选择子组件,并转到代码视图。
- 在代码视图中,您需要使用公开属性设置子组件内模型的属性。
在子组件内部添加以下代码。
lmSphere.bakedLightmap: bakedLightmap
它应该看起来像这样
MyGroup { id: group lmSphere.bakedLightmap: bakedLightmap BakedLightmap { id: bakedLightmap loadPrefix: "lightmaps" } }
- 在导航器视图中,选择,在属性视图中
- 选择启用。
- 在键中,设置生成光贴图的文件名基本。这必须是一个唯一的名称。
- 在3D视图的任何位置单击鼠标右键,然后选择烘焙光线。
- 选择手动设置烘焙,然后选择烘焙。
在特定Qt许可下提供。
了解更多信息。