1 Bugs |
1 Bugs |
2 ==== |
2 ==== |
3 * concurrent read? (concurrent write should not occur) |
3 * bad sphere/box transmisivity |
|
4 Inside-out transition is ignored as every second intersection is ignored to avoid duplicit |
|
5 intersect points. This solution should be replaced by moving ray origin a little forward, which |
|
6 should work as well and without side-effects. |
4 |
7 |
5 Future Plans |
8 Future Plans |
6 ============ |
9 ============ |
|
10 * namespace |
7 * kd-tree: |
11 * kd-tree: |
8 - optimize structures |
12 - optimize structures |
9 - optimize construction: do not use bounding boxes of shapes, instead implement box-shape intersection |
13 - optimize construction: use box-shape intersection instead of bounding boxes of shapes |
10 - optimize traversal -- no std::vector |
14 - optimize traversal -- no std::vector |
11 - save/load |
15 - save/load |
12 * textures (3D procedural, pixmaps later) |
16 * textures (3D procedural, pixmaps) |
13 * update Python binding: Camera, new classes |
17 * update Python binding: Camera, other new classes |
14 * namespace |
|
15 * stochastic oversampling |
18 * stochastic oversampling |
16 * absorbtion of refracted rays in dense materials (can be computed using shape distance and some 'absorbance' constant) |
19 * absorbtion of refracted rays in dense materials (can be computed using shape distance and some 'absorbance' constant) |
|
20 * implement efficient AABB-ray intersection using Plucker coordinates |
|
21 * generalization: Camera "shader" (ray generator), surface shader and maybe light & background shaders |
17 |
22 |
18 New Classes? |
23 New Classes? |
19 ============ |
24 ============ |
20 |
25 |
21 container.h -- Container |
|
22 kdtree.h -- KdTree |
|
23 shapes.h -- Triangle, Sphere |
26 shapes.h -- Triangle, Sphere |
24 scene.h -- Ray, Light, Camera, Scene |
27 scene.h -- Ray, Light, Camera, Scene |
25 material.h -- Material, Texture |
28 material.h -- Material, Texture |
26 matrix.h -- Matrix |
|
27 vector.h -- Vector3 |
|
28 reader.h -- Reader, WavefrontReader |
29 reader.h -- Reader, WavefrontReader |
29 |
30 |
30 KdTree top |
|
31 wf = new WavefrontReader() |
31 wf = new WavefrontReader() |
32 wf.setContainer(top) |
32 wf.setContainer(top) |
33 wf.setTransform(monkey_pos_matrix) |
33 wf.setTransform(monkey_pos_matrix) |
34 wf.read("monkey.obj") |
34 wf.read("monkey.obj") |
35 // more transform&reads |
35 // more transform&reads |
36 destroy wf |
36 destroy wf |
37 |
37 |
38 top.optimize() -- i.e. build tree |
|
39 |
|
40 Scene scene -- container with shapes, a camera and lights |
38 Scene scene -- container with shapes, a camera and lights |
41 scene = new Scene() |
39 scene = new Scene() |
42 scene.setTop(top) -- top object in hierarchy |
|
43 scene.setCamera(new Camera(eye, u, v, p)) |
40 scene.setCamera(new Camera(eye, u, v, p)) |
44 scene.addLight(new PointLight(pos, color)) |
41 scene.addLight(new PointLight(pos, color)) |
45 rt.setScene(scene) |
42 rt.setScene(scene) |
46 rt.render(w,h) |
43 rt.render(w,h) |
47 |
44 |