javascript - 三个 JS 圆柱体纹理失真

标签 javascript three.js

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

enter image description here

形状是这样创建的:

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

最佳答案

金字塔的每一边都由两个三 Angular 形组成。您可以在 CylinderGeometry documentation page 上的示例中清楚地看到这一点。 .

每个三 Angular 形都有 UV,这些 UV 是基于两个三 Angular 形的比例相同的假设创建的,就像它们在示例中一样。通过缩小圆柱体的一端,可以改变三 Angular 形的比例,但 UV 保持不变。

您可以编辑 UV 来弥补差异,或者(我建议)创建您自己的定义了适当 UV 的几何体。

关于javascript - 三个 JS 圆柱体纹理失真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49230335/

相关文章:

javascript - 什么是闭包和回调?

javascript - 如何从 2 个子 div 中隐藏父 div?

javascript - React 多个复选框的行为很奇怪,并且状态中添加了确认和取消功能

javascript - 这是使用 ES6 最有效地查找因子而无需循环的方法吗?

javascript - 将绝对位置转换为相对位置

javascript - 动态地将一个立方体堆叠在另一个立方体上

THREE.js 轨道控制不起作用

javascript - 使用 ThreeJS 获取球体纹理的点击位置

three.js - 如何旋转对象以查看三个js中的鼠标点?

three.js - 内部映射着色器自阴影