 |
 |
|
 |
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Anthony Bennett wrote:
> Also, about that man's ideas: they're sorta good. I don't like the idea of 0
> backward-compatibility. That sucks. I really did not understand what he
> wanted to do with stacks. He really lost me on that point.
This is exactly what I didn't mean: It should _not_ be totally re-written, just
expanded with some new possibilities. It would be _optional_ to have attributes
in an object, and it would be _optional_ to have methods for an object. You could
still do like you're used to, like this:
box{
<>,<>
texture{}
}
...and it would still render as a beautiful box, without first being declared as
a "class" and instanced with object{}. But, I personally would like to have the
option to declare it like this:
#declare MyBox=box{
<>,<>
texture{}
attribute speed;
attribute direction;
#macro Move()
translate speed*direction
#end
}
What I miss most is being able to access the different parts of an object like
the position, size, texture etc. If those were accessable via dot
notation(.position, .size, .texture etc) things would light up a great deal.
Once again, do not remove the backward-compability, just add some new features
that expands the scripting language and that can be used _optionally_.
- Mikael.
-----------------------------------------------------------------
Mikael Carneholm
Dep. of Computer Science
Högskolan i Borås, Sweden
http://www.studenter.hb.se/~arch
E-mail: sa9### [at] ida utb hb se
Post a reply to this message
Attachments:
Download 'us-ascii' (1 KB)
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
> Once again, do not remove the backward-compability, just add some new
features
> that expands the scripting language and that can be used _optionally_.
Now that is a good idea
Mick
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Hi,
I personally like the idea of POV4 moving quite a mile. And it should,
considering the change that came along the path from 3.0 to 3.1 :-). And
for the unix-folks even a through e is very significant.
But reading about extensions of POVRay I usually find a mixture of three
very different problems:
a) Writing a good raytracer
b) Writing a good scene description language
c) Writing a good programming language and interpreter
Each and every one of them is well suited to fill up some books, several
lectures or some non-profit organisation. And in general moving from
'good' to 'best' is impossible.
The main problem in my eyes (and the best point in Eugenes proposal) is
the closed architecture of POVRay. I know, that it's religion, but that
would be a major step.
I happen to switch tools faster than anything else, and I will stick to
create scene files with Perl and matlab, just because I don't want
POVRay to be good in solving eigenvalue problems :-)
Exhibiting a well documented interface to what happen to grow an
object-tree sometime, will open up grand new possibilities and at the
same time bring down the load on the POVTeam.
They then may proceed in writing THE BEST raytracer around.
Axel
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Interesting ideas.
Some thought should be given as to what purpose
is being served by POV-Ray's scene description
language. If people are writing directly in it,
then making the language easier to write in
is merited. If the language is meant to act
as an interface between the renderer and
other applications (like PostScript), then
parsing speed, file size efficiency, and
availability of atomic features that can be
scalably combined should be foremost.
It is often the case that the two situations
tend to be mutually exclusive. Programmers
write in C++, for example, but this code
is then compiled into a form that CPUs
can better deal with. One can write in
machine code, of course, but few bother.
Over time, compiler evolution has produced
a design that gives programmers most of
what they need without seriously degrading
execution performance.
The creation of a more user-friendly
scripting language should likely be done
as a separate front end, whose syntax is
then translated into what POV would use.
A front end that is 3.x compliant can be
written to provide a bridge to 3.x users.
Many front ends, of course, would be
modellers.
Ray
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Eugene Arenhaus wrote:
> Hi.
>
> Here are some thoughts about what POV-Ray 4 could look like.
>
> The POV team is especially welcome to read. :)
>
> Thanks!
>
> (`` Email: mailto:chi### [at] netvision net il
> (=o \ Web page: http://www.furnation.com/chipmunk
> _ / ,-' ftp://velar.ctrl-c.liu.se/vcl/Artists/Eugene-Arenhaus/
> ( `( )
> ) / ``O "To see a World in a grain of sand,
> '' `,~' And a Heaven in a wild flower,
> \ )) Hold Infinity in the palm of your hand,
> `---`` And Eternity in an hour." (W. Blake)
>
> POV 4 Strategy Proposal
>
> Author: Eugene Arenhaus, chi### [at] netvision net il
>
> For the information of: POV-Ray tem, and everyone interested.
>
> Concerns: Possible way of developing POV 4
>
> POV has gone a long way, and earned its place as the best freeware ray
> tracer, aiming at artistic rather than commercial values.
>
> However, like it happens with many software products that have a long
> development history, it has reached a state where updating and adding
> new features poses a serious problem due to feature conflicts and
> architectural shortcomings.
>
> This is why I am making this bold proposal:
>
> POV 3 should not be used as direct ancestor for POV 4. Instead, POV 4
> should be developed with different principles in mind, aiming at
> greatest flexibility and easy extension of the product. Backward
> compatibility with previous versions should not be considered a major
> requirement: POV 3 is reaching its limit, it's time for breakthrough.
>
> What are the chief points in POV 4 ideology that are proposed?
>
> In actuality, there are only three of them:
>
> 1. Hierarchical, layered object model
> 2. Full-featured object-oriented scripting
> 3. Dynamic modular internal architecture
>
> By consistently implementing these principles, several major advantages
> can be achieved:
>
> ? Maximum flexibility and consistency of scene language
> ? Drastically reduced need for patches and external utility software
> ? Easy and seamless incorporation of new features
>
> The proposed ideology concerns chiefly the architectural model, and
> does not require any large-scale modifications to the actual
> mathematical algorithms involved - these latter can be reused to up to
> 95%.
>
> Let's discuss the three principles in detail.
>
> Hierarchical, layered object model
>
> Currently, objects in POV are self-contained entities. Each can be
> declared with a special command, often with a unique set of properties.
> Some of those properties are universal to all objects, such like colors
> and transforms; but many are used uniquely, like height maps in height
> field object. This leads to many little but nasty inconsistencies and
> incompatibilities, and even duplicate features (POV essentially has two
> surface-of-revolution objects, for instance.)
>
> The proposed model, on the contrary, would allow all objects use any
> properties freely and interchangeably. The basic idea is layering
> (stacking) objects to achieve the final look. In a sense it is similar
> to MAX modifier stack, and to material maps used in POV.
>
> Layered objects are containers for each other, and rely on the
> underlying layers to determine their final appearance. A sphere can
> compute its geometry but relies on the underlying texture object to
> determine its color. CSG object contains several geometry objects which
> in turn may be having their own textures. Blob object relies on
> underlying geometry or CSG objects to determine its own geometry.
> Textures may be composed of texture layers, and so on.
>
> Bringing such consistency to the object model is of great importance
> for flexibility available to the end user. For example, currently we
> have texture maps and normal maps. (Add the height maps to it, these
> are still another thing.) Normal maps, in turn, have special parameters
> to control their slope, which are different from other control
> parameters in POV. With new ideology in action, we'll have only one map
> object to do all these things. We'd simply say that color channels must
> use one map, bump channel must use another map, and slope must use yet
> another map - or the same as others. (No more specially preparing image
> files for height fields.) What's yet more important, this approach
> would easily allow to map *any* parameter. For example, it'd be
> possible to have turbulence parameter varying but a map, having
> turbulence gradients (an actual user request), or having a variable
> mapped IOR, for hot-air effects, using the same mechanism as with other
> mapping.
>
> Effective implementation of this principle would require a certain
> change in the set of POV primitives: they would become simpler and
> smaller; instead of being individual big machines capable of doing many
> things they would be more like machine parts that can do only one
> little action but also be used to assemble many machines. For example,
> instead of having separate object for a height field, there would be a
> special displacement map primitive applicable to geometry, and
> turbulence parameter could be handled as separate primitive as well,
> applicable to textures and texturable in turn. Possibilities are
> endless.
>
> Implementation issues
>
> Instead of multiple unique objects to handle, it's suggested to use a
> single consistent object model for everything from geometry to
> textures.
>
> This unitary object must implement a specific POV interface, with such
> functions available as determining the intersection points with a
> specific ray, color and normal vector at a specific 3D point, and
> perhaps distance from the surface to a given point. Every object in POV
> should implement this interface, including textures. (Textures still
> should implement ray intersection - simply by themselves, they *always*
> intersect rays, being infinite solids.)
>
> The object must also support the layering through importing this
> functionality. It's easy to see that the object properties still fall
> into the familiar channels: geometry, surface, and material, perhaps
> more. The object should be able to import any of these channels from
> other objects, to determine its own composite appearance.
>
> The actual objects would simply implement this interface, not
> necessarily in full. For example, it makes sense that geometry objects
> would handle ray intersections and distance computations, while texture
> objects would handle colors. Layering these primitives would compose
> the final objects that handle all channels through calls to underlying
> objects.
>
> Not actually related to this but highly desirable would be support for
> implicitly and explicitly referencing the objects. It is much more
> efficient to have multiple references to one and same textured sphere,
> than declaring it over and over. (Currently it is supported for mesh
> geometry, but should be made the universal rule.)
>
> Full-featured object-oriented scripting
>
> Scripting language technically might come along with scene description
> language, but it's desirable that the scene description language itself
> should be implemented as such. We are speaking of a real interpreter
> here, with function calls and user objects. (The current macro language
> is already a step in that direction, and it should be taken further.)
> This would largely eliminate the problems with making complex objects,
> and make for smaller and cleaner scene files.
>
> Another important benefit from scripting would lie in possibility to
> write custom functions for POV primitives, eliminating need for
> external software. Macro language is already used very widely, but this
> would make many more things possible - from implementing custom shaders
> to making new custom primitives from scratch. This would also largely
> eliminate the need for patches and plug-ins (the feature being hard to
> implement due to cross-platform incompatibilities).
>
> It is essential that the script would provide the user with full access
> to the object interface. Script must allow the possibility to check
> surface parameters, cast rays, check intersections and so on.
>
> Dynamic modular internal architecture
>
> The dynamic modular architecture is not an issue that is essential for
> the user, since it concerns only the programming. However, it is the
> approach that can solve most design problems concerning feature
> conflicts and feature addition.
>
> The idea itself is simple. All primitive objects should use the same
> consistent interface, and their implementations should be contained in
> separate classes. The main program should refer only to the abstract
> interface without any connection to the actual implementation - this
> includes both tracing and scene parsing. The implementation classes
> should register themselves with the main program through a special
> registration interface, informing it about their descriptions and
> telling the parser how to handle their declarations.
>
> When a program is built by this principle, it does not know anything
> about what actual objects it handles. It only contains code to handle a
> set of unified, standard interfaces - for tracing, for parsing, and for
> other needs that might arise. Objects, in turn, bother to take the
> implementation tasks on themselves, handling their own parsing and
> tracing. Addition of new and removal of old features to such a program
> is extremely easy, and requires only a modification of the makefile.
> Individual modules can be implemented by independent programmers, no
> incompatibility issues arise between objects, and any new primitive
> object is immediately usable in object layer stacks without any special
> programming.
>
> Also, the third-party patches can be made as separate modules too, and
> their incorporation into the new versions of the product will become
> immediate and seamless, not even speaking that conflicts between
> patches will disappear.
>
> In conclusion
>
> This proposal comes from six years of designing the object-oriented
> software, and three years of using POV (along with other 3D software
> packages) - the experiences of the first applied to the frustrations of
> the second.
>
> Any comments, questions, and discussion in general are welcome.
>
> E.A.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
I always thought that a good idea would be to split up POV into the
raytracer and scripting language...the poor POV team has way too much work
to do by maintaing both things..and it shows in that it takes longer to
update things and improve them...
What about taking one of those interpetied languages liek Perl, Sather,
Scheme, Lisp or something and write the interpiter code to give a robust
environment for coding and hook them to the compiled libraries that do math
intensive stuff the actual raytracing.I think you can do this in at least
one of the above mentioned...although it would be a big thing for the POV
team to side with a single existing language...
Eugene Arenhaus wrote:
> Hi.
>
> Here are some thoughts about what POV-Ray 4 could look like.
>
> The POV team is especially welcome to read. :)
>
> Thanks!
>
> (`` Email: mailto:chi### [at] netvision net il
> (=o \ Web page: http://www.furnation.com/chipmunk
> _ / ,-' ftp://velar.ctrl-c.liu.se/vcl/Artists/Eugene-Arenhaus/
> ( `( )
> ) / ``O "To see a World in a grain of sand,
> '' `,~' And a Heaven in a wild flower,
> \ )) Hold Infinity in the palm of your hand,
> `---`` And Eternity in an hour." (W. Blake)
>
> POV 4 Strategy Proposal
>
> Author: Eugene Arenhaus, chi### [at] netvision net il
>
> For the information of: POV-Ray tem, and everyone interested.
>
> Concerns: Possible way of developing POV 4
>
> POV has gone a long way, and earned its place as the best freeware ray
> tracer, aiming at artistic rather than commercial values.
>
> However, like it happens with many software products that have a long
> development history, it has reached a state where updating and adding
> new features poses a serious problem due to feature conflicts and
> architectural shortcomings.
>
> This is why I am making this bold proposal:
>
> POV 3 should not be used as direct ancestor for POV 4. Instead, POV 4
> should be developed with different principles in mind, aiming at
> greatest flexibility and easy extension of the product. Backward
> compatibility with previous versions should not be considered a major
> requirement: POV 3 is reaching its limit, it's time for breakthrough.
>
> What are the chief points in POV 4 ideology that are proposed?
>
> In actuality, there are only three of them:
>
> 1. Hierarchical, layered object model
> 2. Full-featured object-oriented scripting
> 3. Dynamic modular internal architecture
>
> By consistently implementing these principles, several major advantages
> can be achieved:
>
> ? Maximum flexibility and consistency of scene language
> ? Drastically reduced need for patches and external utility software
> ? Easy and seamless incorporation of new features
>
> The proposed ideology concerns chiefly the architectural model, and
> does not require any large-scale modifications to the actual
> mathematical algorithms involved - these latter can be reused to up to
> 95%.
>
> Let's discuss the three principles in detail.
>
> Hierarchical, layered object model
>
> Currently, objects in POV are self-contained entities. Each can be
> declared with a special command, often with a unique set of properties.
> Some of those properties are universal to all objects, such like colors
> and transforms; but many are used uniquely, like height maps in height
> field object. This leads to many little but nasty inconsistencies and
> incompatibilities, and even duplicate features (POV essentially has two
> surface-of-revolution objects, for instance.)
>
> The proposed model, on the contrary, would allow all objects use any
> properties freely and interchangeably. The basic idea is layering
> (stacking) objects to achieve the final look. In a sense it is similar
> to MAX modifier stack, and to material maps used in POV.
>
> Layered objects are containers for each other, and rely on the
> underlying layers to determine their final appearance. A sphere can
> compute its geometry but relies on the underlying texture object to
> determine its color. CSG object contains several geometry objects which
> in turn may be having their own textures. Blob object relies on
> underlying geometry or CSG objects to determine its own geometry.
> Textures may be composed of texture layers, and so on.
>
> Bringing such consistency to the object model is of great importance
> for flexibility available to the end user. For example, currently we
> have texture maps and normal maps. (Add the height maps to it, these
> are still another thing.) Normal maps, in turn, have special parameters
> to control their slope, which are different from other control
> parameters in POV. With new ideology in action, we'll have only one map
> object to do all these things. We'd simply say that color channels must
> use one map, bump channel must use another map, and slope must use yet
> another map - or the same as others. (No more specially preparing image
> files for height fields.) What's yet more important, this approach
> would easily allow to map *any* parameter. For example, it'd be
> possible to have turbulence parameter varying but a map, having
> turbulence gradients (an actual user request), or having a variable
> mapped IOR, for hot-air effects, using the same mechanism as with other
> mapping.
>
> Effective implementation of this principle would require a certain
> change in the set of POV primitives: they would become simpler and
> smaller; instead of being individual big machines capable of doing many
> things they would be more like machine parts that can do only one
> little action but also be used to assemble many machines. For example,
> instead of having separate object for a height field, there would be a
> special displacement map primitive applicable to geometry, and
> turbulence parameter could be handled as separate primitive as well,
> applicable to textures and texturable in turn. Possibilities are
> endless.
>
> Implementation issues
>
> Instead of multiple unique objects to handle, it's suggested to use a
> single consistent object model for everything from geometry to
> textures.
>
> This unitary object must implement a specific POV interface, with such
> functions available as determining the intersection points with a
> specific ray, color and normal vector at a specific 3D point, and
> perhaps distance from the surface to a given point. Every object in POV
> should implement this interface, including textures. (Textures still
> should implement ray intersection - simply by themselves, they *always*
> intersect rays, being infinite solids.)
>
> The object must also support the layering through importing this
> functionality. It's easy to see that the object properties still fall
> into the familiar channels: geometry, surface, and material, perhaps
> more. The object should be able to import any of these channels from
> other objects, to determine its own composite appearance.
>
> The actual objects would simply implement this interface, not
> necessarily in full. For example, it makes sense that geometry objects
> would handle ray intersections and distance computations, while texture
> objects would handle colors. Layering these primitives would compose
> the final objects that handle all channels through calls to underlying
> objects.
>
> Not actually related to this but highly desirable would be support for
> implicitly and explicitly referencing the objects. It is much more
> efficient to have multiple references to one and same textured sphere,
> than declaring it over and over. (Currently it is supported for mesh
> geometry, but should be made the universal rule.)
>
> Full-featured object-oriented scripting
>
> Scripting language technically might come along with scene description
> language, but it's desirable that the scene description language itself
> should be implemented as such. We are speaking of a real interpreter
> here, with function calls and user objects. (The current macro language
> is already a step in that direction, and it should be taken further.)
> This would largely eliminate the problems with making complex objects,
> and make for smaller and cleaner scene files.
>
> Another important benefit from scripting would lie in possibility to
> write custom functions for POV primitives, eliminating need for
> external software. Macro language is already used very widely, but this
> would make many more things possible - from implementing custom shaders
> to making new custom primitives from scratch. This would also largely
> eliminate the need for patches and plug-ins (the feature being hard to
> implement due to cross-platform incompatibilities).
>
> It is essential that the script would provide the user with full access
> to the object interface. Script must allow the possibility to check
> surface parameters, cast rays, check intersections and so on.
>
> Dynamic modular internal architecture
>
> The dynamic modular architecture is not an issue that is essential for
> the user, since it concerns only the programming. However, it is the
> approach that can solve most design problems concerning feature
> conflicts and feature addition.
>
> The idea itself is simple. All primitive objects should use the same
> consistent interface, and their implementations should be contained in
> separate classes. The main program should refer only to the abstract
> interface without any connection to the actual implementation - this
> includes both tracing and scene parsing. The implementation classes
> should register themselves with the main program through a special
> registration interface, informing it about their descriptions and
> telling the parser how to handle their declarations.
>
> When a program is built by this principle, it does not know anything
> about what actual objects it handles. It only contains code to handle a
> set of unified, standard interfaces - for tracing, for parsing, and for
> other needs that might arise. Objects, in turn, bother to take the
> implementation tasks on themselves, handling their own parsing and
> tracing. Addition of new and removal of old features to such a program
> is extremely easy, and requires only a modification of the makefile.
> Individual modules can be implemented by independent programmers, no
> incompatibility issues arise between objects, and any new primitive
> object is immediately usable in object layer stacks without any special
> programming.
>
> Also, the third-party patches can be made as separate modules too, and
> their incorporation into the new versions of the product will become
> immediate and seamless, not even speaking that conflicts between
> patches will disappear.
>
> In conclusion
>
> This proposal comes from six years of designing the object-oriented
> software, and three years of using POV (along with other 3D software
> packages) - the experiences of the first applied to the frustrations of
> the second.
>
> Any comments, questions, and discussion in general are welcome.
>
> E.A.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
[...]
>What you should do is speed it up with assembly. I spoke with a fellow and he
>factored in an at least 10% speed increase. Can you imagine 10%? I mean what
>would mean you could finish rendering that much faster. Think like this: 24 h
>render = 21 1/2 h render. I don't know about you, but those hours are
>appreciated where I come from. Maybe you could toss in that scanline render
>thing like in 3DS Max, and only use raytracing on reflective surfaces. Or
>maybe I'm wrong. I just write as the ideas come. =)
It's better to direct any speed-issues to the people who write instruction
schedulers and compiler libraries.
Why not use 3DS Max if it has the functions you need?
/j
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Jan Danielsson wrote:
> Why not use 3DS Max if it has the functions you need?
>
> /j
It lacks charm and personality. I costs a lot too.
--
Ken Tyler
mailto://tylereng@pacbell.net
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Sorry, I just HAVE to comment on that one...
If you ask me it has PLENTY of personality and charm!!! :)
It's a fast and efficient renderer too... and when it is used correctly
(which it unfortunately almost never is... because of all the non-dedicated
pirate users) it can create some of the most fascinating images I've ever
seen...
The cost is minimal for what you get in return...
But then again, you didn't ask me did you? :-)
(You know you've been raytracing too long if you've ever gotten into a flame
war over renderers)
Lance.
P.S. Plus, I'm a huge MAX supporter as you know so of course I can't say
enough good things about it :-) Can't wait for R3.0 - SHIVA! WOOHOO!
---
For the latest 3D Studio MAX plug-ins, images and much more, go to:
The Zone - http://come.to/the.zone
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
The cost is NEVER minimal.
The cost is NEVER Minimal!!!
(I had to repeat that. ;-)
Seriously, now, I would NEVER have been raytracing if there were no POV.
Since it is free, there is no comparing to ANYTHING else, no matter how
much better.
And besides, POV is great!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
About 3ds max.
a) You can't speak to the creators by just e-mailing them, now can you?
b) You are obviously loaded with cash, Lance. (Can I have some?)
c) Long live piracy! (Just kidding... why would I use POV if I could get 3ds...
just kidding again, I _can_ get it, but I prefer POV).
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
>a) You can't speak to the creators by just e-mailing them, now can you?
Yes, I can, for example, if I want to know about the up and coming
features in Shiva (MAX 3) then all I have to do is email Frank DeLise...
He's also got a great website by the way... and he also made the opening
sequences for Lost In Space... :)
>b) You are obviously loaded with cash, Lance. (Can I have some?)
No, I'm not, and no you can't...
>c) Long live piracy! (Just kidding... why would I use POV if I could get
3ds...
>just kidding again, I _can_ get it, but I prefer POV).
Have you ever used MAX R2.5? (don't say you've used R1.2 because it
was TERRIBLE!!!)
--
Lance.
---
For the latest 3D Studio MAX plug-ins, images and much more, go to:
The Zone - http://come.to/the.zone
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Oh no, don't get me wrong, I'm not trying to put down POV-Ray!!! I started
in the whole 3D scene with POV-Ray! I LUV IT! :)
I'm just saying that MAX is better for MY use because I'm doing work where I
need to render quickly and see the results as I'm altering something. The
advanced modelling methods like NURBS are also invaluable to me, as are the
post production effects...
All I was saying is that MAX is better for what I'm doing... Not that it's
better for everyone... (hey, I can't see Pixar using it... Nor can I see a
lot of the highend guys using it... they use stuff that costs HEAPS more!!!
For example, Maya costs $US 26,000!!!!!!)
Lance.
---
For the latest 3D Studio MAX plug-ins, images and much more, go to:
The Zone - http://come.to/the.zone
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Hi all,
I've seen these issue come up a number of times.
I think one issue is the POV language. I remember there was talk about
this a while back regarding a binary scene language for POV and its plusses
and minuses. I believe the official plan was to clean up the current POV
language a bit and make an official syntax guide for it. This would allow
people to build their own scene language (OOP, stack based, whatever) and
then parse that into the POV format.
I think this is a pretty good solution. It maintaints backwards
compatibility (as much as possible) but also allows language extensibility.
There is one big minus, though. It still makes it very difficult to use
POV's internal routines during the scene parsing phase. For example, doing
object intersection tests, etc is still not possible. To acheive these
abilities would require either a very large rewrite of POV or significant
work on a new scene language front end. Since that front end would need to
use all of POV's internal algorithms anyway, I think it makes sense to do it
at the corse, i.e., in POV itself.
So, this brings back up the earlier debate regarding the scene language.
Maybe it is time to create a different POV scene language. One that is very
strictly defined and also has the information retrieval routines (e.g.,
object intersection) that would be so useful. Then someone could put a
"traditional" POV scene language wrapper on top of that for backwards
compatibility.
Another issue is POV engine growth and extensibility. It is certainly
very important to be able to add new features to POV as they become
desireable and feasible (as CPU become faster and faster). How to do useful
plugins is always a difficult question. The biggest issue here being
portability. It is not fair for only some platforms to have the new plugins.
Well, one solution I see to this would be having some interpreted
language in POV to create the plugins. This would then, of course, be very
slow. Another solution is to have a more open development system where
contributions can be rolled into official builds more quickly.
If the development system is opened up then I think that the POV source
code should be made more orderly so that it is easier to add to (I believe
this is planned anyway). Also a good method of evaluating POV patches would
be necessary.
Personally I'm pretty happy with the POV feature set. My biggest desire
is a different scene language that allows retrieving information from the
POV engine during parsing. Of course some of the recent patches are pretty
cool and I think they should be rolled into the official POV distribution
but not too hastily.
One other thought I've had was going back to the interpreted idea
mentioned above. I was wondering if a very small, tightly coded, minimum
feature-set of ray tracing could be written and compiled and from that set
additions are added. I do not know enough about the details of a ray tracer
to say too much more but it seems there are things in POV that need not be
in the core of the program. For example, shouldn't there be a more flexible
way to define objects such that there need not be so many different types?
Yes, yes, I know, this would cause a speed hit on the rendering but I'm
wondering if that could be minimized via the scener parser/compiler.
Similarly, all of the warps, turbulations, media, etc should be able to be
emilimated via a very basic system. Perhaps something that allows flexible
object definitions, flexible light definitions, and flexible texture
definitions, and the camera of course. After all isn't that all we need?
Every pov scene is simply objects with textures, light (maybe with texture),
and the camera (maybe with textures). Even media can just be objects with
textures.
If those 4 things could be broken down into a very basic definition then
everything else could be built on top of that in some scripting language. If
those basics were optimized enough in the main code then perhaps the later
scripting slowness would not be too bad.
Well, sorry for the length. Just some thoughts. Any input from the POV
team (or anyone else)?
--Rainer
----- Original Message -----
From: Eugene Arenhaus <chi### [at] netvision net il>
Newsgroups: povray.general,povray.programming
Sent: 1999?4?8? 21:49
Subject: POV 4 ideology proposal
> Hi.
>
> Here are some thoughts about what POV-Ray 4 could look like.
>
> The POV team is especially welcome to read. :)
>
> Thanks!
>
>
>
> (`` Email: mailto:chi### [at] netvision net il
> (=o \ Web page: http://www.furnation.com/chipmunk
> _ / ,-' ftp://velar.ctrl-c.liu.se/vcl/Artists/Eugene-Arenhaus/
> ( `( )
> ) / ``O "To see a World in a grain of sand,
> '' `,~' And a Heaven in a wild flower,
> \ )) Hold Infinity in the palm of your hand,
> `---`` And Eternity in an hour." (W. Blake)
>
>
>
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
I actually have a friend with 2.5. But, I don't know, I just don't like the
interface, never found it friendly. Now, Bryce and Lightwave, that is a nice
interface! You understand immediately how to use them. Too bad I don't have a
couple thousand just lying around...
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Actually MAX 3, from what I've seen of it, has a new interface which is more
like Maya... I really don't see the problem with it's current interface
though, I thought it was quite intuitive... but then again, that's me! LOL,
and I'm strange!
I'm not sure now how anyone can really compare MAX to something like LW or
Bryce... because MAX is just so much more advanced!!! (well, OK, that's in
my very bias opinion... ;-)
I must say though it certainly does like hogging resources :)
--
Lance.
---
For the latest 3D Studio MAX plug-ins, images and much more, go to:
The Zone - http://come.to/the.zone
For a totally different experience, visit my Chroma Key Website:
Colorblind - http://www.fortunecity.com/skyscraper/parallax/359/colorblind
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
What's so special about Maya, anyway? I mean, what would justify asking
>$20,000 for a piece of software? I've used ArchiCAD 6.0, which, I believe,
is also an outrageously expensive program. It was nice and comfy, yes, but
there wasn't much I couldn't have done with other, much cheaper utils, with
a bit of inventiveness.
So, what is it about about Maya? Does it wash your dishes? Wax your car? Pay
your bills? Make you popular? What?
Margus
Lance Birch wrote in message <3711f88e.0@news.povray.org>...
>Actually MAX 3, from what I've seen of it, has a new interface which is
more
>like Maya... I really don't see the problem with it's current interface
>though, I thought it was quite intuitive... but then again, that's me!
LOL,
>and I'm strange!
>
>I'm not sure now how anyone can really compare MAX to something like LW or
>Bryce... because MAX is just so much more advanced!!! (well, OK, that's in
>my very bias opinion... ;-)
>
>I must say though it certainly does like hogging resources :)
>
>--
>Lance.
>
>
>---
>For the latest 3D Studio MAX plug-ins, images and much more, go to:
>The Zone - http://come.to/the.zone
>For a totally different experience, visit my Chroma Key Website:
>Colorblind - http://www.fortunecity.com/skyscraper/parallax/359/colorblind
>
>
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Rainer Mager wrote:
>
> One other thought I've had was going back to the interpreted idea
> mentioned above. I was wondering if a very small, tightly coded, minimum
> feature-set of ray tracing could be written and compiled and from that set
> additions are added. I do not know enough about the details of a ray tracer
> to say too much more but it seems there are things in POV that need not be
> in the core of the program. For example, shouldn't there be a more flexible
> way to define objects such that there need not be so many different types?
Hmmm... no. More flexible means more features means more types of objects.
What do you want? To always start with a sphere and have to deform it into
the object you want? Always define your objects as an isosurface? Use only
triangle mesh objects? I don't think many people would be happy.
If you think POV has too many options/objects/textures, take a look at 3DS
MAX... the features there (especially when you add plugins) are practically
endless (MAX gave me a headache the first time I used it, but I think the
multitude of features are quite useful).
My opinion: more object types = more flexibility and speed = better system.
> Yes, yes, I know, this would cause a speed hit on the rendering but I'm
> wondering if that could be minimized via the scener parser/compiler.
> Similarly, all of the warps, turbulations, media, etc should be able to be
> emilimated via a very basic system. Perhaps something that allows flexible
> object definitions, flexible light definitions, and flexible texture
> definitions, and the camera of course. After all isn't that all we need?
> Every pov scene is simply objects with textures, light (maybe with texture),
> and the camera (maybe with textures). Even media can just be objects with
> textures.
Well, technically it's in the object's interior, not it's texture.
> If those 4 things could be broken down into a very basic definition then
> everything else could be built on top of that in some scripting language. If
> those basics were optimized enough in the main code then perhaps the later
> scripting slowness would not be too bad.
In raytracing, it think that it's safe to say that EVERYTHING should be
optimized, not just the very basic stuff. Slowness is never "not too bad",
unless there is no other way to solve the problem.
-Nathan Kopp
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Oh, I forgot to say...
I LOVE the idea of a brand new scripting language for POV with an old
compatibility-wrapper put over it! I don't think the current syntax
really has what it takes to get things done, since it can't access
and the properties of object instances or access many rendering
engine features.
-Nathan
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
> Actually MAX 3, from what I've seen of it, has a new interface which is more
> like Maya... I really don't see the problem with it's current interface
> though, I thought it was quite intuitive... but then again, that's me! LOL,
> and I'm strange!
_I_ didn't find it intuitive. Also, MAX3, AFAIK has several interchangeable
interfaces, from what a friend told me, he got this info. from a beta tester.
> I'm not sure now how anyone can really compare MAX to something like LW or
> Bryce... because MAX is just so much more advanced!!! (well, OK, that's in
> my very bias opinion... ;-)
I never said that Bryce or Lightwave compare to MAX in power, just that their
interfaces are MUCH more user-friendly.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Yeah, I know someone who has a copy of the beta already :)
--
Lance.
---
For the latest 3D Studio MAX plug-ins, images and much more, go to:
The Zone - http://come.to/the.zone
For a totally different experience, visit my Chroma Key Website:
Colorblind - http://www.fortunecity.com/skyscraper/parallax/359/colorblind
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Maya, well, it's good... not the BEST, but as good as you'll get in that
price range...
It has an extremely advanced, automated and fast character animation system
and also very advanced NURBS modelling techniques... Inverse Kinematics,
Dynamics system... It has soft-body animation too, so you can get really
realistic characters... It's particle systems are HIGHLY advanced, they can
model water, liquids, interparticle reaction, fire, smoke etc... It is also
built to run on SGI, and generally software designed for SGI is more
expensive inherently because it takes longer to develop for such a platform
(to take advantage of the G-Pipelines and advance graphics acceleration).
There are more expensive programs of course, I'm just speaking of a
particular range here...
Basically it's the top of the high-end graphics range, then there is like
the
"ultra-expensive-we-designed-this-for-ourselves-because-we-have-millions"
range... Like Pixar and ILM :-)
--
Lance.
---
For the latest 3D Studio MAX plug-ins, images and much more, go to:
The Zone - http://come.to/the.zone
For a totally different experience, visit my Chroma Key Website:
Colorblind - http://www.fortunecity.com/skyscraper/parallax/359/colorblind
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Eugene Arenhaus" <chi### [at] netvision net il> writes:
> Here are some thoughts about what POV-Ray 4 could look like.
I've read all this over and over, and I still have the same remarks.
I cannot believe I have kept in such a bad mood for the last five
days, so I guess at least a bit of what I'm about to say is right.
> However, like it happens with many software products that have a
> long development history, it has reached a state where updating and
> adding new features poses a serious problem due to feature conflicts
> and architectural shortcomings.
Huuh? See the number of patches that are published these days?
> This is why I am making this bold proposal:
>
> POV 3 should not be used as direct ancestor for POV 4. Instead, POV
> 4 should be developed with different principles in mind, aiming at
> greatest flexibility and easy extension of the product. Backward
> compatibility with previous versions should not be considered a
> major requirement: POV 3 is reaching its limit, it's time for
> breakthrough.
Whaaaat? Are you *really* meaning that? Backwards compatibility
not to be considered a major requirement? Makes me jump on my seat
each time I read that. How dare you speak of easy extension if you
abandon backward compatibility?
> Hierarchical, layered object model
>
> Currently, objects in POV are self-contained entities. Each can be
> declared with a special command, often with a unique set of
> properties. Some of those properties are universal to all objects,
> such like colors and transforms; but many are used uniquely, like
> height maps in height field object. This leads to many little but
> nasty inconsistencies and incompatibilities, and even duplicate
> features (POV essentially has two surface-of-revolution objects, for
> instance.)
Why is it so, in your mind? Lemme think... Maybe because it's the
way it is in real life. A real object has a shape and a material. A
raytraced object has a model for its shape (to be chosen in a set of
different models) and a model for its material (including texture,
interior, refraction etc.). Different properties mean different
implementations.
> The proposed model, on the contrary, would allow all objects use any
> properties freely and interchangeably.
Yeah, like you're going to use a center and radius for a texture
map. Or a area_light for a sphere.
[...]
> Bringing such consistency to the object model is of great importance
> for flexibility available to the end user. For example, currently we
> have texture maps and normal maps. (Add the height maps to it, these
> are still another thing.) Normal maps, in turn, have special parameters
> to control their slope, which are different from other control
> parameters in POV.
Of course they have! They are different things! Why would you want
them to behave like an atmosphere?
> With new ideology in action, we'll have only one map object to do
> all these things. We'd simply say that color channels must use one
> map, bump channel must use another map, and slope must use yet
> another map - or the same as others.
Yes, that should have been done ages ago. Give those haloes a slope
map! They need it! What for? Uh, lemme think... Consistency with
normal maps, that's it. Ah, but then the quadric primitive also needs
atmospheric attenuation, doesn't it?
> (No more specially preparing image files for height fields.)
You'll have to forgive me for that, but that sounds like one of the
biggest pieces of nonsense I've ever heard. How do you intend to
generate height fields without specially prepared images? Randomly?
> What's yet more important, this approach would easily allow to map
> *any* parameter. For example, it'd be possible to have turbulence
> parameter varying but a map, having turbulence gradients (an actual
> user request), or having a variable mapped IOR, for hot-air effects,
> using the same mechanism as with other mapping.
Variable IOR means bent rays, which is kind of a huge piece of work
to do. I agree on the use of these features, though.
> Effective implementation of this principle would require a certain
> change in the set of POV primitives: they would become simpler and
> smaller; instead of being individual big machines capable of doing many
> things they would be more like machine parts that can do only one
> little action but also be used to assemble many machines. For example,
> instead of having separate object for a height field, there would be a
> special displacement map primitive applicable to geometry, and
> turbulence parameter could be handled as separate primitive as well,
> applicable to textures and texturable in turn. Possibilities are
> endless.
Sounds to me like simplicity just gets killed on the way.
> Implementation issues
[...]
> The actual objects would simply implement this interface, not
> necessarily in full. For example, it makes sense that geometry objects
> would handle ray intersections and distance computations, while texture
> objects would handle colors. Layering these primitives would compose
> the final objects that handle all channels through calls to underlying
> objects.
So you want, instead of having each object perform the task it's
meant for, to have any object perform any operation *at all*. I still
cannot understand.
> Full-featured object-oriented scripting
>
> Scripting language technically might come along with scene description
> language, but it's desirable that the scene description language itself
> should be implemented as such.
Whaaat? Object-oriented scene description language?
> We are speaking of a real interpreter here, with function calls and
> user objects. (The current macro language is already a step in that
> direction, and it should be taken further.)
Wake up man, you're *describing scenes*, not programming! Is life
object oriented? Are your car and fridge objects with attributes and
methods? How often do you call the tap.open() or the window.close()
functions?
> This would largely eliminate the problems with making complex
> objects, and make for smaller and cleaner scene files.
Yes, of course. Replace every single parameter with a function
call. You call that readability? And small?
Sphere Left_Eye_Ball is
Radius : Float := 1.0;
Center : Vector3 := <0.0,0.0,0.0>;
Texture := new Texture_Type;
Texture.Pigment := new Pigment_Type;
Texture.Pigment.Type := Bozo;
Texture.Pigment.Turbulence := new Map_Type;
Texture.Pigment.Turbulence.Type := Gradient;
Texture.Pigment.Turbulence.Direction := <1.0,0.0,0.0>;
Texture.Pigment.Turbulence.Map := new Map;
[...]
end Sphere;
> Another important benefit from scripting would lie in possibility to
> write custom functions for POV primitives, eliminating need for
> external software. Macro language is already used very widely, but this
> would make many more things possible - from implementing custom shaders
> to making new custom primitives from scratch. This would also largely
> eliminate the need for patches and plug-ins (the feature being hard to
> implement due to cross-platform incompatibilities).
And dramatically slow down the parsing and tracing. Remember,
compilers were invented some time ago to produce fast code.
> It is essential that the script would provide the user with full
> access to the object interface. Script must allow the possibility to
> check surface parameters, cast rays, check intersections and so on.
Could be nice.
> Dynamic modular internal architecture
Yeah, object oriented programming, in a word.
> In conclusion
>
> This proposal comes from six years of designing the object-oriented
> software, and three years of using POV (along with other 3D software
> packages) - the experiences of the first applied to the frustrations
> of the second.
Er... Does this conclude anything?
This text sounds to me like it's full of ideas. I'm afraid most of
them are bad ones, though. Let's sum them up.
- Abandon backward compatibility. This is a *huge* contradiction of
all programming principles. (Unless of course you work for
Microsoft, but that is not my point.) Abandoning compatibility
means throwing all external programs to the dustbin. You can't
seriously do that.
- Unify primitive interfaces. This implies to switch from a realistic
model (based on how the world works) to a programmingly nice model
(based on how abstract object oriented programs work). No, no, no,
the raytracer uses models inspired from reality, not models that
make it easy to program!
- Object oriented scene description language. Means complexity. You
cannot expect a beginner or even a programmer to support all the
hassle of object oriented programming just to describe a scene.
Boy, if the scene comes from an object oriented vision of life, then
use a scripting language to generate your scene, such as Perl or
Python! Programming is out of the range of a *description*
language.
My conclusion: you're trying to make the raytracer stick to a very
abstract programming model rather than to how it works (remember, it's
used to simulate the way light behaves in a given environment).
You're trying to make the program an abstract one, instead of making
it easy to use. You're trying to make POV-Ray a programming language
instead of keeping it a raytracer.
I want to keep POV-Ray as an engine to trace! Complex scenes are
described by complex files, and if I do not want to write complex
files then I use Perl. With all the objects that I need. I want to
be able to use my old Perl scripts with the new POV-Ray. I want to be
able to write quick-and-dirty scenes without those objects. I want to
describe scenes as they are (objects with textures) and not as they
are represented inside the engine. And I want them to be represented
as they are and not according to some abstract and confuse model, so
that I can write new primitives when I need them.
Ladies and gentlemen, thank you for your attention.
P.S: I have only six months of object oriented programmation behind
me (alright, that was only C++, but many consider it to be a real OO
language), many years of POV-Ray, and although I still don't see why
there is such a buzz about OO programming, all my frustrations in
POV-Ray scene description language have been solved by the -i-
option. The #while, #for and other directives are rarely used by me.
--
Roland Mas
A man walks into a bar. Bang.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
I agree with all your thoughts... nuf said :)
Oh, and add translucency to the list of new features ;-) he he he Sorry,
but I just couldn't resist it!
--
Lance.
---
For the latest 3D Studio MAX plug-ins, images and much more, go to:
The Zone - http://come.to/the.zone
For a totally different experience, visit my Chroma Key Website:
Colorblind - http://www.fortunecity.com/skyscraper/parallax/359/colorblind
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Roland Mas wrote:
Yes, of course. Replace every single parameter with a function
> call. You call that readability? And small?
>
> Sphere Left_Eye_Ball is
> Radius : Float := 1.0;
> Center : Vector3 := <0.0,0.0,0.0>;
> Texture := new Texture_Type;
> Texture.Pigment := new Pigment_Type;
> Texture.Pigment.Type := Bozo;
> Texture.Pigment.Turbulence := new Map_Type;
> Texture.Pigment.Turbulence.Type := Gradient;
> Texture.Pigment.Turbulence.Direction := <1.0,0.0,0.0>;
> Texture.Pigment.Turbulence.Map := new Map;
> [...]
> end Sphere;
>
No, no, no.....this is not what it should be like. Look, I bet you have done
this a couple of times:
#declare SomeSphere=sphere{
<0,0,0>, 0.5
pigment{color rgb <1,0,0>}
}
object{
SomeSphere
// added rotations, tranlations etc.
}
This is already pretty close to OO scripting! (SomeSphere is the "class" and
it is instanced with object{})
Now, what we can't do with the current version is this:
#declare SomeSphere.position=SomeSphere.position+<0,1,0>;
#declare SomeSphere.radius=1.5;
#declare SomeSphere.pigment=pigment{color rgb<0,0,1>};
This could be very useful.
AND, it should be fully backwards compatible with previous versions (1-3),
i.e, you should still be able to do like this...
sphere{
<0,0,0>, 0.5
pigment{color rgb <1,0,0>}
}
...to see a red sphere render on your screen (as the "instant" instance of
the "class" sphere{} it actually is, when you think of it...).
It's only, it would be nice to be able to access the different attributes via
dot(.) notation.
POV scripting has always been a simplified programming language - let's keep
it so.
Introducing OO scripting in POV should be done in the same spirit - powerful,
yet simplified.
POV spirit. THE spirit.
Regards,
- Mikael.
-----------------------------------------------------------------
Mikael Carneholm
Dep. of Computer Science
Högskolan i Borås, Sweden
http://www.studenter.hb.se/~arch
E-mail: sa9### [at] ida utb hb se
Post a reply to this message
Attachments:
Download 'us-ascii' (1 KB)
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Mikael Carneholm <sa9### [at] ida utb hb se> writes:
> This is already pretty close to OO scripting! (SomeSphere is the
> "class" and it is instanced with object{})
Sure. Why change that?
> Now, what we can't do with the current version is this:
>
> #declare SomeSphere.position=SomeSphere.position+<0,1,0>;
#declare SomeSphere = object { SomeSphere translate y }
Does exactly it.
> #declare SomeSphere.radius=1.5;
I'm not sure it really cannot be done.
> #declare SomeSphere.pigment=pigment{color rgb<0,0,1>};
#declare SomeSphere = object { SomeSphere pigment{color rgb<0,0,1>} }
Does exactly it.
Anyway, what's the use of all that? Want to have another sphere,
redeclare it. Or better, if it's another sphere, use another object.
--
Roland Mas
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Roland Mas wrote in message ...
>
> Huuh? See the number of patches that are published these days?
>
Indeed. But there are a number of very useful things, like non-linear
transformations, which, IMHO, can't be done - not without very substantial
core modifications.
>
> Whaaaat? Are you *really* meaning that? Backwards compatibility
>not to be considered a major requirement? Makes me jump on my seat
>each time I read that. How dare you speak of easy extension if you
>abandon backward compatibility?
>
I tend to agree, backward compatibility is important. Otherwise, the work of
many people, in the form of plugins, tutorials etc. would come to nothing.
But this should not be a dogma. Some compatibility will have to be
sacrificed, and has been sacrificed before, to facilitate future
improvements.
>> (No more specially preparing image files for height fields.)
>
> You'll have to forgive me for that, but that sounds like one of the
>biggest pieces of nonsense I've ever heard. How do you intend to
>generate height fields without specially prepared images? Randomly?
>
Internally. This is already possible in the Superpatch. In essence, you
assign a height pattern, like a normal pattern. No need to create a separate
scene, plane, orthographic camera etc., render it and use the resulting
bitmap for the heigtfield.
> Variable IOR means bent rays, which is kind of a huge piece of work
>to do. I agree on the use of these features, though.
>
I suppose this _could_ be simulated with volume sampling, like in media. But
that's my uneducated guess.
>
>> We are speaking of a real interpreter here, with function calls and
>> user objects. (The current macro language is already a step in that
>> direction, and it should be taken further.)
>
> Wake up man, you're *describing scenes*, not programming! Is life
>object oriented? Are your car and fridge objects with attributes and
>methods? How often do you call the tap.open() or the window.close()
>functions?
>
You could call it programming (well, scripting). How much so, depends on the
particular user. And of fourse POV _objects_ are objects, and can be
instanced with different attributes. But I know too little about OOP to make
any definitive case here.
Margus
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On Tue, 13 Apr 1999 20:09:27 +0300, Margus Ramst <mar### [at] peak edu ee> wrote:
>Indeed. But there are a number of very useful things, like non-linear
>transformations, which, IMHO, can't be done - not without very substantial
>core modifications.
Even if POV were completely object-oriented internally (which it will
be, someday) non-linear transformations (and other displacements) would
still require substantial modifications. You still have to modify every
object, whether they're real "objects" or just the simulated "objects"
they are now.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Ron Parker wrote in message <37138cb5.0@news.povray.org>...
>
>Even if POV were completely object-oriented internally (which it will
>be, someday) non-linear transformations (and other displacements) would
>still require substantial modifications. You still have to modify every
>object, whether they're real "objects" or just the simulated "objects"
>they are now.
>
OO wasn't exactly what I was talking about here. More along the lines of the
modular design concept. While I am by no means familiar with the
technicalities, I am under the impression that integrating new features
(processes, objects etc.) is more difficult than it need be. You tell me,
you know better.
Margus
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On Tue, 13 Apr 1999 22:22:40 +0300, Margus Ramst <mar### [at] peak edu ee> wrote:
>OO wasn't exactly what I was talking about here. More along the lines of the
>modular design concept. While I am by no means familiar with the
>technicalities, I am under the impression that integrating new features
>(processes, objects etc.) is more difficult than it need be. You tell me,
>you know better.
Adding new objects, assuming you can provide the necessary functionality
for them, is simplicity itself. Likewise with new textures and warps. The
only thing most people might have trouble with is adding keywords to the
parser, but even that isn't really all that hard if you follow the existing
examples. Unless you're doing something like the isosurface patch that
makes massive parser changes, but even those hook into the existing code
in relatively few places.
Adding new functions, like trace() or min_extent(), is fairly easy. Again,
these are small parser changes that are easy once you know where to make
them.
Adding new global functionality like U-V mapping or displacement mapping or
nonlinear transforms, however, requires a change to every object type. Even
in a more modular world, this would still be the case. If I need to add a
"give me a triangle mesh" function to the base class, I will either need
a default implementation of it, or someone will have to add it to each and
every derived class. From a non-OO, modular standpoint: if I add that function
to what's expected from an object, every plugin will have to change. The
issue here, for those who have worked with COM or CORBA or Java, is that the
*interface* to an object is changing and requires all implementations of that
interface to change. Nathan has gone the default-implementation route with
the UV patch, and I suspect the displacement stuff, if it is ever added, will
be done similarly. That part could be made easier with a modular or OO
approach, in that you'd only have to change the nondefault implementations.
I don't see any way of making the rest easier, though.
Other patches like dispersion and photon mapping and blurred reflection and
so forth are fairly localized already to whatever piece of functionality
they affect (all lighting code, in these cases.) Modularity wouldn't help
much there, because the code in question is already in only one place.
Another (potential) kind of patch adds functionality to the language itself,
like the old #macro patch. These are purely parser changes, and some are
easier than others. I don't know of any current examples of such patches.
Finally, there are patches like my motion-blur patch that change lots of
fundamental data structures. Modularity won't help much there.
Perhaps what we need more than modularity is documentation of how patches are
done. I think DSW is working on that, but I'm sure he could use our help.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Margus Ramst" <mar### [at] peak edu ee> writes:
> Roland Mas wrote in message ...
[...]
> > Variable IOR means bent rays, which is kind of a huge piece of work
> >to do. I agree on the use of these features, though.
> >
>
>
> I suppose this _could_ be simulated with volume sampling, like in
> media. But that's my uneducated guess.
Yes, sure. But it would anyway imply a huge lot of calculations,
because the ray is bent all along its path and not just on a few
points of it. Which means: a *big* number of samples. Each of them
needing to calculate a ior local gradient. Sloooow.
Would be nice, though :-) For all of us who had to model the path of
a laser in a fiber, by writing a C program...
--
Roland Mas
Autumn leaves are brown... And the sky is gray...
-- California Dreaming (The Mamas and the Papas)
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Ron Parker wrote in message <3713af5d.0@news.povray.org>...
>
>Perhaps what we need more than modularity is documentation of how patches
are
>done. I think DSW is working on that, but I'm sure he could use our help.
This would indeed be invaluable. I only wish I could help. But I'm afraid I
can't. Until it is complete - or I manage to familiarize myself with the
inner workings of POV in some other manner - I will defer any further
arguments over the goods and ills of POV's sructure.
I still think a plugin architecture would greatly facilitate implementing
many new features. But I will not start this dispute all over again.
Margus
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Margus Ramst wrote:
>
> I still think a plugin architecture would greatly facilitate implementing
> many new features. But I will not start this dispute all over again.
And I still agree with you and later this summer might start working on
something. (I think Ron was going to play with something related to this
too).
-Nathan
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
For all of you who dislike the concept of object oriened POV script, I think
one thing should be clarified. At least some of us are proposting a semi-
object oriented language... where we implement the encapsulation and (in a
wierd way) inheritence, but NOT data hiding. That means you can access
parts of an object but you don't have to do so through methods.
The main reason I want to do this is because I think that for POV go get
better for animation, it needs to be able to do an entire animation from
a single script WITHOUT RE-PARSING BETWEEN FRAMES!!!!!
How would this look?
-----------------
#declare myCam = camera{...}
#include "big_tree_macro_takes_forever_to_parse.inc"
#declare myTree = object{MakeTree() translate ...}
#declare fr=0;
#while (fr<10)
myCam.translate <...> // translate acts like a method
#declare myCam.angle = ...; // angle acts like a property
clearFrame() // special function that clears all objects from scene
global_settings{...} // global settings for this frame
// now we put our objects in the scene
camera{ myCam } // use the new camera settings
object{ myTree } // and no need to re-parse the tree
// now we render
RenderFrame(fr) // a special function that renders the frame (filename
// based on the parameter
#declare fr=fr+1;
#end
--------------------
Now, I want to make a comment about that statement were translate acted like
a method. You see, in some ways I'm beginning to think that POV should
follow the same ideology as Perl. The April 1999 Communications of the ACM
has a great article by Larry Wall (original author of Perl) called "The
Origin of the Camel Lot in the Breakdown of the Bilingual Unix".
The article talkes about the Perl community (which reminded me much of the
POV community). Larry Wall also talked about how Perl was designed to be
a language like a human spoken/written language... one that is kind of
ad-hoc and NOT minimalistic like so many other languages.
A quote from the article: "People who hype orthogonality should be
sentanced to draw everything with an Etch-a-Sketch."
I found the article very enlightening, since I have in the past been
pro-minimalistic, thinking a grand-unified-appoach would be best.
So, maybe we should let the POV scripting language evolve in a way that,
as somebody else mentioned, makes sense to the humans, and then we'll
force the computer to understand. ;-)
In a previous post I mentioned that I would appreciate a re-write of the POV
language... but as I've thought about it more, the POV scene description
languate is pretty good... some of the things that have been suggested
would actually be going BACK to POV version 1.0 syntax... it must have
been changed for a reason (because people didn't like it the old way).
I've done quite a bit of programming inside POV, and it is really
relatively easy to add functionality to POV. Adding new keywords to
the parser is really simple, IMHO. Adding new objects is also
relatively easy (and orthogonal... yes, I still have quite a bit of OO
blood in me).
Adding the photon map was alot easier that many of you probably think it
was. It required very localized changes to the core of POV. And I
really doubt if the photon mapping could have been implemented via a
plug-in of any sort unless someone had thought of it when designing the
plug-in interface.
Well, that's my current thoughts on the topic.
One last thing... I really don't like typing #declare... I've got some
ideas on how to 'fix' this, but they should go in a different thread.
-Nathan
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Hey, Chris Young says that adding an optional double_sided shaded keyword to
finish is being considered. If it could be given an amount, you got yourself
some translucency!
-Mike
Lance Birch wrote:
> I agree with all your thoughts... nuf said :)
>
> Oh, and add translucency to the list of new features ;-) he he he Sorry,
> but I just couldn't resist it!
>
> --
> Lance.
>
> ---
> For the latest 3D Studio MAX plug-ins, images and much more, go to:
> The Zone - http://come.to/the.zone
> For a totally different experience, visit my Chroma Key Website:
> Colorblind - http://www.fortunecity.com/skyscraper/parallax/359/colorblind
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
er... sure about that? I don't know, wouldn't that just mean that the
object has kind of like a double sided thickness? I mean, translucency is
something that carries THROUGH the object...
--
Lance.
---
For the latest 3D Studio MAX plug-ins, images and much more, go to:
The Zone - http://come.to/the.zone
For a totally different experience, visit my Chroma Key Website:
Colorblind - http://www.fortunecity.com/skyscraper/parallax/359/colorblind
Mike wrote in message <371### [at] aol com>...
>Hey, Chris Young says that adding an optional double_sided shaded keyword
to
>finish is being considered. If it could be given an amount, you got
yourself
>some translucency!
>
>-Mike
>
>Lance Birch wrote:
>
>> I agree with all your thoughts... nuf said :)
>>
>> Oh, and add translucency to the list of new features ;-) he he he
Sorry,
>> but I just couldn't resist it!
>>
>> --
>> Lance.
>>
>> ---
>> For the latest 3D Studio MAX plug-ins, images and much more, go to:
>> The Zone - http://come.to/the.zone
>> For a totally different experience, visit my Chroma Key Website:
>> Colorblind -
http://www.fortunecity.com/skyscraper/parallax/359/colorblind
>
>
>
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Lance Birch wrote:
>
> er... sure about that? I don't know, wouldn't that just mean that the
> object has kind of like a double sided thickness? I mean, translucency is
> something that carries THROUGH the object...
What do you mean by "through" the object? Maybe you do want media?
Or maybe what you're looking for is a mixture of double-sided shading
and a bit of filter/transparancy (or no_shadow).
I think that the double_sided keyword should take a float value that is
used to attenuate the shading for the 'wrong' side. That would add a
bit more flexibility.
-Nathan
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
That's true but it's not the right effect, and media takes too long to
render (while it can be used to make the effect). What I was saying is just
make it an entirely separate feature to media while being in the interior
statement... (because it's like media, but it'd be a separate algorithm to
calculate it...)
--
Lance.
---
For the latest 3D Studio MAX plug-ins, images and much more, go to:
The Zone - http://come.to/the.zone
For a totally different experience, visit my Chroma Key Website:
Colorblind - http://www.fortunecity.com/skyscraper/parallax/359/colorblind
Nathan Kopp wrote in message <3714E69D.6DD677E7@Kopp.com>...
>Lance Birch wrote:
>>
>> er... sure about that? I don't know, wouldn't that just mean that the
>> object has kind of like a double sided thickness? I mean, translucency
is
>> something that carries THROUGH the object...
>
>What do you mean by "through" the object? Maybe you do want media?
>Or maybe what you're looking for is a mixture of double-sided shading
>and a bit of filter/transparancy (or no_shadow).
>
>I think that the double_sided keyword should take a float value that is
>used to attenuate the shading for the 'wrong' side. That would add a
>bit more flexibility.
>
>-Nathan
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
> The main reason I want to do this is because I think that for POV go get
> better for animation, it needs to be able to do an entire animation from
> a single script WITHOUT RE-PARSING BETWEEN FRAMES!!!!!
>
Yeah!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
This is what I meant by making it adjustable. Double_sidedness just mean you
can see the shading of the other side through the object, right? You should be
able to use filter along with it.
It all depends on how far they go with it. Perhaps it could be made into
something like irid, where you would get brackets and all kinds of cool stuff.
How about:
double_sided {
amount [float]
color [vector]
}
Filtering and transmittence should be part of the color and be seperate from the
double_sided keyword. Translucency is just filtered opacity really. The color
would specify the color of the lighted portion of the other side of the
surface. The amount would be the brightness. I don't think a shadow color
would be neccesary, but maybe that could be thrown in.
-Mike
> I think that the double_sided keyword should take a float value that is
> used to attenuate the shading for the 'wrong' side. That would add a
> bit more flexibility.
>
> -Nathan
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
I agree with what you said except for:
> Translucency is just filtered opacity really.
Because it isn't... remember translucency is depth dependant...
--
Lance.
---
For the latest 3D Studio MAX plug-ins, images and much more, go to:
The Zone - http://come.to/the.zone
For a totally different experience, visit my Chroma Key Website:
Colorblind - http://www.fortunecity.com/skyscraper/parallax/359/colorblind
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Lance Birch wrote in message <3715eac5.0@news.povray.org>...
>I agree with what you said except for:
>
>> Translucency is just filtered opacity really.
>
>Because it isn't... remember translucency is depth dependant...
>
Filter and transmit would be, too, in RL. In POV you just have to add light
attenuation to the object for this to happen.
Margus
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
True, but the double_sidedness would be a fast trick. Depth could be
simulated with nothing more that a varied illumination from the other side.
What I'm thinking of is like a leaf or a curtain. If there was a way to
specify how much of the illuminated side of the surface shows through, things
like the viens in a leaf or the weave in cloth could be simulated.
Perhaps an opacity_map could be specified within double_sided {} :)
-Mike
Lance Birch wrote:
> I agree with what you said except for:
>
> > Translucency is just filtered opacity really.
>
> Because it isn't... remember translucency is depth dependant...
>
> --
> Lance.
>
> ---
> For the latest 3D Studio MAX plug-ins, images and much more, go to:
> The Zone - http://come.to/the.zone
> For a totally different experience, visit my Chroma Key Website:
> Colorblind - http://www.fortunecity.com/skyscraper/parallax/359/colorblind
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
> Adding new objects, assuming you can provide the necessary functionality
> for them, is simplicity itself.
As I see it, it's not the fact the POV in written in
C that makes it troublesome to provide a patch. It's
the monolithic parser - you can't add parsing functionality
without hitting the code for every other type of
primitive. I'd like to see some work towards
modularising the parser. I think it can be done...
--
Nigel Stewart (nig### [at] eisa net au) http://www.eisa.net.au/~nigels/
Postgrad Research Student, RMIT University, Melbourne, Australia
All extremists should be taken out and shot.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On 13 Apr 1999 16:55:57 -0500, par### [at] my-dejanews com (Ron Parker)
wrote:
[snip]
>Finally, there are patches like my motion-blur patch that change lots of
>fundamental data structures. Modularity won't help much there.
>
Any chance of coercing you into putting your web site in a sig line?
I'm going to have to start searching for this motion-blur patch and
docs.. Hmm, will check Twyst's site first...
Cheers,
Cliff Bowman
Why not pay my 3D Dr Who site a visit at
http://www.geocities.com/Area51/Dimension/7855/
PS change ".duffnet" to ".net" if replying via e-mail
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On Wed, 14 Apr 1999 00:20:46 -0400, Nathan Kopp <Nat### [at] Kopp com>
wrote:
>For all of you who dislike the concept of object oriened POV script, I think
>one thing should be clarified. At least some of us are proposting a semi-
>object oriented language... where we implement the encapsulation and (in a
>wierd way) inheritence, but NOT data hiding. That means you can access
>parts of an object but you don't have to do so through methods.
>
>The main reason I want to do this is because I think that for POV go get
>better for animation, it needs to be able to do an entire animation from
>a single script WITHOUT RE-PARSING BETWEEN FRAMES!!!!!
>
Oh boy. Calms down to avoid calling Nathan "God". OK, I'm ready.
You know, that idea isn't half bad. I could seriously make use of that
:)
Cheers,
Cliff Bowman
Why not pay my 3D Dr Who site a visit at
http://www.geocities.com/Area51/Dimension/7855/
PS change ".duffnet" to ".net" if replying via e-mail
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On Wed, 12 May 1999 18:26:43 GMT, Cliff Bowman wrote:
>On 13 Apr 1999 16:55:57 -0500, par### [at] my-dejanews com (Ron Parker)
>wrote:
>
>[snip]
>>Finally, there are patches like my motion-blur patch that change lots of
>>fundamental data structures. Modularity won't help much there.
>>
>Any chance of coercing you into putting your web site in a sig line?
>I'm going to have to start searching for this motion-blur patch and
>docs.. Hmm, will check Twyst's site first...
You'll find it there. It's not on my website anyway. But before you
can convince me to put my web site in a sig line, you'll have to convince
me to have a sig line.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On 12 May 1999 17:40:35 -0500, par### [at] fwi com (Ron Parker) wrote:
>On Wed, 12 May 1999 18:26:43 GMT, Cliff Bowman wrote:
>>On 13 Apr 1999 16:55:57 -0500, par### [at] my-dejanews com (Ron Parker)
>>wrote:
>>
[snip]
>>Any chance of coercing you into putting your web site in a sig line?
>>I'm going to have to start searching for this motion-blur patch and
>>docs.. Hmm, will check Twyst's site first...
>
>You'll find it there. It's not on my website anyway. But before you
>can convince me to put my web site in a sig line, you'll have to convince
>me to have a sig line.
Well - I was kind of hoping for a two-in one deal. You know, get you
to use your web site *as* your sig line.
Any news on when the 3.1e sources might be avilable for "patchers" to
tack their code into? Not that I'm finding 3.1a and 3.1e render scenes
differently (not much they don't!)
Cheers,
Cliff Bowman
Why not pay my 3D Dr Who site a visit at
http://www.geocities.com/Area51/Dimension/7855/
PS change ".duffnet" to ".net" if replying via e-mail
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Nathan Kopp <Nat### [at] Kopp com> wrote in message
news:370CBD92.582CBC9E@Kopp.com...
>
> >
> > Instead of multiple unique objects to handle, it's suggested to use a
> > single consistent object model for everything from geometry to
> > textures.
>
> I disagree. I think a distinction must be made between objects,
materials,
> pigments, finishes, ...
>
> Looking at it from OO again, "a sphere HAS A material" is true, not
> "a sphere IS A material". However, "a sphere IS A object" would be
> correct.
>
This true, but it's also valid to say :
"a sphere IS_A scene_element"
"a material IS_A scene_element"
and you then can have :
"a sphere HAS_A material"
Just because two objects are derived from the same root object it
doesn't necessarily mean that they have an IS_A relationship.
--
Scott Hill : sco### [at] cyberlife co uk
Software Engineer (and all round nice guy)
Author of Pandora's Box : Watch this space.
Work homepage : http://www.cyberlife.co.uk
"We will decide what the news is. The news is what we tell you it is." - The
Fox TV network.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Anthony Bennett <ben### [at] panama phoenix net> wrote in message
news:371### [at] panama phoenix net...
> I actually have a friend with 2.5. But, I don't know, I just don't like
the
> interface, never found it friendly. Now, Bryce and Lightwave, that is a
nice
> interface! You understand immediately how to use them. Too bad I don't
have a
> couple thousand just lying around...
Too bad somebody isn't willing to give me £25K a year for writing
Pandora's Box (my not-so-soon to be freeware modeller for POV).
I know I'm biased, but boy is it looking like it's going to be cool (If
it ever actually gets done (looking less and less likely as "the new job"
keeps getting in the way)). Nice intuitive UI (it'll work just the way _you_
want to it work!) and a powerful, yet flexible (and probably
over-ambitious), feature set.
(Details on the web just as soon as a) I get my self a web-site and b)
they're ready for publishing (things are still too fluid for that)).
--
Scott Hill : sco### [at] cyberlife co uk
Software Engineer (and all round nice guy)
Author of Pandora's Box : Watch this space.
Work homepage : http://www.cyberlife.co.uk
"We will decide what the news is. The news is what we tell you it is." - The
Fox TV network.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|
 |