2015-11-04 10 views
9

デカールをチューブジオメトリのセグメント(背面にあります)の内側に配置したいと考えています。three.js - TubeGeometry + DecalGeometry(チューブのセグメント上)

私が行う方法は、デカールジオメトリとしてTubeGeometryを使用することです。

これは私が持っているものです。 enter image description here

そして、これは私が欲しいものです: enter image description here (悪い描画)

サンプルコード:

//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 
    ); 

しかし、これはいるようですすべての背面ジオメトリパスに沿ってチューブのデカールを適用します。そして、私はそれを主要なポジションのTubeのBackSideの1つの部分にだけ必要とします。

THREE.DecalGeometryを使用してTubeGeometryでローカライズされたデカールを作成するにはどうすればよいですか?出来ますか?

答えて

3

あなたはこのためにShaderMaterialを使用する必要がある、とシェーダコードの位置決め及び不透明度のルールを定義し、様々なuniform(例えば、新しいテクスチャ)と3つによってそれに渡さparameter(例えば、UV)の値になります。 js。

+0

ありがとうございます。 THREE.DecalGeometry https://github.com/spite/THREE.DecalGeometryを使用してそれを行うことはできませんか?最高の –

+2

それは標準的な図書館ではありません:)そのようなジオ重い方法はセットドレッシングには適していますが、デカールが動的に配置されている場合(例えば、爆発がゲームで燃えるように)は苦労します。あなただけがあなたが必要とする文脈を知っています。 – bjorke

+0

ありがとう@bjorke彼らはシーンの先頭に置かれます...パイプに沿って10のようにして静的になります –

関連する問題