Figure 1.
Comparison of 3D text ‘B’ generation on the Bunny model using (a) Boolean operations and (b) our method.
Figure 1.
Comparison of 3D text ‘B’ generation on the Bunny model using (a) Boolean operations and (b) our method.
Figure 2.
Pipeline of the proposed framework, consisting of three stages: font outline extraction, outline mapping, and 3D text generation.
Figure 2.
Pipeline of the proposed framework, consisting of three stages: font outline extraction, outline mapping, and 3D text generation.
Figure 3.
Example of font outline extraction from the FreeType library: (a) control points of linear and quadratic segments; (b) control polygons of (in blue) and (in red); (c) reconstructed font outline from (b).
Figure 3.
Example of font outline extraction from the FreeType library: (a) control points of linear and quadratic segments; (b) control polygons of (in blue) and (in red); (c) reconstructed font outline from (b).
Figure 4.
(a) Local tangent frame constructed at . (b) Control points represented in the local coordinate system, lying on plane .
Figure 4.
(a) Local tangent frame constructed at . (b) Control points represented in the local coordinate system, lying on plane .
Figure 5.
Example of static mapping: (a) vector from to in plane ; (b) the corresponding straightest geodesic from on the mesh surface.
Figure 5.
Example of static mapping: (a) vector from to in plane ; (b) the corresponding straightest geodesic from on the mesh surface.
Figure 6.
Example of dynamic mapping: (a) vector from to in the local tangent frame; (b) the corresponding straightest geodesic from on the mesh surface.
Figure 6.
Example of dynamic mapping: (a) vector from to in the local tangent frame; (b) the corresponding straightest geodesic from on the mesh surface.
Figure 7.
Comparison of the sampled curves of character ‘g’ on a sphere using (a) two, (b) three, and (c) four samples per curve.
Figure 7.
Comparison of the sampled curves of character ‘g’ on a sphere using (a) two, (b) three, and (c) four samples per curve.
Figure 8.
Outline-based mesh segmentation for the character ‘B’: (a) the outline generated by geodesic Bézier curves; (b) the mesh trimmed along the outline in (a); (c) the final result after trimming, where blue faces represent and red–green vertex pairs indicate .
Figure 8.
Outline-based mesh segmentation for the character ‘B’: (a) the outline generated by geodesic Bézier curves; (b) the mesh trimmed along the outline in (a); (c) the final result after trimming, where blue faces represent and red–green vertex pairs indicate .
Figure 9.
Examples of 3D text generation using (a) static mapping and (b) dynamic mapping, illustrating embossing, engraving, and independent text meshes.
Figure 9.
Examples of 3D text generation using (a) static mapping and (b) dynamic mapping, illustrating embossing, engraving, and independent text meshes.
Figure 10.
Self-intersection avoidance by interval refinement via binary search. Green points indicate the self-intersection interval where self-intersection occurs. Red and blue points denote the bracketing parameters . When self-intersection occurs at the midpoint, is updated; otherwise, is updated while conforming to the geometric features.
Figure 10.
Self-intersection avoidance by interval refinement via binary search. Green points indicate the self-intersection interval where self-intersection occurs. Red and blue points denote the bracketing parameters . When self-intersection occurs at the midpoint, is updated; otherwise, is updated while conforming to the geometric features.
Figure 11.
Detection and resolution of inter-character collisions using linear search. (a) Collision example: green boxes indicate oriented bounding boxes (OBBs), and blue points denote vertices with a winding number of one relative to another OBB. (b,c) Linear search results with different step sizes, and , respectively. Smaller step sizes improve the accuracy of collision detection and resolution, ensuring that characters remain separated while conforming to the underlying surface.
Figure 11.
Detection and resolution of inter-character collisions using linear search. (a) Collision example: green boxes indicate oriented bounding boxes (OBBs), and blue points denote vertices with a winding number of one relative to another OBB. (b,c) Linear search results with different step sizes, and , respectively. Smaller step sizes improve the accuracy of collision detection and resolution, ensuring that characters remain separated while conforming to the underlying surface.
Figure 12.
Examples of 3D text generation using the static mapping strategy on the Box, Bunny, Armadillo, and Pumpkin models.
Figure 12.
Examples of 3D text generation using the static mapping strategy on the Box, Bunny, Armadillo, and Pumpkin models.
Figure 13.
Examples of 3D text generation using the dynamic mapping strategy on the Box, Bunny, Armadillo, and Pumpkin models.
Figure 13.
Examples of 3D text generation using the dynamic mapping strategy on the Box, Bunny, Armadillo, and Pumpkin models.
Figure 14.
Generation of long text strings by sequentially arranging characters along a placement curve.
Figure 14.
Generation of long text strings by sequentially arranging characters along a placement curve.
Figure 15.
Outlines of the character ‘B’ in various fonts (top row) and the corresponding 3D text mesh results (bottom row). Red lines indicate outer contours, while blue lines represent inner contours.
Figure 15.
Outlines of the character ‘B’ in various fonts (top row) and the corresponding 3D text mesh results (bottom row). Red lines indicate outer contours, while blue lines represent inner contours.
Figure 16.
Comparison of Gaussian curvature between the underlying sphere and the embedded text region: (a) the sphere mesh with the embedded character ‘B’ in red; (b) a curvature comparison graph, where the x-axis represents the ordered vertex indices within the embedded region, and the y-axis indicates the corresponding Gaussian curvature values.
Figure 16.
Comparison of Gaussian curvature between the underlying sphere and the embedded text region: (a) the sphere mesh with the embedded character ‘B’ in red; (b) a curvature comparison graph, where the x-axis represents the ordered vertex indices within the embedded region, and the y-axis indicates the corresponding Gaussian curvature values.
Figure 17.
Comparison of computation time between the Boolean-based method and our method. The x-axis shows the number of characters, and the y-axis indicates the computation time (ms).
Figure 17.
Comparison of computation time between the Boolean-based method and our method. The x-axis shows the number of characters, and the y-axis indicates the computation time (ms).
Figure 18.
Watermarking of the text “DGU” on the Buddha model: (a) visible surface watermarking; (b) invisible watermarking via mesh refinement (wireframe view).
Figure 18.
Watermarking of the text “DGU” on the Buddha model: (a) visible surface watermarking; (b) invisible watermarking via mesh refinement (wireframe view).
Figure 19.
Examples of 3D CAPTCHAs: (a) CAPTCHA representing the string “A2fNee”; (b) CAPTCHA representing the string “5xEecD”.
Figure 19.
Examples of 3D CAPTCHAs: (a) CAPTCHA representing the string “A2fNee”; (b) CAPTCHA representing the string “5xEecD”.
Figure 20.
Insertion of the text “Hand” on the hand of the Armadillo model: (a) using the shrinkwrap modifier in Blender; (b) using the proposed method.
Figure 20.
Insertion of the text “Hand” on the hand of the Armadillo model: (a) using the shrinkwrap modifier in Blender; (b) using the proposed method.
Table 1.
Properties of the 3D models used in the experiments.
Table 1.
Properties of the 3D models used in the experiments.
| Model | Box | Bunny | Armadillo | Pumpkin |
|---|
| # of vertices | 1538 | 8327 | 172,974 | 165,701 |
| # of triangles | 3026 | 16,650 | 345,955 | 331,398 |
| Feature | Sharp features | Smooth surfaces | Noisy surface | High curvature with noise |
Table 2.
Properties of the character outlines extracted from the Arial font.
Table 2.
Properties of the character outlines extracted from the Arial font.
| Character | B | L | O |
|---|
| # of control points | 60 | 6 | 42 |
| Outline type | Composite outline | Line segments only | Curves only |
| Control-point extraction time (ms) | 0.764 | 0.342 | 0.498 |
Table 3.
Computation time (ms) for generating each character on the Bunny model.
Table 3.
Computation time (ms) for generating each character on the Bunny model.
| Character | B | L | O |
|---|
| Mapping | Static | Dynamic | Static | Dynamic | Static | Dynamic |
|---|
| Outline mapping | 3 | 6 | 3 | 4 | 2 | 4 |
| Curve generation | 2 | 3 | 1 | 1 | 1 | 2 |
| Text generation | 19 | 20 | 15 | 15 | 17 | 17 |
| Total | 24 | 29 | 19 | 20 | 20 | 23 |
Table 4.
Computation time (ms) for generating the character ‘B’ on the models listed in
Table 1.
Table 4.
Computation time (ms) for generating the character ‘B’ on the models listed in
Table 1.
| Model | Box | Bunny | Armadillo | Pumpkin |
|---|
| Mapping | Static | Dynamic | Static | Dynamic | Static | Dynamic | Static | Dynamic |
|---|
| Outline mapping | 2 | 3 | 5 | 9 | 90 | 160 | 84 | 150 |
| Curve generation | 2 | 2 | 3 | 3 | 71 | 70 | 75 | 76 |
| Text generation | 7 | 7 | 20 | 21 | 532 | 530 | 527 | 525 |
| Total | 11 | 12 | 28 | 33 | 693 | 760 | 686 | 751 |
Table 5.
Computation time (ms) for generating the string “GeoText” using static mapping on the models in
Table 1.
Table 5.
Computation time (ms) for generating the string “GeoText” using static mapping on the models in
Table 1.
| Model | Box | Bunny | Armadillo | Pumpkin |
|---|
| Avg. collision | 12 | 46 | 485 | 440 |
| Outline mapping | 9 | 24 | 280 | 219 |
| Curve generation | 8 | 10 | 335 | 333 |
| Text generation | 57 | 159 | 4950 | 4852 |
| Total | 86 | 239 | 6050 | 5844 |
Table 6.
Elapsed time (ms) for generating the string “GeoText” using dynamic mapping on the models in
Table 1.
Table 6.
Elapsed time (ms) for generating the string “GeoText” using dynamic mapping on the models in
Table 1.
| Model | Box | Bunny | Armadillo | Pumpkin |
|---|
| Avg. self-int. | 5 | 75 | 581 | 353 |
| Avg. collision | 15 | 40 | 832 | 758 |
| Outline mapping | 10 | 40 | 347 | 352 |
| Curve generation | 9 | 11 | 335 | 314 |
| Text generation | 66 | 162 | 5211 | 5174 |
| Total | 104 | 328 | 7306 | 6951 |