ヘアライン(その2)

v56の 気泡とヘアライン で不十分だった「ヘアライン」対策の続きです。

まぁとりあえず、 趣味のプログラミングなので、 安易に対策して様子見です。

だった訳ですが、ちょっと問題の本質を考え直してみました。

平面と直線の交点はあるといってるのに、平面の法線と直線は直行していると...

それはもう、平面と直線は並行で、交点なしと判定していいのではなかろうか。 きっとそうだ。そうしてみます。

$ cat v57.patch 
diff -urN rt_v56/cross.c rt_v57/cross.c
--- rt_v56/cross.c	2018-06-29 09:16:30.000000000 +0900
+++ rt_v57/cross.c	2018-06-29 09:20:42.000000000 +0900
@@ -410,12 +410,17 @@
 		r->t = r->ts[0];
 		line_on_line_p( &r->l, r->t, r->p );
 		cross_get_nv( d->kind, &d->l2g, l_g, 0, r );
+		if(r->ang_nv_eyev == 0){
+			r->ts_n = 0;
+			cross_op_ins(l_g, prev_idx, data, a, r);
+			return;
+		}
 		r->flags = 0;
 		if( prev_idx == r->idx ){
 			r->flags |= CROSS_FLAG_PREV;
 		}
 		area_ins( a, r->t, r, sizeof(*r) );
-		if(r->ang_nv_eyev >= 0){
+		if(r->ang_nv_eyev > 0){
 			area_not(a);
 		}
 	}else{ /* n == 2 */

再帰にしてみました。

v57.patch

$ mv rt_v56 rt_v57
$ cat v57.patch | ( cd rt_v57 ; patch -p1 )
$ cd rt_v57
$ make clean
$ make

まずは、カットアンドトライで切り出した再現データで試します。 これがダメならお話になりません。

$ cat hair_line.yaml
all:
- kind: or
  args:
  - kind: pipe
    rtd: { base: 0.1, diff: 0.3, reflect: 0.5, reflact: 0.2, density: 2 }
    m2g:
    - ax.rot_y(90)
    - ax.slide_y(2)
# EOF

$ ./cg.py eyep=[0,-50,20],0,1 yaml=hair_line.yaml data_name=all name=out_v57/h n=1 show_sec=-1 div=2

大丈夫そうですね。

例によって、パックマンのデータで気になった「ちょうど」なアングルの静止画を確認してみます。

$ ./pac_dat.py

$ wget http://kondoh2.html.xdomain.jp/rt/pac.log
$ mv pac.log pac/

$ ./pac_dat.py

$ ./cg.py eyep=[0,0,20],[50,50,10],20 sec=30 yaml=pac.yaml data_name=all name=out_v57/pac_tst3_ fps=0.2
  :

v55の画像、v57の画像の順で並べてみます。

5組めはbig_ballデータの背景の動画の境界なので、まぁいいとして、、、 かなり改善されてるように見えます。

動画リテイクしてみます。

$ ./cg.py eyep=[0,0,20],[50,50,10],20 sec=30 yaml=pac.yaml data_name=all name=out_v57/pac
  :
wh : 307200/307200(100.0%) : fin 38.66s
frm : 900/900(100.0%) : fin 13h 21m 11.36s

$ ls -lt out_v57/ | head
-rw-r--r--  1 kondoh  staff   1095616  6 29 23:26 pac_6.mp4
-rw-r--r--  1 kondoh  staff   3132436  6 29 23:26 pac_5.mp4
-rw-r--r--  1 kondoh  staff   3128402  6 29 23:25 pac_4.mp4
-rw-r--r--  1 kondoh  staff   3138453  6 29 23:24 pac_3.mp4
-rw-r--r--  1 kondoh  staff   3142784  6 29 23:22 pac_2.mp4
-rw-r--r--  1 kondoh  staff   3135072  6 29 23:20 pac_1.mp4
-rw-r--r--  1 kondoh  staff  18566076  6 29 23:18 pac.mp4
  :

ヘアライン激減して改善されましたが、それでもこれ。

この200,201,202コマめで、201コマめだけ「ピッ」っと入ってました。

まぁ、またみていくとして、他の物体の演算をしてる動画も。 カットモデル の方もリテイクしておきます。

$ ./cg.py eyep=[0,0,0],[130,90,30],10 sec=40 yaml=cool_car_cut.yaml data_name=all name=out_v57/cut3_
  :
wh : 307200/307200(100.0%) : fin 22.55s
frm : 1200/1200(100.0%) : fin 27h 45m 23.19s

$ ls -lt out_v57/ | head
-rw-r--r--  1 kondoh  staff    492177  7  1 08:28 cut3__3.mp4
-rw-r--r--  1 kondoh  staff   3143356  7  1 08:28 cut3__2.mp4
-rw-r--r--  1 kondoh  staff   3143931  7  1 08:25 cut3__1.mp4
-rw-r--r--  1 kondoh  staff   7424682  7  1 08:21 cut3_.mp4
  :

27時間45分!

v52の画像、v57の画像の順で並べてみます。

こちらの例では、タイヤやライトの平面部分の気泡はかなり消えてます。

カットしてる平面でも、気泡が密集しすぎて、不透明な感じになってたような箇所が、 すっきりと消えてなくなり、自然な透け具合かと。