新規トピックを開始
回答済み

STYLY上で、パーティクルがすり抜けて表示されてしまう。

Unity上で「画像透過処理をした3Dモデル」をSTYLYにアップロードすると、パーティクルがすり抜けてしまう。という現象が起こります。 Unity上で画像透過処理した際、「Unlit/Transparent」というシェーダーを使用しております。


最も良い回答

シンプルな解決策を書かせていただくと、以下のようになります。 


* 半透明な物体に半透明シェーダーを設定します。

* たとえばですが、草には Unlit/Transparent, パーティクルには Particles/Standard Unlit の RenderingMode=Transparent などになります。

* Render Queueについては、デフォルト設定にする必要があります。これを変更した場合、描画順が根底から変わってしまい、3Dエンジンが自動的に行っている「半透明物体は後ろから前の順に描画する機能(Zソート)」が機能しなくなりますので、デフォルト値で利用されることをおすすめします。

半透明シェーダーであればTransparentキュー(3000)、不透明シェーダーであればGeometryキュー(2000)を利用してください。  


* 3Dモデルを修正されるのが近道と考えられます。モデルのメッシュが大きいために、前後関係の計算が狂っていると考えられます、3dをモデルを修正して、たとえば全周の1/8 (45度分)ぐらいだけのモデルを作成し、それを8つ配置することで全周を覆うようにすると良いと思います。細かく分割することで、前後関係がより妥当になります。 

* 現状ですと、モデルの全体と、パーティクル全体で、前後関係が判定されていて、このために「どちらか一方が必ず手前に描画」というような大雑把な描画になっていると考えられます。

* モデルを分割することで、より細かい前後判定ができるようになります。 


* パーティクルに関して、広い範囲に出るパーティクルはこの問題が起きがちですので、3メートル四方ぐらいで区切る感じで別のParticle System にすると問題が生じにくくなります。

コメント数: 1

回答

シンプルな解決策を書かせていただくと、以下のようになります。 


* 半透明な物体に半透明シェーダーを設定します。

* たとえばですが、草には Unlit/Transparent, パーティクルには Particles/Standard Unlit の RenderingMode=Transparent などになります。

* Render Queueについては、デフォルト設定にする必要があります。これを変更した場合、描画順が根底から変わってしまい、3Dエンジンが自動的に行っている「半透明物体は後ろから前の順に描画する機能(Zソート)」が機能しなくなりますので、デフォルト値で利用されることをおすすめします。

半透明シェーダーであればTransparentキュー(3000)、不透明シェーダーであればGeometryキュー(2000)を利用してください。  


* 3Dモデルを修正されるのが近道と考えられます。モデルのメッシュが大きいために、前後関係の計算が狂っていると考えられます、3dをモデルを修正して、たとえば全周の1/8 (45度分)ぐらいだけのモデルを作成し、それを8つ配置することで全周を覆うようにすると良いと思います。細かく分割することで、前後関係がより妥当になります。 

* 現状ですと、モデルの全体と、パーティクル全体で、前後関係が判定されていて、このために「どちらか一方が必ず手前に描画」というような大雑把な描画になっていると考えられます。

* モデルを分割することで、より細かい前後判定ができるようになります。 


* パーティクルに関して、広い範囲に出るパーティクルはこの問題が起きがちですので、3メートル四方ぐらいで区切る感じで別のParticle System にすると問題が生じにくくなります。

ログイン または 登録 コメント投稿のため