One embodiment of the present invention sets forth a technique for smoothing boundaries associated with meshes of primitives. The technique involves receiving a mesh of primitives that has a mesh boundary and an initial surface, identifying a first vertex associated with the mesh boundary and having a first location, and identifying a second vertex having a second location and a third vertex having a third location. Both the second vertex and third vertex are proximate to the first vertex. The technique further involves determining a fourth location based on the second location and the third location, projecting the fourth location onto the initial surface to determine a fifth location, and moving the first vertex to the fifth location.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A computer-implemented method for smoothing boundaries associated with meshes of primitives, the method comprising: receiving a mesh of primitives that has a mesh boundary and a three-dimensional initial surface that represents a three-dimensional surface of the mesh of primitives prior to performing a boundary smoothing operation; performing one or more iterations of the boundary smoothing operation on the mesh boundary, wherein each iteration includes: identifying a first vertex associated with the mesh boundary and having a first location, identifying a second vertex having a second location and a third vertex having a third location, wherein both the second vertex and third vertex are proximate to the first vertex, determining a fourth location based on the second location and the third location, and moving the first vertex to the fourth location; determining an inflation direction that is substantially perpendicular to the mesh boundary at the fourth location; determining a fifth location based on the inflation direction, the fourth location, and an inflation distance that is equal to a distance between the first location and the fourth location; and moving the first vertex from the fourth location to the fifth location.
2. The method of claim 1 , wherein determining the fourth location is further based on a smoothing strength factor.
3. The method of claim 2 , wherein determining the fourth location comprises: determining an average location based on the second location and the third location; determining a first distance between the average location and the first location; multiplying the first distance by the smoothing strength factor to determine a weighted distance; and adding the weighted distance to the first location to determine the fourth location.
4. The method of claim 1 , wherein the mesh boundary comprises a closed loop of triangle edges.
5. The method of claim 1 , wherein the second vertex and third vertex are associated with the mesh boundary.
6. The method of claim 1 , further comprising performing a mesh refinement pass on a plurality of primitives that are proximate to the mesh boundary.
7. The method of claim 1 , further comprising: performing a smoothing operation on a plurality of vertices proximate to the mesh boundary to determine a first plurality of smoothed locations; performing a three-dimensional projection operation to project the first plurality of smoothed locations onto the three-dimensional initial surface of the mesh of primitives to determine a second plurality of smoothed locations; and moving the plurality of vertices to the second plurality of smoothed locations.
8. A non-transitory computer-readable storage medium including instructions that, when executed by a processor, cause the processor to smooth boundaries associated with meshes of primitives by performing the steps of: receiving a mesh of primitives that has a mesh boundary and a three-dimensional initial surface that represents a three-dimensional surface of the mesh of primitives prior to performing a boundary smoothing operation; performing one or more iterations of the boundary smoothing operation on the mesh boundary, wherein each iteration includes: identifying a first vertex associated with the mesh boundary and having a first location, identifying a second vertex having a second location and a third vertex having a third location, wherein both the second vertex and third vertex are proximate to the first vertex, determining a fourth location based on the second location and the third location, and moving the first vertex to the fourth location; determining an inflation direction that is substantially perpendicular to the mesh boundary at the fourth location; determining a fifth location based on the inflation direction, the fourth location, and an inflation distance that is equal to a distance between the first location and the fourth location; and moving the first vertex from the fourth location to the fifth location.
9. The non-transitory computer-readable storage medium of claim 8 , wherein determining the fourth location is further based on a smoothing strength factor.
10. The non-transitory computer-readable storage medium of claim 9 , wherein determining the fourth location comprises: determining an average location based on the second location and the third location; determining a first distance between the average location and the first location; multiplying the first distance by the smoothing strength factor to determine a weighted distance; and adding the weighted distance to the first location to determine the fourth location.
11. The non-transitory computer-readable storage medium of claim 8 , wherein the mesh boundary comprises a closed loop of triangle edges.
12. The non-transitory computer-readable storage medium of claim 8 , wherein the second vertex and third vertex are associated with the mesh boundary.
13. The non-transitory computer-readable storage medium of claim 8 , further comprising performing a mesh refinement pass on a plurality of primitives that are proximate to the mesh boundary.
14. The non-transitory computer-readable storage medium of claim 8 , further comprising: performing a smoothing operation on a plurality of vertices proximate to the mesh boundary to determine a first plurality of smoothed locations; performing a three-dimensional projection operation to project the first plurality of smoothed locations onto the three-dimensional initial surface of the mesh of primitives to determine a second plurality of smoothed locations; and moving the plurality of vertices to the second plurality of smoothed locations.
15. A computing device, comprising: a memory including instructions; and a processor that is coupled to the memory and, when executing the instructions, is configured to smooth boundaries associated with meshes of primitives by: receiving a mesh of primitives that has a mesh boundary and a three-dimensional initial surface that represents a three-dimensional surface of the mesh of primitives prior to performing a boundary smoothing operation; performing one or more iterations of the boundary smoothing operation on the mesh boundary, wherein each iteration includes: identifying a first vertex associated with the mesh boundary and having a first location, identifying a second vertex having a second location and a third vertex having a third location, wherein both the second vertex and third vertex are proximate to the first vertex, determining a fourth location based on the second location and the third location, and moving the first vertex to the fourth location; determining an inflation direction that is substantially perpendicular to the mesh boundary at the fourth location; determining a fifth location based on the inflation direction, the fourth location, and an inflation distance that is equal to a distance between the first location and the fourth location; and moving the first vertex from the fourth location to the fifth location.
16. The computing device of claim 15 , wherein determining the fourth location comprises: determining an average location based on the second location and the third location; determining a first distance between the average location and the first location; multiplying the first distance by a smoothing strength factor to determine a weighted distance; and adding the weighted distance to the first location to determine the fourth location.
17. A non-transitory computer-readable storage medium including instructions that, when executed by a processor, cause the processor to perform the steps of: receiving a mesh of primitives that has a mesh boundary and a three-dimensional initial surface that represents a three-dimensional surface of the mesh of primitives prior to performing a boundary smoothing operation; identifying a first vertex associated with the mesh boundary and having a first location; identifying a second vertex having a second location and a third vertex having a third location, wherein both the second vertex and third vertex are proximate to the first vertex; determining a fourth location based on the second location and the third location; moving the first vertex to the fourth location; determining an inflation direction that is substantially perpendicular to the mesh boundary at the fourth location; determining a fifth location based on the inflation direction, the fourth location, and an inflation distance that is equal to a distance between the first location and the fourth location; and moving the first vertex from the fourth location to the fifth location.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
May 13, 2013
September 24, 2019
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.