Claims
- 1. A process for digitally representing a plurality of surface-attached geometric objects on a model, the process comprising:
generating a plurality of particles; placing the plurality of particles on a surface of the model; generating a first plurality of curves; placing each of the first plurality of curves at locations on the model; defining at least one characteristic of at least one of the first plurality of curves; interpolating from the first plurality of curves a second plurality of curves at locations of the plurality of particles; generating a plurality of surface-attached geometric objects; and replacing the plurality of particles and the second plurality of curves with the plurality of surface-attached geometric objects.
- 2. The process recited in claim 1, wherein placing the plurality of particles on a surface of the model comprises manually placing particles on the surface of the model.
- 3. The process recited in claim 2, wherein the surface of the model includes points designated by a parametric (u, v) coordinate system, the particles being placed on the surface at the points.
- 4. The process recited in claim 1, wherein placing the plurality of particles on the surface of the model comprises automatically placing particles on a surface by determining a desired density of surface-attached geometric objects on the model and calculating a number of particles to be placed on the surface.
- 5. The process recited in claim 4, further comprising manually adding, deleting or adjusting particular ones of the plurality of particles.
- 6. The process recited in claim 4, wherein calculating a number of particles to be placed on the surface comprises specifying density values to calculate the number and position of particles on the surface.
- 7. The process recited in claim 6, wherein specifying density values comprises subdividing the surface into N×M sub-surfaces, where N+1×M+1 is a resolution of a density map.
- 8. The process recited in claim 7, wherein calculating the number and position of particles on the surface comprises averaging density map values at vertices of each of the N×M sub-surfaces and multiplying by a global density value to obtain a first result.
- 9. The process recited in claim 8, wherein calculating the number and position of particles on the surface further comprises:
multiplying the first result by an area of each sub-surface to obtain the number of particles; and randomly generating the position of particles on each sub-surface.
- 10. The process recited in claim 1, wherein placing the plurality of particles on a surface of the model comprises automatically placing the plurality of particles on a plurality of surfaces of the model by reading a plurality of density maps corresponding to the plurality of surfaces and distributing the plurality of particles over the plurality of surfaces using a particle repulsion algorithm until a predetermined level of equilibrium is achieved.
- 11. The process recited in claim 10, further comprising manually adding, deleting or adjusting particular ones of the plurality of particles.
- 12. The process recited in claim 1, wherein placing each of the first plurality of curves at locations on the model comprises manually placing each of the first plurality of curves.
- 13. The process recited in claim 1, wherein placing each of the first plurality of curves at locations on the model comprises automatically placing each of the first plurality of curves at locations across multiple surfaces based on areas of the multiple surfaces.
- 14. The process recited in claim 1, wherein defining at least one characteristic of at least one of the first plurality of curves comprises defining at least one of an orientation, a bend and a twist of the at least one of the first plurality of curves.
- 15. The process recited in claim 1, wherein defining at least one characteristic of at least one of the first plurality of curves comprises defining a combing direction curve of the at least one of the first plurality of curves.
- 16. The process recited in claim 1, wherein defining at least one characteristic of at least one of the first plurality of curves comprises defining an articulated chain defined over the curve and having n-i segments for n control points of the curve, wherein when the chain is deformed, the underlying curve correspondingly changes.
- 17. The process recited in claim 16, wherein multiple curves are assigned to the chain and wherein when the chain is deformed, the multiple curves correspondingly deform.
- 18. The process recited in claim 1, wherein defining at least one characteristic of at least one of the first plurality of curves comprises:
estimating, for each of a plurality of control points of the at least one of the first plurality of curves, a closest surface point on the model; attaching each of the plurality of control points to its corresponding closest surface point in a static pose of the model; determining a distance between each of the plurality of control points and its corresponding closest surface point; and maintaining the attachment and offsetting along a surface normal of the corresponding attachment point, each of the plurality of control points from its corresponding attachment point by the determined distance during animation of the model.
- 19. The process recited in claim 1, wherein a two-dimensional ribbon is defined over at least one of the first plurality of curves and wherein the defined characteristic is at least one of a twist and a bend of the ribbon.
- 20. The process recited in claim 1, wherein interpolating from the first plurality of curves a second plurality of curves at locations of the plurality of particles comprises:
determining groups of three of the first plurality of curves that form triangles which enclose a number of the plurality of particles; determining within which of the triangles a particle of interest is located; determining, for the particle of interest, locations of a group of three of the first plurality of curves forming a triangle enclosing the particle of interest and weights of each curve in the group of three relative to the particle of interest.
- 21. The process recited in claim 20, wherein the triangles are formed by two dimensional Delaunay triangulation and wherein the weights are calculated using barycentric coordinates.
- 22. The process recited in claim 20, wherein the model is a static model and wherein the process further comprises:
mapping the groups of three of the first plurality of curves that form triangles onto an animated model such that the groups of three curves are defined in a local coordinate space of the surface; transforming the groups of three curves to a common coordinate system; and interpolating by vector addition using the group location and weights, in an iterative manner, to obtain a final interpolated curve for each particle on the surface.
- 23. The process recited in claim 22, wherein the final interpolated curves include the at least one defined characteristic.
- 24. The process recited in claim 22, further comprising scaling the final interpolated curves to a defined length according to a scaling algorithm.
- 25. The process recited in claim 22, wherein generating a plurality of surface-attached geometric objects comprises:
evaluating at least one expression; generating information based on the at least one expression for each surface-attached geometric object to be attached at a particle location; and generating for each of the plurality of particles, in an iterative manner, a surface-attached geometric object having a base shape defined, at least in part, by the information.
- 26. The process recited in claim 25, wherein the at least one expression is at least one of a static expression, a dynamic expression and an execution control expression.
- 27. The process recited in claim 25, further comprising deforming the base shape of the surface-attached geometric objects according to the at least one defined characteristic.
- 28. The process recited in claim 25, further comprising applying fx attributes to surface-attached geometric objects to be attached at a particle location.
- 29. The process recited in claim 25, further comprising manually animating at least one of the generated surface-attached geometric objects.
- 30. The process recited in claim 25, wherein evaluating at least one expression comprises evaluating an execution control expression including a blend region defining a portion of the model, the blend region including a plurality of sections defining at least one of different animation methods and different parameters for an animation method.
- 31. The process recited in claim 30, wherein the plurality of sections comprises a plurality of spheres including an inner sphere as a first section, an outer sphere as a second section, and an area located outside of both the inner sphere and the outer sphere as a third section.
- 32. The process recited in claim 30, wherein the blend region is animated.
- 33. The process recited in claim 25, wherein evaluating at least one expression comprises evaluating an execution control expression for graphically simulating moisture on surface-attached geometric objects.
- 34. The process recited in claim 33, wherein the surface-attached geometric objects are feathers and wherein graphically simulating moisture on surface-attached geometric objects comprises:
defining a plurality of linear clumps along a shaft of a feather, each of the plurality of linear clumps having a center barb and a plurality of lateral barbs located on at least one side of the center barb; and selectively clumping a number of the plurality of lateral barbs of at least one of the plurality of linear clumps to their respective center barb.
- 35. The process recited in claim 34, wherein the number of the plurality of lateral barbs are selectively clumped to their respective center barb based on at least one of clump-density, clump-size, clump-percent and clump-rate.
- 36. The process recited in claim 25, wherein evaluating at least one expression comprises evaluating an execution control expression for graphically simulating wind effects on surface-attached geometric objects.
- 37. The process recited in claim 36, wherein graphically simulating wind effects on surface-attached geometric objects comprises generating pseudo-random movement of the surface-attached geometric objects using a noise function.
- 38. The process recited in claim 37, wherein the noise function generates a continuous movement of the surface-attached geometric object.
- 39. The process recited in claim 37, wherein the noise function comprises a mixture of a plurality of frequencies.
- 40. The process recited in claim 37, wherein an amplitude of the noise function is controllable.
- 41. The process recited in claim 37, wherein at least one of a frequency and a direction of the noise function is controllable.
- 42. The process recited in claim 37, wherein using a noise function comprises:
accessing a pseudo-random number field to obtain a perturbation vector for at least one surface-attached geometric object; and applying the perturbation vector to the at least one surface-attached geometric object such that the surface-attached geometric object is oriented in a particular direction based on the perturbation vector.
- 43. The process recited in claim 42, wherein accessing a pseudo-random number field comprises using a look-up function to access the pseudo-random number field.
- 44. The process recited in claim 42, wherein the perturbation vector is obtained based on the original position of the at least one surface-attached geometric object.
- 45. The process recited in claim 42, wherein a corresponding perturbation vector is obtained for each surface-attached geometric object.
- 46. The process recited in claim 42, wherein the perturbation vector is transformed into a local coordinate space of the at least one surface-attached geometric object.
- 47. The process recited in claim 42, wherein the perturbation vector is applied to each of a plurality of control points on the at least one surface-attached geometric object.
- 48. The process recited in claim 22, further comprising determining for each of a plurality of control points on a generated surface-attached geometric object, in an iterative manner, a distance between a particular control point and a point on a surface of the static model.
- 49. The process recited in claim 48, wherein determining a distance between a particular control point and a point on a surface of the static model comprises:
determining particular ones of a plurality of surface points that have a surface normal that passes through both the particular ones of the plurality of surface points and the particular control point; determining a surface point of the determined particular ones of the plurality of surface points that is closest to the particular control point; and determining the distance between the particular point and the closest surface point.
- 50. The process recited in claim 48, wherein determining a distance between a particular control point and a point on a surface of the static model comprises determining a distance between a particular control point and a closest surface point of a plurality of surface points below the particular control point.
- 51. The process recited in claim 49, further comprising attaching the particular control point to the closest surface point in a static pose of the model.
- 52. The process recited in claim 49, further comprising:
generating a surfaces list listing surfaces on the model; and defining at least one of permissible ones of the surfaces and permissible portions of ones of the surfaces for which a closest surface point may be found for a control point on the generated surface-attached geometric object.
- 53. The process recited in claim 48, further comprising offsetting the particular control point from a point on the surface by the determined distance along a surface normal during animation of the model.
- 54. The process recited in claim 53, further comprising:
determining a surface normal of a base point; estimating a surface normal of a closest point on the model to a first control point of the generated surface-attached geometric object to be equal to a surface normal of the base point; estimating an initial position of the first control point by adding a vector between the base point and the first control point to the base point; determining as an estimated closest surface point on the model to the first control point a first intersection point with an underlying surface by raycasting along the estimated surface normal of the closest point on the model to the first control point from the estimated initial position of the first control point; and offsetting the initial position of the first control point to a first offset position of the first control point from the first intersection point by a first determined distance along an actual surface normal of the first intersection point.
- 55. The process recited in claim 54, wherein determining a surface normal of a base point comprises determining a surface normal of a base point where the generated surface-attached geometric object attaches to the model.
- 56. The process recited in claim 54, wherein the surface-attached geometric object is a feather and wherein determining a surface normal of a base point comprises determining a surface normal of a base point where a control point of a vane of the feather attaches to a shaft of the feather.
- 57. The process recited in claim 54, further comprising:
estimating a surface normal of a closest point on the model to the first offset position of the first control point to be equal to the actual surface normal of the first intersection point; determining as an estimated closest surface point on the model to the first offset position of the first control point a second intersection point with an underlying surface by raycasting along the estimated surface normal of the closest point on the model to the first offset position of the first control point from the first offset position of the first control point; and offsetting the first offset position of the first control point to a second offset position of the first control point from the second intersection point by the first determined distance along an actual surface normal of the second intersection point.
- 58. The process recited in claim 57, further comprising estimating a surface normal of a closest point on the model to a second control point of the generated surface-attached geometric object to be equal to the actual surface normal of the second intersection point;
estimating an initial position of the second control point by adding a vector between the first control point and the second control point to the second offset position of the first control point; determining as an estimated closest surface point on the model to the second control point a third intersection point with the underlying surface by raycasting along the estimated surface normal of the closest point on the model to the second control point from the estimated initial position of the second control point; and offsetting the initial position of the second control point to a first offset position of the second control point from the third intersection point by a second determined distance along an actual surface normal of the third intersection point.
- 59. The process recited in claim 58, further comprising:
estimating a surface normal of a closest point on the model to the first offset position of the second control point to be equal to the actual surface normal of the third intersection point; determining as an estimated closest surface point on the model to the first offset position of the second control point a fourth intersection point with an underlying surface by raycasting along the estimated surface normal of the closest point on the model to the first offset position of the second control point from the first offset position of the second control point; and offsetting the first offset position of the second control point to a second offset position of the second control point from the fourth intersection point by the second determined distance along an actual surface normal of the fourth intersection point.
- 60. The process recited in claim 49, further comprising:
determining a surface normal of a base point; estimating a surface normal of a closest point on the model to a first control point of the generated surface-attached geometric object to be equal to a surface normal of the base point; determining as an estimated closest surface point on the model to the first control point a first intersection point with an underlying surface by raycasting along the estimated surface normal of the closest point on the model to the first control point from the first control point; and determining as a first estimated offset of the first control point a distance between the first control point and the first intersection point.
- 61. The process recited in claim 60, wherein determining a surface normal of a base point comprises determining a surface normal of a base point where the generated surface-attached geometric object attaches to the model.
- 62. The process recited in claim 60, wherein the surface-attached geometric object is a feather and wherein determining a surface normal of a base point comprises determining a surface normal of a base point where a control point of a vane of the feather attaches to a shaft of the feather.
- 63. The process recited in claim 60, further comprising:
estimating a surface normal of a closest point on the model to the first control point to be equal to the actual surface normal of the first intersection point; determining as an estimated closest surface point on the model to the first control point a second intersection point with an underlying surface by raycasting along the estimated surface normal of the closest point on the model to the first control point from the first control point; and determining as a second estimated offset of the first control point a distance between the first control point and the second intersection point.
- 64. The process recited in claim 63, further comprising
estimating a surface normal of a closest point on the model to a second control point of the generated surface-attached geometric object to be equal to the actual surface normal of the second intersection point; determining as an estimated closest surface point on the model to the second control point a third intersection point with the underlying surface by raycasting along the estimated surface normal of the closest point on the model to the second control point from the second control point; and determining as a first estimated offset of the second control point a distance between the second control point and the third intersection point.
- 65. The process recited in claim 64, further comprising:
estimating a surface normal of a closest point on the model to the second control point to be equal to the actual surface normal of the third intersection point; determining as an estimated closest surface point on the model to the second control point a fourth intersection point with an underlying surface by raycasting along the estimated surface normal of the closest point on the model to the second control point from the second control point; and determining as a second estimated offset of the second control point a distance between the second control point and the fourth intersection point.
- 66. The process recited in claim 53, further comprising maintaining the attachment and offsetting along a surface normal of the attachment point, the particular control point from the attachment point by the determined distance during animation of the model.
- 67. The process recited in claim 53, further comprising automatically generating animated curves to be used with the animated model to match animation of at least one of the plurality of surface-attached geometric objects to the animated model.
- 68. The process recited in claim 67, wherein automatically generating animated curves comprises:
attaching control points of the first plurality of curves to a corresponding estimated closest point on a surface of the model in a static pose; recording a distance between each of the control points and its corresponding estimated closest point; and offsetting, during animation of the model, each of the control points from its corresponding attachment point by the recorded distance along a surface normal of the corresponding attachment point.
- 69. The process recited in claim 68, wherein lengths of the animated curves are adjusted to be approximately the same as lengths of the first plurality of curves.
- 70. The process recited in claim 67, wherein the model includes a sheath of manually animated surface-attached geometric objects for facilitating automated animation of the plurality of surface-attached geometric objects.
- 71. The process recited in claim 22, further comprising shading each surface-attached geometric object to be attached at a particle location.
- 72. The process recited in claim 71, wherein shading each surface-attached geometric object comprises:
determining portions of a surface-attached geometric object to be shaded; determining parameter values for particular regions of the model; generating patterns to define color variations on the surface-attached geometric object using the parameter values; and calculating lighting components for the surface-attached geometric object.
- 73. The process recited in claim 72, further comprising adding post-shading color corrections.
- 74. The process recited in claim 72, wherein the surface-attached geometric object represents a feather and wherein determining portions of a surface-attached geometric object comprises determining a left vane, a right vane, and a central shaft.
- 75. The process recited in claim 72, wherein the model represents a bird and wherein determining parameter values for particular regions of the model comprises determining different parts of the body of the bird, the different parts being represented by different region maps having different parameter values.
- 76. The process recited in claim 75, wherein the region maps define soft transitions between the particular regions.
- 77. The process recited in claim 72, wherein the parameter values are at least one of specularity, color and opacity.
- 78. The process recited in claim 72, wherein generating patterns to define color variations on the surface-attached geometric object comprises randomizing textures among a plurality of the surface-attached geometric objects.
- 79. The process recited in claim 72, wherein the surface-attached geometric object represents a feather and wherein calculating lighting components for the surface-attached geometric object comprises:
generating an image of flight feathers wherein the flight feathers are shaded semi-transparent from a camera view; and projecting the image onto the flight feathers at render time to provide backlighting for the flight feathers.
- 80. The process recited in claim 79, further comprising aligning (u, v) parameters of vanes of the flight feathers with a direction of barbs of the flight feathers.
- 81. The process recited in claim 79, further comprising:
determining a distance between an occluding point and a light; and calculating a difference between a distance of a shading point on the feather from the light and the occluding point distance.
- 82. The process recited in claim 1, wherein replacing the plurality of particles and the second plurality of curves with the plurality of surface-attached geometric objects comprises rendering the plurality of surface-attached geometric objects.
- 83. A system for digitally representing a plurality of surface-attached geometric objects on a model, the system comprising:
a processor programmed for:
generating a plurality of particles; placing the plurality of particles on a surface of the model; generating a first plurality of curves; placing each of the first plurality of curves at locations on the model; defining at least one characteristic of at least one of the first plurality of curves; interpolating from the first plurality of curves a second plurality of curves at locations of the plurality of particles; generating a plurality of surface-attached geometric objects; and replacing the plurality of particles and the second plurality of curves with the plurality of surface-attached geometric objects.
- 84. The system recited in claim 83, wherein the processor is further programmed for:
estimating, for each of a plurality of control points of the at least one of the first plurality of curves, a closest surface point on the model; attaching each of the plurality of control points to its corresponding closest surface point in a static pose of the model; determining a distance between each of the plurality of control points and its corresponding closest surface point; and maintaining the attachment and offsetting along a surface normal of the corresponding attachment point, each of the plurality of control points from its corresponding attachment point by the determined distance during animation of the model.
- 85. The system recited in claim 83, wherein the processor is further programmed for:
determining groups of three of the first plurality of curves that form triangles which enclose a number of the plurality of particles; determining within which of the triangles a particle of interest is located; determining, for the particle of interest, locations of a group of three of the first plurality of curves forming a triangle enclosing the particle of interest and weights of each curve in the group of three relative to the particle of interest.
- 86. The system recited in claim 85, wherein the model is a static model and wherein the processor is further programmed for:
mapping the groups of three of the first plurality of curves that form triangles onto an animated model such that the groups of three curves are defined in a local coordinate space of the surface; transforming the groups of three curves to a common coordinate system; and interpolating by vector addition using the group location and weights, in an iterative manner, to obtain a final interpolated curve for each particle on the surface.
- 87. The system recited in claim 86, wherein the processor is further programmed for:
evaluating at least one expression; generating information based on the at least one expression for each surface-attached geometric object to be attached at a particle location; and generating for each final interpolated curve, in an iterative manner, a surface-attached geometric object having a base shape defined, at least in part, by the information.
- 88. The system recited in claim 87, wherein the at least one expression is at least one of a static expression, a dynamic expression and an execution control expression.
- 89. The system recited in claim 87, wherein the processor is further programmed for deforming the base shape of the surface-attached geometric objects according to the at least one defined characteristic.
- 90. The system recited in claim 87, wherein the processor is further programmed for applying fx attributes to each surface-attached geometric object to be attached at a particle location.
- 91. The system recited in claim 87, wherein the processor is further programmed for determining for each of a plurality of control points on a generated surface-attached geometric object, in an iterative manner, a distance between a particular control point and a point on the surface of the static model.
- 92. The system recited in claim 91, wherein the processor is programmed for determining the distance by:
determining particular ones of a plurality of surface points that have a surface normal that passes through both the particular ones of the plurality of surface points and the particular control point; and determining a surface point of the determined particular ones of the plurality of surface points that is closest to the particular control point; and determining the distance between the particular point and the closest surface point.
- 93. The system recited in claim 91, wherein determining a distance between a particular control point and a point on a surface of the static model comprises determining a distance between a particular control point and a closest surface point of a plurality of surface points below the particular control point.
- 94. The system recited in claim 92, wherein the processor is further programmed for attaching the particular control point to the closest surface point in a static pose of the model.
- 95. The system recited in claim 92, wherein the processor is further programmed for:
generating a surfaces list listing surfaces on the model; and defining at least one of permissible ones of the surfaces and permissible portions of ones of the surfaces for which a closest surface point may be found for a control point on the generated surface-attached geometric object.
- 96. The system recited in claim 91, wherein the processor is further programmed for offsetting the particular control point from a point on the surface by the determined distance along a surface normal during animation of the model.
- 97. The system recited in claim 96, wherein the processor is further programmed for:
determining a surface normal of a base point; estimating a surface normal of a closest point on the model to a first control point of the generated surface-attached geometric object to be equal to a surface normal of the base point; estimating an initial position of the first control point by adding a vector between the base point and the first control point to the base point; determining as an estimated closest surface point on the model to the first control point a first intersection point with an underlying surface by raycasting along the estimated surface normal of the closest point on the model to the first control point from the estimated initial position of the first control point; and offsetting the initial position of the first control point to a first offset position of the first control point from the first intersection point by a first determined distance along an actual surface normal of the first intersection point.
- 98. The system recited in claim 97, wherein determining a surface normal of a base point comprises determining a surface normal of a base point where the generated surface-attached geometric object attaches to the model.
- 99. The system recited in claim 97, wherein the surface-attached geometric object is a feather and wherein determining a surface normal of a base point comprises determining a surface normal of a base point where a control point of a vane of the feather attaches to a shaft of the feather.
- 100. The system recited in claim 97, wherein the processor is further programmed for:
estimating a surface normal of a closest point on the model to the first offset position of the first control point to be equal to the actual surface normal of the first intersection point; determining as an estimated closest surface point on the model to the first offset position of the first control point a second intersection point with an underlying surface by raycasting along the estimated surface normal of the closest point on the model to the first offset position of the first control point from the first offset position of the first control point; and offsetting the first offset position of the first control point to a second offset position of the first control point from the second intersection point by the first determined distance along an actual surface normal of the second intersection point.
- 101. The system recited in claim 100, wherein the processor is further programmed for:
estimating a surface normal of a closest point on the model to a second control point of the generated surface-attached geometric object to be equal to the actual surface normal of the second intersection point; estimating an initial position of the second control point by adding a vector between the first control point and the second control point to the second offset position of the first control point; determining as an estimated closest surface point on the model to the second control point a third intersection point with the underlying surface by raycasting along the estimated surface normal of the closest point on the model to the second control point from the estimated initial position of the second control point; and offsetting the initial position of the second control point to a first offset position of the second control point from the third intersection point by a second determined distance along an actual surface normal of the third intersection point.
- 102. The system recited in claim 101, wherein the processor is further programmed for:
estimating a surface normal of a closest point on the model to the first offset position of the second control point to be equal to the actual surface normal of the third intersection point; determining as an estimated closest surface point on the model to the first offset position of the second control point a fourth intersection point with an underlying surface by raycasting along the estimated surface normal of the closest point on the model to the first offset position of the second control point from the first offset position of the second control point; and offsetting the first offset position of the second control point to a second offset position of the second control point from the fourth intersection point by the second determined distance along an actual surface normal of the fourth intersection point.
- 103. The system recited in claim 92, wherein the processor is further programmed for:
determining a surface normal of a base point; estimating a surface normal of a closest point on the model to a first control point of the generated surface-attached geometric object to be equal to a surface normal of the base point, determining as an estimated closest surface point on the model to the first control point a first intersection point with an underlying surface by raycasting along the estimated surface normal of the closest point on the model to the first control point from the first control point; and determining as a first estimated offset of the first control point a distance between the first control point and the first intersection point.
- 104. The system recited in claim 103, wherein determining a surface normal of a base point comprises determining a surface normal of a base point where the generated surface-attached geometric object attaches to the model.
- 105. The system recited in claim 103, wherein the surface-attached geometric object is a feather and wherein determining a surface normal of a base point comprises determining a surface normal of a base point where a control point of a vane of the feather attaches to a shaft of the feather.
- 106. The system recited in claim 103, wherein the processor is further programmed for:
estimating a surface normal of a closest point on the model to the first control point to be equal to the actual surface normal of the first intersection point; determining as an estimated closest surface point on the model to the first control point a second intersection point with an underlying surface by raycasting along the estimated surface normal of the closest point on the model to the first control point from the first control point; and determining as a second estimated offset of the first control point a distance between the first control point and the second intersection point.
- 107. The system recited in claim 106, wherein the processor is further programmed for:
estimating a surface normal of a closest point on the model to a second control point of the generated surface-attached geometric object to be equal to the actual surface normal of the second intersection point; determining as an estimated closest surface point on the model to the second control point a third intersection point with the underlying surface by raycasting along the estimated surface normal of the closest point on the model to the second control point from the second control point; and determining as a first estimated offset of the second control point a distance between the second control point and the third intersection point.
- 108. The system recited in claim 107, wherein the processor is further programmed for:
estimating a surface normal of a closest point on the model to the second control point to be equal to the actual surface normal of the third intersection point; determining as an estimated closest surface point on the model to the second control point a fourth intersection point with an underlying surface by raycasting along the estimated surface normal of the closest point on the model to the second control point from the second control point; and determining as a second estimated offset of the second control point a distance between the second control point and the fourth intersection point.
- 109. The system recited in claim 96, wherein the processor is further programmed for maintaining the attachment and offsetting along a surface normal of the attachment point the particular control point from the attachment point by the determined distance during animation of the model.
- 110. The system recited in claim 96, wherein the processor is further programmed for automatically generating animated curves to be used with the animated model to match animation of at least one of the plurality of surface-attached geometric objects to the animated model.
- 111. The system recited in claim 110, wherein automatically generating animated curves comprises:
attaching control points of the first plurality of curves to a corresponding estimated closest point on a surface of the model in a static pose; recording a distance between each of the control points and its corresponding estimated closest point; and offsetting, during animation of the model, each of the control points from its corresponding attachment point by the recorded distance along a surface normal of the corresponding attachment point.
- 112. The system recited in claim 111, wherein lengths of the animated curves are adjusted to be approximately the same as lengths of the first plurality of curves.
- 113. The system recited in claim 110, wherein the model includes a sheath of manually animated surface-attached geometric objects for facilitating automated animation of the plurality of surface-attached geometric objects.
- 114. A system for digitally representing a plurality of surface-attached geometric objects on a model, the system comprising:
means for generating a plurality of particles; means for placing the plurality of particles on a surface of the model; means for generating a first plurality of curves; means for placing each of the first plurality of curves at locations on the model; means for defining at least one characteristic of at least one of the first plurality of curves; means for interpolating from the first plurality of curves a second plurality of curves at locations of the plurality of particles; means for generating a plurality of surface-attached geometric objects; and means for replacing the plurality of particles and the second plurality of curves with the plurality of surface-attached geometric objects.
- 115. An animation sequence including images representing a plurality of surface-attached geometric objects on a surface, wherein a process for generating the animation sequence comprises:
generating a plurality of particles; placing the plurality of particles on a surface of the model; generating a first plurality of curves; placing each of the first plurality of curves at locations on the model; defining at least one characteristic of at least one of the first plurality of curves; interpolating from the first plurality of curves a second plurality of curves at locations of the plurality of particles; generating a plurality of surface-attached geometric objects; and replacing the plurality of particles and the second plurality of curves with the plurality of surface-attached geometric objects.
RELATED APPLICATIONS
[0001] This application claims priority to Provisional Application No. 60/356,723 filed Feb. 12, 2002, and to Provisional Application No. 60/397,163 filed Jul. 18, 2002, attorney docket number 041892-0225, each of which is hereby incorporated by reference.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60356723 |
Feb 2002 |
US |
|
60397163 |
Jul 2002 |
US |