視線と物体の交点を求める処理を別サーバプロセスに切り出し、C言語で実装してみました。
もうちょっと先の分の処理まで。交点の法線を求めるところまで、サーバ側のC言語で面倒みさせてみます。
そして、円柱マッピングのところにあったバグも、ひっそりと改修。
まず従来方式
$ cat v24.patch | ( cd rt ; patch -p1 ) $ cd rt $ make clean $ make gcc -Wall -c -o sock.o sock.c gcc -Wall -c -o cross.o cross.c gcc -Wall -c -o lstx.o lstx.c gcc -Wall -c -o ax.o ax.c gcc -Wall -c -o cylx.o cylx.c gcc -Wall -c -o fcx.o fcx.c gcc -Wall -c -o vecs.o vecs.c gcc -Wall -c -o line.o line.c gcc -Wall -c -o v.o v.c gcc -Wall -c -o mt.o mt.c gcc -o sock sock.o cross.o lstx.o ax.o cylx.o fcx.o vecs.o line.o v.o mt.o -lm $ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v24/objs_1_2 n=1 init_sec=5 div=2 : wh : 76609/76800(99.8%) : total 7m 45.16s : rest 1.15s : 2018/04/18 21:27:07 wh : 76800/76800(100.0%) : fin 7m 44.42s
サーバプロセス分離版
$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v24/objs_1_2_s n=1 init_sec=5 div=2 use_srv : wh : 76579/76800(99.7%) : total 9m 39.30s : rest 1.66s : 2018/04/18 21:54:10 wh : 76800/76800(100.0%) : fin 9m 38.24s
別プロセスのところをC言語で実装版
$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v24/objs_1_2_sc n=1 init_sec=5 div=2 use_srv srv_c : wh : 72244/76800(94.1%) : total 56.58s : rest 3.35s : 2018/04/18 21:57:43 wh : 76800/76800(100.0%) : fin 54.07s
別プロセスに切り出しのときの結果は
従来方式 wh : 76800/76800(100.0%) : fin 7m 48.33s サーバプロセスに分離版 wh : 76800/76800(100.0%) : fin 9m 9.07s サーバプロセスであんちょこファイルカンニング版 wh : 76800/76800(100.0%) : fin 1m 50.29s
wh : 76800/76800(100.0%) : fin 55.70s
まー、ほとんど以前の結果と変わらない感じですね。
法線を求める処理は、 交点を求めるときのように物体の数だけ処理するわけじゃなく、 交点の1つの物体についてだけなので、そんなところですかね。
$ ls -l out_v24/*.jpg -rw-r--r-- 1 kondoh staff 29772 4 18 21:27 out_v24/objs_1_2.jpg -rw-r--r-- 1 kondoh staff 29772 4 18 21:54 out_v24/objs_1_2_s.jpg -rw-r--r-- 1 kondoh staff 29775 4 18 21:57 out_v24/objs_1_2_sc.jpg
円柱マッピングのデータで、ぐいっと接近した視点移動。 球や立方体の中に視点が入ったらどんな感じになるか試してみます。
$ ./cg.py eyep=[0,0,0],30,5 sec=10 data_name=ball_world2 name=out_v24/bw2_2_near div=2 use_srv srv_c : wh : 76800/76800(100.0%) : fin 1m 55.91s frm : 300/300(100.0%) : fin 11h 28m 25.60s $ls -l out_v24/bw2_2_near.mp4 -rw-r--r-- 1 kondoh staff 1849766 4 19 20:48 out_v24/bw2_2_near.mp4
11時間半。解像度半分で本来の1/4のピクセル数。フルなら44時間の予想。 接近すると、なかなか重いですね。
ちょっとぶん回し過ぎでよくわからんですね。 フレームレートを落としてみます。
$ ./img.py out_v24/bw2_2_near out_v24/bw2_2_near_fps10 fps=10 zm=2
むー。いまいち中に入ってる感がよく分かりませんね。