Added face-varying UVs to several regression shapes:

- added UVs to non-manifold shape sets for both Catmark and Loop
    - added UVs to the semi-sharp and inf-sharp variations of Catmark cubes
This commit is contained in:
barry 2019-05-14 15:22:33 -07:00
parent a7a3fd6ecb
commit 89f00d3603
6 changed files with 785 additions and 302 deletions

View File

@ -39,20 +39,20 @@ static const std::string catmark_cubes_infsharp =
"v -0.25 0.50 0.25\n"
"\n"
"# 14 uvs\n"
"vt 0.375 0.000\n"
"vt 0.625 0.000\n"
"vt 0.375 0.250\n"
"vt 0.625 0.250\n"
"vt 0.375 0.500\n"
"vt 0.625 0.500\n"
"vt 0.375 0.750\n"
"vt 0.625 0.750\n"
"vt 0.375 1.000\n"
"vt 0.625 1.000\n"
"vt 0.875 0.000\n"
"vt 0.875 0.250\n"
"vt 0.125 0.000\n"
"vt 0.125 0.250\n"
"vt 0.2 0.55\n"
"vt 0.3 0.55\n"
"vt 0.2 0.65\n"
"vt 0.3 0.65\n"
"vt 0.2 0.75\n"
"vt 0.3 0.75\n"
"vt 0.2 0.85\n"
"vt 0.3 0.85\n"
"vt 0.2 0.95\n"
"vt 0.3 0.95\n"
"vt 0.4 0.55\n"
"vt 0.4 0.65\n"
"vt 0.1 0.55\n"
"vt 0.1 0.65\n"
"\n"
"f 1/1 2/2 4/4 3/3\n"
"f 3/3 4/4 6/6 5/5\n"
@ -75,12 +75,27 @@ static const std::string catmark_cubes_infsharp =
"v 1.25 -0.50 0.25\n"
"v 1.25 0.50 0.25\n"
"\n"
"f 9/1 10/2 12/4 11/3\n"
"f 11/3 12/4 14/6 13/5\n"
"f 13/5 14/6 16/8 15/7\n"
"f 15/7 16/8 10/10 9/9\n"
"f 10/2 16/11 14/12 12/4\n"
"f 15/13 9/1 11/3 13/14\n"
"vt 0.7 0.55\n"
"vt 0.8 0.55\n"
"vt 0.7 0.65\n"
"vt 0.8 0.65\n"
"vt 0.7 0.75\n"
"vt 0.8 0.75\n"
"vt 0.7 0.85\n"
"vt 0.8 0.85\n"
"vt 0.7 0.95\n"
"vt 0.8 0.95\n"
"vt 0.9 0.55\n"
"vt 0.9 0.65\n"
"vt 0.6 0.55\n"
"vt 0.6 0.65\n"
"\n"
"f 9/15 10/16 12/18 11/17\n"
"f 11/17 12/18 14/20 13/19\n"
"f 13/19 14/20 16/22 15/21\n"
"f 15/21 16/22 10/24 9/23\n"
"f 10/16 16/25 14/26 12/18\n"
"f 15/27 9/15 11/17 13/28\n"
"\n"
"t crease 2/1/0 8 9 10.0\n"
"t crease 2/1/0 8 10 10.0\n"
@ -97,12 +112,27 @@ static const std::string catmark_cubes_infsharp =
"v -0.25 -0.50 -1.25\n"
"v -0.25 0.50 -1.25\n"
"\n"
"f 17/1 18/2 20/4 19/3\n"
"f 19/3 20/4 22/6 21/5\n"
"f 21/5 22/6 24/8 23/7\n"
"f 23/7 24/8 18/10 17/9\n"
"f 18/2 24/11 22/12 20/4\n"
"f 23/13 17/1 19/3 21/14\n"
"vt 0.2 0.05\n"
"vt 0.3 0.05\n"
"vt 0.2 0.15\n"
"vt 0.3 0.15\n"
"vt 0.2 0.25\n"
"vt 0.3 0.25\n"
"vt 0.2 0.35\n"
"vt 0.3 0.35\n"
"vt 0.2 0.45\n"
"vt 0.3 0.45\n"
"vt 0.4 0.05\n"
"vt 0.4 0.15\n"
"vt 0.1 0.05\n"
"vt 0.1 0.15\n"
"\n"
"f 17/29 18/30 20/32 19/31\n"
"f 19/31 20/32 22/34 21/33\n"
"f 21/33 22/34 24/36 23/35\n"
"f 23/35 24/36 18/38 17/37\n"
"f 18/30 24/39 22/40 20/32\n"
"f 23/41 17/29 19/31 21/42\n"
"\n"
"t crease 2/1/0 18 16 10.0\n"
"t crease 2/1/0 16 22 10.0\n"
@ -121,12 +151,27 @@ static const std::string catmark_cubes_infsharp =
"v 1.25 -0.50 -1.25\n"
"v 1.25 0.50 -1.25\n"
"\n"
"f 25/1 26/2 28/4 27/3\n"
"f 27/3 28/4 30/6 29/5\n"
"f 29/5 30/6 32/8 31/7\n"
"f 31/7 32/8 26/10 25/9\n"
"f 26/2 32/11 30/12 28/4\n"
"f 31/13 25/1 27/3 29/14\n"
"vt 0.7 0.05\n"
"vt 0.8 0.05\n"
"vt 0.7 0.15\n"
"vt 0.8 0.15\n"
"vt 0.7 0.25\n"
"vt 0.8 0.25\n"
"vt 0.7 0.35\n"
"vt 0.8 0.35\n"
"vt 0.7 0.45\n"
"vt 0.8 0.45\n"
"vt 0.9 0.05\n"
"vt 0.9 0.15\n"
"vt 0.6 0.05\n"
"vt 0.6 0.15\n"
"\n"
"f 25/43 26/44 28/46 27/45\n"
"f 27/45 28/46 30/48 29/47\n"
"f 29/47 30/48 32/50 31/49\n"
"f 31/49 32/50 26/52 25/51\n"
"f 26/44 32/53 30/54 28/46\n"
"f 31/55 25/43 27/45 29/56\n"
"\n"
"t crease 2/1/0 24 25 0.1\n"
"t crease 2/1/0 25 27 10.0\n"

View File

@ -39,20 +39,20 @@ static const std::string catmark_cubes_semisharp =
"v -0.25 0.50 0.25\n"
"\n"
"# 14 uvs\n"
"vt 0.375 0.000\n"
"vt 0.625 0.000\n"
"vt 0.375 0.250\n"
"vt 0.625 0.250\n"
"vt 0.375 0.500\n"
"vt 0.625 0.500\n"
"vt 0.375 0.750\n"
"vt 0.625 0.750\n"
"vt 0.375 1.000\n"
"vt 0.625 1.000\n"
"vt 0.875 0.000\n"
"vt 0.875 0.250\n"
"vt 0.125 0.000\n"
"vt 0.125 0.250\n"
"vt 0.2 0.55\n"
"vt 0.3 0.55\n"
"vt 0.2 0.65\n"
"vt 0.3 0.65\n"
"vt 0.2 0.75\n"
"vt 0.3 0.75\n"
"vt 0.2 0.85\n"
"vt 0.3 0.85\n"
"vt 0.2 0.95\n"
"vt 0.3 0.95\n"
"vt 0.4 0.55\n"
"vt 0.4 0.65\n"
"vt 0.1 0.55\n"
"vt 0.1 0.65\n"
"\n"
"f 1/1 2/2 4/4 3/3\n"
"f 3/3 4/4 6/6 5/5\n"
@ -75,12 +75,27 @@ static const std::string catmark_cubes_semisharp =
"v 1.25 -0.50 0.25\n"
"v 1.25 0.50 0.25\n"
"\n"
"f 9/1 10/2 12/4 11/3\n"
"f 11/3 12/4 14/6 13/5\n"
"f 13/5 14/6 16/8 15/7\n"
"f 15/7 16/8 10/10 9/9\n"
"f 10/2 16/11 14/12 12/4\n"
"f 15/13 9/1 11/3 13/14\n"
"vt 0.7 0.55\n"
"vt 0.8 0.55\n"
"vt 0.7 0.65\n"
"vt 0.8 0.65\n"
"vt 0.7 0.75\n"
"vt 0.8 0.75\n"
"vt 0.7 0.85\n"
"vt 0.8 0.85\n"
"vt 0.7 0.95\n"
"vt 0.8 0.95\n"
"vt 0.9 0.55\n"
"vt 0.9 0.65\n"
"vt 0.6 0.55\n"
"vt 0.6 0.65\n"
"\n"
"f 9/15 10/16 12/18 11/17\n"
"f 11/17 12/18 14/20 13/19\n"
"f 13/19 14/20 16/22 15/21\n"
"f 15/21 16/22 10/24 9/23\n"
"f 10/16 16/25 14/26 12/18\n"
"f 15/27 9/15 11/17 13/28\n"
"\n"
"t crease 2/1/0 8 9 2.0\n"
"t crease 2/1/0 8 10 2.0\n"
@ -98,12 +113,27 @@ static const std::string catmark_cubes_semisharp =
"v -0.25 -0.50 -1.25\n"
"v -0.25 0.50 -1.25\n"
"\n"
"f 17/1 18/2 20/4 19/3\n"
"f 19/3 20/4 22/6 21/5\n"
"f 21/5 22/6 24/8 23/7\n"
"f 23/7 24/8 18/10 17/9\n"
"f 18/2 24/11 22/12 20/4\n"
"f 23/13 17/1 19/3 21/14\n"
"vt 0.2 0.05\n"
"vt 0.3 0.05\n"
"vt 0.2 0.15\n"
"vt 0.3 0.15\n"
"vt 0.2 0.25\n"
"vt 0.3 0.25\n"
"vt 0.2 0.35\n"
"vt 0.3 0.35\n"
"vt 0.2 0.45\n"
"vt 0.3 0.45\n"
"vt 0.4 0.05\n"
"vt 0.4 0.15\n"
"vt 0.1 0.05\n"
"vt 0.1 0.15\n"
"\n"
"f 17/29 18/30 20/32 19/31\n"
"f 19/31 20/32 22/34 21/33\n"
"f 21/33 22/34 24/36 23/35\n"
"f 23/35 24/36 18/38 17/37\n"
"f 18/30 24/39 22/40 20/32\n"
"f 23/41 17/29 19/31 21/42\n"
"\n"
"t corner 1/1/0 16 3.0\n"
"\n"
@ -119,12 +149,27 @@ static const std::string catmark_cubes_semisharp =
"v 1.25 -0.50 -1.25\n"
"v 1.25 0.50 -1.25\n"
"\n"
"f 25/1 26/2 28/4 27/3\n"
"f 27/3 28/4 30/6 29/5\n"
"f 29/5 30/6 32/8 31/7\n"
"f 31/7 32/8 26/10 25/9\n"
"f 26/2 32/11 30/12 28/4\n"
"f 31/13 25/1 27/3 29/14\n"
"vt 0.7 0.05\n"
"vt 0.8 0.05\n"
"vt 0.7 0.15\n"
"vt 0.8 0.15\n"
"vt 0.7 0.25\n"
"vt 0.8 0.25\n"
"vt 0.7 0.35\n"
"vt 0.8 0.35\n"
"vt 0.7 0.45\n"
"vt 0.8 0.45\n"
"vt 0.9 0.05\n"
"vt 0.9 0.15\n"
"vt 0.6 0.05\n"
"vt 0.6 0.15\n"
"\n"
"f 25/43 26/44 28/46 27/45\n"
"f 27/45 28/46 30/48 29/47\n"
"f 29/47 30/48 32/50 31/49\n"
"f 31/49 32/50 26/52 25/51\n"
"f 26/44 32/53 30/54 28/46\n"
"f 31/55 25/43 27/45 29/56\n"
"\n"
"t crease 2/1/0 24 25 0.1\n"
"t crease 2/1/0 25 27 5.0\n"

View File

@ -51,19 +51,47 @@ static const std::string catmark_nonman_edges =
"v -1.08 -0.17 1.08\n"
"v -0.92 -0.17 0.92\n"
"\n"
"f 1 2 10 3 \n"
"f 2 4 9 10 \n"
"f 4 6 8 9 \n"
"f 5 3 10 11 \n"
"f 7 5 11 12 \n"
"f 8 9 14 13 \n"
"f 9 10 15 14 \n"
"f 10 11 16 15 \n"
"f 11 12 17 16 \n"
"f 9 8 18 19 \n"
"f 10 9 19 20 \n"
"f 11 10 20 21 \n"
"f 12 11 21 22 \n"
"vt 0.05 0.83\n"
"vt 0.05 0.78\n"
"vt 0.10 0.83\n"
"vt 0.05 0.73\n"
"vt 0.15 0.83\n"
"vt 0.05 0.68\n"
"vt 0.20 0.83\n"
"vt 0.10 0.68\n"
"vt 0.10 0.73\n"
"vt 0.10 0.78\n"
"vt 0.15 0.78\n"
"vt 0.20 0.78\n"
"vt 0.05 0.88\n"
"vt 0.10 0.88\n"
"vt 0.15 0.88\n"
"vt 0.20 0.88\n"
"vt 0.25 0.88\n"
"vt 0.05 0.93\n"
"vt 0.10 0.93\n"
"vt 0.15 0.93\n"
"vt 0.20 0.93\n"
"vt 0.25 0.93\n"
"vt 0.05 0.98\n"
"vt 0.10 0.98\n"
"vt 0.15 0.98\n"
"vt 0.20 0.98\n"
"vt 0.25 0.98\n"
"\n"
"f 1/1 2/2 10/10 3/3 \n"
"f 2/2 4/4 9/9 10/10\n"
"f 4/4 6/6 8/8 9/9 \n"
"f 5/5 3/3 10/10 11/11\n"
"f 7/7 5/5 11/11 12/12\n"
"f 8/18 9/19 14/24 13/23\n"
"f 9/19 10/20 15/25 14/24\n"
"f 10/20 11/21 16/26 15/25\n"
"f 11/21 12/22 17/27 16/26\n"
"f 9/19 8/18 18/13 19/14\n"
"f 10/20 9/19 19/14 20/15\n"
"f 11/21 10/20 20/15 21/16\n"
"f 12/22 11/21 21/16 22/17\n"
"\n"
"#\n"
"# Shape 2: top-middle\n"
@ -86,16 +114,37 @@ static const std::string catmark_nonman_edges =
"v -0.17 -0.30 1.42\n"
"v 0.00 -0.60 1.25\n"
"\n"
"f 23 24 35 34 \n"
"f 24 25 36 35 \n"
"f 25 26 27 36 \n"
"f 36 27 28 37 \n"
"f 37 28 29 30 \n"
"f 38 37 30 31 \n"
"f 33 38 31 32 \n"
"f 34 35 38 33 \n"
"f 35 36 37 38 \n"
"f 35 36 39 \n"
"vt 0.38 0.69\n"
"vt 0.46 0.69\n"
"vt 0.54 0.69\n"
"vt 0.62 0.69\n"
"vt 0.62 0.77\n"
"vt 0.62 0.85\n"
"vt 0.62 0.93\n"
"vt 0.54 0.93\n"
"vt 0.46 0.93\n"
"vt 0.38 0.93\n"
"vt 0.38 0.85\n"
"vt 0.38 0.77\n"
"vt 0.46 0.77\n"
"vt 0.54 0.77\n"
"vt 0.54 0.85\n"
"vt 0.46 0.85\n"
"vt 0.50 0.99\n"
"vt 0.48 0.95\n"
"vt 0.52 0.95\n"
"\n"
"f 23/28 24/29 35/40 34/39\n"
"f 24/29 25/30 36/41 35/40\n"
"f 25/30 26/31 27/32 36/41\n"
"f 36/41 27/32 28/33 37/42\n"
"f 37/42 28/33 29/34 30/35\n"
"f 38/43 37/42 30/35 31/36\n"
"f 33/38 38/43 31/36 32/37\n"
"f 34/39 35/40 38/43 33/38\n"
"f 35/40 36/41 37/42 38/43\n"
"\n"
"f 35/45 36/46 39/44\n"
"\n"
"#\n"
"# Shape 3: top-right\n"
@ -116,15 +165,33 @@ static const std::string catmark_nonman_edges =
"v 1.42 -0.30 1.42\n"
"v 1.08 -0.30 1.42\n"
"\n"
"f 40 41 52 51 \n"
"f 41 42 52 52 \n"
"f 42 43 44 52 \n"
"f 52 44 45 53 \n"
"f 53 45 46 47 \n"
"f 54 53 47 48 \n"
"f 50 54 48 49 \n"
"f 51 52 54 50 \n"
"f 52 52 53 54 \n"
"vt 0.68 0.68\n"
"vt 0.78 0.68\n"
"vt 0.88 0.68\n"
"vt 0.98 0.68\n"
"vt 0.98 0.78\n"
"vt 0.98 0.88\n"
"vt 0.98 0.98\n"
"vt 0.88 0.98\n"
"vt 0.78 0.98\n"
"vt 0.68 0.98\n"
"vt 0.68 0.88\n"
"vt 0.68 0.78\n"
"vt 0.78 0.78\n"
"vt 0.88 0.78\n"
"vt 0.88 0.88\n"
"vt 0.78 0.88\n"
"\n"
"f 40/47 41/48 52/59 51/58\n"
"f 41/48 42/49 52/60 52/59\n"
"f 42/49 43/50 44/51 52/60\n"
"f 52/60 44/51 45/52 53/61\n"
"f 53/61 45/52 46/53 47/54\n"
"f 54/62 53/61 47/54 48/55\n"
"f 50/57 54/62 48/55 49/56\n"
"f 51/58 52/59 54/62 50/57\n"
"\n"
"f 52/59 52/60 53/61 54/62\n"
"\n"
"#\n"
"# Shape 4: center-left\n"
@ -144,15 +211,33 @@ static const std::string catmark_nonman_edges =
"v -1.25 -0.30 -0.17\n"
"v -1.25 -0.30 0.17\n"
"\n"
"f 55 56 67 66 \n"
"f 56 57 67 67 \n"
"f 57 58 59 67 \n"
"f 67 59 60 68 \n"
"f 68 60 61 62 \n"
"f 68 68 62 63 \n"
"f 65 68 63 64 \n"
"f 66 67 68 65 \n"
"f 67 67 68 68 \n"
"vt 0.02 0.35\n"
"vt 0.12 0.35\n"
"vt 0.22 0.35\n"
"vt 0.32 0.35\n"
"vt 0.32 0.45\n"
"vt 0.32 0.55\n"
"vt 0.32 0.65\n"
"vt 0.22 0.65\n"
"vt 0.12 0.65\n"
"vt 0.02 0.65\n"
"vt 0.02 0.55\n"
"vt 0.02 0.45\n"
"vt 0.12 0.45\n"
"vt 0.22 0.45\n"
"vt 0.22 0.55\n"
"vt 0.12 0.55\n"
"\n"
"f 55/63 56/64 67/75 66/74\n"
"f 56/64 57/65 67/76 67/75\n"
"f 57/65 58/66 59/67 67/76\n"
"f 67/76 59/67 60/68 68/77\n"
"f 68/77 60/68 61/69 62/70\n"
"f 68/78 68/77 62/70 63/71\n"
"f 65/73 68/78 63/71 64/72\n"
"f 66/74 67/75 68/78 65/73\n"
"\n"
"f 67/75 67/76 68/77 68/78\n"
"\n"
"#\n"
"# Shape 5: center-middle\n"
@ -172,15 +257,33 @@ static const std::string catmark_nonman_edges =
"v 0.00 -0.30 -0.17\n"
"v -0.17 -0.30 0.17\n"
"\n"
"f 69 70 81 80 \n"
"f 70 71 81 81 \n"
"f 71 72 73 81 \n"
"f 81 73 74 81 \n"
"f 81 74 75 76 \n"
"f 82 81 76 77 \n"
"f 79 82 77 78 \n"
"f 80 81 82 79 \n"
"f 81 81 81 82 \n"
"vt 0.35 0.35\n"
"vt 0.45 0.35\n"
"vt 0.55 0.35\n"
"vt 0.65 0.35\n"
"vt 0.65 0.45\n"
"vt 0.65 0.55\n"
"vt 0.65 0.65\n"
"vt 0.55 0.65\n"
"vt 0.45 0.65\n"
"vt 0.35 0.65\n"
"vt 0.35 0.55\n"
"vt 0.35 0.45\n"
"vt 0.45 0.45\n"
"vt 0.55 0.45\n"
"vt 0.55 0.55\n"
"vt 0.45 0.55\n"
"\n"
"f 69/79 70/80 81/91 80/90\n"
"f 70/80 71/81 81/92 81/91\n"
"f 71/81 72/82 73/83 81/92\n"
"f 81/92 73/83 74/84 81/93\n"
"f 81/93 74/84 75/85 76/86\n"
"f 82/94 81/93 76/86 77/87\n"
"f 79/89 82/94 77/87 78/88\n"
"f 80/90 81/91 82/94 79/89\n"
"\n"
"f 81/91 81/92 81/93 82/94\n"
"\n"
"#\n"
"# Shape 6: center-right\n"
@ -201,15 +304,33 @@ static const std::string catmark_nonman_edges =
"v 1.42 -0.20 -0.17\n"
"v 1.08 -0.20 0.17\n"
"\n"
"f 83 84 95 94 \n"
"f 84 85 96 95 \n"
"f 85 86 87 96 \n"
"f 96 87 88 95 \n"
"f 95 88 89 90 \n"
"f 97 95 90 91 \n"
"f 93 97 91 92 \n"
"f 94 95 97 93 \n"
"f 95 96 95 97 \n"
"vt 0.68 0.35\n"
"vt 0.78 0.35\n"
"vt 0.88 0.35\n"
"vt 0.98 0.35\n"
"vt 0.98 0.45\n"
"vt 0.98 0.55\n"
"vt 0.98 0.65\n"
"vt 0.88 0.65\n"
"vt 0.78 0.65\n"
"vt 0.68 0.65\n"
"vt 0.68 0.55\n"
"vt 0.68 0.45\n"
"vt 0.78 0.45\n"
"vt 0.88 0.45\n"
"vt 0.88 0.55\n"
"vt 0.78 0.55\n"
"\n"
"f 83/95 84/96 95/107 94/106\n"
"f 84/96 85/97 96/108 95/107\n"
"f 85/97 86/98 87/99 96/108\n"
"f 96/108 87/99 88/100 95/109\n"
"f 95/109 88/100 89/101 90/102\n"
"f 97/110 95/109 90/102 91/103\n"
"f 93/105 97/110 91/103 92/104\n"
"f 94/106 95/107 97/110 93/105\n"
"\n"
"f 95/107 96/108 95/109 97/110\n"
"\n"
"#\n"
"# Shape 7: bottom-left\n"
@ -228,15 +349,33 @@ static const std::string catmark_nonman_edges =
"v -1.75 0.00 -1.42\n"
"v -1.25 -0.30 -1.25\n"
"\n"
"f 98 99 110 109 \n"
"f 99 100 110 110 \n"
"f 100 101 102 110 \n"
"f 110 102 103 110 \n"
"f 110 103 104 105 \n"
"f 110 110 105 106 \n"
"f 108 110 106 107 \n"
"f 109 110 110 108 \n"
"f 110 110 110 110 \n"
"vt 0.02 0.02\n"
"vt 0.12 0.02\n"
"vt 0.22 0.02\n"
"vt 0.32 0.02\n"
"vt 0.32 0.12\n"
"vt 0.32 0.22\n"
"vt 0.32 0.32\n"
"vt 0.22 0.32\n"
"vt 0.12 0.32\n"
"vt 0.02 0.32\n"
"vt 0.02 0.22\n"
"vt 0.02 0.12\n"
"vt 0.12 0.12\n"
"vt 0.22 0.12\n"
"vt 0.22 0.22\n"
"vt 0.12 0.22\n"
"\n"
"f 98/111 99/112 110/123 109/122\n"
"f 99/112 100/113 110/124 110/123\n"
"f 100/113 101/114 102/115 110/124\n"
"f 110/124 102/115 103/116 110/125\n"
"f 110/125 103/116 104/117 105/118\n"
"f 110/126 110/125 105/118 106/119\n"
"f 108/121 110/126 106/119 107/120\n"
"f 109/122 110/123 110/126 108/121\n"
"\n"
"f 110/123 110/124 110/125 110/126\n"
"\n"
"#\n"
"# Shape 8: bottom-middle\n"
@ -258,15 +397,33 @@ static const std::string catmark_nonman_edges =
"v 0.17 -0.30 -1.08\n"
"v -0.17 -0.30 -1.08\n"
"\n"
"f 111 112 123 122 \n"
"f 112 113 124 123 \n"
"f 113 114 115 124 \n"
"f 124 115 116 125 \n"
"f 125 116 117 118 \n"
"f 126 125 118 119 \n"
"f 121 126 119 120 \n"
"f 122 123 126 121 \n"
"f 126 125 124 123 \n"
"vt 0.35 0.02\n"
"vt 0.45 0.02\n"
"vt 0.55 0.02\n"
"vt 0.65 0.02\n"
"vt 0.65 0.12\n"
"vt 0.65 0.22\n"
"vt 0.65 0.32\n"
"vt 0.55 0.32\n"
"vt 0.45 0.32\n"
"vt 0.35 0.32\n"
"vt 0.35 0.22\n"
"vt 0.35 0.12\n"
"vt 0.45 0.12\n"
"vt 0.55 0.12\n"
"vt 0.55 0.22\n"
"vt 0.45 0.22\n"
"\n"
"f 111/127 112/128 123/139 122/138\n"
"f 112/128 113/129 124/140 123/139\n"
"f 113/129 114/130 115/131 124/140\n"
"f 124/140 115/131 116/132 125/141\n"
"f 125/141 116/132 117/133 118/134\n"
"f 126/142 125/141 118/134 119/135\n"
"f 121/137 126/142 119/135 120/136\n"
"f 122/138 123/139 126/142 121/137\n"
"\n"
"f 126/142 125/141 124/140 123/139\n"
"\n"
"#\n"
"# Shape 9: bottom-right\n"
@ -288,14 +445,31 @@ static const std::string catmark_nonman_edges =
"v 0.7500 0.0000 -1.05\n"
"v 0.8965 -0.3535 -1.05\n"
"\n"
"f 127 135 136 128 \n"
"f 128 136 137 129 \n"
"f 129 137 138 130 \n"
"f 130 138 139 131 \n"
"f 131 132 140 139 \n"
"f 132 133 141 140 \n"
"f 133 134 142 141 \n"
"f 134 127 135 142 \n"
"vt 0.8300 0.0450\n"
"vt 0.9184 0.0816\n"
"vt 0.9550 0.1700\n"
"vt 0.9184 0.2584\n"
"vt 0.8300 0.2950\n"
"vt 0.7416 0.2584\n"
"vt 0.7050 0.1700\n"
"vt 0.7416 0.0816\n"
"vt 0.8300 0.1075\n"
"vt 0.8742 0.1258\n"
"vt 0.8925 0.1700\n"
"vt 0.8742 0.2142\n"
"vt 0.8300 0.2325\n"
"vt 0.7858 0.2142\n"
"vt 0.7675 0.1700\n"
"vt 0.7858 0.1258\n"
"\n"
"f 127/143 135/151 136/152 128/144\n"
"f 128/144 136/152 137/153 129/145\n"
"f 129/145 137/153 138/154 130/146\n"
"f 130/146 138/154 139/155 131/147\n"
"f 131/147 132/148 140/156 139/155\n"
"f 132/148 133/149 141/157 140/156\n"
"f 133/149 134/150 142/158 141/157\n"
"f 134/150 127/143 135/151 142/158\n"
"\n"
"t interpolateboundary 1/0/0 1\n"
"\n"

View File

@ -37,10 +37,20 @@ static const std::string catmark_nonman_verts =
"v -1.0 0 0.5 \n"
"v -0.75 0 0.25 \n"
"v -0.5 0 0.5 \n"
"#\n"
"vt 0.05 0.85\n"
"vt 0.25 0.75\n"
"vt 0.45 0.85\n"
"vt 0.05 1.00\n"
"vt 0.25 0.90\n"
"vt 0.45 1.00\n"
"vt 0.15 0.65\n"
"vt 0.25 0.55\n"
"vt 0.35 0.65\n"
"\n"
"f 1 2 5 4\n"
"f 2 3 6 5\n"
"f 2 7 8 9\n"
"f 1/1 2/2 5/5 4/4\n"
"f 2/2 3/3 6/6 5/5\n"
"f 2/2 7/7 8/8 9/9\n"
"\n"
"#\n"
"# Shape 2: top-right\n"
@ -57,10 +67,23 @@ static const std::string catmark_nonman_verts =
"v 0.75 0 0.25\n"
"v 1.25 0 0.25\n"
"\n"
"f 10 11 14 13\n"
"f 11 12 15 14\n"
"f 11 16 18 19\n"
"f 17 11 19 20\n"
"vt 0.55 0.85\n"
"vt 0.75 0.76\n"
"vt 0.95 0.85\n"
"vt 0.55 1.00\n"
"vt 0.75 0.90\n"
"vt 0.95 1.00\n"
"vt 0.55 0.65\n"
"vt 0.95 0.65\n"
"vt 0.55 0.50\n"
"vt 0.75 0.60\n"
"vt 0.95 0.50\n"
"vt 0.75 0.74\n"
"\n"
"f 10/10 11/11 14/14 13/13\n"
"f 11/11 12/12 15/15 14/14\n"
"f 11/21 16/16 18/18 19/19\n"
"f 17/17 11/21 19/19 20/20\n"
"\n"
"#\n"
"# Shape 3: bottom-left\n"
@ -76,12 +99,25 @@ static const std::string catmark_nonman_verts =
"v -0.25 0.5 -1.25\n"
"v -1.1 0 -0.25\n"
"v -0.4 0 -0.25\n"
"#\n"
"vt 0.15 0.025\n"
"vt 0.25 0.025\n"
"vt 0.35 0.025\n"
"vt 0.15 0.125\n"
"vt 0.25 0.125\n"
"vt 0.35 0.125\n"
"vt 0.15 0.225\n"
"vt 0.25 0.225\n"
"vt 0.35 0.225\n"
"vt 0.15 0.45\n"
"vt 0.35 0.45\n"
"vt 0.25 0.30\n"
"\n"
"f 21 22 25 24\n"
"f 22 23 26 25\n"
"f 24 25 28 27\n"
"f 25 26 29 28\n"
"f 30 25 31\n"
"f 21/22 22/23 25/26 24/25\n"
"f 22/23 23/24 26/27 25/26\n"
"f 24/25 25/26 28/29 27/28\n"
"f 25/26 26/27 29/30 28/29\n"
"f 30/31 25/33 31/32\n"
"\n"
"#\n"
"# Shape 4: bottom-right\n"
@ -103,15 +139,34 @@ static const std::string catmark_nonman_verts =
"v 0.25 0.5 -0.25\n"
"v 0.75 0.5 -0.25\n"
"v 1.25 0.5 -0.25\n"
"#\n"
"vt 0.65 0.025\n"
"vt 0.75 0.025\n"
"vt 0.85 0.025\n"
"vt 0.65 0.125\n"
"vt 0.75 0.125\n"
"vt 0.85 0.125\n"
"vt 0.65 0.225\n"
"vt 0.75 0.225\n"
"vt 0.85 0.225\n"
"vt 0.65 0.475\n"
"vt 0.75 0.475\n"
"vt 0.85 0.475\n"
"vt 0.65 0.375\n"
"vt 0.85 0.375\n"
"vt 0.65 0.275\n"
"vt 0.75 0.275\n"
"vt 0.85 0.275\n"
"vt 0.75 0.375\n"
"\n"
"f 32 33 36 35\n"
"f 33 34 37 36\n"
"f 35 36 39 38\n"
"f 36 37 40 39\n"
"f 41 44 36 42\n"
"f 42 36 45 43\n"
"f 44 46 47 36\n"
"f 36 47 48 45\n"
"f 32/34 33/35 36/38 35/37\n"
"f 33/35 34/36 37/39 36/38\n"
"f 35/37 36/38 39/41 38/40\n"
"f 36/38 37/39 40/42 39/41\n"
"f 41/43 44/46 36/51 42/44\n"
"f 42/44 36/51 45/47 43/45\n"
"f 44/46 46/48 47/49 36/51\n"
"f 36/51 47/49 48/50 45/47\n"
"\n"
"#\n"
"# Additional 'shape' 5: isolated non-manifold vertex in center\n"

View File

@ -49,30 +49,56 @@ static const std::string loop_nonman_edges =
"v -1.15 -0.2 1.15\n"
"v -1.05 -0.2 1.05\n"
"\n"
"f 1 8 2\n"
"f 2 8 9\n"
"f 2 9 3\n"
"f 3 9 10\n"
"f 3 10 4\n"
"f 4 10 5\n"
"f 5 10 11\n"
"f 5 11 6\n"
"f 6 11 12\n"
"f 6 12 7\n"
"f 13 8 9\n"
"f 13 9 14\n"
"f 14 9 10\n"
"f 14 10 15\n"
"f 15 10 11\n"
"f 15 11 16\n"
"f 16 11 12\n"
"f 17 9 8\n"
"f 17 18 9\n"
"f 18 10 9\n"
"f 18 19 10\n"
"f 19 11 10\n"
"f 19 20 11\n"
"f 20 12 11\n"
"vt 0.02 0.83\n"
"vt 0.07 0.88\n"
"vt 0.12 0.93\n"
"vt 0.17 0.98\n"
"vt 0.22 0.93\n"
"vt 0.27 0.88\n"
"vt 0.32 0.83\n"
"vt 0.07 0.78\n"
"vt 0.12 0.83\n"
"vt 0.17 0.88\n"
"vt 0.22 0.83\n"
"vt 0.27 0.78\n"
"vt 0.11 0.78\n"
"vt 0.14 0.78\n"
"vt 0.20 0.78\n"
"vt 0.23 0.78\n"
"vt 0.11 0.68\n"
"vt 0.14 0.68\n"
"vt 0.20 0.68\n"
"vt 0.23 0.68\n"
"vt 0.07 0.73\n"
"vt 0.12 0.73\n"
"vt 0.17 0.73\n"
"vt 0.22 0.73\n"
"vt 0.27 0.73\n"
"\n"
"f 1/1 8/8 2/2 \n"
"f 2/2 8/8 9/9 \n"
"f 2/2 9/9 3/3 \n"
"f 3/3 9/9 10/10\n"
"f 3/3 10/10 4/4 \n"
"f 4/4 10/10 5/5 \n"
"f 5/5 10/10 11/11\n"
"f 5/5 11/11 6/6 \n"
"f 6/6 11/11 12/12\n"
"f 6/6 12/12 7/7 \n"
"f 13/13 8/21 9/22\n"
"f 13/13 9/22 14/14\n"
"f 14/14 9/22 10/23\n"
"f 14/14 10/23 15/15\n"
"f 15/15 10/23 11/24\n"
"f 15/15 11/24 16/16\n"
"f 16/16 11/24 12/25\n"
"f 17/17 9/22 8/21\n"
"f 17/17 18/18 9/22\n"
"f 18/18 10/23 9/22\n"
"f 18/18 19/19 10/23\n"
"f 19/19 11/24 10/23\n"
"f 19/19 20/20 11/24\n"
"f 20/20 12/25 11/24\n"
"\n"
"#\n"
"# Shape 2: top-middle\n"
@ -91,21 +117,37 @@ static const std::string loop_nonman_edges =
"v 0.166667 0.0 1.68302\n"
"v 0.0 -0.50 1.25\n"
"\n"
"f 21 22 25\n"
"f 22 23 26\n"
"f 21 25 24\n"
"f 22 26 25\n"
"f 23 27 26\n"
"f 24 25 28\n"
"f 25 26 29\n"
"f 26 27 30\n"
"f 25 29 28\n"
"f 26 30 29\n"
"f 28 29 31\n"
"f 29 30 32\n"
"f 29 32 31\n"
"vt 0.40 0.68\n"
"vt 0.50 0.68\n"
"vt 0.60 0.68\n"
"vt 0.35 0.77\n"
"vt 0.45 0.77\n"
"vt 0.55 0.77\n"
"vt 0.65 0.77\n"
"vt 0.40 0.85\n"
"vt 0.50 0.85\n"
"vt 0.60 0.85\n"
"vt 0.45 0.93\n"
"vt 0.55 0.93\n"
"vt 0.50 1.00\n"
"vt 0.45 0.94\n"
"vt 0.55 0.94\n"
"\n"
"f 21/26 22/27 25/30\n"
"f 22/27 23/28 26/31\n"
"f 21/26 25/30 24/29\n"
"f 22/27 26/31 25/30\n"
"f 23/28 27/32 26/31\n"
"f 24/29 25/30 28/33\n"
"f 25/30 26/31 29/34\n"
"f 26/31 27/32 30/35\n"
"f 25/30 29/34 28/33\n"
"f 26/31 30/35 29/34\n"
"f 28/33 29/34 31/36\n"
"f 29/34 30/35 32/37\n"
"f 29/34 32/37 31/36\n"
"# Add face to existing manifold edge, making it non-manifold:\n"
"f 33 25 26\n"
"f 33/38 25/39 26/40\n"
"\n"
"#\n"
"# Shape 3: top-right\n"
@ -121,14 +163,31 @@ static const std::string loop_nonman_edges =
"v 1.75 0 1.25\n"
"v 1.6 0 1.6\n"
"\n"
"f 34 35 36\n"
"f 34 35 37\n"
"f 34 35 38\n"
"f 34 35 39\n"
"f 35 34 40\n"
"f 35 34 41\n"
"f 35 34 42\n"
"f 35 34 43\n"
"vt 0.68 0.74\n"
"vt 0.80 0.74\n"
"vt 0.74 0.68\n"
"vt 0.74 0.80\n"
"vt 0.85 0.74\n"
"vt 0.97 0.74\n"
"vt 0.91 0.68\n"
"vt 0.91 0.80\n"
"vt 0.68 0.91\n"
"vt 0.80 0.91\n"
"vt 0.74 0.85\n"
"vt 0.74 0.97\n"
"vt 0.85 0.91\n"
"vt 0.97 0.91\n"
"vt 0.91 0.85\n"
"vt 0.91 0.97\n"
"\n"
"f 34/41 35/42 36/44\n"
"f 35/42 34/41 40/43\n"
"f 34/45 35/46 37/48\n"
"f 35/46 34/45 41/47\n"
"f 34/49 35/50 38/52\n"
"f 35/50 34/49 42/51\n"
"f 34/53 35/54 39/56\n"
"f 35/54 34/53 43/55\n"
"\n"
"#\n"
"# Shape 4: center-left\n"
@ -141,13 +200,21 @@ static const std::string loop_nonman_edges =
"v -1.25 -0.2 0.15\n"
"v -0.95 0 0.15\n"
"\n"
"f 44 45 48\n"
"f 45 46 49\n"
"f 46 47 50\n"
"f 45 49 48\n"
"f 46 50 49\n"
"vt 0.04 0.46\n"
"vt 0.12 0.46\n"
"vt 0.22 0.46\n"
"vt 0.31 0.46\n"
"vt 0.08 0.55\n"
"vt 0.17 0.55\n"
"vt 0.26 0.55\n"
"\n"
"f 44/57 45/58 48/61\n"
"f 45/58 46/59 49/62\n"
"f 46/59 47/60 50/63\n"
"f 45/58 49/62 48/61\n"
"f 46/59 50/63 49/62\n"
"# Add triangle with degenerate edge along existing edge:\n"
"f 46 46 49\n"
"f 46/59 46/59 49/62\n"
"\n"
"#\n"
"# Shape 5: center-middle\n"
@ -165,21 +232,34 @@ static const std::string loop_nonman_edges =
"v -0.166667 0.0 0.43302\n"
"v 0.166667 0.0 0.43302\n"
"\n"
"f 51 52 55\n"
"f 52 53 56\n"
"f 51 55 54\n"
"f 52 56 55\n"
"f 53 57 56\n"
"f 54 55 58\n"
"f 55 56 59\n"
"f 56 57 60\n"
"f 55 59 58\n"
"f 56 60 59\n"
"f 58 59 61\n"
"f 59 60 62\n"
"f 59 62 61\n"
"vt 0.40 0.37\n"
"vt 0.50 0.37\n"
"vt 0.60 0.37\n"
"vt 0.35 0.46\n"
"vt 0.45 0.46\n"
"vt 0.55 0.46\n"
"vt 0.65 0.46\n"
"vt 0.40 0.54\n"
"vt 0.50 0.54\n"
"vt 0.60 0.54\n"
"vt 0.45 0.63\n"
"vt 0.55 0.63\n"
"\n"
"f 51/64 52/65 55/68\n"
"f 52/65 53/66 56/69\n"
"f 51/64 55/68 54/67\n"
"f 52/65 56/69 55/68\n"
"f 53/66 57/70 56/69\n"
"f 54/67 55/68 58/71\n"
"f 55/68 56/69 59/72\n"
"f 56/69 57/70 60/73\n"
"f 55/68 59/72 58/71\n"
"f 56/69 60/73 59/72\n"
"f 58/71 59/72 61/74\n"
"f 59/72 60/73 62/75\n"
"f 59/72 62/75 61/74\n"
"# Add a triangle with a degenerate edge to the interior:\n"
"f 55 56 56\n"
"f 55/68 56/69 56/69\n"
"\n"
"#\n"
"# Shape 6: center-right\n"
@ -197,29 +277,45 @@ static const std::string loop_nonman_edges =
"v 1.083333 0.0 0.43302\n"
"v 1.416667 0.0 0.43302\n"
"\n"
"f 63 64 67\n"
"f 64 65 68\n"
"f 63 67 66\n"
"f 64 68 67\n"
"f 65 69 68\n"
"f 66 67 70\n"
"f 67 68 71\n"
"f 68 69 72\n"
"f 67 71 70\n"
"f 68 72 71\n"
"f 70 71 73\n"
"f 71 72 74\n"
"f 71 74 73\n"
"# Add a completely degenerate triangle to the interior:\n"
"f 67 67 67\n"
"vt 0.73 0.37\n"
"vt 0.83 0.37\n"
"vt 0.93 0.37\n"
"vt 0.68 0.46\n"
"vt 0.78 0.46\n"
"vt 0.88 0.46\n"
"vt 0.98 0.46\n"
"vt 0.73 0.54\n"
"vt 0.83 0.54\n"
"vt 0.93 0.54\n"
"vt 0.78 0.63\n"
"vt 0.88 0.63\n"
"\n"
"f 63/76 64/77 67/80\n"
"f 64/77 65/78 68/81\n"
"f 63/76 67/80 66/79\n"
"f 64/77 68/81 67/80\n"
"f 65/78 69/82 68/81\n"
"f 66/79 67/80 70/83\n"
"f 67/80 68/81 71/84\n"
"f 68/81 69/82 72/85\n"
"f 67/80 71/84 70/83\n"
"f 68/81 72/85 71/84\n"
"f 70/83 71/84 73/86\n"
"f 71/84 72/85 74/87\n"
"f 71/84 74/87 73/86\n"
"# Add a completely degenerate triangle to the interior:\n"
"f 67/80 67/80 67/80\n"
"\n"
"#\n"
"# Shape 7: bottom-left\n"
"#\n"
"v -1.25 0.0 -1.25\n"
"\n"
"f 1 1 1\n"
"vt 0.12 0.12\n"
"vt 0.22 0.12\n"
"vt 0.17 0.22\n"
"\n"
"f 75/88 75/89 75/90\n"
"\n"
"#\n"
"# Shape 8: bottom-middle\n"
@ -234,14 +330,24 @@ static const std::string loop_nonman_edges =
"v 0.125 -0.1 -1.15\n"
"v 0.375 0 -1.15\n"
"\n"
"f 76 77 81\n"
"f 77 82 81\n"
"vt 0.35 0.14\n"
"vt 0.43 0.14\n"
"vt 0.50 0.14\n"
"vt 0.57 0.14\n"
"vt 0.65 0.14\n"
"vt 0.39 0.20\n"
"vt 0.46 0.20\n"
"vt 0.54 0.20\n"
"vt 0.61 0.20\n"
"\n"
"f 76/91 77/92 81/96\n"
"f 77/92 82/97 81/96\n"
"# Reverse winding of the 3 middle faces:\n"
"f 82 78 77\n"
"f 82 83 78\n"
"f 83 79 78\n"
"f 79 84 83\n"
"f 79 80 84\n"
"f 82/97 78/93 77/92\n"
"f 82/97 83/98 78/93\n"
"f 83/98 79/94 78/93\n"
"f 79/94 84/99 83/98\n"
"f 79/94 80/95 84/99\n"
"\n"
"#\n"
"# Shape 9: bottom-right\n"
@ -259,20 +365,33 @@ static const std::string loop_nonman_edges =
"v 1.083333 0.0 -0.81698\n"
"v 1.416667 0.0 -0.81698\n"
"\n"
"f 85 86 89\n"
"f 86 87 90\n"
"f 85 89 88\n"
"f 86 90 89\n"
"f 87 91 90\n"
"f 88 89 92\n"
"vt 0.73 0.04\n"
"vt 0.83 0.04\n"
"vt 0.93 0.04\n"
"vt 0.68 0.13\n"
"vt 0.78 0.13\n"
"vt 0.88 0.13\n"
"vt 0.98 0.13\n"
"vt 0.73 0.21\n"
"vt 0.83 0.21\n"
"vt 0.93 0.21\n"
"vt 0.78 0.30\n"
"vt 0.88 0.30\n"
"\n"
"f 85/100 86/101 89/104\n"
"f 86/101 87/102 90/105\n"
"f 85/100 89/104 88/103\n"
"f 86/101 90/105 89/104\n"
"f 87/102 91/106 90/105\n"
"f 88/103 89/104 92/107\n"
"# Reverse the winding order of the interior face:\n"
"f 93 90 89\n"
"f 90 91 94\n"
"f 89 93 92\n"
"f 90 94 93\n"
"f 92 93 95\n"
"f 93 94 96\n"
"f 93 96 95\n"
"f 93/108 90/105 89/104\n"
"f 90/105 91/106 94/109\n"
"f 89/104 93/108 92/107\n"
"f 90/105 94/109 93/108\n"
"f 92/107 93/108 95/110\n"
"f 93/108 94/109 96/111\n"
"f 93/108 96/111 95/110\n"
"\n"
"t interpolateboundary 1/0/0 1\n"
"\n"

View File

@ -28,18 +28,26 @@ static const std::string loop_nonman_verts =
"#\n"
"# Shape 1: top-left\n"
"#\n"
"v -1.25 0.0 0.75\n"
"v -1.25 0.0 0.875\n"
"v -0.75 -0.25 0.75\n"
"v -0.25 0.0 0.75\n"
"v -0.25 0.0 0.875\n"
"v -1.0 0.0 1.25\n"
"v -0.5 0.0 1.25\n"
"v -1.0 0.0 0.25\n"
"v -0.5 0.0 0.25\n"
"#\n"
"vt 0.05 0.80\n"
"vt 0.25 0.75\n"
"vt 0.45 0.80\n"
"vt 0.15 0.95\n"
"vt 0.35 0.95\n"
"vt 0.15 0.55\n"
"vt 0.35 0.55\n"
"\n"
"f 1 2 4\n"
"f 2 5 4\n"
"f 2 3 5\n"
"f 2 6 7\n"
"f 1/1 2/2 4/4\n"
"f 2/2 5/5 4/4\n"
"f 2/2 3/3 5/5\n"
"f 2/2 6/6 7/7\n"
"\n"
"#\n"
"# Shape 2: top-right\n"
@ -53,13 +61,24 @@ static const std::string loop_nonman_verts =
"v 0.5 0.0 0.25\n"
"v 1.0 0.0 0.25\n"
"v 1.25 0.0 0.625\n"
"#\n"
"vt 0.55 0.80\n"
"vt 0.75 0.76\n"
"vt 0.95 0.80\n"
"vt 0.65 0.95\n"
"vt 0.85 0.95\n"
"vt 0.55 0.70\n"
"vt 0.65 0.55\n"
"vt 0.85 0.55\n"
"vt 0.95 0.70\n"
"vt 0.75 0.74\n"
"\n"
"f 8 9 11\n"
"f 9 12 11\n"
"f 9 10 12\n"
"f 9 13 14\n"
"f 15 9 14\n"
"f 15 16 9\n"
"f 8/8 9/9 11/11\n"
"f 9/9 12/12 11/11\n"
"f 9/9 10/10 12/12\n"
"f 9/17 13/13 14/14\n"
"f 15/15 9/17 14/14\n"
"f 15/15 16/16 9/17\n"
"\n"
"#\n"
"# Shape 3: bottom-left\n"
@ -73,14 +92,25 @@ static const std::string loop_nonman_verts =
"v -0.5 -0.433013 -1.0\n"
"v -1.0 0.0 -0.5\n"
"v -0.5 0.0 -0.5\n"
"#\n"
"vt 0.25 0.20\n"
"vt 0.05 0.20\n"
"vt 0.15 0.03\n"
"vt 0.35 0.03\n"
"vt 0.45 0.20\n"
"vt 0.35 0.37\n"
"vt 0.15 0.37\n"
"vt 0.03 0.47\n"
"vt 0.23 0.47\n"
"vt 0.13 0.37\n"
"\n"
"f 17 18 19\n"
"f 17 19 20\n"
"f 17 20 21\n"
"f 17 21 22\n"
"f 17 22 23\n"
"f 17 23 18\n"
"f 17 25 24\n"
"f 17/18 18/19 19/20\n"
"f 17/18 19/20 20/21\n"
"f 17/18 20/21 21/22\n"
"f 17/18 21/22 22/23\n"
"f 17/18 22/23 23/24\n"
"f 17/18 23/24 18/19\n"
"f 17/27 25/26 24/25\n"
"\n"
"#\n"
"# Shape 4: bottom-right\n"
@ -98,19 +128,34 @@ static const std::string loop_nonman_verts =
"v 0.25 0.0 -0.5\n"
"v 0.5 -0.433013 -0.5\n"
"v 1.0 -0.433013 -0.5\n"
"#\n"
"vt 0.66 0.36\n"
"vt 0.52 0.36\n"
"vt 0.59 0.24\n"
"vt 0.73 0.24\n"
"vt 0.80 0.36\n"
"vt 0.73 0.48\n"
"vt 0.59 0.48\n"
"vt 0.70 0.14\n"
"vt 0.77 0.26\n"
"vt 0.91 0.26\n"
"vt 0.98 0.14\n"
"vt 0.91 0.02\n"
"vt 0.77 0.02\n"
"vt 0.84 0.14\n"
"\n"
"f 26 27 28\n"
"f 26 28 29\n"
"f 26 29 30\n"
"f 26 30 31\n"
"f 26 31 32\n"
"f 26 32 27\n"
"f 26 34 33\n"
"f 26 35 34\n"
"f 26 36 35\n"
"f 26 37 36\n"
"f 26 38 37\n"
"f 26 33 38\n"
"f 26/28 27/29 28/30\n"
"f 26/28 28/30 29/31\n"
"f 26/28 29/31 30/32\n"
"f 26/28 30/32 31/33\n"
"f 26/28 31/33 32/34\n"
"f 26/28 32/34 27/29\n"
"f 26/41 34/36 33/35\n"
"f 26/41 35/37 34/36\n"
"f 26/41 36/38 35/37\n"
"f 26/41 37/39 36/38\n"
"f 26/41 38/40 37/39\n"
"f 26/41 33/35 38/40\n"
"\n"
"#\n"
"# Additional 'shape' 5: isolated non-manifold vertex in center\n"