【译】glTF教程:网格(九)
网格
上一节中的示例:简单格网示例展示了 [mesh
]的一个基本示例。(https://github.com/khronosgroup/gltf/tree/master/speciation/2.0/# reference-primitive)与包含多个属性的mesh.primitive
对象。本节将解释网格原语的含义和用法,网格如何连接到场景图的节点,以及如何使用不同的材质渲染它们。
网格基本体(网格原始对象)
每个mesh
包含一个 mesh.primitive
对象。网格基本体。这些网格基本对象是较大对象的较小部分或构建块。网格原语总结了关于如何呈现对象的各个部分的所有信息。
网格原始属性
网格原语使用其 attributes
字典定义对象的几何数据。这个几何数据是由包含顶点属性数据的accessor
对象的引用提供的。accessor
概念的细节在缓冲区、缓冲视图和访问器一节中进行了解释。
在给定的示例中,attributes
字典中有两个条目。条目引用positionsAccessor
和 normalsAccessor
:
"meshes" : [
{
"primitives" : [ {
"attributes" : {
"POSITION" : 1,
"NORMAL" : 2
},
"indices" : 0
} ]
}
],
这些访问器的元素一起定义属于各个顶点的属性,如图9a所示。
索引和非索引几何
网格的几何数据。 mesh.primitive
可以是 indexed几何图形,也可以是没有索引的几何图形。在给定的例子中,网格。 mesh.primitive
包含 indexed几何。这由“indexes”属性表示,该属性引用索引0的访问器,定义索引的数据。对于非索引几何图形,省略此属性。
网格原始模式
默认情况下,几何数据被假定为描述一个三角形网格。对于indexed几何结构,这意味着假定indexed访问器的三个连续元素包含单个三角形的索引。对于非索引几何,顶点属性访问器的三个元素假设包含三角形的三个顶点的属性。
还可以使用其他呈现模式:几何数据也可以描述单独的点、线或三角形条。这是由可能存储在mesh原语中的 mode
指示的。它的值是一个常量,指示几何数据必须如何解释。例如,当几何图形由点组成时,模式可以是“0”,当几何图形由三角形组成时,模式可以是“4”。这些常量分别对应于GL常量POINTS
或TRIANGLES
。看到primitive.mode
specification,以获取可用模式的列表。
网的原始材料
网格原语也可以引用应该用于渲染的material
,使用该材质的索引。在给定的示例中,没有定义material
,这导致使用默认材质呈现对象,该默认材质仅定义对象具有统一的50%灰色。在材质
小节中,将对材料及其相关概念进行详细解释。
连接到节点的网格
在示例:简单格网部分的示例中,有一个单独的 scene
,其中包含两个节点,两个节点都指向同一个mesh
实例,该实例的索引为0:
"scenes" : [
{
"nodes" : [ 0, 1]
}
],
"nodes" : [
{
"mesh" : 0
},
{
"mesh" : 0,
"translation" : [ 1.0, 0.0, 0.0 ]
}
],
"meshes" : [
{ ... }
],
第二个节点有一个translation
属性。如场景和节点部分所示,它将用于计算该节点的本地转换矩阵。在这种情况下,矩阵将导致沿x轴平移1.0。节点的所有局部转换的乘积将生成全局转换。所有附加到节点上的元素都将使用这个全局转换进行呈现。
在这个例子中,网格将被渲染两次,因为它被附加到两个节点上:一次是第一个节点的全局变换,也就是恒等变换,另一次是第二个节点的全局变换,也就是沿着x轴平移1.0。