Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 三柱面纹理畸变_Javascript_Three.js - Fatal编程技术网

Javascript 三柱面纹理畸变

Javascript 三柱面纹理畸变,javascript,three.js,Javascript,Three.js,将纹理应用于三个JS中的圆柱体几何体会导致纹理出现一些奇怪的变形,如下图所示: 形状是这样创建的: var cylinderGeo = new THREE.CylinderGeometry(0.1, 1, 1, 4, 1, false, Math.PI / 4); cylinderGeo.computeFlatVertexNormals(); var mesh = new THREE.Mesh(cylinderGeo); mesh.position.x = 10; mesh.scale.set

将纹理应用于三个JS中的圆柱体几何体会导致纹理出现一些奇怪的变形,如下图所示:

形状是这样创建的:

var cylinderGeo = new THREE.CylinderGeometry(0.1, 1, 1, 4, 1, false, Math.PI / 4);
cylinderGeo.computeFlatVertexNormals();
var mesh = new THREE.Mesh(cylinderGeo);
mesh.position.x = 10;
mesh.scale.set(10, 5, 10);
mesh.material = new THREE.MeshLambertMaterial();

// LOAD TEXTURE:
textureLoader.load("/textures/" + src + ".png", function (texture) {
    texture.wrapS = THREE.RepeatWrapping;
    texture.wrapT = THREE.RepeatWrapping;
    texture.repeat.set(2,2);
    texture.needsUpdate = true;
    mesh.material.map = texture;
    mesh.material.needsUpdate = true;
});
纹理似乎应用于每个多边形,而不是每个面?我怎样才能使它在没有任何此类瑕疵的情况下环绕圆柱体


编辑:纹理为256x256

棱锥体的每一侧由两个三角形组成。您可以在上的示例中非常清楚地看到这一点

每个三角形都有UV,这些UV是基于两个三角形具有相同比例的假设创建的,如示例中所示。通过缩小圆柱体的一端,可以更改三角形的比例,但UV保持不变

可以编辑UV以弥补差异,也可以(我建议)使用定义的正确UV创建自己的几何体