Re: [info-performer] One more tessellation problem

Date view Thread view Subject view Author view

From: Alexandre Naaman (naaman++at++laplace.engr.sgi.com)
Date: 04/06/2004 11:35:47


On Mon, 5 Apr 2004, Jaroslav Sinecky wrote:

Hi Jaroslav,

 Well, at first glance this looks like the good old vertex affinity
problem which we first saw back in the OpenGL Optimizer days. Somewhere in
the process of generating monotone polygons for the triangulation things
seem to go awry. I've filed a bug (#912524) to address this problem. I've
seen this problem in the past but have had some difficulty in reproducing
it; thank you for the simple test case :) (all of my previous test cases
could only be reproduced with very complex trim loops)

 Note that you can demonstrate the problem more easily by saving the file
without the tessellated geometry and then using the ctol loader as
follows:

        perfly simple.pfb.5e-5.ctol (generates bogus tessellation)

        perfly simple.pfb.6e-6.ctol (tessellation ok)

A+,

Alex.

> Hi all,
>
> /* I'm sending this again because it seems the first mail didn't make it
> through. I'm putting link to piece.pfb instead of attaching it. Sorry if it
> arrives twice at the end. */
>
> I'm using the performer tessellator exhaustively, it works mostly well, but
> there are cases when I get some uncorrect artifacts. Its usually tedious to
> track where the problem actually is and can be also in surfaces/trim curves
> definitions. Anyway I have one case which is quite transparent (and visualy
> more enoying), I would be glad if someone can have a look at it...
>
> I send a piece.pfb enclosed with two pfNurbSurfaces, in the uv-parametrical
> space each has a simple trim loop in form of unit square (0,0)->(1,1). Now
> when I load this file, add topological information (the two surfaces have
> one common boundary) and tessellate it, there is a very visible tessellation
> artifact.
> Note: this happens only with common boundary defined and only for some
> concrete chordal tolerance values.
>
> Jaroslav
>
> ps. Pf3.1, Windows XP.
>
> Here is the code:
>
> // Load the file and get two surfaces
> pfGroup* root = (pfGroup*)pfdLoadFile("piece.pfb");
> pfParaSurface* surf1 = (pfParaSurface*)root->getChild(0);
> pfParaSurface* surf2 = (pfParaSurface*)root->getChild(1);
>
> // Add topology
> pfTopo* topo = new pfTopo();
> topo->addSurface(surf1);
> topo->addSurface(surf2);
>
> // Common boudary
> pfBoundary* b = new pfBoundary();
> topo->addBoundary(b);
> b->addEdge(0, surf1, 0, 0);
> b->addEdge(1, surf2, 0, 2);
> surf1->getTrimCurve(0, 0)->setBoundaryDir(1);
> surf2->getTrimCurve(0, 2)->setBoundaryDir(-1);
>
> // Tessellate
> pfTessParaSurfaceAction* tessSurf = new pfTessParaSurfaceAction();
> tessSurf->setChordalDevTol(5e-5f); // With these values, all is ok:
> 5e-4f, 5e-6f
> pfdTessellateGeometry(root, tessSurf);
>
> // Now can store and open in perfly to see what happened
> pfdStoreFile(root, "simple.pfb");
>
> the link to piece.pfb: http://home.tiscali.cz/pusher/piece.pfb
>
> -----------------------------------------------------------------------
> List Archives, Info, FAQ: http://www.sgi.com/software/performer/
> Open Development Project: http://oss.sgi.com/projects/performer/
> Submissions: info-performer++at++sgi.com
> Admin. requests: info-performer-request++at++sgi.com
> -----------------------------------------------------------------------
>

A+,

Alexandre.

--
Alexandre Naaman - naaman++at++sgi.com


Date view Thread view Subject view Author view

This archive was generated by hypermail 2b29 : Tue Apr 06 2004 - 11:38:10 PDT