> Martin, > > Using depthorder is creative. I'd like to point out that depthorder is > only an approximation to what should be "hidden surfaces". I worked on > many aspects of gnuplot. Although gnuplot does have a hidden line > algorithm (i.e., it can break a mesh into line segments--based on > intersections of lines--and discard those segments which are hidden by a > surface), it doesn't have an algorithm that breaks surfaces into > triangles--based on intersections of surfaces--and discard hidden surfaces. > So depthorder is an approximation that quite often has patch that seems > out of place, sticking through a surface it shouldn't, etc. >
Hi Daniel, I am absolutely aware of that, this is also true with all opengl implementations when it comes to transparent surfaces if triangles or quadrilaterals intersect each other. The trivial feature I have shown just works of course with the triangle meshes created by isosurface (their topology is by design of the algorithm created in a way that different triangles cannot intersect (except the common edges), this is a consequence from the mathematical property of a n-1 dimensional manifold defined by F(x) = const, where x in R^n and F(x) in R and F regular enough and the fact that the voxels in the cube are assumed to be mutually disjoint except the common faces). > I've always felt motivated to write a hidden surface algorithm but hadn't > found the time given how much work that would require. Even the syntax > "depthorder" would be nice to deprecate, and instead simply refer to it as > "hidden". > The problem with a general hidden surface algoritm will be (just an assumption) the runtime complexity, it may be takes not into account such special properties like the one mentioned above, that a triangle mesh is by design not selfintersecting and then a general algorithm leads to an exhaustive consumption of memory and cpu power in cases where it is not neccessary. Comparable to the situation if you use delaunay triangulation to triangulate a large rectangular grid compared to the solution where you simply define two triangles per cell. May be I am wrong and there are high performant general algorithms available now. I wrote what was my experience more than ten years ago when I worked with things like that (especially with opengl and transparency and ray casting through domains bounded by not convex and possibly selfintersecting triangle meshes), so I am surely not an expert. And please don't understand me wrong a general hidden line and hidden surface algorithm would be a really wonderfull thing, but also specialized solutions which take care of specialized input where a high performant solution is appropriate. > It sounds like David Bateman has a lot of knowledge about 3D visualization. > Perhaps a long term project could be started for gnuplot, but it would be > a while before I could work on such a project. > > Dan > David, is there place you can point me to see what you tried exactly for general not triangular patches maybe it can help me to get a new idea (or to give up)? Then in addition a question to everyone: Isn't it better to find a solution for gnuplot which works with triangles (and may be quadrilaterals) for the moment as intermediate step instead of a simple error message telling us that nothing is possible? At least it would enable us to implement things like "trisurf" and "patch" for triangle meshes (allways with the knowledge in mind that selfintersections may lead to disturbing visual effects if the triangles are not very small). - mh ------------------------------------------------------------------------------ Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H _______________________________________________ Octave-dev mailing list Octave-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/octave-dev