composer仅支持directional、point、spot三种硬编码光源,无ambient light和area light;所谓“环境光”实为directional light的简化封装,且光源参数不支持关键帧动画。

Composer 里没有“环境灯光”这个独立类型,所谓“环境光”只是 Directional Light(平行光)或 Ambient Light(环境光)组件的误称;而它压根不支持 Area Light(区域光)——所有声称在 Composer 中启用区域光的操作,实际都是在混淆 Unity 或 Blender 的工作流。
Composer 的光源类型只有三种,且不可扩展
Composer 的光源系统是硬编码的精简实现,仅支持:DirectionalLight(方向光)、PointLight(点光源)、SpotLight(聚光灯)。不存在 AmbientLight 组件——你看到的“环境光”选项,其实是某些导入插件伪造的 UI 标签,背后仍是 Directional Light 的简化封装;也没有 AreaLight,任何试图添加矩形/圆盘状光源的操作都会失败或自动降级为点光源。
- 在层级管理器中右键 →
Create Light,下拉菜单里只有Directional、Point、Spot三项 - 属性检查器中 Light 组件的
type字段是只读下拉,选项固定为这三种,无法手动输入或扩展 - 导入 FBX/OBJ 场景时若含 Area Light 节点,Composer 会静默丢弃该光源,或将其转为
PointLight并丢失尺寸、形状等关键参数
为什么你调不出“环境光”颜色和强度?
因为 Composer 没有真正意义上的环境光模型:它不计算间接光照,也不支持 GI(全局光照)。所谓“基础照明”,是靠 Directional Light 的低强度 + 高漫反射材质模拟出来的视觉妥协。如果你在属性面板里找不到 color 或 intensity 可编辑,大概率是因为当前选中的是 Directional Light ——它的 color 固定为白色(#FFFFFF),且 intensity 字段在部分版本中被隐藏,只能通过脚本临时覆盖。
- Directional Light 的
color字段在 UI 中常置灰,改了也无效;必须用脚本写入:light.color = new Color(0.8f, 0.9f, 1f) - 点光源和聚光灯才开放完整的
color、intensity、range编辑,但不支持关键帧动画(SOLIDWORKS Composer 全系列均不支持光源参数插值) - 所谓“开启环境光”按钮,本质是批量把所有 Directional Light 的
intensity设为 0.2,并强制开启ReceiveShadow,并非新增光源类型
点光源能当区域光用吗?怎么控制范围?
不能,但可以逼近。点光源是球形衰减,区域光是面状发射+软边过渡,二者物理模型完全不同。Composer 中唯一能调节“照射面积”的参数是 range(作用半径),但它只控制衰减截止距离,不改变光形或柔边程度。
-
range值设太大,会导致远处物体过曝、阴影虚化失控;设太小,近处又照不匀 - 想模拟筒灯效果?必须配聚光灯 + 调
spotAngle(锥角)+ 手动缩放光源节点大小(仅影响视图图标,不影响实际光照) - 多个点光源并排布置可模拟条形灯,但需手动对齐位置、同步
intensity和color,且无法产生真正的面光源软阴影
真正麻烦的地方在于:Composer 的光源参数不是“设完就生效”,而是和模型接收端强绑定——比如 range 再大,如果目标模型的 MeshRenderer 没开 ReceiveShadow,或者材质 Alpha 未启用测试,那光就等于没打过去。这点很容易被忽略,尤其在导入复杂装配体后。











