分身関連のバグ修正

物体の繰り返しコピー配置 を、 立方体で試してみて不具合が発覚しました。

立方体を複数にコピーして配置しようとしたのですが、 1つの四角い平面しか分身してくれません。

立方体は6つの四角い平面に展開されて処理されるのですが、 そこで分身した全てのデータが、コピー元の同じ'rxs'データを指していたのが原因でした。

これまで試した球や単独の四角い平面では、複数の物体に展開される事が無かったので、 不具合が潜んだままでした。

他にも例えば円柱の場合、側面の筒と上下のフタの円に分身する時に同じ問題が出ます。

深いコピー用の関数を用意して、まとめて対処しておきます。

v40.patch

$ mv rt_v39 rt_v40
$ cat v40.patch | ( cd rt_v40 ; patch -p1 )
$ cd rt_v40
$ make clean
$ make

最初のデータ展開箇所だけの問題で、速度には影響ないということで、 いつもの速度確認は省略。

とりあえず、展開で問題になった立方体を円形にコピー配置して確認しておきます。

$ ./cg.py eyep=[0,0,0],[200,200,40],10 sec=10 data_name=colosseum name=out_v40/col_t fps=2 div=4
  :
wh : 19200/19200(100.0%) : fin 6.32s
frm : 20/20(100.0%) : fin 2m 24.46s
estimated 9.63 hour at 640*480 30fps

$ ./cg.py eyep=[0,0,0],[200,200,40],10 sec=10 data_name=colosseum name=out_v40/col
  :
wh : 307200/307200(100.0%) : fin 1m 29.51s
frm : 300/300(100.0%) : fin 9h 10m 30.63s

$ ls -lt out_v40/ | head
-rw-r--r--  1 kondoh  staff  2283827  5 22 08:10 col.mp4
  :

$ ./cg.py eyep=[0,0,0],[300,300,60],10 sec=10 data_name=colosseum2 name=out_v40/col2_t fps=5 div=16

wh : 1200/1200(100.0%) : fin 2.41s
frm : 50/50(100.0%) : fin 2m 3.29s
estimated 52.61 hour at 640*480 30fps

予想時間は52時間!

$ ./cg.py eyep=[0,0,0],[300,300,60],10 sec=10 data_name=colosseum2 name=out_v40/col2_one n=1 init_sec=10 show_sec=-1
  :
wh : 288756/307200(94.0%) : total 8m 56.84s : rest 32.23s : 2018/05/22 09:38:24
wh : 307200/307200(100.0%) : fin 8m 24.65s
frm : 1/1(100.0%) : fin 9m 13.41s

$ ls -lt out_v40/ | head
-rw-r--r--  1 kondoh  staff    14244  5 22 09:38 col2_one.mp4
-rw-r--r--  1 kondoh  staff   100076  5 22 09:37 col2_one00001.jpg
  :

1コマ10分として 10*300/60 = 50時間

物体の数が多過ぎという事ですかね。div=2 で妥協して50/4=12.5時間で。

$ ./cg.py eyep=[0,0,0],[300,300,60],10 sec=10 data_name=colosseum2 name=out_v40/col2 div=2
  :
wh : 76800/76800(100.0%) : fin 2m 8.56s
frm : 300/300(100.0%) : fin 11h 37m 39.34s
estimated 46.51 hour at 640*480 30fps

$ ls -lt out_v40/ | head
-rw-r--r--  1 kondoh  staff  2506857  5 22 21:31 col2.mp4
  :