From 98c053a9b934bd4438872aa1bc603197dd18b2cc Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 23 Jan 2018 13:02:03 +0100 Subject: [PATCH 01/23] Fix textures --- tools/assimp_view/HUD.png | Bin 42510 -> 40474 bytes tools/assimp_view/HUDMask.png | Bin 6459 -> 6460 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/assimp_view/HUD.png b/tools/assimp_view/HUD.png index be7981977b07e77fcc6e230f410341bb2daeb41b..fe649fc16cc5a971d94808c4776f299bae1f6219 100644 GIT binary patch literal 40474 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 diff --git a/tools/assimp_view/HUDMask.png b/tools/assimp_view/HUDMask.png index 9311e464f4d6376eb0f457cebf3a472ba74308bf..98578dc536037938bc2be98e923516e45ff2c86d 100644 GIT binary patch delta 14 VcmdmOw8x0GGr-TCcO#3rBmgF_1YrOG delta 13 UcmdmEwA+ZKGr-S%BdfV203#a&Q~&?~ From ebaa8be106b158ed96c624abf5dd9d5c83de3939 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 23 Jan 2018 13:02:13 +0100 Subject: [PATCH 02/23] fix findings. --- tools/assimp_view/MessageProc.cpp | 24 +++++-------- tools/assimp_view/assimp_view.cpp | 57 ++++++++++--------------------- 2 files changed, 26 insertions(+), 55 deletions(-) diff --git a/tools/assimp_view/MessageProc.cpp b/tools/assimp_view/MessageProc.cpp index b8c56503b..71bc5c8bb 100644 --- a/tools/assimp_view/MessageProc.cpp +++ b/tools/assimp_view/MessageProc.cpp @@ -118,7 +118,7 @@ void MakeFileAssociations() D3DCOLOR_ARGB(0xFF,0,0xFF,0)); CLogDisplay::Instance().AddEntry(tmp.data,D3DCOLOR_ARGB(0xFF,0,0xFF,0)); - } +} //------------------------------------------------------------------------------- @@ -128,17 +128,16 @@ void MakeFileAssociations() // Other command line parameters are not handled //------------------------------------------------------------------------------- void HandleCommandLine(char* p_szCommand) - { +{ char* sz = p_szCommand; //bool bQuak = false; if (strlen(sz) < 2)return; - if (*sz == '\"') - { + if (*sz == '\"') { char* sz2 = strrchr(sz,'\"'); if (sz2)*sz2 = 0; - sz++; // skip the starting quote + sz++; // skip the starting quote } strcpy( g_szFileName, sz ); @@ -149,8 +148,7 @@ void HandleCommandLine(char* p_szCommand) // Save the list of previous files to the registry SaveHistory(); - } - +} //------------------------------------------------------------------------------- // Load the light colors from the registry @@ -158,16 +156,11 @@ void HandleCommandLine(char* p_szCommand) void LoadLightColors() { DWORD dwTemp = 4; - RegQueryValueEx(g_hRegistry,"LightColor0",NULL,NULL, - (BYTE*)&g_avLightColors[0],&dwTemp); - RegQueryValueEx(g_hRegistry,"LightColor1",NULL,NULL, - (BYTE*)&g_avLightColors[1],&dwTemp); - RegQueryValueEx(g_hRegistry,"LightColor2",NULL,NULL, - (BYTE*)&g_avLightColors[2],&dwTemp); - return; + RegQueryValueEx(g_hRegistry,"LightColor0",NULL,NULL, (BYTE*)&g_avLightColors[0],&dwTemp); + RegQueryValueEx(g_hRegistry,"LightColor1",NULL,NULL, (BYTE*)&g_avLightColors[1],&dwTemp); + RegQueryValueEx(g_hRegistry,"LightColor2",NULL,NULL, (BYTE*)&g_avLightColors[2],&dwTemp); } - //------------------------------------------------------------------------------- // Save the light colors to the registry //------------------------------------------------------------------------------- @@ -178,7 +171,6 @@ void SaveLightColors() RegSetValueExA(g_hRegistry,"LightColor2",0,REG_DWORD,(const BYTE*)&g_avLightColors[2],4); } - //------------------------------------------------------------------------------- // Save the checker pattern colors to the registry //------------------------------------------------------------------------------- diff --git a/tools/assimp_view/assimp_view.cpp b/tools/assimp_view/assimp_view.cpp index 108f866c4..5980c58c0 100644 --- a/tools/assimp_view/assimp_view.cpp +++ b/tools/assimp_view/assimp_view.cpp @@ -787,9 +787,17 @@ int ShutdownD3D(void) return 1; } +template +inline +void SafeRelease(TComPtr *ptr) { + if (nullptr != g_piPassThroughEffect) { + g_piPassThroughEffect->Release(); + g_piPassThroughEffect = nullptr; + } +} //------------------------------------------------------------------------------- -// Shutdown the D3D devie object and all resources associated with it +// Shutdown the D3D device object and all resources associated with it // NOTE: Assumes that the asset has already been deleted //------------------------------------------------------------------------------- int ShutdownDevice(void) @@ -798,49 +806,20 @@ int ShutdownDevice(void) CBackgroundPainter::Instance().ReleaseNativeResource(); CLogDisplay::Instance().ReleaseNativeResource(); - // release global shaders that have been allocazed - if (NULL != g_piDefaultEffect) - { - g_piDefaultEffect->Release(); - g_piDefaultEffect = NULL; - } - if (NULL != g_piNormalsEffect) - { - g_piNormalsEffect->Release(); - g_piNormalsEffect = NULL; - } - if (NULL != g_piPassThroughEffect) - { - g_piPassThroughEffect->Release(); - g_piPassThroughEffect = NULL; - } - if (NULL != g_piPatternEffect) - { - g_piPatternEffect->Release(); - g_piPatternEffect = NULL; - } - if (NULL != g_pcTexture) - { - g_pcTexture->Release(); - g_pcTexture = NULL; - } - - if( NULL != gDefaultVertexDecl) - { - gDefaultVertexDecl->Release(); - gDefaultVertexDecl = NULL; - } + // release global shaders that have been allocated + SafeRelease(g_piDefaultEffect); + SafeRelease(g_piNormalsEffect); + SafeRelease(g_piPassThroughEffect); + SafeRelease(g_piPatternEffect); + SafeRelease(g_pcTexture); + SafeRelease(gDefaultVertexDecl); // delete the main D3D device object - if (NULL != g_piDevice) - { - g_piDevice->Release(); - g_piDevice = NULL; - } + SafeRelease(g_piDevice); // deleted the one channel image allocated to hold the HUD mask delete[] g_szImageMask; - g_szImageMask = NULL; + g_szImageMask = nullptr; return 1; } From 8ac1de3287851d04d6a4cf03fac0a080149ad5bc Mon Sep 17 00:00:00 2001 From: kim kulling Date: Tue, 23 Jan 2018 15:12:57 +0100 Subject: [PATCH 03/23] closes https://github.com/assimp/assimp/issues/1390: aiScene now stores metadata as well. --- code/Version.cpp | 18 +++++++++++------- include/assimp/scene.h | 10 ++++++++++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/code/Version.cpp b/code/Version.cpp index eb4cab417..a9ecb6a3a 100644 --- a/code/Version.cpp +++ b/code/Version.cpp @@ -118,19 +118,20 @@ ASSIMP_API const char *aiGetBranchName() { // ------------------------------------------------------------------------------------------------ ASSIMP_API aiScene::aiScene() : mFlags(0) -, mRootNode(NULL) +, mRootNode(nullptr) , mNumMeshes(0) -, mMeshes(NULL) +, mMeshes(nullptr) , mNumMaterials(0) -, mMaterials(NULL) +, mMaterials(nullptr) , mNumAnimations(0) -, mAnimations(NULL) +, mAnimations(nullptr) , mNumTextures(0) -, mTextures(NULL) +, mTextures(nullptr) , mNumLights(0) -, mLights(NULL) +, mLights(nullptr) , mNumCameras(0) -, mCameras(NULL) +, mCameras(nullptr) +, mMetaData(nullptr) , mPrivate(new Assimp::ScenePrivateData()) { // empty } @@ -173,6 +174,9 @@ ASSIMP_API aiScene::~aiScene() { delete mCameras[a]; delete [] mCameras; + aiMetadata::Dealloc(mMetaData); + mMetaData = nullptr; + delete static_cast( mPrivate ); } diff --git a/include/assimp/scene.h b/include/assimp/scene.h index 00fa42142..82b38797e 100644 --- a/include/assimp/scene.h +++ b/include/assimp/scene.h @@ -326,6 +326,16 @@ struct aiScene */ C_STRUCT aiCamera** mCameras; + /** + * @brief The global metadata assigned to the scene itself. + * + * This data contains global metadata which belongs to the scene like + * unit-conversions, versions, vendors or other model-specific data. This + * can be used to store format-specific metadata as well. + */ + C_STRUCT aiMetadata* mMetaData; + + #ifdef __cplusplus //! Default constructor - set everything to 0/NULL From 88a0bb1b6da96e8f0036924350e27d6f24af19ce Mon Sep 17 00:00:00 2001 From: kim kulling Date: Tue, 23 Jan 2018 15:13:23 +0100 Subject: [PATCH 04/23] FBX: store UnitScaleFactor for fbx-files. --- code/FBXConverter.cpp | 385 +------------------------- code/FBXConverter.h | 382 +++++++++++++++++++++++++ code/FBXDocument.cpp | 5 +- code/FBXDocument.h | 3 +- code/FBXImporter.cpp | 3 +- code/FBXParser.h | 3 - test/models/OBJ/spider_nomtl_test.obj | 130 ++++----- test/models/PLY/cube_test.ply | 2 +- test/unit/utFBXImporterExporter.cpp | 12 + 9 files changed, 479 insertions(+), 446 deletions(-) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index f7a58ebdc..9b39c2883 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -66,7 +66,6 @@ namespace FBX { using namespace Util; - #define MAGIC_NODE_TAG "_$AssimpFbx$" #define CONVERT_FBX_TIME(time) static_cast(time) / 46186158000L @@ -74,373 +73,6 @@ using namespace Util; // XXX vc9's debugger won't step into anonymous namespaces //namespace { -/** Dummy class to encapsulate the conversion process */ -class Converter -{ -public: - /** - * The different parts that make up the final local transformation of a fbx-node - */ - enum TransformationComp - { - TransformationComp_Translation = 0, - TransformationComp_RotationOffset, - TransformationComp_RotationPivot, - TransformationComp_PreRotation, - TransformationComp_Rotation, - TransformationComp_PostRotation, - TransformationComp_RotationPivotInverse, - TransformationComp_ScalingOffset, - TransformationComp_ScalingPivot, - TransformationComp_Scaling, - TransformationComp_ScalingPivotInverse, - TransformationComp_GeometricTranslation, - TransformationComp_GeometricRotation, - TransformationComp_GeometricScaling, - - TransformationComp_MAXIMUM - }; - -public: - Converter( aiScene* out, const Document& doc ); - ~Converter(); - -private: - // ------------------------------------------------------------------------------------------------ - // find scene root and trigger recursive scene conversion - void ConvertRootNode(); - - // ------------------------------------------------------------------------------------------------ - // collect and assign child nodes - void ConvertNodes( uint64_t id, aiNode& parent, const aiMatrix4x4& parent_transform = aiMatrix4x4() ); - - // ------------------------------------------------------------------------------------------------ - void ConvertLights( const Model& model ); - - // ------------------------------------------------------------------------------------------------ - void ConvertCameras( const Model& model ); - - // ------------------------------------------------------------------------------------------------ - void ConvertLight( const Model& model, const Light& light ); - - // ------------------------------------------------------------------------------------------------ - void ConvertCamera( const Model& model, const Camera& cam ); - - // ------------------------------------------------------------------------------------------------ - // this returns unified names usable within assimp identifiers (i.e. no space characters - - // while these would be allowed, they are a potential trouble spot so better not use them). - const char* NameTransformationComp( TransformationComp comp ); - - // ------------------------------------------------------------------------------------------------ - // note: this returns the REAL fbx property names - const char* NameTransformationCompProperty( TransformationComp comp ); - - // ------------------------------------------------------------------------------------------------ - aiVector3D TransformationCompDefaultValue( TransformationComp comp ); - - // ------------------------------------------------------------------------------------------------ - void GetRotationMatrix( Model::RotOrder mode, const aiVector3D& rotation, aiMatrix4x4& out ); - // ------------------------------------------------------------------------------------------------ - /** - * checks if a node has more than just scaling, rotation and translation components - */ - bool NeedsComplexTransformationChain( const Model& model ); - - // ------------------------------------------------------------------------------------------------ - // note: name must be a FixNodeName() result - std::string NameTransformationChainNode( const std::string& name, TransformationComp comp ); - - // ------------------------------------------------------------------------------------------------ - /** - * note: memory for output_nodes will be managed by the caller - */ - void GenerateTransformationNodeChain( const Model& model, std::vector& output_nodes ); - - // ------------------------------------------------------------------------------------------------ - void SetupNodeMetadata( const Model& model, aiNode& nd ); - - // ------------------------------------------------------------------------------------------------ - void ConvertModel( const Model& model, aiNode& nd, const aiMatrix4x4& node_global_transform ); - - // ------------------------------------------------------------------------------------------------ - // MeshGeometry -> aiMesh, return mesh index + 1 or 0 if the conversion failed - std::vector ConvertMesh( const MeshGeometry& mesh, const Model& model, - const aiMatrix4x4& node_global_transform ); - - // ------------------------------------------------------------------------------------------------ - aiMesh* SetupEmptyMesh( const MeshGeometry& mesh ); - - // ------------------------------------------------------------------------------------------------ - unsigned int ConvertMeshSingleMaterial( const MeshGeometry& mesh, const Model& model, - const aiMatrix4x4& node_global_transform ); - - // ------------------------------------------------------------------------------------------------ - std::vector ConvertMeshMultiMaterial( const MeshGeometry& mesh, const Model& model, - const aiMatrix4x4& node_global_transform ); - - // ------------------------------------------------------------------------------------------------ - unsigned int ConvertMeshMultiMaterial( const MeshGeometry& mesh, const Model& model, - MatIndexArray::value_type index, - const aiMatrix4x4& node_global_transform ); - - // ------------------------------------------------------------------------------------------------ - static const unsigned int NO_MATERIAL_SEPARATION = /* std::numeric_limits::max() */ - static_cast(-1); - - // ------------------------------------------------------------------------------------------------ - /** - * - if materialIndex == NO_MATERIAL_SEPARATION, materials are not taken into - * account when determining which weights to include. - * - outputVertStartIndices is only used when a material index is specified, it gives for - * each output vertex the DOM index it maps to. - */ - void ConvertWeights( aiMesh* out, const Model& model, const MeshGeometry& geo, - const aiMatrix4x4& node_global_transform = aiMatrix4x4(), - unsigned int materialIndex = NO_MATERIAL_SEPARATION, - std::vector* outputVertStartIndices = NULL ); - - // ------------------------------------------------------------------------------------------------ - void ConvertCluster( std::vector& bones, const Model& /*model*/, const Cluster& cl, - std::vector& out_indices, - std::vector& index_out_indices, - std::vector& count_out_indices, - const aiMatrix4x4& node_global_transform ); - - // ------------------------------------------------------------------------------------------------ - void ConvertMaterialForMesh( aiMesh* out, const Model& model, const MeshGeometry& geo, - MatIndexArray::value_type materialIndex ); - - // ------------------------------------------------------------------------------------------------ - unsigned int GetDefaultMaterial(); - - - // ------------------------------------------------------------------------------------------------ - // Material -> aiMaterial - unsigned int ConvertMaterial( const Material& material, const MeshGeometry* const mesh ); - - // ------------------------------------------------------------------------------------------------ - // Video -> aiTexture - unsigned int ConvertVideo( const Video& video ); - - // ------------------------------------------------------------------------------------------------ - void TrySetTextureProperties( aiMaterial* out_mat, const TextureMap& textures, - const std::string& propName, - aiTextureType target, const MeshGeometry* const mesh ); - - // ------------------------------------------------------------------------------------------------ - void TrySetTextureProperties( aiMaterial* out_mat, const LayeredTextureMap& layeredTextures, - const std::string& propName, - aiTextureType target, const MeshGeometry* const mesh ); - - // ------------------------------------------------------------------------------------------------ - void SetTextureProperties( aiMaterial* out_mat, const TextureMap& textures, const MeshGeometry* const mesh ); - - // ------------------------------------------------------------------------------------------------ - void SetTextureProperties( aiMaterial* out_mat, const LayeredTextureMap& layeredTextures, const MeshGeometry* const mesh ); - - // ------------------------------------------------------------------------------------------------ - aiColor3D GetColorPropertyFromMaterial( const PropertyTable& props, const std::string& baseName, - bool& result ); - aiColor3D GetColorPropertyFactored( const PropertyTable& props, const std::string& colorName, - const std::string& factorName, bool& result, bool useTemplate=true ); - aiColor3D GetColorProperty( const PropertyTable& props, const std::string& colorName, - bool& result, bool useTemplate=true ); - - // ------------------------------------------------------------------------------------------------ - void SetShadingPropertiesCommon( aiMaterial* out_mat, const PropertyTable& props ); - - // ------------------------------------------------------------------------------------------------ - // get the number of fps for a FrameRate enumerated value - static double FrameRateToDouble( FileGlobalSettings::FrameRate fp, double customFPSVal = -1.0 ); - - // ------------------------------------------------------------------------------------------------ - // convert animation data to aiAnimation et al - void ConvertAnimations(); - - // ------------------------------------------------------------------------------------------------ - // rename a node already partially converted. fixed_name is a string previously returned by - // FixNodeName, new_name specifies the string FixNodeName should return on all further invocations - // which would previously have returned the old value. - // - // this also updates names in node animations, cameras and light sources and is thus slow. - // - // NOTE: the caller is responsible for ensuring that the new name is unique and does - // not collide with any other identifiers. The best way to ensure this is to only - // append to the old name, which is guaranteed to match these requirements. - void RenameNode( const std::string& fixed_name, const std::string& new_name ); - - // ------------------------------------------------------------------------------------------------ - // takes a fbx node name and returns the identifier to be used in the assimp output scene. - // the function is guaranteed to provide consistent results over multiple invocations - // UNLESS RenameNode() is called for a particular node name. - std::string FixNodeName( const std::string& name ); - - typedef std::map LayerMap; - - // XXX: better use multi_map .. - typedef std::map > NodeMap; - - - // ------------------------------------------------------------------------------------------------ - void ConvertAnimationStack( const AnimationStack& st ); - - // ------------------------------------------------------------------------------------------------ - void GenerateNodeAnimations( std::vector& node_anims, - const std::string& fixed_name, - const std::vector& curves, - const LayerMap& layer_map, - int64_t start, int64_t stop, - double& max_time, - double& min_time ); - - // ------------------------------------------------------------------------------------------------ - bool IsRedundantAnimationData( const Model& target, - TransformationComp comp, - const std::vector& curves ); - - // ------------------------------------------------------------------------------------------------ - aiNodeAnim* GenerateRotationNodeAnim( const std::string& name, - const Model& target, - const std::vector& curves, - const LayerMap& layer_map, - int64_t start, int64_t stop, - double& max_time, - double& min_time ); - - // ------------------------------------------------------------------------------------------------ - aiNodeAnim* GenerateScalingNodeAnim( const std::string& name, - const Model& /*target*/, - const std::vector& curves, - const LayerMap& layer_map, - int64_t start, int64_t stop, - double& max_time, - double& min_time ); - - // ------------------------------------------------------------------------------------------------ - aiNodeAnim* GenerateTranslationNodeAnim( const std::string& name, - const Model& /*target*/, - const std::vector& curves, - const LayerMap& layer_map, - int64_t start, int64_t stop, - double& max_time, - double& min_time, - bool inverse = false ); - - // ------------------------------------------------------------------------------------------------ - // generate node anim, extracting only Rotation, Scaling and Translation from the given chain - aiNodeAnim* GenerateSimpleNodeAnim( const std::string& name, - const Model& target, - NodeMap::const_iterator chain[ TransformationComp_MAXIMUM ], - NodeMap::const_iterator iter_end, - const LayerMap& layer_map, - int64_t start, int64_t stop, - double& max_time, - double& min_time, - bool reverse_order = false ); - - // key (time), value, mapto (component index) - typedef std::tuple, std::shared_ptr, unsigned int > KeyFrameList; - typedef std::vector KeyFrameListList; - - // ------------------------------------------------------------------------------------------------ - KeyFrameListList GetKeyframeList( const std::vector& nodes, int64_t start, int64_t stop ); - - // ------------------------------------------------------------------------------------------------ - KeyTimeList GetKeyTimeList( const KeyFrameListList& inputs ); - - // ------------------------------------------------------------------------------------------------ - void InterpolateKeys( aiVectorKey* valOut, const KeyTimeList& keys, const KeyFrameListList& inputs, - const aiVector3D& def_value, - double& max_time, - double& min_time ); - - // ------------------------------------------------------------------------------------------------ - void InterpolateKeys( aiQuatKey* valOut, const KeyTimeList& keys, const KeyFrameListList& inputs, - const aiVector3D& def_value, - double& maxTime, - double& minTime, - Model::RotOrder order ); - - // ------------------------------------------------------------------------------------------------ - void ConvertTransformOrder_TRStoSRT( aiQuatKey* out_quat, aiVectorKey* out_scale, - aiVectorKey* out_translation, - const KeyFrameListList& scaling, - const KeyFrameListList& translation, - const KeyFrameListList& rotation, - const KeyTimeList& times, - double& maxTime, - double& minTime, - Model::RotOrder order, - const aiVector3D& def_scale, - const aiVector3D& def_translate, - const aiVector3D& def_rotation ); - - // ------------------------------------------------------------------------------------------------ - // euler xyz -> quat - aiQuaternion EulerToQuaternion( const aiVector3D& rot, Model::RotOrder order ); - - // ------------------------------------------------------------------------------------------------ - void ConvertScaleKeys( aiNodeAnim* na, const std::vector& nodes, const LayerMap& /*layers*/, - int64_t start, int64_t stop, - double& maxTime, - double& minTime ); - - // ------------------------------------------------------------------------------------------------ - void ConvertTranslationKeys( aiNodeAnim* na, const std::vector& nodes, - const LayerMap& /*layers*/, - int64_t start, int64_t stop, - double& maxTime, - double& minTime ); - - // ------------------------------------------------------------------------------------------------ - void ConvertRotationKeys( aiNodeAnim* na, const std::vector& nodes, - const LayerMap& /*layers*/, - int64_t start, int64_t stop, - double& maxTime, - double& minTime, - Model::RotOrder order ); - - // ------------------------------------------------------------------------------------------------ - // copy generated meshes, animations, lights, cameras and textures to the output scene - void TransferDataToScene(); - -private: - - // 0: not assigned yet, others: index is value - 1 - unsigned int defaultMaterialIndex; - - std::vector meshes; - std::vector materials; - std::vector animations; - std::vector lights; - std::vector cameras; - std::vector textures; - - typedef std::map MaterialMap; - MaterialMap materials_converted; - - typedef std::map VideoMap; - VideoMap textures_converted; - - typedef std::map > MeshMap; - MeshMap meshes_converted; - - // fixed node name -> which trafo chain components have animations? - typedef std::map NodeAnimBitMap; - NodeAnimBitMap node_anim_chain_bits; - - // name -> has had its prefix_stripped? - typedef std::map NodeNameMap; - NodeNameMap node_names; - - typedef std::map NameNameMap; - NameNameMap renamed_nodes; - - double anim_fps; - - aiScene* const out; - const FBX::Document& doc; -}; Converter::Converter( aiScene* out, const Document& doc ) : defaultMaterialIndex() @@ -472,6 +104,7 @@ Converter::Converter( aiScene* out, const Document& doc ) } } + ConvertGlobalSettings(); TransferDataToScene(); // if we didn't read any meshes set the AI_SCENE_FLAGS_INCOMPLETE @@ -3341,8 +2974,20 @@ void Converter::ConvertRotationKeys( aiNodeAnim* na, const std::vectormNumRotationKeys = static_cast( keys.size() ); na->mRotationKeys = new aiQuatKey[ keys.size() ]; - if ( keys.size() > 0 ) - InterpolateKeys( na->mRotationKeys, keys, inputs, aiVector3D( 0.0f, 0.0f, 0.0f ), maxTime, minTime, order ); + if (!keys.empty()) { + InterpolateKeys(na->mRotationKeys, keys, inputs, aiVector3D(0.0f, 0.0f, 0.0f), maxTime, minTime, order); + } +} + +void Converter::ConvertGlobalSettings() { + if (nullptr == out) { + return; + } + + out->mMetaData = aiMetadata::Alloc(1); + unsigned int index(0); + const double unitScalFactor(doc.GlobalSettings().UnitScaleFactor()); + out->mMetaData->Set(index, "UnitScaleFactor", unitScalFactor); } void Converter::TransferDataToScene() diff --git a/code/FBXConverter.h b/code/FBXConverter.h index 8a62d8811..c6c413052 100644 --- a/code/FBXConverter.h +++ b/code/FBXConverter.h @@ -45,7 +45,22 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_FBX_CONVERTER_H #define INCLUDED_AI_FBX_CONVERTER_H +#include "FBXParser.h" +#include "FBXMeshGeometry.h" +#include "FBXDocument.h" +#include "FBXUtil.h" +#include "FBXProperties.h" +#include "FBXImporter.h" +#include +#include +#include +#include +#include +#include + struct aiScene; +struct aiNode; +struct aiMaterial; namespace Assimp { namespace FBX { @@ -59,6 +74,373 @@ class Document; */ void ConvertToAssimpScene(aiScene* out, const Document& doc); +/** Dummy class to encapsulate the conversion process */ +class Converter { +public: + /** + * The different parts that make up the final local transformation of a fbx-node + */ + enum TransformationComp { + TransformationComp_Translation = 0, + TransformationComp_RotationOffset, + TransformationComp_RotationPivot, + TransformationComp_PreRotation, + TransformationComp_Rotation, + TransformationComp_PostRotation, + TransformationComp_RotationPivotInverse, + TransformationComp_ScalingOffset, + TransformationComp_ScalingPivot, + TransformationComp_Scaling, + TransformationComp_ScalingPivotInverse, + TransformationComp_GeometricTranslation, + TransformationComp_GeometricRotation, + TransformationComp_GeometricScaling, + + TransformationComp_MAXIMUM + }; + +public: + Converter(aiScene* out, const Document& doc); + ~Converter(); + +private: + // ------------------------------------------------------------------------------------------------ + // find scene root and trigger recursive scene conversion + void ConvertRootNode(); + + // ------------------------------------------------------------------------------------------------ + // collect and assign child nodes + void ConvertNodes(uint64_t id, aiNode& parent, const aiMatrix4x4& parent_transform = aiMatrix4x4()); + + // ------------------------------------------------------------------------------------------------ + void ConvertLights(const Model& model); + + // ------------------------------------------------------------------------------------------------ + void ConvertCameras(const Model& model); + + // ------------------------------------------------------------------------------------------------ + void ConvertLight(const Model& model, const Light& light); + + // ------------------------------------------------------------------------------------------------ + void ConvertCamera(const Model& model, const Camera& cam); + + // ------------------------------------------------------------------------------------------------ + // this returns unified names usable within assimp identifiers (i.e. no space characters - + // while these would be allowed, they are a potential trouble spot so better not use them). + const char* NameTransformationComp(TransformationComp comp); + + // ------------------------------------------------------------------------------------------------ + // note: this returns the REAL fbx property names + const char* NameTransformationCompProperty(TransformationComp comp); + + // ------------------------------------------------------------------------------------------------ + aiVector3D TransformationCompDefaultValue(TransformationComp comp); + + // ------------------------------------------------------------------------------------------------ + void GetRotationMatrix(Model::RotOrder mode, const aiVector3D& rotation, aiMatrix4x4& out); + // ------------------------------------------------------------------------------------------------ + /** + * checks if a node has more than just scaling, rotation and translation components + */ + bool NeedsComplexTransformationChain(const Model& model); + + // ------------------------------------------------------------------------------------------------ + // note: name must be a FixNodeName() result + std::string NameTransformationChainNode(const std::string& name, TransformationComp comp); + + // ------------------------------------------------------------------------------------------------ + /** + * note: memory for output_nodes will be managed by the caller + */ + void GenerateTransformationNodeChain(const Model& model, std::vector& output_nodes); + + // ------------------------------------------------------------------------------------------------ + void SetupNodeMetadata(const Model& model, aiNode& nd); + + // ------------------------------------------------------------------------------------------------ + void ConvertModel(const Model& model, aiNode& nd, const aiMatrix4x4& node_global_transform); + + // ------------------------------------------------------------------------------------------------ + // MeshGeometry -> aiMesh, return mesh index + 1 or 0 if the conversion failed + std::vector ConvertMesh(const MeshGeometry& mesh, const Model& model, + const aiMatrix4x4& node_global_transform); + + // ------------------------------------------------------------------------------------------------ + aiMesh* SetupEmptyMesh(const MeshGeometry& mesh); + + // ------------------------------------------------------------------------------------------------ + unsigned int ConvertMeshSingleMaterial(const MeshGeometry& mesh, const Model& model, + const aiMatrix4x4& node_global_transform); + + // ------------------------------------------------------------------------------------------------ + std::vector ConvertMeshMultiMaterial(const MeshGeometry& mesh, const Model& model, + const aiMatrix4x4& node_global_transform); + + // ------------------------------------------------------------------------------------------------ + unsigned int ConvertMeshMultiMaterial(const MeshGeometry& mesh, const Model& model, + MatIndexArray::value_type index, + const aiMatrix4x4& node_global_transform); + + // ------------------------------------------------------------------------------------------------ + static const unsigned int NO_MATERIAL_SEPARATION = /* std::numeric_limits::max() */ + static_cast(-1); + + // ------------------------------------------------------------------------------------------------ + /** + * - if materialIndex == NO_MATERIAL_SEPARATION, materials are not taken into + * account when determining which weights to include. + * - outputVertStartIndices is only used when a material index is specified, it gives for + * each output vertex the DOM index it maps to. + */ + void ConvertWeights(aiMesh* out, const Model& model, const MeshGeometry& geo, + const aiMatrix4x4& node_global_transform = aiMatrix4x4(), + unsigned int materialIndex = NO_MATERIAL_SEPARATION, + std::vector* outputVertStartIndices = NULL); + + // ------------------------------------------------------------------------------------------------ + void ConvertCluster(std::vector& bones, const Model& /*model*/, const Cluster& cl, + std::vector& out_indices, + std::vector& index_out_indices, + std::vector& count_out_indices, + const aiMatrix4x4& node_global_transform); + + // ------------------------------------------------------------------------------------------------ + void ConvertMaterialForMesh(aiMesh* out, const Model& model, const MeshGeometry& geo, + MatIndexArray::value_type materialIndex); + + // ------------------------------------------------------------------------------------------------ + unsigned int GetDefaultMaterial(); + + // ------------------------------------------------------------------------------------------------ + // Material -> aiMaterial + unsigned int ConvertMaterial(const Material& material, const MeshGeometry* const mesh); + + // ------------------------------------------------------------------------------------------------ + // Video -> aiTexture + unsigned int ConvertVideo(const Video& video); + + // ------------------------------------------------------------------------------------------------ + void TrySetTextureProperties(aiMaterial* out_mat, const TextureMap& textures, + const std::string& propName, + aiTextureType target, const MeshGeometry* const mesh); + + // ------------------------------------------------------------------------------------------------ + void TrySetTextureProperties(aiMaterial* out_mat, const LayeredTextureMap& layeredTextures, + const std::string& propName, + aiTextureType target, const MeshGeometry* const mesh); + + // ------------------------------------------------------------------------------------------------ + void SetTextureProperties(aiMaterial* out_mat, const TextureMap& textures, const MeshGeometry* const mesh); + + // ------------------------------------------------------------------------------------------------ + void SetTextureProperties(aiMaterial* out_mat, const LayeredTextureMap& layeredTextures, const MeshGeometry* const mesh); + + // ------------------------------------------------------------------------------------------------ + aiColor3D GetColorPropertyFromMaterial(const PropertyTable& props, const std::string& baseName, + bool& result); + aiColor3D GetColorPropertyFactored(const PropertyTable& props, const std::string& colorName, + const std::string& factorName, bool& result, bool useTemplate = true); + aiColor3D GetColorProperty(const PropertyTable& props, const std::string& colorName, + bool& result, bool useTemplate = true); + + // ------------------------------------------------------------------------------------------------ + void SetShadingPropertiesCommon(aiMaterial* out_mat, const PropertyTable& props); + + // ------------------------------------------------------------------------------------------------ + // get the number of fps for a FrameRate enumerated value + static double FrameRateToDouble(FileGlobalSettings::FrameRate fp, double customFPSVal = -1.0); + + // ------------------------------------------------------------------------------------------------ + // convert animation data to aiAnimation et al + void ConvertAnimations(); + + // ------------------------------------------------------------------------------------------------ + // rename a node already partially converted. fixed_name is a string previously returned by + // FixNodeName, new_name specifies the string FixNodeName should return on all further invocations + // which would previously have returned the old value. + // + // this also updates names in node animations, cameras and light sources and is thus slow. + // + // NOTE: the caller is responsible for ensuring that the new name is unique and does + // not collide with any other identifiers. The best way to ensure this is to only + // append to the old name, which is guaranteed to match these requirements. + void RenameNode(const std::string& fixed_name, const std::string& new_name); + + // ------------------------------------------------------------------------------------------------ + // takes a fbx node name and returns the identifier to be used in the assimp output scene. + // the function is guaranteed to provide consistent results over multiple invocations + // UNLESS RenameNode() is called for a particular node name. + std::string FixNodeName(const std::string& name); + + typedef std::map LayerMap; + + // XXX: better use multi_map .. + typedef std::map > NodeMap; + + + // ------------------------------------------------------------------------------------------------ + void ConvertAnimationStack(const AnimationStack& st); + + // ------------------------------------------------------------------------------------------------ + void GenerateNodeAnimations(std::vector& node_anims, + const std::string& fixed_name, + const std::vector& curves, + const LayerMap& layer_map, + int64_t start, int64_t stop, + double& max_time, + double& min_time); + + // ------------------------------------------------------------------------------------------------ + bool IsRedundantAnimationData(const Model& target, + TransformationComp comp, + const std::vector& curves); + + // ------------------------------------------------------------------------------------------------ + aiNodeAnim* GenerateRotationNodeAnim(const std::string& name, + const Model& target, + const std::vector& curves, + const LayerMap& layer_map, + int64_t start, int64_t stop, + double& max_time, + double& min_time); + + // ------------------------------------------------------------------------------------------------ + aiNodeAnim* GenerateScalingNodeAnim(const std::string& name, + const Model& /*target*/, + const std::vector& curves, + const LayerMap& layer_map, + int64_t start, int64_t stop, + double& max_time, + double& min_time); + + // ------------------------------------------------------------------------------------------------ + aiNodeAnim* GenerateTranslationNodeAnim(const std::string& name, + const Model& /*target*/, + const std::vector& curves, + const LayerMap& layer_map, + int64_t start, int64_t stop, + double& max_time, + double& min_time, + bool inverse = false); + + // ------------------------------------------------------------------------------------------------ + // generate node anim, extracting only Rotation, Scaling and Translation from the given chain + aiNodeAnim* GenerateSimpleNodeAnim(const std::string& name, + const Model& target, + NodeMap::const_iterator chain[TransformationComp_MAXIMUM], + NodeMap::const_iterator iter_end, + const LayerMap& layer_map, + int64_t start, int64_t stop, + double& max_time, + double& min_time, + bool reverse_order = false); + + // key (time), value, mapto (component index) + typedef std::tuple, std::shared_ptr, unsigned int > KeyFrameList; + typedef std::vector KeyFrameListList; + + // ------------------------------------------------------------------------------------------------ + KeyFrameListList GetKeyframeList(const std::vector& nodes, int64_t start, int64_t stop); + + // ------------------------------------------------------------------------------------------------ + KeyTimeList GetKeyTimeList(const KeyFrameListList& inputs); + + // ------------------------------------------------------------------------------------------------ + void InterpolateKeys(aiVectorKey* valOut, const KeyTimeList& keys, const KeyFrameListList& inputs, + const aiVector3D& def_value, + double& max_time, + double& min_time); + + // ------------------------------------------------------------------------------------------------ + void InterpolateKeys(aiQuatKey* valOut, const KeyTimeList& keys, const KeyFrameListList& inputs, + const aiVector3D& def_value, + double& maxTime, + double& minTime, + Model::RotOrder order); + + // ------------------------------------------------------------------------------------------------ + void ConvertTransformOrder_TRStoSRT(aiQuatKey* out_quat, aiVectorKey* out_scale, + aiVectorKey* out_translation, + const KeyFrameListList& scaling, + const KeyFrameListList& translation, + const KeyFrameListList& rotation, + const KeyTimeList& times, + double& maxTime, + double& minTime, + Model::RotOrder order, + const aiVector3D& def_scale, + const aiVector3D& def_translate, + const aiVector3D& def_rotation); + + // ------------------------------------------------------------------------------------------------ + // euler xyz -> quat + aiQuaternion EulerToQuaternion(const aiVector3D& rot, Model::RotOrder order); + + // ------------------------------------------------------------------------------------------------ + void ConvertScaleKeys(aiNodeAnim* na, const std::vector& nodes, const LayerMap& /*layers*/, + int64_t start, int64_t stop, + double& maxTime, + double& minTime); + + // ------------------------------------------------------------------------------------------------ + void ConvertTranslationKeys(aiNodeAnim* na, const std::vector& nodes, + const LayerMap& /*layers*/, + int64_t start, int64_t stop, + double& maxTime, + double& minTime); + + // ------------------------------------------------------------------------------------------------ + void ConvertRotationKeys(aiNodeAnim* na, const std::vector& nodes, + const LayerMap& /*layers*/, + int64_t start, int64_t stop, + double& maxTime, + double& minTime, + Model::RotOrder order); + + void ConvertGlobalSettings(); + + // ------------------------------------------------------------------------------------------------ + // copy generated meshes, animations, lights, cameras and textures to the output scene + void TransferDataToScene(); + +private: + + // 0: not assigned yet, others: index is value - 1 + unsigned int defaultMaterialIndex; + + std::vector meshes; + std::vector materials; + std::vector animations; + std::vector lights; + std::vector cameras; + std::vector textures; + + typedef std::map MaterialMap; + MaterialMap materials_converted; + + typedef std::map VideoMap; + VideoMap textures_converted; + + typedef std::map > MeshMap; + MeshMap meshes_converted; + + // fixed node name -> which trafo chain components have animations? + typedef std::map NodeAnimBitMap; + NodeAnimBitMap node_anim_chain_bits; + + // name -> has had its prefix_stripped? + typedef std::map NodeNameMap; + NodeNameMap node_names; + + typedef std::map NameNameMap; + NameNameMap renamed_nodes; + + double anim_fps; + + aiScene* const out; + const FBX::Document& doc; +}; + } } diff --git a/code/FBXDocument.cpp b/code/FBXDocument.cpp index 54f18b191..20c875ca1 100644 --- a/code/FBXDocument.cpp +++ b/code/FBXDocument.cpp @@ -344,9 +344,8 @@ void Document::ReadGlobalSettings() { const Scope& sc = parser.GetRootScope(); const Element* const ehead = sc["GlobalSettings"]; - if(!ehead || !ehead->Compound()) { - DOMWarning("no GlobalSettings dictionary found"); - + if ( nullptr == ehead || !ehead->Compound() ) { + DOMWarning( "no GlobalSettings dictionary found" ); globals.reset(new FileGlobalSettings(*this, std::make_shared())); return; } diff --git a/code/FBXDocument.h b/code/FBXDocument.h index a4e28b2aa..2b8157249 100644 --- a/code/FBXDocument.h +++ b/code/FBXDocument.h @@ -999,8 +999,7 @@ typedef std::multimap ConnectionMap; /** DOM class for global document settings, a single instance per document can * be accessed via Document.Globals(). */ -class FileGlobalSettings -{ +class FileGlobalSettings { public: FileGlobalSettings(const Document& doc, std::shared_ptr props); ~FileGlobalSettings(); diff --git a/code/FBXImporter.cpp b/code/FBXImporter.cpp index 566bc992f..f2231b805 100644 --- a/code/FBXImporter.cpp +++ b/code/FBXImporter.cpp @@ -140,8 +140,7 @@ void FBXImporter::SetupProperties(const Importer* pImp) // ------------------------------------------------------------------------------------------------ // Imports the given file into the given scene structure. -void FBXImporter::InternReadFile( const std::string& pFile, - aiScene* pScene, IOSystem* pIOHandler) +void FBXImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler) { std::unique_ptr stream(pIOHandler->Open(pFile,"rb")); if (!stream) { diff --git a/code/FBXParser.h b/code/FBXParser.h index c7cf5a458..996c86fcf 100644 --- a/code/FBXParser.h +++ b/code/FBXParser.h @@ -174,11 +174,9 @@ private: friend class Element; TokenPtr AdvanceToNextToken(); - TokenPtr LastToken() const; TokenPtr CurrentToken() const; - private: const TokenList& tokens; @@ -199,7 +197,6 @@ int ParseTokenAsInt(const Token& t, const char*& err_out); int64_t ParseTokenAsInt64(const Token& t, const char*& err_out); std::string ParseTokenAsString(const Token& t, const char*& err_out); - /* wrapper around ParseTokenAsXXX() with DOMError handling */ uint64_t ParseTokenAsID(const Token& t); size_t ParseTokenAsDim(const Token& t); diff --git a/test/models/OBJ/spider_nomtl_test.obj b/test/models/OBJ/spider_nomtl_test.obj index 44e8ea591..8129fff29 100644 --- a/test/models/OBJ/spider_nomtl_test.obj +++ b/test/models/OBJ/spider_nomtl_test.obj @@ -1,5 +1,5 @@ # File produced by Open Asset Import Library (http://www.assimp.sf.net) -# (assimp v4.1.1712791017) +# (assimp v4.1.3023643559) # 722 vertex positions v 1.160378932952881 4.512683868408203 6.449167251586914 @@ -12,7 +12,7 @@ v -6.442715167999268 10.77740478515625 -0.5375289916992188 v -8.120363235473633 15.6844596862793 -10.5 v -0.8867700099945068 23.4237174987793 -4.342854022979736 v -0.8867700099945068 23.4237174987793 -16.65714454650879 -v 14.40229797363281 32.89186859130859 -26.41482543945312 +v 14.40229797363281 32.89186859130859 -26.41482543945313 v 12.95316505432129 36.87333679199219 -11.5 v 30.52731704711914 37.50395202636719 -2.733282089233398 v 30.52731704711914 37.50395202636719 -20.26671600341797 @@ -21,15 +21,15 @@ v 45.09496688842773 27.71094512939453 2.684845924377441 v 57.93621826171875 30.27653312683105 -11.5 v 54.50359344482422 5.934020042419434 -11.5 v 51.09176254272461 11.23489952087402 2.684845924377441 -v 45.09496688842773 27.71094512939453 -25.68484497070312 +v 45.09496688842773 27.71094512939453 -25.68484497070313 v 39.18625640869141 16.23099708557129 -35.63270568847656 -v 51.09176254272461 11.23489952087402 -25.68484497070312 +v 51.09176254272461 11.23489952087402 -25.68484497070313 v 27.52080917358398 27.08032608032227 -34.45156478881836 v 4.568314075469971 16.85711288452148 -26.6196174621582 v 1.160378932952881 4.512683868408203 -27.44916915893555 v 22.65617179870605 10.21453857421875 -39.86968994140625 v 7.838881015777588 -6.414187908172607 -26.6196174621582 -v 30.91004180908203 -12.4627857208252 -26.41482543945312 +v 30.91004180908203 -12.4627857208252 -26.41482543945313 v 37.22381591796875 0.4215309917926788 -34.45156478881836 v 46.22711181640625 -5.630886077880859 -20.26671600341797 v 32.35918426513672 -16.44425201416016 -11.5 @@ -70,11 +70,11 @@ v -18.8264045715332 5.435883045196533 -20.58309173583984 v -32.62586212158203 10.86018753051758 -28.47975921630859 v -41.85661315917969 -0.7548459768295288 -29.43077087402344 v -27.9502124786377 1.303017020225525 -23.0814208984375 -v -39.19473266601562 -9.356718063354492 -28.47975921630859 +v -39.19473266601563 -9.356718063354492 -28.47975921630859 v -31.49889755249023 -9.618716239929199 -16.87730979919434 v -22.99813652038574 -7.403382778167725 -20.58309173583984 v -49.71383666992188 -2.983590126037598 1.421121001243591 -v -39.19473266601562 -9.356718063354492 8.47976016998291 +v -39.19473266601563 -9.356718063354492 8.47976016998291 v -22.99813652038574 -7.403382778167725 0.5830910205841064 v -31.49889755249023 -9.618716239929199 -3.122689962387085 v -50.63702392578125 8.975393295288086 -10 @@ -93,15 +93,15 @@ v -55.4437255859375 28.01696014404297 -51.02064895629883 v -55.80507659912109 29.50034332275391 -50.36057662963867 v -56.41304779052734 27.51875305175781 -54.60213470458984 v -57.93299102783203 29.20790100097656 -55.03944778442383 -v -67.98501586914062 13.43557167053223 -79.02035522460938 +v -67.98501586914063 13.43557167053223 -79.02035522460938 v -69.89360046386719 14.10584259033203 -80.14413452148438 -v -81.67832183837891 -31.37918090820312 -101.2915573120117 +v -81.67832183837891 -31.37918090820313 -101.2915573120117 v -82.77850341796875 -29.84352111816406 -101.2665863037109 v -45.27461242675781 -1.921316027641296 -17.56256103515625 v -88.2349853515625 -39.3502311706543 -103.8660430908203 v -48.86238861083984 8.964324951171875 -36.15071487426758 v -56.92498016357422 29.82746124267578 -49.55580902099609 -v -60.01216888427734 29.56021118164062 -54.08668899536133 +v -60.01216888427734 29.56021118164063 -54.08668899536133 v -72.06874084472656 14.20652008056641 -79.36090087890625 v -83.47474670410156 -29.51860809326172 -100.4707794189453 v -48.11187744140625 -2.742969989776611 -19.29600143432617 @@ -110,12 +110,12 @@ v -50.95351028442383 7.973351955413818 -36.14510726928711 v -57.96013641357422 28.75201416015625 -49.21238708496094 v -61.08487701416016 28.31040191650391 -52.46125793457031 v -72.87251281738281 13.66179847717285 -77.26039123535156 -v -83.24275207519531 -30.64902877807617 -99.50344848632812 +v -83.24275207519531 -30.64902877807617 -99.50344848632813 v -48.33858871459961 -4.09240198135376 -22.38015365600586 v -87.97438049316406 -40.34838485717773 -103.3615341186523 v -51.84541320800781 6.477696895599365 -37.66901397705078 v -58.13103866577148 27.08382415771484 -49.58887100219727 -v -60.34334564208984 26.39956665039062 -51.38712310791016 +v -60.34334564208984 26.39956665039063 -51.38712310791016 v -71.69966125488281 12.8818302154541 -75.42439270019531 v -82.25722503662109 -32.38360595703125 -99.09293365478516 v -45.78402709960938 -4.953472137451172 -24.49265670776367 @@ -125,7 +125,7 @@ v -57.30899810791016 26.07907104492188 -50.40177917480469 v -58.34596252441406 25.26664733886719 -51.67315673828125 v -69.433349609375 12.45395088195801 -75.23539733886719 v -81.26026153564453 -33.41617965698242 -99.54843139648438 -v -42.37185668945312 -4.677759170532227 -24.04270935058594 +v -42.37185668945313 -4.677759170532227 -24.04270935058594 v -87.46121978759766 -40.53748321533203 -104.0717544555664 v -48.75384521484375 6.009276866912842 -40.42763137817383 v -56.11302947998047 26.49437713623047 -51.03896713256836 @@ -137,27 +137,27 @@ v -42.83802795410156 -1.822747945785522 -1.17337703704834 v -41.96012115478516 -3.15467095375061 1.817621946334839 v -92.29042816162109 -39.21158981323242 57.38248825073242 v -92.26210784912109 -39.83740234375 57.07994079589844 -v -91.95950317382812 -39.73274230957031 57.5407600402832 +v -91.95950317382813 -39.73274230957031 57.5407600402832 v -49.36812591552734 8.476757049560547 19.08589744567871 -v -49.19630432128906 7.804555892944336 21.29348754882812 +v -49.19630432128906 7.804555892944336 21.29348754882813 v -54.25469207763672 27.27288055419922 30.44888496398926 v -54.92575836181641 28.34239959716797 29.36605453491211 v -57.45500946044922 28.70623016357422 33.83551406860352 v -55.48647308349609 27.49809265136719 33.97690582275391 v -67.46834564208984 9.109057426452637 43.49641799926758 -v -69.61196136474609 9.454971313476562 44.29645156860352 +v -69.61196136474609 9.454971313476563 44.29645156860352 v -87.01417541503906 -30.51413726806641 52.42203521728516 v -85.97149658203125 -32.07468414306641 52.63847351074219 -v -45.98867797851562 -1.450130939483643 -2.535742998123169 -v -92.60006713867188 -39.16170501708984 56.99636840820312 +v -45.98867797851563 -1.450130939483643 -2.535742998123169 +v -92.60006713867188 -39.16170501708984 56.99636840820313 v -50.88497161865234 7.785149097442627 17.48099899291992 v -55.98342132568359 28.08773803710938 28.45757293701172 v -59.41564178466797 28.14698791503906 32.74097061157227 v -71.61580657958984 8.682785987854004 43.43437957763672 v -87.75607299804688 -30.29622077941895 51.63100051879883 -v -49.03958129882812 -2.317409992218018 -1.243530988693237 +v -49.03958129882813 -2.317409992218018 -1.243530988693237 v -92.65523529052734 -39.6205940246582 56.67316055297852 -v -52.60464477539062 6.250553131103516 17.68733215332031 +v -52.60464477539063 6.250553131103516 17.68733215332031 v -56.63124847412109 26.70069122314453 28.40756416320801 v -59.89194488525391 26.24149322509766 31.51743125915527 v -71.97093963623047 7.37397575378418 41.55935287475586 @@ -182,11 +182,11 @@ v -50.4989013671875 6.274747848510742 22.44142532348633 v -54.47554779052734 25.68461608886719 30.89064788818359 v -54.99231719970703 25.43232727050781 33.05861282348633 v -66.79914093017578 7.905498027801514 41.6367301940918 -v -85.4132080078125 -33.80271530151367 52.11734008789062 +v -85.4132080078125 -33.80271530151367 52.11734008789063 v -32.53578186035156 -3.15467095375061 -19.16253662109375 v -34.38373184204102 -1.822747945785522 -16.65216445922852 v -36.48015213012695 -3.096683979034424 -19.71685028076172 -v -43.38578033447266 -41.58316040039062 -95.21874237060547 +v -43.38578033447266 -41.58316040039063 -95.21874237060547 v -43.91326141357422 -41.58873748779297 -95.02735137939453 v -43.69423675537109 -41.06890106201172 -95.43450164794922 v -35.0989875793457 7.804555892944336 -38.97930526733398 @@ -199,7 +199,7 @@ v -39.32158660888672 4.109056949615479 -79.20964813232422 v -40.77798843383789 4.454970836639404 -80.97431182861328 v -40.8770866394043 -32.42660522460938 -89.88973236083984 v -41.6864128112793 -30.95858383178711 -90.76108551025391 -v -37.81033325195312 -1.450130939483643 -16.44955062866211 +v -37.81033325195313 -1.450130939483643 -16.44955062866211 v -44.16765594482422 -40.94609069824219 -95.34366607666016 v -38.46767044067383 7.785149097442627 -36.52191925048828 v -40.04683303833008 28.08773803710938 -50.77265167236328 @@ -209,7 +209,7 @@ v -42.73056793212891 -30.60493469238281 -90.66996002197266 v -40.23527908325195 -2.317409992218018 -18.70730972290039 v -44.44951629638672 -41.30718231201172 -95.01465606689453 v -39.85378265380859 6.250553131103516 -37.56044387817383 -v -40.63287734985352 26.70069122314453 -51.05325317382812 +v -40.63287734985352 26.70069122314453 -51.05325317382813 v -41.90177536010742 26.24149322509766 -55.37683486938477 v -44.18946838378906 2.373975992202759 -79.78339385986328 v -43.2232666015625 -31.63191223144531 -89.68506622314453 @@ -229,7 +229,7 @@ v -41.56508255004883 1.750601053237915 -76.60358428955078 v -41.76493453979492 -34.27718353271484 -88.11498260498047 v -33.65802383422852 -4.442947864532471 -22.09029006958008 v -43.47456359863281 -42.10161590576172 -94.85892486572266 -v -35.65310668945312 6.274747848510742 -40.62473678588867 +v -35.65310668945313 6.274747848510742 -40.62473678588867 v -37.52444076538086 25.68461608886719 -52.12581634521484 v -36.88800048828125 25.43232727050781 -54.26172637939453 v -39.6718864440918 2.905498027801514 -77.26450347900391 @@ -249,7 +249,7 @@ v -38.03726577758789 27.49446105957031 33.66647720336914 v -34.5403938293457 17.31492233276367 46.75900650024414 v -35.8452262878418 17.43609428405762 48.66624069213867 v -28.96659469604492 -31.87043952941895 66.61157989501953 -v -28.00870513916016 -33.48403930664062 66.39229583740234 +v -28.00870513916016 -33.48403930664063 66.39229583740234 v -37.94406127929688 -1.883904933929443 -4.875525951385498 v -29.19070816040039 -38.59844589233398 75.64435577392578 v -38.12530136108398 7.461886882781982 15.15559387207031 @@ -283,8 +283,8 @@ v -28.36112785339355 -39.7656364440918 75.63690948486328 v -34.68405532836914 6.534968852996826 18.94173622131348 v -38.70342254638672 25.53554534912109 30.5754222869873 v -37.81640243530273 25.43576812744141 32.63310623168945 -v -34.87471389770508 16.03384399414062 44.86114120483398 -v -27.90771293640137 -35.34060668945312 66.05712127685547 +v -34.87471389770508 16.03384399414063 44.86114120483398 +v -27.90771293640137 -35.34060668945313 66.05712127685547 v -26.45577621459961 -3.443838119506836 -2.149142980575562 v -26.46640014648438 -2.246160984039307 -5.887526988983154 v -23.49448394775391 -3.47288703918457 -4.813465118408203 @@ -300,26 +300,26 @@ v -10.52369499206543 27.51875305175781 29.59563827514648 v -0.9972569942474365 13.43557167053223 54.88214111328125 v -1.514698028564453 14.10584259033203 57.03571319580078 v 3.385565996170044 -29.84352111816406 80.76795196533203 -v 3.675970077514648 -31.37918090820312 79.70648956298828 +v 3.675970077514648 -31.37918090820313 79.70648956298828 v -29.43033599853516 -1.921316027641296 -4.146553039550781 v 4.587766170501709 -39.3502311706543 86.69120025634766 v -18.55141067504883 8.964324951171875 11.34670639038086 v -14.50934600830078 29.82746124267578 26.45841026306152 -v -13.3946418762207 29.56021118164062 31.82656478881836 +v -13.3946418762207 29.56021118164063 31.82656478881836 v -3.589093923568726 14.20652008056641 58.0562744140625 v 2.445001125335693 -29.51860809326172 81.25101470947266 -v -30.15432739257812 -2.742969989776611 -0.9014430046081543 +v -30.15432739257813 -2.742969989776611 -0.9014430046081543 v 4.197091102600098 -39.74774169921875 86.60486602783203 v -20.00806045532227 7.973351955413818 12.8470344543457 v -15.4754638671875 28.75201416015625 26.9644775390625 v -15.30904579162598 28.31040191650391 31.46907806396484 -v -5.658416748046875 13.66179847717285 57.17532348632812 +v -5.658416748046875 13.66179847717285 57.17532348632813 v 1.562493085861206 -30.64902877807617 80.79186248779297 v -28.0932731628418 -4.09240198135376 1.404078960418701 v 4.161306858062744 -40.34838485717773 86.31630706787109 v -19.53142166137695 6.477696895599365 14.54720878601074 v -15.32335662841797 27.08382415771484 27.34894752502441 -v -15.56659698486328 26.39956665039062 30.18951416015625 +v -15.56659698486328 26.39956665039063 30.18951416015625 v -6.164387226104736 12.8818302154541 55.05625915527344 v 1.402615070343018 -32.38360595703125 79.73628997802734 v -24.79911041259766 -4.953472137451172 1.033954977989197 @@ -338,7 +338,7 @@ v -2.426440954208374 12.70041084289551 53.21726226806641 v 3.097472906112671 -32.96916198730469 78.86588287353516 v -23.49448394775391 -3.47288703918457 -15.18653869628906 v -26.46640014648438 -2.246160984039307 -14.11247634887695 -v -26.45577621459961 -3.443838119506836 -17.85086059570312 +v -26.45577621459961 -3.443838119506836 -17.85086059570313 v 5.211228847503662 -39.9835319519043 -106.1982498168945 v 4.668338775634766 -40.01747512817383 -106.3362197875977 v 5.039107799530029 -39.45514678955078 -106.5102310180664 @@ -350,27 +350,27 @@ v -10.52369499206543 27.51875305175781 -49.59563446044922 v -11.26496505737305 29.20790100097656 -50.99276733398438 v -0.9972569942474365 13.43557167053223 -74.88213348388672 v -1.514698028564453 14.10584259033203 -77.03571319580078 -v 3.675970077514648 -31.37918090820312 -99.70648956298828 +v 3.675970077514648 -31.37918090820313 -99.70648956298828 v 3.38556694984436 -29.84352111816406 -100.767951965332 v -29.43033599853516 -1.921316027641296 -15.85345077514648 v 4.587764739990234 -39.3502311706543 -106.6912002563477 -v -18.55141067504883 8.964324951171875 -31.34671020507812 +v -18.55141067504883 8.964324951171875 -31.34671020507813 v -14.50934600830078 29.82746124267578 -46.45841217041016 -v -13.3946418762207 29.56021118164062 -51.82656097412109 +v -13.3946418762207 29.56021118164063 -51.82656097412109 v -3.589093923568726 14.20652008056641 -78.05626678466797 v 2.445001125335693 -29.51860809326172 -101.2510147094727 -v -30.15432739257812 -2.742969989776611 -19.09856033325195 +v -30.15432739257813 -2.742969989776611 -19.09856033325195 v 4.197090148925781 -39.74774169921875 -106.604866027832 v -20.00806045532227 7.973351955413818 -32.8470344543457 v -15.4754638671875 28.75201416015625 -46.9644775390625 v -15.30904579162598 28.31040191650391 -51.46907806396484 v -5.658416748046875 13.66179847717285 -77.17531585693359 v 1.562493085861206 -30.64902877807617 -100.791862487793 -v -28.0932731628418 -4.09240198135376 -21.40408325195312 +v -28.0932731628418 -4.09240198135376 -21.40408325195313 v 4.161307811737061 -40.34838485717773 -106.3163070678711 v -19.53142166137695 6.477696895599365 -34.54721069335938 v -15.32335662841797 27.08382415771484 -47.34894561767578 -v -15.56659698486328 26.39956665039062 -50.18951416015625 +v -15.56659698486328 26.39956665039063 -50.18951416015625 v -6.164387226104736 12.8818302154541 -75.05625152587891 v 1.402615070343018 -32.38360595703125 -99.73628997802734 v -24.79911041259766 -4.953472137451172 -21.03395843505859 @@ -391,14 +391,14 @@ v -14.25648880004883 -6.954940795898438 -3.301691055297852 v -14.10265731811523 -6.075778961181641 -7.124460220336914 v -11.2052116394043 -7.280231952667236 -5.841878890991211 v 19.74986457824707 -37.60753631591797 68.32992553710938 -v 19.34836387634277 -38.14849472045898 68.15628051757812 +v 19.34836387634277 -38.14849472045898 68.15628051757813 v 19.89711761474609 -38.15519714355469 68.03912353515625 v -4.907510757446289 6.093640804290771 10.12681770324707 v -2.877649068832397 5.517601013183594 11.07694053649902 v 1.745674014091492 26.13694000244141 21.00781440734863 v 0.4745520055294037 27.20939636230469 20.97971534729004 v 3.233434915542603 28.02400207519531 25.24942970275879 -v 4.282450199127197 26.64773559570312 23.71314430236816 +v 4.282450199127197 26.64773559570313 23.71314430236816 v 14.8602180480957 5.642467975616455 47.61897277832031 v 14.56025314331055 6.223588943481445 49.83868408203125 v 18.9760627746582 -28.07810020446777 62.27335357666016 @@ -432,28 +432,28 @@ v 1.932853937149048 23.20393180847168 23.79626274108887 v 11.57662582397461 3.190187931060791 46.84990692138672 v 17.50724792480469 -31.60873603820801 60.42989349365234 v -10.6054573059082 -8.239757537841797 -2.646497964859009 -v 19.63114547729492 -38.69778442382812 67.83663940429688 +v 19.63114547729492 -38.69778442382813 67.83663940429688 v -2.475620031356812 4.172726154327393 12.91663932800293 v 2.032040119171143 24.59943771362305 21.57402229309082 v 3.703634023666382 24.50261497497559 23.06640815734863 -v 13.53237915039062 4.292479038238525 46.28885650634766 +v 13.53237915039063 4.292479038238525 46.28885650634766 v 18.54694938659668 -31.23143768310547 60.44495391845703 v -12.53854370117188 -7.280231952667236 -13.491455078125 v -15.43598937988281 -6.075778961181641 -12.2088737487793 v -15.58982086181641 -6.954940795898438 -16.03164291381836 -v 18.56378555297852 -38.15519714355469 -87.37246704101562 +v 18.56378555297852 -38.15519714355469 -87.37246704101563 v 18.0150318145752 -38.14849472045898 -87.4896240234375 v 18.41653251647949 -37.60753631591797 -87.66326904296875 v -4.210980892181396 5.517601013183594 -30.41027450561523 v -6.240842819213867 6.093640804290771 -29.46015167236328 v 0.4123420119285583 26.13694000244141 -40.34114837646484 v -0.8587800264358521 27.20939636230469 -40.31304931640625 -v 2.949118137359619 26.64773559570312 -43.04647827148438 +v 2.949118137359619 26.64773559570313 -43.04647827148438 v 1.900102972984314 28.02400207519531 -44.582763671875 -v 13.52688598632812 5.642467975616455 -66.95231628417969 -v 13.22692108154297 6.223588943481445 -69.17202758789062 +v 13.52688598632813 5.642467975616455 -66.95231628417969 +v 13.22692108154297 6.223588943481445 -69.17202758789063 v 17.86732864379883 -29.66015243530273 -80.59872436523438 -v 17.64273071289062 -28.07810020446777 -81.60670471191406 +v 17.64273071289063 -28.07810020446777 -81.60670471191406 v -18.44928359985352 -5.533359050750732 -13.80491638183594 v 17.96691513061523 -37.46723175048828 -87.82330322265625 v -8.370006561279297 5.467060089111328 -30.11508178710938 @@ -469,7 +469,7 @@ v -1.290704965591431 25.68392181396484 -45.89799499511719 v 9.702729225158691 4.237391948699951 -70.18302917480469 v 15.76919937133789 -28.75799560546875 -81.57952880859375 v -17.36852645874023 -7.262344837188721 -19.56281280517578 -v 17.48766136169434 -38.44494247436523 -87.45840454101562 +v 17.48766136169434 -38.44494247436523 -87.45840454101563 v -7.645581245422363 3.043694019317627 -33.43013000488281 v -1.641402959823608 24.23861885070801 -41.86458587646484 v -1.029770016670227 23.72967147827148 -44.68647766113281 @@ -483,7 +483,7 @@ v 0.5995219945907593 23.20393180847168 -43.12960052490234 v 10.24329376220703 3.190187931060791 -66.18324279785156 v 16.17391586303711 -31.60873603820801 -79.76324462890625 v -11.93878936767578 -8.239757537841797 -16.68683624267578 -v 18.29781341552734 -38.69778442382812 -87.16998291015625 +v 18.29781341552734 -38.69778442382813 -87.16998291015625 v -3.808951854705811 4.172726154327393 -32.24997329711914 v 0.6987079977989197 24.59943771362305 -40.90735626220703 v 2.370301961898804 24.50261497497559 -42.39974212646484 @@ -517,7 +517,7 @@ v -51.75783920288086 11.98240089416504 0.8355600237846375 v -56.05172729492188 7.156466007232666 5.002277851104736 v -53.53396987915039 14.21004676818848 1.72101902961731 v -57.36484146118164 8.803488731384277 5.656900882720947 -v -56.62808227539062 15.23869514465332 0.7346760034561157 +v -56.62808227539063 15.23869514465332 0.7346760034561157 v -59.24757766723633 9.889246940612793 4.827473163604736 v -58.71025466918945 14.29374885559082 -1.380638957023621 v -60.28214263916016 9.596194267272949 3.138458967208862 @@ -554,7 +554,7 @@ v -40.64442825317383 21.88604164123535 -0.7607129812240601 v -44.44827651977539 21.88604164123535 2.546009063720703 v -53.9999885559082 20.33333778381348 0.4478580057621002 v -60.29326629638672 19.47619819641113 -2.199142932891846 -v -63.06387329101562 19.47619819641113 -6.810235023498535 +v -63.06387329101563 19.47619819641113 -6.810235023498535 v -64.39229583740234 20.33333778381348 -9.944446563720703 v -63.32090759277344 15.14286994934082 -6.139256000518799 v -62.36603164672852 15.39914894104004 -5.604844093322754 @@ -616,7 +616,7 @@ v -38.80768203735352 21.88604164123535 -9.988886833190918 v -44.44827651977539 21.88604164123535 -22.47934150695801 v -53.9999885559082 20.33333778381348 -20.38118934631348 v -60.29326629638672 19.47619819641113 -17.73418998718262 -v -63.06387329101562 19.47619819641113 -13.12309837341309 +v -63.06387329101563 19.47619819641113 -13.12309837341309 v -64.39229583740234 20.33333778381348 -9.988886833190918 v -62.33220672607422 15.06181526184082 -14.44650936126709 v -62.36603164672852 15.39914894104004 -14.32849025726318 @@ -648,7 +648,7 @@ v -64.66415405273438 4.277801990509033 -18.2394905090332 v -63.78934860229492 3.570785999298096 -16.48468399047852 v -62.37599182128906 11.21470260620117 -16.82923698425293 v -66.95527648925781 4.531181812286377 -18.78395462036133 -v -63.80926132202148 13.24985885620117 -14.86489868164062 +v -63.80926132202148 13.24985885620117 -14.86489868164063 v -68.93736267089844 4.140174865722656 -17.70805549621582 v -64.48637390136719 12.67211532592773 -12.25428771972656 v -69.1180419921875 3.399224042892456 -15.82198143005371 @@ -668,7 +668,7 @@ v -51.75783920288086 12.03694534301758 -19.50222587585449 v -56.05172729492188 7.211010932922363 -23.66894340515137 v -53.53396987915039 14.26459121704102 -20.38768196105957 v -57.36484146118164 8.858034133911133 -24.32356452941895 -v -56.62808227539062 15.29323959350586 -19.40134239196777 +v -56.62808227539063 15.29323959350586 -19.40134239196777 v -59.24757766723633 9.943792343139648 -23.49413871765137 v -58.71025466918945 14.34829330444336 -17.28602600097656 v -60.28214263916016 9.650739669799805 -21.80512428283691 @@ -677,13 +677,13 @@ v -58.74361419677734 17.51846694946289 -2.271703958511353 v -59.46704864501953 18.40674209594727 -2.53897500038147 v -60.63759613037109 18.10347366333008 -2.337920904159546 v -61.55588531494141 18.15423965454102 -3.37207293510437 -v -60.57522583007812 18.69086074829102 -3.431842088699341 +v -60.57522583007813 18.69086074829102 -3.431842088699341 v -61.64485168457031 18.26233291625977 -4.609260082244873 v -61.38417816162109 17.94110488891602 -5.717274188995361 v -61.48154449462891 16.98392105102539 -6.448155879974365 v -62.26735687255859 17.28479385375977 -5.621510982513428 v -62.61495971679688 16.49116897583008 -5.094202995300293 -v -62.20498657226562 16.13167190551758 -6.081917762756348 +v -62.20498657226563 16.13167190551758 -6.081917762756348 v -61.27806091308594 15.97928333282471 -6.500585079193115 v -62.26735687255859 15.54427146911621 -4.988009929656982 v -61.38417816162109 14.97993564605713 -4.639497756958008 @@ -691,7 +691,7 @@ v -61.48154449462891 15.24338626861572 -5.814656257629395 v -60.47430419921875 15.08453464508057 -3.54331111907959 v -61.64485168457031 15.44609451293945 -3.584233999252319 v -61.55588531494141 16.32414627075195 -2.705970048904419 -v -60.57522583007812 15.87463855743408 -2.406815052032471 +v -60.57522583007813 15.87463855743408 -2.406815052032471 v -59.56442260742188 15.70901966094971 -2.636348009109497 v -60.63759613037109 17.02777481079102 -1.946398019790649 v -59.46704864501953 16.66621780395508 -1.905473947525024 @@ -702,13 +702,13 @@ v -59.46704864501953 18.14007568359375 -17.19435882568359 v -58.74361419677734 17.25180053710938 -17.46162986755371 v -59.67054748535156 17.40419006347656 -17.88029861450195 v -60.63759613037109 17.83680725097656 -17.39541244506836 -v -60.57522583007812 18.4241943359375 -16.30149078369141 +v -60.57522583007813 18.4241943359375 -16.30149078369141 v -61.55588531494141 17.8875732421875 -16.36125946044922 v -61.64485168457031 17.99566650390625 -15.12407302856445 v -62.26735687255859 17.01812744140625 -14.1118221282959 v -61.48154449462891 16.71725463867188 -13.28517723083496 v -61.38417816162109 17.6744384765625 -14.01605987548828 -v -62.20498657226562 15.86500549316406 -13.65141487121582 +v -62.20498657226563 15.86500549316406 -13.65141487121582 v -62.61495971679688 16.22450256347656 -14.63912963867188 v -61.27806091308594 15.71261596679688 -13.23274803161621 v -62.26735687255859 15.27760314941406 -14.74532318115234 @@ -716,7 +716,7 @@ v -61.48154449462891 14.97671890258789 -13.91867828369141 v -61.38417816162109 14.7132682800293 -15.09383583068848 v -61.64485168457031 15.17942810058594 -16.14909934997559 v -60.47430419921875 14.81786727905273 -16.19002342224121 -v -60.57522583007812 15.60797119140625 -17.32651901245117 +v -60.57522583007813 15.60797119140625 -17.32651901245117 v -61.55588531494141 16.05747985839844 -17.02736282348633 v -59.56442260742188 15.44235229492188 -17.09698486328125 v -60.63759613037109 16.7611083984375 -17.78693389892578 @@ -1247,7 +1247,7 @@ vn -0.7882999777793884 -0.6091880202293396 -0.08644299954175949 vn -0.6353080272674561 -0.5868319869041443 0.5020080208778381 vn -0.7489200234413147 -0.3426479995250702 0.5671960115432739 vn -0.8290749788284302 -0.1998199969530106 0.5222129821777344 -vn -0.8114089965820312 -0.2435930073261261 0.5312989950180054 +vn -0.8114089965820313 -0.2435930073261261 0.5312989950180054 vn -0.02972600050270557 -0.7129759788513184 -0.7005580067634583 vn -0.1212550029158592 -0.8703849911689758 -0.4772070050239563 vn 0.1511760056018829 -0.9298509955406189 -0.3354449868202209 @@ -1536,7 +1536,7 @@ vn -0.3590719997882843 -0.2934069931507111 -0.8859909772872925 vn -0.5312150120735168 -0.1616500020027161 -0.8316730260848999 vn 0.5217099785804749 -0.3334519863128662 -0.7852569818496704 vn 0.4982230067253113 -0.5182129740715027 -0.6951469779014587 -vn 0.3192520141601562 -0.6669300198554993 -0.6732630133628845 +vn 0.3192520141601563 -0.6669300198554993 -0.6732630133628845 vn 0.4172089993953705 0.6029300093650818 -0.6800090074539185 vn -0.3909519910812378 -0.5063930153846741 -0.7685850262641907 vn -0.785847008228302 -0.2199160009622574 -0.5779989957809448 @@ -1593,7 +1593,7 @@ vn -0.8313949704170227 0.3698750138282776 0.414698988199234 vn -0.7773889899253845 0.439754992723465 0.4497570097446442 vn -0.7120980024337769 0.07437500357627869 0.6981300115585327 vn -0.5221620202064514 -0.5821250081062317 0.6232789754867554 -vn -0.5362930297851562 0.8426250219345093 0.04870999976992607 +vn -0.5362930297851563 0.8426250219345093 0.04870999976992607 vn -0.6278550028800964 0.7403159737586975 0.2402739971876144 vn -0.817995011806488 0.4767960011959076 0.3217920064926147 vn -0.7291709780693054 0.6557949781417847 0.1955550014972687 diff --git a/test/models/PLY/cube_test.ply b/test/models/PLY/cube_test.ply index e70217c42..8de33f3de 100644 --- a/test/models/PLY/cube_test.ply +++ b/test/models/PLY/cube_test.ply @@ -1,6 +1,6 @@ ply format ascii 1.0 -comment Created by Open Asset Import Library - http://assimp.sf.net (v4.1.1712791017) +comment Created by Open Asset Import Library - http://assimp.sf.net (v4.1.3023643559) element vertex 8 property float x property float y diff --git a/test/unit/utFBXImporterExporter.cpp b/test/unit/utFBXImporterExporter.cpp index d2415a8e5..56590f494 100644 --- a/test/unit/utFBXImporterExporter.cpp +++ b/test/unit/utFBXImporterExporter.cpp @@ -97,3 +97,15 @@ TEST_F( utFBXImporterExporter, importPhongMaterial ) { EXPECT_EQ( mat->Get(AI_MATKEY_OPACITY, f), aiReturn_SUCCESS ); EXPECT_EQ( f, 0.5 ); } + +TEST_F(utFBXImporterExporter, importUnitScaleFactor) { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/FBX/spider.fbx", aiProcess_ValidateDataStructure); + + EXPECT_NE(nullptr, scene); + EXPECT_NE(nullptr, scene->mMetaData); + + double factor(0.0); + scene->mMetaData->Get("UnitScaleFactor", factor); + EXPECT_DOUBLE_EQ(1.0, factor); +} From f80ed093f80c756e6d1399cd94af83453a0de4b3 Mon Sep 17 00:00:00 2001 From: kim kulling Date: Tue, 23 Jan 2018 15:13:49 +0100 Subject: [PATCH 05/23] remove test artifacts from repo. --- test/models/OBJ/spider_nomtl_test.obj | 3205 ------------------------- test/models/PLY/cube_test.ply | 24 - 2 files changed, 3229 deletions(-) delete mode 100644 test/models/OBJ/spider_nomtl_test.obj delete mode 100644 test/models/PLY/cube_test.ply diff --git a/test/models/OBJ/spider_nomtl_test.obj b/test/models/OBJ/spider_nomtl_test.obj deleted file mode 100644 index 8129fff29..000000000 --- a/test/models/OBJ/spider_nomtl_test.obj +++ /dev/null @@ -1,3205 +0,0 @@ -# File produced by Open Asset Import Library (http://www.assimp.sf.net) -# (assimp v4.1.3023643559) - -# 722 vertex positions -v 1.160378932952881 4.512683868408203 6.449167251586914 -v 22.65617179870605 10.21453857421875 16.86968994140625 -v 4.568314075469971 16.85711288452148 5.619616985321045 -v 14.40229797363281 32.89186859130859 3.414829015731812 -v 27.52080917358398 27.08032608032227 11.45156478881836 -v 39.18625640869141 16.23099708557129 12.6327018737793 -v -6.442715167999268 10.77740478515625 -0.5375289916992188 -v -8.120363235473633 15.6844596862793 -10.5 -v -0.8867700099945068 23.4237174987793 -4.342854022979736 -v -0.8867700099945068 23.4237174987793 -16.65714454650879 -v 14.40229797363281 32.89186859130859 -26.41482543945313 -v 12.95316505432129 36.87333679199219 -11.5 -v 30.52731704711914 37.50395202636719 -2.733282089233398 -v 30.52731704711914 37.50395202636719 -20.26671600341797 -v 44.30125045776367 33.96472930908203 -11.5 -v 45.09496688842773 27.71094512939453 2.684845924377441 -v 57.93621826171875 30.27653312683105 -11.5 -v 54.50359344482422 5.934020042419434 -11.5 -v 51.09176254272461 11.23489952087402 2.684845924377441 -v 45.09496688842773 27.71094512939453 -25.68484497070313 -v 39.18625640869141 16.23099708557129 -35.63270568847656 -v 51.09176254272461 11.23489952087402 -25.68484497070313 -v 27.52080917358398 27.08032608032227 -34.45156478881836 -v 4.568314075469971 16.85711288452148 -26.6196174621582 -v 1.160378932952881 4.512683868408203 -27.44916915893555 -v 22.65617179870605 10.21453857421875 -39.86968994140625 -v 7.838881015777588 -6.414187908172607 -26.6196174621582 -v 30.91004180908203 -12.4627857208252 -26.41482543945313 -v 37.22381591796875 0.4215309917926788 -34.45156478881836 -v 46.22711181640625 -5.630886077880859 -20.26671600341797 -v 32.35918426513672 -16.44425201416016 -11.5 -v 30.91004180908203 -12.4627857208252 3.414829015731812 -v 46.22711181640625 -5.630886077880859 -2.733282089233398 -v 4.405118942260742 -14.23004245758057 -16.65714454650879 -v -4.681486129760742 -8.784435272216797 -10.5 -v 4.405118942260742 -14.23004245758057 -4.342854022979736 -v -4.421391010284424 -3.605049133300781 -0.5375289916992188 -v 7.838881015777588 -6.414187908172607 5.619616985321045 -v 37.22381591796875 0.4215309917926788 11.45156478881836 -v -9.876476287841797 2.961555004119873 -10.5 -v -6.442715167999268 10.77740478515625 -20.46247100830078 -v -4.421391010284424 -3.605049133300781 -20.46247100830078 -v -41.85661315917969 -0.7548459768295288 9.430771827697754 -v -27.9502124786377 1.303017020225525 3.0814208984375 -v -32.62586212158203 10.86018753051758 8.47976016998291 -v -24.40152359008789 12.2247486114502 -3.122689962387085 -v -18.8264045715332 5.435883045196533 0.5830910205841064 -v -11.22126770019531 -4.132546901702881 1.127722024917603 -v -44.88201522827148 11.88719749450684 1.421121001243591 -v -44.84470367431641 15.22849273681641 -10 -v -35.57024002075195 16.59859085083008 -2.941359043121338 -v -35.57024002075195 16.59859085083008 -17.05864334106445 -v -24.40152359008789 12.2247486114502 -16.87730979919434 -v -23.77848243713379 14.14228057861328 -10 -v -8.432302474975586 6.445052146911621 -5.95761775970459 -v -8.432302474975586 6.445052146911621 -14.04238128662109 -v -1.337092995643616 1.108109951019287 -10 -v -3.30927300453186 -1.735224008560181 -0.5947030186653137 -v -0.4196679890155792 -7.642198085784912 -10 -v -6.305181980133057 -14.18209838867188 -10 -v -6.229438781738281 -10.72257518768311 -0.5947030186653137 -v -3.30927300453186 -1.735224008560181 -19.40529632568359 -v -11.22126770019531 -4.132546901702881 -21.12771987915039 -v -6.229438781738281 -10.72257518768311 -19.40529632568359 -v -18.8264045715332 5.435883045196533 -20.58309173583984 -v -32.62586212158203 10.86018753051758 -28.47975921630859 -v -41.85661315917969 -0.7548459768295288 -29.43077087402344 -v -27.9502124786377 1.303017020225525 -23.0814208984375 -v -39.19473266601563 -9.356718063354492 -28.47975921630859 -v -31.49889755249023 -9.618716239929199 -16.87730979919434 -v -22.99813652038574 -7.403382778167725 -20.58309173583984 -v -49.71383666992188 -2.983590126037598 1.421121001243591 -v -39.19473266601563 -9.356718063354492 8.47976016998291 -v -22.99813652038574 -7.403382778167725 0.5830910205841064 -v -31.49889755249023 -9.618716239929199 -3.122689962387085 -v -50.63702392578125 8.975393295288086 -10 -v -51.64759063720703 -5.708693981170654 -10 -v -44.88201522827148 11.88719749450684 -21.42111587524414 -v -49.71383666992188 -2.983590126037598 -21.42111587524414 -v -40.67147827148438 -3.47288703918457 -21.36916732788086 -v -41.96333312988281 -2.246160984039307 -18.48523330688477 -v -44.64511871337891 -3.443838119506836 -21.08979034423828 -v -87.6058349609375 -39.9835319519043 -104.3517227172852 -v -87.87104797363281 -40.01747512817383 -103.8583068847656 -v -87.9501953125 -39.45514678955078 -104.2601852416992 -v -47.09840393066406 7.389261245727539 -39.58503341674805 -v -47.14669799804688 8.704387664794922 -37.68162155151367 -v -55.4437255859375 28.01696014404297 -51.02064895629883 -v -55.80507659912109 29.50034332275391 -50.36057662963867 -v -56.41304779052734 27.51875305175781 -54.60213470458984 -v -57.93299102783203 29.20790100097656 -55.03944778442383 -v -67.98501586914063 13.43557167053223 -79.02035522460938 -v -69.89360046386719 14.10584259033203 -80.14413452148438 -v -81.67832183837891 -31.37918090820313 -101.2915573120117 -v -82.77850341796875 -29.84352111816406 -101.2665863037109 -v -45.27461242675781 -1.921316027641296 -17.56256103515625 -v -88.2349853515625 -39.3502311706543 -103.8660430908203 -v -48.86238861083984 8.964324951171875 -36.15071487426758 -v -56.92498016357422 29.82746124267578 -49.55580902099609 -v -60.01216888427734 29.56021118164063 -54.08668899536133 -v -72.06874084472656 14.20652008056641 -79.36090087890625 -v -83.47474670410156 -29.51860809326172 -100.4707794189453 -v -48.11187744140625 -2.742969989776611 -19.29600143432617 -v -88.2457275390625 -39.74774169921875 -103.4660797119141 -v -50.95351028442383 7.973351955413818 -36.14510726928711 -v -57.96013641357422 28.75201416015625 -49.21238708496094 -v -61.08487701416016 28.31040191650391 -52.46125793457031 -v -72.87251281738281 13.66179847717285 -77.26039123535156 -v -83.24275207519531 -30.64902877807617 -99.50344848632813 -v -48.33858871459961 -4.09240198135376 -22.38015365600586 -v -87.97438049316406 -40.34838485717773 -103.3615341186523 -v -51.84541320800781 6.477696895599365 -37.66901397705078 -v -58.13103866577148 27.08382415771484 -49.58887100219727 -v -60.34334564208984 26.39956665039063 -51.38712310791016 -v -71.69966125488281 12.8818302154541 -75.42439270019531 -v -82.25722503662109 -32.38360595703125 -99.09293365478516 -v -45.78402709960938 -4.953472137451172 -24.49265670776367 -v -87.62525177001953 -40.69983673095703 -103.6310958862305 -v -50.86646270751953 5.603586196899414 -39.57491683959961 -v -57.30899810791016 26.07907104492188 -50.40177917480469 -v -58.34596252441406 25.26664733886719 -51.67315673828125 -v -69.433349609375 12.45395088195801 -75.23539733886719 -v -81.26026153564453 -33.41617965698242 -99.54843139648438 -v -42.37185668945313 -4.677759170532227 -24.04270935058594 -v -87.46121978759766 -40.53748321533203 -104.0717544555664 -v -48.75384521484375 6.009276866912842 -40.42763137817383 -v -56.11302947998047 26.49437713623047 -51.03896713256836 -v -56.59683609008789 25.76473236083984 -53.10398483276367 -v -67.78019714355469 12.70041084289551 -76.83576965332031 -v -81.00263214111328 -32.96916198730469 -100.5268630981445 -v -45.856201171875 -3.096683979034424 0.9894610047340393 -v -42.83802795410156 -1.822747945785522 -1.17337703704834 -v -41.96012115478516 -3.15467095375061 1.817621946334839 -v -92.29042816162109 -39.21158981323242 57.38248825073242 -v -92.26210784912109 -39.83740234375 57.07994079589844 -v -91.95950317382813 -39.73274230957031 57.5407600402832 -v -49.36812591552734 8.476757049560547 19.08589744567871 -v -49.19630432128906 7.804555892944336 21.29348754882813 -v -54.25469207763672 27.27288055419922 30.44888496398926 -v -54.92575836181641 28.34239959716797 29.36605453491211 -v -57.45500946044922 28.70623016357422 33.83551406860352 -v -55.48647308349609 27.49809265136719 33.97690582275391 -v -67.46834564208984 9.109057426452637 43.49641799926758 -v -69.61196136474609 9.454971313476563 44.29645156860352 -v -87.01417541503906 -30.51413726806641 52.42203521728516 -v -85.97149658203125 -32.07468414306641 52.63847351074219 -v -45.98867797851563 -1.450130939483643 -2.535742998123169 -v -92.60006713867188 -39.16170501708984 56.99636840820313 -v -50.88497161865234 7.785149097442627 17.48099899291992 -v -55.98342132568359 28.08773803710938 28.45757293701172 -v -59.41564178466797 28.14698791503906 32.74097061157227 -v -71.61580657958984 8.682785987854004 43.43437957763672 -v -87.75607299804688 -30.29622077941895 51.63100051879883 -v -49.03958129882813 -2.317409992218018 -1.243530988693237 -v -92.65523529052734 -39.6205940246582 56.67316055297852 -v -52.60464477539063 6.250553131103516 17.68733215332031 -v -56.63124847412109 26.70069122314453 28.40756416320801 -v -59.89194488525391 26.24149322509766 31.51743125915527 -v -71.97093963623047 7.37397575378418 41.55935287475586 -v -87.63851928710938 -31.58496475219727 50.86106491088867 -v -49.69331359863281 -3.771508932113647 1.730138063430786 -v -92.41441345214844 -40.24274826049805 56.65629577636719 -v -53.23219299316406 5.028540134429932 19.54948425292969 -v -56.38141632080078 25.22571563720703 29.25366592407227 -v -58.52523040771484 24.42458915710449 31.08627510070801 -v -70.40996551513672 6.514069080352783 40.08333206176758 -v -86.75009155273438 -33.40998077392578 50.69198608398438 -v -47.45761871337891 -4.717469215393066 4.146055221557617 -v -92.05893707275391 -40.55963134765625 56.95841217041016 -v -52.29503631591797 5.039290904998779 21.6652717590332 -v -55.42203521728516 24.77352905273438 30.3587532043457 -v -56.34468841552734 24.06446647644043 31.77214431762695 -v -68.10823822021484 6.750600814819336 40.11775207519531 -v -85.75971984863281 -34.3969612121582 51.2510871887207 -v -44.01602935791016 -4.442947864532471 4.184988975524902 -v -91.85649871826172 -40.33267974853516 57.35205459594727 -v -50.4989013671875 6.274747848510742 22.44142532348633 -v -54.47554779052734 25.68461608886719 30.89064788818359 -v -54.99231719970703 25.43232727050781 33.05861282348633 -v -66.79914093017578 7.905498027801514 41.6367301940918 -v -85.4132080078125 -33.80271530151367 52.11734008789063 -v -32.53578186035156 -3.15467095375061 -19.16253662109375 -v -34.38373184204102 -1.822747945785522 -16.65216445922852 -v -36.48015213012695 -3.096683979034424 -19.71685028076172 -v -43.38578033447266 -41.58316040039063 -95.21874237060547 -v -43.91326141357422 -41.58873748779297 -95.02735137939453 -v -43.69423675537109 -41.06890106201172 -95.43450164794922 -v -35.0989875793457 7.804555892944336 -38.97930526733398 -v -36.35158920288086 8.476757049560547 -37.15337371826172 -v -37.55405807495117 27.27288055419922 -51.63281631469727 -v -38.67663192749023 28.34239959716797 -51.03059768676758 -v -36.8568000793457 27.49809265136719 -55.3040657043457 -v -38.63229751586914 28.70623016357422 -56.16587829589844 -v -39.32158660888672 4.109056949615479 -79.20964813232422 -v -40.77798843383789 4.454970836639404 -80.97431182861328 -v -40.8770866394043 -32.42660522460938 -89.88973236083984 -v -41.6864128112793 -30.95858383178711 -90.76108551025391 -v -37.81033325195313 -1.450130939483643 -16.44955062866211 -v -44.16765594482422 -40.94609069824219 -95.34366607666016 -v -38.46767044067383 7.785149097442627 -36.52191925048828 -v -40.04683303833008 28.08773803710938 -50.77265167236328 -v -40.87752914428711 28.14698791503906 -56.19830703735352 -v -42.94440460205078 3.682785987854004 -81.22965240478516 -v -42.73056793212891 -30.60493469238281 -90.66996002197266 -v -40.23527908325195 -2.317409992218018 -18.70730972290039 -v -44.44951629638672 -41.30718231201172 -95.01465606689453 -v -39.85378265380859 6.250553131103516 -37.56044387817383 -v -40.63287734985352 26.70069122314453 -51.05325317382813 -v -41.90177536010742 26.24149322509766 -55.37683486938477 -v -44.18946838378906 2.373975992202759 -79.78339385986328 -v -43.2232666015625 -31.63191223144531 -89.68506622314453 -v -39.8325309753418 -3.771508932113647 -21.72522735595703 -v -44.32761383056641 -41.88030242919922 -94.69525909423828 -v -39.4661750793457 5.028540134429932 -39.48690414428711 -v -39.99345779418945 25.22571563720703 -51.66109085083008 -v -40.93375778198242 24.42458915710449 -54.3200798034668 -v -43.57563781738281 1.514069080352783 -77.72464752197266 -v -42.79354858398438 -33.2662239074707 -88.54798126220703 -v -36.90536880493164 -4.717469215393066 -23.23079490661621 -v -43.89371490478516 -42.23382568359375 -94.62592315673828 -v -37.59667587280273 5.039290904998779 -40.85063934326172 -v -38.61006164550781 24.77352905273438 -52.13843154907227 -v -38.70241546630859 24.06446647644043 -53.82379531860352 -v -41.56508255004883 1.750601053237915 -76.60358428955078 -v -41.76493453979492 -34.27718353271484 -88.11498260498047 -v -33.65802383422852 -4.442947864532471 -22.09029006958008 -v -43.47456359863281 -42.10161590576172 -94.85892486572266 -v -35.65310668945313 6.274747848510742 -40.62473678588867 -v -37.52444076538086 25.68461608886719 -52.12581634521484 -v -36.88800048828125 25.43232727050781 -54.26172637939453 -v -39.6718864440918 2.905498027801514 -77.26450347900391 -v -40.91205215454102 -33.90352249145508 -88.71208953857422 -v -36.01900863647461 -3.216418027877808 -1.765162944793701 -v -34.50244522094727 -1.655421018600464 -5.032196044921875 -v -32.20283126831055 -2.602406978607178 -2.728740930557251 -v -28.69635772705078 -38.61240768432617 75.69805145263672 -v -28.86252021789551 -39.28370666503906 75.62229156494141 -v -28.3271656036377 -39.13187408447266 75.69469451904297 -v -36.10787582397461 8.519889831542969 15.56240081787109 -v -34.57637023925781 8.107364654541016 17.24739646911621 -v -39.05897903442383 27.08562469482422 30.08821868896484 -v -40.40615463256836 27.93409729003906 29.60663604736328 -v -39.89728164672852 28.39327239990234 34.70915603637695 -v -38.03726577758789 27.49446105957031 33.66647720336914 -v -34.5403938293457 17.31492233276367 46.75900650024414 -v -35.8452262878418 17.43609428405762 48.66624069213867 -v -28.96659469604492 -31.87043952941895 66.61157989501953 -v -28.00870513916016 -33.48403930664063 66.39229583740234 -v -37.94406127929688 -1.883904933929443 -4.875525951385498 -v -29.19070816040039 -38.59844589233398 75.64435577392578 -v -38.12530136108398 7.461886882781982 15.15559387207031 -v -41.7304801940918 27.44197845458984 29.49332809448242 -v -41.99584579467773 27.45536041259766 34.97609710693359 -v -37.80666732788086 16.30614280700684 49.14663314819336 -v -30.06003952026367 -31.71491622924805 66.54987335205078 -v -39.93606948852539 -3.115807056427002 -2.376658916473389 -v -29.43793296813965 -39.1004524230957 75.57405853271484 -v -39.1094856262207 5.730080127716064 16.33332061767578 -v -42.03471374511719 25.97990417480469 29.83365058898926 -v -42.752685546875 25.38702392578125 34.26618957519531 -v -38.94770431518555 14.77594661712646 47.83845138549805 -v -30.46564483642578 -33.13447570800781 66.25366973876953 -v -38.97844314575195 -4.423483848571777 0.5826259851455688 -v -29.25189590454102 -39.74045181274414 75.54013824462891 -v -38.3193473815918 4.6285400390625 18.20871162414551 -v -41.08975601196289 24.6487865447998 30.3713264465332 -v -41.59787368774414 23.74571800231934 33.11403656005859 -v -38.40911865234375 13.99774074554443 45.72681045532227 -v -29.87803268432617 -35.06025695800781 65.94594573974609 -v -35.79229736328125 -4.822233200073242 1.77397894859314 -v -28.77267646789551 -40.03646850585938 75.56807708740234 -v -36.34981918334961 4.986735820770264 19.36955642700195 -v -39.6071891784668 24.45104026794434 30.70144844055176 -v -39.40102005004883 23.76740074157715 32.38723373413086 -v -36.59642791748047 14.5575475692749 44.40173721313477 -v -28.7396183013916 -36.04206466674805 65.85849761962891 -v -32.77687454223633 -4.011776924133301 0.3002820014953613 -v -28.36112785339355 -39.7656364440918 75.63690948486328 -v -34.68405532836914 6.534968852996826 18.94173622131348 -v -38.70342254638672 25.53554534912109 30.5754222869873 -v -37.81640243530273 25.43576812744141 32.63310623168945 -v -34.87471389770508 16.03384399414063 44.86114120483398 -v -27.90771293640137 -35.34060668945313 66.05712127685547 -v -26.45577621459961 -3.443838119506836 -2.149142980575562 -v -26.46640014648438 -2.246160984039307 -5.887526988983154 -v -23.49448394775391 -3.47288703918457 -4.813465118408203 -v 5.039107799530029 -39.45514678955078 86.51023101806641 -v 4.668338775634766 -40.01747512817383 86.33621978759766 -v 5.211228847503662 -39.9835319519043 86.19824981689453 -v -16.25835037231445 8.704387664794922 11.1760082244873 -v -14.85560417175293 7.389261245727539 12.46347618103027 -v -12.42665863037109 28.01696014404297 26.41044998168945 -v -13.15249061584473 29.50034332275391 26.21185684204102 -v -11.26496505737305 29.20790100097656 30.99277114868164 -v -10.52369499206543 27.51875305175781 29.59563827514648 -v -0.9972569942474365 13.43557167053223 54.88214111328125 -v -1.514698028564453 14.10584259033203 57.03571319580078 -v 3.385565996170044 -29.84352111816406 80.76795196533203 -v 3.675970077514648 -31.37918090820313 79.70648956298828 -v -29.43033599853516 -1.921316027641296 -4.146553039550781 -v 4.587766170501709 -39.3502311706543 86.69120025634766 -v -18.55141067504883 8.964324951171875 11.34670639038086 -v -14.50934600830078 29.82746124267578 26.45841026306152 -v -13.3946418762207 29.56021118164063 31.82656478881836 -v -3.589093923568726 14.20652008056641 58.0562744140625 -v 2.445001125335693 -29.51860809326172 81.25101470947266 -v -30.15432739257813 -2.742969989776611 -0.9014430046081543 -v 4.197091102600098 -39.74774169921875 86.60486602783203 -v -20.00806045532227 7.973351955413818 12.8470344543457 -v -15.4754638671875 28.75201416015625 26.9644775390625 -v -15.30904579162598 28.31040191650391 31.46907806396484 -v -5.658416748046875 13.66179847717285 57.17532348632813 -v 1.562493085861206 -30.64902877807617 80.79186248779297 -v -28.0932731628418 -4.09240198135376 1.404078960418701 -v 4.161306858062744 -40.34838485717773 86.31630706787109 -v -19.53142166137695 6.477696895599365 14.54720878601074 -v -15.32335662841797 27.08382415771484 27.34894752502441 -v -15.56659698486328 26.39956665039063 30.18951416015625 -v -6.164387226104736 12.8818302154541 55.05625915527344 -v 1.402615070343018 -32.38360595703125 79.73628997802734 -v -24.79911041259766 -4.953472137451172 1.033954977989197 -v 4.507323265075684 -40.69983673095703 86.04276275634766 -v -17.48039627075195 5.603586196899414 15.16696166992188 -v -14.16756820678711 26.07907104492188 27.32230758666992 -v -13.97334671020508 25.26664733886719 28.95141792297363 -v -4.726027011871338 12.45395088195801 53.29472351074219 -v 2.08576488494873 -33.41617965698242 78.87914276123047 -v -22.75246810913086 -4.677759170532227 -1.733124017715454 -v 4.974565982818604 -40.53748321533203 85.99021148681641 -v -15.39944839477539 6.009276866912842 14.2396240234375 -v -12.87841987609863 26.49437713623047 26.90462684631348 -v -11.72904586791992 25.76473236083984 28.68713760375977 -v -2.426440954208374 12.70041084289551 53.21726226806641 -v 3.097472906112671 -32.96916198730469 78.86588287353516 -v -23.49448394775391 -3.47288703918457 -15.18653869628906 -v -26.46640014648438 -2.246160984039307 -14.11247634887695 -v -26.45577621459961 -3.443838119506836 -17.85086059570313 -v 5.211228847503662 -39.9835319519043 -106.1982498168945 -v 4.668338775634766 -40.01747512817383 -106.3362197875977 -v 5.039107799530029 -39.45514678955078 -106.5102310180664 -v -14.85560417175293 7.389261245727539 -32.46347808837891 -v -16.25835037231445 8.704387664794922 -31.17601013183594 -v -12.42665863037109 28.01696014404297 -46.41044616699219 -v -13.15249061584473 29.50034332275391 -46.21185302734375 -v -10.52369499206543 27.51875305175781 -49.59563446044922 -v -11.26496505737305 29.20790100097656 -50.99276733398438 -v -0.9972569942474365 13.43557167053223 -74.88213348388672 -v -1.514698028564453 14.10584259033203 -77.03571319580078 -v 3.675970077514648 -31.37918090820313 -99.70648956298828 -v 3.38556694984436 -29.84352111816406 -100.767951965332 -v -29.43033599853516 -1.921316027641296 -15.85345077514648 -v 4.587764739990234 -39.3502311706543 -106.6912002563477 -v -18.55141067504883 8.964324951171875 -31.34671020507813 -v -14.50934600830078 29.82746124267578 -46.45841217041016 -v -13.3946418762207 29.56021118164063 -51.82656097412109 -v -3.589093923568726 14.20652008056641 -78.05626678466797 -v 2.445001125335693 -29.51860809326172 -101.2510147094727 -v -30.15432739257813 -2.742969989776611 -19.09856033325195 -v 4.197090148925781 -39.74774169921875 -106.604866027832 -v -20.00806045532227 7.973351955413818 -32.8470344543457 -v -15.4754638671875 28.75201416015625 -46.9644775390625 -v -15.30904579162598 28.31040191650391 -51.46907806396484 -v -5.658416748046875 13.66179847717285 -77.17531585693359 -v 1.562493085861206 -30.64902877807617 -100.791862487793 -v -28.0932731628418 -4.09240198135376 -21.40408325195313 -v 4.161307811737061 -40.34838485717773 -106.3163070678711 -v -19.53142166137695 6.477696895599365 -34.54721069335938 -v -15.32335662841797 27.08382415771484 -47.34894561767578 -v -15.56659698486328 26.39956665039063 -50.18951416015625 -v -6.164387226104736 12.8818302154541 -75.05625152587891 -v 1.402615070343018 -32.38360595703125 -99.73628997802734 -v -24.79911041259766 -4.953472137451172 -21.03395843505859 -v 4.50732421875 -40.69983673095703 -106.0427627563477 -v -17.48039627075195 5.603586196899414 -35.16696166992188 -v -14.16756820678711 26.07907104492188 -47.32230377197266 -v -13.97334671020508 25.26664733886719 -48.951416015625 -v -4.726027011871338 12.45395088195801 -73.29471588134766 -v 2.08576488494873 -33.41617965698242 -98.87914276123047 -v -22.75246810913086 -4.677759170532227 -18.26688003540039 -v 4.974565982818604 -40.53748321533203 -105.9902114868164 -v -15.39944839477539 6.009276866912842 -34.2396240234375 -v -12.87841987609863 26.49437713623047 -46.90462493896484 -v -11.72904586791992 25.76473236083984 -48.6871337890625 -v -2.426440954208374 12.70041084289551 -73.21726226806641 -v 3.097472906112671 -32.96916198730469 -98.86588287353516 -v -14.25648880004883 -6.954940795898438 -3.301691055297852 -v -14.10265731811523 -6.075778961181641 -7.124460220336914 -v -11.2052116394043 -7.280231952667236 -5.841878890991211 -v 19.74986457824707 -37.60753631591797 68.32992553710938 -v 19.34836387634277 -38.14849472045898 68.15628051757813 -v 19.89711761474609 -38.15519714355469 68.03912353515625 -v -4.907510757446289 6.093640804290771 10.12681770324707 -v -2.877649068832397 5.517601013183594 11.07694053649902 -v 1.745674014091492 26.13694000244141 21.00781440734863 -v 0.4745520055294037 27.20939636230469 20.97971534729004 -v 3.233434915542603 28.02400207519531 25.24942970275879 -v 4.282450199127197 26.64773559570313 23.71314430236816 -v 14.8602180480957 5.642467975616455 47.61897277832031 -v 14.56025314331055 6.223588943481445 49.83868408203125 -v 18.9760627746582 -28.07810020446777 62.27335357666016 -v 19.20066070556641 -29.66015243530273 61.26537322998047 -v -17.11595153808594 -5.533359050750732 -5.528418064117432 -v 19.30024719238281 -37.46723175048828 68.48995971679688 -v -7.036674976348877 5.467060089111328 10.78174591064453 -v -0.8241369724273682 27.00916290283203 21.51090049743652 -v 1.346554040908813 27.59506225585938 26.51851081848145 -v 12.85833549499512 5.598269939422607 51.27650451660156 -v 18.04227828979492 -27.67663192749023 62.70982360839844 -v -17.97599411010742 -6.06142520904541 -2.255570888519287 -v 18.88686752319336 -37.83989715576172 68.39877319335938 -v -7.661820888519287 4.109711170196533 12.54856109619141 -v -1.172435998916626 25.68704986572266 22.20140266418457 -v 0.0426269993185997 25.68392181396484 26.56466102600098 -v 11.03606128692627 4.237391948699951 50.84969329833984 -v 17.10253143310547 -28.75799560546875 62.24617767333984 -v -16.03519439697266 -7.262344837188721 0.2294789999723434 -v 18.82099342346191 -38.44494247436523 68.12506103515625 -v -6.312249183654785 3.043694019317627 14.09679794311523 -v -0.3080709874629974 24.23861885070801 22.53124809265137 -v 0.3035619854927063 23.72967147827148 25.3531436920166 -v 10.46565055847168 3.165694952011108 48.87973022460938 -v 16.8643856048584 -30.50795555114746 61.23151397705078 -v -12.75498580932617 -8.23180103302002 0.05550599843263626 -v 19.15221405029297 -38.82671737670898 67.87483215332031 -v -4.004155158996582 3.07171893119812 14.26059532165527 -v 1.118067026138306 23.75459671020508 22.25203132629395 -v 1.932853937149048 23.20393180847168 23.79626274108887 -v 11.57662582397461 3.190187931060791 46.84990692138672 -v 17.50724792480469 -31.60873603820801 60.42989349365234 -v -10.6054573059082 -8.239757537841797 -2.646497964859009 -v 19.63114547729492 -38.69778442382813 67.83663940429688 -v -2.475620031356812 4.172726154327393 12.91663932800293 -v 2.032040119171143 24.59943771362305 21.57402229309082 -v 3.703634023666382 24.50261497497559 23.06640815734863 -v 13.53237915039063 4.292479038238525 46.28885650634766 -v 18.54694938659668 -31.23143768310547 60.44495391845703 -v -12.53854370117188 -7.280231952667236 -13.491455078125 -v -15.43598937988281 -6.075778961181641 -12.2088737487793 -v -15.58982086181641 -6.954940795898438 -16.03164291381836 -v 18.56378555297852 -38.15519714355469 -87.37246704101563 -v 18.0150318145752 -38.14849472045898 -87.4896240234375 -v 18.41653251647949 -37.60753631591797 -87.66326904296875 -v -4.210980892181396 5.517601013183594 -30.41027450561523 -v -6.240842819213867 6.093640804290771 -29.46015167236328 -v 0.4123420119285583 26.13694000244141 -40.34114837646484 -v -0.8587800264358521 27.20939636230469 -40.31304931640625 -v 2.949118137359619 26.64773559570313 -43.04647827148438 -v 1.900102972984314 28.02400207519531 -44.582763671875 -v 13.52688598632813 5.642467975616455 -66.95231628417969 -v 13.22692108154297 6.223588943481445 -69.17202758789063 -v 17.86732864379883 -29.66015243530273 -80.59872436523438 -v 17.64273071289063 -28.07810020446777 -81.60670471191406 -v -18.44928359985352 -5.533359050750732 -13.80491638183594 -v 17.96691513061523 -37.46723175048828 -87.82330322265625 -v -8.370006561279297 5.467060089111328 -30.11508178710938 -v -2.157469034194946 27.00916290283203 -40.84423828125 -v 0.01322199963033199 27.59506225585938 -45.85184478759766 -v 11.52500343322754 5.598269939422607 -70.60984802246094 -v 16.70894622802734 -27.67663192749023 -82.04316711425781 -v -19.309326171875 -6.06142520904541 -17.07776260375977 -v 17.55353546142578 -37.83989715576172 -87.73211669921875 -v -8.995153427124023 4.109711170196533 -31.88189697265625 -v -2.505768060684204 25.68704986572266 -41.53473663330078 -v -1.290704965591431 25.68392181396484 -45.89799499511719 -v 9.702729225158691 4.237391948699951 -70.18302917480469 -v 15.76919937133789 -28.75799560546875 -81.57952880859375 -v -17.36852645874023 -7.262344837188721 -19.56281280517578 -v 17.48766136169434 -38.44494247436523 -87.45840454101563 -v -7.645581245422363 3.043694019317627 -33.43013000488281 -v -1.641402959823608 24.23861885070801 -41.86458587646484 -v -1.029770016670227 23.72967147827148 -44.68647766113281 -v 9.132317543029785 3.165694952011108 -68.21307373046875 -v 15.53105354309082 -30.50795555114746 -80.56486511230469 -v -14.08831787109375 -8.23180103302002 -19.38883972167969 -v 17.81888198852539 -38.82671737670898 -87.20817565917969 -v -5.33748722076416 3.07171893119812 -33.59392929077148 -v -0.2152650058269501 23.75459671020508 -41.58536529541016 -v 0.5995219945907593 23.20393180847168 -43.12960052490234 -v 10.24329376220703 3.190187931060791 -66.18324279785156 -v 16.17391586303711 -31.60873603820801 -79.76324462890625 -v -11.93878936767578 -8.239757537841797 -16.68683624267578 -v 18.29781341552734 -38.69778442382813 -87.16998291015625 -v -3.808951854705811 4.172726154327393 -32.24997329711914 -v 0.6987079977989197 24.59943771362305 -40.90735626220703 -v 2.370301961898804 24.50261497497559 -42.39974212646484 -v 12.19904708862305 4.292479038238525 -65.6221923828125 -v 17.2136173248291 -31.23143768310547 -79.77830505371094 -v -66.77298736572266 -11.88561820983887 -0.2029989957809448 -v -61.49651336669922 6.340155124664307 -5.812275886535645 -v -62.98685073852539 9.870844841003418 -6.308485984802246 -v -61.44757843017578 8.190096855163574 -3.647036075592041 -v -63.97118377685547 3.661695003509521 -3.830467939376831 -v -64.84598541259766 4.368710994720459 -2.075659990310669 -v -62.55780410766602 11.30561256408691 -3.485913991928101 -v -67.13710784912109 4.622090816497803 -1.531195998191833 -v -63.99109649658203 13.34076976776123 -5.450253009796143 -v -69.11919403076172 4.231084823608398 -2.607095956802368 -v -64.66820526123047 12.76302528381348 -8.06086254119873 -v -69.29987335205078 3.490133047103882 -4.493171215057373 -v -64.07926177978516 10.00739574432373 -9.351896286010742 -v -67.54299163818359 2.957120895385742 -5.769162178039551 -v -62.66775894165039 7.148978233337402 -8.351184844970703 -v -65.17147064208984 3.033509969711304 -5.474239826202393 -v -66.72484588623047 1.179926037788391 10.02946090698242 -v -58.21265029907227 12.08680152893066 -3.032124042510986 -v -55.28428649902344 12.61780071258545 -0.7646610140800476 -v -55.50985717773438 10.27971935272217 -2.97612190246582 -v -59.68946075439453 8.144949913024902 1.861809968948364 -v -57.9158821105957 6.628377914428711 1.958868980407715 -v -52.63722610473633 10.23327159881592 -1.25485098361969 -v -56.29685974121094 6.188433170318604 3.356508016586304 -v -51.75783920288086 11.98240089416504 0.8355600237846375 -v -56.05172729492188 7.156466007232666 5.002277851104736 -v -53.53396987915039 14.21004676818848 1.72101902961731 -v -57.36484146118164 8.803488731384277 5.656900882720947 -v -56.62808227539063 15.23869514465332 0.7346760034561157 -v -59.24757766723633 9.889246940612793 4.827473163604736 -v -58.71025466918945 14.29374885559082 -1.380638957023621 -v -60.28214263916016 9.596194267272949 3.138458967208862 -v -53.9999885559082 26.33333778381348 -9.944446563720703 -v -44.00383377075195 24.25179481506348 -7.336516857147217 -v -43.19998550415039 24.25179481506348 -9.944446563720703 -v -46.64442825317383 24.25179481506348 -0.7607110142707825 -v -53.9999885559082 2.333333969116211 -9.944446563720703 -v -50.9999885559082 3.941030979156494 -4.748294830322266 -v -53.9999885559082 3.941030979156494 -3.944447040557861 -v -53.9999885559082 24.72564125061035 -3.944446086883545 -v -55.80000305175781 6.941027164459229 -4.748294830322266 -v -56.99998474121094 24.72564125061035 -4.748292922973633 -v -57.99615859985352 5.774363040924072 -6.944447040557861 -v -59.19614028930664 24.72564125061035 -6.944447040557861 -v -58.80000686645508 5.774363040924072 -9.944446563720703 -v -59.99999237060547 24.72564125061035 -9.944446563720703 -v -45.44443130493164 8.333334922790527 -0.08162699639797211 -v -48.80383682250977 8.333334922790527 -0.9444469809532166 -v -53.9999885559082 10.66667366027832 1.822437047958374 -v -59.19614028930664 8.333334922790527 -0.9444469809532166 -v -62.9999885559082 8.333334922790527 -4.748293876647949 -v -64.19229888916016 7.533350944519043 -9.944446563720703 -v -43.60768508911133 8.333334922790527 -9.944446563720703 -v -37.19998550415039 18.65442848205566 -9.944446563720703 -v -39.25212478637695 18.65442848205566 -0.06191999837756157 -v -43.64442825317383 18.65442848205566 3.756353855133057 -v -53.9999885559082 14.33333778381348 2.055552959442139 -v -61.41007232666016 13.47619915008545 -1.042665958404541 -v -64.60929870605469 13.47619915008545 -6.367094039916992 -v -66.39998626708984 12.33334636688232 -9.944446563720703 -v -38.80768203735352 21.88604164123535 -9.944446563720703 -v -40.64442825317383 21.88604164123535 -0.7607129812240601 -v -44.44827651977539 21.88604164123535 2.546009063720703 -v -53.9999885559082 20.33333778381348 0.4478580057621002 -v -60.29326629638672 19.47619819641113 -2.199142932891846 -v -63.06387329101563 19.47619819641113 -6.810235023498535 -v -64.39229583740234 20.33333778381348 -9.944446563720703 -v -63.32090759277344 15.14286994934082 -6.139256000518799 -v -62.36603164672852 15.39914894104004 -5.604844093322754 -v -62.33220672607422 15.06181526184082 -5.486823081970215 -v -62.95563125610352 14.64286994934082 -5.390261173248291 -v -62.37112808227539 14.47619819641113 -4.191868782043457 -v -62.07738494873047 15.07085609436035 -4.598177909851074 -v -61.73810577392578 15.73718452453613 -3.414914131164551 -v -61.64052581787109 15.30952644348145 -2.693876981735229 -v -61.55341339111328 16.74508094787598 -2.770823001861572 -v -61.42134857177734 16.64286994934082 -2.244477033615112 -v -61.58245086669922 17.63445472717285 -2.87214994430542 -v -61.56745147705078 17.80952644348145 -2.544080018997192 -v -61.72498321533203 18.15569496154785 -3.369262933731079 -v -61.85970306396484 18.47619819641113 -3.143272876739502 -v -62.29808807373047 18.64286994934082 -4.042075157165527 -v -61.89406585693359 18.04158973693848 -3.958856105804443 -v -62.73646926879883 18.14286994934082 -4.940859794616699 -v -62.07035064697266 17.69966316223145 -4.573657035827637 -v -62.11862945556641 16.98106575012207 -4.741918087005615 -v -62.95563125610352 16.97619819641113 -5.390261173248291 -v -62.20188140869141 16.16166877746582 -5.032281875610352 -v -63.24786376953125 16.30952644348145 -5.989458084106445 -v -15.18229866027832 -14.32931900024414 -14.04238128662109 -v -32.1219482421875 -11.5362491607666 -10 -v -15.18229866027832 -14.32931900024414 -5.95761775970459 -v -44.94972991943359 -12.26852130889893 -17.05864334106445 -v -44.94972991943359 -12.26852130889893 -2.941359043121338 -v -43.19998550415039 24.25179481506348 -9.988886833190918 -v -44.00383377075195 24.25179481506348 -12.59681606292725 -v -53.9999885559082 26.33333778381348 -9.988886833190918 -v -46.64442825317383 24.25179481506348 -19.17262077331543 -v -53.9999885559082 3.941030979156494 -15.9888858795166 -v -50.9999885559082 3.941030979156494 -15.18503856658936 -v -53.9999885559082 2.333333969116211 -9.988886833190918 -v -53.9999885559082 24.72564125061035 -15.9888858795166 -v -55.80000305175781 6.941027164459229 -15.18503856658936 -v -56.99998474121094 24.72564125061035 -15.18503952026367 -v -57.99615859985352 5.774363040924072 -12.98888683319092 -v -59.19614028930664 24.72564125061035 -12.98888683319092 -v -58.80000686645508 5.774363040924072 -9.988886833190918 -v -59.99999237060547 24.72564125061035 -9.988886833190918 -v -48.80383682250977 8.333334922790527 -18.9888858795166 -v -45.44443130493164 8.333334922790527 -19.85170555114746 -v -53.9999885559082 10.66667366027832 -21.75576972961426 -v -59.19614028930664 8.333334922790527 -18.9888858795166 -v -62.9999885559082 8.333334922790527 -15.18503856658936 -v -64.19229888916016 7.533350944519043 -9.988886833190918 -v -37.19998550415039 18.65442848205566 -9.988886833190918 -v -43.60768508911133 8.333334922790527 -9.988886833190918 -v -39.25212478637695 18.65442848205566 -19.87141227722168 -v -43.64442825317383 18.65442848205566 -23.68968772888184 -v -53.9999885559082 14.33333778381348 -21.9888858795166 -v -61.41007232666016 13.47619915008545 -18.89066886901855 -v -64.60929870605469 13.47619915008545 -13.56623935699463 -v -66.39998626708984 12.33334636688232 -9.988886833190918 -v -40.64442825317383 21.88604164123535 -19.17262077331543 -v -38.80768203735352 21.88604164123535 -9.988886833190918 -v -44.44827651977539 21.88604164123535 -22.47934150695801 -v -53.9999885559082 20.33333778381348 -20.38118934631348 -v -60.29326629638672 19.47619819641113 -17.73418998718262 -v -63.06387329101563 19.47619819641113 -13.12309837341309 -v -64.39229583740234 20.33333778381348 -9.988886833190918 -v -62.33220672607422 15.06181526184082 -14.44650936126709 -v -62.36603164672852 15.39914894104004 -14.32849025726318 -v -63.32090759277344 15.14286994934082 -13.79407787322998 -v -62.95563125610352 14.64286994934082 -14.54307270050049 -v -62.37112808227539 14.47619819641113 -15.74146461486816 -v -62.07738494873047 15.07085609436035 -15.33515357971191 -v -61.73810577392578 15.73718452453613 -16.51841926574707 -v -61.64052581787109 15.30952644348145 -17.23945426940918 -v -61.42134857177734 16.64286994934082 -17.68885612487793 -v -61.55341339111328 16.74508094787598 -17.16251182556152 -v -61.56745147705078 17.80952644348145 -17.38925361633301 -v -61.58245086669922 17.63445472717285 -17.06118202209473 -v -61.72498321533203 18.15569496154785 -16.5640697479248 -v -61.85970306396484 18.47619819641113 -16.79006004333496 -v -62.29808807373047 18.64286994934082 -15.89125633239746 -v -61.89406585693359 18.04158973693848 -15.97447776794434 -v -62.73646926879883 18.14286994934082 -14.99247264862061 -v -62.07035064697266 17.69966316223145 -15.35967445373535 -v -62.11862945556641 16.98106575012207 -15.19141483306885 -v -62.95563125610352 16.97619819641113 -14.54307270050049 -v -62.20188140869141 16.16166877746582 -14.90105247497559 -v -63.24786376953125 16.30952644348145 -13.94387531280518 -v -66.59115600585938 -11.97652816772461 -20.11215209960938 -v -61.26576614379883 8.099187850952148 -16.66811561584473 -v -62.80503845214844 9.779933929443359 -14.00666618347168 -v -61.31470108032227 6.249245166778564 -14.50287628173828 -v -64.66415405273438 4.277801990509033 -18.2394905090332 -v -63.78934860229492 3.570785999298096 -16.48468399047852 -v -62.37599182128906 11.21470260620117 -16.82923698425293 -v -66.95527648925781 4.531181812286377 -18.78395462036133 -v -63.80926132202148 13.24985885620117 -14.86489868164063 -v -68.93736267089844 4.140174865722656 -17.70805549621582 -v -64.48637390136719 12.67211532592773 -12.25428771972656 -v -69.1180419921875 3.399224042892456 -15.82198143005371 -v -63.89742660522461 9.916484832763672 -10.96325492858887 -v -67.36116027832031 2.8662109375 -14.54598999023438 -v -62.48594665527344 7.058069229125977 -11.96396636962891 -v -64.98963928222656 2.942600965499878 -14.84091186523438 -v -66.72484588623047 1.234470963478088 -28.69612312316895 -v -55.50985717773438 10.33426475524902 -15.69054412841797 -v -55.28428649902344 12.6723461151123 -17.90200424194336 -v -58.21265029907227 12.14134788513184 -15.63454246520996 -v -57.9158821105957 6.682922840118408 -20.62553215026855 -v -59.68946075439453 8.199495315551758 -20.52847480773926 -v -52.63722610473633 10.28781700134277 -17.41181564331055 -v -56.29685974121094 6.242978096008301 -22.02317237854004 -v -51.75783920288086 12.03694534301758 -19.50222587585449 -v -56.05172729492188 7.211010932922363 -23.66894340515137 -v -53.53396987915039 14.26459121704102 -20.38768196105957 -v -57.36484146118164 8.858034133911133 -24.32356452941895 -v -56.62808227539063 15.29323959350586 -19.40134239196777 -v -59.24757766723633 9.943792343139648 -23.49413871765137 -v -58.71025466918945 14.34829330444336 -17.28602600097656 -v -60.28214263916016 9.650739669799805 -21.80512428283691 -v -59.67054748535156 17.67085647583008 -1.853034973144531 -v -58.74361419677734 17.51846694946289 -2.271703958511353 -v -59.46704864501953 18.40674209594727 -2.53897500038147 -v -60.63759613037109 18.10347366333008 -2.337920904159546 -v -61.55588531494141 18.15423965454102 -3.37207293510437 -v -60.57522583007813 18.69086074829102 -3.431842088699341 -v -61.64485168457031 18.26233291625977 -4.609260082244873 -v -61.38417816162109 17.94110488891602 -5.717274188995361 -v -61.48154449462891 16.98392105102539 -6.448155879974365 -v -62.26735687255859 17.28479385375977 -5.621510982513428 -v -62.61495971679688 16.49116897583008 -5.094202995300293 -v -62.20498657226563 16.13167190551758 -6.081917762756348 -v -61.27806091308594 15.97928333282471 -6.500585079193115 -v -62.26735687255859 15.54427146911621 -4.988009929656982 -v -61.38417816162109 14.97993564605713 -4.639497756958008 -v -61.48154449462891 15.24338626861572 -5.814656257629395 -v -60.47430419921875 15.08453464508057 -3.54331111907959 -v -61.64485168457031 15.44609451293945 -3.584233999252319 -v -61.55588531494141 16.32414627075195 -2.705970048904419 -v -60.57522583007813 15.87463855743408 -2.406815052032471 -v -59.56442260742188 15.70901966094971 -2.636348009109497 -v -60.63759613037109 17.02777481079102 -1.946398019790649 -v -59.46704864501953 16.66621780395508 -1.905473947525024 -v -61.74577331542969 17.31189346313477 -2.839264869689941 -v -62.3682861328125 17.41006851196289 -4.243031024932861 -v -62.3682861328125 16.33436965942383 -3.851508140563965 -v -59.46704864501953 18.14007568359375 -17.19435882568359 -v -58.74361419677734 17.25180053710938 -17.46162986755371 -v -59.67054748535156 17.40419006347656 -17.88029861450195 -v -60.63759613037109 17.83680725097656 -17.39541244506836 -v -60.57522583007813 18.4241943359375 -16.30149078369141 -v -61.55588531494141 17.8875732421875 -16.36125946044922 -v -61.64485168457031 17.99566650390625 -15.12407302856445 -v -62.26735687255859 17.01812744140625 -14.1118221282959 -v -61.48154449462891 16.71725463867188 -13.28517723083496 -v -61.38417816162109 17.6744384765625 -14.01605987548828 -v -62.20498657226563 15.86500549316406 -13.65141487121582 -v -62.61495971679688 16.22450256347656 -14.63912963867188 -v -61.27806091308594 15.71261596679688 -13.23274803161621 -v -62.26735687255859 15.27760314941406 -14.74532318115234 -v -61.48154449462891 14.97671890258789 -13.91867828369141 -v -61.38417816162109 14.7132682800293 -15.09383583068848 -v -61.64485168457031 15.17942810058594 -16.14909934997559 -v -60.47430419921875 14.81786727905273 -16.19002342224121 -v -60.57522583007813 15.60797119140625 -17.32651901245117 -v -61.55588531494141 16.05747985839844 -17.02736282348633 -v -59.56442260742188 15.44235229492188 -17.09698486328125 -v -60.63759613037109 16.7611083984375 -17.78693389892578 -v -59.46704864501953 16.39955139160156 -17.82785987854004 -v -61.74577331542969 17.04522705078125 -16.89406776428223 -v -62.3682861328125 17.14340209960938 -15.49030303955078 -v -62.3682861328125 16.06770324707031 -15.8818244934082 - -# 302 UV coordinates -vt 0.1861920058727264 0.2227180004119873 0 -vt 0.5031800270080566 0.03906299918889999 0 -vt 0.2364480048418045 0.2373390048742294 0 -vt 0.3814640045166016 0.2761969864368439 0 -vt 0.5749170184135437 0.134553998708725 0 -vt 0.7469409704208374 0.1137370020151138 0 -vt 0.07407300174236298 0.3458549976348877 0 -vt 0.04933400079607964 0.5214380025863647 0 -vt 0.1560039967298508 0.4129219949245453 0 -vt 0.1560039967298508 0.6299539804458618 0 -vt 0.3814640045166016 0.8019279837608337 0 -vt 0.3600949943065643 0.5390629768371582 0 -vt 0.6192520260810852 0.384553998708725 0 -vt 0.6192520260810852 0.6935709714889526 0 -vt 0.8223689794540405 0.5390629768371582 0 -vt 0.8340740203857422 0.2890630066394806 0 -vt 1.023437976837158 0.5390629768371582 0 -vt 0.9728180170059204 0.5390629768371582 0 -vt 0.9225059747695923 0.2890630066394806 0 -vt 0.8340740203857422 0.7890629768371582 0 -vt 0.7469409704208374 0.9643880128860474 0 -vt 0.9225059747695923 0.7890629768371582 0 -vt 0.5749170184135437 0.9435709714889526 0 -vt 0.2364480048418045 0.8055369853973389 0 -vt 0.1861920058727264 0.8201580047607422 0 -vt 0.5031800270080566 1.039062976837158 0 -vt 0.2846769988536835 0.8055369853973389 0 -vt 0.6248959898948669 0.8019279837608337 0 -vt 0.7180020213127136 0.9435709714889526 0 -vt 0.8507689833641052 0.6935709714889526 0 -vt 0.646265983581543 0.5390629768371582 0 -vt 0.6248959898948669 0.2761969864368439 0 -vt 0.8507689833641052 0.384553998708725 0 -vt 0.2340410053730011 0.6299539804458618 0 -vt 0.1000450029969215 0.5214380025863647 0 -vt 0.2340410053730011 0.4129219949245453 0 -vt 0.1038810014724731 0.3458549976348877 0 -vt 0.2846769988536835 0.2373390048742294 0 -vt 0.7180020213127136 0.134553998708725 0 -vt 0.02343799918889999 0.5214380025863647 0 -vt 0.07407300174236298 0.6970210075378418 0 -vt 0.1038810014724731 0.6970210075378418 0 -vt -0.06587100028991699 -0.4100160002708435 0 -vt 0.4030880033969879 -0.109436996281147 0 -vt 0.1274410039186478 -0.364995002746582 0 -vt 0.4030880033969879 0.1842669993638992 0 -vt 0.6787350177764893 0.008834999985992908 0 -vt 1.058290958404541 -0.01694799959659576 0 -vt -0.3185659945011139 -0.03083699941635132 0 -vt -0.3557040095329285 0.5098400115966797 0 -vt -0.04291899874806404 0.175683006644249 0 -vt -0.04291899874806404 0.8439980149269104 0 -vt 0.4030880033969879 0.8354139924049377 0 -vt 0.4030880033969879 0.5098400115966797 0 -vt 1.035338997840881 0.3184730112552643 0 -vt 1.035338997840881 0.7012069821357727 0 -vt 1.348124027252197 0.5098400115966797 0 -vt 1.310984969139099 0.06459199637174606 0 -vt 1.481344938278198 0.5098400115966797 0 -vt 1.310984969139099 0.9550889730453491 0 -vt 1.058290958404541 1.03662896156311 0 -vt 0.6787350177764893 1.010846018791199 0 -vt 0.1274410039186478 1.384675025939941 0 -vt -0.06587100028991699 1.429695963859558 0 -vt 0.4030880033969879 1.129117012023926 0 -vt -0.4889250099658966 0.5098400115966797 0 -vt -0.3185659945011139 1.050518035888672 0 -vt 0 1 0 -vt 0 0 0 -vt 0 0.1666669994592667 0 -vt 0.1428570002317429 0.1666669994592667 0 -vt 0.1428570002317429 0 0 -vt 0 0.3333329856395721 0 -vt 0.1428570002317429 0.3333329856395721 0 -vt 0 0.5 0 -vt 0.1428570002317429 0.5 0 -vt 0 0.6666669845581055 0 -vt 0.1428570002317429 0.6666669845581055 0 -vt 0 0.8333330154418945 0 -vt 0.1428570002317429 0.8333330154418945 0 -vt 0.1428570002317429 1 0 -vt 0.2857140004634857 0 0 -vt 0.2857140004634857 0.1666669994592667 0 -vt 0.2857140004634857 0.3333329856395721 0 -vt 0.2857140004634857 0.5 0 -vt 0.2857140004634857 0.6666669845581055 0 -vt 0.2857140004634857 0.8333330154418945 0 -vt 0.2857140004634857 1 0 -vt 0.4285709857940674 0.1666669994592667 0 -vt 0.4285709857940674 0 0 -vt 0.4285709857940674 0.3333329856395721 0 -vt 0.4285709857940674 0.5 0 -vt 0.4285709857940674 0.6666669845581055 0 -vt 0.4285709857940674 0.8333330154418945 0 -vt 0.4285709857940674 1 0 -vt 0.5714290142059326 0 0 -vt 0.5714290142059326 0.1666669994592667 0 -vt 0.5714290142059326 0.3333329856395721 0 -vt 0.5714290142059326 0.5 0 -vt 0.5714290142059326 0.6666669845581055 0 -vt 0.5714290142059326 0.8333330154418945 0 -vt 0.5714290142059326 1 0 -vt 0.7142860293388367 0.1666669994592667 0 -vt 0.7142860293388367 0 0 -vt 0.7142860293388367 0.3333329856395721 0 -vt 0.7142860293388367 0.5 0 -vt 0.7142860293388367 0.6666669845581055 0 -vt 0.7142860293388367 0.8333330154418945 0 -vt 0.7142860293388367 1 0 -vt 0.8571429848670959 0 0 -vt 0.8571429848670959 0.1666669994592667 0 -vt 0.8571429848670959 0.3333329856395721 0 -vt 0.8571429848670959 0.5 0 -vt 0.8571429848670959 0.6666669845581055 0 -vt 0.8571429848670959 0.8333330154418945 0 -vt 0.8571429848670959 1 0 -vt 1 0.1666669994592667 0 -vt 1 0 0 -vt 1 0.3333329856395721 0 -vt 1 0.5 0 -vt 1 0.6666669845581055 0 -vt 1 0.8333330154418945 0 -vt 1 1 0 -vt 0.3329190015792847 0.2726939916610718 0 -vt 0.4468950033187866 0.3977729976177216 0 -vt 0.4569770097732544 0.4220040142536163 0 -vt 0.4028989970684052 0.4104689955711365 0 -vt 0.4066259860992432 0.379391998052597 0 -vt 0.3709700107574463 0.3842439949512482 0 -vt 0.3996250033378601 0.4318499863147736 0 -vt 0.3599070012569427 0.3859829902648926 0 -vt 0.439538985490799 0.4458169937133789 0 -vt 0.3817679882049561 0.3832989931106567 0 -vt 0.4925839900970459 0.4418520033359528 0 -vt 0.420091986656189 0.3782140016555786 0 -vt 0.5188159942626953 0.4229409992694855 0 -vt 0.4460189938545227 0.3745560050010681 0 -vt 0.4984830021858215 0.4033240079879761 0 -vt 0.4400259852409363 0.3750799894332886 0 -vt 0.3448100090026855 0.3380840122699738 0 -vt 0.4880180060863495 0.4240910112857819 0 -vt 0.4631580114364624 0.428277999162674 0 -vt 0.487405002117157 0.409841001033783 0 -vt 0.4343610107898712 0.3930070102214813 0 -vt 0.4332970082759857 0.3810479938983917 0 -vt 0.468531996011734 0.4094749987125397 0 -vt 0.4179730117321014 0.377579003572464 0 -vt 0.4456129968166351 0.4232679903507233 0 -vt 0.3999280035495758 0.3852129876613617 0 -vt 0.4359039962291718 0.4408339858055115 0 -vt 0.392751008272171 0.3982000052928925 0 -vt 0.4467189908027649 0.4489449858665466 0 -vt 0.4018450081348419 0.4067620038986206 0 -vt 0.4699110090732574 0.4414939880371094 0 -vt 0.4203630089759827 0.4044510126113892 0 -vt 0.1903489977121353 0.9132689833641052 0 -vt 0 0.9132689833641052 0 -vt 0.6703060269355774 0.9132689833641052 0 -vt 0.3792589902877808 0.06698700040578842 0 -vt 0.4379310011863708 0.06698700040578842 0 -vt 0.4379310011863708 0.9330130219459534 0 -vt 0.3792589902877808 0.1919869929552078 0 -vt 0.3792589902877808 0.9330130219459534 0 -vt 0.2189649939537048 0.1433759927749634 0 -vt 0.2189649939537048 0.9330130219459534 0 -vt 0 0.1433759927749634 0 -vt 0 0.9330130219459534 0 -vt 0.719871997833252 0.25 0 -vt 0.6568959951400757 0.25 0 -vt 0.8588460087776184 0.3472220003604889 0 -vt 0.3792589902877808 0.25 0 -vt 0 0.2166669964790344 0 -vt 0 0.25 0 -vt 0 0.6800450086593628 0 -vt 0.721310019493103 0.6800450086593628 0 -vt 1 0.6800450086593628 0 -vt 0.8758609890937805 0.5 0 -vt 0.6497269868850708 0.4642859995365143 0 -vt 0.2611050009727478 0.4642859995365143 0 -vt 0 0.4166670143604279 0 -vt 0 0.8146960139274597 0 -vt 0.6703060269355774 0.8146960139274597 0 -vt 0.9116590023040771 0.8146960139274597 0 -vt 0.7585179805755615 0.75 0 -vt 0.5653179883956909 0.7142860293388367 0 -vt 0.2287610024213791 0.7142860293388367 0 -vt 0 0.75 0 -vt 0.2777349948883057 0.5337309837341309 0 -vt 0.3167409896850586 0.5444089770317078 0 -vt 0.3253549933433533 0.5303530097007751 0 -vt 0.3324030041694641 0.5128970146179199 0 -vt 0.419871985912323 0.5059530138969421 0 -vt 0.3902159929275513 0.5307300090789795 0 -vt 0.4765799939632416 0.558493971824646 0 -vt 0.5292080044746399 0.5406749844551086 0 -vt 0.5235919952392578 0.6004890203475952 0 -vt 0.5620089769363403 0.5962309837341309 0 -vt 0.5161960124969482 0.6375470161437988 0 -vt 0.5401409864425659 0.6448410153388977 0 -vt 0.4799120128154755 0.6592649817466736 0 -vt 0.4964070022106171 0.6726189851760864 0 -vt 0.4308049976825714 0.6795639991760254 0 -vt 0.4368790090084076 0.6545109748840332 0 -vt 0.3652040064334869 0.6587309837341309 0 -vt 0.3920060098171234 0.6402639746665955 0 -vt 0.379723995923996 0.6103219985961914 0 -vt 0.3324030041694641 0.6101189851760864 0 -vt 0.3585309982299805 0.5761809945106506 0 -vt 0.2886680066585541 0.5823410153388977 0 -vt 0.445345014333725 0.6860769987106323 0 -vt 0.607125997543335 0.786342978477478 0 -vt 0.8164219856262207 0.6093729734420776 0 -vt 0.9782029986381531 0.754476010799408 0 -vt 0.445345014333725 0.5 0 -vt 0.445345014333725 0.3139230012893677 0 -vt 0.8164219856262207 0.3906269967556 0 -vt 0.1835779994726181 0.69098299741745 0 -vt 0.1835779994726181 0.30901700258255 0 -vt 0.02179699949920177 0.19098299741745 0 -vt 0.2835640013217926 0 0 -vt 0.607125997543335 0.2136570066213608 0 -vt 0.9782029986381531 0.2455240041017532 0 -vt 0.2835640013217926 1 0 -vt 0.02179699949920177 0.80901700258255 0 -vt 1 0.9132689833641052 0 -vt 0.8096510171890259 0.9132689833641052 0 -vt 0.329694002866745 0.9132689833641052 0 -vt 0.5620689988136292 0.06698700040578842 0 -vt 0.6207410097122192 0.06698700040578842 0 -vt 0.5620689988136292 0.9330130219459534 0 -vt 0.6207410097122192 0.1919869929552078 0 -vt 0.6207410097122192 0.9330130219459534 0 -vt 0.7810350060462952 0.1433759927749634 0 -vt 0.7810350060462952 0.9330130219459534 0 -vt 1 0.1433759927749634 0 -vt 1 0.9330130219459534 0 -vt 0.3431040048599243 0.25 0 -vt 0.280128002166748 0.25 0 -vt 0.1411540061235428 0.3472220003604889 0 -vt 0.6207410097122192 0.25 0 -vt 1 0.2166669964790344 0 -vt 1 0.25 0 -vt 0.2786900103092194 0.6800450086593628 0 -vt 0.1241390034556389 0.5 0 -vt 0.3502730131149292 0.4642859995365143 0 -vt 0.7388949990272522 0.4642859995365143 0 -vt 1 0.4166670143604279 0 -vt 0.329694002866745 0.8146960139274597 0 -vt 1 0.8146960139274597 0 -vt 0.08834099769592285 0.8146960139274597 0 -vt 0.2414820045232773 0.75 0 -vt 0.4346820116043091 0.7142860293388367 0 -vt 0.7712389826774597 0.7142860293388367 0 -vt 1 0.75 0 -vt 0.6746450066566467 0.5303530097007751 0 -vt 0.6832590103149414 0.5444089770317078 0 -vt 0.7222650051116943 0.5337309837341309 0 -vt 0.6675969958305359 0.5128970146179199 0 -vt 0.580128014087677 0.5059530138969421 0 -vt 0.6097840070724487 0.5307300090789795 0 -vt 0.523419976234436 0.558493971824646 0 -vt 0.4707919955253601 0.5406749844551086 0 -vt 0.4379909932613373 0.5962309837341309 0 -vt 0.4764080047607422 0.6004890203475952 0 -vt 0.4598590135574341 0.6448410153388977 0 -vt 0.4838039875030518 0.6375470161437988 0 -vt 0.5200880169868469 0.6592649817466736 0 -vt 0.5035930275917053 0.6726189851760864 0 -vt 0.5691949725151062 0.6795639991760254 0 -vt 0.5631210207939148 0.6545109748840332 0 -vt 0.6347960233688354 0.6587309837341309 0 -vt 0.6079949736595154 0.6402639746665955 0 -vt 0.6202759742736816 0.6103219985961914 0 -vt 0.6675969958305359 0.6101189851760864 0 -vt 0.6414690017700195 0.5761809945106506 0 -vt 0.7113320231437683 0.5823410153388977 0 -vt 1.046875 0.7720100283622742 0 -vt 0.9567909836769104 0.7309449911117554 0 -vt 0.8992829918861389 0.9703119993209839 0 -vt 0.9425439834594727 0.8885890245437622 0 -vt 0.7200279831886292 0.9022690057754517 0 -vt 0.7071679830551147 1.046875 0 -vt 0.4538260102272034 0.9313979744911194 0 -vt 0.2154179960489273 0.8448349833488464 0 -vt 0.05815599858760834 0.5868980288505554 0 -vt 0.2360229939222336 0.6679760217666626 0 -vt 0.349481999874115 0.4541139900684357 0 -vt 0.1369580030441284 0.3572390079498291 0 -vt 0.046875 0.3161740005016327 0 -vt 0.3723309934139252 0.1989489942789078 0 -vt 0.4473200142383575 0.046875 0 -vt 0.1944639980792999 0.11786799877882 0 -vt 0.6831830143928528 0.07506199926137924 0 -vt 0.674377977848053 0.1724929958581924 0 -vt 0.8633509874343872 0.4091059863567352 0 -vt 0.9277200102806091 0.287975013256073 0 -vt 0.8783320188522339 0.2433450073003769 0 -vt 1.026785969734192 0.5987160205841064 0 -vt 1.035591959953308 0.5012850165367126 0 -vt 0.8346710205078125 0.6752780079841614 0 -vt 0.5326259732246399 0.7017340064048767 0 -vt 0.6168689727783203 0.4118610024452209 0 - -# 747 vertex normals -vn -0.5375880002975464 -0.07179799675941467 0.840146005153656 -vn -0.1515550017356873 -0.01711099967360497 0.9883009791374207 -vn -0.510263979434967 0.3471930027008057 0.7868220210075378 -vn -0.383882999420166 0.7247530221939087 0.572160005569458 -vn 0.006790999788790941 0.5470830202102661 0.8370509743690491 -vn 0.4419640004634857 0.160861998796463 0.8824920058250427 -vn -0.8104130029678345 0.1847179979085922 0.5559759736061096 -vn -0.9155340194702148 0.4022400081157684 0 -vn -0.710112988948822 0.6201850175857544 0.3333309888839722 -vn -0.7216730117797852 0.6078910231590271 -0.3311449885368347 -vn -0.4136289954185486 0.7018579840660095 -0.5799199938774109 -vn -0.4094110131263733 0.9123499989509583 0.0004339999868534505 -vn 0.1323229968547821 0.9380099773406982 0.3203549981117249 -vn 0.1323229968547821 0.9380099773406982 -0.3203549981117249 -vn 0.3397679924964905 0.940509021282196 0 -vn 0.4818519949913025 0.6178590059280396 0.6213449835777283 -vn 0.8813369870185852 0.4724879860877991 0 -vn 0.9429519772529602 -0.3329299986362457 0 -vn 0.7952039837837219 -0.09252200275659561 0.5992419719696045 -vn 0.4818519949913025 0.6178590059280396 -0.6213449835777283 -vn 0.4419640004634857 0.160861998796463 -0.8824920058250427 -vn 0.7952039837837219 -0.09252200275659561 -0.5992419719696045 -vn -0.01252099964767694 0.539700984954834 -0.841763973236084 -vn -0.5448579788208008 0.3272939920425415 -0.7720159888267517 -vn -0.5613030195236206 -0.07517900317907333 -0.8241890072822571 -vn -0.1957750022411346 -0.0270760003477335 -0.9802749752998352 -vn -0.2998470067977905 -0.5292649865150452 -0.793707013130188 -vn 0.1448850035667419 -0.802478015422821 -0.578823983669281 -vn 0.343163013458252 -0.4203700125217438 -0.8399569988250732 -vn 0.7043060064315796 -0.6335020065307617 -0.3203549981117249 -vn 0.2609860002994537 -0.9653429985046387 0.0003220000071451068 -vn 0.173225998878479 -0.8032519817352295 0.569894015789032 -vn 0.7043060064315796 -0.6335020065307617 0.3203549981117249 -vn -0.3462300002574921 -0.8729979991912842 -0.3435100018978119 -vn -0.769195020198822 -0.6390140056610107 0 -vn -0.334289014339447 -0.8776149749755859 0.3435750007629395 -vn -0.7281039953231812 -0.4009419977664948 0.5559759736061096 -vn -0.2649039924144745 -0.5273450016975403 0.8072999715805054 -vn 0.3593209981918335 -0.4139899909496307 0.8363620042800903 -vn -0.9902679920196533 -0.1391730010509491 -0 -vn -0.8104130029678345 0.1847179979085922 -0.5559759736061096 -vn -0.7281039953231812 -0.4009419977664948 -0.5559759736061096 -vn -0.2362789958715439 0.02918500080704689 0.9712470173835754 -vn 0.3209069967269897 -0.1081760004162788 0.9409130215644836 -vn 0.2328509986400604 0.4920690059661865 0.8388379812240601 -vn 0.4011589884757996 0.816008985042572 0.4161730110645294 -vn 0.3620760142803192 0.3835749924182892 0.8495709896087646 -vn 0.1260980069637299 -0.04097200185060501 0.9911710023880005 -vn -0.604686975479126 0.6148959994316101 0.5062180161476135 -vn -0.4789099991321564 0.8778640031814575 0 -vn 0.03857599943876266 0.9693480134010315 0.2426449954509735 -vn 0.03857599943876266 0.9693480134010315 -0.2426449954509735 -vn 0.4011589884757996 0.816008985042572 -0.4161730110645294 -vn 0.3609150052070618 0.9325990080833435 0 -vn 0.4944109916687012 0.798675000667572 0.3430379927158356 -vn 0.4944109916687012 0.798675000667572 -0.3430379927158356 -vn 0.8612650036811829 0.5081560015678406 0 -vn 0.6479099988937378 0.2460869997739792 0.7208700180053711 -vn 0.9510570168495178 -0.30901700258255 0 -vn 0.7433170080184937 -0.668940007686615 0 -vn 0.5354629755020142 -0.3628270030021667 0.7626510262489319 -vn 0.6479099988937378 0.2460860013961792 -0.7208700180053711 -vn 0.1260980069637299 -0.04097200185060501 -0.9911710023880005 -vn 0.5354629755020142 -0.3628270030021667 -0.7626510262489319 -vn 0.3620760142803192 0.3835749924182892 -0.8495709896087646 -vn 0.2328509986400604 0.4920690059661865 -0.8388379812240601 -vn -0.2362789958715439 0.02918500080704689 -0.9712470173835754 -vn 0.3209069967269897 -0.1081760004162788 -0.9409130215644836 -vn 0.1329340040683746 -0.4152190089225769 -0.8999559879302979 -vn 0.1888570040464401 -0.9709110260009766 -0.1471920013427734 -vn 0.1993210017681122 -0.4351809918880463 -0.8780030012130737 -vn -0.8620179891586304 0.08302299678325653 0.5000320076942444 -vn 0.1329340040683746 -0.4152190089225769 0.8999559879302979 -vn 0.1993210017681122 -0.4351809918880463 0.8780019879341125 -vn 0.1888570040464401 -0.9709110260009766 0.1471920013427734 -vn -0.9302049875259399 0.3670400083065033 0 -vn -0.9976400136947632 0.0686580017209053 0 -vn -0.604686975479126 0.6148959994316101 -0.5062180161476135 -vn -0.8620179891586304 0.08302299678325653 -0.5000320076942444 -vn 0.02138300053775311 -0.9165120124816895 0.3994359970092773 -vn -0.7818620204925537 -0.4315609931945801 -0.4499419927597046 -vn 0.9563360214233398 0.2284609973430634 -0.1822829991579056 -vn 0.8339009881019592 -0.1045610010623932 -0.5419189929962158 -vn 0.767799973487854 0.6018419861793518 0.2197020053863525 -vn 0.5461239814758301 0.7825490236282349 0.2989400029182434 -vn 0.9109249711036682 0.174918994307518 -0.3736560046672821 -vn 0.7487580180168152 0.6616759896278381 -0.03931299969553947 -vn 0.949258029460907 -0.04748500138521194 -0.3108929991722107 -vn 0.4068360030651093 0.8022599816322327 -0.4368790090084076 -vn 0.7691559791564941 0.182668998837471 -0.6123980283737183 -vn 0.1995120048522949 0.6090829968452454 -0.7676020264625549 -vn 0.6676030158996582 0.001959000015631318 -0.7445150017738342 -vn -0.0993880033493042 0.4149369895458221 -0.9044049978256226 -vn 0.3527739942073822 0.07949899882078171 -0.932325005531311 -vn -0.2833180129528046 0.4208430051803589 -0.8617550134658813 -vn -0.05747900158166885 0.8575270175933838 0.5112180113792419 -vn 0.1317239999771118 0.7430220246315002 0.6561769843101501 -vn -0.005809000227600336 0.8595520257949829 0.5110160112380981 -vn -0.3505710065364838 0.931430995464325 -0.09765499830245972 -vn -0.6476929783821106 0.6648160219192505 -0.372173011302948 -vn -0.8983089923858643 0.4048080146312714 -0.1707939952611923 -vn -0.8662490248680115 0.4800429940223694 -0.1384589970111847 -vn -0.7151209712028503 0.3602499961853027 0.5990179777145386 -vn -0.8666250109672546 0.3417699933052063 0.3635300099849701 -vn -0.6623769998550415 0.2970130145549774 0.6877800226211548 -vn -0.8117250204086304 0.3888390064239502 0.4357819855213165 -vn -0.9508990049362183 0.2433879971504211 0.1911900043487549 -vn -0.8467730283737183 0.07804299890995026 0.5261989831924438 -vn -0.7594159841537476 0.1409499943256378 0.6351540088653564 -vn -0.9400110244750977 -0.3405149877071381 -0.02069300040602684 -vn -0.9724000096321106 -0.2049909979104996 0.1114299967885017 -vn -0.8170300126075745 -0.3317660093307495 0.4715850055217743 -vn -0.6166999936103821 -0.3858979940414429 0.6861220002174377 -vn -0.5654150247573853 -0.4132109880447388 0.7138370275497437 -vn -0.3424369990825653 -0.3165769875049591 0.884598970413208 -vn -0.2633169889450073 -0.3102239966392517 0.9134690165519714 -vn -0.4920729994773865 -0.6772800087928772 -0.5469520092010498 -vn -0.2165350019931793 -0.8325880169868469 -0.5098140239715576 -vn -0.336313009262085 -0.9366880059242249 -0.09751000255346298 -vn 0.08508399873971939 -0.8829479813575745 0.4616970121860504 -vn 0.1960570067167282 -0.7339509725570679 0.6502910256385803 -vn 0.454815000295639 -0.6157029867172241 0.6434699892997742 -vn 0.4893380105495453 -0.7108240127563477 0.5052499771118164 -vn 0.4581849873065948 -0.6546030044555664 -0.6013000011444092 -vn 0.2736169993877411 -0.5752760171890259 -0.7708380222320557 -vn 0.5572580099105835 -0.6418589949607849 -0.526764988899231 -vn 0.7707909941673279 -0.6368250250816345 0.01830600015819073 -vn 0.8732380270957947 -0.4872829914093018 0.003169999923557043 -vn 0.8787599802017212 -0.285726010799408 -0.3822849988937378 -vn 0.7752519845962524 -0.4531359970569611 -0.4400599896907806 -vn 0.07676800340414047 -0.9022539854049683 -0.4243170022964478 -vn -0.7608579993247986 -0.310029000043869 0.5700669884681702 -vn 0.6989830136299133 0.6327279806137085 -0.333285003900528 -vn 0.9189450144767761 -0.0186110008507967 0.3939450085163116 -vn 0.9469230175018311 0.2427060008049011 0.2107869982719421 -vn 0.5977060198783875 0.7759019732475281 -0.2018010020256042 -vn 0.8984569907188416 0.3959749937057495 0.1896820068359375 -vn 0.5849769711494446 0.7775779962539673 -0.2305970042943954 -vn 0.06112100183963776 0.8655030131340027 0.4971610009670258 -vn 0.81489098072052 0.173455998301506 0.5530520081520081 -vn 0.488323986530304 0.05219599977135658 0.8711000084877014 -vn -0.07333800196647644 0.3724580109119415 0.9251469969749451 -vn -0.1685570031404495 0.420635998249054 0.8914330005645752 -vn 0.5626059770584106 0.01164999976754189 0.8266429901123047 -vn 0.424549013376236 0.2200690060853958 0.8782529830932617 -vn -0.2022739946842194 0.5748890042304993 0.792834997177124 -vn -0.2014950066804886 0.8707110285758972 -0.4486219882965088 -vn -0.1475190073251724 0.7000659704208374 -0.6986740231513977 -vn -0.247406005859375 0.6800289750099182 -0.6901819705963135 -vn -0.6592289805412292 0.7426900267601013 -0.1175960004329681 -vn -0.8238279819488525 0.5144019722938538 0.2381149977445602 -vn -0.8807550072669983 0.462224006652832 0.1030530035495758 -vn -0.8354460000991821 0.5381479859352112 0.1114759966731071 -vn -0.8354330062866211 0.2911489903926849 -0.4661380052566528 -vn -0.7990170121192932 0.4768629968166351 -0.3662959933280945 -vn -0.7965649962425232 -0.008375000208616257 -0.6044949889183044 -vn -0.7460759878158569 0.1244580000638962 -0.654125988483429 -vn -0.8470270037651062 0.2575120031833649 -0.4650079905986786 -vn -0.7743350267410278 0.09411299973726273 -0.6257380247116089 -vn -0.7994340062141418 0.06731099635362625 -0.5969709753990173 -vn -0.914825975894928 -0.4032889902591705 0.0212399996817112 -vn -0.9607080221176147 -0.2765470147132874 0.02371999993920326 -vn -0.7760940194129944 -0.562736988067627 -0.2846130132675171 -vn -0.2481050044298172 -0.5148569941520691 -0.820589005947113 -vn -0.2315990030765533 -0.2342070043087006 -0.9441980123519897 -vn -0.2359499931335449 -0.3241190016269684 -0.9161189794540405 -vn -0.3423370122909546 -0.4482719898223877 -0.825747013092041 -vn -0.3890469968318939 -0.6779909729957581 0.6236749887466431 -vn -0.2865490019321442 -0.8684669733047485 0.4045419991016388 -vn -0.05829200148582458 -0.911346971988678 0.407490998506546 -vn 0.4559510052204132 -0.7950720191001892 -0.3999620079994202 -vn 0.4897150099277496 -0.5246649980545044 -0.6963520050048828 -vn 0.5158429741859436 -0.6365799903869629 -0.5733000040054321 -vn 0.423911988735199 -0.8095009922981262 -0.4062100052833557 -vn 0.5356029868125916 -0.6355810165405273 0.5560269951820374 -vn 0.4908620119094849 -0.4675160050392151 0.7351760268211365 -vn 0.7313770055770874 -0.3685759902000427 0.5737929940223694 -vn 0.8901190161705017 -0.3876970112323761 0.2395379990339279 -vn 0.8836299777030945 -0.404119998216629 0.2363989949226379 -vn 0.8226990103721619 -0.324539989233017 0.4667330086231232 -vn 0.7892469763755798 -0.4085890054702759 0.4584139883518219 -vn -0.07298800349235535 -0.9022539854049683 0.4249840080738068 -vn -0.2881479859352112 -0.512224018573761 -0.8090720176696777 -vn 0.9188060164451599 0.3839870095252991 0.09137199819087982 -vn 0.993162989616394 0.114096000790596 -0.02468799985945225 -vn 0.4343830049037933 0.7090979814529419 0.5554199814796448 -vn 0.4718630015850067 0.8051769733428955 0.3592160046100616 -vn 0.8680509924888611 0.4418930113315582 0.2263129949569702 -vn 0.3869659900665283 0.8111780285835266 0.4384610056877136 -vn 0.9717289805412292 0.2360440045595169 0.005162999965250492 -vn 0.2779389917850494 0.90385901927948 -0.3252519965171814 -vn 0.9075610041618347 0.1839890033006668 -0.377467006444931 -vn 0.3897979855537415 0.4576799869537354 -0.7991160154342651 -vn 0.9741809964179993 -0.04597700014710426 -0.2210370004177094 -vn 0.4417490065097809 0.2665829956531525 -0.8566160202026367 -vn 0.8866739869117737 0.01747499965131283 -0.4620650112628937 -vn 0.3720920085906982 0.3275539875030518 -0.8684790134429932 -vn -0.3850800096988678 0.8340460062026978 0.3950709998607635 -vn -0.4761059880256653 0.6599609851837158 0.581184983253479 -vn -0.5561609864234924 0.6855729818344116 0.4697610139846802 -vn -0.6268590092658997 0.7454360127449036 -0.2266560047864914 -vn -0.5542709827423096 0.4361459910869598 -0.7089149951934814 -vn -0.5615590214729309 0.3103019893169403 -0.7670490145683289 -vn -0.5438100099563599 0.4169149994850159 -0.7283220291137695 -vn -0.9747139811515808 0.1763579994440079 0.1372230052947998 -vn -0.9172520041465759 0.3692820072174072 0.1492629945278168 -vn -0.9827640056610107 -0.03630400076508522 0.1812669932842255 -vn -0.9872050285339355 0.07037699967622757 0.1430840045213699 -vn -0.9887080192565918 0.09066099673509598 -0.119318999350071 -vn -0.9954649806022644 0.06980500370264053 -0.0646279975771904 -vn -0.9868990182876587 0.1531080007553101 -0.0508820004761219 -vn -0.7857019901275635 -0.5462189912796021 -0.2903740108013153 -vn -0.8021669983863831 -0.4474230110645294 -0.3953999876976013 -vn -0.7882999777793884 -0.6091880202293396 -0.08644299954175949 -vn -0.6353080272674561 -0.5868319869041443 0.5020080208778381 -vn -0.7489200234413147 -0.3426479995250702 0.5671960115432739 -vn -0.8290749788284302 -0.1998199969530106 0.5222129821777344 -vn -0.8114089965820313 -0.2435930073261261 0.5312989950180054 -vn -0.02972600050270557 -0.7129759788513184 -0.7005580067634583 -vn -0.1212550029158592 -0.8703849911689758 -0.4772070050239563 -vn 0.1511760056018829 -0.9298509955406189 -0.3354449868202209 -vn 0.2028409987688065 -0.8257309794425964 0.5263310074806213 -vn 0.08091399818658829 -0.5281829833984375 0.8452659845352173 -vn 0.01067500002682209 -0.4742409884929657 0.8803300261497498 -vn 0.0144889997318387 -0.6355460286140442 0.7719269990921021 -vn 0.7427240014076233 -0.5451459884643555 -0.3888140022754669 -vn 0.7865099906921387 -0.3833020031452179 -0.4842329919338226 -vn 0.9205939769744873 -0.3581419885158539 -0.1556950062513351 -vn 0.8897669911384583 -0.3594259917736053 0.2812969982624054 -vn 0.8730049729347229 -0.2942259907722473 0.3889650106430054 -vn 0.9076560139656067 -0.2917299866676331 0.3017520010471344 -vn 0.8630970120429993 -0.4457089900970459 0.2375019937753677 -vn 0.04144300147891045 -0.9088649749755859 -0.415026992559433 -vn -0.1099570021033287 -0.08454799652099609 0.9903339743614197 -vn 0.2451310008764267 0.7632600069046021 -0.5977830290794373 -vn 0.9554449915885925 0.2843270003795624 -0.07926099747419357 -vn 0.8238049745559692 0.5351709723472595 -0.1869129985570908 -vn 0.2853530049324036 0.8679130077362061 -0.4065710008144379 -vn 0.7501500248908997 0.5809810161590576 -0.3158090114593506 -vn 0.193001002073288 0.8577240109443665 -0.4765090048313141 -vn 0.1220619976520538 0.9612579941749573 0.2471510022878647 -vn 0.8907639980316162 0.4299469888210297 -0.147257000207901 -vn 0.8693600296974182 0.404801994562149 0.2834579944610596 -vn 0.3425579965114594 0.6023179888725281 0.7210180163383484 -vn 0.4495930075645447 0.5570510029792786 0.6982550024986267 -vn 0.9799709916114807 0.1605979949235916 0.1177510023117065 -vn 0.9129520058631897 0.3300270140171051 0.2400040030479431 -vn 0.3969599902629852 0.7427070140838623 0.5392670035362244 -vn -0.5626519918441772 0.7477009892463684 -0.3526549935340881 -vn -0.640733003616333 0.5571630001068115 -0.5282340049743652 -vn -0.7121180295944214 0.5705819725990295 -0.4090529978275299 -vn -0.7194139957427979 0.6329879760742188 0.2859529852867126 -vn -0.5416349768638611 0.3929080069065094 0.7431390285491943 -vn -0.5068719983100891 0.4453279972076416 0.7380809783935547 -vn -0.5300359725952148 0.6580139994621277 0.5348640084266663 -vn -0.9993979930877686 0.002857000101357698 -0.03458600118756294 -vn -0.9778590202331543 0.2025559991598129 -0.05256599932909012 -vn -0.9748870134353638 -0.2087630033493042 -0.07754799723625183 -vn -0.9908090233802795 -0.1349709928035736 -0.00891099963337183 -vn -0.9714679718017578 -0.08408299833536148 0.2217649966478348 -vn -0.9839869737625122 -0.0358319990336895 0.1746020019054413 -vn -0.9879299998283386 0.05565499886870384 0.1445589959621429 -vn -0.6447849869728088 -0.6683390140533447 0.3709119856357574 -vn -0.6672559976577759 -0.5719799995422363 0.4770840108394623 -vn -0.6573889851570129 -0.7345010042190552 0.1683689951896667 -vn -0.5605350136756897 -0.7363070249557495 -0.3790149986743927 -vn -0.692903995513916 -0.5403270125389099 -0.4774209856987 -vn -0.805446982383728 -0.4507080018520355 -0.3848600089550018 -vn -0.8070970177650452 -0.5522969961166382 -0.2087150067090988 -vn 0.1668089926242828 -0.6945620179176331 0.699828028678894 -vn 0.08150500059127808 -0.8694409728050232 0.4872680008411407 -vn 0.3440600037574768 -0.8835279941558838 0.3178069889545441 -vn 0.3032650053501129 -0.806547999382019 -0.5074549913406372 -vn 0.1325059980154037 -0.5874869823455811 -0.7983120083808899 -vn 0.02260999940335751 -0.6936299800872803 -0.719976007938385 -vn 0.04509999975562096 -0.9239140152931213 -0.3799329996109009 -vn 0.8621219992637634 -0.401540994644165 0.3090479969978333 -vn 0.8867239952087402 -0.2328619956970215 0.3993679881095886 -vn 0.9798589944839478 -0.1908919960260391 0.05861499905586243 -vn 0.9012619853019714 -0.1982769966125488 -0.3852449953556061 -vn 0.8543739914894104 -0.1819390058517456 -0.4867680072784424 -vn 0.9012380242347717 -0.2525070011615753 -0.3521510064601898 -vn 0.8982779979705811 -0.4129990041255951 -0.1500930041074753 -vn -0.272473007440567 -0.9165120124816895 -0.2928540110588074 -vn 0.2474620044231415 -0.4315969944000244 0.8674600124359131 -vn 0.3753190040588379 0.6018419861793518 -0.7049270272254944 -vn 0.9690999984741211 -0.1045589968562126 -0.2234120070934296 -vn 0.7954490184783936 0.2284629940986633 -0.5613070130348206 -vn 0.1643320024013519 0.7825480103492737 -0.6005110144615173 -vn 0.9015669822692871 0.174918994307518 -0.395700991153717 -vn 0.5484110116958618 0.6616759896278381 -0.5113030076026917 -vn 0.596875011920929 0.8022609949111938 0.01082899980247021 -vn 0.8830479979515076 -0.04748399928212166 -0.4668749868869781 -vn 0.9758470058441162 0.1404889971017838 -0.1672890037298203 -vn 0.6950060129165649 0.6005629897117615 0.3953349888324738 -vn 0.8043910264968872 0.3754850029945374 0.4603970050811768 -vn 0.9504550099372864 -0.06233000010251999 -0.3045510053634644 -vn 0.9899749755859375 0.07949800044298172 -0.1167469993233681 -vn 0.7676119804382324 0.4208459854125977 0.4833849966526031 -vn -0.4076670110225677 0.8575270175933838 -0.3137750029563904 -vn -0.3805089890956879 0.7430220246315002 -0.550574004650116 -vn -0.371628999710083 0.8595520257949829 -0.3508029878139496 -vn -0.1732809990644455 0.931430995464325 0.320017009973526 -vn -0.08834400027990341 0.681833028793335 0.7261540293693542 -vn -0.09786199778318405 0.460783988237381 0.882099986076355 -vn -0.07521700114011765 0.4800420105457306 0.8740149736404419 -vn -0.9276620149612427 0.3602499961853027 0.09830199927091599 -vn -0.8635100126266479 0.3417719900608063 0.3708679974079132 -vn -0.9548730254173279 0.2970120012760162 -0.001296999980695546 -vn -0.877348005771637 0.388837993144989 0.2811869978904724 -vn -0.7982050180435181 0.2586430013179779 0.5440329909324646 -vn -0.8309450149536133 0.1299329996109009 0.5409700274467468 -vn -0.80000901222229 0.1409460008144379 0.5831969976425171 -vn -0.6381030082702637 -0.3405129909515381 0.6905620098114014 -vn -0.7556419968605042 -0.2049909979104996 0.6220800280570984 -vn -0.9067860245704651 -0.3317669928073883 0.2601329982280731 -vn -0.9219499826431274 -0.3858990073204041 -0.03300400078296661 -vn -0.9323030114173889 -0.3608480095863342 -0.02450799942016602 -vn -0.9716429710388184 -0.2363799959421158 0.005919000133872032 -vn -0.9500359892845154 -0.3102270066738129 0.03450300171971321 -vn 0.05162100121378899 -0.6772800087928772 0.7339119911193848 -vn 0.2163099944591522 -0.8325870037078857 0.509909987449646 -vn -0.1634809970855713 -0.9366880059242249 0.3096620142459869 -vn -0.2730129957199097 -0.8829479813575745 -0.3819249868392944 -vn -0.3344889879226685 -0.7286760210990906 -0.5976189970970154 -vn -0.4082350134849548 -0.6025800108909607 -0.6857410073280334 -vn -0.3718569874763489 -0.7108250260353088 -0.5970349907875061 -vn 0.7508220076560974 -0.6546019911766052 0.08810699731111526 -vn 0.7445650100708008 -0.5752760171890259 0.3386459946632385 -vn 0.7660269737243652 -0.6418589949607849 -0.03493599966168404 -vn 0.5222679972648621 -0.6368250250816345 -0.5671759843826294 -vn 0.5276669859886169 -0.5274670124053955 -0.6658419966697693 -vn 0.6410369873046875 -0.3752210140228271 -0.6695380210876465 -vn 0.6145420074462891 -0.4531340003013611 -0.6457610130310059 -vn -0.2724759876728058 -0.9165120124816895 0.2928540110588074 -vn 0.2474450021982193 -0.4315490126609802 -0.8674880266189575 -vn 0.7954490184783936 0.2284629940986633 0.5613070130348206 -vn 0.9690999984741211 -0.1045589968562126 0.2234120070934296 -vn 0.3753179907798767 0.6018419861793518 0.7049270272254944 -vn 0.1643320024013519 0.7825480103492737 0.6005110144615173 -vn 0.9015669822692871 0.174918994307518 0.395700991153717 -vn 0.5484099984169006 0.6616759896278381 0.5113030076026917 -vn 0.8830469846725464 -0.04748500138521194 0.4668749868869781 -vn 0.596875011920929 0.8022609949111938 -0.01082899980247021 -vn 0.9758470058441162 0.1404889971017838 0.1672890037298203 -vn 0.6950060129165649 0.6005640029907227 -0.3953360021114349 -vn 0.9504539966583252 -0.06233000010251999 0.3045510053634644 -vn 0.8043910264968872 0.3754850029945374 -0.4603970050811768 -vn 0.9899749755859375 0.07949800044298172 0.1167469993233681 -vn 0.767611026763916 0.4208459854125977 -0.4833849966526031 -vn -0.4076670110225677 0.8575270175933838 0.3137750029563904 -vn -0.3805089890956879 0.7430220246315002 0.550574004650116 -vn -0.371628999710083 0.8595520257949829 0.3508029878139496 -vn -0.1732809990644455 0.931430995464325 -0.320017009973526 -vn -0.0883449986577034 0.681833028793335 -0.7261540293693542 -vn -0.09786199778318405 0.460783988237381 -0.882099986076355 -vn -0.07521700114011765 0.4800420105457306 -0.8740149736404419 -vn -0.9276620149612427 0.3602499961853027 -0.09830199927091599 -vn -0.8635100126266479 0.3417719900608063 -0.3708679974079132 -vn -0.9548730254173279 0.2970120012760162 0.001296999980695546 -vn -0.877348005771637 0.388837993144989 -0.2811869978904724 -vn -0.7982050180435181 0.2586430013179779 -0.5440329909324646 -vn -0.8309450149536133 0.1299329996109009 -0.5409700274467468 -vn -0.8000100255012512 0.1409450024366379 -0.5831959843635559 -vn -0.6381030082702637 -0.3405129909515381 -0.6905620098114014 -vn -0.7556419968605042 -0.2049909979104996 -0.6220809817314148 -vn -0.9067860245704651 -0.3317669928073883 -0.2601329982280731 -vn -0.9219499826431274 -0.3858990073204041 0.03300400078296661 -vn -0.9323030114173889 -0.3608480095863342 0.02450799942016602 -vn -0.9716429710388184 -0.2363799959421158 -0.005919000133872032 -vn -0.9500359892845154 -0.3102270066738129 -0.03450300171971321 -vn 0.05162100121378899 -0.6772800087928772 -0.7339119911193848 -vn 0.2163099944591522 -0.8325870037078857 -0.509909987449646 -vn -0.1634809970855713 -0.9366869926452637 -0.3096620142459869 -vn -0.2730129957199097 -0.8829479813575745 0.3819249868392944 -vn -0.3344880044460297 -0.7286760210990906 0.5976200103759766 -vn -0.4082350134849548 -0.6025800108909607 0.6857410073280334 -vn -0.3718569874763489 -0.7108250260353088 0.5970349907875061 -vn 0.7508220076560974 -0.6546019911766052 -0.08810699731111526 -vn 0.7445650100708008 -0.5752760171890259 -0.3386459946632385 -vn 0.7660269737243652 -0.6418589949607849 0.03493599966168404 -vn 0.5222679972648621 -0.6368250250816345 0.5671769976615906 -vn 0.5276669859886169 -0.5274670124053955 0.6658419966697693 -vn 0.6410369873046875 -0.3752210140228271 0.6695380210876465 -vn 0.6145420074462891 -0.4531340003013611 0.6457610130310059 -vn -0.287102997303009 -0.9309409856796265 -0.2256560027599335 -vn 0.1843679994344711 -0.4218010008335114 0.8877459764480591 -vn 0.07405100017786026 0.6319169998168945 -0.7714899778366089 -vn 0.8553329706192017 0.06064699962735176 -0.5145170092582703 -vn 0.7307729721069336 0.3228900134563446 -0.6014260053634644 -vn 0.2098069936037064 0.7427859902381897 -0.6358069777488708 -vn 0.6162220239639282 0.3713270127773285 -0.6945400238037109 -vn 0.09581899642944336 0.7464309930801392 -0.6585279703140259 -vn 0.4080640077590942 0.9123439788818359 0.03336000069975853 -vn 0.8213359713554382 0.1804669946432114 -0.5411459803581238 -vn 0.969681978225708 0.1661700010299683 -0.17917600274086 -vn 0.7540370225906372 0.5044180154800415 0.4207040071487427 -vn 0.828561007976532 0.3165900111198425 0.4617980122566223 -vn 0.9432830214500427 -0.08009400218725204 -0.3221819996833801 -vn 0.9967989921569824 0.009220999665558338 -0.07941699773073196 -vn 0.775767982006073 0.3821409940719604 0.5021479725837708 -vn -0.5359219908714294 0.8157860040664673 -0.2174420058727264 -vn -0.7117419838905334 0.631197988986969 -0.3082410097122192 -vn -0.7205860018730164 0.6709820032119751 -0.1747539937496185 -vn -0.4114960134029388 0.7961680293083191 0.4436070024967194 -vn -0.0943790003657341 0.527301013469696 0.8444210290908813 -vn -0.06975200027227402 0.4077039957046509 0.9104459881782532 -vn -0.07522699981927872 0.5093169808387756 0.8572840094566345 -vn -0.899321973323822 0.2172179967164993 0.3795219957828522 -vn -0.8569710254669189 0.4048359990119934 0.318917989730835 -vn -0.9294880032539368 0.002263000002130866 0.3688459992408752 -vn -0.9130200147628784 0.1119910031557083 0.3922390043735504 -vn -0.7752439975738525 0.1555069983005524 0.6122210025787354 -vn -0.809952974319458 0.130293995141983 0.5718389749526978 -vn -0.8099700212478638 0.21145099401474 0.5470259785652161 -vn -0.5124379992485046 -0.4739649891853333 0.7160750031471252 -vn -0.4707460105419159 -0.3654879927635193 0.8030049800872803 -vn -0.6227080225944519 -0.5545240044593811 0.5520300269126892 -vn -0.8047950267791748 -0.5929269790649414 -0.02723599970340729 -vn -0.9356880187988281 -0.3495660126209259 -0.04786499962210655 -vn -0.9798259735107422 -0.1990929991006851 0.01738799922168255 -vn -0.9696599841117859 -0.2444050014019012 0.004995000082999468 -vn 0.3460299968719482 -0.6453220248222351 0.6810449957847595 -vn 0.1500509977340698 -0.8165979981422424 0.5573610067367554 -vn 0.305963009595871 -0.9033949971199036 0.3004390001296997 -vn -0.1068940013647079 -0.8791000247001648 -0.4644969999790192 -vn -0.3793039917945862 -0.6047009825706482 -0.70033198595047 -vn -0.4574509859085083 -0.5502709746360779 -0.6985269784927368 -vn -0.3967710137367249 -0.701295018196106 -0.5922489762306213 -vn 0.8359060287475586 -0.5488340258598328 -0.006517999805510044 -vn 0.9236019849777222 -0.3818440139293671 0.03396600112318993 -vn 0.8632140159606934 -0.3933719992637634 -0.3164179921150208 -vn 0.6054999828338623 -0.4316779971122742 -0.6685979962348938 -vn 0.5342289805412292 -0.3754520118236542 -0.7573869824409485 -vn 0.6098309755325317 -0.3671579957008362 -0.7023540139198303 -vn 0.6060940027236938 -0.5121269822120667 -0.6085860133171082 -vn -0.2871040105819702 -0.9309409856796265 0.2256550043821335 -vn 0.1843840032815933 -0.4217509925365448 -0.8877660036087036 -vn 0.7307729721069336 0.3228900134563446 0.6014260053634644 -vn 0.8553329706192017 0.06064699962735176 0.5145170092582703 -vn 0.07405100017786026 0.6319169998168945 0.7714899778366089 -vn 0.2098069936037064 0.7427859902381897 0.6358069777488708 -vn 0.6162220239639282 0.3713270127773285 0.6945400238037109 -vn 0.09581799805164337 0.7464309930801392 0.6585279703140259 -vn 0.8213359713554382 0.1804669946432114 0.5411450266838074 -vn 0.4080640077590942 0.9123439788818359 -0.03336000069975853 -vn 0.969681978225708 0.1661700010299683 0.17917500436306 -vn 0.7540370225906372 0.5044180154800415 -0.4207040071487427 -vn 0.9432830214500427 -0.08009400218725204 0.3221819996833801 -vn 0.8285599946975708 0.3165900111198425 -0.4617989957332611 -vn 0.9967989921569824 0.009220999665558338 0.07941699773073196 -vn 0.775767982006073 0.3821409940719604 -0.5021479725837708 -vn -0.5359219908714294 0.8157860040664673 0.2174420058727264 -vn -0.7117419838905334 0.631197988986969 0.3082410097122192 -vn -0.7205860018730164 0.6709820032119751 0.1747539937496185 -vn -0.4114960134029388 0.7961680293083191 -0.4436070024967194 -vn -0.09437999874353409 0.527301013469696 -0.8444210290908813 -vn -0.06975200027227402 0.4077039957046509 -0.9104459881782532 -vn -0.07522699981927872 0.5093169808387756 -0.8572850227355957 -vn -0.899321973323822 0.2172179967164993 -0.3795219957828522 -vn -0.8569710254669189 0.4048359990119934 -0.318917989730835 -vn -0.9294880032539368 0.002263000002130866 -0.3688449859619141 -vn -0.9130200147628784 0.1119910031557083 -0.3922390043735504 -vn -0.7752439975738525 0.1555059999227524 -0.6122210025787354 -vn -0.8099520206451416 0.130293995141983 -0.5718389749526978 -vn -0.8099690079689026 0.21144999563694 -0.5470269918441772 -vn -0.5124379992485046 -0.4739649891853333 -0.7160750031471252 -vn -0.4707460105419159 -0.3654879927635193 -0.8030049800872803 -vn -0.6227080225944519 -0.5545240044593811 -0.5520300269126892 -vn -0.8047950267791748 -0.5929279923439026 0.02723599970340729 -vn -0.9356880187988281 -0.3495660126209259 0.04786499962210655 -vn -0.9798259735107422 -0.1990929991006851 -0.01738799922168255 -vn -0.9696599841117859 -0.2444050014019012 -0.004995000082999468 -vn 0.3460299968719482 -0.6453220248222351 -0.6810449957847595 -vn 0.1500509977340698 -0.8165979981422424 -0.5573610067367554 -vn 0.3059639930725098 -0.9033949971199036 -0.3004390001296997 -vn -0.1068949997425079 -0.8791000247001648 0.464495986700058 -vn -0.3793050050735474 -0.6047009825706482 0.70033198595047 -vn -0.4574509859085083 -0.5502709746360779 0.6985269784927368 -vn -0.3967710137367249 -0.7012940049171448 0.5922489762306213 -vn 0.8359060287475586 -0.5488340258598328 0.006517999805510044 -vn 0.9236019849777222 -0.3818440139293671 -0.03396600112318993 -vn 0.8632140159606934 -0.3933730125427246 0.3164179921150208 -vn 0.6054999828338623 -0.4316790103912354 0.6685979962348938 -vn 0.5342299938201904 -0.3754520118236542 0.7573869824409485 -vn 0.6098309755325317 -0.3671579957008362 0.7023540139198303 -vn 0.6060940027236938 -0.5121260285377502 0.6085860133171082 -vn 0 0 0 -vn 0.8919450044631958 0.3336060047149658 -0.3051899969577789 -vn 0.8852859735488892 -0.05170800164341927 0.4621630012989044 -vn 0.8717010021209717 -0.4864040017127991 -0.05957400053739548 -vn 0.6025350093841553 -0.1140230000019073 0.7899060249328613 -vn 0.7673320174217224 -0.6138780117034912 0.1853529959917068 -vn 0.6157039999961853 -0.2387659996747971 0.750931978225708 -vn -0.1322280019521713 0.07659800350666046 0.9882550239562988 -vn -0.1344829946756363 0.2189230024814606 0.9664300084114075 -vn -0.08265399932861328 0.3330360054969788 0.9392849802970886 -vn -0.7942630052566528 0.3628509938716888 0.4873250126838684 -vn -0.686972975730896 0.5388749837875366 0.4875270128250122 -vn -0.9116560220718384 -0.2424139976501465 -0.3318400084972382 -vn -0.903469979763031 -0.005853999871760607 -0.4286110103130341 -vn -0.8802070021629333 0.2844929993152618 -0.3798680007457733 -vn -0.3590719997882843 -0.2934069931507111 -0.8859909772872925 -vn -0.5312150120735168 -0.1616500020027161 -0.8316730260848999 -vn 0.5217099785804749 -0.3334519863128662 -0.7852569818496704 -vn 0.4982230067253113 -0.5182129740715027 -0.6951469779014587 -vn 0.3192520141601563 -0.6669300198554993 -0.6732630133628845 -vn 0.4172089993953705 0.6029300093650818 -0.6800090074539185 -vn -0.3909519910812378 -0.5063930153846741 -0.7685850262641907 -vn -0.785847008228302 -0.2199160009622574 -0.5779989957809448 -vn -0.1128029972314835 -0.7670649886131287 -0.6315749883651733 -vn -0.6768519878387451 -0.4520730078220367 -0.5809479951858521 -vn -0.07061299681663513 -0.7851089835166931 -0.6153200268745422 -vn 0.4044640064239502 -0.913004994392395 -0.05320600047707558 -vn 0.5100409984588623 -0.8511109948158264 -0.1243719980120659 -vn 0.600862979888916 -0.7767530083656311 -0.188727006316185 -vn 0.7341600060462952 -0.2982490062713623 0.6099640130996704 -vn 0.8028550148010254 -0.2451270073652267 0.5434489846229553 -vn 0.2039200067520142 0.286547988653183 0.9361129999160767 -vn 0.2590579986572266 0.3469229936599731 0.90140700340271 -vn 0.3050769865512848 0.4136070013046265 0.857820987701416 -vn -0.3951399922370911 0.6723129749298096 0.6259869933128357 -vn -0.3882040083408356 0.6723269820213318 0.6302970051765442 -vn -0.8444070219993591 0.5085629820823669 -0.1683440059423447 -vn -0.9073770046234131 0.4102010130882263 -0.09166599810123444 -vn -0.9431279897689819 0.3317759931087494 0.02084000036120415 -vn -0.03268500044941902 0.9875209927558899 0.1540600061416626 -vn 0.2856169939041138 0.9530180096626282 0.1008900031447411 -vn 0.3564079999923706 0.9297230243682861 0.092678003013134 -vn 0.05804499983787537 0.9152950048446655 0.3985790014266968 -vn -0.4380980134010315 -0.8398249745368958 0.3205699920654297 -vn 0.0398080013692379 -0.7493849992752075 0.6609370112419128 -vn -0.4364219903945923 -0.7586889863014221 0.4836600124835968 -vn -0.1446219980716705 0.8584669828414917 0.4920569956302643 -vn -0.3905079960823059 -0.8025469779968262 0.4510230123996735 -vn -0.3789550065994263 0.7686259746551514 0.5153710246086121 -vn -0.3518399894237518 -0.8554270267486572 0.3800710141658783 -vn -0.5039129853248596 0.8112840056419373 0.2964630126953125 -vn -0.4345029890537262 -0.8862379789352417 0.1605930030345917 -vn -0.5895540118217468 0.7668499946594238 0.2537069916725159 -vn 0.4611240029335022 -0.5667420029640198 0.682765007019043 -vn -0.03327900171279907 -0.5302489995956421 0.8471890091896057 -vn -0.1550759971141815 -0.4793860018253326 0.8637940287590027 -vn -0.3325540125370026 -0.6754969954490662 0.6581119894981384 -vn -0.6243529915809631 -0.6490340232849121 0.434671014547348 -vn -0.6404299736022949 -0.7232750058174133 0.258307009935379 -vn 0.8391460180282593 -0.5209720134735107 0.1562740057706833 -vn 0.9793859720230103 -0.04739199951291084 0.1963589936494827 -vn 0.8591970205307007 -0.01306600030511618 0.5114780068397522 -vn 0.1697809994220734 0.01797799952328205 0.9853180050849915 -vn -0.2981239855289459 0.09316399693489075 0.949970006942749 -vn -0.6025810241699219 0.1407950073480606 0.785539984703064 -vn -0.7606229782104492 0.3568800091743469 0.5422999858856201 -vn -0.9164419770240784 -0.01278399955481291 0.3999640047550201 -vn 0.7099589705467224 0.6897799968719482 0.1419920027256012 -vn 0.6163280010223389 0.7111549973487854 0.3382270038127899 -vn 0.1215279996395111 0.6381019949913025 0.7602999806404114 -vn -0.3081580102443695 0.474483996629715 0.8245630264282227 -vn -0.5849490165710449 0.4978660047054291 0.64028400182724 -vn -0.8313949704170227 0.3698750138282776 0.414698988199234 -vn -0.7773889899253845 0.439754992723465 0.4497570097446442 -vn -0.7120980024337769 0.07437500357627869 0.6981300115585327 -vn -0.5221620202064514 -0.5821250081062317 0.6232789754867554 -vn -0.5362930297851563 0.8426250219345093 0.04870999976992607 -vn -0.6278550028800964 0.7403159737586975 0.2402739971876144 -vn -0.817995011806488 0.4767960011959076 0.3217920064926147 -vn -0.7291709780693054 0.6557949781417847 0.1955550014972687 -vn -0.9585440158843994 0.2151080071926117 0.1868750005960464 -vn -0.9505919814109802 0.1639280021190643 0.2636339962482452 -vn -0.9833920001983643 -0.02283000014722347 0.1800519973039627 -vn -0.8917449712753296 0.1107539981603622 0.4387759864330292 -vn -0.9918580055236816 -0.08782999962568283 0.09221799671649933 -vn -0.8591039776802063 0.04482100158929825 0.5098350048065186 -vn -0.8949519991874695 -0.4028989970684052 0.1916580051183701 -vn -0.9036110043525696 0.009092999622225761 0.4282569885253906 -vn -0.8893200159072876 0.01745700091123581 0.4569520056247711 -vn -0.7315409779548645 -0.4924210011959076 0.4715610146522522 -vn -0.7941030263900757 -0.1783780008554459 0.581017017364502 -vn -0.6259329915046692 -0.3735530078411102 0.6845920085906982 -vn -0.5845080018043518 -0.1848309934139252 0.7900559902191162 -vn -0.8015180230140686 -0.1042689979076385 0.5888090133666992 -vn -0.6420310139656067 -0.2967270016670227 0.7069290280342102 -vn -0.8202810287475586 -0.1234560012817383 0.5584779977798462 -vn 0.01690500043332577 -0.9364719986915588 -0.3503330051898956 -vn -0.09879499673843384 -0.7398999929428101 -0.6654229760169983 -vn -0.06946200132369995 -0.9367489814758301 -0.3430390059947968 -vn 0.123930998146534 -0.9922909736633301 0 -vn 0.03589100018143654 -0.8559809923171997 -0.5157600045204163 -vn -0.0289510004222393 -0.999580979347229 0 -vn 0.01690500043332577 -0.9364719986915588 0.3503330051898956 -vn -0.06946200132369995 -0.9367489814758301 0.3430390059947968 -vn -0.3344019949436188 -0.9161610007286072 -0.2209639996290207 -vn -0.7904769778251648 -0.6124920248985291 -0 -vn -0.3344019949436188 -0.9161610007286072 0.2209639996290207 -vn -0.7410100102424622 -0.556659996509552 0.375544011592865 -vn -0.2743130028247833 -0.8896610140800476 0.3650420010089874 -vn -0.09879499673843384 -0.7398999929428101 0.6654229760169983 -vn 0.03589100018143654 -0.8559809923171997 0.5157600045204163 -vn -0.2743130028247833 -0.8896610140800476 -0.3650420010089874 -vn -0.7410100102424622 -0.556659996509552 -0.375544011592865 -vn 0.3564079999923706 0.9297230243682861 -0.092678003013134 -vn 0.2856169939041138 0.9530180096626282 -0.1008900031447411 -vn -0.03268500044941902 0.9875209927558899 -0.1540600061416626 -vn 0.05804499983787537 0.9152950048446655 -0.3985790014266968 -vn -0.4364219903945923 -0.7586889863014221 -0.4836600124835968 -vn 0.0398080013692379 -0.7493849992752075 -0.6609370112419128 -vn -0.4380980134010315 -0.8398249745368958 -0.3205699920654297 -vn -0.1446219980716705 0.8584669828414917 -0.4920569956302643 -vn -0.3905079960823059 -0.8025469779968262 -0.4510230123996735 -vn -0.3789550065994263 0.7686259746551514 -0.5153710246086121 -vn -0.3518399894237518 -0.8554270267486572 -0.3800710141658783 -vn -0.5039129853248596 0.8112840056419373 -0.2964630126953125 -vn -0.4345029890537262 -0.8862379789352417 -0.1605930030345917 -vn -0.5895540118217468 0.7668499946594238 -0.2537069916725159 -vn -0.03327900171279907 -0.5302489995956421 -0.8471890091896057 -vn 0.4611240029335022 -0.5667420029640198 -0.682765007019043 -vn -0.1550759971141815 -0.4793860018253326 -0.8637940287590027 -vn -0.3325540125370026 -0.6754969954490662 -0.6581119894981384 -vn -0.624351978302002 -0.6490340232849121 -0.434671014547348 -vn -0.6404299736022949 -0.7232750058174133 -0.258307009935379 -vn 0.9793859720230103 -0.04739199951291084 -0.1963589936494827 -vn 0.8391469717025757 -0.5209720134735107 -0.1562740057706833 -vn 0.8591970205307007 -0.01306699961423874 -0.5114780068397522 -vn 0.1697809994220734 0.01797799952328205 -0.9853180050849915 -vn -0.2981239855289459 0.09316399693489075 -0.949970006942749 -vn -0.6025800108909607 0.1407950073480606 -0.785539984703064 -vn -0.7606229782104492 0.3568800091743469 -0.5422999858856201 -vn -0.9164419770240784 -0.01278399955481291 -0.3999640047550201 -vn 0.6163280010223389 0.7111549973487854 -0.3382270038127899 -vn 0.7099589705467224 0.6897799968719482 -0.1419920027256012 -vn 0.1215270012617111 0.6381019949913025 -0.7602999806404114 -vn -0.3081580102443695 0.474483996629715 -0.8245630264282227 -vn -0.5849490165710449 0.4978669881820679 -0.64028400182724 -vn -0.8313949704170227 0.3698750138282776 -0.414698988199234 -vn -0.7773889899253845 0.439754992723465 -0.4497570097446442 -vn -0.5362920165061951 0.8426259756088257 -0.04870999976992607 -vn -0.522163987159729 -0.5821229815483093 -0.6232799887657166 -vn -0.7120980024337769 0.07437700033187866 -0.6981289982795715 -vn -0.6278539896011353 0.7403159737586975 -0.2402739971876144 -vn -0.817995011806488 0.4767970144748688 -0.3217920064926147 -vn -0.7291709780693054 0.6557959914207458 -0.1955550014972687 -vn -0.9585440158843994 0.2151080071926117 -0.1868750005960464 -vn -0.9505919814109802 0.1639280021190643 -0.2636339962482452 -vn -0.8917449712753296 0.1107529997825623 -0.4387759864330292 -vn -0.9833920001983643 -0.02283000014722347 -0.1800529956817627 -vn -0.8591039776802063 0.04482100158929825 -0.5098339915275574 -vn -0.9918580055236816 -0.08783099800348282 -0.09221699833869934 -vn -0.8949530124664307 -0.4028989970684052 -0.1916570067405701 -vn -0.9036110043525696 0.009092999622225761 -0.4282569885253906 -vn -0.8893200159072876 0.0174579992890358 -0.4569520056247711 -vn -0.7315409779548645 -0.4924199879169464 -0.4715610146522522 -vn -0.7941030263900757 -0.1783780008554459 -0.5810179710388184 -vn -0.625931978225708 -0.3735530078411102 -0.6845930218696594 -vn -0.5845069885253906 -0.1848299950361252 -0.7900559902191162 -vn -0.8015180230140686 -0.1042689979076385 -0.5888090133666992 -vn -0.6420310139656067 -0.2967270016670227 -0.7069299817085266 -vn -0.8202810287475586 -0.1234560012817383 -0.5584779977798462 -vn 0.8919439911842346 0.3336179852485657 0.3051789999008179 -vn 0.6025350093841553 -0.1140210032463074 -0.7899050116539001 -vn 0.8717020153999329 -0.4864020049571991 0.05957499891519547 -vn 0.8852850198745728 -0.05170699954032898 -0.4621649980545044 -vn 0.7673349976539612 -0.6138749718666077 -0.1853519976139069 -vn 0.6157060265541077 -0.2387650012969971 -0.7509310245513916 -vn -0.1322280019521713 0.07659800350666046 -0.9882550239562988 -vn -0.1344819962978363 0.2189230024814606 -0.9664300084114075 -vn -0.08265399932861328 0.3330360054969788 -0.9392840266227722 -vn -0.7942630052566528 0.3628509938716888 -0.4873250126838684 -vn -0.686972975730896 0.5388749837875366 -0.487525999546051 -vn -0.9116560220718384 -0.2424139976501465 0.3318400084972382 -vn -0.903469979763031 -0.005853999871760607 0.4286110103130341 -vn -0.8802070021629333 0.2844929993152618 0.3798680007457733 -vn -0.3590719997882843 -0.2934069931507111 0.8859909772872925 -vn -0.5312150120735168 -0.1616500020027161 0.8316730260848999 -vn 0.5217090249061584 -0.3334519863128662 0.7852579951286316 -vn 0.4982230067253113 -0.5182120203971863 0.6951479911804199 -vn 0.319252997636795 -0.6669290065765381 0.6732640266418457 -vn 0.4172079861164093 0.602931022644043 0.6800090074539185 -vn -0.1128029972314835 -0.7670649886131287 0.6315749883651733 -vn -0.785847008228302 -0.2199160009622574 0.5779979825019836 -vn -0.3909519910812378 -0.5063920021057129 0.7685850262641907 -vn -0.6768519878387451 -0.4520730078220367 0.5809479951858521 -vn -0.07061299681663513 -0.7851079702377319 0.6153200268745422 -vn 0.4044640064239502 -0.913004994392395 0.05320600047707558 -vn 0.5100420117378235 -0.8511109948158264 0.1243719980120659 -vn 0.600862979888916 -0.7767530083656311 0.188727006316185 -vn 0.7341600060462952 -0.2982490062713623 -0.6099640130996704 -vn 0.8028540015220642 -0.2451270073652267 -0.5434499979019165 -vn 0.2039200067520142 0.286547988653183 -0.9361129999160767 -vn 0.2590579986572266 0.3469229936599731 -0.90140700340271 -vn 0.3050769865512848 0.4136070013046265 -0.857820987701416 -vn -0.3951399922370911 0.6723120212554932 -0.6259880065917969 -vn -0.3882040083408356 0.6723269820213318 -0.6302970051765442 -vn -0.8444070219993591 0.5085629820823669 0.1683440059423447 -vn -0.9073770046234131 0.4102010130882263 0.09166599810123444 -vn -0.9431279897689819 0.3317759931087494 -0.02084000036120415 -vn 0.09283199906349182 0.3405439853668213 0.9356340169906616 -vn 0.4332149922847748 0.3082599937915802 0.8469359874725342 -vn 0.07513599842786789 0.7418090105056763 0.666388988494873 -vn -0.3755930066108704 0.6224439740180969 0.6866539716720581 -vn -0.6413879990577698 0.6895880103111267 0.3362880051136017 -vn -0.3539179861545563 0.8731229901313782 0.3352580070495605 -vn -0.6627640128135681 0.7462409734725952 -0.06218799948692322 -vn -0.5455629825592041 0.6585090160369873 -0.5183889865875244 -vn -0.5422859787940979 0.2685939967632294 -0.7961050271987915 -vn -0.7763820290565491 0.4680269956588745 -0.4221160113811493 -vn -0.9955589771270752 -0.03219699859619141 -0.08845899999141693 -vn -0.7381539940834045 -0.2307370007038116 -0.633948028087616 -vn -0.433216005563736 -0.3082579970359802 -0.8469359874725342 -vn -0.7763850092887878 -0.6298570036888123 -0.02251699939370155 -vn -0.4675639867782593 -0.8743969798088074 0.1296679973602295 -vn -0.5422919988632202 -0.7174760103225708 -0.4372040033340454 -vn -0.1898339986801147 -0.8541020154953003 0.4842230081558228 -vn -0.5458049774169922 -0.7113950252532959 0.4427349865436554 -vn -0.6413909792900085 -0.3120909929275513 0.7008680105209351 -vn -0.2153560072183609 -0.6237800121307373 0.7513459920883179 -vn 0.03750099986791611 -0.724698007106781 0.6880459785461426 -vn -0.3755939900875092 -0.03544300049543381 0.9261069893836975 -vn 0.07813700288534164 -0.2686049938201904 0.9600759744644165 -vn -0.7573850154876709 0.2233279943466187 0.6135900020599365 -vn -0.902417004108429 0.4006629884243011 0.1584679931402206 -vn -0.902417004108429 -0.2050659954547882 0.3789339959621429 -vn 0.07513599842786789 0.7418090105056763 -0.666388988494873 -vn 0.4332149922847748 0.3082599937915802 -0.8469359874725342 -vn 0.09283199906349182 0.3405439853668213 -0.935634970664978 -vn -0.3755930066108704 0.6224439740180969 -0.6866539716720581 -vn -0.3539179861545563 0.8731229901313782 -0.3352569937705994 -vn -0.6413879990577698 0.6895880103111267 -0.3362880051136017 -vn -0.6627640128135681 0.7462409734725952 0.06218799948692322 -vn -0.7763820290565491 0.4680269956588745 0.4221160113811493 -vn -0.5422859787940979 0.2685939967632294 0.7961050271987915 -vn -0.5455620288848877 0.6585100293159485 0.5183889865875244 -vn -0.7381539940834045 -0.2307370007038116 0.633948028087616 -vn -0.9955589771270752 -0.03219600021839142 0.08845899999141693 -vn -0.433216005563736 -0.3082579970359802 0.8469359874725342 -vn -0.7763850092887878 -0.6298559904098511 0.02251699939370155 -vn -0.5422919988632202 -0.717477023601532 0.4372040033340454 -vn -0.4675650000572205 -0.8743969798088074 -0.1296679973602295 -vn -0.5458049774169922 -0.7113940119743347 -0.4427359998226166 -vn -0.1898339986801147 -0.8541020154953003 -0.4842230081558228 -vn -0.2153560072183609 -0.6237789988517761 -0.7513459920883179 -vn -0.6413909792900085 -0.3120909929275513 -0.7008690237998962 -vn 0.03750099986791611 -0.724698007106781 -0.6880459785461426 -vn -0.3755939900875092 -0.03544300049543381 -0.9261059761047363 -vn 0.07813599705696106 -0.2686049938201904 -0.9600759744644165 -vn -0.7573840022087097 0.2233279943466187 -0.6135900020599365 -vn -0.902417004108429 0.4006629884243011 -0.1584679931402206 -vn -0.902417004108429 -0.2050659954547882 -0.3789339959621429 - -# Mesh 'HLeib01' with 80 faces -g HLeib01 -f 1/1/1 2/2/2 3/3/3 -f 4/4/4 3/3/3 5/5/5 -f 6/6/6 5/5/5 2/2/2 -f 3/3/3 2/2/2 5/5/5 -f 1/1/1 3/3/3 7/7/7 -f 8/8/8 7/7/7 9/9/9 -f 4/4/4 9/9/9 3/3/3 -f 7/7/7 3/3/3 9/9/9 -f 8/8/8 9/9/9 10/10/10 -f 11/11/11 10/10/10 12/12/12 -f 4/4/4 12/12/12 9/9/9 -f 10/10/10 9/9/9 12/12/12 -f 4/4/4 13/13/13 12/12/12 -f 11/11/11 12/12/12 14/14/14 -f 15/15/15 14/14/14 13/13/13 -f 12/12/12 13/13/13 14/14/14 -f 4/4/4 5/5/5 13/13/13 -f 15/15/15 13/13/13 16/16/16 -f 6/6/6 16/16/16 5/5/5 -f 13/13/13 5/5/5 16/16/16 -f 15/15/15 16/16/16 17/17/17 -f 18/18/18 17/17/17 19/19/19 -f 6/6/6 19/19/19 16/16/16 -f 17/17/17 16/16/16 19/19/19 -f 15/15/15 17/17/17 20/20/20 -f 21/21/21 20/20/20 22/22/22 -f 18/18/18 22/22/22 17/17/17 -f 20/20/20 17/17/17 22/22/22 -f 11/11/11 14/14/14 23/23/23 -f 21/21/21 23/23/23 20/20/20 -f 15/15/15 20/20/20 14/14/14 -f 23/23/23 14/14/14 20/20/20 -f 11/11/11 23/23/23 24/24/24 -f 25/25/25 24/24/24 26/26/26 -f 21/21/21 26/26/26 23/23/23 -f 24/24/24 23/23/23 26/26/26 -f 25/25/25 26/26/26 27/27/27 -f 28/28/28 27/27/27 29/29/29 -f 21/21/21 29/29/29 26/26/26 -f 27/27/27 26/26/26 29/29/29 -f 28/28/28 29/29/29 30/30/30 -f 18/18/18 30/30/30 22/22/22 -f 21/21/21 22/22/22 29/29/29 -f 30/30/30 29/29/29 22/22/22 -f 28/28/28 30/30/30 31/31/31 -f 32/32/32 31/31/31 33/33/33 -f 18/18/18 33/33/33 30/30/30 -f 31/31/31 30/30/30 33/33/33 -f 28/28/28 31/31/31 34/34/34 -f 35/35/35 34/34/34 36/36/36 -f 32/32/32 36/36/36 31/31/31 -f 34/34/34 31/31/31 36/36/36 -f 35/35/35 36/36/36 37/37/37 -f 1/1/1 37/37/37 38/38/38 -f 32/32/32 38/38/38 36/36/36 -f 37/37/37 36/36/36 38/38/38 -f 1/1/1 38/38/38 2/2/2 -f 6/6/6 2/2/2 39/39/39 -f 32/32/32 39/39/39 38/38/38 -f 2/2/2 38/38/38 39/39/39 -f 32/32/32 33/33/33 39/39/39 -f 6/6/6 39/39/39 19/19/19 -f 18/18/18 19/19/19 33/33/33 -f 39/39/39 33/33/33 19/19/19 -f 8/8/8 40/40/40 7/7/7 -f 1/1/1 7/7/7 37/37/37 -f 35/35/35 37/37/37 40/40/40 -f 7/7/7 40/40/40 37/37/37 -f 8/8/8 41/41/41 40/40/40 -f 35/35/35 40/40/40 42/42/42 -f 25/25/25 42/42/42 41/41/41 -f 40/40/40 41/41/41 42/42/42 -f 8/8/8 10/10/10 41/41/41 -f 25/25/25 41/41/41 24/24/24 -f 11/11/11 24/24/24 10/10/10 -f 41/41/41 10/10/10 24/24/24 -f 28/28/28 34/34/34 27/27/27 -f 25/25/25 27/27/27 42/42/42 -f 35/35/35 42/42/42 34/34/34 -f 27/27/27 34/34/34 42/42/42 - -# Mesh 'OK' with 60 faces -g OK -f 43/43/43 44/44/44 45/45/45 -f 46/46/46 45/45/45 47/47/47 -f 48/48/48 47/47/47 44/44/44 -f 45/45/45 44/44/44 47/47/47 -f 43/43/43 45/45/45 49/49/49 -f 50/50/50 49/49/49 51/51/51 -f 46/46/46 51/51/51 45/45/45 -f 49/49/49 45/45/45 51/51/51 -f 50/50/50 51/51/51 52/52/52 -f 53/53/53 52/52/52 54/54/54 -f 46/46/46 54/54/54 51/51/51 -f 52/52/52 51/51/51 54/54/54 -f 46/46/46 55/55/55 54/54/54 -f 53/53/53 54/54/54 56/56/56 -f 57/57/57 56/56/56 55/55/55 -f 54/54/54 55/55/55 56/56/56 -f 46/46/46 47/47/47 55/55/55 -f 57/57/57 55/55/55 58/58/58 -f 48/48/48 58/58/58 47/47/47 -f 55/55/55 47/47/47 58/58/58 -f 57/57/57 58/58/58 59/59/59 -f 60/57/60 59/59/59 61/58/61 -f 48/48/48 61/58/61 58/58/58 -f 59/59/59 58/58/58 61/58/61 -f 57/57/57 59/59/59 62/60/62 -f 63/61/63 62/60/62 64/60/64 -f 60/57/60 64/60/64 59/59/59 -f 62/60/62 59/59/59 64/60/64 -f 53/53/53 56/56/56 65/62/65 -f 63/61/63 65/62/65 62/60/62 -f 57/57/57 62/60/62 56/56/56 -f 65/62/65 56/56/56 62/60/62 -f 53/53/53 65/62/65 66/63/66 -f 67/64/67 66/63/66 68/65/68 -f 63/61/63 68/65/68 65/62/65 -f 66/63/66 65/62/65 68/65/68 -f 67/64/67 68/65/68 69/63/69 -f 70/53/70 69/63/69 71/62/71 -f 63/61/63 71/62/71 68/65/68 -f 69/63/69 68/65/68 71/62/71 -f 63/61/63 64/60/64 71/62/71 -f 43/43/43 72/49/72 73/45/73 -f 43/43/43 73/45/73 44/44/44 -f 48/48/48 44/44/44 74/47/74 -f 75/46/75 74/47/74 73/45/73 -f 44/44/44 73/45/73 74/47/74 -f 48/48/48 74/47/74 61/58/61 -f 50/50/50 76/66/76 49/49/49 -f 43/43/43 49/49/49 72/49/72 -f 77/50/77 72/49/72 76/66/76 -f 49/49/49 76/66/76 72/49/72 -f 50/50/50 78/67/78 76/66/76 -f 77/50/77 76/66/76 79/67/79 -f 67/64/67 79/67/79 78/67/78 -f 76/66/76 78/67/78 79/67/79 -f 50/50/50 52/52/52 78/67/78 -f 67/64/67 78/67/78 66/63/66 -f 53/53/53 66/63/66 52/52/52 -f 78/67/78 52/52/52 66/63/66 -f 67/64/67 69/63/69 79/67/79 - -# Mesh 'Bein1Li' with 98 faces -g Bein1Li -f 80/68/80 81/68/80 82/68/80 -f 83/68/81 84/68/81 85/68/81 -f 80/69/82 86/70/83 87/71/84 -f 80/69/82 87/71/84 81/72/85 -f 86/70/83 88/73/86 87/71/84 -f 88/73/86 89/74/87 87/71/84 -f 88/73/86 90/75/88 91/76/89 -f 88/73/86 91/76/89 89/74/87 -f 90/75/88 92/77/90 91/76/89 -f 92/77/90 93/78/91 91/76/89 -f 92/77/90 94/79/92 95/80/93 -f 92/77/90 95/80/93 93/78/91 -f 94/79/92 83/68/94 95/80/93 -f 83/68/94 85/81/95 95/80/93 -f 81/68/80 96/68/80 82/68/80 -f 85/68/81 84/68/81 97/68/81 -f 81/72/85 87/71/84 96/82/96 -f 87/71/84 98/83/97 96/82/96 -f 87/71/84 89/74/87 99/84/98 -f 87/71/84 99/84/98 98/83/97 -f 89/74/87 91/76/89 99/84/98 -f 91/76/89 100/85/99 99/84/98 -f 91/76/89 93/78/91 101/86/100 -f 91/76/89 101/86/100 100/85/99 -f 93/78/91 95/80/93 101/86/100 -f 95/80/93 102/87/101 101/86/100 -f 95/80/93 85/81/95 97/88/102 -f 95/80/93 97/88/102 102/87/101 -f 96/68/80 103/68/80 82/68/80 -f 97/68/81 84/68/81 104/68/81 -f 96/82/96 98/83/97 105/89/103 -f 96/82/96 105/89/103 103/90/104 -f 98/83/97 99/84/98 105/89/103 -f 99/84/98 106/91/105 105/89/103 -f 99/84/98 100/85/99 107/92/106 -f 99/84/98 107/92/106 106/91/105 -f 100/85/99 101/86/100 107/92/106 -f 101/86/100 108/93/107 107/92/106 -f 101/86/100 102/87/101 109/94/108 -f 101/86/100 109/94/108 108/93/107 -f 102/87/101 97/88/102 109/94/108 -f 97/88/102 104/95/109 109/94/108 -f 103/68/80 110/68/80 82/68/80 -f 104/68/81 84/68/81 111/68/81 -f 103/90/104 105/89/103 110/96/110 -f 105/89/103 112/97/111 110/96/110 -f 105/89/103 106/91/105 113/98/112 -f 105/89/103 113/98/112 112/97/111 -f 106/91/105 107/92/106 113/98/112 -f 107/92/106 114/99/113 113/98/112 -f 107/92/106 108/93/107 115/100/114 -f 107/92/106 115/100/114 114/99/113 -f 108/93/107 109/94/108 115/100/114 -f 109/94/108 116/101/115 115/100/114 -f 109/94/108 104/95/109 111/102/116 -f 109/94/108 111/102/116 116/101/115 -f 110/68/80 117/68/80 82/68/80 -f 111/68/81 84/68/81 118/68/81 -f 110/96/110 112/97/111 119/103/117 -f 110/96/110 119/103/117 117/104/118 -f 112/97/111 113/98/112 119/103/117 -f 113/98/112 120/105/119 119/103/117 -f 113/98/112 114/99/113 121/106/120 -f 113/98/112 121/106/120 120/105/119 -f 114/99/113 115/100/114 121/106/120 -f 115/100/114 122/107/121 121/106/120 -f 115/100/114 116/101/115 123/108/122 -f 115/100/114 123/108/122 122/107/121 -f 116/101/115 111/102/116 123/108/122 -f 111/102/116 118/109/123 123/108/122 -f 117/68/80 124/68/80 82/68/80 -f 118/68/81 84/68/81 125/68/81 -f 117/104/118 119/103/117 124/110/124 -f 119/103/117 126/111/125 124/110/124 -f 119/103/117 120/105/119 127/112/126 -f 119/103/117 127/112/126 126/111/125 -f 120/105/119 121/106/120 127/112/126 -f 121/106/120 128/113/127 127/112/126 -f 121/106/120 122/107/121 129/114/128 -f 121/106/120 129/114/128 128/113/127 -f 122/107/121 123/108/122 129/114/128 -f 123/108/122 130/115/129 129/114/128 -f 123/108/122 118/109/123 125/116/130 -f 123/108/122 125/116/130 130/115/129 -f 124/68/80 80/68/80 82/68/80 -f 125/68/81 84/68/81 83/68/81 -f 124/110/124 126/111/125 86/117/83 -f 124/110/124 86/117/83 80/118/82 -f 126/111/125 127/112/126 86/117/83 -f 127/112/126 88/119/86 86/117/83 -f 127/112/126 128/113/127 90/120/88 -f 127/112/126 90/120/88 88/119/86 -f 128/113/127 129/114/128 90/120/88 -f 129/114/128 92/121/90 90/120/88 -f 129/114/128 130/115/129 94/122/92 -f 129/114/128 94/122/92 92/121/90 -f 130/115/129 125/116/130 94/122/92 -f 125/116/130 83/123/94 94/122/92 - -# Mesh 'Bein1Re' with 98 faces -g Bein1Re -f 131/68/131 132/68/131 133/68/131 -f 134/68/132 135/68/132 136/68/132 -f 137/71/133 138/70/134 133/69/135 -f 132/72/136 137/71/133 133/69/135 -f 137/71/133 139/73/137 138/70/134 -f 137/71/133 140/74/138 139/73/137 -f 141/76/139 142/75/140 139/73/137 -f 140/74/138 141/76/139 139/73/137 -f 141/76/139 143/77/141 142/75/140 -f 141/76/139 144/78/142 143/77/141 -f 145/80/143 146/79/144 143/77/141 -f 144/78/142 145/80/143 143/77/141 -f 145/80/143 136/68/145 146/79/144 -f 145/80/143 134/81/146 136/68/145 -f 131/68/131 147/68/131 132/68/131 -f 148/68/132 135/68/132 134/68/132 -f 147/82/147 137/71/133 132/72/136 -f 147/82/147 149/83/148 137/71/133 -f 150/84/149 140/74/138 137/71/133 -f 149/83/148 150/84/149 137/71/133 -f 150/84/149 141/76/139 140/74/138 -f 150/84/149 151/85/150 141/76/139 -f 152/86/151 144/78/142 141/76/139 -f 151/85/150 152/86/151 141/76/139 -f 152/86/151 145/80/143 144/78/142 -f 152/86/151 153/87/152 145/80/143 -f 148/88/153 134/81/146 145/80/143 -f 153/87/152 148/88/153 145/80/143 -f 131/68/131 154/68/131 147/68/131 -f 155/68/132 135/68/132 148/68/132 -f 156/89/154 149/83/148 147/82/147 -f 154/90/155 156/89/154 147/82/147 -f 156/89/154 150/84/149 149/83/148 -f 156/89/154 157/91/156 150/84/149 -f 158/92/157 151/85/150 150/84/149 -f 157/91/156 158/92/157 150/84/149 -f 158/92/157 152/86/151 151/85/150 -f 158/92/157 159/93/158 152/86/151 -f 160/94/159 153/87/152 152/86/151 -f 159/93/158 160/94/159 152/86/151 -f 160/94/159 148/88/153 153/87/152 -f 160/94/159 155/95/160 148/88/153 -f 131/68/131 161/68/131 154/68/131 -f 162/68/132 135/68/132 155/68/132 -f 161/96/161 156/89/154 154/90/155 -f 161/96/161 163/97/162 156/89/154 -f 164/98/163 157/91/156 156/89/154 -f 163/97/162 164/98/163 156/89/154 -f 164/98/163 158/92/157 157/91/156 -f 164/98/163 165/99/164 158/92/157 -f 166/100/165 159/93/158 158/92/157 -f 165/99/164 166/100/165 158/92/157 -f 166/100/165 160/94/159 159/93/158 -f 166/100/165 167/101/166 160/94/159 -f 162/102/167 155/95/160 160/94/159 -f 167/101/166 162/102/167 160/94/159 -f 131/68/131 168/68/131 161/68/131 -f 169/68/132 135/68/132 162/68/132 -f 170/103/168 163/97/162 161/96/161 -f 168/104/169 170/103/168 161/96/161 -f 170/103/168 164/98/163 163/97/162 -f 170/103/168 171/105/170 164/98/163 -f 172/106/171 165/99/164 164/98/163 -f 171/105/170 172/106/171 164/98/163 -f 172/106/171 166/100/165 165/99/164 -f 172/106/171 173/107/172 166/100/165 -f 174/108/173 167/101/166 166/100/165 -f 173/107/172 174/108/173 166/100/165 -f 174/108/173 162/102/167 167/101/166 -f 174/108/173 169/109/174 162/102/167 -f 131/68/131 175/68/131 168/68/131 -f 176/68/132 135/68/132 169/68/132 -f 175/110/175 170/103/168 168/104/169 -f 175/110/175 177/111/176 170/103/168 -f 178/112/177 171/105/170 170/103/168 -f 177/111/176 178/112/177 170/103/168 -f 178/112/177 172/106/171 171/105/170 -f 178/112/177 179/113/178 172/106/171 -f 180/114/179 173/107/172 172/106/171 -f 179/113/178 180/114/179 172/106/171 -f 180/114/179 174/108/173 173/107/172 -f 180/114/179 181/115/180 174/108/173 -f 176/116/181 169/109/174 174/108/173 -f 181/115/180 176/116/181 174/108/173 -f 131/68/131 133/68/131 175/68/131 -f 136/68/132 135/68/132 176/68/132 -f 138/117/134 177/111/176 175/110/175 -f 133/118/135 138/117/134 175/110/175 -f 138/117/134 178/112/177 177/111/176 -f 138/117/134 139/119/137 178/112/177 -f 142/120/140 179/113/178 178/112/177 -f 139/119/137 142/120/140 178/112/177 -f 142/120/140 180/114/179 179/113/178 -f 142/120/140 143/121/141 180/114/179 -f 146/122/144 181/115/180 180/114/179 -f 143/121/141 146/122/144 180/114/179 -f 146/122/144 176/116/181 181/115/180 -f 146/122/144 136/123/145 176/116/181 - -# Mesh 'Bein2Li' with 98 faces -g Bein2Li -f 182/68/182 183/68/182 184/68/182 -f 185/68/183 186/68/183 187/68/183 -f 182/69/184 188/70/185 189/71/186 -f 182/69/184 189/71/186 183/72/187 -f 188/70/185 190/73/188 189/71/186 -f 190/73/188 191/74/189 189/71/186 -f 190/73/188 192/75/190 193/76/191 -f 190/73/188 193/76/191 191/74/189 -f 192/75/190 194/77/192 193/76/191 -f 194/77/192 195/78/193 193/76/191 -f 194/77/192 196/79/194 197/80/195 -f 194/77/192 197/80/195 195/78/193 -f 196/79/194 185/68/196 197/80/195 -f 185/68/196 187/81/197 197/80/195 -f 183/68/182 198/68/182 184/68/182 -f 187/68/183 186/68/183 199/68/183 -f 183/72/187 189/71/186 198/82/198 -f 189/71/186 200/83/199 198/82/198 -f 189/71/186 191/74/189 201/84/200 -f 189/71/186 201/84/200 200/83/199 -f 191/74/189 193/76/191 201/84/200 -f 193/76/191 202/85/201 201/84/200 -f 193/76/191 195/78/193 203/86/202 -f 193/76/191 203/86/202 202/85/201 -f 195/78/193 197/80/195 203/86/202 -f 197/80/195 204/87/203 203/86/202 -f 197/80/195 187/81/197 199/88/204 -f 197/80/195 199/88/204 204/87/203 -f 198/68/182 205/68/182 184/68/182 -f 199/68/183 186/68/183 206/68/183 -f 198/82/198 200/83/199 207/89/205 -f 198/82/198 207/89/205 205/90/206 -f 200/83/199 201/84/200 207/89/205 -f 201/84/200 208/91/207 207/89/205 -f 201/84/200 202/85/201 209/92/208 -f 201/84/200 209/92/208 208/91/207 -f 202/85/201 203/86/202 209/92/208 -f 203/86/202 210/93/209 209/92/208 -f 203/86/202 204/87/203 211/94/210 -f 203/86/202 211/94/210 210/93/209 -f 204/87/203 199/88/204 211/94/210 -f 199/88/204 206/95/211 211/94/210 -f 205/68/182 212/68/182 184/68/182 -f 206/68/183 186/68/183 213/68/183 -f 205/90/206 207/89/205 212/96/212 -f 207/89/205 214/97/213 212/96/212 -f 207/89/205 208/91/207 215/98/214 -f 207/89/205 215/98/214 214/97/213 -f 208/91/207 209/92/208 215/98/214 -f 209/92/208 216/99/215 215/98/214 -f 209/92/208 210/93/209 217/100/216 -f 209/92/208 217/100/216 216/99/215 -f 210/93/209 211/94/210 217/100/216 -f 211/94/210 218/101/217 217/100/216 -f 211/94/210 206/95/211 213/102/218 -f 211/94/210 213/102/218 218/101/217 -f 212/68/182 219/68/182 184/68/182 -f 213/68/183 186/68/183 220/68/183 -f 212/96/212 214/97/213 221/103/219 -f 212/96/212 221/103/219 219/104/220 -f 214/97/213 215/98/214 221/103/219 -f 215/98/214 222/105/221 221/103/219 -f 215/98/214 216/99/215 223/106/222 -f 215/98/214 223/106/222 222/105/221 -f 216/99/215 217/100/216 223/106/222 -f 217/100/216 224/107/223 223/106/222 -f 217/100/216 218/101/217 225/108/224 -f 217/100/216 225/108/224 224/107/223 -f 218/101/217 213/102/218 225/108/224 -f 213/102/218 220/109/225 225/108/224 -f 219/68/182 226/68/182 184/68/182 -f 220/68/183 186/68/183 227/68/183 -f 219/104/220 221/103/219 226/110/226 -f 221/103/219 228/111/227 226/110/226 -f 221/103/219 222/105/221 229/112/228 -f 221/103/219 229/112/228 228/111/227 -f 222/105/221 223/106/222 229/112/228 -f 223/106/222 230/113/229 229/112/228 -f 223/106/222 224/107/223 231/114/230 -f 223/106/222 231/114/230 230/113/229 -f 224/107/223 225/108/224 231/114/230 -f 225/108/224 232/115/231 231/114/230 -f 225/108/224 220/109/225 227/116/232 -f 225/108/224 227/116/232 232/115/231 -f 226/68/182 182/68/182 184/68/182 -f 227/68/183 186/68/183 185/68/183 -f 226/110/226 228/111/227 188/117/185 -f 226/110/226 188/117/185 182/118/184 -f 228/111/227 229/112/228 188/117/185 -f 229/112/228 190/119/188 188/117/185 -f 229/112/228 230/113/229 192/120/190 -f 229/112/228 192/120/190 190/119/188 -f 230/113/229 231/114/230 192/120/190 -f 231/114/230 194/121/192 192/120/190 -f 231/114/230 232/115/231 196/122/194 -f 231/114/230 196/122/194 194/121/192 -f 232/115/231 227/116/232 196/122/194 -f 227/116/232 185/123/196 196/122/194 - -# Mesh 'Bein2Re' with 98 faces -g Bein2Re -f 233/68/233 234/68/233 235/68/233 -f 236/68/234 237/68/234 238/68/234 -f 239/71/235 240/70/236 235/69/237 -f 234/72/238 239/71/235 235/69/237 -f 239/71/235 241/73/239 240/70/236 -f 239/71/235 242/74/240 241/73/239 -f 243/76/241 244/75/242 241/73/239 -f 242/74/240 243/76/241 241/73/239 -f 243/76/241 245/77/243 244/75/242 -f 243/76/241 246/78/244 245/77/243 -f 247/80/245 248/79/246 245/77/243 -f 246/78/244 247/80/245 245/77/243 -f 247/80/245 238/68/247 248/79/246 -f 247/80/245 236/81/248 238/68/247 -f 233/68/233 249/68/233 234/68/233 -f 250/68/234 237/68/234 236/68/234 -f 249/82/249 239/71/235 234/72/238 -f 249/82/249 251/83/250 239/71/235 -f 252/84/251 242/74/240 239/71/235 -f 251/83/250 252/84/251 239/71/235 -f 252/84/251 243/76/241 242/74/240 -f 252/84/251 253/85/252 243/76/241 -f 254/86/253 246/78/244 243/76/241 -f 253/85/252 254/86/253 243/76/241 -f 254/86/253 247/80/245 246/78/244 -f 254/86/253 255/87/254 247/80/245 -f 250/88/255 236/81/248 247/80/245 -f 255/87/254 250/88/255 247/80/245 -f 233/68/233 256/68/233 249/68/233 -f 257/68/234 237/68/234 250/68/234 -f 258/89/256 251/83/250 249/82/249 -f 256/90/257 258/89/256 249/82/249 -f 258/89/256 252/84/251 251/83/250 -f 258/89/256 259/91/258 252/84/251 -f 260/92/259 253/85/252 252/84/251 -f 259/91/258 260/92/259 252/84/251 -f 260/92/259 254/86/253 253/85/252 -f 260/92/259 261/93/260 254/86/253 -f 262/94/261 255/87/254 254/86/253 -f 261/93/260 262/94/261 254/86/253 -f 262/94/261 250/88/255 255/87/254 -f 262/94/261 257/95/262 250/88/255 -f 233/68/233 263/68/233 256/68/233 -f 264/68/234 237/68/234 257/68/234 -f 263/96/263 258/89/256 256/90/257 -f 263/96/263 265/97/264 258/89/256 -f 266/98/265 259/91/258 258/89/256 -f 265/97/264 266/98/265 258/89/256 -f 266/98/265 260/92/259 259/91/258 -f 266/98/265 267/99/266 260/92/259 -f 268/100/267 261/93/260 260/92/259 -f 267/99/266 268/100/267 260/92/259 -f 268/100/267 262/94/261 261/93/260 -f 268/100/267 269/101/268 262/94/261 -f 264/102/269 257/95/262 262/94/261 -f 269/101/268 264/102/269 262/94/261 -f 233/68/233 270/68/233 263/68/233 -f 271/68/234 237/68/234 264/68/234 -f 272/103/270 265/97/264 263/96/263 -f 270/104/271 272/103/270 263/96/263 -f 272/103/270 266/98/265 265/97/264 -f 272/103/270 273/105/272 266/98/265 -f 274/106/273 267/99/266 266/98/265 -f 273/105/272 274/106/273 266/98/265 -f 274/106/273 268/100/267 267/99/266 -f 274/106/273 275/107/274 268/100/267 -f 276/108/275 269/101/268 268/100/267 -f 275/107/274 276/108/275 268/100/267 -f 276/108/275 264/102/269 269/101/268 -f 276/108/275 271/109/276 264/102/269 -f 233/68/233 277/68/233 270/68/233 -f 278/68/234 237/68/234 271/68/234 -f 277/110/277 272/103/270 270/104/271 -f 277/110/277 279/111/278 272/103/270 -f 280/112/279 273/105/272 272/103/270 -f 279/111/278 280/112/279 272/103/270 -f 280/112/279 274/106/273 273/105/272 -f 280/112/279 281/113/280 274/106/273 -f 282/114/281 275/107/274 274/106/273 -f 281/113/280 282/114/281 274/106/273 -f 282/114/281 276/108/275 275/107/274 -f 282/114/281 283/115/282 276/108/275 -f 278/116/283 271/109/276 276/108/275 -f 283/115/282 278/116/283 276/108/275 -f 233/68/233 235/68/233 277/68/233 -f 238/68/234 237/68/234 278/68/234 -f 240/117/236 279/111/278 277/110/277 -f 235/118/237 240/117/236 277/110/277 -f 240/117/236 280/112/279 279/111/278 -f 240/117/236 241/119/239 280/112/279 -f 244/120/242 281/113/280 280/112/279 -f 241/119/239 244/120/242 280/112/279 -f 244/120/242 282/114/281 281/113/280 -f 244/120/242 245/121/243 282/114/281 -f 248/122/246 283/115/282 282/114/281 -f 245/121/243 248/122/246 282/114/281 -f 248/122/246 278/116/283 283/115/282 -f 248/122/246 238/123/247 278/116/283 - -# Mesh 'Bein3Re' with 98 faces -g Bein3Re -f 284/68/284 285/68/284 286/68/284 -f 287/68/285 288/68/285 289/68/285 -f 290/71/286 291/70/287 286/69/288 -f 285/72/289 290/71/286 286/69/288 -f 290/71/286 292/73/290 291/70/287 -f 290/71/286 293/74/291 292/73/290 -f 294/76/292 295/75/293 292/73/290 -f 293/74/291 294/76/292 292/73/290 -f 294/76/292 296/77/294 295/75/293 -f 294/76/292 297/78/295 296/77/294 -f 298/80/296 299/79/297 296/77/294 -f 297/78/295 298/80/296 296/77/294 -f 298/80/296 289/68/298 299/79/297 -f 298/80/296 287/81/299 289/68/298 -f 284/68/284 300/68/284 285/68/284 -f 301/68/285 288/68/285 287/68/285 -f 300/82/300 290/71/286 285/72/289 -f 300/82/300 302/83/301 290/71/286 -f 303/84/302 293/74/291 290/71/286 -f 302/83/301 303/84/302 290/71/286 -f 303/84/302 294/76/292 293/74/291 -f 303/84/302 304/85/303 294/76/292 -f 305/86/304 297/78/295 294/76/292 -f 304/85/303 305/86/304 294/76/292 -f 305/86/304 298/80/296 297/78/295 -f 305/86/304 306/87/305 298/80/296 -f 301/88/306 287/81/299 298/80/296 -f 306/87/305 301/88/306 298/80/296 -f 284/68/284 307/68/284 300/68/284 -f 308/68/285 288/68/285 301/68/285 -f 309/89/307 302/83/301 300/82/300 -f 307/90/308 309/89/307 300/82/300 -f 309/89/307 303/84/302 302/83/301 -f 309/89/307 310/91/309 303/84/302 -f 311/92/310 304/85/303 303/84/302 -f 310/91/309 311/92/310 303/84/302 -f 311/92/310 305/86/304 304/85/303 -f 311/92/310 312/93/311 305/86/304 -f 313/94/312 306/87/305 305/86/304 -f 312/93/311 313/94/312 305/86/304 -f 313/94/312 301/88/306 306/87/305 -f 313/94/312 308/95/313 301/88/306 -f 284/68/284 314/68/284 307/68/284 -f 315/68/285 288/68/285 308/68/285 -f 314/96/314 309/89/307 307/90/308 -f 314/96/314 316/97/315 309/89/307 -f 317/98/316 310/91/309 309/89/307 -f 316/97/315 317/98/316 309/89/307 -f 317/98/316 311/92/310 310/91/309 -f 317/98/316 318/99/317 311/92/310 -f 319/100/318 312/93/311 311/92/310 -f 318/99/317 319/100/318 311/92/310 -f 319/100/318 313/94/312 312/93/311 -f 319/100/318 320/101/319 313/94/312 -f 315/102/320 308/95/313 313/94/312 -f 320/101/319 315/102/320 313/94/312 -f 284/68/284 321/68/284 314/68/284 -f 322/68/285 288/68/285 315/68/285 -f 323/103/321 316/97/315 314/96/314 -f 321/104/322 323/103/321 314/96/314 -f 323/103/321 317/98/316 316/97/315 -f 323/103/321 324/105/323 317/98/316 -f 325/106/324 318/99/317 317/98/316 -f 324/105/323 325/106/324 317/98/316 -f 325/106/324 319/100/318 318/99/317 -f 325/106/324 326/107/325 319/100/318 -f 327/108/326 320/101/319 319/100/318 -f 326/107/325 327/108/326 319/100/318 -f 327/108/326 315/102/320 320/101/319 -f 327/108/326 322/109/327 315/102/320 -f 284/68/284 328/68/284 321/68/284 -f 329/68/285 288/68/285 322/68/285 -f 328/110/328 323/103/321 321/104/322 -f 328/110/328 330/111/329 323/103/321 -f 331/112/330 324/105/323 323/103/321 -f 330/111/329 331/112/330 323/103/321 -f 331/112/330 325/106/324 324/105/323 -f 331/112/330 332/113/331 325/106/324 -f 333/114/332 326/107/325 325/106/324 -f 332/113/331 333/114/332 325/106/324 -f 333/114/332 327/108/326 326/107/325 -f 333/114/332 334/115/333 327/108/326 -f 329/116/334 322/109/327 327/108/326 -f 334/115/333 329/116/334 327/108/326 -f 284/68/284 286/68/284 328/68/284 -f 289/68/285 288/68/285 329/68/285 -f 291/117/287 330/111/329 328/110/328 -f 286/118/288 291/117/287 328/110/328 -f 291/117/287 331/112/330 330/111/329 -f 291/117/287 292/119/290 331/112/330 -f 295/120/293 332/113/331 331/112/330 -f 292/119/290 295/120/293 331/112/330 -f 295/120/293 333/114/332 332/113/331 -f 295/120/293 296/121/294 333/114/332 -f 299/122/297 334/115/333 333/114/332 -f 296/121/294 299/122/297 333/114/332 -f 299/122/297 329/116/334 334/115/333 -f 299/122/297 289/123/298 329/116/334 - -# Mesh 'Bein3Li' with 98 faces -g Bein3Li -f 335/68/335 336/68/335 337/68/335 -f 338/68/336 339/68/336 340/68/336 -f 335/69/337 341/70/338 342/71/339 -f 335/69/337 342/71/339 336/72/340 -f 341/70/338 343/73/341 342/71/339 -f 343/73/341 344/74/342 342/71/339 -f 343/73/341 345/75/343 346/76/344 -f 343/73/341 346/76/344 344/74/342 -f 345/75/343 347/77/345 346/76/344 -f 347/77/345 348/78/346 346/76/344 -f 347/77/345 349/79/347 350/80/348 -f 347/77/345 350/80/348 348/78/346 -f 349/79/347 338/68/349 350/80/348 -f 338/68/349 340/81/350 350/80/348 -f 336/68/335 351/68/335 337/68/335 -f 340/68/336 339/68/336 352/68/336 -f 336/72/340 342/71/339 351/82/351 -f 342/71/339 353/83/352 351/82/351 -f 342/71/339 344/74/342 354/84/353 -f 342/71/339 354/84/353 353/83/352 -f 344/74/342 346/76/344 354/84/353 -f 346/76/344 355/85/354 354/84/353 -f 346/76/344 348/78/346 356/86/355 -f 346/76/344 356/86/355 355/85/354 -f 348/78/346 350/80/348 356/86/355 -f 350/80/348 357/87/356 356/86/355 -f 350/80/348 340/81/350 352/88/357 -f 350/80/348 352/88/357 357/87/356 -f 351/68/335 358/68/335 337/68/335 -f 352/68/336 339/68/336 359/68/336 -f 351/82/351 353/83/352 360/89/358 -f 351/82/351 360/89/358 358/90/359 -f 353/83/352 354/84/353 360/89/358 -f 354/84/353 361/91/360 360/89/358 -f 354/84/353 355/85/354 362/92/361 -f 354/84/353 362/92/361 361/91/360 -f 355/85/354 356/86/355 362/92/361 -f 356/86/355 363/93/362 362/92/361 -f 356/86/355 357/87/356 364/94/363 -f 356/86/355 364/94/363 363/93/362 -f 357/87/356 352/88/357 364/94/363 -f 352/88/357 359/95/364 364/94/363 -f 358/68/335 365/68/335 337/68/335 -f 359/68/336 339/68/336 366/68/336 -f 358/90/359 360/89/358 365/96/365 -f 360/89/358 367/97/366 365/96/365 -f 360/89/358 361/91/360 368/98/367 -f 360/89/358 368/98/367 367/97/366 -f 361/91/360 362/92/361 368/98/367 -f 362/92/361 369/99/368 368/98/367 -f 362/92/361 363/93/362 370/100/369 -f 362/92/361 370/100/369 369/99/368 -f 363/93/362 364/94/363 370/100/369 -f 364/94/363 371/101/370 370/100/369 -f 364/94/363 359/95/364 366/102/371 -f 364/94/363 366/102/371 371/101/370 -f 365/68/335 372/68/335 337/68/335 -f 366/68/336 339/68/336 373/68/336 -f 365/96/365 367/97/366 374/103/372 -f 365/96/365 374/103/372 372/104/373 -f 367/97/366 368/98/367 374/103/372 -f 368/98/367 375/105/374 374/103/372 -f 368/98/367 369/99/368 376/106/375 -f 368/98/367 376/106/375 375/105/374 -f 369/99/368 370/100/369 376/106/375 -f 370/100/369 377/107/376 376/106/375 -f 370/100/369 371/101/370 378/108/377 -f 370/100/369 378/108/377 377/107/376 -f 371/101/370 366/102/371 378/108/377 -f 366/102/371 373/109/378 378/108/377 -f 372/68/335 379/68/335 337/68/335 -f 373/68/336 339/68/336 380/68/336 -f 372/104/373 374/103/372 379/110/379 -f 374/103/372 381/111/380 379/110/379 -f 374/103/372 375/105/374 382/112/381 -f 374/103/372 382/112/381 381/111/380 -f 375/105/374 376/106/375 382/112/381 -f 376/106/375 383/113/382 382/112/381 -f 376/106/375 377/107/376 384/114/383 -f 376/106/375 384/114/383 383/113/382 -f 377/107/376 378/108/377 384/114/383 -f 378/108/377 385/115/384 384/114/383 -f 378/108/377 373/109/378 380/116/385 -f 378/108/377 380/116/385 385/115/384 -f 379/68/335 335/68/335 337/68/335 -f 380/68/336 339/68/336 338/68/336 -f 379/110/379 381/111/380 341/117/338 -f 379/110/379 341/117/338 335/118/337 -f 381/111/380 382/112/381 341/117/338 -f 382/112/381 343/119/341 341/117/338 -f 382/112/381 383/113/382 345/120/343 -f 382/112/381 345/120/343 343/119/341 -f 383/113/382 384/114/383 345/120/343 -f 384/114/383 347/121/345 345/120/343 -f 384/114/383 385/115/384 349/122/347 -f 384/114/383 349/122/347 347/121/345 -f 385/115/384 380/116/385 349/122/347 -f 380/116/385 338/123/349 349/122/347 - -# Mesh 'Bein4Re' with 98 faces -g Bein4Re -f 386/68/386 387/68/386 388/68/386 -f 389/68/387 390/68/387 391/68/387 -f 392/71/388 393/70/389 388/69/390 -f 387/72/391 392/71/388 388/69/390 -f 392/71/388 394/73/392 393/70/389 -f 392/71/388 395/74/393 394/73/392 -f 396/76/394 397/75/395 394/73/392 -f 395/74/393 396/76/394 394/73/392 -f 396/76/394 398/77/396 397/75/395 -f 396/76/394 399/78/397 398/77/396 -f 400/80/398 401/79/399 398/77/396 -f 399/78/397 400/80/398 398/77/396 -f 400/80/398 391/68/400 401/79/399 -f 400/80/398 389/81/401 391/68/400 -f 386/68/386 402/68/386 387/68/386 -f 403/68/387 390/68/387 389/68/387 -f 402/82/402 392/71/388 387/72/391 -f 402/82/402 404/83/403 392/71/388 -f 405/84/404 395/74/393 392/71/388 -f 404/83/403 405/84/404 392/71/388 -f 405/84/404 396/76/394 395/74/393 -f 405/84/404 406/85/405 396/76/394 -f 407/86/406 399/78/397 396/76/394 -f 406/85/405 407/86/406 396/76/394 -f 407/86/406 400/80/398 399/78/397 -f 407/86/406 408/87/407 400/80/398 -f 403/88/408 389/81/401 400/80/398 -f 408/87/407 403/88/408 400/80/398 -f 386/68/386 409/68/386 402/68/386 -f 410/68/387 390/68/387 403/68/387 -f 411/89/409 404/83/403 402/82/402 -f 409/90/410 411/89/409 402/82/402 -f 411/89/409 405/84/404 404/83/403 -f 411/89/409 412/91/411 405/84/404 -f 413/92/412 406/85/405 405/84/404 -f 412/91/411 413/92/412 405/84/404 -f 413/92/412 407/86/406 406/85/405 -f 413/92/412 414/93/413 407/86/406 -f 415/94/414 408/87/407 407/86/406 -f 414/93/413 415/94/414 407/86/406 -f 415/94/414 403/88/408 408/87/407 -f 415/94/414 410/95/415 403/88/408 -f 386/68/386 416/68/386 409/68/386 -f 417/68/387 390/68/387 410/68/387 -f 416/96/416 411/89/409 409/90/410 -f 416/96/416 418/97/417 411/89/409 -f 419/98/418 412/91/411 411/89/409 -f 418/97/417 419/98/418 411/89/409 -f 419/98/418 413/92/412 412/91/411 -f 419/98/418 420/99/419 413/92/412 -f 421/100/420 414/93/413 413/92/412 -f 420/99/419 421/100/420 413/92/412 -f 421/100/420 415/94/414 414/93/413 -f 421/100/420 422/101/421 415/94/414 -f 417/102/422 410/95/415 415/94/414 -f 422/101/421 417/102/422 415/94/414 -f 386/68/386 423/68/386 416/68/386 -f 424/68/387 390/68/387 417/68/387 -f 425/103/423 418/97/417 416/96/416 -f 423/104/424 425/103/423 416/96/416 -f 425/103/423 419/98/418 418/97/417 -f 425/103/423 426/105/425 419/98/418 -f 427/106/426 420/99/419 419/98/418 -f 426/105/425 427/106/426 419/98/418 -f 427/106/426 421/100/420 420/99/419 -f 427/106/426 428/107/427 421/100/420 -f 429/108/428 422/101/421 421/100/420 -f 428/107/427 429/108/428 421/100/420 -f 429/108/428 417/102/422 422/101/421 -f 429/108/428 424/109/429 417/102/422 -f 386/68/386 430/68/386 423/68/386 -f 431/68/387 390/68/387 424/68/387 -f 430/110/430 425/103/423 423/104/424 -f 430/110/430 432/111/431 425/103/423 -f 433/112/432 426/105/425 425/103/423 -f 432/111/431 433/112/432 425/103/423 -f 433/112/432 427/106/426 426/105/425 -f 433/112/432 434/113/433 427/106/426 -f 435/114/434 428/107/427 427/106/426 -f 434/113/433 435/114/434 427/106/426 -f 435/114/434 429/108/428 428/107/427 -f 435/114/434 436/115/435 429/108/428 -f 431/116/436 424/109/429 429/108/428 -f 436/115/435 431/116/436 429/108/428 -f 386/68/386 388/68/386 430/68/386 -f 391/68/387 390/68/387 431/68/387 -f 393/117/389 432/111/431 430/110/430 -f 388/118/390 393/117/389 430/110/430 -f 393/117/389 433/112/432 432/111/431 -f 393/117/389 394/119/392 433/112/432 -f 397/120/395 434/113/433 433/112/432 -f 394/119/392 397/120/395 433/112/432 -f 397/120/395 435/114/434 434/113/433 -f 397/120/395 398/121/396 435/114/434 -f 401/122/399 436/115/435 435/114/434 -f 398/121/396 401/122/399 435/114/434 -f 401/122/399 431/116/436 436/115/435 -f 401/122/399 391/123/400 431/116/436 - -# Mesh 'Bein4Li' with 98 faces -g Bein4Li -f 437/68/437 438/68/437 439/68/437 -f 440/68/438 441/68/438 442/68/438 -f 437/69/439 443/70/440 444/71/441 -f 437/69/439 444/71/441 438/72/442 -f 443/70/440 445/73/443 444/71/441 -f 445/73/443 446/74/444 444/71/441 -f 445/73/443 447/75/445 448/76/446 -f 445/73/443 448/76/446 446/74/444 -f 447/75/445 449/77/447 448/76/446 -f 449/77/447 450/78/448 448/76/446 -f 449/77/447 451/79/449 452/80/450 -f 449/77/447 452/80/450 450/78/448 -f 451/79/449 440/68/451 452/80/450 -f 440/68/451 442/81/452 452/80/450 -f 438/68/437 453/68/437 439/68/437 -f 442/68/438 441/68/438 454/68/438 -f 438/72/442 444/71/441 453/82/453 -f 444/71/441 455/83/454 453/82/453 -f 444/71/441 446/74/444 456/84/455 -f 444/71/441 456/84/455 455/83/454 -f 446/74/444 448/76/446 456/84/455 -f 448/76/446 457/85/456 456/84/455 -f 448/76/446 450/78/448 458/86/457 -f 448/76/446 458/86/457 457/85/456 -f 450/78/448 452/80/450 458/86/457 -f 452/80/450 459/87/458 458/86/457 -f 452/80/450 442/81/452 454/88/459 -f 452/80/450 454/88/459 459/87/458 -f 453/68/437 460/68/437 439/68/437 -f 454/68/438 441/68/438 461/68/438 -f 453/82/453 455/83/454 462/89/460 -f 453/82/453 462/89/460 460/90/461 -f 455/83/454 456/84/455 462/89/460 -f 456/84/455 463/91/462 462/89/460 -f 456/84/455 457/85/456 464/92/463 -f 456/84/455 464/92/463 463/91/462 -f 457/85/456 458/86/457 464/92/463 -f 458/86/457 465/93/464 464/92/463 -f 458/86/457 459/87/458 466/94/465 -f 458/86/457 466/94/465 465/93/464 -f 459/87/458 454/88/459 466/94/465 -f 454/88/459 461/95/466 466/94/465 -f 460/68/437 467/68/437 439/68/437 -f 461/68/438 441/68/438 468/68/438 -f 460/90/461 462/89/460 467/96/467 -f 462/89/460 469/97/468 467/96/467 -f 462/89/460 463/91/462 470/98/469 -f 462/89/460 470/98/469 469/97/468 -f 463/91/462 464/92/463 470/98/469 -f 464/92/463 471/99/470 470/98/469 -f 464/92/463 465/93/464 472/100/471 -f 464/92/463 472/100/471 471/99/470 -f 465/93/464 466/94/465 472/100/471 -f 466/94/465 473/101/472 472/100/471 -f 466/94/465 461/95/466 468/102/473 -f 466/94/465 468/102/473 473/101/472 -f 467/68/437 474/68/437 439/68/437 -f 468/68/438 441/68/438 475/68/438 -f 467/96/467 469/97/468 476/103/474 -f 467/96/467 476/103/474 474/104/475 -f 469/97/468 470/98/469 476/103/474 -f 470/98/469 477/105/476 476/103/474 -f 470/98/469 471/99/470 478/106/477 -f 470/98/469 478/106/477 477/105/476 -f 471/99/470 472/100/471 478/106/477 -f 472/100/471 479/107/478 478/106/477 -f 472/100/471 473/101/472 480/108/479 -f 472/100/471 480/108/479 479/107/478 -f 473/101/472 468/102/473 480/108/479 -f 468/102/473 475/109/480 480/108/479 -f 474/68/437 481/68/437 439/68/437 -f 475/68/438 441/68/438 482/68/438 -f 474/104/475 476/103/474 481/110/481 -f 476/103/474 483/111/482 481/110/481 -f 476/103/474 477/105/476 484/112/483 -f 476/103/474 484/112/483 483/111/482 -f 477/105/476 478/106/477 484/112/483 -f 478/106/477 485/113/484 484/112/483 -f 478/106/477 479/107/478 486/114/485 -f 478/106/477 486/114/485 485/113/484 -f 479/107/478 480/108/479 486/114/485 -f 480/108/479 487/115/486 486/114/485 -f 480/108/479 475/109/480 482/116/487 -f 480/108/479 482/116/487 487/115/486 -f 481/68/437 437/68/437 439/68/437 -f 482/68/438 441/68/438 440/68/438 -f 481/110/481 483/111/482 443/117/440 -f 481/110/481 443/117/440 437/118/439 -f 483/111/482 484/112/483 443/117/440 -f 484/112/483 445/119/443 443/117/440 -f 484/112/483 485/113/484 447/120/445 -f 484/112/483 447/120/445 445/119/443 -f 485/113/484 486/114/485 447/120/445 -f 486/114/485 449/121/447 447/120/445 -f 486/114/485 487/115/486 451/122/449 -f 486/114/485 451/122/449 449/121/447 -f 487/115/486 482/116/487 451/122/449 -f 482/116/487 440/123/451 451/122/449 - -# Mesh 'Zahn' with 42 faces -g Zahn -f 488/124/488 488/124/488 488/124/488 -f 489/125/489 490/126/489 491/127/489 -f 488/124/490 492/128/491 493/129/492 -f 488/124/490 493/129/492 488/124/488 -f 492/128/491 489/125/493 493/129/492 -f 489/125/493 491/127/494 493/129/492 -f 488/124/488 488/124/488 488/124/488 -f 491/127/489 490/126/489 494/130/489 -f 488/124/488 493/129/492 488/124/495 -f 493/129/492 495/131/496 488/124/495 -f 493/129/492 491/127/494 494/130/497 -f 493/129/492 494/130/497 495/131/496 -f 488/124/488 488/124/488 488/124/488 -f 494/130/489 490/126/489 496/132/489 -f 488/124/495 495/131/496 497/133/498 -f 488/124/495 497/133/498 488/124/488 -f 495/131/496 494/130/497 497/133/498 -f 494/130/497 496/132/499 497/133/498 -f 488/124/488 488/124/488 488/124/488 -f 496/132/489 490/126/489 498/134/489 -f 488/124/488 497/133/498 488/124/500 -f 497/133/498 499/135/501 488/124/500 -f 497/133/498 496/132/499 498/134/502 -f 497/133/498 498/134/502 499/135/501 -f 488/124/488 488/124/488 488/124/488 -f 498/134/489 490/126/489 500/136/489 -f 488/124/500 499/135/501 501/137/503 -f 488/124/500 501/137/503 488/124/488 -f 499/135/501 498/134/502 501/137/503 -f 498/134/502 500/136/504 501/137/503 -f 488/124/488 488/124/488 488/124/488 -f 500/136/489 490/126/489 502/138/489 -f 488/124/488 501/137/503 488/124/505 -f 501/137/503 503/139/506 488/124/505 -f 501/137/503 500/136/504 502/138/507 -f 501/137/503 502/138/507 503/139/506 -f 488/124/488 488/124/488 488/124/488 -f 502/138/489 490/126/489 489/125/489 -f 488/124/505 503/139/506 492/128/491 -f 488/124/505 492/128/491 488/124/490 -f 503/139/506 502/138/507 492/128/491 -f 502/138/507 489/125/493 492/128/491 - -# Mesh 'klZahn' with 42 faces -g klZahn -f 504/140/488 504/140/488 504/140/488 -f 505/141/508 506/142/508 507/143/508 -f 504/140/509 508/144/510 509/145/511 -f 504/140/509 509/145/511 504/140/488 -f 508/144/510 505/141/512 509/145/511 -f 505/141/512 507/143/513 509/145/511 -f 504/140/488 504/140/488 504/140/488 -f 507/143/508 506/142/508 510/146/508 -f 504/140/488 509/145/511 504/140/514 -f 509/145/511 511/147/515 504/140/514 -f 509/145/511 507/143/513 510/146/516 -f 509/145/511 510/146/516 511/147/515 -f 504/140/488 504/140/488 504/140/488 -f 510/146/508 506/142/508 512/148/508 -f 504/140/514 511/147/515 513/149/517 -f 504/140/514 513/149/517 504/140/488 -f 511/147/515 510/146/516 513/149/517 -f 510/146/516 512/148/518 513/149/517 -f 504/140/488 504/140/488 504/140/488 -f 512/148/508 506/142/508 514/150/508 -f 504/140/488 513/149/517 504/140/519 -f 513/149/517 515/151/520 504/140/519 -f 513/149/517 512/148/518 514/150/521 -f 513/149/517 514/150/521 515/151/520 -f 504/140/488 504/140/488 504/140/488 -f 514/150/508 506/142/508 516/152/508 -f 504/140/519 515/151/520 517/153/522 -f 504/140/519 517/153/522 504/140/488 -f 515/151/520 514/150/521 517/153/522 -f 514/150/521 516/152/523 517/153/522 -f 504/140/488 504/140/488 504/140/488 -f 516/152/508 506/142/508 518/154/508 -f 504/140/488 517/153/522 504/140/524 -f 517/153/522 519/155/525 504/140/524 -f 517/153/522 516/152/523 518/154/526 -f 517/153/522 518/154/526 519/155/525 -f 504/140/488 504/140/488 504/140/488 -f 518/154/508 506/142/508 505/141/508 -f 504/140/524 519/155/525 508/144/510 -f 504/140/524 508/144/510 504/140/509 -f 519/155/525 518/154/526 508/144/510 -f 518/154/526 505/141/512 508/144/510 - -# Mesh 'Kopf' with 90 faces -g Kopf -f 520/68/527 521/156/528 522/157/529 -f 520/68/527 523/158/530 521/156/528 -f 524/69/531 525/159/532 526/160/533 -f 520/68/527 527/161/534 523/158/530 -f 524/69/531 526/160/533 528/162/535 -f 520/68/527 529/163/536 527/161/534 -f 524/69/531 528/162/535 530/164/537 -f 520/68/527 531/165/538 529/163/536 -f 524/69/531 530/164/537 532/166/539 -f 520/68/527 533/167/540 531/165/538 -f 534/168/541 535/169/542 525/159/532 -f 525/159/532 535/169/542 536/170/543 -f 525/159/532 536/170/543 526/160/533 -f 526/160/533 536/170/543 528/162/535 -f 536/170/543 537/169/544 528/162/535 -f 528/162/535 537/169/544 538/171/545 -f 528/162/535 538/171/545 530/164/537 -f 530/164/537 538/171/545 532/166/539 -f 538/171/545 539/172/546 532/166/539 -f 540/173/547 541/174/548 534/168/541 -f 541/174/548 542/175/549 534/168/541 -f 534/168/541 542/175/549 543/176/550 -f 534/168/541 543/176/550 535/169/542 -f 535/169/542 543/176/550 536/170/543 -f 543/176/550 544/177/551 536/170/543 -f 536/170/543 544/177/551 545/178/552 -f 536/170/543 545/178/552 537/169/544 -f 537/169/544 545/178/552 538/171/545 -f 545/178/552 546/179/553 538/171/545 -f 538/171/545 546/179/553 547/180/554 -f 538/171/545 547/180/554 539/172/546 -f 541/174/548 548/181/555 549/182/556 -f 541/174/548 549/182/556 542/175/549 -f 542/175/549 549/182/556 543/176/550 -f 549/182/556 550/183/557 543/176/550 -f 543/176/550 550/183/557 551/184/558 -f 543/176/550 551/184/558 544/177/551 -f 544/177/551 551/184/558 545/178/552 -f 551/184/558 552/185/559 545/178/552 -f 546/179/553 553/186/560 547/180/554 -f 553/186/560 554/187/561 547/180/554 -f 548/181/555 522/157/529 549/182/556 -f 522/157/529 521/156/528 549/182/556 -f 549/182/556 521/156/528 523/158/530 -f 549/182/556 523/158/530 550/183/557 -f 550/183/557 523/158/530 551/184/558 -f 523/158/530 527/161/534 551/184/558 -f 551/184/558 527/161/534 529/163/536 -f 551/184/558 529/163/536 552/185/559 -f 552/185/559 529/163/536 553/186/560 -f 529/163/536 531/165/538 553/186/560 -f 553/186/560 531/165/538 533/167/540 -f 553/186/560 533/167/540 554/187/561 -f 555/188/562 556/189/563 557/190/564 -f 546/179/553 558/191/565 557/190/564 -f 557/190/564 555/188/562 546/179/553 -f 559/192/566 558/191/565 546/179/553 -f 558/191/565 559/192/566 560/193/567 -f 560/193/567 557/190/564 558/191/565 -f 561/194/568 560/193/567 559/192/566 -f 559/192/566 562/195/569 561/194/568 -f 563/196/570 561/194/568 564/197/571 -f 562/195/569 564/197/571 561/194/568 -f 565/198/572 563/196/570 566/199/573 -f 563/196/570 564/197/571 566/199/573 -f 566/199/573 567/200/574 565/198/572 -f 566/199/573 568/201/575 567/200/574 -f 568/201/575 569/202/576 567/200/574 -f 570/203/577 567/200/574 569/202/576 -f 569/202/576 571/204/578 570/203/577 -f 572/205/579 570/203/577 571/204/578 -f 573/206/580 572/205/579 571/204/578 -f 571/204/578 574/207/581 573/206/580 -f 575/208/582 573/206/580 574/207/581 -f 574/207/581 576/209/583 575/208/582 -f 556/189/563 575/208/582 576/209/583 -f 576/209/583 555/188/562 556/189/563 -f 555/188/562 553/186/560 546/179/553 -f 555/188/562 576/209/583 553/186/560 -f 576/209/583 574/207/581 553/186/560 -f 574/207/581 571/204/578 553/186/560 -f 571/204/578 569/202/576 553/186/560 -f 552/185/559 553/186/560 569/202/576 -f 569/202/576 568/201/575 552/185/559 -f 568/201/575 566/199/573 552/185/559 -f 559/192/566 546/179/553 545/178/552 -f 562/195/569 559/192/566 545/178/552 -f 564/197/571 562/195/569 545/178/552 -f 545/178/552 552/185/559 566/199/573 -f 564/197/571 566/199/573 545/178/552 - -# Mesh 'Brust' with 20 faces -g Brust -f 70/210/584 71/211/585 577/212/586 -f 60/120/587 577/212/586 64/213/588 -f 577/212/586 71/211/585 64/213/588 -f 70/210/584 577/212/586 578/214/589 -f 75/215/590 578/214/589 579/216/591 -f 60/120/587 579/216/591 577/212/586 -f 578/214/589 577/212/586 579/216/591 -f 70/210/584 578/214/589 580/217/592 -f 77/75/593 580/217/592 581/218/594 -f 75/215/590 581/218/594 578/214/589 -f 580/217/592 578/214/589 581/218/594 -f 77/75/593 581/218/594 72/219/595 -f 75/215/590 73/220/596 581/218/594 -f 72/219/595 581/218/594 73/220/596 -f 75/215/590 579/216/591 74/221/597 -f 60/120/587 61/222/598 579/216/591 -f 74/221/597 579/216/591 61/222/598 -f 70/210/584 580/217/592 69/223/599 -f 77/75/593 79/224/600 580/217/592 -f 69/223/599 580/217/592 79/224/600 - -# Mesh 'Kopf2' with 90 faces -g Kopf2 -f 582/225/601 583/226/602 584/123/603 -f 583/226/602 585/227/604 584/123/603 -f 586/228/605 587/229/606 588/118/607 -f 585/227/604 589/230/608 584/123/603 -f 590/231/609 586/228/605 588/118/607 -f 589/230/608 591/232/610 584/123/603 -f 592/233/611 590/231/609 588/118/607 -f 591/232/610 593/234/612 584/123/603 -f 594/235/613 592/233/611 588/118/607 -f 593/234/612 595/236/614 584/123/603 -f 587/229/606 596/237/615 597/238/616 -f 598/239/617 596/237/615 587/229/606 -f 586/228/605 598/239/617 587/229/606 -f 590/231/609 598/239/617 586/228/605 -f 590/231/609 599/237/618 598/239/617 -f 600/240/619 599/237/618 590/231/609 -f 592/233/611 600/240/619 590/231/609 -f 594/235/613 600/240/619 592/233/611 -f 594/235/613 601/241/620 600/240/619 -f 597/238/616 602/176/621 603/242/622 -f 597/238/616 604/243/623 602/176/621 -f 605/174/624 604/243/623 597/238/616 -f 596/237/615 605/174/624 597/238/616 -f 598/239/617 605/174/624 596/237/615 -f 598/239/617 606/244/625 605/174/624 -f 607/245/626 606/244/625 598/239/617 -f 599/237/618 607/245/626 598/239/617 -f 600/240/619 607/245/626 599/237/618 -f 600/240/619 608/246/627 607/245/626 -f 609/247/628 608/246/627 600/240/619 -f 601/241/620 609/247/628 600/240/619 -f 610/248/629 611/249/630 602/176/621 -f 604/243/623 610/248/629 602/176/621 -f 605/174/624 610/248/629 604/243/623 -f 605/174/624 612/250/631 610/248/629 -f 613/251/632 612/250/631 605/174/624 -f 606/244/625 613/251/632 605/174/624 -f 607/245/626 613/251/632 606/244/625 -f 607/245/626 614/252/633 613/251/632 -f 609/247/628 615/253/634 608/246/627 -f 609/247/628 616/254/635 615/253/634 -f 610/248/629 582/225/601 611/249/630 -f 610/248/629 583/226/602 582/225/601 -f 585/227/604 583/226/602 610/248/629 -f 612/250/631 585/227/604 610/248/629 -f 613/251/632 585/227/604 612/250/631 -f 613/251/632 589/230/608 585/227/604 -f 591/232/610 589/230/608 613/251/632 -f 614/252/633 591/232/610 613/251/632 -f 615/253/634 591/232/610 614/252/633 -f 615/253/634 593/234/612 591/232/610 -f 595/236/614 593/234/612 615/253/634 -f 616/254/635 595/236/614 615/253/634 -f 617/255/636 618/256/637 619/257/638 -f 617/255/636 620/258/639 608/246/627 -f 608/246/627 619/257/638 617/255/636 -f 608/246/627 620/258/639 621/259/640 -f 622/260/641 621/259/640 620/258/639 -f 620/258/639 617/255/636 622/260/641 -f 621/259/640 622/260/641 623/261/642 -f 623/261/642 624/262/643 621/259/640 -f 625/263/644 623/261/642 626/264/645 -f 623/261/642 625/263/644 624/262/643 -f 627/265/646 626/264/645 628/266/647 -f 627/265/646 625/263/644 626/264/645 -f 628/266/647 629/267/648 627/265/646 -f 629/267/648 630/268/649 627/265/646 -f 629/267/648 631/269/650 630/268/649 -f 631/269/650 629/267/648 632/270/651 -f 632/270/651 633/271/652 631/269/650 -f 633/271/652 632/270/651 634/272/653 -f 633/271/652 634/272/653 635/273/654 -f 635/273/654 636/274/655 633/271/652 -f 636/274/655 635/273/654 637/275/656 -f 637/275/656 638/276/657 636/274/655 -f 638/276/657 637/275/656 618/256/637 -f 618/256/637 619/257/638 638/276/657 -f 608/246/627 615/253/634 619/257/638 -f 615/253/634 638/276/657 619/257/638 -f 615/253/634 636/274/655 638/276/657 -f 615/253/634 633/271/652 636/274/655 -f 615/253/634 631/269/650 633/271/652 -f 631/269/650 615/253/634 614/252/633 -f 614/252/633 630/268/649 631/269/650 -f 614/252/633 627/265/646 630/268/649 -f 607/245/626 608/246/627 621/259/640 -f 607/245/626 621/259/640 624/262/643 -f 607/245/626 624/262/643 625/263/644 -f 627/265/646 614/252/633 607/245/626 -f 607/245/626 627/265/646 625/263/644 - -# Mesh 'Zahn2' with 42 faces -g Zahn2 -f 639/124/488 639/124/488 639/124/488 -f 640/127/658 641/126/658 642/125/658 -f 643/129/659 644/128/660 639/124/661 -f 639/124/488 643/129/659 639/124/661 -f 643/129/659 642/125/662 644/128/660 -f 643/129/659 640/127/663 642/125/662 -f 639/124/488 639/124/488 639/124/488 -f 645/130/658 641/126/658 640/127/658 -f 639/124/664 643/129/659 639/124/488 -f 639/124/664 646/131/665 643/129/659 -f 645/130/666 640/127/663 643/129/659 -f 646/131/665 645/130/666 643/129/659 -f 639/124/488 639/124/488 639/124/488 -f 647/132/658 641/126/658 645/130/658 -f 648/133/667 646/131/665 639/124/664 -f 639/124/488 648/133/667 639/124/664 -f 648/133/667 645/130/666 646/131/665 -f 648/133/667 647/132/668 645/130/666 -f 639/124/488 639/124/488 639/124/488 -f 649/134/658 641/126/658 647/132/658 -f 639/124/669 648/133/667 639/124/488 -f 639/124/669 650/135/670 648/133/667 -f 649/134/671 647/132/668 648/133/667 -f 650/135/670 649/134/671 648/133/667 -f 639/124/488 639/124/488 639/124/488 -f 651/136/658 641/126/658 649/134/658 -f 652/137/672 650/135/670 639/124/669 -f 639/124/488 652/137/672 639/124/669 -f 652/137/672 649/134/671 650/135/670 -f 652/137/672 651/136/673 649/134/671 -f 639/124/488 639/124/488 639/124/488 -f 653/138/658 641/126/658 651/136/658 -f 639/124/674 652/137/672 639/124/488 -f 639/124/674 654/139/675 652/137/672 -f 653/138/676 651/136/673 652/137/672 -f 654/139/675 653/138/676 652/137/672 -f 639/124/488 639/124/488 639/124/488 -f 642/125/658 641/126/658 653/138/658 -f 644/128/660 654/139/675 639/124/674 -f 639/124/661 644/128/660 639/124/674 -f 644/128/660 653/138/676 654/139/675 -f 644/128/660 642/125/662 653/138/676 - -# Mesh 'klZahn2' with 42 faces -g klZahn2 -f 655/140/488 655/140/488 655/140/488 -f 656/143/677 657/142/677 658/141/677 -f 659/145/678 660/144/679 655/140/680 -f 655/140/488 659/145/678 655/140/680 -f 659/145/678 658/141/681 660/144/679 -f 659/145/678 656/143/682 658/141/681 -f 655/140/488 655/140/488 655/140/488 -f 661/146/677 657/142/677 656/143/677 -f 655/140/683 659/145/678 655/140/488 -f 655/140/683 662/147/684 659/145/678 -f 661/146/685 656/143/682 659/145/678 -f 662/147/684 661/146/685 659/145/678 -f 655/140/488 655/140/488 655/140/488 -f 663/148/677 657/142/677 661/146/677 -f 664/149/686 662/147/684 655/140/683 -f 655/140/488 664/149/686 655/140/683 -f 664/149/686 661/146/685 662/147/684 -f 664/149/686 663/148/687 661/146/685 -f 655/140/488 655/140/488 655/140/488 -f 665/150/677 657/142/677 663/148/677 -f 655/140/688 664/149/686 655/140/488 -f 655/140/688 666/151/689 664/149/686 -f 665/150/690 663/148/687 664/149/686 -f 666/151/689 665/150/690 664/149/686 -f 655/140/488 655/140/488 655/140/488 -f 667/152/677 657/142/677 665/150/677 -f 668/153/691 666/151/689 655/140/688 -f 655/140/488 668/153/691 655/140/688 -f 668/153/691 665/150/690 666/151/689 -f 668/153/691 667/152/692 665/150/690 -f 655/140/488 655/140/488 655/140/488 -f 669/154/677 657/142/677 667/152/677 -f 655/140/693 668/153/691 655/140/488 -f 655/140/693 670/155/694 668/153/691 -f 669/154/695 667/152/692 668/153/691 -f 670/155/694 669/154/695 668/153/691 -f 655/140/488 655/140/488 655/140/488 -f 658/141/677 657/142/677 669/154/677 -f 660/144/679 670/155/694 655/140/693 -f 655/140/680 660/144/679 655/140/693 -f 660/144/679 669/154/695 670/155/694 -f 660/144/679 658/141/681 669/154/695 - -# Mesh 'Auge' with 38 faces -g Auge -f 671/277/696 672/278/697 673/279/698 -f 671/277/696 673/279/698 674/280/699 -f 675/281/700 674/280/699 676/282/701 -f 674/280/699 673/279/698 676/282/701 -f 675/281/700 676/282/701 677/283/702 -f 678/284/703 679/285/704 680/286/705 -f 681/287/706 680/286/705 682/288/707 -f 683/289/708 682/288/707 679/285/704 -f 680/286/705 679/285/704 682/288/707 -f 681/287/706 682/288/707 684/290/709 -f 685/291/710 684/290/709 686/292/711 -f 683/289/708 686/292/711 682/288/707 -f 684/290/709 682/288/707 686/292/711 -f 685/291/710 687/293/712 688/294/713 -f 689/295/714 688/294/713 690/296/715 -f 691/297/716 690/296/715 687/293/712 -f 688/294/713 687/293/712 690/296/715 -f 689/295/714 690/296/715 692/298/717 -f 671/277/696 692/298/717 693/299/718 -f 691/297/716 693/299/718 690/296/715 -f 692/298/717 690/296/715 693/299/718 -f 671/277/696 693/299/718 672/278/697 -f 675/281/700 694/300/719 674/280/699 -f 671/277/696 674/280/699 692/298/717 -f 689/295/714 692/298/717 694/300/719 -f 674/280/699 694/300/719 692/298/717 -f 675/281/700 695/301/720 694/300/719 -f 689/295/714 694/300/719 696/302/721 -f 681/287/706 696/302/721 695/301/720 -f 694/300/719 695/301/720 696/302/721 -f 675/281/700 677/283/702 695/301/720 -f 681/287/706 695/301/720 680/286/705 -f 678/284/703 680/286/705 677/283/702 -f 695/301/720 677/283/702 680/286/705 -f 685/291/710 688/294/713 684/290/709 -f 681/287/706 684/290/709 696/302/721 -f 689/295/714 696/302/721 688/294/713 -f 684/290/709 688/294/713 696/302/721 - -# Mesh 'Duplicate05' with 38 faces -g Duplicate05 -f 697/279/722 698/278/723 699/277/724 -f 700/280/725 697/279/722 699/277/724 -f 701/282/726 700/280/725 702/281/727 -f 701/282/726 697/279/722 700/280/725 -f 703/283/728 701/282/726 702/281/727 -f 704/286/729 705/285/730 706/284/731 -f 707/288/732 704/286/729 708/287/733 -f 705/285/730 707/288/732 709/289/734 -f 707/288/732 705/285/730 704/286/729 -f 710/290/735 707/288/732 708/287/733 -f 711/292/736 710/290/735 712/291/737 -f 707/288/732 711/292/736 709/289/734 -f 711/292/736 707/288/732 710/290/735 -f 713/294/738 714/293/739 712/291/737 -f 715/296/740 713/294/738 716/295/741 -f 714/293/739 715/296/740 717/297/742 -f 715/296/740 714/293/739 713/294/738 -f 718/298/743 715/296/740 716/295/741 -f 719/299/744 718/298/743 699/277/724 -f 715/296/740 719/299/744 717/297/742 -f 719/299/744 715/296/740 718/298/743 -f 698/278/723 719/299/744 699/277/724 -f 700/280/725 720/300/745 702/281/727 -f 718/298/743 700/280/725 699/277/724 -f 720/300/745 718/298/743 716/295/741 -f 718/298/743 720/300/745 700/280/725 -f 720/300/745 721/301/746 702/281/727 -f 722/302/747 720/300/745 716/295/741 -f 721/301/746 722/302/747 708/287/733 -f 722/302/747 721/301/746 720/300/745 -f 721/301/746 703/283/728 702/281/727 -f 704/286/729 721/301/746 708/287/733 -f 703/283/728 704/286/729 706/284/731 -f 704/286/729 703/283/728 721/301/746 -f 710/290/735 713/294/738 712/291/737 -f 722/302/747 710/290/735 708/287/733 -f 713/294/738 722/302/747 716/295/741 -f 722/302/747 713/294/738 710/290/735 - diff --git a/test/models/PLY/cube_test.ply b/test/models/PLY/cube_test.ply deleted file mode 100644 index 8de33f3de..000000000 --- a/test/models/PLY/cube_test.ply +++ /dev/null @@ -1,24 +0,0 @@ -ply -format ascii 1.0 -comment Created by Open Asset Import Library - http://assimp.sf.net (v4.1.3023643559) -element vertex 8 -property float x -property float y -property float z -element face 6 -property list uchar int vertex_index -end_header -0 0 0 -0 0 1 -0 1 1 -0 1 0 -1 0 0 -1 0 1 -1 1 1 -1 1 0 -4 0 1 2 3 -4 7 6 5 4 -4 0 4 5 1 -4 1 5 6 2 -4 2 6 7 3 -4 3 7 4 0 From 70ae30f26a8c3c2b25f4d5f75e3ac9941205b5da Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 18:55:40 +0200 Subject: [PATCH 06/23] ASE: Reformat initializer list --- code/ASEParser.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/ASEParser.h b/code/ASEParser.h index 33d4ea53d..dda487547 100644 --- a/code/ASEParser.h +++ b/code/ASEParser.h @@ -68,7 +68,9 @@ using namespace D3DS; struct Material : public D3DS::Material { //! Default constructor - Material() : pcInstance(NULL), bNeed (false) + Material() + : pcInstance(NULL) + , bNeed (false) {} //! Contains all sub materials of this material From 6c4e3bce5301d48275fbc1a51508ad0e79ef9aae Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 18:57:48 +0200 Subject: [PATCH 07/23] 3DS: Reformat initializer list --- code/3DSLoader.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/3DSLoader.cpp b/code/3DSLoader.cpp index 26c487abf..b5534f157 100644 --- a/code/3DSLoader.cpp +++ b/code/3DSLoader.cpp @@ -105,14 +105,14 @@ static const aiImporterDesc desc = { // ------------------------------------------------------------------------------------------------ // Constructor to be privately used by Importer Discreet3DSImporter::Discreet3DSImporter() - : stream(), - mLastNodeIndex(), - mCurrentNode(), - mRootNode(), - mScene(), - mMasterScale(), - bHasBG(), - bIsPrj() +: stream() +, mLastNodeIndex() +, mCurrentNode() +, mRootNode() +, mScene() +, mMasterScale() +, bHasBG() +, bIsPrj() {} // ------------------------------------------------------------------------------------------------ From 4d946d9e314bc5e1ff2c4489bf0b12247e8d32a4 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 19:10:00 +0200 Subject: [PATCH 08/23] ASE: Reformat another initializer list --- code/ASELoader.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/ASELoader.cpp b/code/ASELoader.cpp index a8d2206cf..798f25f85 100644 --- a/code/ASELoader.cpp +++ b/code/ASELoader.cpp @@ -83,11 +83,11 @@ static const aiImporterDesc desc = { // ------------------------------------------------------------------------------------------------ // Constructor to be privately used by Importer ASEImporter::ASEImporter() - : mParser(), - mBuffer(), - pcScene(), - configRecomputeNormals(), - noSkeletonMesh() +: mParser() +, mBuffer() +, pcScene() +, configRecomputeNormals() +, noSkeletonMesh() {} // ------------------------------------------------------------------------------------------------ From 9e7b21f83dc0eb1452ae89bbc4f35a76205bd8f8 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 19:24:22 +0200 Subject: [PATCH 09/23] 3DS: Add explicit default constructors and assignment operators to Material --- code/3DSHelper.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code/3DSHelper.h b/code/3DSHelper.h index 4996650eb..f0ab18e51 100644 --- a/code/3DSHelper.h +++ b/code/3DSHelper.h @@ -387,6 +387,16 @@ struct Material mName = szTemp; } + + Material(const Material &other) = default; + Material(Material &&other) = default; + + Material &operator=(const Material &other) = default; + Material &operator=(Material &&other) = default; + + ~Material() {} + + //! Name of the material std::string mName; //! Diffuse color of the material From 024aade20861a1399aaab9755bdda6df3b56dc77 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 19:33:50 +0200 Subject: [PATCH 10/23] ASE: Add explicit default constructors and assignment operators to Material --- code/ASEParser.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code/ASEParser.h b/code/ASEParser.h index dda487547..4e2d6f7ef 100644 --- a/code/ASEParser.h +++ b/code/ASEParser.h @@ -73,6 +73,16 @@ struct Material : public D3DS::Material , bNeed (false) {} + + Material(const Material &other) = default; + Material(Material &&other) = default; + + Material &operator=(const Material &other) = default; + Material &operator=(Material &&other) = default; + + ~Material() {} + + //! Contains all sub materials of this material std::vector avSubMaterials; From d49996d8a672efe60ef6279782f74b521bcc8037 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 19:38:38 +0200 Subject: [PATCH 11/23] 3DS: Add Material constructor which takes material name --- code/3DSHelper.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/code/3DSHelper.h b/code/3DSHelper.h index f0ab18e51..d70a6baf7 100644 --- a/code/3DSHelper.h +++ b/code/3DSHelper.h @@ -388,6 +388,20 @@ struct Material } + //! Constructor with explicit name + explicit Material(const std::string &name) + : mDiffuse ( ai_real( 0.6 ), ai_real( 0.6 ), ai_real( 0.6 ) ) // FIX ... we won't want object to be black + , mSpecularExponent ( ai_real( 0.0 ) ) + , mShininessStrength ( ai_real( 1.0 ) ) + , mShading(Discreet3DS::Gouraud) + , mTransparency ( ai_real( 1.0 ) ) + , mBumpHeight ( ai_real( 1.0 ) ) + , mTwoSided (false) + { + mName = name; + } + + Material(const Material &other) = default; Material(Material &&other) = default; From 60d78f1701af1f12258f560fc0fc72173193bd44 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 19:43:15 +0200 Subject: [PATCH 12/23] ASE: Add Material constructor which takes material name --- code/ASEParser.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/ASEParser.h b/code/ASEParser.h index 4e2d6f7ef..d9a74e645 100644 --- a/code/ASEParser.h +++ b/code/ASEParser.h @@ -74,6 +74,14 @@ struct Material : public D3DS::Material {} + //! Constructor with explicit name + explicit Material(const std::string &name) + : D3DS::Material(name) + , pcInstance(NULL) + , bNeed (false) + {} + + Material(const Material &other) = default; Material(Material &&other) = default; From 4b1b5f1b59a4fd7098628d0a3bb1f03ae25f9012 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 19:50:20 +0200 Subject: [PATCH 13/23] ASE: Pass a default material name when resizing materials buffer --- code/ASEParser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ASEParser.cpp b/code/ASEParser.cpp index fcb90b3ca..a11512ae3 100644 --- a/code/ASEParser.cpp +++ b/code/ASEParser.cpp @@ -528,7 +528,7 @@ void Parser::ParseLV1MaterialListBlock() ParseLV4MeshLong(iMaterialCount); // now allocate enough storage to hold all materials - m_vMaterials.resize(iOldMaterialCount+iMaterialCount); + m_vMaterials.resize(iOldMaterialCount+iMaterialCount, Material("INVALID")); continue; } if (TokenMatch(filePtr,"MATERIAL",8)) From 1b28124f21b8b81fa6f0df0a7fd094b96c4bf8a9 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 19:54:16 +0200 Subject: [PATCH 14/23] ASE: Pass a default material name when resizing submaterials buffer --- code/ASEParser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ASEParser.cpp b/code/ASEParser.cpp index a11512ae3..79624ad2e 100644 --- a/code/ASEParser.cpp +++ b/code/ASEParser.cpp @@ -706,7 +706,7 @@ void Parser::ParseLV2MaterialBlock(ASE::Material& mat) ParseLV4MeshLong(iNumSubMaterials); // allocate enough storage - mat.avSubMaterials.resize(iNumSubMaterials); + mat.avSubMaterials.resize(iNumSubMaterials, Material("INVALID SUBMATERIAL")); } // submaterial chunks if (TokenMatch(filePtr,"SUBMATERIAL",11)) From 209966ef35e3881936a98c8f1cebc5f1ac45d079 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 20:15:21 +0200 Subject: [PATCH 15/23] ASE: Pass default material name to constructor --- code/ASELoader.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/ASELoader.cpp b/code/ASELoader.cpp index 798f25f85..6dd6bcdd7 100644 --- a/code/ASELoader.cpp +++ b/code/ASELoader.cpp @@ -276,14 +276,13 @@ void ASEImporter::GenerateDefaultMaterial() } if (bHas || mParser->m_vMaterials.empty()) { // add a simple material without submaterials to the parser's list - mParser->m_vMaterials.push_back ( ASE::Material() ); + mParser->m_vMaterials.push_back ( ASE::Material(AI_DEFAULT_MATERIAL_NAME) ); ASE::Material& mat = mParser->m_vMaterials.back(); mat.mDiffuse = aiColor3D(0.6f,0.6f,0.6f); mat.mSpecular = aiColor3D(1.0f,1.0f,1.0f); mat.mAmbient = aiColor3D(0.05f,0.05f,0.05f); mat.mShading = Discreet3DS::Gouraud; - mat.mName = AI_DEFAULT_MATERIAL_NAME; } } From f2ec3eeeb8a0dd192c0ee65a80cbf8039fac52b0 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 20:20:37 +0200 Subject: [PATCH 16/23] ASE: Delete Material default constructor --- code/ASEParser.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/code/ASEParser.h b/code/ASEParser.h index d9a74e645..e079c4931 100644 --- a/code/ASEParser.h +++ b/code/ASEParser.h @@ -67,11 +67,8 @@ using namespace D3DS; /** Helper structure representing an ASE material */ struct Material : public D3DS::Material { - //! Default constructor - Material() - : pcInstance(NULL) - , bNeed (false) - {} + //! Default constructor has been deleted + Material() = delete; //! Constructor with explicit name From 10246bf0522ae2bbe08fd9d80facc8c605609167 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 20:29:46 +0200 Subject: [PATCH 17/23] 3DS: Pass default material name to Material constructor --- code/3DSLoader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/3DSLoader.cpp b/code/3DSLoader.cpp index b5534f157..d003fec4a 100644 --- a/code/3DSLoader.cpp +++ b/code/3DSLoader.cpp @@ -346,7 +346,7 @@ void Discreet3DSImporter::ParseObjectChunk() case Discreet3DS::CHUNK_MAT_MATERIAL: // Add a new material to the list - mScene->mMaterials.push_back(D3DS::Material()); + mScene->mMaterials.push_back(D3DS::Material(std::string("UNNAMED_" + std::to_string(mScene->mMaterials.size())))); ParseMaterialChunk(); break; From dd7035372d822000ad50b78369ac8f9d50582bae Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 20:36:05 +0200 Subject: [PATCH 18/23] 3DS: Pass default material name to constructor instead of changing after the fact --- code/3DSConverter.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/3DSConverter.cpp b/code/3DSConverter.cpp index af62e9f3c..9a437e33f 100644 --- a/code/3DSConverter.cpp +++ b/code/3DSConverter.cpp @@ -127,9 +127,8 @@ void Discreet3DSImporter::ReplaceDefaultMaterial() if (cnt && idx == mScene->mMaterials.size()) { // We need to create our own default material - D3DS::Material sMat; + D3DS::Material sMat("%%%DEFAULT"); sMat.mDiffuse = aiColor3D(0.3f,0.3f,0.3f); - sMat.mName = "%%%DEFAULT"; mScene->mMaterials.push_back(sMat); DefaultLogger::get()->info("3DS: Generating default material"); From 4acd96d40555bcb4768ac96020577801144c9152 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 20:36:51 +0200 Subject: [PATCH 19/23] 3DS: Remove Material default constructor --- code/3DSHelper.h | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/code/3DSHelper.h b/code/3DSHelper.h index d70a6baf7..229d2ae20 100644 --- a/code/3DSHelper.h +++ b/code/3DSHelper.h @@ -370,22 +370,8 @@ struct Texture /** Helper structure representing a 3ds material */ struct Material { - //! Default constructor. Builds a default name for the material - Material() - : mDiffuse ( ai_real( 0.6 ), ai_real( 0.6 ), ai_real( 0.6 ) ) // FIX ... we won't want object to be black - , mSpecularExponent ( ai_real( 0.0 ) ) - , mShininessStrength ( ai_real( 1.0 ) ) - , mShading(Discreet3DS::Gouraud) - , mTransparency ( ai_real( 1.0 ) ) - , mBumpHeight ( ai_real( 1.0 ) ) - , mTwoSided (false) - { - static int iCnt = 0; - - char szTemp[128]; - ai_snprintf(szTemp, 128, "UNNAMED_%i",iCnt++); - mName = szTemp; - } + //! Default constructor has been deleted + Material() = delete; //! Constructor with explicit name From e6ff15d20146a87a807684900e4fb71c38336873 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Tue, 23 Jan 2018 20:41:26 +0200 Subject: [PATCH 20/23] 3DS: Initialize Material name in initializer list --- code/3DSHelper.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/3DSHelper.h b/code/3DSHelper.h index 229d2ae20..9091b990f 100644 --- a/code/3DSHelper.h +++ b/code/3DSHelper.h @@ -376,7 +376,8 @@ struct Material //! Constructor with explicit name explicit Material(const std::string &name) - : mDiffuse ( ai_real( 0.6 ), ai_real( 0.6 ), ai_real( 0.6 ) ) // FIX ... we won't want object to be black + : mName(name) + , mDiffuse ( ai_real( 0.6 ), ai_real( 0.6 ), ai_real( 0.6 ) ) // FIX ... we won't want object to be black , mSpecularExponent ( ai_real( 0.0 ) ) , mShininessStrength ( ai_real( 1.0 ) ) , mShading(Discreet3DS::Gouraud) @@ -384,7 +385,6 @@ struct Material , mBumpHeight ( ai_real( 1.0 ) ) , mTwoSided (false) { - mName = name; } From cbd7916cedf5081aa411c230c76d1b47e1425de1 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Wed, 24 Jan 2018 12:10:46 +0200 Subject: [PATCH 21/23] 3DS: Explicitly write out Material move constructor and assignment operator Because MSVC doesn't support defaulting them --- code/3DSHelper.h | 58 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/code/3DSHelper.h b/code/3DSHelper.h index 9091b990f..150eb27b6 100644 --- a/code/3DSHelper.h +++ b/code/3DSHelper.h @@ -389,10 +389,62 @@ struct Material Material(const Material &other) = default; - Material(Material &&other) = default; - Material &operator=(const Material &other) = default; - Material &operator=(Material &&other) = default; + + + //! Move constructor. This is explicitly written because MSVC doesn't support defaulting it + Material(Material &&other) + : mName(std::move(other.mName)) + , mDiffuse(std::move(other.mDiffuse)) + , mSpecularExponent(std::move(other.mSpecularExponent)) + , mShininessStrength(std::move(other.mShininessStrength)) + , mSpecular(std::move(other.mSpecular)) + , mAmbient(std::move(other.mAmbient)) + , mShading(std::move(other.mShading)) + , mTransparency(std::move(other.mTransparency)) + , sTexDiffuse(std::move(other.sTexDiffuse)) + , sTexOpacity(std::move(other.sTexOpacity)) + , sTexSpecular(std::move(other.sTexSpecular)) + , sTexReflective(std::move(other.sTexReflective)) + , sTexBump(std::move(other.sTexBump)) + , sTexEmissive(std::move(other.sTexEmissive)) + , sTexShininess(std::move(other.sTexShininess)) + , mBumpHeight(std::move(other.mBumpHeight)) + , mEmissive(std::move(other.mEmissive)) + , sTexAmbient(std::move(other.sTexAmbient)) + , mTwoSided(std::move(other.mTwoSided)) + { + } + + + Material &operator=(Material &&other) { + if (this == &other) { + return *this; + } + + mName = std::move(other.mName); + mDiffuse = std::move(other.mDiffuse); + mSpecularExponent = std::move(other.mSpecularExponent); + mShininessStrength = std::move(other.mShininessStrength), + mSpecular = std::move(other.mSpecular); + mAmbient = std::move(other.mAmbient); + mShading = std::move(other.mShading); + mTransparency = std::move(other.mTransparency); + sTexDiffuse = std::move(other.sTexDiffuse); + sTexOpacity = std::move(other.sTexOpacity); + sTexSpecular = std::move(other.sTexSpecular); + sTexReflective = std::move(other.sTexReflective); + sTexBump = std::move(other.sTexBump); + sTexEmissive = std::move(other.sTexEmissive); + sTexShininess = std::move(other.sTexShininess); + mBumpHeight = std::move(other.mBumpHeight); + mEmissive = std::move(other.mEmissive); + sTexAmbient = std::move(other.sTexAmbient); + mTwoSided = std::move(other.mTwoSided); + + return *this; + } + ~Material() {} From a8fd9f668f39cd2fcffb390919faa492bf0ef888 Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Wed, 24 Jan 2018 12:25:30 +0200 Subject: [PATCH 22/23] ASE: Explicitly write out Material move constructor and assignment operator Because MSVC doesn't support defaulting them --- code/ASEParser.h | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/code/ASEParser.h b/code/ASEParser.h index e079c4931..843cec6ab 100644 --- a/code/ASEParser.h +++ b/code/ASEParser.h @@ -80,10 +80,36 @@ struct Material : public D3DS::Material Material(const Material &other) = default; - Material(Material &&other) = default; - Material &operator=(const Material &other) = default; - Material &operator=(Material &&other) = default; + + + //! Move constructor. This is explicitly written because MSVC doesn't support defaulting it + Material(Material &&other) + : D3DS::Material(std::move(other)) + , avSubMaterials(std::move(other.avSubMaterials)) + , pcInstance(std::move(other.pcInstance)) + , bNeed(std::move(other.bNeed)) + { + other.pcInstance = nullptr; + } + + + Material &operator=(Material &&other) { + if (this == &other) { + return *this; + } + + D3DS::Material::operator=(std::move(other)); + + avSubMaterials = std::move(other.avSubMaterials); + pcInstance = std::move(other.pcInstance); + bNeed = std::move(other.bNeed); + + other.pcInstance = nullptr; + + return *this; + } + ~Material() {} From 5b948e9cca2f4627e2a6df8a0e4558575f804408 Mon Sep 17 00:00:00 2001 From: carmenfan Date: Wed, 24 Jan 2018 11:32:58 +0000 Subject: [PATCH 23/23] add const to GetEmbeddedTexture --- include/assimp/scene.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/assimp/scene.h b/include/assimp/scene.h index 82b38797e..2533f1a66 100644 --- a/include/assimp/scene.h +++ b/include/assimp/scene.h @@ -387,7 +387,7 @@ struct aiScene } //! Returns an embedded texture - const aiTexture* GetEmbeddedTexture(const char* filename) { + const aiTexture* GetEmbeddedTexture(const char* filename) const { const char* shortFilename = GetShortFilename(filename); for (unsigned int i = 0; i < mNumTextures; i++) { const char* shortTextureFilename = GetShortFilename(mTextures[i]->mFilename.C_Str());