0

关于这个问题,请参考以下文档: BabylonJS JSON 文件格式

在“vertexData”节点中,顶点、法线向量和 uv 被声明用于构造 3D 对象。请参阅链接的文档页面底部的示例 .babylon 文件中的以下“几何”节点。

"geometries": {
    "boxes": [{
        "id": "BoxPrimitive",
        "size": 2,
        "canBeRegenerated": true,
        "tags": "Box Primitive Cube CanBeRegenerated"
    }],
    "vertexData": [{
        "id": "CubeGeometry",
        "updatable": false,
        "positions": [ 1, -1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 1, 1, 1, 1, 1, -1, 1, -1, 1, 1, -1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, 1, -1, -1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1],
        "normals": [0.5773, -0.5773, 0.5773, 0.5773, -0.5773, -0.5773, -0.5773, -0.5773, 0.5773, 0.5773, 0.5773, 0.5773, -0.5773, 0.5773, 0.5773, 0.5773, 0.5773, -0.5773, 0.5773, 0.5773, 0.5773, 0.5773, -0.5773, -0.5773, 0.5773, -0.5773, -0.5773, 0.5773, 0.5773, -0.5773, -0.5773, -0.5773, -0.5773, -0.5773, -0.5773, -0.5773, -0.5773, 0.5773, -0.5773, -0.5773, -0.5773, 0.5773, 0.5773, 0.5773, 0.5773, 0.5773, -0.5773, 0.5773, -0.5773, 0.5773, 0.5773, -0.5773, -0.5773, -0.5773, -0.5773, 0.5773, -0.5773, 0.5773, 0.5773, 0.5773, 0.5773, 0.5773, -0.5773, 0.5773, -0.5773, -0.5773, 0.5773, 0.5773, -0.5773, -0.5773, 0.5773, -0.5773, -0.5773, 0.5773, 0.5773, -0.5773, -0.5773, 0.5773, 0.5773, -0.5773, 0.5773, -0.5773, -0.5773, 0.5773, -0.5773, 0.5773, 0.5773],
        "uvs": [0.5, 0.5, 0.5, 0, 0, 0.5, 0.5, 1, 0, 1, 0.5, 0.5, 0.5, 1, 0, 0.5, 0.5, 0.5, 0.5, 1, 0, 0.5, 0.5, 0.5, 0.5, 1, 1, 0.5, 0.5, 0.5, 0.5, 0, 0, 0.5, 0, 0, 0, 0.5, 0.5, 1, 0, 1, 0, 0.5, 0.5, 1, 0, 1, 1, 1, 1, 0.5, 0.5, 0, 0, 0, 0, 0.5],
        "indices": [0, 1, 2, 3, 4, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 17, 2, 4, 18, 5, 19, 20, 21, 22, 23, 10, 12, 24, 25, 26, 27, 28]
    }]
}

在这个对象中,有 29 个(通常是冗余的)顶点,声明为“位置”中的 3 个浮点组,然后由“索引”排列,这些“索引”是三个整数组,表示通过连接引用的“位置”顶点绘制的三角形.

每个“位置”顶点都声明了一个法线向量,它只是标准化为单位向量的位置向量。这样做的目的是什么?为什么包括在内?没有它可以生成 3D 模型吗?

此外,什么是“紫外线”。每个顶点有一对 2 uv。这些是什么意思?

4

1 回答 1

1

UV字段被调用Texture Coordinates,它们告诉您要在网格上使用纹理的哪一部分。

UV值就像你的 2D 图像中的XY位置。事实上,它们被称为U/V而不是X/Y仅仅为了避免误解,但它们代表的是同一种数据。它们也被规范化,这意味着0值是“开始”并且1意味着“结束”(无论纹理的分辨率如何 - 因此您可以在不破坏渲染的情况下调整纹理大小)。

当你渲染一个三角形时,你基本上有 3 个顶点,每个顶点都有自己的UV值。如果将这些值标记为X/Y2D 图像中的值,您将使用与渲染相同的纹理部分得到一个三角形。

这是关于此主题的另一个答案:https ://stackoverflow.com/a/21909471/1479630

于 2016-03-30T14:46:46.813 回答