![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Finally I got my little ray-tracer to a stage where I think that releasing
it to the public could make sense. Its web home is at
http://www.povworld.org/raytracer/
You find there the (more or less well commented) source and a more detailed
description of its features with some example pictures. You can also have a
look at the API there. The ray-tracer is written in C++. It comes with some
features that I would like to see in a future version of POV-Ray.
Note that this is a realease for programmers only. The ray tracer does not
come with a parser so the only way to create new scenes is by programming
them. That is also why providing pre-compiled binaries does not make much
sense.
If there is enough interest in discussing about the source code or further
developping of it I can set up an appropriate communicating media. Maybe
this project is interesting for you if you are not familiar with the POV
3.5 code, you prefer object-oriented programming and you do not want to
wait for POV-Ray 4 to come out of the planing stage.
Feature List:
# Object
* Box
* Sphere
* Plane
* ''fast'' Isosurface using polynom-extrapolation
# Bounding Boxes
* Hierarchy
# CSG
* Union
* ''fast'' Merge and Intersection, speed in the same order as union
* CSG copy by reference
# Pigment
* Patterns
* Pigment Maps
* Camera-is-a-Pigment principle
# Texture
* Phong
* Transparency
# Media
* absorbing, emitting, scattering
* Density Mapping
* ''fast'' Media using advanced integration technique and light cache
(experimental!)
# Light Source
* Point Light
# Output
* Write to PPM format file
As said you find some more info on
http://www.povworld.org/raytracer/features/.
Happy programming!
- Micha Riser
--
objects.povworld.org - The POV-Ray Objects Collection
book.povworld.org - The POV-Ray Book Project
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
How about some example images and their render times?
--
#macro M(A,N,D,L)plane{-z,-9pigment{mandel L*9translate N color_map{[0rgb x]
[1rgb 9]}scale<D,D*3D>*1e3}rotate y*A*8}#end M(-3<1.206434.28623>70,7)M(
-1<.7438.1795>1,20)M(1<.77595.13699>30,20)M(3<.75923.07145>80,99)// - Warp -
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: Micha Riser
Subject: Re: Version 0.1 of my Ray Tracer released
Date: 24 Oct 2002 16:26:21
Message: <3db8576d@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Warp wrote:
> How about some example images and their render times?
>
There are example images on:
http://www.povworld.org/raytracer/node6.html
http://www.povworld.org/raytracer/node12.html
http://www.povworld.org/raytracer/node16.html
http://www.povworld.org/raytracer/node21.html
For the render times: If you compile the source you get a binary which can
make the scenes showed on the pages above.. so you can see yourself.
--
objects.povworld.org - The POV-Ray Objects Collection
book.povworld.org - The POV-Ray Book Project
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: Sir Charles W Shults III
Subject: Re: Version 0.1 of my Ray Tracer released
Date: 24 Oct 2002 16:55:41
Message: <3db85e4d$1@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
None of the links work.
Cheers!
Chip Shults
My robotics, space and CGI web page - http://home.cfl.rr.com/aichip
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: Micha Riser
Subject: Re: Version 0.1 of my Ray Tracer released
Date: 24 Oct 2002 16:56:53
Message: <3db85e95@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Sorry, I got the links wrong, should be:
http://www.povworld.org/raytracer/features/node6.html
http://www.povworld.org/raytracer/features/node12.html
http://www.povworld.org/raytracer/features/node16.html
http://www.povworld.org/raytracer/features/node21.html
--
objects.povworld.org - The POV-Ray Objects Collection
book.povworld.org - The POV-Ray Book Project
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: Andrew Coppin
Subject: Re: Version 0.1 of my Ray Tracer released
Date: 25 Oct 2002 06:16:09
Message: <3db919e9@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Cool... Someone else has done this...
I have also made a raytracer - in Java of all things! (Well, the original
was made with Smalltalk - but who else actually has that?) Again, the only
way to make it render things is to write [miles of] Java code to generate
the appropreate datastructures. I suspect my little effort isn't nearly as
full-featured as yours - but then, I had to reinvent raytracing from first
principles! Considering I've never had a propper algebra lesson in my entire
life, I'm pretty dam impressed I got the ray/shape intersection tests to
work at all!!! (Actually, waaaaay back I tried emailling one of the POV-Team
members about the math, but never got an answer. Hardly suprising - they
probably get daft emails like this every second wednesday...)
It's currently on my webpage. I won't go into features, URL, etc unless
someone else is actually interested. (Unlike yours, mine doesn't do anything
new that POV-Ray doesn't do.)
Andrew.
PS. Isn't building a raytracer with OOP so confusing? Which kind of "object"
are you talking about... ;-)
PPS. If I were God, POV_Ray's SDL would be object-oriented (in the
programming sense).
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
In article <3db919e9@news.povray.org>,
"Andrew Coppin" <orp### [at] btinternet com> wrote:
> I have also made a raytracer - in Java of all things! (Well, the original
> was made with Smalltalk - but who else actually has that?)
You mean your original raytracer? Because "the original" raytracer was a
piece of twine. ;-)
If you mean your original, it sounds interesting...I've always been
interested in Smalltalk. I know of another raytracer written in
Objective C, which is basically a halfway point between Smalltalk and C.
> Again, the only
> way to make it render things is to write [miles of] Java code to generate
> the appropreate datastructures. I suspect my little effort isn't nearly as
> full-featured as yours - but then, I had to reinvent raytracing from first
> principles! Considering I've never had a propper algebra lesson in my entire
> life, I'm pretty dam impressed I got the ray/shape intersection tests to
> work at all!!! (Actually, waaaaay back I tried emailling one of the POV-Team
> members about the math, but never got an answer. Hardly suprising - they
> probably get daft emails like this every second wednesday...)
Try a post on one of these newsgroups, maybe advanced-users.
> PS. Isn't building a raytracer with OOP so confusing? Which kind of "object"
> are you talking about... ;-)
Do what I did for my tracer: physical things are "shapes", objects are
bundles of information/behavior. Gets rid of the ambiguity nice and
neatly.
> PPS. If I were God, POV_Ray's SDL would be object-oriented (in the
> programming sense).
It already comes close in some ways. I think it could be made into a
prototype-based OO language with little modification.
--
Christopher James Huff <cja### [at] earthlink net>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: chr### [at] tag povray org
http://tag.povray.org/
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: Micha Riser
Subject: Re: Version 0.1 of my Ray Tracer released
Date: 25 Oct 2002 11:43:58
Message: <3db966bd@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Andrew Coppin wrote:
> I have also made a raytracer - in Java of all things! (Well, the original
Actually I have written it in Java first as well - I needed to learn java
for my study. But it was a factor 3-10 slower than the c++ version.
> was made with Smalltalk - but who else actually has that?) Again, the only
> way to make it render things is to write [miles of] Java code to generate
> the appropreate datastructures. I suspect my little effort isn't nearly as
> full-featured as yours - but then, I had to reinvent raytracing from first
> principles! Considering I've never had a propper algebra lesson in my
> entire life, I'm pretty dam impressed I got the ray/shape intersection
While I already had algreba courses I pretty figgured out all the
neccessary transformations for ray tracing myself... The nice thing was
that when I came to think about how isosurfaces and volumetric media works
I could perfectly make usage of the root finding and numerical integration
techniques that I had been taught just before.
Actually I just today started having a graphic course which will bring me a
bit deeper into the things and algorithms behind rendering.
> PS. Isn't building a raytracer with OOP so confusing? Which kind of
> "object" are you talking about... ;-)
Well, I called the objects' base class 'Object3D'. When you are talking of
'classes' and 'instances' about OOP there is no name conflict.
- Micha
--
objects.povworld.org - The POV-Ray Objects Collection
book.povworld.org - The POV-Ray Book Project
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: Andrew Coppin
Subject: Re: Version 0.1 of my Ray Tracer released
Date: 25 Oct 2002 12:08:16
Message: <3db96c70@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
> > I have also made a raytracer - in Java of all things! (Well, the
original
> > was made with Smalltalk - but who else actually has that?)
>
> You mean your original raytracer? Because "the original" raytracer was a
> piece of twine. ;-)
<groans>
Yes, I ment *my* original. And actually, it's just occurred to me - the
*very* _first_ prototype of it was actually done with Borland's Turbo Pascal
5.5 for DOS. (Anyone remember that ol' thing?)
> If you mean your original, it sounds interesting...I've always been
> interested in Smalltalk. I know of another raytracer written in
> Objective C, which is basically a halfway point between Smalltalk and C.
C hurts my head. I tried to make an interpreter for my own OOP language that
I designed... But pointers to arrays of pointers to pointers to functions is
just _not_ fun.
> (Actually, waaaaay back I tried emailling one of the POV-Team
> > members about the math, but never got an answer. Hardly suprising - they
> > probably get daft emails like this every second wednesday...)
>
> Try a post on one of these newsgroups, maybe advanced-users.
Mmm... will maybe do that sometime... although it's not strictly
POV-related...
> > PS. Isn't building a raytracer with OOP so confusing? Which kind of
"object"
> > are you talking about... ;-)
>
> Do what I did for my tracer: physical things are "shapes", objects are
> bundles of information/behavior. Gets rid of the ambiguity nice and
> neatly.
The way my tracer works, a "shape" described the 3-dimensional form of an
object; a "texture" basically maps points to surfaces, and a "surface"
described the object's surface characteristics. (I.e., by the wonder of
polymorphism, subclasses of Surface implements light-sourcing, reflection,
refraction one day, etc.) And "object" itself is the combination of a shape
and a texture. So anyway, I just renamed it to "item"... (Java doesn't like
you declaring classes called "Object"; could have done "Object3D" or
something, but "Item" is less typing ;-)
> > PPS. If I were God, POV_Ray's SDL would be object-oriented (in the
> > programming sense).
>
> It already comes close in some ways. I think it could be made into a
> prototype-based OO language with little modification.
I thought about writing some sorta thingy that would parse an input file in
my own custom-designed language, and spit out a result in ordinary POV-Ray
SDL. But I don't understand POV-Ray's SDL well enought to do it. (Ahhhh...
tell the trueth: you can't write a parser to save your life! :-(
Andrew.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: Andrew Coppin
Subject: Re: Version 0.1 of my Ray Tracer released
Date: 25 Oct 2002 12:11:18
Message: <3db96d26@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
> Actually I have written it in Java first as well - I needed to learn java
> for my study. But it was a factor 3-10 slower than the c++ version.
I'll bet! (The speed part, that is.) Don't like Java much, but it's the only
way to reach a larger audience...
> While I already had algreba courses I pretty figgured out all the
> neccessary transformations for ray tracing myself... The nice thing was
> that when I came to think about how isosurfaces and volumetric media works
> I could perfectly make usage of the root finding and numerical integration
> techniques that I had been taught just before.
>
> Actually I just today started having a graphic course which will bring me
a
> bit deeper into the things and algorithms behind rendering.
Ah, now we did do a term studying computer graphics... Everyone thought the
guy was joking when we said our assignment was to write a program to draw an
antialiased STRAIGHT LINE using Bresenham's Algorithm... Ahh, memories...
(What am I on? It was only 5 months ago!)
> > PS. Isn't building a raytracer with OOP so confusing? Which kind of
> > "object" are you talking about... ;-)
>
> Well, I called the objects' base class 'Object3D'. When you are talking of
> 'classes' and 'instances' about OOP there is no name conflict.
Yeah, but Java has a class called "Object". Like you say, "Object3D" would
work fine; I chose "Item" instead - it works better in English as well as in
code...
Andrew.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |