円柱と円すいも「物体の論理演算」に対応してみました。
$ 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個の三角形の平面に展開されるので、 さすがに時間がかかりますね。
これは、、、円すいの時と比べて、明らかに角すいの表示がおかしいです(>_<)
底面の多角形が、同じ平面上にある複数の三角形に展開されるところが、 領域の演算の処理的には問題が出てるのかも知れません...