私はシーンで定義しているクリッピングプレーンを考慮したシェーダを作成しようとしています。これらのクリッピングプレーンは、私が使用している「バニラ」のすべての素材でうまく動作します:THREE.MeshLambertMaterial
、THREE.MeshPhongMaterial
、およびTHREE.MeshPhysicalMaterial
ですが、THREE.ShaderMaterial
にはこの実装がありません。 2つのキューブ、THREE.MeshStandardMaterial
とTHREE.ShaderMaterial
によって定義された材料と1と1がある。この例ではhttps://jsfiddle.net/fraguada/27LrLsv5/THREE.ShaderMaterialにクリッピングを追加
:これは私が何を意味するかの一例です。 THREE.MeshStandardMaterial
クリップ付きキューブは大丈夫です。 THREE.ShaderMaterialのキューブはクリップされません。
(私はjsfiddleに表示として、私は通常、代わりに私はこれと同様の方法でそれらを定義しています、スクリプトタグで頂点/フラグメントシェーダを定義していないよ:https://github.com/mrdoob/three.js/blob/dev/examples/js/shaders/BasicShader.js。)だから、
を、いくつかの質問:
- THREE.ShaderMaterialにはクリッピングプレーンが含まれていますか?そうでない場合、どのように私はクリッピングを有効にする必要のparamsとシェーダチャンクを含めるには、このシェーダを修正することができ
- (そこクリッピングプロパティですが、わからない、それは可能何)?
ありがとう@neeh、これは私を少しナッツ運転していた。私はbegin_vertexとproject_vertexチャンクが欠けていました!私は 'mvPosition'に関連したエラーを続けていましたが、それを定義したチャンクについてはゼロではありませんでした。再度、感謝します! –
ありがとう!!この答えの最も重要な部分は、設定するプロパティが他のマテリアルには存在しないShaderMaterialの「クリッピング」であるということです。 https://threejs.org/docs/#api/materials/ShaderMaterial – taseenb