ベタなレイトレーシング

レイトレーシングの1発目。 視点から物体までをトレースして、視線と物体の交点を求めます。 物体と交差していれば単純にその物体の色でベタ塗りしてみます。

v2.patch

$ 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 メモ