2016-05-30 5 views
6

three.jsでは、後処理エフェクトを選択したメッシュにのみ適用できますか?選択したメッシュへの後処理

たとえば、シーンの残りの部分に粒状効果があるキューブを持たせる場合などです。 ありがとうございました!

答えて

3

はい。 three.js exampleには、マスキングを使用して選択されたメッシュに後処理を適用する方法が示されています。

私は例がわかりやすくするために改善することができると思いますが、あなたはそうのような例を変更することができます。

postprocessing to selected mesh

それは次のとおりです。

composer4 = new THREE.EffectComposer(renderer, new THREE.WebGLRenderTarget(rtWidth, rtHeight, rtParameters)); 

composer4.addPass(renderScene); 
composer4.addPass(renderMask); 
composer4.addPass(effectDotScreen); 
composer4.addPass(clearMask); 
composer4.addPass(effectVignette); 

あなたはこのような出力が得られます複雑な例なので、あなたは慎重にそれを勉強しなければならないでしょう

three.js.r.77

+0

ありがとう@WestLangley、それを動作させるために管理。しかし、私は深さ情報の喪失に関連する1つの質問があります:3-jのポストエフェクトを使用することはできません(主にフラグメントシェーダとして構築されています)、マスクの必要性を回避してメッシュの材料として使用されますか? –

+0

そして、他の質問:私は中心のものの周りを回転する分離されたオブジェクトのセットを持っている、私はオブジェクトの周りを回転する分離されたセットに適用されたものと異なる中心のオブジェクトにマスキングを適用したい...そこには何もありません深さグリッチのない両方の要素で異なる後処理を得るためにマスクを追加/減算するには? –

+0

(1)はい、カスタム 'ShaderMaterial'。 (2)おそらく、あなたは新しい質問を投稿し、コミュニティに尋ねるべきです。 – WestLangley

5

はい、オブジェクトを別のシーンに配置した場合です。しかし、deptレンダリングの問題に直面するでしょう、いくつかのオブジェクトは常に上になります。シーンの状況によって異なります。

+0

はい、私は深さの作業を持っている必要があります...私は、たとえば同じシーン1日をレンダリングし、後処理を持っていない要素にいくつかのマスクを適用することはできませんし、他のシーンでは、「後処理要素」以外のすべてをレンダリングします。したがって、 "後処理されていない要素"は2番目のシーンでは表示されませんが、 "後処理された要素"はまだ閉塞しています。 –

+0

これは、使用しているポスト処理によって異なります。私はレンダラーを使用して後処理のみを知っており、レンダラーはシーン全体で使用する必要があります。 – Martin

+0

マテリアルにシェーダパスを適用できませんか?または、マテリアルシェーダを調整して、スクリーン座標に基づいて色/効果の計算を行いますか? –

関連する問題