|
 |
On 2026-03-27 11:51 a.m., Bald Eagle wrote:
> David Buck <dav### [at] simberon com> wrote:
>> Hi everyone. David (Kirk) Buck here. I'm the original author of
>> DKBTrace and POV-Ray.
>
> Hello again, David.
> The above sounds like the introduction to an interview video. :)
>
>> I've always been interested in spreading the joy of programming and
>> using computers in a creative way. DKBTrace was one of many projects
>> I've worked on simply for the joy of coding.
>
> What did you learn while writing DKBTrace, and what sorts of math or programming
> methods did you realize were truly central to the heart of what made DKBTrace
> work?
When I wrote DKBTrace, I worked out the math myself. In hindsight, I
did it the hard way. I wrote out the general equation of a quadric
surface that was rotated, scaled and translated. I calculated the
intersection of a ray with the generic quadric surface. I then needed
partial derivatives to calculate the surface normal at that point. In
hindsight, the easier thing to do is to keep the shape normalized at
<0,0> with a radius of 1 and transform the ray instead of the quadric
surface.
One thing I really enjoyed was writing the procedural texture code. I
took a lot of inspiration from a technical article called "An image
synthesizer" by Ken Perlin (Computer Graphics 19, 3 1985). It really
made the textures look amazing.
>
> What do you think contributed most to the enduring success of POV-Ray?
I don't think DKBTrace / POV-Ray would have been the success it was
without Aaron Collins porting it from the Amiga to the PC. Once he
contacted me about it, we worked together to make it more portable so it
ran on Unix, Amiga and PC. It was the assistance of other developers
that really made POV-Ray what it is today.
> What are some of the features that were added that you like the most?
Procedural textures and CSG were the two features that made DKBTrace
interesting. Before that, I was restricted to basic shapes (i.e.,
spheres) on checkerboard floors. CSG made it possible to do modeling
and procedural textures made them look good.
> Were there things that you've always wanted to implement, but never did?
I thought it would be interesting to add octree subdivision to the
raytracer. The main raytrace loop goes:
For each ray
For each object in the scene
If the ray intersects the object
Collect the intersection point
End
End
Find the closest intersection point and calculate the lighting
With an octree, you divide the space into large cubes and subdivide
those cubes that contain something. The algorithm, then, becomes
For each ray
Traverse empty cubes until you find a non-empty one
Calculate intersections with the small number of objects in
that cube.
I always thought that it would dramatically speed up the rendering by
eliminating the vast majority of the ray/object intersection calculations.
> Do you have friends and colleagues in the programming world that use POV-Ray?
Not really. Most of my "real" work is business programming. The people
I work with may be politely interested in my raytracing work but it
doesn't "rub off" on them.
I did have an interesting experience when I was teaching a Smalltalk
course once.
Student: Is it possible to use Smalltalk for graphics programming?
Me: It depends on what kind of graphics you want to do.
Student: I want to do ray tracing.
Me: Have you tried using available ray tracers?
Student: Yes, I use POV-Ray
Me: Oh, I wrote that.
<He looks at me, then at my name on the whiteboard>
Student: Wait, are you THE David Buck who wrote DKBTrace?
Me: That's me
Student: Wow, what a coincidence
Me: Not for me
BTW, Smalltalk can do raytracing (I wrote one once), but it can't
compete in raw speed to a C implementation. Smalltalk floats (at least
at the time) were boxed and required allocation and garbage collection,
so they were slower.
> What do you think are the features or attributes of POV-Ray that make it the
> most useful for certain tasks?
Somehow, I've always liked creating scenes by text. I know graphical
interfaces make it easy, but I can always be more precise with text.
> What are some key features that you think POV-Ray would benefit from the most?
I would like to see the POV-Ray rendering code extracted as a shared
library with an API interface. That way, I can write other software to
do any modeling I want without having to output a scene file and run the
renderer separately. I think that would open the door to a lot of new
innovation.
> Do you ever run across images, and instantly recognize that they were rendered
> with POV-Ray?
I often run across images and suspect they're done with POV-Ray.
Sometimes I can prove that I'm right and other times I can just never be
sure. I like when the artists explicitly mention the tool they used.
>
> - Bill "Bald Eagle" Walker>
Thanks, those were fun questions.
David
Post a reply to this message
|
 |