rt.pyの主要部分のコードを徐々にrt.cに移して試してますが... 1つの壁は「get_col()の再帰」です。
このあたりでpython側とC側を行ったり来たりしていては、 結局もたもたして速度が上がりませぬ。
という事でget_col()ごとゴッソリとrt.cへ持って行ってみました。
$ cat v30.patch | ( cd rt ; patch -p1 ) $ cd rt $ make clean $ make
では、いつもの速度確認。
$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v30/objs_1_2_sc n=1 init_sec=5 div=2 : wh : 76800/76800(100.0%) : fin 38.39s 以前の v29 wh : 76800/76800(100.0%) : fin 1m 44.72s v28 wh : 76800/76800(100.0%) : fin 1m 18.06s v27 wh : 76800/76800(100.0%) : fin 1m 8.39s v26 wh : 76800/76800(100.0%) : fin 1m 6.02s
大幅に短縮! よしよし v^_^)
そして起動しっぱなしのサーバを落とすには、
$ ps ax | grep ' boot$' | cut -d ' ' -f1 | xargs kill
そのうち、もうちょっと簡単な方法を用意せねば...
例のデータでも試してみます。 まずは荒い解像度で。
$ ./cg.py eyep=[100,0,0],100,5 sec=10 data_name=ball_world name=out_v30/bw_tst div=32 : frm : 300/300(100.0%) : fin 1m 39.28s
解像度フルでの予想時間は
( (60+39.28) *32*32 ) /60/60 = 28.23 時間
div=2の設定ならば
( (60+39.28) *16*16 ) /60/60 = 7.05 時間
ここらで手を打ってみましょう。
$ ./cg.py eyep=[100,0,0],100,5 sec=10 data_name=ball_world name=out_v30/bw_2 div=2 : wh : 76800/76800(100.0%) : fin 1m 5.33s frm : 300/300(100.0%) : fin 5h 22m 17.99s
予想より若干短く5時間半弱。
視点移動の中心をちょっとずらしたので、5秒あたりで真上からのアングルになった瞬間、 カメラの姿勢がロール方向に180度回転。 一瞬で球と立方体の位置関係が入れ替わって見えてます。