スポーツカー

アフィン変換でひしゃげたときの「法線ベクトル問題」について、 円柱や円すいの側面の場合も対応してみました。

平面の場合も前回のv50のやり方では、-1倍の拡大をかけた場合とか 意図しないケースで法線が反転していたので、 方式を変更しておきました。

デバッグしやすいように、 dat.py でのデータの展開結果について、 なるべく文字列の段階で展開を終えさせて、 展開結果の表示が見易いようにしてみました。 文字列からバイナリへの変換は、後段でまとめて処理するようにしてみました。

v51.patch

$ mv rt_v50 rt_v51
$ cat v51.patch | ( cd rt_v51 ; patch -p1 )
$ cd rt_v51
$ make clean
$ make

では、いつもの速度確認。

$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v51/objs_1_2_sc n=1 init_sec=5 div=2
  :
wh : 76800/76800(100.0%) : fin 3.09s
  以前の
  v49  wh : 76800/76800(100.0%) : fin 3.03s
  v48  wh : 76800/76800(100.0%) : fin 3.11s
  v47  wh : 76800/76800(100.0%) : fin 3.04s
  v45  wh : 76800/76800(100.0%) : fin 3.00s
  v43  wh : 76800/76800(100.0%) : fin 2.96s
  v42  wh : 76800/76800(100.0%) : fin 3.16s
  v39  wh : 76800/76800(100.0%) : fin 15.37s
  v38  wh : 76800/76800(100.0%) : fin 15.09s
  v37  wh : 76800/76800(100.0%) : fin 15.49s
  v36  wh : 76800/76800(100.0%) : fin 15.13s
  v35  wh : 76800/76800(100.0%) : fin 16.16s
  v34  wh : 76800/76800(100.0%) : fin 38.47s
  v32  wh : 76800/76800(100.0%) : fin 26.84s
  v31  wh : 76800/76800(100.0%) : fin 40.50s
  v30  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

op2.yamlの円柱、円すいのデータで反射の絵柄の違いを見てみます。

$ ./cg.py eyep=[0,0,0],[300,300,100],10 sec=20 yaml=op2.yaml data_name=all name=out_v51/op2ck fps=0.25
  :
wh : 307200/307200(100.0%) : fin 9.30s
frm : 5/5(100.0%) : fin 1m 6.17s
estimated 2.21 hour at 640*480 30fps

$ ls -lt out_v51/ | head
-rw-r--r--  1 kondoh  staff     144  6 14 01:45 op2ck.mp4
-rw-r--r--  1 kondoh  staff  101409  6 14 01:45 op2ck00005.jpg
-rw-r--r--  1 kondoh  staff   50623  6 14 01:45 op2ck00004.jpg
-rw-r--r--  1 kondoh  staff   73917  6 14 01:44 op2ck00003.jpg
-rw-r--r--  1 kondoh  staff   68342  6 14 01:44 op2ck00002.jpg
-rw-r--r--  1 kondoh  staff   55695  6 14 01:44 op2ck00001.jpg

fpsの指定が小さいときは、動画の1コマ追加でエラーが出てたので、 fpsが1未満なら動画はあきらめる対策を入れてみました。;-p)

右となりに対応するv50の絵を並べてみます。

間違い探し? どこが違うかよく判りませんね。

では、AND,OR,NOTを駆使して、 スポーツカーっぽい物体のデータを cool_car.yaml に作ってみました。

$ ./cg.py eyep=[0,0,0],[300,300,100],10 sec=20 yaml=cool_car.yaml data_name=all name=out_v51/car
  :
wh : 256259/307200(83.4%) : total 11.62s : rest 1.92s : 2018/06/14 04:18:10
wh : 307200/307200(100.0%) : fin 10.26s
frm : 600/600(100.0%) : fin 2h 12m 4.18s

$ ls -lt out_v51/ | head
-rw-r--r--  1 kondoh  staff   484681  6 14 04:20 car_2.mp4
-rw-r--r--  1 kondoh  staff  3142210  6 14 04:20 car_1.mp4
-rw-r--r--  1 kondoh  staff  3885846  6 14 04:18 car.mp4
  :

2時間12分。 視点がそう少し近い方が良かったかな。 ボデー表面で屈折光ましましにしたので、透けてる感が強いです。

良さげな静止画を選んでみました。