如何使用 three.js 修改 UV 坐标

How to modify UV coordinates with three.js

我想在运行时修改 JSON 模型的展开(UV 坐标),以便在几何体表面移动纹理。我在 Geometry class documentation 中找到了 faceVertexUvs。它包含一个数组,这是正确的。该数组包含很多元素,我假设它们是每个顶点的 UV 坐标。示例代码:

var uvs = mesh.geometry.faceVertexUvs[0];
console.log(uvs.length);

给我 4232 作为输出。到目前为止,一切都很好。现在我想更改 uv 值,但数组的 4000 多个元素都是字符串("1""4234")。我只找到了展示如何从头开始创建展开的示例,在这种情况下,人们将 Vector2 数据推入 faceVertexUvs。那么,为什么我在那里看不到 Vector2 数据?

好的,我自己解决了这个问题,万岁。我在搜索错误的术语,因为 three.js 使这变得非常简单。可以在纹理本身上设置偏移量,而不是实际改变展开(几何体的 UV 坐标):

texture.offset.y += 0.1;

为了使用 seamless/tiling 纹理,我们还必须告诉 three.js 纹理应该 wrap/repeat:

texture.wrapS = THREE.RepeatWrapping;
texture.wrapT = THREE.RepeatWrapping;

来源:Tunnel Effect Tutorial

嗯,这很简单!