在Three.js中自动进行纹理映射

时间:2018-09-24 09:04:27

标签: javascript three.js

我想在网格上自动进行纹理映射。如图中所示,我将一个纹理(1024 X 1024像素)应用于两个立方体,一个立方体具有较大的表面,第二个具有较小的表面。当图像相对于UV坐标缩放时,两个立方体的纹理大小将有所不同。我想知道是否有一种方法可以计算表面的理想图像比例。例如,如果曲面边界,UV坐标和图像尺寸之间有任何等式。
enter image description here

1 个答案:

答案 0 :(得分:0)

如果是平铺的纹理(重复时没有接缝),则可以根据立方体的大小重复该纹理。

// depending on how you create the cube, the actual size of the cube is hidden either in
// the geometry, the transformation matrix (or object scale), or both. This should respect all.
var size = cube.geometry.boundingBox.getSize().multiply(cube.scale);

// adjust size of texture with `resolution` or some constant
var repeatFactor = resolution * size.x;

var texture = cube.material.map;
texture.wrapS = THREE.RepeatWrapping;
texture.wrapT = THREE.RepeatWrapping;
texture.repeat.set( repeatFactor, repeatFactor );
texture.needsUpdate = true;