UE制作展厅项目实录(甲方要求:静态烘培)
技术成长日志 - UE 静态烘培的前期准备工作
索引关键词
烘培
问题场景
扫描件展厅模型场景进行静态灯光烘焙时,出现无法构建光照、烘焙耗时过长、场景变黑 / 闪烁等问题,需通过统一配置引擎渲染参数、关卡设置、灯光属性解决。
解决方案
1. 引擎渲染参数基础配置
1.1 关闭 Lumen 并开启静态光照
- 操作路径:编辑 → 项目设置 → 引擎 - 渲染(Engine - Rendering);
- 核心操作:
- 关闭 Lumen 全局光照 / 反射相关选项;
- 找到「光照(Lighting)」分类,勾选「允许静态光照(Allow Static Lighting)」。
1.2 修改阴影贴图方法(适配移动平台)
- 操作路径:项目设置 → 引擎 - 渲染 → 阴影(Shadows)(位于 Global Illumination 栏目正上方);
- 核心操作:将「阴影贴图方法(Shadow Map Method)」从默认的「虚拟阴影贴图(Virtual Shadow Maps)」改为「阴影贴图(Shadow Maps)」。
2. 关卡环境适配配置
2.1 关卡类型限制
因「世界分区(World Partition)」限制,静态灯光烘焙需在空白关卡(Empty Level) 或基础关卡(Basic) 中执行,否则无法正常构建光照。
2.2 移动端模式异常处理
- 问题:开启 Android Vulkan Mobile 模式后,场景持续运行导致光照无法构建;
- 解决方案:关闭编辑器运行按钮旁的 Android 小人图标,退出移动端预览模式。
3. 烘焙范围与效率优化
- 核心操作:在展厅 / 模型密集区放置「光照重要性体积(Lightmass Importance Volume)」,并完全包裹所有模型;
- 作用:限定引擎高质量光影计算范围,避免无意义的全局计算导致烘焙耗时过长。
4. 灯光属性统一配置
- 操作:选中场景中所有灯光(Directional Light/Point Light/Rect Light 等),在 Details 面板中将「Mobility(移动性)」改为:
- Static(静态):灯光信息全额写入光照贴图(第二套 UV),烘焙效果最优;
- Stationary(固定):部分光照信息实时计算,兼容动态调整需求。
5. 关键烘焙开关检查(必做)
5.1 操作路径
菜单栏 → 窗口(Window)→ 世界设置(World Settings)→ Lightmass 栏目。
5.2 核心检查项
- 选项:Force No Precomputed Lighting(强制无预计算光照);
- 要求:必须取消勾选!勾选后引擎不会生成任何光照贴图,表现为构建光照后场景变黑、闪烁。
技术成长日志 - UE 材质颜色调节
索引关键词
材质颜色修改
日期:2026 年 03 月 01 日
问题场景
展厅模型材质需要灵活调整基础颜色,通过在材质编辑器中添加颜色调节参数节点,实现材质基础颜色的自定义叠加,无需重新制作贴图。
解决方案
步骤 1:断开基础颜色原有连接
- 定位目标材质主节点(示例名称:Mat3d66-4668039-7-4077),找到「基础颜色 (Base Color)」引脚;
- 操作:按住键盘
Alt键,鼠标左键点击「基础颜色」引脚,断开原有连线。
步骤 2:创建颜色调节节点
- 生成乘法节点:鼠标置于材质图表空白处,按住
M键点击左键,生成Multiply (乘法)节点(用于颜色叠加运算); - 生成向量参数节点:鼠标置于空白处,按住
V键点击左键,生成绿色的VectorParameter (向量参数)节点(用于自定义颜色); - 参数配置:
- 在左侧面板修改向量参数节点名称(示例:Color_Tint,即 “颜色叠加”);
- 双击节点内的黑色色块,选择目标颜色(示例:红色)。
步骤 3:重新连接节点并保存
- 节点连线逻辑:
- 将原基础颜色的断开连线,连接到
Multiply节点的A输入引脚; - 将自定义的
Color_Tint节点输出端,连接到Multiply节点的B输入引脚; - 将
Multiply节点的输出引脚,连接回主节点的「基础颜色 (Base Color)」输入引脚;
- 将原基础颜色的断开连线,连接到
- 保存生效:点击材质编辑器左上角的「应用 (Apply)」和「保存 (Save)」按钮,完成配置。
技术成长日志 - UE Lightmass 烘焙高质量参数配置
索引关键词
高质量烘培、产品出图
日期:2026 年 03 月 01 日
问题场景
传统 CPU 烘焙(Lightmass)后,墙面出现GI 光子黑斑(牛皮癣),表现为灯光周围不均匀、脏兮兮的阴影块,本质是引擎光子采样不足、光照贴图分辨率过低或底层参数不合理导致。
解决方案:三步消除黑斑 + 最终高质量烘焙参数表
🔥 第一把火:提升光照质量级别(核心解决稀疏光子问题)
- 原理:预览模式下光子数量极少,稀疏光子被强行模糊拉伸形成黑斑;提升质量级别会增加光子密度,让光影更细腻。
- 操作:顶部菜单 → 构建 (Build) → 光照质量 (Lighting Quality),从「预览 (Preview)」改为高 (High) 或 产品级 (Production)。
- 代价:烘焙时间显著增加(从分钟级到数十分钟级),但黑斑会肉眼可见减少。
📏 第二把火:提升模型光照贴图分辨率(解决画布像素不足)
- 诊断:视口按下
Alt + 0切换到光照贴图密度视图,若墙面呈深蓝色,说明光照贴图分辨率过低(默认常为 64)。 - 操作:选中墙面模型 → 细节面板 → 开启「覆盖光照贴图分辨率」,将数值提升至256 或 512,让墙面在密度视图中呈现绿色。
🛠️ 第三把火:Lightmass 底层参数调优(TA 终极除垢方案)
在 窗口 (Window) → 世界设置 (World Settings) → Lightmass 面板中调整以下参数:
表格
| 参数名称 | 默认值 | 推荐高质量值 | 作用说明 |
|---|---|---|---|
| 静态照明关卡比例 (Static Lighting Level Scale) | 1.0 | 0.2 ~ 0.5 | 缩小光影计算网格,更密集捕捉细节,消除角落漏光和黑斑,代价是增加计算时间 |
| 间接光照质量 (Indirect Lighting Quality) | 1.0 | 3.0 ~ 4.0 | 成倍增加光线反弹采样率,碾碎噪点与不均匀阴影,是消除黑斑的核心参数 |
| 间接光照平滑度 (Indirect Lighting Smoothness) | 1.0 | 1.1 ~ 1.2 | 为光影添加丝滑滤镜,抹平最后细微瑕疵,避免过度平滑丢失细节 |
✨ 最终高质量烘焙推荐参数表
表格
| 配置层级 | 推荐参数 | 适用场景 |
|---|---|---|
| 光照质量级别 | 产品级 (Production) | 最终出图 / 交付版本,追求极致光影细腻度 |
| 模型光照贴图分辨率 | 256(常规模型)/ 512(大面墙 / 精细模型) | 保证不同模型都能承载足够光影细节 |
| Static Lighting Level Scale | 0.3 | 平衡细节与烘焙时间 |
| Indirect Lighting Quality | 3.5 | 足够压制黑斑且不过度耗时 |
| Indirect Lighting Smoothness | 1.15 | 平滑瑕疵同时保留细节 |
技术成长日志 - UE 3D 文字模型创建(Text 3D 插件)
索引关键词
Text 3D 插件、3D 文字模型
日期:2026 年 03 月 01 日
问题场景
需要在 UE 展厅场景中添加 3D 文字模型,避免与 UI 文字较劲,通过引擎自带 Text 3D 插件可快速创建带倒角、颜值更高的专业 3D 文字,适配地编高效操作需求。
解决方案:启用 Text 3D 插件 + 快速创建 3D 文字
步骤 1:启用 Text 3D 插件(核心步骤)
- 操作路径:顶部菜单栏 → 编辑 (Edit) → 插件 (Plugins);
- 搜索并勾选:在插件窗口的搜索框中输入「Text 3D」,找到对应插件后勾选启用;
- 重启引擎:勾选后右下角会提示 “需重启引擎生效”,点击「立即重启」,完成插件加载。
步骤 2:切换至选择模式
引擎重启完毕后,按下快捷键 Shift + 1,从建模模式切换回常用的「选择 (Selection) 模式」,确保后续操作可正常进行。
步骤 3:将 3D 文字拖入场景
- 打开放置面板:点击视口左上角「带绿色加号的立方体图标(快速添加到项目)」,选择「放置 Actor (Place Actors)」,弹出放置面板;
- 搜索并拖拽:在放置面板搜索框中输入「Text 3D」,找到 Text 3D Actor 图标,鼠标左键按住图标,拖拽至场景目标位置(如红色环形墙壁上)。
步骤 4:调整 3D 文字属性
拖拽完成后,在右侧「细节 (Details) 面板」中,可直接:
- 输入所需中文文字(替换默认文字);
- 调整「厚度」参数,根据场景比例设置合适的文字厚度,实现贴合场景的视觉效果。
技术成长日志 - UE 材质内贴图拉伸平移(非破坏性 UV 调整)
索引关键词
UE、材质、贴图拉伸、贴图偏移、UV 缩放、UV 偏移
日期:2026-03-12
问题场景
复杂整合模型不想在外部软件重制 UV,使用 UE 自动生成的 UV0 后,贴图比例、位置不贴合模型(如弧形墙、长墙面贴图短、错位),要求不修改模型 UV、不影响已烘焙光照贴图(UV1),只在材质内完成调整。
操作流程:材质内实现贴图 “又拉又滑”
第一步:建立拉伸(缩放)控制
- 双击材质,进入材质编辑器。
- 新建节点:
- 按 U + 左键:添加 TextureCoordinate 节点。
- 按 M + 左键:添加 Multiply(乘法) 节点。
- 按 2 + 左键:添加 Constant2Vector 节点(命名:UV_Scale)。
- 连线:
- TextureCoordinate → Multiply A
- Constant2Vector → Multiply B
- 参数含义:
- X = U 轴(水平)缩放 / 重复次数
- Y = V 轴(垂直)缩放 / 重复次数
- 拉伸贴图:减小 X 值(如 0.7、0.6),Y 保持 1.0 不变形。
第二步:建立偏移(滑动)控制
- 继续新建节点:
- 按 A + 左键:添加 Add(加法) 节点。
- 按 2 + 左键:再添加一个 Constant2Vector 节点(命名:UV_Offset)。
- 连线:
- Multiply 输出 → Add A
- Offset 节点 → Add B
- 参数含义:
- X:U 轴左右偏移
- Y:V 轴上下偏移
第三步:接入贴图并应用
- 将 Add 节点输出 连接到 Texture Sample 的 UVs 引脚。
- 点击 Apply → Save。
- 回到视口,通过调整两个 Constant2Vector 的 X/Y,让贴图完美贴合墙面。
第四步:TA 进阶 - 材质实例化(实时可调,无需反复保存)
- 右键两个 Constant2Vector 节点(UV_Scale/UV_Offset)→ 选择 Convert to Parameter(转换为参数)。
- 确认参数命名:
- 缩放节点:
UV_Scaling - 偏移节点:
UV_Offset
- 缩放节点:
- 保存母材质后,回到内容浏览器,右键该母材质 → 选择 Create Material Instance(创建材质实例)。
- 双击打开材质实例,在右侧细节面板中:
- 勾选
UV_Scaling和UV_Offset参数的 “启用” 选项; - 直接拖动参数数值(或手动输入),实时预览视口中墙面贴图的拉伸 / 偏移效果,无需反复进入母材质保存。
- 勾选
关键小知识
- UE 自动生成的 UV0 不必局限在 0~1 第一象限,可在材质里任意缩放、偏移,视觉合理即可。
- 光照贴图(Lightmap)使用 UV1,完全独立,材质内调整 UV0 不会破坏烘焙结果。
- 长墙面 / 弧形墙优先用:缩小 U 轴缩放 + 偏移居中,可无缝贴合、无截断。
技术成长日志 - UE快速配置模型的碰撞
索引关键词
碰撞
导入的一些素材模型,往往自动的碰撞体未必满足要求,例如一些小门自动封死掉了,但发现只需要在静态物体浏览器中把细节中的碰撞设置,改为将复杂碰撞转为简单碰撞,就很好用了,于是用了一个批量代码:选中内容浏览器中需要调整碰撞体的模型,一键设置:
import unreal
def batch_update_collision():
# 获取当前在内容浏览器中选中的所有资产
selected_assets = unreal.EditorUtilityLibrary.get_selected_assets()
updated_count = 0
# 检查是否有选中资产
if not selected_assets:
unreal.log_warning("请先在内容浏览器中选中需要修改的静态网格体!")
return
for asset in selected_assets:
# 确保选中的是静态网格体 (StaticMesh)
if isinstance(asset, unreal.StaticMesh):
try:
# 获取模型的 BodySetup (引擎底层存储碰撞属性的对象)
body_setup = asset.get_editor_property("body_setup")
# 1. 修改“碰撞复杂度” (Collision Complexity) -> 将复杂碰撞用作简单碰撞
body_setup.set_editor_property("collision_trace_flag", unreal.CollisionTraceFlag.CTF_USE_COMPLEX_AS_SIMPLE)
# 2. 修改“碰撞预设” (Collision Presets) -> BlockAll
body_instance = body_setup.get_editor_property("default_instance")
body_instance.set_editor_property("collision_profile_name", "BlockAll")
# 修复点:直接传入 asset 对象本身进行保存
unreal.EditorAssetLibrary.save_loaded_asset(asset)
unreal.log(f"成功更新并保存: {asset.get_name()}")
updated_count += 1
except Exception as e:
unreal.log_error(f"更新 {asset.get_name()} 时出错: {str(e)}")
else:
unreal.log_warning(f"已跳过非静态网格体资产: {asset.get_name()}")
unreal.log(f"--- 批量修改完成!共成功更新了 {updated_count} 个模型 ---")
# 执行函数
batch_update_collision()
技术成长日志 - UE 快速创建高质量 3D 文字(Text 3D 插件・新增)
索引关键词
UE、Text 3D 插件、3D 文字、倒角文字、Place Actors、快速放置、地编高效工作流
日期:2026-03-12
问题场景
需要在展厅场景快速放置带精致倒角的立体文字标识,不想在建模软件往返导出导入,也不想用 UI 平面文字,追求一键可用、可改中文、可改厚度、自带倒角。
最优方案:启用引擎自带 Text 3D 插件(强烈推荐)
比建模模式拼字更快、边缘更顺滑、自带高级倒角,完全贴合 3D 空间摆放。
四步标准流程
1. 开启插件并重启
- 顶部菜单:编辑 (Edit) → 插件 (Plugins)
- 搜索:Text 3D
- 勾选启用 → 右下角提示重启 → 立即重启引擎
2. 切回常用选择模式
重启后按快捷键:Shift + 1从建模模式退回 选择 (Selection) 模式,方便摆放 Actor。
3. 快速拖入场景
- 视口左上角:点绿色加号立方体(快速添加到项目)
- 选择:放置 Actor (Place Actors)
- 面板搜索:Text 3D
- 左键按住图标,直接拖到墙面 / 展柜指定位置落地
4. 改字、改厚度、调样式
选中刚落地的 Text 3D,在右侧 ** 细节 (Details)** 面板直接:
- 修改文字内容(支持中文)
- 调整厚度、大小、倒角圆润度
- 赋材质即可匹配展厅风格
小坑提醒
如果找不到 Text 3D 入口:优先检查插件是否真正启用并重启成功、基础 Shape / 建模相关插件是否加载完整。
技术成长日志 - UE 标准玩家出生点设置(正规开发流程・新增)
索引关键词
UE、Player Start、玩家出生点、GameMode、游戏模式、BP_ThirdPersonCharacter、BP_ThirdPersonGameMode、世界设置
日期:2026-03-12
问题场景
需要按照UE 正规游戏开发流程设置玩家出生位置,替代手动拖动角色,实现运行游戏时自动在指定位置生成玩家。
标准操作流程(正规出生点法)
-
清理原有角色删除场景中手动放置的
BP_ThirdPersonCharacter第三人称角色蓝图。 -
放置官方出生点 Actor左侧「添加 (Add)」面板 → 基础 (Basic) → 找到 Player Start(玩家出生点)拖拽到场景目标位置(旗子图标,仅代表出生位置,无模型)。
-
配置游戏模式(核心步骤)打开「窗口 (Window) → 世界设置 (World Settings)」找到 游戏模式重载 (GameMode Override)设置为:BP_ThirdPersonGameMode(第三人称游戏模式)
-
完成验证点击运行,引擎会自动在 Player Start 位置生成可控小蓝人,无需手动放置角色。
技术成长日志 - UE快速配置模型的光照贴图(方便烘培)
索引关键词
UE、静态烘培,光照贴图
这个光照贴图是UE自动生成的,双击静态网格,进入编辑器,在侧边细节面板中,LOD0栏目下,启用光照贴图,但这远远不够,还得设置好光照贴图的尺寸和引用源。对于展厅上千件物品,实在是麻烦,因此代码。
首先在内容浏览器中,全选需要烘培的静态网格,我直接全选,然后控制台,切换为Python,输入代码:调用引擎自带的 generate_lightmap_u_vs ,现有的 UV0 重新打包排列到 UV1,光照信息输入在UV1,同时配置光照贴图的大小为256.目前来放在小屏幕上运行,这个分辨率似乎够用了
import unreal
selected_assets = unreal.EditorUtilityLibrary.get_selected_assets()
success_count = 0
unreal.log("💡 开始配置光照贴图索引与分辨率...")
for asset in selected_assets:
if isinstance(asset, unreal.StaticMesh):
name = asset.get_name()
try:
# 1. 获取 LOD 0 构建设置
build_settings = unreal.EditorStaticMeshLibrary.get_lod_build_settings(asset, 0)
# 2. 开启生成并对齐通道
build_settings.generate_lightmap_u_vs = True
build_settings.src_lightmap_index = 0
build_settings.dst_lightmap_index = 1
build_settings.min_lightmap_resolution = 256
# 3. 应用构建设置
unreal.EditorStaticMeshLibrary.set_lod_build_settings(asset, 0, build_settings)
# 4. 修改外层光照属性
asset.set_editor_property("light_map_coordinate_index", 1)
asset.set_editor_property("light_map_resolution", 256)
# 5. 保存资产触发构建
unreal.EditorAssetLibrary.save_asset(asset.get_path_name())
success_count += 1
except Exception as e:
unreal.log_error(f"❌ 处理模型 {name} 时报错: {e}")
unreal.log(f"🎉 阶段三完成!已成功为 {success_count} 个模型打通了光照贴图血脉!")
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)