こんにちは。
今日スライムで遊んでいたら、スライムがつぶれていく様子をモデル化してOpenGLとかで表示したら楽しそうだな、と思い取りかかりたいのですが、手がかりがありません。
こんな感じで表示したいというのをビデオに撮りました。ビデオは添付できないのみたいなので4コマにしてみました。左上、右上、左下、右下のように伸びで行きます。
球体からスタートして、おもちのような平べったい形にのびていく感じを再現したいです。完全な球体から始まり、真っ平らな平面に置けばスライムの広がり方はあらゆる方向に均一だと思うので、二次元平面で考えられるんじゃないかな?とか思うのですが。最初は円でどんどん楕円っぽくなっていく感じで。あとはそれを中心軸まわりで180回転させたものを成型、という手順で。
具体的には、
(1)どのような表示手法になるか。小さな粒子が集まっていると仮定、小さな立方体が集まっていると仮定、曲線の方程式であらわせるなどなど。
(2)必要な理論(流体力学?)
の2つが分かればあとは自分でなんとかできると思います。プログラムに関しては大丈夫なのでスライム力学(?)の方を重視で答えて頂ければと思います。粘性係数やその他のパラメータは自分でチューニングできるかと思います。特にどんなスライムでも構いません。
参考になる理論を紹介しているページとかだけでも構わないのでお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
本気でやれば(やれれば)、とっても面白そうですねぇ~(^^)。
最初に思いつくのは、やっぱり流体力学です。それも粘性流体。具体的には、ナヴィエ・ストークス方程式・・・(^^;)。
この方向では、計算手法は恐らく有限要素法でしょうから、小さな立方体(か三角錐)の集まりになります。ただナヴィエ・ストークスの数値計算は、恐ろしく難しいですし、粘性流体の本を読むのも極めて難儀です。いずれにしろ、偏微分方程式の知識が必要になります(自作するなら)。
しかも境界条件が全周自由表面(空気との境界をそう言います)・・・でかつ移動境界問題(境界形状などが変化する事を、こう呼びます)・・・超難儀そ~だ~!。少なくとも自分には手が出ない(^^;)。
望みがあるとすれば、2次元で良い事と、高粘性で低速度なので、ナヴィエ・ストークス方程式がいくらか簡単になる事くらいか・・・(^^;)。
粘性ダンパー付きバネで結ばれた個別要素法なんかも考えられるが(粒々モデル)、計算が簡単になるかわりに、粒が粗いと、画像に影響が出そう(低解像度みたいな)。それに結局これも、特殊計算技術は必要になる。
う~ん、そういう訳なので、以下余談で誤魔化します(^^;)。
アポロ13という映画のアポロ・ロケット発射シーンの一部が、CGだったってご存知ですか?。実際にアポロ13の発射に立ち会ったNASAの関係者すら本物だと思った程の、信じられない出来の良さでした。自分は当然、全部ホンモノと思ってました。
そのCG制作のために、ロケットの噴射炎や噴射煙を計算させる専用プログラムを開発し、専用スパコンで計算させて画像に落としたそうです。専用プログラムは恐らく、粒状体コードと言われる個別要素法の親戚で、超精密なものです。さらに煙の一粒一粒に噴射フレアーの輝度や色(温度に従った)を持たせる計算まで同時進行ですから、とんでもないものです。
そうではあるんですが、こういう技術って、必ず一般ユーザーへと降りてくるんですよ。むかし昔、3DMaxをかじった経験がありますが、当時ですでに人形のような人間なら動かせるアニメーション機能(CG)が搭載されてました。
マニュアルを読むと、大人気な某ゲームのCGを作ったアニメーション機能の移植だとか、書いてあった気がします。
なので現在のCGソフトを調べてみるのも、手かもしれませんよ。(値ははるかも知れないが)案外スライムはあったりして・・・(^^;)。そして、そういう関係の情報の方が、有用かも知れない。
蛇の道は蛇ですから(^^)。
No.2
- 回答日時:
スライムは、ニュートン流体でないので、ナビエ・ストークス方程式(NS方程式)は使えないでしょうね。
スライムは、非ニュートン流体なので、レオロジーの知識が必要になります。
───数学的には、テンソルの知識が必要になります───
レオロジー
http://ja.wikipedia.org/wiki/%E3%83%AC%E3%82%AA% …
また、かりにNS方程式で解こうとしても、NS方程式の数値解析は、死ぬほど難しい。加えて、さらに、いろいろな数学的知識が必要になります。
そして、これを解くためのプログラムを作るのはかなり至難の技。
プログラムだけでも、数千行は最低必要だと思いますよ。
バグ取りが終わっても、たぶん、このプログラムでは計算が収束しない。
解が発散したり、振動したりします。その解決にまたかなりの時間を必要とします。場合によっては、計算の主要部分のアルゴリズムを変えて、プログラムの大部分を作りかえなければなりません。
ですから、
素人さんがこれを1からやるのは、まず不可能だと思いますよ。
で、仮に市販の流体力学の解析ソフトを買って(かなり高額です)、それを使って解析するとしても、それで解ける保証はありません。
スライムの形状が変化するのが、ちょっと問題なんですよ。
その境界をどのように与えるか、境界条件をどうするか、それをどのように与えるか、これがかなり厄介・・・。
さらに、これは、「三次元」+「時間」の四次元の計算になります。
仮に空間の分解能を100×100×100とすると、100万。時間の分解能を100とすると、10億。仮に単精度1byteだとしても、これだけで1GBの記憶容量が必要になります。速度u、v、wの3つ、加えて圧力pで計4つ。空間の点と流れの分だけで記憶容量だけで5GB。この他にさまざまマトリックス・行列の分の記憶容量も必要。
1時間ステップあたり、
最低でも100万元の連立方程式を解かないといけないので、この連立方程式を解くための計算回数は、直接法ですと(100万)^4回程度。
しかし、NS方程式は非線形なので、1時間ステップあたり、これを何度も反復して解を収束させなければならない。たぶん、この反復計算は数十回から百回程度。
これを100ステップ行わないといけません。
試しに10万~100万元の連立方程式を一度コンピュータに解いてみてはいかがでしょうか。連立方程式の係数は、乱数ででも発生させて、解かせてみる。
そうすると、この計算に要するおおよそのめどが立つと思いますよ。
その計算所要時間を1万倍くらいしたものが、この計算に要するおおよその時間です。
スライムの運動に軸対称を仮定すると、空間の分解能は100×100になって、計算時間はかなり減るとは思いますがね。
No.3
- 回答日時:
NO2です。
NO2の回答の一部を訂正!!
【誤】仮に単精度1byteだとしても
【正】仮に単精度2byteだとしても
【誤】この連立方程式を解くための計算回数は、直接法ですと(100万)^4回程度。
【正】この連立方程式を解くための計算回数は、直接法ですと(100万)^3回程度。
ですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 哲学 日本語は論理表現にふさわしくないか の問題です 4 2022/06/25 03:56
- 事件・犯罪 刑法についてだれか助けてください。 2 2022/06/05 04:08
- 事件・犯罪 刑法についてです 2 2022/06/04 03:11
- 物理学 台と小物体合わせた全体の水平方向の運動方程式 とは? 8 2022/09/02 06:33
- 美術・アート オリキャラ見てください&設定付けで困ってます②(再掲) ※色々不手際があったのと結構早めに過疎っちゃ 2 2023/02/22 16:11
- 哲学 日本語は 言語類型として あたかも始原のごとくである 3 2022/05/29 04:41
- メガネ・コンタクト・視力矯正 15年前に眼科を受診したところ、両目円錐角膜と診断されました 何度かコンタクトを無くしてしまったり、 4 2022/03/26 06:16
- その他(悩み相談・人生相談) 試験のための勉強や本番のための練習を"素の力で戦わない卑怯者のすることだ"と思ってしまうのをやめたい 2 2023/04/10 21:39
- 数学 『数学的帰納法のトリセツ』 4 2022/06/06 07:34
- 物理学 アインシュタインの質量とエネルギーの等価性(E=mc²)って間違ってますよね? 4 2023/01/14 13:29
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
CとFORTRANの計算速度はどちら...
-
プログラミング 処理速度
-
60進数の四則計算
-
再帰呼び出しの計算量
-
構文解析を利用した計算プログ...
-
数値計算の高速化 (cos, sin, exp)
-
Perlでのルートの計算
-
排他的論理和 BCC(水平パリテ...
-
Perlで時間の計算
-
DLL(VC++で作った)で稼動中の...
-
Visual C++でdebugとreleaseで...
-
「評価」「評価値」という言葉...
-
[急募]Pythonについてです。
-
10進数から8進数へ
-
VBAの再計算が反映されない件に...
-
VB6.0でのバイナリデータの扱い...
-
R言語での極小値の指数形式での...
-
円周上の3点で作られる三角形...
-
アドオン利率を実質年率に変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
C言語の課題で、1年の秒数を計...
-
バッチファイルでウインドウを...
-
骨折リスク評価のFRAXについて...
-
変化させるセルが変化しない
-
CとFORTRANの計算速度はどちら...
-
なぜオーバーフローになるので...
-
数値計算の高速化 (cos, sin, exp)
-
モジュラス103の計算とは何でし...
-
C# 計算処理中に実行中ウィン...
-
モジュロ
-
引き放し法による除算アルゴリ...
-
60進数の四則計算
-
C言語についてです。 再帰を使...
-
Perlで時間の計算
-
CRC8を教えてください
-
傾いた四角形内の範囲の条件式
おすすめ情報