円柱と円すいも「物体の論理演算」に対応してみました。
$ mv rt_v48 rt_v49 $ cat v49.patch | ( cd rt_v49 ; patch -p1 ) $ cd rt_v49 $ make clean $ make
結構変更を入れたので、一応前回v48のデータで軽く確認をば。
$ ./cg.py eyep=[0,0,0],[300,300,100],10 sec=20 yaml=op.yaml data_name=all name=out_v49/opck fps=0.25 : 2018-06-10 22:52:49.994 Python[20334:447913] mMovieWriter.status: 3. Error: Cannot Save frm : 5/5(100.0%) : fin 2m 28.28s estimated 4.94 hour at 640*480 30fps $ ls -lt out_v49/ | head -rw-r--r-- 1 kondoh staff 110069 6 10 22:52 opck00005.jpg -rw-r--r-- 1 kondoh staff 93857 6 10 22:52 opck00004.jpg -rw-r--r-- 1 kondoh staff 115985 6 10 22:51 opck00003.jpg -rw-r--r-- 1 kondoh staff 104601 6 10 22:51 opck00002.jpg -rw-r--r-- 1 kondoh staff 78305 6 10 22:50 opck00001.jpg :
なにやらエラーが出てますが、 たぶんfpsの指定が小さい値過ぎて動画へのフレームの追加が出来なかったとかでしょうか? 静止画のファイルは出来ているのでOK。
では、円柱と円すいのデータop2.yamlをば。
$ cat op2.yaml defs: rtd_A: { base: 0.1, diff: 0, reflect: 0.5, reflact: 0.5, density: 2 } mov4: IMG_3999_4.mov big_ball: - kind: ball rtd: { diff: 0.3 } maps: - fn: '*mov4' fn_r: '*mov4' t2m: [ ax.zoom_all(2), ax.rot_x(90) ] - fn: '*mov4' fn_r: '*mov4' t2m: [ ax.zoom_all(2), ax.rot_x(90), ax.rot_z(180) ] m2g: [ ax.zoom_all(1000) ] all: - kind: export export: big_ball - kind: and args: - kind: ball not: True rtd: '*rtd_A' m2g: - ax.zoom_all(0.5) - ax.slide_x(1) - kind: cube not: True rtd: '*rtd_A' m2g: - ax.zoom_all(0.5) - ax.slide_x(-1) - kind: xor args: - kind: pipe rtd: '*rtd_A' m2g: - 'ax.slide( way.liss([-1,-1,-1],[1,1,1],[3,4,5])(sec) )' - kind: cone rtd: '*rtd_A' m2g: - ax.zoom_z(2) - ax.slide_z(-1) - 'ax.slide( way.liss([1,1,1],[-1,-1,-1],[4,5,6])(sec) )' m2g: - ax.rot_x(90) - ax.zoom_all(20) # EOF
$ ./cg.py eyep=[0,0,0],[300,300,100],10 sec=20 yaml=op2.yaml data_name=all name=out_v49/op2_tst div=4 fps=15 : wh : 19200/19200(100.0%) : fin 0.24s frm : 300/300(100.0%) : fin 2m 27.70s estimated 1.31 hour at 640*480 30fps
$ ./cg.py eyep=[0,0,0],[300,300,100],10 sec=20 yaml=op2.yaml data_name=all name=out_v49/op2 : wh : 307200/307200(100.0%) : fin 9.04s frm : 600/600(100.0%) : fin 1h 50m 22.71s $ ls -lt out_v49/ | head -rw-r--r-- 1 kondoh staff 1627032 6 10 22:24 op2_2.mp4 -rw-r--r-- 1 kondoh staff 3145033 6 10 22:24 op2_1.mp4 -rw-r--r-- 1 kondoh staff 5046499 6 10 22:22 op2.mp4 :
円柱と円すいは、リサージュで適当に移動させてXORをとってます。 視線の先あたりに「球のNOT」と「立方体のNOT」が隠れていて、それらとANDをとってます。
もはや完成像の想像がついていけず、、、 これが正しい結果なのか、全然判りません。
ちょっと、円柱と円すいを角柱と角すいに置き換えてためしてみます。
$ cp op2.yaml op3.yaml op3.yaml を編集して... $ diff -u op2.yaml op3.yaml --- op2.yaml 2018-06-10 20:28:40.000000000 +0900 +++ op3.yaml 2018-06-10 23:29:55.000000000 +0900 @@ -34,11 +34,13 @@ - ax.slide_x(-1) - kind: xor args: - - kind: pipe + - kind: poly_n_prism + n: 16 rtd: '*rtd_A' m2g: - 'ax.slide( way.liss([-1,-1,-1],[1,1,1],[3,4,5])(sec) )' - - kind: cone + - kind: poly_n_pyramid + n: 16 rtd: '*rtd_A' m2g: - ax.zoom_z(2)
などと16角柱と16角すいに置き換え
$ ./cg.py eyep=[0,0,0],[300,300,100],10 sec=20 yaml=op3.yaml data_name=all name=out_v49/op3 : wh : 307200/307200(100.0%) : fin 19.84s frm : 600/600(100.0%) : fin 5h 11m 24.03s $ ls -lt out_v49/ | head -rw-r--r-- 1 kondoh staff 853892 6 11 04:57 op3_4.mp4 -rw-r--r--@ 1 kondoh staff 3140471 6 11 04:57 op3_3.mp4 -rw-r--r-- 1 kondoh staff 3145345 6 11 04:56 op3_2.mp4 -rw-r--r-- 1 kondoh staff 3129328 6 11 04:55 op3_1.mp4 -rw-r--r--@ 1 kondoh staff 10784054 6 11 04:53 op3.mp4 :
円柱1つのところが16*3個の三角形の平面に展開されるので、 さすがに時間がかかりますね。
これは、、、円すいの時と比べて、明らかに角すいの表示がおかしいです(>_<)
底面の多角形が、同じ平面上にある複数の三角形に展開されるところが、 領域の演算の処理的には問題が出てるのかも知れません...