让我解释一下。
我需要处理多个纹理,我知道该怎么做,或者在处理时使用哪种方法。
解决方案是在几何图形上进行UV贴图以重复纹理。
问题是我不知道该怎么做,而THREE.js中有关UV映射的文档对我来说非常复杂。
比方说,我有三个具有相同纹理的不同对象。这些是尺寸:
(1,1,1)-我需要这个来拥有2x2的UV网格物体。 AKA 4在每张脸上重复。 (1,2,1)-我需要这个在侧面而不是顶部或底部具有2x4 UV网格。 (3,1,3)-我需要在顶部和底部(而不是侧面)上具有6x6的UV网格。
我该如何不加载纹理的3个不同克隆,并在每个特定的几何体上使用UV贴图根据其各自的大小重复纹理?
编辑:我已经设置了boxbuffergeometry的片段,但是纹理不会基于uvs重复。现在这是一个非常烦人的问题。我需要在几何图形中设置纹理重复/段/ uvs。
答案 0 :(得分:2)
假设您使用某种BufferGeometry,可以按如下所示缩放UV。将UV缩放2倍会使纹理平铺两次。
var uvs = mesh.geometry.attributes.uv;
for ( var i = 0; i < uvs.count; i++ ) {
uvs.setXY( i, uvs.getX( i ) * 2, uvs.getY( i ) * 2 );
}
完成此操作后,即使纹理重复不同的次数,也可以安全地合并共享材料的几何形状。
请参见https://threejs.org/docs/#api/en/core/BufferAttribute,从three.js r96开始。