diff --git a/examples/glViewer/init_shapes.h b/examples/glViewer/init_shapes.h index 4713ccdc..b7cc6117 100644 --- a/examples/glViewer/init_shapes.h +++ b/examples/glViewer/init_shapes.h @@ -76,6 +76,8 @@ static std::vector g_defaultShapes; #include #include #include +#include +#include #include #include #include @@ -141,6 +143,8 @@ static void initShapes() { g_defaultShapes.push_back( ShapeDesc("catmark_tent", catmark_tent, kCatmark ) ); g_defaultShapes.push_back( ShapeDesc("catmark_torus", catmark_torus, kCatmark ) ); g_defaultShapes.push_back( ShapeDesc("catmark_torus_creases0", catmark_torus_creases0, kCatmark ) ); + g_defaultShapes.push_back( ShapeDesc("catmark_smoothtris0", catmark_smoothtris0, kCatmark ) ); + g_defaultShapes.push_back( ShapeDesc("catmark_smoothtris1", catmark_smoothtris1, kCatmark ) ); // g_defaultShapes.push_back( ShapeDesc("catmark_square_hedit0", catmark_square_hedit0, kCatmark ) ); // g_defaultShapes.push_back( ShapeDesc("catmark_square_hedit1", catmark_square_hedit1, kCatmark ) ); // g_defaultShapes.push_back( ShapeDesc("catmark_square_hedit2", catmark_square_hedit2, kCatmark ) ); diff --git a/examples/mayaPolySmooth/mayaPolySmooth.cpp b/examples/mayaPolySmooth/mayaPolySmooth.cpp index 9a975de1..772b31a8 100644 --- a/examples/mayaPolySmooth/mayaPolySmooth.cpp +++ b/examples/mayaPolySmooth/mayaPolySmooth.cpp @@ -638,7 +638,7 @@ MayaPolySmooth::compute( const MPlug& plug, MDataBlock& data ) { options.SetCreasingMethod(creaseMethodVal ? OpenSubdiv::Sdc::Options::CREASE_CHAIKIN : OpenSubdiv::Sdc::Options::CREASE_UNIFORM); options.SetTriangleSubdivision(smoothTriangles ? - OpenSubdiv::Sdc::Options::TRI_SUB_NEW : OpenSubdiv::Sdc::Options::TRI_SUB_OLD); + OpenSubdiv::Sdc::Options::TRI_SUB_SMOOTH : OpenSubdiv::Sdc::Options::TRI_SUB_CATMARK); float maxCreaseSharpness=0.0f; OpenSubdiv::Far::TopologyRefiner * refiner = diff --git a/opensubdiv/sdc/catmarkScheme.h b/opensubdiv/sdc/catmarkScheme.h index 6409bb8d..c5c2d35d 100644 --- a/opensubdiv/sdc/catmarkScheme.h +++ b/opensubdiv/sdc/catmarkScheme.h @@ -69,7 +69,7 @@ Scheme::assignSmoothMaskForEdge(EDGE const& edge, MASK& mask) cons // bool face0IsTri = false; bool face1IsTri = false; - bool useTriangleOption = (_options.GetTriangleSubdivision() != Options::TRI_SUB_NORMAL); + bool useTriangleOption = (_options.GetTriangleSubdivision() == Options::TRI_SUB_SMOOTH); if (useTriangleOption) { if (faceCount == 2) { // @@ -88,7 +88,7 @@ Scheme::assignSmoothMaskForEdge(EDGE const& edge, MASK& mask) cons } } - if (!useTriangleOption) { + if (not useTriangleOption) { mask.VertexWeight(0) = 0.25f; mask.VertexWeight(1) = 0.25f; @@ -103,7 +103,7 @@ Scheme::assignSmoothMaskForEdge(EDGE const& edge, MASK& mask) cons } } else { // - // This mimics the implementation in Hbr in terms of order of operations: + // This mimics the implementation in Hbr in terms of order of operations. // const Weight CATMARK_SMOOTH_TRI_EDGE_WEIGHT = 0.470f; diff --git a/opensubdiv/sdc/options.h b/opensubdiv/sdc/options.h index 3e052a85..cd858201 100644 --- a/opensubdiv/sdc/options.h +++ b/opensubdiv/sdc/options.h @@ -96,9 +96,8 @@ public: CREASE_CHAIKIN }; enum TriangleSubdivision { - TRI_SUB_NORMAL = 0, - TRI_SUB_OLD, - TRI_SUB_NEW + TRI_SUB_CATMARK = 0, + TRI_SUB_SMOOTH }; public: @@ -107,7 +106,7 @@ public: Options() : _vvarBoundInterp(VVAR_BOUNDARY_NONE), _fvarLinInterp(FVAR_LINEAR_ALL), _creasingMethod(CREASE_UNIFORM), - _triangleSub(TRI_SUB_NORMAL) { } + _triangleSub(TRI_SUB_CATMARK) { } ~Options() { } // diff --git a/regression/common/vtr_utils.h b/regression/common/vtr_utils.h index f6f9e31b..7ad6985e 100644 --- a/regression/common/vtr_utils.h +++ b/regression/common/vtr_utils.h @@ -54,7 +54,7 @@ GetSdcOptions(Shape const & shape) { result.SetVVarBoundaryInterpolation(Options::VVAR_BOUNDARY_EDGE_ONLY); result.SetCreasingMethod(Options::CREASE_UNIFORM); - result.SetTriangleSubdivision(Options::TRI_SUB_NORMAL); + result.SetTriangleSubdivision(Options::TRI_SUB_CATMARK); for (int i=0; i<(int)shape.tags.size(); ++i) { @@ -91,12 +91,6 @@ GetSdcOptions(Shape const & shape) { assert(0); } else printf( "expecting single int argument for \"facevaryingpropagatecorners\"\n" ); - } else if (t->name=="smoothtriangles") { - - if (shape.scheme!=kCatmark) { - printf("the \"smoothtriangles\" tag can only be applied to Catmark meshes\n"); - continue; - } } else if (t->name=="creasemethod") { if ((int)t->stringargs.size()==0) { @@ -104,12 +98,26 @@ GetSdcOptions(Shape const & shape) { continue; } - if( t->stringargs[0]=="normal" ) + if (t->stringargs[0]=="normal") { result.SetCreasingMethod(Options::CREASE_UNIFORM); - else if( t->stringargs[0]=="chaikin" ) + } else if (t->stringargs[0]=="chaikin") { result.SetCreasingMethod(Options::CREASE_CHAIKIN); - else + } else { printf("the \"creasemethod\" tag only accepts \"normal\" or \"chaikin\" as value (%s)\n", t->stringargs[0].c_str()); + } + } else if (t->name=="smoothtriangles") { + + if (shape.scheme!=kCatmark) { + printf("the \"smoothtriangles\" tag can only be applied to Catmark meshes\n"); + continue; + } + if (t->stringargs[0]=="catmark") { + result.SetTriangleSubdivision(Options::TRI_SUB_CATMARK); + } else if (t->stringargs[0]=="smooth") { + result.SetTriangleSubdivision(Options::TRI_SUB_SMOOTH); + } else { + printf("the \"smoothtriangles\" tag only accepts \"catmark\" or \"smooth\" as value (%s)\n", t->stringargs[0].c_str()); + } } } diff --git a/regression/shapes/catmark_smoothtris0.h b/regression/shapes/catmark_smoothtris0.h new file mode 100644 index 00000000..0fd2bd49 --- /dev/null +++ b/regression/shapes/catmark_smoothtris0.h @@ -0,0 +1,235 @@ +// +// Copyright 2013 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// + +static const std::string catmark_smoothtris0 = +"# This file uses centimeters as units for non-parametric coordinates.\n" +"\n" +"v 0.951057 -1.000000 -0.309017\n" +"v 0.809018 -1.000000 -0.587786\n" +"v 0.587786 -1.000000 -0.809017\n" +"v 0.309017 -1.000000 -0.951057\n" +"v 0.000000 -1.000000 -1.000000\n" +"v -0.309017 -1.000000 -0.951057\n" +"v -0.587785 -1.000000 -0.809017\n" +"v -0.809017 -1.000000 -0.587785\n" +"v -0.951057 -1.000000 -0.309017\n" +"v -1.000000 -1.000000 0.000000\n" +"v -0.951057 -1.000000 0.309017\n" +"v -0.809017 -1.000000 0.587785\n" +"v -0.587785 -1.000000 0.809017\n" +"v -0.309017 -1.000000 0.951057\n" +"v -0.000000 -1.000000 1.000000\n" +"v 0.309017 -1.000000 0.951057\n" +"v 0.587785 -1.000000 0.809017\n" +"v 0.809017 -1.000000 0.587785\n" +"v 0.951057 -1.000000 0.309017\n" +"v 1.000000 -1.000000 0.000000\n" +"v 0.951057 1.000000 -0.309017\n" +"v 0.809018 1.000000 -0.587786\n" +"v 0.587786 1.000000 -0.809017\n" +"v 0.309017 1.000000 -0.951057\n" +"v 0.000000 1.000000 -1.000000\n" +"v -0.309017 1.000000 -0.951057\n" +"v -0.587785 1.000000 -0.809017\n" +"v -0.809017 1.000000 -0.587785\n" +"v -0.951057 1.000000 -0.309017\n" +"v -1.000000 1.000000 0.000000\n" +"v -0.951057 1.000000 0.309017\n" +"v -0.809017 1.000000 0.587785\n" +"v -0.587785 1.000000 0.809017\n" +"v -0.309017 1.000000 0.951057\n" +"v -0.000000 1.000000 1.000000\n" +"v 0.309017 1.000000 0.951057\n" +"v 0.587785 1.000000 0.809017\n" +"v 0.809017 1.000000 0.587785\n" +"v 0.951057 1.000000 0.309017\n" +"v 1.000000 1.000000 0.000000\n" +"v 0.000000 -1.000000 0.000000\n" +"v 0.000000 1.000000 0.000000\n" +"vt 0.648603 0.107966\n" +"vt 0.626409 0.064408\n" +"vt 0.591842 0.029841\n" +"vt 0.548284 0.007647\n" +"vt 0.500000 -0.000000\n" +"vt 0.451716 0.007647\n" +"vt 0.408159 0.029841\n" +"vt 0.373591 0.064409\n" +"vt 0.351397 0.107966\n" +"vt 0.343750 0.156250\n" +"vt 0.351397 0.204534\n" +"vt 0.373591 0.248091\n" +"vt 0.408159 0.282659\n" +"vt 0.451716 0.304853\n" +"vt 0.500000 0.312500\n" +"vt 0.548284 0.304853\n" +"vt 0.591841 0.282659\n" +"vt 0.626409 0.248091\n" +"vt 0.648603 0.204534\n" +"vt 0.656250 0.156250\n" +"vt 0.375000 0.312500\n" +"vt 0.387500 0.312500\n" +"vt 0.400000 0.312500\n" +"vt 0.412500 0.312500\n" +"vt 0.425000 0.312500\n" +"vt 0.437500 0.312500\n" +"vt 0.450000 0.312500\n" +"vt 0.462500 0.312500\n" +"vt 0.475000 0.312500\n" +"vt 0.487500 0.312500\n" +"vt 0.500000 0.312500\n" +"vt 0.512500 0.312500\n" +"vt 0.525000 0.312500\n" +"vt 0.537500 0.312500\n" +"vt 0.550000 0.312500\n" +"vt 0.562500 0.312500\n" +"vt 0.575000 0.312500\n" +"vt 0.587500 0.312500\n" +"vt 0.600000 0.312500\n" +"vt 0.612500 0.312500\n" +"vt 0.625000 0.312500\n" +"vt 0.375000 0.688440\n" +"vt 0.387500 0.688440\n" +"vt 0.400000 0.688440\n" +"vt 0.412500 0.688440\n" +"vt 0.425000 0.688440\n" +"vt 0.437500 0.688440\n" +"vt 0.450000 0.688440\n" +"vt 0.462500 0.688440\n" +"vt 0.475000 0.688440\n" +"vt 0.487500 0.688440\n" +"vt 0.500000 0.688440\n" +"vt 0.512500 0.688440\n" +"vt 0.525000 0.688440\n" +"vt 0.537500 0.688440\n" +"vt 0.550000 0.688440\n" +"vt 0.562500 0.688440\n" +"vt 0.575000 0.688440\n" +"vt 0.587500 0.688440\n" +"vt 0.600000 0.688440\n" +"vt 0.612500 0.688440\n" +"vt 0.625000 0.688440\n" +"vt 0.648603 0.795466\n" +"vt 0.626409 0.751908\n" +"vt 0.591842 0.717341\n" +"vt 0.548284 0.695147\n" +"vt 0.500000 0.687500\n" +"vt 0.451716 0.695147\n" +"vt 0.408159 0.717341\n" +"vt 0.373591 0.751909\n" +"vt 0.351397 0.795466\n" +"vt 0.343750 0.843750\n" +"vt 0.351397 0.892034\n" +"vt 0.373591 0.935591\n" +"vt 0.408159 0.970159\n" +"vt 0.451716 0.992353\n" +"vt 0.500000 1.000000\n" +"vt 0.548284 0.992353\n" +"vt 0.591841 0.970159\n" +"vt 0.626409 0.935591\n" +"vt 0.648603 0.892034\n" +"vt 0.656250 0.843750\n" +"vt 0.500000 0.150000\n" +"vt 0.500000 0.837500\n" +"f 1/21 2/22 21/42\n" +"f 21/42 2/22 22/43\n" +"f 2/22 3/23 22/43\n" +"f 22/43 3/23 23/44\n" +"f 3/23 4/24 23/44\n" +"f 23/44 4/24 24/45\n" +"f 4/24 5/25 24/45\n" +"f 24/45 5/25 25/46\n" +"f 5/25 6/26 25/46\n" +"f 25/46 6/26 26/47\n" +"f 6/26 7/27 26/47\n" +"f 26/47 7/27 27/48\n" +"f 7/27 8/28 27/48\n" +"f 27/48 8/28 28/49\n" +"f 8/28 9/29 28/49\n" +"f 28/49 9/29 29/50\n" +"f 9/29 10/30 29/50\n" +"f 29/50 10/30 30/51\n" +"f 10/30 11/31 30/51\n" +"f 30/51 11/31 31/52\n" +"f 11/31 12/32 31/52\n" +"f 31/52 12/32 32/53\n" +"f 12/32 13/33 32/53\n" +"f 32/53 13/33 33/54\n" +"f 13/33 14/34 33/54\n" +"f 33/54 14/34 34/55\n" +"f 14/34 15/35 34/55\n" +"f 34/55 15/35 35/56\n" +"f 15/35 16/36 35/56\n" +"f 35/56 16/36 36/57\n" +"f 16/36 17/37 36/57\n" +"f 36/57 17/37 37/58\n" +"f 17/37 18/38 37/58\n" +"f 37/58 18/38 38/59\n" +"f 18/38 19/39 38/59\n" +"f 38/59 19/39 39/60\n" +"f 19/39 20/40 39/60\n" +"f 39/60 20/40 40/61\n" +"f 20/40 1/41 40/61\n" +"f 40/61 1/41 21/62\n" +"f 2/2 1/1 41/83\n" +"f 3/3 2/2 41/83\n" +"f 4/4 3/3 41/83\n" +"f 5/5 4/4 41/83\n" +"f 6/6 5/5 41/83\n" +"f 7/7 6/6 41/83\n" +"f 8/8 7/7 41/83\n" +"f 9/9 8/8 41/83\n" +"f 10/10 9/9 41/83\n" +"f 11/11 10/10 41/83\n" +"f 12/12 11/11 41/83\n" +"f 13/13 12/12 41/83\n" +"f 14/14 13/13 41/83\n" +"f 15/15 14/14 41/83\n" +"f 16/16 15/15 41/83\n" +"f 17/17 16/16 41/83\n" +"f 18/18 17/17 41/83\n" +"f 19/19 18/18 41/83\n" +"f 20/20 19/19 41/83\n" +"f 1/1 20/20 41/83\n" +"f 21/81 22/80 42/84\n" +"f 22/80 23/79 42/84\n" +"f 23/79 24/78 42/84\n" +"f 24/78 25/77 42/84\n" +"f 25/77 26/76 42/84\n" +"f 26/76 27/75 42/84\n" +"f 27/75 28/74 42/84\n" +"f 28/74 29/73 42/84\n" +"f 29/73 30/72 42/84\n" +"f 30/72 31/71 42/84\n" +"f 31/71 32/70 42/84\n" +"f 32/70 33/69 42/84\n" +"f 33/69 34/68 42/84\n" +"f 34/68 35/67 42/84\n" +"f 35/67 36/66 42/84\n" +"f 36/66 37/65 42/84\n" +"f 37/65 38/64 42/84\n" +"f 38/64 39/63 42/84\n" +"f 39/63 40/82 42/84\n" +"f 40/82 21/81 42/84\n" +"t smoothtriangles 0/0/1 catmark\n" +"\n"; diff --git a/regression/shapes/catmark_smoothtris1.h b/regression/shapes/catmark_smoothtris1.h new file mode 100644 index 00000000..dcbf64bb --- /dev/null +++ b/regression/shapes/catmark_smoothtris1.h @@ -0,0 +1,235 @@ +// +// Copyright 2013 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// + +static const std::string catmark_smoothtris1 = +"# This file uses centimeters as units for non-parametric coordinates.\n" +"\n" +"v 0.951057 -1.000000 -0.309017\n" +"v 0.809018 -1.000000 -0.587786\n" +"v 0.587786 -1.000000 -0.809017\n" +"v 0.309017 -1.000000 -0.951057\n" +"v 0.000000 -1.000000 -1.000000\n" +"v -0.309017 -1.000000 -0.951057\n" +"v -0.587785 -1.000000 -0.809017\n" +"v -0.809017 -1.000000 -0.587785\n" +"v -0.951057 -1.000000 -0.309017\n" +"v -1.000000 -1.000000 0.000000\n" +"v -0.951057 -1.000000 0.309017\n" +"v -0.809017 -1.000000 0.587785\n" +"v -0.587785 -1.000000 0.809017\n" +"v -0.309017 -1.000000 0.951057\n" +"v -0.000000 -1.000000 1.000000\n" +"v 0.309017 -1.000000 0.951057\n" +"v 0.587785 -1.000000 0.809017\n" +"v 0.809017 -1.000000 0.587785\n" +"v 0.951057 -1.000000 0.309017\n" +"v 1.000000 -1.000000 0.000000\n" +"v 0.951057 1.000000 -0.309017\n" +"v 0.809018 1.000000 -0.587786\n" +"v 0.587786 1.000000 -0.809017\n" +"v 0.309017 1.000000 -0.951057\n" +"v 0.000000 1.000000 -1.000000\n" +"v -0.309017 1.000000 -0.951057\n" +"v -0.587785 1.000000 -0.809017\n" +"v -0.809017 1.000000 -0.587785\n" +"v -0.951057 1.000000 -0.309017\n" +"v -1.000000 1.000000 0.000000\n" +"v -0.951057 1.000000 0.309017\n" +"v -0.809017 1.000000 0.587785\n" +"v -0.587785 1.000000 0.809017\n" +"v -0.309017 1.000000 0.951057\n" +"v -0.000000 1.000000 1.000000\n" +"v 0.309017 1.000000 0.951057\n" +"v 0.587785 1.000000 0.809017\n" +"v 0.809017 1.000000 0.587785\n" +"v 0.951057 1.000000 0.309017\n" +"v 1.000000 1.000000 0.000000\n" +"v 0.000000 -1.000000 0.000000\n" +"v 0.000000 1.000000 0.000000\n" +"vt 0.648603 0.107966\n" +"vt 0.626409 0.064408\n" +"vt 0.591842 0.029841\n" +"vt 0.548284 0.007647\n" +"vt 0.500000 -0.000000\n" +"vt 0.451716 0.007647\n" +"vt 0.408159 0.029841\n" +"vt 0.373591 0.064409\n" +"vt 0.351397 0.107966\n" +"vt 0.343750 0.156250\n" +"vt 0.351397 0.204534\n" +"vt 0.373591 0.248091\n" +"vt 0.408159 0.282659\n" +"vt 0.451716 0.304853\n" +"vt 0.500000 0.312500\n" +"vt 0.548284 0.304853\n" +"vt 0.591841 0.282659\n" +"vt 0.626409 0.248091\n" +"vt 0.648603 0.204534\n" +"vt 0.656250 0.156250\n" +"vt 0.375000 0.312500\n" +"vt 0.387500 0.312500\n" +"vt 0.400000 0.312500\n" +"vt 0.412500 0.312500\n" +"vt 0.425000 0.312500\n" +"vt 0.437500 0.312500\n" +"vt 0.450000 0.312500\n" +"vt 0.462500 0.312500\n" +"vt 0.475000 0.312500\n" +"vt 0.487500 0.312500\n" +"vt 0.500000 0.312500\n" +"vt 0.512500 0.312500\n" +"vt 0.525000 0.312500\n" +"vt 0.537500 0.312500\n" +"vt 0.550000 0.312500\n" +"vt 0.562500 0.312500\n" +"vt 0.575000 0.312500\n" +"vt 0.587500 0.312500\n" +"vt 0.600000 0.312500\n" +"vt 0.612500 0.312500\n" +"vt 0.625000 0.312500\n" +"vt 0.375000 0.688440\n" +"vt 0.387500 0.688440\n" +"vt 0.400000 0.688440\n" +"vt 0.412500 0.688440\n" +"vt 0.425000 0.688440\n" +"vt 0.437500 0.688440\n" +"vt 0.450000 0.688440\n" +"vt 0.462500 0.688440\n" +"vt 0.475000 0.688440\n" +"vt 0.487500 0.688440\n" +"vt 0.500000 0.688440\n" +"vt 0.512500 0.688440\n" +"vt 0.525000 0.688440\n" +"vt 0.537500 0.688440\n" +"vt 0.550000 0.688440\n" +"vt 0.562500 0.688440\n" +"vt 0.575000 0.688440\n" +"vt 0.587500 0.688440\n" +"vt 0.600000 0.688440\n" +"vt 0.612500 0.688440\n" +"vt 0.625000 0.688440\n" +"vt 0.648603 0.795466\n" +"vt 0.626409 0.751908\n" +"vt 0.591842 0.717341\n" +"vt 0.548284 0.695147\n" +"vt 0.500000 0.687500\n" +"vt 0.451716 0.695147\n" +"vt 0.408159 0.717341\n" +"vt 0.373591 0.751909\n" +"vt 0.351397 0.795466\n" +"vt 0.343750 0.843750\n" +"vt 0.351397 0.892034\n" +"vt 0.373591 0.935591\n" +"vt 0.408159 0.970159\n" +"vt 0.451716 0.992353\n" +"vt 0.500000 1.000000\n" +"vt 0.548284 0.992353\n" +"vt 0.591841 0.970159\n" +"vt 0.626409 0.935591\n" +"vt 0.648603 0.892034\n" +"vt 0.656250 0.843750\n" +"vt 0.500000 0.150000\n" +"vt 0.500000 0.837500\n" +"f 1/21 2/22 21/42\n" +"f 21/42 2/22 22/43\n" +"f 2/22 3/23 22/43\n" +"f 22/43 3/23 23/44\n" +"f 3/23 4/24 23/44\n" +"f 23/44 4/24 24/45\n" +"f 4/24 5/25 24/45\n" +"f 24/45 5/25 25/46\n" +"f 5/25 6/26 25/46\n" +"f 25/46 6/26 26/47\n" +"f 6/26 7/27 26/47\n" +"f 26/47 7/27 27/48\n" +"f 7/27 8/28 27/48\n" +"f 27/48 8/28 28/49\n" +"f 8/28 9/29 28/49\n" +"f 28/49 9/29 29/50\n" +"f 9/29 10/30 29/50\n" +"f 29/50 10/30 30/51\n" +"f 10/30 11/31 30/51\n" +"f 30/51 11/31 31/52\n" +"f 11/31 12/32 31/52\n" +"f 31/52 12/32 32/53\n" +"f 12/32 13/33 32/53\n" +"f 32/53 13/33 33/54\n" +"f 13/33 14/34 33/54\n" +"f 33/54 14/34 34/55\n" +"f 14/34 15/35 34/55\n" +"f 34/55 15/35 35/56\n" +"f 15/35 16/36 35/56\n" +"f 35/56 16/36 36/57\n" +"f 16/36 17/37 36/57\n" +"f 36/57 17/37 37/58\n" +"f 17/37 18/38 37/58\n" +"f 37/58 18/38 38/59\n" +"f 18/38 19/39 38/59\n" +"f 38/59 19/39 39/60\n" +"f 19/39 20/40 39/60\n" +"f 39/60 20/40 40/61\n" +"f 20/40 1/41 40/61\n" +"f 40/61 1/41 21/62\n" +"f 2/2 1/1 41/83\n" +"f 3/3 2/2 41/83\n" +"f 4/4 3/3 41/83\n" +"f 5/5 4/4 41/83\n" +"f 6/6 5/5 41/83\n" +"f 7/7 6/6 41/83\n" +"f 8/8 7/7 41/83\n" +"f 9/9 8/8 41/83\n" +"f 10/10 9/9 41/83\n" +"f 11/11 10/10 41/83\n" +"f 12/12 11/11 41/83\n" +"f 13/13 12/12 41/83\n" +"f 14/14 13/13 41/83\n" +"f 15/15 14/14 41/83\n" +"f 16/16 15/15 41/83\n" +"f 17/17 16/16 41/83\n" +"f 18/18 17/17 41/83\n" +"f 19/19 18/18 41/83\n" +"f 20/20 19/19 41/83\n" +"f 1/1 20/20 41/83\n" +"f 21/81 22/80 42/84\n" +"f 22/80 23/79 42/84\n" +"f 23/79 24/78 42/84\n" +"f 24/78 25/77 42/84\n" +"f 25/77 26/76 42/84\n" +"f 26/76 27/75 42/84\n" +"f 27/75 28/74 42/84\n" +"f 28/74 29/73 42/84\n" +"f 29/73 30/72 42/84\n" +"f 30/72 31/71 42/84\n" +"f 31/71 32/70 42/84\n" +"f 32/70 33/69 42/84\n" +"f 33/69 34/68 42/84\n" +"f 34/68 35/67 42/84\n" +"f 35/67 36/66 42/84\n" +"f 36/66 37/65 42/84\n" +"f 37/65 38/64 42/84\n" +"f 38/64 39/63 42/84\n" +"f 39/63 40/82 42/84\n" +"f 40/82 21/81 42/84\n" +"t smoothtriangles 0/0/1 smooth\n" +"\n";