new python demo: boxes pyrit
authorRadek Brich <radek.brich@devl.cz>
Sat, 29 Mar 2008 18:01:45 +0100
branchpyrit
changeset 57 1e92c21b9a61
parent 56 d4481fc43952
child 58 cfe98f5c0ae9
new python demo: boxes
TODO
demos/boxes.py
--- a/TODO	Sat Mar 29 17:54:27 2008 +0100
+++ b/TODO	Sat Mar 29 18:01:45 2008 +0100
@@ -1,15 +1,11 @@
 Bugs
 ====
- * bad sphere/box transmisivity
-   Inside-out transition is ignored as every second intersection is ignored to avoid duplicit
-   intersect points. This solution should be replaced by moving ray origin a little forward, which
-   should work as well and without side-effects.
+ * (none known)
 
 Future Plans
 ============
  * changing main ray tracing algoritm to more flexible architecture with a Sampler object:
   - enhance Sampler to support subsampling
-  - rewrite pthreads
  * namespace
  * kd-tree:
    - optimize structures
@@ -23,10 +19,6 @@
  * implement efficient AABB-ray intersection using Plucker coordinates
  * generalization: Camera "shader" (ray generator), surface shader and maybe light & background shaders
 
-Performance Weak Points
-=======================
- * Raytracer::render -- allocating and deallocating every sample
-
 
 New Classes?
 ============
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/demos/boxes.py	Sat Mar 29 18:01:45 2008 +0100
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+
+import sys
+sys.path.append(open('ModulePath').read().strip())
+
+from raytracer import Raytracer, Material, Box, Light
+import Image
+
+rt = Raytracer()
+
+light1 = Light(position=(0.0, 5.0, -5.0), colour=(0.7, 0.3, 0.6))
+rt.addlight(light1)
+
+light2 = Light(position=(-2.0, 10.0, -2.0), colour=(0.4, 0.6, 0.3))
+rt.addlight(light2)
+
+mat0 = Material(colour=(0.7, 0.7, 0.7))
+mat0.setReflectivity(0.0)
+for x in range(8):
+	for y in range(8):
+		for z in range(8):
+			box = Box(L=(-4.3+x, -4.6+y, -8.6+z), H=(-3.7+x, -4.0+y, -8.0+z), material=mat0)
+			rt.addshape(box)
+
+imagesize = (800, 600)
+data = rt.render(imagesize)
+img = Image.fromstring("RGB", imagesize, data)
+img.save('boxes.png')