Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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 ThreeJS在挤出计量法的部分侧壁上应用纹理,无需重复包装_Javascript_Three.js - Fatal编程技术网

Javascript ThreeJS在挤出计量法的部分侧壁上应用纹理,无需重复包装

Javascript ThreeJS在挤出计量法的部分侧壁上应用纹理,无需重复包装,javascript,three.js,Javascript,Three.js,我想在拉伸几何体的曲面上使用纹理。实际上,我会在拉伸几何体的一面墙上放置一个图像 更精确地说,该几何体是右圆柱的1/8,顶面是一个圆段,侧面由两个矩形和1/8的圆柱弯曲形状外表面组成 现在,我遇到了两个问题: 1) 纹理将应用于几何体的所有曲面,如何仅在曲线形状曲面上应用纹理 // geometry var settings = { amount: 12, steps : 1, bevelEnabled: false, curveSeg

我想在拉伸几何体的曲面上使用纹理。实际上,我会在拉伸几何体的一面墙上放置一个图像

更精确地说,该几何体是右圆柱的1/8,顶面是一个圆段,侧面由两个矩形和1/8的圆柱弯曲形状外表面组成

现在,我遇到了两个问题:

1) 纹理将应用于几何体的所有曲面,如何仅在曲线形状曲面上应用纹理

    // geometry
  var settings = {
      amount: 12,
      steps : 1,
      bevelEnabled: false,
      curveSegments: 24
  };

  var shape = new THREE.Shape();
  shape.moveTo( 0, 0 );
  shape.absarc( 0, 0, 5, 0, Math.PI / 4, false );
  shape.moveTo( 0, 0 );

  var geometry = new THREE.ExtrudeGeometry( shape, settings );
var texture = new THREE.Texture(canvas);
//texture.wrapS = texture.wrapT = THREE.RepeatWrapping; // CHANGED
    texture.needsUpdate = true;
var material = new THREE.MeshBasicMaterial({
  color: 0x5588ff,
  map: texture
    });
mesh = THREE.SceneUtils.createMultiMaterialObject(geometry, [material,new THREE.MeshBasicMaterial({
  color: 0x000000,
  wireframe: true,
  transparent: true
    })]);
scene.add( mesh );
2) 因为我将使用画布上的图像在其上绘制图像,然后将其用作此网格的纹理,我不希望图像重复,也许稍微拉伸就可以了。当然,我需要确保图像的大小与曲面的大小非常相似

    // geometry
  var settings = {
      amount: 12,
      steps : 1,
      bevelEnabled: false,
      curveSegments: 24
  };

  var shape = new THREE.Shape();
  shape.moveTo( 0, 0 );
  shape.absarc( 0, 0, 5, 0, Math.PI / 4, false );
  shape.moveTo( 0, 0 );

  var geometry = new THREE.ExtrudeGeometry( shape, settings );
var texture = new THREE.Texture(canvas);
//texture.wrapS = texture.wrapT = THREE.RepeatWrapping; // CHANGED
    texture.needsUpdate = true;
var material = new THREE.MeshBasicMaterial({
  color: 0x5588ff,
  map: texture
    });
mesh = THREE.SceneUtils.createMultiMaterialObject(geometry, [material,new THREE.MeshBasicMaterial({
  color: 0x000000,
  wireframe: true,
  transparent: true
    })]);
scene.add( mesh );

从演示链接中,您可以看到纹理已应用于所有曲面,实际上我只希望该纹理应用于圆柱体1/8的曲面

如有任何意见,将不胜感激


谢谢

这就是你想要的吗?你必须添加一个单独的拉伸三角形来完成几何体。嗨,WestLangley,它非常封闭,但仍然不是我想要的。我只想在曲线区域的前表面上放置一个图像。现在,我再次更新代码,而不是使用画布,现在我从internet加载了一个图像,但我未能在表面上绘制此图像。我更新链接这是你想要的吗?你必须添加一个单独的拉伸三角形来完成几何体。嗨,WestLangley,它非常封闭,但仍然不是我想要的。我只想在曲线区域的前表面上放置一个图像。现在,我再次更新代码,而不是使用画布,现在我从internet加载了一个图像,但我未能在表面上绘制此图像。我更新链接