烘焙法线中的坑

本文详细探讨了3D制作中法线贴图的制作过程及其常见问题,包括高模法线、低模法线、UV重叠和软件互导导致的问题。错误包括使用错误的倒角和细分方法、低模硬边处理不当、UV重叠导致的法线混淆以及在不同软件间转换模型时丢失法线信息。解决方案包括正确处理模型边缘、避免UV重叠影响法线烘焙、理解和调整UV接缝以及注意在导入导出模型时保持法线信息。此外,还提到了Unity中法线贴图的设置注意事项。
部署运行你感兴趣的模型镜像

法线贴图(NormalMap)是3d从业者第一个学到的技术活。这篇文章就来细品,在制作过程曾犯下的错误与其原因。走过路过瞧一瞧,说不定这里就有你疑惑多年问题的答案。

法线是什么?
 


先简单说下定义。

物体平面上任意一点,垂直于平面的方向,就是法线方向。以3dsmax为例,修改器添加“编辑法线”。就能看到该模型的顶点法线方向。

法线贴图的做法相当简单:做高模和低模→低模展UV→高低模烘焙法线

烘焙法线的意义,就是把高模的法线方向,以像素的形式,存到低模的表面上。贴上法线贴图的低模,就会有高模的光影变化,从而看起来像高模一样。(unlit没有法线,因为没有光影变化。)

下面开始说问题

做法线贴图看似三步,但每个环节都会出问题。

1. 高模法线有问题

正方体的硬转角,低模转高模,为了高模能有圆滑的转角(或叫高光边),常见做法是,倒角+细分。
 


如果用的是这种倒角+细分。恭喜你,不管细分有多高,烘焙后肯定会获得一个凸起来的面。这就像正方形直接细分会变成球一样。

并且由于贴图在引擎压缩后,贴图精度不够,会产生马赛克方块一样的平面。
 


正确做法,倒角不能影响到原模型的边缘形状。

这样才能保住中心平面是用4个相同方向的法线算平均,算出来整个面都是一个方向。高模甚至不需要细分,拐角处正好是完美的0-90度过渡。

2.低模法线有问题

高模的光滑组(软硬边)随便分都没事,只要看起来对就能用。

但低模不同,作为接收法线的受体,有很多限制。

低模需要烘焙的地方不能有硬边。如果一定要硬边,硬边处UV需要切开。
 


这是高模,绿线是硬边
 


如果低模UV不断开处有硬边,法线明显有一条锯齿错误。
 


会发生错误的原因很好理解,硬边同时存在两个方向的法线,分别对应到左右两个面。

假设法线贴图,左边需要红色才能还原高模法线,右边需要蓝色。

而红过渡到蓝没法在一个像素内完成,所以游戏交易共用像素的硬边,肯定会产生错误。

同理切开UV重新摆,会使硬边上有足够像素做红蓝过渡。

可效果相同谁会选择更麻烦的做法呢。。直接低模全软就好

3.低模UV重叠

为保证贴图像素利用率,低模一般会有UV左右对称重叠。

常见做法如下。

低模删掉对称面,和高模一起把穿插部件分开。高低模烘焙出法线贴图,对称低模缝合断面,贴上法线贴图。


思考一下,低模的对称缝合线,应该用硬边还是软边?

看图可知。答案是硬边。
 


用于烘焙的“低模”在删除面时,切口就已经变成了硬边,所以烘焙出来的法线只能用于硬边模型。螺口不对自然无法开螺丝。

结合23两条,不难得出:

•        模型全软边也能烘焙,不管UV切不切。

•        烘焙模型法线被你改了,自然要把原模型切口处法线改成一样。

•        所以,是UV接缝但不是切口处的线,无需改成硬边。

有些老前辈的教条“烘焙法线时UV接缝处要硬边”,现在看看就是笑话。知其然而不知其所以然的样子,真有趣。

甚至于我还要继续打脸。

“UV接缝处要硬边”的源头,是UV重叠会影响烘贴图。只要UV重叠不会影响到烘贴图,就不用切开模型。

做法如下:

•        低模对称缝合好,全软边,存为最终游戏内用的低模A

•        原本想用于烘焙的面,设为一个单独材质球。其他面设为另一个材质球,存为低模B。

•        B模型红色材质球烘焙贴图。出来的法线即可直接贴到低模A上。
 


4.不同软件互导

改变法线的方法有分两种,1.软硬边2.光滑组

软件导出模型成FBX,OBJ等模型资源时,会把 光滑组/软硬边 转化成法线方向。

以max为例,模型在导入导出时,均会提示你,是否导光滑组(max里的光滑组)。
 


如果导入时没勾选,光滑组信息会丢弃,法线方向被锁定,法线颜色变为绿色,此时编辑光滑组会不起作用,编辑面会导致法线凌乱瞎算。(重置法线即可解开)

5.引擎里贴图设置

Unity内法线贴图在用时,需要指定Texture Type为Normal map。勾选这个相当于对法线进行了Unpack,也就是法线贴图的RG两个通道进行了*2-1

但如果你不需要引擎为你unpack,而是自己解的话,记得把sRGB去掉。
 


曾经有一次自己反复检查1-4到底哪里出了问题,结果花了好久才发现自己没去掉sRGB,惨痛的教训。

还没点赞收藏的GKD,I‘ve got you in my sight.
 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>嗯,用户问的是Blender材质球除了直接拖放到模型上的其他应用方法。这个问题很实用,因为很多新手可能只知道最基础的拖放操作。 从用户提供的引用材料来看,引用[1]提到了在模型上添加多种材质的方法,引用[3]则介绍了使用蒙版做纹理叠加的技术。这些都是很好的切入点。 用户可能是个Blender初学者,已经掌握了基础操作,现在想探索更高级的材质应用技巧。考虑到材质操作在3D创作中的核心地位,这个问题确实值得深入讲解。 让我想想材质球的各种应用方式。除了简单的拖放,还有材质混合、程序化纹理、节点编辑、UV映射等多种方法。特别是引用[3]提到的蒙版叠加技术,这是专业工作中常用的技巧。 用户可能还不太清楚材质节点系统的强大功能,这应该是重点介绍的部分。节点编辑可以创建非常复杂的材质效果,比如引用[1]中提到的原理化BSDF的高级用法。 另外,引用[2]提到的Blender到Unity的工作流程也很重要,特别是材质在不同软件间的兼容性问题。这可能是用户没想到但实际很有用的知识点。 在回答时要注意避免过于技术化的术语,用用户能理解的语言解释。比如“混合着色器节点”这样的概念需要配合具体使用场景来说明。 考虑到用户可能是视觉创作者,应该多举一些实际应用的例子,比如游戏资产制作、产品渲染等场景下的材质应用技巧。引用[3]中提到的PS式混合模式类比就很形象,可以借鉴这种讲解方式。 最后要记得生成几个相关问题,帮助用户深入探索这个主题。比如材质节点编程、跨平台工作流优化等方向都很值得延伸。</think>在Blender中,材质球的应用远不止简单的拖放操作。以下是几种进阶应用方法,结合引用内容的关键技术点: ### 1. **多材质分配(基于材质槽)** * **方法**:在物体属性中创建多个材质槽,为同一模型的不同区域指定不同材质(如武器手柄用木材,刀刃用金属)。 * **操作参考**: ```python 选中模型 → 材质属性 → 点击"+"添加材质槽 → 为每个槽指定材质 → 进入编辑模式选择面 → 点击"指定"按钮关联材质槽 ``` * **引用依据**:引用[^1]提到在模型上添加多种材质需通过材质属性界面操作。 ### 2. **蒙版纹理混合(节点核心)** * **原理**:使用**混合着色器节点**连接两种材质,通过**蒙版纹理**(如灰度图)控制混合区域。 * **应用场景**: - 生锈金属:用蒙版控制锈迹(材质A)与干净金属(材质B)的分布 - 地形材质:混合草地、泥土、岩石 * **技术细节**: - 蒙版白色区域显示材质A,黑色区域显示材质B(引用[^3]) - 可调整混合模式(正片叠底/叠加等)实现PS级效果 ### 3. **程序化纹理生成(动态材质)** * **无需贴图**:通过**节点编辑器**组合数学噪波(如沃罗诺伊、柏林噪波),实时生成: - 大理石纹路 - 木材年轮 - 星空效果 * **优势**:无限分辨率,参数可动态调整。 ### 4. **材质继承与复用** * **库文件管理**: 1. 创建专用`.blend`文件存储常用材质球 2. 新工程中通过 **文件 > 追加 > 选择材质** 调用 * **引用关联**:引用[^2]强调资源管理规范(如版本命名、打包贴图防止丢失)。 ### 5. **跨软件工作流(以Unity为例)** * **导出注意事项**: - 命名规范:材质名避免特殊字符(引用[^2]建议用`Armor_Knight_V3`格式) - 贴图打包:导出前执行 **文件 > 外部数据 > 打包资源** - 节点转换:复杂节点材质需在Unity中重新连接或烘焙为贴图 ### 6. **动画驱动材质** * **动态效果实现**: - 用**关键帧**控制材质参数(如透明度做溶解效果) - 通过**驱动器**将物体属性关联到材质节点(如速度影响表面划痕强度) > ⚠️ **避指南**:若导入Unity后材质失效,检查: > - 贴图路径是否丢失(引用[^2]的打包操作可预防) > - 是否使用Unity不支持的节点(如置换需转换为法线贴图) --- ### 相关问题拓展 1. **如何用节点编辑器创建可交互的发光材质(如触碰后亮起)?** 2. **Blender程序化材质在游戏引擎中如何优化性能?** 3. **多材质模型的UV拆分有哪些最佳实践?** 4. **蒙版混合材质时如何解决接缝处的过渡问题?** [^1]: 材质属性界面添加多材质操作 [^2]: 跨软件导出时的命名规范与资源打包 [^3]: 蒙版混合原理与混合模式应用
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值