困扰我的是,我无法弄清楚网格、材质、纹理与模型的组成究竟是如何相关的。
我想要的只是快速解释它们之间的关系。
简而言之:
网格- 它只是您想要绘制的一些对象,例如汽车。它可以由许多子对象构建,但为了简单和易用,它被实现为一个包含所有您需要的对象。例如:当您想将汽车放在您的水平面上时,您通常不想单独放置每个车轮/轮胎 - 所以您只有一个网格:“汽车”。
子网格- 当您渲染一些多边形列表时,您需要在开始渲染之前设置一些执行操作的方式(这称为材质)。这意味着您在单个渲染操作期间不能使用多个材质。因为汽车由许多不同的材料制成,例如玻璃、金属等,所以您需要将其划分为子网格。您将拥有用于窗户、轮胎、车轮和车身的子网格 - 它们中的每一个都将使用不同的材料,如玻璃、橡胶、铝等,并且每个都将在不同的渲染操作中进行渲染,并选择不同的材料。因此,材质定义不会存储在网格对象中,而是存储在每个子网格中。
材质- 它是“向屏幕添加新三角形时要做什么”的定义,它可能因引擎和底层 API 版本而异,但它只存储您可能为材质设置的所有参数,例如不透明度、光泽度、颜色(纹理)、像素/顶点着色器等。
纹理- 材质可以使用图像作为输入 2D/3D 数据。当您阅读您的材质定义时,它定义了图像文件名,图像被读取并放入您的 GPU 并分配了一些 ID。稍后,当您选择材质时,GPU 将通过其 ID 使用正确的纹理,我认为这就是您现在需要知道的全部内容 :)
我无法为您提供子材料,因为我认为它高度依赖于引擎,如果您告诉我们您在使用什么,我们可能会告诉您更多信息。