【问题标题】:Multiple materials for single object using different UVs使用不同 UV 的单个对象的多种材质
【发布时间】:2016-10-30 17:53:11
【问题描述】:

问题的前史:

链接到相关的question on CG(关于下面提到的模型的某些编辑器中的UV展开,例如3dsmax)

我有一个单品模型。它从 3DS Max 中导出(带有纹理坐标)。

UVW 和对象的屏幕截图。 UVW 中无用的部分在右上角分组。

我将此纹理用作凹凸贴图(调整大小以减少问题中的位置,原始大小为 512x512)。

这个模型是用THREE.OBJMTLLoader 加载的,并用threejs 在浏览器中渲染。当然,如果我需要重用这个映射来添加另一个需要对象所有部分的纹理,那么这个纹理和 UVW 就变得毫无用处了。

现在不要退出 3DS Max,因为这个问题不是关于在那里建立模型。

现在让我们想象一个存在于场景 (scene.add( cube );) 某处的立方体(简称为 THREE.BoxGeometry)。

我想在立方体的左边画一个图像。在右侧我需要放置一个凹凸贴图,顶部是light map。另一方面,纹理贴图可以以某种方式组合或只是空的 - 我想这不是关键点。

像这样:

但在这种情况下,每张地图只占可用位置的 1/16。像这样:

当然,可以移动一些方块,每张地图最多可以获得1/9的可用空间,但是我需要每个纹理的质量都很好,所以最好使用整个像这样为每个纹理块(1/1)。

例如,纹理可以是 512x512,凹凸贴图可以平铺(参见prehistory的图片)。

问题是:

  • 我需要执行哪些步骤才能使用每个纹理的所有可用空间?
  • 什么技术可以帮助实现这样的结果?
  • 最佳实践/指南/建议/文章链接/示例 - 引导正确方向的东西

【问题讨论】:

    标签: optimization three.js 3d-model


    【解决方案1】:

    是否可以为单个对象使用多个不同的 UWV 来添加不同的纹理?

    Three.js 材质基本上支持最多 2 个 UV 通道,但无法控制给定纹理使用哪个通道。第一个通道用于可平铺纹理(漫反射、粗糙度等)。第二个用于非平铺(AO,光照贴图)

    也就是说,通过自定义几何图形和自定义材质,您可以使用任意数量的 uvs 通道。唯一的限制是着色器中可用的最大属性(至少 8 个)

    3DS Max 对 uvs 通道的数量也没有限制。

    主要问题是以同样支持多个 UV 通道的格式导出/导入模型。 OBJ 没有。

    是否可以仅对模型的一部分使用 UWV 以避免空间浪费?

    你可以简单地为不需要纹理的部分使用不同的材料

    【讨论】:

    • 我更新了一个问题,以脱离 3dsmax 和 obj 格式。能否请您指出一篇文章/文档或添加一些具有多材质/多 UV 的示例?
    猜你喜欢
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2015-01-16
    • 2023-03-24
    • 2017-09-20
    • 2019-01-29
    • 1970-01-01
    相关资源
    最近更新 更多