three.js - 管段上的TubeGeometry + DecalGeometry

Rui*_*rey 9 javascript decal three.js

我想在一个管几何体的一段(在背面)中放一个贴花.

我的方法是使用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
    );
Run Code Online (Sandbox Code Playgroud)

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

如何使用THREE.DecalGeometry在TubeGeometry中制作局部贴花?可能吗?

bjo*_*rke 3

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

  • 这不在标准库中:)像这样的重地理方法对于布景很有好处,但如果动态放置贴花(例如,在游戏中爆炸燃烧时),就会很困难。只有您知道您需要的上下文。 (2认同)