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