粒子を滑らかなブロブとして描く


12

ゲーム/グラフィックスの開発は初めてで、パーティクル(2D)で遊んでいます。液体/水のように、粒子を互いにブロブとして近づけたい。ブロブが滑らかではない(そして大きすぎる)ため、大きな円を重ねて描画したくありません。物理学はあまり知りませんが、表面張力に似たものが欲しいと思います。

stackexchangeやGoogleで何も見つかりませんでした(正しいキーワードがわからないかもしれません)。これまでに2つの可能な解決策を見つけましたが、アルゴリズムに関する具体的な情報を見つけることができません。

それらの1つは、粒子の凹包を計算することです。等価クラスを作成することにより、ブロブを計算できます(「互いに近い」関係に)。不思議なことに私は見つけることができませんでした任意の凹面船体を計算する方法を説明するアルゴリズムを。多くの投稿(およびstackexchange間)は、これを行うライブラリまたは商用製品にリンクしています(C#で動作するにはライブラリが必要です)が、アルゴリズムはありません。また、このソリューションには、粒子の円に問題があり、中央の空きスペースが検出されない場合があります。

凹型船体の研究中に、アルファシェイプと呼ばれるものを見つけました。これはまさに私がやりたいことのように思えますが、凹型船体と同じように、実際にどのように機能するかを説明する情報源は見つかりませんでした。プレゼンテーション資料をいくつか見つけましたが、先に進むのに十分ではありません。私以外の誰もが知っている大きな秘密のようなものです:-/

凹型の船体またはアルファ形状を計算した後、ベジエ曲線にして滑らかで素敵なものにします。

私のアプローチは少し複雑すぎると感じていますが、おそらくこれを間違った方法で解決しようとしていますか?あなたが私の問題に対する他の解決策を提案するか、私が行方不明になっている部分を説明できるなら、私はとても幸せで感謝します:-)

ありがとう。



@BlueRajaコメントありがとうございます。私はすでにその投稿を見つけていましたが、答えは私の問題を直接解決しない論文にリンクしているが、それらの参照は私が公然と使用できない特許またはリンクする可能性があるため、それを却下しました(とにかくダウンロードリンクも見つけられませんでした)。
Nömmik

1
「マーチングキューブ」の特許は2005年に失効し、ほとんどの2Dの例ははるかに古いため、古いWebページでの使用に関する警告が表示される場合があります。
パトリックヒューズ

1
メタボールと等値面の両方を取り上げたgamedevの記事と、アイデアを明確にするためのサンプルを次に示します。リンク
パトリックヒューズ

メタボールについて私を啓発してくれてありがとう、彼らは私が望むことをするようです:
Nömmik11年

回答:


8

必要なキーワードは「Metaballs」で、複雑なnVidia GPU Gemsサンプルから、見栄えがよく、高速で実行するためだけに設計されたデモシーン駆動バージョンにまで及びます。


確かに、私はキーワードを知りませんでした:-)私はそれを詳しく調べて、それが私が必要なものであると思われるなら、私はあなたの答えを受け入れます。ありがとう!
ノミク

1
もう一度読む前に「ミートボール」だと思った私にとっては+1です。
ジェームズ

2
この回答にもう少し詳しく説明していただけますか?+1した場合。
AttackingHobo

@ジェームズ私は誰もが最初にその言葉を見たときにその間違いを犯すと思います!
ジェフ

1

パーティクルのグループをメッシュに変換して、メタボールスタイルをレンダリングできるようにするには、ボクセルデータからポリゴンメッシュを生成するマーチングキューブアルゴリズムを見てください。GPUですべてが生成された、numb resの優れた例があるデモシーンデモがあります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.