Assignment 2 Lazy KD-Tree
Hyun Gu Lee
Date submitted: 29 Apr 2006
Code emailed: 28 Apr 2006
Description of implementation approach and comments
I tried (and failed) to do this in several different ways. The only way that was even remotely a success was in the following way: initially, the root node is set to lazy. If a ray hits a lazy node, then it is evaluated as being either a leaf or a interior node. While deciding, go through all the primitivies and fully refine (I realize i should only refine one step, and i tried to make it work but couldn't. As it is, my sorry implementation is calling fullyrefine multiple times...making it exponentially slower!) Then i see whether i should make the node a leaf or a interior. I could only get it work on the second view.
Final Images Rendered with my implementation of heightfield.cpp
killeroos-view1.pbrt (Killeroos visible)
|
KD Tree |
Lazy KD Tree |
Ratio |
build time (secs) |
15.9 |
|
% |
total time (secs) |
28.6 |
|
% |
Num of nodes made |
1.376M |
|
% |
Triangle ray intersections |
673.2k |
|
% |
"killeroos-view2.pbrt (Killeroos invisible)"
|
KD Tree |
Lazy KD Tree |
Ratio |
build time (secs) |
16.0 |
0 |
0 |
total time (secs) |
26.3 |
15.2 |
.5779% |
Num of nodes made |
1.376M |
54 |
0.0000392% |
Triangle ray intersections |
758.4k |
758.4k |
100% |
"killeroos-view3.pbrt (close-up)"
|
KD Tree |
Lazy KD Tree |
Ratio |
build time (secs) |
16.0 |
|
|
total time (secs) |
30.4 |
|
|
Num of nodes made |
1.376M |
|
% |
Triangle ray intersections |
|
|
% |
"plants-view1.pbrt"
|
KD Tree |
Lazy KD Tree |
Ratio |
build time (secs) |
18.0s |
|
% |
total time (secs) |
533.7s |
|
% |
Num of nodes made |
7.431M |
|
% |
Triangle ray intersections |
20.291M:422.458M (4.80%) |
|
% |
"plants-view2.pbrt"
|
KD Tree |
Lazy KD Tree |
Ratio |
build time (secs) |
18.1s |
|
% |
total time (secs) |
853.7s |
|
% |
Num of nodes made |
7.431M |
|
% |
Triangle ray intersections |
25.268M:755.006M (3.42%) |
|
% |