Unity3D-2Dスプライトをテッセレーションする方法?


8

2Dスプライトで動的な頂点ライティングを使用しています。大きいスプライトでは、小さいスプライトよりも照明が醜くなります。これは、すべてのスプライトが2つの三角形の四角形であるためです。広い領域を照らすのに十分な頂点がありません。

スプライトでより多くの三角形を使用する方法はありますか?彼らがカバーしている画面スペースの大きさにもよるでしょうか?


1
クワッドをさらに分割したいようですね。それが事実である場合、私はこれを実現するための擬似コードにいくつかの良い例があります。Afaik Unityを使用すると、ゲームオブジェクトメッシュ(およびその三角形/頂点)にアクセスできます。これにより、目的を達成できます。これは、クワッドを分割するためのgamedevでのそのような例の1つですクワッドを分割する方法?。これはあなたが探していたものに沿っていますか?
Logham

はい、クワッドの分割は私が探しているアプローチです。これには、巻線とUVが含まれると思います。そうすれば、三角形が増えます。
aggsol 2014

スプライトを描画するときにテッセレーションシェーダーを使用してみましたか?docs.unity3d.com/Manual/SL-SurfaceShaderTessellation.htmlの answers.unity3d.com/questions/583960/...
ClassicThunder

2
クワッドをテッセレーションすると、頂点のライティング値が補間されます。クワッドはフラットであるため、頂点が増えると、補間はクワッド全体で線形になります。三角形を追加すると、この問題はどのように修正されますか。これは、ピクセルシェーダーで解決する必要があるように聞こえます。
Arun R

@ArunR良い点ですが、たとえば、クワッドがポイントライトの範囲よりも大きい場合、三角形がライトを使用します。残念ながら、すべてのデバイスでピクセルシェーダーを使用することはできません。
aggsol 2014

回答:


2

独自のゲームオブジェクトを作成し、カスタムの三角測量アルゴリズムを使用して、サイズに関連するいくつかの計算に基づいて詳細を処理する必要があるようです。

たぶん、このようなものが役立つかもしれません...

http://forum.unity3d.com/threads/tessellation-algorithms-for-polygons.228051/

他のオプションは、よりスマートなシェーダーとバンプマップをスプライト...頂点変位タイプのアプローチで使用することです。

何が最適であるかについて、何を達成しようとしているのかを正確に知らなければ、言うのは難しいです。うまくいけば、これらのいずれかが役立ちます。


アイデアは、ピクセルライトよりもはるかに高速であるため、スプライトで頂点ライトを使用することです。特に一部のモバイルプラットフォームには、低スペックのグラフィックチップが搭載されています。
aggsol 2014

それで、分割したい大きな四角形があり、頂点ごとに結果がライトになると言っているのですか?既存の低解像度クワッドIMOでピクセル単位のライティングを使用することにより、はるかに優れたより高速な結果を得ることができますが、それが必要な場合はそれを使用してください。クワッドを分割するのは難しいことではありませんか?
戦争

ピクセルごとのライティングによって保存するものは、より大きな頂点バッファーを持つことで効果的に失われることを覚えておいてください...もちろん、他のオプションは、部分に基づいてライトレベルをピクセルシェーダーに渡すために頂点シェーダーでいくつかの計算を行うことです頂点のように、小さなVBが得られ、ピクセルごとのライトはありません。
戦争

そのアイデアをスクラップ...それはうまくいきません...うーん
戦争

1
質問の説明が必要な場合は、質問にコメントを投稿してください。
MichaelHouse
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.