javascript - 如何在 Three.js 中将大量图像应用于平面段

标签 javascript geometry three.js textures webgl

我想知道,如果你在 THREE.JS 的 Geometry 实例中设置更多的段,例如:

new THREE.PlaneGeometry(1, 1, 10, 10);

您会看到您的平面被分成(如果打开线框模式)为 10x10 的部分。

是否可以将一些生成的图像(例如 map 片段)应用到具有以下图像( map 的一部分)的平面(或其他几何对象)的每个部分?

我只想创建一个平面并将许多图像应用到它的每个部分(当然要先准备好圆形部分),这样它看起来就像一张 map 。

如果可以,怎么做? 我是 WebGL/THREE.JS 的新手,所以我需要帮助。

PS 最主要的是,我不是在询问具有相同纹理的重复片段,而是关于为一个几何对象使用大量不同纹理并将它们应用于其片段。

感谢您的建议!

最佳答案

您可以覆盖 UV 以在脸上映射图像

geometry.faceVertexUvs[0].push([
        new THREE.Vector2( 0,0 ),
        new THREE.Vector2( 0,1 ),
        new THREE.Vector2( 1,1 ),    
        new THREE.Vector2( 1,0 ),    
]);

并为面部设置 materialIndex。

geometry.faces[i].materialIndex = i;
materials.push(material);

Full example in jsfiddle

关于javascript - 如何在 Three.js 中将大量图像应用于平面段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19811671/

相关文章:

javascript - 如何在 DynamoDB 表中插入多个项目并在超出最大容量时等待?

javascript - 延时后更改 JavaScript 对象变量

javascript - 多个 GET 调用的性能影响与从服务器以 JSON 格式向 AJAX 发送更复杂的 POST/GET 请求

c# - 如何确定一个矩形是否完全包含在另一个矩形中?

data-structures - 哪个数据结构适合查询 "all points within distance d from point p"

javascript - Webpack、Sass - 超出最大调用堆栈大小

algorithm - 检测三角形和旋转球体之间的 3D 碰撞

javascript - 三.js。应用 EdgesHelper 后更改网格位置

javascript - 在 THREE.js 中使用四元数设置向量的全局旋转

javascript - 对于 Three.js 使用 Json 而不是 obj 有什么好的理由吗