Claims
- 1. A method, comprising:
chopping pieces of two Catmull-Clark bases meshes which correspond to pieces of a Boolean surface computed from limit surfaces of the two base meshes; creating new edges on the chopped pieces to create quadrilaterals and triangles; and merging the chopped pieces with the new edges into a Boolean base mesh which approximates the Boolean surface.
- 2. A method as recited in claim 1, wherein a Boolean operation used to create the Boolean surface is scoring.
- 3. A method as recited in claim 1, wherein a Boolean operation used to create the Boolean surface is an intersection.
- 4. A method as recited in claim 1, wherein a Boolean operation used to create the Boolean surface is a difference.
- 5. A method as recited in claim 1, wherein a Boolean operation used to create the Boolean surface is a union.
- 6. A method as recited in claim 1, wherein the base meshes can subdivide by the Catmull-Clark subdivision rules.
- 7. A method as recited in claim 1, wherein the chopping the pieces is-performed directly onto the base meshes without refinement.
- 8. A method as recited in claim 1, further comprising refitting vertices on the Boolean base mesh which subdivides into a limit surface which better fits the Boolean surface.
- 9. A method as recited in claim 8, further comprising calculating an additional vertex to refit by flattening influencing vertices of a chosen vertex and mapping a relaxed vertex to the Boolean base mesh, the relaxed vertex calculated by applying subdivision rules to the flattened influencing vertices.
- 10. A method as recited in claim 9, further comprising refitting the Boolean base mesh using the relaxed vertex.
- 11. A method as recited in claim 1, wherein during the creating, quadrilaterals are preferred over triangles.
- 12. A method as recited in claim 11, wherein the quadrilaterals created are convex quadrilaterals.
- 13. A method, comprising:
identifying selected faces calculated from intersection curves formed by intersecting two Catmull-Clark subdivision surfaces created from two base meshes, the selecting based on a selected Boolean operation; chopping the two base meshes directly to create base mesh pieces which form the selected faces; creating edges on the base mesh pieces to create quadrangular faces; merging the base meshes into a single Boolean base mesh.
- 14. A method as recited in claim 13, further comprising refitting the Boolean base mesh to better fit the Boolean base mesh's limit surface with the selected faces.
- 15. A method as recited in claim 14, wherein the refitting calculates a relaxed vertex by flattening part of the Boolean base mesh and applying subdivision rules to the flattened part.
- 16. A method as recited in claim 15, wherein the relaxed vertex is mapped from the flattened part to the Boolean base mesh.
- 17. A method as recited in claim 13, wherein the faces are calculated by generating cubic bezier surfaces.
- 18. A method as recited in claim 13, wherein the merging merges pieces of the base mesh at intersection points of the faces.
- 19. A method as recited in claim 13, wherein the Boolean operation comprises a union operation.
- 20. A method as recited in claim 13, wherein the Boolean operation comprises a difference operation.
- 21. A method as recited in claim 13, wherein the Boolean operation comprises an intersection operation.
- 22. A method as recited in claim 13, wherein the Boolean operation comprises a scoring operation.
- 23. A method as recited in claim 13, wherein the identifying computes faces at intersections of the two subdivision surfaces.
- 24. A method as recited in claim 23, wherein the chopping chops the base mesh pieces at endpoints which have limit points at the intersections.
- 25. A method for creating a Catmull-Clark Boolean base mesh which subdivides to a Boolean surface which represents a Boolean operation of two subdivided surfaces generated from two input base meshes, comprising:
chopping the input base meshes into pieces containing endpoints having limit points at intersection points of the two subdivided surfaces; modifying the chopped pieces to create pieces which can subdivide using Catmull-Clark subdivision rules; and merging the modified chopped pieces to create the Catmull-Clark Boolean base mesh.
- 26. A method comprising computing a Catmull-Clark Boolean base mesh which subdivides into a subdivision surface which represents a Boolean operation applied to two subdivision surfaces created from two respective input base meshes, the Boolean base mesh not being computed by performing the Boolean operation directly on the two input base meshes themselves.
- 27. A method comprising:
traversing a higher level vertex on a Boolean base mesh; identifying and flattening influencing vertices influencing the traversed vertex; and mapping a new vertex, computed by applying subdivision weights to the flattened influencing vertices, to the Boolean base mesh.
- 28. A method as recited in claim 27, further comprising:
refitting the Boolean base mesh using the new vertex.
- 29. A method as recited in claim 27, further comprising repeating the traversing, identifying, and mapping for a plurality higher level vertices for the Boolean base mesh identified according to subdivision rules.
- 30. A method as recited in claim 29, further comprising refitting the Boolean base mesh using a plurality of mapped new vertices.
- 31. A method, comprising:
chopping pieces of two Catmull-Clark bases meshes which correspond to pieces of a Boolean surface computed from limit surfaces of the two base meshes; creating new edges on the chopped pieces to create quadrilaterals and triangles; and merging the chopped pieces with the new edges into a Boolean base mesh which approximates the Boolean surface; traversing a higher level vertex on a Boolean base mesh; identifying and flattening influencing vertices influencing the traversed vertex; mapping a new vertex, computed by applying subdivision weights to the flattened influencing vertices, to the Boolean base mesh; repeating the traversing, identifying, and mapping for a plurality higher level vertices for the Boolean base mesh identified according to subdivision rules; refitting the Boolean base mesh using a plurality of mapped new vertices, wherein a Boolean operation used to create the Boolean surface is one of scoring, intersection, difference, union, wherein the chopping the pieces is performed directly onto the original base meshes, wherein the faces are calculated by generating cubic Bezier surfaces, wherein the merging merges pieces of the base mesh at intersection points of the limit surfaces, wherein the base meshes comprise quadrilaterals, wherein during the creating, quadrilaterals are preferred over triangles, wherein the quadrilaterals created are convex quadrilaterals.
- 32. A method, comprising:
flattening vertices of a base mesh; mapping a vertex computed by applying subdivision rules to the flattened vertices onto the base mesh; and refitting the base mesh using the mapped vertex.
- 33. A computer readable storage medium controlling a computer by,
chopping pieces of two Catmull-Clark bases meshes which correspond to pieces of a Boolean surface computed from limit surfaces of the two base meshes; creating new edges on the chopped pieces to create quadrilaterals and triangles; and merging the chopped pieces with the new edges into a Boolean base mesh which approximates the Boolean surface.
- 34. An apparatus, comprising:
a chopping module chopping pieces of two Catmull-Clark bases meshes which correspond to pieces of a Boolean surface computed from limit surfaces of the two base meshes; a creating module creating new edges on the chopped pieces to create quadrilaterals and triangles; and a merging module merging the chopped pieces with the new edges into a Boolean base mesh which approximates the Boolean surface.
CROSS-REFERENCE TO RELATED APPLICATION(S)
[0001] This application is related to U.S. Pat. No. 6,307,555 B1, entitled Boolean Operations for Subdivision Surfaces, by Eugene T. Y. Lee, issued Oct. 23, 2001, and incorporated by reference herein.