# HG changeset patch # User Radek Brich # Date 1206810105 -3600 # Node ID 1e92c21b9a613e0029002ff69307f097a1a95cf3 # Parent d4481fc439526fa7d70907a87d5f7c58657ab8ff new python demo: boxes diff -r d4481fc43952 -r 1e92c21b9a61 TODO --- 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? ============ diff -r d4481fc43952 -r 1e92c21b9a61 demos/boxes.py --- /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')