POV-Ray : Newsgroups : povray.general : POV Wishlist Server Time
16 Nov 2024 05:18:11 EST (-0500)
  POV Wishlist (Message 1 to 10 of 101)  
Goto Latest 10 Messages Next 10 Messages >>>
From: Tyler Eaves
Subject: POV Wishlist
Date: 16 Mar 2004 00:16:03
Message: <pan.2004.03.16.05.17.45.887214@NOSPAMml1.net>
This is a list of things I'd like to see in a future version
of POV-Ray. While none of these are massive changes, they are 
all capabilites that I would find useful. Some of these are much
more 'pie in the sky' than others.


1. Overlay textures.
    I'd like the ability of give an 'overlay texture' to a group
    (e.g. union, object, etc) that would work as an additonal layered
    texture above all the constituient objects textures. Useful for
    adding things like dust, grease, moss, that kinda thing, without
    having to go back an add to every object.

2. Faster scene file parsing
    I'm a computer programmer by trade, and I often do scenes that are
    very 'programatic', with lots of 'while' loops, and the like, and
    frankly, the POV-Ray scene parser is really slow. This is really
    obvious with something like POV-Tree, and animations can really 
    be an issue, especially on a relatively slow machine like mine
    (950mhz Athlon). I'm not quite sure what to do to improve things,
    but I would guess that the parser is working with the text directly
    , and not some sort of bytecode, or similar.

3. Implementation of transforms.inc in C
    This kinda ties into #2. I find myself using this file a lot,
    and it would be nice if these functions were implemented natively.

4. Ability to dump a object to a binary format
    This goes with 2. and 3. above. The desire here is to cut to the 
    chase and provide an efficient way to save and load objects. Again, 
    the idea here is to greatly reduce the speed hit for "recursive
    objects". I don't think things like platform or version independence
    are a big deal here, so maybe this wouldn't be too hard to code?

5. Lathe/prism hybrid. 
    It would be super handy to have an object that could be shaped 
    both in the x-z plane and have an 'edge shape'. I'm thinking of an
    implementation like this. First the object is built as a prism,
    then the edge shape is build at each point along the outside, 
    pointing along the surface normal. This would be really useful
    for all sorts of archetectural things, such as moldings, tabletops,
    etc, and I'm sure many organic things as well...

6. Progressive Render
    A lightwave plugin called 'fprime' gave me this idea. Basically a 
    scene is rendered first without things like anti-aliasing, 
    radiosity, photons, etc, and then the renderer uses intelligent 
    algorithmns to determine where those would have an impact, and 
    continually adds those details in. Basically you would allow the 
    render to continue until the desired quality is acheived, at which
    point it would be stopped. This would be handy when dealing with 
    deadlines, as the scene could begin rendering when finished, and
    then improved by the renderer up until the deadline, at which point
    the render as stopped and you take the result.

7. Spline curves
    What I mean by this is taking a 2d curve, as used in a prism, etc,
    and drawing it 'along' a spline. Useful for making troughs, gutters,
    many organic things, etc, especially if a start scale and end 
    scale could be specified.

8. A C(++) API
    This is another way of acheiving some of the above speed-related 
    goals. Allowing creating a pov-scene by linking against the API,
    giving code that builds a binary to render the scene. The ultimate
    for CPU intensive stuff.

9. A larger included texture library
    I'd really like to see some texture includes based on actual
    material properties. Things like the exisiting golds.inc/metals.inc
    are a good start, but more is always a good thing.

10. Better support for 3d Object formats
    I'd love to be able to to use things like Wings3D (or 3DS Max, etc)
    objects in my POV-Scenes directly.
    Maybe using a syntax like:
    extern_object{wings3d "foo.wings"}

Keep in mind these are just the ruminations of a bored POV-User,
and not meant to imply any dissatisfaction with the current state
of the program, just some ideas for future work.


Post a reply to this message

From: Christoph Hormann
Subject: Re: POV Wishlist
Date: 16 Mar 2004 02:50:02
Message: <c36bid$24d$1@chho.imagico.de>
Tyler Eaves wrote:
> [...]
>     I'm a computer programmer by trade, 

In that case - why don't you try implementing things yourself.  The 
problem with your list is that most point fall into one (or more) of the 
following categories:

- inefficient.
- contradicting the design and goals of POV-Ray.
- particularly hard to implement (or next to impossible) in the current 
POV-Ray code.
- already possible/available.

This of course does not mean that all points are completely wrong but 
concerning the 3rd category - please read the note about POV-Ray 4.0 
discussions in the POV-Team status report in p.a.f-a-q.

Christoph

-- 
POV-Ray tutorials, include files, Sim-POV,
HCR-Edit and more: http://www.tu-bs.de/~y0013390/
Last updated 07 Mar. 2004 _____./\/^>_*_<^\/\.______


Post a reply to this message

From: Ross Litscher
Subject: Re: POV Wishlist
Date: 16 Mar 2004 11:06:02
Message: <405725ea$1@news.povray.org>
"Tyler Eaves" <tyl### [at] NOSPAMml1net> wrote in message
news:pan### [at] NOSPAMml1net...
> This is a list of things I'd like to see in a future version
> of POV-Ray. While none of these are massive changes, they are
> all capabilites that I would find useful. Some of these are much
> more 'pie in the sky' than others.
>
>
> 1. Overlay textures.
>     I'd like the ability of give an 'overlay texture' to a group
>     (e.g. union, object, etc) that would work as an additonal layered
>     texture above all the constituient objects textures. Useful for
>     adding things like dust, grease, moss, that kinda thing, without
>     having to go back an add to every object.
>

if you had a macro that took texture names as parameters, and the result was
a set of layered textures, could that work? i'm imagining a syntax something
like

#macro overlay_textures(texture_01, texture_02, texture_03, overlay_texture)

and results would be a set of #declare statements that were like:

#declare layered_texture_01 =
    texture {texture_01}
    texture {overlay_texture}
#declare layered_texture_02 = ... and so on.

might even pass in an array of texture names and an overlay texture. could
you even pass in an array of result names, so you have more control over
what the #declare declares? Though you would still have to modify the
texture statements in your objects to use these new texture names, which
brings you back to going after every object that will use the overlay, and
editing it's texture. but there's always search/replace features in text
editors to help you on that :)

or, i have a general question (and no copy of pov to run on my computer to
try it out, i may have to remedy that), if you previously declared a texture
like

#declare my_gray = texture { ... }
#declare overlay = texture { ... }

then later do something like
#declare my_gray =
    texture {my_gray}
    texture {overlay}

how will that behave? would it make any difference if you use.

#local my_gray =
    texture {my_gray}
    texture {overlay}

i imagine pov will barf someplace along the line, especially once you get to
an object that tries to use some my_gray texture. i'm just trying to think
of some way to use the scope of the declarations to get around having to
edit the texture name used in an object.

but alas, i'm off track now and have rambled far too long. have you thought
of any reasonable workarounds yourself? I'll humbly wait for some pov master
to point out my logic flaws, and hope that maybe something triggered someone
else to think of something better :)

have a nice one,
ross


Post a reply to this message

From: Mike Williams
Subject: Re: POV Wishlist
Date: 16 Mar 2004 13:19:50
Message: <gDwwsBAWMtVAFwH9@econym.demon.co.uk>
Wasn't it Tyler Eaves who wrote:

>5. Lathe/prism hybrid. 
>    It would be super handy to have an object that could be shaped 
>    both in the x-z plane and have an 'edge shape'. I'm thinking of an
>    implementation like this. First the object is built as a prism,
>    then the edge shape is build at each point along the outside, 
>    pointing along the surface normal. This would be really useful
>    for all sorts of archetectural things, such as moldings, tabletops,
>    etc, and I'm sure many organic things as well...

While you're waiting for this to be implemented as a POV primitive, you
can use a parametric isosurface (or, for speed, closely approximated
with Ingo Janssen's param.inc). See my "Prismatic Lathe" example at
<http://www.econym.demon.co.uk/isotut/splines.htm#plathe>

Or you could use my sweepspline.inc to approximate this with a mesh2.
It's at the bottom of  <http://www.econym.demon.co.uk/isotut/more.htm>
It uses three splines to specify the shape - one for the 2d curve that's
used as a cross section, one for the 3d spline that the shape is swept
along, and a 1d spline that describes how the scale varies along the
length of the sweep.
For a lathe/prism hybrid, the 3d spline would be a straight line.

>7. Spline curves
>    What I mean by this is taking a 2d curve, as used in a prism, etc,
>    and drawing it 'along' a spline. Useful for making troughs, gutters,
>    many organic things, etc, especially if a start scale and end 
>    scale could be specified.

While you're waiting for this to be implemented as a POV primitive, you
can use my sweepspline.inc (see above).

If you only want to linearly interpolate between a start scale and end
scale, then use a simple linear spline for the 1d "Waist" spline rather
than a more complicated spline.

-- 
Mike Williams
Gentleman of Leisure


Post a reply to this message

From: andrel
Subject: Re: POV Wishlist
Date: 16 Mar 2004 15:49:46
Message: <4057683E.9090906@hotmail.com>
Hi mike,

Lars Petter in the thread: 'questions on parametric objects
and 3d splines'
is looking for your SweepSpline macro's. The zip file you
posted in november seems to be broken.

	Andrel

Mike Williams wrote:

> Wasn't it Tyler Eaves who wrote:
> 
> 
>>5. Lathe/prism hybrid. 
>>   It would be super handy to have an object that could be shaped 
>>   both in the x-z plane and have an 'edge shape'. I'm thinking of an
>>   implementation like this. First the object is built as a prism,
>>   then the edge shape is build at each point along the outside, 
>>   pointing along the surface normal. This would be really useful
>>   for all sorts of archetectural things, such as moldings, tabletops,
>>   etc, and I'm sure many organic things as well...
> 
> 
> While you're waiting for this to be implemented as a POV primitive, you
> can use a parametric isosurface (or, for speed, closely approximated
> with Ingo Janssen's param.inc). See my "Prismatic Lathe" example at
> <http://www.econym.demon.co.uk/isotut/splines.htm#plathe>
> 
> Or you could use my sweepspline.inc to approximate this with a mesh2.
> It's at the bottom of  <http://www.econym.demon.co.uk/isotut/more.htm>
> It uses three splines to specify the shape - one for the 2d curve that's
> used as a cross section, one for the 3d spline that the shape is swept
> along, and a 1d spline that describes how the scale varies along the
> length of the sweep.
> For a lathe/prism hybrid, the 3d spline would be a straight line.
> 
> 
>>7. Spline curves
>>   What I mean by this is taking a 2d curve, as used in a prism, etc,
>>   and drawing it 'along' a spline. Useful for making troughs, gutters,
>>   many organic things, etc, especially if a start scale and end 
>>   scale could be specified.
> 
> 
> While you're waiting for this to be implemented as a POV primitive, you
> can use my sweepspline.inc (see above).
> 
> If you only want to linearly interpolate between a start scale and end
> scale, then use a simple linear spline for the 1d "Waist" spline rather
> than a more complicated spline.
>


Post a reply to this message

From: Warp
Subject: Re: POV Wishlist
Date: 16 Mar 2004 16:29:07
Message: <405771a3@news.povray.org>
Tyler Eaves <tyl### [at] nospamml1net> wrote:
> 1. Overlay textures.
>     I'd like the ability of give an 'overlay texture' to a group
>     (e.g. union, object, etc) that would work as an additonal layered
>     texture above all the constituient objects textures. Useful for
>     adding things like dust, grease, moss, that kinda thing, without
>     having to go back an add to every object.

  This would certainly be useful.

> 2. Faster scene file parsing
>     I'm a computer programmer by trade, and I often do scenes that are
>     very 'programatic', with lots of 'while' loops, and the like, and
>     frankly, the POV-Ray scene parser is really slow. This is really
>     obvious with something like POV-Tree, and animations can really 
>     be an issue, especially on a relatively slow machine like mine
>     (950mhz Athlon). I'm not quite sure what to do to improve things,
>     but I would guess that the parser is working with the text directly
>     , and not some sort of bytecode, or similar.

  POV-Ray's scene parsing is certainly very slow. This is mainly for
historical reasons. The first versions of POV-Ray (up to 2.2 if I don't
remember completely wrongly) did not have any "scripting language" per se.
It was a pure scene description language, with no flow control commands,
and thus it really didn't need to be very fast. Thus it just parses and
interpretes the text directly.
  Flow control commands (#if, #while, #switch, #macro, etc) were added
afterwards because the need for them was overwhelming. However, they
were added on top of the old parser and are bound to its limitations.
  Optimizing the parsing needs a complete redesign of the parser. Probably
the best way is to do it the same way as perl does: Perl compiles the
source code to bytecode and then interpretes this bytecode, which makes
it pretty fast.
  I wouldn't be surprised if a future version of POV-Ray would do exactly
this. In fact, part of the current parser already does this: The function
parser/interpreter (this is the reason why functions are so fast compared
to eg. #macros).

> 3. Implementation of transforms.inc in C
>     This kinda ties into #2. I find myself using this file a lot,
>     and it would be nice if these functions were implemented natively.

  I tend to disagree with this. Specially if a future version of POV-Ray
has the abovementioned optimizations, the need for a core code implementation
of these features is lessened.

  There are actually more advantages than disadvantages in having features
implemented with the POV-Ray SDL: They are more flexible (you can change
or enhance them easily) and they don't clutter the core code of POV-Ray
(the larger the source code, the more bugs it will contain). It's also
easier for people to learn from them.
  The disadvantage is that you can't implement every imaginable feature
with the SDL because of its limitations (for example a renderman-style
shader engine would be something impossible to do with the SDL), and
naturally speed is an issue.
  The advantage of a core code implementation is speed. The disadvantage
is that the feature is then hard-coded, it can't be easily changed or
enhanced, and it adds to the clutter of the source code (adding the
probability of more bugs). It's also harder for people to learn from it.

> 4. Ability to dump a object to a binary format
>     This goes with 2. and 3. above. The desire here is to cut to the 
>     chase and provide an efficient way to save and load objects. Again, 
>     the idea here is to greatly reduce the speed hit for "recursive
>     objects". I don't think things like platform or version independence
>     are a big deal here, so maybe this wouldn't be too hard to code?

  If bytecode compiling/interpreting is implemented, then this feature
shouldn't be a problem.

> 10. Better support for 3d Object formats
>     I'd love to be able to to use things like Wings3D (or 3DS Max, etc)
>     objects in my POV-Scenes directly.
>     Maybe using a syntax like:
>     extern_object{wings3d "foo.wings"}

  This has maintainability problems. As you have noticed, new versions
of POV-Ray are not published every other week (and there are very good
reasons for this). New versions of popular 3D formats come out much more
often than new versions of POV-Ray. See the problem?

  Enhancing the SDL so that it can read and parse these file formats
would be a much better solution. SDL libraries are much easily updated
than POV-Ray itself. Besides, this solution is more generic, flexible and
thus better.

-- 
plane{-x+y,-1pigment{bozo color_map{[0rgb x][1rgb x+y]}turbulence 1}}
sphere{0,2pigment{rgbt 1}interior{media{emission 1density{spherical
density_map{[0rgb 0][.5rgb<1,.5>][1rgb 1]}turbulence.9}}}scale
<1,1,3>hollow}text{ttf"timrom""Warp".1,0translate<-1,-.1,2>}//  - Warp -


Post a reply to this message

From: Christopher James Huff
Subject: Re: POV Wishlist
Date: 16 Mar 2004 16:53:45
Message: <cjameshuff-3909BC.16535116032004@news.povray.org>
In article <pan### [at] NOSPAMml1net>,
 Tyler Eaves <tyl### [at] NOSPAMml1net> wrote:

> 1. Overlay textures.

I think the layered texture syntax in general needs reworking. This and 
a mechanism for stripping all textures from an object, and perhaps a way 
of operating on specific sub-objects.


> 2. Faster scene file parsing

Switching from direct parsing to an interpreted opcode system would 
greatly speed parsing of complex code. However, doing it right could be 
difficult. It would mean very extensive changes to the language. The end 
result will probably be an interpreted language with a very flexible 
preprocessor, basically equivalent to the existing scriping language.


> 3. Implementation of transforms.inc in C
>     This kinda ties into #2. I find myself using this file a lot,
>     and it would be nice if these functions were implemented natively.

This becomes less necessary with #2. Also, having them in an include 
file rather than built into the POV-Ray executable means users can look 
at and modify them, and they can be updated or added to separately from 
the main program. Some language extensions could allow them to be used 
as a built-in feature would be.


> 4. Ability to dump a object to a binary format
>     This goes with 2. and 3. above. The desire here is to cut to the 
>     chase and provide an efficient way to save and load objects. Again, 
>     the idea here is to greatly reduce the speed hit for "recursive
>     objects". I don't think things like platform or version independence
>     are a big deal here, so maybe this wouldn't be too hard to code?

This one comes up every so often...it'd be really complex to do, the 
data structures can be very complex. However, dumping the instructions 
for creating the object might be possible.


> 5. Lathe/prism hybrid. 

An interesting idea...generating a mesh would be fairly simple, and it 
might be possible to trace it directly.


> 6. Progressive Render
>     A lightwave plugin called 'fprime' gave me this idea. Basically a 
>     scene is rendered first without things like anti-aliasing, 
>     radiosity, photons, etc, and then the renderer uses intelligent 
>     algorithmns to determine where those would have an impact, and 
>     continually adds those details in. Basically you would allow the 
>     render to continue until the desired quality is acheived, at which
>     point it would be stopped. This would be handy when dealing with 
>     deadlines, as the scene could begin rendering when finished, and
>     then improved by the renderer up until the deadline, at which point
>     the render as stopped and you take the result.

Not really practical, at least not in the way you describe. It would be 
either extremely slow or outrageously memory consuming, or both. 
Lightwave probably uses some form of scanlining for this, and just 
refines lighting maps...POV can not do this, being a raytracer and not 
using light maps.
However, it would be possible to continuously update antialiasing, or to 
do a low quality render, refine the radiosity and photon data, and then 
do a higher quality render.


> 7. Spline curves
>     What I mean by this is taking a 2d curve, as used in a prism, etc,
>     and drawing it 'along' a spline. Useful for making troughs, gutters,
>     many organic things, etc, especially if a start scale and end 
>     scale could be specified.

You're talking about spline sweeps? They're already possible...just 
build a mesh using the built-in splines.


> 8. A C(++) API
>     This is another way of acheiving some of the above speed-related 
>     goals. Allowing creating a pov-scene by linking against the API,
>     giving code that builds a binary to render the scene. The ultimate
>     for CPU intensive stuff.

Not practical. There is no standard way of loading object code on 
different platforms, and the code itself would have to be compiled for 
the platform the scene is to be rendered on. Including a compiler along 
with POV would be a lot of effort, and distributing precompiled code 
would create compatibility problems.


> 9. A larger included texture library
>     I'd really like to see some texture includes based on actual
>     material properties. Things like the exisiting golds.inc/metals.inc
>     are a good start, but more is always a good thing.

I agree, and a lot of the existing textures simply do not work well with 
modern scenes. For instance, things like high ambient values that make 
them look really bad when you have radiosity, or simply not using more 
realistic features added since the texture was created. It would be a 
huge amount of work, though. Perhaps a community project...


> 10. Better support for 3d Object formats
>     I'd love to be able to to use things like Wings3D (or 3DS Max, etc)
>     objects in my POV-Scenes directly.
>     Maybe using a syntax like:
>     extern_object{wings3d "foo.wings"}

This would be a bad idea...incompatibilities, trying to keep up with the 
latest version of the format used by the software, etc. However, the 
ability to load the geometry from some common, more generic formats 
would be useful. Doing more than just the geometry and perhaps UV-mapped 
textures would be difficult or impossible, because of differences in the 
way POV-Ray works and the features it offers.

-- 
Christopher James Huff <cja### [at] earthlinknet>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: <chr### [at] tagpovrayorg>
http://tag.povray.org/


Post a reply to this message

From: Chambers
Subject: Re: POV Wishlist
Date: 16 Mar 2004 17:00:36
Message: <40577904@news.povray.org>
"Warp" <war### [at] tagpovrayorg> wrote in message
news:405771a3@news.povray.org...
>   I wouldn't be surprised if a future version of POV-Ray would do exactly
> this. In fact, part of the current parser already does this: The function
> parser/interpreter (this is the reason why functions are so fast compared
> to eg. #macros).

I always thought the reason that parsing scenes was slow had nothing to do
with the actual parser, and everything to do with memory allocation.  I seem
to remember reading about this in the vfaq and on this ng, but I can't seem
to find anything on it now.

-- 
...Chambers
http://www.geocities.com/bdchambers79


Post a reply to this message

From: Warp
Subject: Re: POV Wishlist
Date: 16 Mar 2004 17:13:16
Message: <40577bfc@news.povray.org>
Chambers <bdc### [at] yahoocom> wrote:
> I always thought the reason that parsing scenes was slow had nothing to do
> with the actual parser, and everything to do with memory allocation.  I seem
> to remember reading about this in the vfaq and on this ng, but I can't seem
> to find anything on it now.

  When creating tons of objects or very big objects (such as gigantic
meshes), the main slowdown is indeed memory allocation.
  However, if you make code which calculates something without creating
objects, then quite obviously memory allocation is not an issue there.
  If you want a concrete example, look at the raytracer made with the SDL
in the docs... :)

-- 
#macro N(D)#if(D>99)cylinder{M()#local D=div(D,104);M().5,2pigment{rgb M()}}
N(D)#end#end#macro M()<mod(D,13)-6mod(div(D,13)8)-3,10>#end blob{
N(11117333955)N(4254934330)N(3900569407)N(7382340)N(3358)N(970)}//  - Warp -


Post a reply to this message

From: Patrick Elliott
Subject: Re: POV Wishlist
Date: 16 Mar 2004 19:22:02
Message: <MPG.1ac147e51c2d571d9899e7@news.povray.org>
In article <40577904@news.povray.org>, bdc### [at] yahoocom says...
> "Warp" <war### [at] tagpovrayorg> wrote in message
> news:405771a3@news.povray.org...
> >   I wouldn't be surprised if a future version of POV-Ray would do exactly
> > this. In fact, part of the current parser already does this: The function
> > parser/interpreter (this is the reason why functions are so fast compared
> > to eg. #macros).
> 
> I always thought the reason that parsing scenes was slow had nothing to do
> with the actual parser, and everything to do with memory allocation.  I seem
> to remember reading about this in the vfaq and on this ng, but I can't seem
> to find anything on it now.
> 
> 
One thing that would be very helpful in byte code is 'parse once, run 
multiple times'. If you are doing animation, more time is spent parsing 
the damn scene in some cases than rendering. Byte code would not need to 
be reparsed unless the original actually changed, so would execute much 
faster and save a fair amount of time. Having to reparse it every single 
time as is done now....

-- 
void main () {

    call functional_code()
  else
    call crash_windows();
}


Post a reply to this message

Goto Latest 10 Messages Next 10 Messages >>>

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.