10

我想将贴花放在管几何图形的一段内(在背面)。

我的做法是使用 TubeGeometry 作为贴花几何。

这就是我所拥有的: 在此处输入图像描述

这就是我想要的:( 画得不好)在此处输入图像描述

示例代码:

//code
var tube = new THREE.TubeGeometry(pipelineSpline, 200, 20, 20, closed2);

tubeMesh = THREE.SceneUtils.createMultiMaterialObject(
       geometry, [
            material,       // a phong material
            materialInside // a material for the inside               
       ]);

scene.add(tubeMesh); 

var decalGeometry = new THREE.DecalGeometry(
      tubeMesh.children[0], 
      new THREE.Vector3(0,0,0),      //position
      new THREE.Vector3(0,1,0),      //direction
      new THREE.Vector3(10,10,10),   //dimensions
      new THREE.Vector3(0,0,0)       //check
    );

然而,这似乎在所有背面几何路径上应用了管子的贴花。而且我只希望它在关键位置的管背面的一部分上。

如何使用 THREE.DecalGeometry 在 TubeGeometry 中制作本地化贴花?可能吗?

4

1 回答 1

3

您将需要为此使用 a ShaderMaterial,并在着色器代码中定义定位和不透明度规则以及由 THREE.js 传递给它的各种uniform(例如,新纹理)和(例如,UV)值。parameter

于 2015-11-06T00:55:56.977 回答