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 */
再帰にしてみました。
$ 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の画像の順で並べてみます。
こちらの例では、タイヤやライトの平面部分の気泡はかなり消えてます。
カットしてる平面でも、気泡が密集しすぎて、不透明な感じになってたような箇所が、 すっきりと消えてなくなり、自然な透け具合かと。