ページ 11

円の集合体を液体のように描画をしたいです

Posted: 2021年11月16日(火) 23:23
by 焼肉
いつもお世話になっています。
現在、DxLibとLiquidFunという物理演算ライブラリを使用して、物理演算機能を作成しています。
このライブラリは円の粒子を流体として演算出来るライブラリです。
やりたいことは、下記のように液体を綺麗に描画することです。



例えば、これを

こう変更したいのです。


上記の動画はオープンソースであるためやり方が公開されています。
https://github.com/google/LiquidFunPain ... idfunpaint

引用すると以下のように書いてありました。

```

パーティクルレンダラー

これにより、LiquidFunから流体粒子の状態がレンダリングされます。それはParticleGroups連続して実行され、使用する特定のパーティクルレンダラーを決定します。2つのレンダラーがあります。1つは緩い水のような粒子用で、もう1つは剛体または壁の粒子用です。

いずれかのタイプの粒子の一般的な流れは次のとおりです。

パーティクルをポイントスプライトとしてレンダリングする
水平および垂直ブラーパス(BlurRenderer)
水のような粒子をアルファしきい値を使用して画面にコピーします(ScreenRenderer)
他のパーティクルを画面のアルファしきい値にコピーします(ScreenRenderer)

```


どうやら、ブラー処理を行なっているようです。
そこで、ブラー処理を試しに行なってみました。(参考→viewtopic.php?t=3768

そこでやってみた結果が次の通りです。

これが

こうなりました。


しかし、これでは上記の動画のように液体のように描画していません。
もし、何か良いアルゴリズムなどがあれば教えて欲しいです。
私はJavaの触りだけは出来ますが、シェーダに関する知識がないため、このオープンソースの描画を読み解けていません。
微分積分までは独学で勉強しましたが、行列に関しては素人です。
良いアイデアを求めます。お願いします。

(もう寝る直前ですので、返信は明日の夕方以降になるかもしれません。気を悪くしたらすいません)

Re: 円の集合体を液体のように描画をしたいです

Posted: 2021年11月16日(火) 23:46
by 焼肉
>水のような粒子をアルファしきい値を使用して画面にコピーします(ScreenRenderer)

ブラーの後に2域化するフィルターエフェクトかければいけそうかもしれません。
明日の夕方以降試してみます。

Re: 円の集合体を液体のように描画をしたいです

Posted: 2021年11月17日(水) 11:58
by usao
> ブラー

という語の意味を取り違えていませんか?
ここでは時間方向の話ではなくて,単なる画像のぼかしを意味するのだと思いますが.

すなわち,「単純に●で描画 → この絵をぼかす → 2値化する」というだけの話かと.

Re: 円の集合体を液体のように描画をしたいです

Posted: 2021年11月17日(水) 23:01
by 焼肉
>>usao様

ありがとうございます。
無事、実装することが出来ました。
ブラーというのはガウスぼかしの意味もあったのですね。


これをマスク画像にするとなかなか面白い事が出来そうで楽しみです。

Re: 円の集合体を液体のように描画をしたいです

Posted: 2021年11月18日(木) 00:03
by 焼肉(解決済み)
解決済みになっていなかったので修正しました。