これは奇妙な質問かもしれません。透明な白い線が表示されるOpenGL線
この短い紹介です。私はレイキャストを使ってカメラのビジョンを表現しようとしているので、オブジェクトを見ることができます。衝突はうまく働いています。今私はカメラを使って "ビジョン"を視覚化しようとしています。最初は、debug.drawLine/Rayに組み込まれたものを使い始めましたが、そこに描画された線や光線には柔軟性がありません。その後、私はOpenGLに移り、線を描きました。私は望んでいた機能を手に入れましたが、そうすることで私は解決できない問題にぶつかってきました。
あなたは私が描いていますラインは、透明性を持っており、彼らがすることになっていることがわかります上。私の考えは、線が透明であり、すべて一重点から来ているので、透明度は「スタッキング」であり、それらを白くして、私が望まないものにすることです。
私は線材の材質を使用しようとしましたが、線を透明にすることはできません。だから私は下にあるスクリプトを使ってあなたにシェイダーを組み込んだ統合トピックを見つけることに決めました。
void createLineMaterial()
{
if(!lineMaterial)
{
Shader shader = Shader.Find("Hidden/Internal-Colored");
lineMaterial = new Material(shader);
lineMaterial.hideFlags = HideFlags.HideAndDontSave;
//Turn on Alpha blending
lineMaterial.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
lineMaterial.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.DstAlpha);
//Turn backface culling off
lineMaterial.SetInt("_Cull", (int)UnityEngine.Rendering.CullMode.Off);
//Turn off depth writes
lineMaterial.SetInt("_ZWrite", 0);
}
}
私は、幅のビジョンを取得し、次に環境の3D表現を得るために高さの掃引を試みます。
本当の質問はシェイダーについてです。積み重ねることなく透明度を使用するにはどうすればよいですか?私はシェイダーには新しく、実際には分かりません。
読んでいただきありがとうございます。
私は....これを修正する方法を考えることはできません。私は透明度を違うカスタムシェーダを言うつもりでしたが、それはうまくいかないと私には起こりました。うーん...実際に、あなたが*ステンシルマスク*を使っていればうまくいくかもしれません。そのシェーダは、前に描画していない部分だけを描画し、スタックを1に制限します。 – Draco18s
@ Draco18s各プレーンを描画したいのですが、最後の目標は透明な透明なオブジェクトを作成して衝突を表示することです。これは本当に私を困惑させてしまった。 – Puddinglord
私はあなたがしようとしていることを知っています。私がこれを達成すると考えることができる唯一の方法は、[ステンシルマスク](https://docs.unity3d.com/Manual/SL-Stencil.html)を使用してカスタムシェーダを使用することです。 – Draco18s