私はTHREEのクリッピングプレーンで作業しようとしていますが、Material.clipIntersection
の説明を読んでいませんでした。素材ごとに切り抜きを有効/無効にする(r87)
例を読み、コードを掘り下げて、クリッピングを有効にするかどうかを制御するパラメータがないと判断しました。唯一の2つのインタフェースがある:
.clippingPlanes[]
.clipIntersection
そしておそらくRenderer.localClippingEnabled
が、私は...地元のクリッピングを有効/無効にグローバルにしたくありません。つまり私は2つの材料を持っている場合、私は1つでそれを制御できるようにしたいと思います。
'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,
を私はWebGLClipping
で起こって多くのものがあることがわかります。
問題はclippingPlanes
がNUM_CLIPPING_PLANES
を定義していることのようです。それでも私は定義に混乱しています。クリッピング面を追加/削除するたびに材料を更新する必要があるかどうか疑問に思っています。
tl:dr;
は、簡単にこの例にクリッピングを有効/無効にするトグルを追加する方法で構築あり: https://threejs.org/examples/#webgl_clipping_intersection、シェーダを再コンパイルせず?
'mesh.material.clippingPlanes [0] .constant = BigNumber; 'を設定すると、クリッピングを無効にするのと同じ効果があります。 – WestLangley
これはもう一つの考えです。これは、制服のクリッピングロジックの前にifチェックがあるのと同じくらい速いのかどうか分かりますか? – pailhead