やっぱパーティクルええのう…というはなし。まあそれなりに綺麗なので暇な人は見てやって下さい。エスケープで終了、 z でカメラ変更、 x でカメラ固定です。 pbg.rc をいじると動作を変えることができます。使ってない項目もあったりするところがひどい。そのファイルに frameSkip 0 と変えるか、コマンドライン引数をなんでもいいから付けると FPS を固定しなくなります。 GPU のベンチマークになるかもしれません。
http://shinh.skr.jp/tmp/pbg-0.0.1.tar.bz2
一応中央のパーティクル群にはモデルがあります。陽子と陽子は同符号なので電磁気力で反発しますが、近距離では核力なる力でより強く引かれるため、原子核を保つことができています。しかし超近距離ではまたしても斥力の影響が強くなり、原子核はぺっしゃんこになることなく維持されます。ああべんきょうになるなあ。
これは基本的に見栄えのことしか考えずにパラメータを調整してます(やけに連星ができたり)が、現実に似た部分もあります。基本的に大きな速度を持っているのは小さな粒子ですけど、大きい安定した粒子にそれが衝突すると一瞬吸い込んだ後に不安定になって粒子を吐き出すあたりは核分裂を彷彿させます。
ある程度集合が大きくなった時の謎の稲妻はγ線…とか考えてたけど、原子核って崩壊せずにγ線発することは無いだろうという気もします。それにエネルギーが全然保存してないし、やはり謎の物体と言った方が正しい感があります。
この手の引力があるパーティクル系は中心に集合してはい終わりなんですけど、実はこの空間は 4*4*4 分割されてまして、別の領域とは相互作用しないことになっています。何か突然はじける大きめな粒子がありますけど、それはその境界をまたぐ時に束縛力がなくなったからです。おかげで不安定さが保ててますし、相互作用が少なくなるので計算量的にもおいしいです。いいかげんもまた良しと。
あ、ちなみに NeHe の 19 のパーティクルの絵を使わせてもらってます。
あと、今は気晴らしにいじってるだけなんで、ソースむちゃくちゃだし、ビルボードにしてないとかカメラが こっち の使い回しだとかいろいろ雑です。
夢としては particle の見本市みたいなもの作れんかと考えてます。手軽にパターン作れると幸せだろうなあと思ってますけど、まあいろいろ難しい予感。今はとりあえず色々作ってみただけでいずれ共通部分を抽出してデータドリブンにして…といったところでしょうか。
恥ずかしながらこれ書いてて今ごろ気付いたことなんですけど、関数内関数はゲームで結構便えるシーンが多い。見栄えの調整とかする時に x,y,z とか r,g,b に *2 を付けていくとかすると、後で倍率を *3 に変えたい時に困る時に *rate とかして、 rate の値を代入しておいたりすることがあるけど、 x+rand()*3 とかしたい時はうまくいかない。乱数は毎度別の値が欲しいのだから。こういう時は直前に関数内関数を置けば良い。ちょっと便利だった。
コンパイルには D コンパイラ、 SDL, OpenGL, SDL_pad が必要です。
Windows だと線+テクスチャ+遠距離が悪いのか線が出なかったりするみたい。うちだとこんな絵が出ています。
http://shinh.skr.jp/tmp/pbg.jpg
http://shinh.skr.jp/tmp/pbg2.jpg