こんにちは、Habr!
数年前、実用的な目的で、通常の
フォースベースのグラフビジュアライザーを実装しました。
単純な反復変換が主観的に複雑で興味深い計算を行い、非自明な視覚運動モデルを形成できることに感銘を受けました。
時間が経つにつれて、興味深いものをモデル化できるといういくつかのアイデアが生まれました。
そのうちの1つで起こったことは次のとおりです(フレーム内の小さなオブジェクト、HDで見る)。
基礎として、私はまさにグラフビジュアライザー:
touchを使用しました 。
Shift +クリック、Shift +ドラッグ、Alt +クリック。タッチは、V8 javascriptによりChromeまたはSafariで行うのが最適です。まず、グラフの頂点に慣性を追加することで、オブジェクトの動作をより複雑にしました。 ある時点で、モデルは化合物のモデルと多細胞生物の間の何かに関連付けられ始めました。
この実験は、いくつかの原理に従って多くのそのようなオブジェクトの相互作用を保証したいという欲求に成長したので、観察することは興味深いものでした。
- オブジェクトは、コード名「宇宙」の多細胞生物の体のモデルと見なされます
- 空間はセル(セル)と接着(スティック)で構成されます
- 細胞は、エネルギー、サイズ、色の変化とともに、独自のエネルギーを持っています
- 接着には、接着された細胞のエネルギーの最小値に等しい弾性を決定するエネルギーがあります
- 宇宙の細胞は、細胞のエネルギーに比例した力で互いに反発します
- 細胞接着は接着エネルギーに比例する力で細胞反発のプロセスを妨害します
- コスモスは最高のエネルギーを持つ頭細胞と考えられています
- 船外活動は、他の船外活動を吸収(自分に付着)しようとします
- 宇宙空間は別の宇宙空間を吸収し、吸収された空間の頭部細胞よりも多くのエネルギーを持っている自身の細胞で頭部細胞に近づく
- コスモスは他のコスモスによる吸収を回避しようとします
- 宇宙船の加速は、そのセル加速の合計によって形成されます
- 各セルは、自身のエネルギーに比例した力で、吸収できるすべてのセルの方向に加速します
- 各セルは、自身のエネルギーに比例した力で、それを吸収できるすべてのセルから離れる方向に加速します
後に、接着剤に過度の負荷がかかった場合に接着剤を引き裂く可能性が追加されました。 結果は次のとおりです。
次のステップは、1つの生物内での消化でした。それぞれの接着、固定された時間の長さは、小さな細胞からエネルギーを取り、大きな細胞に移動します。 小さい細胞のエネルギーが特定の最小値よりも小さい場合、その細胞は消滅し、エネルギーの基本的な電荷を持つ新しい描画セルが宇宙に出現し、周囲の生物の食物として機能します。 制限も導入されました-セルはセルを吸収できるだけで、自身のエネルギーの少なくとも61.8%を占めます。 これは、大きな細胞が小さな細胞を直接自分自身に付着させた場合の異常の形成を排除しました。 代わりに、彼らは今、このために分岐触手を形成することを余儀なくされています:
タッチこの段階で、進行状況を友人と共有したいという要望があり、スクリーンキャストが準備されました:
次のステップであるプロジェクトは、SVGプロトタイプからCUDAモデルに移行しました。 明らかに、より活発な問題が望まれ始めました。 モデルをGPUに転送すると、ブラウザーのプロトタイプで250ではなく8〜16Kのパーティクルを使用できるようになりました。
これが今日のことです。 CUDA 2.0互換デバイスを使用すると、モデルに直接触れることができます。
アーカイブでは、特に、exeを実行する前にインストールする必要があるWin7 x64のSDKへのリンク(UPD:別のdllをアーカイブに追加し、SDKなしで開始する必要があります)。 XP 32bitでも動作し
ます 。リンクは
Cuda SDKにあります 。
p-一時停止
s-スライドバーを表示
r-表示モードの変更
h-脳細胞にタグを付ける
f-フルスクリーン
将来の計画について少し:
もちろん、もっとセルが欲しいです。 最適化後、GTX 580は30 FPSの周波数で16Kセルをカウントし、120FPSの周波数で8Kセルをビデオに参加させます。
すべてのセルがすべてのセルに影響するため、アルゴリズムの2次の複雑さが影響を受けます。 CUDAにBarnes-Hut最適化アルゴリズムを適用し、これをGPUに既に移植している人からの科学記事を読んで判断すると、リアルタイムのしきい値を超えている50K粒子のしきい値以外でのみ効果があります:-(さらに、細胞間相互作用の順序は重力よりもはるかに複雑です。
理論的には、同じ30FPS上の256K粒子を同時に1K粒子の独立した「銀河」と見なすことができます(16x16グリッドとして画面に表示されます)。 進化の観点から見ると、256K粒子は独立した銀河に分割されていますが、単一の銀河内での16K細胞の直接的な相互作用よりもはるかに有用であることが判明する可能性があります。 個人の交換はラウンドで手配でき、銀河間モータルコンバットを提供します;-)
同じ原理で、たとえば、素敵なスクリーンセーバーの形で、モデルの分散バージョンを実装できます。 鉄がコスモスを回転させた時間のマニアポイントを獲得し、スプラッシュスクリーンの形でプロセスを示します。 分散空間に投げ込まれ、変異し、進化する個人の設計者にポイントを費やすことができます。「デミジャージ」は、人口の成功と、広大な宇宙空間で個人が管理する物質の量を追跡できます。
プロジェクトのさらなる発展における重要な役割は、形態形成アルゴリズムによって果たされるべきです。形態形成アルゴリズムは、そのような控えめなトポロジ機能(細胞数/個体)により、個体の種の多様性を提供することができます。
私はそれを実装できることを願っています。
それだけです、ご清聴ありがとうございました!
モデルを自主的に立ち上げたPSファン-書いてください-コンソールのどの種類のハードウェアとFPS(バックグラウンドのコンソールが2番目のウィンドウです)
UPD: パート2:多細胞生物の進化のモデリング。 7年UPD: PatreonプロジェクトブログUPD:宇宙エンジン2013のデモ、ソフトボディ物理学