news 2026/10/1 1:50:52

AAA级武士角色纹理制作全流程:PBR工作流与Substance Painter实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AAA级武士角色纹理制作全流程:PBR工作流与Substance Painter实战

1. 从一张“看起来还行”的贴图说起:AAA 武士角色纹理到底难在哪

很多人第一次接触 Substance Painter 做角色纹理,都是从一把枪、一个箱子、一个简单的道具开始的。流程跑通之后,信心满满地接了一个“武士角色”的活儿,结果打开工程文件的那一刻就懵了——甲片、皮革、布料、金属配件、绑绳、刀鞘、刀身,光是材质分区就有十几种,更别提每一块区域还要做出磨损、积灰、油污、划痕、边缘掉漆这些细节。最后渲染出来一看,整体灰蒙蒙一片,金属不像金属,布料不像布料,甲方一句“感觉不够 AAA”就把你打回来了。

问题出在哪?绝大多数情况下,不是你的笔刷用得不够熟练,而是PBR 工作流的底层逻辑没有吃透。Substance Painter 只是一个工具,它帮你把“材质定义”这件事从传统的贴图绘制变成了“基于物理属性的参数化描述”,但如果你不理解金属度、粗糙度、法线、AO 这些通道之间是怎么互相影响的,那你画出来的东西永远只是“看起来像”,而不是“物理上对”。

这篇内容我想聊的,是一个完整的 AAA 级武士角色纹理制作流程。从项目拆解、材质分区规划、PBR 通道逻辑、到 Substance Painter 里的具体操作细节,再到导出前的检查清单,我会把这几年的实战经验尽量掏干净。不管你是刚学 SP 的新手,还是已经做过几个项目但总觉得“差一口气”的中级从业者,应该都能从里面找到对自己有用的东西。

先明确一个前提:AAA 角色纹理的核心不是“画得好看”,而是“经得起看”。什么叫经得起看?就是镜头拉近到特写,金属边缘的磨损有层次,布料的纤维有方向感,皮革的褶皱有厚度变化,甲片的划痕有深浅过渡。这些东西不是靠一张手绘贴图能搞定的,必须依赖 PBR 工作流的完整链路。

2. 武士角色的材质分区与 UV 规划:动手之前先想清楚

2.1 为什么武士角色不能“一张 UV 走天下”

武士这个题材的特殊性在于,它的装备构成非常复杂。一个典型的 AAA 武士角色,身上至少包含以下几类材质:

  • 金属类:头盔、面甲、肩甲、胸甲、护臂、护腿、刀镡、刀身
  • 皮革类:内衬、绑带、腰带、刀鞘外层、护手内层
  • 布料类:内袍、袴、绑腿布、旗帜或披风
  • 绳索类:盔甲连接绳、刀柄缠绳、装饰结
  • 木质类:刀鞘内芯、部分装饰件
  • 漆面类:部分甲片上的传统漆艺涂层

这些材质的物理属性差异极大。金属的金属度是 1,粗糙度通常在 0.2 到 0.6 之间变化;布料的金属度是 0,粗糙度普遍在 0.7 以上;皮革的金属度是 0,但粗糙度会因为磨损和油脂产生明显变化。如果你把这些东西全部塞进一张 UV 里,且不说分辨率够不够,光是不同材质之间的边缘处理就会让你崩溃。

我的建议是:按照材质类型做 UV 分区,而不是按照模型结构分区。具体来说,金属件可以合并到一张 UV 里,皮革件合并到另一张,布料和绳索根据面积大小决定是合并还是独立。这样做的原因是,Substance Painter 的材质层和遮罩是基于 UV 空间的,同材质类型的区域放在一起,你可以用同一套智能材质和生成器来批量处理,效率会高很多。

2.2 UV 排布的几个硬性指标

UV 排布这件事,说起来简单,做起来全是坑。我见过太多人模型做得漂漂亮亮,UV 一塌糊涂,最后纹理怎么画都不对。以下是我总结的几个硬性指标:

指标推荐值说明
UV 利用率70% 以上低于这个值说明排布太松散,浪费分辨率
纹理密度10.24 px/cmAAA 角色的通用标准,特写镜头可提到 20.48
UV 接缝位置藏在结构转折处避免出现在大面积平坦区域
UV 岛间距至少 4 像素防止纹理烘焙时边缘溢出
对称处理镜像 UV 或独立 UV对称部件可镜像节省空间,但要做不对称磨损时需独立

纹理密度这个参数特别值得展开说。10.24 px/cm 意味着什么?假设你的角色身高 180cm,那么一张 4096x4096 的贴图,理论上只能覆盖大约 400cm 的 UV 展开面积。如果你的角色所有部件加起来展开面积超过了这个数,要么提高贴图分辨率,要么就得接受纹理精度下降。很多新手做出来的纹理“糊”,根本原因就是纹理密度不够,而不是笔刷用得不好。

2.3 烘焙之前的模型检查清单

在 Substance Painter 里烘焙贴图之前,模型层面有几个必须检查的点,这些点如果出问题,后面怎么调都救不回来:

  • 法线方向:所有面的法线必须朝外,否则烘焙出来的法线贴图会有黑块
  • 硬边和软边:需要硬边的结构必须做 UV 拆分或设置平滑组,否则法线烘焙会出错
  • 重叠面:模型上不能有完全重叠的面,否则烘焙时会产生 Z-fighting
  • 镜像修改器:如果用了镜像,烘焙前必须应用,否则 UV 会重叠
  • 模型比例:确认模型单位是厘米或米,这直接影响烘焙时的射线距离

提示:烘焙法线贴图时,如果模型有细小的结构(比如甲片上的铆钉),建议先做高模再烘焙,不要指望在 SP 里用笔刷画出来。高模烘焙的法线细节是物理正确的,手画的永远差一个层次。

3. PBR 通道的底层逻辑:金属度、粗糙度、法线到底怎么配合

3.1 金属度通道:不是“像金属”而是“是金属”

很多人对金属度通道的理解是“让东西看起来像金属”,这个理解是错的。金属度通道在 PBR 渲染里是一个物理属性开关:金属度等于 1 的区域,渲染器会认为这个表面是纯金属,它的漫反射颜色会变成黑色,所有颜色信息都来自高光反射;金属度等于 0 的区域,渲染器会认为这是非金属(电介质),它的颜色来自漫反射,高光反射是固定的。

这意味着什么?意味着你不能用金属度通道来做“渐变效果”。我见过有人在金属度通道上画渐变,想让金属慢慢过渡到非金属,结果渲染出来一片死黑。正确的做法是:金属度通道只有 0 和 1 两个值,中间值只用在极少数特殊情况(比如金属表面有半透明涂层)。

对于武士角色来说,金属度的处理相对简单:所有金属件给 1,所有非金属件给 0。但有一个细节需要注意:金属表面的污渍和灰尘。如果金属上积了灰,那灰尘覆盖的区域金属度应该降低,因为灰尘是非金属。这个细节很多人会忽略,导致金属看起来“太干净”。

3.2 粗糙度通道:决定材质质感的核心

粗糙度通道是 PBR 工作流里最重要的通道,没有之一。它决定了光线在表面上的散射方式,直接影响材质的“软硬”和“干湿”感觉。

粗糙度值越低,表面越光滑,高光越集中,反射越清晰;粗糙度值越高,表面越粗糙,高光越分散,反射越模糊。对于武士角色的不同材质,粗糙度的基准值大概是这样:

  • 抛光金属(刀身、部分甲片):0.15 - 0.3
  • 磨损金属(常用甲片、刀镡):0.35 - 0.55
  • 皮革(绑带、内衬):0.6 - 0.8
  • 布料(内袍、袴):0.8 - 0.95
  • 绳索:0.85 - 0.95
  • 漆面:0.2 - 0.4(根据磨损程度变化)

但粗糙度不能是一个恒定值。真实的材质表面,粗糙度是不断变化的。金属边缘因为摩擦会变光滑,粗糙度降低;凹陷处因为积灰会变粗糙,粗糙度升高;皮革弯折处因为纤维拉伸会变光滑,粗糙度降低。这些变化才是让材质“活起来”的关键。

3.3 法线通道:细节的载体

法线贴图在 SP 里的作用,是承载高模烘焙出来的表面细节。但很多人不知道的是,法线贴图是可以和手绘细节叠加的。SP 里的法线通道支持多层叠加,你可以在烘焙法线的基础上,再用手绘法线笔刷添加额外的细节,比如划痕、凹坑、织物纹理。

这里有一个经验之谈:烘焙法线负责大结构,手绘法线负责小细节。高模烘焙的法线适合表现甲片的边缘倒角、皮革的缝线、布料的褶皱这些有实际几何结构的细节;手绘法线适合表现划痕、磨损、污渍这些没有几何结构但需要视觉表现的细节。两者结合,才能做出有层次的法线效果。

3.4 AO 通道:环境光遮蔽的正确用法

AO 通道在 SP 里通常不作为最终输出通道,而是作为遮罩使用。它的作用是标记出模型上的凹陷区域,这些区域通常是积灰、积污、磨损加重的地方。

我的做法是:把烘焙出来的 AO 贴图作为基础遮罩,然后用 Levels 或 Contrast 调整它的对比度,让它只保留最深的凹陷区域。然后用这个遮罩来驱动脏迹层、灰尘层、磨损层的分布。这样做的效果是,脏迹会自然地聚集在模型的缝隙和凹陷处,符合物理规律。

4. Substance Painter 里的实战操作:从基础材质到最终细节

4.1 工程设置与烘焙参数

打开 SP 之后,第一件事是新建工程。这里有几个参数需要特别注意:

  • 模板选择:选 PBR Metal Roughness,这是目前最通用的 PBR 模板
  • 分辨率:根据项目要求选 2048 或 4096,AAA 角色通常用 4096
  • 法线格式:DirectX 和 OpenGL 根据目标引擎选择,Unity 用 OpenGL,Unreal 用 DirectX
  • 烘焙器设置:射线距离(Ray Distance)根据模型比例调整,通常 0.01 到 0.05 之间

烘焙的时候,建议把 Normal、AO、Curvature、Position、Thickness 这几个通道全部烘出来。Curvature 通道特别有用,它能自动识别模型的边缘和凹陷,是制作边缘磨损和缝隙脏迹的利器。Thickness 通道用于制作次表面散射效果,对于布料和皮肤材质很有帮助。

注意:烘焙时间跟模型面数和贴图分辨率成正比。一个 5 万面的角色,4096 贴图,全套通道烘焙大概需要 5 到 10 分钟。如果超过这个时间,检查一下射线距离是不是设太大了。

4.2 基础材质层的搭建逻辑

SP 里的材质层搭建,我习惯按照“从下到上”的顺序:

  1. 基础材质层:定义材质的基本颜色、金属度、粗糙度
  2. 大范围变化层:用生成器或遮罩添加大面积的色差和粗糙度变化
  3. 中等细节层:添加磨损、划痕、污渍等中等尺度的细节
  4. 微小细节层:添加灰尘、指纹、微小划痕等最后细节

这个顺序的逻辑是:先定基调,再加大变化,最后加小细节。如果顺序反了,你先画了细节再改基础色,那细节就全被覆盖了。

以武士的金属甲片为例,基础材质层可以用 SP 自带的 Metal 预设,选一个铁或钢的底色。然后在大范围变化层,用 Curvature 遮罩配合 Levels 调整,在甲片边缘添加轻微的粗糙度变化。中等细节层用 Scratch 生成器添加划痕,用 Dirt 生成器添加污渍。微小细节层用手绘笔刷添加一些不规则的微小磨损点。

4.3 智能材质与生成器的定制化

SP 自带的智能材质和生成器很好用,但直接用往往效果不够“AAA”。我的做法是:以自带预设为基础,做定制化调整。

比如 Scratch 生成器,默认参数生成的划痕比较均匀,看起来假。我会调整几个参数:把 Scale 调大,让划痕的尺度更自然;把 Amount 调低,减少划痕数量;把 Rotation 调成随机,避免方向一致。然后在这个基础上,再叠加一层手绘划痕,打破生成器的规律性。

再比如 Dirt 生成器,默认的脏迹分布比较散。我会用 AO 遮罩来限制它的分布范围,让脏迹只出现在凹陷处。然后把 Dirt 的颜色调成偏暖的灰褐色,而不是纯黑,因为真实的灰尘是有颜色的。

4.4 手绘细节的笔刷选择与技巧

SP 的笔刷系统非常强大,但很多人只会用默认的几种。以下是我在武士角色纹理中常用的几类笔刷:

  • 硬边笔刷:用于绘制清晰的划痕和边缘磨损,比如刀身上的刃纹
  • 软边笔刷:用于绘制柔和的污渍和色差过渡
  • 纹理笔刷:用于绘制布料纹理、皮革纹理、金属拉丝
  • 粒子笔刷:用于散布灰尘、锈迹、小石子等颗粒细节

手绘的时候,有几个技巧可以提升效果:

第一,降低笔刷不透明度。很多人画细节的时候喜欢用 100% 不透明度,结果画出来的东西很生硬。用 20% 到 40% 的不透明度,多层叠加,效果会自然很多。

第二,利用对称和镜像。武士角色的很多部件是对称的,但磨损不应该完全对称。我的做法是:先用对称画基础磨损,然后关掉对称,在个别位置添加不对称的额外磨损。

第三,善用图层混合模式。SP 支持多种混合模式,比如 Multiply、Overlay、Soft Light。用 Multiply 画阴影和污渍,用 Overlay 画高光和色差,效果比单纯用 Normal 模式好很多。

5. 武士角色的材质细节处理:金属、皮革、布料、绳索

5.1 金属甲片:从“铁片”到“有故事的甲片”

金属甲片是武士角色纹理的重头戏。一块好的甲片纹理,应该能看出它的使用痕迹:边缘因为碰撞而掉漆,表面因为摩擦而发亮,凹陷处因为积灰而变暗,铆钉周围因为应力而有一圈细微的裂纹。

具体操作上,我会分这么几步:

第一步,基础金属层。用 Metal 预设打底,颜色选偏冷的铁灰色,粗糙度给 0.4 左右。

第二步,边缘磨损。用 Curvature 遮罩提取边缘,然后用 Levels 调整遮罩范围,只保留最凸出的边缘。在这个遮罩上添加一层抛光金属,粗糙度降到 0.2,颜色稍微亮一点。这样边缘就会呈现出“磨亮了”的效果。

第三步,掉漆层。在边缘磨损的基础上,再添加一层深色的底漆颜色,模拟漆面剥落后露出的底漆。这层的遮罩要比边缘磨损的范围小一点,只出现在最严重的磨损区域。

第四步,污渍和积灰。用 AO 遮罩配合 Dirt 生成器,在凹陷处添加灰褐色的污渍。污渍的粗糙度要高,给 0.8 左右,金属度要降到 0.3 以下。

第五步,划痕。用 Scratch 生成器添加细划痕,然后用硬边笔刷手动添加几道深划痕,打破规律性。

5.2 皮革绑带:柔软与磨损的平衡

皮革材质的难点在于,它既要表现出柔软感,又要表现出使用后的磨损和油脂感。

基础皮革层,颜色选深棕色或黑色,粗糙度给 0.7,金属度 0。然后用法线通道添加皮革纹理,SP 自带的 Leather 纹理可以用,但建议把 Scale 调小,让纹理更细腻。

皮革的磨损主要出现在弯折处和边缘。用 Curvature 遮罩提取边缘,添加一层浅色的磨损,粗糙度稍微降低,模拟皮革磨光的效果。弯折处可以用手绘笔刷添加一些细小的裂纹,法线通道上画,颜色通道上给一点深色。

皮革的油脂感通过粗糙度变化来表现。在皮革经常接触皮肤或手部的区域,粗糙度降低到 0.5 左右,颜色稍微加深,模拟油脂浸润的效果。

5.3 布料内袍:纤维感与褶皱阴影

布料材质的核心是纤维感和褶皱。SP 里做布料,我通常用 Fabric 预设打底,然后用法线通道叠加织物纹理。

织物纹理的选择很关键。武士的内袍通常是棉麻材质,纹理比较粗犷。SP 自带的 Fabric Coarse 纹理可以用,但要注意调整 Scale,让纹理密度和模型比例匹配。

褶皱的处理,除了模型本身的高模烘焙之外,还可以在 SP 里用手绘法线加强。用软边笔刷,低不透明度,在褶皱的凹陷处画深色,凸起处画浅色,增强立体感。

布料的边缘磨损也很重要。用 Curvature 遮罩提取边缘,添加一层浅色的磨损,模拟布料边缘磨白的效果。粗糙度可以稍微降低,因为磨损后的布料纤维更松散,光线散射更均匀。

5.4 绳索与刀柄缠绳:细节决定真实感

绳索和缠绳是武士角色上很容易被忽略的细节,但恰恰是这些细节决定了整体的真实感。

绳索的基础材质,颜色选麻黄色或深棕色,粗糙度给 0.9,金属度 0。法线通道上,用 SP 自带的 Rope 纹理,调整 Scale 让纹理密度合适。

绳索的磨损主要出现在经常摩擦的区域,比如刀柄缠绳的手握处。用 Curvature 遮罩配合手绘笔刷,添加浅色磨损,粗糙度稍微降低。手握处还可以添加一点深色的油脂感,模拟手汗浸润的效果。

绳索的缝隙处容易积灰,用 AO 遮罩添加深色污渍,粗糙度提高,金属度保持 0。

6. 导出前的检查与常见问题排查

6.1 导出通道的配置

SP 导出贴图的时候,通道配置直接决定了最终渲染效果。以下是我常用的导出配置:

通道导出格式说明
Base ColorPNG 8bit基础颜色,不含金属度信息
MetallicPNG 8bit金属度,灰度图
RoughnessPNG 8bit粗糙度,灰度图
NormalPNG 8bit法线,DirectX 或 OpenGL 格式
AOPNG 8bit环境光遮蔽,用于引擎内的 AO 计算
HeightPNG 16bit高度图,用于视差贴图或置换

如果目标引擎支持打包贴图(比如 Unreal 的 ORM 贴图),可以把 AO、Roughness、Metallic 打包到一张贴图的 R、G、B 通道,节省显存。

6.2 常见问题与排查方法

问题一:渲染出来金属发黑

原因通常是金属度通道和 Base Color 通道的配合有问题。金属区域的 Base Color 应该是金属的反射颜色,而不是漫反射颜色。如果金属区域 Base Color 是深色,金属度是 1,渲染出来就会发黑。

排查方法:检查金属区域的 Base Color 是否给了合理的金属色(比如铁是浅灰色,铜是橙红色)。如果 Base Color 是黑色或深色,改成金属色。

问题二:法线贴图有接缝

原因通常是 UV 接缝处的法线烘焙有问题,或者法线贴图的边缘没有做 padding。

排查方法:检查烘焙时的 UV 岛间距是否足够,建议至少 4 像素。导出法线贴图时,开启 Dilate 选项,让边缘像素向外扩展。

问题三:粗糙度看起来太均匀

原因是粗糙度通道缺乏变化,整个区域用一个值。

排查方法:用 Curvature 遮罩和 AO 遮罩驱动粗糙度变化,边缘降低粗糙度,凹陷提高粗糙度。再叠加一层手绘粗糙度,打破规律性。

问题四:纹理在引擎里看起来和 SP 里不一样

原因通常是色彩空间设置不一致。SP 里默认使用 sRGB 色彩空间,引擎里如果用了 Linear 色彩空间,颜色会偏暗。

排查方法:检查导出贴图的色彩空间设置,Base Color 用 sRGB,Metallic、Roughness、Normal、AO 用 Linear。在引擎里导入贴图时,也要设置对应的色彩空间。

6.3 迭代与反馈:如何判断纹理是否“够 AAA”

纹理做完之后,怎么判断它是否达到了 AAA 标准?我的经验是,从以下几个维度检查:

  • 近距离特写:把镜头拉到最近,看金属边缘的磨损是否有层次,布料的纤维是否清晰,皮革的褶皱是否有厚度
  • 中距离全身:看整体色调是否统一,材质之间的对比是否合理,有没有哪个部件特别突兀
  • 远距离剪影:看整体轮廓是否清晰,材质的明暗对比是否能在远距离区分出不同部件
  • 不同光照:在强光、弱光、暖光、冷光下分别检查,看材质表现是否稳定

如果这四个维度都过关,那这套纹理基本上就达到了 AAA 水准。如果某个维度有问题,回到 SP 里针对性调整。

7. 一些踩过坑之后才明白的经验

做武士角色纹理这几年,踩过的坑不少,有些是技术层面的,有些是流程层面的。挑几个印象深刻的分享一下。

第一个坑:UV 没规划好就动手画。刚开始做角色的时候,拿到模型就急着打开 SP 画纹理,结果画到一半发现 UV 排布不合理,某些区域分辨率不够,某些区域又浪费空间。后来学乖了,拿到模型第一件事是检查 UV,不合理的先回 Maya 或 Blender 重排。这个习惯帮我省了无数返工时间。

第二个坑:过度依赖智能材质。SP 的智能材质确实方便,一键就能出效果。但智能材质的问题是“太完美”,缺乏真实感。后来我的做法是,智能材质只用来打底,上面必须叠加手绘细节。手绘的那一层,才是让材质“活起来”的关键。

第三个坑:忽略色彩管理。有段时间做出来的纹理,在 SP 里看着挺好,导进引擎就偏色。查了很久才发现是色彩空间设置的问题。从那以后,每次导出贴图都会检查色彩空间,Base Color 用 sRGB,其他通道用 Linear,再也没出过问题。

第四个坑:法线贴图强度过高。新手容易犯的毛病,法线强度拉满,结果渲染出来表面像橘子皮。后来发现,法线强度要根据材质类型调整,金属可以强一点,布料和皮革要弱一点。而且法线贴图要和粗糙度配合,粗糙度高的材质,法线强度要相应降低。

第五个坑:不做版本管理。SP 的工程文件很大,很多人不做版本管理,改着改着发现还是之前的版本好,但已经回不去了。我的做法是,每次大改之前另存一个版本,文件名带上日期和版本号。这样即使改坏了,也能快速回滚。

8. 关于工具链和后续扩展的一些想法

Substance Painter 是目前角色纹理领域最主流的工具,但它不是唯一的工具。Blender 的纹理绘制功能这几年进步很快,对于预算有限的项目来说是一个不错的选择。Marvelous Designer 可以用来做布料的褶皱模拟,烘焙出来的法线比手画的自然很多。ZBrush 可以用来做高模细节,特别是金属表面的锤打痕迹和皮革的缝线。

工作流方面,现在越来越多的项目开始用 Substance Designer 来做程序化纹理,然后用 SP 做最终调整。Designer 的优势是可以批量生成纹理变体,对于需要大量重复部件的项目(比如军队角色)非常高效。

AI 辅助纹理生成也是一个值得关注的方向。目前有一些工具可以根据参考图自动生成基础纹理,虽然还不能完全替代手工,但作为灵感参考和快速原型工具,已经很有价值了。

不过说到底,工具只是工具,核心还是对 PBR 原理的理解和对材质细节的观察。我见过用 SP 自带笔刷做出 AAA 效果的高手,也见过用全套高级工具做出平庸效果的初学者。差别不在工具,在于你是否真正理解了“金属为什么是金属”“布料为什么是布料”。

多观察真实世界,多拍照参考,多动手实验。纹理这门手艺,没有捷径,但有方法。希望这篇内容能帮你少走一些弯路。

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

从麦田到论文:作物生产与品质改良人的 AI 搭子怎么选 [特殊字符]

如果你学的是作物生产与品质改良,大概率会遇到这样一个毕业任务: 以小麦为材料,研究不同施氮量对群体生长、产量构成和籽粒品质的影响,最终完成一篇包含试验设计、数据分析、图表制作和讨论分析的毕业论文。 这不是“随便写写”的…

作者头像 李华
网站建设 2026/10/1 1:49:29

前端 Mock 数据:Mock.js、MSW 与 Service Worker

/* 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:49:26

Mac版SecureCRT配置避坑:会话管理、SSH密钥登录与日志实战

/* 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:49:23

Lenovo原厂系统安装:驱动、固件与预装软件的全栈部署

/* 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:48:54

联想小新转轴断裂低成本修复:AB胶粘合、阻尼调整与加固技巧

/* 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:48:52

Android 安全测试工具链实战:Magisk 权限、Frida 注入与反编译

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

作者头像 李华