STEREOGEN / DOCS

带皮肤的三维立体图简易教程

带皮肤的三维立体图简易教程:StereoGen 应用内完成

普通的单图立体画只用重复纹理表现深度,模型原本的颜色、眼睛和材质细节都会被隐藏。如果希望观看者在看出三维形状后,还能同时看到模型本来的“皮肤”,可以生成两个严格对齐的立体图层:一个由普通纹理生成,负责提供稳定的立体图底纹;另一个由模型的原色渲染图生成,负责保留模型外观。最后在 Krita 中把两层叠加起来。

StereoGen 0.2.0 可以从同一个模型直接生成深度图与贴图渲染图,并在结果页暂存、排序和合成 两个立体图层。本文先介绍不离开应用的快速方法,后半部分保留 Blender + Krita 流程,供 需要灯光、材质节点、蒙版、调色和更多图层的高级自定义工作使用。

最终效果如下:

带皮肤的三维立体图成品

先探索节点版案例

下面使用 App 内置环面结演示同类流程,素材与本教程截图中的模型不同。可以查看节点、中间结果和预设;节点模板需要支持节点图的构建。现有 0.2.0 用户仍可继续按照下文的界面操作完成。

材质立体图

启用 JavaScript 可查看节点和切换预设。

打开完整案例与下载模板

先理解整个流程

本教程会得到三张中间或结果图:

  1. mapped-material.png:用模型原色渲染图生成的透明映射层。
  2. base.png:用普通重复纹理生成的基础立体图。
  3. composition.png:在 Krita 中合成并调色后的成品。

成功的关键是对齐。深度图和模型贴图必须使用相同的模型、构图和分辨率;两个立体图层 还必须使用相同的观看模式、视差、深度系数、曲线 k 与输出尺寸。StereoGen 的应用内模型 输出会自动保持第一组条件,结果图层的兼容性提示可以帮助检查第二组条件。

推荐:在 StereoGen 0.2.0 内完成

第一步:从模型生成深度图

打开“深度图”标签页。可以把文字挤出为 Mesh、选择内置几何 Mesh,或者在 3D 模型中 载入 OBJ、GLB、GLTF 外部模型。使用模型皮肤时优先选择包含基础色贴图的 GLB。

模型由用户自备。可以在 Sketchfab 等模型资源网站查找和下载, 也可以使用在线 AI 图片转三维模型服务生成。本文截图中的章鱼模型已上传到 Sketchfab, 可自由下载使用:下载章鱼模型

调整模型旋转、边距、深度位置、深度跨度、边缘柔化和画布大小,然后点击 生成深度图

在 StereoGen 中从章鱼模型生成深度图

第二步:从同一个模型生成填充或贴图渲染图

切换到“纹理”标签页并选择 模型 → 模型材质

点击 用作纹理。输出会沿用深度页的模型、旋转、定位和画布,不需要手工对齐,也不需要 先保存中间文件。

使用 GLB 内嵌贴图生成章鱼模型纹理

生成成功时,StereoGen 会为这一次事件自动选择 映射纹理。在“立体图”标签页确认 无颜色自动填满画布,点击 生成。画面应出现透明背景上的重复章鱼贴图, 并随深度图产生正确的横向位移。

由章鱼材质生成透明映射纹理层

随后打开工具栏中的 图层并选择 保留当前,把模型贴图映射结果暂存在内存中。

第三步:生成基础立体图

回到“纹理”标签页,选择 随机点散布。本例使用随机点的紫色配色,让底图与章鱼 皮肤保持同一色调,同时仍保留足够的随机细节。

为章鱼基础立体图准备紫色随机纹理

内置纹理生成成功时会为这一次事件自动切换到 现代算法。回到“立体图”页生成基础 立体图。不要改变观看模式、视差、深度系数、曲线 k 或输出尺寸;这些参数决定两个结果 能否准确重合。

第四步:在应用内合成皮肤层

再次打开 图层。列表按照从上到下的计算顺序执行:第一行开始合成,后面的行依次覆盖。 把基础立体图放在第一行,把暂存的纹理映射结果放在它后面,再把映射层 Alpha 调到合适的 数值。示例使用 80%;模型外观太抢眼时继续降低,太淡时则提高。

在应用内排列章鱼基础立体图与模型贴图层

点击 合成预览结果。满意后使用 另存为…导出,也可以选择 保留结果,让合成图 继续参与下一次合成。

在 StereoGen 内完成的章鱼皮肤立体图

内置合成器最多保存 4 个内存结果,退出应用后不会写入磁盘。它适合快速叠加轮廓、纯色填充 和模型贴图;如果需要复杂灯光、材质节点、蒙版、局部调色、不限数量图层或可长期保存的工程, 请继续使用下面的高级流程。

高级自定义流程:Blender + StereoGen + Krita

以前的方法仍然有效,并提供更完整的外部渲染与后期控制。下面保留原流程:Blender 输出 严格对齐的深度图和原色渲染图,StereoGen 分别生成基础立体图与映射层,最后在 Krita 中 进行调色、蒙版和合成。

需要的软件

本文沿用带轮廓教程中的 Blender 辅助脚本:下载 depth.py。更新后的脚本可以从同一场景输出深度图、描边图、原材质图和纯色填充图,并自动配置相机、渲染分辨率、透明背景、视图层及合成节点。

第一步:在 Blender 中输出深度图和原色渲染图

打开 Blender,在脚本工作区载入 depth.py。这篇教程需要使用脚本顶部的以下输出开关:

EXPORT_DEPTH = True
EXPORT_OUTLINE = True
EXPORT_MATERIAL = True
EXPORT_OBJECT_FILL = False

其中,深度图和原材质图参与后续生成;描边图只作为备用素材保留;纯色填充图在本教程中没有使用,因此可以关闭。还可以在脚本顶部调整输出分辨率和相机投影模式:

RESOLUTION_X = 1920
RESOLUTION_Y = 1080
PROJECTION_MODE = "HALF_PERSP"

脚本默认使用 RENDER_NOW = False,运行后只配置场景和合成节点,不会立刻渲染。先运行脚本,再导入或摆放模型并完成材质与灯光设置。确定构图以后,不要再移动相机;接下来的所有输出都必须来自这个相机视角。

准备完成后,在 Blender 脚本区执行:

bpy.ops.render.render(write_still=True)

也可以在所有场景设置完成以后,把 RENDER_NOW 改为 True,再次运行脚本并直接渲染。脚本默认把 PNG 写到桌面;按上述开关渲染后会得到:

blender_depth0001.png
blender_outline0001.png
blender_material0001.png

下面为了更直观,分别把这三张示例素材命名为 depth-map.pngoutline-render.pngmaterial-render.png

脚本输出的第一张素材是灰度深度图。本文中的示例文件为:

depth-map.png

深度图用亮度表示模型各部分到相机的距离,背景为黑色:

Blender 输出的深度图

原材质图由脚本配置的独立视图层生成,不会混入 Freestyle 描边或其他材质覆盖;脚本会把背景设为透明,并以带 Alpha 通道的 RGBA PNG 输出。本文中的示例文件为:

material-render.png

Blender 输出的原色渲染图

示例图片中的章鱼以外均为透明区域。请确认原色渲染图与深度图的像素尺寸完全相同;本教程的两张图片都是 1920×1080。不要单独裁剪、缩放或重新定位模型。

这次 Blender 还输出了一张轮廓图:

Blender 输出的备用轮廓图

outline-render.png 不参与本教程的生成和合成,只作为备用源素材保留。如果想把轮廓也做成独立图层,可以继续参考带轮廓的三维立体图教程

第二步:在 StereoGen 中载入深度图和原色渲染图

打开 StereoGen,在“深度图”标签页点击 打开深度图…,选择:

depth-map.png

在 StereoGen 中载入深度图

切换到“纹理”标签页,点击 打开纹理…,选择 Blender 输出的:

material-render.png

透明区域会显示为灰白棋盘格:

在 StereoGen 中载入原色渲染图

如果 StereoGen 提示深度图与纹理尺寸不同,请回到 Blender 检查输出分辨率。不要在 StereoGen 外单独拉伸其中一张图片,否则模型皮肤会和三维形状错位。

第三步:生成原色渲染图的纹理映射层

切换到“立体图”标签页,打开 选项,把 渲染算法设置为“映射纹理”。本教程示例使用以下设置:

这些数值适合本教程的素材,不是所有模型的固定答案。更换模型或分辨率后,可以从较小的视差和深度系数开始逐步调整。

点击 生成

使用映射纹理算法生成原色映射层

点击 另存为…,以支持透明通道的 PNG 保存为:

mapped-material.png

模型原色映射立体图层

单独查看时,这张图会呈现重复、拉伸和断开的模型片段,这是映射纹理算法为匹配视差而生成的正常结果。它不是最终成品,而是稍后叠加到普通立体图上的“皮肤”层。

第四步:生成普通纹理的基础立体图

保持当前深度图和输出尺寸不变。切换到“纹理”标签页,把纹理换成一张细节丰富、局部对比适中的普通纹理;可无缝平铺的纹理通常更自然。

回到“立体图”标签页,把 渲染算法改为“现代”。为了让两个图层准确重合,继续使用与上一层相同的观看模式、视差和深度系数。本教程示例为:

点击 生成

使用普通纹理生成基础立体图

点击 另存为…,保存为:

base.png

普通纹理的基础立体图

在进入合成前,最好先确认这张底图能够稳定看出三维形状。映射层只负责增加模型外观,不能修复底图本身不合适的视差或深度设置。

第五步:在 Krita 中合成并调色

用 Krita 打开 base.png,再把 mapped-material.png 作为文件图层或普通图层放在它的上方。两个图层都应保持 1920×1080,并从画布左上角对齐。

把上方的原色映射图层不透明度设为 85%

在 Krita 中叠加并调整两个立体图层

此时模型的眼睛、面部和材质颜色已经进入立体图,但底图的青色与紫色模型不够协调。选中下方的 base.png 图层,对底图应用色相曲线调整,把底纹整体调成接近模型的紫色。调整时重点观察两件事:

85% 是本例的起点。如果模型颜色太抢眼,可以继续降低原色映射图层的不透明度;如果皮肤细节太淡,则适当提高。不要缩放、移动或旋转图层。

完成后导出:

composition.png

最终合成的带皮肤三维立体图

常见问题

为什么原色映射层显示成黑色背景?

先确认 Blender 输出的是带 Alpha 通道的 RGBA PNG,然后确认映射纹理选项中的背景色为“无颜色”,最终也保存为 PNG。有些图片查看器会用黑色显示透明区域,可以在 Krita 中检查是否出现透明棋盘格。

为什么模型皮肤和三维形状错位?

通常是 Blender 两次输出之间改变了相机或构图,或者某张图片在后期被裁剪、缩放。深度图、原色渲染图、两个 StereoGen 结果和 Krita 画布都必须保持相同尺寸与像素位置。

为什么叠加后很难看出立体效果?

先单独检查 base.png。如果底图本身就不容易融合,请降低视差或深度系数,或换用细节更均匀的普通纹理。底图稳定后,再调整映射层不透明度。

为什么模型颜色不自然?

原色映射层与普通纹理的色相、亮度差距太大时,叠加痕迹会很明显。优先调整底图色相,使它接近模型主色;必要时也可以微调映射层的饱和度和亮度。

可以同时加入轮廓吗?

可以。把轮廓图用同一张深度图生成透明轮廓立体图,再作为第三层加入 Krita。务必保持全部图层的尺寸、视差和深度设置一致。具体步骤请参阅带轮廓的三维立体图教程

更多参数说明和观看方法,请参阅 StereoGen 中文用户指南