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

dom*_*son 3 uv-mapping three.js

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

var uvs = mesh.geometry.faceVertexUvs[0];
console.log(uvs.length);
Run Code Online (Sandbox Code Playgroud)

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

dom*_*son 6

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

texture.offset.y += 0.1;
Run Code Online (Sandbox Code Playgroud)

为了使用无缝/平铺纹理,我们还必须告诉 Three.js 纹理应该环绕/重复:

texture.wrapS = THREE.RepeatWrapping;
texture.wrapT = THREE.RepeatWrapping;
Run Code Online (Sandbox Code Playgroud)

来源:隧道效果教程

嗯,这很容易!