メインコンテンツへスキップ

地形に水をシミュレーションする方法とは?

·2 分
2025/02 シミュレーション ゲーム開発 流体力学 プロシージャル生成 水理学

地形に水をシミュレーションする方法とは?

引用元:https://news.ycombinator.com/item?id=42962508

joproulx 2025-02-06T17:36:37

別の流体シミュレーションの見方だね。Coding Adventureの動画を見てみて!
“Rendering Fluids”: https://www.youtube.com/watch?v=kOkfC5fLfgE
“I Tried Putting my Fluid Simulation on a Planet”: https://www.youtube.com/watch?v=8nIB7e_eds4&t=817s
GitHub: https://github.com/SebLague/Fluid-Sim?tab=readme-ov-file

all2 2025-02-06T18:18:48

二つ目の動画はほんと楽しかった!こういうハイレベルな発見の動画が大好きなんだ。

shreddit 2025-02-06T21:38:08

彼の動画はどれも楽しくて、声もリラックスできる。

anitil 2025-02-06T23:30:23

Coding Adventure好き!Geographical Adventuresっていうゲームもあって、素敵な音楽でリラックスできるんだよ。
[0] https://www.youtube.com/playlist?list=PLFt_AvWsXl0dT82XMtKAT
[1] https://github.com/SebLague/Geographical-Adventures

lwansbrough 2025-02-07T02:28:10

シミュレーションされた水文学の難しさは、水が集まって近くのセルに影響を与える点だね。これが隣接セルに影響を及ぼすから、並列処理が難しくなる。
ただ、解決策としては、壊れない流域境界を生成すれば、全体を並列シミュレーションできるかもしれない。面白い問題だけど、まだ勉強中なので観察者って感じだね。

kqr 2025-02-07T11:50:09

興味があったら、偏微分方程式の解法で“影響範囲”や“依存範囲”について話すことがあるよ。特定のポイントが影響を与えたり与えられたりする範囲のこと。前もって把握できることもある。

lisyarus 2025-02-07T02:32:28

素晴らしいリソースをありがとう!

debone 2025-02-07T13:41:18

ほんと、チェックしてみて!
https://nickmcd.me
すごいよ!

Ono-Sendai 2025-02-07T12:14:47

面白い問いだね。境界を持たせて、影響の広がりを最大速度で制御すればいいかも。たとえば、10ステップのシミュレーションをしたいなら、10セルの境界が必要だね。だから、各領域で10ステップ進めて、境界の状態を同期させるって感じで。

ttul 2025-02-07T03:05:17

驚いたのは、Nickがまだ25歳だってこと!すごいよね。

NotAnOtter 2025-02-07T17:33:00

水シミュレーションによる terrain generation はクールだけど、ゲーム開発の主な用途には向いてない。水シミュレーションは遅くて、ドメインを小さくするか、大きな解像度か、初期読み込みに時間がかかるかの選択が必要で、どれもゲーム開発には厳しい。

bodge5000 2025-02-06T18:47:11

話はずれるけど、資源収集のための terrain manipulation が必要って言ってる。Animal Crossing は terrain manipulation なしで賢く効率的な方法を使ってると思う。木を切るとログを出すけど、少ししか収集できなくて、その後クールダウンがある。フィードバックと有限資源を得られるけど、terrain manipulation を避けられるのは良い。

setr 2025-02-06T18:58:45

ブログで言及された戦略、ゴールドオレの boulder についてだけど、資源の供給戦略としては一般的なやり方。でもクールダウンは無限資源の問題を和らげるだけで、そんなに面白くない。

bodge5000 2025-02-09T14:01:46

>いっても、つまらないし影響が薄い。
安上がりで簡単な方法でもあるよね。ゲーム開発には限られた資源があるし、特にパフォーマンスを気にすると、パワフルなマシン以外ではさらに厳しい。だからその資源はゲームをユニークで楽しくすることに使うべきだと思ってる。

setr 2025-02-12T08:31:43

資源獲得の行為が実際にゲームプレイに意味がないなら、思い切ってなくした方がいい。資源ノードとして扱って、一定時間ごとに資源を自動で与えるのが一番安上がりで簡単な戦略。Animal Crossing みたいに時間をつぶすゲームには合わないけど、今回のゲームにおいては意味が不明。

TheGRS 2025-02-06T20:31:07

この話題の深堀りは良かったし、Timberborn に触れてくれて感謝!今、このゲームに夢中で、まだチェックしていない人には大推薦。水の物理学がゲームの別のキャラクターみたいになってて、たくさんの水をダムにしてエンジンや畑に使うのが重要な部分なんだ。

Agentlien 2025-02-07T09:10:01

これは楽しかったし、本当にうまく実行されてた。これを開発する時の最大のリスクは、きれいな結果を見ながらパラメータを調整するのに時間を無駄にすること。2011年に自分のGPUを使った流体力学を実装した時の思い出がよみがえった。2Dで表面に血液をシミュレートしたのもあった。YouTubeにも短い動画を載せたよ。

elliotbnvl 2025-02-06T19:05:21

すっごくクールなアイデアだね!最近、o3-mini-highを使って似たようなアイデアを実験してた。アルゴリズムのアイデアを話して実装させて、手動で干渉せずに3Dでレンダリングしたよ。完全ではなかったけど、改善が見られた。素敵な事実は、Perlinノイズを正しく実装したこと!

fingerlocks 2025-02-07T01:41:29

興味あるんだけど、これらのエクササイズは楽しいため?それとも学びのため?後者の場合、まだ何も実装してないのにこのスレッドのブログ読んでも価値があると思う?目的と旅の質問だよね。

elliotbnvl 2025-02-07T06:24:36

両方だよ!でも今はエンターテインメントがメインで、ほとんどのことは作り方がわかるから、最終的な製品とアイディアの迅速な実現が重要。プログラミングに対する楽しさは、自分の作るもので感じるようになって、AIがツールの一つとして使えるようになったからもっと能力を感じる。

もっとコメントを表示(1)
gus_massa 2025-02-07T03:19:42

このモデルは完璧じゃないんだよね。最も分かりやすい問題の一つは、慣性や速度の拡散がないこと。速い水流が湖に入っても、湖の奥には進まず、全方向に広がっちゃう。逆方向に流れる二つの水流も存在し、お互いに干渉しないんだ。流れの矢印を6つの近隣矢印と平均する方法があると思う。重みを工夫して、前後の矢印を重視する形で。

Asooka 2025-02-07T12:11:53

適切な解決策は、第二導関数用にもう一つのグリッドを追加することだと思う。グリッド0が水位、グリッド1が水の流れ、グリッド2が水の加速度。各グリッドが前のグリッドの二重構造で、導関数を保存するという感じ。流れを良くするためにも、流入した質量に基づいて加速度を更新する方法が必要なんじゃないかな。

chabska 2025-02-07T09:26:11

それは運動量の保存に反するよ。リアルな流れを得るには、連続体の方程式を使って流れのエネルギーを保たないと。多くの計算が必要になってくるけど、本当にそのレベルのリアリティが必要か考えるべきかな。

gus_massa 2025-02-07T14:05:11

最初の更新式(ダンピング係数なし)は、オリジナルのモデルと同じくらい運動量を保つよ。エネルギー保存は崩れるけど、逆方向の流れの摩擦をシミュレートできる。リアルじゃないけど、モデルにいい追加の簡単なアイデアだと思う。係数を調整すれば視覚的に良い結果が得られるかも。

Aperocky 2025-02-06T23:17:06

数年前に気になったことの粗いまとめだよ。リンクはここね:https://aperocky.com/hydrosim/。このプロジェクトが私のストレージの冷ややかな棚に移動する前に浸食を理解できなかった。著者が言及していたり方程式がついているのがよかったな。

Ono-Sendai 2025-02-07T02:11:48

最近、ランダムな地形生成や堆積物輸送、浸食のシミュレーションをしたのをリリースしたよ。リンクはこれね:https://github.com/Ono-Sendai/terraingen。

lisyarus 2025-02-07T02:23:26

すごいですね!

Ono-Sendai 2025-02-07T07:40:46

ありがとう!

dugmartin 2025-02-07T10:34:29

うちの会社の偉大な開発者が作った教育的な洪水シミュレーションが遊べるよ(私じゃないけど)。リンクはここね:https://flood.concord.org/。モデルの値を変更しないと大きな効果は見えないから注意してね。

NnnomNom43 2025-02-07T04:33:29

水をシミュレートしてから、その中に爆弾を投げ込むのはどう?それはCreeper Worldだよ。リンクはこれね:https://www.youtube.com/watch?v=XCyPT2e95zY&t=420s。

vladms 2025-02-06T22:10:29

水の粘性のところ、すごく参考になった!数年前にオープンソースのRTSゲームエンジンで似たようなことを実装したことがあるんだ。テスト動画もあるよ: https://www.youtube.com/watch?v=cQW8WXNpYXk でも、粘性がないと水が広がりすぎて、浮動小数点のせいで平らな面でも広がって蒸発しちゃってたんだよね。波を綺麗に出すためのグリッド解像度も大変だった。もっとスレッドを使う必要があったかもしれない。

lisyarus 2025-02-06T22:19:17

いいね!動画見た感じ、階層的な細分化もやってるの?

vladms 2025-02-08T00:36:31

階層的細分化はレンダリングの段階でしかやってないよ。ポリゴンの数を減らすためだけど、もっといいレンダリングが必要だと思ってる。水のレベルが動的であっても、他のゲーム部分が大丈夫か気になったんだ。ユニットは大丈夫そうだけど、パフォーマンスがイマイチだったから、コードは磨けてないんだよね。

h1fra 2025-02-06T17:37:09

ゲーム開発者って、ほんと次元が違うね。

ikety 2025-02-06T18:04:53

こういうの見ると、俺なんてCRUDの猿だなって思う。

all2 2025-02-06T18:19:07

自分のCRUDに水シミュレーション追加してみたら?

m12k 2025-02-06T18:32:37

このボタンでブログ記事を編集できて、こっちのボタンで保存して、そしてこのボタンでは水を流せるんだよ。

magicalhippo 2025-02-06T18:37:32

そしてこのボタンで、ブログをDoomマップに変えられるんだ。

pornel 2025-02-06T19:43:40

セルの端に値を保存すると、計算が楽になるけど、GPUでの実装が難しくなるんだよね。この設定だと、エッジの更新が2つのセルに影響するから、セルが独立してなくなる。並列更新は可能だけどチェッカーボードのように更新を分ける必要があるんだ。

lisyarus 2025-02-06T19:54:33

一般的にGPU側では複雑だけど、特にこのシナリオではうまくいってるよ。流れと水深のバッファ間での更新があるから、同じカーネルで両方を変更することはないんだ。

もっとコメントを表示(2)
FrustratedMonky 2025-02-06T17:29:09

なるほど、これでMinecraftの水のエフェクトがちょっと不自然なのも納得だね。そんなに簡単じゃないんだ。

AlotOfReading 2025-02-06T18:42:24

Minecraftの水と溶岩は最初は単純なフラッドフィルだったんだ。マップの最大高(64)で水源を掘ると、死の壁が広がって世界中が浸水しちゃうこともあった。

adrianpluis 2025-02-06T18:26:47

面白い視点だね。たとえ大企業のMicrosoftでも、こういうことってやっぱり大変なんだなって感じる。

matheist 2025-02-06T19:13:24

水が初めて入ってくる時の波は数値的拡散って呼ばれる現象で、離散化の結果なんだ。水の壁の急激な変化を滑らかにすることで、ある程度は緩和できるんだよ。

semi-extrinsic 2025-02-06T20:09:25

いや、実際の波は衝撃波で、浅水方程式のリーマン問題の解なんだ。数値的なグリッドや離散化を導入する前から見られるよ。たとえばLevequeによる古典的な解説を見てみてね:

matheist 2025-02-06T21:31:44

面白い、僕の勘違いだった!音響に詳しくて同じ現象かと思ったけど、間違った結論に飛びついてしまったみたい。

Clor 2025-02-07T08:55:22

このコメントには100%同意するよ。解が進化するにつれてエネルギーが成分周波数に分かれていくのが明確にわかる。異なる周波数は異なる速さで伝播するからね。断続的な変化を滑らかにすれば、高周波成分が減って極端な影響が出にくくなると思うよ。浅水方程式では記憶している限りでは一つの衝撃波モードしか許可されてないから、解が進化するにつれて衝撃が増える理由を説明するには不十分だね。

lisyarus 2025-02-06T19:17:37

面白いね、ありがとう!これはギブス現象みたいなもの?

matheist 2025-02-06T21:58:33

他の返事を見てみて、実際には拡散ではないって言ってるよ。僕の勘違い!

lisyarus 2025-02-07T02:23:14

うん、見たよ、心配しないで!

wiz21c 2025-02-07T08:49:53

著者が実装したのはSaint Venantの浅水方程式の一部だよ。

lisyarus 2025-02-07T09:13:06

そうそう、記事にも書いてあるね。

tithe 2025-02-07T14:48:12

そのアナロジーいいね、ルールは行動が流れるパイプみたい。

esafak 2025-02-07T01:58:42

著者はPopulousとかPowermonger、Realmsみたいなのが好きかもね。

jordanmorgan10 2025-02-07T04:23:20

うん、その言葉を信用するよ。

amelius 2025-02-06T23:29:28

シミュレーションが見た目だけでなく、物理的に正確でないとがっかりする。

Voltage 2025-02-07T02:05:45

ゲームやデモに興味があるから、見た目がリアルタイムでプラウスに見える方法を探してる。計算の精度は全然重要じゃないよ。

hgomersall 2025-02-06T20:27:35

そんなに複雑じゃないよ、ただスプラインを再調整すればいいだけさ。

記事一覧へ

海外テックの反応まとめ
著者
海外テックの反応まとめ
暇つぶしがてらに読むだけで海外のテックニュースに詳しくなれるまとめサイトです。