news 2026/10/1 1:23:13

Blender二次元角色纹理教程:从零复刻原神风格化渲染

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Blender二次元角色纹理教程:从零复刻原神风格化渲染

1. 从零理解二次元角色纹理的底层逻辑

1.1 为什么《原神》风格的质感这么难复刻

很多人第一次尝试在 Blender 里给角色上材质,都会经历一个相似的挫败:模型建得还行,一贴图就“垮”了。要么颜色发灰、要么高光死板、要么整体看起来像塑料玩具,跟《原神》里那种通透、干净、带一点手绘感的皮肤和布料完全不是一回事。

问题出在哪?我踩过几次坑之后才想明白:《原神》的质感不是靠“真实物理”堆出来的,而是靠一套高度风格化的渲染逻辑。它的核心特征可以拆成三层来理解。

第一层是色块分明。你去看原神角色的立绘和实机模型,皮肤、头发、衣服的明暗交界非常干脆,几乎没有写实渲染里那种大面积的柔和渐变。阴影是一块颜色,亮部是另一块颜色,中间过渡很窄。这种处理方式其实更接近传统二维动画的“赛璐璐”上色,而不是物理正确的光照。

第二层是边缘光与轮廓强调。角色在场景里之所以“跳”得出来,是因为边缘有一圈偏冷或偏暖的亮边,把角色从背景里剥离出来。这个边缘光不是简单的 Fresnel 叠加,它往往带有颜色倾向,并且会根据光照方向变化。

第三层是材质的手绘感。皮肤不是纯色,头发有渐变的色带,布料有轻微的纹理暗示,但这些细节都被控制在一个很克制的范围内,不会喧宾夺主。整体观感是“干净”,而不是“复杂”。

理解了这三点,你就知道为什么直接套用 Principled BSDF 加一张 PBR 贴图会失败——那套流程是为写实服务的,而我们要做的是风格化。这也是为什么这个教程值得单独拿出来讲:它需要的不是更贵的插件,而是对渲染逻辑的重新理解。

1.2 在 Blender 里复刻这套逻辑需要哪些准备

在动手之前,先把工具链理清楚。我实测下来,做二次元角色纹理,Blender 自带的节点系统完全够用,不需要额外买什么付费插件。但有几个基础设置必须提前做好,否则后面会反复返工。

首先是色彩管理。Blender 默认的视图变换是 Filmic 或 AgX,这两个对风格化角色其实不太友好,会把颜色压得很灰。做二次元质感,建议把视图变换切成Standard,这样颜色更接近你贴图里画的那个色值。具体位置在渲染属性面板的 Color Management 里,View Transform 选 Standard,Look 选 None。这一步不做,你后面调半天颜色都是白费。

其次是渲染引擎的选择。EEVEE 和 Cycles 都能做,但思路不同。EEVEE 速度快,适合实时预览和迭代,而且它的 Shader to RGB 节点是做卡通渲染的利器。Cycles 更准,但对风格化来说反而要额外压制物理感。我的建议是:主力用 EEVEE 调效果,最终出图如果追求极致可以用 Cycles 配合专门的卡通着色节点。这个教程以 EEVEE 为主,因为它对新手更友好,迭代成本低。

第三是贴图绘制工具。你可以直接在 Blender 的 Texture Paint 模式里画,也可以用外部软件画好再导入。如果追求效率,Substance Painter 或者 Krita 都行。但我要提醒一句:二次元贴图不需要画得很细,很多时候大面积色块加少量手绘笔触就够了,画太细反而会破坏干净感。

最后是参考图的准备。强烈建议找几张原神角色的官方立绘和游戏内截图放在旁边对照。注意看他们的皮肤阴影是什么颜色、头发的高光带在哪、衣服的褶皱怎么处理。这些观察会直接决定你调参数的方​​向。

1.3 核心节点思路:把“光照”变成“色块”

传统 PBR 流程里,光照是引擎算的,你只负责给材质参数。但风格化渲染里,你要主动干预光照结果,把它“压”成色块。在 Blender 里实现这个目标,核心靠两个东西:Shader to RGB 节点和ColorRamp 节点。

Shader to RGB 的作用是把光照计算的结果转成颜色数据,这样你就能用 ColorRamp 对它做阶梯化处理。举个例子:原本光照从暗到亮是平滑过渡的,经过 ColorRamp 设置几个硬阶梯之后,就变成了“暗部一块、中间一块、亮部一块”的赛璐璐效果。这就是二次元质感的底层机制。

具体节点连接逻辑是这样的:Diffuse BSDF 或 Emission 接 Shader to RGB,然后 Shader to RGB 的输出接 ColorRamp,ColorRamp 再接到最终输出。ColorRamp 里设置 2 到 3 个色标,把插值方式改成 Constant,就能得到硬边阴影。

但这里有个坑:Shader to RGB 只在 EEVEE 里有效,Cycles 不支持。所以如果你打算用 Cycles,就得换一套思路,比如用 Light Path 节点配合数学运算来模拟。这也是我建议新手先用 EEVEE 的原因之一。

理解了这套机制,后面的所有操作都是在这个基础上做加法:加边缘光、加高光带、加材质区分。你会发现,一旦光照被“色块化”了,整个角色的观感立刻就对了。

2. 皮肤、头发、布料的分层处理实操

2.1 皮肤材质:通透感来自阴影颜色而不是高光

很多人做皮肤第一反应是加高光、加次表面散射,结果做出来油光满面。原神风格的皮肤恰恰相反,它的通透感主要来自阴影部分的颜色选择,而不是高光强度。

具体怎么做?先建一个基础的 Diffuse BSDF,Base Color 用你画好的皮肤贴图。然后接 Shader to RGB,再进 ColorRamp。ColorRamp 里我一般设三个色标:暗部用一个偏紫或偏红的肤色,中间用基础肤色,亮部稍微提亮一点点。注意暗部不要用黑色或灰色,那样会脏。用带色相的暗色,皮肤才会有“血肉感”。

阴影的硬度也有讲究。ColorRamp 的插值方式选 Constant 会得到非常硬的边,选 Linear 会柔和一些。我实测下来,皮肤用稍微柔一点的过渡更自然,可以把 ColorRamp 的第一个色标位置调得靠中间一些,让暗部区域小一点。头发和衣服可以更硬。

还有一个细节:脸颊和鼻尖可以单独加一点暖色。做法是在贴图里就把这部分画暖,或者在节点里用 ColorRamp 的亮部色标偏暖。这样角色看起来会更有生气。

注意:不要给皮肤加太强的 Specular。原神角色的皮肤高光非常克制,基本只在鼻尖、嘴唇、眼睑有一点点。Specular 值控制在 0.1 到 0.2 就够了,Roughness 可以给 0.5 左右。

2.2 头发材质:渐变带与高光带的画法

头发是二次元角色最出效果的部分,也是最容易做砸的部分。原神的头发有几个明显特征:根部深、发梢浅的渐变,一条弧形的高光带,以及发丝边缘的透光感。

渐变处理我建议直接画在贴图里。在 Blender 的 Texture Paint 模式里,用渐变工具从发根到发梢拉一个从深到浅的过渡。注意这个渐变不是线性的,发根到中段变化快,中段到发梢变化慢。画的时候可以多用几个中间色,让过渡更自然。

高光带是头发的灵魂。它的位置通常在头顶偏前一点,呈一个弧形。做法有两种:一种是在贴图里直接画一条亮色带,另一种是用节点根据法线方向生成。我推荐第一种,因为更可控。画的时候注意高光带不是纯白,而是比发色亮两三个色阶的同色系颜色。比如深蓝色头发的高光带可以用浅蓝偏白。

透光感可以用Translucent BSDF或者Emission混合来实现。在发梢部分混入一点 Translucent,让光能透过去,头发就不会像塑料片。但量要少,多了会显得头发在发光。

节点层面,头发我一般会用两层:一层是基础的 Diffuse 加 Shader to RGB 做色块,另一层是单独的高光带用 Emission 叠加。两层之间用 Mix Shader 按贴图的遮罩混合。这样高光带的位置和强度都能精确控制。

2.3 布料与配饰:区分金属、皮革和普通织物

角色身上不会只有皮肤和头发,衣服、腰带、金属扣这些材质要分开处理,否则整体会显得平。

普通织物最简单,基本就是 Diffuse 加 Shader to RGB,ColorRamp 可以设得硬一点,让褶皱的明暗更分明。贴图里可以加一点轻微的纹理,但不要太多,二次元的布料通常是“看起来有质感但实际很干净”。

金属要单独处理。原神里的金属不是写实金属,它更像“有金属颜色的色块”。做法是用 Diffuse 给一个金属色,然后在 ColorRamp 的亮部加一个很亮的色标,暗部加一个很暗的色标,对比拉大。不需要用 Metallic 参数,因为那套是给写实渲染的。高光可以用 Emission 单独叠一条,位置在金属件的边缘。

皮革介于两者之间。颜色偏深,高光比织物强但比金属弱。可以在 ColorRamp 里把中间调压暗一点,让皮革看起来更厚重。

这里有个实用技巧:用一张遮罩贴图来控制不同材质的区域。比如在衣服贴图的 Alpha 通道里,用不同灰度标记金属、皮革、织物的位置,然后在节点里用 Separate RGB 或者 Math 节点把遮罩提取出来,分别控制不同区域的 ColorRamp 参数。这样你只需要维护一张贴图,就能管理整套服装的材质。

2.4 边缘光的三种实现方案对比

边缘光是让角色“跳出来”的关键。我试过至少三种做法,各有优劣,这里做个对比。

方案实现方式优点缺点适用场景
Fresnel 节点用 Fresnel 或 Layer Weight 的 Facing 输出,接 ColorRamp 控制范围,再乘一个颜色加到 Emission节点简单,实时预览快边缘光均匀,缺乏方向感快速预览、远景角色
法线与光照方向点乘用 Geometry 的 Normal 和光照方向做点乘,取反后控制边缘光强度边缘光会随光照方向变化,更自然节点复杂,需要手动指定光照方向需要方向性边缘光的场景
背面剔除加实体化复制模型,翻转法线,用 Backface Culling 加 Emission边缘光非常干净,可控性强需要额外模型,修改麻烦最终出图、特写镜头

我平时工作流里,预览阶段用 Fresnel,最终出图用第三种。第三种虽然麻烦,但效果最接近原神那种干净的轮廓光。具体操作是:复制角色模型,稍微放大一点点(比如 1.01 倍),翻转法线,材质改成纯 Emission 加一个你想要的边缘光颜色,然后在材质设置里勾选 Backface Culling。这样从正面看,只有模型边缘露出的那圈背面会发光,形成完美的轮廓光。

提示:边缘光的颜色不要用纯白。冷色角色用偏青的边缘光,暖色角色用偏橙的边缘光,会让角色更融入环境。

3. 完整实操流程:从一个裸模到成品角色

3.1 模型检查与 UV 展开的注意事项

拿到一个模型之后,别急着上材质。先做三件事:检查法线方向、检查 UV、检查模型是否有重叠面。

法线方向不对,Shader to RGB 出来的结果会完全乱掉。在 Blender 里按Shift+N重新计算外法线,然后在叠加层里打开“面朝向”显示,确认所有面都是蓝色朝外。如果有红色面,说明法线反了,需要翻转。

UV 展开对风格化角色来说,不需要像写实那样追求零拉伸,但需要保证几个关键区域有足够的空间:脸部、头发正面、衣服的主要可见面。我一般会把脸部 UV 单独放大,占整张 UV 图的四分之一左右,因为脸部细节最多。头发和身体的 UV 可以适当缩小。

还有一个容易忽略的点:UV 接缝的位置。接缝尽量放在不显眼的地方,比如头发内侧、衣服的侧面或背面。如果接缝在正面,贴图绘制时很难对齐,渲染出来会有一条明显的缝。

检查重叠面也很重要。有些模型是从其他格式转换过来的,可能会有重合的面,导致渲染时出现闪烁或阴影错误。在编辑模式里用Merge by Distance合并一下重复顶点,能解决大部分问题。

3.2 贴图绘制:从底色到阴影再到高光

贴图绘制我习惯分四步走,每一步只做一件事,这样思路清晰,也方便后期修改。

第一步:铺底色。把皮肤、头发、衣服、金属的基础色分别铺好。这一步不用考虑阴影和高光,只要颜色对就行。注意底色要比你最终想要的颜色稍微亮一点,因为后面加阴影会压暗整体。

第二步:画阴影。根据角色的光照设定,在暗部区域画上阴影色。二次元的阴影是“画”出来的,不是算出来的,所以你要主动决定哪里是暗部。一般来说,下巴下方、头发遮挡的额头、衣服褶皱的内侧、手臂内侧都是暗部。阴影色用底色偏冷或偏紫的颜色,不要用黑。

第三步:画高光。头发的高光带、皮肤鼻尖和嘴唇的高光、金属件的边缘高光,都在这一步画。高光色用底色偏暖或偏白的颜色。注意高光不要画太大,二次元的高光通常是细长的一条或一个小点。

第四步:加细节。比如衣服的缝线、金属的划痕、头发的发丝走向。这些细节要克制,画多了会破坏干净感。我一般只在特写镜头会看到的地方加细节。

画完之后,把贴图导出成 PNG,在 Blender 里连接到对应的材质节点。注意贴图的色彩空间要设成sRGB,如果是法线贴图或者粗糙度贴图则设成 Non-Color。

3.3 节点搭建:一步步连接出卡通渲染效果

现在到了核心环节。我以皮肤材质为例,把节点连接过程拆开讲。

首先新建一个材质,删掉默认的 Principled BSDF。添加一个Diffuse BSDF,把皮肤贴图连到它的 Color 输入。然后添加Shader to RGB节点,把 Diffuse BSDF 的输出连到 Shader to RGB 的输入。这时候如果你预览,会发现模型变成了平光,因为 Shader to RGB 把光照结果转成了颜色数据。

接下来添加ColorRamp节点,把 Shader to RGB 的输出连到 ColorRamp 的 Fac 输入。ColorRamp 里设置三个色标:位置 0.0 是暗部色,位置 0.5 是中间色,位置 1.0 是亮部色。插值方式选 Linear 或 Constant,看你要多硬的边。然后把 ColorRamp 的输出连到Material Output的 Surface 输入。

这时候你应该能看到模型有了基本的色块化效果。如果觉得阴影太硬,可以把 ColorRamp 的第一个色标往左移一点,让暗部区域变小。如果觉得整体太暗,可以把中间色标往右移。

接下来加边缘光。添加一个Layer Weight节点,用 Facing 输出。接一个 ColorRamp,把边缘光范围控制在 0.7 到 1.0 之间。然后把这个 ColorRamp 的输出乘以一个边缘光颜色,再连到一个Emission节点。最后用Add Shader把 Emission 和之前的 ColorRamp 输出加起来。

头发材质在此基础上多一层高光带。复制一套上面的节点,把 ColorRamp 的色标换成高光带的颜色和位置,然后用 Mix Shader 按高光遮罩混合。高光遮罩可以直接用贴图的某个通道,或者在节点里用数学运算生成。

3.4 灯光布置:三灯法与风格化渲染的配合

风格化渲染对灯光的要求和写实不一样。写实渲染里灯光要模拟真实环境,风格化渲染里灯光只需要提供方向性和基本的明暗关系。

我一般用三灯法:主光、补光、轮廓光。主光从角色前上方打下来,强度最高,决定主要的阴影方向。补光从侧面或下方打,强度低,用来提亮暗部,避免死黑。轮廓光从背后打,用来强化边缘。

但这里有个关键点:风格化渲染里,灯光的颜色比强度更重要。主光可以用稍微偏暖的白,补光用偏冷的蓝,轮廓光用角色边缘光的同色系。这样打出来的光会更有层次。

另外,EEVEE 里记得打开Soft Shadows和Ambient Occlusion,但强度不要太高。AO 太强会让暗部变脏,风格化角色需要的是干净的暗部。

如果觉得阴影还是太散,可以在灯光设置里把Shadow 的 Softness 调低,让阴影边缘更硬。这跟写实渲染的追求正好相反,但风格化就需要这种硬边阴影。

4. 常见问题排查与效率提升技巧

4.1 颜色发灰、阴影发脏的排查思路

这是新手最常遇到的问题。模型一渲染,颜色比贴图里灰了好几个度,阴影部分还发脏。原因通常有三个。

第一个原因是色彩管理没设对。前面说过,View Transform 要改成 Standard。如果你用的是 Filmic 或 AgX,颜色会被压暗压灰。改完之后如果还是灰,检查贴图的色彩空间是不是设成了 sRGB。有些从外部导入的贴图默认是 Non-Color,颜色会不对。

第二个原因是 ColorRamp 的暗部色标选错了。很多人习惯用黑色或深灰色做暗部,结果阴影就脏了。正确的做法是用带色相的暗色,比如皮肤的暗部用偏紫的深肤色,头发的暗部用偏蓝的深发色。这样阴影会有颜色倾向,看起来干净。

第三个原因是灯光太散。如果场景里灯光太多太杂,阴影会互相抵消,整体就灰了。试着关掉一些灯,只留主光和补光,看看效果。风格化渲染不需要复杂的灯光环境。

排查的时候可以按这个顺序来:先看色彩管理,再看 ColorRamp,最后看灯光。大部分问题在前两步就能解决。

4.2 边缘光不自然、高光位置不对怎么调

边缘光不自然通常是因为 Fresnel 的范围没控制好。Layer Weight 的 Facing 输出默认范围是 0 到 1,但边缘光只需要最边缘的那一小圈。所以 ColorRamp 的第一个色标要设在 0.7 以上,第二个色标设在 0.9 左右。这样只有最边缘的部分会发光。

如果边缘光太强,把 Emission 的强度调低,或者把边缘光颜色调暗一点。边缘光是“点缀”,不是“主菜”,强度控制在整体亮度的 20% 到 30% 就够了。

高光位置不对,一般是贴图里画的位置和模型的实际光照不匹配。解决办法是在 Blender 里打开材质预览,一边转视角一边看高光带的位置。如果高光带在某个角度下跑到不该在的地方,就回贴图里调整位置。这个过程需要反复几次,但调好之后就很稳。

还有一个技巧:用驱动或者空物体来控制高光带的位置。在节点里用 Texture Coordinate 的 Object 输出,连接到一个空物体,然后移动空物体就能实时调整高光带的位置。这样不用反复改贴图,效率高很多。

4.3 渲染速度优化:EEVEE 设置与贴图分辨率取舍

EEVEE 虽然快,但设置不对也会卡。我一般会做这几个优化。

贴图分辨率:角色贴图不需要 4K,2K 足够,甚至 1K 在某些场景下也够用。分辨率越高,显存占用越大,预览越卡。我通常把脸部贴图设成 2K,身体和头发设成 1K,金属和配饰设成 512。这样在保证质量的同时,显存占用能降一半以上。

阴影设置:EEVEE 的阴影质量可以在渲染属性里调。把 Shadow 的 Cube Size 调小,Cascade Size 调低,能明显提升速度。如果角色是特写,阴影范围不需要太大,调小反而更清晰。

屏幕空间反射:如果角色材质不需要反射,直接关掉。风格化角色基本用不到 SSR,开着只是浪费性能。

简化材质节点:节点越复杂,编译越慢。如果某些材质在最终镜头里看不到,可以临时禁用。比如角色背面的材质,在正面特写时可以直接关掉。

我实测下来,一个中等复杂度的角色,用 2K 贴图加 EEVEE,在普通游戏本上预览能跑到 30 帧以上,完全够用。如果卡,优先降贴图分辨率,效果最明显。

4.4 常见问题速查表

问题现象可能原因排查步骤解决方法
颜色发灰色彩管理错误检查 View Transform 是否为 Standard改为 Standard,检查贴图色彩空间
阴影发脏暗部色标用了黑灰查看 ColorRamp 暗部色标换成带色相的暗色
边缘光太强Emission 强度过高检查边缘光节点的强度值降低强度或调暗颜色
高光位置不对贴图与光照不匹配转动视角观察高光带调整贴图或加空物体控制
渲染卡顿贴图分辨率过高查看贴图尺寸和显存占用降低分辨率,关闭不必要的效果
模型有黑面法线方向错误打开面朝向显示Shift+N 重算法线
UV 接缝明显接缝位置在正面检查 UV 布局把接缝移到不显眼位置
Shader to RGB 无效用了 Cycles 引擎检查渲染引擎切换到 EEVEE

4.5 我踩过的三个坑和对应的解决方案

第一个坑是过度依赖 Principled BSDF。刚开始做的时候,我总想着用 Principled 调参数,结果怎么调都不对。后来才明白,风格化渲染要的是“控制光照结果”,而不是“设置材质参数”。把 Principled 换成 Diffuse 加 Shader to RGB,问题立刻解决。这个思路转变是最关键的。

第二个坑是贴图画得太细。我一开始把皮肤画了很多毛孔和纹理,结果渲染出来反而显得脏。二次元角色的皮肤是“干净”的,不需要那么多细节。后来我把贴图简化成大面积色块加少量笔触,效果反而更好。记住:风格化渲染里,少即是多。

第三个坑是灯光打得太复杂。我试过用五盏灯模拟环境光,结果阴影全乱了。后来简化成三灯,甚至两灯,效果反而更干净。风格化渲染的灯光只需要提供方向性,不需要模拟真实环境。灯越少,控制越容易。

4.6 后续扩展:从单角色到整套角色的批量处理

当你做好一个角色之后,很自然会想把这套流程复用到其他角色上。这时候可以做一些工程化的优化。

建立材质模板:把调好的皮肤、头发、布料材质保存成资产,下次直接拖进来用。Blender 的 Asset Browser 就是干这个的。你只需要把材质标记为资产,下次在新项目里就能直接调用。

参数化节点组:把 ColorRamp 的色标位置、边缘光强度这些常用参数暴露成节点组的输入,这样换角色的时候只需要改几个数值,不用重新连节点。具体做法是选中相关节点,按Ctrl+G打成组,然后在组输入里添加你需要的参数。

批量贴图处理:如果角色很多,可以用 Python 脚本批量处理贴图。比如批量调整分辨率、批量转换色彩空间、批量重命名。Blender 的 Python API 很完善,写个几十行的脚本就能省下大量重复劳动。

版本管理:角色纹理经常要改很多版,建议用文件夹按版本号管理,比如character_v01、character_v02。每次大改之前备份一下,避免改崩了回不去。我一般会在文件名里加上日期和修改内容,比如skin_20240115_warmer_shadow.png,这样一看就知道改了什么。

这套流程我用了大半年,从最初一个角色要做两三天,到现在半天就能出一个能看的版本。核心不是手速变快了,而是思路清晰了:知道每一步在做什么、为什么这么做、出问题去哪里找。希望这些经验能帮你少走一些弯路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 1:23:06

从零构建大模型:手写Transformer训练到推理的完整工程实践

把“从零做AI工程”这件事亲手跑通一遍,是我最近一年做得最值的一件事。这个项目名字叫 ai-engineering-from-scratch,核心不是调现成接口,也不是套开源权重,而是从数据、分词、模型结构、训练、推理这条完整链路自己动手搭一遍&a…

作者头像 李华
网站建设 2026/10/1 1:22:56

OAK-D-SR近距离测距实战:DepthAI最小可测距离与调参避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 1:22:26

脉冲压缩技术详解:原理、LFM、窗函数与工程调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 1:21:55

详解防抖与节流:高频事件性能优化核心原理与实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 1:21:39

钢材缺陷分割实战:从4100张标签到产线部署的语义分割全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华