
对视觉的理解核心在于光线与物体之间的相互作用。你看到的并非物体本身,而是光源投射、被物体表面反射后进入眼睛的光线。光线只是对真实光学过程的简化描述,OpenGL 等渲染系统通常将光分解为若干分量来描述其对表面的影响。
常见的三大光照分量及其意义
- 环境光:来自场景周围的光源的平均强度,给所有顶点提供一致的基底照明。尽管它能让场景变得可见,但仅靠环境光往往使物体看起来扁平、缺乏深度感。
- 漫反射光:来自特定方向的定向光在物体表面产生的均匀散射,帮助建立体积感与形状轮廓。若光源落在物体左侧,漫反射就会在表面呈现相应的明暗分布。
- 镜面反射光:来自明确方向的光在表面形成的高光区域,随观察角度和材质特性而变化,提升物体的光泽感和立体感。镜面反射通常在高光区域呈现鲜明、清晰的亮点。
- 自发光分量:物体材质本身具有的发光属性,即使在无其他光源的场景中也会显示特定颜色。若与其它光源共同存在,自发光与环境、漫反射、镜面反射的混合会产生丰富的颜色与亮度变化VSport。
光源如何在场景中发挥作用
- 当光源仅具环境光时,物体看起来像被“包裹在光雾中”,缺乏立体感。
- 引入漫反射光后,物体表面从一个方向接收光线并在表面扩散,能够呈现更真实的体积与形状。
- 增加镜面反射后,表面的高亮区域随观察者视角而变化,显著提升物体的真实感与金属、塑料等材质的表现力。
- 自发光分量的加入会改变对象的基本颜色基调,尤其在与其他光源叠加时,会产生更丰富的色彩混合效果。
灯光源在 CHAI3D 中的三种基本类型
- 点光源(Positional Light):在空间中取一个位置向各个方向发光,强度随距离衰减,适合模拟房间灯、台灯等局部光源。
- 定向光源(Directional Light):没有明确的光源位置,光线似乎来自固定方向,适合模拟太阳、月亮等远距离光源。
- 聚光灯(Spot Light):具备位置和方向、并且具有光锥角的光源,常用于手术器械照明等场景,也可用于为特定区域提供聚焦照明。
阴影的实现与优化
- 阴影映射通过对场景中的每个像素进行可见性测试来生成。基本做法是先从光源的视角渲染深度信息(阴影贴图),再在常规场景渲染时比较像素深度与阴影贴图中的深度,以决定该像素是否被遮挡。
- 使用聚光灯时,可以启用阴影贴图来提高阴影质量。可根据需要调整阴影贴图的分辨率(低、中、高),分辨率越高,阴影越清晰,但渲染成本越大。
- 更新阴影贴图通常需要在场景渲染前完成一次,在多摄像机/多帧缓冲场景中,阴影贴图通常只需计算一次以提升效率。
实际应用要点
- 合理分配环境光、漫反射光、镜面反射光以及自发光分量,结合材质属性,才能在场景中实现真实感与艺术表达的平衡。
- 关注光源相对位置、方向以及材质的反射特性,确保阴影与高光区域的呈现符合预期的视觉效果。
- 在需要快速迭代和测试着色显示时,使用定向光来快速查看物体的“固态感”和模型毛刺,便于调试材质与网格。
通过上述要点,可以在 NSDT 场景编辑器中更高效地实现逼真的光照和阴影效果,从而提升3D场景的真实感与观感体验。
