RE: [Algorithms] "N-Patches" (ATI/DX8 triangle bezier heuristic)
Brought to you by:
vexxed72
|
From: Jason M. (A. Technologies) <v-j...@mi...> - 2000-07-26 23:58:00
|
Charles writes:
> I worked on this for
> a while, and decided it wasn't such a hot thing to do, because
> you can't even guarantee G1 continuity
One key aspect of N-Patches that we haven't explained well (and which
invariably generates these kinds of questions) is that normals for the new
vertices are computed by either linear or quadratic interpolation. That
is, while the position of the surface is not G1, the normals are, which is
as good as being C1 for rendering purposes (both lighting and environment
mapping). Since we're not machining automobile fenders, but, rather,
rendering video games, we have found this to be an acceptable approximation.
Indeed, it is what will allow this patch type to be implemented in Silicon
in the near term.
> So, first of all, I remember hearing that this heuristic was
> invented by the wise Charles Loop. Is that correct?
He had some input into the process. Specifically, the denominators in
the equation for generating the middle control point from the other 8
control points was tuned by him. That equation:
middle = (SumOfBorderPoints/4) - (SumOfOriginalVertices/6)
Aside from that, this is an ATI-developed scheme. People have done
similar tricks in the past, but the N-Patch mechanism for generating the
edge control points (refer to the GDC slides Charles references) is novel as
far as we are aware.
> Are there any papers on this?
Not yet. We're working on that.
I'm really pleased to see so much interest in using these primitives.
Please be ready to take advantage of these by understanding and coding for
them now. Feel free to send any further questions my way.
On a related note, while the tools exist to edit polygonal meshes, tool
vendors have not allowed you to edit normals directly. With N-Patches
coming along, I think this would be an outstanding enhancement to your
authoring tools (in addition to providing an N-Patch modifier or previewer).
If you're of like mind, petition your tool vendor today. While we are able
to write N-Patch previewer plug-ins (let me know if you want the binary and
source for the MAX plug-in we've written), the lack of native support for
actual vertex normals in the tools is what hinders normal-editing
functionality, thus the impetus is on the tool vendors to help the community
out in this way. Do lobby them if this is something you care about.
-JasonM at ATI
|