レイトレーシングの1発目。 視点から物体までをトレースして、視線と物体の交点を求めます。 物体と交差していれば単純にその物体の色でベタ塗りしてみます。
$ cat v2.patch | ( cd rt ; patch -p1 ) $ cd rt $ ./cg.py eyep=[0,0,0],200,10 sec=10 name=out/beta1 div=16 fps=2 $ ls -lt out/ | head total 208 -rw-r--r-- 1 kondoh staff 21681 3 17 19:35 beta1.mp4 -rw-r--r-- 1 kondoh staff 1155 3 17 19:35 beta100019.jpg -rw-r--r-- 1 kondoh staff 1207 3 17 19:35 beta100017.jpg -rw-r--r-- 1 kondoh staff 1164 3 17 19:35 beta100018.jpg -rw-r--r-- 1 kondoh staff 1143 3 17 19:35 beta100015.jpg -rw-r--r-- 1 kondoh staff 1174 3 17 19:35 beta100016.jpg -rw-r--r-- 1 kondoh staff 1314 3 17 19:35 beta100013.jpg -rw-r--r-- 1 kondoh staff 1228 3 17 19:35 beta100014.jpg -rw-r--r-- 1 kondoh staff 1394 3 17 19:35 beta100011.jpg
まずは、解像度を1/16、フレームレート1/15でお試し。
処理するピクセル数は本来の 1/(16*16*15) = 1/3840
それでは意を決してフルサイズでトライ。
$ ./cg.py eyep=[0,0,0],200,10 sec=10 name=out/beta2 : wh : 290716/307200(94.6%) : rest 4.82s : 2018/03/18 03:04:20 wh : 294482/307200(95.8%) : rest 3.71s : 2018/03/18 03:04:19 wh : 298262/307200(97.0%) : rest 2.6s : 2018/03/18 03:04:19 wh : 302059/307200(98.3%) : rest 1.49s : 2018/03/18 03:04:19 wh : 305822/307200(99.5%) : rest 0.4s : 2018/03/18 03:04:19 wh : 307200/307200(100.0%) : fin 1m 29.38s frm : 300/300(100.0%) : fin 7h 27m 13.67s $ $ ls -lt out | head total 10584 -rw-r--r-- 1 kondoh staff 153570 3 18 03:04 beta2.mp4 -rw-r--r-- 1 kondoh staff 15780 3 18 03:04 beta200299.jpg -rw-r--r-- 1 kondoh staff 15763 3 18 03:02 beta200298.jpg -rw-r--r-- 1 kondoh staff 15247 3 18 03:01 beta200297.jpg -rw-r--r-- 1 kondoh staff 14890 3 18 02:59 beta200296.jpg -rw-r--r-- 1 kondoh staff 14265 3 18 02:58 beta200295.jpg -rw-r--r-- 1 kondoh staff 13989 3 18 02:56 beta200294.jpg -rw-r--r-- 1 kondoh staff 14135 3 18 02:55 beta200293.jpg -rw-r--r-- 1 kondoh staff 14031 3 18 02:53 beta200292.jpg
7時間半かかってました。
部品のソースコードのメモに追加しておきます。
cross.py 物体と直線の交点を求める処理 rt.py レイトレーシング描画処理の本体
パッチファイルのメモも追加。
v2.patch メモ