\begingroup

我已经解开角色,我想了解它是如何完成的:

通常,当我们解开角色时,我们需要在其上标记接缝,因此接缝会有红色轮廓,如下所示:

正如您所看到的,在 2 个屏幕截图中,UV 与没有任何接缝的原始屏幕截图相比发生了扭曲。我想了解,为什么我在原始模型中看不到任何接缝?我知道我可以用
H键隐藏顶点,所以也许接缝有类似的热键?

不幸的是,无法共享混合文件。

\endgroup

1

  • \begingroup
    您的原始模型已展开,但模型上没有标记接缝。如果您想在模型上标记接缝,请执行以下操作。在 UV 编辑器中,1:选择所有 Uv。2:打开 UV 菜单并选择“从岛接缝”选项。如果您查看模型,您会看到它现在有红色标记的 UV 接缝。我不知道为什么它一开始没有标记 UV 接缝。如果您添加 Blender 网格立方体或猴子头,在编辑模式下,您会发现它们没有标记接缝,但在 UV 编辑器中查看,您会看到它们已经展开。
    \endgroup


    – 


最佳答案
2

\begingroup

除了 @Lauloque 的精彩回答很好地解释了 UV 映射的工作原理之外,更笼统地回答你关于“有没有办法隐藏接缝?”和“通常我们需要在上面标记接缝”的问题:

首先,一个简单的方法是,在拆开包装后清理接缝,这样虽然有接缝,但它们已经被拆除了。

另一种方式是,边缘仍然可以标记为接缝,但它们只是不显示,因为接缝在网格编辑模式覆盖中被禁用。我猜这最接近你的最后一个问题,如果有某种热键可以隐藏接缝,尽管这可能不是那里发生的事情(在这种情况下,你创建的新接缝也不会显示):

第三种选择是:永远没有接缝。如果您想一次性展开所有内容或进行更改而不必从头开始,那么接缝会非常有帮助,但您也可以通过选择网格的各个部分并逐个展开它们来实现相同的分段展开。这样,选择的边界基本上就像接缝一样。

\endgroup

\begingroup

如何从现有 UV 岛获取 UV 接缝

正如,你可以从当前的 UV 岛标记 UV 接缝。为此,在编辑模式下进入 UV 编辑器,选择视口中的所有网格,UV 编辑器中的所有 UV,然后使用菜单 UV > Seams From Islands:

为什么 UV 岛并不总是有接缝

至于为什么有些模型的 UV 可以没有接缝,这是因为“接缝”或任何形式的 UV 边缘标记仅对手动制作UV有用。它们对于存储甚至描述 UV 数据毫无用处。

Blender 中的原始对象没有接缝。在 Blender 中可以制作没有接缝的 UV。事实上,您在视口的 UV 映射菜单 (快捷方式U) 中看到的所有展开方法都不使用边缘接缝,除了顶部的“展开”按钮,它可以展平您的网格并在标记为接缝的边缘处将其分割:

因此,在 Blender 中可以得到没有接缝的 UV 展开模型。

此外,从 Blender 外部导入的模型几乎不会出现边缘接缝。

我说几乎,是因为某些格式确实支持显式 UV 接缝 {FBX、Collada (.dae)},并且如上所示,您始终可以从现有岛屿制作接缝。但即使数据有时可以通过某些特定格式导出,它也不是很常用的导出格式,并非每个导入/导出工具都将其作为选项显示,因此可以安全地假设,即使是以支持它的格式存储的网格也不会有 UV 接缝。

UV 数据的存储方式

UV 只是每个顶点存储的坐标。以下是 Blender 默认立方体的 OBJ 格式示例:

# Blender 4.2.1 LTS
# www.blender.org
o Cube
v 1.000000 1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 1.000000 1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 1.000000 -1.000000
v -1.000000 -1.000000 -1.000000
v -1.000000 1.000000 1.000000
v -1.000000 -1.000000 1.000000
vt 0.625000 0.500000
vt 0.875000 0.500000
vt 0.875000 0.750000
vt 0.625000 0.750000
vt 0.375000 0.750000
vt 0.625000 1.000000
vt 0.375000 1.000000
vt 0.375000 0.000000
vt 0.625000 0.000000
vt 0.625000 0.250000
vt 0.375000 0.250000
vt 0.125000 0.500000
vt 0.375000 0.500000
vt 0.125000 0.750000
s 0
f 1/1 5/2 7/3 3/4
f 4/5 3/4 7/6 8/7
f 8/8 7/9 5/10 6/11
f 6/12 2/13 4/5 8/14
f 2/13 1/1 3/4 4/5
f 6/11 5/10 1/1 2/13

在 OBJ 文件中,UV 使用vt(顶点纹理)线来描述,它们对应于 2D 空间中的纹理坐标。其工作原理如下:

  • o定义后续对象的名称
  • v包含三个 32 位浮点数x yz对应网格顶点的坐标。
  • vt包含两个 32 位浮点数uv定义 UV 坐标,其中u为水平轴(0 到 1),v为垂直轴(0 到 1)。
  • 例如,vt 0.625000 0.500000表示其中一个顶点映射到 UV 坐标 (0.625, 0.5)。
  • s定义阴影平滑状态。0使整个网格平面着色,1使整个网格平滑着色。如果您导出带有一些尖锐边缘的平滑着色对象,您还会在线条vn之后看到线条v,以 32 位浮点数的形式描述顶点法线x yz构成顶点方向的向量。
  • f通过将顶点与 UV 坐标关联来定义面。它包含A/B组成面的每个顶点的一个配对。其中 A 和 B 分别是顶点(v线)和 UV 坐标(vt线)的索引,如文件中所述。

    在我们的示例中,我们有一个立方体,它有 6 个面,每个面有 4 个顶点,因此我们有 6 条
    f线和 4 个A/B配对。

    第一行
    f 1/1 5/2 7/3 3/4表示:

    • 面的第一个顶点关联1/1,即列表的第一个顶点 ( v 1.000000 1.000000 -1.000000) 与列表的第一个 UV ( vt 0.625000 0.500000)
    • 面的第二个顶点关联5/2,即列表的第 5 个顶点 ( v -1.000000 1.000000 -1.000000) 与第二个 UV ( vt 0.875000 0.500000)
    • 很快

正如您所见,这里没有接缝,只有 2d/3d 数学坐标和关联。

\endgroup

3

  • 1
    \begingroup
    s解释得很棒!+1 您知道值为 0 的那条线是什么意思吗?在面部解释中,您实际上是说“第二个顶点使用第二个 UV”,还是说第五个顶点使用第二个 UV?否则,我似乎没有完全理解这个5/2设置……
    \endgroup


    – 


  • 1
    \begingroup
    我指的是“面”的第二个顶点,它将顶点列表的第 5 个顶点与 UV 坐标列表的第 2 个 UV 坐标配对。我编辑了我的答案,以便更好地解释这一点和其他事情。
    \endgroup


    – 

  • \begingroup
    啊,好的,是的,我第一次就是这样理解的,只是当数字说 5/2 时,我无法理解第二个顶点和第二个 UV 的含义——我只是不确定这是你的打字错误还是我只是没明白。
    \endgroup


    –