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 |