diff --git a/.gitattributes b/.gitattributes index 2cf91cfb3..7f9357f62 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,7 +2,14 @@ *.cpp text eol=lf *.h text eol=lf *.c text eol=lf +*.cc text eol=lf +*.cpp text eol=lf +*.rc text eol=lf *.hpp text eol=lf *.txt text eol=lf *.cmake text eol=lf *.sh text eol=lf +CHANGES text eol=lf +CREDITS text eol=lf +LICENSE text eol=lf +Readme.md text eol=lf diff --git a/CHANGES b/CHANGES index 0c734162b..1d98700f8 100644 --- a/CHANGES +++ b/CHANGES @@ -1,173 +1,205 @@ ----------------------------------------------------------------------- -CHANGELOG ----------------------------------------------------------------------- - -3.2.1 (2016-10-01) - -FEATURES: - - Updated glTF exporter to meet 1.0 specification. - -FIXES/HOUSEKEEPING: - - Fixed glTF Validator errors for exported glTF format. - -ISSUES: - - Hard coded sampler setting for - - magFilter - - minFilter - - void* in ExportData for accessor max and min. - - - -3.2.0 (2015-11-03) - -FEATURES: - - OpenDDL-Parser is part of contrib-source. - - Experimental OpenGEX-support - - CI-check for linux and windows - - Coverity check added - - New regression testsuite. - -FIXES/HOUSEKEEPING: - - Hundreds of bugfixes in all parts of the library - - Unified line endings - - -API COMPATIBILITY: - - Removed precompiled header to increase build speed for linux - - -3.1.1 (2014-06-15) - -FEATURES: - - Support for FBX 2013 and newer, binary and ASCII (this is partly - work from Google Summer of Code 2012) - - Support for OGRE binary mesh and skeleton format - - Updated BLEND support for newer Blender versions - - Support for arbitrary meta data, used to hold FBX and DAE metadata - - OBJ Export now produces smaller files - - Meshes can now have names, this is supported by the major importers - - Improved IFC geometry generation - - M3 support has been removed - -FIXES/HOUSEKEEPING: - - Hundreds of bugfixes in all parts of the library - - CMake is now the primary build system - -API COMPATIBILITY: - - 3.1.1 is not binary compatible to 3.0 due to aiNode::mMetaData - and aiMesh::mName - - Export interface has been cleaned up and unified - - Other than that no relevant changes - - -3.0 (2012-07-07) - -FEATURES: - - new export interface similar to the import API. - - Supported export formats: Collada, OBJ, PLY and STL - - added new import formats: XGL/ZGL, M3 (experimental) - - new postprocessing steps: Debone - - vastly improved IFC (Industry Foundation Classes) support - - introduced API to query importer meta information (such as supported - format versions, full name, maintainer info). - - reworked Ogre XML import - - C-API now supports per-import properties - -FIXES/HOUSEKEEPING: - - - hundreds of bugfixes in all parts of the library - - unified naming and cleanup of public headers - - improved CMake build system - - templatized math library - - reduce dependency on boost.thread, only remaining spot - is synchronization for the C logging API - -API COMPATIBILITY: - - renamed headers, export interface, C API properties and meta data - prevent compatibility with code written for 2.0, but in - most cases these can be easily resolved - - Note: 3.0 is not binary compatible with 2.0 - - - - -2.0 (2010-11-21) - -FEATURES: - - Add support for static Blender (*.blend) scenes - - Add support for Q3BSP scenes - - Add a windows-based OpenGL sample featuring texturing & basic materials - - Add an experimental progress feedback interface. - - Vastly improved performance (up to 500%, depending on mesh size and - spatial structure) in some expensive postprocessing steps - - AssimpView now uses a reworked layout which leaves more space - to the scene hierarchy window - - - Add C# bindings ('Assimp.NET') - - Keep BSD-licensed and otherwise free test files in separate - folders (./test/models and ./test/models-nonbsd). - -FIXES: - - Many Collada bugfixes, improve fault tolerance - - Fix possible crashes in the Obj loader - - Improve the Ogre XML loader - - OpenGL-sample now works with MinGW - - Fix Importer::FindLoader failing on uppercase file extensions - - Fix flawed path handling when locating external files - - Limit the maximum number of vertices, faces, face indices and - weights that Assimp is able to handle. This is to avoid - crashes due to overflowing counters. - - - Updated XCode project files - - Further CMAKE build improvements - - -API CHANGES: - - Add data structures for vertex-based animations (These are not - currently used, however ...) - - Some Assimp::Importer methods are const now. - - - - - -1.1 (2010-04-17) -This is the list of relevant changes from the 1.0 (r412) release to 1.1 (r700). - -FEATURES: - - Vastly improved Collada support - - Add MS3D (Milkshape 3D) support - - Add support for Ogre XML static meshes - - Add experimental COB (TrueSpace) support - - Automatic test suite to quickly locate regressions - - D bindings (`dAssimp`) - - Python 2.n bindings (`PyAssimp`) - - Add basic support for Unicode input files (utf8, utf16 and utf32) - - Add further utilities to the `assimp` tool (xml/binary dumps, quick file stats) - - Switch to a CMAKE-based build system including an install target for unix'es - - Automatic evaluation of subdivision surfaces for some formats. - - Add `Importer::ReadFileFromMemory` and the corresponding C-API `aiReadFileFromMemory` - - Expose further math utilities via the C-API (i.e. `aiMultiplyMatrix4`) - - - Move noboost files away from the public include directory - - Many, many bugfixes and improvements in existing loaders and postprocessing steps - - Documentation improved and clarified in many places. - - Add a sample on using Assimp in conjunction with OpenGL - - - Distribution/packaging: comfortable SDK installer for Windows - - Distribution/packaging: improved release packages for other architectures - -CRITICAL FIXES: - - Resolve problems with clashing heap managers, STL ABIs and runtime libraries (win32) - - Fix automatic detection of file type if no file extension is given - - Improved exception safety and robustness, prevent leaking of exceptions through the C interface - - Fix possible heap corruption due to material properties pulled in incorrectly - - Avoid leaking in certain error scenarios - - Fix 64 bit compatibility problems in some loaders (i.e. MDL) - -BREAKING API CHANGES: - - None - - -MINOR API BEHAVIOUR CHANGES: - - Change quaternion orientation to suit to the more common convention (-w). - - aiString is utf8 now. Not yet consistent, however. +---------------------------------------------------------------------- +CHANGELOG +---------------------------------------------------------------------- + +3.3.1 (2016-07-08) + +FIXES/HOUSEKEEPING: + - Setup of default precision for 17 exporters + - Fix xcode project files + - Fix BlenderTesselator: offsetof operator + - Invalid version in cmake file + - Update pstdint.h to latest greatest + + +3.3.0 (2016-07-05) + +FEATURES: + - C++11 support enabled + - New regression-test-UI + - Experimental glTF-importer support + - OpenGEX: add support for cameras and lights + - C4D: update to latest Melange-SDK + - Add a gitter channel + - Coverity check enabled + - Switch to <...> include brackets for public headers + - Enable export by pyAssimp + - CI: check windows build + - Add functionality to perform a singlepost-processing step + - many more, just check the history + +FIXES/HOUSEKEEPING: + - Fix of many resource leaks in unittests and main lib + - Fix iOS-buildfor X64 + - Choosing zlib manually for cmake + - many more, just check the history + + +3.2.1 (2016-010-10) + +FEATURES: + - Updated glTF exporter to meet 1.0 specification. + +FIXES/HOUSEKEEPING: + - Fixed glTF Validator errors for exported glTF format. + +ISSUES: + - Hard coded sampler setting for + - magFilter + - minFilter + - void* in ExportData for accessor max and min. + + +3.2.0 (2015-11-03) + +FEATURES: + - OpenDDL-Parser is part of contrib-source. + - Experimental OpenGEX-support + - CI-check for linux and windows + - Coverity check added + - New regression testsuite. + +FIXES/HOUSEKEEPING: + - Hundreds of bugfixes in all parts of the library + - Unified line endings + + +API COMPATIBILITY: + - Removed precompiled header to increase build speed for linux + + +3.1.1 (2014-06-15) + +FEATURES: + - Support for FBX 2013 and newer, binary and ASCII (this is partly + work from Google Summer of Code 2012) + - Support for OGRE binary mesh and skeleton format + - Updated BLEND support for newer Blender versions + - Support for arbitrary meta data, used to hold FBX and DAE metadata + - OBJ Export now produces smaller files + - Meshes can now have names, this is supported by the major importers + - Improved IFC geometry generation + - M3 support has been removed + +FIXES/HOUSEKEEPING: + - Hundreds of bugfixes in all parts of the library + - CMake is now the primary build system + +API COMPATIBILITY: + - 3.1.1 is not binary compatible to 3.0 due to aiNode::mMetaData + and aiMesh::mName + - Export interface has been cleaned up and unified + - Other than that no relevant changes + + +3.0 (2012-07-07) + +FEATURES: + - new export interface similar to the import API. + - Supported export formats: Collada, OBJ, PLY and STL + - added new import formats: XGL/ZGL, M3 (experimental) + - new postprocessing steps: Debone + - vastly improved IFC (Industry Foundation Classes) support + - introduced API to query importer meta information (such as supported + format versions, full name, maintainer info). + - reworked Ogre XML import + - C-API now supports per-import properties + +FIXES/HOUSEKEEPING: + + - hundreds of bugfixes in all parts of the library + - unified naming and cleanup of public headers + - improved CMake build system + - templatized math library + - reduce dependency on boost.thread, only remaining spot + is synchronization for the C logging API + +API COMPATIBILITY: + - renamed headers, export interface, C API properties and meta data + prevent compatibility with code written for 2.0, but in + most cases these can be easily resolved + - Note: 3.0 is not binary compatible with 2.0 + + + + +2.0 (2010-11-21) + +FEATURES: + - Add support for static Blender (*.blend) scenes + - Add support for Q3BSP scenes + - Add a windows-based OpenGL sample featuring texturing & basic materials + - Add an experimental progress feedback interface. + - Vastly improved performance (up to 500%, depending on mesh size and + spatial structure) in some expensive postprocessing steps + - AssimpView now uses a reworked layout which leaves more space + to the scene hierarchy window + + - Add C# bindings ('Assimp.NET') + - Keep BSD-licensed and otherwise free test files in separate + folders (./test/models and ./test/models-nonbsd). + +FIXES: + - Many Collada bugfixes, improve fault tolerance + - Fix possible crashes in the Obj loader + - Improve the Ogre XML loader + - OpenGL-sample now works with MinGW + - Fix Importer::FindLoader failing on uppercase file extensions + - Fix flawed path handling when locating external files + - Limit the maximum number of vertices, faces, face indices and + weights that Assimp is able to handle. This is to avoid + crashes due to overflowing counters. + + - Updated XCode project files + - Further CMAKE build improvements + + +API CHANGES: + - Add data structures for vertex-based animations (These are not + currently used, however ...) + - Some Assimp::Importer methods are const now. + + + + + +1.1 (2010-04-17) +This is the list of relevant changes from the 1.0 (r412) release to 1.1 (r700). + +FEATURES: + - Vastly improved Collada support + - Add MS3D (Milkshape 3D) support + - Add support for Ogre XML static meshes + - Add experimental COB (TrueSpace) support + - Automatic test suite to quickly locate regressions + - D bindings (`dAssimp`) + - Python 2.n bindings (`PyAssimp`) + - Add basic support for Unicode input files (utf8, utf16 and utf32) + - Add further utilities to the `assimp` tool (xml/binary dumps, quick file stats) + - Switch to a CMAKE-based build system including an install target for unix'es + - Automatic evaluation of subdivision surfaces for some formats. + - Add `Importer::ReadFileFromMemory` and the corresponding C-API `aiReadFileFromMemory` + - Expose further math utilities via the C-API (i.e. `aiMultiplyMatrix4`) + + - Move noboost files away from the public include directory + - Many, many bugfixes and improvements in existing loaders and postprocessing steps + - Documentation improved and clarified in many places. + - Add a sample on using Assimp in conjunction with OpenGL + + - Distribution/packaging: comfortable SDK installer for Windows + - Distribution/packaging: improved release packages for other architectures + +CRITICAL FIXES: + - Resolve problems with clashing heap managers, STL ABIs and runtime libraries (win32) + - Fix automatic detection of file type if no file extension is given + - Improved exception safety and robustness, prevent leaking of exceptions through the C interface + - Fix possible heap corruption due to material properties pulled in incorrectly + - Avoid leaking in certain error scenarios + - Fix 64 bit compatibility problems in some loaders (i.e. MDL) + +BREAKING API CHANGES: + - None - + +MINOR API BEHAVIOUR CHANGES: + - Change quaternion orientation to suit to the more common convention (-w). + - aiString is utf8 now. Not yet consistent, however. diff --git a/CMakeLists.txt b/CMakeLists.txt index cd6838dc6..99f799c74 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -168,14 +168,15 @@ IF((CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) AND NOT CMAKE_COMPILER_ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") ENDIF() # hide all not-exported symbols - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -Wall -std=c++0x" ) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fvisibility=hidden -Wall -std=c++0x" ) ELSEIF(MSVC) # enable multi-core compilation with MSVC add_compile_options(/MP) ELSEIF ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" ) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -Wall -Wno-long-long -pedantic -std=c++11" ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fvisibility=hidden -Wall -Wno-long-long -pedantic -std=c++11" ) ELSEIF( CMAKE_COMPILER_IS_MINGW ) - SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -Wall -Wno-long-long -pedantic -std=c++11" ) + SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -Wall -Wno-long-long -pedantic -std=c++11" ) + add_definitions( -U__STRICT_ANSI__ ) ENDIF() if (ASSIMP_COVERALLS) @@ -184,9 +185,9 @@ if (ASSIMP_COVERALLS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage") endif() -INCLUDE (FindPkgConfig) INCLUDE_DIRECTORIES( include ) +INCLUDE (FindPkgMacros) INCLUDE (PrecompiledHeader) # If this is an in-source build (CMAKE_SOURCE_DIR == CMAKE_BINARY_DIR), @@ -254,9 +255,7 @@ ENDIF(NOT ZLIB_FOUND) INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) # Search for unzip -IF (PKG_CONFIG_FOUND) - PKG_CHECK_MODULES(UNZIP minizip) -ENDIF (PKG_CONFIG_FOUND) +use_pkgconfig(UNZIP minizip) IF ( ASSIMP_NO_EXPORT ) ADD_DEFINITIONS( -DASSIMP_BUILD_NO_EXPORT) @@ -329,12 +328,12 @@ ENDIF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER) ADD_SUBDIRECTORY( code/ ) IF ( ASSIMP_BUILD_ASSIMP_TOOLS ) - IF ( WIN32 ) + IF ( WIN32 AND DirectX_D3DX9_LIBRARY ) option ( ASSIMP_BUILD_ASSIMP_VIEW "If the Assimp view tool is built. (requires DirectX)" ${DirectX_FOUND} ) IF ( ASSIMP_BUILD_ASSIMP_VIEW ) ADD_SUBDIRECTORY( tools/assimp_view/ ) ENDIF ( ASSIMP_BUILD_ASSIMP_VIEW ) - ENDIF ( WIN32 ) + ENDIF ( WIN32 AND DirectX_D3DX9_LIBRARY ) ADD_SUBDIRECTORY( tools/assimp_cmd/ ) diff --git a/CREDITS b/CREDITS index 1cfe4f640..219079168 100644 --- a/CREDITS +++ b/CREDITS @@ -1,160 +1,160 @@ -=============================================================== -Open Asset Import Library (Assimp) -Developers and Contributors -=============================================================== - -The following is a non-exhaustive list of all constributors over the years. -If you think your name should be listed here, drop us a line and we'll add you. - -- Alexander Gessler, -3DS-, BLEND-, ASE-, DXF-, HMP-, MDL-, MD2-, MD3-, MD5-, MDC-, NFF-, PLY-, STL-, RAW-, OFF-, MS3D-, Q3D- and LWO-Loader, Assimp-Viewer, assimp-cmd, -noboost, Website (Design). - -- Thomas Schulze, -X-, Collada-, BVH-Loader, Postprocessing framework. Data structure & Interface design, documentation. - -- Kim Kulling, -Obj-, Q3BSD-, OpenGEX-Loader, Logging system, CMake-build-environment, Linux-build, Website ( Admin ), Coverity ( Admin ), Glitter ( Admin ). - -- R.Schmidt, -Linux build, eclipse support. - -- Matthias Gubisch, -Assimp.net -Visual Studio 9 support, bugfixes. - -- Mark Sibly -B3D-Loader, Assimp testing - -- Jonathan Klein -Ogre Loader, VC2010 fixes and CMake fixes. - -- Sebastian Hempel, -PyAssimp (first version) -Compile-Bugfixes for mingw, add environment for static library support in make. - -- Jonathan Pokrass -Supplied a bugfix concerning the scaling in the md3 loader. - -- Andrew Galante, -Submitted patches to make Assimp compile with GCC-4, a makefile and the xcode3 workspace. - -- Andreas Nagel -First Assimp testing & verification under Windows Vista 64 Bit. - -- Marius Schr�der -Allowed us to use many of his models for screenshots and testing. - -- Christian Schubert -Supplied various XFiles for testing purposes. - -- Tizian Wieland -Searched the web for hundreds of test models for internal use - -- John Connors -Supplied patches for linux and SCons. - -- T. R. -The GUY who performed some of the CSM mocaps. - -- Andy Maloney -Contributed fixes for the documentation and the doxygen markup - -- Zhao Lei -Contributed several bugfixes fixing memory leaks and improving float parsing - -- sueastside -Updated PyAssimp to the latest Assimp data structures and provided a script to keep the Python binding up-to-date. - -- Tobias Rittig -Collada testing with Cinema 4D - -- Brad Grantham -Improvements in OpenGL-Sample. - -- Robert Ramirez -Add group loading feature to Obj-Loader. - -- Chris Maiwald -Many bugreports, improving Assimp's portability, regular testing & feedback. - -- Stepan Hrbek -Bugreport and fix for a obj-materialloader crash. - -- David Nadlinger -D bindings, CMake install support. - -- Dario Accornero -Contributed several patches regarding Mac OS/XCode targets, bug reports. - -- Martin Walser (Samhayne) -Contributed the 'SimpleTexturedOpenGl' sample. - -- Matthias Fauconneau -Contributed a fix for the Q3-BSP loader. - -- J�rgen P. Tjern� -Contributed updated and improved xcode workspaces - -- drparallax -Contributed the /samples/SimpleAssimpViewX sample - -- Carsten Fuchs -Contributed a fix for the Normalize method in aiQuaternion. - -- dbburgess -Contributes a Android-specific build issue: log the hardware architecture for ARM. - -- alfiereinre7 -Contributes a obj-fileparser fix: missing tokens in the obj-token list. - -- Roman Kharitonov -Contributes a fix for the configure script environment. - -- Ed Diana -Contributed AssimpDelphi (/port/AssimpDelphi). - -- rdb -Contributes a bundle of fixes and improvements for the bsp-importer. - -- Mick P -For contributing the De-bone postprocessing step and filing various bug reports. - -- Rosen Diankov -Contributed patches to build assimp debian packages using cmake. - -- Mark Page -Contributed a patch to fix the VertexTriangleAdjacency postprocessing step. - -- IOhannes -Contributed the Debian build fixes ( architecture macro ). - -- gellule -Several LWO and LWS fixes (pivoting). - -- Marcel Metz -GCC/Linux fixes for the SimpleOpenGL sample. - -- Brian Miller -Bugfix for a compiler fix for iOS on arm. - -- S�verin Lemaignan -Rewrite of PyAssimp, distutils and Python3 support - -- albert-wang -Bugfixes for the collada parser - -- Ya ping Jin -Bugfixes for uv-tanget calculation. - -- Jonne Nauha -Ogre Binary format support - -- Filip Wasil, Tieto Poland Sp. z o.o. -Android JNI asset extraction support - -- Richard Steffen -Contributed ExportProperties interface -Contributed X File exporter -Contributed Step (stp) exporter - - +=============================================================== +Open Asset Import Library (Assimp) +Developers and Contributors +=============================================================== + +The following is a non-exhaustive list of all constributors over the years. +If you think your name should be listed here, drop us a line and we'll add you. + +- Alexander Gessler, +3DS-, BLEND-, ASE-, DXF-, HMP-, MDL-, MD2-, MD3-, MD5-, MDC-, NFF-, PLY-, STL-, RAW-, OFF-, MS3D-, Q3D- and LWO-Loader, Assimp-Viewer, assimp-cmd, -noboost, Website (Design). + +- Thomas Schulze, +X-, Collada-, BVH-Loader, Postprocessing framework. Data structure & Interface design, documentation. + +- Kim Kulling, +Obj-, Q3BSD-, OpenGEX-Loader, Logging system, CMake-build-environment, Linux-build, Website ( Admin ), Coverity ( Admin ), Glitter ( Admin ). + +- R.Schmidt, +Linux build, eclipse support. + +- Matthias Gubisch, +Assimp.net +Visual Studio 9 support, bugfixes. + +- Mark Sibly +B3D-Loader, Assimp testing + +- Jonathan Klein +Ogre Loader, VC2010 fixes and CMake fixes. + +- Sebastian Hempel, +PyAssimp (first version) +Compile-Bugfixes for mingw, add environment for static library support in make. + +- Jonathan Pokrass +Supplied a bugfix concerning the scaling in the md3 loader. + +- Andrew Galante, +Submitted patches to make Assimp compile with GCC-4, a makefile and the xcode3 workspace. + +- Andreas Nagel +First Assimp testing & verification under Windows Vista 64 Bit. + +- Marius Schr�der +Allowed us to use many of his models for screenshots and testing. + +- Christian Schubert +Supplied various XFiles for testing purposes. + +- Tizian Wieland +Searched the web for hundreds of test models for internal use + +- John Connors +Supplied patches for linux and SCons. + +- T. R. +The GUY who performed some of the CSM mocaps. + +- Andy Maloney +Contributed fixes for the documentation and the doxygen markup + +- Zhao Lei +Contributed several bugfixes fixing memory leaks and improving float parsing + +- sueastside +Updated PyAssimp to the latest Assimp data structures and provided a script to keep the Python binding up-to-date. + +- Tobias Rittig +Collada testing with Cinema 4D + +- Brad Grantham +Improvements in OpenGL-Sample. + +- Robert Ramirez +Add group loading feature to Obj-Loader. + +- Chris Maiwald +Many bugreports, improving Assimp's portability, regular testing & feedback. + +- Stepan Hrbek +Bugreport and fix for a obj-materialloader crash. + +- David Nadlinger +D bindings, CMake install support. + +- Dario Accornero +Contributed several patches regarding Mac OS/XCode targets, bug reports. + +- Martin Walser (Samhayne) +Contributed the 'SimpleTexturedOpenGl' sample. + +- Matthias Fauconneau +Contributed a fix for the Q3-BSP loader. + +- Jørgen P. Tjernø +Contributed updated and improved xcode workspaces + +- drparallax +Contributed the /samples/SimpleAssimpViewX sample + +- Carsten Fuchs +Contributed a fix for the Normalize method in aiQuaternion. + +- dbburgess +Contributes a Android-specific build issue: log the hardware architecture for ARM. + +- alfiereinre7 +Contributes a obj-fileparser fix: missing tokens in the obj-token list. + +- Roman Kharitonov +Contributes a fix for the configure script environment. + +- Ed Diana +Contributed AssimpDelphi (/port/AssimpDelphi). + +- rdb +Contributes a bundle of fixes and improvements for the bsp-importer. + +- Mick P +For contributing the De-bone postprocessing step and filing various bug reports. + +- Rosen Diankov +Contributed patches to build assimp debian packages using cmake. + +- Mark Page +Contributed a patch to fix the VertexTriangleAdjacency postprocessing step. + +- IOhannes +Contributed the Debian build fixes ( architecture macro ). + +- gellule +Several LWO and LWS fixes (pivoting). + +- Marcel Metz +GCC/Linux fixes for the SimpleOpenGL sample. + +- Brian Miller +Bugfix for a compiler fix for iOS on arm. + +- Séverin Lemaignan +Rewrite of PyAssimp, distutils and Python3 support + +- albert-wang +Bugfixes for the collada parser + +- Ya ping Jin +Bugfixes for uv-tanget calculation. + +- Jonne Nauha +Ogre Binary format support + +- Filip Wasil, Tieto Poland Sp. z o.o. +Android JNI asset extraction support + +- Richard Steffen +Contributed ExportProperties interface +Contributed X File exporter +Contributed Step (stp) exporter + + diff --git a/LICENSE b/LICENSE index c8e47b34a..262606aff 100644 --- a/LICENSE +++ b/LICENSE @@ -1,78 +1,78 @@ -Open Asset Import Library (assimp) - -Copyright (c) 2006-2016, assimp team -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the -following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the assimp team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the assimp team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - -****************************************************************************** - -AN EXCEPTION applies to all files in the ./test/models-nonbsd folder. -These are 3d models for testing purposes, from various free sources -on the internet. They are - unless otherwise stated - copyright of -their respective creators, which may impose additional requirements -on the use of their work. For any of these models, see -.source.txt for more legal information. Contact us if you -are a copyright holder and believe that we credited you inproperly or -if you don't want your files to appear in the repository. - - -****************************************************************************** - -Poly2Tri Copyright (c) 2009-2010, Poly2Tri Contributors -http://code.google.com/p/poly2tri/ - -All rights reserved. -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. -* Neither the name of Poly2Tri nor the names of its contributors may be - used to endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Open Asset Import Library (assimp) + +Copyright (c) 2006-2016, assimp team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +****************************************************************************** + +AN EXCEPTION applies to all files in the ./test/models-nonbsd folder. +These are 3d models for testing purposes, from various free sources +on the internet. They are - unless otherwise stated - copyright of +their respective creators, which may impose additional requirements +on the use of their work. For any of these models, see +.source.txt for more legal information. Contact us if you +are a copyright holder and believe that we credited you inproperly or +if you don't want your files to appear in the repository. + + +****************************************************************************** + +Poly2Tri Copyright (c) 2009-2010, Poly2Tri Contributors +http://code.google.com/p/poly2tri/ + +All rights reserved. +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +* Neither the name of Poly2Tri nor the names of its contributors may be + used to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Readme.md b/Readme.md index 977bf4601..5d4214d89 100644 --- a/Readme.md +++ b/Readme.md @@ -1,140 +1,148 @@ -Open Asset Import Library (assimp) -================================== - -APIs are provided for C and C++. There are various bindings to other languages (C#, Java, Python, Delphi, D). Assimp also runs on Android and iOS. - -Additionally, assimp features various __mesh post processing tools__: normals and tangent space generation, triangulation, vertex cache locality optimization, removal of degenerate primitives and duplicate vertices, sorting by primitive type, merging of redundant materials and many more. - -This is the development trunk containing the latest features and bugfixes. For productive use though, we recommend one of the stable releases available from [assimp.sf.net](http://assimp.sf.net) or from *nix package repositories. -The current build status is: - -Linux [![Linux Build Status](https://travis-ci.org/assimp/assimp.png)](https://travis-ci.org/assimp/assimp) -Windows [![Windows Build Status](https://ci.appveyor.com/api/projects/status/tmo433wax6u6cjp4?svg=true)](https://ci.appveyor.com/project/kimkulling/assimp) -Coverity - Coverity Scan Build Status - -
-Code coverage:[![Coverage Status](https://coveralls.io/repos/github/assimp/assimp/badge.svg?branch=master)](https://coveralls.io/github/assimp/assimp?branch=master) -
-Gitter chat: [![Join the chat at https://gitter.im/assimp/assimp](https://badges.gitter.im/assimp/assimp.svg)](https://gitter.im/assimp/assimp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-__[open3mod](https://github.com/acgessler/open3mod) is a powerful 3D model viewer based on Assimp's import and export abilities.__ - -#### Supported file formats #### - -A full list [is here](http://assimp.sourceforge.net/main_features_formats.html). -__Importers__: - -- 3DS -- BLEND (Blender) -- DAE/Collada -- FBX -- IFC-STEP -- ASE -- DXF -- HMP -- MD2 -- MD3 -- MD5 -- MDC -- MDL -- NFF -- PLY -- STL -- X -- OBJ -- OpenGEX -- SMD -- LWO -- LXO -- LWS -- TER -- AC3D -- MS3D -- COB -- Q3BSP -- XGL -- CSM -- BVH -- B3D -- NDO -- Ogre Binary -- Ogre XML -- Q3D -- ASSBIN (Assimp custom format) -- glTF (partial) -- 3MF - -Additionally, some formats are supported by dependency on non-free code or external SDKs (not built by default): - -- C4D (https://github.com/acgessler/assimp-cinema4d) - -__Exporters__: - -- DAE (Collada) -- STL -- OBJ -- PLY -- X -- 3DS -- JSON (for WebGl, via https://github.com/acgessler/assimp2json) -- ASSBIN -- STEP -- glTF (partial) - -### Building ### -Take a look into the `INSTALL` file. Our build system is CMake, if you used CMake before there is a good chance you know what to do. - -### Ports ### -* [Android](port/AndroidJNI/README.md) -* [Python](port/PyAssimp/README.md) -* [.NET](port/AssimpNET/Readme.md) -* [Pascal](port/AssimpPascal/Readme.md) - -#### Repository structure #### -Open Asset Import Library is implemented in C++. The directory structure is: - - /code Source code - /contrib Third-party libraries - /doc Documentation (doxysource and pre-compiled docs) - /include Public header C and C++ header files - /scripts Scripts used to generate the loading code for some formats - /port Ports to other languages and scripts to maintain those. - /test Unit- and regression tests, test suite of models - /tools Tools (old assimp viewer, command line `assimp`) - /samples A small number of samples to illustrate possible - use cases for Assimp - /workspaces Build environments for vc,xcode,... (deprecated, - CMake has superseeded all legacy build options!) - - -### Where to get help ### -For more information, visit [our website](http://assimp.sourceforge.net/). Or check out the `./doc`- folder, which contains the official documentation in HTML format. -(CHMs for Windows are included in some release packages and should be located right here in the root folder). - -If the docs don't solve your problem, ask on [StackOverflow](http://stackoverflow.com/questions/tagged/assimp?sort=newest). If you think you found a bug, please open an issue on Github. - -For development discussions, there is also a (very low-volume) mailing list, _assimp-discussions_ - [(subscribe here)]( https://lists.sourceforge.net/lists/listinfo/assimp-discussions) - -Open Asset Import Library is a library to load various 3d file formats into a shared, in-memory format. It supports more than __40 file formats__ for import and a growing selection of file formats for export. - -And we also have a Gitter-channel:Gitter [![Join the chat at https://gitter.im/assimp/assimp](https://badges.gitter.im/assimp/assimp.svg)](https://gitter.im/assimp/assimp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
- -### Contributing ### -Contributions to assimp are highly appreciated. The easiest way to get involved is to submit -a pull request with your changes against the main repository's `master` branch. - -### Donate ### -If you like assimp, consider buying us a beer (or two): -[Donate](http://sourceforge.net/donate/index.php?group_id=226462) - -### License ### -Our license is based on the modified, __3-clause BSD__-License. - -An _informal_ summary is: do whatever you want, but include Assimp's license text with your product - -and don't sue us if our code doesn't work. Note that, unlike LGPLed code, you may link statically to Assimp. -For the legal details, see the `LICENSE` file. - -### Why this name ### -Sorry, we're germans :-), no english native speakers ... +Open Asset Import Library (assimp) +================================== + +[![Linux Build Status](https://travis-ci.org/assimp/assimp.svg)](https://travis-ci.org/assimp/assimp) +[![Windows Build Status](https://ci.appveyor.com/api/projects/status/tmo433wax6u6cjp4?svg=true)](https://ci.appveyor.com/project/kimkulling/assimp) + + Coverity Scan Build Status + +[![Coverage Status](https://coveralls.io/repos/github/assimp/assimp/badge.svg?branch=master)](https://coveralls.io/github/assimp/assimp?branch=master) +
+ +APIs are provided for C and C++. There are various bindings to other languages (C#, Java, Python, Delphi, D). Assimp also runs on Android and iOS. + +Additionally, assimp features various __mesh post processing tools__: normals and tangent space generation, triangulation, vertex cache locality optimization, removal of degenerate primitives and duplicate vertices, sorting by primitive type, merging of redundant materials and many more. + +This is the development trunk containing the latest features and bugfixes. For productive use though, we recommend one of the stable releases available from [assimp.sf.net](http://assimp.sf.net) or from *nix package repositories. +The current build status is: + +Gitter chat: [![Join the chat at https://gitter.im/assimp/assimp](https://badges.gitter.im/assimp/assimp.svg)](https://gitter.im/assimp/assimp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+ +And we also have an IRC-channel at freenode: #assetimporterlib . You can easily join us via: [KiwiIRC/freenote](https://kiwiirc.com/client/irc.freenode.net), choose your nickname and type +> /join #assetimporterlib + +
+__[open3mod](https://github.com/acgessler/open3mod) is a powerful 3D model viewer based on Assimp's import and export abilities.__ + +Please check our Wiki as well: https://github.com/assimp/assimp/wiki + +#### Supported file formats #### + +A full list [is here](http://assimp.org/main_features_formats.html). +__Importers__: + +- 3DS +- BLEND (Blender) +- DAE/Collada +- FBX +- IFC-STEP +- ASE +- DXF +- HMP +- MD2 +- MD3 +- MD5 +- MDC +- MDL +- NFF +- PLY +- STL +- X +- OBJ +- OpenGEX +- SMD +- LWO +- LXO +- LWS +- TER +- AC3D +- MS3D +- COB +- Q3BSP +- XGL +- CSM +- BVH +- B3D +- NDO +- Ogre Binary +- Ogre XML +- Q3D +- ASSBIN (Assimp custom format) +- glTF (partial) +- 3MF + +Additionally, some formats are supported by dependency on non-free code or external SDKs (not built by default): + +- C4D (https://github.com/acgessler/assimp-cinema4d) + +__Exporters__: + +- DAE (Collada) +- STL +- OBJ +- PLY +- X +- 3DS +- JSON (for WebGl, via https://github.com/acgessler/assimp2json) +- ASSBIN +- STEP +- glTF (partial) + +### Building ### +Take a look into the `INSTALL` file. Our build system is CMake, if you used CMake before there is a good chance you know what to do. + +### Ports ### +* [Android](port/AndroidJNI/README.md) +* [Python](port/PyAssimp/README.md) +* [.NET](port/AssimpNET/Readme.md) +* [Pascal](port/AssimpPascal/Readme.md) +* [Javascript (Alpha)](https://github.com/makc/assimp2json) + +#### Repository structure #### +Open Asset Import Library is implemented in C++. The directory structure is: + + /code Source code + /contrib Third-party libraries + /doc Documentation (doxysource and pre-compiled docs) + /include Public header C and C++ header files + /scripts Scripts used to generate the loading code for some formats + /port Ports to other languages and scripts to maintain those. + /test Unit- and regression tests, test suite of models + /tools Tools (old assimp viewer, command line `assimp`) + /samples A small number of samples to illustrate possible + use cases for Assimp + /workspaces Build environments for vc,xcode,... (deprecated, + CMake has superseeded all legacy build options!) + + +### Where to get help ### +For more information, visit [our website](http://assimp.org/). Or check out the `./doc`- folder, which contains the official documentation in HTML format. +(CHMs for Windows are included in some release packages and should be located right here in the root folder). + +If the docs don't solve your problem, ask on [StackOverflow](http://stackoverflow.com/questions/tagged/assimp?sort=newest). If you think you found a bug, please open an issue on Github. + +For development discussions, there is also a (very low-volume) mailing list, _assimp-discussions_ + [(subscribe here)]( https://lists.sourceforge.net/lists/listinfo/assimp-discussions) + +Open Asset Import Library is a library to load various 3d file formats into a shared, in-memory format. It supports more than __40 file formats__ for import and a growing selection of file formats for export. + +And we also have a Gitter-channel:Gitter [![Join the chat at https://gitter.im/assimp/assimp](https://badges.gitter.im/assimp/assimp.svg)](https://gitter.im/assimp/assimp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+ +### Contributing ### +Contributions to assimp are highly appreciated. The easiest way to get involved is to submit +a pull request with your changes against the main repository's `master` branch. + +### Donate ### +If you like assimp, consider buying us a beer (or two): +[Donate](http://sourceforge.net/donate/index.php?group_id=226462) + +### License ### +Our license is based on the modified, __3-clause BSD__-License. + +An _informal_ summary is: do whatever you want, but include Assimp's license text with your product - +and don't sue us if our code doesn't work. Note that, unlike LGPLed code, you may link statically to Assimp. +For the legal details, see the `LICENSE` file. + +### Why this name ### +Sorry, we're germans :-), no english native speakers ... diff --git a/appveyor.yml b/appveyor.yml index 59929cc33..991cf5bc1 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -27,7 +27,7 @@ install: # Make compiler command line tools available - call c:\projects\assimp\scripts\appveyor\compiler_setup.bat -build_script: +build_script: - cd c:\projects\assimp - if "%platform%" equ "x64" (cmake CMakeLists.txt -G "Visual Studio %Configuration% Win64") - if "%platform%" equ "x86" (cmake CMakeLists.txt -G "Visual Studio %Configuration%") @@ -40,4 +40,3 @@ after_build: artifacts: - path: assimp.7z name: assimp_lib - diff --git a/cmake-modules/FindPkgMacros.cmake b/cmake-modules/FindPkgMacros.cmake index e67d8dc62..074cce352 100644 --- a/cmake-modules/FindPkgMacros.cmake +++ b/cmake-modules/FindPkgMacros.cmake @@ -59,10 +59,13 @@ endmacro(clear_if_changed) # Try to get some hints from pkg-config, if available macro(use_pkgconfig PREFIX PKGNAME) - find_package(PkgConfig) - if (PKG_CONFIG_FOUND) - pkg_check_modules(${PREFIX} ${PKGNAME}) - endif () + # Android does not support PKG_CONFIG so we disable it + IF ( NOT ANDROID ) + find_package(PkgConfig) + if (PKG_CONFIG_FOUND) + pkg_check_modules(${PREFIX} ${PKGNAME}) + endif () + ENDIF ( NOT ANDROID ) endmacro (use_pkgconfig) # Couple a set of release AND debug libraries (or frameworks) diff --git a/cmake-modules/FindZLIB.cmake b/cmake-modules/FindZLIB.cmake index f6806b4ee..95eb51547 100644 --- a/cmake-modules/FindZLIB.cmake +++ b/cmake-modules/FindZLIB.cmake @@ -11,7 +11,7 @@ # Once done, this will define # # ZLIB_FOUND - system has ZLIB -# ZLIB_INCLUDE_DIRS - the ZLIB include directories +# ZLIB_INCLUDE_DIRS - the ZLIB include directories # ZLIB_LIBRARIES - link these to use ZLIB include(FindPkgMacros) diff --git a/code/3DSConverter.cpp b/code/3DSConverter.cpp index 619360524..8390dd216 100644 --- a/code/3DSConverter.cpp +++ b/code/3DSConverter.cpp @@ -690,7 +690,7 @@ void Discreet3DSImporter::AddNodeToGraph(aiScene* pcSOut,aiNode* pcOut, pcOut->mChildren = new aiNode*[pcIn->mChildren.size()]; // Recursively process all children - const unsigned int size = pcIn->mChildren.size(); + const unsigned int size = static_cast(pcIn->mChildren.size()); for (unsigned int i = 0; i < size;++i) { pcOut->mChildren[i] = new aiNode(); @@ -742,7 +742,7 @@ void Discreet3DSImporter::GenerateNodeGraph(aiScene* pcOut) DefaultLogger::get()->warn("No hierarchy information has been found in the file. "); pcOut->mRootNode->mNumChildren = pcOut->mNumMeshes + - mScene->mCameras.size() + mScene->mLights.size(); + static_cast(mScene->mCameras.size() + mScene->mLights.size()); pcOut->mRootNode->mChildren = new aiNode* [ pcOut->mRootNode->mNumChildren ]; pcOut->mRootNode->mName.Set("<3DSDummyRoot>"); diff --git a/code/3DSExporter.cpp b/code/3DSExporter.cpp index d34901854..1d49a536b 100644 --- a/code/3DSExporter.cpp +++ b/code/3DSExporter.cpp @@ -87,7 +87,7 @@ namespace { const std::size_t chunk_size = head_pos - chunk_start_pos; writer.SetCurrentPos(chunk_start_pos + SIZE_OFFSET); - writer.PutU4(chunk_size); + writer.PutU4(static_cast(chunk_size)); writer.SetCurrentPos(head_pos); } diff --git a/code/3DSExporter.h b/code/3DSExporter.h index 4d9b39d53..8bcce338d 100644 --- a/code/3DSExporter.h +++ b/code/3DSExporter.h @@ -48,7 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "StreamWriter.h" -#include "./../include/assimp/material.h" +#include struct aiScene; struct aiNode; diff --git a/code/3DSHelper.h b/code/3DSHelper.h index 7a2ad3f8a..699767cee 100644 --- a/code/3DSHelper.h +++ b/code/3DSHelper.h @@ -48,10 +48,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "SmoothingGroups.h" #include "StringUtils.h" #include "qnan.h" -#include "./../include/assimp/material.h" -#include "./../include/assimp/camera.h" -#include "./../include/assimp/light.h" -#include "./../include/assimp/anim.h" +#include +#include +#include +#include #include //sprintf namespace Assimp { diff --git a/code/3DSLoader.cpp b/code/3DSLoader.cpp index 0a1fe776b..f0285a899 100644 --- a/code/3DSLoader.cpp +++ b/code/3DSLoader.cpp @@ -54,6 +54,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include "StringComparison.h" using namespace Assimp; @@ -182,7 +183,7 @@ void Discreet3DSImporter::InternReadFile( const std::string& pFile, ParseMainChunk(); // Process all meshes in the file. First check whether all - // face indices haev valid values. The generate our + // face indices have valid values. The generate our // internal verbose representation. Finally compute normal // vectors from the smoothing groups we read from the // file. @@ -679,7 +680,7 @@ void Discreet3DSImporter::ParseHierarchyChunk(uint16_t parent) if ( pcNode) { - // if the source is not a CHUNK_TRACKINFO block it wont be an object instance + // if the source is not a CHUNK_TRACKINFO block it won't be an object instance if (parent != Discreet3DS::CHUNK_TRACKINFO) { mCurrentNode = pcNode; diff --git a/code/ACLoader.cpp b/code/ACLoader.cpp index c040d6bbd..bca24e948 100644 --- a/code/ACLoader.cpp +++ b/code/ACLoader.cpp @@ -60,6 +60,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include using namespace Assimp; diff --git a/code/AMFImporter.cpp b/code/AMFImporter.cpp index d68e01904..0ebfcbcc4 100644 --- a/code/AMFImporter.cpp +++ b/code/AMFImporter.cpp @@ -51,11 +51,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "AMFImporter_Macro.hpp" #include "fast_atof.h" -#include "DefaultIOSystem.h" +#include // Header files, stdlib. #include -#include namespace Assimp { @@ -188,15 +187,15 @@ void AMFImporter::XML_CheckNode_MustHaveChildren() void AMFImporter::XML_CheckNode_SkipUnsupported(const std::string& pParentNodeName) { -const size_t Uns_Skip_Len = 3; -const char* Uns_Skip[Uns_Skip_Len] = { "composite", "edge", "normal" }; + static const size_t Uns_Skip_Len = 3; + const char* Uns_Skip[Uns_Skip_Len] = { "composite", "edge", "normal" }; -static bool skipped_before[Uns_Skip_Len] = { false, false, false }; + static bool skipped_before[Uns_Skip_Len] = { false, false, false }; -std::string nn(mReader->getNodeName()); -bool found = false; -bool close_found = false; -size_t sk_idx; + std::string nn(mReader->getNodeName()); + bool found = false; + bool close_found = false; + size_t sk_idx; for(sk_idx = 0; sk_idx < Uns_Skip_Len; sk_idx++) { @@ -245,7 +244,7 @@ bool AMFImporter::XML_SearchNode(const std::string& pNodeName) bool AMFImporter::XML_ReadNode_GetAttrVal_AsBool(const int pAttrIdx) { -std::string val(mReader->getAttributeValue(pAttrIdx)); + std::string val(mReader->getAttributeValue(pAttrIdx)); if((val == "false") || (val == "0")) return false; @@ -257,8 +256,8 @@ std::string val(mReader->getAttributeValue(pAttrIdx)); float AMFImporter::XML_ReadNode_GetAttrVal_AsFloat(const int pAttrIdx) { -std::string val; -float tvalf; + std::string val; + float tvalf; ParseHelper_FixTruncatedFloatString(mReader->getAttributeValue(pAttrIdx), val); fast_atoreal_move(val.c_str(), tvalf, false); @@ -273,8 +272,8 @@ uint32_t AMFImporter::XML_ReadNode_GetAttrVal_AsU32(const int pAttrIdx) float AMFImporter::XML_ReadNode_GetVal_AsFloat() { -std::string val; -float tvalf; + std::string val; + float tvalf; if(!mReader->read()) throw DeadlyImportError("XML_ReadNode_GetVal_AsFloat. No data, seems file is corrupt."); if(mReader->getNodeType() != irr::io::EXN_TEXT) throw DeadlyImportError("XML_ReadNode_GetVal_AsFloat. Invalid type of XML element, seems file is corrupt."); @@ -320,7 +319,7 @@ void AMFImporter::ParseHelper_Node_Exit() void AMFImporter::ParseHelper_FixTruncatedFloatString(const char* pInStr, std::string& pOutString) { -size_t instr_len; + size_t instr_len; pOutString.clear(); instr_len = strlen(pInStr); @@ -352,12 +351,12 @@ static bool ParseHelper_Decode_Base64_IsBase64(const char pChar) void AMFImporter::ParseHelper_Decode_Base64(const std::string& pInputBase64, std::vector& pOutputData) const { -// With help from -// RenИ Nyffenegger http://www.adp-gmbh.ch/cpp/common/base64.html -const std::string base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + // With help from + // René Nyffenegger http://www.adp-gmbh.ch/cpp/common/base64.html + const std::string base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -uint8_t tidx = 0; -uint8_t arr4[4], arr3[3]; + uint8_t tidx = 0; + uint8_t arr4[4], arr3[3]; // check input data if(pInputBase64.size() % 4) throw DeadlyImportError("Base64-encoded data must have size multiply of four."); @@ -402,8 +401,8 @@ uint8_t arr4[4], arr3[3]; void AMFImporter::ParseFile(const std::string& pFile, IOSystem* pIOHandler) { -irr::io::IrrXMLReader* OldReader = mReader;// store current XMLreader. -std::unique_ptr file(pIOHandler->Open(pFile, "rb")); + irr::io::IrrXMLReader* OldReader = mReader;// store current XMLreader. + std::unique_ptr file(pIOHandler->Open(pFile, "rb")); // Check whether we can read from the file if(file.get() == NULL) throw DeadlyImportError("Failed to open AMF file " + pFile + "."); @@ -434,8 +433,8 @@ std::unique_ptr file(pIOHandler->Open(pFile, "rb")); // Multi elements - No. void AMFImporter::ParseNode_Root() { -std::string unit, version; -CAMFImporter_NodeElement* ne; + std::string unit, version; + CAMFImporter_NodeElement *ne( nullptr ); // Read attributes for node . MACRO_ATTRREAD_LOOPBEG; @@ -481,8 +480,8 @@ CAMFImporter_NodeElement* ne; // Parent element - . void AMFImporter::ParseNode_Constellation() { -std::string id; -CAMFImporter_NodeElement* ne; + std::string id; + CAMFImporter_NodeElement* ne( nullptr ); // Read attributes for node . MACRO_ATTRREAD_LOOPBEG; @@ -522,8 +521,8 @@ CAMFImporter_NodeElement* ne; // Parent element - . void AMFImporter::ParseNode_Instance() { -std::string objectid; -CAMFImporter_NodeElement* ne; + std::string objectid; + CAMFImporter_NodeElement* ne( nullptr ); // Read attributes for node . MACRO_ATTRREAD_LOOPBEG; @@ -577,8 +576,8 @@ CAMFImporter_NodeElement* ne; // Parent element - . void AMFImporter::ParseNode_Object() { -std::string id; -CAMFImporter_NodeElement* ne; + std::string id; + CAMFImporter_NodeElement* ne( nullptr ); // Read attributes for node . MACRO_ATTRREAD_LOOPBEG; @@ -642,8 +641,8 @@ CAMFImporter_NodeElement* ne; // "Volume" - specifies the total volume of the entity, in the entity's unit system, to be used for verification (object and volume only) void AMFImporter::ParseNode_Metadata() { -std::string type, value; -CAMFImporter_NodeElement* ne; + std::string type, value; + CAMFImporter_NodeElement* ne( nullptr ); // read attribute MACRO_ATTRREAD_LOOPBEG; @@ -665,15 +664,17 @@ CAMFImporter_NodeElement* ne; bool AMFImporter::CanRead(const std::string& pFile, IOSystem* pIOHandler, bool pCheckSig) const { -const std::string extension = GetExtension(pFile); + const std::string extension = GetExtension(pFile); - if(extension == "amf") return true; + if ( extension == "amf" ) { + return true; + } if(!extension.length() || pCheckSig) { - const char* tokens[] = { " +#include #include "assimp/types.h" #include "BaseImporter.h" #include "irrXMLWrapper.h" @@ -135,18 +134,18 @@ private: }; /// \struct SPP_Texture - /// Data type for postprocessing step. More suitable container for texture. + /// Data type for post-processing step. More suitable container for texture. struct SPP_Texture { std::string ID; - size_t Width, Height, Depth; - bool Tiled; - decltype(aiTexture::achFormatHint) FormatHint; - uint8_t* Data; + size_t Width, Height, Depth; + bool Tiled; + char FormatHint[ 9 ];// 8 for string + 1 for terminator. + uint8_t *Data; }; /// \struct SComplexFace - /// Data type for postprocessing step. Contain face data. + /// Data type for post-processing step. Contain face data. struct SComplexFace { aiFace Face;///< Face vertices. diff --git a/code/AMFImporter_Postprocess.cpp b/code/AMFImporter_Postprocess.cpp index 3cd6d77a4..6f82d5367 100644 --- a/code/AMFImporter_Postprocess.cpp +++ b/code/AMFImporter_Postprocess.cpp @@ -54,7 +54,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "StringUtils.h" // Header files, stdlib. -#include #include namespace Assimp @@ -62,7 +61,7 @@ namespace Assimp aiColor4D AMFImporter::SPP_Material::GetColor(const float pX, const float pY, const float pZ) const { -aiColor4D tcol; + aiColor4D tcol; // Check if stored data are supported. if(Composition.size() != 0) @@ -93,8 +92,8 @@ aiColor4D tcol; void AMFImporter::PostprocessHelper_CreateMeshDataArray(const CAMFImporter_NodeElement_Mesh& pNodeElement, std::vector& pVertexCoordinateArray, std::vector& pVertexColorArray) const { -CAMFImporter_NodeElement_Vertices* vn = nullptr; -size_t col_idx; + CAMFImporter_NodeElement_Vertices* vn = nullptr; + size_t col_idx; // All data stored in "vertices", search for it. for(CAMFImporter_NodeElement* ne_child: pNodeElement.Child) @@ -142,8 +141,8 @@ size_t col_idx; size_t AMFImporter::PostprocessHelper_GetTextureID_Or_Create(const std::string& pID_R, const std::string& pID_G, const std::string& pID_B, const std::string& pID_A) { -size_t TextureConverted_Index; -std::string TextureConverted_ID; + size_t TextureConverted_Index; + std::string TextureConverted_ID; // check input data if(pID_R.empty() && pID_G.empty() && pID_B.empty() && pID_A.empty()) @@ -261,11 +260,20 @@ std::string TextureConverted_ID; size_t off_b = 0; // Calculate size of the target array and rule how data will be copied. - if(!pID_R.empty()) { tex_size += src_texture[0]->Data.size(); step++, off_g++, off_b++; } - if(!pID_G.empty()) { tex_size += src_texture[1]->Data.size(); step++, off_b++; } - if(!pID_B.empty()) { tex_size += src_texture[2]->Data.size(); step++; } - if(!pID_A.empty()) { tex_size += src_texture[3]->Data.size(); step++; } - + if ( nullptr != src_texture ) { + if(!pID_R.empty()) { + tex_size += src_texture[0]->Data.size(); step++, off_g++, off_b++; + } + if(!pID_G.empty()) { + tex_size += src_texture[1]->Data.size(); step++, off_b++; + } + if(!pID_B.empty()) { + tex_size += src_texture[2]->Data.size(); step++; + } + if(!pID_A.empty()) { + tex_size += src_texture[3]->Data.size(); step++; + } + } // Create target array. converted_texture.Data = new uint8_t[tex_size]; // And copy data @@ -293,19 +301,19 @@ std::string TextureConverted_ID; void AMFImporter::PostprocessHelper_SplitFacesByTextureID(std::list& pInputList, std::list >& pOutputList_Separated) { -auto texmap_is_equal = [](const CAMFImporter_NodeElement_TexMap* pTexMap1, const CAMFImporter_NodeElement_TexMap* pTexMap2) -> bool -{ - if((pTexMap1 == nullptr) && (pTexMap2 == nullptr)) return true; - if(pTexMap1 == nullptr) return false; - if(pTexMap2 == nullptr) return false; + auto texmap_is_equal = [](const CAMFImporter_NodeElement_TexMap* pTexMap1, const CAMFImporter_NodeElement_TexMap* pTexMap2) -> bool + { + if((pTexMap1 == nullptr) && (pTexMap2 == nullptr)) return true; + if(pTexMap1 == nullptr) return false; + if(pTexMap2 == nullptr) return false; - if(pTexMap1->TextureID_R != pTexMap2->TextureID_R) return false; - if(pTexMap1->TextureID_G != pTexMap2->TextureID_G) return false; - if(pTexMap1->TextureID_B != pTexMap2->TextureID_B) return false; - if(pTexMap1->TextureID_A != pTexMap2->TextureID_A) return false; + if(pTexMap1->TextureID_R != pTexMap2->TextureID_R) return false; + if(pTexMap1->TextureID_G != pTexMap2->TextureID_G) return false; + if(pTexMap1->TextureID_B != pTexMap2->TextureID_B) return false; + if(pTexMap1->TextureID_A != pTexMap2->TextureID_A) return false; - return true; -}; + return true; + }; pOutputList_Separated.clear(); if(pInputList.size() == 0) return; @@ -343,12 +351,12 @@ void AMFImporter::Postprocess_AddMetadata(const std::list(metadataList.size()) ); size_t meta_idx( 0 ); for(const CAMFImporter_NodeElement_Metadata& metadata: metadataList) { - sceneNode.mMetaData->Set(meta_idx++, metadata.Type, aiString(metadata.Value)); + sceneNode.mMetaData->Set(static_cast(meta_idx++), metadata.Type, aiString(metadata.Value)); } }// if(!metadataList.empty()) } @@ -437,9 +445,9 @@ std::list mesh_idx; // create new face and store it. complex_face.Face.mNumIndices = 3; complex_face.Face.mIndices = new unsigned int[3]; - complex_face.Face.mIndices[0] = tri_al.V[0]; - complex_face.Face.mIndices[1] = tri_al.V[1]; - complex_face.Face.mIndices[2] = tri_al.V[2]; + complex_face.Face.mIndices[0] = static_cast(tri_al.V[0]); + complex_face.Face.mIndices[1] = static_cast(tri_al.V[1]); + complex_face.Face.mIndices[2] = static_cast(tri_al.V[2]); complex_faces_list.push_back(complex_face); } }// for(const CAMFImporter_NodeElement* ne_volume_child: ne_volume->Child) @@ -508,7 +516,7 @@ std::list mesh_idx; { for(size_t vi = 0; vi < face.Face.mNumIndices; vi++) { - if(face.Face.mIndices[vi] == pIdx_From) face.Face.mIndices[vi] = pIdx_To; + if(face.Face.mIndices[vi] == pIdx_From) face.Face.mIndices[vi] = static_cast(pIdx_To); } } };// auto VertexIndex_Replace = [](std::list& pFaceList, const size_t pIdx_From, const size_t pIdx_To) -> void @@ -563,7 +571,7 @@ std::list mesh_idx; // set geometry and colors (vertices) // // copy faces/triangles - tmesh->mNumFaces = face_list_cur.size(); + tmesh->mNumFaces = static_cast(face_list_cur.size()); tmesh->mFaces = new aiFace[tmesh->mNumFaces]; // Create vertices list and optimize indices. Optimisation mean following.In AMF all volumes use one big list of vertices. And one volume @@ -590,7 +598,7 @@ std::list mesh_idx; do { vert_idx_from = VertexIndex_GetMinimal(face_list_cur, &vert_idx_to); - if(vert_idx_from == vert_idx_to) break;// all indices are transfered, + if(vert_idx_from == vert_idx_to) break;// all indices are transferred, vert_arr.push_back(pVertexCoordinateArray.at(vert_idx_from)); col_arr.push_back(Vertex_CalculateColor(vert_idx_from)); @@ -619,7 +627,7 @@ std::list mesh_idx; { vert_arr.push_back(vert_arr.at(face_cur.Face.mIndices[idx_ind])); col_arr.push_back(face_color); - face_cur.Face.mIndices[idx_ind] = vert_idx_new++; + face_cur.Face.mIndices[idx_ind] = static_cast(vert_idx_new++); } }// if(face_cur.Color != nullptr) }// for(const SComplexFace& face_cur: face_list_cur) @@ -639,10 +647,10 @@ std::list mesh_idx; for(size_t i = 0, i_e = VertexCount_Max * 2; i < i_e; i++) idx_vert_used[i] = false; // This ID's will be used when set materials ID in scene. - tmesh->mMaterialIndex = PostprocessHelper_GetTextureID_Or_Create(face_list_cur.front().TexMap->TextureID_R, + tmesh->mMaterialIndex = static_cast(PostprocessHelper_GetTextureID_Or_Create(face_list_cur.front().TexMap->TextureID_R, face_list_cur.front().TexMap->TextureID_G, face_list_cur.front().TexMap->TextureID_B, - face_list_cur.front().TexMap->TextureID_A); + face_list_cur.front().TexMap->TextureID_A)); texcoord_arr.resize(VertexCount_Max * 2); for(const SComplexFace& face_cur: face_list_cur) { @@ -662,7 +670,7 @@ std::list mesh_idx; vert_arr.push_back(vert_arr.at(idx_vert)); col_arr.push_back(col_arr.at(idx_vert)); texcoord_arr.at(idx_vert_new) = face_cur.TexMap->TextureCoordinate[idx_ind]; - face_cur.Face.mIndices[idx_ind] = idx_vert_new++; + face_cur.Face.mIndices[idx_ind] = static_cast(idx_vert_new++); } }// for(size_t idx_ind = 0; idx_ind < face_cur.Face.mNumIndices; idx_ind++) }// for(const SComplexFace& face_cur: face_list_cur) @@ -675,7 +683,7 @@ std::list mesh_idx; // // copy collected data to mesh // - tmesh->mNumVertices = vert_arr.size(); + tmesh->mNumVertices = static_cast(vert_arr.size()); tmesh->mVertices = new aiVector3D[tmesh->mNumVertices]; tmesh->mColors[0] = new aiColor4D[tmesh->mNumVertices]; tmesh->mFaces = new aiFace[face_list_cur.size()]; @@ -693,7 +701,7 @@ std::list mesh_idx; for(const SComplexFace& face_cur: face_list_cur) tmesh->mFaces[idx_face++] = face_cur.Face; // store new aiMesh - mesh_idx.push_back(pMeshList.size()); + mesh_idx.push_back(static_cast(pMeshList.size())); pMeshList.push_back(tmesh); }// for(const std::list& face_list_cur: complex_faces_toplist) }// if(ne_child->Type == CAMFImporter_NodeElement::ENET_Volume) @@ -704,7 +712,7 @@ std::list mesh_idx; { std::list::const_iterator mit = mesh_idx.begin(); - pSceneNode.mNumMeshes = mesh_idx.size(); + pSceneNode.mNumMeshes = static_cast(mesh_idx.size()); pSceneNode.mMeshes = new unsigned int[pSceneNode.mNumMeshes]; for(size_t i = 0; i < pSceneNode.mNumMeshes; i++) pSceneNode.mMeshes[i] = *mit++; }// if(mesh_idx.size() > 0) @@ -743,7 +751,7 @@ std::list ch_node; // \_ aiNode for transformation ( -> , ) - aiNode for pointing to object ("objectid") con_node = new aiNode; con_node->mName = pConstellation.ID; - // Walk thru children and search for instances of another objects, constellations. + // Walk through children and search for instances of another objects, constellations. for(const CAMFImporter_NodeElement* ne: pConstellation.Child) { aiMatrix4x4 tmat; @@ -779,7 +787,7 @@ std::list ch_node; size_t ch_idx = 0; - con_node->mNumChildren = ch_node.size(); + con_node->mNumChildren = static_cast(ch_node.size()); con_node->mChildren = new aiNode*[con_node->mNumChildren]; for(aiNode* node: ch_node) con_node->mChildren[ch_idx++] = node; @@ -815,7 +823,7 @@ std::list meta_list; // Check if root element are found. if(root_el == nullptr) throw DeadlyImportError("Root() element not found."); - // after that walk thru children of root and collect data. Five types of nodes can be placed at top level - in : , , , + // after that walk through children of root and collect data. Five types of nodes can be placed at top level - in : , , , // and . But at first we must read and because they will be used in . can be read // at any moment. // @@ -870,7 +878,7 @@ nl_clean_loop: if(node_list.size() > 1) { - // walk thru all nodes + // walk through all nodes for(std::list::iterator nl_it = node_list.begin(); nl_it != node_list.end(); nl_it++) { // and try to find them in another top nodes. @@ -899,7 +907,7 @@ nl_clean_loop: { std::list::const_iterator nl_it = node_list.begin(); - pScene->mRootNode->mNumChildren = node_list.size(); + pScene->mRootNode->mNumChildren = static_cast(node_list.size()); pScene->mRootNode->mChildren = new aiNode*[pScene->mRootNode->mNumChildren]; for(size_t i = 0; i < pScene->mRootNode->mNumChildren; i++) { @@ -916,14 +924,14 @@ nl_clean_loop: { std::list::const_iterator ml_it = mesh_list.begin(); - pScene->mNumMeshes = mesh_list.size(); + pScene->mNumMeshes = static_cast(mesh_list.size()); pScene->mMeshes = new aiMesh*[pScene->mNumMeshes]; for(size_t i = 0; i < pScene->mNumMeshes; i++) pScene->mMeshes[i] = *ml_it++; }// if(mesh_list.size() > 0) // // Textures - pScene->mNumTextures = mTexture_Converted.size(); + pScene->mNumTextures = static_cast(mTexture_Converted.size()); if(pScene->mNumTextures > 0) { size_t idx; @@ -933,8 +941,8 @@ nl_clean_loop: for(const SPP_Texture& tex_convd: mTexture_Converted) { pScene->mTextures[idx] = new aiTexture; - pScene->mTextures[idx]->mWidth = tex_convd.Width; - pScene->mTextures[idx]->mHeight = tex_convd.Height; + pScene->mTextures[idx]->mWidth = static_cast(tex_convd.Width); + pScene->mTextures[idx]->mHeight = static_cast(tex_convd.Height); pScene->mTextures[idx]->pcData = (aiTexel*)tex_convd.Data; // texture format description. strcpy(pScene->mTextures[idx]->achFormatHint, tex_convd.FormatHint); @@ -943,7 +951,7 @@ nl_clean_loop: // Create materials for embedded textures. idx = 0; - pScene->mNumMaterials = mTexture_Converted.size(); + pScene->mNumMaterials = static_cast(mTexture_Converted.size()); pScene->mMaterials = new aiMaterial*[pScene->mNumMaterials]; for(const SPP_Texture& tex_convd: mTexture_Converted) { @@ -959,7 +967,7 @@ nl_clean_loop: idx++; } }// if(pScene->mNumTextures > 0) -}// END: after that walk thru children of root and collect data +}// END: after that walk through children of root and collect data }// namespace Assimp diff --git a/code/ASELoader.cpp b/code/ASELoader.cpp index ed01c17e1..24f63d2d0 100644 --- a/code/ASELoader.cpp +++ b/code/ASELoader.cpp @@ -54,6 +54,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include diff --git a/code/ASELoader.h b/code/ASELoader.h index b775fc6bb..6ef4d28f8 100644 --- a/code/ASELoader.h +++ b/code/ASELoader.h @@ -46,9 +46,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include +#include "ASEParser.h" struct aiNode; -#include "ASEParser.h" namespace Assimp { diff --git a/code/ASEParser.cpp b/code/ASEParser.cpp index 3b3b696e5..b06447cfa 100644 --- a/code/ASEParser.cpp +++ b/code/ASEParser.cpp @@ -49,7 +49,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // internal headers #include "TextureTransform.h" #include "ASELoader.h" -#include "MaterialSystem.h" #include "fast_atof.h" #include @@ -1135,7 +1134,7 @@ void Parser::ParseLV3ScaleAnimationBlock(ASE::Animation& anim) bool b = false; // For the moment we're just reading the three floats - - // we ignore the �dditional information for bezier's and TCBs + // we ignore the additional information for bezier's and TCBs // simple scaling keyframe if (TokenMatch(filePtr,"CONTROL_SCALE_SAMPLE" ,20)) @@ -1181,7 +1180,7 @@ void Parser::ParseLV3PosAnimationBlock(ASE::Animation& anim) bool b = false; // For the moment we're just reading the three floats - - // we ignore the �dditional information for bezier's and TCBs + // we ignore the additional information for bezier's and TCBs // simple scaling keyframe if (TokenMatch(filePtr,"CONTROL_POS_SAMPLE" ,18)) @@ -1227,7 +1226,7 @@ void Parser::ParseLV3RotAnimationBlock(ASE::Animation& anim) bool b = false; // For the moment we're just reading the floats - - // we ignore the �dditional information for bezier's and TCBs + // we ignore the additional information for bezier's and TCBs // simple scaling keyframe if (TokenMatch(filePtr,"CONTROL_ROT_SAMPLE" ,18)) @@ -1858,7 +1857,7 @@ void Parser::ParseLV3MeshCFaceListBlock(unsigned int iNumFaces, ASE::Mesh& mesh) ++filePtr; // Face entry - if (TokenMatch(filePtr,"MESH_CFACE" ,11)) + if (TokenMatch(filePtr,"MESH_CFACE" ,10)) { unsigned int aiValues[3]; unsigned int iIndex = 0; diff --git a/code/AssbinExporter.cpp b/code/AssbinExporter.cpp index 9240d3739..fcb32c70a 100644 --- a/code/AssbinExporter.cpp +++ b/code/AssbinExporter.cpp @@ -737,7 +737,7 @@ inline size_t WriteArray(IOStream * stream, const T* in, unsigned int size) AssbinChunkWriter uncompressedStream( NULL, 0 ); WriteBinaryScene( &uncompressedStream, pScene ); - uLongf uncompressedSize = uncompressedStream.Tell(); + uLongf uncompressedSize = static_cast(uncompressedStream.Tell()); uLongf compressedSize = (uLongf)(uncompressedStream.Tell() * 1.001 + 12.); uint8_t* compressedBuffer = new uint8_t[ compressedSize ]; diff --git a/code/AssbinLoader.cpp b/code/AssbinLoader.cpp index c4261c4cb..408620c3a 100644 --- a/code/AssbinLoader.cpp +++ b/code/AssbinLoader.cpp @@ -54,6 +54,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #ifdef ASSIMP_BUILD_NO_OWN_ZLIB # include @@ -659,7 +660,7 @@ void AssbinImporter::InternReadFile( const std::string& pFile, aiScene* pScene, if (compressed) { uLongf uncompressedSize = Read(stream); - uLongf compressedSize = stream->FileSize() - stream->Tell(); + uLongf compressedSize = static_cast(stream->FileSize() - stream->Tell()); unsigned char * compressedData = new unsigned char[ compressedSize ]; stream->Read( compressedData, 1, compressedSize ); diff --git a/code/AssbinLoader.h b/code/AssbinLoader.h index e8c8dd0cb..75c0f3a16 100644 --- a/code/AssbinLoader.h +++ b/code/AssbinLoader.h @@ -46,7 +46,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_ASSBINIMPORTER_H_INC #include "BaseImporter.h" -#include struct aiMesh; struct aiNode; diff --git a/code/Assimp.cpp b/code/Assimp.cpp index c28da95ee..092c40979 100644 --- a/code/Assimp.cpp +++ b/code/Assimp.cpp @@ -150,7 +150,7 @@ void ReportSceneNotFoundError() DefaultLogger::get()->error("Unable to find the Assimp::Importer for this aiScene. " "The C-API does not accept scenes produced by the C++ API and vice versa"); - assert(false); + ai_assert(false); } // ------------------------------------------------------------------------------------------------ diff --git a/code/AssxmlExporter.cpp b/code/AssxmlExporter.cpp index e236df664..677bea265 100644 --- a/code/AssxmlExporter.cpp +++ b/code/AssxmlExporter.cpp @@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ASSXML exporter main code */ #include -#include "./../include/assimp/version.h" +#include #include "ProcessHelper.h" #include #include @@ -72,7 +72,7 @@ static int ioprintf( IOStream * io, const char *format, ... ) { return -1; } - static const size_t Size = 4096; + static const int Size = 4096; char sz[ Size ]; ::memset( sz, '\0', Size ); va_list va; diff --git a/code/B3DImporter.cpp b/code/B3DImporter.cpp index 1b9ba1433..e2a685d1a 100644 --- a/code/B3DImporter.cpp +++ b/code/B3DImporter.cpp @@ -56,7 +56,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include - +#include using namespace Assimp; using namespace std; @@ -331,7 +331,7 @@ void B3DImporter::ReadVRTS(){ int sz=12+(_vflags&1?12:0)+(_vflags&2?16:0)+(_tcsets*_tcsize*4); int n_verts=ChunkSize()/sz; - int v0=_vertices.size(); + int v0=static_cast(_vertices.size()); _vertices.resize( v0+n_verts ); for( int i=0;i(_vertices.size()); while( ChunkSize() ){ string t=ReadChunk(); @@ -462,17 +462,17 @@ void B3DImporter::ReadKEYS( aiNodeAnim *nodeAnim ){ } if( flags & 1 ){ - nodeAnim->mNumPositionKeys=trans.size(); + nodeAnim->mNumPositionKeys=static_cast(trans.size()); nodeAnim->mPositionKeys=to_array( trans ); } if( flags & 2 ){ - nodeAnim->mNumScalingKeys=scale.size(); + nodeAnim->mNumScalingKeys=static_cast(scale.size()); nodeAnim->mScalingKeys=to_array( scale ); } if( flags & 4 ){ - nodeAnim->mNumRotationKeys=rot.size(); + nodeAnim->mNumRotationKeys=static_cast(rot.size()); nodeAnim->mRotationKeys=to_array( rot ); } } @@ -506,7 +506,7 @@ aiNode *B3DImporter::ReadNODE( aiNode *parent ){ aiMatrix4x4 tform=trans * rot * scale; - int nodeid=_nodes.size(); + int nodeid=static_cast(_nodes.size()); aiNode *node=new aiNode( name ); _nodes.push_back( node ); @@ -521,9 +521,9 @@ aiNode *B3DImporter::ReadNODE( aiNode *parent ){ while( ChunkSize() ){ string t=ReadChunk(); if( t=="MESH" ){ - int n=_meshes.size(); + unsigned int n= static_cast(_meshes.size()); ReadMESH(); - for( int i=n;i<(int)_meshes.size();++i ){ + for( unsigned int i=n;i(_meshes.size());++i ){ meshes.push_back( i ); } }else if( t=="BONE" ){ @@ -544,10 +544,10 @@ aiNode *B3DImporter::ReadNODE( aiNode *parent ){ ExitChunk(); } - node->mNumMeshes=meshes.size(); + node->mNumMeshes= static_cast(meshes.size()); node->mMeshes=to_array( meshes ); - node->mNumChildren=children.size(); + node->mNumChildren=static_cast(children.size()); node->mChildren=to_array( children ); return node; @@ -645,7 +645,7 @@ void B3DImporter::ReadBB3D( aiScene *scene ){ aiNode *bnode=_nodes[i]; bone->mName=bnode->mName; - bone->mNumWeights=weights.size(); + bone->mNumWeights= static_cast(weights.size()); bone->mWeights=to_array( weights ); aiMatrix4x4 mat=bnode->mTransformation; @@ -655,7 +655,7 @@ void B3DImporter::ReadBB3D( aiScene *scene ){ } bone->mOffsetMatrix=mat.Inverse(); } - mesh->mNumBones=bones.size(); + mesh->mNumBones= static_cast(bones.size()); mesh->mBones=to_array( bones ); } } @@ -667,21 +667,21 @@ void B3DImporter::ReadBB3D( aiScene *scene ){ if( !_materials.size() ){ _materials.push_back( new aiMaterial ); } - scene->mNumMaterials=_materials.size(); + scene->mNumMaterials= static_cast(_materials.size()); scene->mMaterials=to_array( _materials ); //meshes - scene->mNumMeshes=_meshes.size(); + scene->mNumMeshes= static_cast(_meshes.size()); scene->mMeshes=to_array( _meshes ); //animations if( _animations.size()==1 && _nodeAnims.size() ){ aiAnimation *anim=_animations.back(); - anim->mNumChannels=_nodeAnims.size(); + anim->mNumChannels=static_cast(_nodeAnims.size()); anim->mChannels=to_array( _nodeAnims ); - scene->mNumAnimations=_animations.size(); + scene->mNumAnimations=static_cast(_animations.size()); scene->mAnimations=to_array( _animations ); } diff --git a/code/B3DImporter.h b/code/B3DImporter.h index 92ddc0272..167078655 100644 --- a/code/B3DImporter.h +++ b/code/B3DImporter.h @@ -48,7 +48,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "BaseImporter.h" -#include #include struct aiNodeAnim; diff --git a/code/BVHLoader.cpp b/code/BVHLoader.cpp index ca6c5d36c..1324dcdca 100644 --- a/code/BVHLoader.cpp +++ b/code/BVHLoader.cpp @@ -51,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "TinyFormatter.h" #include #include +#include using namespace Assimp; using namespace Assimp::Formatter; @@ -237,7 +238,7 @@ aiNode* BVHLoader::ReadNode() // add the child nodes if there are any if( childNodes.size() > 0) { - node->mNumChildren = childNodes.size(); + node->mNumChildren = static_cast(childNodes.size()); node->mChildren = new aiNode*[node->mNumChildren]; std::copy( childNodes.begin(), childNodes.end(), node->mChildren); } @@ -443,7 +444,7 @@ void BVHLoader::CreateAnimation( aiScene* pScene) anim->mDuration = double( mAnimNumFrames - 1); // now generate the tracks for all nodes - anim->mNumChannels = mNodes.size(); + anim->mNumChannels = static_cast(mNodes.size()); anim->mChannels = new aiNodeAnim*[anim->mNumChannels]; // FIX: set the array elements to NULL to ensure proper deletion if an exception is thrown diff --git a/code/BaseImporter.cpp b/code/BaseImporter.cpp index 20321d0ad..e96b35cf2 100644 --- a/code/BaseImporter.cpp +++ b/code/BaseImporter.cpp @@ -50,6 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include #include #include @@ -136,14 +137,17 @@ void BaseImporter::GetExtensionList(std::set& extensions) } // ------------------------------------------------------------------------------------------------ -/*static*/ bool BaseImporter::SearchFileHeaderForToken(IOSystem* pIOHandler, +/*static*/ bool BaseImporter::SearchFileHeaderForToken( IOSystem* pIOHandler, const std::string& pFile, const char** tokens, unsigned int numTokens, unsigned int searchBytes /* = 200 */, bool tokensSol /* false */) { - ai_assert(NULL != tokens && 0 != numTokens && 0 != searchBytes); + ai_assert( NULL != tokens ); + ai_assert( 0 != numTokens ); + ai_assert( 0 != searchBytes); + if (!pIOHandler) return false; @@ -178,8 +182,6 @@ void BaseImporter::GetExtensionList(std::set& extensions) for (unsigned int i = 0; i < numTokens;++i) { ai_assert(NULL != tokens[i]); - - const char* r = strstr(buffer,tokens[i]); if( !r ) { continue; diff --git a/code/BaseImporter.h b/code/BaseImporter.h index 7c8932a3f..781318be8 100644 --- a/code/BaseImporter.h +++ b/code/BaseImporter.h @@ -44,14 +44,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Exceptional.h" -#include -#include #include #include #include #include struct aiScene; +struct aiImporterDesc; namespace Assimp { diff --git a/code/BaseProcess.h b/code/BaseProcess.h index 148f07284..e4838fa7f 100644 --- a/code/BaseProcess.h +++ b/code/BaseProcess.h @@ -43,8 +43,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_BASEPROCESS_H #include - -#include #include "GenericProperty.h" struct aiScene; diff --git a/code/Bitmap.h b/code/Bitmap.h index ad29783ce..f665605b9 100644 --- a/code/Bitmap.h +++ b/code/Bitmap.h @@ -50,93 +50,71 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include + struct aiTexture; namespace Assimp { class IOStream; + class Bitmap { +protected: - protected: + struct Header { + uint16_t type; + uint32_t size; + uint16_t reserved1; + uint16_t reserved2; + uint32_t offset; - struct Header { + // We define the struct size because sizeof(Header) might return a wrong result because of structure padding. + // Moreover, we must use this ugly and error prone syntax because Visual Studio neither support constexpr or sizeof(name_of_field). + static const std::size_t header_size = + sizeof(uint16_t) + // type + sizeof(uint32_t) + // size + sizeof(uint16_t) + // reserved1 + sizeof(uint16_t) + // reserved2 + sizeof(uint32_t); // offset + }; - uint16_t type; + struct DIB { + uint32_t size; + int32_t width; + int32_t height; + uint16_t planes; + uint16_t bits_per_pixel; + uint32_t compression; + uint32_t image_size; + int32_t x_resolution; + int32_t y_resolution; + uint32_t nb_colors; + uint32_t nb_important_colors; - uint32_t size; + // We define the struct size because sizeof(DIB) might return a wrong result because of structure padding. + // Moreover, we must use this ugly and error prone syntax because Visual Studio neither support constexpr or sizeof(name_of_field). + static const std::size_t dib_size = + sizeof(uint32_t) + // size + sizeof(int32_t) + // width + sizeof(int32_t) + // height + sizeof(uint16_t) + // planes + sizeof(uint16_t) + // bits_per_pixel + sizeof(uint32_t) + // compression + sizeof(uint32_t) + // image_size + sizeof(int32_t) + // x_resolution + sizeof(int32_t) + // y_resolution + sizeof(uint32_t) + // nb_colors + sizeof(uint32_t); // nb_important_colors + }; - uint16_t reserved1; + static const std::size_t mBytesPerPixel = 4; - uint16_t reserved2; - - uint32_t offset; - - // We define the struct size because sizeof(Header) might return a wrong result because of structure padding. - // Moreover, we must use this ugly and error prone syntax because Visual Studio neither support constexpr or sizeof(name_of_field). - static const std::size_t header_size = - sizeof(uint16_t) + // type - sizeof(uint32_t) + // size - sizeof(uint16_t) + // reserved1 - sizeof(uint16_t) + // reserved2 - sizeof(uint32_t); // offset - - }; - - struct DIB { - - uint32_t size; - - int32_t width; - - int32_t height; - - uint16_t planes; - - uint16_t bits_per_pixel; - - uint32_t compression; - - uint32_t image_size; - - int32_t x_resolution; - - int32_t y_resolution; - - uint32_t nb_colors; - - uint32_t nb_important_colors; - - // We define the struct size because sizeof(DIB) might return a wrong result because of structure padding. - // Moreover, we must use this ugly and error prone syntax because Visual Studio neither support constexpr or sizeof(name_of_field). - static const std::size_t dib_size = - sizeof(uint32_t) + // size - sizeof(int32_t) + // width - sizeof(int32_t) + // height - sizeof(uint16_t) + // planes - sizeof(uint16_t) + // bits_per_pixel - sizeof(uint32_t) + // compression - sizeof(uint32_t) + // image_size - sizeof(int32_t) + // x_resolution - sizeof(int32_t) + // y_resolution - sizeof(uint32_t) + // nb_colors - sizeof(uint32_t); // nb_important_colors - - }; - - static const std::size_t mBytesPerPixel = 4; - - public: - - static void Save(aiTexture* texture, IOStream* file); - - protected: - - static void WriteHeader(Header& header, IOStream* file); - - static void WriteDIB(DIB& dib, IOStream* file); - - static void WriteData(aiTexture* texture, IOStream* file); +public: + static void Save(aiTexture* texture, IOStream* file); +protected: + static void WriteHeader(Header& header, IOStream* file); + static void WriteDIB(DIB& dib, IOStream* file); + static void WriteData(aiTexture* texture, IOStream* file); }; } diff --git a/code/BlenderBMesh.cpp b/code/BlenderBMesh.cpp index bf27a9396..c328947ae 100644 --- a/code/BlenderBMesh.cpp +++ b/code/BlenderBMesh.cpp @@ -180,7 +180,7 @@ void BlenderBMeshConverter::AddFace( int v1, int v2, int v3, int v4 ) // TODO - Work out how materials work face.mat_nr = 0; triMesh->mface.push_back( face ); - triMesh->totface = triMesh->mface.size( ); + triMesh->totface = static_cast(triMesh->mface.size( )); } // ------------------------------------------------------------------------------------------------ diff --git a/code/BlenderDNA.cpp b/code/BlenderDNA.cpp index e8f335bce..5dbc950aa 100644 --- a/code/BlenderDNA.cpp +++ b/code/BlenderDNA.cpp @@ -48,6 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BlenderDNA.h" #include "StreamReader.h" #include "fast_atof.h" +#include "TinyFormatter.h" using namespace Assimp; using namespace Assimp::Blender; diff --git a/code/BlenderDNA.h b/code/BlenderDNA.h index 135e38d60..dbddad336 100644 --- a/code/BlenderDNA.h +++ b/code/BlenderDNA.h @@ -46,12 +46,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_BLEND_DNA_H #include "BaseImporter.h" -#include "TinyFormatter.h" #include "StreamReader.h" #include #include #include - +#include // enable verbose log output. really verbose, so be careful. #ifdef ASSIMP_BUILD_DEBUG diff --git a/code/BlenderDNA.inl b/code/BlenderDNA.inl index 7397e291b..25aa81c91 100644 --- a/code/BlenderDNA.inl +++ b/code/BlenderDNA.inl @@ -46,9 +46,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_BLEND_DNA_INL #include +#include "TinyFormatter.h" namespace Assimp { - namespace Blender { +namespace Blender { //-------------------------------------------------------------------------------- const Field& Structure :: operator [] (const std::string& ss) const diff --git a/code/BlenderIntermediate.h b/code/BlenderIntermediate.h index 0290185de..c79bc08f2 100644 --- a/code/BlenderIntermediate.h +++ b/code/BlenderIntermediate.h @@ -48,9 +48,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BlenderLoader.h" #include "BlenderDNA.h" #include "BlenderScene.h" -#include "BlenderSceneGen.h" #include -#include "./../include/assimp/material.h" +#include struct aiTexture; diff --git a/code/BlenderLoader.cpp b/code/BlenderLoader.cpp index a3810a3a1..ea443b14b 100644 --- a/code/BlenderLoader.cpp +++ b/code/BlenderLoader.cpp @@ -54,10 +54,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BlenderBMesh.h" #include "StringUtils.h" #include -#include "StringComparison.h" +#include +#include "StringComparison.h" #include "StreamReader.h" #include "MemoryIOWrapper.h" + #include @@ -95,8 +97,9 @@ static const aiImporterDesc blenderDesc = { // ------------------------------------------------------------------------------------------------ // Constructor to be privately used by Importer BlenderImporter::BlenderImporter() -: modifier_cache(new BlenderModifierShowcase()) -{} +: modifier_cache(new BlenderModifierShowcase()) { + // empty +} // ------------------------------------------------------------------------------------------------ // Destructor, private as well @@ -144,8 +147,7 @@ void BlenderImporter::SetupProperties(const Importer* /*pImp*/) // nothing to be done for the moment } -struct free_it -{ +struct free_it { free_it(void* free) : free(free) {} ~free_it() { ::free(this->free); @@ -164,6 +166,7 @@ void BlenderImporter::InternReadFile( const std::string& pFile, free_it free_it_really(dest); #endif + FileDatabase file; std::shared_ptr stream(pIOHandler->Open(pFile,"rb")); if (!stream) { @@ -423,7 +426,7 @@ void BlenderImporter::ResolveImage(aiMaterial* out, const Material* mat, const M // check if the file contents are bundled with the BLEND file if (img->packedfile) { name.data[0] = '*'; - name.length = 1+ ASSIMP_itoa10(name.data+1,MAXLEN-1,conv_data.textures->size()); + name.length = 1+ ASSIMP_itoa10(name.data+1,static_cast(MAXLEN-1), static_cast(conv_data.textures->size())); conv_data.textures->push_back(new aiTexture()); aiTexture* tex = conv_data.textures->back(); @@ -1230,7 +1233,7 @@ aiNode* BlenderImporter::ConvertNode(const Scene& in, const Object* obj, Convers if (conv_data.meshes->size() > old) { node->mMeshes = new unsigned int[node->mNumMeshes = static_cast(conv_data.meshes->size()-old)]; for (unsigned int i = 0; i < node->mNumMeshes; ++i) { - node->mMeshes[i] = i + old; + node->mMeshes[i] = static_cast(i + old); } }} break; diff --git a/code/BlenderScene.cpp b/code/BlenderScene.cpp index e522fad68..b9068329b 100644 --- a/code/BlenderScene.cpp +++ b/code/BlenderScene.cpp @@ -44,9 +44,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER -#include "BlenderDNA.h" #include "BlenderScene.h" #include "BlenderSceneGen.h" +#include "BlenderDNA.h" using namespace Assimp; using namespace Assimp::Blender; @@ -522,7 +522,7 @@ template <> void Structure :: Convert ( ReadFieldArray(dest.co,"co",db); ReadFieldArray(dest.no,"no",db); ReadField(dest.flag,"flag",db); - ReadField(dest.mat_nr,"mat_nr",db); + //ReadField(dest.mat_nr,"mat_nr",db); ReadField(dest.bweight,"bweight",db); db.reader->IncPtr(size); diff --git a/code/BlenderScene.h b/code/BlenderScene.h index 04eb4bcad..fe6d6e14c 100644 --- a/code/BlenderScene.h +++ b/code/BlenderScene.h @@ -616,6 +616,17 @@ struct Object : ElemBase { std::shared_ptr data FAIL; ListBase modifiers; + + Object() + : ElemBase() + , type( Type_EMPTY ) + , parent( nullptr ) + , track() + , proxy() + , proxy_from() + , data() { + // empty + } }; @@ -624,6 +635,14 @@ struct Base : ElemBase { Base* prev WARN; std::shared_ptr next WARN; std::shared_ptr object WARN; + + Base() + : ElemBase() + , next() + , object() { + // empty + // empty + } }; // ------------------------------------------------------------------------------- @@ -635,8 +654,15 @@ struct Scene : ElemBase { std::shared_ptr basact WARN; ListBase base; -}; + Scene() + : ElemBase() + , camera() + , world() + , basact() { + // empty + } +}; // ------------------------------------------------------------------------------- struct Image : ElemBase { @@ -664,6 +690,11 @@ struct Image : ElemBase { short animspeed; short gen_x, gen_y, gen_type; + + Image() + : ElemBase() { + // empty + } }; // ------------------------------------------------------------------------------- @@ -751,6 +782,12 @@ struct Tex : ElemBase { //VoxelData *vd; //char use_nodes; + + Tex() + : ElemBase() { + // empty + } + }; // ------------------------------------------------------------------------------- @@ -839,9 +876,13 @@ struct MTex : ElemBase { //float lifefac, sizefac, ivelfac, pvelfac; //float shadowfac; //float zenupfac, zendownfac, blendfac; + + MTex() + : ElemBase() { + // empty + } }; - - } +} } #endif diff --git a/code/BlenderTessellator.cpp b/code/BlenderTessellator.cpp index c29b27de1..60879b417 100644 --- a/code/BlenderTessellator.cpp +++ b/code/BlenderTessellator.cpp @@ -412,9 +412,9 @@ float BlenderTessellatorP2T::FindLargestMatrixElem( const aiMatrix3x3& mtx ) con { float result = 0.0f; - for ( size_t x = 0; x < 3; ++x ) + for ( unsigned int x = 0; x < 3; ++x ) { - for ( size_t y = 0; y < 3; ++y ) + for ( unsigned int y = 0; y < 3; ++y ) { result = p2tMax( std::fabs( mtx[ x ][ y ] ), result ); } @@ -429,9 +429,9 @@ aiMatrix3x3 BlenderTessellatorP2T::ScaleMatrix( const aiMatrix3x3& mtx, float sc { aiMatrix3x3 result; - for ( size_t x = 0; x < 3; ++x ) + for ( unsigned int x = 0; x < 3; ++x ) { - for ( size_t y = 0; y < 3; ++y ) + for ( unsigned int y = 0; y < 3; ++y ) { result[ x ][ y ] = mtx[ x ][ y ] * scale; } diff --git a/code/BlobIOSystem.h b/code/BlobIOSystem.h index 6cd014254..bb76ffadb 100644 --- a/code/BlobIOSystem.h +++ b/code/BlobIOSystem.h @@ -45,10 +45,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_BLOBIOSYSTEM_H_INCLUDED #define AI_BLOBIOSYSTEM_H_INCLUDED -#include "./../include/assimp/IOStream.hpp" -#include "./../include/assimp/cexport.h" -#include "./../include/assimp/IOSystem.hpp" -#include "./../include/assimp/DefaultLogger.hpp" +#include +#include +#include +#include #include #include #include diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 7f42d9ee7..60d0ef23e 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -93,6 +93,8 @@ SET( PUBLIC_HEADERS ${HEADER_PATH}/NullLogger.hpp ${HEADER_PATH}/cexport.h ${HEADER_PATH}/Exporter.hpp + ${HEADER_PATH}/DefaultIOStream.h + ${HEADER_PATH}/DefaultIOSystem.h ) SET( Core_SRCS @@ -125,9 +127,7 @@ SET( Common_SRCS ByteSwapper.h DefaultProgressHandler.h DefaultIOStream.cpp - DefaultIOStream.h DefaultIOSystem.cpp - DefaultIOSystem.h CInterfaceIOWrapper.cpp CInterfaceIOWrapper.h Hash.h @@ -163,6 +163,7 @@ SET( Common_SRCS RemoveComments.h Subdivision.cpp Subdivision.h + scene.cpp Vertex.h LineSplitter.h TinyFormatter.h @@ -173,6 +174,8 @@ SET( Common_SRCS XMLTools.h Version.cpp IOStreamBuffer.h + CreateAnimMesh.h + CreateAnimMesh.cpp ) SOURCE_GROUP(Common FILES ${Common_SRCS}) @@ -184,10 +187,16 @@ IF ( ASSIMP_BUILD_NONFREE_C4D_IMPORTER ) SOURCE_GROUP( C4D FILES ${C4D_SRCS}) ENDIF ( ASSIMP_BUILD_NONFREE_C4D_IMPORTER ) +# if this variable is set to TRUE, the user can manually disable importers by setting +# ASSIMP_BUILD_XXX_IMPORTER to FALSE for each importer +# if this variable is set to FALSE, the user can manually enable importers by setting +# ASSIMP_BUILD_XXX_IMPORTER to TRUE for each importer +OPTION(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT "default value of all ASSIMP_BUILD_XXX_IMPORTER value" TRUE) + # macro to add the CMake Option ADD_ASSIMP_IMPORTER_ which enables compile of loader # this way selective loaders can be compiled (reduces filesize + compile time) MACRO(ADD_ASSIMP_IMPORTER name) - OPTION(ASSIMP_BUILD_${name}_IMPORTER "build the ${name} importer" TRUE) + OPTION(ASSIMP_BUILD_${name}_IMPORTER "build the ${name} importer" ${ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT}) IF(ASSIMP_BUILD_${name}_IMPORTER) LIST(APPEND ASSIMP_LOADER_SRCS ${ARGN}) SET(ASSIMP_IMPORTERS_ENABLED "${ASSIMP_IMPORTERS_ENABLED} ${name}") @@ -197,6 +206,7 @@ MACRO(ADD_ASSIMP_IMPORTER name) SET(${name}_SRC "") SET(ASSIMP_IMPORTERS_DISABLED "${ASSIMP_IMPORTERS_DISABLED} ${name}") add_definitions(-DASSIMP_BUILD_NO_${name}_IMPORTER) + add_definitions(-DASSIMP_BUILD_NO_${name}_EXPORTER) ENDIF() ENDMACRO() @@ -462,9 +472,13 @@ ADD_ASSIMP_IMPORTER( IFC STEPFileEncoding.cpp STEPFileEncoding.h ) -if (MSVC AND ASSIMP_BUILD_IFC_IMPORTER) - set_source_files_properties(IFCReaderGen1.cpp IFCReaderGen2.cpp PROPERTIES COMPILE_FLAGS "/bigobj") -endif (MSVC AND ASSIMP_BUILD_IFC_IMPORTER) +if (ASSIMP_BUILD_IFC_IMPORTER) + if (MSVC) + set_source_files_properties(IFCReaderGen1.cpp IFCReaderGen2.cpp PROPERTIES COMPILE_FLAGS "/bigobj") + elseif(CMAKE_COMPILER_IS_MINGW) + set_source_files_properties(IFCReaderGen1.cpp IFCReaderGen2.cpp PROPERTIES COMPILE_FLAGS "-O2 -Wa,-mbig-obj") + endif() +endif (ASSIMP_BUILD_IFC_IMPORTER) ADD_ASSIMP_IMPORTER( XGL XGLLoader.cpp @@ -642,7 +656,6 @@ ADD_ASSIMP_IMPORTER( GLTF glTFExporter.cpp ) - ADD_ASSIMP_IMPORTER( 3MF D3MFImporter.h D3MFImporter.cpp diff --git a/code/COBLoader.cpp b/code/COBLoader.cpp index 4f0ad3980..e1d238a1c 100644 --- a/code/COBLoader.cpp +++ b/code/COBLoader.cpp @@ -57,7 +57,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include - +#include using namespace Assimp; using namespace Assimp::COB; @@ -181,7 +181,7 @@ void COBImporter::InternReadFile( const std::string& pFile, if (n->type == Node::TYPE_MESH) { Mesh& mesh = (Mesh&)(*n.get()); if (mesh.vertex_positions.size() && mesh.texture_coords.size()) { - pScene->mNumMeshes += mesh.temp_map.size(); + pScene->mNumMeshes += static_cast(mesh.temp_map.size()); } } } diff --git a/code/COBScene.h b/code/COBScene.h index 0e27d1461..a73a6df3a 100644 --- a/code/COBScene.h +++ b/code/COBScene.h @@ -46,12 +46,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include #include "BaseImporter.h" -#include "./../include/assimp/material.h" +#include -namespace Assimp { - namespace COB { +namespace Assimp { +namespace COB { // ------------------ /** Represents a single vertex index in a face */ diff --git a/code/CSMLoader.cpp b/code/CSMLoader.cpp index 925abf4bd..1d10f3965 100644 --- a/code/CSMLoader.cpp +++ b/code/CSMLoader.cpp @@ -57,7 +57,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include - +#include using namespace Assimp; @@ -179,7 +179,7 @@ void CSMImporter::InternReadFile( const std::string& pFile, nda->mNodeName.length = (size_t)(ot-nda->mNodeName.data); } - anim->mNumChannels = anims_temp.size(); + anim->mNumChannels = static_cast(anims_temp.size()); if (!anim->mNumChannels) throw DeadlyImportError("CSM: Empty $order section"); diff --git a/code/ColladaExporter.cpp b/code/ColladaExporter.cpp index fdb31903f..1bac8b7f6 100644 --- a/code/ColladaExporter.cpp +++ b/code/ColladaExporter.cpp @@ -38,18 +38,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ - - #ifndef ASSIMP_BUILD_NO_EXPORT #ifndef ASSIMP_BUILD_NO_COLLADA_EXPORTER -#include "ColladaExporter.h" +#include "ColladaExporter.h" #include "Bitmap.h" #include "fast_atof.h" #include "SceneCombiner.h" -#include "DefaultIOSystem.h" #include "StringUtils.h" #include "XMLTools.h" +#include #include #include #include @@ -384,6 +382,7 @@ void ColladaExporter::WriteLight(size_t pIndex){ case aiLightSource_SPOT: WriteSpotLight(light); break; + case aiLightSource_AREA: case aiLightSource_UNDEFINED: case _aiLightSource_Force32Bit: break; @@ -524,7 +523,7 @@ void ColladaExporter::ReadMaterialSurface( Surface& poSurface, const aiMaterial* } else { if( pKey ) - poSurface.exist = pSrcMat->Get( pKey, pType, pIndex, poSurface.color) == aiReturn_SUCCESS; + poSurface.exist = pSrcMat->Get( pKey, static_cast(pType), static_cast(pIndex), poSurface.color) == aiReturn_SUCCESS; } } @@ -651,7 +650,7 @@ void ColladaExporter::WriteMaterials() if( materialCountWithThisName == 0 ) { materials[a].name = name.C_Str(); } else { - materials[a].name = std::string(name.C_Str()) + to_string(materialCountWithThisName); + materials[a].name = std::string(name.C_Str()) + to_string(materialCountWithThisName); } } for( std::string::iterator it = materials[a].name.begin(); it != materials[a].name.end(); ++it ) { @@ -691,7 +690,7 @@ void ColladaExporter::WriteMaterials() materials[a].shininess.exist = mat->Get( AI_MATKEY_SHININESS, materials[a].shininess.value) == aiReturn_SUCCESS; materials[a].transparency.exist = mat->Get( AI_MATKEY_OPACITY, materials[a].transparency.value) == aiReturn_SUCCESS; - materials[a].transparency.value = 1 - materials[a].transparency.value; + materials[a].transparency.value = materials[a].transparency.value; materials[a].index_refraction.exist = mat->Get( AI_MATKEY_REFRACTI, materials[a].index_refraction.value) == aiReturn_SUCCESS; } @@ -808,8 +807,8 @@ void ColladaExporter::WriteGeometry( size_t pIndex) const std::string idstr = GetMeshId( pIndex); const std::string idstrEscaped = XMLEscape(idstr); - if( mesh->mNumFaces == 0 || mesh->mNumVertices == 0 ) - return; + if ( mesh->mNumFaces == 0 || mesh->mNumVertices == 0 ) + return; // opening tag mOutput << startstr << "" << endstr; @@ -827,7 +826,7 @@ void ColladaExporter::WriteGeometry( size_t pIndex) // texture coords for( size_t a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++a) { - if( mesh->HasTextureCoords( a) ) + if( mesh->HasTextureCoords(static_cast(a)) ) { WriteFloatArray( idstr + "-tex" + to_string(a), mesh->mNumUVComponents[a] == 3 ? FloatType_TexCoord3 : FloatType_TexCoord2, (ai_real*) mesh->mTextureCoords[a], mesh->mNumVertices); @@ -837,27 +836,15 @@ void ColladaExporter::WriteGeometry( size_t pIndex) // vertex colors for( size_t a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++a) { - if( mesh->HasVertexColors( a) ) + if( mesh->HasVertexColors(static_cast(a)) ) WriteFloatArray( idstr + "-color" + to_string(a), FloatType_Color, (ai_real*) mesh->mColors[a], mesh->mNumVertices); } // assemble vertex structure + // Only write input for POSITION since we will write other as shared inputs in polygon definition mOutput << startstr << "" << endstr; PushTag(); mOutput << startstr << "" << endstr; - if( mesh->HasNormals() ) - mOutput << startstr << "" << endstr; - for( size_t a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++a ) - { - if( mesh->HasTextureCoords( a) ) - mOutput << startstr << "" << endstr; - } - for( size_t a = 0; a < AI_MAX_NUMBER_OF_COLOR_SETS; ++a ) - { - if( mesh->HasVertexColors( a) ) - mOutput << startstr << "" << endstr; - } - PopTag(); mOutput << startstr << "" << endstr; @@ -876,6 +863,19 @@ void ColladaExporter::WriteGeometry( size_t pIndex) mOutput << startstr << "" << endstr; PushTag(); mOutput << startstr << "" << endstr; + if( mesh->HasNormals() ) + mOutput << startstr << "" << endstr; + for( size_t a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++a ) + { + if( mesh->HasTextureCoords(static_cast(a)) ) + mOutput << startstr << "" << endstr; + } + for( size_t a = 0; a < AI_MAX_NUMBER_OF_COLOR_SETS; ++a ) + { + if( mesh->HasVertexColors(static_cast(a) ) ) + mOutput << startstr << "" << endstr; + } + mOutput << startstr << "

"; for( size_t a = 0; a < mesh->mNumFaces; ++a ) { @@ -897,10 +897,17 @@ void ColladaExporter::WriteGeometry( size_t pIndex) mOutput << startstr << "" << endstr; PushTag(); mOutput << startstr << "" << endstr; + if( mesh->HasNormals() ) + mOutput << startstr << "" << endstr; for( size_t a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++a ) { - if( mesh->HasTextureCoords( a) ) - mOutput << startstr << "" << endstr; + if( mesh->HasTextureCoords(static_cast(a)) ) + mOutput << startstr << "" << endstr; + } + for( size_t a = 0; a < AI_MAX_NUMBER_OF_COLOR_SETS; ++a ) + { + if( mesh->HasVertexColors(static_cast(a) ) ) + mOutput << startstr << "" << endstr; } mOutput << startstr << ""; @@ -1129,7 +1136,7 @@ void ColladaExporter::WriteNode( const aiScene* pScene, aiNode* pNode) PushTag(); for( size_t a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++a ) { - if( mesh->HasTextureCoords( a) ) + if( mesh->HasTextureCoords( static_cast(a) ) ) // semantic as in // input_semantic as in // input_set as in diff --git a/code/ColladaHelper.h b/code/ColladaHelper.h index a3cba264b..e805ed0a0 100644 --- a/code/ColladaHelper.h +++ b/code/ColladaHelper.h @@ -43,7 +43,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_COLLADAHELPER_H_INC #define AI_COLLADAHELPER_H_INC -#include #include #include #include @@ -89,6 +88,21 @@ enum InputType IT_Bitangent }; +/** Supported controller types */ +enum ControllerType +{ + Skin, + Morph +}; + +/** Supported morph methods */ +enum MorphMethod +{ + Normalized, + Relative +}; + + /** Contains all data for one of the different transformation types */ struct Transform { @@ -380,6 +394,12 @@ enum PrimitiveType /** A skeleton controller to deform a mesh with the use of joints */ struct Controller { + // controller type + ControllerType mType; + + // Morphing method if type is Morph + MorphMethod mMethod; + // the URL of the mesh deformed by the controller. std::string mMeshId; @@ -402,6 +422,9 @@ struct Controller // JointIndex-WeightIndex pairs for all vertices std::vector< std::pair > mWeights; + + std::string mMorphTarget; + std::string mMorphWeight; }; /** A collada material. Pretty much the only member is a reference to an effect. */ @@ -577,6 +600,12 @@ struct AnimationChannel std::string mSourceTimes; /** Source URL of the value values. Collada calls them "output". */ std::string mSourceValues; + /** Source URL of the IN_TANGENT semantic values. */ + std::string mInTanValues; + /** Source URL of the OUT_TANGENT semantic values. */ + std::string mOutTanValues; + /** Source URL of the INTERPOLATION semantic values. */ + std::string mInterpolationValues; }; /** An animation. Container for 0-x animation channels or 0-x animations */ @@ -645,6 +674,7 @@ struct Animation struct ChannelEntry { const Collada::AnimationChannel* mChannel; ///> the source channel + std::string mTargetId; std::string mTransformId; // the ID of the transformation step of the node which is influenced size_t mTransformIndex; // Index into the node's transform chain to apply the channel to size_t mSubElement; // starting index inside the transform data diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index 81a43754e..2a30fc5e2 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -49,18 +49,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include -#include "ColladaParser.h" +#include +#include "ColladaParser.h" #include "fast_atof.h" #include "ParsingUtils.h" #include "SkeletonMeshBuilder.h" -#include "Defines.h" +#include "CreateAnimMesh.h" #include "time.h" #include "math.h" +#include #include -#include "Defines.h" - +#include using namespace Assimp; using namespace Assimp::Formatter; @@ -148,6 +149,7 @@ void ColladaLoader::InternReadFile( const std::string& pFile, aiScene* pScene, I mMeshIndexByID.clear(); mMaterialIndexByName.clear(); mMeshes.clear(); + mTargetMeshes.clear(); newMats.clear(); mLights.clear(); mCameras.clear(); @@ -240,7 +242,7 @@ aiNode* ColladaLoader::BuildHierarchy( const ColladaParser& pParser, const Colla ResolveNodeInstances(pParser,pNode,instances); // add children. first the *real* ones - node->mNumChildren = pNode->mChildren.size()+instances.size(); + node->mNumChildren = static_cast(pNode->mChildren.size()+instances.size()); node->mChildren = new aiNode*[node->mNumChildren]; for( size_t a = 0; a < pNode->mChildren.size(); a++) @@ -506,7 +508,7 @@ void ColladaLoader::BuildMeshesForNode( const ColladaParser& pParser, const Coll std::map::const_iterator matIt = mMaterialIndexByName.find( meshMaterial); unsigned int matIdx; if( matIt != mMaterialIndexByName.end()) - matIdx = matIt->second; + matIdx = static_cast(matIt->second); else matIdx = 0; @@ -553,14 +555,37 @@ void ColladaLoader::BuildMeshesForNode( const ColladaParser& pParser, const Coll } // now place all mesh references we gathered in the target node - pTarget->mNumMeshes = newMeshRefs.size(); + pTarget->mNumMeshes = static_cast(newMeshRefs.size()); if( newMeshRefs.size()) { + struct UIntTypeConverter + { + unsigned int operator()(const size_t& v) const + { + return static_cast(v); + } + }; + pTarget->mMeshes = new unsigned int[pTarget->mNumMeshes]; - std::copy( newMeshRefs.begin(), newMeshRefs.end(), pTarget->mMeshes); + std::transform( newMeshRefs.begin(), newMeshRefs.end(), pTarget->mMeshes, UIntTypeConverter()); } } +// ------------------------------------------------------------------------------------------------ +// Find mesh from either meshes or morph target meshes +aiMesh *ColladaLoader::findMesh(std::string meshid) +{ + for (unsigned int i = 0; i < mMeshes.size(); i++) + if (std::string(mMeshes[i]->mName.data) == meshid) + return mMeshes[i]; + + for (unsigned int i = 0; i < mTargetMeshes.size(); i++) + if (std::string(mTargetMeshes[i]->mName.data) == meshid) + return mTargetMeshes[i]; + + return NULL; +} + // ------------------------------------------------------------------------------------------------ // Creates a mesh for the given ColladaMesh face subset and returns the newly created mesh aiMesh* ColladaLoader::CreateMesh( const ColladaParser& pParser, const Collada::Mesh* pSrcMesh, const Collada::SubMesh& pSubMesh, @@ -572,10 +597,10 @@ aiMesh* ColladaLoader::CreateMesh( const ColladaParser& pParser, const Collada:: // count the vertices addressed by its faces const size_t numVertices = std::accumulate( pSrcMesh->mFaceSize.begin() + pStartFace, - pSrcMesh->mFaceSize.begin() + pStartFace + pSubMesh.mNumFaces, 0); + pSrcMesh->mFaceSize.begin() + pStartFace + pSubMesh.mNumFaces, size_t(0)); // copy positions - dstMesh->mNumVertices = numVertices; + dstMesh->mNumVertices = static_cast(numVertices); dstMesh->mVertices = new aiVector3D[numVertices]; std::copy( pSrcMesh->mPositions.begin() + pStartVertex, pSrcMesh->mPositions.begin() + pStartVertex + numVertices, dstMesh->mVertices); @@ -634,20 +659,82 @@ aiMesh* ColladaLoader::CreateMesh( const ColladaParser& pParser, const Collada:: // create faces. Due to the fact that each face uses unique vertices, we can simply count up on each vertex size_t vertex = 0; - dstMesh->mNumFaces = pSubMesh.mNumFaces; + dstMesh->mNumFaces = static_cast(pSubMesh.mNumFaces); dstMesh->mFaces = new aiFace[dstMesh->mNumFaces]; for( size_t a = 0; a < dstMesh->mNumFaces; ++a) { size_t s = pSrcMesh->mFaceSize[ pStartFace + a]; aiFace& face = dstMesh->mFaces[a]; - face.mNumIndices = s; + face.mNumIndices = static_cast(s); face.mIndices = new unsigned int[s]; for( size_t b = 0; b < s; ++b) - face.mIndices[b] = vertex++; + face.mIndices[b] = static_cast(vertex++); + } + + // create morph target meshes if any + std::vector targetMeshes; + std::vector targetWeights; + Collada::MorphMethod method; + + for(std::map::const_iterator it = pParser.mControllerLibrary.begin(); + it != pParser.mControllerLibrary.end(); it++) + { + const Collada::Controller &c = it->second; + const Collada::Mesh* baseMesh = pParser.ResolveLibraryReference( pParser.mMeshLibrary, c.mMeshId); + + if (c.mType == Collada::Morph && baseMesh->mName == pSrcMesh->mName) + { + const Collada::Accessor& targetAccessor = pParser.ResolveLibraryReference( pParser.mAccessorLibrary, c.mMorphTarget); + const Collada::Accessor& weightAccessor = pParser.ResolveLibraryReference( pParser.mAccessorLibrary, c.mMorphWeight); + const Collada::Data& targetData = pParser.ResolveLibraryReference( pParser.mDataLibrary, targetAccessor.mSource); + const Collada::Data& weightData = pParser.ResolveLibraryReference( pParser.mDataLibrary, weightAccessor.mSource); + + // take method + method = c.mMethod; + + if (!targetData.mIsStringArray) + throw DeadlyImportError( "target data must contain id. "); + if (weightData.mIsStringArray) + throw DeadlyImportError( "target weight data must not be textual "); + + for (unsigned int i = 0; i < targetData.mStrings.size(); ++i) + { + const Collada::Mesh* targetMesh = pParser.ResolveLibraryReference(pParser.mMeshLibrary, targetData.mStrings.at(i)); + + aiMesh *aimesh = findMesh(targetMesh->mName); + if (!aimesh) + { + if (targetMesh->mSubMeshes.size() > 1) + throw DeadlyImportError( "Morhing target mesh must be a single"); + aimesh = CreateMesh(pParser, targetMesh, targetMesh->mSubMeshes.at(0), NULL, 0, 0); + mTargetMeshes.push_back(aimesh); + } + targetMeshes.push_back(aimesh); + } + for (unsigned int i = 0; i < weightData.mValues.size(); ++i) + targetWeights.push_back(weightData.mValues.at(i)); + } + } + if (targetMeshes.size() > 0 && targetWeights.size() == targetMeshes.size()) + { + std::vector animMeshes; + for (unsigned int i = 0; i < targetMeshes.size(); i++) + { + aiAnimMesh *animMesh = aiCreateAnimMesh(targetMeshes.at(i)); + animMesh->mWeight = targetWeights[i]; + animMeshes.push_back(animMesh); + } + dstMesh->mMethod = (method == Collada::Relative) + ? aiMorphingMethod_MORPH_RELATIVE + : aiMorphingMethod_MORPH_NORMALIZED; + dstMesh->mAnimMeshes = new aiAnimMesh*[animMeshes.size()]; + dstMesh->mNumAnimMeshes = animMeshes.size(); + for (unsigned int i = 0; i < animMeshes.size(); i++) + dstMesh->mAnimMeshes[i] = animMeshes.at(i); } // create bones if given - if( pSrcController) + if( pSrcController && pSrcController->mType == Collada::Skin) { // refuse if the vertex count does not match // if( pSrcController->mWeightCounts.size() != dstMesh->mNumVertices) @@ -710,7 +797,7 @@ aiMesh* ColladaLoader::CreateMesh( const ColladaParser& pParser, const Collada:: if( weight > 0.0f) { aiVertexWeight w; - w.mVertexId = a - pStartVertex; + w.mVertexId = static_cast(a - pStartVertex); w.mWeight = weight; dstBones[jointIndex].push_back( w); } @@ -724,7 +811,7 @@ aiMesh* ColladaLoader::CreateMesh( const ColladaParser& pParser, const Collada:: numRemainingBones++; // create bone array and copy bone weights one by one - dstMesh->mNumBones = numRemainingBones; + dstMesh->mNumBones = static_cast(numRemainingBones); dstMesh->mBones = new aiBone*[numRemainingBones]; size_t boneCount = 0; for( size_t a = 0; a < numBones; ++a) @@ -748,7 +835,7 @@ aiMesh* ColladaLoader::CreateMesh( const ColladaParser& pParser, const Collada:: bone->mOffsetMatrix.c2 = ReadFloat( jointMatrixAcc, jointMatrices, a, 9); bone->mOffsetMatrix.c3 = ReadFloat( jointMatrixAcc, jointMatrices, a, 10); bone->mOffsetMatrix.c4 = ReadFloat( jointMatrixAcc, jointMatrices, a, 11); - bone->mNumWeights = dstBones[a].size(); + bone->mNumWeights = static_cast(dstBones[a].size()); bone->mWeights = new aiVertexWeight[bone->mNumWeights]; std::copy( dstBones[a].begin(), dstBones[a].end(), bone->mWeights); @@ -798,7 +885,7 @@ aiMesh* ColladaLoader::CreateMesh( const ColladaParser& pParser, const Collada:: // Stores all meshes in the given scene void ColladaLoader::StoreSceneMeshes( aiScene* pScene) { - pScene->mNumMeshes = mMeshes.size(); + pScene->mNumMeshes = static_cast(mMeshes.size()); if( mMeshes.size() > 0) { pScene->mMeshes = new aiMesh*[mMeshes.size()]; @@ -811,7 +898,7 @@ void ColladaLoader::StoreSceneMeshes( aiScene* pScene) // Stores all cameras in the given scene void ColladaLoader::StoreSceneCameras( aiScene* pScene) { - pScene->mNumCameras = mCameras.size(); + pScene->mNumCameras = static_cast(mCameras.size()); if( mCameras.size() > 0) { pScene->mCameras = new aiCamera*[mCameras.size()]; @@ -824,7 +911,7 @@ void ColladaLoader::StoreSceneCameras( aiScene* pScene) // Stores all lights in the given scene void ColladaLoader::StoreSceneLights( aiScene* pScene) { - pScene->mNumLights = mLights.size(); + pScene->mNumLights = static_cast(mLights.size()); if( mLights.size() > 0) { pScene->mLights = new aiLight*[mLights.size()]; @@ -837,7 +924,7 @@ void ColladaLoader::StoreSceneLights( aiScene* pScene) // Stores all textures in the given scene void ColladaLoader::StoreSceneTextures( aiScene* pScene) { - pScene->mNumTextures = mTextures.size(); + pScene->mNumTextures = static_cast(mTextures.size()); if( mTextures.size() > 0) { pScene->mTextures = new aiTexture*[mTextures.size()]; @@ -850,7 +937,7 @@ void ColladaLoader::StoreSceneTextures( aiScene* pScene) // Stores all materials in the given scene void ColladaLoader::StoreSceneMaterials( aiScene* pScene) { - pScene->mNumMaterials = newMats.size(); + pScene->mNumMaterials = static_cast(newMats.size()); if (newMats.size() > 0) { pScene->mMaterials = new aiMaterial*[newMats.size()]; @@ -891,7 +978,7 @@ void ColladaLoader::StoreAnimations( aiScene* pScene, const ColladaParser& pPars combinedAnim->mName = aiString( std::string( "combinedAnim_") + char( '0' + a)); combinedAnim->mDuration = templateAnim->mDuration; combinedAnim->mTicksPerSecond = templateAnim->mTicksPerSecond; - combinedAnim->mNumChannels = collectedAnimIndices.size() + 1; + combinedAnim->mNumChannels = static_cast(collectedAnimIndices.size() + 1); combinedAnim->mChannels = new aiNodeAnim*[combinedAnim->mNumChannels]; // add the template anim as first channel by moving its aiNodeAnim to the combined animation combinedAnim->mChannels[0] = templateAnim->mChannels[0]; @@ -923,7 +1010,7 @@ void ColladaLoader::StoreAnimations( aiScene* pScene, const ColladaParser& pPars // now store all anims in the scene if( !mAnims.empty()) { - pScene->mNumAnimations = mAnims.size(); + pScene->mNumAnimations = static_cast(mAnims.size()); pScene->mAnimations = new aiAnimation*[mAnims.size()]; std::copy( mAnims.begin(), mAnims.end(), pScene->mAnimations); } @@ -946,6 +1033,68 @@ void ColladaLoader::StoreAnimations( aiScene* pScene, const ColladaParser& pPars CreateAnimation( pScene, pParser, pSrcAnim, animName); } +struct MorphTimeValues +{ + float mTime; + struct key + { + float mWeight; + unsigned int mValue; + }; + std::vector mKeys; +}; + +void insertMorphTimeValue(std::vector &values, float time, float weight, unsigned int value) +{ + MorphTimeValues::key k; + k.mValue = value; + k.mWeight = weight; + if (values.size() == 0 || time < values[0].mTime) + { + MorphTimeValues val; + val.mTime = time; + val.mKeys.push_back(k); + values.insert(values.begin(), val); + return; + } + if (time > values.back().mTime) + { + MorphTimeValues val; + val.mTime = time; + val.mKeys.push_back(k); + values.insert(values.end(), val); + return; + } + for (unsigned int i = 0; i < values.size(); i++) + { + if (std::abs(time - values[i].mTime) < 1e-6f) + { + values[i].mKeys.push_back(k); + return; + } else if (time > values[i].mTime && time < values[i+1].mTime) + { + MorphTimeValues val; + val.mTime = time; + val.mKeys.push_back(k); + values.insert(values.begin() + i, val); + return; + } + } + // should not get here +} + +float getWeightAtKey(const std::vector &values, int key, unsigned int value) +{ + for (unsigned int i = 0; i < values[key].mKeys.size(); i++) + { + if (values[key].mKeys[i].mValue == value) + return values[key].mKeys[i].mWeight; + } + // no value at key found, try to interpolate if present at other keys. if not, return zero + // TODO: interpolation + return 0.0f; +} + // ------------------------------------------------------------------------------------------------ // Constructs the animation for the given source anim void ColladaLoader::CreateAnimation( aiScene* pScene, const ColladaParser& pParser, const Collada::Animation* pSrcAnim, const std::string& pName) @@ -955,6 +1104,8 @@ void ColladaLoader::CreateAnimation( aiScene* pScene, const ColladaParser& pPars CollectNodes( pScene->mRootNode, nodes); std::vector anims; + std::vector morphAnims; + for( std::vector::const_iterator nit = nodes.begin(); nit != nodes.end(); ++nit) { // find all the collada anim channels which refer to the current node @@ -978,7 +1129,20 @@ void ColladaLoader::CreateAnimation( aiScene* pScene, const ColladaParser& pPars // find the slash that separates the node name - there should be only one std::string::size_type slashPos = srcChannel.mTarget.find( '/'); if( slashPos == std::string::npos) + { + std::string::size_type targetPos = srcChannel.mTarget.find(srcNode->mID); + if (targetPos == std::string::npos) + continue; + + // not node transform, but something else. store as unknown animation channel for now + entry.mChannel = &(*cit); + entry.mTargetId = srcChannel.mTarget.substr(targetPos + pSrcAnim->mName.length(), + srcChannel.mTarget.length() - targetPos - pSrcAnim->mName.length()); + if (entry.mTargetId.front() == '-') + entry.mTargetId = entry.mTargetId.substr(1); + entries.push_back(entry); continue; + } if( srcChannel.mTarget.find( '/', slashPos+1) != std::string::npos) continue; std::string targetID = srcChannel.mTarget.substr( 0, slashPos); @@ -1058,8 +1222,14 @@ void ColladaLoader::CreateAnimation( aiScene* pScene, const ColladaParser& pPars if( srcNode->mTransforms[a].mID == entry.mTransformId) entry.mTransformIndex = a; - if( entry.mTransformIndex == SIZE_MAX) { - continue; + if( entry.mTransformIndex == SIZE_MAX) + { + if (entry.mTransformId.find("morph-weights") != std::string::npos) + { + entry.mTargetId = entry.mTransformId; + entry.mTransformId = ""; + } else + continue; } entry.mChannel = &(*cit); @@ -1203,49 +1373,125 @@ void ColladaLoader::CreateAnimation( aiScene* pScene, const ColladaParser& pPars // ai_assert( resultTrafos.size() > 0); // build an animation channel for the given node out of these trafo keys - if( !resultTrafos.empty() ) - { - aiNodeAnim* dstAnim = new aiNodeAnim; - dstAnim->mNodeName = nodeName; - dstAnim->mNumPositionKeys = resultTrafos.size(); - dstAnim->mNumRotationKeys= resultTrafos.size(); - dstAnim->mNumScalingKeys = resultTrafos.size(); - dstAnim->mPositionKeys = new aiVectorKey[resultTrafos.size()]; - dstAnim->mRotationKeys = new aiQuatKey[resultTrafos.size()]; - dstAnim->mScalingKeys = new aiVectorKey[resultTrafos.size()]; + if( !resultTrafos.empty() ) + { + aiNodeAnim* dstAnim = new aiNodeAnim; + dstAnim->mNodeName = nodeName; + dstAnim->mNumPositionKeys = resultTrafos.size(); + dstAnim->mNumRotationKeys= resultTrafos.size(); + dstAnim->mNumScalingKeys = resultTrafos.size(); + dstAnim->mPositionKeys = new aiVectorKey[resultTrafos.size()]; + dstAnim->mRotationKeys = new aiQuatKey[resultTrafos.size()]; + dstAnim->mScalingKeys = new aiVectorKey[resultTrafos.size()]; - for( size_t a = 0; a < resultTrafos.size(); ++a) - { - aiMatrix4x4 mat = resultTrafos[a]; - double time = double( mat.d4); // remember? time is stored in mat.d4 - mat.d4 = 1.0f; + for( size_t a = 0; a < resultTrafos.size(); ++a) + { + aiMatrix4x4 mat = resultTrafos[a]; + double time = double( mat.d4); // remember? time is stored in mat.d4 + mat.d4 = 1.0f; - dstAnim->mPositionKeys[a].mTime = time; - dstAnim->mRotationKeys[a].mTime = time; - dstAnim->mScalingKeys[a].mTime = time; - mat.Decompose( dstAnim->mScalingKeys[a].mValue, dstAnim->mRotationKeys[a].mValue, dstAnim->mPositionKeys[a].mValue); - } + dstAnim->mPositionKeys[a].mTime = time; + dstAnim->mRotationKeys[a].mTime = time; + dstAnim->mScalingKeys[a].mTime = time; + mat.Decompose( dstAnim->mScalingKeys[a].mValue, dstAnim->mRotationKeys[a].mValue, dstAnim->mPositionKeys[a].mValue); + } - anims.push_back( dstAnim); - } else - { - DefaultLogger::get()->warn( "Collada loader: found empty animation channel, ignored. Please check your exporter."); - } + anims.push_back( dstAnim); + } else + { + DefaultLogger::get()->warn( "Collada loader: found empty animation channel, ignored. Please check your exporter."); + } + + if( !entries.empty() && entries.front().mTimeAccessor->mCount > 0 ) + { + std::vector morphChannels; + for( std::vector::iterator it = entries.begin(); it != entries.end(); ++it) + { + Collada::ChannelEntry& e = *it; + + // skip non-transform types + if (e.mTargetId.empty()) + continue; + + if (e.mTargetId.find("morph-weights") != std::string::npos) + morphChannels.push_back(e); + } + if (morphChannels.size() > 0) + { + // either 1) morph weight animation count should contain morph target count channels + // or 2) one channel with morph target count arrays + // assume first + + aiMeshMorphAnim *morphAnim = new aiMeshMorphAnim; + morphAnim->mName.Set(nodeName); + + std::vector morphTimeValues; + + int morphAnimChannelIndex = 0; + for( std::vector::iterator it = morphChannels.begin(); it != morphChannels.end(); ++it) + { + Collada::ChannelEntry& e = *it; + std::string::size_type apos = e.mTargetId.find('('); + std::string::size_type bpos = e.mTargetId.find(')'); + if (apos == std::string::npos || bpos == std::string::npos) + // unknown way to specify weight -> ignore this animation + continue; + + // weight target can be in format Weight_M_N, Weight_N, WeightN, or some other way + // we ignore the name and just assume the channels are in the right order + for (unsigned int i = 0; i < e.mTimeData->mValues.size(); i++) + insertMorphTimeValue(morphTimeValues, e.mTimeData->mValues.at(i), e.mValueData->mValues.at(i), morphAnimChannelIndex); + + ++morphAnimChannelIndex; + } + + morphAnim->mNumKeys = morphTimeValues.size(); + morphAnim->mKeys = new aiMeshMorphKey[morphAnim->mNumKeys]; + for (unsigned int key = 0; key < morphAnim->mNumKeys; key++) + { + morphAnim->mKeys[key].mNumValuesAndWeights = morphChannels.size(); + morphAnim->mKeys[key].mValues = new unsigned int [morphChannels.size()]; + morphAnim->mKeys[key].mWeights = new double [morphChannels.size()]; + + morphAnim->mKeys[key].mTime = morphTimeValues[key].mTime; + for (unsigned int valueIndex = 0; valueIndex < morphChannels.size(); valueIndex++) + { + morphAnim->mKeys[key].mValues[valueIndex] = valueIndex; + morphAnim->mKeys[key].mWeights[valueIndex] = getWeightAtKey(morphTimeValues, key, valueIndex); + } + } + + morphAnims.push_back(morphAnim); + } + } } - if( !anims.empty()) + if( !anims.empty() || !morphAnims.empty()) { aiAnimation* anim = new aiAnimation; anim->mName.Set( pName); anim->mNumChannels = anims.size(); - anim->mChannels = new aiNodeAnim*[anims.size()]; - std::copy( anims.begin(), anims.end(), anim->mChannels); + if (anim->mNumChannels > 0) + { + anim->mChannels = new aiNodeAnim*[anims.size()]; + std::copy( anims.begin(), anims.end(), anim->mChannels); + } + anim->mNumMorphMeshChannels = morphAnims.size(); + if (anim->mNumMorphMeshChannels > 0) + { + anim->mMorphMeshChannels = new aiMeshMorphAnim*[anim->mNumMorphMeshChannels]; + std::copy( morphAnims.begin(), morphAnims.end(), anim->mMorphMeshChannels); + } anim->mDuration = 0.0f; for( size_t a = 0; a < anims.size(); ++a) { - anim->mDuration = std::max( anim->mDuration, anims[a]->mPositionKeys[anims[a]->mNumPositionKeys-1].mTime); - anim->mDuration = std::max( anim->mDuration, anims[a]->mRotationKeys[anims[a]->mNumRotationKeys-1].mTime); - anim->mDuration = std::max( anim->mDuration, anims[a]->mScalingKeys[anims[a]->mNumScalingKeys-1].mTime); + anim->mDuration = std::max( anim->mDuration, anims[a]->mPositionKeys[anims[a]->mNumPositionKeys-1].mTime); + anim->mDuration = std::max( anim->mDuration, anims[a]->mRotationKeys[anims[a]->mNumRotationKeys-1].mTime); + anim->mDuration = std::max( anim->mDuration, anims[a]->mScalingKeys[anims[a]->mNumScalingKeys-1].mTime); + } + for (size_t a = 0; a < morphAnims.size(); ++a) + { + anim->mDuration = std::max(anim->mDuration, morphAnims[a]->mKeys[morphAnims[a]->mNumKeys-1].mTime); } anim->mTicksPerSecond = 1; mAnims.push_back( anim); @@ -1520,13 +1766,13 @@ aiString ColladaLoader::FindFilenameForEffectTexture( const ColladaParser& pPars // and copy texture data tex->mHeight = 0; - tex->mWidth = imIt->second.mImageData.size(); + tex->mWidth = static_cast(imIt->second.mImageData.size()); tex->pcData = (aiTexel*)new char[tex->mWidth]; memcpy(tex->pcData,&imIt->second.mImageData[0],tex->mWidth); // setup texture reference string result.data[0] = '*'; - result.length = 1 + ASSIMP_itoa10(result.data+1,MAXLEN-1,mTextures.size()); + result.length = 1 + ASSIMP_itoa10(result.data+1,static_cast(MAXLEN-1),static_cast(mTextures.size())); // and add this texture to the list mTextures.push_back(tex); diff --git a/code/ColladaLoader.h b/code/ColladaLoader.h index 716b437d8..2b31531d2 100644 --- a/code/ColladaLoader.h +++ b/code/ColladaLoader.h @@ -117,6 +117,8 @@ protected: /** Builds meshes for the given node and references them */ void BuildMeshesForNode( const ColladaParser& pParser, const Collada::Node* pNode, aiNode* pTarget); + + aiMesh *findMesh(std::string meshid); /** Creates a mesh for the given ColladaMesh face subset and returns the newly created mesh */ aiMesh* CreateMesh( const ColladaParser& pParser, const Collada::Mesh* pSrcMesh, const Collada::SubMesh& pSubMesh, @@ -223,6 +225,9 @@ protected: /** Accumulated meshes for the target scene */ std::vector mMeshes; + + /** Accumulated morph target meshes */ + std::vector mTargetMeshes; /** Temporary material list */ std::vector > newMats; diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index 1fd762e40..3ed41a441 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -59,7 +59,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include - using namespace Assimp; using namespace Assimp::Collada; using namespace Assimp::Formatter; @@ -586,6 +585,12 @@ void ColladaParser::ReadAnimationSampler( Collada::AnimationChannel& pChannel) pChannel.mSourceTimes = source; else if( strcmp( semantic, "OUTPUT") == 0) pChannel.mSourceValues = source; + else if( strcmp( semantic, "IN_TANGENT") == 0) + pChannel.mInTanValues = source; + else if( strcmp( semantic, "OUT_TANGENT") == 0) + pChannel.mOutTanValues = source; + else if( strcmp( semantic, "INTERPOLATION") == 0) + pChannel.mInterpolationValues = source; if( !mReader->isEmptyElement()) SkipElement(); @@ -648,6 +653,9 @@ void ColladaParser::ReadControllerLibrary() // Reads a controller into the given mesh structure void ColladaParser::ReadController( Collada::Controller& pController) { + // initial values + pController.mType = Skin; + pController.mMethod = Normalized; while( mReader->read()) { if( mReader->getNodeType() == irr::io::EXN_ELEMENT) @@ -655,8 +663,15 @@ void ColladaParser::ReadController( Collada::Controller& pController) // two types of controllers: "skin" and "morph". Only the first one is relevant, we skip the other if( IsElement( "morph")) { - // should skip everything inside, so there's no danger of catching elements inbetween - SkipElement(); + pController.mType = Morph; + int baseIndex = GetAttribute("source"); + pController.mMeshId = mReader->getAttributeValue(baseIndex) + 1; + int methodIndex = GetAttribute("method"); + if (methodIndex > 0) { + const char *method = mReader->getAttributeValue(methodIndex); + if (strcmp(method, "RELATIVE") == 0) + pController.mMethod = Relative; + } } else if( IsElement( "skin")) { @@ -668,18 +683,18 @@ void ColladaParser::ReadController( Collada::Controller& pController) else if( IsElement( "bind_shape_matrix")) { // content is 16 floats to define a matrix... it seems to be important for some models - const char* content = GetTextContent(); + const char* content = GetTextContent(); - // read the 16 floats - for( unsigned int a = 0; a < 16; a++) - { - // read a number - content = fast_atoreal_move( content, pController.mBindShapeMatrix[a]); - // skip whitespace after it - SkipSpacesAndLineEnd( &content); - } + // read the 16 floats + for( unsigned int a = 0; a < 16; a++) + { + // read a number + content = fast_atoreal_move( content, pController.mBindShapeMatrix[a]); + // skip whitespace after it + SkipSpacesAndLineEnd( &content); + } - TestClosing( "bind_shape_matrix"); + TestClosing( "bind_shape_matrix"); } else if( IsElement( "source")) { @@ -694,6 +709,32 @@ void ColladaParser::ReadController( Collada::Controller& pController) { ReadControllerWeights( pController); } + else if ( IsElement( "targets" )) + { + while (mReader->read()) { + if( mReader->getNodeType() == irr::io::EXN_ELEMENT) { + if ( IsElement( "input")) { + int semanticsIndex = GetAttribute("semantic"); + int sourceIndex = GetAttribute("source"); + + const char *semantics = mReader->getAttributeValue(semanticsIndex); + const char *source = mReader->getAttributeValue(sourceIndex); + if (strcmp(semantics, "MORPH_TARGET") == 0) { + pController.mMorphTarget = source + 1; + } + else if (strcmp(semantics, "MORPH_WEIGHT") == 0) + { + pController.mMorphWeight = source + 1; + } + } + } else if( mReader->getNodeType() == irr::io::EXN_ELEMENT_END) { + if( strcmp( mReader->getNodeName(), "targets") == 0) + break; + else + ThrowException( "Expected end of element."); + } + } + } else { // ignore the rest @@ -704,7 +745,7 @@ void ColladaParser::ReadController( Collada::Controller& pController) { if( strcmp( mReader->getNodeName(), "controller") == 0) break; - else if( strcmp( mReader->getNodeName(), "skin") != 0) + else if( strcmp( mReader->getNodeName(), "skin") != 0 && strcmp( mReader->getNodeName(), "morph") != 0) ThrowException( "Expected end of element."); } } @@ -1593,7 +1634,7 @@ void ColladaParser::ReadEffectColor( aiColor4D& pColor, Sampler& pSampler) } else if( IsElement( "texture")) { - // get name of source textur/sampler + // get name of source texture/sampler int attrTex = GetAttribute( "texture"); pSampler.mName = mReader->getAttributeValue( attrTex); @@ -2312,9 +2353,9 @@ size_t ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pP ThrowException( "Expected different index count in

element."); // find the data for all sources - for( std::vector::iterator it = pMesh->mPerVertexData.begin(); it != pMesh->mPerVertexData.end(); ++it) + for( std::vector::iterator it = pMesh->mPerVertexData.begin(); it != pMesh->mPerVertexData.end(); ++it) { - InputChannel& input = *it; + InputChannel& input = *it; if( input.mResolved) continue; @@ -2326,9 +2367,9 @@ size_t ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pP acc->mData = &ResolveLibraryReference( mDataLibrary, acc->mSource); } // and the same for the per-index channels - for( std::vector::iterator it = pPerIndexChannels.begin(); it != pPerIndexChannels.end(); ++it) - { - InputChannel& input = *it; + for( std::vector::iterator it = pPerIndexChannels.begin(); it != pPerIndexChannels.end(); ++it) + { + InputChannel& input = *it; if( input.mResolved) continue; @@ -2410,6 +2451,9 @@ size_t ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pP return numPrimitives; } +///@note This function willn't work correctly if both PerIndex and PerVertex channels have same channels. +///For example if TEXCOORD present in both and tags this function will create wrong uv coordinates. +///It's not clear from COLLADA documentation is this allowed or not. For now only exporter fixed to avoid such behavior void ColladaParser::CopyVertex(size_t currentVertex, size_t numOffsets, size_t numPoints, size_t perVertexOffset, Mesh* pMesh, std::vector& pPerIndexChannels, size_t currentPrimitive, const std::vector& indices){ // calculate the base offset of the vertex whose attributes we ant to copy size_t baseOffset = currentPrimitive * numOffsets * numPoints + currentVertex * numOffsets; @@ -2535,7 +2579,7 @@ void ColladaParser::ExtractDataObjectFromChannel( const InputChannel& pInput, si aiColor4D result(0, 0, 0, 1); for (size_t i = 0; i < pInput.mResolved->mSize; ++i) { - result[i] = obj[pInput.mResolved->mSubOffset[i]]; + result[static_cast(i)] = obj[pInput.mResolved->mSubOffset[i]]; } pMesh->mColors[pInput.mIndex].push_back(result); } else @@ -2828,7 +2872,7 @@ void ColladaParser::ReadNodeGeometry( Node* pNode) if( !mReader->isEmptyElement()) { - // read material associations. Ignore additional elements inbetween + // read material associations. Ignore additional elements in between while( mReader->read()) { if( mReader->getNodeType() == irr::io::EXN_ELEMENT) diff --git a/code/ColladaParser.h b/code/ColladaParser.h index 645ef0dc2..4f2b6b8ce 100644 --- a/code/ColladaParser.h +++ b/code/ColladaParser.h @@ -49,7 +49,6 @@ #include "ColladaHelper.h" #include #include "TinyFormatter.h" -#include namespace Assimp { @@ -268,8 +267,7 @@ namespace Assimp Collada::InputType GetTypeForSemantic( const std::string& pSemantic); /** Finds the item in the given library by its reference, throws if not found */ - template const Type& ResolveLibraryReference( - const std::map& pLibrary, const std::string& pURL) const; + template const Type& ResolveLibraryReference( const std::map& pLibrary, const std::string& pURL) const; protected: /** Filename, for a verbose error message */ diff --git a/code/CreateAnimMesh.cpp b/code/CreateAnimMesh.cpp new file mode 100644 index 000000000..094a414bf --- /dev/null +++ b/code/CreateAnimMesh.cpp @@ -0,0 +1,92 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (C) 2016 The Qt Company Ltd. +Copyright (c) 2006-2012, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "CreateAnimMesh.h" + +namespace Assimp { + +aiAnimMesh *aiCreateAnimMesh(const aiMesh *mesh) +{ + aiAnimMesh *animesh = new aiAnimMesh; + animesh->mVertices = NULL; + animesh->mNormals = NULL; + animesh->mTangents = NULL; + animesh->mBitangents = NULL; + animesh->mNumVertices = mesh->mNumVertices; + if (mesh->mVertices) { + animesh->mVertices = new aiVector3D[animesh->mNumVertices]; + std::memcpy(animesh->mVertices, mesh->mVertices, mesh->mNumVertices * sizeof(aiVector3D)); + } + if (mesh->mNormals) { + animesh->mNormals = new aiVector3D[animesh->mNumVertices]; + std::memcpy(animesh->mNormals, mesh->mNormals, mesh->mNumVertices * sizeof(aiVector3D)); + } + if (mesh->mTangents) { + animesh->mTangents = new aiVector3D[animesh->mNumVertices]; + std::memcpy(animesh->mTangents, mesh->mTangents, mesh->mNumVertices * sizeof(aiVector3D)); + } + if (mesh->mBitangents) { + animesh->mBitangents = new aiVector3D[animesh->mNumVertices]; + std::memcpy(animesh->mBitangents, mesh->mBitangents, mesh->mNumVertices * sizeof(aiVector3D)); + } + + for (int i = 0; i < AI_MAX_NUMBER_OF_COLOR_SETS; ++i) { + if (mesh->mColors[i]) { + animesh->mColors[i] = new aiColor4D[animesh->mNumVertices]; + std::memcpy(animesh->mColors[i], mesh->mColors[i], mesh->mNumVertices * sizeof(aiColor4D)); + } else { + animesh->mColors[i] = NULL; + } + } + + for (int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) { + if (mesh->mTextureCoords[i]) { + animesh->mTextureCoords[i] = new aiVector3D[animesh->mNumVertices]; + std::memcpy(animesh->mTextureCoords[i], mesh->mTextureCoords[i], mesh->mNumVertices * sizeof(aiVector3D)); + } else { + animesh->mTextureCoords[i] = NULL; + } + } + return animesh; +} + +} // end of namespace Assimp diff --git a/code/CreateAnimMesh.h b/code/CreateAnimMesh.h new file mode 100644 index 000000000..c5ceb4028 --- /dev/null +++ b/code/CreateAnimMesh.h @@ -0,0 +1,56 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file CreateAnimMesh.h + * Create AnimMesh from Mesh + */ +#ifndef INCLUDED_AI_CREATE_ANIM_MESH_H +#define INCLUDED_AI_CREATE_ANIM_MESH_H + +#include + +namespace Assimp { + +/** Create aiAnimMesh from aiMesh. */ +aiAnimMesh *aiCreateAnimMesh(const aiMesh *mesh); + +} // end of namespace Assimp +#endif // INCLUDED_AI_CREATE_ANIM_MESH_H + diff --git a/code/D3MFImporter.cpp b/code/D3MFImporter.cpp index e75b89f7e..500b27528 100644 --- a/code/D3MFImporter.cpp +++ b/code/D3MFImporter.cpp @@ -38,29 +38,23 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ +#ifndef ASSIMP_BUILD_NO_3MF_IMPORTER + #include "D3MFImporter.h" #include -#include #include #include +#include #include "StringComparison.h" #include "StringUtils.h" - #include -#include #include #include -#include #include -#include #include -#include - -#ifndef ASSIMP_BUILD_NO_3MF_IMPORTER - #include "D3MFOpcPackage.h" #include #include "irrXMLWrapper.h" @@ -68,7 +62,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { namespace D3MF { - namespace XmlTag { static const std::string model = "model"; static const std::string metadata = "metadata"; @@ -104,31 +97,21 @@ public: } - void ImportXml(aiScene* scene) - { - - scene->mFlags |= AI_SCENE_FLAGS_NON_VERBOSE_FORMAT; - + void ImportXml(aiScene* scene) { scene->mRootNode = new aiNode(); std::vector children; - while(ReadToEndElement(D3MF::XmlTag::model)) - { - - if(xmlReader->getNodeName() == D3MF::XmlTag::object) - { + while(ReadToEndElement(D3MF::XmlTag::model)) { + if(xmlReader->getNodeName() == D3MF::XmlTag::object) { children.push_back(ReadObject(scene)); - } - else if(xmlReader->getNodeName() == D3MF::XmlTag::build) - { - + } else if(xmlReader->getNodeName() == D3MF::XmlTag::build) { + // ??? } } if(scene->mRootNode->mName.length == 0) scene->mRootNode->mName.Set("3MF"); - scene->mNumMeshes = static_cast(meshes.size()); scene->mMeshes = new aiMesh*[scene->mNumMeshes](); @@ -172,7 +155,7 @@ private: mesh->mName.Set(name); meshes.push_back(mesh); - meshIds.push_back(meshIdx); + meshIds.push_back(static_cast(meshIdx)); meshIdx++; } @@ -229,9 +212,10 @@ private: aiVector3D ReadVertex() { aiVector3D vertex; + vertex.x = ai_strtof(xmlReader->getAttributeValue(D3MF::XmlTag::x.c_str()), nullptr); vertex.y = ai_strtof(xmlReader->getAttributeValue(D3MF::XmlTag::y.c_str()), nullptr); - vertex.z = ai_strtof>(xmlReader->getAttributeValue(D3MF::XmlTag::z.c_str()), nullptr); + vertex.z = ai_strtof(xmlReader->getAttributeValue(D3MF::XmlTag::z.c_str()), nullptr); return vertex; } @@ -312,8 +296,6 @@ private: private: std::vector meshes; XmlReader* xmlReader; - - }; } //namespace D3MF diff --git a/code/D3MFImporter.h b/code/D3MFImporter.h index 36c6d53e4..372dc59ed 100644 --- a/code/D3MFImporter.h +++ b/code/D3MFImporter.h @@ -41,9 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_D3MFLOADER_H_INCLUDED #define AI_D3MFLOADER_H_INCLUDED -#include -#include - #include "BaseImporter.h" namespace Assimp { diff --git a/code/D3MFOpcPackage.cpp b/code/D3MFOpcPackage.cpp index 2e63a346e..a9633b6a5 100644 --- a/code/D3MFOpcPackage.cpp +++ b/code/D3MFOpcPackage.cpp @@ -38,6 +38,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ +#ifndef ASSIMP_BUILD_NO_3MF_IMPORTER #include "D3MFOpcPackage.h" #include "Exceptional.h" @@ -52,9 +53,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include -#include - -#ifndef ASSIMP_BUILD_NO_3MF_IMPORTER #include @@ -123,19 +121,19 @@ voidpf IOSystem2Unzip::open(voidpf opaque, const char* filename, int mode) { uLong IOSystem2Unzip::read(voidpf /*opaque*/, voidpf stream, void* buf, uLong size) { IOStream* io_stream = (IOStream*) stream; - return io_stream->Read(buf, 1, size); + return static_cast(io_stream->Read(buf, 1, size)); } uLong IOSystem2Unzip::write(voidpf /*opaque*/, voidpf stream, const void* buf, uLong size) { IOStream* io_stream = (IOStream*) stream; - return io_stream->Write(buf, 1, size); + return static_cast(io_stream->Write(buf, 1, size)); } long IOSystem2Unzip::tell(voidpf /*opaque*/, voidpf stream) { IOStream* io_stream = (IOStream*) stream; - return io_stream->Tell(); + return static_cast(io_stream->Tell()); } long IOSystem2Unzip::seek(voidpf /*opaque*/, voidpf stream, uLong offset, int origin) { diff --git a/code/D3MFOpcPackage.h b/code/D3MFOpcPackage.h index dd8a40aab..e63243676 100644 --- a/code/D3MFOpcPackage.h +++ b/code/D3MFOpcPackage.h @@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef D3MFOPCPACKAGE_H #define D3MFOPCPACKAGE_H -#include #include #include diff --git a/code/DXFLoader.cpp b/code/DXFLoader.cpp index 3e69eff1e..f1acb65f2 100644 --- a/code/DXFLoader.cpp +++ b/code/DXFLoader.cpp @@ -54,6 +54,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "DXFHelper.h" #include #include +#include + #include using namespace Assimp; @@ -223,8 +225,8 @@ void DXFImporter::ConvertMeshes(aiScene* pScene, DXF::FileData& output) unsigned int vcount = 0, icount = 0; for (const DXF::Block& bl : output.blocks) { for (std::shared_ptr pl : bl.lines) { - vcount += pl->positions.size(); - icount += pl->counts.size(); + vcount += static_cast(pl->positions.size()); + icount += static_cast(pl->counts.size()); } } @@ -296,7 +298,7 @@ void DXFImporter::ConvertMeshes(aiScene* pScene, DXF::FileData& output) for(const DXF::PolyLine* pl : corr[elem.second]){ // sum over all faces since we need to 'verbosify' them. cvert += std::accumulate(pl->counts.begin(),pl->counts.end(),0); - cface += pl->counts.size(); + cface += static_cast(pl->counts.size()); } aiVector3D* verts = mesh->mVertices = new aiVector3D[cvert]; @@ -705,7 +707,7 @@ void DXFImporter::ParsePolyLine(DXF::LineReader& reader, DXF::FileData& output) // closed polyline? if (line.flags & DXF_POLYLINE_FLAG_CLOSED) { - line.indices.push_back(line.positions.size()-1); + line.indices.push_back(static_cast(line.positions.size()-1)); line.indices.push_back(0); line.counts.push_back(2); } @@ -906,7 +908,7 @@ void DXFImporter::Parse3DFace(DXF::LineReader& reader, DXF::FileData& output) line.counts.push_back(cnt); for (unsigned int i = 0; i < cnt; ++i) { - line.indices.push_back(line.positions.size()); + line.indices.push_back(static_cast(line.positions.size())); line.positions.push_back(vip[i]); line.colors.push_back(clr); } diff --git a/code/DXFLoader.h b/code/DXFLoader.h index 13af4cdec..2b61c19a9 100644 --- a/code/DXFLoader.h +++ b/code/DXFLoader.h @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_DXFLOADER_H_INCLUDED #include "BaseImporter.h" +#include namespace Assimp { namespace DXF { diff --git a/code/DeboneProcess.cpp b/code/DeboneProcess.cpp index 5d688f813..41941b4ac 100644 --- a/code/DeboneProcess.cpp +++ b/code/DeboneProcess.cpp @@ -137,7 +137,7 @@ void DeboneProcess::Execute( aiScene* pScene) const aiString *find = newMeshes[b].second?&newMeshes[b].second->mName:0; aiNode *theNode = find?pScene->mRootNode->FindNode(*find):0; - std::pair push_pair(meshes.size(),theNode); + std::pair push_pair(static_cast(meshes.size()),theNode); mSubMeshIndices[a].push_back(push_pair); meshes.push_back(newMeshes[b].first); @@ -156,13 +156,13 @@ void DeboneProcess::Execute( aiScene* pScene) } else { // Mesh is kept unchanged - store it's new place in the mesh array - mSubMeshIndices[a].push_back(std::pair(meshes.size(),(aiNode*)0)); + mSubMeshIndices[a].push_back(std::pair(static_cast(meshes.size()),(aiNode*)0)); meshes.push_back(srcMesh); } } // rebuild the scene's mesh array - pScene->mNumMeshes = meshes.size(); + pScene->mNumMeshes = static_cast(meshes.size()); delete [] pScene->mMeshes; pScene->mMeshes = new aiMesh*[pScene->mNumMeshes]; std::copy( meshes.begin(), meshes.end(), pScene->mMeshes); @@ -382,7 +382,7 @@ void DeboneProcess::UpdateNode(aiNode* pNode) const // this will require two passes - unsigned int m = pNode->mNumMeshes, n = mSubMeshIndices.size(); + unsigned int m = static_cast(pNode->mNumMeshes), n = static_cast(mSubMeshIndices.size()); // first pass, look for meshes which have not moved @@ -390,7 +390,7 @@ void DeboneProcess::UpdateNode(aiNode* pNode) const unsigned int srcIndex = pNode->mMeshes[a]; const std::vector< std::pair< unsigned int,aiNode* > > &subMeshes = mSubMeshIndices[srcIndex]; - unsigned int nSubmeshes = subMeshes.size(); + unsigned int nSubmeshes = static_cast(subMeshes.size()); for(unsigned int b=0;b > &subMeshes = mSubMeshIndices[a]; - unsigned int nSubmeshes = subMeshes.size(); + unsigned int nSubmeshes = static_cast(subMeshes.size()); for(unsigned int b=0;bmMeshes; pNode->mMeshes = NULL; } - pNode->mNumMeshes = newMeshList.size(); + pNode->mNumMeshes = static_cast(newMeshList.size()); if(pNode->mNumMeshes) { pNode->mMeshes = new unsigned int[pNode->mNumMeshes]; diff --git a/code/DefaultIOStream.cpp b/code/DefaultIOStream.cpp index 11bad9b64..db1b6baf8 100644 --- a/code/DefaultIOStream.cpp +++ b/code/DefaultIOStream.cpp @@ -44,7 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include -#include "DefaultIOStream.h" +#include #include #include @@ -120,13 +120,13 @@ size_t DefaultIOStream::FileSize() const // // See here for details: // https://www.securecoding.cert.org/confluence/display/seccode/FIO19-C.+Do+not+use+fseek()+and+ftell()+to+compute+the+size+of+a+regular+file -#if defined _WIN32 +#if defined _WIN32 && (!defined __GNUC__ || __MSVCRT_VERSION__ >= 0x0601) struct __stat64 fileStat; int err = _stat64( mFilename.c_str(), &fileStat ); if (0 != err) return 0; mCachedSize = (size_t) (fileStat.st_size); -#elif defined __gnu_linux__ || defined __APPLE__ || defined __MACH__ +#elif defined __GNUC__ || defined __APPLE__ || defined __MACH__ || defined __FreeBSD__ struct stat fileStat; int err = stat(mFilename.c_str(), &fileStat ); if (0 != err) diff --git a/code/DefaultIOSystem.cpp b/code/DefaultIOSystem.cpp index 8c44c8bd0..711476806 100644 --- a/code/DefaultIOSystem.cpp +++ b/code/DefaultIOSystem.cpp @@ -40,10 +40,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /** @file Default implementation of IOSystem using the standard C file functions */ -#include "DefaultIOSystem.h" -#include "DefaultIOStream.h" #include "StringComparison.h" +#include +#include #include #include #include diff --git a/code/DefaultLogger.cpp b/code/DefaultLogger.cpp index 5364bd8bc..106c51561 100644 --- a/code/DefaultLogger.cpp +++ b/code/DefaultLogger.cpp @@ -43,13 +43,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief Implementation of DefaultLogger (and Logger) */ -#include "DefaultIOSystem.h" // Default log streams #include "Win32DebugLogStream.h" #include "StdOStreamLogStream.h" #include "FileLogStream.h" #include "StringUtils.h" + +#include #include #include #include diff --git a/code/Exceptional.h b/code/Exceptional.h index 3268423ef..5109b8f07 100644 --- a/code/Exceptional.h +++ b/code/Exceptional.h @@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_EXCEPTIONAL_H #include -#include "DefaultIOStream.h" +#include using std::runtime_error; #ifdef _MSC_VER diff --git a/code/Exporter.cpp b/code/Exporter.cpp index 26cb5e998..65e40eec2 100644 --- a/code/Exporter.cpp +++ b/code/Exporter.cpp @@ -52,7 +52,6 @@ Here we implement only the C++ interface (Assimp::Exporter). #ifndef ASSIMP_BUILD_NO_EXPORT -#include "DefaultIOSystem.h" #include "BlobIOSystem.h" #include "SceneCombiner.h" #include "BaseProcess.h" @@ -64,11 +63,12 @@ Here we implement only the C++ interface (Assimp::Exporter). #include "Exceptional.h" #include "ScenePrivate.h" #include + +#include #include #include #include #include -#include namespace Assimp { @@ -101,7 +101,7 @@ Exporter::ExportFormatEntry gExporters[] = Exporter::ExportFormatEntry( "collada", "COLLADA - Digital Asset Exchange Schema", "dae", &ExportSceneCollada), #endif -#ifndef ASSIMP_BUILD_NO_XFILE_EXPORTER +#ifndef ASSIMP_BUILD_NO_X_EXPORTER Exporter::ExportFormatEntry( "x", "X Files", "x", &ExportSceneXFile, aiProcess_MakeLeftHanded | aiProcess_FlipWindingOrder | aiProcess_FlipUVs), #endif @@ -163,7 +163,6 @@ Exporter::ExportFormatEntry gExporters[] = class ExporterPimpl { public: - ExporterPimpl() : blob() , mIOSystem(new Assimp::DefaultIOSystem()) @@ -171,7 +170,7 @@ public: { GetPostProcessingStepInstanceList(mPostProcessingSteps); - // grab all builtin exporters + // grab all built-in exporters mExporters.resize(ASSIMP_NUM_EXPORTERS); std::copy(gExporters,gExporters+ASSIMP_NUM_EXPORTERS,mExporters.begin()); } @@ -202,65 +201,48 @@ public: std::vector mExporters; }; - } // end of namespace Assimp - - - - using namespace Assimp; - // ------------------------------------------------------------------------------------------------ Exporter :: Exporter() -: pimpl(new ExporterPimpl()) -{ +: pimpl(new ExporterPimpl()) { + // empty } - // ------------------------------------------------------------------------------------------------ -Exporter :: ~Exporter() -{ +Exporter::~Exporter() { FreeBlob(); delete pimpl; } - // ------------------------------------------------------------------------------------------------ -void Exporter :: SetIOHandler( IOSystem* pIOHandler) -{ +void Exporter::SetIOHandler( IOSystem* pIOHandler) { pimpl->mIsDefaultIOHandler = !pIOHandler; pimpl->mIOSystem.reset(pIOHandler); } - // ------------------------------------------------------------------------------------------------ -IOSystem* Exporter :: GetIOHandler() const -{ +IOSystem* Exporter::GetIOHandler() const { return pimpl->mIOSystem.get(); } - // ------------------------------------------------------------------------------------------------ -bool Exporter :: IsDefaultIOHandler() const -{ +bool Exporter::IsDefaultIOHandler() const { return pimpl->mIsDefaultIOHandler; } - // ------------------------------------------------------------------------------------------------ -const aiExportDataBlob* Exporter :: ExportToBlob( const aiScene* pScene, const char* pFormatId, unsigned int, const ExportProperties* pProperties) -{ +const aiExportDataBlob* Exporter::ExportToBlob( const aiScene* pScene, const char* pFormatId, + unsigned int, const ExportProperties* pProperties ) { if (pimpl->blob) { delete pimpl->blob; pimpl->blob = NULL; } - std::shared_ptr old = pimpl->mIOSystem; - BlobIOSystem* blobio = new BlobIOSystem(); pimpl->mIOSystem = std::shared_ptr( blobio ); @@ -275,10 +257,8 @@ const aiExportDataBlob* Exporter :: ExportToBlob( const aiScene* pScene, const return pimpl->blob; } - // ------------------------------------------------------------------------------------------------ -bool IsVerboseFormat(const aiMesh* mesh) -{ +bool IsVerboseFormat(const aiMesh* mesh) { // avoid slow vector specialization std::vector seen(mesh->mNumVertices,0); for(unsigned int i = 0; i < mesh->mNumFaces; ++i) { @@ -293,10 +273,8 @@ bool IsVerboseFormat(const aiMesh* mesh) return true; } - // ------------------------------------------------------------------------------------------------ -bool IsVerboseFormat(const aiScene* pScene) -{ +bool IsVerboseFormat(const aiScene* pScene) { for(unsigned int i = 0; i < pScene->mNumMeshes; ++i) { if(!IsVerboseFormat(pScene->mMeshes[i])) { return false; @@ -305,10 +283,8 @@ bool IsVerboseFormat(const aiScene* pScene) return true; } - // ------------------------------------------------------------------------------------------------ -aiReturn Exporter :: Export( const aiScene* pScene, const char* pFormatId, const char* pPath, unsigned int pPreprocessing, const ExportProperties* pProperties) -{ +aiReturn Exporter::Export( const aiScene* pScene, const char* pFormatId, const char* pPath, unsigned int pPreprocessing, const ExportProperties* pProperties) { ASSIMP_BEGIN_EXCEPTION_REGION(); // when they create scenes from scratch, users will likely create them not in verbose @@ -321,9 +297,7 @@ aiReturn Exporter :: Export( const aiScene* pScene, const char* pFormatId, const for (size_t i = 0; i < pimpl->mExporters.size(); ++i) { const Exporter::ExportFormatEntry& exp = pimpl->mExporters[i]; if (!strcmp(exp.mDescription.id,pFormatId)) { - try { - // Always create a full copy of the scene. We might optimize this one day, // but for now it is the most pragmatic way. aiScene* scenecopy_tmp = NULL; @@ -342,18 +316,17 @@ aiReturn Exporter :: Export( const aiScene* pScene, const char* pFormatId, const ? (priv->mPPStepsApplied & ~nonIdempotentSteps) : 0u); - // If no extra postprocessing was specified, and we obtained this scene from an + // If no extra post-processing was specified, and we obtained this scene from an // Assimp importer, apply the reverse steps automatically. // TODO: either drop this, or document it. Otherwise it is just a bad surprise. //if (!pPreprocessing && priv) { // pp |= (nonIdempotentSteps & priv->mPPStepsApplied); //} - // If the input scene is not in verbose format, but there is at least postprocessing step that relies on it, + // If the input scene is not in verbose format, but there is at least post-processing step that relies on it, // we need to run the MakeVerboseFormat step first. bool must_join_again = false; if (!is_verbose_format) { - bool verbosify = false; for( unsigned int a = 0; a < pimpl->mPostProcessingSteps.size(); a++) { BaseProcess* const p = pimpl->mPostProcessingSteps[a]; @@ -424,8 +397,7 @@ aiReturn Exporter :: Export( const aiScene* pScene, const char* pFormatId, const ExportProperties emptyProperties; // Never pass NULL ExportProperties so Exporters don't have to worry. exp.mExportFunction(pPath,pimpl->mIOSystem.get(),scenecopy.get(), pProperties ? pProperties : &emptyProperties); - } - catch (DeadlyExportError& err) { + } catch (DeadlyExportError& err) { pimpl->mError = err.what(); return AI_FAILURE; } @@ -438,64 +410,53 @@ aiReturn Exporter :: Export( const aiScene* pScene, const char* pFormatId, const return AI_FAILURE; } - // ------------------------------------------------------------------------------------------------ -const char* Exporter :: GetErrorString() const -{ +const char* Exporter::GetErrorString() const { return pimpl->mError.c_str(); } // ------------------------------------------------------------------------------------------------ -void Exporter :: FreeBlob( ) -{ +void Exporter::FreeBlob() { delete pimpl->blob; pimpl->blob = NULL; pimpl->mError = ""; } - // ------------------------------------------------------------------------------------------------ -const aiExportDataBlob* Exporter :: GetBlob() const -{ +const aiExportDataBlob* Exporter::GetBlob() const { return pimpl->blob; } - // ------------------------------------------------------------------------------------------------ -const aiExportDataBlob* Exporter :: GetOrphanedBlob() const -{ +const aiExportDataBlob* Exporter::GetOrphanedBlob() const { const aiExportDataBlob* tmp = pimpl->blob; pimpl->blob = NULL; return tmp; } - // ------------------------------------------------------------------------------------------------ -size_t Exporter :: GetExportFormatCount() const -{ +size_t Exporter::GetExportFormatCount() const { return pimpl->mExporters.size(); } // ------------------------------------------------------------------------------------------------ -const aiExportFormatDesc* Exporter :: GetExportFormatDescription( size_t pIndex ) const -{ - if (pIndex >= GetExportFormatCount()) { +const aiExportFormatDesc* Exporter::GetExportFormatDescription( size_t index ) const { + if (index >= GetExportFormatCount()) { return NULL; } // Return from static storage if the requested index is built-in. - if (pIndex < sizeof(gExporters) / sizeof(gExporters[0])) { - return &gExporters[pIndex].mDescription; + if (index < sizeof(gExporters) / sizeof(gExporters[0])) { + return &gExporters[index].mDescription; } - return &pimpl->mExporters[pIndex].mDescription; + return &pimpl->mExporters[index].mDescription; } // ------------------------------------------------------------------------------------------------ -aiReturn Exporter :: RegisterExporter(const ExportFormatEntry& desc) -{ +aiReturn Exporter::RegisterExporter(const ExportFormatEntry& desc) { for(const ExportFormatEntry& e : pimpl->mExporters) { if (!strcmp(e.mDescription.id,desc.mDescription.id)) { return aiReturn_FAILURE; @@ -506,10 +467,8 @@ aiReturn Exporter :: RegisterExporter(const ExportFormatEntry& desc) return aiReturn_SUCCESS; } - // ------------------------------------------------------------------------------------------------ -void Exporter :: UnregisterExporter(const char* id) -{ +void Exporter::UnregisterExporter(const char* id) { for(std::vector::iterator it = pimpl->mExporters.begin(); it != pimpl->mExporters.end(); ++it) { if (!strcmp((*it).mDescription.id,id)) { pimpl->mExporters.erase(it); @@ -518,29 +477,30 @@ void Exporter :: UnregisterExporter(const char* id) } } -ExportProperties :: ExportProperties() {} +// ------------------------------------------------------------------------------------------------ +ExportProperties::ExportProperties() { + // empty +} +// ------------------------------------------------------------------------------------------------ ExportProperties::ExportProperties(const ExportProperties &other) - : mIntProperties(other.mIntProperties), - mFloatProperties(other.mFloatProperties), - mStringProperties(other.mStringProperties), - mMatrixProperties(other.mMatrixProperties) -{ - +: mIntProperties(other.mIntProperties) +, mFloatProperties(other.mFloatProperties) +, mStringProperties(other.mStringProperties) +, mMatrixProperties(other.mMatrixProperties) { + // empty } // ------------------------------------------------------------------------------------------------ // Set a configuration property -bool ExportProperties :: SetPropertyInteger(const char* szName, int iValue) -{ +bool ExportProperties::SetPropertyInteger(const char* szName, int iValue) { return SetGenericProperty(mIntProperties, szName,iValue); } // ------------------------------------------------------------------------------------------------ // Set a configuration property -bool ExportProperties :: SetPropertyFloat(const char* szName, ai_real iValue) -{ +bool ExportProperties::SetPropertyFloat(const char* szName, ai_real iValue) { return SetGenericProperty(mFloatProperties, szName,iValue); } @@ -602,28 +562,28 @@ bool ExportProperties :: HasPropertyInteger(const char* szName) const bool ExportProperties :: HasPropertyBool(const char* szName) const { return HasGenericProperty(mIntProperties, szName); -}; +} // ------------------------------------------------------------------------------------------------ // Has a configuration property bool ExportProperties :: HasPropertyFloat(const char* szName) const { return HasGenericProperty(mFloatProperties, szName); -}; +} // ------------------------------------------------------------------------------------------------ // Has a configuration property bool ExportProperties :: HasPropertyString(const char* szName) const { return HasGenericProperty(mStringProperties, szName); -}; +} // ------------------------------------------------------------------------------------------------ // Has a configuration property bool ExportProperties :: HasPropertyMatrix(const char* szName) const { return HasGenericProperty(mMatrixProperties, szName); -}; +} #endif // !ASSIMP_BUILD_NO_EXPORT diff --git a/code/FBXAnimation.cpp b/code/FBXAnimation.cpp index 0758d4db7..09d7c184d 100644 --- a/code/FBXAnimation.cpp +++ b/code/FBXAnimation.cpp @@ -48,7 +48,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXParser.h" #include "FBXDocument.h" #include "FBXImporter.h" -#include "FBXImportSettings.h" #include "FBXDocumentUtil.h" #include "FBXProperties.h" diff --git a/code/FBXBinaryTokenizer.cpp b/code/FBXBinaryTokenizer.cpp index 1c2585798..550859345 100644 --- a/code/FBXBinaryTokenizer.cpp +++ b/code/FBXBinaryTokenizer.cpp @@ -146,18 +146,20 @@ void TokenizeError(const std::string& message, const char* begin, const char* cu // ------------------------------------------------------------------------------------------------ uint32_t ReadWord(const char* input, const char*& cursor, const char* end) { - if(Offset(cursor, end) < 4) { + const size_t k_to_read = sizeof( uint32_t ); + if(Offset(cursor, end) < k_to_read ) { TokenizeError("cannot ReadWord, out of bounds",input, cursor); } uint32_t word = *reinterpret_cast(cursor); AI_SWAP4(word); - cursor += 4; + cursor += k_to_read; return word; } +// ------------------------------------------------------------------------------------------------ uint64_t ReadDoubleWord(const char* input, const char*& cursor, const char* end) { const size_t k_to_read = sizeof(uint64_t); @@ -177,7 +179,7 @@ uint64_t ReadDoubleWord(const char* input, const char*& cursor, const char* end) // ------------------------------------------------------------------------------------------------ uint8_t ReadByte(const char* input, const char*& cursor, const char* end) { - if(Offset(cursor, end) < 1) { + if(Offset(cursor, end) < sizeof( uint8_t ) ) { TokenizeError("cannot ReadByte, out of bounds",input, cursor); } @@ -220,8 +222,6 @@ unsigned int ReadString(const char*& sbegin_out, const char*& send_out, const ch return length; } - - // ------------------------------------------------------------------------------------------------ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input, const char*& cursor, const char* end) { @@ -345,7 +345,7 @@ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input, bool ReadScope(TokenList& output_tokens, const char* input, const char*& cursor, const char* end, uint32_t const flags) { // the first word contains the offset at which this block ends - const uint64_t end_offset = check_flag(flags, e_flag_field_size_64_bit) ? ReadDoubleWord(input, cursor, end) : ReadWord(input, cursor, end); + const uint64_t end_offset = /*check_flag(flags, e_flag_field_size_64_bit) ? ReadDoubleWord(input, cursor, end) : */ReadWord(input, cursor, end); // we may get 0 if reading reached the end of the file - // fbx files have a mysterious extra footer which I don't know @@ -363,10 +363,10 @@ bool ReadScope(TokenList& output_tokens, const char* input, const char*& cursor, } // the second data word contains the number of properties in the scope - const uint64_t prop_count = check_flag(flags, e_flag_field_size_64_bit) ? ReadDoubleWord(input, cursor, end) : ReadWord(input, cursor, end); + const uint64_t prop_count = /*check_flag(flags, e_flag_field_size_64_bit) ? ReadDoubleWord(input, cursor, end) : */ReadWord(input, cursor, end); // the third data word contains the length of the property list - const uint64_t prop_length = check_flag(flags, e_flag_field_size_64_bit) ? ReadDoubleWord(input, cursor, end) : ReadWord(input, cursor, end); + const uint64_t prop_length = /*check_flag(flags, e_flag_field_size_64_bit) ? ReadDoubleWord(input, cursor, end) :*/ ReadWord(input, cursor, end); // now comes the name of the scope/key const char* sbeg, *send; @@ -393,7 +393,7 @@ bool ReadScope(TokenList& output_tokens, const char* input, const char*& cursor, // at the end of each nested block, there is a NUL record to indicate // that the sub-scope exists (i.e. to distinguish between P: and P : {}) // this NUL record is 13 bytes long on 32 bit version and 25 bytes long on 64 bit. - const size_t sentinel_block_length = check_flag(flags, e_flag_field_size_64_bit) ? (sizeof(uint64_t) * 3 + 1) : (sizeof(uint32_t) * 3 + 1); + const size_t sentinel_block_length = /*check_flag(flags, e_flag_field_size_64_bit) ? (sizeof(uint64_t) * 3 + 1) : */(sizeof(uint32_t) * 3 + 1); if (Offset(input, cursor) < end_offset) { if (end_offset - Offset(input, cursor) < sentinel_block_length) { diff --git a/code/FBXCompileConfig.h b/code/FBXCompileConfig.h index 901f5b330..c3934e0c8 100644 --- a/code/FBXCompileConfig.h +++ b/code/FBXCompileConfig.h @@ -44,6 +44,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_FBX_COMPILECONFIG_H #define INCLUDED_AI_FBX_COMPILECONFIG_H +#include + // #if _MSC_VER > 1500 || (defined __GNUC___) # define ASSIMP_FBX_USE_UNORDERED_MULTIMAP diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 86e9b9df8..30d332f5b 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -58,7 +58,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -#include #include namespace Assimp { @@ -71,7 +70,7 @@ using namespace Util; #define CONVERT_FBX_TIME(time) static_cast(time) / 46186158000L - // XXX vc9's debugger won't step into anonymous namespaces +// XXX vc9's debugger won't step into anonymous namespaces //namespace { /** Dummy class to encapsulate the conversion process */ @@ -114,11 +113,9 @@ private: // 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 ); @@ -189,7 +186,6 @@ private: static const unsigned int NO_MATERIAL_SEPARATION = /* std::numeric_limits::max() */ static_cast(-1); - // ------------------------------------------------------------------------------------------------ /** * - if materialIndex == NO_MATERIAL_SEPARATION, materials are not taken into @@ -341,8 +337,6 @@ private: 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 ); @@ -645,7 +639,7 @@ void Converter::ConvertLight( const Model& model, const Light& light ) out_light->mName.Set( FixNodeName( model.Name() ) ); - const float intensity = light.Intensity(); + const float intensity = light.Intensity() / 100.0f; const aiVector3D& col = light.Color(); out_light->mColorDiffuse = aiColor3D( col.x, col.y, col.z ); @@ -655,6 +649,11 @@ void Converter::ConvertLight( const Model& model, const Light& light ) out_light->mColorSpecular = out_light->mColorDiffuse; + //lights are defined along negative y direction + out_light->mPosition = aiVector3D(0.0f); + out_light->mDirection = aiVector3D(0.0f, -1.0f, 0.0f); + out_light->mUp = aiVector3D(0.0f, 0.0f, -1.0f); + switch ( light.LightType() ) { case Light::Type_Point: @@ -684,17 +683,23 @@ void Converter::ConvertLight( const Model& model, const Light& light ) ai_assert( false ); } - // XXX: how to best convert the near and far decay ranges? + float decay = light.DecayStart(); switch ( light.DecayType() ) { case Light::Decay_None: - out_light->mAttenuationConstant = 1.0f; + out_light->mAttenuationConstant = decay; + out_light->mAttenuationLinear = 0.0f; + out_light->mAttenuationQuadratic = 0.0f; break; case Light::Decay_Linear: - out_light->mAttenuationLinear = 1.0f; + out_light->mAttenuationConstant = 0.0f; + out_light->mAttenuationLinear = 2.0f / decay; + out_light->mAttenuationQuadratic = 0.0f; break; case Light::Decay_Quadratic: - out_light->mAttenuationQuadratic = 1.0f; + out_light->mAttenuationConstant = 0.0f; + out_light->mAttenuationLinear = 0.0f; + out_light->mAttenuationQuadratic = 2.0f / (decay * decay); break; case Light::Decay_Cubic: FBXImporter::LogWarn( "cannot represent cubic attenuation, set to Quadratic" ); @@ -713,10 +718,13 @@ void Converter::ConvertCamera( const Model& model, const Camera& cam ) out_camera->mName.Set( FixNodeName( model.Name() ) ); out_camera->mAspect = cam.AspectWidth() / cam.AspectHeight(); - out_camera->mPosition = cam.Position(); - out_camera->mUp = cam.UpVector(); - out_camera->mLookAt = cam.InterestPosition() - out_camera->mPosition; + //cameras are defined along positive x direction + out_camera->mPosition = aiVector3D(0.0f); + out_camera->mLookAt = aiVector3D(1.0f, 0.0f, 0.0f); + out_camera->mUp = aiVector3D(0.0f, 1.0f, 0.0f); out_camera->mHorizontalFOV = AI_DEG_TO_RAD( cam.FieldOfView() ); + out_camera->mClipPlaneNear = cam.NearPlane(); + out_camera->mClipPlaneFar = cam.FarPlane(); } @@ -899,7 +907,6 @@ void Converter::GetRotationMatrix( Model::RotOrder mode, const aiVector3D& rotat } } - bool Converter::NeedsComplexTransformationChain( const Model& model ) { const PropertyTable& props = model.Props(); @@ -923,7 +930,6 @@ bool Converter::NeedsComplexTransformationChain( const Model& model ) return false; } - std::string Converter::NameTransformationChainNode( const std::string& name, TransformationComp comp ) { return name + std::string( MAGIC_NODE_TAG ) + "_" + NameTransformationComp( comp ); @@ -1067,7 +1073,6 @@ void Converter::GenerateTransformationNodeChain( const Model& model, } } - void Converter::SetupNodeMetadata( const Model& model, aiNode& nd ) { const PropertyTable& props = model.Props(); @@ -1075,7 +1080,7 @@ void Converter::SetupNodeMetadata( const Model& model, aiNode& nd ) // create metadata on node std::size_t numStaticMetaData = 2; - aiMetadata* data = aiMetadata::Alloc( unparsedProperties.size() + numStaticMetaData ); + aiMetadata* data = aiMetadata::Alloc( static_cast(unparsedProperties.size() + numStaticMetaData) ); nd.mMetaData = data; int index = 0; @@ -1132,7 +1137,6 @@ void Converter::ConvertModel( const Model& model, aiNode& nd, const aiMatrix4x4& } } - std::vector Converter::ConvertMesh( const MeshGeometry& mesh, const Model& model, const aiMatrix4x4& node_global_transform ) { @@ -1168,7 +1172,6 @@ std::vector Converter::ConvertMesh( const MeshGeometry& mesh, cons return temp; } - aiMesh* Converter::SetupEmptyMesh( const MeshGeometry& mesh ) { aiMesh* const out_mesh = new aiMesh(); @@ -1188,7 +1191,6 @@ aiMesh* Converter::SetupEmptyMesh( const MeshGeometry& mesh ) return out_mesh; } - unsigned int Converter::ConvertMeshSingleMaterial( const MeshGeometry& mesh, const Model& model, const aiMatrix4x4& node_global_transform ) { @@ -1511,7 +1513,6 @@ unsigned int Converter::ConvertMeshMultiMaterial( const MeshGeometry& mesh, cons return static_cast( meshes.size() - 1 ); } - void Converter::ConvertWeights( aiMesh* out, const Model& model, const MeshGeometry& geo, const aiMatrix4x4& node_global_transform , unsigned int materialIndex, @@ -1658,7 +1659,6 @@ void Converter::ConvertCluster( std::vector& bones, const Model& /*mode } } - void Converter::ConvertMaterialForMesh( aiMesh* out, const Model& model, const MeshGeometry& geo, MatIndexArray::value_type materialIndex ) { @@ -2133,6 +2133,16 @@ void Converter::SetShadingPropertiesCommon( aiMaterial* out_mat, const PropertyT if ( ok ) { out_mat->AddProperty( &ShininessExponent, 1, AI_MATKEY_SHININESS ); } + + const float BumpFactor = PropertyGet(props, "BumpFactor", ok); + if (ok) { + out_mat->AddProperty(&BumpFactor, 1, AI_MATKEY_BUMPSCALING); + } + + const float DispFactor = PropertyGet(props, "DisplacementFactor", ok); + if (ok) { + out_mat->AddProperty(&DispFactor, 1, "$mat.displacementscaling", 0, 0); + } } @@ -2961,10 +2971,10 @@ Converter::KeyFrameListList Converter::GetKeyframeList( const std::vector Keys( new KeyTimeList() ); std::shared_ptr Values( new KeyValueList() ); - const int count = curve->GetKeys().size(); + const size_t count = curve->GetKeys().size(); Keys->reserve( count ); Values->reserve( count ); - for ( int n = 0; n < count; n++ ) + for (size_t n = 0; n < count; n++ ) { int64_t k = curve->GetKeys().at( n ); if ( k >= adj_start && k <= adj_stop ) @@ -3065,7 +3075,7 @@ void Converter::InterpolateKeys( aiVectorKey* valOut, const KeyTimeList& keys, c const KeyTimeList::value_type timeA = std::get<0>(kfl)->at( id0 ); const KeyTimeList::value_type timeB = std::get<0>(kfl)->at( id1 ); - const ai_real factor = timeB == timeA ? 0. : static_cast( ( time - timeA ) ) / ( timeB - timeA ); + const ai_real factor = timeB == timeA ? ai_real(0.) : static_cast( ( time - timeA ) ) / ( timeB - timeA ); const ai_real interpValue = static_cast( valueA + ( valueB - valueA ) * factor ); result[ std::get<2>(kfl) ] = interpValue; diff --git a/code/FBXDeformer.cpp b/code/FBXDeformer.cpp index 47db96563..c7cc52e5f 100644 --- a/code/FBXDeformer.cpp +++ b/code/FBXDeformer.cpp @@ -47,14 +47,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXParser.h" #include "FBXDocument.h" #include "FBXImporter.h" -#include "FBXImportSettings.h" #include "FBXDocumentUtil.h" -#include "FBXProperties.h" namespace Assimp { namespace FBX { - using namespace Util; +using namespace Util; // ------------------------------------------------------------------------------------------------ Deformer::Deformer(uint64_t id, const Element& element, const Document& doc, const std::string& name) @@ -159,8 +157,6 @@ Skin::~Skin() } - - } } diff --git a/code/FBXDocument.cpp b/code/FBXDocument.cpp index cf5f6da86..0d5e24f96 100644 --- a/code/FBXDocument.cpp +++ b/code/FBXDocument.cpp @@ -55,7 +55,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include - +#include namespace Assimp { namespace FBX { @@ -78,12 +78,6 @@ LazyObject::~LazyObject() } -// ------------------------------------------------------------------------------------------------ -static void dumpObjectClassInfo( const char* obtype, const std::string &classtag ) { - DefaultLogger::get()->debug( "obtype: " + std::string(obtype )); - DefaultLogger::get()->debug( "Classtag: " + classtag ); -} - // ------------------------------------------------------------------------------------------------ const Object* LazyObject::Get(bool dieOnError) { @@ -252,17 +246,15 @@ FileGlobalSettings::FileGlobalSettings(const Document& doc, std::shared_ptrCompound(); fbxVersion = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(shead,"FBXVersion",ehead),0)); - // While we maye have some success with newer files, we don't support + // While we may have some success with newer files, we don't support // the older 6.n fbx format if(fbxVersion < LowerSupportedVersion ) { DOMError("unsupported, old format version, supported are only FBX 2011, FBX 2012 and FBX 2013"); @@ -331,7 +322,6 @@ void Document::ReadHeader() } } - const Element* const ecreator = shead["Creator"]; if(ecreator) { creator = ParseTokenAsString(GetRequiredToken(*ecreator,0)); diff --git a/code/FBXDocument.h b/code/FBXDocument.h index 6016805ed..9c446250b 100644 --- a/code/FBXDocument.h +++ b/code/FBXDocument.h @@ -240,6 +240,9 @@ public: fbx_simple_property(FilmWidth, float, 1.0f) fbx_simple_property(FilmHeight, float, 1.0f) + fbx_simple_property(NearPlane, float, 0.1f) + fbx_simple_property(FarPlane, float, 100.0f) + fbx_simple_property(FilmAspectRatio, float, 1.0f) fbx_simple_property(ApertureMode, int, 0) @@ -302,12 +305,12 @@ public: fbx_simple_property(DrawVolumetricLight, bool, true) fbx_simple_property(DrawGroundProjection, bool, true) fbx_simple_property(DrawFrontFacingVolumetricLight, bool, false) - fbx_simple_property(Intensity, float, 1.0f) + fbx_simple_property(Intensity, float, 100.0f) fbx_simple_property(InnerAngle, float, 0.0f) fbx_simple_property(OuterAngle, float, 45.0f) fbx_simple_property(Fog, int, 50) - fbx_simple_enum_property(DecayType, Decay, 0) - fbx_simple_property(DecayStart, int, 0) + fbx_simple_enum_property(DecayType, Decay, 2) + fbx_simple_property(DecayStart, float, 1.0f) fbx_simple_property(FileName, std::string, "") fbx_simple_property(EnableNearAttenuation, bool, false) @@ -600,7 +603,7 @@ public: } const int textureCount() const { - return textures.size(); + return static_cast(textures.size()); } const BlendMode GetBlendMode() const { diff --git a/code/FBXImporter.cpp b/code/FBXImporter.cpp index b319da8b6..83b74f8cd 100644 --- a/code/FBXImporter.cpp +++ b/code/FBXImporter.cpp @@ -44,9 +44,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER -#include -#include - #include "FBXImporter.h" #include "FBXTokenizer.h" @@ -58,6 +55,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "StreamReader.h" #include "MemoryIOWrapper.h" #include +#include namespace Assimp { template<> const std::string LogFunctions::log_prefix = "FBX: "; @@ -99,7 +97,7 @@ FBXImporter::~FBXImporter() bool FBXImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const { const std::string& extension = GetExtension(pFile); - if (extension == "fbx") { + if (extension == std::string( desc.mFileExtensions ) ) { return true; } @@ -118,7 +116,6 @@ const aiImporterDesc* FBXImporter::GetInfo () const return &desc; } - // ------------------------------------------------------------------------------------------------ // Setup configuration properties for the loader void FBXImporter::SetupProperties(const Importer* pImp) @@ -135,7 +132,6 @@ void FBXImporter::SetupProperties(const Importer* pImp) settings.optimizeEmptyAnimationCurves = pImp->GetPropertyBool(AI_CONFIG_IMPORT_FBX_OPTIMIZE_EMPTY_ANIMATION_CURVES, true); } - // ------------------------------------------------------------------------------------------------ // Imports the given file into the given scene structure. void FBXImporter::InternReadFile( const std::string& pFile, @@ -165,7 +161,7 @@ void FBXImporter::InternReadFile( const std::string& pFile, bool is_binary = false; if (!strncmp(begin,"Kaydara FBX Binary",18)) { is_binary = true; - TokenizeBinary(tokens,begin,contents.size()); + TokenizeBinary(tokens,begin,static_cast(contents.size())); } else { Tokenize(tokens,begin); diff --git a/code/FBXModel.cpp b/code/FBXModel.cpp index bbeb14bfb..27e5429c3 100644 --- a/code/FBXModel.cpp +++ b/code/FBXModel.cpp @@ -48,9 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXMeshGeometry.h" #include "FBXDocument.h" #include "FBXImporter.h" -#include "FBXImportSettings.h" #include "FBXDocumentUtil.h" -#include "FBXProperties.h" namespace Assimp { namespace FBX { diff --git a/code/FBXNodeAttribute.cpp b/code/FBXNodeAttribute.cpp index 405ce7206..1638d6751 100644 --- a/code/FBXNodeAttribute.cpp +++ b/code/FBXNodeAttribute.cpp @@ -47,9 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXParser.h" #include "FBXDocument.h" #include "FBXImporter.h" -#include "FBXImportSettings.h" #include "FBXDocumentUtil.h" -#include "FBXProperties.h" namespace Assimp { namespace FBX { diff --git a/code/FBXParser.cpp b/code/FBXParser.cpp index beca20b14..6562ef41d 100644 --- a/code/FBXParser.cpp +++ b/code/FBXParser.cpp @@ -51,7 +51,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # include "../contrib/zlib/zlib.h" #endif - #include "FBXTokenizer.h" #include "FBXParser.h" #include "FBXUtil.h" @@ -583,7 +582,7 @@ void ReadBinaryDataArray(char type, uint32_t count, const char*& data, const cha zstream.next_in = reinterpret_cast( const_cast(data) ); zstream.avail_in = comp_len; - zstream.avail_out = buff.size(); + zstream.avail_out = static_cast(buff.size()); zstream.next_out = reinterpret_cast(&*buff.begin()); const int ret = inflate(&zstream, Z_FINISH); diff --git a/code/FBXProperties.h b/code/FBXProperties.h index 60cdfe2c6..ed7af673d 100644 --- a/code/FBXProperties.h +++ b/code/FBXProperties.h @@ -44,14 +44,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_FBX_PROPERTIES_H #define INCLUDED_AI_FBX_PROPERTIES_H -#include #include "FBXCompileConfig.h" #include +#include namespace Assimp { namespace FBX { - class Element; +// Forward declarations +class Element; /** Represents a dynamic property. Type info added by deriving classes, diff --git a/code/FBXTokenizer.h b/code/FBXTokenizer.h index f9f1fb871..3b60142e4 100644 --- a/code/FBXTokenizer.h +++ b/code/FBXTokenizer.h @@ -44,7 +44,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_FBX_TOKENIZER_H #define INCLUDED_AI_FBX_TOKENIZER_H -#include #include "FBXCompileConfig.h" #include #include @@ -84,13 +83,10 @@ enum TokenType * Offers iterator protocol. Tokens are immutable. */ class Token { - private: - static const unsigned int BINARY_MARKER = static_cast(-1); public: - /** construct a textual token */ Token(const char* sbegin, const char* send, TokenType type, unsigned int line, unsigned int column); @@ -100,13 +96,11 @@ public: ~Token(); public: - std::string StringContents() const { return std::string(begin(),end()); } public: - bool IsBinary() const { return column == BINARY_MARKER; } diff --git a/code/FBXUtil.cpp b/code/FBXUtil.cpp index 601d5e214..280349d20 100644 --- a/code/FBXUtil.cpp +++ b/code/FBXUtil.cpp @@ -46,6 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "FBXTokenizer.h" #include "TinyFormatter.h" +#include #ifndef ASSIMP_BUILD_NO_FBX_IMPORTER diff --git a/code/FBXUtil.h b/code/FBXUtil.h index bd41834b0..7da51dac8 100644 --- a/code/FBXUtil.h +++ b/code/FBXUtil.h @@ -44,7 +44,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_FBX_UTIL_H #define INCLUDED_AI_FBX_UTIL_H -#include #include "FBXCompileConfig.h" #include "FBXTokenizer.h" diff --git a/code/FileLogStream.h b/code/FileLogStream.h index 574a63ed6..e935624a1 100644 --- a/code/FileLogStream.h +++ b/code/FileLogStream.h @@ -1,9 +1,50 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2017, assimp team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ +/** @file FileLofStream.h +*/ #ifndef ASSIMP_FILELOGSTREAM_H_INC #define ASSIMP_FILELOGSTREAM_H_INC #include #include -#include "DefaultIOSystem.h" +#include namespace Assimp { diff --git a/code/HMPLoader.cpp b/code/HMPLoader.cpp index 788286e12..fce0daf4a 100644 --- a/code/HMPLoader.cpp +++ b/code/HMPLoader.cpp @@ -51,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include using namespace Assimp; diff --git a/code/HMPLoader.h b/code/HMPLoader.h index 4dd0d9840..036b37894 100644 --- a/code/HMPLoader.h +++ b/code/HMPLoader.h @@ -44,11 +44,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_HMPLOADER_H_INCLUDED #define AI_HMPLOADER_H_INCLUDED -// public ASSIMP headers -#include -#include -#include - // internal headers #include "BaseImporter.h" #include "MDLLoader.h" diff --git a/code/HalfLifeFileData.h b/code/HalfLifeFileData.h index 54fe83734..9837a4e29 100644 --- a/code/HalfLifeFileData.h +++ b/code/HalfLifeFileData.h @@ -49,7 +49,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_MDLFILEHELPER2_H_INC #define AI_MDLFILEHELPER2_H_INC -#include "MDLFileData.h" #include "./../include/assimp/Compiler/pushpack1.h" namespace Assimp { diff --git a/code/IFCBoolean.cpp b/code/IFCBoolean.cpp index 042515311..98b230392 100644 --- a/code/IFCBoolean.cpp +++ b/code/IFCBoolean.cpp @@ -47,7 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "IFCUtil.h" #include "PolyTools.h" #include "ProcessHelper.h" -#include "Defines.h" +#include #include #include @@ -109,7 +109,7 @@ void FilterPolygon(std::vector& resultpoly) } IfcVector3 vmin, vmax; - ArrayBounds(resultpoly.data(), resultpoly.size(), vmin, vmax); + ArrayBounds(resultpoly.data(), static_cast(resultpoly.size()), vmin, vmax); // filter our IfcFloat points - those may happen if a point lies // directly on the intersection line or directly on the clipping plane @@ -132,7 +132,7 @@ void WritePolygon(std::vector& resultpoly, TempMesh& result) if( resultpoly.size() > 2 ) { result.verts.insert(result.verts.end(), resultpoly.begin(), resultpoly.end()); - result.vertcnt.push_back(resultpoly.size()); + result.vertcnt.push_back(static_cast(resultpoly.size())); } } @@ -589,7 +589,7 @@ void ProcessPolygonalBoundedBooleanHalfSpaceDifference(const IfcPolygonalBounded // to result mesh unchanged if( !startedInside ) { - outvertcnt.push_back(blackside.size()); + outvertcnt.push_back(static_cast(blackside.size())); outvert.insert(outvert.end(), blackside.begin(), blackside.end()); continue; } diff --git a/code/IFCGeometry.cpp b/code/IFCGeometry.cpp index 3d0cda31d..908f5e065 100644 --- a/code/IFCGeometry.cpp +++ b/code/IFCGeometry.cpp @@ -70,7 +70,7 @@ bool ProcessPolyloop(const IfcPolyLoop& loop, TempMesh& meshout, ConversionData& ++cnt; } - meshout.vertcnt.push_back(cnt); + meshout.vertcnt.push_back(static_cast(cnt)); // zero- or one- vertex polyloops simply ignored if (meshout.vertcnt.back() > 1) { @@ -180,7 +180,7 @@ void ProcessPolygonBoundaries(TempMesh& result, const TempMesh& inmesh, size_t m // fill a mesh with ONLY the main polygon TempMesh temp; temp.verts.reserve(outer_polygon_size); - temp.vertcnt.push_back(outer_polygon_size); + temp.vertcnt.push_back(static_cast(outer_polygon_size)); std::copy(outer_vit, outer_vit+outer_polygon_size, std::back_inserter(temp.verts)); @@ -258,7 +258,7 @@ void ProcessRevolvedAreaSolid(const IfcRevolvedAreaSolid& solid, TempMesh& resul return; } - const unsigned int cnt_segments = std::max(2u,static_cast(16 * std::fabs(max_angle)/AI_MATH_HALF_PI_F)); + const unsigned int cnt_segments = std::max(2u,static_cast(conv.settings.cylindricalTessellation * std::fabs(max_angle)/AI_MATH_HALF_PI_F)); const IfcFloat delta = max_angle/cnt_segments; has_area = has_area && std::fabs(max_angle) < AI_MATH_TWO_PI_F*0.99; @@ -305,8 +305,8 @@ void ProcessRevolvedAreaSolid(const IfcRevolvedAreaSolid& solid, TempMesh& resul for(size_t i = 0; i < size; ++i ) { out.push_back(out[i*4]); } - result.vertcnt.push_back(size); - result.vertcnt.push_back(size); + result.vertcnt.push_back(static_cast(size)); + result.vertcnt.push_back(static_cast(size)); } IfcMatrix4 trafo; @@ -327,7 +327,7 @@ void ProcessSweptDiskSolid(const IfcSweptDiskSolid solid, TempMesh& result, Conv return; } - const unsigned int cnt_segments = 16; + const unsigned int cnt_segments = conv.settings.cylindricalTessellation; const IfcFloat deltaAngle = AI_MATH_TWO_PI/cnt_segments; const size_t samples = curve->EstimateSampleCount(solid.StartParam,solid.EndParam); @@ -638,7 +638,7 @@ void ProcessExtrudedArea(const IfcExtrudedAreaSolid& solid, const TempMesh& curv out.push_back(in[i]); } - curmesh.vertcnt.push_back(in.size()); + curmesh.vertcnt.push_back(static_cast(in.size())); if( openings && in.size() > 2 ) { if( GenerateOpenings(*conv.apply_openings, nors, temp, true, true, dir) ) { ++sides_with_v_openings; @@ -665,7 +665,7 @@ void ProcessExtrudedArea(const IfcExtrudedAreaSolid& solid, const TempMesh& curv std::shared_ptr profile2D = std::shared_ptr(new TempMesh()); profile2D->verts.insert(profile2D->verts.end(), in.begin(), in.end()); - profile2D->vertcnt.push_back(in.size()); + profile2D->vertcnt.push_back(static_cast(in.size())); conv.collect_openings->push_back(TempOpening(&solid, dir, profile, profile2D)); ai_assert(result.IsEmpty()); @@ -810,7 +810,7 @@ bool ProcessGeometricItem(const IfcRepresentationItem& geo, unsigned int matid, aiMesh* const mesh = meshtmp->ToMesh(); if(mesh) { mesh->mMaterialIndex = matid; - mesh_indices.push_back(conv.meshes.size()); + mesh_indices.push_back(static_cast(conv.meshes.size())); conv.meshes.push_back(mesh); return true; } @@ -827,9 +827,8 @@ void AssignAddedMeshes(std::vector& mesh_indices,aiNode* nd, std::sort(mesh_indices.begin(),mesh_indices.end()); std::vector::iterator it_end = std::unique(mesh_indices.begin(),mesh_indices.end()); - const size_t size = std::distance(mesh_indices.begin(),it_end); + nd->mNumMeshes = static_cast(std::distance(mesh_indices.begin(),it_end)); - nd->mNumMeshes = size; nd->mMeshes = new unsigned int[nd->mNumMeshes]; for(unsigned int i = 0; i < nd->mNumMeshes; ++i) { nd->mMeshes[i] = mesh_indices[i]; diff --git a/code/IFCLoader.cpp b/code/IFCLoader.cpp index d6a165f44..0021ceb86 100644 --- a/code/IFCLoader.cpp +++ b/code/IFCLoader.cpp @@ -58,10 +58,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "IFCUtil.h" -#include "StreamReader.h" #include "MemoryIOWrapper.h" #include #include +#include namespace Assimp { @@ -108,7 +108,7 @@ static const aiImporterDesc desc = { 0, 0, 0, - "ifc ifczip" + "ifc ifczip stp" }; @@ -128,11 +128,9 @@ IFCImporter::~IFCImporter() bool IFCImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const { const std::string& extension = GetExtension(pFile); - if (extension == "ifc" || extension == "ifczip") { + if (extension == "ifc" || extension == "ifczip" || extension == "stp" ) { return true; - } - - else if ((!extension.length() || checkSig) && pIOHandler) { + } else if ((!extension.length() || checkSig) && pIOHandler) { // note: this is the common identification for STEP-encoded files, so // it is only unambiguous as long as we don't support any further // file formats with STEP as their encoding. @@ -155,11 +153,10 @@ const aiImporterDesc* IFCImporter::GetInfo () const void IFCImporter::SetupProperties(const Importer* pImp) { settings.skipSpaceRepresentations = pImp->GetPropertyBool(AI_CONFIG_IMPORT_IFC_SKIP_SPACE_REPRESENTATIONS,true); - settings.skipCurveRepresentations = pImp->GetPropertyBool(AI_CONFIG_IMPORT_IFC_SKIP_CURVE_REPRESENTATIONS,true); settings.useCustomTriangulation = pImp->GetPropertyBool(AI_CONFIG_IMPORT_IFC_CUSTOM_TRIANGULATION,true); - - settings.conicSamplingAngle = 10.f; - settings.skipAnnotations = true; + settings.conicSamplingAngle = std::min(std::max(pImp->GetPropertyFloat(AI_CONFIG_IMPORT_IFC_SMOOTHING_ANGLE, AI_IMPORT_IFC_DEFAULT_SMOOTHING_ANGLE), 5.0f), 120.0f); + settings.cylindricalTessellation = std::min(std::max(pImp->GetPropertyInteger(AI_CONFIG_IMPORT_IFC_CYLINDRICAL_TESSELLATION, AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION), 3), 180); + settings.skipAnnotations = true; } @@ -707,7 +704,7 @@ aiNode* ProcessSpatialStructure(aiNode* parent, const IfcProduct& el, Conversion } if (!properties.empty()) { - aiMetadata* data = aiMetadata::Alloc( properties.size() ); + aiMetadata* data = aiMetadata::Alloc( static_cast(properties.size()) ); unsigned int index( 0 ); for ( const Metadata::value_type& kv : properties ) { data->Set( index++, kv.first, aiString( kv.second ) ); diff --git a/code/IFCLoader.h b/code/IFCLoader.h index e301a329d..9fa6cba38 100644 --- a/code/IFCLoader.h +++ b/code/IFCLoader.h @@ -107,18 +107,18 @@ public: { Settings() : skipSpaceRepresentations() - , skipCurveRepresentations() , useCustomTriangulation() , skipAnnotations() , conicSamplingAngle(10.f) + , cylindricalTessellation(32) {} bool skipSpaceRepresentations; - bool skipCurveRepresentations; bool useCustomTriangulation; bool skipAnnotations; float conicSamplingAngle; + int cylindricalTessellation; }; diff --git a/code/IFCMaterial.cpp b/code/IFCMaterial.cpp index 7525db089..ae2fa3619 100644 --- a/code/IFCMaterial.cpp +++ b/code/IFCMaterial.cpp @@ -159,7 +159,7 @@ unsigned int ProcessMaterials(uint64_t id, unsigned int prevMatId, ConversionDat FillMaterial(mat.get(), surf, conv); conv.materials.push_back(mat.release()); - unsigned int matindex = conv.materials.size() - 1; + unsigned int matindex = static_cast(conv.materials.size() - 1); conv.cached_materials[surf] = matindex; return matindex; } diff --git a/code/IFCOpenings.cpp b/code/IFCOpenings.cpp index 3197426cf..f40b49fe4 100644 --- a/code/IFCOpenings.cpp +++ b/code/IFCOpenings.cpp @@ -364,7 +364,7 @@ void InsertWindowContours(const ContourVector& contours, } if (const size_t d = curmesh.verts.size()-old) { - curmesh.vertcnt.push_back(d); + curmesh.vertcnt.push_back(static_cast(d)); std::reverse(curmesh.verts.rbegin(),curmesh.verts.rbegin()+d); } if (n == very_first_hit) { @@ -549,7 +549,7 @@ void CleanupOuterContour(const std::vector& contour_flat, TempMesh& clipper.Execute(ClipperLib::ctIntersection,clipped,ClipperLib::pftNonZero,ClipperLib::pftNonZero); for(const ClipperLib::ExPolygon& ex : clipped) { - iold.push_back(ex.outer.size()); + iold.push_back(static_cast(ex.outer.size())); for(const ClipperLib::IntPoint& point : ex.outer) { vold.push_back(IfcVector3( from_int64(point.X), @@ -901,13 +901,21 @@ size_t CloseWindows(ContourVector& contours, curmesh.verts.reserve(curmesh.verts.size() + (*it).contour.size() * 4); curmesh.vertcnt.reserve(curmesh.vertcnt.size() + (*it).contour.size()); + bool reverseCountourFaces = false; + // compare base poly normal and contour normal to detect if we need to reverse the face winding - IfcVector3 basePolyNormal = TempMesh::ComputePolygonNormal( curmesh.verts.data(), curmesh.vertcnt.front()); - std::vector worldSpaceContourVtx( it->contour.size()); - for( size_t a = 0; a < it->contour.size(); ++a ) - worldSpaceContourVtx[a] = minv * IfcVector3( it->contour[a].x, it->contour[a].y, 0.0); - IfcVector3 contourNormal = TempMesh::ComputePolygonNormal( worldSpaceContourVtx.data(), worldSpaceContourVtx.size()); - bool reverseCountourFaces = (contourNormal * basePolyNormal) > 0.0; + if(curmesh.vertcnt.size() > 0) { + IfcVector3 basePolyNormal = TempMesh::ComputePolygonNormal(curmesh.verts.data(), curmesh.vertcnt.front()); + + std::vector worldSpaceContourVtx(it->contour.size()); + + for(size_t a = 0; a < it->contour.size(); ++a) + worldSpaceContourVtx[a] = minv * IfcVector3(it->contour[a].x, it->contour[a].y, 0.0); + + IfcVector3 contourNormal = TempMesh::ComputePolygonNormal(worldSpaceContourVtx.data(), worldSpaceContourVtx.size()); + + reverseCountourFaces = (contourNormal * basePolyNormal) > 0.0; + } // XXX this algorithm is really a bit inefficient - both in terms // of constant factor and of asymptotic runtime. diff --git a/code/IFCProfile.cpp b/code/IFCProfile.cpp index 01b9008e4..866b874c9 100644 --- a/code/IFCProfile.cpp +++ b/code/IFCProfile.cpp @@ -59,7 +59,7 @@ void ProcessPolyLine(const IfcPolyline& def, TempMesh& meshout, ConversionData& ConvertCartesianPoint(t,cp); meshout.verts.push_back(t); } - meshout.vertcnt.push_back(meshout.verts.size()); + meshout.vertcnt.push_back(static_cast(meshout.verts.size())); } // ------------------------------------------------------------------------------------------------ @@ -80,7 +80,7 @@ bool ProcessCurve(const IfcCurve& curve, TempMesh& meshout, ConversionData& con IFCImporter::LogError(cv.s+ " (error occurred while processing curve)"); return false; } - meshout.vertcnt.push_back(meshout.verts.size()); + meshout.vertcnt.push_back(static_cast(meshout.verts.size())); return true; } @@ -101,7 +101,7 @@ void ProcessOpenProfile(const IfcArbitraryOpenProfileDef& def, TempMesh& meshout } // ------------------------------------------------------------------------------------------------ -void ProcessParametrizedProfile(const IfcParameterizedProfileDef& def, TempMesh& meshout, ConversionData& /*conv*/) +void ProcessParametrizedProfile(const IfcParameterizedProfileDef& def, TempMesh& meshout, ConversionData& conv) { if(const IfcRectangleProfileDef* const cprofile = def.ToPtr()) { const IfcFloat x = cprofile->XDim*0.5f, y = cprofile->YDim*0.5f; @@ -117,7 +117,7 @@ void ProcessParametrizedProfile(const IfcParameterizedProfileDef& def, TempMesh& if(def.ToPtr()) { // TODO } - const size_t segments = 32; + const size_t segments = conv.settings.cylindricalTessellation; const IfcFloat delta = AI_MATH_TWO_PI_F/segments, radius = circle->Radius; meshout.verts.reserve(segments); diff --git a/code/IFCUtil.cpp b/code/IFCUtil.cpp index 89a6c78c5..d7e4d5d54 100644 --- a/code/IFCUtil.cpp +++ b/code/IFCUtil.cpp @@ -49,7 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "IFCUtil.h" #include "PolyTools.h" #include "ProcessHelper.h" -#include "Defines.h" +#include namespace Assimp { namespace IFC { @@ -180,7 +180,7 @@ IfcVector3 TempMesh::ComputePolygonNormal(const IfcVector3* vtcs, size_t cnt, bo } IfcVector3 nor; - NewellNormal<3, 3, 3>(nor, cnt, &temp[0], &temp[1], &temp[2]); + NewellNormal<3, 3, 3>(nor, static_cast(cnt), &temp[0], &temp[1], &temp[2]); return normalize ? nor.Normalize() : nor; } @@ -548,7 +548,7 @@ void ConvertCartesianPoint(IfcVector3& out, const IfcCartesianPoint& in) { out = IfcVector3(); for(size_t i = 0; i < in.Coordinates.size(); ++i) { - out[i] = in.Coordinates[i]; + out[static_cast(i)] = in.Coordinates[i]; } } @@ -564,7 +564,7 @@ void ConvertDirection(IfcVector3& out, const IfcDirection& in) { out = IfcVector3(); for(size_t i = 0; i < in.DirectionRatios.size(); ++i) { - out[i] = in.DirectionRatios[i]; + out[static_cast(i)] = in.DirectionRatios[i]; } const IfcFloat len = out.Length(); if (len<1e-6) { diff --git a/code/IOStreamBuffer.h b/code/IOStreamBuffer.h index 8fb58e548..5208d020c 100644 --- a/code/IOStreamBuffer.h +++ b/code/IOStreamBuffer.h @@ -44,8 +44,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "ParsingUtils.h" -#include - namespace Assimp { // --------------------------------------------------------------------------- diff --git a/code/IRRLoader.cpp b/code/IRRLoader.cpp index b7776abdc..e552601b8 100644 --- a/code/IRRLoader.cpp +++ b/code/IRRLoader.cpp @@ -65,7 +65,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include - +#include using namespace Assimp; using namespace irr; @@ -215,7 +215,7 @@ void IRRImporter::BuildSkybox(std::vector& meshes, std::vectormMaterialIndex = materials.size()-6u; + meshes.back()->mMaterialIndex = static_cast(materials.size()-6u); // LEFT SIDE meshes.push_back( BuildSingleQuadMesh( @@ -223,7 +223,7 @@ void IRRImporter::BuildSkybox(std::vector& meshes, std::vectormMaterialIndex = materials.size()-5u; + meshes.back()->mMaterialIndex = static_cast(materials.size()-5u); // BACK SIDE meshes.push_back( BuildSingleQuadMesh( @@ -231,7 +231,7 @@ void IRRImporter::BuildSkybox(std::vector& meshes, std::vectormMaterialIndex = materials.size()-4u; + meshes.back()->mMaterialIndex = static_cast(materials.size()-4u); // RIGHT SIDE meshes.push_back( BuildSingleQuadMesh( @@ -239,7 +239,7 @@ void IRRImporter::BuildSkybox(std::vector& meshes, std::vectormMaterialIndex = materials.size()-3u; + meshes.back()->mMaterialIndex = static_cast(materials.size()-3u); // TOP SIDE meshes.push_back( BuildSingleQuadMesh( @@ -247,7 +247,7 @@ void IRRImporter::BuildSkybox(std::vector& meshes, std::vectormMaterialIndex = materials.size()-2u; + meshes.back()->mMaterialIndex = static_cast(materials.size()-2u); // BOTTOM SIDE meshes.push_back( BuildSingleQuadMesh( @@ -255,7 +255,7 @@ void IRRImporter::BuildSkybox(std::vector& meshes, std::vectormMaterialIndex = materials.size()-1u; + meshes.back()->mMaterialIndex = static_cast(materials.size()-1u); } // ------------------------------------------------------------------------------------------------ @@ -642,7 +642,7 @@ void SetupMapping (aiMaterial* mat, aiTextureMapping mode, const aiVector3D& axi delete[] mat->mProperties; mat->mProperties = new aiMaterialProperty*[p.size()*2]; - mat->mNumAllocated = p.size()*2; + mat->mNumAllocated = static_cast(p.size()*2); } mat->mNumProperties = (unsigned int)p.size(); ::memcpy(mat->mProperties,&p[0],sizeof(void*)*mat->mNumProperties); diff --git a/code/IRRMeshLoader.cpp b/code/IRRMeshLoader.cpp index 853ead15f..88439459a 100644 --- a/code/IRRMeshLoader.cpp +++ b/code/IRRMeshLoader.cpp @@ -54,9 +54,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include "Macros.h" - using namespace Assimp; using namespace irr; using namespace irr::io; diff --git a/code/Importer.cpp b/code/Importer.cpp index 45b91feea..094774544 100644 --- a/code/Importer.cpp +++ b/code/Importer.cpp @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include // ------------------------------------------------------------------------------------------------ /* Uncomment this line to prevent Assimp from catching unknown exceptions. @@ -65,8 +66,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "BaseProcess.h" -#include "DefaultIOStream.h" -#include "DefaultIOSystem.h" #include "DefaultProgressHandler.h" #include "GenericProperty.h" #include "ProcessHelper.h" @@ -81,6 +80,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include +#include + #ifndef ASSIMP_BUILD_NO_VALIDATEDS_PROCESS # include "ValidateDataStructure.h" #endif @@ -654,7 +656,7 @@ const aiScene* Importer::ReadFile( const char* _pFile, unsigned int pFlags) uint32_t fileSize = 0; if (fileIO) { - fileSize = fileIO->FileSize(); + fileSize = static_cast(fileIO->FileSize()); pimpl->mIOHandler->Close( fileIO ); } @@ -790,7 +792,7 @@ const aiScene* Importer::ApplyPostProcessing(unsigned int pFlags) for( unsigned int a = 0; a < pimpl->mPostProcessingSteps.size(); a++) { BaseProcess* process = pimpl->mPostProcessingSteps[a]; - pimpl->mProgressHandler->UpdatePostProcess( a, pimpl->mPostProcessingSteps.size() ); + pimpl->mProgressHandler->UpdatePostProcess(static_cast(a), static_cast(pimpl->mPostProcessingSteps.size()) ); if( process->IsActive( pFlags)) { if (profiler) { @@ -825,7 +827,7 @@ const aiScene* Importer::ApplyPostProcessing(unsigned int pFlags) } #endif // ! DEBUG } - pimpl->mProgressHandler->UpdatePostProcess( pimpl->mPostProcessingSteps.size(), pimpl->mPostProcessingSteps.size() ); + pimpl->mProgressHandler->UpdatePostProcess( static_cast(pimpl->mPostProcessingSteps.size()), static_cast(pimpl->mPostProcessingSteps.size()) ); // update private scene flags if( pimpl->mScene ) diff --git a/code/Importer.h b/code/Importer.h index a0df1a6c1..6beca45ba 100644 --- a/code/Importer.h +++ b/code/Importer.h @@ -44,8 +44,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_IMPORTER_H #include -#include #include +#include #include struct aiScene; diff --git a/code/ImporterRegistry.cpp b/code/ImporterRegistry.cpp index 95a1867e0..f77193c2f 100644 --- a/code/ImporterRegistry.cpp +++ b/code/ImporterRegistry.cpp @@ -46,6 +46,9 @@ directly (unless you are adding new loaders), instead use the corresponding preprocessor flag to selectively disable formats. */ +#include +#include "BaseImporter.h" + // ------------------------------------------------------------------------------------------------ // Importers // (include_new_importers_here) diff --git a/code/JoinVerticesProcess.h b/code/JoinVerticesProcess.h index af92040d2..b1a9aa910 100644 --- a/code/JoinVerticesProcess.h +++ b/code/JoinVerticesProcess.h @@ -62,7 +62,6 @@ namespace Assimp class ASSIMP_API JoinVerticesProcess : public BaseProcess { public: - JoinVerticesProcess(); ~JoinVerticesProcess(); diff --git a/code/LWOAnimation.cpp b/code/LWOAnimation.cpp index f41853dad..10bc54b16 100644 --- a/code/LWOAnimation.cpp +++ b/code/LWOAnimation.cpp @@ -565,7 +565,7 @@ void AnimResolver::ExtractAnimChannel(aiNodeAnim** out, unsigned int flags /*= 0 std::vector keys; GetKeys(keys,trans_x,trans_y,trans_z,flags); - anim->mPositionKeys = new aiVectorKey[ anim->mNumPositionKeys = keys.size() ]; + anim->mPositionKeys = new aiVectorKey[ anim->mNumPositionKeys = static_cast(keys.size()) ]; std::copy(keys.begin(),keys.end(),anim->mPositionKeys); } @@ -574,7 +574,7 @@ void AnimResolver::ExtractAnimChannel(aiNodeAnim** out, unsigned int flags /*= 0 std::vector keys; GetKeys(keys,rotat_x,rotat_y,rotat_z,flags); - anim->mRotationKeys = new aiQuatKey[ anim->mNumRotationKeys = keys.size() ]; + anim->mRotationKeys = new aiQuatKey[ anim->mNumRotationKeys = static_cast(keys.size()) ]; // convert heading, pitch, bank to quaternion // mValue.x=Heading=Rot(Y), mValue.y=Pitch=Rot(X), mValue.z=Bank=Rot(Z) @@ -594,7 +594,7 @@ void AnimResolver::ExtractAnimChannel(aiNodeAnim** out, unsigned int flags /*= 0 std::vector keys; GetKeys(keys,scale_x,scale_y,scale_z,flags); - anim->mScalingKeys = new aiVectorKey[ anim->mNumScalingKeys = keys.size() ]; + anim->mScalingKeys = new aiVectorKey[ anim->mNumScalingKeys = static_cast(keys.size()) ]; std::copy(keys.begin(),keys.end(),anim->mScalingKeys); } } diff --git a/code/LWOLoader.cpp b/code/LWOLoader.cpp index df2cab7bc..5d8b84aab 100644 --- a/code/LWOLoader.cpp +++ b/code/LWOLoader.cpp @@ -54,10 +54,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ProcessHelper.h" #include "ConvertToLHProcess.h" #include +#include #include #include #include - +#include using namespace Assimp; @@ -426,7 +427,7 @@ void LWOImporter::InternReadFile( const std::string& pFile, } // Generate nodes to render the mesh. Store the source layer in the mParent member of the nodes - unsigned int num = apcMeshes.size() - meshStart; + unsigned int num = static_cast(apcMeshes.size() - meshStart); if (layer.mName != "" || num > 0) { aiNode* pcNode = new aiNode(); apcNodes[layer.mIndex] = pcNode; @@ -781,7 +782,7 @@ void LWOImporter::LoadLWO2Polygons(unsigned int length) // Determine the type of the polygons switch (type) { - // read unsupported stuff too (although we wont process it) + // read unsupported stuff too (although we won't process it) case AI_LWO_MBAL: DefaultLogger::get()->warn("LWO2: Encountered unsupported primitive chunk (METABALL)"); break; diff --git a/code/LWOLoader.h b/code/LWOLoader.h index 09d66cf24..9907d691d 100644 --- a/code/LWOLoader.h +++ b/code/LWOLoader.h @@ -49,6 +49,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "LWOFileData.h" #include "BaseImporter.h" +#include + struct aiTexture; struct aiNode; struct aiMaterial; diff --git a/code/LWOMaterial.cpp b/code/LWOMaterial.cpp index 555cc8787..42a6f8c5e 100644 --- a/code/LWOMaterial.cpp +++ b/code/LWOMaterial.cpp @@ -454,7 +454,7 @@ void LWOImporter::FindUVChannels(LWO::Surface& surf, ++extra; out[next++] = i; } - // B�h ... seems not to be used at all. Push to end if enough space is available. + // Bah ... seems not to be used at all. Push to end if enough space is available. else { out[extra++] = i; ++num_extra; diff --git a/code/LWSLoader.cpp b/code/LWSLoader.cpp index a81c15a6e..52d0c522c 100644 --- a/code/LWSLoader.cpp +++ b/code/LWSLoader.cpp @@ -58,9 +58,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include - using namespace Assimp; static const aiImporterDesc desc = { @@ -902,7 +902,7 @@ void LWSImporter::InternReadFile( const std::string& pFile, aiScene* pScene, anim->mTicksPerSecond = fps; anim->mDuration = last-(first-1); /* fixme ... zero or one-based?*/ - anim->mChannels = new aiNodeAnim*[anim->mNumChannels = anims.size()]; + anim->mChannels = new aiNodeAnim*[anim->mNumChannels = static_cast(anims.size())]; std::copy(anims.begin(),anims.end(),anim->mChannels); } diff --git a/code/LimitBoneWeightsProcess.cpp b/code/LimitBoneWeightsProcess.cpp index e7fd9ab60..e35fe1462 100644 --- a/code/LimitBoneWeightsProcess.cpp +++ b/code/LimitBoneWeightsProcess.cpp @@ -129,9 +129,9 @@ void LimitBoneWeightsProcess::ProcessMesh( aiMesh* pMesh) std::sort( vit->begin(), vit->end()); // now kill everything beyond the maximum count - unsigned int m = vit->size(); + unsigned int m = static_cast(vit->size()); vit->erase( vit->begin() + mMaxWeights, vit->end()); - removed += m-vit->size(); + removed += static_cast(m-vit->size()); // and renormalize the weights float sum = 0.0f; diff --git a/code/MD2FileData.h b/code/MD2FileData.h index f7a494335..b56f6c76b 100644 --- a/code/MD2FileData.h +++ b/code/MD2FileData.h @@ -46,8 +46,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_MD2FILEHELPER_H_INC #include -#include -#include #include #include diff --git a/code/MD2Loader.cpp b/code/MD2Loader.cpp index b4c124774..ffcda3916 100644 --- a/code/MD2Loader.cpp +++ b/code/MD2Loader.cpp @@ -50,6 +50,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include + #include using namespace Assimp; diff --git a/code/MD3Loader.cpp b/code/MD3Loader.cpp index a99fb06b1..f469a4c95 100644 --- a/code/MD3Loader.cpp +++ b/code/MD3Loader.cpp @@ -62,10 +62,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include - - using namespace Assimp; static const aiImporterDesc desc = { @@ -709,7 +708,7 @@ void MD3Importer::ConvertPath(const char* texture_name, const char* header_name, } } else len2 = std::min (len1, (size_t)(end2 - texture_name )); - if (!ASSIMP_strincmp(texture_name,header_name,len2)) { + if (!ASSIMP_strincmp(texture_name,header_name,static_cast(len2))) { // Use the file name only out = end2+1; return; diff --git a/code/MD5Loader.cpp b/code/MD5Loader.cpp index 8c66f6507..d2477a2c5 100644 --- a/code/MD5Loader.cpp +++ b/code/MD5Loader.cpp @@ -56,6 +56,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include using namespace Assimp; @@ -228,8 +229,8 @@ void MD5Importer::MakeDataUnique (MD5::MeshDesc& meshSrc) std::vector abHad(meshSrc.mVertices.size(),false); // allocate enough storage to keep the output structures - const unsigned int iNewNum = meshSrc.mFaces.size()*3; - unsigned int iNewIndex = meshSrc.mVertices.size(); + const unsigned int iNewNum = static_cast(meshSrc.mFaces.size()*3); + unsigned int iNewIndex = static_cast(meshSrc.mVertices.size()); meshSrc.mVertices.resize(iNewNum); // try to guess how much storage we'll need for new weights @@ -719,16 +720,16 @@ void MD5Importer::LoadMD5CameraFile () // every cut is written to a separate aiAnimation if (!cuts.size()) { cuts.push_back(0); - cuts.push_back(frames.size()-1); + cuts.push_back(static_cast(frames.size()-1)); } else { cuts.insert(cuts.begin(),0); if (cuts.back() < frames.size()-1) - cuts.push_back(frames.size()-1); + cuts.push_back(static_cast(frames.size()-1)); } - pScene->mNumAnimations = cuts.size()-1; + pScene->mNumAnimations = static_cast(cuts.size()-1); aiAnimation** tmp = pScene->mAnimations = new aiAnimation*[pScene->mNumAnimations]; for (std::vector::const_iterator it = cuts.begin(); it != cuts.end()-1; ++it) { diff --git a/code/MDCLoader.cpp b/code/MDCLoader.cpp index d97215864..db109bf83 100644 --- a/code/MDCLoader.cpp +++ b/code/MDCLoader.cpp @@ -52,6 +52,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include diff --git a/code/MDLLoader.cpp b/code/MDLLoader.cpp index f82e7abfe..4aeff43e5 100644 --- a/code/MDLLoader.cpp +++ b/code/MDLLoader.cpp @@ -58,10 +58,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include - using namespace Assimp; static const aiImporterDesc desc = { diff --git a/code/MDLMaterialLoader.cpp b/code/MDLMaterialLoader.cpp index 3425d7b09..64cebc7d5 100644 --- a/code/MDLMaterialLoader.cpp +++ b/code/MDLMaterialLoader.cpp @@ -52,8 +52,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include "qnan.h" -#include "Defines.h" using namespace Assimp; diff --git a/code/MS3DLoader.cpp b/code/MS3DLoader.cpp index ef16a756a..07a3d9b17 100644 --- a/code/MS3DLoader.cpp +++ b/code/MS3DLoader.cpp @@ -53,7 +53,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include - +#include +#include using namespace Assimp; @@ -423,7 +424,7 @@ void MS3DImporter::InternReadFile( const std::string& pFile, for (unsigned int i = 0; i < groups.size(); ++i) { TempGroup& g = groups[i]; if (g.mat == UINT_MAX) { - g.mat = materials.size()-1; + g.mat = static_cast(materials.size()-1); } } } @@ -483,7 +484,7 @@ void MS3DImporter::InternReadFile( const std::string& pFile, m->mMaterialIndex = g.mat; m->mPrimitiveTypes = aiPrimitiveType_TRIANGLE; - m->mFaces = new aiFace[m->mNumFaces = g.triangles.size()]; + m->mFaces = new aiFace[m->mNumFaces = static_cast(g.triangles.size())]; m->mNumVertices = m->mNumFaces*3; // storage for vertices - verbose format, as requested by the postprocessing pipeline diff --git a/code/MaterialSystem.cpp b/code/MaterialSystem.cpp index 21cd38f79..5fcf28a4f 100644 --- a/code/MaterialSystem.cpp +++ b/code/MaterialSystem.cpp @@ -529,7 +529,7 @@ aiReturn aiMaterial::AddProperty (const aiString* pInput, s[1] = static_cast(pInput->length); return AddBinaryProperty(s+1, - pInput->length+1+4, + static_cast(pInput->length+1+4), pKey, type, index, @@ -537,7 +537,7 @@ aiReturn aiMaterial::AddProperty (const aiString* pInput, } ai_assert(sizeof(size_t)==4); return AddBinaryProperty(pInput, - pInput->length+1+4, + static_cast(pInput->length+1+4), pKey, type, index, diff --git a/code/NDOLoader.cpp b/code/NDOLoader.cpp index de682e260..2ce3983dc 100644 --- a/code/NDOLoader.cpp +++ b/code/NDOLoader.cpp @@ -49,7 +49,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include "StreamReader.h" +#include using namespace Assimp; @@ -257,7 +259,7 @@ void NDOImporter::InternReadFile( const std::string& pFile, } aiMesh* mesh = new aiMesh(); - mesh->mNumFaces=face_table.size(); + mesh->mNumFaces=static_cast(face_table.size()); aiFace* faces = mesh->mFaces = new aiFace[mesh->mNumFaces]; vertices.clear(); @@ -279,7 +281,7 @@ void NDOImporter::InternReadFile( const std::string& pFile, next_edge = obj.edges[cur_edge].edge[4]; next_vert = obj.edges[cur_edge].edge[0]; } - indices.push_back( vertices.size() ); + indices.push_back( static_cast(vertices.size()) ); vertices.push_back(obj.vertices[ next_vert ].val); cur_edge = next_edge; @@ -288,11 +290,11 @@ void NDOImporter::InternReadFile( const std::string& pFile, } } - f.mIndices = new unsigned int[f.mNumIndices = indices.size()]; + f.mIndices = new unsigned int[f.mNumIndices = static_cast(indices.size())]; std::copy(indices.begin(),indices.end(),f.mIndices); } - mesh->mVertices = new aiVector3D[mesh->mNumVertices = vertices.size()]; + mesh->mVertices = new aiVector3D[mesh->mNumVertices = static_cast(vertices.size())]; std::copy(vertices.begin(),vertices.end(),mesh->mVertices); if (mesh->mNumVertices) { diff --git a/code/NFFLoader.cpp b/code/NFFLoader.cpp index 8cc1624d5..24ca24cce 100644 --- a/code/NFFLoader.cpp +++ b/code/NFFLoader.cpp @@ -54,6 +54,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include diff --git a/code/OFFLoader.cpp b/code/OFFLoader.cpp index cb2226bf6..fee36b03a 100644 --- a/code/OFFLoader.cpp +++ b/code/OFFLoader.cpp @@ -54,7 +54,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include - +#include using namespace Assimp; diff --git a/code/ObjExporter.cpp b/code/ObjExporter.cpp index aada4efd7..d10dfcd45 100644 --- a/code/ObjExporter.cpp +++ b/code/ObjExporter.cpp @@ -38,8 +38,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ - - #ifndef ASSIMP_BUILD_NO_EXPORT #ifndef ASSIMP_BUILD_NO_OBJ_EXPORTER @@ -53,14 +51,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include - using namespace Assimp; -namespace Assimp { + +namespace Assimp { // ------------------------------------------------------------------------------------------------ // Worker function for exporting a scene to Wavefront OBJ. Prototyped and registered in Exporter.cpp -void ExportSceneObj(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* pProperties) -{ +void ExportSceneObj(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* pProperties) { // invoke the exporter ObjExporter exporter(pFile, pScene); @@ -86,11 +83,14 @@ void ExportSceneObj(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene static const std::string MaterialExt = ".mtl"; // ------------------------------------------------------------------------------------------------ -ObjExporter :: ObjExporter(const char* _filename, const aiScene* pScene) +ObjExporter::ObjExporter(const char* _filename, const aiScene* pScene) : filename(_filename) , pScene(pScene) , endl("\n") -{ +, vp() +, vn() +, vt() +, vc() { // make sure that all formatting happens using the standard, C locale and not the user's current locale const std::locale& l = std::locale("C"); mOutput.imbue(l); @@ -102,6 +102,11 @@ ObjExporter :: ObjExporter(const char* _filename, const aiScene* pScene) WriteMaterialFile(); } +// ------------------------------------------------------------------------------------------------ +ObjExporter::~ObjExporter() { + +} + // ------------------------------------------------------------------------------------------------ std::string ObjExporter :: GetMaterialLibName() { @@ -166,11 +171,17 @@ void ObjExporter::WriteMaterialFile() if(AI_SUCCESS == mat->Get(AI_MATKEY_COLOR_EMISSIVE,c)) { mOutputMat << "Ke " << c.r << " " << c.g << " " << c.b << endl; } - + if(AI_SUCCESS == mat->Get(AI_MATKEY_COLOR_TRANSPARENT,c)) { + mOutputMat << "Tf " << c.r << " " << c.g << " " << c.b << endl; + } + ai_real o; if(AI_SUCCESS == mat->Get(AI_MATKEY_OPACITY,o)) { mOutputMat << "d " << o << endl; } + if(AI_SUCCESS == mat->Get(AI_MATKEY_REFRACTI,o)) { + mOutputMat << "Ni " << o << endl; + } if(AI_SUCCESS == mat->Get(AI_MATKEY_SHININESS,o) && o) { mOutputMat << "Ns " << o << endl; @@ -206,8 +217,7 @@ void ObjExporter::WriteMaterialFile() } // ------------------------------------------------------------------------------------------------ -void ObjExporter :: WriteGeometryFile() -{ +void ObjExporter::WriteGeometryFile() { WriteHeader(mOutput); mOutput << "mtllib " << GetMaterialLibName() << endl << endl; @@ -215,11 +225,21 @@ void ObjExporter :: WriteGeometryFile() aiMatrix4x4 mBase; AddNode(pScene->mRootNode, mBase); - // write vertex positions - vpMap.getVectors(vp); - mOutput << "# " << vp.size() << " vertex positions" << endl; - for(const aiVector3D& v : vp) { - mOutput << "v " << v.x << " " << v.y << " " << v.z << endl; + // write vertex positions with colors, if any + vpMap.getVectors( vp ); + vcMap.getColors( vc ); + if ( vc.empty() ) { + mOutput << "# " << vp.size() << " vertex positions" << endl; + for ( const aiVector3D& v : vp ) { + mOutput << "v " << v.x << " " << v.y << " " << v.z << endl; + } + } else { + mOutput << "# " << vp.size() << " vertex positions and colors" << endl; + size_t colIdx = 0; + for ( const aiVector3D& v : vp ) { + mOutput << "v " << v.x << " " << v.y << " " << v.z << " " << vc[ colIdx ].r << " " << vc[ colIdx ].g << " " << vc[ colIdx ].b << endl; + colIdx++; + } } mOutput << endl; @@ -272,8 +292,7 @@ void ObjExporter :: WriteGeometryFile() } // ------------------------------------------------------------------------------------------------ -int ObjExporter::vecIndexMap::getIndex(const aiVector3D& vec) -{ +int ObjExporter::vecIndexMap::getIndex(const aiVector3D& vec) { vecIndexMap::dataType::iterator vertIt = vecMap.find(vec); // vertex already exists, so reference it if(vertIt != vecMap.end()){ @@ -286,8 +305,7 @@ int ObjExporter::vecIndexMap::getIndex(const aiVector3D& vec) } // ------------------------------------------------------------------------------------------------ -void ObjExporter::vecIndexMap::getVectors( std::vector& vecs ) -{ +void ObjExporter::vecIndexMap::getVectors( std::vector& vecs ) { vecs.resize(vecMap.size()); for(vecIndexMap::dataType::iterator it = vecMap.begin(); it != vecMap.end(); ++it){ vecs[it->second-1] = it->first; @@ -295,8 +313,29 @@ void ObjExporter::vecIndexMap::getVectors( std::vector& vecs ) } // ------------------------------------------------------------------------------------------------ -void ObjExporter::AddMesh(const aiString& name, const aiMesh* m, const aiMatrix4x4& mat) -{ +int ObjExporter::colIndexMap::getIndex( const aiColor4D& col ) { + colIndexMap::dataType::iterator vertIt = colMap.find( col ); + // vertex already exists, so reference it + if ( vertIt != colMap.end() ) { + return vertIt->second; + } + colMap[ col ] = mNextIndex; + int ret = mNextIndex; + mNextIndex++; + + return ret; +} + +// ------------------------------------------------------------------------------------------------ +void ObjExporter::colIndexMap::getColors( std::vector &colors ) { + colors.resize( colMap.size() ); + for ( colIndexMap::dataType::iterator it = colMap.begin(); it != colMap.end(); ++it ) { + colors[ it->second - 1 ] = it->first; + } +} + +// ------------------------------------------------------------------------------------------------ +void ObjExporter::AddMesh(const aiString& name, const aiMesh* m, const aiMatrix4x4& mat) { meshes.push_back(MeshInstance()); MeshInstance& mesh = meshes.back(); @@ -330,15 +369,20 @@ void ObjExporter::AddMesh(const aiString& name, const aiMesh* m, const aiMatrix4 if (m->mNormals) { aiVector3D norm = aiMatrix3x3(mat) * m->mNormals[idx]; face.indices[a].vn = vnMap.getIndex(norm); - } - else{ + } else { face.indices[a].vn = 0; } - if (m->mTextureCoords[0]) { - face.indices[a].vt = vtMap.getIndex(m->mTextureCoords[0][idx]); + if ( nullptr != m->mColors[ 0 ] ) { + aiColor4D col4 = m->mColors[ 0 ][ idx ]; + face.indices[ a ].vc = vcMap.getIndex( col4 ); + } else { + face.indices[ a ].vc = 0; } - else{ + + if ( m->mTextureCoords[ 0 ] ) { + face.indices[a].vt = vtMap.getIndex(m->mTextureCoords[0][idx]); + } else { face.indices[a].vt = 0; } } diff --git a/code/ObjExporter.h b/code/ObjExporter.h index 9d817f067..8e92a7db5 100644 --- a/code/ObjExporter.h +++ b/code/ObjExporter.h @@ -53,40 +53,35 @@ struct aiScene; struct aiNode; struct aiMesh; -namespace Assimp -{ +namespace Assimp { // ------------------------------------------------------------------------------------------------ /** Helper class to export a given scene to an OBJ file. */ // ------------------------------------------------------------------------------------------------ -class ObjExporter -{ +class ObjExporter { public: /// Constructor for a specific scene to export ObjExporter(const char* filename, const aiScene* pScene); - -public: - + ~ObjExporter(); std::string GetMaterialLibName(); std::string GetMaterialLibFileName(); - -public: - - /// public stringstreams to write all output into + + /// public string-streams to write all output into std::ostringstream mOutput, mOutputMat; private: - // intermediate data structures - struct FaceVertex - { + struct FaceVertex { FaceVertex() - : vp(),vn(),vt() - { + : vp() + , vn() + , vt() + , vc() { + // empty } // one-based, 0 means: 'does not exist' - unsigned int vp,vn,vt; + unsigned int vp, vn, vt, vc; }; struct Face { @@ -95,13 +90,11 @@ private: }; struct MeshInstance { - std::string name, matname; std::vector faces; }; void WriteHeader(std::ostringstream& out); - void WriteMaterialFile(); void WriteGeometryFile(); @@ -111,17 +104,14 @@ private: void AddNode(const aiNode* nd, const aiMatrix4x4& mParent); private: - const std::string filename; const aiScene* const pScene; std::vector vp, vn, vt; + std::vector vc; - - struct aiVectorCompare - { - bool operator() (const aiVector3D& a, const aiVector3D& b) const - { + struct aiVectorCompare { + bool operator() (const aiVector3D& a, const aiVector3D& b) const { if(a.x < b.x) return true; if(a.x > b.x) return false; if(a.y < b.y) return true; @@ -131,21 +121,52 @@ private: } }; - class vecIndexMap - { + struct aiColor4Compare { + bool operator() ( const aiColor4D& a, const aiColor4D& b ) const { + if ( a.r < b.r ) return true; + if ( a.r > b.r ) return false; + if ( a.g < b.g ) return true; + if ( a.g > b.g ) return false; + if ( a.b < b.b ) return true; + if ( a.b > b.b ) return false; + if ( a.a < b.a ) return true; + if ( a.a > b.a ) return false; + return false; + } + }; + + class vecIndexMap { int mNextIndex; typedef std::map dataType; dataType vecMap; + public: - - vecIndexMap():mNextIndex(1) - {} + vecIndexMap() + : mNextIndex(1) { + // empty + } int getIndex(const aiVector3D& vec); void getVectors( std::vector& vecs ); }; + class colIndexMap { + int mNextIndex; + typedef std::map dataType; + dataType colMap; + + public: + colIndexMap() + : mNextIndex( 1 ) { + // empty + } + + int getIndex( const aiColor4D& col ); + void getColors( std::vector &colors ); + }; + vecIndexMap vpMap, vnMap, vtMap; + colIndexMap vcMap; std::vector meshes; // this endl() doesn't flush() the stream diff --git a/code/ObjFileData.h b/code/ObjFileData.h index c72175d4d..1c6f80ce1 100644 --- a/code/ObjFileData.h +++ b/code/ObjFileData.h @@ -178,6 +178,8 @@ struct Material { int illumination_model; //! Index of refraction ai_real ior; + //! Transparency color + aiColor3D transparent; //! Constructor Material() @@ -185,7 +187,8 @@ struct Material { , alpha (ai_real( 1.0 ) ) , shineness ( ai_real( 0.0) ) , illumination_model (1) - , ior ( ai_real( 1.0 ) ) { + , ior ( ai_real( 1.0 ) ) + , transparent( ai_real( 1.0), ai_real (1.0), ai_real(1.0)) { // empty for (size_t i = 0; i < TextureTypeCount; ++i) { clamp[ i ] = false; diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index 97ae29996..1b9b92f62 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -41,16 +41,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_OBJ_IMPORTER -#include "DefaultIOSystem.h" #include "ObjFileImporter.h" #include "ObjFileParser.h" #include "ObjFileData.h" #include "IOStreamBuffer.h" #include +#include #include #include #include #include +#include static const aiImporterDesc desc = { "Wavefront Object Importer", @@ -149,10 +150,10 @@ void ObjFileImporter::InternReadFile( const std::string &file, aiScene* pScene, // This next stage takes ~ 1/3th of the total readFile task // so should amount for 1/3th of the progress // only update every 100KB or it'll be too slow - unsigned int progress = 0; + /*unsigned int progress = 0; unsigned int progressCounter = 0; const unsigned int updateProgressEveryBytes = 100 * 1024; - const unsigned int progressTotal = (3*m_Buffer.size()/updateProgressEveryBytes); + const unsigned int progressTotal = static_cast(3*m_Buffer.size()/updateProgressEveryBytes);*/ // process all '\' /*std::vector ::iterator iter = m_Buffer.begin(); while (iter != m_Buffer.end()) @@ -326,10 +327,10 @@ aiMesh *ObjFileImporter::createTopology( const ObjFile::Model* pModel, const Obj ai_assert( NULL != inp ); if (inp->m_PrimitiveType == aiPrimitiveType_LINE) { - pMesh->mNumFaces += inp->m_vertices.size() - 1; + pMesh->mNumFaces += static_cast(inp->m_vertices.size() - 1); pMesh->mPrimitiveTypes |= aiPrimitiveType_LINE; } else if (inp->m_PrimitiveType == aiPrimitiveType_POINT) { - pMesh->mNumFaces += inp->m_vertices.size(); + pMesh->mNumFaces += static_cast(inp->m_vertices.size()); pMesh->mPrimitiveTypes |= aiPrimitiveType_POINT; } else { ++pMesh->mNumFaces; @@ -542,13 +543,13 @@ void ObjFileImporter::countObjects(const std::vector &rObjects // ------------------------------------------------------------------------------------------------ // Add clamp mode property to material if necessary -void ObjFileImporter::addTextureMappingModeProperty( aiMaterial* mat, aiTextureType type, int clampMode) { +void ObjFileImporter::addTextureMappingModeProperty( aiMaterial* mat, aiTextureType type, int clampMode, int index) { if ( nullptr == mat ) { return; } - mat->AddProperty( &clampMode, 1, AI_MATKEY_MAPPINGMODE_U( type, 0 ) ); - mat->AddProperty( &clampMode, 1, AI_MATKEY_MAPPINGMODE_V( type, 0 ) ); + mat->AddProperty( &clampMode, 1, AI_MATKEY_MAPPINGMODE_U( type, index ) ); + mat->AddProperty( &clampMode, 1, AI_MATKEY_MAPPINGMODE_V( type, index ) ); } // ------------------------------------------------------------------------------------------------ @@ -600,9 +601,6 @@ void ObjFileImporter::createMaterials(const ObjFile::Model* pModel, aiScene* pSc mat->AddProperty( &sm, 1, AI_MATKEY_SHADING_MODEL); - // multiplying the specular exponent with 2 seems to yield better results - pCurrentMaterial->shineness *= 4.f; - // Adding material colors mat->AddProperty( &pCurrentMaterial->ambient, 1, AI_MATKEY_COLOR_AMBIENT ); mat->AddProperty( &pCurrentMaterial->diffuse, 1, AI_MATKEY_COLOR_DIFFUSE ); @@ -610,6 +608,7 @@ void ObjFileImporter::createMaterials(const ObjFile::Model* pModel, aiScene* pSc mat->AddProperty( &pCurrentMaterial->emissive, 1, AI_MATKEY_COLOR_EMISSIVE ); mat->AddProperty( &pCurrentMaterial->shineness, 1, AI_MATKEY_SHININESS ); mat->AddProperty( &pCurrentMaterial->alpha, 1, AI_MATKEY_OPACITY ); + mat->AddProperty( &pCurrentMaterial->transparent,1,AI_MATKEY_COLOR_TRANSPARENT); // Adding refraction index mat->AddProperty( &pCurrentMaterial->ior, 1, AI_MATKEY_REFRACTI ); @@ -671,12 +670,12 @@ void ObjFileImporter::createMaterials(const ObjFile::Model* pModel, aiScene* pSc unsigned count = type == ObjFile::Material::TextureReflectionSphereType ? 1 : 6; for( unsigned i = 0; i < count; i++ ) + { mat->AddProperty(&pCurrentMaterial->textureReflection[i], AI_MATKEY_TEXTURE_REFLECTION(i)); - if(pCurrentMaterial->clamp[type]) - //TODO addTextureMappingModeProperty should accept an index to handle clamp option for each - //texture of a cubemap - addTextureMappingModeProperty(mat, aiTextureType_REFLECTION); + if(pCurrentMaterial->clamp[type]) + addTextureMappingModeProperty(mat, aiTextureType_REFLECTION, 1, i); + } } if ( 0 != pCurrentMaterial->textureDisp.length ) diff --git a/code/ObjFileImporter.h b/code/ObjFileImporter.h index a962d43c4..bd3f42f27 100644 --- a/code/ObjFileImporter.h +++ b/code/ObjFileImporter.h @@ -100,7 +100,7 @@ private: void createMaterials(const ObjFile::Model* pModel, aiScene* pScene); /// @brief Adds special property for the used texture mapping mode of the model. - void addTextureMappingModeProperty(aiMaterial* mat, aiTextureType type, int clampMode = 1); + void addTextureMappingModeProperty(aiMaterial* mat, aiTextureType type, int clampMode = 1, int index = 0); //! \brief Appends a child node to a parent node and updates the data structures. void appendChildToParentNode(aiNode *pParent, aiNode *pChild); diff --git a/code/ObjFileMtlImporter.cpp b/code/ObjFileMtlImporter.cpp index 0228ef224..4759f10e2 100644 --- a/code/ObjFileMtlImporter.cpp +++ b/code/ObjFileMtlImporter.cpp @@ -59,8 +59,8 @@ static const std::string DiffuseTexture = "map_Kd"; static const std::string AmbientTexture = "map_Ka"; static const std::string SpecularTexture = "map_Ks"; static const std::string OpacityTexture = "map_d"; -static const std::string EmmissiveTexture = "map_emissive"; -static const std::string EmmissiveTexture_1 = "map_Ke"; +static const std::string EmissiveTexture = "map_emissive"; +static const std::string EmissiveTexture_1 = "map_Ke"; static const std::string BumpTexture1 = "map_bump"; static const std::string BumpTexture2 = "map_Bump"; static const std::string BumpTexture3 = "bump"; @@ -163,7 +163,17 @@ void ObjFileMtlImporter::load() m_DataIt = skipLine( m_DataIt, m_DataItEnd, m_uiLine ); } break; - + case 'T': + { + ++m_DataIt; + if (*m_DataIt == 'f') // Material transmission + { + ++m_DataIt; + getColorRGBA( &m_pModel->m_pCurrentMaterial->transparent); + } + m_DataIt = skipLine( m_DataIt, m_DataItEnd, m_uiLine ); + } + break; case 'd': { if( *(m_DataIt+1) == 'i' && *( m_DataIt + 2 ) == 's' && *( m_DataIt + 3 ) == 'p' ) { @@ -292,6 +302,9 @@ void ObjFileMtlImporter::createMaterial() // New Material created m_pModel->m_pCurrentMaterial = new ObjFile::Material(); m_pModel->m_pCurrentMaterial->MaterialName.Set( name ); + if (m_pModel->m_pCurrentMesh) { + m_pModel->m_pCurrentMesh->m_uiMaterialIndex = m_pModel->m_MaterialLib.size() - 1; + } m_pModel->m_MaterialLib.push_back( name ); m_pModel->m_MaterialMap[ name ] = m_pModel->m_pCurrentMaterial; } else { @@ -307,49 +320,49 @@ void ObjFileMtlImporter::getTexture() { int clampIndex = -1; const char *pPtr( &(*m_DataIt) ); - if ( !ASSIMP_strincmp( pPtr, DiffuseTexture.c_str(), DiffuseTexture.size() ) ) { + if ( !ASSIMP_strincmp( pPtr, DiffuseTexture.c_str(), static_cast(DiffuseTexture.size()) ) ) { // Diffuse texture out = & m_pModel->m_pCurrentMaterial->texture; clampIndex = ObjFile::Material::TextureDiffuseType; - } else if ( !ASSIMP_strincmp( pPtr,AmbientTexture.c_str(),AmbientTexture.size() ) ) { + } else if ( !ASSIMP_strincmp( pPtr,AmbientTexture.c_str(), static_cast(AmbientTexture.size()) ) ) { // Ambient texture out = & m_pModel->m_pCurrentMaterial->textureAmbient; clampIndex = ObjFile::Material::TextureAmbientType; - } else if (!ASSIMP_strincmp( pPtr, SpecularTexture.c_str(), SpecularTexture.size())) { + } else if (!ASSIMP_strincmp( pPtr, SpecularTexture.c_str(), static_cast(SpecularTexture.size()) ) ) { // Specular texture out = & m_pModel->m_pCurrentMaterial->textureSpecular; clampIndex = ObjFile::Material::TextureSpecularType; - } else if ( !ASSIMP_strincmp( pPtr, OpacityTexture.c_str(), OpacityTexture.size() ) ) { + } else if ( !ASSIMP_strincmp( pPtr, OpacityTexture.c_str(), static_cast(OpacityTexture.size()) ) ) { // Opacity texture out = & m_pModel->m_pCurrentMaterial->textureOpacity; clampIndex = ObjFile::Material::TextureOpacityType; - } else if (!ASSIMP_strincmp( pPtr, EmmissiveTexture.c_str(), EmmissiveTexture.size())) { + } else if (!ASSIMP_strincmp( pPtr, EmissiveTexture.c_str(), static_cast(EmissiveTexture.size()) ) ) { // Emissive texture out = & m_pModel->m_pCurrentMaterial->textureEmissive; clampIndex = ObjFile::Material::TextureEmissiveType; - } else if ( !ASSIMP_strincmp( pPtr, EmmissiveTexture_1.c_str(), EmmissiveTexture_1.size() ) ) { + } else if ( !ASSIMP_strincmp( pPtr, EmissiveTexture_1.c_str(), static_cast(EmissiveTexture_1.size()) ) ) { // Emissive texture out = &m_pModel->m_pCurrentMaterial->textureEmissive; clampIndex = ObjFile::Material::TextureEmissiveType; - } else if ( !ASSIMP_strincmp( pPtr, BumpTexture1.c_str(), BumpTexture1.size() ) || - !ASSIMP_strincmp( pPtr, BumpTexture2.c_str(), BumpTexture2.size() ) || - !ASSIMP_strincmp( pPtr, BumpTexture3.c_str(), BumpTexture3.size() ) ) { + } else if ( !ASSIMP_strincmp( pPtr, BumpTexture1.c_str(), static_cast(BumpTexture1.size()) ) || + !ASSIMP_strincmp( pPtr, BumpTexture2.c_str(), static_cast(BumpTexture2.size()) ) || + !ASSIMP_strincmp( pPtr, BumpTexture3.c_str(), static_cast(BumpTexture3.size()) ) ) { // Bump texture out = & m_pModel->m_pCurrentMaterial->textureBump; clampIndex = ObjFile::Material::TextureBumpType; - } else if (!ASSIMP_strincmp( pPtr,NormalTexture.c_str(), NormalTexture.size())) { + } else if (!ASSIMP_strincmp( pPtr,NormalTexture.c_str(), static_cast(NormalTexture.size()) ) ) { // Normal map out = & m_pModel->m_pCurrentMaterial->textureNormal; clampIndex = ObjFile::Material::TextureNormalType; - } else if(!ASSIMP_strincmp( pPtr, ReflectionTexture.c_str(), ReflectionTexture.size() ) ) { + } else if(!ASSIMP_strincmp( pPtr, ReflectionTexture.c_str(), static_cast(ReflectionTexture.size()) ) ) { // Reflection texture(s) //Do nothing here return; - } else if (!ASSIMP_strincmp( pPtr, DisplacementTexture.c_str(), DisplacementTexture.size() ) ) { + } else if (!ASSIMP_strincmp( pPtr, DisplacementTexture.c_str(), static_cast(DisplacementTexture.size()) ) ) { // Displacement texture out = &m_pModel->m_pCurrentMaterial->textureDisp; clampIndex = ObjFile::Material::TextureDispType; - } else if (!ASSIMP_strincmp( pPtr, SpecularityTexture.c_str(),SpecularityTexture.size() ) ) { + } else if (!ASSIMP_strincmp( pPtr, SpecularityTexture.c_str(), static_cast(SpecularityTexture.size()) ) ) { // Specularity scaling (glossiness) out = & m_pModel->m_pCurrentMaterial->textureSpecularity; clampIndex = ObjFile::Material::TextureSpecularityType; @@ -394,7 +407,7 @@ void ObjFileMtlImporter::getTextureOption(bool &clamp, int &clampIndex, aiString //skip option key and value int skipToken = 1; - if (!ASSIMP_strincmp(pPtr, ClampOption.c_str(), ClampOption.size())) + if (!ASSIMP_strincmp(pPtr, ClampOption.c_str(), static_cast(ClampOption.size()))) { DataArrayIt it = getNextToken(m_DataIt, m_DataItEnd); char value[3]; @@ -406,7 +419,7 @@ void ObjFileMtlImporter::getTextureOption(bool &clamp, int &clampIndex, aiString skipToken = 2; } - else if( !ASSIMP_strincmp( pPtr, TypeOption.c_str(), TypeOption.size() ) ) + else if( !ASSIMP_strincmp( pPtr, TypeOption.c_str(), static_cast(TypeOption.size()) ) ) { DataArrayIt it = getNextToken( m_DataIt, m_DataItEnd ); char value[ 12 ]; @@ -449,22 +462,22 @@ void ObjFileMtlImporter::getTextureOption(bool &clamp, int &clampIndex, aiString skipToken = 2; } - else if (!ASSIMP_strincmp(pPtr, BlendUOption.c_str(), BlendUOption.size()) - || !ASSIMP_strincmp(pPtr, BlendVOption.c_str(), BlendVOption.size()) - || !ASSIMP_strincmp(pPtr, BoostOption.c_str(), BoostOption.size()) - || !ASSIMP_strincmp(pPtr, ResolutionOption.c_str(), ResolutionOption.size()) - || !ASSIMP_strincmp(pPtr, BumpOption.c_str(), BumpOption.size()) - || !ASSIMP_strincmp(pPtr, ChannelOption.c_str(), ChannelOption.size())) + else if (!ASSIMP_strincmp(pPtr, BlendUOption.c_str(), static_cast(BlendUOption.size())) + || !ASSIMP_strincmp(pPtr, BlendVOption.c_str(), static_cast(BlendVOption.size())) + || !ASSIMP_strincmp(pPtr, BoostOption.c_str(), static_cast(BoostOption.size())) + || !ASSIMP_strincmp(pPtr, ResolutionOption.c_str(), static_cast(ResolutionOption.size())) + || !ASSIMP_strincmp(pPtr, BumpOption.c_str(), static_cast(BumpOption.size())) + || !ASSIMP_strincmp(pPtr, ChannelOption.c_str(), static_cast(ChannelOption.size()))) { skipToken = 2; } - else if (!ASSIMP_strincmp(pPtr, ModifyMapOption.c_str(), ModifyMapOption.size())) + else if (!ASSIMP_strincmp(pPtr, ModifyMapOption.c_str(), static_cast(ModifyMapOption.size()))) { skipToken = 3; } - else if ( !ASSIMP_strincmp(pPtr, OffsetOption.c_str(), OffsetOption.size()) - || !ASSIMP_strincmp(pPtr, ScaleOption.c_str(), ScaleOption.size()) - || !ASSIMP_strincmp(pPtr, TurbulenceOption.c_str(), TurbulenceOption.size()) + else if ( !ASSIMP_strincmp(pPtr, OffsetOption.c_str(), static_cast(OffsetOption.size())) + || !ASSIMP_strincmp(pPtr, ScaleOption.c_str(), static_cast(ScaleOption.size())) + || !ASSIMP_strincmp(pPtr, TurbulenceOption.c_str(), static_cast(TurbulenceOption.size())) ) { skipToken = 4; diff --git a/code/ObjFileParser.cpp b/code/ObjFileParser.cpp index 7371b2d81..41ae447ba 100644 --- a/code/ObjFileParser.cpp +++ b/code/ObjFileParser.cpp @@ -45,8 +45,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ObjTools.h" #include "ObjFileData.h" #include "ParsingUtils.h" -#include "DefaultIOSystem.h" #include "BaseImporter.h" +#include #include #include #include @@ -58,7 +58,7 @@ const std::string ObjFileParser::DEFAULT_MATERIAL = AI_DEFAULT_MATERIAL_NAME; // ------------------------------------------------------------------- // Constructor with loaded data and directories. -ObjFileParser::ObjFileParser( IOStreamBuffer &streamBuffer, const std::string &modelName, +ObjFileParser::ObjFileParser( IOStreamBuffer &streamBuffer, const std::string &modelName, IOSystem *io, ProgressHandler* progress, const std::string &originalObjFileName) : m_DataIt(), @@ -102,9 +102,9 @@ ObjFile::Model *ObjFileParser::GetModel() const { // File parsing method. void ObjFileParser::parseFile( IOStreamBuffer &streamBuffer ) { // only update every 100KB or it'll be too slow - const unsigned int updateProgressEveryBytes = 100 * 1024; + //const unsigned int updateProgressEveryBytes = 100 * 1024; unsigned int progressCounter = 0; - const unsigned int bytesToProcess = streamBuffer.size(); + const unsigned int bytesToProcess = static_cast(streamBuffer.size()); const unsigned int progressTotal = 3 * bytesToProcess; const unsigned int progressOffset = bytesToProcess; unsigned int processed = 0; @@ -115,10 +115,10 @@ void ObjFileParser::parseFile( IOStreamBuffer &streamBuffer ) { m_DataIt = buffer.begin(); m_DataItEnd = buffer.end(); - // Handle progress reporting + // Handle progress reporting const size_t filePos( streamBuffer.getFilePos() ); if ( lastFilePos < filePos ) { - processed += filePos; + processed += static_cast(filePos); lastFilePos = filePos; progressCounter++; m_progress->UpdateFileRead( progressOffset + processed * 2, progressTotal ); @@ -377,9 +377,9 @@ void ObjFileParser::getFace( aiPrimitiveType type ) { ObjFile::Face *face = new ObjFile::Face( type ); bool hasNormal = false; - const int vSize = m_pModel->m_Vertices.size(); - const int vtSize = m_pModel->m_TextureCoord.size(); - const int vnSize = m_pModel->m_Normals.size(); + const int vSize = static_cast(m_pModel->m_Vertices.size()); + const int vtSize = static_cast(m_pModel->m_TextureCoord.size()); + const int vnSize = static_cast(m_pModel->m_Normals.size()); const bool vt = (!m_pModel->m_TextureCoord.empty()); const bool vn = (!m_pModel->m_Normals.empty()); @@ -568,7 +568,10 @@ void ObjFileParser::getMaterialLib() { std::string absName; // Check if directive is valid. - if(!strMatName.length()) throw DeadlyImportError("File name of the material is absent."); + if ( 0 == strMatName.length() ) { + DefaultLogger::get()->warn( "OBJ: no name for material library specified." ); + return; + } if ( m_pIO->StackSize() > 0 ) { std::string path = m_pIO->CurrentDirectory(); @@ -587,7 +590,7 @@ void ObjFileParser::getMaterialLib() { DefaultLogger::get()->info("OBJ: Opening fallback material file " + strMatFallbackName); pFile = m_pIO->Open(strMatFallbackName); if (!pFile) { - DefaultLogger::get()->error("OBJ: Unable to locate fallback material file " + strMatName); + DefaultLogger::get()->error("OBJ: Unable to locate fallback material file " + strMatFallbackName); m_DataIt = skipLine(m_DataIt, m_DataItEnd, m_uiLine); return; } @@ -772,7 +775,7 @@ void ObjFileParser::createMesh( const std::string &meshName ) ai_assert( NULL != m_pModel ); m_pModel->m_pCurrentMesh = new ObjFile::Mesh( meshName ); m_pModel->m_Meshes.push_back( m_pModel->m_pCurrentMesh ); - unsigned int meshId = m_pModel->m_Meshes.size()-1; + unsigned int meshId = static_cast(m_pModel->m_Meshes.size()-1); if ( NULL != m_pModel->m_pCurrent ) { m_pModel->m_pCurrent->m_Meshes.push_back( meshId ); diff --git a/code/ObjTools.h b/code/ObjTools.h index b0978a199..8dee62f18 100644 --- a/code/ObjTools.h +++ b/code/ObjTools.h @@ -48,8 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ParsingUtils.h" #include -namespace Assimp -{ +namespace Assimp { /** @brief Returns true, if the last entry of the buffer is reached. * @param it Iterator of current position. @@ -57,15 +56,14 @@ namespace Assimp * @return true, if the end of the buffer is reached. */ template -inline bool isEndOfBuffer( char_t it, char_t end ) -{ +inline bool isEndOfBuffer( char_t it, char_t end ) { if ( it == end ) { return true; } else { - end--; + --end; } return ( it == end ); } @@ -142,15 +140,13 @@ inline char_t getName( char_t it, char_t end, std::string &name ) } char *pStart = &( *it ); - while( !isEndOfBuffer( it, end ) && !IsLineEnd( *it ) && !IsSpaceOrNewLine( *it ) ) { + while( !isEndOfBuffer( it, end ) && !IsLineEnd( *it )) { ++it; } - /*while( isEndOfBuffer( it, end ) || IsLineEnd( *it ) || IsSpaceOrNewLine( *it ) ) { + while(IsSpace( *it ) ) { --it; } - ++it; - */ // Get name // if there is no name, and the previous char is a separator, come back to start while (&(*it) < pStart) { diff --git a/code/OgreBinarySerializer.cpp b/code/OgreBinarySerializer.cpp index ce17cea6a..59bd0d92d 100644 --- a/code/OgreBinarySerializer.cpp +++ b/code/OgreBinarySerializer.cpp @@ -483,7 +483,7 @@ void OgreBinarySerializer::ReadSubMesh(Mesh *mesh) NormalizeBoneWeights(submesh->vertexData); - submesh->index = mesh->subMeshes.size(); + submesh->index = static_cast(mesh->subMeshes.size()); mesh->subMeshes.push_back(submesh); } @@ -498,7 +498,7 @@ void OgreBinarySerializer::NormalizeBoneWeights(VertexData *vertexData) const } /** Normalize bone weights. - Some exporters wont care if the sum of all bone weights + Some exporters won't care if the sum of all bone weights for a single vertex equals 1 or not, so validate here. */ const float epsilon = 0.05f; for (const uint32_t vertexIndex : influencedVertices) diff --git a/code/OgreImporter.cpp b/code/OgreImporter.cpp index 504f6a96f..744be0965 100644 --- a/code/OgreImporter.cpp +++ b/code/OgreImporter.cpp @@ -40,12 +40,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_OGRE_IMPORTER - - #include "OgreImporter.h" #include "OgreBinarySerializer.h" #include "OgreXmlSerializer.h" #include +#include #include static const aiImporterDesc desc = { diff --git a/code/OgreMaterial.cpp b/code/OgreMaterial.cpp index a221ab274..bdcd0285a 100644 --- a/code/OgreMaterial.cpp +++ b/code/OgreMaterial.cpp @@ -77,7 +77,7 @@ void OgreImporter::ReadMaterials(const std::string &pFile, Assimp::IOSystem *pIO aiMaterial *material = ReadMaterial(pFile, pIOHandler, submesh->materialRef); if (material) { - submesh->materialIndex = materials.size(); + submesh->materialIndex = static_cast(materials.size()); materials.push_back(material); } } @@ -99,7 +99,7 @@ void OgreImporter::ReadMaterials(const std::string &pFile, Assimp::IOSystem *pIO aiMaterial *material = ReadMaterial(pFile, pIOHandler, submesh->materialRef); if (material) { - submesh->materialIndex = materials.size(); + submesh->materialIndex = static_cast(materials.size()); materials.push_back(material); } } @@ -110,7 +110,7 @@ void OgreImporter::ReadMaterials(const std::string &pFile, Assimp::IOSystem *pIO void OgreImporter::AssignMaterials(aiScene *pScene, std::vector &materials) { - pScene->mNumMaterials = materials.size(); + pScene->mNumMaterials = static_cast(materials.size()); if (pScene->mNumMaterials > 0) { pScene->mMaterials = new aiMaterial*[pScene->mNumMaterials]; diff --git a/code/OgreStructs.cpp b/code/OgreStructs.cpp index e2e8c8103..d9cd547d6 100644 --- a/code/OgreStructs.cpp +++ b/code/OgreStructs.cpp @@ -274,12 +274,12 @@ AssimpVertexBoneWeightList IVertexData::AssimpBoneWeights(size_t vertices) AssimpVertexBoneWeightList weights; for(size_t vi=0; vi(vi)]; for (VertexBoneAssignmentList::const_iterator iter=vertexWeights.begin(), end=vertexWeights.end(); iter!=end; ++iter) { std::vector &boneWeights = weights[iter->boneIndex]; - boneWeights.push_back(aiVertexWeight(vi, iter->weight)); + boneWeights.push_back(aiVertexWeight(static_cast(vi), iter->weight)); } } return weights; @@ -319,7 +319,7 @@ uint32_t VertexData::VertexSize(uint16_t source) const for(const auto &element : vertexElements) { if (element.source == source) - size += element.Size(); + size += static_cast(element.Size()); } return size; } @@ -460,7 +460,7 @@ void Mesh::ConvertToAssimpScene(aiScene* dest) } // Setup - dest->mNumMeshes = NumSubMeshes(); + dest->mNumMeshes = static_cast(NumSubMeshes()); dest->mMeshes = new aiMesh*[dest->mNumMeshes]; // Create root node @@ -471,7 +471,7 @@ void Mesh::ConvertToAssimpScene(aiScene* dest) // Export meshes for(size_t i=0; imNumMeshes; ++i) { dest->mMeshes[i] = subMeshes[i]->ConvertToAssimpMesh(this); - dest->mRootNode->mMeshes[i] = i; + dest->mRootNode->mMeshes[i] = static_cast(i); } // Export skeleton @@ -481,7 +481,7 @@ void Mesh::ConvertToAssimpScene(aiScene* dest) if (!skeleton->bones.empty()) { BoneList rootBones = skeleton->RootBones(); - dest->mRootNode->mNumChildren = rootBones.size(); + dest->mRootNode->mNumChildren = static_cast(rootBones.size()); dest->mRootNode->mChildren = new aiNode*[dest->mRootNode->mNumChildren]; for(size_t i=0, len=rootBones.size(); ianimations.empty()) { - dest->mNumAnimations = skeleton->animations.size(); + dest->mNumAnimations = static_cast(skeleton->animations.size()); dest->mAnimations = new aiAnimation*[dest->mNumAnimations]; for(size_t i=0, len=skeleton->animations.size(); imNumFaces * 3; - dest->mNumVertices = uniqueVertexCount; + dest->mNumVertices = static_cast(uniqueVertexCount); dest->mVertices = new aiVector3D[dest->mNumVertices]; // Source streams @@ -604,7 +604,7 @@ aiMesh *SubMesh::ConvertToAssimpMesh(Mesh *parent) { if (uv1Element->type == VertexElement::VET_FLOAT2 || uv1Element->type == VertexElement::VET_FLOAT3) { - dest->mNumUVComponents[0] = uv1Element->ComponentCount(); + dest->mNumUVComponents[0] = static_cast(uv1Element->ComponentCount()); dest->mTextureCoords[0] = new aiVector3D[dest->mNumVertices]; } else @@ -617,7 +617,7 @@ aiMesh *SubMesh::ConvertToAssimpMesh(Mesh *parent) { if (uv2Element->type == VertexElement::VET_FLOAT2 || uv2Element->type == VertexElement::VET_FLOAT3) { - dest->mNumUVComponents[1] = uv2Element->ComponentCount(); + dest->mNumUVComponents[1] = static_cast(uv2Element->ComponentCount()); dest->mTextureCoords[1] = new aiVector3D[dest->mNumVertices]; } else @@ -665,11 +665,11 @@ aiMesh *SubMesh::ConvertToAssimpMesh(Mesh *parent) const size_t newIndex = pos + v; // Write face index - face.mIndices[v] = newIndex; + face.mIndices[v] = static_cast(newIndex); // Ogres vertex index to ref into the source buffers. const size_t ogreVertexIndex = ogreFace.mIndices[v]; - src->AddVertexMapping(ogreVertexIndex, newIndex); + src->AddVertexMapping(static_cast(ogreVertexIndex), static_cast(newIndex)); // Position positions->Seek((vWidthPosition * ogreVertexIndex) + positionsElement->offset, aiOrigin_SET); @@ -704,7 +704,7 @@ aiMesh *SubMesh::ConvertToAssimpMesh(Mesh *parent) AssimpVertexBoneWeightList weights = src->AssimpBoneWeights(dest->mNumVertices); std::set referencedBones = src->ReferencedBonesByWeights(); - dest->mNumBones = referencedBones.size(); + dest->mNumBones = static_cast(referencedBones.size()); dest->mBones = new aiBone*[dest->mNumBones]; size_t assimpBoneIndex = 0; @@ -758,7 +758,7 @@ SubMeshXml *MeshXml::GetSubMesh(uint16_t index) const void MeshXml::ConvertToAssimpScene(aiScene* dest) { // Setup - dest->mNumMeshes = NumSubMeshes(); + dest->mNumMeshes = static_cast(NumSubMeshes()); dest->mMeshes = new aiMesh*[dest->mNumMeshes]; // Create root node @@ -770,7 +770,7 @@ void MeshXml::ConvertToAssimpScene(aiScene* dest) for(size_t i=0; imNumMeshes; ++i) { dest->mMeshes[i] = subMeshes[i]->ConvertToAssimpMesh(this); - dest->mRootNode->mMeshes[i] = i; + dest->mRootNode->mMeshes[i] = static_cast(i); } // Export skeleton @@ -780,7 +780,7 @@ void MeshXml::ConvertToAssimpScene(aiScene* dest) if (!skeleton->bones.empty()) { BoneList rootBones = skeleton->RootBones(); - dest->mRootNode->mNumChildren = rootBones.size(); + dest->mRootNode->mNumChildren = static_cast(rootBones.size()); dest->mRootNode->mChildren = new aiNode*[dest->mRootNode->mNumChildren]; for(size_t i=0, len=rootBones.size(); ianimations.empty()) { - dest->mNumAnimations = skeleton->animations.size(); + dest->mNumAnimations = static_cast(skeleton->animations.size()); dest->mAnimations = new aiAnimation*[dest->mNumAnimations]; for(size_t i=0, len=skeleton->animations.size(); imNumFaces * 3; - dest->mNumVertices = uniqueVertexCount; + dest->mNumVertices = static_cast(uniqueVertexCount); dest->mVertices = new aiVector3D[dest->mNumVertices]; VertexDataXml *src = (!usesSharedVertexData ? vertexData : parent->sharedVertexData); @@ -875,11 +875,11 @@ aiMesh *SubMeshXml::ConvertToAssimpMesh(MeshXml *parent) const size_t newIndex = pos + v; // Write face index - face.mIndices[v] = newIndex; + face.mIndices[v] = static_cast(newIndex); // Ogres vertex index to ref into the source buffers. const size_t ogreVertexIndex = ogreFace.mIndices[v]; - src->AddVertexMapping(ogreVertexIndex, newIndex); + src->AddVertexMapping(static_cast(ogreVertexIndex), static_cast(newIndex)); // Position dest->mVertices[newIndex] = src->positions[ogreVertexIndex]; @@ -904,7 +904,7 @@ aiMesh *SubMeshXml::ConvertToAssimpMesh(MeshXml *parent) AssimpVertexBoneWeightList weights = src->AssimpBoneWeights(dest->mNumVertices); std::set referencedBones = src->ReferencedBonesByWeights(); - dest->mNumBones = referencedBones.size(); + dest->mNumBones = static_cast(referencedBones.size()); dest->mBones = new aiBone*[dest->mNumBones]; size_t assimpBoneIndex = 0; @@ -958,7 +958,7 @@ aiAnimation *Animation::ConvertToAssimpAnimation() // Tracks if (!tracks.empty()) { - anim->mNumChannels = tracks.size(); + anim->mNumChannels = static_cast(tracks.size()); anim->mChannels = new aiNodeAnim*[anim->mNumChannels]; for(size_t i=0, len=tracks.size(); imNumChildren = children.size(); + node->mNumChildren = static_cast(children.size()); node->mChildren = new aiNode*[node->mNumChildren]; for(size_t i=0, len=children.size(); imNumWeights = boneWeights.size(); + bone->mNumWeights = static_cast(boneWeights.size()); bone->mWeights = new aiVertexWeight[boneWeights.size()]; memcpy(bone->mWeights, &boneWeights[0], boneWeights.size() * sizeof(aiVertexWeight)); } @@ -1158,9 +1158,9 @@ aiNodeAnim *VertexAnimationTrack::ConvertToAssimpAnimationNode(Skeleton *skeleto nodeAnim->mPositionKeys = new aiVectorKey[numKeyframes]; nodeAnim->mRotationKeys = new aiQuatKey[numKeyframes]; nodeAnim->mScalingKeys = new aiVectorKey[numKeyframes]; - nodeAnim->mNumPositionKeys = numKeyframes; - nodeAnim->mNumRotationKeys = numKeyframes; - nodeAnim->mNumScalingKeys = numKeyframes; + nodeAnim->mNumPositionKeys = static_cast(numKeyframes); + nodeAnim->mNumRotationKeys = static_cast(numKeyframes); + nodeAnim->mNumScalingKeys = static_cast(numKeyframes); for(size_t kfi=0; kfiindex = mesh->subMeshes.size(); + submesh->index = static_cast(mesh->subMeshes.size()); mesh->subMeshes.push_back(submesh); } @@ -654,7 +654,7 @@ void OgreXmlSerializer::ReadBoneAssignments(VertexDataXml *dest) } /** Normalize bone weights. - Some exporters wont care if the sum of all bone weights + Some exporters won't care if the sum of all bone weights for a single vertex equals 1 or not, so validate here. */ const float epsilon = 0.05f; for (const uint32_t vertexIndex : influencedVertices) diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 1a4d511c4..5df6d1646 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -40,7 +40,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_OPENGEX_IMPORTER #include "OpenGEXImporter.h" -#include "DefaultIOSystem.h" +#include #include #include "MakeVerboseFormat.h" #include "StringComparison.h" @@ -48,6 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include @@ -518,7 +519,7 @@ void OpenGEXImporter::handleObjectRefNode( DDLNode *node, aiScene *pScene ) { // when we are dealing with a geometry node prepare the mesh cache if ( m_tokenType == Grammar::GeometryNodeToken ) { - m_currentNode->mNumMeshes = objRefNames.size(); + m_currentNode->mNumMeshes = static_cast(objRefNames.size()); m_currentNode->mMeshes = new unsigned int[ objRefNames.size() ]; if ( !objRefNames.empty() ) { m_unresolvedRefStack.push_back( new RefInfo( m_currentNode, RefInfo::MeshRef, objRefNames ) ); @@ -863,9 +864,9 @@ void OpenGEXImporter::handleIndexArrayNode( ODDLParser::DDLNode *node, aiScene * } const size_t numItems( countDataArrayListItems( vaList ) ); - m_currentMesh->mNumFaces = numItems; + m_currentMesh->mNumFaces = static_cast(numItems); m_currentMesh->mFaces = new aiFace[ numItems ]; - m_currentMesh->mNumVertices = numItems * 3; + m_currentMesh->mNumVertices = static_cast(numItems * 3); m_currentMesh->mVertices = new aiVector3D[ m_currentMesh->mNumVertices ]; bool hasColors( false ); if ( m_currentVertices.m_numColors > 0 ) { @@ -1086,7 +1087,7 @@ void OpenGEXImporter::copyMeshes( aiScene *pScene ) { return; } - pScene->mNumMeshes = m_meshCache.size(); + pScene->mNumMeshes = static_cast(m_meshCache.size()); pScene->mMeshes = new aiMesh*[ pScene->mNumMeshes ]; std::copy( m_meshCache.begin(), m_meshCache.end(), pScene->mMeshes ); } @@ -1099,7 +1100,7 @@ void OpenGEXImporter::copyCameras( aiScene *pScene ) { return; } - pScene->mNumCameras = m_cameraCache.size(); + pScene->mNumCameras = static_cast(m_cameraCache.size()); pScene->mCameras = new aiCamera*[ pScene->mNumCameras ]; std::copy( m_cameraCache.begin(), m_cameraCache.end(), pScene->mCameras ); } @@ -1112,7 +1113,7 @@ void OpenGEXImporter::copyLights( aiScene *pScene ) { return; } - pScene->mNumLights = m_lightCache.size(); + pScene->mNumLights = static_cast(m_lightCache.size()); pScene->mLights = new aiLight*[ pScene->mNumLights ]; std::copy( m_lightCache.begin(), m_lightCache.end(), pScene->mLights ); } @@ -1133,7 +1134,7 @@ void OpenGEXImporter::resolveReferences() { const std::string &name( currentRefInfo->m_Names[ i ] ); ReferenceMap::const_iterator it( m_mesh2refMap.find( name ) ); if( m_mesh2refMap.end() != it ) { - unsigned int meshIdx = m_mesh2refMap[ name ]; + unsigned int meshIdx = static_cast(m_mesh2refMap[ name ]); node->mMeshes[ i ] = meshIdx; } } @@ -1156,7 +1157,7 @@ void OpenGEXImporter::createNodeTree( aiScene *pScene ) { return; } - pScene->mRootNode->mNumChildren = m_root->m_children.size(); + pScene->mRootNode->mNumChildren = static_cast(m_root->m_children.size()); pScene->mRootNode->mChildren = new aiNode*[ pScene->mRootNode->mNumChildren ]; std::copy( m_root->m_children.begin(), m_root->m_children.end(), pScene->mRootNode->mChildren ); } diff --git a/code/OpenGEXImporter.h b/code/OpenGEXImporter.h index 103b27903..d33b0a804 100644 --- a/code/OpenGEXImporter.h +++ b/code/OpenGEXImporter.h @@ -47,6 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include namespace ODDLParser { class DDLNode; diff --git a/code/OptimizeGraph.cpp b/code/OptimizeGraph.cpp index ec37bd447..4d033ee31 100644 --- a/code/OptimizeGraph.cpp +++ b/code/OptimizeGraph.cpp @@ -230,7 +230,7 @@ void OptimizeGraphProcess::CollectNewChildren(aiNode* nd, std::list& no else nd->mChildren = NULL; } - nd->mNumChildren = child_nodes.size(); + nd->mNumChildren = static_cast(child_nodes.size()); aiNode** tmp = nd->mChildren; for (std::list::iterator it = child_nodes.begin(); it != child_nodes.end(); ++it) { @@ -238,7 +238,7 @@ void OptimizeGraphProcess::CollectNewChildren(aiNode* nd, std::list& no node->mParent = nd; } - nodes_out += child_nodes.size(); + nodes_out += static_cast(child_nodes.size()); } // ------------------------------------------------------------------------------------------------ diff --git a/code/OptimizeMeshes.cpp b/code/OptimizeMeshes.cpp index 8d830bb9b..2bb9c5717 100644 --- a/code/OptimizeMeshes.cpp +++ b/code/OptimizeMeshes.cpp @@ -145,7 +145,7 @@ void OptimizeMeshesProcess::Execute( aiScene* pScene) meshes.resize( 0 ); ai_assert(output.size() <= num_old); - mScene->mNumMeshes = output.size(); + mScene->mNumMeshes = static_cast(output.size()); std::copy(output.begin(),output.end(),mScene->mMeshes); if (output.size() != num_old) { @@ -199,7 +199,7 @@ void OptimizeMeshesProcess::ProcessNode( aiNode* pNode) } else { output.push_back(mScene->mMeshes[im]); } - im = output.size()-1; + im = static_cast(output.size()-1); } } diff --git a/code/PlyLoader.cpp b/code/PlyLoader.cpp index dc002531f..5dc83e7c6 100644 --- a/code/PlyLoader.cpp +++ b/code/PlyLoader.cpp @@ -51,7 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include - +#include using namespace Assimp; @@ -90,14 +90,16 @@ namespace // ------------------------------------------------------------------------------------------------ // Constructor to be privately used by Importer PLYImporter::PLYImporter() - : mBuffer(), - pcDOM() -{} +: mBuffer() +, pcDOM(){ + // empty +} // ------------------------------------------------------------------------------------------------ // Destructor, private as well -PLYImporter::~PLYImporter() -{} +PLYImporter::~PLYImporter() { + // empty +} // ------------------------------------------------------------------------------------------------ // Returns whether the class can handle the format of the given file. @@ -439,7 +441,7 @@ void PLYImporter::LoadTextureCoordinates(std::vector* pvOut) PLY::ElementInstanceList* pcList = NULL; unsigned int cnt = 0; - // serach in the DOM for a vertex entry + // search in the DOM for a vertex entry unsigned int _i = 0; for (std::vector::const_iterator i = pcDOM->alElements.begin(); i != pcDOM->alElements.end();++i,++_i) @@ -653,7 +655,7 @@ void PLYImporter::LoadVertexColor(std::vector* pvOut) unsigned int cnt = 0; PLY::ElementInstanceList* pcList = NULL; - // serach in the DOM for a vertex entry + // search in the DOM for a vertex entry unsigned int _i = 0; for (std::vector::const_iterator i = pcDOM->alElements.begin(); i != pcDOM->alElements.end();++i,++_i) @@ -752,13 +754,13 @@ void PLYImporter::LoadFaces(std::vector* pvOut) // index of the vertex index list unsigned int iProperty = 0xFFFFFFFF; PLY::EDataType eType = EDT_Char; - bool bIsTristrip = false; + bool bIsTriStrip = false; // index of the material index property unsigned int iMaterialIndex = 0xFFFFFFFF; PLY::EDataType eType2 = EDT_Char; - // serach in the DOM for a face entry + // search in the DOM for a face entry unsigned int _i = 0; for (std::vector::const_iterator i = pcDOM->alElements.begin(); i != pcDOM->alElements.end();++i,++_i) @@ -803,7 +805,7 @@ void PLYImporter::LoadFaces(std::vector* pvOut) if (!(*a).bIsList)continue; iProperty = _a; bOne = true; - bIsTristrip = true; + bIsTriStrip = true; eType = (*a).eType; break; } @@ -813,7 +815,7 @@ void PLYImporter::LoadFaces(std::vector* pvOut) // check whether we have at least one per-face information set if (pcList && bOne) { - if (!bIsTristrip) + if (!bIsTriStrip) { pvOut->reserve(pcList->alInstances.size()); for (std::vector::const_iterator i = pcList->alInstances.begin(); @@ -957,7 +959,7 @@ void PLYImporter::LoadMaterial(std::vector* pvOut) unsigned int iOpacity = 0xFFFFFFFF; PLY::EDataType eOpacity = EDT_Char; - // serach in the DOM for a vertex entry + // search in the DOM for a vertex entry unsigned int _i = 0; for (std::vector::const_iterator i = this->pcDOM->alElements.begin(); i != this->pcDOM->alElements.end();++i,++_i) @@ -1074,7 +1076,7 @@ void PLYImporter::LoadMaterial(std::vector* pvOut) pcHelper->AddProperty(&clrOut,1,AI_MATKEY_COLOR_AMBIENT); // handle phong power and shading mode - int iMode; + int iMode = (int)aiShadingMode_Gouraud; if (0xFFFFFFFF != iPhong) { ai_real fSpec = PLY::PropertyInstance::ConvertTo(GetProperty((*i).alProperties, iPhong).avList.front(),ePhong); @@ -1087,9 +1089,7 @@ void PLYImporter::LoadMaterial(std::vector* pvOut) iMode = (int)aiShadingMode_Phong; } - else iMode = (int)aiShadingMode_Gouraud; } - else iMode = (int)aiShadingMode_Gouraud; pcHelper->AddProperty(&iMode, 1, AI_MATKEY_SHADING_MODEL); // handle opacity diff --git a/code/PlyLoader.h b/code/PlyLoader.h index 3297524a9..9fbcb67e1 100644 --- a/code/PlyLoader.h +++ b/code/PlyLoader.h @@ -53,7 +53,7 @@ struct aiNode; struct aiMaterial; struct aiMesh; -namespace Assimp { +namespace Assimp { using namespace PLY; diff --git a/code/PlyParser.cpp b/code/PlyParser.cpp index 9168170e8..9bb033842 100644 --- a/code/PlyParser.cpp +++ b/code/PlyParser.cpp @@ -53,9 +53,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using namespace Assimp; // ------------------------------------------------------------------------------------------------ -PLY::EDataType PLY::Property::ParseDataType(const char* pCur,const char** pCurOut) -{ - ai_assert(NULL != pCur && NULL != pCurOut); +PLY::EDataType PLY::Property::ParseDataType(const char* pCur,const char** pCurOut) { + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); + PLY::EDataType eOut = PLY::EDT_INVALID; if (TokenMatch(pCur,"char",4) || @@ -100,33 +101,25 @@ PLY::EDataType PLY::Property::ParseDataType(const char* pCur,const char** pCurOu DefaultLogger::get()->info("Found unknown data type in PLY file. This is OK"); } *pCurOut = pCur; + return eOut; } // ------------------------------------------------------------------------------------------------ -PLY::ESemantic PLY::Property::ParseSemantic(const char* pCur,const char** pCurOut) -{ - ai_assert(NULL != pCur && NULL != pCurOut); +PLY::ESemantic PLY::Property::ParseSemantic(const char* pCur,const char** pCurOut) { + ai_assert (NULL != pCur ); + ai_assert( NULL != pCurOut ); PLY::ESemantic eOut = PLY::EST_INVALID; - if (TokenMatch(pCur,"red",3)) - { + if (TokenMatch(pCur,"red",3)) { eOut = PLY::EST_Red; - } - else if (TokenMatch(pCur,"green",5)) - { + } else if (TokenMatch(pCur,"green",5)) { eOut = PLY::EST_Green; - } - else if (TokenMatch(pCur,"blue",4)) - { + } else if (TokenMatch(pCur,"blue",4)) { eOut = PLY::EST_Blue; - } - else if (TokenMatch(pCur,"alpha",5)) - { + } else if (TokenMatch(pCur,"alpha",5)) { eOut = PLY::EST_Alpha; - } - else if (TokenMatch(pCur,"vertex_index",12) || TokenMatch(pCur,"vertex_indices",14)) - { + } else if (TokenMatch(pCur,"vertex_index",12) || TokenMatch(pCur,"vertex_indices",14)) { eOut = PLY::EST_VertexIndex; } else if (TokenMatch(pCur,"material_index",14)) @@ -213,29 +206,17 @@ PLY::ESemantic PLY::Property::ParseSemantic(const char* pCur,const char** pCurOu else if (TokenMatch(pCur,"x",1)) { eOut = PLY::EST_XCoord; - } - else if (TokenMatch(pCur,"y",1)) - { + } else if (TokenMatch(pCur,"y",1)) { eOut = PLY::EST_YCoord; - } - else if (TokenMatch(pCur,"z",1)) - { + } else if (TokenMatch(pCur,"z",1)) { eOut = PLY::EST_ZCoord; - } - else if (TokenMatch(pCur,"nx",2)) - { + } else if (TokenMatch(pCur,"nx",2)) { eOut = PLY::EST_XNormal; - } - else if (TokenMatch(pCur,"ny",2)) - { + } else if (TokenMatch(pCur,"ny",2)) { eOut = PLY::EST_YNormal; - } - else if (TokenMatch(pCur,"nz",2)) - { + } else if (TokenMatch(pCur,"nz",2)) { eOut = PLY::EST_ZNormal; - } - else - { + } else { DefaultLogger::get()->info("Found unknown property semantic in file. This is ok"); SkipLine(&pCur); } @@ -248,7 +229,8 @@ bool PLY::Property::ParseProperty (const char* pCur, const char** pCurOut, PLY::Property* pOut) { - ai_assert(NULL != pCur && NULL != pCurOut); + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); // Forms supported: // "property float x" @@ -256,7 +238,9 @@ bool PLY::Property::ParseProperty (const char* pCur, *pCurOut = pCur; // skip leading spaces - if (!SkipSpaces(pCur,&pCur))return false; + if (!SkipSpaces(pCur,&pCur)) { + return false; + } // skip the "property" string at the beginning if (!TokenMatch(pCur,"property",8)) @@ -265,7 +249,9 @@ bool PLY::Property::ParseProperty (const char* pCur, return false; } // get next word - if (!SkipSpaces(pCur,&pCur))return false; + if (!SkipSpaces(pCur,&pCur)) { + return false; + } if (TokenMatch(pCur,"list",4)) { pOut->bIsList = true; @@ -313,6 +299,7 @@ bool PLY::Property::ParseProperty (const char* pCur, SkipSpacesAndLineEnd(pCur,&pCur); *pCurOut = pCur; + return true; } @@ -350,6 +337,7 @@ PLY::EElementSemantic PLY::Element::ParseSemantic(const char* pCur, eOut = PLY::EEST_Material; } *pCurOut = pCur; + return eOut; } @@ -358,13 +346,17 @@ bool PLY::Element::ParseElement (const char* pCur, const char** pCurOut, PLY::Element* pOut) { - ai_assert(NULL != pCur && NULL != pCurOut && NULL != pOut); + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); + ai_assert( NULL != pOut ); // Example format: "element vertex 8" *pCurOut = pCur; // skip leading spaces - if (!SkipSpaces(&pCur))return false; + if (!SkipSpaces(&pCur)) { + return false; + } // skip the "element" string at the beginning if (!TokenMatch(pCur,"element",7)) @@ -405,6 +397,7 @@ bool PLY::Element::ParseElement (const char* pCur, pOut->alProperties.push_back(prop); } *pCurOut = pCur; + return true; } @@ -412,30 +405,35 @@ bool PLY::Element::ParseElement (const char* pCur, bool PLY::DOM::SkipComments (const char* pCur, const char** pCurOut) { - ai_assert(NULL != pCur && NULL != pCurOut); + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); *pCurOut = pCur; // skip spaces - if (!SkipSpaces(pCur,&pCur))return false; + if (!SkipSpaces(pCur,&pCur)) { + return false; + } if (TokenMatch(pCur,"comment",7)) { - if ( !IsLineEnd(pCur[-1]) ) - { - SkipLine(pCur,&pCur); - } + if ( !IsLineEnd(pCur[-1]) ) + { + SkipLine(pCur,&pCur); + } SkipComments(pCur,&pCur); *pCurOut = pCur; return true; } *pCurOut = pCur; + return false; } // ------------------------------------------------------------------------------------------------ -bool PLY::DOM::ParseHeader (const char* pCur,const char** pCurOut,bool isBinary) -{ - ai_assert(NULL != pCur && NULL != pCurOut); +bool PLY::DOM::ParseHeader (const char* pCur,const char** pCurOut,bool isBinary) { + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); + DefaultLogger::get()->debug("PLY::DOM::ParseHeader() begin"); // after ply and format line @@ -479,7 +477,8 @@ bool PLY::DOM::ParseElementInstanceLists ( const char* pCur, const char** pCurOut) { - ai_assert(NULL != pCur && NULL != pCurOut); + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); DefaultLogger::get()->debug("PLY::DOM::ParseElementInstanceLists() begin"); *pCurOut = pCur; @@ -507,7 +506,8 @@ bool PLY::DOM::ParseElementInstanceListsBinary ( const char** pCurOut, bool p_bBE) { - ai_assert(NULL != pCur && NULL != pCurOut); + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut); DefaultLogger::get()->debug("PLY::DOM::ParseElementInstanceListsBinary() begin"); *pCurOut = pCur; @@ -532,7 +532,8 @@ bool PLY::DOM::ParseElementInstanceListsBinary ( // ------------------------------------------------------------------------------------------------ bool PLY::DOM::ParseInstanceBinary (const char* pCur,DOM* p_pcOut,bool p_bBE) { - ai_assert(NULL != pCur && NULL != p_pcOut); + ai_assert( NULL != pCur ); + ai_assert( NULL != p_pcOut ); DefaultLogger::get()->debug("PLY::DOM::ParseInstanceBinary() begin"); @@ -580,7 +581,10 @@ bool PLY::ElementInstanceList::ParseInstanceList ( const PLY::Element* pcElement, PLY::ElementInstanceList* p_pcOut) { - ai_assert(NULL != pCur && NULL != pCurOut && NULL != pcElement && NULL != p_pcOut); + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); + ai_assert( NULL != pcElement ); + ai_assert( NULL != p_pcOut ); if (EEST_INVALID == pcElement->eSemantic || pcElement->alProperties.empty()) { @@ -614,7 +618,10 @@ bool PLY::ElementInstanceList::ParseInstanceListBinary ( PLY::ElementInstanceList* p_pcOut, bool p_bBE /* = false */) { - ai_assert(NULL != pCur && NULL != pCurOut && NULL != pcElement && NULL != p_pcOut); + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); + ai_assert( NULL != pcElement ); + ai_assert( NULL != p_pcOut ); // we can add special handling code for unknown element semantics since // we can't skip it as a whole block (we don't know its exact size @@ -636,9 +643,14 @@ bool PLY::ElementInstance::ParseInstance ( const PLY::Element* pcElement, PLY::ElementInstance* p_pcOut) { - ai_assert(NULL != pCur && NULL != pCurOut && NULL != pcElement && NULL != p_pcOut); + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); + ai_assert( NULL != pcElement ); + ai_assert( NULL != p_pcOut ); - if (!SkipSpaces(pCur, &pCur))return false; + if (!SkipSpaces(pCur, &pCur)) { + return false; + } // allocate enough storage p_pcOut->alProperties.resize(pcElement->alProperties.size()); @@ -671,7 +683,10 @@ bool PLY::ElementInstance::ParseInstanceBinary ( PLY::ElementInstance* p_pcOut, bool p_bBE /* = false */) { - ai_assert(NULL != pCur && NULL != pCurOut && NULL != pcElement && NULL != p_pcOut); + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); + ai_assert( NULL != pcElement ); + ai_assert( NULL != p_pcOut ); // allocate enough storage p_pcOut->alProperties.resize(pcElement->alProperties.size()); @@ -696,12 +711,17 @@ bool PLY::ElementInstance::ParseInstanceBinary ( bool PLY::PropertyInstance::ParseInstance (const char* pCur,const char** pCurOut, const PLY::Property* prop, PLY::PropertyInstance* p_pcOut) { - ai_assert(NULL != pCur && NULL != pCurOut && NULL != prop && NULL != p_pcOut); + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); + ai_assert( NULL != prop ); + ai_assert( NULL != p_pcOut ); *pCurOut = pCur; // skip spaces at the beginning - if (!SkipSpaces(pCur, &pCur))return false; + if (!SkipSpaces(pCur, &pCur)) { + return false; + } if (prop->bIsList) { @@ -741,7 +761,10 @@ bool PLY::PropertyInstance::ParseInstanceBinary ( PLY::PropertyInstance* p_pcOut, bool p_bBE) { - ai_assert(NULL != pCur && NULL != pCurOut && NULL != prop && NULL != p_pcOut); + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); + ai_assert( NULL != prop ); + ai_assert( NULL != p_pcOut ); if (prop->bIsList) { @@ -770,8 +793,7 @@ bool PLY::PropertyInstance::ParseInstanceBinary ( } // ------------------------------------------------------------------------------------------------ -PLY::PropertyInstance::ValueUnion PLY::PropertyInstance::DefaultValue( - PLY::EDataType eType) +PLY::PropertyInstance::ValueUnion PLY::PropertyInstance::DefaultValue( PLY::EDataType eType ) { PLY::PropertyInstance::ValueUnion out; @@ -798,7 +820,9 @@ bool PLY::PropertyInstance::ParseValue( PLY::EDataType eType, PLY::PropertyInstance::ValueUnion* out) { - ai_assert(NULL != pCur && NULL != pCurOut && NULL != out); + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); + ai_assert( NULL != out ); bool ret = true; *pCurOut = pCur; @@ -820,14 +844,13 @@ bool PLY::PropertyInstance::ParseValue( case EDT_Float: // technically this should cast to float, but people tend to use float descriptors for double data - // this is the best way to not risk loosing precision on import and it doesn't hurt to do this + // this is the best way to not risk losing precision on import and it doesn't hurt to do this ai_real f; pCur = fast_atoreal_move(pCur,f); out->fFloat = (ai_real)f; break; case EDT_Double: - double d; pCur = fast_atoreal_move(pCur,d); out->fDouble = (double)d; @@ -835,8 +858,10 @@ bool PLY::PropertyInstance::ParseValue( default: ret = false; + break; } *pCurOut = pCur; + return ret; } @@ -848,7 +873,9 @@ bool PLY::PropertyInstance::ParseValueBinary( PLY::PropertyInstance::ValueUnion* out, bool p_bBE) { - ai_assert(NULL != pCur && NULL != pCurOut && NULL != out); + ai_assert( NULL != pCur ); + ai_assert( NULL != pCurOut ); + ai_assert( NULL != out ); bool ret = true; switch (eType) @@ -925,6 +952,7 @@ bool PLY::PropertyInstance::ParseValueBinary( ret = false; } *pCurOut = pCur; + return ret; } diff --git a/code/PlyParser.h b/code/PlyParser.h index 2753c1004..30791e22b 100644 --- a/code/PlyParser.h +++ b/code/PlyParser.h @@ -234,7 +234,7 @@ public: // ------------------------------------------------------------------- //! Parse a property from a string. The end of the - //! string is either '\n', '\r' or '\0'. Return valie is false + //! string is either '\n', '\r' or '\0'. Return value is false //! if the input string is NOT a valid property (E.g. does //! not start with the "property" keyword) static bool ParseProperty (const char* pCur, const char** pCurOut, diff --git a/code/PretransformVertices.cpp b/code/PretransformVertices.cpp index 90a58e321..bcb3913c3 100644 --- a/code/PretransformVertices.cpp +++ b/code/PretransformVertices.cpp @@ -397,7 +397,7 @@ void PretransformVertices::BuildWCSMeshes(std::vector& out, aiMesh** in out.push_back(ntz); - node->mMeshes[i] = numIn + out.size() - 1; + node->mMeshes[i] = static_cast(numIn + out.size() - 1); } } } @@ -483,7 +483,7 @@ void PretransformVertices::Execute( aiScene* pScene) memcpy(npp,pScene->mMeshes,sizeof(aiMesh*)*pScene->mNumMeshes); memcpy(npp+pScene->mNumMeshes,&apcOutMeshes[0],sizeof(aiMesh*)*apcOutMeshes.size()); - pScene->mNumMeshes += apcOutMeshes.size(); + pScene->mNumMeshes += static_cast(apcOutMeshes.size()); delete[] pScene->mMeshes; pScene->mMeshes = npp; } diff --git a/code/ProcessHelper.cpp b/code/ProcessHelper.cpp index 4bfbbd5a3..501d44484 100644 --- a/code/ProcessHelper.cpp +++ b/code/ProcessHelper.cpp @@ -308,7 +308,7 @@ aiMesh* MakeSubmesh(const aiMesh *pMesh, const std::vector &subMes for(unsigned int j=0;j(numSubVerts++); } } } @@ -320,8 +320,8 @@ aiMesh* MakeSubmesh(const aiMesh *pMesh, const std::vector &subMes // create all the arrays for this mesh if the old mesh contained them - oMesh->mNumFaces = subMeshFaces.size(); - oMesh->mNumVertices = numSubVerts; + oMesh->mNumFaces = static_cast(subMeshFaces.size()); + oMesh->mNumVertices = static_cast(numSubVerts); oMesh->mVertices = new aiVector3D[numSubVerts]; if( pMesh->HasNormals() ) { oMesh->mNormals = new aiVector3D[numSubVerts]; @@ -332,12 +332,12 @@ aiMesh* MakeSubmesh(const aiMesh *pMesh, const std::vector &subMes oMesh->mBitangents = new aiVector3D[numSubVerts]; } - for( size_t a = 0; pMesh->HasTextureCoords( a) ; ++a ) { + for( size_t a = 0; pMesh->HasTextureCoords(static_cast(a)) ; ++a ) { oMesh->mTextureCoords[a] = new aiVector3D[numSubVerts]; oMesh->mNumUVComponents[a] = pMesh->mNumUVComponents[a]; } - for( size_t a = 0; pMesh->HasVertexColors( a); ++a ) { + for( size_t a = 0; pMesh->HasVertexColors( static_cast(a)); ++a ) { oMesh->mColors[a] = new aiColor4D[numSubVerts]; } diff --git a/code/Q3BSPFileImporter.cpp b/code/Q3BSPFileImporter.cpp index 1433dda9c..287f08cf7 100644 --- a/code/Q3BSPFileImporter.cpp +++ b/code/Q3BSPFileImporter.cpp @@ -40,7 +40,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_Q3BSP_IMPORTER -#include "DefaultIOSystem.h" #include "Q3BSPFileImporter.h" #include "Q3BSPZipArchive.h" #include "Q3BSPFileParser.h" @@ -56,6 +55,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include +#include #include #include #include "StringComparison.h" @@ -330,14 +331,14 @@ void Q3BSPFileImporter::CreateNodes( const Q3BSP::Q3BSPModel *pModel, aiScene* p } } - pParent->mNumChildren = MeshArray.size(); + pParent->mNumChildren = static_cast(MeshArray.size()); pParent->mChildren = new aiNode*[ pScene->mRootNode->mNumChildren ]; for ( size_t i=0; imParent = pParent; pParent->mChildren[ i ] = pNode; - pParent->mChildren[ i ]->mMeshes[ 0 ] = i; + pParent->mChildren[ i ]->mMeshes[ 0 ] = static_cast(i); } } @@ -364,9 +365,9 @@ aiNode *Q3BSPFileImporter::CreateTopology( const Q3BSP::Q3BSPModel *pModel, pMesh->mPrimitiveTypes = aiPrimitiveType_TRIANGLE; pMesh->mFaces = new aiFace[ numTriangles ]; - pMesh->mNumFaces = numTriangles; + pMesh->mNumFaces = static_cast(numTriangles); - pMesh->mNumVertices = numVerts; + pMesh->mNumVertices = static_cast(numVerts); pMesh->mVertices = new aiVector3D[ numVerts ]; pMesh->mNormals = new aiVector3D[ numVerts ]; pMesh->mTextureCoords[ 0 ] = new aiVector3D[ numVerts ]; @@ -515,7 +516,7 @@ void Q3BSPFileImporter::createMaterials( const Q3BSP::Q3BSPModel *pModel, aiScen pScene->mMaterials[ pScene->mNumMaterials ] = pMatHelper; pScene->mNumMaterials++; } - pScene->mNumTextures = mTextures.size(); + pScene->mNumTextures = static_cast(mTextures.size()); pScene->mTextures = new aiTexture*[ pScene->mNumTextures ]; std::copy( mTextures.begin(), mTextures.end(), pScene->mTextures ); } @@ -649,7 +650,7 @@ bool Q3BSPFileImporter::importTextureFromArchive( const Q3BSP::Q3BSPModel *pMode size_t texSize = pTextureStream->FileSize(); aiTexture *pTexture = new aiTexture; pTexture->mHeight = 0; - pTexture->mWidth = texSize; + pTexture->mWidth = static_cast(texSize); unsigned char *pData = new unsigned char[ pTexture->mWidth ]; size_t readSize = pTextureStream->Read( pData, sizeof( unsigned char ), pTexture->mWidth ); (void)readSize; @@ -663,7 +664,7 @@ bool Q3BSPFileImporter::importTextureFromArchive( const Q3BSP::Q3BSPModel *pMode aiString name; name.data[ 0 ] = '*'; - name.length = 1 + ASSIMP_itoa10( name.data + 1, MAXLEN-1, mTextures.size() ); + name.length = 1 + ASSIMP_itoa10( name.data + 1, static_cast(MAXLEN-1), static_cast(mTextures.size()) ); pArchive->Close( pTextureStream ); @@ -721,7 +722,7 @@ bool Q3BSPFileImporter::importLightmap( const Q3BSP::Q3BSPModel *pModel, aiScene aiString name; name.data[ 0 ] = '*'; - name.length = 1 + ASSIMP_itoa10( name.data + 1, MAXLEN-1, mTextures.size() ); + name.length = 1 + ASSIMP_itoa10( name.data + 1, static_cast(MAXLEN-1), static_cast(mTextures.size()) ); pMatHelper->AddProperty( &name,AI_MATKEY_TEXTURE_LIGHTMAP( 1 ) ); mTextures.push_back( pTexture ); diff --git a/code/Q3BSPFileImporter.h b/code/Q3BSPFileImporter.h index ee8991bea..bac370411 100644 --- a/code/Q3BSPFileImporter.h +++ b/code/Q3BSPFileImporter.h @@ -42,30 +42,27 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" +#include + struct aiMesh; struct aiNode; struct aiFace; struct aiMaterial; struct aiTexture; -namespace Assimp -{ -namespace Q3BSP -{ - -class Q3BSPZipArchive; -struct Q3BSPModel; -struct sQ3BSPFace; - +namespace Assimp { +namespace Q3BSP { + class Q3BSPZipArchive; + struct Q3BSPModel; + struct sQ3BSPFace; } + // ------------------------------------------------------------------------------------------------ /** Loader to import BSP-levels from a PK3 archive or from a unpacked BSP-level. */ // ------------------------------------------------------------------------------------------------ -class Q3BSPFileImporter : public BaseImporter -{ +class Q3BSPFileImporter : public BaseImporter { public: - /// @brief Default constructor. Q3BSPFileImporter(); diff --git a/code/Q3BSPFileParser.cpp b/code/Q3BSPFileParser.cpp index 0dabaf87d..b32f15000 100644 --- a/code/Q3BSPFileParser.cpp +++ b/code/Q3BSPFileParser.cpp @@ -42,10 +42,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_Q3BSP_IMPORTER #include "Q3BSPFileParser.h" -#include "DefaultIOSystem.h" #include "Q3BSPFileData.h" #include "Q3BSPZipArchive.h" #include +#include #include namespace Assimp { diff --git a/code/Q3BSPZipArchive.cpp b/code/Q3BSPZipArchive.cpp index 80b3e9c6b..16455c10a 100644 --- a/code/Q3BSPZipArchive.cpp +++ b/code/Q3BSPZipArchive.cpp @@ -73,19 +73,19 @@ voidpf IOSystem2Unzip::open(voidpf opaque, const char* filename, int mode) { uLong IOSystem2Unzip::read(voidpf /*opaque*/, voidpf stream, void* buf, uLong size) { IOStream* io_stream = (IOStream*) stream; - return io_stream->Read(buf, 1, size); + return static_cast(io_stream->Read(buf, 1, size)); } uLong IOSystem2Unzip::write(voidpf /*opaque*/, voidpf stream, const void* buf, uLong size) { IOStream* io_stream = (IOStream*) stream; - return io_stream->Write(buf, 1, size); + return static_cast(io_stream->Write(buf, 1, size)); } long IOSystem2Unzip::tell(voidpf /*opaque*/, voidpf stream) { IOStream* io_stream = (IOStream*) stream; - return io_stream->Tell(); + return static_cast(io_stream->Tell()); } long IOSystem2Unzip::seek(voidpf /*opaque*/, voidpf stream, uLong offset, int origin) { diff --git a/code/Q3DLoader.cpp b/code/Q3DLoader.cpp index d9dc29672..0debb2d05 100644 --- a/code/Q3DLoader.cpp +++ b/code/Q3DLoader.cpp @@ -53,6 +53,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include using namespace Assimp; diff --git a/code/RawLoader.cpp b/code/RawLoader.cpp index 57e0fc119..ae10ba8b4 100644 --- a/code/RawLoader.cpp +++ b/code/RawLoader.cpp @@ -54,7 +54,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include - +#include using namespace Assimp; diff --git a/code/RemoveComments.h b/code/RemoveComments.h index 856ed74bf..35f7774a3 100644 --- a/code/RemoveComments.h +++ b/code/RemoveComments.h @@ -44,7 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_REMOVE_COMMENTS_H_INC #define AI_REMOVE_COMMENTS_H_INC -#include + #include namespace Assimp { diff --git a/code/SIBImporter.cpp b/code/SIBImporter.cpp index 8e91ce7c3..0a4df61a3 100644 --- a/code/SIBImporter.cpp +++ b/code/SIBImporter.cpp @@ -61,6 +61,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include + +#include using namespace Assimp; @@ -131,7 +134,7 @@ static SIBEdge& GetEdge(SIBMesh* mesh, uint32_t posA, uint32_t posB) SIBEdge edge; edge.creased = false; edge.faceA = edge.faceB = 0xffffffff; - mesh->edgeMap[pair] = mesh->edges.size(); + mesh->edgeMap[pair] = static_cast(mesh->edges.size()); mesh->edges.push_back(edge); return mesh->edges.back(); } @@ -197,13 +200,15 @@ static aiString ReadString(StreamReaderLE* stream, uint32_t numWChars) // ------------------------------------------------------------------------------------------------ // Constructor to be privately used by Importer -SIBImporter::SIBImporter() -{} +SIBImporter::SIBImporter() { + // empty +} // ------------------------------------------------------------------------------------------------ // Destructor, private as well -SIBImporter::~SIBImporter() -{} +SIBImporter::~SIBImporter() { + // empty +} // ------------------------------------------------------------------------------------------------ // Returns whether the class can handle the format of the given file. @@ -244,7 +249,7 @@ static void ReadFaces(SIBMesh* mesh, StreamReaderLE* stream) mesh->idx[pos-1] = numPoints; uint32_t *idx = &mesh->idx[pos]; - mesh->faceStart.push_back(pos-1); + mesh->faceStart.push_back(static_cast(pos-1)); mesh->mtls.push_back(0); // Read all the position data. @@ -385,9 +390,9 @@ static void ConnectFaces(SIBMesh* mesh) // This gives potentially undesirable normals when used // with non-2-manifold surfaces, but then so does Silo to begin with. if (edge.faceA == 0xffffffff) - edge.faceA = faceIdx; - else - edge.faceB = faceIdx; + edge.faceA = static_cast(faceIdx); + else if (edge.faceB == 0xffffffff) + edge.faceB = static_cast(faceIdx); prev = next; } @@ -430,12 +435,17 @@ static aiVector3D CalculateVertexNormal(SIBMesh* mesh, uint32_t faceIdx, uint32_ { SIBEdge& edge = GetEdge(mesh, posA, posB); - // Move to whichever side we didn't just come from. - if (!edge.creased) { - if (edge.faceA != prevFaceIdx && edge.faceA != faceIdx) - nextFaceIdx = edge.faceA; - else if (edge.faceB != prevFaceIdx && edge.faceB != faceIdx) - nextFaceIdx = edge.faceB; + // Non-manifold meshes can produce faces which share + // positions but have no edge entry, so check it. + if (edge.faceA == faceIdx || edge.faceB == faceIdx) + { + // Move to whichever side we didn't just come from. + if (!edge.creased) { + if (edge.faceA != prevFaceIdx && edge.faceA != faceIdx && edge.faceA != 0xffffffff) + nextFaceIdx = edge.faceA; + else if (edge.faceB != prevFaceIdx && edge.faceB != faceIdx && edge.faceB != 0xffffffff) + nextFaceIdx = edge.faceB; + } } } @@ -496,7 +506,7 @@ static void CalculateNormals(SIBMesh* mesh) { uint32_t pos = idx[i*N+POS]; uint32_t nrm = idx[i*N+NRM]; - aiVector3D vtxNorm = CalculateVertexNormal(mesh, faceIdx, pos, faceNormals); + aiVector3D vtxNorm = CalculateVertexNormal(mesh, static_cast(faceIdx), pos, faceNormals); mesh->nrm[nrm] = vtxNorm; } } @@ -508,7 +518,7 @@ struct TempMesh std::vector vtx; std::vector nrm; std::vector uv; - std::vector faces; + std::vector faces; }; static void ReadShape(SIB* sib, StreamReaderLE* stream) @@ -546,7 +556,7 @@ static void ReadShape(SIB* sib, StreamReaderLE* stream) stream->SetReadLimit(oldLimit); } - assert(smesh.faceStart.size() == smesh.mtls.size()); // sanity check + ai_assert(smesh.faceStart.size() == smesh.mtls.size()); // sanity check // Silo doesn't store any normals in the file - we need to compute // them ourselves. We can't let AssImp handle it as AssImp doesn't @@ -586,7 +596,7 @@ static void ReadShape(SIB* sib, StreamReaderLE* stream) for (unsigned pt=0;pt(vtxIdx); // De-index it. We don't need to validate here as // we did it when creating the data. @@ -621,14 +631,14 @@ static void ReadShape(SIB* sib, StreamReaderLE* stream) aiMesh* mesh = new aiMesh; mesh->mName = name; - mesh->mNumFaces = src.faces.size(); + mesh->mNumFaces = static_cast(src.faces.size()); mesh->mFaces = new aiFace[mesh->mNumFaces]; - mesh->mNumVertices = src.vtx.size(); + mesh->mNumVertices = static_cast(src.vtx.size()); mesh->mVertices = new aiVector3D[mesh->mNumVertices]; mesh->mNormals = new aiVector3D[mesh->mNumVertices]; mesh->mTextureCoords[0] = new aiVector3D[mesh->mNumVertices]; mesh->mNumUVComponents[0] = 2; - mesh->mMaterialIndex = n; + mesh->mMaterialIndex = static_cast(n); for (unsigned i=0;imNumVertices;i++) { @@ -792,8 +802,9 @@ static void ReadInstance(SIB* sib, StreamReaderLE* stream) stream->SetReadLimit(oldLimit); } - if (shapeIndex >= sib->objs.size()) - throw DeadlyImportError("SIB: Invalid shape index."); + if ( shapeIndex >= sib->objs.size() ) { + throw DeadlyImportError( "SIB: Invalid shape index." ); + } const SIBObject& src = sib->objs[shapeIndex]; inst.meshIdx = src.meshIdx; @@ -805,8 +816,9 @@ static void ReadInstance(SIB* sib, StreamReaderLE* stream) static void CheckVersion(StreamReaderLE* stream) { uint32_t version = stream->GetU4(); - if (version != 1) - throw DeadlyImportError("SIB: Unsupported file version."); + if ( version != 1 ) { + throw DeadlyImportError( "SIB: Unsupported file version." ); + } } static void ReadScene(SIB* sib, StreamReaderLE* stream) @@ -862,9 +874,9 @@ void SIBImporter::InternReadFile(const std::string& pFile, sib.insts.clear(); // Transfer to the aiScene. - pScene->mNumMaterials = sib.mtls.size(); - pScene->mNumMeshes = sib.meshes.size(); - pScene->mNumLights = sib.lights.size(); + pScene->mNumMaterials = static_cast(sib.mtls.size()); + pScene->mNumMeshes = static_cast(sib.meshes.size()); + pScene->mNumLights = static_cast(sib.lights.size()); pScene->mMaterials = pScene->mNumMaterials ? new aiMaterial*[pScene->mNumMaterials] : NULL; pScene->mMeshes = pScene->mNumMeshes ? new aiMesh*[pScene->mNumMeshes] : NULL; pScene->mLights = pScene->mNumLights ? new aiLight*[pScene->mNumLights] : NULL; @@ -879,7 +891,7 @@ void SIBImporter::InternReadFile(const std::string& pFile, size_t childIdx = 0; aiNode *root = new aiNode(); root->mName.Set(""); - root->mNumChildren = sib.objs.size() + sib.lights.size(); + root->mNumChildren = static_cast(sib.objs.size() + sib.lights.size()); root->mChildren = root->mNumChildren ? new aiNode*[root->mNumChildren] : NULL; pScene->mRootNode = root; @@ -893,10 +905,10 @@ void SIBImporter::InternReadFile(const std::string& pFile, node->mParent = root; node->mTransformation = obj.axis; - node->mNumMeshes = obj.meshCount; + node->mNumMeshes = static_cast(obj.meshCount); node->mMeshes = node->mNumMeshes ? new unsigned[node->mNumMeshes] : NULL; for (unsigned i=0;imNumMeshes;i++) - node->mMeshes[i] = obj.meshIdx + i; + node->mMeshes[i] = static_cast(obj.meshIdx + i); // Mark instanced objects as being so. if (n >= firstInst) diff --git a/code/SIBImporter.h b/code/SIBImporter.h index d82a40da0..bd71104c6 100644 --- a/code/SIBImporter.h +++ b/code/SIBImporter.h @@ -53,15 +53,13 @@ namespace Assimp { // --------------------------------------------------------------------------- /** Importer class for the Nevercenter Silo SIB scene format */ -class SIBImporter : public BaseImporter +class ASSIMP_API SIBImporter : public BaseImporter { public: SIBImporter(); ~SIBImporter(); - public: - // ------------------------------------------------------------------- /** Returns whether the class can handle the format of the given file. * See BaseImporter::CanRead() for details. @@ -70,7 +68,6 @@ public: bool checkSig) const; protected: - // ------------------------------------------------------------------- /** Return importer meta information. * See #BaseImporter::GetInfo for the details @@ -85,7 +82,6 @@ protected: IOSystem* pIOHandler); private: - struct MeshInformation { explicit MeshInformation(const std::string& _name) diff --git a/code/SMDLoader.cpp b/code/SMDLoader.cpp index b06fa8c96..37968d030 100644 --- a/code/SMDLoader.cpp +++ b/code/SMDLoader.cpp @@ -54,6 +54,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include using namespace Assimp; @@ -702,7 +703,7 @@ void SMDImporter::ParseFile() { if(!SkipSpacesAndLineEnd(szCurrent,&szCurrent)) break; - // "version \n", should be 1 for hl and hl� SMD files + // "version \n", should be 1 for hl and hl2 SMD files if (TokenMatch(szCurrent,"version",7)) { if(!SkipSpaces(szCurrent,&szCurrent)) break; @@ -1020,7 +1021,7 @@ void SMDImporter::ParseTriangle(const char* szCurrent, // read the texture file name const char* szLast = szCurrent; - while (!IsSpaceOrNewLine(*szCurrent++)); + while (!IsSpaceOrNewLine(*++szCurrent)); // ... and get the index that belongs to this file name face.iTexture = GetTextureIndex(std::string(szLast,(uintptr_t)szCurrent-(uintptr_t)szLast)); diff --git a/code/SMDLoader.h b/code/SMDLoader.h index 96ea1d195..f45c49a7e 100644 --- a/code/SMDLoader.h +++ b/code/SMDLoader.h @@ -171,7 +171,7 @@ struct Bone // --------------------------------------------------------------------------- /** Used to load Half-life 1 and 2 SMD models */ -class SMDImporter : public BaseImporter +class ASSIMP_API SMDImporter : public BaseImporter { public: SMDImporter(); diff --git a/code/STLLoader.cpp b/code/STLLoader.cpp index 0571e542b..61d8d33b5 100644 --- a/code/STLLoader.cpp +++ b/code/STLLoader.cpp @@ -52,6 +52,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include using namespace Assimp; @@ -245,7 +246,7 @@ void STLImporter::LoadASCIIFile() positionBuffer.reserve(sizeEstimate); normalBuffer.reserve(sizeEstimate); - while (IsAsciiSTL(sz, bufferEnd - sz)) + while (IsAsciiSTL(sz, static_cast(bufferEnd - sz))) { aiMesh* pMesh = new aiMesh(); pMesh->mMaterialIndex = 0; @@ -367,8 +368,8 @@ void STLImporter::LoadASCIIFile() pMesh->mNumFaces = 0; throw DeadlyImportError("Normal buffer size does not match position buffer size"); } - pMesh->mNumFaces = positionBuffer.size() / 3; - pMesh->mNumVertices = positionBuffer.size(); + pMesh->mNumFaces = static_cast(positionBuffer.size() / 3); + pMesh->mNumVertices = static_cast(positionBuffer.size()); pMesh->mVertices = new aiVector3D[pMesh->mNumVertices]; memcpy(pMesh->mVertices, &positionBuffer[0].x, pMesh->mNumVertices * sizeof(aiVector3D)); positionBuffer.clear(); diff --git a/code/SceneCombiner.cpp b/code/SceneCombiner.cpp index 67497e0b8..a4f832e8f 100644 --- a/code/SceneCombiner.cpp +++ b/code/SceneCombiner.cpp @@ -91,7 +91,7 @@ void SceneCombiner::AddNodeHashes(aiNode* node, std::set& hashes) // Add node name to hashing set if it is non-empty - empty nodes are allowed // and they can't have any anims assigned so its absolutely safe to duplicate them. if (node->mName.length) { - hashes.insert( SuperFastHash(node->mName.data,node->mName.length) ); + hashes.insert( SuperFastHash(node->mName.data, static_cast(node->mName.length)) ); } // Process all children recursively @@ -115,7 +115,7 @@ void SceneCombiner::AddNodePrefixes(aiNode* node, const char* prefix, unsigned i // Search for matching names bool SceneCombiner::FindNameMatch(const aiString& name, std::vector& input, unsigned int cur) { - const unsigned int hash = SuperFastHash(name.data, name.length); + const unsigned int hash = SuperFastHash(name.data, static_cast(name.length)); // Check whether we find a positive match in one of the given sets for (unsigned int i = 0; i < input.size(); ++i) { @@ -133,7 +133,7 @@ void SceneCombiner::AddNodePrefixesChecked(aiNode* node, const char* prefix, uns std::vector& input, unsigned int cur) { ai_assert(NULL != prefix); - const unsigned int hash = SuperFastHash(node->mName.data,node->mName.length); + const unsigned int hash = SuperFastHash(node->mName.data, static_cast(node->mName.length)); // Check whether we find a positive match in one of the given sets for (unsigned int i = 0; i < input.size(); ++i) { @@ -325,7 +325,7 @@ void SceneCombiner::MergeScenes(aiScene** _dest, aiScene* master, for (unsigned int a = 0; a < src[i]->mNumAnimations;++a) { aiAnimation* anim = src[i]->mAnimations[a]; - src[i].hashes.insert(SuperFastHash(anim->mName.data,anim->mName.length)); + src[i].hashes.insert(SuperFastHash(anim->mName.data,static_cast(anim->mName.length))); } } } @@ -487,7 +487,7 @@ void SceneCombiner::MergeScenes(aiScene** _dest, aiScene* master, aiAnimation** ppAnims = dest->mAnimations = (dest->mNumAnimations ? new aiAnimation*[dest->mNumAnimations] : NULL); - for ( int n = src.size()-1; n >= 0 ;--n ) /* !!! important !!! */ + for ( int n = static_cast(src.size()-1); n >= 0 ;--n ) /* !!! important !!! */ { SceneHelper* cur = &src[n]; aiNode* node; diff --git a/code/SceneCombiner.h b/code/SceneCombiner.h index a6ba06768..64c1ea48e 100644 --- a/code/SceneCombiner.h +++ b/code/SceneCombiner.h @@ -46,7 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -#include "Defines.h" +#include #include #include #include diff --git a/code/SkeletonMeshBuilder.cpp b/code/SkeletonMeshBuilder.cpp index d929ac361..c01b575da 100644 --- a/code/SkeletonMeshBuilder.cpp +++ b/code/SkeletonMeshBuilder.cpp @@ -85,7 +85,7 @@ SkeletonMeshBuilder::SkeletonMeshBuilder( aiScene* pScene, aiNode* root, bool bK void SkeletonMeshBuilder::CreateGeometry( const aiNode* pNode) { // add a joint entry for the node. - const unsigned int vertexStartIndex = mVertices.size(); + const unsigned int vertexStartIndex = static_cast(mVertices.size()); // now build the geometry. if( pNode->mNumChildren > 0 && !mKnobsOnly) @@ -108,7 +108,7 @@ void SkeletonMeshBuilder::CreateGeometry( const aiNode* pNode) aiVector3D front = (up ^ orth).Normalize(); aiVector3D side = (front ^ up).Normalize(); - unsigned int localVertexStart = mVertices.size(); + unsigned int localVertexStart = static_cast(mVertices.size()); mVertices.push_back( -front * distanceToChild * (ai_real)0.1); mVertices.push_back( childpos); mVertices.push_back( -side * distanceToChild * (ai_real)0.1); @@ -170,7 +170,7 @@ void SkeletonMeshBuilder::CreateGeometry( const aiNode* pNode) mFaces.push_back( Face( vertexStartIndex + 21, vertexStartIndex + 22, vertexStartIndex + 23)); } - unsigned int numVertices = mVertices.size() - vertexStartIndex; + unsigned int numVertices = static_cast(mVertices.size() - vertexStartIndex); if( numVertices > 0) { // create a bone affecting all the newly created vertices @@ -208,14 +208,14 @@ aiMesh* SkeletonMeshBuilder::CreateMesh() aiMesh* mesh = new aiMesh(); // add points - mesh->mNumVertices = mVertices.size(); + mesh->mNumVertices = static_cast(mVertices.size()); mesh->mVertices = new aiVector3D[mesh->mNumVertices]; std::copy( mVertices.begin(), mVertices.end(), mesh->mVertices); mesh->mNormals = new aiVector3D[mesh->mNumVertices]; // add faces - mesh->mNumFaces = mFaces.size(); + mesh->mNumFaces = static_cast(mFaces.size()); mesh->mFaces = new aiFace[mesh->mNumFaces]; for( unsigned int a = 0; a < mesh->mNumFaces; a++) { @@ -240,7 +240,7 @@ aiMesh* SkeletonMeshBuilder::CreateMesh() } // add the bones - mesh->mNumBones = mBones.size(); + mesh->mNumBones = static_cast(mBones.size()); mesh->mBones = new aiBone*[mesh->mNumBones]; std::copy( mBones.begin(), mBones.end(), mesh->mBones); diff --git a/code/SpatialSort.cpp b/code/SpatialSort.cpp index 722ec5f24..3825dc33a 100644 --- a/code/SpatialSort.cpp +++ b/code/SpatialSort.cpp @@ -108,7 +108,7 @@ void SpatialSort::Append( const aiVector3D* pPositions, unsigned int pNumPositio // store position by index and distance ai_real distance = *vec * mPlaneNormal; - mPositions.push_back( Entry( a+initial, *vec, distance)); + mPositions.push_back( Entry( static_cast(a+initial), *vec, distance)); } if (pFinalize) { @@ -245,7 +245,7 @@ void SpatialSort::FindIdenticalPositions( const aiVector3D& pPosition, // The best way to overcome this is the unit in the last place (ULP). A precision of 2 ULPs // tells us that a float does not differ more than 2 bits from the "real" value. ULPs are of - // logarithmic precision - around 1, they are 1�(2^24) and around 10000, they are 0.00125. + // logarithmic precision - around 1, they are 1*(2^24) and around 10000, they are 0.00125. // For standard C math, we can assume a precision of 0.5 ULPs according to IEEE 754. The // incoming vertex positions might have already been transformed, probably using rather diff --git a/code/SplitByBoneCountProcess.cpp b/code/SplitByBoneCountProcess.cpp index 58b14ff49..4d01bf0ee 100644 --- a/code/SplitByBoneCountProcess.cpp +++ b/code/SplitByBoneCountProcess.cpp @@ -57,7 +57,7 @@ using namespace Assimp::Formatter; // Constructor SplitByBoneCountProcess::SplitByBoneCountProcess() { - // set default, might be overriden by importer config + // set default, might be overridden by importer config mMaxBoneCount = AI_SBBC_DEFAULT_MAX_BONES; } diff --git a/code/StandardShapes.cpp b/code/StandardShapes.cpp index eed8ddabc..26c84217a 100644 --- a/code/StandardShapes.cpp +++ b/code/StandardShapes.cpp @@ -47,8 +47,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "StandardShapes.h" #include "StringComparison.h" -#include "Defines.h" #include +#include #include namespace Assimp { diff --git a/code/StepExporter.cpp b/code/StepExporter.cpp index eb84ac594..aa7086cee 100644 --- a/code/StepExporter.cpp +++ b/code/StepExporter.cpp @@ -48,7 +48,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "BaseImporter.h" #include "fast_atof.h" #include "SceneCombiner.h" -#include "DefaultIOSystem.h" #include #include #include @@ -56,6 +55,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include "Exceptional.h" +#include #include #include #include diff --git a/code/StreamReader.h b/code/StreamReader.h index 244ad9784..698ba2b39 100644 --- a/code/StreamReader.h +++ b/code/StreamReader.h @@ -40,7 +40,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /** @file Defines the StreamReader class which reads data from - * a binary stream with a well-defined endianness. */ + * a binary stream with a well-defined endianness. + */ #ifndef AI_STREAMREADER_H_INCLUDED #define AI_STREAMREADER_H_INCLUDED @@ -49,7 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Exceptional.h" #include #include -#include "Defines.h" +#include namespace Assimp { @@ -66,9 +67,7 @@ namespace Assimp { template class StreamReader { - public: - // FIXME: use these data types throughout the whole library, // then change them to 64 bit values :-) @@ -76,8 +75,6 @@ public: typedef unsigned int pos; public: - - // --------------------------------------------------------------------- /** Construction from a given stream with a well-defined endianness. * @@ -178,14 +175,12 @@ public: } public: - // --------------------------------------------------------------------- - /** Get the remaining stream size (to the end of the srream) */ + /** Get the remaining stream size (to the end of the stream) */ unsigned int GetRemainingSize() const { return (unsigned int)(end - current); } - // --------------------------------------------------------------------- /** Get the remaining stream size (to the current read limit). The * return value is the remaining size of the stream if no custom @@ -194,7 +189,6 @@ public: return (unsigned int)(limit - current); } - // --------------------------------------------------------------------- /** Increase the file pointer (relative seeking) */ void IncPtr(size_t plus) { @@ -210,7 +204,6 @@ public: return current; } - // --------------------------------------------------------------------- /** Set current file pointer (Get it from #GetPtr). This is if you * prefer to do pointer arithmetics on your own or want to copy @@ -218,7 +211,6 @@ public: * @param p The new pointer, which is validated against the size * limit and buffer boundaries. */ void SetPtr(int8_t* p) { - current = p; if (current > limit || current < buffer) { throw DeadlyImportError("End of file or read limit was reached"); @@ -230,14 +222,12 @@ public: * @param out Destination for copying * @param bytes Number of bytes to copy */ void CopyAndAdvance(void* out, size_t bytes) { - int8_t* ur = GetPtr(); SetPtr(ur+bytes); // fire exception if eof - memcpy(out,ur,bytes); + ::memcpy(out,ur,bytes); } - // --------------------------------------------------------------------- /** Get the current offset from the beginning of the file */ int GetCurrentPos() const { @@ -253,7 +243,7 @@ public: * * @param limit Maximum number of bytes to be read from * the beginning of the file. Specifying UINT_MAX - * resets the limit to the original end of the stream. + * resets the limit to the original end of the stream. * Returns the previously set limit. */ unsigned int SetReadLimit(unsigned int _limit) { unsigned int prev = GetReadLimit(); @@ -271,14 +261,14 @@ public: // --------------------------------------------------------------------- /** Get the current read limit in bytes. Reading over this limit - * accidentially raises an exception. */ + * accidentally raises an exception. */ unsigned int GetReadLimit() const { return (unsigned int)(limit - buffer); } // --------------------------------------------------------------------- /** Skip to the read limit in bytes. Reading over this limit - * accidentially raises an exception. */ + * accidentally raises an exception. */ void SkipToReadLimit() { current = limit; } @@ -292,21 +282,20 @@ public: } private: - // --------------------------------------------------------------------- /** Generic read method. ByteSwap::Swap(T*) *must* be defined */ template T Get() { - if (current + sizeof(T) > limit) { + if ( current + sizeof(T) > limit) { throw DeadlyImportError("End of file or stream limit was reached"); } -#ifdef __arm__ +///*#ifdef __arm__ T f; - memcpy (&f, current, sizeof(T)); -#else - T f = *((const T*)current); -#endif + ::memcpy (&f, current, sizeof(T)); +//#else*/ +// T f = *((const T*)current); +//#endif Intern :: Getter() (&f,le); current += sizeof(T); @@ -316,7 +305,7 @@ private: // --------------------------------------------------------------------- void InternBegin() { if (!stream) { - // incase someone wonders: StreamReader is frequently invoked with + // in case someone wonders: StreamReader is frequently invoked with // no prior validation whether the input stream is valid. Since // no one bothers changing the error message, this message here // is passed down to the caller and 'unable to open file' @@ -337,14 +326,11 @@ private: } private: - - std::shared_ptr stream; int8_t *buffer, *current, *end, *limit; bool le; }; - // -------------------------------------------------------------------------------------------- // `static` StreamReaders. Their byte order is fixed and they might be a little bit faster. #ifdef AI_BUILD_BIG_ENDIAN diff --git a/code/StringComparison.h b/code/StringComparison.h index 0e1dbe4b8..d3130e1cb 100644 --- a/code/StringComparison.h +++ b/code/StringComparison.h @@ -56,7 +56,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include -#include namespace Assimp { diff --git a/code/StringUtils.h b/code/StringUtils.h index 15f7db2e7..434ab4520 100644 --- a/code/StringUtils.h +++ b/code/StringUtils.h @@ -40,12 +40,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_STRINGUTILS_H #define INCLUDED_AI_STRINGUTILS_H -#include -#include -#include -#include #include -#include +#include /// @fn ai_snprintf /// @brief The portable version of the function snprintf ( C99 standard ), which works on visual studio compilers 2013 and earlier. diff --git a/code/Subdivision.cpp b/code/Subdivision.cpp index 0a67ad520..7bc30c53a 100644 --- a/code/Subdivision.cpp +++ b/code/Subdivision.cpp @@ -188,7 +188,7 @@ void CatmullClarkSubdivider::Subdivide ( } outmeshes.push_back(NULL);inmeshes.push_back(i); - maptbl.push_back(s); + maptbl.push_back(static_cast(s)); } // Do the actual subdivision on the preallocated storage. InternSubdivide @@ -532,9 +532,7 @@ void CatmullClarkSubdivider::InternSubdivide ( ai_assert(adj[o]-moffsets[nidx].first < mp->mNumFaces); const aiFace& f = mp->mFaces[adj[o]-moffsets[nidx].first]; -# ifdef ASSIMP_BUILD_DEBUG bool haveit = false; -# endif // find our original point in the face for (unsigned int m = 0; m < f.mNumIndices; ++m) { @@ -555,15 +553,16 @@ void CatmullClarkSubdivider::InternSubdivide ( // fixme: replace with mod face.mNumIndices? R += c0.midpoint+c1.midpoint; -# ifdef ASSIMP_BUILD_DEBUG haveit = true; -# endif break; } } // this invariant *must* hold if the vertex-to-face adjacency table is valid ai_assert(haveit); + if ( !haveit ) { + DefaultLogger::get()->warn( "OBJ: no name for material library specified." ); + } } const float div = static_cast(cnt), divsq = 1.f/(div*div); diff --git a/code/TargetAnimation.cpp b/code/TargetAnimation.cpp index 97b15edbb..ecf6f0dcf 100644 --- a/code/TargetAnimation.cpp +++ b/code/TargetAnimation.cpp @@ -100,8 +100,8 @@ void KeyIterator::operator ++() // to our current position on the time line double d0,d1; - d0 = objPos->at ( std::min ( nextObjPos, objPos->size()-1) ).mTime; - d1 = targetObjPos->at( std::min ( nextTargetObjPos, targetObjPos->size()-1) ).mTime; + d0 = objPos->at ( std::min ( nextObjPos, static_cast(objPos->size()-1)) ).mTime; + d1 = targetObjPos->at( std::min ( nextTargetObjPos, static_cast(targetObjPos->size()-1)) ).mTime; // Easiest case - all are identical. In this // case we don't need to interpolate so we can diff --git a/code/TerragenLoader.cpp b/code/TerragenLoader.cpp index 854959f19..dcb19b9ca 100644 --- a/code/TerragenLoader.cpp +++ b/code/TerragenLoader.cpp @@ -51,7 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include - +#include using namespace Assimp; diff --git a/code/TriangulateProcess.cpp b/code/TriangulateProcess.cpp index f19f85037..883a45e3d 100644 --- a/code/TriangulateProcess.cpp +++ b/code/TriangulateProcess.cpp @@ -57,9 +57,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - dump all polygons and their triangulation sequences to * a file */ - - - #ifndef ASSIMP_BUILD_NO_TRIANGULATE_PROCESS #include "TriangulateProcess.h" #include "ProcessHelper.h" @@ -106,11 +103,15 @@ void TriangulateProcess::Execute( aiScene* pScene) bool bHas = false; for( unsigned int a = 0; a < pScene->mNumMeshes; a++) { - if( TriangulateMesh( pScene->mMeshes[a])) + if ( TriangulateMesh( pScene->mMeshes[ a ] ) ) { bHas = true; + } + } + if ( bHas ) { + DefaultLogger::get()->info( "TriangulateProcess finished. All polygons have been triangulated." ); + } else { + DefaultLogger::get()->debug( "TriangulateProcess finished. There was nothing to be done." ); } - if (bHas)DefaultLogger::get()->info ("TriangulateProcess finished. All polygons have been triangulated."); - else DefaultLogger::get()->debug("TriangulateProcess finished. There was nothing to be done."); } @@ -155,7 +156,7 @@ bool TriangulateProcess::TriangulateMesh( aiMesh* pMesh) } // Just another check whether aiMesh::mPrimitiveTypes is correct - assert(numOut != pMesh->mNumFaces); + ai_assert(numOut != pMesh->mNumFaces); aiVector3D* nor_out = NULL; @@ -184,7 +185,6 @@ bool TriangulateProcess::TriangulateMesh( aiMesh* pMesh) aiColor4D* clr = pMesh->mColors[0]; #endif - #ifdef AI_BUILD_TRIANGULATE_DEBUG_POLYS FILE* fout = fopen(POLY_OUTPUT_FILE,"a"); #endif @@ -276,7 +276,7 @@ bool TriangulateProcess::TriangulateMesh( aiMesh* pMesh) { // A polygon with more than 3 vertices can be either concave or convex. // Usually everything we're getting is convex and we could easily - // triangulate by trifanning. However, LightWave is probably the only + // triangulate by tri-fanning. However, LightWave is probably the only // modeling suite to make extensive use of highly concave, monster polygons ... // so we need to apply the full 'ear cutting' algorithm to get it right. @@ -325,7 +325,6 @@ bool TriangulateProcess::TriangulateMesh( aiMesh* pMesh) done[tmp] = false; } - #ifdef AI_BUILD_TRIANGULATE_DEBUG_POLYS // plot the plane onto which we mapped the polygon to a 2D ASCII pic aiVector2D bmin,bmax; @@ -404,14 +403,13 @@ bool TriangulateProcess::TriangulateMesh( aiMesh* pMesh) if (num_found == 2) { // Due to the 'two ear theorem', every simple polygon with more than three points must - // have 2 'ears'. Here's definitely someting wrong ... but we don't give up yet. + // have 2 'ears'. Here's definitely something wrong ... but we don't give up yet. // - // Instead we're continuting with the standard trifanning algorithm which we'd + // Instead we're continuing with the standard tri-fanning algorithm which we'd // use if we had only convex polygons. That's life. DefaultLogger::get()->error("Failed to triangulate polygon (no ear found). Probably not a simple polygon?"); - #ifdef AI_BUILD_TRIANGULATE_DEBUG_POLYS fprintf(fout,"critical error here, no ear found! "); #endif diff --git a/code/UnrealLoader.cpp b/code/UnrealLoader.cpp index ad839fb25..59be4bed1 100644 --- a/code/UnrealLoader.cpp +++ b/code/UnrealLoader.cpp @@ -60,6 +60,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include @@ -333,7 +334,7 @@ void UnrealImporter::InternReadFile( const std::string& pFile, std::vector::iterator nt = std::find(materials.begin(),materials.end(),mat); if (nt == materials.end()) { // add material - tri.matIndex = materials.size(); + tri.matIndex = static_cast(materials.size()); mat.numFaces = 1; materials.push_back(mat); diff --git a/code/Version.cpp b/code/Version.cpp index e441d23c8..fd8ed622c 100644 --- a/code/Version.cpp +++ b/code/Version.cpp @@ -1,8 +1,48 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2017, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ // Actually just a dummy, used by the compiler to build the precompiled header. -#include "./../include/assimp/version.h" -#include "./../include/assimp/scene.h" +#include +#include #include "ScenePrivate.h" static const unsigned int MajorVersion = 3; @@ -15,7 +55,7 @@ static const char* LEGAL_INFORMATION = "Open Asset Import Library (Assimp).\n" "A free C/C++ library to import various 3D file formats into applications\n\n" -"(c) 2008-2016, assimp team\n" +"(c) 2008-2017, assimp team\n" "License under the terms and conditions of the 3-clause BSD license\n" "http://assimp.sourceforge.net\n" ; diff --git a/code/X3DExporter.cpp b/code/X3DExporter.cpp index cb6a6740f..9e89b5b9e 100644 --- a/code/X3DExporter.cpp +++ b/code/X3DExporter.cpp @@ -158,7 +158,7 @@ string tstr; AttrHelper_FloatToString(pValue, tstr); pList.push_back({pName, tstr}); -}; +} void X3DExporter::NodeHelper_OpenNode(const string& pNodeName, const size_t pTabLevel, const bool pEmptyElement, const list& pAttrList) { diff --git a/code/X3DImporter.cpp b/code/X3DImporter.cpp index 0e4eae0e3..2bd9d7544 100644 --- a/code/X3DImporter.cpp +++ b/code/X3DImporter.cpp @@ -49,7 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "StringUtils.h" // Header files, Assimp. -#include "DefaultIOSystem.h" +#include #include "fast_atof.h" // Header files, stdlib. @@ -148,7 +148,7 @@ bool X3DImporter::FindNodeElement(const std::string& pID, const CX3DImporter_Nod CX3DImporter_NodeElement* tnd = NodeElement_Cur;// temporary pointer to node. bool static_search = false;// flag: true if searching in static node. - // At first check if we have deal with static node. Go up thru parent nodes and check flag. + // At first check if we have deal with static node. Go up through parent nodes and check flag. while(tnd != nullptr) { if(tnd->Type == CX3DImporter_NodeElement::ENET_Group) @@ -934,7 +934,7 @@ void X3DImporter::GeometryHelper_CoordIdxStr2FacesArr(const std::list& default: prim_type |= aiPrimitiveType_POLYGON; break; } - tface.mNumIndices = ts; + tface.mNumIndices = static_cast(ts); tface.mIndices = new unsigned int[ts]; memcpy(tface.mIndices, inds.data(), ts * sizeof(unsigned int)); pFaces.push_back(tface); @@ -1329,7 +1329,7 @@ aiMesh* X3DImporter::GeometryHelper_MakeMesh(const std::list& pCoordIdx size_t ts = faces.size(); // faces tmesh->mFaces = new aiFace[ts]; - tmesh->mNumFaces = ts; + tmesh->mNumFaces = static_cast(ts); for(size_t i = 0; i < ts; i++) tmesh->mFaces[i] = faces.at(i); // vertices @@ -1337,7 +1337,7 @@ aiMesh* X3DImporter::GeometryHelper_MakeMesh(const std::list& pCoordIdx ts = pVertices.size(); tmesh->mVertices = new aiVector3D[ts]; - tmesh->mNumVertices = ts; + tmesh->mNumVertices = static_cast(ts); for ( size_t i = 0; i < ts; i++ ) { tmesh->mVertices[ i ] = *vit++; @@ -1701,7 +1701,7 @@ void X3DImporter::InternReadFile(const std::string& pFile, aiScene* pScene, IOSy { std::list::const_iterator it = mesh_list.begin(); - pScene->mNumMeshes = mesh_list.size(); + pScene->mNumMeshes = static_cast(mesh_list.size()); pScene->mMeshes = new aiMesh*[pScene->mNumMeshes]; for(size_t i = 0; i < pScene->mNumMeshes; i++) pScene->mMeshes[i] = *it++; } @@ -1710,7 +1710,7 @@ void X3DImporter::InternReadFile(const std::string& pFile, aiScene* pScene, IOSy { std::list::const_iterator it = mat_list.begin(); - pScene->mNumMaterials = mat_list.size(); + pScene->mNumMaterials = static_cast(mat_list.size()); pScene->mMaterials = new aiMaterial*[pScene->mNumMaterials]; for(size_t i = 0; i < pScene->mNumMaterials; i++) pScene->mMaterials[i] = *it++; } @@ -1719,7 +1719,7 @@ void X3DImporter::InternReadFile(const std::string& pFile, aiScene* pScene, IOSy { std::list::const_iterator it = light_list.begin(); - pScene->mNumLights = light_list.size(); + pScene->mNumLights = static_cast(light_list.size()); pScene->mLights = new aiLight*[pScene->mNumLights]; for(size_t i = 0; i < pScene->mNumLights; i++) pScene->mLights[i] = *it++; } diff --git a/code/X3DImporter.hpp b/code/X3DImporter.hpp index f19fc0195..2978643ad 100644 --- a/code/X3DImporter.hpp +++ b/code/X3DImporter.hpp @@ -566,7 +566,7 @@ private: /// There shall be at least as many colours in the X3DColorNode node as there are faces. /// b. If colorPerVertex is TRUE, colours are applied to each vertex, as follows: /// If the colorIndex field is not empty, colours are applied to each vertex of the mesh in exactly the same manner that the coordIndex - /// field is used to choose coordinates for each vertex from the node. The colorIndex field shall contain end-of-face markers (−1) + /// field is used to choose coordinates for each vertex from the node. The colorIndex field shall contain end-of-face markers (-1) /// in exactly the same places as the coordIndex field. /// If the colorIndex field is empty, the coordIndex field is used to choose colours from the X3DColorNode node. /// \param [in] pMesh - mesh for adding data. diff --git a/code/X3DImporter_Geometry3D.cpp b/code/X3DImporter_Geometry3D.cpp index 252593163..614f202cc 100644 --- a/code/X3DImporter_Geometry3D.cpp +++ b/code/X3DImporter_Geometry3D.cpp @@ -134,7 +134,7 @@ void X3DImporter::ParseNode_Geometry3D_Cone() } else { - const unsigned int tess = 30;///TODO: IME tesselation factor thru ai_property + const unsigned int tess = 30;///TODO: IME tesselation factor through ai_property std::vector tvec;// temp array for vertices. @@ -207,7 +207,7 @@ void X3DImporter::ParseNode_Geometry3D_Cylinder() } else { - const unsigned int tess = 30;///TODO: IME tesselation factor thru ai_property + const unsigned int tess = 30;///TODO: IME tesselation factor through ai_property std::vector tside;// temp array for vertices of side. std::vector tcir;// temp array for vertices of circle. @@ -347,8 +347,8 @@ void X3DImporter::ParseNode_Geometry3D_ElevationGrid() ((CX3DImporter_NodeElement_ElevationGrid*)ne)->NumIndices = 2;// will be holded as line set. for(size_t i = 0, i_e = (grid_alias.Vertices.size() - 1); i < i_e; i++) { - grid_alias.CoordIdx.push_back(i); - grid_alias.CoordIdx.push_back(i + 1); + grid_alias.CoordIdx.push_back(static_cast(i)); + grid_alias.CoordIdx.push_back(static_cast(i + 1)); grid_alias.CoordIdx.push_back(-1); } } @@ -467,7 +467,7 @@ static aiVector3D GeometryHelper_Extrusion_GetNextY(const size_t pSpine_PointIdx if((pSpine_PointIdx == 0) || (pSpine_PointIdx == spine_idx_last))// at first special cases { if(pSpine_Closed) - {// If the spine curve is closed: The SCP for the first and last points is the same and is found using (spine[1] − spine[n − 2]) to compute the Y-axis. + {// If the spine curve is closed: The SCP for the first and last points is the same and is found using (spine[1] - spine[n - 2]) to compute the Y-axis. // As we even for closed spine curve last and first point in pSpine are not the same: duplicates(spine[n - 1] which are equivalent to spine[0]) // in tail are removed. // So, last point in pSpine is a spine[n - 2] @@ -478,13 +478,13 @@ static aiVector3D GeometryHelper_Extrusion_GetNextY(const size_t pSpine_PointIdx tvec = pSpine[1] - pSpine[0]; } else - {// The Y-axis used for the last point it is the vector from spine[n−2] to spine[n−1]. In our case(see above about droping tail) spine[n - 1] is + {// The Y-axis used for the last point it is the vector from spine[n-2] to spine[n-1]. In our case(see above about droping tail) spine[n - 1] is // the spine[0]. tvec = pSpine[spine_idx_last] - pSpine[spine_idx_last - 1]; } }// if((pSpine_PointIdx == 0) || (pSpine_PointIdx == spine_idx_last)) else - {// For all points other than the first or last: The Y-axis for spine[i] is found by normalizing the vector defined by (spine[i+1] − spine[i−1]). + {// For all points other than the first or last: The Y-axis for spine[i] is found by normalizing the vector defined by (spine[i+1] - spine[i-1]). tvec = pSpine[pSpine_PointIdx + 1] - pSpine[pSpine_PointIdx - 1]; }// if((pSpine_PointIdx == 0) || (pSpine_PointIdx == spine_idx_last)) else @@ -516,7 +516,7 @@ static aiVector3D GeometryHelper_Extrusion_GetNextZ(const size_t pSpine_PointIdx // As said: "If the Z-axis of the first point is undefined (because the spine is not closed and the first two spine segments are collinear) // then the Z-axis for the first spine point with a defined Z-axis is used." - // Walk thru spine and find Z. + // Walk through spine and find Z. for(size_t next_point = 2; (next_point <= spine_idx_last) && !found; next_point++) { // (pSpine[2] - pSpine[1]) ^ (pSpine[0] - pSpine[1]) @@ -549,7 +549,7 @@ static aiVector3D GeometryHelper_Extrusion_GetNextZ(const size_t pSpine_PointIdx } // After determining the Z-axis, its dot product with the Z-axis of the previous spine point is computed. If this value is negative, the Z-axis - // is flipped (multiplied by −1). + // is flipped (multiplied by -1). if((tvec * pVecZ_Prev) < 0) tvec = -tvec; return tvec.Normalize(); @@ -679,7 +679,7 @@ void X3DImporter::ParseNode_Geometry3D_Extrusion() // How we done it at all? // 1. At first we will calculate array of basises for every point in spine(look SCP in ISO-dic). Also "orientation" vector // are applied vor every basis. - // 2. After that we can create array of point sets: which are scaled, transfered to basis of relative basis and at final translated to real position + // 2. After that we can create array of point sets: which are scaled, transferred to basis of relative basis and at final translated to real position // using relative spine point. // 3. Next step is creating CoordIdx array(do not forget "-1" delimiter). While creating CoordIdx also created faces for begin and end caps, if // needed. While createing CootdIdx is taking in account CCW flag. @@ -749,7 +749,7 @@ void X3DImporter::ParseNode_Geometry3D_Extrusion() tcross[cri] = tvecX + tvecY + tvecZ + spine[spi]; }// for(size_t cri = 0, cri_e = crossSection.size(); cri < cri_e; i++) - pointset_arr[spi] = tcross;// store transfered point set + pointset_arr[spi] = tcross;// store transferred point set }// for(size_t spi = 0, spi_e = spine.size(); spi < spi_e; i++) }// END: 2. Create array of point sets. @@ -758,7 +758,7 @@ void X3DImporter::ParseNode_Geometry3D_Extrusion() if(beginCap) { // add cap as polygon. vertices of cap are places at begin, so just add numbers from zero. - for(size_t i = 0, i_e = crossSection.size(); i < i_e; i++) ext_alias.CoordIndex.push_back(i); + for(size_t i = 0, i_e = crossSection.size(); i < i_e; i++) ext_alias.CoordIndex.push_back(static_cast(i)); // add delimiter ext_alias.CoordIndex.push_back(-1); @@ -769,7 +769,7 @@ void X3DImporter::ParseNode_Geometry3D_Extrusion() // add cap as polygon. vertices of cap are places at end, as for beginCap use just sequence of numbers but with offset. size_t beg = (pointset_arr.size() - 1) * crossSection.size(); - for(size_t i = beg, i_e = (beg + crossSection.size()); i < i_e; i++) ext_alias.CoordIndex.push_back(i); + for(size_t i = beg, i_e = (beg + crossSection.size()); i < i_e; i++) ext_alias.CoordIndex.push_back(static_cast(i)); // add delimiter ext_alias.CoordIndex.push_back(-1); @@ -795,14 +795,20 @@ void X3DImporter::ParseNode_Geometry3D_Extrusion() if(cri != cr_last) { MACRO_FACE_ADD_QUAD(ccw, ext_alias.CoordIndex, - spi * cr_sz + cri, right_col * cr_sz + cri, right_col * cr_sz + cri + 1, spi * cr_sz + cri + 1); + static_cast(spi * cr_sz + cri), + static_cast(right_col * cr_sz + cri), + static_cast(right_col * cr_sz + cri + 1), + static_cast(spi * cr_sz + cri + 1)); // add delimiter ext_alias.CoordIndex.push_back(-1); } else if(cross_closed)// if cross curve is closed then one more quad is needed: between first and last points of curve. { MACRO_FACE_ADD_QUAD(ccw, ext_alias.CoordIndex, - spi * cr_sz + cri, right_col * cr_sz + cri, right_col * cr_sz + 0, spi * cr_sz + 0); + static_cast(spi * cr_sz + cri), + static_cast(right_col * cr_sz + cri), + static_cast(right_col * cr_sz + 0), + static_cast(spi * cr_sz + 0)); // add delimiter ext_alias.CoordIndex.push_back(-1); } @@ -959,7 +965,7 @@ void X3DImporter::ParseNode_Geometry3D_Sphere() } else { - const unsigned int tess = 3;///TODO: IME tesselation factor thru ai_property + const unsigned int tess = 3;///TODO: IME tesselation factor through ai_property std::vector tlist; diff --git a/code/X3DImporter_Networking.cpp b/code/X3DImporter_Networking.cpp index 4a75c9e66..d862cd7ef 100644 --- a/code/X3DImporter_Networking.cpp +++ b/code/X3DImporter_Networking.cpp @@ -48,7 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "X3DImporter_Macro.hpp" // Header files, Assimp. -#include "DefaultIOSystem.h" +#include namespace Assimp { diff --git a/code/X3DImporter_Node.hpp b/code/X3DImporter_Node.hpp index f1f4bc57e..5d258dfef 100644 --- a/code/X3DImporter_Node.hpp +++ b/code/X3DImporter_Node.hpp @@ -780,7 +780,7 @@ struct CX3DImporter_NodeElement_Light : public CX3DImporter_NodeElement float Intensity;///< Specifies the brightness of the direct emission from the light. /// \var Attenuation /// PointLight node's illumination falls off with distance as specified by three attenuation coefficients. The attenuation factor - /// is: "1 / max(attenuation[0] + attenuation[1] × r + attenuation[2] × r2, 1)", where r is the distance from the light to the surface being illuminated. + /// is: "1 / max(attenuation[0] + attenuation[1] * r + attenuation[2] * r2, 1)", where r is the distance from the light to the surface being illuminated. aiVector3D Attenuation; aiVector3D Location;///< Specifies a translation offset of the centre point of the light source from the light's local coordinate system origin. float Radius;///< Specifies the radial extent of the solid angle and the maximum distance from location that may be illuminated by the light source. diff --git a/code/X3DImporter_Postprocess.cpp b/code/X3DImporter_Postprocess.cpp index 676816be9..6ae47b736 100644 --- a/code/X3DImporter_Postprocess.cpp +++ b/code/X3DImporter_Postprocess.cpp @@ -85,7 +85,7 @@ aiMatrix4x4 X3DImporter::PostprocessHelper_Matrix_GlobalToCurrent() const void X3DImporter::PostprocessHelper_CollectMetadata(const CX3DImporter_NodeElement& pNodeElement, std::list& pList) const { - // walk thru childs and find for metadata. + // walk through childs and find for metadata. for(std::list::const_iterator el_it = pNodeElement.Child.begin(); el_it != pNodeElement.Child.end(); el_it++) { if(((*el_it)->Type == CX3DImporter_NodeElement::ENET_MetaBoolean) || ((*el_it)->Type == CX3DImporter_NodeElement::ENET_MetaDouble) || @@ -190,7 +190,7 @@ void X3DImporter::Postprocess_BuildMaterial(const CX3DImporter_NodeElement& pNod *pMaterial = new aiMaterial; aiMaterial& taimat = **pMaterial;// creating alias for convenience. - // at this point pNodeElement point to node. Walk thru childs and add all stored data. + // at this point pNodeElement point to node. Walk through childs and add all stored data. for(std::list::const_iterator el_it = pNodeElement.Child.begin(); el_it != pNodeElement.Child.end(); el_it++) { if((*el_it)->Type == CX3DImporter_NodeElement::ENET_Material) @@ -253,7 +253,7 @@ void X3DImporter::Postprocess_BuildMesh(const CX3DImporter_NodeElement& pNodeEle tarr.reserve(tnemesh.Vertices.size()); for(std::list::iterator it = tnemesh.Vertices.begin(); it != tnemesh.Vertices.end(); it++) tarr.push_back(*it); - *pMesh = StandardShapes::MakeMesh(tarr, tnemesh.NumIndices);// create mesh from vertices using Assimp help. + *pMesh = StandardShapes::MakeMesh(tarr, static_cast(tnemesh.NumIndices));// create mesh from vertices using Assimp help. return;// mesh is build, nothing to do anymore. } @@ -272,7 +272,7 @@ void X3DImporter::Postprocess_BuildMesh(const CX3DImporter_NodeElement& pNodeEle tarr.reserve(tnemesh.Vertices.size()); for(std::list::iterator it = tnemesh.Vertices.begin(); it != tnemesh.Vertices.end(); it++) tarr.push_back(*it); - *pMesh = StandardShapes::MakeMesh(tarr, tnemesh.NumIndices);// create mesh from vertices using Assimp help. + *pMesh = StandardShapes::MakeMesh(tarr, static_cast(tnemesh.NumIndices));// create mesh from vertices using Assimp help. return;// mesh is build, nothing to do anymore. } @@ -627,10 +627,10 @@ void X3DImporter::Postprocess_BuildNode(const CX3DImporter_NodeElement& pNodeEle } else { - for(size_t i = 0; i < (size_t)tne_group.Choice; i++) chit_begin++;// forward iterator to choosed node. + for(size_t i = 0; i < (size_t)tne_group.Choice; i++) chit_begin++;// forward iterator to choosen node. chit_end = chit_begin; - chit_end++;// point end iterator to next element after choosed. + chit_end++;// point end iterator to next element after choosen. } }// if(tne_group.UseChoice) }// if(pNodeElement.Type == CX3DImporter_NodeElement::ENET_Group) @@ -669,7 +669,7 @@ void X3DImporter::Postprocess_BuildNode(const CX3DImporter_NodeElement& pNodeEle { std::list::const_iterator it = SceneNode_Child.begin(); - pSceneNode.mNumChildren = SceneNode_Child.size(); + pSceneNode.mNumChildren = static_cast(SceneNode_Child.size()); pSceneNode.mChildren = new aiNode*[pSceneNode.mNumChildren]; for(size_t i = 0; i < pSceneNode.mNumChildren; i++) pSceneNode.mChildren[i] = *it++; } @@ -678,7 +678,7 @@ void X3DImporter::Postprocess_BuildNode(const CX3DImporter_NodeElement& pNodeEle { std::list::const_iterator it = SceneNode_Mesh.begin(); - pSceneNode.mNumMeshes = SceneNode_Mesh.size(); + pSceneNode.mNumMeshes = static_cast(SceneNode_Mesh.size()); pSceneNode.mMeshes = new unsigned int[pSceneNode.mNumMeshes]; for(size_t i = 0; i < pSceneNode.mNumMeshes; i++) pSceneNode.mMeshes[i] = *it++; } @@ -702,7 +702,7 @@ void X3DImporter::Postprocess_BuildShape(const CX3DImporter_NodeElement_Shape& p if(tmesh != nullptr) { // if mesh successfully built then add data about it to arrays - pNodeMeshInd.push_back(pSceneMeshList.size()); + pNodeMeshInd.push_back(static_cast(pSceneMeshList.size())); pSceneMeshList.push_back(tmesh); // keep mesh type. Need above for texture coordinate generation. mesh_type = (*it)->Type; @@ -714,7 +714,7 @@ void X3DImporter::Postprocess_BuildShape(const CX3DImporter_NodeElement_Shape& p if(tmat != nullptr) { // if material successfully built then add data about it to array - mat_ind = pSceneMaterialList.size(); + mat_ind = static_cast(pSceneMaterialList.size()); pSceneMaterialList.push_back(tmat); } } @@ -764,8 +764,8 @@ void X3DImporter::Postprocess_CollectMetadata(const CX3DImporter_NodeElement& pN throw DeadlyImportError( "Postprocess. MetaData member in node are not nullptr. Something went wrong." ); } - // copy collected metadata to output node. - pSceneNode.mMetaData = aiMetadata::Alloc( meta_list.size() ); + // copy collected metadata to output node. + pSceneNode.mMetaData = aiMetadata::Alloc( static_cast(meta_list.size()) ); meta_idx = 0; for(std::list::const_iterator it = meta_list.begin(); it != meta_list.end(); it++, meta_idx++) { @@ -776,22 +776,22 @@ void X3DImporter::Postprocess_CollectMetadata(const CX3DImporter_NodeElement& pN if((*it)->Type == CX3DImporter_NodeElement::ENET_MetaBoolean) { if(((CX3DImporter_NodeElement_MetaBoolean*)cur_meta)->Value.size() > 0) - pSceneNode.mMetaData->Set(meta_idx, cur_meta->Name, *(((CX3DImporter_NodeElement_MetaBoolean*)cur_meta)->Value.begin())); + pSceneNode.mMetaData->Set(static_cast(meta_idx), cur_meta->Name, *(((CX3DImporter_NodeElement_MetaBoolean*)cur_meta)->Value.begin())); } else if((*it)->Type == CX3DImporter_NodeElement::ENET_MetaDouble) { if(((CX3DImporter_NodeElement_MetaDouble*)cur_meta)->Value.size() > 0) - pSceneNode.mMetaData->Set(meta_idx, cur_meta->Name, (float)*(((CX3DImporter_NodeElement_MetaDouble*)cur_meta)->Value.begin())); + pSceneNode.mMetaData->Set(static_cast(meta_idx), cur_meta->Name, (float)*(((CX3DImporter_NodeElement_MetaDouble*)cur_meta)->Value.begin())); } else if((*it)->Type == CX3DImporter_NodeElement::ENET_MetaFloat) { if(((CX3DImporter_NodeElement_MetaFloat*)cur_meta)->Value.size() > 0) - pSceneNode.mMetaData->Set(meta_idx, cur_meta->Name, *(((CX3DImporter_NodeElement_MetaFloat*)cur_meta)->Value.begin())); + pSceneNode.mMetaData->Set(static_cast(meta_idx), cur_meta->Name, *(((CX3DImporter_NodeElement_MetaFloat*)cur_meta)->Value.begin())); } else if((*it)->Type == CX3DImporter_NodeElement::ENET_MetaInteger) { if(((CX3DImporter_NodeElement_MetaInteger*)cur_meta)->Value.size() > 0) - pSceneNode.mMetaData->Set(meta_idx, cur_meta->Name, *(((CX3DImporter_NodeElement_MetaInteger*)cur_meta)->Value.begin())); + pSceneNode.mMetaData->Set(static_cast(meta_idx), cur_meta->Name, *(((CX3DImporter_NodeElement_MetaInteger*)cur_meta)->Value.begin())); } else if((*it)->Type == CX3DImporter_NodeElement::ENET_MetaString) { @@ -799,7 +799,7 @@ void X3DImporter::Postprocess_CollectMetadata(const CX3DImporter_NodeElement& pN { aiString tstr(((CX3DImporter_NodeElement_MetaString*)cur_meta)->Value.begin()->data()); - pSceneNode.mMetaData->Set(meta_idx, cur_meta->Name, tstr); + pSceneNode.mMetaData->Set(static_cast(meta_idx), cur_meta->Name, tstr); } } else diff --git a/code/X3DImporter_Rendering.cpp b/code/X3DImporter_Rendering.cpp index ce0d7b607..29dc28765 100644 --- a/code/X3DImporter_Rendering.cpp +++ b/code/X3DImporter_Rendering.cpp @@ -524,7 +524,7 @@ void X3DImporter::ParseNode_Rendering_LineSet() { if(*vc_it < 2) throw DeadlyImportError("LineSet. vertexCount shall be greater than or equal to two."); - for(int32_t i = 0; i < *vc_it; i++) ne_alias.CoordIndex.push_back(coord_num++);// add vertices indices + for(int32_t i = 0; i < *vc_it; i++) ne_alias.CoordIndex.push_back(static_cast(coord_num++));// add vertices indices ne_alias.CoordIndex.push_back(-1);// add face delimiter. } @@ -678,17 +678,17 @@ void X3DImporter::ParseNode_Rendering_TriangleFanSet() { // 2 1 // 0 - ne_alias.CoordIndex.push_back(coord_num_first);// first vertex is a center and always is [0]. - ne_alias.CoordIndex.push_back(coord_num_prev++); - ne_alias.CoordIndex.push_back(coord_num_prev); + ne_alias.CoordIndex.push_back(static_cast(coord_num_first));// first vertex is a center and always is [0]. + ne_alias.CoordIndex.push_back(static_cast(coord_num_prev++)); + ne_alias.CoordIndex.push_back(static_cast(coord_num_prev)); } else { // 1 2 // 0 - ne_alias.CoordIndex.push_back(coord_num_first);// first vertex is a center and always is [0]. - ne_alias.CoordIndex.push_back(coord_num_prev + 1); - ne_alias.CoordIndex.push_back(coord_num_prev++); + ne_alias.CoordIndex.push_back(static_cast(coord_num_first));// first vertex is a center and always is [0]. + ne_alias.CoordIndex.push_back(static_cast(coord_num_prev + 1)); + ne_alias.CoordIndex.push_back(static_cast(coord_num_prev++)); }// if(ccw) else ne_alias.CoordIndex.push_back(-1);// add face delimiter. @@ -875,17 +875,17 @@ void X3DImporter::ParseNode_Rendering_TriangleStripSet() { // 0 2 // 1 - ne_alias.CoordIndex.push_back(coord_num0); - ne_alias.CoordIndex.push_back(coord_num1); - ne_alias.CoordIndex.push_back(coord_num2); + ne_alias.CoordIndex.push_back(static_cast(coord_num0)); + ne_alias.CoordIndex.push_back(static_cast(coord_num1)); + ne_alias.CoordIndex.push_back(static_cast(coord_num2)); } else { // 0 1 // 2 - ne_alias.CoordIndex.push_back(coord_num0); - ne_alias.CoordIndex.push_back(coord_num2); - ne_alias.CoordIndex.push_back(coord_num1); + ne_alias.CoordIndex.push_back(static_cast(coord_num0)); + ne_alias.CoordIndex.push_back(static_cast(coord_num2)); + ne_alias.CoordIndex.push_back(static_cast(coord_num1)); }// if(ccw) else ne_alias.CoordIndex.push_back(-1);// add face delimiter. diff --git a/code/XFileExporter.cpp b/code/XFileExporter.cpp index e3a46a1da..30a0a21f8 100644 --- a/code/XFileExporter.cpp +++ b/code/XFileExporter.cpp @@ -41,14 +41,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_EXPORT -#ifndef ASSIMP_BUILD_NO_XFILE_EXPORTER +#ifndef ASSIMP_BUILD_NO_X_EXPORTER #include "XFileExporter.h" #include "ConvertToLHProcess.h" #include "Bitmap.h" #include "BaseImporter.h" #include "fast_atof.h" #include "SceneCombiner.h" -#include "DefaultIOSystem.h" +#include #include #include #include diff --git a/code/XFileHelper.h b/code/XFileHelper.h index 69f2a98f6..49a41d153 100644 --- a/code/XFileHelper.h +++ b/code/XFileHelper.h @@ -51,7 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include -#include "Defines.h" +#include namespace Assimp { diff --git a/code/XFileImporter.cpp b/code/XFileImporter.cpp index da5882f6c..436195c2c 100644 --- a/code/XFileImporter.cpp +++ b/code/XFileImporter.cpp @@ -47,17 +47,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "XFileImporter.h" #include "XFileParser.h" -#include "Defines.h" #include "TinyFormatter.h" #include "ConvertToLHProcess.h" +#include #include #include #include +#include + #include #include - - using namespace Assimp; using namespace Assimp::Formatter; @@ -286,7 +286,7 @@ void XFileImporter::CreateMeshes( aiScene* pScene, aiNode* pNode, const std::vec // or referenced material, it should already have a valid index if( sourceMesh->mFaceMaterials.size() > 0) { - mesh->mMaterialIndex = sourceMesh->mMaterials[b].sceneIndex; + mesh->mMaterialIndex = static_cast(sourceMesh->mMaterials[b].sceneIndex); } else { mesh->mMaterialIndex = 0; diff --git a/code/XGLLoader.cpp b/code/XGLLoader.cpp index 30f520097..6c9db1f89 100644 --- a/code/XGLLoader.cpp +++ b/code/XGLLoader.cpp @@ -52,6 +52,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "MemoryIOWrapper.h" #include #include +#include #include #include @@ -711,7 +712,7 @@ unsigned int XGLImporter::ResolveMaterialRef(TempScope& scope) const std::string& s = GetElementName(); if (s == "mat") { ReadMaterial(scope); - return scope.materials_linear.size()-1; + return static_cast(scope.materials_linear.size()-1); } const int id = ReadIndexFromText(); diff --git a/code/XGLLoader.h b/code/XGLLoader.h index c8a68ba31..a7f0d7208 100644 --- a/code/XGLLoader.h +++ b/code/XGLLoader.h @@ -52,6 +52,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include struct aiNode; diff --git a/code/glTFAsset.h b/code/glTFAsset.h index b0f1b99f0..10453efa6 100644 --- a/code/glTFAsset.h +++ b/code/glTFAsset.h @@ -62,7 +62,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifdef ASSIMP_API # include -# include "DefaultIOSystem.h" +# include # include "ByteSwapper.h" #else # include @@ -730,7 +730,7 @@ namespace glTF enum EType { #ifdef ASSIMP_IMPORTER_GLTF_USE_OPEN3DGC - Compression_Open3DGC,///< Compression of mesh data using Open3DGC algorythm. + Compression_Open3DGC,///< Compression of mesh data using Open3DGC algorithm. #endif Unknown @@ -752,7 +752,7 @@ namespace glTF #ifdef ASSIMP_IMPORTER_GLTF_USE_OPEN3DGC /// \struct SCompression_Open3DGC - /// Compression of mesh data using Open3DGC algorythm. + /// Compression of mesh data using Open3DGC algorithm. struct SCompression_Open3DGC : public SExtension { using SExtension::Type; diff --git a/code/glTFAsset.inl b/code/glTFAsset.inl index cf419e0d7..4ec8c2ffe 100644 --- a/code/glTFAsset.inl +++ b/code/glTFAsset.inl @@ -926,7 +926,7 @@ Ref buf = pAsset_Root.buffers.Get(pCompression_Open3DGC.Buffer); // Read data from buffer and place it in BinaryStream for decoder. // Just "Count" because always is used type equivalent to uint8_t. - bstream.LoadFromBuffer(&buf->GetPointer()[pCompression_Open3DGC.Offset], pCompression_Open3DGC.Count); + bstream.LoadFromBuffer(&buf->GetPointer()[pCompression_Open3DGC.Offset], static_cast(pCompression_Open3DGC.Count)); // After decoding header we can get size of primitives. if(decoder.DecodeHeader(ifs, bstream) != o3dgc::O3DGC_OK) throw DeadlyImportError("GLTF: can not decode Open3DGC header."); @@ -970,9 +970,9 @@ Ref buf = pAsset_Root.buffers.Get(pCompression_Open3DGC.Buffer); { // size = number_of_elements * components_per_element * size_of_component. // Note. But as you can see above, at first we are use this variable in meaning "count". After checking count of objects... - size_t tval = ifs.GetNFloatAttribute(idx); + size_t tval = ifs.GetNFloatAttribute(static_cast(idx)); - switch(ifs.GetFloatAttributeType(idx)) + switch(ifs.GetFloatAttributeType(static_cast(idx))) { case o3dgc::O3DGC_IFS_FLOAT_ATTRIBUTE_TYPE_TEXCOORD: // Check situation when encoded data contain texture coordinates but primitive not. @@ -986,15 +986,15 @@ Ref buf = pAsset_Root.buffers.Get(pCompression_Open3DGC.Buffer); } else { - ifs.SetNFloatAttribute(idx, 0);// Disable decoding this attribute. + ifs.SetNFloatAttribute(static_cast(idx), 0ul);// Disable decoding this attribute. } break; default: - throw DeadlyImportError("GLTF: Open3DGC. Unsupported type of float attribute: " + to_string(ifs.GetFloatAttributeType(idx))); + throw DeadlyImportError("GLTF: Open3DGC. Unsupported type of float attribute: " + to_string(ifs.GetFloatAttributeType(static_cast(idx)))); } - tval *= ifs.GetFloatAttributeDim(idx) * sizeof(o3dgc::Real);// After checking count of objects we can get size of array. + tval *= ifs.GetFloatAttributeDim(static_cast(idx)) * sizeof(o3dgc::Real);// After checking count of objects we can get size of array. size_floatattr[idx] = tval; decoded_data_size += tval; } @@ -1002,8 +1002,8 @@ Ref buf = pAsset_Root.buffers.Get(pCompression_Open3DGC.Buffer); for(size_t idx = 0, idx_end = size_intattr.size(); idx < idx_end; idx++) { // size = number_of_elements * components_per_element * size_of_component. See float attributes note. - size_t tval = ifs.GetNIntAttribute(idx); - switch( ifs.GetIntAttributeType( idx ) ) + size_t tval = ifs.GetNIntAttribute(static_cast(idx)); + switch( ifs.GetIntAttributeType(static_cast(idx) ) ) { case o3dgc::O3DGC_IFS_INT_ATTRIBUTE_TYPE_UNKOWN: case o3dgc::O3DGC_IFS_INT_ATTRIBUTE_TYPE_INDEX: @@ -1012,10 +1012,10 @@ Ref buf = pAsset_Root.buffers.Get(pCompression_Open3DGC.Buffer); break; default: - throw DeadlyImportError("GLTF: Open3DGC. Unsupported type of int attribute: " + to_string(ifs.GetIntAttributeType(idx))); + throw DeadlyImportError("GLTF: Open3DGC. Unsupported type of int attribute: " + to_string(ifs.GetIntAttributeType(static_cast(idx)))); } - tval *= ifs.GetIntAttributeDim(idx) * sizeof(long);// See float attributes note. + tval *= ifs.GetIntAttributeDim(static_cast(idx)) * sizeof(long);// See float attributes note. size_intattr[idx] = tval; decoded_data_size += tval; } @@ -1039,24 +1039,24 @@ Ref buf = pAsset_Root.buffers.Get(pCompression_Open3DGC.Buffer); for(size_t idx = 0, idx_end = size_floatattr.size(), idx_texcoord = 0; idx < idx_end; idx++) { - switch(ifs.GetFloatAttributeType(idx)) + switch(ifs.GetFloatAttributeType(static_cast(idx))) { case o3dgc::O3DGC_IFS_FLOAT_ATTRIBUTE_TYPE_TEXCOORD: if(idx_texcoord < primitives[0].attributes.texcoord.size()) { // See above about absent attributes. - ifs.SetFloatAttribute(idx, (o3dgc::Real* const)(decoded_data + get_buf_offset(primitives[0].attributes.texcoord[idx]))); + ifs.SetFloatAttribute(static_cast(idx), (o3dgc::Real* const)(decoded_data + get_buf_offset(primitives[0].attributes.texcoord[idx]))); idx_texcoord++; } break; default: - throw DeadlyImportError("GLTF: Open3DGC. Unsupported type of float attribute: " + to_string(ifs.GetFloatAttributeType(idx))); + throw DeadlyImportError("GLTF: Open3DGC. Unsupported type of float attribute: " + to_string(ifs.GetFloatAttributeType(static_cast(idx)))); } } for(size_t idx = 0, idx_end = size_intattr.size(); idx < idx_end; idx++) { - switch(ifs.GetIntAttributeType(idx)) { + switch(ifs.GetIntAttributeType(static_cast(idx))) { case o3dgc::O3DGC_IFS_INT_ATTRIBUTE_TYPE_UNKOWN: case o3dgc::O3DGC_IFS_INT_ATTRIBUTE_TYPE_INDEX: case o3dgc::O3DGC_IFS_INT_ATTRIBUTE_TYPE_JOINT_ID: @@ -1065,7 +1065,7 @@ Ref buf = pAsset_Root.buffers.Get(pCompression_Open3DGC.Buffer); // ifs.SetIntAttribute(idx, (long* const)(decoded_data + get_buf_offset(primitives[0].attributes.joint))); default: - throw DeadlyImportError("GLTF: Open3DGC. Unsupported type of int attribute: " + to_string(ifs.GetIntAttributeType(idx))); + throw DeadlyImportError("GLTF: Open3DGC. Unsupported type of int attribute: " + to_string(ifs.GetIntAttributeType(static_cast(idx)))); } } diff --git a/code/glTFAssetWriter.inl b/code/glTFAssetWriter.inl index 0e7a71eb5..1e545b497 100644 --- a/code/glTFAssetWriter.inl +++ b/code/glTFAssetWriter.inl @@ -64,7 +64,7 @@ namespace glTF { inline Value& MakeValue(Value& val, const std::vector & r, MemoryPoolAllocator<>& al) { val.SetArray(); - val.Reserve(r.size(), al); + val.Reserve(static_cast(r.size()), al); for (unsigned int i = 0; i < r.size(); ++i) { val.PushBack(r[i], al); } diff --git a/code/glTFExporter.cpp b/code/glTFExporter.cpp index 14d99c3e4..203a46040 100644 --- a/code/glTFExporter.cpp +++ b/code/glTFExporter.cpp @@ -111,7 +111,6 @@ glTFExporter::glTFExporter(const char* filename, IOSystem* pIOSystem, const aiSc mScene = sceneCopy.get(); - std::unique_ptr asset(); mAsset.reset( new glTF::Asset( pIOSystem ) ); if (isBinary) { @@ -457,7 +456,7 @@ void ExportSkin(Asset& mAsset, const aiMesh* aimesh, Ref& meshRef, RefmOffsetMatrix, tmpMatrix4); inverseBindMatricesData.push_back(tmpMatrix4); - jointNamesIndex = inverseBindMatricesData.size() - 1; + jointNamesIndex = static_cast(inverseBindMatricesData.size() - 1); } // aib->mWeights =====> vertexWeightData @@ -687,13 +686,13 @@ void glTFExporter::ExportMeshes() { size_t num = comp_o3dgc_ifs.GetNumFloatAttributes(); - comp_o3dgc_params.SetFloatAttributeQuantBits(num, quant_texcoord); - comp_o3dgc_params.SetFloatAttributePredMode(num, prediction_texcoord); - comp_o3dgc_ifs.SetNFloatAttribute(num, aim->mNumVertices);// number of elements. - comp_o3dgc_ifs.SetFloatAttributeDim(num, aim->mNumUVComponents[num_tc]);// components per element: aiVector3D => x * float - comp_o3dgc_ifs.SetFloatAttributeType(num, o3dgc::O3DGC_IFS_FLOAT_ATTRIBUTE_TYPE_TEXCOORD); - comp_o3dgc_ifs.SetFloatAttribute(num, (o3dgc::Real* const)&b->GetPointer()[idx_srcdata_tc[num_tc]]); - comp_o3dgc_ifs.SetNumFloatAttributes(num + 1); + comp_o3dgc_params.SetFloatAttributeQuantBits(static_cast(num), quant_texcoord); + comp_o3dgc_params.SetFloatAttributePredMode(static_cast(num), prediction_texcoord); + comp_o3dgc_ifs.SetNFloatAttribute(static_cast(num), aim->mNumVertices);// number of elements. + comp_o3dgc_ifs.SetFloatAttributeDim(static_cast(num), aim->mNumUVComponents[num_tc]);// components per element: aiVector3D => x * float + comp_o3dgc_ifs.SetFloatAttributeType(static_cast(num), o3dgc::O3DGC_IFS_FLOAT_ATTRIBUTE_TYPE_TEXCOORD); + comp_o3dgc_ifs.SetFloatAttribute(static_cast(num), (o3dgc::Real* const)&b->GetPointer()[idx_srcdata_tc[num_tc]]); + comp_o3dgc_ifs.SetNumFloatAttributes(static_cast(num + 1)); } // Coordinates indices @@ -741,7 +740,7 @@ void glTFExporter::ExportMeshes() CopyValue(inverseBindMatricesData[idx_joint], invBindMatrixData[idx_joint]); } - Ref invBindMatrixAccessor = ExportData(*mAsset, skinName, b, inverseBindMatricesData.size(), invBindMatrixData, AttribType::MAT4, AttribType::MAT4, ComponentType_FLOAT); + Ref invBindMatrixAccessor = ExportData(*mAsset, skinName, b, static_cast(inverseBindMatricesData.size()), invBindMatrixData, AttribType::MAT4, AttribType::MAT4, ComponentType_FLOAT); if (invBindMatrixAccessor) skinRef->inverseBindMatrices = invBindMatrixAccessor; // Identity Matrix =====> skinRef->bindShapeMatrix diff --git a/code/glTFImporter.cpp b/code/glTFImporter.cpp index 4867a9e09..02c60ee5e 100644 --- a/code/glTFImporter.cpp +++ b/code/glTFImporter.cpp @@ -48,6 +48,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include + #include #include "MakeVerboseFormat.h" @@ -270,7 +272,7 @@ void glTFImporter::ImportMeshes(glTF::Asset& r) // Limitations for meshes when using Open3DGC-compression. // It's a current limitation of sp... Specification have not this part still - about mesh compression. Why only one primitive? // Because glTF is very flexibly. But in fact it ugly flexible. Every primitive can has own set of accessors and accessors can - // point to a-a-a-a-any part of buffer (thru bufferview ofcourse) and even to another buffer. We know that "Open3DGC-compression" + // point to a-a-a-a-any part of buffer (through bufferview of course) and even to another buffer. We know that "Open3DGC-compression" // is applicable only to part of buffer. As we can't guaranty continuity of the data for decoder, we will limit quantity of primitives. // Yes indices, coordinates etc. still can br stored in different buffers, but with current specification it's a exporter problem. // Also primitive can has only one of "POSITION", "NORMAL" and less then "AI_MAX_NUMBER_OF_TEXTURECOORDS" of "TEXCOORD". All accessor diff --git a/code/glTFImporter.h b/code/glTFImporter.h index 5d06730a5..7edcc83f2 100644 --- a/code/glTFImporter.h +++ b/code/glTFImporter.h @@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_GLTFIMPORTER_H_INC #include "BaseImporter.h" -#include "DefaultIOSystem.h" +#include struct aiNode; diff --git a/code/irrXMLWrapper.h b/code/irrXMLWrapper.h index 41e418811..5b47faefe 100644 --- a/code/irrXMLWrapper.h +++ b/code/irrXMLWrapper.h @@ -92,7 +92,7 @@ public: // Remove null characters from the input sequence otherwise the parsing will utterly fail unsigned int size = 0; - unsigned int size_max = data.size(); + unsigned int size_max = static_cast(data.size()); for(unsigned int i = 0; i < size_max; i++) { if(data[i] != '\0') { data[size++] = data[i]; @@ -117,7 +117,7 @@ public: return 0; } if(t+sizeToRead>data.size()) { - sizeToRead = data.size()-t; + sizeToRead = static_cast(data.size()-t); } memcpy(buffer,&data.front()+t,sizeToRead); diff --git a/code/res/assimp.rc b/code/res/assimp.rc index 78f9d852b..0fe98c05d 100644 --- a/code/res/assimp.rc +++ b/code/res/assimp.rc @@ -1,80 +1,80 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" -#include "..\..\revision.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Deutsch (Deutschland) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU) -#ifdef _WIN32 -LANGUAGE LANG_GERMAN, SUBLANG_GERMAN -#pragma code_page(1252) -#endif //_WIN32 - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,1,SVNRevision, 0 - PRODUCTVERSION 1,1,SVNRevision,0 - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x7L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040704b0" - BEGIN - VALUE "Comments", "Licensed under a 3-clause BSD license" - VALUE "CompanyName", "assimp team" - VALUE "FileDescription", "Open Asset Import Library" - VALUE "FileVersion", 1,1,SVNRevision,0 - VALUE "InternalName", "assimp " - VALUE "LegalCopyright", "Copyright (C) 2006-2010" - VALUE "OriginalFilename", "assimpNN.dll" - VALUE "ProductName", "Open Asset Import Library" - VALUE "ProductVersion", 1,1,SVNRevision,0 - ,0 - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x407, 1200 - END -END - -#endif // Deutsch (Deutschland) resources -///////////////////////////////////////////////////////////////////////////// - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" +#include "..\..\revision.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Deutsch (Deutschland) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU) +#ifdef _WIN32 +LANGUAGE LANG_GERMAN, SUBLANG_GERMAN +#pragma code_page(1252) +#endif //_WIN32 + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,1,SVNRevision, 0 + PRODUCTVERSION 1,1,SVNRevision,0 + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x7L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040704b0" + BEGIN + VALUE "Comments", "Licensed under a 3-clause BSD license" + VALUE "CompanyName", "assimp team" + VALUE "FileDescription", "Open Asset Import Library" + VALUE "FileVersion", 1,1,SVNRevision,0 + VALUE "InternalName", "assimp " + VALUE "LegalCopyright", "Copyright (C) 2006-2010" + VALUE "OriginalFilename", "assimpNN.dll" + VALUE "ProductName", "Open Asset Import Library" + VALUE "ProductVersion", 1,1,SVNRevision,0 + ,0 + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x407, 1200 + END +END + +#endif // Deutsch (Deutschland) resources +///////////////////////////////////////////////////////////////////////////// + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/code/scene.cpp b/code/scene.cpp new file mode 100644 index 000000000..fe95b3ae4 --- /dev/null +++ b/code/scene.cpp @@ -0,0 +1,138 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include + +aiNode::aiNode() +: mName("") +, mParent(NULL) +, mNumChildren(0) +, mChildren(NULL) +, mNumMeshes(0) +, mMeshes(NULL) +, mMetaData(NULL) { + // empty +} + +aiNode::aiNode(const std::string& name) +: mName(name) +, mParent(NULL) +, mNumChildren(0) +, mChildren(NULL) +, mNumMeshes(0) +, mMeshes(NULL) +, mMetaData(NULL) { + // empty +} + +/** Destructor */ +aiNode::~aiNode() { + // delete all children recursively + // to make sure we won't crash if the data is invalid ... + if (mChildren && mNumChildren) + { + for (unsigned int a = 0; a < mNumChildren; a++) + delete mChildren[a]; + } + delete[] mChildren; + delete[] mMeshes; + delete mMetaData; +} + +const aiNode *aiNode::FindNode(const char* name) const { + if (nullptr == name) { + return nullptr; + } + if (!::strcmp(mName.data, name)) { + return this; + } + for (unsigned int i = 0; i < mNumChildren; ++i) { + const aiNode* const p = mChildren[i]->FindNode(name); + if (p) { + return p; + } + } + // there is definitely no sub-node with this name + return nullptr; +} + +aiNode *aiNode::FindNode(const char* name) { + if (!::strcmp(mName.data, name))return this; + for (unsigned int i = 0; i < mNumChildren; ++i) + { + aiNode* const p = mChildren[i]->FindNode(name); + if (p) { + return p; + } + } + // there is definitely no sub-node with this name + return nullptr; +} + +void aiNode::addChildren(unsigned int numChildren, aiNode **children) { + if (nullptr == children || 0 == numChildren) { + return; + } + + for (unsigned int i = 0; i < numChildren; i++) { + aiNode *child = children[i]; + if (nullptr != child) { + child->mParent = this; + } + } + + if (mNumChildren > 0) { + aiNode **tmp = new aiNode*[mNumChildren]; + ::memcpy(tmp, mChildren, sizeof(aiNode*) * mNumChildren); + delete[] mChildren; + mChildren = new aiNode*[mNumChildren + numChildren]; + ::memcpy(mChildren, tmp, sizeof(aiNode*) * mNumChildren); + ::memcpy(&mChildren[mNumChildren], children, sizeof(aiNode*)* numChildren); + mNumChildren += numChildren; + delete[] tmp; + } + else { + mChildren = new aiNode*[numChildren]; + for (unsigned int i = 0; i < numChildren; i++) { + mChildren[i] = children[i]; + } + mNumChildren = numChildren; + } +} diff --git a/contrib/Open3DGC/o3dgcCommon.h b/contrib/Open3DGC/o3dgcCommon.h index 13af4153d..ff6bf7558 100644 --- a/contrib/Open3DGC/o3dgcCommon.h +++ b/contrib/Open3DGC/o3dgcCommon.h @@ -383,7 +383,7 @@ namespace o3dgc r = (maxTab[d] - minTab[d]); diag += r*r; } - diag = sqrt(diag); + diag = static_cast(sqrt(diag)); for(unsigned long d = 0; d < dim; ++d) { maxTab[d] = minTab[d] + diag; diff --git a/contrib/clipper/clipper.cpp b/contrib/clipper/clipper.cpp index c8c62bc2a..7d2af7d3a 100644 --- a/contrib/clipper/clipper.cpp +++ b/contrib/clipper/clipper.cpp @@ -26,7 +26,7 @@ * Paper no. DETC2005-85513 pp. 565-575 * * ASME 2005 International Design Engineering Technical Conferences * * and Computers and Information in Engineering Conference (IDETC/CIE2005) * -* September 24–28, 2005 , Long Beach, California, USA * +* September 24-28, 2005 , Long Beach, California, USA * * http://www.me.berkeley.edu/~mcmains/pubs/DAC05OffsetPolygon.pdf * * * *******************************************************************************/ diff --git a/contrib/clipper/clipper.hpp b/contrib/clipper/clipper.hpp index 3d6510dff..7cdac6c3f 100644 --- a/contrib/clipper/clipper.hpp +++ b/contrib/clipper/clipper.hpp @@ -26,7 +26,7 @@ * Paper no. DETC2005-85513 pp. 565-575 * * ASME 2005 International Design Engineering Technical Conferences * * and Computers and Information in Engineering Conference (IDETC/CIE2005) * -* September 24–28, 2005 , Long Beach, California, USA * +* September 24-28, 2005 , Long Beach, California, USA * * http://www.me.berkeley.edu/~mcmains/pubs/DAC05OffsetPolygon.pdf * * * *******************************************************************************/ diff --git a/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h b/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h index 880e4c0b3..778a1b46e 100644 --- a/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h +++ b/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h @@ -84,7 +84,7 @@ static const unsigned char chartype_table[ 256 ] = { template inline bool isNumeric( const T in ) { - return ( chartype_table[ in ] == 1 ); + return ( chartype_table[ static_cast( in ) ] == 1 ); } template diff --git a/contrib/poly2tri/poly2tri/sweep/cdt.cc b/contrib/poly2tri/poly2tri/sweep/cdt.cc index f013e47e3..d7838257c 100644 --- a/contrib/poly2tri/poly2tri/sweep/cdt.cc +++ b/contrib/poly2tri/poly2tri/sweep/cdt.cc @@ -1,72 +1,72 @@ -/* - * Poly2Tri Copyright (c) 2009-2010, Poly2Tri Contributors - * http://code.google.com/p/poly2tri/ - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Poly2Tri nor the names of its contributors may be - * used to endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include "cdt.h" - -namespace p2t { - -CDT::CDT(std::vector polyline) -{ - sweep_context_ = new SweepContext(polyline); - sweep_ = new Sweep; -} - -void CDT::AddHole(std::vector polyline) -{ - sweep_context_->AddHole(polyline); -} - -void CDT::AddPoint(Point* point) { - sweep_context_->AddPoint(point); -} - -void CDT::Triangulate() -{ - sweep_->Triangulate(*sweep_context_); -} - -std::vector CDT::GetTriangles() -{ - return sweep_context_->GetTriangles(); -} - -std::list CDT::GetMap() -{ - return sweep_context_->GetMap(); -} - -CDT::~CDT() -{ - delete sweep_context_; - delete sweep_; -} - -} - +/* + * Poly2Tri Copyright (c) 2009-2010, Poly2Tri Contributors + * http://code.google.com/p/poly2tri/ + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of Poly2Tri nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "cdt.h" + +namespace p2t { + +CDT::CDT(std::vector polyline) +{ + sweep_context_ = new SweepContext(polyline); + sweep_ = new Sweep; +} + +void CDT::AddHole(std::vector polyline) +{ + sweep_context_->AddHole(polyline); +} + +void CDT::AddPoint(Point* point) { + sweep_context_->AddPoint(point); +} + +void CDT::Triangulate() +{ + sweep_->Triangulate(*sweep_context_); +} + +std::vector CDT::GetTriangles() +{ + return sweep_context_->GetTriangles(); +} + +std::list CDT::GetMap() +{ + return sweep_context_->GetMap(); +} + +CDT::~CDT() +{ + delete sweep_context_; + delete sweep_; +} + +} + diff --git a/contrib/poly2tri/poly2tri/sweep/sweep.cc b/contrib/poly2tri/poly2tri/sweep/sweep.cc index d3e35aebf..ed7c49ac4 100644 --- a/contrib/poly2tri/poly2tri/sweep/sweep.cc +++ b/contrib/poly2tri/poly2tri/sweep/sweep.cc @@ -1,750 +1,750 @@ -/* - * Poly2Tri Copyright (c) 2009-2010, Poly2Tri Contributors - * http://code.google.com/p/poly2tri/ - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Poly2Tri nor the names of its contributors may be - * used to endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include -#include "sweep.h" -#include "sweep_context.h" -#include "advancing_front.h" -#include "../common/utils.h" - -namespace p2t { - -// Triangulate simple polygon with holes -void Sweep::Triangulate(SweepContext& tcx) -{ - tcx.InitTriangulation(); - tcx.CreateAdvancingFront(nodes_); - // Sweep points; build mesh - SweepPoints(tcx); - // Clean up - FinalizationPolygon(tcx); -} - -void Sweep::SweepPoints(SweepContext& tcx) -{ - for (int i = 1; i < tcx.point_count(); i++) { - Point& point = *tcx.GetPoint(i); - Node* node = &PointEvent(tcx, point); - for (unsigned int i = 0; i < point.edge_list.size(); i++) { - EdgeEvent(tcx, point.edge_list[i], node); - } - } -} - -void Sweep::FinalizationPolygon(SweepContext& tcx) -{ - // Get an Internal triangle to start with - Triangle* t = tcx.front()->head()->next->triangle; - Point* p = tcx.front()->head()->next->point; - while (!t->GetConstrainedEdgeCW(*p)) { - t = t->NeighborCCW(*p); - } - - // Collect interior triangles constrained by edges - tcx.MeshClean(*t); -} - -Node& Sweep::PointEvent(SweepContext& tcx, Point& point) -{ - Node& node = tcx.LocateNode(point); - Node& new_node = NewFrontTriangle(tcx, point, node); - - // Only need to check +epsilon since point never have smaller - // x value than node due to how we fetch nodes from the front - if (point.x <= node.point->x + EPSILON) { - Fill(tcx, node); - } - - //tcx.AddNode(new_node); - - FillAdvancingFront(tcx, new_node); - return new_node; -} - -void Sweep::EdgeEvent(SweepContext& tcx, Edge* edge, Node* node) -{ - tcx.edge_event.constrained_edge = edge; - tcx.edge_event.right = (edge->p->x > edge->q->x); - - if (IsEdgeSideOfTriangle(*node->triangle, *edge->p, *edge->q)) { - return; - } - - // For now we will do all needed filling - // TODO: integrate with flip process might give some better performance - // but for now this avoid the issue with cases that needs both flips and fills - FillEdgeEvent(tcx, edge, node); - EdgeEvent(tcx, *edge->p, *edge->q, node->triangle, *edge->q); -} - -void Sweep::EdgeEvent(SweepContext& tcx, Point& ep, Point& eq, Triangle* triangle, Point& point) -{ - if (IsEdgeSideOfTriangle(*triangle, ep, eq)) { - return; - } - - Point* p1 = triangle->PointCCW(point); - Orientation o1 = Orient2d(eq, *p1, ep); - if (o1 == COLLINEAR) { - // ASSIMP_CHANGE (aramis_acg) - throw std::runtime_error("EdgeEvent - collinear points not supported"); - if( triangle->Contains(&eq, p1)) { - triangle->MarkConstrainedEdge(&eq, p1 ); - // We are modifying the constraint maybe it would be better to - // not change the given constraint and just keep a variable for the new constraint - tcx.edge_event.constrained_edge->q = p1; - triangle = &triangle->NeighborAcross(point); - EdgeEvent( tcx, ep, *p1, triangle, *p1 ); - } else { - // ASSIMP_CHANGE (aramis_acg) - std::runtime_error("EdgeEvent - collinear points not supported"); - } - return; - } - - Point* p2 = triangle->PointCW(point); - Orientation o2 = Orient2d(eq, *p2, ep); - if (o2 == COLLINEAR) { - // ASSIMP_CHANGE (aramis_acg) - throw std::runtime_error("EdgeEvent - collinear points not supported"); - - if( triangle->Contains(&eq, p2)) { - triangle->MarkConstrainedEdge(&eq, p2 ); - // We are modifying the constraint maybe it would be better to - // not change the given constraint and just keep a variable for the new constraint - tcx.edge_event.constrained_edge->q = p2; - triangle = &triangle->NeighborAcross(point); - EdgeEvent( tcx, ep, *p2, triangle, *p2 ); - } else { - // ASSIMP_CHANGE (aramis_acg) - throw std::runtime_error("EdgeEvent - collinear points not supported"); - } - return; - } - - if (o1 == o2) { - // Need to decide if we are rotating CW or CCW to get to a triangle - // that will cross edge - if (o1 == CW) { - triangle = triangle->NeighborCCW(point); - } else{ - triangle = triangle->NeighborCW(point); - } - EdgeEvent(tcx, ep, eq, triangle, point); - } else { - // This triangle crosses constraint so lets flippin start! - FlipEdgeEvent(tcx, ep, eq, triangle, point); - } -} - -bool Sweep::IsEdgeSideOfTriangle(Triangle& triangle, Point& ep, Point& eq) -{ - int index = triangle.EdgeIndex(&ep, &eq); - - if (index != -1) { - triangle.MarkConstrainedEdge(index); - Triangle* t = triangle.GetNeighbor(index); - if (t) { - t->MarkConstrainedEdge(&ep, &eq); - } - return true; - } - return false; -} - -Node& Sweep::NewFrontTriangle(SweepContext& tcx, Point& point, Node& node) -{ - Triangle* triangle = new Triangle(point, *node.point, *node.next->point); - - triangle->MarkNeighbor(*node.triangle); - tcx.AddToMap(triangle); - - Node* new_node = new Node(point); - nodes_.push_back(new_node); - - new_node->next = node.next; - new_node->prev = &node; - node.next->prev = new_node; - node.next = new_node; - - if (!Legalize(tcx, *triangle)) { - tcx.MapTriangleToNodes(*triangle); - } - - return *new_node; -} - -void Sweep::Fill(SweepContext& tcx, Node& node) -{ - Triangle* triangle = new Triangle(*node.prev->point, *node.point, *node.next->point); - - // TODO: should copy the constrained_edge value from neighbor triangles - // for now constrained_edge values are copied during the legalize - triangle->MarkNeighbor(*node.prev->triangle); - triangle->MarkNeighbor(*node.triangle); - - tcx.AddToMap(triangle); - - // Update the advancing front - node.prev->next = node.next; - node.next->prev = node.prev; - - // If it was legalized the triangle has already been mapped - if (!Legalize(tcx, *triangle)) { - tcx.MapTriangleToNodes(*triangle); - } - -} - -void Sweep::FillAdvancingFront(SweepContext& tcx, Node& n) -{ - - // Fill right holes - Node* node = n.next; - - while (node->next) { - double angle = HoleAngle(*node); - if (angle > PI_2 || angle < -PI_2) break; - Fill(tcx, *node); - node = node->next; - } - - // Fill left holes - node = n.prev; - - while (node->prev) { - double angle = HoleAngle(*node); - if (angle > PI_2 || angle < -PI_2) break; - Fill(tcx, *node); - node = node->prev; - } - - // Fill right basins - if (n.next && n.next->next) { - double angle = BasinAngle(n); - if (angle < PI_3div4) { - FillBasin(tcx, n); - } - } -} - -double Sweep::BasinAngle(Node& node) -{ - double ax = node.point->x - node.next->next->point->x; - double ay = node.point->y - node.next->next->point->y; - return atan2(ay, ax); -} - -double Sweep::HoleAngle(Node& node) -{ - /* Complex plane - * ab = cosA +i*sinA - * ab = (ax + ay*i)(bx + by*i) = (ax*bx + ay*by) + i(ax*by-ay*bx) - * atan2(y,x) computes the principal value of the argument function - * applied to the complex number x+iy - * Where x = ax*bx + ay*by - * y = ax*by - ay*bx - */ - double ax = node.next->point->x - node.point->x; - double ay = node.next->point->y - node.point->y; - double bx = node.prev->point->x - node.point->x; - double by = node.prev->point->y - node.point->y; - return atan2(ax * by - ay * bx, ax * bx + ay * by); -} - -bool Sweep::Legalize(SweepContext& tcx, Triangle& t) -{ - // To legalize a triangle we start by finding if any of the three edges - // violate the Delaunay condition - for (int i = 0; i < 3; i++) { - if (t.delaunay_edge[i]) - continue; - - Triangle* ot = t.GetNeighbor(i); - - if (ot) { - Point* p = t.GetPoint(i); - Point* op = ot->OppositePoint(t, *p); - int oi = ot->Index(op); - - // If this is a Constrained Edge or a Delaunay Edge(only during recursive legalization) - // then we should not try to legalize - if (ot->constrained_edge[oi] || ot->delaunay_edge[oi]) { - t.constrained_edge[i] = ot->constrained_edge[oi]; - continue; - } - - bool inside = Incircle(*p, *t.PointCCW(*p), *t.PointCW(*p), *op); - - if (inside) { - // Lets mark this shared edge as Delaunay - t.delaunay_edge[i] = true; - ot->delaunay_edge[oi] = true; - - // Lets rotate shared edge one vertex CW to legalize it - RotateTrianglePair(t, *p, *ot, *op); - - // We now got one valid Delaunay Edge shared by two triangles - // This gives us 4 new edges to check for Delaunay - - // Make sure that triangle to node mapping is done only one time for a specific triangle - bool not_legalized = !Legalize(tcx, t); - if (not_legalized) { - tcx.MapTriangleToNodes(t); - } - - not_legalized = !Legalize(tcx, *ot); - if (not_legalized) - tcx.MapTriangleToNodes(*ot); - - // Reset the Delaunay edges, since they only are valid Delaunay edges - // until we add a new triangle or point. - // XXX: need to think about this. Can these edges be tried after we - // return to previous recursive level? - t.delaunay_edge[i] = false; - ot->delaunay_edge[oi] = false; - - // If triangle have been legalized no need to check the other edges since - // the recursive legalization will handles those so we can end here. - return true; - } - } - } - return false; -} - -bool Sweep::Incircle(Point& pa, Point& pb, Point& pc, Point& pd) -{ - double adx = pa.x - pd.x; - double ady = pa.y - pd.y; - double bdx = pb.x - pd.x; - double bdy = pb.y - pd.y; - - double adxbdy = adx * bdy; - double bdxady = bdx * ady; - double oabd = adxbdy - bdxady; - - if (oabd <= 0) - return false; - - double cdx = pc.x - pd.x; - double cdy = pc.y - pd.y; - - double cdxady = cdx * ady; - double adxcdy = adx * cdy; - double ocad = cdxady - adxcdy; - - if (ocad <= 0) - return false; - - double bdxcdy = bdx * cdy; - double cdxbdy = cdx * bdy; - - double alift = adx * adx + ady * ady; - double blift = bdx * bdx + bdy * bdy; - double clift = cdx * cdx + cdy * cdy; - - double det = alift * (bdxcdy - cdxbdy) + blift * ocad + clift * oabd; - - return det > 0; -} - -void Sweep::RotateTrianglePair(Triangle& t, Point& p, Triangle& ot, Point& op) -{ - Triangle* n1, *n2, *n3, *n4; - n1 = t.NeighborCCW(p); - n2 = t.NeighborCW(p); - n3 = ot.NeighborCCW(op); - n4 = ot.NeighborCW(op); - - bool ce1, ce2, ce3, ce4; - ce1 = t.GetConstrainedEdgeCCW(p); - ce2 = t.GetConstrainedEdgeCW(p); - ce3 = ot.GetConstrainedEdgeCCW(op); - ce4 = ot.GetConstrainedEdgeCW(op); - - bool de1, de2, de3, de4; - de1 = t.GetDelunayEdgeCCW(p); - de2 = t.GetDelunayEdgeCW(p); - de3 = ot.GetDelunayEdgeCCW(op); - de4 = ot.GetDelunayEdgeCW(op); - - t.Legalize(p, op); - ot.Legalize(op, p); - - // Remap delaunay_edge - ot.SetDelunayEdgeCCW(p, de1); - t.SetDelunayEdgeCW(p, de2); - t.SetDelunayEdgeCCW(op, de3); - ot.SetDelunayEdgeCW(op, de4); - - // Remap constrained_edge - ot.SetConstrainedEdgeCCW(p, ce1); - t.SetConstrainedEdgeCW(p, ce2); - t.SetConstrainedEdgeCCW(op, ce3); - ot.SetConstrainedEdgeCW(op, ce4); - - // Remap neighbors - // XXX: might optimize the markNeighbor by keeping track of - // what side should be assigned to what neighbor after the - // rotation. Now mark neighbor does lots of testing to find - // the right side. - t.ClearNeighbors(); - ot.ClearNeighbors(); - if (n1) ot.MarkNeighbor(*n1); - if (n2) t.MarkNeighbor(*n2); - if (n3) t.MarkNeighbor(*n3); - if (n4) ot.MarkNeighbor(*n4); - t.MarkNeighbor(ot); -} - -void Sweep::FillBasin(SweepContext& tcx, Node& node) -{ - if (Orient2d(*node.point, *node.next->point, *node.next->next->point) == CCW) { - tcx.basin.left_node = node.next->next; - } else { - tcx.basin.left_node = node.next; - } - - // Find the bottom and right node - tcx.basin.bottom_node = tcx.basin.left_node; - while (tcx.basin.bottom_node->next - && tcx.basin.bottom_node->point->y >= tcx.basin.bottom_node->next->point->y) { - tcx.basin.bottom_node = tcx.basin.bottom_node->next; - } - if (tcx.basin.bottom_node == tcx.basin.left_node) { - // No valid basin - return; - } - - tcx.basin.right_node = tcx.basin.bottom_node; - while (tcx.basin.right_node->next - && tcx.basin.right_node->point->y < tcx.basin.right_node->next->point->y) { - tcx.basin.right_node = tcx.basin.right_node->next; - } - if (tcx.basin.right_node == tcx.basin.bottom_node) { - // No valid basins - return; - } - - tcx.basin.width = tcx.basin.right_node->point->x - tcx.basin.left_node->point->x; - tcx.basin.left_highest = tcx.basin.left_node->point->y > tcx.basin.right_node->point->y; - - FillBasinReq(tcx, tcx.basin.bottom_node); -} - -void Sweep::FillBasinReq(SweepContext& tcx, Node* node) -{ - // if shallow stop filling - if (IsShallow(tcx, *node)) { - return; - } - - Fill(tcx, *node); - - if (node->prev == tcx.basin.left_node && node->next == tcx.basin.right_node) { - return; - } else if (node->prev == tcx.basin.left_node) { - Orientation o = Orient2d(*node->point, *node->next->point, *node->next->next->point); - if (o == CW) { - return; - } - node = node->next; - } else if (node->next == tcx.basin.right_node) { - Orientation o = Orient2d(*node->point, *node->prev->point, *node->prev->prev->point); - if (o == CCW) { - return; - } - node = node->prev; - } else { - // Continue with the neighbor node with lowest Y value - if (node->prev->point->y < node->next->point->y) { - node = node->prev; - } else { - node = node->next; - } - } - - FillBasinReq(tcx, node); -} - -bool Sweep::IsShallow(SweepContext& tcx, Node& node) -{ - double height; - - if (tcx.basin.left_highest) { - height = tcx.basin.left_node->point->y - node.point->y; - } else { - height = tcx.basin.right_node->point->y - node.point->y; - } - - // if shallow stop filling - if (tcx.basin.width > height) { - return true; - } - return false; -} - -void Sweep::FillEdgeEvent(SweepContext& tcx, Edge* edge, Node* node) -{ - if (tcx.edge_event.right) { - FillRightAboveEdgeEvent(tcx, edge, node); - } else { - FillLeftAboveEdgeEvent(tcx, edge, node); - } -} - -void Sweep::FillRightAboveEdgeEvent(SweepContext& tcx, Edge* edge, Node* node) -{ - while (node->next->point->x < edge->p->x) { - // Check if next node is below the edge - if (Orient2d(*edge->q, *node->next->point, *edge->p) == CCW) { - FillRightBelowEdgeEvent(tcx, edge, *node); - } else { - node = node->next; - } - } -} - -void Sweep::FillRightBelowEdgeEvent(SweepContext& tcx, Edge* edge, Node& node) -{ - if (node.point->x < edge->p->x) { - if (Orient2d(*node.point, *node.next->point, *node.next->next->point) == CCW) { - // Concave - FillRightConcaveEdgeEvent(tcx, edge, node); - } else{ - // Convex - FillRightConvexEdgeEvent(tcx, edge, node); - // Retry this one - FillRightBelowEdgeEvent(tcx, edge, node); - } - } -} - -void Sweep::FillRightConcaveEdgeEvent(SweepContext& tcx, Edge* edge, Node& node) -{ - Fill(tcx, *node.next); - if (node.next->point != edge->p) { - // Next above or below edge? - if (Orient2d(*edge->q, *node.next->point, *edge->p) == CCW) { - // Below - if (Orient2d(*node.point, *node.next->point, *node.next->next->point) == CCW) { - // Next is concave - FillRightConcaveEdgeEvent(tcx, edge, node); - } else { - // Next is convex - } - } - } - -} - -void Sweep::FillRightConvexEdgeEvent(SweepContext& tcx, Edge* edge, Node& node) -{ - // Next concave or convex? - if (Orient2d(*node.next->point, *node.next->next->point, *node.next->next->next->point) == CCW) { - // Concave - FillRightConcaveEdgeEvent(tcx, edge, *node.next); - } else{ - // Convex - // Next above or below edge? - if (Orient2d(*edge->q, *node.next->next->point, *edge->p) == CCW) { - // Below - FillRightConvexEdgeEvent(tcx, edge, *node.next); - } else{ - // Above - } - } -} - -void Sweep::FillLeftAboveEdgeEvent(SweepContext& tcx, Edge* edge, Node* node) -{ - while (node->prev->point->x > edge->p->x) { - // Check if next node is below the edge - if (Orient2d(*edge->q, *node->prev->point, *edge->p) == CW) { - FillLeftBelowEdgeEvent(tcx, edge, *node); - } else { - node = node->prev; - } - } -} - -void Sweep::FillLeftBelowEdgeEvent(SweepContext& tcx, Edge* edge, Node& node) -{ - if (node.point->x > edge->p->x) { - if (Orient2d(*node.point, *node.prev->point, *node.prev->prev->point) == CW) { - // Concave - FillLeftConcaveEdgeEvent(tcx, edge, node); - } else { - // Convex - FillLeftConvexEdgeEvent(tcx, edge, node); - // Retry this one - FillLeftBelowEdgeEvent(tcx, edge, node); - } - } -} - -void Sweep::FillLeftConvexEdgeEvent(SweepContext& tcx, Edge* edge, Node& node) -{ - // Next concave or convex? - if (Orient2d(*node.prev->point, *node.prev->prev->point, *node.prev->prev->prev->point) == CW) { - // Concave - FillLeftConcaveEdgeEvent(tcx, edge, *node.prev); - } else{ - // Convex - // Next above or below edge? - if (Orient2d(*edge->q, *node.prev->prev->point, *edge->p) == CW) { - // Below - FillLeftConvexEdgeEvent(tcx, edge, *node.prev); - } else{ - // Above - } - } -} - -void Sweep::FillLeftConcaveEdgeEvent(SweepContext& tcx, Edge* edge, Node& node) -{ - Fill(tcx, *node.prev); - if (node.prev->point != edge->p) { - // Next above or below edge? - if (Orient2d(*edge->q, *node.prev->point, *edge->p) == CW) { - // Below - if (Orient2d(*node.point, *node.prev->point, *node.prev->prev->point) == CW) { - // Next is concave - FillLeftConcaveEdgeEvent(tcx, edge, node); - } else{ - // Next is convex - } - } - } - -} - -void Sweep::FlipEdgeEvent(SweepContext& tcx, Point& ep, Point& eq, Triangle* t, Point& p) -{ - Triangle& ot = t->NeighborAcross(p); - Point& op = *ot.OppositePoint(*t, p); - - if (InScanArea(p, *t->PointCCW(p), *t->PointCW(p), op)) { - // Lets rotate shared edge one vertex CW - RotateTrianglePair(*t, p, ot, op); - tcx.MapTriangleToNodes(*t); - tcx.MapTriangleToNodes(ot); - - if (p == eq && op == ep) { - if (eq == *tcx.edge_event.constrained_edge->q && ep == *tcx.edge_event.constrained_edge->p) { - t->MarkConstrainedEdge(&ep, &eq); - ot.MarkConstrainedEdge(&ep, &eq); - Legalize(tcx, *t); - Legalize(tcx, ot); - } else { - // XXX: I think one of the triangles should be legalized here? - } - } else { - Orientation o = Orient2d(eq, op, ep); - t = &NextFlipTriangle(tcx, (int)o, *t, ot, p, op); - FlipEdgeEvent(tcx, ep, eq, t, p); - } - } else { - Point& newP = NextFlipPoint(ep, eq, ot, op); - FlipScanEdgeEvent(tcx, ep, eq, *t, ot, newP); - EdgeEvent(tcx, ep, eq, t, p); - } -} - -Triangle& Sweep::NextFlipTriangle(SweepContext& tcx, int o, Triangle& t, Triangle& ot, Point& p, Point& op) -{ - if (o == CCW) { - // ot is not crossing edge after flip - int edge_index = ot.EdgeIndex(&p, &op); - ot.delaunay_edge[edge_index] = true; - Legalize(tcx, ot); - ot.ClearDelunayEdges(); - return t; - } - - // t is not crossing edge after flip - int edge_index = t.EdgeIndex(&p, &op); - - t.delaunay_edge[edge_index] = true; - Legalize(tcx, t); - t.ClearDelunayEdges(); - return ot; -} - -Point& Sweep::NextFlipPoint(Point& ep, Point& eq, Triangle& ot, Point& op) -{ - Orientation o2d = Orient2d(eq, op, ep); - if (o2d == CW) { - // Right - return *ot.PointCCW(op); - } else if (o2d == CCW) { - // Left - return *ot.PointCW(op); - } else{ - //throw new RuntimeException("[Unsupported] Opposing point on constrained edge"); - // ASSIMP_CHANGE (aramis_acg) - throw std::runtime_error("[Unsupported] Opposing point on constrained edge"); - } -} - -void Sweep::FlipScanEdgeEvent(SweepContext& tcx, Point& ep, Point& eq, Triangle& flip_triangle, - Triangle& t, Point& p) -{ - Triangle& ot = t.NeighborAcross(p); - Point& op = *ot.OppositePoint(t, p); - - if (InScanArea(eq, *flip_triangle.PointCCW(eq), *flip_triangle.PointCW(eq), op)) { - // flip with new edge op->eq - FlipEdgeEvent(tcx, eq, op, &ot, op); - // TODO: Actually I just figured out that it should be possible to - // improve this by getting the next ot and op before the the above - // flip and continue the flipScanEdgeEvent here - // set new ot and op here and loop back to inScanArea test - // also need to set a new flip_triangle first - // Turns out at first glance that this is somewhat complicated - // so it will have to wait. - } else{ - Point& newP = NextFlipPoint(ep, eq, ot, op); - FlipScanEdgeEvent(tcx, ep, eq, flip_triangle, ot, newP); - } -} - -Sweep::~Sweep() { - - // Clean up memory - for(unsigned int i = 0; i < nodes_.size(); i++) { - delete nodes_[i]; - } - -} - -} - +/* + * Poly2Tri Copyright (c) 2009-2010, Poly2Tri Contributors + * http://code.google.com/p/poly2tri/ + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of Poly2Tri nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include +#include "sweep.h" +#include "sweep_context.h" +#include "advancing_front.h" +#include "../common/utils.h" + +namespace p2t { + +// Triangulate simple polygon with holes +void Sweep::Triangulate(SweepContext& tcx) +{ + tcx.InitTriangulation(); + tcx.CreateAdvancingFront(nodes_); + // Sweep points; build mesh + SweepPoints(tcx); + // Clean up + FinalizationPolygon(tcx); +} + +void Sweep::SweepPoints(SweepContext& tcx) +{ + for (int i = 1; i < tcx.point_count(); i++) { + Point& point = *tcx.GetPoint(i); + Node* node = &PointEvent(tcx, point); + for (unsigned int i = 0; i < point.edge_list.size(); i++) { + EdgeEvent(tcx, point.edge_list[i], node); + } + } +} + +void Sweep::FinalizationPolygon(SweepContext& tcx) +{ + // Get an Internal triangle to start with + Triangle* t = tcx.front()->head()->next->triangle; + Point* p = tcx.front()->head()->next->point; + while (!t->GetConstrainedEdgeCW(*p)) { + t = t->NeighborCCW(*p); + } + + // Collect interior triangles constrained by edges + tcx.MeshClean(*t); +} + +Node& Sweep::PointEvent(SweepContext& tcx, Point& point) +{ + Node& node = tcx.LocateNode(point); + Node& new_node = NewFrontTriangle(tcx, point, node); + + // Only need to check +epsilon since point never have smaller + // x value than node due to how we fetch nodes from the front + if (point.x <= node.point->x + EPSILON) { + Fill(tcx, node); + } + + //tcx.AddNode(new_node); + + FillAdvancingFront(tcx, new_node); + return new_node; +} + +void Sweep::EdgeEvent(SweepContext& tcx, Edge* edge, Node* node) +{ + tcx.edge_event.constrained_edge = edge; + tcx.edge_event.right = (edge->p->x > edge->q->x); + + if (IsEdgeSideOfTriangle(*node->triangle, *edge->p, *edge->q)) { + return; + } + + // For now we will do all needed filling + // TODO: integrate with flip process might give some better performance + // but for now this avoid the issue with cases that needs both flips and fills + FillEdgeEvent(tcx, edge, node); + EdgeEvent(tcx, *edge->p, *edge->q, node->triangle, *edge->q); +} + +void Sweep::EdgeEvent(SweepContext& tcx, Point& ep, Point& eq, Triangle* triangle, Point& point) +{ + if (IsEdgeSideOfTriangle(*triangle, ep, eq)) { + return; + } + + Point* p1 = triangle->PointCCW(point); + Orientation o1 = Orient2d(eq, *p1, ep); + if (o1 == COLLINEAR) { + // ASSIMP_CHANGE (aramis_acg) + throw std::runtime_error("EdgeEvent - collinear points not supported"); + if( triangle->Contains(&eq, p1)) { + triangle->MarkConstrainedEdge(&eq, p1 ); + // We are modifying the constraint maybe it would be better to + // not change the given constraint and just keep a variable for the new constraint + tcx.edge_event.constrained_edge->q = p1; + triangle = &triangle->NeighborAcross(point); + EdgeEvent( tcx, ep, *p1, triangle, *p1 ); + } else { + // ASSIMP_CHANGE (aramis_acg) + std::runtime_error("EdgeEvent - collinear points not supported"); + } + return; + } + + Point* p2 = triangle->PointCW(point); + Orientation o2 = Orient2d(eq, *p2, ep); + if (o2 == COLLINEAR) { + // ASSIMP_CHANGE (aramis_acg) + throw std::runtime_error("EdgeEvent - collinear points not supported"); + + if( triangle->Contains(&eq, p2)) { + triangle->MarkConstrainedEdge(&eq, p2 ); + // We are modifying the constraint maybe it would be better to + // not change the given constraint and just keep a variable for the new constraint + tcx.edge_event.constrained_edge->q = p2; + triangle = &triangle->NeighborAcross(point); + EdgeEvent( tcx, ep, *p2, triangle, *p2 ); + } else { + // ASSIMP_CHANGE (aramis_acg) + throw std::runtime_error("EdgeEvent - collinear points not supported"); + } + return; + } + + if (o1 == o2) { + // Need to decide if we are rotating CW or CCW to get to a triangle + // that will cross edge + if (o1 == CW) { + triangle = triangle->NeighborCCW(point); + } else{ + triangle = triangle->NeighborCW(point); + } + EdgeEvent(tcx, ep, eq, triangle, point); + } else { + // This triangle crosses constraint so lets flippin start! + FlipEdgeEvent(tcx, ep, eq, triangle, point); + } +} + +bool Sweep::IsEdgeSideOfTriangle(Triangle& triangle, Point& ep, Point& eq) +{ + int index = triangle.EdgeIndex(&ep, &eq); + + if (index != -1) { + triangle.MarkConstrainedEdge(index); + Triangle* t = triangle.GetNeighbor(index); + if (t) { + t->MarkConstrainedEdge(&ep, &eq); + } + return true; + } + return false; +} + +Node& Sweep::NewFrontTriangle(SweepContext& tcx, Point& point, Node& node) +{ + Triangle* triangle = new Triangle(point, *node.point, *node.next->point); + + triangle->MarkNeighbor(*node.triangle); + tcx.AddToMap(triangle); + + Node* new_node = new Node(point); + nodes_.push_back(new_node); + + new_node->next = node.next; + new_node->prev = &node; + node.next->prev = new_node; + node.next = new_node; + + if (!Legalize(tcx, *triangle)) { + tcx.MapTriangleToNodes(*triangle); + } + + return *new_node; +} + +void Sweep::Fill(SweepContext& tcx, Node& node) +{ + Triangle* triangle = new Triangle(*node.prev->point, *node.point, *node.next->point); + + // TODO: should copy the constrained_edge value from neighbor triangles + // for now constrained_edge values are copied during the legalize + triangle->MarkNeighbor(*node.prev->triangle); + triangle->MarkNeighbor(*node.triangle); + + tcx.AddToMap(triangle); + + // Update the advancing front + node.prev->next = node.next; + node.next->prev = node.prev; + + // If it was legalized the triangle has already been mapped + if (!Legalize(tcx, *triangle)) { + tcx.MapTriangleToNodes(*triangle); + } + +} + +void Sweep::FillAdvancingFront(SweepContext& tcx, Node& n) +{ + + // Fill right holes + Node* node = n.next; + + while (node->next) { + double angle = HoleAngle(*node); + if (angle > PI_2 || angle < -PI_2) break; + Fill(tcx, *node); + node = node->next; + } + + // Fill left holes + node = n.prev; + + while (node->prev) { + double angle = HoleAngle(*node); + if (angle > PI_2 || angle < -PI_2) break; + Fill(tcx, *node); + node = node->prev; + } + + // Fill right basins + if (n.next && n.next->next) { + double angle = BasinAngle(n); + if (angle < PI_3div4) { + FillBasin(tcx, n); + } + } +} + +double Sweep::BasinAngle(Node& node) +{ + double ax = node.point->x - node.next->next->point->x; + double ay = node.point->y - node.next->next->point->y; + return atan2(ay, ax); +} + +double Sweep::HoleAngle(Node& node) +{ + /* Complex plane + * ab = cosA +i*sinA + * ab = (ax + ay*i)(bx + by*i) = (ax*bx + ay*by) + i(ax*by-ay*bx) + * atan2(y,x) computes the principal value of the argument function + * applied to the complex number x+iy + * Where x = ax*bx + ay*by + * y = ax*by - ay*bx + */ + double ax = node.next->point->x - node.point->x; + double ay = node.next->point->y - node.point->y; + double bx = node.prev->point->x - node.point->x; + double by = node.prev->point->y - node.point->y; + return atan2(ax * by - ay * bx, ax * bx + ay * by); +} + +bool Sweep::Legalize(SweepContext& tcx, Triangle& t) +{ + // To legalize a triangle we start by finding if any of the three edges + // violate the Delaunay condition + for (int i = 0; i < 3; i++) { + if (t.delaunay_edge[i]) + continue; + + Triangle* ot = t.GetNeighbor(i); + + if (ot) { + Point* p = t.GetPoint(i); + Point* op = ot->OppositePoint(t, *p); + int oi = ot->Index(op); + + // If this is a Constrained Edge or a Delaunay Edge(only during recursive legalization) + // then we should not try to legalize + if (ot->constrained_edge[oi] || ot->delaunay_edge[oi]) { + t.constrained_edge[i] = ot->constrained_edge[oi]; + continue; + } + + bool inside = Incircle(*p, *t.PointCCW(*p), *t.PointCW(*p), *op); + + if (inside) { + // Lets mark this shared edge as Delaunay + t.delaunay_edge[i] = true; + ot->delaunay_edge[oi] = true; + + // Lets rotate shared edge one vertex CW to legalize it + RotateTrianglePair(t, *p, *ot, *op); + + // We now got one valid Delaunay Edge shared by two triangles + // This gives us 4 new edges to check for Delaunay + + // Make sure that triangle to node mapping is done only one time for a specific triangle + bool not_legalized = !Legalize(tcx, t); + if (not_legalized) { + tcx.MapTriangleToNodes(t); + } + + not_legalized = !Legalize(tcx, *ot); + if (not_legalized) + tcx.MapTriangleToNodes(*ot); + + // Reset the Delaunay edges, since they only are valid Delaunay edges + // until we add a new triangle or point. + // XXX: need to think about this. Can these edges be tried after we + // return to previous recursive level? + t.delaunay_edge[i] = false; + ot->delaunay_edge[oi] = false; + + // If triangle have been legalized no need to check the other edges since + // the recursive legalization will handles those so we can end here. + return true; + } + } + } + return false; +} + +bool Sweep::Incircle(Point& pa, Point& pb, Point& pc, Point& pd) +{ + double adx = pa.x - pd.x; + double ady = pa.y - pd.y; + double bdx = pb.x - pd.x; + double bdy = pb.y - pd.y; + + double adxbdy = adx * bdy; + double bdxady = bdx * ady; + double oabd = adxbdy - bdxady; + + if (oabd <= 0) + return false; + + double cdx = pc.x - pd.x; + double cdy = pc.y - pd.y; + + double cdxady = cdx * ady; + double adxcdy = adx * cdy; + double ocad = cdxady - adxcdy; + + if (ocad <= 0) + return false; + + double bdxcdy = bdx * cdy; + double cdxbdy = cdx * bdy; + + double alift = adx * adx + ady * ady; + double blift = bdx * bdx + bdy * bdy; + double clift = cdx * cdx + cdy * cdy; + + double det = alift * (bdxcdy - cdxbdy) + blift * ocad + clift * oabd; + + return det > 0; +} + +void Sweep::RotateTrianglePair(Triangle& t, Point& p, Triangle& ot, Point& op) +{ + Triangle* n1, *n2, *n3, *n4; + n1 = t.NeighborCCW(p); + n2 = t.NeighborCW(p); + n3 = ot.NeighborCCW(op); + n4 = ot.NeighborCW(op); + + bool ce1, ce2, ce3, ce4; + ce1 = t.GetConstrainedEdgeCCW(p); + ce2 = t.GetConstrainedEdgeCW(p); + ce3 = ot.GetConstrainedEdgeCCW(op); + ce4 = ot.GetConstrainedEdgeCW(op); + + bool de1, de2, de3, de4; + de1 = t.GetDelunayEdgeCCW(p); + de2 = t.GetDelunayEdgeCW(p); + de3 = ot.GetDelunayEdgeCCW(op); + de4 = ot.GetDelunayEdgeCW(op); + + t.Legalize(p, op); + ot.Legalize(op, p); + + // Remap delaunay_edge + ot.SetDelunayEdgeCCW(p, de1); + t.SetDelunayEdgeCW(p, de2); + t.SetDelunayEdgeCCW(op, de3); + ot.SetDelunayEdgeCW(op, de4); + + // Remap constrained_edge + ot.SetConstrainedEdgeCCW(p, ce1); + t.SetConstrainedEdgeCW(p, ce2); + t.SetConstrainedEdgeCCW(op, ce3); + ot.SetConstrainedEdgeCW(op, ce4); + + // Remap neighbors + // XXX: might optimize the markNeighbor by keeping track of + // what side should be assigned to what neighbor after the + // rotation. Now mark neighbor does lots of testing to find + // the right side. + t.ClearNeighbors(); + ot.ClearNeighbors(); + if (n1) ot.MarkNeighbor(*n1); + if (n2) t.MarkNeighbor(*n2); + if (n3) t.MarkNeighbor(*n3); + if (n4) ot.MarkNeighbor(*n4); + t.MarkNeighbor(ot); +} + +void Sweep::FillBasin(SweepContext& tcx, Node& node) +{ + if (Orient2d(*node.point, *node.next->point, *node.next->next->point) == CCW) { + tcx.basin.left_node = node.next->next; + } else { + tcx.basin.left_node = node.next; + } + + // Find the bottom and right node + tcx.basin.bottom_node = tcx.basin.left_node; + while (tcx.basin.bottom_node->next + && tcx.basin.bottom_node->point->y >= tcx.basin.bottom_node->next->point->y) { + tcx.basin.bottom_node = tcx.basin.bottom_node->next; + } + if (tcx.basin.bottom_node == tcx.basin.left_node) { + // No valid basin + return; + } + + tcx.basin.right_node = tcx.basin.bottom_node; + while (tcx.basin.right_node->next + && tcx.basin.right_node->point->y < tcx.basin.right_node->next->point->y) { + tcx.basin.right_node = tcx.basin.right_node->next; + } + if (tcx.basin.right_node == tcx.basin.bottom_node) { + // No valid basins + return; + } + + tcx.basin.width = tcx.basin.right_node->point->x - tcx.basin.left_node->point->x; + tcx.basin.left_highest = tcx.basin.left_node->point->y > tcx.basin.right_node->point->y; + + FillBasinReq(tcx, tcx.basin.bottom_node); +} + +void Sweep::FillBasinReq(SweepContext& tcx, Node* node) +{ + // if shallow stop filling + if (IsShallow(tcx, *node)) { + return; + } + + Fill(tcx, *node); + + if (node->prev == tcx.basin.left_node && node->next == tcx.basin.right_node) { + return; + } else if (node->prev == tcx.basin.left_node) { + Orientation o = Orient2d(*node->point, *node->next->point, *node->next->next->point); + if (o == CW) { + return; + } + node = node->next; + } else if (node->next == tcx.basin.right_node) { + Orientation o = Orient2d(*node->point, *node->prev->point, *node->prev->prev->point); + if (o == CCW) { + return; + } + node = node->prev; + } else { + // Continue with the neighbor node with lowest Y value + if (node->prev->point->y < node->next->point->y) { + node = node->prev; + } else { + node = node->next; + } + } + + FillBasinReq(tcx, node); +} + +bool Sweep::IsShallow(SweepContext& tcx, Node& node) +{ + double height; + + if (tcx.basin.left_highest) { + height = tcx.basin.left_node->point->y - node.point->y; + } else { + height = tcx.basin.right_node->point->y - node.point->y; + } + + // if shallow stop filling + if (tcx.basin.width > height) { + return true; + } + return false; +} + +void Sweep::FillEdgeEvent(SweepContext& tcx, Edge* edge, Node* node) +{ + if (tcx.edge_event.right) { + FillRightAboveEdgeEvent(tcx, edge, node); + } else { + FillLeftAboveEdgeEvent(tcx, edge, node); + } +} + +void Sweep::FillRightAboveEdgeEvent(SweepContext& tcx, Edge* edge, Node* node) +{ + while (node->next->point->x < edge->p->x) { + // Check if next node is below the edge + if (Orient2d(*edge->q, *node->next->point, *edge->p) == CCW) { + FillRightBelowEdgeEvent(tcx, edge, *node); + } else { + node = node->next; + } + } +} + +void Sweep::FillRightBelowEdgeEvent(SweepContext& tcx, Edge* edge, Node& node) +{ + if (node.point->x < edge->p->x) { + if (Orient2d(*node.point, *node.next->point, *node.next->next->point) == CCW) { + // Concave + FillRightConcaveEdgeEvent(tcx, edge, node); + } else{ + // Convex + FillRightConvexEdgeEvent(tcx, edge, node); + // Retry this one + FillRightBelowEdgeEvent(tcx, edge, node); + } + } +} + +void Sweep::FillRightConcaveEdgeEvent(SweepContext& tcx, Edge* edge, Node& node) +{ + Fill(tcx, *node.next); + if (node.next->point != edge->p) { + // Next above or below edge? + if (Orient2d(*edge->q, *node.next->point, *edge->p) == CCW) { + // Below + if (Orient2d(*node.point, *node.next->point, *node.next->next->point) == CCW) { + // Next is concave + FillRightConcaveEdgeEvent(tcx, edge, node); + } else { + // Next is convex + } + } + } + +} + +void Sweep::FillRightConvexEdgeEvent(SweepContext& tcx, Edge* edge, Node& node) +{ + // Next concave or convex? + if (Orient2d(*node.next->point, *node.next->next->point, *node.next->next->next->point) == CCW) { + // Concave + FillRightConcaveEdgeEvent(tcx, edge, *node.next); + } else{ + // Convex + // Next above or below edge? + if (Orient2d(*edge->q, *node.next->next->point, *edge->p) == CCW) { + // Below + FillRightConvexEdgeEvent(tcx, edge, *node.next); + } else{ + // Above + } + } +} + +void Sweep::FillLeftAboveEdgeEvent(SweepContext& tcx, Edge* edge, Node* node) +{ + while (node->prev->point->x > edge->p->x) { + // Check if next node is below the edge + if (Orient2d(*edge->q, *node->prev->point, *edge->p) == CW) { + FillLeftBelowEdgeEvent(tcx, edge, *node); + } else { + node = node->prev; + } + } +} + +void Sweep::FillLeftBelowEdgeEvent(SweepContext& tcx, Edge* edge, Node& node) +{ + if (node.point->x > edge->p->x) { + if (Orient2d(*node.point, *node.prev->point, *node.prev->prev->point) == CW) { + // Concave + FillLeftConcaveEdgeEvent(tcx, edge, node); + } else { + // Convex + FillLeftConvexEdgeEvent(tcx, edge, node); + // Retry this one + FillLeftBelowEdgeEvent(tcx, edge, node); + } + } +} + +void Sweep::FillLeftConvexEdgeEvent(SweepContext& tcx, Edge* edge, Node& node) +{ + // Next concave or convex? + if (Orient2d(*node.prev->point, *node.prev->prev->point, *node.prev->prev->prev->point) == CW) { + // Concave + FillLeftConcaveEdgeEvent(tcx, edge, *node.prev); + } else{ + // Convex + // Next above or below edge? + if (Orient2d(*edge->q, *node.prev->prev->point, *edge->p) == CW) { + // Below + FillLeftConvexEdgeEvent(tcx, edge, *node.prev); + } else{ + // Above + } + } +} + +void Sweep::FillLeftConcaveEdgeEvent(SweepContext& tcx, Edge* edge, Node& node) +{ + Fill(tcx, *node.prev); + if (node.prev->point != edge->p) { + // Next above or below edge? + if (Orient2d(*edge->q, *node.prev->point, *edge->p) == CW) { + // Below + if (Orient2d(*node.point, *node.prev->point, *node.prev->prev->point) == CW) { + // Next is concave + FillLeftConcaveEdgeEvent(tcx, edge, node); + } else{ + // Next is convex + } + } + } + +} + +void Sweep::FlipEdgeEvent(SweepContext& tcx, Point& ep, Point& eq, Triangle* t, Point& p) +{ + Triangle& ot = t->NeighborAcross(p); + Point& op = *ot.OppositePoint(*t, p); + + if (InScanArea(p, *t->PointCCW(p), *t->PointCW(p), op)) { + // Lets rotate shared edge one vertex CW + RotateTrianglePair(*t, p, ot, op); + tcx.MapTriangleToNodes(*t); + tcx.MapTriangleToNodes(ot); + + if (p == eq && op == ep) { + if (eq == *tcx.edge_event.constrained_edge->q && ep == *tcx.edge_event.constrained_edge->p) { + t->MarkConstrainedEdge(&ep, &eq); + ot.MarkConstrainedEdge(&ep, &eq); + Legalize(tcx, *t); + Legalize(tcx, ot); + } else { + // XXX: I think one of the triangles should be legalized here? + } + } else { + Orientation o = Orient2d(eq, op, ep); + t = &NextFlipTriangle(tcx, (int)o, *t, ot, p, op); + FlipEdgeEvent(tcx, ep, eq, t, p); + } + } else { + Point& newP = NextFlipPoint(ep, eq, ot, op); + FlipScanEdgeEvent(tcx, ep, eq, *t, ot, newP); + EdgeEvent(tcx, ep, eq, t, p); + } +} + +Triangle& Sweep::NextFlipTriangle(SweepContext& tcx, int o, Triangle& t, Triangle& ot, Point& p, Point& op) +{ + if (o == CCW) { + // ot is not crossing edge after flip + int edge_index = ot.EdgeIndex(&p, &op); + ot.delaunay_edge[edge_index] = true; + Legalize(tcx, ot); + ot.ClearDelunayEdges(); + return t; + } + + // t is not crossing edge after flip + int edge_index = t.EdgeIndex(&p, &op); + + t.delaunay_edge[edge_index] = true; + Legalize(tcx, t); + t.ClearDelunayEdges(); + return ot; +} + +Point& Sweep::NextFlipPoint(Point& ep, Point& eq, Triangle& ot, Point& op) +{ + Orientation o2d = Orient2d(eq, op, ep); + if (o2d == CW) { + // Right + return *ot.PointCCW(op); + } else if (o2d == CCW) { + // Left + return *ot.PointCW(op); + } else{ + //throw new RuntimeException("[Unsupported] Opposing point on constrained edge"); + // ASSIMP_CHANGE (aramis_acg) + throw std::runtime_error("[Unsupported] Opposing point on constrained edge"); + } +} + +void Sweep::FlipScanEdgeEvent(SweepContext& tcx, Point& ep, Point& eq, Triangle& flip_triangle, + Triangle& t, Point& p) +{ + Triangle& ot = t.NeighborAcross(p); + Point& op = *ot.OppositePoint(t, p); + + if (InScanArea(eq, *flip_triangle.PointCCW(eq), *flip_triangle.PointCW(eq), op)) { + // flip with new edge op->eq + FlipEdgeEvent(tcx, eq, op, &ot, op); + // TODO: Actually I just figured out that it should be possible to + // improve this by getting the next ot and op before the the above + // flip and continue the flipScanEdgeEvent here + // set new ot and op here and loop back to inScanArea test + // also need to set a new flip_triangle first + // Turns out at first glance that this is somewhat complicated + // so it will have to wait. + } else{ + Point& newP = NextFlipPoint(ep, eq, ot, op); + FlipScanEdgeEvent(tcx, ep, eq, flip_triangle, ot, newP); + } +} + +Sweep::~Sweep() { + + // Clean up memory + for(unsigned int i = 0; i < nodes_.size(); i++) { + delete nodes_[i]; + } + +} + +} + diff --git a/contrib/poly2tri/poly2tri/sweep/sweep_context.cc b/contrib/poly2tri/poly2tri/sweep/sweep_context.cc index 235e1eb05..184457cf2 100644 --- a/contrib/poly2tri/poly2tri/sweep/sweep_context.cc +++ b/contrib/poly2tri/poly2tri/sweep/sweep_context.cc @@ -96,7 +96,7 @@ void SweepContext::InitTriangulation() void SweepContext::InitEdges(std::vector polyline) { - int num_points = polyline.size(); + int num_points = static_cast(polyline.size()); for (int i = 0; i < num_points; i++) { int j = i < num_points - 1 ? i + 1 : 0; edge_list.push_back(new Edge(*polyline[i], *polyline[j])); diff --git a/contrib/poly2tri/poly2tri/sweep/sweep_context.h b/contrib/poly2tri/poly2tri/sweep/sweep_context.h index 1010c0e8a..2f7d8e982 100644 --- a/contrib/poly2tri/poly2tri/sweep/sweep_context.h +++ b/contrib/poly2tri/poly2tri/sweep/sweep_context.h @@ -158,7 +158,7 @@ inline AdvancingFront* SweepContext::front() inline int SweepContext::point_count() { - return points_.size(); + return static_cast(points_.size()); } inline void SweepContext::set_head(Point* p1) diff --git a/code/DefaultIOStream.h b/include/assimp/DefaultIOStream.h similarity index 99% rename from code/DefaultIOStream.h rename to include/assimp/DefaultIOStream.h index 294c5b797..f4c9af85d 100644 --- a/code/DefaultIOStream.h +++ b/include/assimp/DefaultIOStream.h @@ -45,7 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include -#include "Defines.h" +#include namespace Assimp { diff --git a/code/DefaultIOSystem.h b/include/assimp/DefaultIOSystem.h similarity index 98% rename from code/DefaultIOSystem.h rename to include/assimp/DefaultIOSystem.h index 49960a847..b4986b330 100644 --- a/code/DefaultIOSystem.h +++ b/include/assimp/DefaultIOSystem.h @@ -48,7 +48,7 @@ namespace Assimp { // --------------------------------------------------------------------------- /** Default implementation of IOSystem using the standard C file functions */ -class DefaultIOSystem : public IOSystem +class ASSIMP_API DefaultIOSystem : public IOSystem { public: /** Constructor. */ diff --git a/code/Defines.h b/include/assimp/Defines.h similarity index 100% rename from code/Defines.h rename to include/assimp/Defines.h diff --git a/include/assimp/Exporter.hpp b/include/assimp/Exporter.hpp index 193d07f66..72224da3c 100644 --- a/include/assimp/Exporter.hpp +++ b/include/assimp/Exporter.hpp @@ -3,7 +3,7 @@ Open Asset Import Library (assimp) --------------------------------------------------------------------------- -Copyright (c) 2006-2011, assimp team +Copyright (c) 2006-2016, assimp team All rights reserved. @@ -51,17 +51,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "cexport.h" #include -namespace Assimp { - class ExporterPimpl; - class IOSystem; - +namespace Assimp { + +class ExporterPimpl; +class IOSystem; // ---------------------------------------------------------------------------------- /** CPP-API: The Exporter class forms an C++ interface to the export functionality * of the Open Asset Import Library. Note that the export interface is available * only if Assimp has been built with ASSIMP_BUILD_NO_EXPORT not defined. * - * The interface is modelled after the importer interface and mostly + * The interface is modeled after the importer interface and mostly * symmetric. The same rules for threading etc. apply. * * In a nutshell, there are two export interfaces: #Export, which writes the @@ -74,17 +74,10 @@ namespace Assimp { * #ExportToBlob is especially useful if you intend to work * with the data in-memory. */ - class ASSIMP_API ExportProperties; -class ASSIMP_API Exporter - // TODO: causes good ol' base class has no dll interface warning -//#ifdef __cplusplus -// : public boost::noncopyable -//#endif // __cplusplus -{ +class ASSIMP_API Exporter { public: - /** Function pointer type of a Export worker function */ typedef void (*fpExportFunc)(const char*, IOSystem*, const aiScene*, const ExportProperties*); @@ -97,7 +90,7 @@ public: // Worker function to do the actual exporting fpExportFunc mExportFunction; - // Postprocessing steps to be executed PRIOR to invoking mExportFunction + // Post-processing steps to be executed PRIOR to invoking mExportFunction unsigned int mEnforcePP; // Constructor to fill all entries @@ -122,14 +115,10 @@ public: public: - - Exporter(); ~Exporter(); public: - - // ------------------------------------------------------------------- /** Supplies a custom IO handler to the exporter to use to open and * access files. @@ -163,8 +152,6 @@ public: * @return true by default */ bool IsDefaultIOHandler() const; - - // ------------------------------------------------------------------- /** Exports the given scene to a chosen file format. Returns the exported * data as a binary blob which you can write into a file or something. @@ -184,8 +171,7 @@ public: * @note Use aiCopyScene() to get a modifiable copy of a previously * imported scene. */ const aiExportDataBlob* ExportToBlob( const aiScene* pScene, const char* pFormatId, unsigned int pPreprocessing = 0u, const ExportProperties* pProperties = NULL); - inline const aiExportDataBlob* ExportToBlob( const aiScene* pScene, const std::string& pFormatId, unsigned int pPreprocessing = 0u, const ExportProperties* pProperties = NULL); - + const aiExportDataBlob* ExportToBlob( const aiScene* pScene, const std::string& pFormatId, unsigned int pPreprocessing = 0u, const ExportProperties* pProperties = NULL); // ------------------------------------------------------------------- /** Convenience function to export directly to a file. Use @@ -213,16 +199,15 @@ public: * triangulate data so they would run the step even if it wasn't requested. * * If assimp detects that the input scene was directly taken from the importer side of - * the library (i.e. not copied using aiCopyScene and potetially modified afterwards), - * any postprocessing steps already applied to the scene will not be applied again, unless - * they show non-idempotent behaviour (#aiProcess_MakeLeftHanded, #aiProcess_FlipUVs and + * the library (i.e. not copied using aiCopyScene and potentially modified afterwards), + * any post-processing steps already applied to the scene will not be applied again, unless + * they show non-idempotent behavior (#aiProcess_MakeLeftHanded, #aiProcess_FlipUVs and * #aiProcess_FlipWindingOrder). * @return AI_SUCCESS if everything was fine. * @note Use aiCopyScene() to get a modifiable copy of a previously * imported scene.*/ aiReturn Export( const aiScene* pScene, const char* pFormatId, const char* pPath, unsigned int pPreprocessing = 0u, const ExportProperties* pProperties = NULL); - inline aiReturn Export( const aiScene* pScene, const std::string& pFormatId, const std::string& pPath, unsigned int pPreprocessing = 0u, const ExportProperties* pProperties = NULL); - + aiReturn Export( const aiScene* pScene, const std::string& pFormatId, const std::string& pPath, unsigned int pPreprocessing = 0u, const ExportProperties* pProperties = NULL); // ------------------------------------------------------------------- /** Returns an error description of an error that occurred in #Export @@ -236,30 +221,26 @@ public: * following methods is called: #Export, #ExportToBlob, #FreeBlob */ const char* GetErrorString() const; - // ------------------------------------------------------------------- /** Return the blob obtained from the last call to #ExportToBlob */ const aiExportDataBlob* GetBlob() const; - // ------------------------------------------------------------------- /** Orphan the blob from the last call to #ExportToBlob. This means * the caller takes ownership and is thus responsible for calling * the C API function #aiReleaseExportBlob to release it. */ const aiExportDataBlob* GetOrphanedBlob() const; - // ------------------------------------------------------------------- /** Frees the current blob. * * The function does nothing if no blob has previously been * previously produced via #ExportToBlob. #FreeBlob is called * automatically by the destructor. The only reason to call - * it manually would be to reclain as much storage as possible + * it manually would be to reclaim as much storage as possible * without giving up the #Exporter instance yet. */ void FreeBlob( ); - // ------------------------------------------------------------------- /** Returns the number of export file formats available in the current * Assimp build. Use #Exporter::GetExportFormatDescription to @@ -270,13 +251,12 @@ public: **/ size_t GetExportFormatCount() const; - // ------------------------------------------------------------------- /** Returns a description of the nth export file format. Use # * #Exporter::GetExportFormatCount to learn how many export * formats are supported. * - * The returned pointer is of static storage duration iff the + * The returned pointer is of static storage duration if the * pIndex pertains to a built-in exporter (i.e. one not registered * via #RegistrerExporter). It is restricted to the life-time of the * #Exporter instance otherwise. @@ -287,7 +267,6 @@ public: * NULL if pIndex is out of range. */ const aiExportFormatDesc* GetExportFormatDescription( size_t pIndex ) const; - // ------------------------------------------------------------------- /** Register a custom exporter. Custom export formats are limited to * to the current #Exporter instance and do not affect the @@ -301,11 +280,10 @@ public: * occupied by another format. */ aiReturn RegisterExporter(const ExportFormatEntry& desc); - // ------------------------------------------------------------------- /** Remove an export format previously registered with #RegisterExporter * from the #Exporter instance (this can also be used to drop - * builtin exporters because those are implicitly registered + * built-in exporters because those are implicitly registered * using #RegisterExporter). * @param id Format id to be unregistered, this refers to the * 'id' field of #aiExportFormatDesc. @@ -313,16 +291,12 @@ public: * has no effect.*/ void UnregisterExporter(const char* id); - protected: - // Just because we don't want you to know how we're hacking around. ExporterPimpl* pimpl; }; - -class ASSIMP_API ExportProperties -{ +class ASSIMP_API ExportProperties { public: // Data type to store the key hash typedef unsigned int KeyType; @@ -335,11 +309,9 @@ public: typedef std::map MatrixPropertyMap; public: - /** Standard constructor * @see ExportProperties() */ - ExportProperties(); // ------------------------------------------------------------------- @@ -487,19 +459,24 @@ protected: MatrixPropertyMap mMatrixProperties; }; - // ---------------------------------------------------------------------------------- -inline const aiExportDataBlob* Exporter :: ExportToBlob( const aiScene* pScene, const std::string& pFormatId,unsigned int pPreprocessing, const ExportProperties* pProperties) +inline +const aiExportDataBlob* Exporter::ExportToBlob( const aiScene* pScene, const std::string& pFormatId, + unsigned int pPreprocessing, const ExportProperties* pProperties) { return ExportToBlob(pScene,pFormatId.c_str(),pPreprocessing, pProperties); } // ---------------------------------------------------------------------------------- -inline aiReturn Exporter :: Export( const aiScene* pScene, const std::string& pFormatId, const std::string& pPath, unsigned int pPreprocessing, const ExportProperties* pProperties) +inline +aiReturn Exporter :: Export( const aiScene* pScene, const std::string& pFormatId, + const std::string& pPath, unsigned int pPreprocessing, + const ExportProperties* pProperties) { return Export(pScene,pFormatId.c_str(),pPath.c_str(),pPreprocessing, pProperties); } } // namespace Assimp + #endif // ASSIMP_BUILD_NO_EXPORT #endif // AI_EXPORT_HPP_INC diff --git a/include/assimp/Importer.hpp b/include/assimp/Importer.hpp index b18998c87..6b8c6ac46 100644 --- a/include/assimp/Importer.hpp +++ b/include/assimp/Importer.hpp @@ -52,13 +52,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // Public ASSIMP data structures #include -#include namespace Assimp { // ======================================================================= // Public interface to Assimp class Importer; - class Exporter; // export.hpp class IOStream; class IOSystem; class ProgressHandler; @@ -77,7 +75,6 @@ namespace Assimp { // ======================================================================= // Holy stuff, only for members of the high council of the Jedi. class ImporterPimpl; - class ExporterPimpl; // export.hpp } //! namespace Assimp #define AI_PROPERTY_WAS_NOT_EXISTING 0xffffffff @@ -193,7 +190,6 @@ public: */ aiReturn UnregisterPPStep(BaseProcess* pImp); - // ------------------------------------------------------------------- /** Set an integer configuration property. * @param szName Name of the property. All supported properties @@ -292,10 +288,10 @@ public: // ------------------------------------------------------------------- /** Supplies a custom IO handler to the importer to use to open and - * access files. If you need the importer to use custion IO logic to + * access files. If you need the importer to use custom IO logic to * access the files, you need to provide a custom implementation of * IOSystem and IOFile to the importer. Then create an instance of - * your custion IOSystem implementation and supply it by this function. + * your custom IOSystem implementation and supply it by this function. * * The Importer takes ownership of the object and will destroy it * afterwards. The previously assigned handler will be deleted. @@ -357,7 +353,7 @@ public: bool IsDefaultProgressHandler() const; // ------------------------------------------------------------------- - /** @brief Check whether a given set of postprocessing flags + /** @brief Check whether a given set of post-processing flags * is supported. * * Some flags are mutually exclusive, others are probably @@ -517,9 +513,6 @@ public: * It will work as well for static linkage with Assimp.*/ aiScene* GetOrphanedScene(); - - - // ------------------------------------------------------------------- /** Returns whether a given file extension is supported by ASSIMP. * @@ -558,7 +551,7 @@ public: inline void GetExtensionList(std::string& szOut) const; // ------------------------------------------------------------------- - /** Get the number of importrs currently registered with Assimp. */ + /** Get the number of importers currently registered with Assimp. */ size_t GetImporterCount() const; // ------------------------------------------------------------------- @@ -601,9 +594,6 @@ public: * @return (size_t)-1 if no importer is found */ size_t GetImporterIndex (const char* szExtension) const; - - - // ------------------------------------------------------------------- /** Returns the storage allocated by ASSIMP to hold the scene data * in memory. @@ -624,7 +614,6 @@ public: * intended for use in production environments. */ void SetExtraVerbose(bool bDo); - // ------------------------------------------------------------------- /** Private, do not use. */ ImporterPimpl* Pimpl() { return pimpl; } diff --git a/include/assimp/LogStream.hpp b/include/assimp/LogStream.hpp index 477fe5321..03e77dba4 100644 --- a/include/assimp/LogStream.hpp +++ b/include/assimp/LogStream.hpp @@ -43,8 +43,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef INCLUDED_AI_LOGSTREAM_H #define INCLUDED_AI_LOGSTREAM_H + #include "types.h" + namespace Assimp { + class IOSystem; // ------------------------------------------------------------------------------------ diff --git a/include/assimp/Logger.hpp b/include/assimp/Logger.hpp index 7f355b5bf..655957bab 100644 --- a/include/assimp/Logger.hpp +++ b/include/assimp/Logger.hpp @@ -45,7 +45,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_LOGGER_H #include "types.h" -namespace Assimp { + +namespace Assimp { + class LogStream; // Maximum length of a log message. Longer messages are rejected. diff --git a/include/assimp/NullLogger.hpp b/include/assimp/NullLogger.hpp index 64b59a4a0..357ffc499 100644 --- a/include/assimp/NullLogger.hpp +++ b/include/assimp/NullLogger.hpp @@ -46,7 +46,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define INCLUDED_AI_NULLLOGGER_H #include "Logger.hpp" -namespace Assimp { + +namespace Assimp { + // --------------------------------------------------------------------------- /** @brief CPP-API: Empty logging implementation. * diff --git a/include/assimp/anim.h b/include/assimp/anim.h index 6380b4650..4fac3e4d8 100644 --- a/include/assimp/anim.h +++ b/include/assimp/anim.h @@ -39,16 +39,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- */ -/** @file anim.h - * @brief Defines the data structures in which the imported animations - * are returned. - */ +/** + * @file anim.h + * @brief Defines the data structures in which the imported animations + * are returned. + */ #pragma once #ifndef AI_ANIM_H_INC #define AI_ANIM_H_INC -#include "types.h" -#include "quaternion.h" +#include +#include #ifdef __cplusplus extern "C" { @@ -66,16 +67,20 @@ struct aiVectorKey #ifdef __cplusplus - //! Default constructor - aiVectorKey(){} + /// @brief The default constructor. + aiVectorKey() + : mTime( 0.0 ) + , mValue() { + // empty + } + + /// @brief Construction from a given time and key value. - //! Construction from a given time and key value aiVectorKey(double time, const aiVector3D& value) : mTime (time) , mValue (value) {} - typedef aiVector3D elem_type; // Comparison operators. For use with std::find(); @@ -93,7 +98,7 @@ struct aiVectorKey bool operator > (const aiVectorKey& o) const { return mTime > o.mTime; } -#endif +#endif // __cplusplus }; // --------------------------------------------------------------------------- @@ -108,7 +113,10 @@ struct aiQuatKey C_STRUCT aiQuaternion mValue; #ifdef __cplusplus - aiQuatKey(){ + aiQuatKey() + : mTime( 0.0 ) + , mValue() { + // empty } /** Construction from a given time and key value */ @@ -145,7 +153,7 @@ struct aiMeshKey double mTime; /** Index into the aiMesh::mAnimMeshes array of the - * mesh coresponding to the #aiMeshAnim hosting this + * mesh corresponding to the #aiMeshAnim hosting this * key frame. The referenced anim mesh is evaluated * according to the rules defined in the docs for #aiAnimMesh.*/ unsigned int mValue; @@ -182,6 +190,39 @@ struct aiMeshKey #endif }; +// --------------------------------------------------------------------------- +/** Binds a morph anim mesh to a specific point in time. */ +struct aiMeshMorphKey +{ + /** The time of this key */ + double mTime; + + /** The values and weights at the time of this key */ + unsigned int *mValues; + double *mWeights; + + /** The number of values and weights */ + unsigned int mNumValuesAndWeights; +#ifdef __cplusplus + aiMeshMorphKey() + : mTime(0.0) + , mValues(NULL) + , mWeights(NULL) + , mNumValuesAndWeights(0) + { + + } + + ~aiMeshMorphKey() + { + if (mNumValuesAndWeights && mValues && mWeights) { + delete [] mValues; + delete [] mWeights; + } + } +#endif +}; + // --------------------------------------------------------------------------- /** Defines how an animation channel behaves outside the defined time * range. This corresponds to aiNodeAnim::mPreState and @@ -204,8 +245,6 @@ enum aiAnimBehaviour * time is t, use the value at (t-n) % (|m-n|).*/ aiAnimBehaviour_REPEAT = 0x3, - - /** This value is not used, it is just here to force the * the compiler to map this enum to a 32 Bit integer */ #ifndef SWIG @@ -228,8 +267,7 @@ enum aiAnimBehaviour * Duplicate keys don't pass the validation step. Most likely there * will be no negative time values, but they are not forbidden also ( so * implementations need to cope with them! ) */ -struct aiNodeAnim -{ +struct aiNodeAnim { /** The name of the node affected by this animation. The node * must exist and it must be unique.*/ C_STRUCT aiString mNodeName; @@ -280,17 +318,19 @@ struct aiNodeAnim C_ENUM aiAnimBehaviour mPostState; #ifdef __cplusplus - aiNodeAnim() - { - mNumPositionKeys = 0; mPositionKeys = NULL; - mNumRotationKeys = 0; mRotationKeys = NULL; - mNumScalingKeys = 0; mScalingKeys = NULL; - - mPreState = mPostState = aiAnimBehaviour_DEFAULT; + aiNodeAnim() + : mNumPositionKeys( 0 ) + , mPositionKeys( NULL ) + , mNumRotationKeys( 0 ) + , mRotationKeys( NULL ) + , mNumScalingKeys( 0 ) + , mScalingKeys( NULL ) + , mPreState( aiAnimBehaviour_DEFAULT ) + , mPostState( aiAnimBehaviour_DEFAULT ) { + // empty } - ~aiNodeAnim() - { + ~aiNodeAnim() { delete [] mPositionKeys; delete [] mRotationKeys; delete [] mScalingKeys; @@ -308,7 +348,7 @@ struct aiMeshAnim { /** Name of the mesh to be animated. An empty string is not allowed, * animated meshes need to be named (not necessarily uniquely, - * the name can basically serve as wildcard to select a group + * the name can basically serve as wild-card to select a group * of meshes with similar animation setup)*/ C_STRUCT aiString mName; @@ -334,10 +374,40 @@ struct aiMeshAnim }; // --------------------------------------------------------------------------- -/** An animation consists of keyframe data for a number of nodes. For - * each node affected by the animation a separate series of data is given.*/ -struct aiAnimation +/** Describes a morphing animation of a given mesh. */ +struct aiMeshMorphAnim { + /** Name of the mesh to be animated. An empty string is not allowed, + * animated meshes need to be named (not necessarily uniquely, + * the name can basically serve as wildcard to select a group + * of meshes with similar animation setup)*/ + C_STRUCT aiString mName; + + /** Size of the #mKeys array. Must be 1, at least. */ + unsigned int mNumKeys; + + /** Key frames of the animation. May not be NULL. */ + C_STRUCT aiMeshMorphKey* mKeys; + +#ifdef __cplusplus + + aiMeshMorphAnim() + : mNumKeys() + , mKeys() + {} + + ~aiMeshMorphAnim() + { + delete[] mKeys; + } + +#endif +}; + +// --------------------------------------------------------------------------- +/** An animation consists of key-frame data for a number of nodes. For + * each node affected by the animation a separate series of data is given.*/ +struct aiAnimation { /** The name of the animation. If the modeling package this data was * exported from does support only a single animation channel, this * name is usually empty (length is zero). */ @@ -366,50 +436,68 @@ struct aiAnimation * The array is mNumMeshChannels in size. */ C_STRUCT aiMeshAnim** mMeshChannels; + /** The number of mesh animation channels. Each channel affects + * a single mesh and defines morphing animation. */ + unsigned int mNumMorphMeshChannels; + + /** The morph mesh animation channels. Each channel affects a single mesh. + * The array is mNumMorphMeshChannels in size. */ + C_STRUCT aiMeshMorphAnim **mMorphMeshChannels; + #ifdef __cplusplus aiAnimation() - : mDuration(-1.) - , mTicksPerSecond() - , mNumChannels() - , mChannels() - , mNumMeshChannels() - , mMeshChannels() - { + : mDuration(-1.) + , mTicksPerSecond(0.) + , mNumChannels(0) + , mChannels(NULL) + , mNumMeshChannels(0) + , mMeshChannels(NULL) + , mNumMorphMeshChannels(0) + , mMorphMeshChannels(NULL) { + // empty } - ~aiAnimation() - { + ~aiAnimation() { // DO NOT REMOVE THIS ADDITIONAL CHECK - if (mNumChannels && mChannels) { + if ( mNumChannels && mChannels ) { for( unsigned int a = 0; a < mNumChannels; a++) { - delete mChannels[a]; + delete mChannels[ a ]; } - delete [] mChannels; + delete [] mChannels; } if (mNumMeshChannels && mMeshChannels) { for( unsigned int a = 0; a < mNumMeshChannels; a++) { delete mMeshChannels[a]; } - delete [] mMeshChannels; + delete [] mMeshChannels; + } + if (mNumMorphMeshChannels && mMorphMeshChannels) { + for( unsigned int a = 0; a < mNumMorphMeshChannels; a++) { + delete mMorphMeshChannels[a]; + } + + delete [] mMorphMeshChannels; } } #endif // __cplusplus }; #ifdef __cplusplus + } - -// some C++ utilities for inter- and extrapolation +/// @brief Some C++ utilities for inter- and extrapolation namespace Assimp { // --------------------------------------------------------------------------- -/** @brief CPP-API: Utility class to simplify interpolations of various data types. - * - * The type of interpolation is chosen automatically depending on the - * types of the arguments. */ +/** + * @brief CPP-API: Utility class to simplify interpolations of various data types. + * + * The type of interpolation is chosen automatically depending on the + * types of the arguments. + */ template struct Interpolator { @@ -445,7 +533,7 @@ struct Interpolator { }; // ! Interpolator template <> -struct Interpolator { +struct Interpolator { void operator () (aiVector3D& out,const aiVectorKey& a, const aiVectorKey& b, ai_real d) const { @@ -455,7 +543,7 @@ struct Interpolator { }; // ! Interpolator template <> -struct Interpolator { +struct Interpolator { void operator () (aiQuaternion& out, const aiQuatKey& a, const aiQuatKey& b, ai_real d) const { @@ -465,7 +553,7 @@ struct Interpolator { }; // ! Interpolator template <> -struct Interpolator { +struct Interpolator { void operator () (unsigned int& out, const aiMeshKey& a, const aiMeshKey& b, ai_real d) const { @@ -475,9 +563,9 @@ struct Interpolator { }; // ! Interpolator //! @endcond + } // ! end namespace Assimp - - #endif // __cplusplus + #endif // AI_ANIM_H_INC diff --git a/include/assimp/cexport.h b/include/assimp/cexport.h index f77d23c05..44b06fb3c 100644 --- a/include/assimp/cexport.h +++ b/include/assimp/cexport.h @@ -49,7 +49,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_EXPORT // Public ASSIMP data structures -#include #include #ifdef __cplusplus diff --git a/include/assimp/cimport.h b/include/assimp/cimport.h index 6d3fa4aea..8bb47750a 100644 --- a/include/assimp/cimport.h +++ b/include/assimp/cimport.h @@ -46,7 +46,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_ASSIMP_H_INC #define AI_ASSIMP_H_INC -#include #include #include "importerdesc.h" diff --git a/include/assimp/color4.h b/include/assimp/color4.h index 6cd6a35b3..889669e4b 100644 --- a/include/assimp/color4.h +++ b/include/assimp/color4.h @@ -45,7 +45,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_COLOR4D_H_INC #define AI_COLOR4D_H_INC -#include "./Compiler/pushpack1.h" #include "defs.h" #ifdef __cplusplus @@ -89,7 +88,7 @@ public: // Red, green, blue and alpha color values TReal r, g, b, a; -} PACK_STRUCT; // !struct aiColor4D +}; // !struct aiColor4D typedef aiColor4t aiColor4D; @@ -97,10 +96,8 @@ typedef aiColor4t aiColor4D; struct aiColor4D { ai_real r, g, b, a; -} PACK_STRUCT; +}; #endif // __cplusplus -#include "./Compiler/poppack1.h" - #endif // AI_COLOR4D_H_INC diff --git a/include/assimp/color4.inl b/include/assimp/color4.inl index 219372ef2..e171d9d44 100644 --- a/include/assimp/color4.inl +++ b/include/assimp/color4.inl @@ -76,12 +76,34 @@ AI_FORCE_INLINE const aiColor4t& aiColor4t::operator /= (TReal f) // ------------------------------------------------------------------------------------------------ template AI_FORCE_INLINE TReal aiColor4t::operator[](unsigned int i) const { - return *(&r + i); + //return *(&r + i); + switch ( i ) { + case 0: + return r; + case 1: + return g; + case 2: + return b; + default: + break; + } + return r; } // ------------------------------------------------------------------------------------------------ template AI_FORCE_INLINE TReal& aiColor4t::operator[](unsigned int i) { - return *(&r + i); +// return *(&r + i); + switch ( i ) { + case 0: + return r; + case 1: + return g; + case 2: + return b; + default: + break; + } + return r; } // ------------------------------------------------------------------------------------------------ template diff --git a/include/assimp/config.h.in b/include/assimp/config.h.in index 148a68868..9f0e70704 100644 --- a/include/assimp/config.h.in +++ b/include/assimp/config.h.in @@ -844,14 +844,6 @@ enum aiComponent #define AI_CONFIG_IMPORT_OGRE_TEXTURETYPE_FROM_FILENAME \ "IMPORT_OGRE_TEXTURETYPE_FROM_FILENAME" -/** @brief Specifies whether the IFC loader skips over IfcSpace elements. - * - * IfcSpace elements (and their geometric representations) are used to - * represent, well, free space in a building storey.
- * Property type: Bool. Default value: true. - */ -#define AI_CONFIG_IMPORT_IFC_SKIP_SPACE_REPRESENTATIONS "IMPORT_IFC_SKIP_SPACE_REPRESENTATIONS" - /** @brief Specifies whether the Android JNI asset extraction is supported. * * Turn on this option if you want to manage assets in native @@ -860,17 +852,14 @@ enum aiComponent */ #define AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT "AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT" - // --------------------------------------------------------------------------- -/** @brief Specifies whether the IFC loader skips over - * shape representations of type 'Curve2D'. +/** @brief Specifies whether the IFC loader skips over IfcSpace elements. * - * A lot of files contain both a faceted mesh representation and a outline - * with a presentation type of 'Curve2D'. Currently Assimp doesn't convert those, - * so turning this option off just clutters the log with errors.
+ * IfcSpace elements (and their geometric representations) are used to + * represent, well, free space in a building storey.
* Property type: Bool. Default value: true. */ -#define AI_CONFIG_IMPORT_IFC_SKIP_CURVE_REPRESENTATIONS "IMPORT_IFC_SKIP_CURVE_REPRESENTATIONS" +#define AI_CONFIG_IMPORT_IFC_SKIP_SPACE_REPRESENTATIONS "IMPORT_IFC_SKIP_SPACE_REPRESENTATIONS" // --------------------------------------------------------------------------- /** @brief Specifies whether the IFC loader will use its own, custom triangulation @@ -887,6 +876,38 @@ enum aiComponent */ #define AI_CONFIG_IMPORT_IFC_CUSTOM_TRIANGULATION "IMPORT_IFC_CUSTOM_TRIANGULATION" +// --------------------------------------------------------------------------- +/** @brief Set the tessellation conic angle for IFC smoothing curves. + * + * This is used by the IFC importer to determine the tessellation parameter + * for smoothing curves. + * @note The default value is AI_IMPORT_IFC_DEFAULT_SMOOTHING_ANGLE and the + * accepted values are in range [5.0, 120.0]. + * Property type: Float. + */ +#define AI_CONFIG_IMPORT_IFC_SMOOTHING_ANGLE "IMPORT_IFC_SMOOTHING_ANGLE" + +// default value for AI_CONFIG_IMPORT_IFC_SMOOTHING_ANGLE +#if (!defined AI_IMPORT_IFC_DEFAULT_SMOOTHING_ANGLE) +# define AI_IMPORT_IFC_DEFAULT_SMOOTHING_ANGLE 10.0f +#endif + +// --------------------------------------------------------------------------- +/** @brief Set the tessellation for IFC cylindrical shapes. + * + * This is used by the IFC importer to determine the tessellation parameter + * for cylindrical shapes, i.e. the number of segments used to aproximate a circle. + * @note The default value is AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION and the + * accepted values are in range [3, 180]. + * Property type: Integer. + */ +#define AI_CONFIG_IMPORT_IFC_CYLINDRICAL_TESSELLATION "IMPORT_IFC_CYLINDRICAL_TESSELLATION" + +// default value for AI_CONFIG_IMPORT_IFC_CYLINDRICAL_TESSELLATION +#if (!defined AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION) +# define AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION 32 +#endif + // --------------------------------------------------------------------------- /** @brief Specifies whether the Collada loader will ignore the provided up direction. * diff --git a/include/assimp/defs.h b/include/assimp/defs.h index f68d69cc1..cfe69984a 100644 --- a/include/assimp/defs.h +++ b/include/assimp/defs.h @@ -212,7 +212,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #if (defined(__BORLANDC__) || defined (__BCPLUSPLUS__)) #error Currently, Borland is unsupported. Feel free to port Assimp. -// "W8059 Packgr��e der Struktur ge�ndert" +// "W8059 Packgröße der Struktur geändert" #endif diff --git a/include/assimp/matrix3x3.h b/include/assimp/matrix3x3.h index f6c151aa5..c34e3c8b3 100644 --- a/include/assimp/matrix3x3.h +++ b/include/assimp/matrix3x3.h @@ -46,7 +46,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_MATRIX3X3_H_INC #define AI_MATRIX3X3_H_INC -#include "./Compiler/pushpack1.h" #include "defs.h" #ifdef __cplusplus @@ -153,8 +152,8 @@ public: /** @brief A function for creating a rotation matrix that rotates a * vector called "from" into another vector called "to". * Input : from[3], to[3] which both must be *normalized* non-zero vectors - * Output: mtx[3][3] -- a 3x3 matrix in colum-major form - * Authors: Tomas M�ller, John Hughes + * Output: mtx[3][3] -- a 3x3 matrix in column-major form + * Authors: Tomas Möller, John Hughes * "Efficiently Building a Matrix to Rotate One Vector to Another" * Journal of Graphics Tools, 4(4):1-4, 1999 */ @@ -165,7 +164,7 @@ public: TReal a1, a2, a3; TReal b1, b2, b3; TReal c1, c2, c3; -} PACK_STRUCT; +}; typedef aiMatrix3x3t aiMatrix3x3; @@ -175,10 +174,8 @@ struct aiMatrix3x3 { ai_real a1, a2, a3; ai_real b1, b2, b3; ai_real c1, c2, c3; -} PACK_STRUCT; +}; #endif // __cplusplus -#include "./Compiler/poppack1.h" - #endif // AI_MATRIX3X3_H_INC diff --git a/include/assimp/matrix3x3.inl b/include/assimp/matrix3x3.inl index 2ef0141e8..dce5aa00e 100644 --- a/include/assimp/matrix3x3.inl +++ b/include/assimp/matrix3x3.inl @@ -101,16 +101,34 @@ inline aiMatrix3x3t aiMatrix3x3t::operator* (const aiMatrix3x3t -inline TReal* aiMatrix3x3t::operator[] (unsigned int p_iIndex) -{ - return &this->a1 + p_iIndex * 3; +inline TReal* aiMatrix3x3t::operator[] (unsigned int p_iIndex) { + switch ( p_iIndex ) { + case 0: + return &a1; + case 1: + return &b1; + case 2: + return &c1; + default: + break; + } + return &a1; } // ------------------------------------------------------------------------------------------------ template -inline const TReal* aiMatrix3x3t::operator[] (unsigned int p_iIndex) const -{ - return &this->a1 + p_iIndex * 3; +inline const TReal* aiMatrix3x3t::operator[] (unsigned int p_iIndex) const { + switch ( p_iIndex ) { + case 0: + return &a1; + case 1: + return &b1; + case 2: + return &c1; + default: + break; + } + return &a1; } // ------------------------------------------------------------------------------------------------ @@ -242,7 +260,7 @@ inline aiMatrix3x3t& aiMatrix3x3t::Translation( const aiVector2t operator aiMatrix4x4t () const; @@ -257,7 +258,7 @@ public: TReal b1, b2, b3, b4; TReal c1, c2, c3, c4; TReal d1, d2, d3, d4; -} PACK_STRUCT; +}; typedef aiMatrix4x4t aiMatrix4x4; @@ -268,11 +269,9 @@ struct aiMatrix4x4 { ai_real b1, b2, b3, b4; ai_real c1, c2, c3, c4; ai_real d1, d2, d3, d4; -} PACK_STRUCT; +}; #endif // __cplusplus -#include "./Compiler/poppack1.h" - #endif // AI_MATRIX4X4_H_INC diff --git a/include/assimp/matrix4x4.inl b/include/assimp/matrix4x4.inl index a7977cd2c..c36c893ce 100644 --- a/include/assimp/matrix4x4.inl +++ b/include/assimp/matrix4x4.inl @@ -155,6 +155,54 @@ inline aiMatrix4x4t& aiMatrix4x4t::operator *= (const aiMatrix4x4t return *this; } +// ---------------------------------------------------------------------------------------- +template +inline aiMatrix4x4t aiMatrix4x4t::operator* (const TReal& aFloat) const +{ + aiMatrix4x4t temp( + a1 * aFloat, + a2 * aFloat, + a3 * aFloat, + a4 * aFloat, + b1 * aFloat, + b2 * aFloat, + b3 * aFloat, + b4 * aFloat, + c1 * aFloat, + c2 * aFloat, + c3 * aFloat, + c4 * aFloat, + d1 * aFloat, + d2 * aFloat, + d3 * aFloat, + d4 * aFloat); + return temp; +} + +// ---------------------------------------------------------------------------------------- +template +inline aiMatrix4x4t aiMatrix4x4t::operator+ (const aiMatrix4x4t& m) const +{ + aiMatrix4x4t temp( + m.a1 + a1, + m.a2 + a2, + m.a3 + a3, + m.a4 + a4, + m.b1 + b1, + m.b2 + b2, + m.b3 + b3, + m.b4 + b4, + m.c1 + c1, + m.c2 + c2, + m.c3 + c3, + m.c4 + c4, + m.d1 + d1, + m.d2 + d2, + m.d3 + d3, + m.d4 + d4); + return temp; +} + // ---------------------------------------------------------------------------------------- template inline aiMatrix4x4t aiMatrix4x4t::operator* (const aiMatrix4x4t& m) const @@ -243,9 +291,19 @@ inline TReal* aiMatrix4x4t::operator[](unsigned int p_iIndex) { if (p_iIndex > 3) { return NULL; } - - // XXX this is UB. Has been for years. The fact that it works now does not make it better. - return &this->a1 + p_iIndex * 4; + switch ( p_iIndex ) { + case 0: + return &a1; + case 1: + return &b1; + case 2: + return &c1; + case 3: + return &d1; + default: + break; + } + return &a1; } // ---------------------------------------------------------------------------------------- @@ -255,8 +313,19 @@ inline const TReal* aiMatrix4x4t::operator[](unsigned int p_iIndex) const return NULL; } - // XXX same - return &this->a1 + p_iIndex * 4; + switch ( p_iIndex ) { + case 0: + return &a1; + case 1: + return &b1; + case 2: + return &c1; + case 3: + return &d1; + default: + break; + } + return &a1; } // ---------------------------------------------------------------------------------------- @@ -592,7 +661,7 @@ inline aiMatrix4x4t& aiMatrix4x4t::Scaling( const aiVector3t + inline void Add(const std::string& key, const T& value) + { + aiString* new_keys = new aiString[mNumProperties + 1]; + aiMetadataEntry* new_values = new aiMetadataEntry[mNumProperties + 1]; + + for(unsigned int i = 0; i < mNumProperties; ++i) + { + new_keys[i] = mKeys[i]; + new_values[i] = mValues[i]; + } + + delete mKeys; + delete mValues; + + mKeys = new_keys; + mValues = new_values; + + mNumProperties++; + + Set(mNumProperties - 1, key, value); + } + template inline bool Set( unsigned index, const std::string& key, const T& value ) { diff --git a/include/assimp/port/AndroidJNI/AndroidJNIIOSystem.h b/include/assimp/port/AndroidJNI/AndroidJNIIOSystem.h index 6f806f922..41d800487 100644 --- a/include/assimp/port/AndroidJNI/AndroidJNIIOSystem.h +++ b/include/assimp/port/AndroidJNI/AndroidJNIIOSystem.h @@ -45,7 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_ANDROIDJNIIOSYSTEM_H_INC #define AI_ANDROIDJNIIOSYSTEM_H_INC -#include "../code/DefaultIOSystem.h" +#include #include #include #include diff --git a/include/assimp/scene.h b/include/assimp/scene.h index d9799db99..b52db9883 100644 --- a/include/assimp/scene.h +++ b/include/assimp/scene.h @@ -69,7 +69,7 @@ extern "C" { * the imported scene does consist of only a single root node without children. */ // ------------------------------------------------------------------------------- -struct aiNode +struct ASSIMP_API aiNode { /** The name of the node. * @@ -124,47 +124,13 @@ struct aiNode #ifdef __cplusplus /** Constructor */ - aiNode() - // set all members to zero by default - : mName("") - , mParent(NULL) - , mNumChildren(0) - , mChildren(NULL) - , mNumMeshes(0) - , mMeshes(NULL) - , mMetaData(NULL) - { - } - + aiNode(); /** Construction from a specific name */ - explicit aiNode(const std::string& name) - // set all members to zero by default - : mName(name) - , mParent(NULL) - , mNumChildren(0) - , mChildren(NULL) - , mNumMeshes(0) - , mMeshes(NULL) - , mMetaData(NULL) - { - } + explicit aiNode(const std::string& name); /** Destructor */ - ~aiNode() - { - // delete all children recursively - // to make sure we won't crash if the data is invalid ... - if (mChildren && mNumChildren) - { - for( unsigned int a = 0; a < mNumChildren; a++) - delete mChildren[a]; - } - delete [] mChildren; - delete [] mMeshes; - delete mMetaData; - } - + ~aiNode(); /** Searches for a node with a specific name, beginning at this * nodes. Normally you will call this method on the root node @@ -173,46 +139,26 @@ struct aiNode * @param name Name to search for * @return NULL or a valid Node if the search was successful. */ - inline const aiNode* FindNode(const aiString& name) const - { + inline + const aiNode* FindNode(const aiString& name) const { return FindNode(name.data); } - - inline aiNode* FindNode(const aiString& name) - { + inline + aiNode* FindNode(const aiString& name) { return FindNode(name.data); } + const aiNode* FindNode(const char* name) const; - inline const aiNode* FindNode(const char* name) const - { - if (!::strcmp( mName.data,name))return this; - for (unsigned int i = 0; i < mNumChildren;++i) - { - const aiNode* const p = mChildren[i]->FindNode(name); - if (p) { - return p; - } - } - // there is definitely no sub-node with this name - return NULL; - } - - inline aiNode* FindNode(const char* name) - { - if (!::strcmp( mName.data,name))return this; - for (unsigned int i = 0; i < mNumChildren;++i) - { - aiNode* const p = mChildren[i]->FindNode(name); - if (p) { - return p; - } - } - // there is definitely no sub-node with this name - return NULL; - } + aiNode* FindNode(const char* name); + /** + * @brief Will add new children. + * @param numChildren Number of children to add. + * @param children The array with pointers showing to the children. + */ + void addChildren(unsigned int numChildren, aiNode **children); #endif // __cplusplus }; diff --git a/include/assimp/types.h b/include/assimp/types.h index 4a2e133e4..8f303f3af 100644 --- a/include/assimp/types.h +++ b/include/assimp/types.h @@ -109,13 +109,12 @@ extern "C" { /** Maximum dimension for strings, ASSIMP strings are zero terminated. */ #ifdef __cplusplus -static const size_t MAXLEN = 1024; +static +const size_t MAXLEN = 1024; #else # define MAXLEN 1024 #endif -#include "./Compiler/pushpack1.h" - // ---------------------------------------------------------------------------------- /** Represents a plane in a three-dimensional, euclidean space */ @@ -132,7 +131,7 @@ struct aiPlane //! Plane equation ai_real a,b,c,d; -} PACK_STRUCT; // !struct aiPlane +}; // !struct aiPlane // ---------------------------------------------------------------------------------- /** Represents a ray @@ -150,7 +149,7 @@ struct aiRay //! Position and direction of the ray C_STRUCT aiVector3D pos, dir; -} PACK_STRUCT; // !struct aiRay +}; // !struct aiRay // ---------------------------------------------------------------------------------- /** Represents a color in Red-Green-Blue space. @@ -226,8 +225,7 @@ struct aiColor3D //! Red, green and blue color values ai_real r, g, b; -} /*PACK_STRUCT*/; // !struct aiColor3D -#include "./Compiler/poppack1.h" +}; // !struct aiColor3D // ---------------------------------------------------------------------------------- /** Represents an UTF-8 string, zero byte terminated. diff --git a/include/assimp/vector3.h b/include/assimp/vector3.h index 891beb28c..1c2c187ce 100644 --- a/include/assimp/vector3.h +++ b/include/assimp/vector3.h @@ -51,7 +51,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # include #endif -#include "./Compiler/pushpack1.h" #include "defs.h" #ifdef __cplusplus @@ -126,7 +125,7 @@ public: const aiVector3t SymMul(const aiVector3t& o); TReal x, y, z; -} PACK_STRUCT; +}; typedef aiVector3t aiVector3D; @@ -135,16 +134,12 @@ typedef aiVector3t aiVector3D; struct aiVector3D { ai_real x, y, z; -} PACK_STRUCT; +}; #endif // __cplusplus -#include "./Compiler/poppack1.h" - #ifdef __cplusplus - - #endif // __cplusplus #endif // AI_VECTOR3D_H_INC diff --git a/include/assimp/vector3.inl b/include/assimp/vector3.inl index 22b5bca03..b5d743641 100644 --- a/include/assimp/vector3.inl +++ b/include/assimp/vector3.inl @@ -141,12 +141,34 @@ AI_FORCE_INLINE aiVector3t& aiVector3t::operator *= (const aiMatri // ------------------------------------------------------------------------------------------------ template AI_FORCE_INLINE TReal aiVector3t::operator[](unsigned int i) const { - return *(&x + i); +// return *(&x + i); + switch (i) { + case 0: + return x; + case 1: + return y; + case 2: + return z; + default: + break; + } + return x; } // ------------------------------------------------------------------------------------------------ template AI_FORCE_INLINE TReal& aiVector3t::operator[](unsigned int i) { - return *(&x + i); +// return *(&x + i); + switch (i) { + case 0: + return x; + case 1: + return y; + case 2: + return z; + default: + break; + } + return x; } // ------------------------------------------------------------------------------------------------ template diff --git a/port/AndroidJNI/AndroidJNIIOSystem.cpp b/port/AndroidJNI/AndroidJNIIOSystem.cpp index 43bb9213d..e276ea59f 100644 --- a/port/AndroidJNI/AndroidJNIIOSystem.cpp +++ b/port/AndroidJNI/AndroidJNIIOSystem.cpp @@ -46,14 +46,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #if __ANDROID__ and __ANDROID_API__ > 9 and defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) +#include #include +#include #include #include #include #include #include #include -#include +#include #include using namespace Assimp; @@ -100,6 +102,27 @@ void AndroidJNIIOSystem::AndroidActivityInit(ANativeActivity* activity) mApkAssetManager = activity->assetManager; } +// ------------------------------------------------------------------------------------------------ +// Create the directory for the extracted resource +static int mkpath(std::string path, mode_t mode) +{ + if (mkdir(path.c_str(), mode) == -1) { + switch(errno) { + case ENOENT: + if (mkpath(path.substr(0, path.find_last_of('/')), mode) == -1) + return -1; + else + return mkdir(path.c_str(), mode); + case EEXIST: + return 0; + default: + return -1; + } + } + + return 0; +} + // ------------------------------------------------------------------------------------------------ // Extracts android asset bool AndroidJNIIOSystem::AndroidExtractAsset(std::string name) @@ -131,6 +154,15 @@ bool AndroidJNIIOSystem::AndroidExtractAsset(std::string name) // Close AAsset_close(asset); + // Prepare directory for output buffer + std::string directoryNewPath = newPath; + directoryNewPath = dirname(&directoryNewPath[0]); + + if (mkpath(directoryNewPath, S_IRUSR | S_IWUSR | S_IXUSR) == -1) { + __android_log_print(ANDROID_LOG_ERROR, "assimp", + "Can not create the directory for the output file"); + } + // Prepare output buffer std::ofstream assetExtracted(newPath.c_str(), std::ios::out | std::ios::binary); diff --git a/port/PyAssimp/3d_viewer_screenshot.png b/port/PyAssimp/3d_viewer_screenshot.png new file mode 100644 index 000000000..2031faf5a Binary files /dev/null and b/port/PyAssimp/3d_viewer_screenshot.png differ diff --git a/port/PyAssimp/README.md b/port/PyAssimp/README.md index 201d3ed7d..0000f9386 100644 --- a/port/PyAssimp/README.md +++ b/port/PyAssimp/README.md @@ -11,14 +11,32 @@ Note that pyassimp is not complete. Many ASSIMP features are missing. USAGE ----- -To get started with pyAssimp, examine the `sample.py` script in `scripts/`, -which illustrates the basic usage. All Assimp data structures are wrapped using -ctypes. All the data+length fields in Assimp's data structures (such as -`aiMesh::mNumVertices`, `aiMesh::mVertices`) are replaced by simple python -lists, so you can call len() on them to get their respective size and access -members using []. +### Complete example: 3D viewer -For example, to load a file named 'hello.3ds' and print the first +`pyassimp` comes with a simple 3D viewer that shows how to load and display a 3D +model using a shader-based OpenGL pipeline. + +![Screenshot](3d_viewer_screenshot.png) + +To use it, from within `/port/PyAssimp`: + +``` +$ cd scripts +$ python ./3D-viewer +``` + +You can use this code as starting point in your applications. + +### Writing your own code + +To get started with `pyassimp`, examine the simpler `sample.py` script in `scripts/`, +which illustrates the basic usage. All Assimp data structures are wrapped using +`ctypes`. All the data+length fields in Assimp's data structures (such as +`aiMesh::mNumVertices`, `aiMesh::mVertices`) are replaced by simple python +lists, so you can call `len()` on them to get their respective size and access +members using `[]`. + +For example, to load a file named `hello.3ds` and print the first vertex of the first mesh, you would do (proper error handling substituted by assertions ...): @@ -58,16 +76,19 @@ INSTALL Install `pyassimp` by running: -> python setup.py install +``` +$ python setup.py install +``` PyAssimp requires a assimp dynamic library (`DLL` on windows, -`.so` on linux :-) in order to work. The default search directories +`.so` on linux, `.dynlib` on macOS) in order to work. The default search directories are: - the current directory -- on linux additionally: `/usr/lib` and `/usr/local/lib` +- on linux additionally: `/usr/lib`, `/usr/local/lib`, + `/usr/lib/x86_64-linux-gnu` -To build that library, refer to the Assimp master INSTALL +To build that library, refer to the Assimp master `INSTALL` instructions. To look in more places, edit `./pyassimp/helper.py`. There's an `additional_dirs` list waiting for your entries. diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index 27ec44c97..ac3df9290 100644 --- a/port/PyAssimp/pyassimp/core.py +++ b/port/PyAssimp/pyassimp/core.py @@ -70,7 +70,7 @@ def make_tuple(ai_obj, type = None): def _init_face(aiFace): aiFace.indices = [aiFace.mIndices[i] for i in range(aiFace.mNumIndices)] assimp_struct_inits = { structs.Face : _init_face } - + def call_init(obj, caller = None): if helper.hasattr_silent(obj,'contents'): #pointer _init(obj.contents, obj, caller) @@ -85,12 +85,12 @@ def _is_init_type(obj): # so it breaks the 'is iterable' check. # Basically: # FIXME! - elif not bool(obj): + elif not bool(obj): return False tname = obj.__class__.__name__ return not (tname[:2] == 'c_' or tname == 'Structure' \ or tname == 'POINTER') and not isinstance(obj,int) - + def _init(self, target = None, parent = None): """ Custom initialize() for C structs, adds safely accessible member functionality. @@ -100,8 +100,8 @@ def _init(self, target = None, parent = None): """ if not target: target = self - - dirself = dir(self) + + dirself = dir(self) for m in dirself: if m.startswith("_"): @@ -119,11 +119,12 @@ def _init(self, target = None, parent = None): if m == 'mName': obj = self.mName - target.name = str(obj.data.decode("utf-8")) + uni = unicode(obj.data, errors='ignore') + target.name = str( uni ) target.__class__.__repr__ = lambda x: str(x.__class__) + "(" + x.name + ")" target.__class__.__str__ = lambda x: x.name continue - + name = m[1:].lower() obj = getattr(self, m) @@ -144,7 +145,7 @@ def _init(self, target = None, parent = None): if helper.hasattr_silent(self, 'mNum' + m[1:]): length = getattr(self, 'mNum' + m[1:]) - + # -> special case: properties are # stored as a dict. if m == 'mProperties': @@ -156,7 +157,7 @@ def _init(self, target = None, parent = None): setattr(target, name, []) logger.debug(str(self) + ": " + name + " is an empty list.") continue - + try: if obj._type_ in structs.assimp_structs_as_tuple: @@ -166,7 +167,7 @@ def _init(self, target = None, parent = None): logger.debug(str(self) + ": Added an array of numpy arrays (type "+ str(type(obj)) + ") as self." + name) else: setattr(target, name, [make_tuple(obj[i]) for i in range(length)]) - + logger.debug(str(self) + ": Added a list of lists (type "+ str(type(obj)) + ") as self." + name) else: @@ -191,7 +192,7 @@ def _init(self, target = None, parent = None): sys.exit(1) except ValueError as e: - + logger.error("In " + str(self) + "->" + name + ": " + str(e) + ". Quitting now.") if "setting an array element with a sequence" in str(e): logger.error("Note that pyassimp does not currently " @@ -200,13 +201,13 @@ def _init(self, target = None, parent = None): " a post-processing to triangulate your" " faces.") raise e - + else: # starts with 'm' but not iterable setattr(target, name, obj) logger.debug("Added " + name + " as self." + name + " (type: " + str(type(obj)) + ")") - + if _is_init_type(obj): call_init(obj, target) @@ -265,34 +266,34 @@ def recur_pythonize(node, scene): for c in node.children: recur_pythonize(c, scene) -def load(filename, +def load(filename, file_type = None, processing = postprocess.aiProcess_Triangulate): ''' Load a model into a scene. On failure throws AssimpError. - + Arguments --------- filename: Either a filename or a file object to load model from. If a file object is passed, file_type MUST be specified Otherwise Assimp has no idea which importer to use. - This is named 'filename' so as to not break legacy code. + This is named 'filename' so as to not break legacy code. processing: assimp postprocessing parameters. Verbose keywords are imported from postprocessing, and the parameters can be combined bitwise to generate the final processing value. Note that the default value will triangulate quad faces. Example of generating other possible values: - processing = (pyassimp.postprocess.aiProcess_Triangulate | + processing = (pyassimp.postprocess.aiProcess_Triangulate | pyassimp.postprocess.aiProcess_OptimizeMeshes) file_type: string of file extension, such as 'stl' - + Returns --------- Scene object with model data ''' - + if hasattr(filename, 'read'): ''' - This is the case where a file object has been passed to load. + This is the case where a file object has been passed to load. It is calling the following function: const aiScene* aiImportFileFromMemory(const char* pBuffer, unsigned int pLength, @@ -302,14 +303,14 @@ def load(filename, if file_type == None: raise AssimpError('File type must be specified when passing file objects!') data = filename.read() - model = _assimp_lib.load_mem(data, - len(data), - processing, + model = _assimp_lib.load_mem(data, + len(data), + processing, file_type) else: # a filename string has been passed model = _assimp_lib.load(filename.encode("ascii"), processing) - + if not model: raise AssimpError('Could not import file!') scene = _init(model.contents) @@ -317,22 +318,22 @@ def load(filename, return scene def export(scene, - filename, + filename, file_type = None, processing = postprocess.aiProcess_Triangulate): ''' Export a scene. On failure throws AssimpError. - + Arguments --------- scene: scene to export. - filename: Filename that the scene should be exported to. + filename: Filename that the scene should be exported to. file_type: string of file exporter to use. For example "collada". processing: assimp postprocessing parameters. Verbose keywords are imported from postprocessing, and the parameters can be combined bitwise to generate the final processing value. Note that the default value will triangulate quad faces. Example of generating other possible values: - processing = (pyassimp.postprocess.aiProcess_Triangulate | + processing = (pyassimp.postprocess.aiProcess_Triangulate | pyassimp.postprocess.aiProcess_OptimizeMeshes) ''' @@ -400,7 +401,7 @@ def _finalize_mesh(mesh, target): fillarray("mColors") fillarray("mTextureCoords") - + # prepare faces if numpy: faces = numpy.array([f.indices for f in target.faces], dtype=numpy.int32) @@ -429,7 +430,7 @@ class PropertyGetter(dict): yield k[0], v -def _get_properties(properties, length): +def _get_properties(properties, length): """ Convenience Function to get the material properties as a dict and values in a python format. @@ -439,7 +440,8 @@ def _get_properties(properties, length): for p in [properties[i] for i in range(length)]: #the name p = p.contents - key = (str(p.mKey.data.decode("utf-8")).split('.')[1], p.mSemantic) + uni = unicode(p.mKey.data, errors='ignore') + key = (str(uni).split('.')[1], p.mSemantic) #the data from ctypes import POINTER, cast, c_int, c_float, sizeof @@ -447,7 +449,9 @@ def _get_properties(properties, length): arr = cast(p.mData, POINTER(c_float * int(p.mDataLength/sizeof(c_float)) )).contents value = [x for x in arr] elif p.mType == 3: #string can't be an array - value = cast(p.mData, POINTER(structs.MaterialPropertyString)).contents.data.decode("utf-8") + uni = unicode(cast(p.mData, POINTER(structs.MaterialPropertyString)).contents.data, errors='ignore') + value = uni + elif p.mType == 4: arr = cast(p.mData, POINTER(c_int * int(p.mDataLength/sizeof(c_int)) )).contents value = [x for x in arr] @@ -464,11 +468,11 @@ def _get_properties(properties, length): def decompose_matrix(matrix): if not isinstance(matrix, structs.Matrix4x4): raise AssimpError("pyassimp.decompose_matrix failed: Not a Matrix4x4!") - + scaling = structs.Vector3D() rotation = structs.Quaternion() position = structs.Vector3D() - + from ctypes import byref, pointer _assimp_lib.dll.aiDecomposeMatrix(pointer(matrix), byref(scaling), byref(rotation), byref(position)) return scaling._init(), rotation._init(), position._init() diff --git a/port/PyAssimp/pyassimp/helper.py b/port/PyAssimp/pyassimp/helper.py index 2e1ae50b9..b281e94cf 100644 --- a/port/PyAssimp/pyassimp/helper.py +++ b/port/PyAssimp/pyassimp/helper.py @@ -23,6 +23,7 @@ additional_dirs, ext_whitelist = [],[] if os.name=='posix': additional_dirs.append('./') additional_dirs.append('/usr/lib/') + additional_dirs.append('/usr/lib/x86_64-linux-gnu') additional_dirs.append('/usr/local/lib/') # note - this won't catch libassimp.so.N.n, but diff --git a/port/PyAssimp/scripts/3d_viewer.py b/port/PyAssimp/scripts/3d_viewer.py index b6c131817..b60f0e219 100755 --- a/port/PyAssimp/scripts/3d_viewer.py +++ b/port/PyAssimp/scripts/3d_viewer.py @@ -1,168 +1,395 @@ #!/usr/bin/env python -#-*- coding: UTF-8 -*- +# -*- coding: UTF-8 -*- """ This program loads a model with PyASSIMP, and display it. -It make a large use of shaders to illustrate a 'modern' OpenGL pipeline. - Based on: - - pygame + mouselook code from http://3dengine.org/Spectator_%28PyOpenGL%29 - - http://www.lighthouse3d.com/tutorials - - http://www.songho.ca/opengl/gl_transform.html - - http://code.activestate.com/recipes/325391/ - - ASSIMP's C++ SimpleOpenGL viewer +- pygame code from http://3dengine.org/Spectator_%28PyOpenGL%29 +- http://www.lighthouse3d.com/tutorials +- http://www.songho.ca/opengl/gl_transform.html +- http://code.activestate.com/recipes/325391/ +- ASSIMP's C++ SimpleOpenGL viewer -Authors: Séverin Lemaignan, 2012-2013 +Authors: Séverin Lemaignan, 2012-2016 """ import sys - import logging + logger = logging.getLogger("pyassimp") gllogger = logging.getLogger("OpenGL") gllogger.setLevel(logging.WARNING) logging.basicConfig(level=logging.INFO) import OpenGL -OpenGL.ERROR_CHECKING=False + +OpenGL.ERROR_CHECKING = False OpenGL.ERROR_LOGGING = False -#OpenGL.ERROR_ON_COPY = True -#OpenGL.FULL_LOGGING = True +# OpenGL.ERROR_ON_COPY = True +# OpenGL.FULL_LOGGING = True from OpenGL.GL import * -from OpenGL.error import GLError -from OpenGL.GLU import * -from OpenGL.GLUT import * from OpenGL.arrays import vbo from OpenGL.GL import shaders import pygame +import pygame.font +import pygame.image import math, random -import numpy from numpy import linalg import pyassimp from pyassimp.postprocess import * from pyassimp.helper import * +import transformations + +ROTATION_180_X = numpy.array([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]], dtype=numpy.float32) + +# rendering mode +BASE = "BASE" +COLORS = "COLORS" +SILHOUETTE = "SILHOUETTE" +HELPERS = "HELPERS" + +# Entities type +ENTITY = "entity" +CAMERA = "camera" +MESH = "mesh" + +FLAT_VERTEX_SHADER = """ +#version 130 + +uniform mat4 u_viewProjectionMatrix; +uniform mat4 u_modelMatrix; + +uniform vec4 u_materialDiffuse; + +in vec3 a_vertex; + +out vec4 v_color; + +void main(void) +{ + v_color = u_materialDiffuse; + gl_Position = u_viewProjectionMatrix * u_modelMatrix * vec4(a_vertex, 1.0); +} +""" + +BASIC_VERTEX_SHADER = """ +#version 130 + +uniform mat4 u_viewProjectionMatrix; +uniform mat4 u_modelMatrix; +uniform mat3 u_normalMatrix; +uniform vec3 u_lightPos; + +uniform vec4 u_materialDiffuse; + +in vec3 a_vertex; +in vec3 a_normal; + +out vec4 v_color; + +void main(void) +{ + // Now the normal is in world space, as we pass the light in world space. + vec3 normal = u_normalMatrix * a_normal; + + float dist = distance(a_vertex, u_lightPos); + + // go to https://www.desmos.com/calculator/nmnaud1hrw to play with the parameters + // att is not used for now + float att=1.0/(1.0+0.8*dist*dist); + + vec3 surf2light = normalize(u_lightPos - a_vertex); + vec3 norm = normalize(normal); + float dcont=max(0.0,dot(norm,surf2light)); + + float ambient = 0.3; + float intensity = dcont + 0.3 + ambient; + + v_color = u_materialDiffuse * intensity; + + gl_Position = u_viewProjectionMatrix * u_modelMatrix * vec4(a_vertex, 1.0); +} +""" + +BASIC_FRAGMENT_SHADER = """ +#version 130 + +in vec4 v_color; + +void main() { + gl_FragColor = v_color; +} +""" + +GOOCH_VERTEX_SHADER = """ +#version 130 + +// attributes +in vec3 a_vertex; // xyz - position +in vec3 a_normal; // xyz - normal + +// uniforms +uniform mat4 u_modelMatrix; +uniform mat4 u_viewProjectionMatrix; +uniform mat3 u_normalMatrix; +uniform vec3 u_lightPos; +uniform vec3 u_camPos; + +// output data from vertex to fragment shader +out vec3 o_normal; +out vec3 o_lightVector; + +/////////////////////////////////////////////////////////////////// + +void main(void) +{ + // transform position and normal to world space + vec4 positionWorld = u_modelMatrix * vec4(a_vertex, 1.0); + vec3 normalWorld = u_normalMatrix * a_normal; + + // calculate and pass vectors required for lighting + o_lightVector = u_lightPos - positionWorld.xyz; + o_normal = normalWorld; + + // project world space position to the screen and output it + gl_Position = u_viewProjectionMatrix * positionWorld; +} +""" + +GOOCH_FRAGMENT_SHADER = """ +#version 130 + +// data from vertex shader +in vec3 o_normal; +in vec3 o_lightVector; + +// diffuse color of the object +uniform vec4 u_materialDiffuse; +// cool color of gooch shading +uniform vec3 u_coolColor; +// warm color of gooch shading +uniform vec3 u_warmColor; +// how much to take from object color in final cool color +uniform float u_alpha; +// how much to take from object color in final warm color +uniform float u_beta; + +// output to framebuffer +out vec4 resultingColor; + +/////////////////////////////////////////////////////////// + +void main(void) +{ + // normlize vectors for lighting + vec3 normalVector = normalize(o_normal); + vec3 lightVector = normalize(o_lightVector); + // intensity of diffuse lighting [-1, 1] + float diffuseLighting = dot(lightVector, normalVector); + // map intensity of lighting from range [-1; 1] to [0, 1] + float interpolationValue = (1.0 + diffuseLighting)/2; + + ////////////////////////////////////////////////////////////////// + + // cool color mixed with color of the object + vec3 coolColorMod = u_coolColor + vec3(u_materialDiffuse) * u_alpha; + // warm color mixed with color of the object + vec3 warmColorMod = u_warmColor + vec3(u_materialDiffuse) * u_beta; + // interpolation of cool and warm colors according + // to lighting intensity. The lower the light intensity, + // the larger part of the cool color is used + vec3 colorOut = mix(coolColorMod, warmColorMod, interpolationValue); + + ////////////////////////////////////////////////////////////////// + + // save color + resultingColor.rgb = colorOut; + resultingColor.a = 1; +} +""" + +SILHOUETTE_VERTEX_SHADER = """ +#version 130 + +in vec3 a_vertex; // xyz - position +in vec3 a_normal; // xyz - normal + +uniform mat4 u_modelMatrix; +uniform mat4 u_viewProjectionMatrix; +uniform mat4 u_modelViewMatrix; +uniform vec4 u_materialDiffuse; +uniform float u_bordersize; // width of the border + +out vec4 v_color; + +void main(void){ + v_color = u_materialDiffuse; + float distToCamera = -(u_modelViewMatrix * vec4(a_vertex, 1.0)).z; + vec4 tPos = vec4(a_vertex + a_normal * u_bordersize * distToCamera, 1.0); + gl_Position = u_viewProjectionMatrix * u_modelMatrix * tPos; +} +""" +DEFAULT_CLIP_PLANE_NEAR = 0.001 +DEFAULT_CLIP_PLANE_FAR = 1000.0 + + +def get_world_transform(scene, node): + if node == scene.rootnode: + return numpy.identity(4, dtype=numpy.float32) + + parents = reversed(_get_parent_chain(scene, node, [])) + parent_transform = reduce(numpy.dot, [p.transformation for p in parents]) + return numpy.dot(parent_transform, node.transformation) + + +def _get_parent_chain(scene, node, parents): + parent = node.parent + + parents.append(parent) + + if parent == scene.rootnode: + return parents + + return _get_parent_chain(scene, parent, parents) + class DefaultCamera: def __init__(self, w, h, fov): - self.clipplanenear = 0.001 - self.clipplanefar = 100000.0 - self.aspect = w/h - self.horizontalfov = fov * math.pi/180 - self.transformation = [[ 0.68, -0.32, 0.65, 7.48], - [ 0.73, 0.31, -0.61, -6.51], - [-0.01, 0.89, 0.44, 5.34], - [ 0., 0., 0., 1. ]] - self.lookat = [0.0,0.0,-1.0] + self.name = "default camera" + self.type = CAMERA + self.clipplanenear = DEFAULT_CLIP_PLANE_NEAR + self.clipplanefar = DEFAULT_CLIP_PLANE_FAR + self.aspect = w / h + self.horizontalfov = fov * math.pi / 180 + self.transformation = numpy.array([[0.68, -0.32, 0.65, 7.48], + [0.73, 0.31, -0.61, -6.51], + [-0.01, 0.89, 0.44, 5.34], + [0., 0., 0., 1.]], dtype=numpy.float32) + + self.transformation = numpy.dot(self.transformation, ROTATION_180_X) def __str__(self): - return "Default camera" + return self.name + class PyAssimp3DViewer: - base_name = "PyASSIMP 3D viewer" - def __init__(self, model, w=1024, h=768, fov=75): + def __init__(self, model, w=1024, h=768): + + self.w = w + self.h = h pygame.init() pygame.display.set_caption(self.base_name) - pygame.display.set_mode((w,h), pygame.OPENGL | pygame.DOUBLEBUF) - glutInit() + pygame.display.set_mode((w, h), pygame.OPENGL | pygame.DOUBLEBUF) + + glClearColor(0.18, 0.18, 0.18, 1.0) + self.prepare_shaders() - self.cameras = [DefaultCamera(w,h,fov)] + self.scene = None + self.meshes = {} # stores the OpenGL vertex/faces/normals buffers pointers + + self.node2colorid = {} # stores a color ID for each node. Useful for mouse picking and visibility checking + self.colorid2node = {} # reverse dict of node2colorid + + self.currently_selected = None + self.moving = False + self.moving_situation = None + + self.default_camera = DefaultCamera(self.w, self.h, fov=70) + self.cameras = [self.default_camera] + self.current_cam_index = 0 + self.current_cam = self.default_camera + self.set_camera_projection() self.load_model(model) - # for FPS computation - self.frames = 0 - self.last_fps_time = glutGet(GLUT_ELAPSED_TIME) - - - self.cycle_cameras() + # user interactions + self.focal_point = [0, 0, 0] + self.is_rotating = False + self.is_panning = False + self.is_zooming = False def prepare_shaders(self): - phong_weightCalc = """ - float phong_weightCalc( - in vec3 light_pos, // light position - in vec3 frag_normal // geometry normal - ) { - // returns vec2( ambientMult, diffuseMult ) - float n_dot_pos = max( 0.0, dot( - frag_normal, light_pos - )); - return n_dot_pos; - } - """ + ### Base shader + vertex = shaders.compileShader(BASIC_VERTEX_SHADER, GL_VERTEX_SHADER) + fragment = shaders.compileShader(BASIC_FRAGMENT_SHADER, GL_FRAGMENT_SHADER) - vertex = shaders.compileShader( phong_weightCalc + - """ - uniform vec4 Global_ambient; - uniform vec4 Light_ambient; - uniform vec4 Light_diffuse; - uniform vec3 Light_location; - uniform vec4 Material_ambient; - uniform vec4 Material_diffuse; - attribute vec3 Vertex_position; - attribute vec3 Vertex_normal; - varying vec4 baseColor; - void main() { - gl_Position = gl_ModelViewProjectionMatrix * vec4( - Vertex_position, 1.0 - ); - vec3 EC_Light_location = gl_NormalMatrix * Light_location; - float diffuse_weight = phong_weightCalc( - normalize(EC_Light_location), - normalize(gl_NormalMatrix * Vertex_normal) - ); - baseColor = clamp( - ( - // global component - (Global_ambient * Material_ambient) - // material's interaction with light's contribution - // to the ambient lighting... - + (Light_ambient * Material_ambient) - // material's interaction with the direct light from - // the light. - + (Light_diffuse * Material_diffuse * diffuse_weight) - ), 0.0, 1.0); - }""", GL_VERTEX_SHADER) + self.shader = shaders.compileProgram(vertex, fragment) - fragment = shaders.compileShader(""" - varying vec4 baseColor; - void main() { - gl_FragColor = baseColor; - } - """, GL_FRAGMENT_SHADER) + self.set_shader_accessors(('u_modelMatrix', + 'u_viewProjectionMatrix', + 'u_normalMatrix', + 'u_lightPos', + 'u_materialDiffuse'), + ('a_vertex', + 'a_normal'), self.shader) - self.shader = shaders.compileProgram(vertex,fragment) - self.set_shader_accessors( ( - 'Global_ambient', - 'Light_ambient','Light_diffuse','Light_location', - 'Material_ambient','Material_diffuse', - ), ( - 'Vertex_position','Vertex_normal', - ), self.shader) + ### Flat shader + flatvertex = shaders.compileShader(FLAT_VERTEX_SHADER, GL_VERTEX_SHADER) + self.flatshader = shaders.compileProgram(flatvertex, fragment) - def set_shader_accessors(self, uniforms, attributes, shader): + self.set_shader_accessors(('u_modelMatrix', + 'u_viewProjectionMatrix', + 'u_materialDiffuse',), + ('a_vertex',), self.flatshader) + + ### Silhouette shader + silh_vertex = shaders.compileShader(SILHOUETTE_VERTEX_SHADER, GL_VERTEX_SHADER) + self.silhouette_shader = shaders.compileProgram(silh_vertex, fragment) + + self.set_shader_accessors(('u_modelMatrix', + 'u_viewProjectionMatrix', + 'u_modelViewMatrix', + 'u_materialDiffuse', + 'u_bordersize' # width of the silhouette + ), + ('a_vertex', + 'a_normal'), self.silhouette_shader) + + ### Gooch shader + gooch_vertex = shaders.compileShader(GOOCH_VERTEX_SHADER, GL_VERTEX_SHADER) + gooch_fragment = shaders.compileShader(GOOCH_FRAGMENT_SHADER, GL_FRAGMENT_SHADER) + self.gooch_shader = shaders.compileProgram(gooch_vertex, gooch_fragment) + + self.set_shader_accessors(('u_modelMatrix', + 'u_viewProjectionMatrix', + 'u_normalMatrix', + 'u_lightPos', + 'u_materialDiffuse', + 'u_coolColor', + 'u_warmColor', + 'u_alpha', + 'u_beta' + ), + ('a_vertex', + 'a_normal'), self.gooch_shader) + + @staticmethod + def set_shader_accessors(uniforms, attributes, shader): # add accessors to the shaders uniforms and attributes for uniform in uniforms: - location = glGetUniformLocation( shader, uniform ) - if location in (None,-1): - logger.warning('No uniform: %s'%( uniform )) - setattr( shader, uniform, location ) + location = glGetUniformLocation(shader, uniform) + if location in (None, -1): + raise RuntimeError('No uniform: %s (maybe it is not used ' + 'anymore and has been optimized out by' + ' the shader compiler)' % uniform) + setattr(shader, uniform, location) for attribute in attributes: - location = glGetAttribLocation( shader, attribute ) - if location in (None,-1): - logger.warning('No attribute: %s'%( attribute )) - setattr( shader, attribute, location ) + location = glGetAttribLocation(shader, attribute) + if location in (None, -1): + raise RuntimeError('No attribute: %s' % attribute) + setattr(shader, attribute, location) - - def prepare_gl_buffers(self, mesh): + @staticmethod + def prepare_gl_buffers(mesh): mesh.gl = {} @@ -170,18 +397,83 @@ class PyAssimp3DViewer: v = numpy.array(mesh.vertices, 'f') n = numpy.array(mesh.normals, 'f') - mesh.gl["vbo"] = vbo.VBO(numpy.hstack((v,n))) + mesh.gl["vbo"] = vbo.VBO(numpy.hstack((v, n))) # Fill the buffer for vertex positions mesh.gl["faces"] = glGenBuffers(1) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mesh.gl["faces"]) - glBufferData(GL_ELEMENT_ARRAY_BUFFER, - mesh.faces, - GL_STATIC_DRAW) - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0) + glBufferData(GL_ELEMENT_ARRAY_BUFFER, + numpy.array(mesh.faces, dtype=numpy.int32), + GL_STATIC_DRAW) - - def load_model(self, path, postprocess = aiProcessPreset_TargetRealtime_MaxQuality): + mesh.gl["nbfaces"] = len(mesh.faces) + + # Unbind buffers + glBindBuffer(GL_ARRAY_BUFFER, 0) + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0) + + @staticmethod + def get_rgb_from_colorid(colorid): + r = (colorid >> 0) & 0xff + g = (colorid >> 8) & 0xff + b = (colorid >> 16) & 0xff + + return r, g, b + + def get_color_id(self): + id = random.randint(0, 256 * 256 * 256) + if id not in self.colorid2node: + return id + else: + return self.get_color_id() + + def glize(self, scene, node): + + logger.info("Loading node <%s>" % node) + node.selected = True if self.currently_selected and self.currently_selected == node else False + + node.transformation = node.transformation.astype(numpy.float32) + + if node.meshes: + node.type = MESH + colorid = self.get_color_id() + self.colorid2node[colorid] = node + self.node2colorid[node.name] = colorid + + elif node.name in [c.name for c in scene.cameras]: + + # retrieve the ASSIMP camera object + [cam] = [c for c in scene.cameras if c.name == node.name] + node.type = CAMERA + logger.info("Added camera <%s>" % node.name) + logger.info("Camera position: %.3f, %.3f, %.3f" % tuple(node.transformation[:, 3][:3].tolist())) + self.cameras.append(node) + node.clipplanenear = cam.clipplanenear + node.clipplanefar = cam.clipplanefar + + if numpy.allclose(cam.lookat, [0, 0, -1]) and numpy.allclose(cam.up, [0, 1, 0]): # Cameras in .blend files + + # Rotate by 180deg around X to have Z pointing forward + node.transformation = numpy.dot(node.transformation, ROTATION_180_X) + else: + raise RuntimeError( + "I do not know how to normalize this camera orientation: lookat=%s, up=%s" % (cam.lookat, cam.up)) + + if cam.aspect == 0.0: + logger.warning("Camera aspect not set. Setting to default 4:3") + node.aspect = 1.333 + else: + node.aspect = cam.aspect + + node.horizontalfov = cam.horizontalfov + + else: + node.type = ENTITY + + for child in node.children: + self.glize(scene, child) + + def load_model(self, path, postprocess=aiProcessPreset_TargetRealtime_MaxQuality): logger.info("Loading model:" + path + "...") if postprocess: @@ -191,7 +483,7 @@ class PyAssimp3DViewer: logger.info("Done.") scene = self.scene - #log some statistics + # log some statistics logger.info(" meshes: %d" % len(scene.meshes)) logger.info(" total faces: %d" % sum([len(mesh.faces) for mesh in scene.meshes])) logger.info(" materials: %d" % len(scene.materials)) @@ -203,27 +495,34 @@ class PyAssimp3DViewer: for index, mesh in enumerate(scene.meshes): self.prepare_gl_buffers(mesh) + self.glize(scene, scene.rootnode) + # Finally release the model pyassimp.release(scene) - logger.info("Ready for 3D rendering!") def cycle_cameras(self): - if not self.cameras: - logger.info("No camera in the scene") - return None + self.current_cam_index = (self.current_cam_index + 1) % len(self.cameras) self.current_cam = self.cameras[self.current_cam_index] - self.set_camera(self.current_cam) + self.set_camera_projection(self.current_cam) logger.info("Switched to camera <%s>" % self.current_cam) - def set_camera_projection(self, camera = None): + def set_overlay_projection(self): + glViewport(0, 0, self.w, self.h) + glMatrixMode(GL_PROJECTION) + glLoadIdentity() + glOrtho(0.0, self.w - 1.0, 0.0, self.h - 1.0, -1.0, 1.0) + glMatrixMode(GL_MODELVIEW) + glLoadIdentity() + + def set_camera_projection(self, camera=None): if not camera: - camera = self.cameras[self.current_cam_index] + camera = self.current_cam - znear = camera.clipplanenear - zfar = camera.clipplanefar + znear = camera.clipplanenear or DEFAULT_CLIP_PLANE_NEAR + zfar = camera.clipplanefar or DEFAULT_CLIP_PLANE_FAR aspect = camera.aspect fov = camera.horizontalfov @@ -231,185 +530,587 @@ class PyAssimp3DViewer: glLoadIdentity() # Compute gl frustrum - tangent = math.tan(fov/2.) + tangent = math.tan(fov / 2.) h = znear * tangent w = h * aspect # params: left, right, bottom, top, near, far glFrustum(-w, w, -h, h, znear, zfar) # equivalent to: - #gluPerspective(fov * 180/math.pi, aspect, znear, zfar) - glMatrixMode(GL_MODELVIEW) - glLoadIdentity() + # gluPerspective(fov * 180/math.pi, aspect, znear, zfar) - - def set_camera(self, camera): - - self.set_camera_projection(camera) + self.projection_matrix = glGetFloatv(GL_PROJECTION_MATRIX).transpose() glMatrixMode(GL_MODELVIEW) glLoadIdentity() - cam = transform([0.0, 0.0, 0.0], camera.transformation) - at = transform(camera.lookat, camera.transformation) - gluLookAt(cam[0], cam[2], -cam[1], - at[0], at[2], -at[1], - 0, 1, 0) - - def render(self, wireframe = False, twosided = False): + def render_colors(self): glEnable(GL_DEPTH_TEST) glDepthFunc(GL_LEQUAL) + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL) + glEnable(GL_CULL_FACE) + + glUseProgram(self.flatshader) + + glUniformMatrix4fv(self.flatshader.u_viewProjectionMatrix, 1, GL_TRUE, + numpy.dot(self.projection_matrix, self.view_matrix)) + + self.recursive_render(self.scene.rootnode, self.flatshader, mode=COLORS) + + glUseProgram(0) + + def get_hovered_node(self, mousex, mousey): + """ + Attention: The performances of this method relies heavily on the size of the display! + """ + + # mouse out of the window? + if mousex < 0 or mousex >= self.w or mousey < 0 or mousey >= self.h: + return None + + self.render_colors() + # Capture image from the OpenGL buffer + buf = (GLubyte * (3 * self.w * self.h))(0) + glReadPixels(0, 0, self.w, self.h, GL_RGB, GL_UNSIGNED_BYTE, buf) + + # Reinterpret the RGB pixel buffer as a 1-D array of 24bits colors + a = numpy.ndarray(len(buf), numpy.dtype('>u1'), buf) + colors = numpy.zeros(len(buf) / 3, numpy.dtype('u1')[i::3] + + colorid = colors[mousex + mousey * self.w] + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + + if colorid in self.colorid2node: + return self.colorid2node[colorid] + + def render(self, wireframe=False, twosided=False): + + glEnable(GL_DEPTH_TEST) + glDepthFunc(GL_LEQUAL) glPolygonMode(GL_FRONT_AND_BACK, GL_LINE if wireframe else GL_FILL) glDisable(GL_CULL_FACE) if twosided else glEnable(GL_CULL_FACE) - shader = self.shader + self.render_grid() - glUseProgram(shader) - glUniform4f( shader.Global_ambient, .4,.2,.2,.1 ) - glUniform4f( shader.Light_ambient, .4,.4,.4, 1.0 ) - glUniform4f( shader.Light_diffuse, 1,1,1,1 ) - glUniform3f( shader.Light_location, 2,2,10 ) + self.recursive_render(self.scene.rootnode, None, mode=HELPERS) + + ### First, the silhouette + + if False: + shader = self.silhouette_shader + + # glDepthMask(GL_FALSE) + glCullFace(GL_FRONT) # cull front faces + + glUseProgram(shader) + glUniform1f(shader.u_bordersize, 0.01) + + glUniformMatrix4fv(shader.u_viewProjectionMatrix, 1, GL_TRUE, + numpy.dot(self.projection_matrix, self.view_matrix)) + + self.recursive_render(self.scene.rootnode, shader, mode=SILHOUETTE) + + glUseProgram(0) + + ### Then, inner shading + # glDepthMask(GL_TRUE) + glCullFace(GL_BACK) + + use_gooch = False + if use_gooch: + shader = self.gooch_shader + + glUseProgram(shader) + glUniform3f(shader.u_lightPos, -.5, -.5, .5) + + ##### GOOCH specific + glUniform3f(shader.u_coolColor, 159.0 / 255, 148.0 / 255, 255.0 / 255) + glUniform3f(shader.u_warmColor, 255.0 / 255, 75.0 / 255, 75.0 / 255) + glUniform1f(shader.u_alpha, .25) + glUniform1f(shader.u_beta, .25) + ######### + else: + shader = self.shader + glUseProgram(shader) + glUniform3f(shader.u_lightPos, -.5, -.5, .5) + + glUniformMatrix4fv(shader.u_viewProjectionMatrix, 1, GL_TRUE, + numpy.dot(self.projection_matrix, self.view_matrix)) self.recursive_render(self.scene.rootnode, shader) + glUseProgram(0) - glUseProgram( 0 ) + def render_axis(self, + transformation=numpy.identity(4, dtype=numpy.float32), + label=None, + size=0.2, + selected=False): + m = transformation.transpose() # OpenGL row major - def recursive_render(self, node, shader): - """ Main recursive rendering method. - """ - - # save model matrix and apply node transformation glPushMatrix() - m = node.transformation.transpose() # OpenGL row major glMultMatrixf(m) - for mesh in node.meshes: + glLineWidth(3 if selected else 1) - stride = 24 # 6 * 4 bytes + size = 2 * size if selected else size - diffuse = mesh.material.properties["diffuse"] - if len(diffuse) == 3: diffuse.append(1.0) - ambient = mesh.material.properties["ambient"] - if len(ambient) == 3: ambient.append(1.0) + glBegin(GL_LINES) - glUniform4f( shader.Material_diffuse, *diffuse ) - glUniform4f( shader.Material_ambient, *ambient ) + # draw line for x axis + glColor3f(1.0, 0.0, 0.0) + glVertex3f(0.0, 0.0, 0.0) + glVertex3f(size, 0.0, 0.0) - vbo = mesh.gl["vbo"] - vbo.bind() + # draw line for y axis + glColor3f(0.0, 1.0, 0.0) + glVertex3f(0.0, 0.0, 0.0) + glVertex3f(0.0, size, 0.0) - glEnableVertexAttribArray( shader.Vertex_position ) - glEnableVertexAttribArray( shader.Vertex_normal ) + # draw line for Z axis + glColor3f(0.0, 0.0, 1.0) + glVertex3f(0.0, 0.0, 0.0) + glVertex3f(0.0, 0.0, size) - glVertexAttribPointer( - shader.Vertex_position, - 3, GL_FLOAT,False, stride, vbo - ) + glEnd() - glVertexAttribPointer( - shader.Vertex_normal, - 3, GL_FLOAT,False, stride, vbo+12 - ) - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mesh.gl["faces"]) - glDrawElements(GL_TRIANGLES, len(mesh.faces) * 3, GL_UNSIGNED_INT, None) - - - vbo.unbind() - glDisableVertexAttribArray( shader.Vertex_position ) - - glDisableVertexAttribArray( shader.Vertex_normal ) - - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0) - - for child in node.children: - self.recursive_render(child, shader) + if label: + self.showtext(label) glPopMatrix() + @staticmethod + def render_camera(camera, transformation): + + m = transformation.transpose() # OpenGL row major + + aspect = camera.aspect + + u = 0.1 # unit size (in m) + l = 3 * u # lenght of the camera cone + f = 3 * u # aperture of the camera cone + + glPushMatrix() + glMultMatrixf(m) + + glLineWidth(2) + glBegin(GL_LINE_STRIP) + + glColor3f(.2, .2, .2) + + glVertex3f(u, u, -u) + glVertex3f(u, -u, -u) + glVertex3f(-u, -u, -u) + glVertex3f(-u, u, -u) + glVertex3f(u, u, -u) + + glVertex3f(u, u, 0.0) + glVertex3f(u, -u, 0.0) + glVertex3f(-u, -u, 0.0) + glVertex3f(-u, u, 0.0) + glVertex3f(u, u, 0.0) + + glVertex3f(f * aspect, f, l) + glVertex3f(f * aspect, -f, l) + glVertex3f(-f * aspect, -f, l) + glVertex3f(-f * aspect, f, l) + glVertex3f(f * aspect, f, l) + + glEnd() + + glBegin(GL_LINE_STRIP) + glVertex3f(u, -u, -u) + glVertex3f(u, -u, 0.0) + glVertex3f(f * aspect, -f, l) + glEnd() + + glBegin(GL_LINE_STRIP) + glVertex3f(-u, -u, -u) + glVertex3f(-u, -u, 0.0) + glVertex3f(-f * aspect, -f, l) + glEnd() + + glBegin(GL_LINE_STRIP) + glVertex3f(-u, u, -u) + glVertex3f(-u, u, 0.0) + glVertex3f(-f * aspect, f, l) + glEnd() + + glPopMatrix() + + @staticmethod + def render_grid(): + + glLineWidth(1) + glColor3f(0.5, 0.5, 0.5) + glBegin(GL_LINES) + for i in range(-10, 11): + glVertex3f(i, -10.0, 0.0) + glVertex3f(i, 10.0, 0.0) + + for i in range(-10, 11): + glVertex3f(-10.0, i, 0.0) + glVertex3f(10.0, i, 0.0) + glEnd() + + def recursive_render(self, node, shader, mode=BASE, with_normals=True): + """ Main recursive rendering method. + """ + + normals = with_normals + + if mode == COLORS: + normals = False + + + if not hasattr(node, "selected"): + node.selected = False + + m = get_world_transform(self.scene, node) + + # HELPERS mode + ### + if mode == HELPERS: + # if node.type == ENTITY: + self.render_axis(m, + label=node.name if node != self.scene.rootnode else None, + selected=node.selected if hasattr(node, "selected") else False) + + if node.type == CAMERA: + self.render_camera(node, m) + + for child in node.children: + self.recursive_render(child, shader, mode) + + return + + # Mesh rendering modes + ### + if node.type == MESH: + + for mesh in node.meshes: + + stride = 24 # 6 * 4 bytes + + if node.selected and mode == SILHOUETTE: + glUniform4f(shader.u_materialDiffuse, 1.0, 0.0, 0.0, 1.0) + glUniformMatrix4fv(shader.u_modelViewMatrix, 1, GL_TRUE, + numpy.dot(self.view_matrix, m)) + + else: + if mode == COLORS: + colorid = self.node2colorid[node.name] + r, g, b = self.get_rgb_from_colorid(colorid) + glUniform4f(shader.u_materialDiffuse, r / 255.0, g / 255.0, b / 255.0, 1.0) + elif mode == SILHOUETTE: + glUniform4f(shader.u_materialDiffuse, .0, .0, .0, 1.0) + else: + if node.selected: + diffuse = (1.0, 0.0, 0.0, 1.0) # selected nodes in red + else: + diffuse = mesh.material.properties["diffuse"] + if len(diffuse) == 3: # RGB instead of expected RGBA + diffuse.append(1.0) + glUniform4f(shader.u_materialDiffuse, *diffuse) + # if ambient: + # glUniform4f( shader.Material_ambient, *mat["ambient"] ) + + if mode == BASE: # not in COLORS or SILHOUETTE + normal_matrix = linalg.inv(numpy.dot(self.view_matrix, m)[0:3, 0:3]).transpose() + glUniformMatrix3fv(shader.u_normalMatrix, 1, GL_TRUE, normal_matrix) + + glUniformMatrix4fv(shader.u_modelMatrix, 1, GL_TRUE, m) + + vbo = mesh.gl["vbo"] + vbo.bind() + + glEnableVertexAttribArray(shader.a_vertex) + if normals: + glEnableVertexAttribArray(shader.a_normal) + + glVertexAttribPointer( + shader.a_vertex, + 3, GL_FLOAT, False, stride, vbo + ) + + if normals: + glVertexAttribPointer( + shader.a_normal, + 3, GL_FLOAT, False, stride, vbo + 12 + ) + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mesh.gl["faces"]) + glDrawElements(GL_TRIANGLES, mesh.gl["nbfaces"] * 3, GL_UNSIGNED_INT, None) + + vbo.unbind() + glDisableVertexAttribArray(shader.a_vertex) + + if normals: + glDisableVertexAttribArray(shader.a_normal) + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0) + + for child in node.children: + self.recursive_render(child, shader, mode) + + + def switch_to_overlay(self): + glPushMatrix() + self.set_overlay_projection() + + def switch_from_overlay(self): + self.set_camera_projection() + glPopMatrix() + + def select_node(self, node): + self.currently_selected = node + self.update_node_select(self.scene.rootnode) + + def update_node_select(self, node): + if node is self.currently_selected: + node.selected = True + else: + node.selected = False + + for child in node.children: + self.update_node_select(child) def loop(self): pygame.display.flip() - pygame.event.pump() - self.keys = [k for k, pressed in enumerate(pygame.key.get_pressed()) if pressed] + + if not self.process_events(): + return False # ESC has been pressed glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) - # Compute FPS - gl_time = glutGet(GLUT_ELAPSED_TIME) - self.frames += 1 - if gl_time - self.last_fps_time >= 1000: - current_fps = self.frames * 1000 / (gl_time - self.last_fps_time) - pygame.display.set_caption(self.base_name + " - %.0f fps" % current_fps) - self.frames = 0 - self.last_fps_time = gl_time + return True + def process_events(self): + + LEFT_BUTTON = 1 + MIDDLE_BUTTON = 2 + RIGHT_BUTTON = 3 + WHEEL_UP = 4 + WHEEL_DOWN = 5 + + dx, dy = pygame.mouse.get_rel() + mousex, mousey = pygame.mouse.get_pos() + + zooming_one_shot = False + + ok = True + + for evt in pygame.event.get(): + if evt.type == pygame.MOUSEBUTTONDOWN and evt.button == LEFT_BUTTON: + hovered = self.get_hovered_node(mousex, self.h - mousey) + if hovered: + if self.currently_selected and self.currently_selected == hovered: + self.select_node(None) + else: + logger.info("Node %s selected" % hovered) + self.select_node(hovered) + else: + self.is_rotating = True + if evt.type == pygame.MOUSEBUTTONUP and evt.button == LEFT_BUTTON: + self.is_rotating = False + + if evt.type == pygame.MOUSEBUTTONDOWN and evt.button == MIDDLE_BUTTON: + self.is_panning = True + if evt.type == pygame.MOUSEBUTTONUP and evt.button == MIDDLE_BUTTON: + self.is_panning = False + + if evt.type == pygame.MOUSEBUTTONDOWN and evt.button == RIGHT_BUTTON: + self.is_zooming = True + if evt.type == pygame.MOUSEBUTTONUP and evt.button == RIGHT_BUTTON: + self.is_zooming = False + + if evt.type == pygame.MOUSEBUTTONDOWN and evt.button in [WHEEL_UP, WHEEL_DOWN]: + zooming_one_shot = True + self.is_zooming = True + dy = -10 if evt.button == WHEEL_UP else 10 + + if evt.type == pygame.KEYDOWN: + ok = (ok and self.process_keystroke(evt.key, evt.mod)) + + self.controls_3d(dx, dy, zooming_one_shot) + + return ok + + def process_keystroke(self, key, mod): + + # process arrow keys if an object is selected + if self.currently_selected: + up = 0 + strafe = 0 + + if key == pygame.K_UP: + up = 1 + if key == pygame.K_DOWN: + up = -1 + if key == pygame.K_LEFT: + strafe = -1 + if key == pygame.K_RIGHT: + strafe = 1 + + self.move_selected_node(up, strafe) + + if key == pygame.K_f: + pygame.display.toggle_fullscreen() + + if key == pygame.K_TAB: + self.cycle_cameras() + + if key in [pygame.K_ESCAPE, pygame.K_q]: + return False return True - def controls_3d(self, - mouse_button=1, \ - up_key=pygame.K_UP, \ - down_key=pygame.K_DOWN, \ - left_key=pygame.K_LEFT, \ - right_key=pygame.K_RIGHT): - """ The actual camera setting cycle """ - mouse_dx,mouse_dy = pygame.mouse.get_rel() - if pygame.mouse.get_pressed()[mouse_button]: - look_speed = .2 - buffer = glGetDoublev(GL_MODELVIEW_MATRIX) - c = (-1 * numpy.mat(buffer[:3,:3]) * \ - numpy.mat(buffer[3,:3]).T).reshape(3,1) - # c is camera center in absolute coordinates, - # we need to move it back to (0,0,0) - # before rotating the camera - glTranslate(c[0],c[1],c[2]) - m = buffer.flatten() - glRotate(mouse_dx * look_speed, m[1],m[5],m[9]) - glRotate(mouse_dy * look_speed, m[0],m[4],m[8]) - - # compensate roll - glRotated(-math.atan2(-m[4],m[5]) * \ - 57.295779513082320876798154814105 ,m[2],m[6],m[10]) - glTranslate(-c[0],-c[1],-c[2]) + def controls_3d(self, dx, dy, zooming_one_shot=False): - # move forward-back or right-left - if up_key in self.keys: - fwd = .1 - elif down_key in self.keys: - fwd = -.1 - else: - fwd = 0 + CAMERA_TRANSLATION_FACTOR = 0.01 + CAMERA_ROTATION_FACTOR = 0.01 - if left_key in self.keys: - strafe = .1 - elif right_key in self.keys: - strafe = -.1 - else: - strafe = 0 + if not (self.is_rotating or self.is_panning or self.is_zooming): + return - if abs(fwd) or abs(strafe): - m = glGetDoublev(GL_MODELVIEW_MATRIX).flatten() - glTranslate(fwd*m[2],fwd*m[6],fwd*m[10]) - glTranslate(strafe*m[0],strafe*m[4],strafe*m[8]) + current_pos = self.current_cam.transformation[:3, 3].copy() + distance = numpy.linalg.norm(self.focal_point - current_pos) + + if self.is_rotating: + """ Orbiting the camera is implemented the following way: + + - the rotation is split into a rotation around the *world* Z axis + (controlled by the horizontal mouse motion along X) and a + rotation around the *X* axis of the camera (pitch) *shifted to + the focal origin* (the world origin for now). This is controlled + by the vertical motion of the mouse (Y axis). + + - as a result, the resulting transformation of the camera in the + world frame C' is: + C' = (T · Rx · T⁻¹ · (Rz · C)⁻¹)⁻¹ + + where: + - C is the original camera transformation in the world frame, + - Rz is the rotation along the Z axis (in the world frame) + - T is the translation camera -> world (ie, the inverse of the + translation part of C + - Rx is the rotation around X in the (translated) camera frame + """ + + rotation_camera_x = dy * CAMERA_ROTATION_FACTOR + rotation_world_z = dx * CAMERA_ROTATION_FACTOR + world_z_rotation = transformations.euler_matrix(0, 0, rotation_world_z) + cam_x_rotation = transformations.euler_matrix(rotation_camera_x, 0, 0) + + after_world_z_rotation = numpy.dot(world_z_rotation, self.current_cam.transformation) + + inverse_transformation = transformations.inverse_matrix(after_world_z_rotation) + + translation = transformations.translation_matrix( + transformations.decompose_matrix(inverse_transformation)[3]) + inverse_translation = transformations.inverse_matrix(translation) + + new_inverse = numpy.dot(inverse_translation, inverse_transformation) + new_inverse = numpy.dot(cam_x_rotation, new_inverse) + new_inverse = numpy.dot(translation, new_inverse) + + self.current_cam.transformation = transformations.inverse_matrix(new_inverse).astype(numpy.float32) + + if self.is_panning: + tx = -dx * CAMERA_TRANSLATION_FACTOR * distance + ty = dy * CAMERA_TRANSLATION_FACTOR * distance + cam_transform = transformations.translation_matrix((tx, ty, 0)).astype(numpy.float32) + self.current_cam.transformation = numpy.dot(self.current_cam.transformation, cam_transform) + + if self.is_zooming: + tz = dy * CAMERA_TRANSLATION_FACTOR * distance + cam_transform = transformations.translation_matrix((0, 0, tz)).astype(numpy.float32) + self.current_cam.transformation = numpy.dot(self.current_cam.transformation, cam_transform) + + if zooming_one_shot: + self.is_zooming = False + + self.update_view_camera() + + def update_view_camera(self): + + self.view_matrix = linalg.inv(self.current_cam.transformation) + + # Rotate by 180deg around X to have Z pointing backward (OpenGL convention) + self.view_matrix = numpy.dot(ROTATION_180_X, self.view_matrix) + + glMatrixMode(GL_MODELVIEW) + glLoadIdentity() + glMultMatrixf(self.view_matrix.transpose()) + + def move_selected_node(self, up, strafe): + self.currently_selected.transformation[0][3] += strafe + self.currently_selected.transformation[2][3] += up + + @staticmethod + def showtext(text, x=0, y=0, z=0, size=20): + + # TODO: alpha blending does not work... + # glEnable(GL_BLEND) + # glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) + + font = pygame.font.Font(None, size) + text_surface = font.render(text, True, (10, 10, 10, 255), + (255 * 0.18, 255 * 0.18, 255 * 0.18, 0)) + text_data = pygame.image.tostring(text_surface, "RGBA", True) + glRasterPos3d(x, y, z) + glDrawPixels(text_surface.get_width(), + text_surface.get_height(), + GL_RGBA, GL_UNSIGNED_BYTE, + text_data) + + # glDisable(GL_BLEND) + + +def main(model, width, height): + app = PyAssimp3DViewer(model, w=width, h=height) + + clock = pygame.time.Clock() + + while app.loop(): + + app.update_view_camera() + + ## Main rendering + app.render() + + ## GUI text display + app.switch_to_overlay() + app.showtext("Active camera: %s" % str(app.current_cam), 10, app.h - 30) + if app.currently_selected: + app.showtext("Selected node: %s" % app.currently_selected, 10, app.h - 50) + pos = app.h - 70 + + app.showtext("(%sm, %sm, %sm)" % (app.currently_selected.transformation[0, 3], + app.currently_selected.transformation[1, 3], + app.currently_selected.transformation[2, 3]), 30, pos) + + app.switch_from_overlay() + + # Make sure we do not go over 30fps + clock.tick(30) + + logger.info("Quitting! Bye bye!") + + +######################################################################### +######################################################################### if __name__ == '__main__': if not len(sys.argv) > 1: print("Usage: " + __file__ + " ") sys.exit(2) - app = PyAssimp3DViewer(model = sys.argv[1], w = 1024, h = 768, fov = 75) - - while app.loop(): - app.render() - app.controls_3d(0) - if pygame.K_f in app.keys: pygame.display.toggle_fullscreen() - if pygame.K_TAB in app.keys: app.cycle_cameras() - if pygame.K_ESCAPE in app.keys: - break + main(model=sys.argv[1], width=1024, height=768) diff --git a/port/PyAssimp/scripts/transformations.py b/port/PyAssimp/scripts/transformations.py new file mode 100644 index 000000000..6d6f19e5b --- /dev/null +++ b/port/PyAssimp/scripts/transformations.py @@ -0,0 +1,1705 @@ +# -*- coding: utf-8 -*- +# transformations.py + +# Copyright (c) 2006, Christoph Gohlke +# Copyright (c) 2006-2009, The Regents of the University of California +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the copyright holders nor the names of any +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +"""Homogeneous Transformation Matrices and Quaternions. + +A library for calculating 4x4 matrices for translating, rotating, reflecting, +scaling, shearing, projecting, orthogonalizing, and superimposing arrays of +3D homogeneous coordinates as well as for converting between rotation matrices, +Euler angles, and quaternions. Also includes an Arcball control object and +functions to decompose transformation matrices. + +:Authors: + `Christoph Gohlke `__, + Laboratory for Fluorescence Dynamics, University of California, Irvine + +:Version: 20090418 + +Requirements +------------ + +* `Python 2.6 `__ +* `Numpy 1.3 `__ +* `transformations.c 20090418 `__ + (optional implementation of some functions in C) + +Notes +----- + +Matrices (M) can be inverted using numpy.linalg.inv(M), concatenated using +numpy.dot(M0, M1), or used to transform homogeneous coordinates (v) using +numpy.dot(M, v) for shape (4, \*) "point of arrays", respectively +numpy.dot(v, M.T) for shape (\*, 4) "array of points". + +Calculations are carried out with numpy.float64 precision. + +This Python implementation is not optimized for speed. + +Vector, point, quaternion, and matrix function arguments are expected to be +"array like", i.e. tuple, list, or numpy arrays. + +Return types are numpy arrays unless specified otherwise. + +Angles are in radians unless specified otherwise. + +Quaternions ix+jy+kz+w are represented as [x, y, z, w]. + +Use the transpose of transformation matrices for OpenGL glMultMatrixd(). + +A triple of Euler angles can be applied/interpreted in 24 ways, which can +be specified using a 4 character string or encoded 4-tuple: + + *Axes 4-string*: e.g. 'sxyz' or 'ryxy' + + - first character : rotations are applied to 's'tatic or 'r'otating frame + - remaining characters : successive rotation axis 'x', 'y', or 'z' + + *Axes 4-tuple*: e.g. (0, 0, 0, 0) or (1, 1, 1, 1) + + - inner axis: code of axis ('x':0, 'y':1, 'z':2) of rightmost matrix. + - parity : even (0) if inner axis 'x' is followed by 'y', 'y' is followed + by 'z', or 'z' is followed by 'x'. Otherwise odd (1). + - repetition : first and last axis are same (1) or different (0). + - frame : rotations are applied to static (0) or rotating (1) frame. + +References +---------- + +(1) Matrices and transformations. Ronald Goldman. + In "Graphics Gems I", pp 472-475. Morgan Kaufmann, 1990. +(2) More matrices and transformations: shear and pseudo-perspective. + Ronald Goldman. In "Graphics Gems II", pp 320-323. Morgan Kaufmann, 1991. +(3) Decomposing a matrix into simple transformations. Spencer Thomas. + In "Graphics Gems II", pp 320-323. Morgan Kaufmann, 1991. +(4) Recovering the data from the transformation matrix. Ronald Goldman. + In "Graphics Gems II", pp 324-331. Morgan Kaufmann, 1991. +(5) Euler angle conversion. Ken Shoemake. + In "Graphics Gems IV", pp 222-229. Morgan Kaufmann, 1994. +(6) Arcball rotation control. Ken Shoemake. + In "Graphics Gems IV", pp 175-192. Morgan Kaufmann, 1994. +(7) Representing attitude: Euler angles, unit quaternions, and rotation + vectors. James Diebel. 2006. +(8) A discussion of the solution for the best rotation to relate two sets + of vectors. W Kabsch. Acta Cryst. 1978. A34, 827-828. +(9) Closed-form solution of absolute orientation using unit quaternions. + BKP Horn. J Opt Soc Am A. 1987. 4(4), 629-642. +(10) Quaternions. Ken Shoemake. + http://www.sfu.ca/~jwa3/cmpt461/files/quatut.pdf +(11) From quaternion to matrix and back. JMP van Waveren. 2005. + http://www.intel.com/cd/ids/developer/asmo-na/eng/293748.htm +(12) Uniform random rotations. Ken Shoemake. + In "Graphics Gems III", pp 124-132. Morgan Kaufmann, 1992. + + +Examples +-------- + +>>> alpha, beta, gamma = 0.123, -1.234, 2.345 +>>> origin, xaxis, yaxis, zaxis = (0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1) +>>> I = identity_matrix() +>>> Rx = rotation_matrix(alpha, xaxis) +>>> Ry = rotation_matrix(beta, yaxis) +>>> Rz = rotation_matrix(gamma, zaxis) +>>> R = concatenate_matrices(Rx, Ry, Rz) +>>> euler = euler_from_matrix(R, 'rxyz') +>>> numpy.allclose([alpha, beta, gamma], euler) +True +>>> Re = euler_matrix(alpha, beta, gamma, 'rxyz') +>>> is_same_transform(R, Re) +True +>>> al, be, ga = euler_from_matrix(Re, 'rxyz') +>>> is_same_transform(Re, euler_matrix(al, be, ga, 'rxyz')) +True +>>> qx = quaternion_about_axis(alpha, xaxis) +>>> qy = quaternion_about_axis(beta, yaxis) +>>> qz = quaternion_about_axis(gamma, zaxis) +>>> q = quaternion_multiply(qx, qy) +>>> q = quaternion_multiply(q, qz) +>>> Rq = quaternion_matrix(q) +>>> is_same_transform(R, Rq) +True +>>> S = scale_matrix(1.23, origin) +>>> T = translation_matrix((1, 2, 3)) +>>> Z = shear_matrix(beta, xaxis, origin, zaxis) +>>> R = random_rotation_matrix(numpy.random.rand(3)) +>>> M = concatenate_matrices(T, R, Z, S) +>>> scale, shear, angles, trans, persp = decompose_matrix(M) +>>> numpy.allclose(scale, 1.23) +True +>>> numpy.allclose(trans, (1, 2, 3)) +True +>>> numpy.allclose(shear, (0, math.tan(beta), 0)) +True +>>> is_same_transform(R, euler_matrix(axes='sxyz', *angles)) +True +>>> M1 = compose_matrix(scale, shear, angles, trans, persp) +>>> is_same_transform(M, M1) +True + +""" + +from __future__ import division + +import warnings +import math + +import numpy + +# Documentation in HTML format can be generated with Epydoc +__docformat__ = "restructuredtext en" + + +def identity_matrix(): + """Return 4x4 identity/unit matrix. + + >>> I = identity_matrix() + >>> numpy.allclose(I, numpy.dot(I, I)) + True + >>> numpy.sum(I), numpy.trace(I) + (4.0, 4.0) + >>> numpy.allclose(I, numpy.identity(4, dtype=numpy.float64)) + True + + """ + return numpy.identity(4, dtype=numpy.float64) + + +def translation_matrix(direction): + """Return matrix to translate by direction vector. + + >>> v = numpy.random.random(3) - 0.5 + >>> numpy.allclose(v, translation_matrix(v)[:3, 3]) + True + + """ + M = numpy.identity(4) + M[:3, 3] = direction[:3] + return M + + +def translation_from_matrix(matrix): + """Return translation vector from translation matrix. + + >>> v0 = numpy.random.random(3) - 0.5 + >>> v1 = translation_from_matrix(translation_matrix(v0)) + >>> numpy.allclose(v0, v1) + True + + """ + return numpy.array(matrix, copy=False)[:3, 3].copy() + + +def reflection_matrix(point, normal): + """Return matrix to mirror at plane defined by point and normal vector. + + >>> v0 = numpy.random.random(4) - 0.5 + >>> v0[3] = 1.0 + >>> v1 = numpy.random.random(3) - 0.5 + >>> R = reflection_matrix(v0, v1) + >>> numpy.allclose(2., numpy.trace(R)) + True + >>> numpy.allclose(v0, numpy.dot(R, v0)) + True + >>> v2 = v0.copy() + >>> v2[:3] += v1 + >>> v3 = v0.copy() + >>> v2[:3] -= v1 + >>> numpy.allclose(v2, numpy.dot(R, v3)) + True + + """ + normal = unit_vector(normal[:3]) + M = numpy.identity(4) + M[:3, :3] -= 2.0 * numpy.outer(normal, normal) + M[:3, 3] = (2.0 * numpy.dot(point[:3], normal)) * normal + return M + + +def reflection_from_matrix(matrix): + """Return mirror plane point and normal vector from reflection matrix. + + >>> v0 = numpy.random.random(3) - 0.5 + >>> v1 = numpy.random.random(3) - 0.5 + >>> M0 = reflection_matrix(v0, v1) + >>> point, normal = reflection_from_matrix(M0) + >>> M1 = reflection_matrix(point, normal) + >>> is_same_transform(M0, M1) + True + + """ + M = numpy.array(matrix, dtype=numpy.float64, copy=False) + # normal: unit eigenvector corresponding to eigenvalue -1 + l, V = numpy.linalg.eig(M[:3, :3]) + i = numpy.where(abs(numpy.real(l) + 1.0) < 1e-8)[0] + if not len(i): + raise ValueError("no unit eigenvector corresponding to eigenvalue -1") + normal = numpy.real(V[:, i[0]]).squeeze() + # point: any unit eigenvector corresponding to eigenvalue 1 + l, V = numpy.linalg.eig(M) + i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-8)[0] + if not len(i): + raise ValueError("no unit eigenvector corresponding to eigenvalue 1") + point = numpy.real(V[:, i[-1]]).squeeze() + point /= point[3] + return point, normal + + +def rotation_matrix(angle, direction, point=None): + """Return matrix to rotate about axis defined by point and direction. + + >>> angle = (random.random() - 0.5) * (2*math.pi) + >>> direc = numpy.random.random(3) - 0.5 + >>> point = numpy.random.random(3) - 0.5 + >>> R0 = rotation_matrix(angle, direc, point) + >>> R1 = rotation_matrix(angle-2*math.pi, direc, point) + >>> is_same_transform(R0, R1) + True + >>> R0 = rotation_matrix(angle, direc, point) + >>> R1 = rotation_matrix(-angle, -direc, point) + >>> is_same_transform(R0, R1) + True + >>> I = numpy.identity(4, numpy.float64) + >>> numpy.allclose(I, rotation_matrix(math.pi*2, direc)) + True + >>> numpy.allclose(2., numpy.trace(rotation_matrix(math.pi/2, + ... direc, point))) + True + + """ + sina = math.sin(angle) + cosa = math.cos(angle) + direction = unit_vector(direction[:3]) + # rotation matrix around unit vector + R = numpy.array(((cosa, 0.0, 0.0), + (0.0, cosa, 0.0), + (0.0, 0.0, cosa)), dtype=numpy.float64) + R += numpy.outer(direction, direction) * (1.0 - cosa) + direction *= sina + R += numpy.array((( 0.0, -direction[2], direction[1]), + ( direction[2], 0.0, -direction[0]), + (-direction[1], direction[0], 0.0)), + dtype=numpy.float64) + M = numpy.identity(4) + M[:3, :3] = R + if point is not None: + # rotation not around origin + point = numpy.array(point[:3], dtype=numpy.float64, copy=False) + M[:3, 3] = point - numpy.dot(R, point) + return M + + +def rotation_from_matrix(matrix): + """Return rotation angle and axis from rotation matrix. + + >>> angle = (random.random() - 0.5) * (2*math.pi) + >>> direc = numpy.random.random(3) - 0.5 + >>> point = numpy.random.random(3) - 0.5 + >>> R0 = rotation_matrix(angle, direc, point) + >>> angle, direc, point = rotation_from_matrix(R0) + >>> R1 = rotation_matrix(angle, direc, point) + >>> is_same_transform(R0, R1) + True + + """ + R = numpy.array(matrix, dtype=numpy.float64, copy=False) + R33 = R[:3, :3] + # direction: unit eigenvector of R33 corresponding to eigenvalue of 1 + l, W = numpy.linalg.eig(R33.T) + i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-8)[0] + if not len(i): + raise ValueError("no unit eigenvector corresponding to eigenvalue 1") + direction = numpy.real(W[:, i[-1]]).squeeze() + # point: unit eigenvector of R33 corresponding to eigenvalue of 1 + l, Q = numpy.linalg.eig(R) + i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-8)[0] + if not len(i): + raise ValueError("no unit eigenvector corresponding to eigenvalue 1") + point = numpy.real(Q[:, i[-1]]).squeeze() + point /= point[3] + # rotation angle depending on direction + cosa = (numpy.trace(R33) - 1.0) / 2.0 + if abs(direction[2]) > 1e-8: + sina = (R[1, 0] + (cosa-1.0)*direction[0]*direction[1]) / direction[2] + elif abs(direction[1]) > 1e-8: + sina = (R[0, 2] + (cosa-1.0)*direction[0]*direction[2]) / direction[1] + else: + sina = (R[2, 1] + (cosa-1.0)*direction[1]*direction[2]) / direction[0] + angle = math.atan2(sina, cosa) + return angle, direction, point + + +def scale_matrix(factor, origin=None, direction=None): + """Return matrix to scale by factor around origin in direction. + + Use factor -1 for point symmetry. + + >>> v = (numpy.random.rand(4, 5) - 0.5) * 20.0 + >>> v[3] = 1.0 + >>> S = scale_matrix(-1.234) + >>> numpy.allclose(numpy.dot(S, v)[:3], -1.234*v[:3]) + True + >>> factor = random.random() * 10 - 5 + >>> origin = numpy.random.random(3) - 0.5 + >>> direct = numpy.random.random(3) - 0.5 + >>> S = scale_matrix(factor, origin) + >>> S = scale_matrix(factor, origin, direct) + + """ + if direction is None: + # uniform scaling + M = numpy.array(((factor, 0.0, 0.0, 0.0), + (0.0, factor, 0.0, 0.0), + (0.0, 0.0, factor, 0.0), + (0.0, 0.0, 0.0, 1.0)), dtype=numpy.float64) + if origin is not None: + M[:3, 3] = origin[:3] + M[:3, 3] *= 1.0 - factor + else: + # nonuniform scaling + direction = unit_vector(direction[:3]) + factor = 1.0 - factor + M = numpy.identity(4) + M[:3, :3] -= factor * numpy.outer(direction, direction) + if origin is not None: + M[:3, 3] = (factor * numpy.dot(origin[:3], direction)) * direction + return M + + +def scale_from_matrix(matrix): + """Return scaling factor, origin and direction from scaling matrix. + + >>> factor = random.random() * 10 - 5 + >>> origin = numpy.random.random(3) - 0.5 + >>> direct = numpy.random.random(3) - 0.5 + >>> S0 = scale_matrix(factor, origin) + >>> factor, origin, direction = scale_from_matrix(S0) + >>> S1 = scale_matrix(factor, origin, direction) + >>> is_same_transform(S0, S1) + True + >>> S0 = scale_matrix(factor, origin, direct) + >>> factor, origin, direction = scale_from_matrix(S0) + >>> S1 = scale_matrix(factor, origin, direction) + >>> is_same_transform(S0, S1) + True + + """ + M = numpy.array(matrix, dtype=numpy.float64, copy=False) + M33 = M[:3, :3] + factor = numpy.trace(M33) - 2.0 + try: + # direction: unit eigenvector corresponding to eigenvalue factor + l, V = numpy.linalg.eig(M33) + i = numpy.where(abs(numpy.real(l) - factor) < 1e-8)[0][0] + direction = numpy.real(V[:, i]).squeeze() + direction /= vector_norm(direction) + except IndexError: + # uniform scaling + factor = (factor + 2.0) / 3.0 + direction = None + # origin: any eigenvector corresponding to eigenvalue 1 + l, V = numpy.linalg.eig(M) + i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-8)[0] + if not len(i): + raise ValueError("no eigenvector corresponding to eigenvalue 1") + origin = numpy.real(V[:, i[-1]]).squeeze() + origin /= origin[3] + return factor, origin, direction + + +def projection_matrix(point, normal, direction=None, + perspective=None, pseudo=False): + """Return matrix to project onto plane defined by point and normal. + + Using either perspective point, projection direction, or none of both. + + If pseudo is True, perspective projections will preserve relative depth + such that Perspective = dot(Orthogonal, PseudoPerspective). + + >>> P = projection_matrix((0, 0, 0), (1, 0, 0)) + >>> numpy.allclose(P[1:, 1:], numpy.identity(4)[1:, 1:]) + True + >>> point = numpy.random.random(3) - 0.5 + >>> normal = numpy.random.random(3) - 0.5 + >>> direct = numpy.random.random(3) - 0.5 + >>> persp = numpy.random.random(3) - 0.5 + >>> P0 = projection_matrix(point, normal) + >>> P1 = projection_matrix(point, normal, direction=direct) + >>> P2 = projection_matrix(point, normal, perspective=persp) + >>> P3 = projection_matrix(point, normal, perspective=persp, pseudo=True) + >>> is_same_transform(P2, numpy.dot(P0, P3)) + True + >>> P = projection_matrix((3, 0, 0), (1, 1, 0), (1, 0, 0)) + >>> v0 = (numpy.random.rand(4, 5) - 0.5) * 20.0 + >>> v0[3] = 1.0 + >>> v1 = numpy.dot(P, v0) + >>> numpy.allclose(v1[1], v0[1]) + True + >>> numpy.allclose(v1[0], 3.0-v1[1]) + True + + """ + M = numpy.identity(4) + point = numpy.array(point[:3], dtype=numpy.float64, copy=False) + normal = unit_vector(normal[:3]) + if perspective is not None: + # perspective projection + perspective = numpy.array(perspective[:3], dtype=numpy.float64, + copy=False) + M[0, 0] = M[1, 1] = M[2, 2] = numpy.dot(perspective-point, normal) + M[:3, :3] -= numpy.outer(perspective, normal) + if pseudo: + # preserve relative depth + M[:3, :3] -= numpy.outer(normal, normal) + M[:3, 3] = numpy.dot(point, normal) * (perspective+normal) + else: + M[:3, 3] = numpy.dot(point, normal) * perspective + M[3, :3] = -normal + M[3, 3] = numpy.dot(perspective, normal) + elif direction is not None: + # parallel projection + direction = numpy.array(direction[:3], dtype=numpy.float64, copy=False) + scale = numpy.dot(direction, normal) + M[:3, :3] -= numpy.outer(direction, normal) / scale + M[:3, 3] = direction * (numpy.dot(point, normal) / scale) + else: + # orthogonal projection + M[:3, :3] -= numpy.outer(normal, normal) + M[:3, 3] = numpy.dot(point, normal) * normal + return M + + +def projection_from_matrix(matrix, pseudo=False): + """Return projection plane and perspective point from projection matrix. + + Return values are same as arguments for projection_matrix function: + point, normal, direction, perspective, and pseudo. + + >>> point = numpy.random.random(3) - 0.5 + >>> normal = numpy.random.random(3) - 0.5 + >>> direct = numpy.random.random(3) - 0.5 + >>> persp = numpy.random.random(3) - 0.5 + >>> P0 = projection_matrix(point, normal) + >>> result = projection_from_matrix(P0) + >>> P1 = projection_matrix(*result) + >>> is_same_transform(P0, P1) + True + >>> P0 = projection_matrix(point, normal, direct) + >>> result = projection_from_matrix(P0) + >>> P1 = projection_matrix(*result) + >>> is_same_transform(P0, P1) + True + >>> P0 = projection_matrix(point, normal, perspective=persp, pseudo=False) + >>> result = projection_from_matrix(P0, pseudo=False) + >>> P1 = projection_matrix(*result) + >>> is_same_transform(P0, P1) + True + >>> P0 = projection_matrix(point, normal, perspective=persp, pseudo=True) + >>> result = projection_from_matrix(P0, pseudo=True) + >>> P1 = projection_matrix(*result) + >>> is_same_transform(P0, P1) + True + + """ + M = numpy.array(matrix, dtype=numpy.float64, copy=False) + M33 = M[:3, :3] + l, V = numpy.linalg.eig(M) + i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-8)[0] + if not pseudo and len(i): + # point: any eigenvector corresponding to eigenvalue 1 + point = numpy.real(V[:, i[-1]]).squeeze() + point /= point[3] + # direction: unit eigenvector corresponding to eigenvalue 0 + l, V = numpy.linalg.eig(M33) + i = numpy.where(abs(numpy.real(l)) < 1e-8)[0] + if not len(i): + raise ValueError("no eigenvector corresponding to eigenvalue 0") + direction = numpy.real(V[:, i[0]]).squeeze() + direction /= vector_norm(direction) + # normal: unit eigenvector of M33.T corresponding to eigenvalue 0 + l, V = numpy.linalg.eig(M33.T) + i = numpy.where(abs(numpy.real(l)) < 1e-8)[0] + if len(i): + # parallel projection + normal = numpy.real(V[:, i[0]]).squeeze() + normal /= vector_norm(normal) + return point, normal, direction, None, False + else: + # orthogonal projection, where normal equals direction vector + return point, direction, None, None, False + else: + # perspective projection + i = numpy.where(abs(numpy.real(l)) > 1e-8)[0] + if not len(i): + raise ValueError( + "no eigenvector not corresponding to eigenvalue 0") + point = numpy.real(V[:, i[-1]]).squeeze() + point /= point[3] + normal = - M[3, :3] + perspective = M[:3, 3] / numpy.dot(point[:3], normal) + if pseudo: + perspective -= normal + return point, normal, None, perspective, pseudo + + +def clip_matrix(left, right, bottom, top, near, far, perspective=False): + """Return matrix to obtain normalized device coordinates from frustrum. + + The frustrum bounds are axis-aligned along x (left, right), + y (bottom, top) and z (near, far). + + Normalized device coordinates are in range [-1, 1] if coordinates are + inside the frustrum. + + If perspective is True the frustrum is a truncated pyramid with the + perspective point at origin and direction along z axis, otherwise an + orthographic canonical view volume (a box). + + Homogeneous coordinates transformed by the perspective clip matrix + need to be dehomogenized (devided by w coordinate). + + >>> frustrum = numpy.random.rand(6) + >>> frustrum[1] += frustrum[0] + >>> frustrum[3] += frustrum[2] + >>> frustrum[5] += frustrum[4] + >>> M = clip_matrix(*frustrum, perspective=False) + >>> numpy.dot(M, [frustrum[0], frustrum[2], frustrum[4], 1.0]) + array([-1., -1., -1., 1.]) + >>> numpy.dot(M, [frustrum[1], frustrum[3], frustrum[5], 1.0]) + array([ 1., 1., 1., 1.]) + >>> M = clip_matrix(*frustrum, perspective=True) + >>> v = numpy.dot(M, [frustrum[0], frustrum[2], frustrum[4], 1.0]) + >>> v / v[3] + array([-1., -1., -1., 1.]) + >>> v = numpy.dot(M, [frustrum[1], frustrum[3], frustrum[4], 1.0]) + >>> v / v[3] + array([ 1., 1., -1., 1.]) + + """ + if left >= right or bottom >= top or near >= far: + raise ValueError("invalid frustrum") + if perspective: + if near <= _EPS: + raise ValueError("invalid frustrum: near <= 0") + t = 2.0 * near + M = ((-t/(right-left), 0.0, (right+left)/(right-left), 0.0), + (0.0, -t/(top-bottom), (top+bottom)/(top-bottom), 0.0), + (0.0, 0.0, -(far+near)/(far-near), t*far/(far-near)), + (0.0, 0.0, -1.0, 0.0)) + else: + M = ((2.0/(right-left), 0.0, 0.0, (right+left)/(left-right)), + (0.0, 2.0/(top-bottom), 0.0, (top+bottom)/(bottom-top)), + (0.0, 0.0, 2.0/(far-near), (far+near)/(near-far)), + (0.0, 0.0, 0.0, 1.0)) + return numpy.array(M, dtype=numpy.float64) + + +def shear_matrix(angle, direction, point, normal): + """Return matrix to shear by angle along direction vector on shear plane. + + The shear plane is defined by a point and normal vector. The direction + vector must be orthogonal to the plane's normal vector. + + A point P is transformed by the shear matrix into P" such that + the vector P-P" is parallel to the direction vector and its extent is + given by the angle of P-P'-P", where P' is the orthogonal projection + of P onto the shear plane. + + >>> angle = (random.random() - 0.5) * 4*math.pi + >>> direct = numpy.random.random(3) - 0.5 + >>> point = numpy.random.random(3) - 0.5 + >>> normal = numpy.cross(direct, numpy.random.random(3)) + >>> S = shear_matrix(angle, direct, point, normal) + >>> numpy.allclose(1.0, numpy.linalg.det(S)) + True + + """ + normal = unit_vector(normal[:3]) + direction = unit_vector(direction[:3]) + if abs(numpy.dot(normal, direction)) > 1e-6: + raise ValueError("direction and normal vectors are not orthogonal") + angle = math.tan(angle) + M = numpy.identity(4) + M[:3, :3] += angle * numpy.outer(direction, normal) + M[:3, 3] = -angle * numpy.dot(point[:3], normal) * direction + return M + + +def shear_from_matrix(matrix): + """Return shear angle, direction and plane from shear matrix. + + >>> angle = (random.random() - 0.5) * 4*math.pi + >>> direct = numpy.random.random(3) - 0.5 + >>> point = numpy.random.random(3) - 0.5 + >>> normal = numpy.cross(direct, numpy.random.random(3)) + >>> S0 = shear_matrix(angle, direct, point, normal) + >>> angle, direct, point, normal = shear_from_matrix(S0) + >>> S1 = shear_matrix(angle, direct, point, normal) + >>> is_same_transform(S0, S1) + True + + """ + M = numpy.array(matrix, dtype=numpy.float64, copy=False) + M33 = M[:3, :3] + # normal: cross independent eigenvectors corresponding to the eigenvalue 1 + l, V = numpy.linalg.eig(M33) + i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-4)[0] + if len(i) < 2: + raise ValueError("No two linear independent eigenvectors found %s" % l) + V = numpy.real(V[:, i]).squeeze().T + lenorm = -1.0 + for i0, i1 in ((0, 1), (0, 2), (1, 2)): + n = numpy.cross(V[i0], V[i1]) + l = vector_norm(n) + if l > lenorm: + lenorm = l + normal = n + normal /= lenorm + # direction and angle + direction = numpy.dot(M33 - numpy.identity(3), normal) + angle = vector_norm(direction) + direction /= angle + angle = math.atan(angle) + # point: eigenvector corresponding to eigenvalue 1 + l, V = numpy.linalg.eig(M) + i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-8)[0] + if not len(i): + raise ValueError("no eigenvector corresponding to eigenvalue 1") + point = numpy.real(V[:, i[-1]]).squeeze() + point /= point[3] + return angle, direction, point, normal + + +def decompose_matrix(matrix): + """Return sequence of transformations from transformation matrix. + + matrix : array_like + Non-degenerative homogeneous transformation matrix + + Return tuple of: + scale : vector of 3 scaling factors + shear : list of shear factors for x-y, x-z, y-z axes + angles : list of Euler angles about static x, y, z axes + translate : translation vector along x, y, z axes + perspective : perspective partition of matrix + + Raise ValueError if matrix is of wrong type or degenerative. + + >>> T0 = translation_matrix((1, 2, 3)) + >>> scale, shear, angles, trans, persp = decompose_matrix(T0) + >>> T1 = translation_matrix(trans) + >>> numpy.allclose(T0, T1) + True + >>> S = scale_matrix(0.123) + >>> scale, shear, angles, trans, persp = decompose_matrix(S) + >>> scale[0] + 0.123 + >>> R0 = euler_matrix(1, 2, 3) + >>> scale, shear, angles, trans, persp = decompose_matrix(R0) + >>> R1 = euler_matrix(*angles) + >>> numpy.allclose(R0, R1) + True + + """ + M = numpy.array(matrix, dtype=numpy.float64, copy=True).T + if abs(M[3, 3]) < _EPS: + raise ValueError("M[3, 3] is zero") + M /= M[3, 3] + P = M.copy() + P[:, 3] = 0, 0, 0, 1 + if not numpy.linalg.det(P): + raise ValueError("Matrix is singular") + + scale = numpy.zeros((3, ), dtype=numpy.float64) + shear = [0, 0, 0] + angles = [0, 0, 0] + + if any(abs(M[:3, 3]) > _EPS): + perspective = numpy.dot(M[:, 3], numpy.linalg.inv(P.T)) + M[:, 3] = 0, 0, 0, 1 + else: + perspective = numpy.array((0, 0, 0, 1), dtype=numpy.float64) + + translate = M[3, :3].copy() + M[3, :3] = 0 + + row = M[:3, :3].copy() + scale[0] = vector_norm(row[0]) + row[0] /= scale[0] + shear[0] = numpy.dot(row[0], row[1]) + row[1] -= row[0] * shear[0] + scale[1] = vector_norm(row[1]) + row[1] /= scale[1] + shear[0] /= scale[1] + shear[1] = numpy.dot(row[0], row[2]) + row[2] -= row[0] * shear[1] + shear[2] = numpy.dot(row[1], row[2]) + row[2] -= row[1] * shear[2] + scale[2] = vector_norm(row[2]) + row[2] /= scale[2] + shear[1:] /= scale[2] + + if numpy.dot(row[0], numpy.cross(row[1], row[2])) < 0: + scale *= -1 + row *= -1 + + angles[1] = math.asin(-row[0, 2]) + if math.cos(angles[1]): + angles[0] = math.atan2(row[1, 2], row[2, 2]) + angles[2] = math.atan2(row[0, 1], row[0, 0]) + else: + #angles[0] = math.atan2(row[1, 0], row[1, 1]) + angles[0] = math.atan2(-row[2, 1], row[1, 1]) + angles[2] = 0.0 + + return scale, shear, angles, translate, perspective + + +def compose_matrix(scale=None, shear=None, angles=None, translate=None, + perspective=None): + """Return transformation matrix from sequence of transformations. + + This is the inverse of the decompose_matrix function. + + Sequence of transformations: + scale : vector of 3 scaling factors + shear : list of shear factors for x-y, x-z, y-z axes + angles : list of Euler angles about static x, y, z axes + translate : translation vector along x, y, z axes + perspective : perspective partition of matrix + + >>> scale = numpy.random.random(3) - 0.5 + >>> shear = numpy.random.random(3) - 0.5 + >>> angles = (numpy.random.random(3) - 0.5) * (2*math.pi) + >>> trans = numpy.random.random(3) - 0.5 + >>> persp = numpy.random.random(4) - 0.5 + >>> M0 = compose_matrix(scale, shear, angles, trans, persp) + >>> result = decompose_matrix(M0) + >>> M1 = compose_matrix(*result) + >>> is_same_transform(M0, M1) + True + + """ + M = numpy.identity(4) + if perspective is not None: + P = numpy.identity(4) + P[3, :] = perspective[:4] + M = numpy.dot(M, P) + if translate is not None: + T = numpy.identity(4) + T[:3, 3] = translate[:3] + M = numpy.dot(M, T) + if angles is not None: + R = euler_matrix(angles[0], angles[1], angles[2], 'sxyz') + M = numpy.dot(M, R) + if shear is not None: + Z = numpy.identity(4) + Z[1, 2] = shear[2] + Z[0, 2] = shear[1] + Z[0, 1] = shear[0] + M = numpy.dot(M, Z) + if scale is not None: + S = numpy.identity(4) + S[0, 0] = scale[0] + S[1, 1] = scale[1] + S[2, 2] = scale[2] + M = numpy.dot(M, S) + M /= M[3, 3] + return M + + +def orthogonalization_matrix(lengths, angles): + """Return orthogonalization matrix for crystallographic cell coordinates. + + Angles are expected in degrees. + + The de-orthogonalization matrix is the inverse. + + >>> O = orthogonalization_matrix((10., 10., 10.), (90., 90., 90.)) + >>> numpy.allclose(O[:3, :3], numpy.identity(3, float) * 10) + True + >>> O = orthogonalization_matrix([9.8, 12.0, 15.5], [87.2, 80.7, 69.7]) + >>> numpy.allclose(numpy.sum(O), 43.063229) + True + + """ + a, b, c = lengths + angles = numpy.radians(angles) + sina, sinb, _ = numpy.sin(angles) + cosa, cosb, cosg = numpy.cos(angles) + co = (cosa * cosb - cosg) / (sina * sinb) + return numpy.array(( + ( a*sinb*math.sqrt(1.0-co*co), 0.0, 0.0, 0.0), + (-a*sinb*co, b*sina, 0.0, 0.0), + ( a*cosb, b*cosa, c, 0.0), + ( 0.0, 0.0, 0.0, 1.0)), + dtype=numpy.float64) + + +def superimposition_matrix(v0, v1, scaling=False, usesvd=True): + """Return matrix to transform given vector set into second vector set. + + v0 and v1 are shape (3, \*) or (4, \*) arrays of at least 3 vectors. + + If usesvd is True, the weighted sum of squared deviations (RMSD) is + minimized according to the algorithm by W. Kabsch [8]. Otherwise the + quaternion based algorithm by B. Horn [9] is used (slower when using + this Python implementation). + + The returned matrix performs rotation, translation and uniform scaling + (if specified). + + >>> v0 = numpy.random.rand(3, 10) + >>> M = superimposition_matrix(v0, v0) + >>> numpy.allclose(M, numpy.identity(4)) + True + >>> R = random_rotation_matrix(numpy.random.random(3)) + >>> v0 = ((1,0,0), (0,1,0), (0,0,1), (1,1,1)) + >>> v1 = numpy.dot(R, v0) + >>> M = superimposition_matrix(v0, v1) + >>> numpy.allclose(v1, numpy.dot(M, v0)) + True + >>> v0 = (numpy.random.rand(4, 100) - 0.5) * 20.0 + >>> v0[3] = 1.0 + >>> v1 = numpy.dot(R, v0) + >>> M = superimposition_matrix(v0, v1) + >>> numpy.allclose(v1, numpy.dot(M, v0)) + True + >>> S = scale_matrix(random.random()) + >>> T = translation_matrix(numpy.random.random(3)-0.5) + >>> M = concatenate_matrices(T, R, S) + >>> v1 = numpy.dot(M, v0) + >>> v0[:3] += numpy.random.normal(0.0, 1e-9, 300).reshape(3, -1) + >>> M = superimposition_matrix(v0, v1, scaling=True) + >>> numpy.allclose(v1, numpy.dot(M, v0)) + True + >>> M = superimposition_matrix(v0, v1, scaling=True, usesvd=False) + >>> numpy.allclose(v1, numpy.dot(M, v0)) + True + >>> v = numpy.empty((4, 100, 3), dtype=numpy.float64) + >>> v[:, :, 0] = v0 + >>> M = superimposition_matrix(v0, v1, scaling=True, usesvd=False) + >>> numpy.allclose(v1, numpy.dot(M, v[:, :, 0])) + True + + """ + v0 = numpy.array(v0, dtype=numpy.float64, copy=False)[:3] + v1 = numpy.array(v1, dtype=numpy.float64, copy=False)[:3] + + if v0.shape != v1.shape or v0.shape[1] < 3: + raise ValueError("Vector sets are of wrong shape or type.") + + # move centroids to origin + t0 = numpy.mean(v0, axis=1) + t1 = numpy.mean(v1, axis=1) + v0 = v0 - t0.reshape(3, 1) + v1 = v1 - t1.reshape(3, 1) + + if usesvd: + # Singular Value Decomposition of covariance matrix + u, s, vh = numpy.linalg.svd(numpy.dot(v1, v0.T)) + # rotation matrix from SVD orthonormal bases + R = numpy.dot(u, vh) + if numpy.linalg.det(R) < 0.0: + # R does not constitute right handed system + R -= numpy.outer(u[:, 2], vh[2, :]*2.0) + s[-1] *= -1.0 + # homogeneous transformation matrix + M = numpy.identity(4) + M[:3, :3] = R + else: + # compute symmetric matrix N + xx, yy, zz = numpy.sum(v0 * v1, axis=1) + xy, yz, zx = numpy.sum(v0 * numpy.roll(v1, -1, axis=0), axis=1) + xz, yx, zy = numpy.sum(v0 * numpy.roll(v1, -2, axis=0), axis=1) + N = ((xx+yy+zz, yz-zy, zx-xz, xy-yx), + (yz-zy, xx-yy-zz, xy+yx, zx+xz), + (zx-xz, xy+yx, -xx+yy-zz, yz+zy), + (xy-yx, zx+xz, yz+zy, -xx-yy+zz)) + # quaternion: eigenvector corresponding to most positive eigenvalue + l, V = numpy.linalg.eig(N) + q = V[:, numpy.argmax(l)] + q /= vector_norm(q) # unit quaternion + q = numpy.roll(q, -1) # move w component to end + # homogeneous transformation matrix + M = quaternion_matrix(q) + + # scale: ratio of rms deviations from centroid + if scaling: + v0 *= v0 + v1 *= v1 + M[:3, :3] *= math.sqrt(numpy.sum(v1) / numpy.sum(v0)) + + # translation + M[:3, 3] = t1 + T = numpy.identity(4) + T[:3, 3] = -t0 + M = numpy.dot(M, T) + return M + + +def euler_matrix(ai, aj, ak, axes='sxyz'): + """Return homogeneous rotation matrix from Euler angles and axis sequence. + + ai, aj, ak : Euler's roll, pitch and yaw angles + axes : One of 24 axis sequences as string or encoded tuple + + >>> R = euler_matrix(1, 2, 3, 'syxz') + >>> numpy.allclose(numpy.sum(R[0]), -1.34786452) + True + >>> R = euler_matrix(1, 2, 3, (0, 1, 0, 1)) + >>> numpy.allclose(numpy.sum(R[0]), -0.383436184) + True + >>> ai, aj, ak = (4.0*math.pi) * (numpy.random.random(3) - 0.5) + >>> for axes in _AXES2TUPLE.keys(): + ... R = euler_matrix(ai, aj, ak, axes) + >>> for axes in _TUPLE2AXES.keys(): + ... R = euler_matrix(ai, aj, ak, axes) + + """ + try: + firstaxis, parity, repetition, frame = _AXES2TUPLE[axes] + except (AttributeError, KeyError): + _ = _TUPLE2AXES[axes] + firstaxis, parity, repetition, frame = axes + + i = firstaxis + j = _NEXT_AXIS[i+parity] + k = _NEXT_AXIS[i-parity+1] + + if frame: + ai, ak = ak, ai + if parity: + ai, aj, ak = -ai, -aj, -ak + + si, sj, sk = math.sin(ai), math.sin(aj), math.sin(ak) + ci, cj, ck = math.cos(ai), math.cos(aj), math.cos(ak) + cc, cs = ci*ck, ci*sk + sc, ss = si*ck, si*sk + + M = numpy.identity(4) + if repetition: + M[i, i] = cj + M[i, j] = sj*si + M[i, k] = sj*ci + M[j, i] = sj*sk + M[j, j] = -cj*ss+cc + M[j, k] = -cj*cs-sc + M[k, i] = -sj*ck + M[k, j] = cj*sc+cs + M[k, k] = cj*cc-ss + else: + M[i, i] = cj*ck + M[i, j] = sj*sc-cs + M[i, k] = sj*cc+ss + M[j, i] = cj*sk + M[j, j] = sj*ss+cc + M[j, k] = sj*cs-sc + M[k, i] = -sj + M[k, j] = cj*si + M[k, k] = cj*ci + return M + + +def euler_from_matrix(matrix, axes='sxyz'): + """Return Euler angles from rotation matrix for specified axis sequence. + + axes : One of 24 axis sequences as string or encoded tuple + + Note that many Euler angle triplets can describe one matrix. + + >>> R0 = euler_matrix(1, 2, 3, 'syxz') + >>> al, be, ga = euler_from_matrix(R0, 'syxz') + >>> R1 = euler_matrix(al, be, ga, 'syxz') + >>> numpy.allclose(R0, R1) + True + >>> angles = (4.0*math.pi) * (numpy.random.random(3) - 0.5) + >>> for axes in _AXES2TUPLE.keys(): + ... R0 = euler_matrix(axes=axes, *angles) + ... R1 = euler_matrix(axes=axes, *euler_from_matrix(R0, axes)) + ... if not numpy.allclose(R0, R1): print axes, "failed" + + """ + try: + firstaxis, parity, repetition, frame = _AXES2TUPLE[axes.lower()] + except (AttributeError, KeyError): + _ = _TUPLE2AXES[axes] + firstaxis, parity, repetition, frame = axes + + i = firstaxis + j = _NEXT_AXIS[i+parity] + k = _NEXT_AXIS[i-parity+1] + + M = numpy.array(matrix, dtype=numpy.float64, copy=False)[:3, :3] + if repetition: + sy = math.sqrt(M[i, j]*M[i, j] + M[i, k]*M[i, k]) + if sy > _EPS: + ax = math.atan2( M[i, j], M[i, k]) + ay = math.atan2( sy, M[i, i]) + az = math.atan2( M[j, i], -M[k, i]) + else: + ax = math.atan2(-M[j, k], M[j, j]) + ay = math.atan2( sy, M[i, i]) + az = 0.0 + else: + cy = math.sqrt(M[i, i]*M[i, i] + M[j, i]*M[j, i]) + if cy > _EPS: + ax = math.atan2( M[k, j], M[k, k]) + ay = math.atan2(-M[k, i], cy) + az = math.atan2( M[j, i], M[i, i]) + else: + ax = math.atan2(-M[j, k], M[j, j]) + ay = math.atan2(-M[k, i], cy) + az = 0.0 + + if parity: + ax, ay, az = -ax, -ay, -az + if frame: + ax, az = az, ax + return ax, ay, az + + +def euler_from_quaternion(quaternion, axes='sxyz'): + """Return Euler angles from quaternion for specified axis sequence. + + >>> angles = euler_from_quaternion([0.06146124, 0, 0, 0.99810947]) + >>> numpy.allclose(angles, [0.123, 0, 0]) + True + + """ + return euler_from_matrix(quaternion_matrix(quaternion), axes) + + +def quaternion_from_euler(ai, aj, ak, axes='sxyz'): + """Return quaternion from Euler angles and axis sequence. + + ai, aj, ak : Euler's roll, pitch and yaw angles + axes : One of 24 axis sequences as string or encoded tuple + + >>> q = quaternion_from_euler(1, 2, 3, 'ryxz') + >>> numpy.allclose(q, [0.310622, -0.718287, 0.444435, 0.435953]) + True + + """ + try: + firstaxis, parity, repetition, frame = _AXES2TUPLE[axes.lower()] + except (AttributeError, KeyError): + _ = _TUPLE2AXES[axes] + firstaxis, parity, repetition, frame = axes + + i = firstaxis + j = _NEXT_AXIS[i+parity] + k = _NEXT_AXIS[i-parity+1] + + if frame: + ai, ak = ak, ai + if parity: + aj = -aj + + ai /= 2.0 + aj /= 2.0 + ak /= 2.0 + ci = math.cos(ai) + si = math.sin(ai) + cj = math.cos(aj) + sj = math.sin(aj) + ck = math.cos(ak) + sk = math.sin(ak) + cc = ci*ck + cs = ci*sk + sc = si*ck + ss = si*sk + + quaternion = numpy.empty((4, ), dtype=numpy.float64) + if repetition: + quaternion[i] = cj*(cs + sc) + quaternion[j] = sj*(cc + ss) + quaternion[k] = sj*(cs - sc) + quaternion[3] = cj*(cc - ss) + else: + quaternion[i] = cj*sc - sj*cs + quaternion[j] = cj*ss + sj*cc + quaternion[k] = cj*cs - sj*sc + quaternion[3] = cj*cc + sj*ss + if parity: + quaternion[j] *= -1 + + return quaternion + + +def quaternion_about_axis(angle, axis): + """Return quaternion for rotation about axis. + + >>> q = quaternion_about_axis(0.123, (1, 0, 0)) + >>> numpy.allclose(q, [0.06146124, 0, 0, 0.99810947]) + True + + """ + quaternion = numpy.zeros((4, ), dtype=numpy.float64) + quaternion[:3] = axis[:3] + qlen = vector_norm(quaternion) + if qlen > _EPS: + quaternion *= math.sin(angle/2.0) / qlen + quaternion[3] = math.cos(angle/2.0) + return quaternion + + +def quaternion_matrix(quaternion): + """Return homogeneous rotation matrix from quaternion. + + >>> R = quaternion_matrix([0.06146124, 0, 0, 0.99810947]) + >>> numpy.allclose(R, rotation_matrix(0.123, (1, 0, 0))) + True + + """ + q = numpy.array(quaternion[:4], dtype=numpy.float64, copy=True) + nq = numpy.dot(q, q) + if nq < _EPS: + return numpy.identity(4) + q *= math.sqrt(2.0 / nq) + q = numpy.outer(q, q) + return numpy.array(( + (1.0-q[1, 1]-q[2, 2], q[0, 1]-q[2, 3], q[0, 2]+q[1, 3], 0.0), + ( q[0, 1]+q[2, 3], 1.0-q[0, 0]-q[2, 2], q[1, 2]-q[0, 3], 0.0), + ( q[0, 2]-q[1, 3], q[1, 2]+q[0, 3], 1.0-q[0, 0]-q[1, 1], 0.0), + ( 0.0, 0.0, 0.0, 1.0) + ), dtype=numpy.float64) + + +def quaternion_from_matrix(matrix): + """Return quaternion from rotation matrix. + + >>> R = rotation_matrix(0.123, (1, 2, 3)) + >>> q = quaternion_from_matrix(R) + >>> numpy.allclose(q, [0.0164262, 0.0328524, 0.0492786, 0.9981095]) + True + + """ + q = numpy.empty((4, ), dtype=numpy.float64) + M = numpy.array(matrix, dtype=numpy.float64, copy=False)[:4, :4] + t = numpy.trace(M) + if t > M[3, 3]: + q[3] = t + q[2] = M[1, 0] - M[0, 1] + q[1] = M[0, 2] - M[2, 0] + q[0] = M[2, 1] - M[1, 2] + else: + i, j, k = 0, 1, 2 + if M[1, 1] > M[0, 0]: + i, j, k = 1, 2, 0 + if M[2, 2] > M[i, i]: + i, j, k = 2, 0, 1 + t = M[i, i] - (M[j, j] + M[k, k]) + M[3, 3] + q[i] = t + q[j] = M[i, j] + M[j, i] + q[k] = M[k, i] + M[i, k] + q[3] = M[k, j] - M[j, k] + q *= 0.5 / math.sqrt(t * M[3, 3]) + return q + + +def quaternion_multiply(quaternion1, quaternion0): + """Return multiplication of two quaternions. + + >>> q = quaternion_multiply([1, -2, 3, 4], [-5, 6, 7, 8]) + >>> numpy.allclose(q, [-44, -14, 48, 28]) + True + + """ + x0, y0, z0, w0 = quaternion0 + x1, y1, z1, w1 = quaternion1 + return numpy.array(( + x1*w0 + y1*z0 - z1*y0 + w1*x0, + -x1*z0 + y1*w0 + z1*x0 + w1*y0, + x1*y0 - y1*x0 + z1*w0 + w1*z0, + -x1*x0 - y1*y0 - z1*z0 + w1*w0), dtype=numpy.float64) + + +def quaternion_conjugate(quaternion): + """Return conjugate of quaternion. + + >>> q0 = random_quaternion() + >>> q1 = quaternion_conjugate(q0) + >>> q1[3] == q0[3] and all(q1[:3] == -q0[:3]) + True + + """ + return numpy.array((-quaternion[0], -quaternion[1], + -quaternion[2], quaternion[3]), dtype=numpy.float64) + + +def quaternion_inverse(quaternion): + """Return inverse of quaternion. + + >>> q0 = random_quaternion() + >>> q1 = quaternion_inverse(q0) + >>> numpy.allclose(quaternion_multiply(q0, q1), [0, 0, 0, 1]) + True + + """ + return quaternion_conjugate(quaternion) / numpy.dot(quaternion, quaternion) + + +def quaternion_slerp(quat0, quat1, fraction, spin=0, shortestpath=True): + """Return spherical linear interpolation between two quaternions. + + >>> q0 = random_quaternion() + >>> q1 = random_quaternion() + >>> q = quaternion_slerp(q0, q1, 0.0) + >>> numpy.allclose(q, q0) + True + >>> q = quaternion_slerp(q0, q1, 1.0, 1) + >>> numpy.allclose(q, q1) + True + >>> q = quaternion_slerp(q0, q1, 0.5) + >>> angle = math.acos(numpy.dot(q0, q)) + >>> numpy.allclose(2.0, math.acos(numpy.dot(q0, q1)) / angle) or \ + numpy.allclose(2.0, math.acos(-numpy.dot(q0, q1)) / angle) + True + + """ + q0 = unit_vector(quat0[:4]) + q1 = unit_vector(quat1[:4]) + if fraction == 0.0: + return q0 + elif fraction == 1.0: + return q1 + d = numpy.dot(q0, q1) + if abs(abs(d) - 1.0) < _EPS: + return q0 + if shortestpath and d < 0.0: + # invert rotation + d = -d + q1 *= -1.0 + angle = math.acos(d) + spin * math.pi + if abs(angle) < _EPS: + return q0 + isin = 1.0 / math.sin(angle) + q0 *= math.sin((1.0 - fraction) * angle) * isin + q1 *= math.sin(fraction * angle) * isin + q0 += q1 + return q0 + + +def random_quaternion(rand=None): + """Return uniform random unit quaternion. + + rand: array like or None + Three independent random variables that are uniformly distributed + between 0 and 1. + + >>> q = random_quaternion() + >>> numpy.allclose(1.0, vector_norm(q)) + True + >>> q = random_quaternion(numpy.random.random(3)) + >>> q.shape + (4,) + + """ + if rand is None: + rand = numpy.random.rand(3) + else: + assert len(rand) == 3 + r1 = numpy.sqrt(1.0 - rand[0]) + r2 = numpy.sqrt(rand[0]) + pi2 = math.pi * 2.0 + t1 = pi2 * rand[1] + t2 = pi2 * rand[2] + return numpy.array((numpy.sin(t1)*r1, + numpy.cos(t1)*r1, + numpy.sin(t2)*r2, + numpy.cos(t2)*r2), dtype=numpy.float64) + + +def random_rotation_matrix(rand=None): + """Return uniform random rotation matrix. + + rnd: array like + Three independent random variables that are uniformly distributed + between 0 and 1 for each returned quaternion. + + >>> R = random_rotation_matrix() + >>> numpy.allclose(numpy.dot(R.T, R), numpy.identity(4)) + True + + """ + return quaternion_matrix(random_quaternion(rand)) + + +class Arcball(object): + """Virtual Trackball Control. + + >>> ball = Arcball() + >>> ball = Arcball(initial=numpy.identity(4)) + >>> ball.place([320, 320], 320) + >>> ball.down([500, 250]) + >>> ball.drag([475, 275]) + >>> R = ball.matrix() + >>> numpy.allclose(numpy.sum(R), 3.90583455) + True + >>> ball = Arcball(initial=[0, 0, 0, 1]) + >>> ball.place([320, 320], 320) + >>> ball.setaxes([1,1,0], [-1, 1, 0]) + >>> ball.setconstrain(True) + >>> ball.down([400, 200]) + >>> ball.drag([200, 400]) + >>> R = ball.matrix() + >>> numpy.allclose(numpy.sum(R), 0.2055924) + True + >>> ball.next() + + """ + + def __init__(self, initial=None): + """Initialize virtual trackball control. + + initial : quaternion or rotation matrix + + """ + self._axis = None + self._axes = None + self._radius = 1.0 + self._center = [0.0, 0.0] + self._vdown = numpy.array([0, 0, 1], dtype=numpy.float64) + self._constrain = False + + if initial is None: + self._qdown = numpy.array([0, 0, 0, 1], dtype=numpy.float64) + else: + initial = numpy.array(initial, dtype=numpy.float64) + if initial.shape == (4, 4): + self._qdown = quaternion_from_matrix(initial) + elif initial.shape == (4, ): + initial /= vector_norm(initial) + self._qdown = initial + else: + raise ValueError("initial not a quaternion or matrix.") + + self._qnow = self._qpre = self._qdown + + def place(self, center, radius): + """Place Arcball, e.g. when window size changes. + + center : sequence[2] + Window coordinates of trackball center. + radius : float + Radius of trackball in window coordinates. + + """ + self._radius = float(radius) + self._center[0] = center[0] + self._center[1] = center[1] + + def setaxes(self, *axes): + """Set axes to constrain rotations.""" + if axes is None: + self._axes = None + else: + self._axes = [unit_vector(axis) for axis in axes] + + def setconstrain(self, constrain): + """Set state of constrain to axis mode.""" + self._constrain = constrain == True + + def getconstrain(self): + """Return state of constrain to axis mode.""" + return self._constrain + + def down(self, point): + """Set initial cursor window coordinates and pick constrain-axis.""" + self._vdown = arcball_map_to_sphere(point, self._center, self._radius) + self._qdown = self._qpre = self._qnow + + if self._constrain and self._axes is not None: + self._axis = arcball_nearest_axis(self._vdown, self._axes) + self._vdown = arcball_constrain_to_axis(self._vdown, self._axis) + else: + self._axis = None + + def drag(self, point): + """Update current cursor window coordinates.""" + vnow = arcball_map_to_sphere(point, self._center, self._radius) + + if self._axis is not None: + vnow = arcball_constrain_to_axis(vnow, self._axis) + + self._qpre = self._qnow + + t = numpy.cross(self._vdown, vnow) + if numpy.dot(t, t) < _EPS: + self._qnow = self._qdown + else: + q = [t[0], t[1], t[2], numpy.dot(self._vdown, vnow)] + self._qnow = quaternion_multiply(q, self._qdown) + + def next(self, acceleration=0.0): + """Continue rotation in direction of last drag.""" + q = quaternion_slerp(self._qpre, self._qnow, 2.0+acceleration, False) + self._qpre, self._qnow = self._qnow, q + + def matrix(self): + """Return homogeneous rotation matrix.""" + return quaternion_matrix(self._qnow) + + +def arcball_map_to_sphere(point, center, radius): + """Return unit sphere coordinates from window coordinates.""" + v = numpy.array(((point[0] - center[0]) / radius, + (center[1] - point[1]) / radius, + 0.0), dtype=numpy.float64) + n = v[0]*v[0] + v[1]*v[1] + if n > 1.0: + v /= math.sqrt(n) # position outside of sphere + else: + v[2] = math.sqrt(1.0 - n) + return v + + +def arcball_constrain_to_axis(point, axis): + """Return sphere point perpendicular to axis.""" + v = numpy.array(point, dtype=numpy.float64, copy=True) + a = numpy.array(axis, dtype=numpy.float64, copy=True) + v -= a * numpy.dot(a, v) # on plane + n = vector_norm(v) + if n > _EPS: + if v[2] < 0.0: + v *= -1.0 + v /= n + return v + if a[2] == 1.0: + return numpy.array([1, 0, 0], dtype=numpy.float64) + return unit_vector([-a[1], a[0], 0]) + + +def arcball_nearest_axis(point, axes): + """Return axis, which arc is nearest to point.""" + point = numpy.array(point, dtype=numpy.float64, copy=False) + nearest = None + mx = -1.0 + for axis in axes: + t = numpy.dot(arcball_constrain_to_axis(point, axis), point) + if t > mx: + nearest = axis + mx = t + return nearest + + +# epsilon for testing whether a number is close to zero +_EPS = numpy.finfo(float).eps * 4.0 + +# axis sequences for Euler angles +_NEXT_AXIS = [1, 2, 0, 1] + +# map axes strings to/from tuples of inner axis, parity, repetition, frame +_AXES2TUPLE = { + 'sxyz': (0, 0, 0, 0), 'sxyx': (0, 0, 1, 0), 'sxzy': (0, 1, 0, 0), + 'sxzx': (0, 1, 1, 0), 'syzx': (1, 0, 0, 0), 'syzy': (1, 0, 1, 0), + 'syxz': (1, 1, 0, 0), 'syxy': (1, 1, 1, 0), 'szxy': (2, 0, 0, 0), + 'szxz': (2, 0, 1, 0), 'szyx': (2, 1, 0, 0), 'szyz': (2, 1, 1, 0), + 'rzyx': (0, 0, 0, 1), 'rxyx': (0, 0, 1, 1), 'ryzx': (0, 1, 0, 1), + 'rxzx': (0, 1, 1, 1), 'rxzy': (1, 0, 0, 1), 'ryzy': (1, 0, 1, 1), + 'rzxy': (1, 1, 0, 1), 'ryxy': (1, 1, 1, 1), 'ryxz': (2, 0, 0, 1), + 'rzxz': (2, 0, 1, 1), 'rxyz': (2, 1, 0, 1), 'rzyz': (2, 1, 1, 1)} + +_TUPLE2AXES = dict((v, k) for k, v in _AXES2TUPLE.items()) + +# helper functions + +def vector_norm(data, axis=None, out=None): + """Return length, i.e. eucledian norm, of ndarray along axis. + + >>> v = numpy.random.random(3) + >>> n = vector_norm(v) + >>> numpy.allclose(n, numpy.linalg.norm(v)) + True + >>> v = numpy.random.rand(6, 5, 3) + >>> n = vector_norm(v, axis=-1) + >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=2))) + True + >>> n = vector_norm(v, axis=1) + >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=1))) + True + >>> v = numpy.random.rand(5, 4, 3) + >>> n = numpy.empty((5, 3), dtype=numpy.float64) + >>> vector_norm(v, axis=1, out=n) + >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=1))) + True + >>> vector_norm([]) + 0.0 + >>> vector_norm([1.0]) + 1.0 + + """ + data = numpy.array(data, dtype=numpy.float64, copy=True) + if out is None: + if data.ndim == 1: + return math.sqrt(numpy.dot(data, data)) + data *= data + out = numpy.atleast_1d(numpy.sum(data, axis=axis)) + numpy.sqrt(out, out) + return out + else: + data *= data + numpy.sum(data, axis=axis, out=out) + numpy.sqrt(out, out) + + +def unit_vector(data, axis=None, out=None): + """Return ndarray normalized by length, i.e. eucledian norm, along axis. + + >>> v0 = numpy.random.random(3) + >>> v1 = unit_vector(v0) + >>> numpy.allclose(v1, v0 / numpy.linalg.norm(v0)) + True + >>> v0 = numpy.random.rand(5, 4, 3) + >>> v1 = unit_vector(v0, axis=-1) + >>> v2 = v0 / numpy.expand_dims(numpy.sqrt(numpy.sum(v0*v0, axis=2)), 2) + >>> numpy.allclose(v1, v2) + True + >>> v1 = unit_vector(v0, axis=1) + >>> v2 = v0 / numpy.expand_dims(numpy.sqrt(numpy.sum(v0*v0, axis=1)), 1) + >>> numpy.allclose(v1, v2) + True + >>> v1 = numpy.empty((5, 4, 3), dtype=numpy.float64) + >>> unit_vector(v0, axis=1, out=v1) + >>> numpy.allclose(v1, v2) + True + >>> list(unit_vector([])) + [] + >>> list(unit_vector([1.0])) + [1.0] + + """ + if out is None: + data = numpy.array(data, dtype=numpy.float64, copy=True) + if data.ndim == 1: + data /= math.sqrt(numpy.dot(data, data)) + return data + else: + if out is not data: + out[:] = numpy.array(data, copy=False) + data = out + length = numpy.atleast_1d(numpy.sum(data*data, axis)) + numpy.sqrt(length, length) + if axis is not None: + length = numpy.expand_dims(length, axis) + data /= length + if out is None: + return data + + +def random_vector(size): + """Return array of random doubles in the half-open interval [0.0, 1.0). + + >>> v = random_vector(10000) + >>> numpy.all(v >= 0.0) and numpy.all(v < 1.0) + True + >>> v0 = random_vector(10) + >>> v1 = random_vector(10) + >>> numpy.any(v0 == v1) + False + + """ + return numpy.random.random(size) + + +def inverse_matrix(matrix): + """Return inverse of square transformation matrix. + + >>> M0 = random_rotation_matrix() + >>> M1 = inverse_matrix(M0.T) + >>> numpy.allclose(M1, numpy.linalg.inv(M0.T)) + True + >>> for size in range(1, 7): + ... M0 = numpy.random.rand(size, size) + ... M1 = inverse_matrix(M0) + ... if not numpy.allclose(M1, numpy.linalg.inv(M0)): print size + + """ + return numpy.linalg.inv(matrix) + + +def concatenate_matrices(*matrices): + """Return concatenation of series of transformation matrices. + + >>> M = numpy.random.rand(16).reshape((4, 4)) - 0.5 + >>> numpy.allclose(M, concatenate_matrices(M)) + True + >>> numpy.allclose(numpy.dot(M, M.T), concatenate_matrices(M, M.T)) + True + + """ + M = numpy.identity(4) + for i in matrices: + M = numpy.dot(M, i) + return M + + +def is_same_transform(matrix0, matrix1): + """Return True if two matrices perform same transformation. + + >>> is_same_transform(numpy.identity(4), numpy.identity(4)) + True + >>> is_same_transform(numpy.identity(4), random_rotation_matrix()) + False + + """ + matrix0 = numpy.array(matrix0, dtype=numpy.float64, copy=True) + matrix0 /= matrix0[3, 3] + matrix1 = numpy.array(matrix1, dtype=numpy.float64, copy=True) + matrix1 /= matrix1[3, 3] + return numpy.allclose(matrix0, matrix1) + + +def _import_module(module_name, warn=True, prefix='_py_', ignore='_'): + """Try import all public attributes from module into global namespace. + + Existing attributes with name clashes are renamed with prefix. + Attributes starting with underscore are ignored by default. + + Return True on successful import. + + """ + try: + module = __import__(module_name) + except ImportError: + if warn: + warnings.warn("Failed to import module " + module_name) + else: + for attr in dir(module): + if ignore and attr.startswith(ignore): + continue + if prefix: + if attr in globals(): + globals()[prefix + attr] = globals()[attr] + elif warn: + warnings.warn("No Python implementation of " + attr) + globals()[attr] = getattr(module, attr) + return True diff --git a/port/PyAssimp/setup.py b/port/PyAssimp/setup.py index 9b30aa7ba..e683f7a81 100644 --- a/port/PyAssimp/setup.py +++ b/port/PyAssimp/setup.py @@ -3,11 +3,11 @@ import os from distutils.core import setup setup(name='pyassimp', - version='0.1', + version='3.3', license='ISC', description='Python bindings for the Open Asset Import Library (ASSIMP)', url='https://github.com/assimp/assimp', packages=['pyassimp'], data_files=[('share/pyassimp', ['README.md']), - ('share/examples/pyassimp', ['scripts/' + f for f in os.listdir('scripts/')])] + ('share/examples/pyassimp', ['scripts/' + f for f in os.listdir('scripts/')])], requires=['numpy'] ) diff --git a/port/iOS/build.sh b/port/iOS/build.sh index beca60014..44683f0c7 100755 --- a/port/iOS/build.sh +++ b/port/iOS/build.sh @@ -22,7 +22,7 @@ CPP_DEV_TARGET_LIST=(miphoneos-version-min mios-simulator-version-min) CPP_DEV_TARGET= CPP_STD_LIB_LIST=(libc++ libstdc++) CPP_STD_LIB= -CPP_STD_LIST=(c++03 c++11 c++14) +CPP_STD_LIST=(c++11 c++14) CPP_STD= function join { local IFS="$1"; shift; echo "$*"; } diff --git a/scripts/BlenderImporter/genblenddna.py b/scripts/BlenderImporter/genblenddna.py index 484f01a5d..caa58ded7 100644 --- a/scripts/BlenderImporter/genblenddna.py +++ b/scripts/BlenderImporter/genblenddna.py @@ -58,24 +58,16 @@ template_src = "BlenderScene.cpp.template" # workaround for stackoverflowing when reading the linked list of scene objects # with the usual approach. See embedded notes for details. Structure_Convert_Base_fullcode = """ -template <> void Structure :: Convert ( - Base& dest, - const FileDatabase& db - ) const -{ +template <> void Structure::Convert( Base& dest, const FileDatabase& db ) const { // note: as per https://github.com/assimp/assimp/issues/128, // reading the Object linked list recursively is prone to stack overflow. // This structure converter is therefore an hand-written exception that // does it iteratively. const int initial_pos = db.reader->GetCurrentPos(); - std::pair todo = std::make_pair(&dest, initial_pos); - Base* saved_prev = NULL; - while(true) { - Base& cur_dest = *todo.first; db.reader->SetCurrentPos(todo.second); @@ -303,8 +295,3 @@ def main(): if __name__ == "__main__": sys.exit(main()) - - - - - diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 5a76016fd..84c45451f 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -55,20 +55,38 @@ SOURCE_GROUP( unit FILES ) SET( TEST_SRCS + unit/AbstractImportExportBase.cpp unit/TestIOSystem.h + unit/TestModelFactory.h + unit/ut3DImportExport.cpp + unit/ut3DSImportExport.cpp + unit/utACImportExport.cpp + unit/utAMFImportExport.cpp + unit/utASEImportExport.cpp + unit/utAnim.cpp unit/AssimpAPITest.cpp + unit/utB3DImportExport.cpp unit/utBatchLoader.cpp unit/utBlenderIntermediate.cpp unit/utBlendImportAreaLight.cpp + unit/utBlenderImportExport.cpp unit/utBlendImportMaterials.cpp + unit/utBVHImportExport.cpp unit/utColladaExportCamera.cpp unit/utColladaExportLight.cpp + unit/utColladaImportExport.cpp + unit/utCSMImportExport.cpp unit/utDefaultIOStream.cpp + unit/utDXFImporterExporter.cpp unit/utFastAtof.cpp + unit/utFBXImporterExporter.cpp unit/utFindDegenerates.cpp unit/utFindInvalidData.cpp unit/utFixInfacingNormals.cpp unit/utGenNormals.cpp + unit/utglTFImportExport.cpp + unit/utHMPImportExport.cpp + unit/utIFCImportExport.cpp unit/utImporter.cpp unit/utImproveCacheLocality.cpp unit/utIOSystem.cpp @@ -76,20 +94,24 @@ SET( TEST_SRCS unit/utIssues.cpp unit/utJoinVertices.cpp unit/utLimitBoneWeights.cpp + unit/utLWSImportExport.cpp unit/utMaterialSystem.cpp unit/utMatrix3x3.cpp unit/utMatrix4x4.cpp unit/utMetadata.cpp unit/SceneDiffer.h unit/SceneDiffer.cpp + unit/utSIBImporter.cpp unit/utObjImportExport.cpp unit/utPretransformVertices.cpp + unit/utPLYImportExport.cpp unit/utRemoveComments.cpp unit/utRemoveComponent.cpp unit/utRemoveRedundantMaterials.cpp unit/utScenePreprocessor.cpp unit/utSharedPPData.cpp unit/utStringUtils.cpp + unit/utSMDImportExport.cpp unit/utSortByPType.cpp unit/utSplitLargeMeshes.cpp unit/utTargetAnimation.cpp @@ -98,6 +120,9 @@ SET( TEST_SRCS unit/utTypes.cpp unit/utVertexTriangleAdjacency.cpp unit/utVersion.cpp + unit/utVector3.cpp + unit/utXImporterExporter.cpp + unit/utD3MFImportExport.cpp ) SOURCE_GROUP( tests FILES ${TEST_SRCS} ) @@ -120,6 +145,10 @@ ELSE( WIN32 ) SET( platform_libs pthread ) ENDIF( WIN32 ) +IF(MSVC) + add_definitions(-D_CRT_SECURE_NO_WARNINGS) +ENDIF(MSVC) + target_link_libraries( unit assimp ${platform_libs} ) add_subdirectory(headercheck) diff --git a/test/models/BLEND/box.blend b/test/models/BLEND/box.blend new file mode 100644 index 000000000..28ebbcc1f Binary files /dev/null and b/test/models/BLEND/box.blend differ diff --git a/test/models/FBX/spider.fbx b/test/models/FBX/spider.fbx new file mode 100644 index 000000000..cc5a38798 Binary files /dev/null and b/test/models/FBX/spider.fbx differ diff --git a/test/models/OBJ/cube_with_vertexcolors.obj b/test/models/OBJ/cube_with_vertexcolors.obj new file mode 100644 index 000000000..d78d3a555 --- /dev/null +++ b/test/models/OBJ/cube_with_vertexcolors.obj @@ -0,0 +1,30 @@ +g cube + +v 0.0 0.0 0.0 124 110 120 +v 0.0 0.0 1.0 24 0 121 +v 0.0 1.0 0.0 4 0 44 +v 0.0 1.0 1.0 224 0 10 +v 1.0 0.0 0.0 24 200 25 +v 1.0 0.0 1.0 124 10 56 +v 1.0 1.0 0.0 78 10 50 +v 1.0 1.0 1.0 23 0 200 + +vn 0.0 0.0 1.0 +vn 0.0 0.0 -1.0 +vn 0.0 1.0 0.0 +vn 0.0 -1.0 0.0 +vn 1.0 0.0 0.0 +vn -1.0 0.0 0.0 + +f 1//2 7//2 5//2 +f 1//2 3//2 7//2 +f 1//6 4//6 3//6 +f 1//6 2//6 4//6 +f 3//3 8//3 7//3 +f 3//3 4//3 8//3 +f 5//5 7//5 8//5 +f 5//5 8//5 6//5 +f 1//4 5//4 6//4 +f 1//4 6//4 2//4 +f 2//1 6//1 8//1 +f 2//1 8//1 4//1 \ No newline at end of file diff --git a/test/models/OBJ/spider.obj b/test/models/OBJ/spider.obj index b4e53c4a7..6779e27df 100644 --- a/test/models/OBJ/spider.obj +++ b/test/models/OBJ/spider.obj @@ -1,3436 +1,3226 @@ -# Wavefront OBJ exported by MilkShape 3D - -mtllib spider.mtl - -v 1.160379 4.512684 6.449167 -v 22.656172 10.214539 16.869690 -v 4.568314 16.857113 5.619617 -v 14.402298 32.891869 3.414829 -v 27.520809 27.080326 11.451565 -v 39.186256 16.230997 12.632702 -v -6.442715 10.777405 -0.537529 -v -8.120363 15.684460 -10.500000 -v -0.886770 23.423717 -4.342854 -v -0.886770 23.423717 -16.657145 -v 14.402298 32.891869 -26.414825 -v 12.953165 36.873337 -11.500000 -v 30.527317 37.503952 -2.733282 -v 30.527317 37.503952 -20.266716 -v 44.301250 33.964729 -11.500000 -v 45.094967 27.710945 2.684846 -v 57.936218 30.276533 -11.500000 -v 54.503593 5.934020 -11.500000 -v 51.091763 11.234900 2.684846 -v 45.094967 27.710945 -25.684845 -v 39.186256 16.230997 -35.632706 -v 51.091763 11.234900 -25.684845 -v 27.520809 27.080326 -34.451565 -v 4.568314 16.857113 -26.619617 -v 1.160379 4.512684 -27.449169 -v 22.656172 10.214539 -39.869690 -v 7.838881 -6.414188 -26.619617 -v 30.910042 -12.462786 -26.414825 -v 37.223816 0.421531 -34.451565 -v 46.227112 -5.630886 -20.266716 -v 32.359184 -16.444252 -11.500000 -v 30.910042 -12.462786 3.414829 -v 46.227112 -5.630886 -2.733282 -v 4.405119 -14.230042 -16.657145 -v -4.681486 -8.784435 -10.500000 -v 4.405119 -14.230042 -4.342854 -v -4.421391 -3.605049 -0.537529 -v 7.838881 -6.414188 5.619617 -v 37.223816 0.421531 11.451565 -v -9.876476 2.961555 -10.500000 -v -6.442715 10.777405 -20.462471 -v -4.421391 -3.605049 -20.462471 -v -41.856613 -0.754846 9.430772 -v -27.950212 1.303017 3.081421 -v -32.625862 10.860188 8.479760 -v -24.401524 12.224749 -3.122690 -v -18.826405 5.435883 0.583091 -v -11.221268 -4.132547 1.127722 -v -44.882015 11.887197 1.421121 -v -44.844704 15.228493 -10.000000 -v -35.570240 16.598591 -2.941359 -v -35.570240 16.598591 -17.058643 -v -24.401524 12.224749 -16.877310 -v -23.778482 14.142281 -10.000000 -v -8.432302 6.445052 -5.957618 -v -8.432302 6.445052 -14.042381 -v -1.337093 1.108110 -10.000000 -v -3.309273 -1.735224 -0.594703 -v -0.419668 -7.642198 -10.000000 -v -6.305182 -14.182098 -10.000000 -v -6.229439 -10.722575 -0.594703 -v -3.309273 -1.735224 -19.405296 -v -11.221268 -4.132547 -21.127720 -v -6.229439 -10.722575 -19.405296 -v -18.826405 5.435883 -20.583092 -v -32.625862 10.860188 -28.479759 -v -41.856613 -0.754846 -29.430771 -v -27.950212 1.303017 -23.081421 -v -39.194733 -9.356718 -28.479759 -v -31.498898 -9.618716 -16.877310 -v -22.998137 -7.403383 -20.583092 -v -31.498898 -9.618716 -3.122690 -v -51.647591 -5.708694 -10.000000 -v -49.713837 -2.983590 1.421121 -v -39.194733 -9.356718 8.479760 -v -22.998137 -7.403383 0.583091 -v -50.637024 8.975393 -10.000000 -v -44.882015 11.887197 -21.421116 -v -49.713837 -2.983590 -21.421116 -v -40.671478 -3.472887 -21.369167 -v -47.098404 7.389261 -39.585033 -v -55.443726 28.016960 -51.020649 -v -56.413048 27.518753 -54.602135 -v -67.985016 13.435572 -79.020355 -v -81.678322 -31.379181 -101.291557 -v -87.605835 -39.983532 -104.351723 -v -41.963333 -2.246161 -18.485233 -v -47.146698 8.704388 -37.681622 -v -55.805077 29.500343 -50.360577 -v -57.932991 29.207901 -55.039448 -v -69.893600 14.105843 -80.144135 -v -82.778503 -29.843521 -101.266586 -v -87.950195 -39.455147 -104.260185 -v -45.274612 -1.921316 -17.562561 -v -48.862389 8.964325 -36.150715 -v -56.924980 29.827461 -49.555809 -v -60.012169 29.560211 -54.086689 -v -72.068741 14.206520 -79.360901 -v -83.474747 -29.518608 -100.470779 -v -88.234985 -39.350231 -103.866043 -v -48.111877 -2.742970 -19.296001 -v -50.953510 7.973352 -36.145107 -v -57.960136 28.752014 -49.212387 -v -61.084877 28.310402 -52.461258 -v -72.872513 13.661798 -77.260391 -v -83.242752 -30.649029 -99.503448 -v -88.245728 -39.747742 -103.466080 -v -48.338589 -4.092402 -22.380154 -v -51.845413 6.477697 -37.669014 -v -58.131039 27.083824 -49.588871 -v -60.343346 26.399567 -51.387123 -v -71.699661 12.881830 -75.424393 -v -82.257225 -32.383606 -99.092934 -v -87.974380 -40.348385 -103.361534 -v -45.784027 -4.953472 -24.492657 -v -50.866463 5.603586 -39.574917 -v -57.308998 26.079071 -50.401779 -v -58.345963 25.266647 -51.673157 -v -69.433350 12.453951 -75.235397 -v -81.260262 -33.416180 -99.548431 -v -87.625252 -40.699837 -103.631096 -v -42.371857 -4.677759 -24.042709 -v -48.753845 6.009277 -40.427631 -v -56.113029 26.494377 -51.038967 -v -56.596836 25.764732 -53.103985 -v -67.780197 12.700411 -76.835770 -v -81.002632 -32.969162 -100.526863 -v -87.461220 -40.537483 -104.071754 -v -87.871048 -40.017475 -103.858307 -v -44.645119 -3.443838 -21.089790 -v -41.960121 -3.154671 1.817622 -v -49.196304 7.804556 21.293488 -v -54.254692 27.272881 30.448885 -v -55.486473 27.498093 33.976906 -v -67.468346 9.109057 43.496418 -v -85.971497 -32.074684 52.638474 -v -91.959503 -39.732742 57.540760 -v -42.838028 -1.822748 -1.173377 -v -49.368126 8.476757 19.085897 -v -54.925758 28.342400 29.366055 -v -57.455009 28.706230 33.835514 -v -69.611961 9.454971 44.296452 -v -87.014175 -30.514137 52.422035 -v -92.290428 -39.211590 57.382488 -v -45.988678 -1.450131 -2.535743 -v -50.884972 7.785149 17.480999 -v -55.983421 28.087738 28.457573 -v -59.415642 28.146988 32.740971 -v -71.615807 8.682786 43.434380 -v -87.756073 -30.296221 51.631001 -v -92.600067 -39.161705 56.996368 -v -49.039581 -2.317410 -1.243531 -v -52.604645 6.250553 17.687332 -v -56.631248 26.700691 28.407564 -v -59.891945 26.241493 31.517431 -v -71.970940 7.373976 41.559353 -v -87.638519 -31.584965 50.861065 -v -92.655235 -39.620594 56.673161 -v -49.693314 -3.771509 1.730138 -v -53.232193 5.028540 19.549484 -v -56.381416 25.225716 29.253666 -v -58.525230 24.424589 31.086275 -v -70.409966 6.514069 40.083332 -v -86.750092 -33.409981 50.691986 -v -92.414413 -40.242748 56.656296 -v -47.457619 -4.717469 4.146055 -v -52.295036 5.039291 21.665272 -v -55.422035 24.773529 30.358753 -v -56.344688 24.064466 31.772144 -v -68.108238 6.750601 40.117752 -v -85.759720 -34.396961 51.251087 -v -92.058937 -40.559631 56.958412 -v -44.016029 -4.442948 4.184989 -v -50.498901 6.274748 22.441425 -v -54.475548 25.684616 30.890648 -v -54.992317 25.432327 33.058613 -v -66.799141 7.905498 41.636730 -v -85.413208 -33.802715 52.117340 -v -91.856499 -40.332680 57.352055 -v -92.262108 -39.837402 57.079941 -v -45.856201 -3.096684 0.989461 -v -32.535782 -3.154671 -19.162537 -v -35.098988 7.804556 -38.979305 -v -37.554058 27.272881 -51.632816 -v -36.856800 27.498093 -55.304066 -v -39.321587 4.109057 -79.209648 -v -40.877087 -32.426605 -89.889732 -v -43.385780 -41.583160 -95.218742 -v -34.383732 -1.822748 -16.652164 -v -36.351589 8.476757 -37.153374 -v -38.676632 28.342400 -51.030598 -v -38.632298 28.706230 -56.165878 -v -40.777988 4.454971 -80.974312 -v -41.686413 -30.958584 -90.761086 -v -43.694237 -41.068901 -95.434502 -v -37.810333 -1.450131 -16.449551 -v -38.467670 7.785149 -36.521919 -v -40.046833 28.087738 -50.772652 -v -40.877529 28.146988 -56.198307 -v -42.944405 3.682786 -81.229652 -v -42.730568 -30.604935 -90.669960 -v -44.167656 -40.946091 -95.343666 -v -40.235279 -2.317410 -18.707310 -v -39.853783 6.250553 -37.560444 -v -40.632877 26.700691 -51.053253 -v -41.901775 26.241493 -55.376835 -v -44.189468 2.373976 -79.783394 -v -43.223267 -31.631912 -89.685066 -v -44.449516 -41.307182 -95.014656 -v -39.832531 -3.771509 -21.725227 -v -39.466175 5.028540 -39.486904 -v -39.993458 25.225716 -51.661091 -v -40.933758 24.424589 -54.320080 -v -43.575638 1.514069 -77.724648 -v -42.793549 -33.266224 -88.547981 -v -44.327614 -41.880302 -94.695259 -v -36.905369 -4.717469 -23.230795 -v -37.596676 5.039291 -40.850639 -v -38.610062 24.773529 -52.138432 -v -38.702415 24.064466 -53.823795 -v -41.565083 1.750601 -76.603584 -v -41.764935 -34.277184 -88.114983 -v -43.893715 -42.233826 -94.625923 -v -33.658024 -4.442948 -22.090290 -v -35.653107 6.274748 -40.624737 -v -37.524441 25.684616 -52.125816 -v -36.888000 25.432327 -54.261726 -v -39.671886 2.905498 -77.264503 -v -40.912052 -33.903522 -88.712090 -v -43.474564 -42.101616 -94.858925 -v -43.913261 -41.588737 -95.027351 -v -36.480152 -3.096684 -19.716850 -v -32.202831 -2.602407 -2.728741 -v -34.576370 8.107365 17.247396 -v -39.058979 27.085625 30.088219 -v -38.037266 27.494461 33.666477 -v -34.540394 17.314922 46.759007 -v -28.008705 -33.484039 66.392296 -v -28.327166 -39.131874 75.694695 -v -34.502445 -1.655421 -5.032196 -v -36.107876 8.519890 15.562401 -v -40.406155 27.934097 29.606636 -v -39.897282 28.393272 34.709156 -v -35.845226 17.436094 48.666241 -v -28.966595 -31.870440 66.611580 -v -28.696358 -38.612408 75.698051 -v -37.944061 -1.883905 -4.875526 -v -38.125301 7.461887 15.155594 -v -41.730480 27.441978 29.493328 -v -41.995846 27.455360 34.976097 -v -37.806667 16.306143 49.146633 -v -30.060040 -31.714916 66.549873 -v -29.190708 -38.598446 75.644356 -v -39.936069 -3.115807 -2.376659 -v -39.109486 5.730080 16.333321 -v -42.034714 25.979904 29.833651 -v -42.752686 25.387024 34.266190 -v -38.947704 14.775947 47.838451 -v -30.465645 -33.134476 66.253670 -v -29.437933 -39.100452 75.574059 -v -38.978443 -4.423484 0.582626 -v -38.319347 4.628540 18.208712 -v -41.089756 24.648787 30.371326 -v -41.597874 23.745718 33.114037 -v -38.409119 13.997741 45.726810 -v -29.878033 -35.060257 65.945946 -v -29.251896 -39.740452 75.540138 -v -35.792297 -4.822233 1.773979 -v -36.349819 4.986736 19.369556 -v -39.607189 24.451040 30.701448 -v -39.401020 23.767401 32.387234 -v -36.596428 14.557548 44.401737 -v -28.739618 -36.042065 65.858498 -v -28.772676 -40.036469 75.568077 -v -32.776875 -4.011777 0.300282 -v -34.684055 6.534969 18.941736 -v -38.703423 25.535545 30.575422 -v -37.816402 25.435768 32.633106 -v -34.874714 16.033844 44.861141 -v -27.907713 -35.340607 66.057121 -v -28.361128 -39.765636 75.636909 -v -28.862520 -39.283707 75.622292 -v -36.019009 -3.216418 -1.765163 -v -23.494484 -3.472887 -4.813465 -v -14.855604 7.389261 12.463476 -v -12.426659 28.016960 26.410450 -v -10.523695 27.518753 29.595638 -v -0.997257 13.435572 54.882141 -v 3.675970 -31.379181 79.706490 -v 5.211229 -39.983532 86.198250 -v -26.466400 -2.246161 -5.887527 -v -16.258350 8.704388 11.176008 -v -13.152491 29.500343 26.211857 -v -11.264965 29.207901 30.992771 -v -1.514698 14.105843 57.035713 -v 3.385566 -29.843521 80.767952 -v 5.039108 -39.455147 86.510231 -v -29.430336 -1.921316 -4.146553 -v -18.551411 8.964325 11.346706 -v -14.509346 29.827461 26.458410 -v -13.394642 29.560211 31.826565 -v -3.589094 14.206520 58.056274 -v 2.445001 -29.518608 81.251015 -v 4.587766 -39.350231 86.691200 -v -30.154327 -2.742970 -0.901443 -v -20.008060 7.973352 12.847034 -v -15.475464 28.752014 26.964478 -v -15.309046 28.310402 31.469078 -v -5.658417 13.661798 57.175323 -v 1.562493 -30.649029 80.791862 -v 4.197091 -39.747742 86.604866 -v -28.093273 -4.092402 1.404079 -v -19.531422 6.477697 14.547209 -v -15.323357 27.083824 27.348948 -v -15.566597 26.399567 30.189514 -v -6.164387 12.881830 55.056259 -v 1.402615 -32.383606 79.736290 -v 4.161307 -40.348385 86.316307 -v -24.799110 -4.953472 1.033955 -v -17.480396 5.603586 15.166962 -v -14.167568 26.079071 27.322308 -v -13.973347 25.266647 28.951418 -v -4.726027 12.453951 53.294724 -v 2.085765 -33.416180 78.879143 -v 4.507323 -40.699837 86.042763 -v -22.752468 -4.677759 -1.733124 -v -15.399448 6.009277 14.239624 -v -12.878420 26.494377 26.904627 -v -11.729046 25.764732 28.687138 -v -2.426441 12.700411 53.217262 -v 3.097473 -32.969162 78.865883 -v 4.974566 -40.537483 85.990211 -v 4.668339 -40.017475 86.336220 -v -26.455776 -3.443838 -2.149143 -v -23.494484 -3.472887 -15.186539 -v -14.855604 7.389261 -32.463478 -v -12.426659 28.016960 -46.410446 -v -10.523695 27.518753 -49.595634 -v -0.997257 13.435572 -74.882133 -v 3.675970 -31.379181 -99.706490 -v 5.211229 -39.983532 -106.198250 -v -26.466400 -2.246161 -14.112476 -v -16.258350 8.704388 -31.176010 -v -13.152491 29.500343 -46.211853 -v -11.264965 29.207901 -50.992767 -v -1.514698 14.105843 -77.035713 -v 3.385567 -29.843521 -100.767952 -v 5.039108 -39.455147 -106.510231 -v -29.430336 -1.921316 -15.853451 -v -18.551411 8.964325 -31.346710 -v -14.509346 29.827461 -46.458412 -v -13.394642 29.560211 -51.826561 -v -3.589094 14.206520 -78.056267 -v 2.445001 -29.518608 -101.251015 -v 4.587765 -39.350231 -106.691200 -v -30.154327 -2.742970 -19.098560 -v -20.008060 7.973352 -32.847034 -v -15.475464 28.752014 -46.964478 -v -15.309046 28.310402 -51.469078 -v -5.658417 13.661798 -77.175316 -v 1.562493 -30.649029 -100.791862 -v 4.197090 -39.747742 -106.604866 -v -28.093273 -4.092402 -21.404083 -v -19.531422 6.477697 -34.547211 -v -15.323357 27.083824 -47.348946 -v -15.566597 26.399567 -50.189514 -v -6.164387 12.881830 -75.056252 -v 1.402615 -32.383606 -99.736290 -v 4.161308 -40.348385 -106.316307 -v -24.799110 -4.953472 -21.033958 -v -17.480396 5.603586 -35.166962 -v -14.167568 26.079071 -47.322304 -v -13.973347 25.266647 -48.951416 -v -4.726027 12.453951 -73.294716 -v 2.085765 -33.416180 -98.879143 -v 4.507324 -40.699837 -106.042763 -v -22.752468 -4.677759 -18.266880 -v -15.399448 6.009277 -34.239624 -v -12.878420 26.494377 -46.904625 -v -11.729046 25.764732 -48.687134 -v -2.426441 12.700411 -73.217262 -v 3.097473 -32.969162 -98.865883 -v 4.974566 -40.537483 -105.990211 -v 4.668339 -40.017475 -106.336220 -v -26.455776 -3.443838 -17.850861 -v -11.205212 -7.280232 -5.841879 -v -2.877649 5.517601 11.076941 -v 1.745674 26.136940 21.007814 -v 4.282450 26.647736 23.713144 -v 14.860218 5.642468 47.618973 -v 19.200661 -29.660152 61.265373 -v 19.897118 -38.155197 68.039124 -v -14.102657 -6.075779 -7.124460 -v -4.907511 6.093641 10.126818 -v 0.474552 27.209396 20.979715 -v 3.233435 28.024002 25.249430 -v 14.560253 6.223589 49.838684 -v 18.976063 -28.078100 62.273354 -v 19.749865 -37.607536 68.329926 -v -17.115952 -5.533359 -5.528418 -v -7.036675 5.467060 10.781746 -v -0.824137 27.009163 21.510900 -v 1.346554 27.595062 26.518511 -v 12.858335 5.598270 51.276505 -v 18.042278 -27.676632 62.709824 -v 19.300247 -37.467232 68.489960 -v -17.975994 -6.061425 -2.255571 -v -7.661821 4.109711 12.548561 -v -1.172436 25.687050 22.201403 -v 0.042627 25.683922 26.564661 -v 11.036061 4.237392 50.849693 -v 17.102531 -28.757996 62.246178 -v 18.886868 -37.839897 68.398773 -v -16.035194 -7.262345 0.229479 -v -6.312249 3.043694 14.096798 -v -0.308071 24.238619 22.531248 -v 0.303562 23.729671 25.353144 -v 10.465651 3.165695 48.879730 -v 16.864386 -30.507956 61.231514 -v 18.820993 -38.444942 68.125061 -v -12.754986 -8.231801 0.055506 -v -4.004155 3.071719 14.260595 -v 1.118067 23.754597 22.252031 -v 1.932854 23.203932 23.796263 -v 11.576626 3.190188 46.849907 -v 17.507248 -31.608736 60.429893 -v 19.152214 -38.826717 67.874832 -v -10.605457 -8.239758 -2.646498 -v -2.475620 4.172726 12.916639 -v 2.032040 24.599438 21.574022 -v 3.703634 24.502615 23.066408 -v 13.532379 4.292479 46.288857 -v 18.546949 -31.231438 60.444954 -v 19.631145 -38.697784 67.836639 -v 19.348364 -38.148495 68.156281 -v -14.256489 -6.954941 -3.301691 -v -12.538544 -7.280232 -13.491455 -v -4.210981 5.517601 -30.410275 -v 0.412342 26.136940 -40.341148 -v 2.949118 26.647736 -43.046478 -v 13.526886 5.642468 -66.952316 -v 17.867329 -29.660152 -80.598724 -v 18.563786 -38.155197 -87.372467 -v -15.435989 -6.075779 -12.208874 -v -6.240843 6.093641 -29.460152 -v -0.858780 27.209396 -40.313049 -v 1.900103 28.024002 -44.582764 -v 13.226921 6.223589 -69.172028 -v 17.642731 -28.078100 -81.606705 -v 18.416533 -37.607536 -87.663269 -v -18.449284 -5.533359 -13.804916 -v -8.370007 5.467060 -30.115082 -v -2.157469 27.009163 -40.844238 -v 0.013222 27.595062 -45.851845 -v 11.525003 5.598270 -70.609848 -v 16.708946 -27.676632 -82.043167 -v 17.966915 -37.467232 -87.823303 -v -19.309326 -6.061425 -17.077763 -v -8.995153 4.109711 -31.881897 -v -2.505768 25.687050 -41.534737 -v -1.290705 25.683922 -45.897995 -v 9.702729 4.237392 -70.183029 -v 15.769199 -28.757996 -81.579529 -v 17.553535 -37.839897 -87.732117 -v -17.368526 -7.262345 -19.562813 -v -7.645581 3.043694 -33.430130 -v -1.641403 24.238619 -41.864586 -v -1.029770 23.729671 -44.686478 -v 9.132318 3.165695 -68.213074 -v 15.531054 -30.507956 -80.564865 -v 17.487661 -38.444942 -87.458405 -v -14.088318 -8.231801 -19.388840 -v -5.337487 3.071719 -33.593929 -v -0.215265 23.754597 -41.585365 -v 0.599522 23.203932 -43.129601 -v 10.243294 3.190188 -66.183243 -v 16.173916 -31.608736 -79.763245 -v 17.818882 -38.826717 -87.208176 -v -11.938789 -8.239758 -16.686836 -v -3.808952 4.172726 -32.249973 -v 0.698708 24.599438 -40.907356 -v 2.370302 24.502615 -42.399742 -v 12.199047 4.292479 -65.622192 -v 17.213617 -31.231438 -79.778305 -v 18.297813 -38.697784 -87.169983 -v 18.015032 -38.148495 -87.489624 -v -15.589821 -6.954941 -16.031643 -v -66.772987 -11.885618 -0.202999 -v -63.971184 3.661695 -3.830468 -v -61.496513 6.340155 -5.812276 -v -66.772987 -11.885618 -0.202999 -v -64.845985 4.368711 -2.075660 -v -61.447578 8.190097 -3.647036 -v -66.772987 -11.885618 -0.202999 -v -67.137108 4.622091 -1.531196 -v -62.557804 11.305613 -3.485914 -v -66.772987 -11.885618 -0.202999 -v -69.119194 4.231085 -2.607096 -v -63.991096 13.340770 -5.450253 -v -66.772987 -11.885618 -0.202999 -v -69.299873 3.490133 -4.493171 -v -64.668205 12.763025 -8.060863 -v -66.772987 -11.885618 -0.202999 -v -67.542992 2.957121 -5.769162 -v -64.079262 10.007396 -9.351896 -v -66.772987 -11.885618 -0.202999 -v -65.171471 3.033510 -5.474240 -v -62.667759 7.148978 -8.351185 -v -62.986851 9.870845 -6.308486 -v -66.772987 -11.885618 -0.202999 -v -66.724846 1.179926 10.029461 -v -59.689461 8.144950 1.861810 -v -58.212650 12.086802 -3.032124 -v -66.724846 1.179926 10.029461 -v -57.915882 6.628378 1.958869 -v -55.509857 10.279719 -2.976122 -v -66.724846 1.179926 10.029461 -v -56.296860 6.188433 3.356508 -v -52.637226 10.233272 -1.254851 -v -66.724846 1.179926 10.029461 -v -56.051727 7.156466 5.002278 -v -51.757839 11.982401 0.835560 -v -66.724846 1.179926 10.029461 -v -57.364841 8.803489 5.656901 -v -53.533970 14.210047 1.721019 -v -66.724846 1.179926 10.029461 -v -59.247578 9.889247 4.827473 -v -56.628082 15.238695 0.734676 -v -66.724846 1.179926 10.029461 -v -60.282143 9.596194 3.138459 -v -58.710255 14.293749 -1.380639 -v -55.284286 12.617801 -0.764661 -v -66.724846 1.179926 10.029461 -v -53.999989 26.333338 -9.944447 -v -53.999989 2.333334 -9.944447 -v -50.999989 3.941031 -4.748295 -v -53.999989 3.941031 -3.944447 -v -55.800003 6.941027 -4.748295 -v -57.996159 5.774363 -6.944447 -v -58.800007 5.774363 -9.944447 -v -43.607685 8.333335 -9.944447 -v -45.444431 8.333335 -0.081627 -v -48.803837 8.333335 -0.944447 -v -53.999989 10.666674 1.822437 -v -59.196140 8.333335 -0.944447 -v -62.999989 8.333335 -4.748294 -v -64.192299 7.533351 -9.944447 -v -37.199986 18.654428 -9.944447 -v -39.252125 18.654428 -0.061920 -v -43.644428 18.654428 3.756354 -v -53.999989 14.333338 2.055553 -v -61.410072 13.476199 -1.042666 -v -64.609299 13.476199 -6.367094 -v -66.399986 12.333346 -9.944447 -v -38.807682 21.886042 -9.944447 -v -40.644428 21.886042 -0.760713 -v -44.448277 21.886042 2.546009 -v -53.999989 20.333338 0.447858 -v -60.293266 19.476198 -2.199143 -v -63.063873 19.476198 -6.810235 -v -64.392296 20.333338 -9.944447 -v -43.199986 24.251795 -9.944447 -v -44.003834 24.251795 -7.336517 -v -46.644428 24.251795 -0.760711 -v -53.999989 24.725641 -3.944446 -v -56.999985 24.725641 -4.748293 -v -59.196140 24.725641 -6.944447 -v -59.999992 24.725641 -9.944447 -v -61.567451 17.809526 -2.544080 -v -61.859703 18.476198 -3.143273 -v -62.298088 18.642870 -4.042075 -v -62.736469 18.142870 -4.940860 -v -62.955631 16.976198 -5.390261 -v -63.247864 16.309526 -5.989458 -v -63.320908 15.142870 -6.139256 -v -62.955631 14.642870 -5.390261 -v -62.371128 14.476198 -4.191869 -v -61.640526 15.309526 -2.693877 -v -61.421349 16.642870 -2.244477 -v -61.724983 18.155695 -3.369263 -v -61.894066 18.041590 -3.958856 -v -62.070351 17.699663 -4.573657 -v -62.118629 16.981066 -4.741918 -v -62.201881 16.161669 -5.032282 -v -62.366032 15.399149 -5.604844 -v -62.332207 15.061815 -5.486823 -v -62.077385 15.070856 -4.598178 -v -61.738106 15.737185 -3.414914 -v -61.553413 16.745081 -2.770823 -v -61.582451 17.634455 -2.872150 -v -6.305182 -14.182098 -10.000000 -v -6.229439 -10.722575 -0.594703 -v -6.229439 -10.722575 -19.405296 -v -39.194733 -9.356718 -28.479759 -v -31.498898 -9.618716 -16.877310 -v -22.998137 -7.403383 -20.583092 -v -15.182299 -14.329319 -14.042381 -v -32.121948 -11.536249 -10.000000 -v -31.498898 -9.618716 -3.122690 -v -15.182299 -14.329319 -5.957618 -v -44.949730 -12.268521 -17.058643 -v -51.647591 -5.708694 -10.000000 -v -44.949730 -12.268521 -2.941359 -v -49.713837 -2.983590 1.421121 -v -39.194733 -9.356718 8.479760 -v -22.998137 -7.403383 0.583091 -v -49.713837 -2.983590 -21.421116 -v -53.999989 26.333338 -9.988887 -v -53.999989 2.333334 -9.988887 -v -50.999989 3.941031 -15.185039 -v -53.999989 3.941031 -15.988886 -v -55.800003 6.941027 -15.185039 -v -57.996159 5.774363 -12.988887 -v -58.800007 5.774363 -9.988887 -v -43.607685 8.333335 -9.988887 -v -45.444431 8.333335 -19.851706 -v -48.803837 8.333335 -18.988886 -v -53.999989 10.666674 -21.755770 -v -59.196140 8.333335 -18.988886 -v -62.999989 8.333335 -15.185039 -v -64.192299 7.533351 -9.988887 -v -37.199986 18.654428 -9.988887 -v -39.252125 18.654428 -19.871412 -v -43.644428 18.654428 -23.689688 -v -53.999989 14.333338 -21.988886 -v -61.410072 13.476199 -18.890669 -v -64.609299 13.476199 -13.566239 -v -66.399986 12.333346 -9.988887 -v -38.807682 21.886042 -9.988887 -v -40.644428 21.886042 -19.172621 -v -44.448277 21.886042 -22.479342 -v -53.999989 20.333338 -20.381189 -v -60.293266 19.476198 -17.734190 -v -63.063873 19.476198 -13.123098 -v -64.392296 20.333338 -9.988887 -v -43.199986 24.251795 -9.988887 -v -44.003834 24.251795 -12.596816 -v -46.644428 24.251795 -19.172621 -v -53.999989 24.725641 -15.988886 -v -56.999985 24.725641 -15.185040 -v -59.196140 24.725641 -12.988887 -v -59.999992 24.725641 -9.988887 -v -61.567451 17.809526 -17.389254 -v -61.859703 18.476198 -16.790060 -v -62.298088 18.642870 -15.891256 -v -62.736469 18.142870 -14.992473 -v -62.955631 16.976198 -14.543073 -v -63.247864 16.309526 -13.943875 -v -63.320908 15.142870 -13.794078 -v -62.955631 14.642870 -14.543073 -v -62.371128 14.476198 -15.741465 -v -61.640526 15.309526 -17.239454 -v -61.421349 16.642870 -17.688856 -v -61.724983 18.155695 -16.564070 -v -61.894066 18.041590 -15.974478 -v -62.070351 17.699663 -15.359674 -v -62.118629 16.981066 -15.191415 -v -62.201881 16.161669 -14.901052 -v -62.366032 15.399149 -14.328490 -v -62.332207 15.061815 -14.446509 -v -62.077385 15.070856 -15.335154 -v -61.738106 15.737185 -16.518419 -v -61.553413 16.745081 -17.162512 -v -61.582451 17.634455 -17.061182 -v -66.591156 -11.976528 -20.112152 -v -63.789349 3.570786 -16.484684 -v -61.314701 6.249245 -14.502876 -v -66.591156 -11.976528 -20.112152 -v -64.664154 4.277802 -18.239491 -v -61.265766 8.099188 -16.668116 -v -66.591156 -11.976528 -20.112152 -v -66.955276 4.531182 -18.783955 -v -62.375992 11.214703 -16.829237 -v -66.591156 -11.976528 -20.112152 -v -68.937363 4.140175 -17.708055 -v -63.809261 13.249859 -14.864899 -v -66.591156 -11.976528 -20.112152 -v -69.118042 3.399224 -15.821981 -v -64.486374 12.672115 -12.254288 -v -66.591156 -11.976528 -20.112152 -v -67.361160 2.866211 -14.545990 -v -63.897427 9.916485 -10.963255 -v -66.591156 -11.976528 -20.112152 -v -64.989639 2.942601 -14.840912 -v -62.485947 7.058069 -11.963966 -v -62.805038 9.779934 -14.006666 -v -66.591156 -11.976528 -20.112152 -v -66.724846 1.234471 -28.696123 -v -59.689461 8.199495 -20.528475 -v -58.212650 12.141348 -15.634542 -v -66.724846 1.234471 -28.696123 -v -57.915882 6.682923 -20.625532 -v -55.509857 10.334265 -15.690544 -v -66.724846 1.234471 -28.696123 -v -56.296860 6.242978 -22.023172 -v -52.637226 10.287817 -17.411816 -v -66.724846 1.234471 -28.696123 -v -56.051727 7.211011 -23.668943 -v -51.757839 12.036945 -19.502226 -v -66.724846 1.234471 -28.696123 -v -57.364841 8.858034 -24.323565 -v -53.533970 14.264591 -20.387682 -v -66.724846 1.234471 -28.696123 -v -59.247578 9.943792 -23.494139 -v -56.628082 15.293240 -19.401342 -v -66.724846 1.234471 -28.696123 -v -60.282143 9.650740 -21.805124 -v -58.710255 14.348293 -17.286026 -v -55.284286 12.672346 -17.902004 -v -66.724846 1.234471 -28.696123 -v -59.670547 17.670856 -1.853035 -v -58.743614 17.518467 -2.271704 -v -59.467049 18.406742 -2.538975 -v -60.637596 18.103474 -2.337921 -v -61.555885 18.154240 -3.372073 -v -60.575226 18.690861 -3.431842 -v -61.644852 18.262333 -4.609260 -v -61.384178 17.941105 -5.717274 -v -61.278061 15.979283 -6.500585 -v -61.481544 16.983921 -6.448156 -v -62.267357 17.284794 -5.621511 -v -62.614960 16.491169 -5.094203 -v -62.204987 16.131672 -6.081918 -v -62.267357 15.544271 -4.988010 -v -61.384178 14.979936 -4.639498 -v -61.481544 15.243386 -5.814656 -v -60.474304 15.084535 -3.543311 -v -59.564423 15.709020 -2.636348 -v -61.644852 15.446095 -3.584234 -v -61.555885 16.324146 -2.705970 -v -60.575226 15.874639 -2.406815 -v -60.637596 17.027775 -1.946398 -v -59.467049 16.666218 -1.905474 -v -61.745773 17.311893 -2.839265 -v -62.368286 17.410069 -4.243031 -v -62.368286 16.334370 -3.851508 -v -59.670547 17.404190 -17.880299 -v -58.743614 17.251801 -17.461630 -v -59.467049 18.140076 -17.194359 -v -60.637596 17.836807 -17.395412 -v -61.555885 17.887573 -16.361259 -v -60.575226 18.424194 -16.301491 -v -61.644852 17.995667 -15.124073 -v -61.384178 17.674438 -14.016060 -v -61.278061 15.712616 -13.232748 -v -61.481544 16.717255 -13.285177 -v -62.267357 17.018127 -14.111822 -v -62.614960 16.224503 -14.639130 -v -62.204987 15.865005 -13.651415 -v -62.267357 15.277603 -14.745323 -v -61.384178 14.713268 -15.093836 -v -61.481544 14.976719 -13.918678 -v -60.474304 14.817867 -16.190023 -v -59.564423 15.442352 -17.096985 -v -61.644852 15.179428 -16.149099 -v -61.555885 16.057480 -17.027363 -v -60.575226 15.607971 -17.326519 -v -60.637596 16.761108 -17.786934 -v -59.467049 16.399551 -17.827860 -v -61.745773 17.045227 -16.894068 -v -62.368286 17.143402 -15.490303 -v -62.368286 16.067703 -15.881825 -# 762 vertices - -vt 0.186192 0.222718 -vt 0.503180 0.039063 -vt 0.236448 0.237339 -vt 0.381464 0.276197 -vt 0.574917 0.134554 -vt 0.746941 0.113737 -vt 0.074073 0.345855 -vt 0.049334 0.521438 -vt 0.156004 0.412922 -vt 0.156004 0.629954 -vt 0.381464 0.801928 -vt 0.360095 0.539063 -vt 0.619252 0.384554 -vt 0.619252 0.693571 -vt 0.822369 0.539063 -vt 0.834074 0.289063 -vt 1.023438 0.539063 -vt 0.972818 0.539063 -vt 0.922506 0.289063 -vt 0.834074 0.789063 -vt 0.746941 0.964388 -vt 0.922506 0.789063 -vt 0.574917 0.943571 -vt 0.236448 0.805537 -vt 0.186192 0.820158 -vt 0.503180 1.039063 -vt 0.284677 0.805537 -vt 0.624896 0.801928 -vt 0.718002 0.943571 -vt 0.850769 0.693571 -vt 0.646266 0.539063 -vt 0.624896 0.276197 -vt 0.850769 0.384554 -vt 0.234041 0.629954 -vt 0.100045 0.521438 -vt 0.234041 0.412922 -vt 0.103881 0.345855 -vt 0.284677 0.237339 -vt 0.718002 0.134554 -vt 0.023438 0.521438 -vt 0.074073 0.697021 -vt 0.103881 0.697021 -vt -0.065871 -0.410016 -vt 0.403088 -0.109437 -vt 0.127441 -0.364995 -vt 0.403088 0.184267 -vt 0.678735 0.008835 -vt 1.058291 -0.016948 -vt -0.318566 -0.030837 -vt -0.355704 0.509840 -vt -0.042919 0.175683 -vt -0.042919 0.843998 -vt 0.403088 0.835414 -vt 0.403088 0.509840 -vt 1.035339 0.318473 -vt 1.035339 0.701207 -vt 1.348124 0.509840 -vt 1.310985 0.064592 -vt 1.481345 0.509840 -vt 1.310985 0.955089 -vt 1.058291 1.036629 -vt 0.678735 1.010846 -vt 0.127441 1.384675 -vt -0.065871 1.429696 -vt 0.403088 1.129117 -vt -0.488925 0.509840 -vt -0.318566 1.050518 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 0.000000 0.166667 -vt 0.142857 0.166667 -vt 0.142857 0.000000 -vt 0.000000 0.333333 -vt 0.142857 0.333333 -vt 0.000000 0.500000 -vt 0.142857 0.500000 -vt 0.000000 0.666667 -vt 0.142857 0.666667 -vt 0.000000 0.833333 -vt 0.142857 0.833333 -vt 0.142857 1.000000 -vt 0.285714 0.000000 -vt 0.285714 0.166667 -vt 0.285714 0.333333 -vt 0.285714 0.500000 -vt 0.285714 0.666667 -vt 0.285714 0.833333 -vt 0.285714 1.000000 -vt 0.428571 0.166667 -vt 0.428571 0.000000 -vt 0.428571 0.333333 -vt 0.428571 0.500000 -vt 0.428571 0.666667 -vt 0.428571 0.833333 -vt 0.428571 1.000000 -vt 0.571429 0.000000 -vt 0.571429 0.166667 -vt 0.571429 0.333333 -vt 0.571429 0.500000 -vt 0.571429 0.666667 -vt 0.571429 0.833333 -vt 0.571429 1.000000 -vt 0.714286 0.166667 -vt 0.714286 0.000000 -vt 0.714286 0.333333 -vt 0.714286 0.500000 -vt 0.714286 0.666667 -vt 0.714286 0.833333 -vt 0.714286 1.000000 -vt 0.857143 0.000000 -vt 0.857143 0.166667 -vt 0.857143 0.333333 -vt 0.857143 0.500000 -vt 0.857143 0.666667 -vt 0.857143 0.833333 -vt 0.857143 1.000000 -vt 1.000000 0.166667 -vt 1.000000 0.000000 -vt 1.000000 0.333333 -vt 1.000000 0.500000 -vt 1.000000 0.666667 -vt 1.000000 0.833333 -vt 1.000000 1.000000 -vt 0.332919 0.272694 -vt 0.446895 0.397773 -vt 0.456977 0.422004 -vt 0.402899 0.410469 -vt 0.406626 0.379392 -vt 0.370970 0.384244 -vt 0.399625 0.431850 -vt 0.359907 0.385983 -vt 0.439539 0.445817 -vt 0.381768 0.383299 -vt 0.492584 0.441852 -vt 0.420092 0.378214 -vt 0.518816 0.422941 -vt 0.446019 0.374556 -vt 0.498483 0.403324 -vt 0.440026 0.375080 -vt 0.344810 0.338084 -vt 0.488018 0.424091 -vt 0.463158 0.428278 -vt 0.487405 0.409841 -vt 0.434361 0.393007 -vt 0.433297 0.381048 -vt 0.468532 0.409475 -vt 0.417973 0.377579 -vt 0.445613 0.423268 -vt 0.399928 0.385213 -vt 0.435904 0.440834 -vt 0.392751 0.398200 -vt 0.446719 0.448945 -vt 0.401845 0.406762 -vt 0.469911 0.441494 -vt 0.420363 0.404451 -vt 0.190349 0.913269 -vt 0.000000 0.913269 -vt 0.670306 0.913269 -vt 0.379259 0.066987 -vt 0.437931 0.066987 -vt 0.437931 0.933013 -vt 0.379259 0.191987 -vt 0.379259 0.933013 -vt 0.218965 0.143376 -vt 0.218965 0.933013 -vt 0.000000 0.143376 -vt 0.000000 0.933013 -vt 0.719872 0.250000 -vt 0.656896 0.250000 -vt 0.858846 0.347222 -vt 0.379259 0.250000 -vt 0.000000 0.216667 -vt 0.000000 0.250000 -vt 0.000000 0.680045 -vt 0.721310 0.680045 -vt 1.000000 0.680045 -vt 0.875861 0.500000 -vt 0.649727 0.464286 -vt 0.261105 0.464286 -vt 0.000000 0.416667 -vt 0.000000 0.814696 -vt 0.670306 0.814696 -vt 0.911659 0.814696 -vt 0.758518 0.750000 -vt 0.565318 0.714286 -vt 0.228761 0.714286 -vt 0.000000 0.750000 -vt 0.277735 0.533731 -vt 0.316741 0.544409 -vt 0.325355 0.530353 -vt 0.332403 0.512897 -vt 0.419872 0.505953 -vt 0.390216 0.530730 -vt 0.476580 0.558494 -vt 0.529208 0.540675 -vt 0.523592 0.600489 -vt 0.562009 0.596231 -vt 0.516196 0.637547 -vt 0.540141 0.644841 -vt 0.479912 0.659265 -vt 0.496407 0.672619 -vt 0.430805 0.679564 -vt 0.436879 0.654511 -vt 0.365204 0.658731 -vt 0.392006 0.640264 -vt 0.379724 0.610322 -vt 0.332403 0.610119 -vt 0.358531 0.576181 -vt 0.288668 0.582341 -vt 0.445345 0.686077 -vt 0.607126 0.786343 -vt 0.816422 0.609373 -vt 0.978203 0.754476 -vt 0.445345 0.500000 -vt 0.445345 0.313923 -vt 0.816422 0.390627 -vt 0.183578 0.690983 -vt 0.183578 0.309017 -vt 0.021797 0.190983 -vt 0.283564 0.000000 -vt 0.607126 0.213657 -vt 0.978203 0.245524 -vt 0.283564 1.000000 -vt 0.021797 0.809017 -vt 1.000000 0.913269 -vt 0.809651 0.913269 -vt 0.329694 0.913269 -vt 0.562069 0.066987 -vt 0.620741 0.066987 -vt 0.562069 0.933013 -vt 0.620741 0.191987 -vt 0.620741 0.933013 -vt 0.781035 0.143376 -vt 0.781035 0.933013 -vt 1.000000 0.143376 -vt 1.000000 0.933013 -vt 0.343104 0.250000 -vt 0.280128 0.250000 -vt 0.141154 0.347222 -vt 0.620741 0.250000 -vt 1.000000 0.216667 -vt 1.000000 0.250000 -vt 0.278690 0.680045 -vt 0.124139 0.500000 -vt 0.350273 0.464286 -vt 0.738895 0.464286 -vt 1.000000 0.416667 -vt 0.329694 0.814696 -vt 1.000000 0.814696 -vt 0.088341 0.814696 -vt 0.241482 0.750000 -vt 0.434682 0.714286 -vt 0.771239 0.714286 -vt 1.000000 0.750000 -vt 0.674645 0.530353 -vt 0.683259 0.544409 -vt 0.722265 0.533731 -vt 0.667597 0.512897 -vt 0.580128 0.505953 -vt 0.609784 0.530730 -vt 0.523420 0.558494 -vt 0.470792 0.540675 -vt 0.437991 0.596231 -vt 0.476408 0.600489 -vt 0.459859 0.644841 -vt 0.483804 0.637547 -vt 0.520088 0.659265 -vt 0.503593 0.672619 -vt 0.569195 0.679564 -vt 0.563121 0.654511 -vt 0.634796 0.658731 -vt 0.607995 0.640264 -vt 0.620276 0.610322 -vt 0.667597 0.610119 -vt 0.641469 0.576181 -vt 0.711332 0.582341 -vt 1.046875 0.772010 -vt 0.956791 0.730945 -vt 0.899283 0.970312 -vt 0.942544 0.888589 -vt 0.720028 0.902269 -vt 0.707168 1.046875 -vt 0.453826 0.931398 -vt 0.215418 0.844835 -vt 0.058156 0.586898 -vt 0.236023 0.667976 -vt 0.349482 0.454114 -vt 0.136958 0.357239 -vt 0.046875 0.316174 -vt 0.372331 0.198949 -vt 0.447320 0.046875 -vt 0.194464 0.117868 -vt 0.683183 0.075062 -vt 0.674378 0.172493 -vt 0.863351 0.409106 -vt 0.927720 0.287975 -vt 0.878332 0.243345 -vt 1.026786 0.598716 -vt 1.035592 0.501285 -vt 0.834671 0.675278 -vt 0.532626 0.701734 -vt 0.616869 0.411861 -# 302 texture coordinates - -vn -0.537588 -0.071798 0.840146 -vn -0.151555 -0.017111 0.988301 -vn -0.510264 0.347193 0.786822 -vn -0.383883 0.724753 0.572160 -vn 0.006791 0.547083 0.837051 -vn 0.441964 0.160862 0.882492 -vn -0.810413 0.184718 0.555976 -vn -0.915534 0.402240 -0.000000 -vn -0.710113 0.620185 0.333331 -vn -0.721673 0.607891 -0.331145 -vn -0.413629 0.701858 -0.579920 -vn -0.409411 0.912350 0.000434 -vn 0.132323 0.938010 0.320355 -vn 0.132323 0.938010 -0.320355 -vn 0.339768 0.940509 -0.000000 -vn 0.481852 0.617859 0.621345 -vn 0.881337 0.472488 -0.000000 -vn 0.942952 -0.332930 -0.000000 -vn 0.795204 -0.092522 0.599242 -vn 0.481852 0.617859 -0.621345 -vn 0.441964 0.160862 -0.882492 -vn 0.795204 -0.092522 -0.599242 -vn -0.012521 0.539701 -0.841764 -vn -0.544858 0.327294 -0.772016 -vn -0.561303 -0.075179 -0.824189 -vn -0.195775 -0.027076 -0.980275 -vn -0.299847 -0.529265 -0.793707 -vn 0.144885 -0.802478 -0.578824 -vn 0.343163 -0.420370 -0.839957 -vn 0.704306 -0.633502 -0.320355 -vn 0.260986 -0.965343 0.000322 -vn 0.173226 -0.803252 0.569894 -vn 0.704306 -0.633502 0.320355 -vn -0.346230 -0.872998 -0.343510 -vn -0.769195 -0.639014 0.000000 -vn -0.334289 -0.877615 0.343575 -vn -0.728104 -0.400942 0.555976 -vn -0.264904 -0.527345 0.807300 -vn 0.359321 -0.413990 0.836362 -vn -0.990268 -0.139173 -0.000000 -vn -0.810413 0.184718 -0.555976 -vn -0.728104 -0.400942 -0.555976 -vn -0.236279 0.029185 0.971247 -vn 0.320907 -0.108176 0.940913 -vn 0.232851 0.492069 0.838838 -vn 0.401159 0.816009 0.416173 -vn 0.362076 0.383575 0.849571 -vn 0.126098 -0.040972 0.991171 -vn -0.604687 0.614896 0.506218 -vn -0.478910 0.877864 -0.000000 -vn 0.038576 0.969348 0.242645 -vn 0.038576 0.969348 -0.242645 -vn 0.401159 0.816009 -0.416173 -vn 0.360915 0.932599 0.000000 -vn 0.494411 0.798675 0.343038 -vn 0.494411 0.798675 -0.343038 -vn 0.861265 0.508156 -0.000000 -vn 0.647910 0.246087 0.720870 -vn 0.951057 -0.309017 -0.000000 -vn 0.743317 -0.668940 -0.000000 -vn 0.535463 -0.362827 0.762651 -vn 0.647910 0.246086 -0.720870 -vn 0.126098 -0.040972 -0.991171 -vn 0.535463 -0.362827 -0.762651 -vn 0.362076 0.383575 -0.849571 -vn 0.232851 0.492069 -0.838838 -vn -0.236279 0.029185 -0.971247 -vn 0.320907 -0.108176 -0.940913 -vn 0.132934 -0.415219 -0.899956 -vn 0.188857 -0.970911 -0.147192 -vn 0.199321 -0.435181 -0.878003 -vn -0.862018 0.083023 0.500032 -vn 0.132934 -0.415219 0.899956 -vn 0.199321 -0.435181 0.878002 -vn 0.188857 -0.970911 0.147192 -vn -0.930205 0.367040 -0.000000 -vn -0.997640 0.068658 -0.000000 -vn -0.604687 0.614896 -0.506218 -vn -0.862018 0.083023 -0.500032 -vn 0.021383 -0.916512 0.399436 -vn -0.781862 -0.431561 -0.449942 -vn 0.956336 0.228461 -0.182283 -vn 0.833901 -0.104561 -0.541919 -vn 0.767800 0.601842 0.219702 -vn 0.546124 0.782549 0.298940 -vn 0.910925 0.174919 -0.373656 -vn 0.748758 0.661676 -0.039313 -vn 0.949258 -0.047485 -0.310893 -vn 0.406836 0.802260 -0.436879 -vn 0.769156 0.182669 -0.612398 -vn 0.199512 0.609083 -0.767602 -vn 0.667603 0.001959 -0.744515 -vn -0.099388 0.414937 -0.904405 -vn 0.352774 0.079499 -0.932325 -vn -0.283318 0.420843 -0.861755 -vn -0.057479 0.857527 0.511218 -vn 0.131724 0.743022 0.656177 -vn -0.005809 0.859552 0.511016 -vn -0.350571 0.931431 -0.097655 -vn -0.647693 0.664816 -0.372173 -vn -0.898309 0.404808 -0.170794 -vn -0.866249 0.480043 -0.138459 -vn -0.715121 0.360250 0.599018 -vn -0.866625 0.341770 0.363530 -vn -0.662377 0.297013 0.687780 -vn -0.811725 0.388839 0.435782 -vn -0.950899 0.243388 0.191190 -vn -0.846773 0.078043 0.526199 -vn -0.759416 0.140950 0.635154 -vn -0.940011 -0.340515 -0.020693 -vn -0.972400 -0.204991 0.111430 -vn -0.817030 -0.331766 0.471585 -vn -0.616700 -0.385898 0.686122 -vn -0.565415 -0.413211 0.713837 -vn -0.342437 -0.316577 0.884599 -vn -0.263317 -0.310224 0.913469 -vn -0.492073 -0.677280 -0.546952 -vn -0.216535 -0.832588 -0.509814 -vn -0.336313 -0.936688 -0.097510 -vn 0.085084 -0.882948 0.461697 -vn 0.196057 -0.733951 0.650291 -vn 0.454815 -0.615703 0.643470 -vn 0.489338 -0.710824 0.505250 -vn 0.458185 -0.654603 -0.601300 -vn 0.273617 -0.575276 -0.770838 -vn 0.557258 -0.641859 -0.526765 -vn 0.770791 -0.636825 0.018306 -vn 0.873238 -0.487283 0.003170 -vn 0.878760 -0.285726 -0.382285 -vn 0.775252 -0.453136 -0.440060 -vn 0.076768 -0.902254 -0.424317 -vn -0.760858 -0.310029 0.570067 -vn 0.698983 0.632728 -0.333285 -vn 0.918945 -0.018611 0.393945 -vn 0.946923 0.242706 0.210787 -vn 0.597706 0.775902 -0.201801 -vn 0.898457 0.395975 0.189682 -vn 0.584977 0.777578 -0.230597 -vn 0.061121 0.865503 0.497161 -vn 0.814891 0.173456 0.553052 -vn 0.488324 0.052196 0.871100 -vn -0.073338 0.372458 0.925147 -vn -0.168557 0.420636 0.891433 -vn 0.562606 0.011650 0.826643 -vn 0.424549 0.220069 0.878253 -vn -0.202274 0.574889 0.792835 -vn -0.201495 0.870711 -0.448622 -vn -0.147519 0.700066 -0.698674 -vn -0.247406 0.680029 -0.690182 -vn -0.659229 0.742690 -0.117596 -vn -0.823828 0.514402 0.238115 -vn -0.880755 0.462224 0.103053 -vn -0.835446 0.538148 0.111476 -vn -0.835433 0.291149 -0.466138 -vn -0.799017 0.476863 -0.366296 -vn -0.796565 -0.008375 -0.604495 -vn -0.746076 0.124458 -0.654126 -vn -0.847027 0.257512 -0.465008 -vn -0.774335 0.094113 -0.625738 -vn -0.799434 0.067311 -0.596971 -vn -0.914826 -0.403289 0.021240 -vn -0.960708 -0.276547 0.023720 -vn -0.776094 -0.562737 -0.284613 -vn -0.248105 -0.514857 -0.820589 -vn -0.231599 -0.234207 -0.944198 -vn -0.235950 -0.324119 -0.916119 -vn -0.342337 -0.448272 -0.825747 -vn -0.389047 -0.677991 0.623675 -vn -0.286549 -0.868467 0.404542 -vn -0.058292 -0.911347 0.407491 -vn 0.455951 -0.795072 -0.399962 -vn 0.489715 -0.524665 -0.696352 -vn 0.515843 -0.636580 -0.573300 -vn 0.423912 -0.809501 -0.406210 -vn 0.535603 -0.635581 0.556027 -vn 0.490862 -0.467516 0.735176 -vn 0.731377 -0.368576 0.573793 -vn 0.890119 -0.387697 0.239538 -vn 0.883630 -0.404120 0.236399 -vn 0.822699 -0.324540 0.466733 -vn 0.789247 -0.408589 0.458414 -vn -0.072988 -0.902254 0.424984 -vn -0.288148 -0.512224 -0.809072 -vn 0.918806 0.383987 0.091372 -vn 0.993163 0.114096 -0.024688 -vn 0.434383 0.709098 0.555420 -vn 0.471863 0.805177 0.359216 -vn 0.868051 0.441893 0.226313 -vn 0.386966 0.811178 0.438461 -vn 0.971729 0.236044 0.005163 -vn 0.277939 0.903859 -0.325252 -vn 0.907561 0.183989 -0.377467 -vn 0.389798 0.457680 -0.799116 -vn 0.974181 -0.045977 -0.221037 -vn 0.441749 0.266583 -0.856616 -vn 0.886674 0.017475 -0.462065 -vn 0.372092 0.327554 -0.868479 -vn -0.385080 0.834046 0.395071 -vn -0.476106 0.659961 0.581185 -vn -0.556161 0.685573 0.469761 -vn -0.626859 0.745436 -0.226656 -vn -0.554271 0.436146 -0.708915 -vn -0.561559 0.310302 -0.767049 -vn -0.543810 0.416915 -0.728322 -vn -0.974714 0.176358 0.137223 -vn -0.917252 0.369282 0.149263 -vn -0.982764 -0.036304 0.181267 -vn -0.987205 0.070377 0.143084 -vn -0.988708 0.090661 -0.119319 -vn -0.995465 0.069805 -0.064628 -vn -0.986899 0.153108 -0.050882 -vn -0.785702 -0.546219 -0.290374 -vn -0.802167 -0.447423 -0.395400 -vn -0.788300 -0.609188 -0.086443 -vn -0.635308 -0.586832 0.502008 -vn -0.748920 -0.342648 0.567196 -vn -0.829075 -0.199820 0.522213 -vn -0.811409 -0.243593 0.531299 -vn -0.029726 -0.712976 -0.700558 -vn -0.121255 -0.870385 -0.477207 -vn 0.151176 -0.929851 -0.335445 -vn 0.202841 -0.825731 0.526331 -vn 0.080914 -0.528183 0.845266 -vn 0.010675 -0.474241 0.880330 -vn 0.014489 -0.635546 0.771927 -vn 0.742724 -0.545146 -0.388814 -vn 0.786510 -0.383302 -0.484233 -vn 0.920594 -0.358142 -0.155695 -vn 0.889767 -0.359426 0.281297 -vn 0.873005 -0.294226 0.388965 -vn 0.907656 -0.291730 0.301752 -vn 0.863097 -0.445709 0.237502 -vn 0.041443 -0.908865 -0.415027 -vn -0.109957 -0.084548 0.990334 -vn 0.245131 0.763260 -0.597783 -vn 0.955445 0.284327 -0.079261 -vn 0.823805 0.535171 -0.186913 -vn 0.285353 0.867913 -0.406571 -vn 0.750150 0.580981 -0.315809 -vn 0.193001 0.857724 -0.476509 -vn 0.122062 0.961258 0.247151 -vn 0.890764 0.429947 -0.147257 -vn 0.869360 0.404802 0.283458 -vn 0.342558 0.602318 0.721018 -vn 0.449593 0.557051 0.698255 -vn 0.979971 0.160598 0.117751 -vn 0.912952 0.330027 0.240004 -vn 0.396960 0.742707 0.539267 -vn -0.562652 0.747701 -0.352655 -vn -0.640733 0.557163 -0.528234 -vn -0.712118 0.570582 -0.409053 -vn -0.719414 0.632988 0.285953 -vn -0.541635 0.392908 0.743139 -vn -0.506872 0.445328 0.738081 -vn -0.530036 0.658014 0.534864 -vn -0.999398 0.002857 -0.034586 -vn -0.977859 0.202556 -0.052566 -vn -0.974887 -0.208763 -0.077548 -vn -0.990809 -0.134971 -0.008911 -vn -0.971468 -0.084083 0.221765 -vn -0.983987 -0.035832 0.174602 -vn -0.987930 0.055655 0.144559 -vn -0.644785 -0.668339 0.370912 -vn -0.667256 -0.571980 0.477084 -vn -0.657389 -0.734501 0.168369 -vn -0.560535 -0.736307 -0.379015 -vn -0.692904 -0.540327 -0.477421 -vn -0.805447 -0.450708 -0.384860 -vn -0.807097 -0.552297 -0.208715 -vn 0.166809 -0.694562 0.699828 -vn 0.081505 -0.869441 0.487268 -vn 0.344060 -0.883528 0.317807 -vn 0.303265 -0.806548 -0.507455 -vn 0.132506 -0.587487 -0.798312 -vn 0.022610 -0.693630 -0.719976 -vn 0.045100 -0.923914 -0.379933 -vn 0.862122 -0.401541 0.309048 -vn 0.886724 -0.232862 0.399368 -vn 0.979859 -0.190892 0.058615 -vn 0.901262 -0.198277 -0.385245 -vn 0.854374 -0.181939 -0.486768 -vn 0.901238 -0.252507 -0.352151 -vn 0.898278 -0.412999 -0.150093 -vn -0.272473 -0.916512 -0.292854 -vn 0.247462 -0.431597 0.867460 -vn 0.375319 0.601842 -0.704927 -vn 0.969100 -0.104559 -0.223412 -vn 0.795449 0.228463 -0.561307 -vn 0.164332 0.782548 -0.600511 -vn 0.901567 0.174919 -0.395701 -vn 0.548411 0.661676 -0.511303 -vn 0.596875 0.802261 0.010829 -vn 0.883048 -0.047484 -0.466875 -vn 0.975847 0.140489 -0.167289 -vn 0.695006 0.600563 0.395335 -vn 0.804391 0.375485 0.460397 -vn 0.950455 -0.062330 -0.304551 -vn 0.989975 0.079498 -0.116747 -vn 0.767612 0.420846 0.483385 -vn -0.407667 0.857527 -0.313775 -vn -0.380509 0.743022 -0.550574 -vn -0.371629 0.859552 -0.350803 -vn -0.173281 0.931431 0.320017 -vn -0.088344 0.681833 0.726154 -vn -0.097862 0.460784 0.882100 -vn -0.075217 0.480042 0.874015 -vn -0.927662 0.360250 0.098302 -vn -0.863510 0.341772 0.370868 -vn -0.954873 0.297012 -0.001297 -vn -0.877348 0.388838 0.281187 -vn -0.798205 0.258643 0.544033 -vn -0.830945 0.129933 0.540970 -vn -0.800009 0.140946 0.583197 -vn -0.638103 -0.340513 0.690562 -vn -0.755642 -0.204991 0.622080 -vn -0.906786 -0.331767 0.260133 -vn -0.921950 -0.385899 -0.033004 -vn -0.932303 -0.360848 -0.024508 -vn -0.971643 -0.236380 0.005919 -vn -0.950036 -0.310227 0.034503 -vn 0.051621 -0.677280 0.733912 -vn 0.216310 -0.832587 0.509910 -vn -0.163481 -0.936688 0.309662 -vn -0.273013 -0.882948 -0.381925 -vn -0.334489 -0.728676 -0.597619 -vn -0.408235 -0.602580 -0.685741 -vn -0.371857 -0.710825 -0.597035 -vn 0.750822 -0.654602 0.088107 -vn 0.744565 -0.575276 0.338646 -vn 0.766027 -0.641859 -0.034936 -vn 0.522268 -0.636825 -0.567176 -vn 0.527667 -0.527467 -0.665842 -vn 0.641037 -0.375221 -0.669538 -vn 0.614542 -0.453134 -0.645761 -vn -0.272476 -0.916512 0.292854 -vn 0.247445 -0.431549 -0.867488 -vn 0.795449 0.228463 0.561307 -vn 0.969100 -0.104559 0.223412 -vn 0.375318 0.601842 0.704927 -vn 0.164332 0.782548 0.600511 -vn 0.901567 0.174919 0.395701 -vn 0.548410 0.661676 0.511303 -vn 0.883047 -0.047485 0.466875 -vn 0.596875 0.802261 -0.010829 -vn 0.975847 0.140489 0.167289 -vn 0.695006 0.600564 -0.395336 -vn 0.950454 -0.062330 0.304551 -vn 0.804391 0.375485 -0.460397 -vn 0.989975 0.079498 0.116747 -vn 0.767611 0.420846 -0.483385 -vn -0.407667 0.857527 0.313775 -vn -0.380509 0.743022 0.550574 -vn -0.371629 0.859552 0.350803 -vn -0.173281 0.931431 -0.320017 -vn -0.088345 0.681833 -0.726154 -vn -0.097862 0.460784 -0.882100 -vn -0.075217 0.480042 -0.874015 -vn -0.927662 0.360250 -0.098302 -vn -0.863510 0.341772 -0.370868 -vn -0.954873 0.297012 0.001297 -vn -0.877348 0.388838 -0.281187 -vn -0.798205 0.258643 -0.544033 -vn -0.830945 0.129933 -0.540970 -vn -0.800010 0.140945 -0.583196 -vn -0.638103 -0.340513 -0.690562 -vn -0.755642 -0.204991 -0.622081 -vn -0.906786 -0.331767 -0.260133 -vn -0.921950 -0.385899 0.033004 -vn -0.932303 -0.360848 0.024508 -vn -0.971643 -0.236380 -0.005919 -vn -0.950036 -0.310227 -0.034503 -vn 0.051621 -0.677280 -0.733912 -vn 0.216310 -0.832587 -0.509910 -vn -0.163481 -0.936687 -0.309662 -vn -0.273013 -0.882948 0.381925 -vn -0.334488 -0.728676 0.597620 -vn -0.408235 -0.602580 0.685741 -vn -0.371857 -0.710825 0.597035 -vn 0.750822 -0.654602 -0.088107 -vn 0.744565 -0.575276 -0.338646 -vn 0.766027 -0.641859 0.034936 -vn 0.522268 -0.636825 0.567177 -vn 0.527667 -0.527467 0.665842 -vn 0.641037 -0.375221 0.669538 -vn 0.614542 -0.453134 0.645761 -vn -0.287103 -0.930941 -0.225656 -vn 0.184368 -0.421801 0.887746 -vn 0.074051 0.631917 -0.771490 -vn 0.855333 0.060647 -0.514517 -vn 0.730773 0.322890 -0.601426 -vn 0.209807 0.742786 -0.635807 -vn 0.616222 0.371327 -0.694540 -vn 0.095819 0.746431 -0.658528 -vn 0.408064 0.912344 0.033360 -vn 0.821336 0.180467 -0.541146 -vn 0.969682 0.166170 -0.179176 -vn 0.754037 0.504418 0.420704 -vn 0.828561 0.316590 0.461798 -vn 0.943283 -0.080094 -0.322182 -vn 0.996799 0.009221 -0.079417 -vn 0.775768 0.382141 0.502148 -vn -0.535922 0.815786 -0.217442 -vn -0.711742 0.631198 -0.308241 -vn -0.720586 0.670982 -0.174754 -vn -0.411496 0.796168 0.443607 -vn -0.094379 0.527301 0.844421 -vn -0.069752 0.407704 0.910446 -vn -0.075227 0.509317 0.857284 -vn -0.899322 0.217218 0.379522 -vn -0.856971 0.404836 0.318918 -vn -0.929488 0.002263 0.368846 -vn -0.913020 0.111991 0.392239 -vn -0.775244 0.155507 0.612221 -vn -0.809953 0.130294 0.571839 -vn -0.809970 0.211451 0.547026 -vn -0.512438 -0.473965 0.716075 -vn -0.470746 -0.365488 0.803005 -vn -0.622708 -0.554524 0.552030 -vn -0.804795 -0.592927 -0.027236 -vn -0.935688 -0.349566 -0.047865 -vn -0.979826 -0.199093 0.017388 -vn -0.969660 -0.244405 0.004995 -vn 0.346030 -0.645322 0.681045 -vn 0.150051 -0.816598 0.557361 -vn 0.305963 -0.903395 0.300439 -vn -0.106894 -0.879100 -0.464497 -vn -0.379304 -0.604701 -0.700332 -vn -0.457451 -0.550271 -0.698527 -vn -0.396771 -0.701295 -0.592249 -vn 0.835906 -0.548834 -0.006518 -vn 0.923602 -0.381844 0.033966 -vn 0.863214 -0.393372 -0.316418 -vn 0.605500 -0.431678 -0.668598 -vn 0.534229 -0.375452 -0.757387 -vn 0.609831 -0.367158 -0.702354 -vn 0.606094 -0.512127 -0.608586 -vn -0.287104 -0.930941 0.225655 -vn 0.184384 -0.421751 -0.887766 -vn 0.730773 0.322890 0.601426 -vn 0.855333 0.060647 0.514517 -vn 0.074051 0.631917 0.771490 -vn 0.209807 0.742786 0.635807 -vn 0.616222 0.371327 0.694540 -vn 0.095818 0.746431 0.658528 -vn 0.821336 0.180467 0.541145 -vn 0.408064 0.912344 -0.033360 -vn 0.969682 0.166170 0.179175 -vn 0.754037 0.504418 -0.420704 -vn 0.943283 -0.080094 0.322182 -vn 0.828560 0.316590 -0.461799 -vn 0.996799 0.009221 0.079417 -vn 0.775768 0.382141 -0.502148 -vn -0.535922 0.815786 0.217442 -vn -0.711742 0.631198 0.308241 -vn -0.720586 0.670982 0.174754 -vn -0.411496 0.796168 -0.443607 -vn -0.094380 0.527301 -0.844421 -vn -0.069752 0.407704 -0.910446 -vn -0.075227 0.509317 -0.857285 -vn -0.899322 0.217218 -0.379522 -vn -0.856971 0.404836 -0.318918 -vn -0.929488 0.002263 -0.368845 -vn -0.913020 0.111991 -0.392239 -vn -0.775244 0.155506 -0.612221 -vn -0.809952 0.130294 -0.571839 -vn -0.809969 0.211450 -0.547027 -vn -0.512438 -0.473965 -0.716075 -vn -0.470746 -0.365488 -0.803005 -vn -0.622708 -0.554524 -0.552030 -vn -0.804795 -0.592928 0.027236 -vn -0.935688 -0.349566 0.047865 -vn -0.979826 -0.199093 -0.017388 -vn -0.969660 -0.244405 -0.004995 -vn 0.346030 -0.645322 -0.681045 -vn 0.150051 -0.816598 -0.557361 -vn 0.305964 -0.903395 -0.300439 -vn -0.106895 -0.879100 0.464496 -vn -0.379305 -0.604701 0.700332 -vn -0.457451 -0.550271 0.698527 -vn -0.396771 -0.701294 0.592249 -vn 0.835906 -0.548834 0.006518 -vn 0.923602 -0.381844 -0.033966 -vn 0.863214 -0.393373 0.316418 -vn 0.605500 -0.431679 0.668598 -vn 0.534230 -0.375452 0.757387 -vn 0.609831 -0.367158 0.702354 -vn 0.606094 -0.512126 0.608586 -vn 0.000000 0.000000 0.000000 -vn 0.891945 0.333606 -0.305190 -vn 0.885286 -0.051708 0.462163 -vn 0.871701 -0.486404 -0.059574 -vn 0.602535 -0.114023 0.789906 -vn 0.767332 -0.613878 0.185353 -vn 0.615704 -0.238766 0.750932 -vn -0.132228 0.076598 0.988255 -vn -0.134483 0.218923 0.966430 -vn -0.082654 0.333036 0.939285 -vn -0.794263 0.362851 0.487325 -vn -0.686973 0.538875 0.487527 -vn -0.911656 -0.242414 -0.331840 -vn -0.903470 -0.005854 -0.428611 -vn -0.880207 0.284493 -0.379868 -vn -0.359072 -0.293407 -0.885991 -vn -0.531215 -0.161650 -0.831673 -vn 0.521710 -0.333452 -0.785257 -vn 0.498223 -0.518213 -0.695147 -vn 0.319252 -0.666930 -0.673263 -vn 0.417209 0.602930 -0.680009 -vn -0.390952 -0.506393 -0.768585 -vn -0.785847 -0.219916 -0.577999 -vn -0.112803 -0.767065 -0.631575 -vn -0.676852 -0.452073 -0.580948 -vn -0.070613 -0.785109 -0.615320 -vn 0.404464 -0.913005 -0.053206 -vn 0.510041 -0.851111 -0.124372 -vn 0.600863 -0.776753 -0.188727 -vn 0.734160 -0.298249 0.609964 -vn 0.802855 -0.245127 0.543449 -vn 0.203920 0.286548 0.936113 -vn 0.259058 0.346923 0.901407 -vn 0.305077 0.413607 0.857821 -vn -0.395140 0.672313 0.625987 -vn -0.388204 0.672327 0.630297 -vn -0.844407 0.508563 -0.168344 -vn -0.907377 0.410201 -0.091666 -vn -0.943128 0.331776 0.020840 -vn -0.032685 0.987521 0.154060 -vn 0.285617 0.953018 0.100890 -vn 0.356408 0.929723 0.092678 -vn 0.058045 0.915295 0.398579 -vn -0.438098 -0.839825 0.320570 -vn 0.039808 -0.749385 0.660937 -vn -0.436422 -0.758689 0.483660 -vn -0.144622 0.858467 0.492057 -vn -0.390508 -0.802547 0.451023 -vn -0.378955 0.768626 0.515371 -vn -0.351840 -0.855427 0.380071 -vn -0.503913 0.811284 0.296463 -vn -0.434503 -0.886238 0.160593 -vn -0.589554 0.766850 0.253707 -vn 0.461124 -0.566742 0.682765 -vn -0.033279 -0.530249 0.847189 -vn -0.155076 -0.479386 0.863794 -vn -0.332554 -0.675497 0.658112 -vn -0.624353 -0.649034 0.434671 -vn -0.640430 -0.723275 0.258307 -vn 0.839146 -0.520972 0.156274 -vn 0.979386 -0.047392 0.196359 -vn 0.859197 -0.013066 0.511478 -vn 0.169781 0.017978 0.985318 -vn -0.298124 0.093164 0.949970 -vn -0.602581 0.140795 0.785540 -vn -0.760623 0.356880 0.542300 -vn -0.916442 -0.012784 0.399964 -vn 0.709959 0.689780 0.141992 -vn 0.616328 0.711155 0.338227 -vn 0.121528 0.638102 0.760300 -vn -0.308158 0.474484 0.824563 -vn -0.584949 0.497866 0.640284 -vn -0.831395 0.369875 0.414699 -vn -0.777389 0.439755 0.449757 -vn -0.712098 0.074375 0.698130 -vn -0.522162 -0.582125 0.623279 -vn -0.536293 0.842625 0.048710 -vn -0.627855 0.740316 0.240274 -vn -0.817995 0.476796 0.321792 -vn -0.729171 0.655795 0.195555 -vn -0.958544 0.215108 0.186875 -vn -0.950592 0.163928 0.263634 -vn -0.983392 -0.022830 0.180052 -vn -0.891745 0.110754 0.438776 -vn -0.991858 -0.087830 0.092218 -vn -0.859104 0.044821 0.509835 -vn -0.894952 -0.402899 0.191658 -vn -0.903611 0.009093 0.428257 -vn -0.889320 0.017457 0.456952 -vn -0.731541 -0.492421 0.471561 -vn -0.794103 -0.178378 0.581017 -vn -0.625933 -0.373553 0.684592 -vn -0.584508 -0.184831 0.790056 -vn -0.801518 -0.104269 0.588809 -vn -0.642031 -0.296727 0.706929 -vn -0.820281 -0.123456 0.558478 -vn 0.016905 -0.936472 -0.350333 -vn -0.098795 -0.739900 -0.665423 -vn -0.069462 -0.936749 -0.343039 -vn 0.123931 -0.992291 -0.000000 -vn 0.035891 -0.855981 -0.515760 -vn -0.028951 -0.999581 0.000000 -vn 0.016905 -0.936472 0.350333 -vn -0.069462 -0.936749 0.343039 -vn -0.334402 -0.916161 -0.220964 -vn -0.790477 -0.612492 -0.000000 -vn -0.334402 -0.916161 0.220964 -vn -0.741010 -0.556660 0.375544 -vn -0.274313 -0.889661 0.365042 -vn -0.098795 -0.739900 0.665423 -vn 0.035891 -0.855981 0.515760 -vn -0.274313 -0.889661 -0.365042 -vn -0.741010 -0.556660 -0.375544 -vn 0.356408 0.929723 -0.092678 -vn 0.285617 0.953018 -0.100890 -vn -0.032685 0.987521 -0.154060 -vn 0.058045 0.915295 -0.398579 -vn -0.436422 -0.758689 -0.483660 -vn 0.039808 -0.749385 -0.660937 -vn -0.438098 -0.839825 -0.320570 -vn -0.144622 0.858467 -0.492057 -vn -0.390508 -0.802547 -0.451023 -vn -0.378955 0.768626 -0.515371 -vn -0.351840 -0.855427 -0.380071 -vn -0.503913 0.811284 -0.296463 -vn -0.434503 -0.886238 -0.160593 -vn -0.589554 0.766850 -0.253707 -vn -0.033279 -0.530249 -0.847189 -vn 0.461124 -0.566742 -0.682765 -vn -0.155076 -0.479386 -0.863794 -vn -0.332554 -0.675497 -0.658112 -vn -0.624352 -0.649034 -0.434671 -vn -0.640430 -0.723275 -0.258307 -vn 0.979386 -0.047392 -0.196359 -vn 0.839147 -0.520972 -0.156274 -vn 0.859197 -0.013067 -0.511478 -vn 0.169781 0.017978 -0.985318 -vn -0.298124 0.093164 -0.949970 -vn -0.602580 0.140795 -0.785540 -vn -0.760623 0.356880 -0.542300 -vn -0.916442 -0.012784 -0.399964 -vn 0.616328 0.711155 -0.338227 -vn 0.709959 0.689780 -0.141992 -vn 0.121527 0.638102 -0.760300 -vn -0.308158 0.474484 -0.824563 -vn -0.584949 0.497867 -0.640284 -vn -0.831395 0.369875 -0.414699 -vn -0.777389 0.439755 -0.449757 -vn -0.536292 0.842626 -0.048710 -vn -0.522164 -0.582123 -0.623280 -vn -0.712098 0.074377 -0.698129 -vn -0.627854 0.740316 -0.240274 -vn -0.817995 0.476797 -0.321792 -vn -0.729171 0.655796 -0.195555 -vn -0.958544 0.215108 -0.186875 -vn -0.950592 0.163928 -0.263634 -vn -0.891745 0.110753 -0.438776 -vn -0.983392 -0.022830 -0.180053 -vn -0.859104 0.044821 -0.509834 -vn -0.991858 -0.087831 -0.092217 -vn -0.894953 -0.402899 -0.191657 -vn -0.903611 0.009093 -0.428257 -vn -0.889320 0.017458 -0.456952 -vn -0.731541 -0.492420 -0.471561 -vn -0.794103 -0.178378 -0.581018 -vn -0.625932 -0.373553 -0.684593 -vn -0.584507 -0.184830 -0.790056 -vn -0.801518 -0.104269 -0.588809 -vn -0.642031 -0.296727 -0.706930 -vn -0.820281 -0.123456 -0.558478 -vn 0.891944 0.333618 0.305179 -vn 0.602535 -0.114021 -0.789905 -vn 0.871702 -0.486402 0.059575 -vn 0.885285 -0.051707 -0.462165 -vn 0.767335 -0.613875 -0.185352 -vn 0.615706 -0.238765 -0.750931 -vn -0.132228 0.076598 -0.988255 -vn -0.134482 0.218923 -0.966430 -vn -0.082654 0.333036 -0.939284 -vn -0.794263 0.362851 -0.487325 -vn -0.686973 0.538875 -0.487526 -vn -0.911656 -0.242414 0.331840 -vn -0.903470 -0.005854 0.428611 -vn -0.880207 0.284493 0.379868 -vn -0.359072 -0.293407 0.885991 -vn -0.531215 -0.161650 0.831673 -vn 0.521709 -0.333452 0.785258 -vn 0.498223 -0.518212 0.695148 -vn 0.319253 -0.666929 0.673264 -vn 0.417208 0.602931 0.680009 -vn -0.112803 -0.767065 0.631575 -vn -0.785847 -0.219916 0.577998 -vn -0.390952 -0.506392 0.768585 -vn -0.676852 -0.452073 0.580948 -vn -0.070613 -0.785108 0.615320 -vn 0.404464 -0.913005 0.053206 -vn 0.510042 -0.851111 0.124372 -vn 0.600863 -0.776753 0.188727 -vn 0.734160 -0.298249 -0.609964 -vn 0.802854 -0.245127 -0.543450 -vn 0.203920 0.286548 -0.936113 -vn 0.259058 0.346923 -0.901407 -vn 0.305077 0.413607 -0.857821 -vn -0.395140 0.672312 -0.625988 -vn -0.388204 0.672327 -0.630297 -vn -0.844407 0.508563 0.168344 -vn -0.907377 0.410201 0.091666 -vn -0.943128 0.331776 -0.020840 -vn 0.092832 0.340544 0.935634 -vn 0.433215 0.308260 0.846936 -vn 0.075136 0.741809 0.666389 -vn -0.375593 0.622444 0.686654 -vn -0.641388 0.689588 0.336288 -vn -0.353918 0.873123 0.335258 -vn -0.662764 0.746241 -0.062188 -vn -0.545563 0.658509 -0.518389 -vn -0.542286 0.268594 -0.796105 -vn -0.776382 0.468027 -0.422116 -vn -0.995559 -0.032197 -0.088459 -vn -0.738154 -0.230737 -0.633948 -vn -0.433216 -0.308258 -0.846936 -vn -0.776385 -0.629857 -0.022517 -vn -0.467564 -0.874397 0.129668 -vn -0.542292 -0.717476 -0.437204 -vn -0.189834 -0.854102 0.484223 -vn -0.545805 -0.711395 0.442735 -vn -0.641391 -0.312091 0.700868 -vn -0.215356 -0.623780 0.751346 -vn 0.037501 -0.724698 0.688046 -vn -0.375594 -0.035443 0.926107 -vn 0.078137 -0.268605 0.960076 -vn -0.757385 0.223328 0.613590 -vn -0.902417 0.400663 0.158468 -vn -0.902417 -0.205066 0.378934 -vn 0.075136 0.741809 -0.666389 -vn 0.433215 0.308260 -0.846936 -vn 0.092832 0.340544 -0.935635 -vn -0.375593 0.622444 -0.686654 -vn -0.353918 0.873123 -0.335257 -vn -0.641388 0.689588 -0.336288 -vn -0.662764 0.746241 0.062188 -vn -0.776382 0.468027 0.422116 -vn -0.542286 0.268594 0.796105 -vn -0.545562 0.658510 0.518389 -vn -0.738154 -0.230737 0.633948 -vn -0.995559 -0.032196 0.088459 -vn -0.433216 -0.308258 0.846936 -vn -0.776385 -0.629856 0.022517 -vn -0.542292 -0.717477 0.437204 -vn -0.467565 -0.874397 -0.129668 -vn -0.545805 -0.711394 -0.442736 -vn -0.189834 -0.854102 -0.484223 -vn -0.215356 -0.623779 -0.751346 -vn -0.641391 -0.312091 -0.700869 -vn 0.037501 -0.724698 -0.688046 -vn -0.375594 -0.035443 -0.926106 -vn 0.078136 -0.268605 -0.960076 -vn -0.757384 0.223328 -0.613590 -vn -0.902417 0.400663 -0.158468 -vn -0.902417 -0.205066 -0.378934 -# 747 normals - -g HLeib01 -usemtl HLeibTex -s 1 -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 -# 80 triangles in group - -g OK -usemtl Skin -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 74/49/72 75/45/73 -f 43/43/43 75/45/73 44/44/44 -f 48/48/48 44/44/44 76/47/74 -f 72/46/75 76/47/74 75/45/73 -f 44/44/44 75/45/73 76/47/74 -f 48/48/48 76/47/74 61/58/61 -f 50/50/50 77/66/76 49/49/49 -f 43/43/43 49/49/49 74/49/72 -f 73/50/77 74/49/72 77/66/76 -f 49/49/49 77/66/76 74/49/72 -f 50/50/50 78/67/78 77/66/76 -f 73/50/77 77/66/76 79/67/79 -f 67/64/67 79/67/79 78/67/78 -f 77/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 -# 60 triangles in group - -g Bein1Li -usemtl BeinTex -s 2 -f 80/68/80 87/68/80 130/68/80 -f 86/68/81 129/68/81 93/68/81 -s 1 -f 80/69/82 81/70/83 88/71/84 -f 80/69/82 88/71/84 87/72/85 -f 81/70/83 82/73/86 88/71/84 -f 82/73/86 89/74/87 88/71/84 -f 82/73/86 83/75/88 90/76/89 -f 82/73/86 90/76/89 89/74/87 -f 83/75/88 84/77/90 90/76/89 -f 84/77/90 91/78/91 90/76/89 -f 84/77/90 85/79/92 92/80/93 -f 84/77/90 92/80/93 91/78/91 -f 85/79/92 86/68/94 92/80/93 -f 86/68/94 93/81/95 92/80/93 -s 2 -f 87/68/80 94/68/80 130/68/80 -f 93/68/81 129/68/81 100/68/81 -s 1 -f 87/72/85 88/71/84 94/82/96 -f 88/71/84 95/83/97 94/82/96 -f 88/71/84 89/74/87 96/84/98 -f 88/71/84 96/84/98 95/83/97 -f 89/74/87 90/76/89 96/84/98 -f 90/76/89 97/85/99 96/84/98 -f 90/76/89 91/78/91 98/86/100 -f 90/76/89 98/86/100 97/85/99 -f 91/78/91 92/80/93 98/86/100 -f 92/80/93 99/87/101 98/86/100 -f 92/80/93 93/81/95 100/88/102 -f 92/80/93 100/88/102 99/87/101 -s 2 -f 94/68/80 101/68/80 130/68/80 -f 100/68/81 129/68/81 107/68/81 -s 1 -f 94/82/96 95/83/97 102/89/103 -f 94/82/96 102/89/103 101/90/104 -f 95/83/97 96/84/98 102/89/103 -f 96/84/98 103/91/105 102/89/103 -f 96/84/98 97/85/99 104/92/106 -f 96/84/98 104/92/106 103/91/105 -f 97/85/99 98/86/100 104/92/106 -f 98/86/100 105/93/107 104/92/106 -f 98/86/100 99/87/101 106/94/108 -f 98/86/100 106/94/108 105/93/107 -f 99/87/101 100/88/102 106/94/108 -f 100/88/102 107/95/109 106/94/108 -s 2 -f 101/68/80 108/68/80 130/68/80 -f 107/68/81 129/68/81 114/68/81 -s 1 -f 101/90/104 102/89/103 108/96/110 -f 102/89/103 109/97/111 108/96/110 -f 102/89/103 103/91/105 110/98/112 -f 102/89/103 110/98/112 109/97/111 -f 103/91/105 104/92/106 110/98/112 -f 104/92/106 111/99/113 110/98/112 -f 104/92/106 105/93/107 112/100/114 -f 104/92/106 112/100/114 111/99/113 -f 105/93/107 106/94/108 112/100/114 -f 106/94/108 113/101/115 112/100/114 -f 106/94/108 107/95/109 114/102/116 -f 106/94/108 114/102/116 113/101/115 -s 2 -f 108/68/80 115/68/80 130/68/80 -f 114/68/81 129/68/81 121/68/81 -s 1 -f 108/96/110 109/97/111 116/103/117 -f 108/96/110 116/103/117 115/104/118 -f 109/97/111 110/98/112 116/103/117 -f 110/98/112 117/105/119 116/103/117 -f 110/98/112 111/99/113 118/106/120 -f 110/98/112 118/106/120 117/105/119 -f 111/99/113 112/100/114 118/106/120 -f 112/100/114 119/107/121 118/106/120 -f 112/100/114 113/101/115 120/108/122 -f 112/100/114 120/108/122 119/107/121 -f 113/101/115 114/102/116 120/108/122 -f 114/102/116 121/109/123 120/108/122 -s 2 -f 115/68/80 122/68/80 130/68/80 -f 121/68/81 129/68/81 128/68/81 -s 1 -f 115/104/118 116/103/117 122/110/124 -f 116/103/117 123/111/125 122/110/124 -f 116/103/117 117/105/119 124/112/126 -f 116/103/117 124/112/126 123/111/125 -f 117/105/119 118/106/120 124/112/126 -f 118/106/120 125/113/127 124/112/126 -f 118/106/120 119/107/121 126/114/128 -f 118/106/120 126/114/128 125/113/127 -f 119/107/121 120/108/122 126/114/128 -f 120/108/122 127/115/129 126/114/128 -f 120/108/122 121/109/123 128/116/130 -f 120/108/122 128/116/130 127/115/129 -s 2 -f 122/68/80 80/68/80 130/68/80 -f 128/68/81 129/68/81 86/68/81 -s 1 -f 122/110/124 123/111/125 81/117/83 -f 122/110/124 81/117/83 80/118/82 -f 123/111/125 124/112/126 81/117/83 -f 124/112/126 82/119/86 81/117/83 -f 124/112/126 125/113/127 83/120/88 -f 124/112/126 83/120/88 82/119/86 -f 125/113/127 126/114/128 83/120/88 -f 126/114/128 84/121/90 83/120/88 -f 126/114/128 127/115/129 85/122/92 -f 126/114/128 85/122/92 84/121/90 -f 127/115/129 128/116/130 85/122/92 -f 128/116/130 86/123/94 85/122/92 -# 98 triangles in group - -g Bein1Re -usemtl BeinTex -s 2 -f 181/68/131 138/68/131 131/68/131 -f 144/68/132 180/68/132 137/68/132 -s 1 -f 139/71/133 132/70/134 131/69/135 -f 138/72/136 139/71/133 131/69/135 -f 139/71/133 133/73/137 132/70/134 -f 139/71/133 140/74/138 133/73/137 -f 141/76/139 134/75/140 133/73/137 -f 140/74/138 141/76/139 133/73/137 -f 141/76/139 135/77/141 134/75/140 -f 141/76/139 142/78/142 135/77/141 -f 143/80/143 136/79/144 135/77/141 -f 142/78/142 143/80/143 135/77/141 -f 143/80/143 137/68/145 136/79/144 -f 143/80/143 144/81/146 137/68/145 -s 2 -f 181/68/131 145/68/131 138/68/131 -f 151/68/132 180/68/132 144/68/132 -s 1 -f 145/82/147 139/71/133 138/72/136 -f 145/82/147 146/83/148 139/71/133 -f 147/84/149 140/74/138 139/71/133 -f 146/83/148 147/84/149 139/71/133 -f 147/84/149 141/76/139 140/74/138 -f 147/84/149 148/85/150 141/76/139 -f 149/86/151 142/78/142 141/76/139 -f 148/85/150 149/86/151 141/76/139 -f 149/86/151 143/80/143 142/78/142 -f 149/86/151 150/87/152 143/80/143 -f 151/88/153 144/81/146 143/80/143 -f 150/87/152 151/88/153 143/80/143 -s 2 -f 181/68/131 152/68/131 145/68/131 -f 158/68/132 180/68/132 151/68/132 -s 1 -f 153/89/154 146/83/148 145/82/147 -f 152/90/155 153/89/154 145/82/147 -f 153/89/154 147/84/149 146/83/148 -f 153/89/154 154/91/156 147/84/149 -f 155/92/157 148/85/150 147/84/149 -f 154/91/156 155/92/157 147/84/149 -f 155/92/157 149/86/151 148/85/150 -f 155/92/157 156/93/158 149/86/151 -f 157/94/159 150/87/152 149/86/151 -f 156/93/158 157/94/159 149/86/151 -f 157/94/159 151/88/153 150/87/152 -f 157/94/159 158/95/160 151/88/153 -s 2 -f 181/68/131 159/68/131 152/68/131 -f 165/68/132 180/68/132 158/68/132 -s 1 -f 159/96/161 153/89/154 152/90/155 -f 159/96/161 160/97/162 153/89/154 -f 161/98/163 154/91/156 153/89/154 -f 160/97/162 161/98/163 153/89/154 -f 161/98/163 155/92/157 154/91/156 -f 161/98/163 162/99/164 155/92/157 -f 163/100/165 156/93/158 155/92/157 -f 162/99/164 163/100/165 155/92/157 -f 163/100/165 157/94/159 156/93/158 -f 163/100/165 164/101/166 157/94/159 -f 165/102/167 158/95/160 157/94/159 -f 164/101/166 165/102/167 157/94/159 -s 2 -f 181/68/131 166/68/131 159/68/131 -f 172/68/132 180/68/132 165/68/132 -s 1 -f 167/103/168 160/97/162 159/96/161 -f 166/104/169 167/103/168 159/96/161 -f 167/103/168 161/98/163 160/97/162 -f 167/103/168 168/105/170 161/98/163 -f 169/106/171 162/99/164 161/98/163 -f 168/105/170 169/106/171 161/98/163 -f 169/106/171 163/100/165 162/99/164 -f 169/106/171 170/107/172 163/100/165 -f 171/108/173 164/101/166 163/100/165 -f 170/107/172 171/108/173 163/100/165 -f 171/108/173 165/102/167 164/101/166 -f 171/108/173 172/109/174 165/102/167 -s 2 -f 181/68/131 173/68/131 166/68/131 -f 179/68/132 180/68/132 172/68/132 -s 1 -f 173/110/175 167/103/168 166/104/169 -f 173/110/175 174/111/176 167/103/168 -f 175/112/177 168/105/170 167/103/168 -f 174/111/176 175/112/177 167/103/168 -f 175/112/177 169/106/171 168/105/170 -f 175/112/177 176/113/178 169/106/171 -f 177/114/179 170/107/172 169/106/171 -f 176/113/178 177/114/179 169/106/171 -f 177/114/179 171/108/173 170/107/172 -f 177/114/179 178/115/180 171/108/173 -f 179/116/181 172/109/174 171/108/173 -f 178/115/180 179/116/181 171/108/173 -s 2 -f 181/68/131 131/68/131 173/68/131 -f 137/68/132 180/68/132 179/68/132 -s 1 -f 132/117/134 174/111/176 173/110/175 -f 131/118/135 132/117/134 173/110/175 -f 132/117/134 175/112/177 174/111/176 -f 132/117/134 133/119/137 175/112/177 -f 134/120/140 176/113/178 175/112/177 -f 133/119/137 134/120/140 175/112/177 -f 134/120/140 177/114/179 176/113/178 -f 134/120/140 135/121/141 177/114/179 -f 136/122/144 178/115/180 177/114/179 -f 135/121/141 136/122/144 177/114/179 -f 136/122/144 179/116/181 178/115/180 -f 136/122/144 137/123/145 179/116/181 -# 98 triangles in group - -g Bein2Li -usemtl BeinTex -s 2 -f 182/68/182 189/68/182 232/68/182 -f 188/68/183 231/68/183 195/68/183 -s 1 -f 182/69/184 183/70/185 190/71/186 -f 182/69/184 190/71/186 189/72/187 -f 183/70/185 184/73/188 190/71/186 -f 184/73/188 191/74/189 190/71/186 -f 184/73/188 185/75/190 192/76/191 -f 184/73/188 192/76/191 191/74/189 -f 185/75/190 186/77/192 192/76/191 -f 186/77/192 193/78/193 192/76/191 -f 186/77/192 187/79/194 194/80/195 -f 186/77/192 194/80/195 193/78/193 -f 187/79/194 188/68/196 194/80/195 -f 188/68/196 195/81/197 194/80/195 -s 2 -f 189/68/182 196/68/182 232/68/182 -f 195/68/183 231/68/183 202/68/183 -s 1 -f 189/72/187 190/71/186 196/82/198 -f 190/71/186 197/83/199 196/82/198 -f 190/71/186 191/74/189 198/84/200 -f 190/71/186 198/84/200 197/83/199 -f 191/74/189 192/76/191 198/84/200 -f 192/76/191 199/85/201 198/84/200 -f 192/76/191 193/78/193 200/86/202 -f 192/76/191 200/86/202 199/85/201 -f 193/78/193 194/80/195 200/86/202 -f 194/80/195 201/87/203 200/86/202 -f 194/80/195 195/81/197 202/88/204 -f 194/80/195 202/88/204 201/87/203 -s 2 -f 196/68/182 203/68/182 232/68/182 -f 202/68/183 231/68/183 209/68/183 -s 1 -f 196/82/198 197/83/199 204/89/205 -f 196/82/198 204/89/205 203/90/206 -f 197/83/199 198/84/200 204/89/205 -f 198/84/200 205/91/207 204/89/205 -f 198/84/200 199/85/201 206/92/208 -f 198/84/200 206/92/208 205/91/207 -f 199/85/201 200/86/202 206/92/208 -f 200/86/202 207/93/209 206/92/208 -f 200/86/202 201/87/203 208/94/210 -f 200/86/202 208/94/210 207/93/209 -f 201/87/203 202/88/204 208/94/210 -f 202/88/204 209/95/211 208/94/210 -s 2 -f 203/68/182 210/68/182 232/68/182 -f 209/68/183 231/68/183 216/68/183 -s 1 -f 203/90/206 204/89/205 210/96/212 -f 204/89/205 211/97/213 210/96/212 -f 204/89/205 205/91/207 212/98/214 -f 204/89/205 212/98/214 211/97/213 -f 205/91/207 206/92/208 212/98/214 -f 206/92/208 213/99/215 212/98/214 -f 206/92/208 207/93/209 214/100/216 -f 206/92/208 214/100/216 213/99/215 -f 207/93/209 208/94/210 214/100/216 -f 208/94/210 215/101/217 214/100/216 -f 208/94/210 209/95/211 216/102/218 -f 208/94/210 216/102/218 215/101/217 -s 2 -f 210/68/182 217/68/182 232/68/182 -f 216/68/183 231/68/183 223/68/183 -s 1 -f 210/96/212 211/97/213 218/103/219 -f 210/96/212 218/103/219 217/104/220 -f 211/97/213 212/98/214 218/103/219 -f 212/98/214 219/105/221 218/103/219 -f 212/98/214 213/99/215 220/106/222 -f 212/98/214 220/106/222 219/105/221 -f 213/99/215 214/100/216 220/106/222 -f 214/100/216 221/107/223 220/106/222 -f 214/100/216 215/101/217 222/108/224 -f 214/100/216 222/108/224 221/107/223 -f 215/101/217 216/102/218 222/108/224 -f 216/102/218 223/109/225 222/108/224 -s 2 -f 217/68/182 224/68/182 232/68/182 -f 223/68/183 231/68/183 230/68/183 -s 1 -f 217/104/220 218/103/219 224/110/226 -f 218/103/219 225/111/227 224/110/226 -f 218/103/219 219/105/221 226/112/228 -f 218/103/219 226/112/228 225/111/227 -f 219/105/221 220/106/222 226/112/228 -f 220/106/222 227/113/229 226/112/228 -f 220/106/222 221/107/223 228/114/230 -f 220/106/222 228/114/230 227/113/229 -f 221/107/223 222/108/224 228/114/230 -f 222/108/224 229/115/231 228/114/230 -f 222/108/224 223/109/225 230/116/232 -f 222/108/224 230/116/232 229/115/231 -s 2 -f 224/68/182 182/68/182 232/68/182 -f 230/68/183 231/68/183 188/68/183 -s 1 -f 224/110/226 225/111/227 183/117/185 -f 224/110/226 183/117/185 182/118/184 -f 225/111/227 226/112/228 183/117/185 -f 226/112/228 184/119/188 183/117/185 -f 226/112/228 227/113/229 185/120/190 -f 226/112/228 185/120/190 184/119/188 -f 227/113/229 228/114/230 185/120/190 -f 228/114/230 186/121/192 185/120/190 -f 228/114/230 229/115/231 187/122/194 -f 228/114/230 187/122/194 186/121/192 -f 229/115/231 230/116/232 187/122/194 -f 230/116/232 188/123/196 187/122/194 -# 98 triangles in group - -g Bein2Re -usemtl BeinTex -s 2 -f 283/68/233 240/68/233 233/68/233 -f 246/68/234 282/68/234 239/68/234 -s 1 -f 241/71/235 234/70/236 233/69/237 -f 240/72/238 241/71/235 233/69/237 -f 241/71/235 235/73/239 234/70/236 -f 241/71/235 242/74/240 235/73/239 -f 243/76/241 236/75/242 235/73/239 -f 242/74/240 243/76/241 235/73/239 -f 243/76/241 237/77/243 236/75/242 -f 243/76/241 244/78/244 237/77/243 -f 245/80/245 238/79/246 237/77/243 -f 244/78/244 245/80/245 237/77/243 -f 245/80/245 239/68/247 238/79/246 -f 245/80/245 246/81/248 239/68/247 -s 2 -f 283/68/233 247/68/233 240/68/233 -f 253/68/234 282/68/234 246/68/234 -s 1 -f 247/82/249 241/71/235 240/72/238 -f 247/82/249 248/83/250 241/71/235 -f 249/84/251 242/74/240 241/71/235 -f 248/83/250 249/84/251 241/71/235 -f 249/84/251 243/76/241 242/74/240 -f 249/84/251 250/85/252 243/76/241 -f 251/86/253 244/78/244 243/76/241 -f 250/85/252 251/86/253 243/76/241 -f 251/86/253 245/80/245 244/78/244 -f 251/86/253 252/87/254 245/80/245 -f 253/88/255 246/81/248 245/80/245 -f 252/87/254 253/88/255 245/80/245 -s 2 -f 283/68/233 254/68/233 247/68/233 -f 260/68/234 282/68/234 253/68/234 -s 1 -f 255/89/256 248/83/250 247/82/249 -f 254/90/257 255/89/256 247/82/249 -f 255/89/256 249/84/251 248/83/250 -f 255/89/256 256/91/258 249/84/251 -f 257/92/259 250/85/252 249/84/251 -f 256/91/258 257/92/259 249/84/251 -f 257/92/259 251/86/253 250/85/252 -f 257/92/259 258/93/260 251/86/253 -f 259/94/261 252/87/254 251/86/253 -f 258/93/260 259/94/261 251/86/253 -f 259/94/261 253/88/255 252/87/254 -f 259/94/261 260/95/262 253/88/255 -s 2 -f 283/68/233 261/68/233 254/68/233 -f 267/68/234 282/68/234 260/68/234 -s 1 -f 261/96/263 255/89/256 254/90/257 -f 261/96/263 262/97/264 255/89/256 -f 263/98/265 256/91/258 255/89/256 -f 262/97/264 263/98/265 255/89/256 -f 263/98/265 257/92/259 256/91/258 -f 263/98/265 264/99/266 257/92/259 -f 265/100/267 258/93/260 257/92/259 -f 264/99/266 265/100/267 257/92/259 -f 265/100/267 259/94/261 258/93/260 -f 265/100/267 266/101/268 259/94/261 -f 267/102/269 260/95/262 259/94/261 -f 266/101/268 267/102/269 259/94/261 -s 2 -f 283/68/233 268/68/233 261/68/233 -f 274/68/234 282/68/234 267/68/234 -s 1 -f 269/103/270 262/97/264 261/96/263 -f 268/104/271 269/103/270 261/96/263 -f 269/103/270 263/98/265 262/97/264 -f 269/103/270 270/105/272 263/98/265 -f 271/106/273 264/99/266 263/98/265 -f 270/105/272 271/106/273 263/98/265 -f 271/106/273 265/100/267 264/99/266 -f 271/106/273 272/107/274 265/100/267 -f 273/108/275 266/101/268 265/100/267 -f 272/107/274 273/108/275 265/100/267 -f 273/108/275 267/102/269 266/101/268 -f 273/108/275 274/109/276 267/102/269 -s 2 -f 283/68/233 275/68/233 268/68/233 -f 281/68/234 282/68/234 274/68/234 -s 1 -f 275/110/277 269/103/270 268/104/271 -f 275/110/277 276/111/278 269/103/270 -f 277/112/279 270/105/272 269/103/270 -f 276/111/278 277/112/279 269/103/270 -f 277/112/279 271/106/273 270/105/272 -f 277/112/279 278/113/280 271/106/273 -f 279/114/281 272/107/274 271/106/273 -f 278/113/280 279/114/281 271/106/273 -f 279/114/281 273/108/275 272/107/274 -f 279/114/281 280/115/282 273/108/275 -f 281/116/283 274/109/276 273/108/275 -f 280/115/282 281/116/283 273/108/275 -s 2 -f 283/68/233 233/68/233 275/68/233 -f 239/68/234 282/68/234 281/68/234 -s 1 -f 234/117/236 276/111/278 275/110/277 -f 233/118/237 234/117/236 275/110/277 -f 234/117/236 277/112/279 276/111/278 -f 234/117/236 235/119/239 277/112/279 -f 236/120/242 278/113/280 277/112/279 -f 235/119/239 236/120/242 277/112/279 -f 236/120/242 279/114/281 278/113/280 -f 236/120/242 237/121/243 279/114/281 -f 238/122/246 280/115/282 279/114/281 -f 237/121/243 238/122/246 279/114/281 -f 238/122/246 281/116/283 280/115/282 -f 238/122/246 239/123/247 281/116/283 -# 98 triangles in group - -g Bein3Re -usemtl BeinTex -s 2 -f 334/68/284 291/68/284 284/68/284 -f 297/68/285 333/68/285 290/68/285 -s 1 -f 292/71/286 285/70/287 284/69/288 -f 291/72/289 292/71/286 284/69/288 -f 292/71/286 286/73/290 285/70/287 -f 292/71/286 293/74/291 286/73/290 -f 294/76/292 287/75/293 286/73/290 -f 293/74/291 294/76/292 286/73/290 -f 294/76/292 288/77/294 287/75/293 -f 294/76/292 295/78/295 288/77/294 -f 296/80/296 289/79/297 288/77/294 -f 295/78/295 296/80/296 288/77/294 -f 296/80/296 290/68/298 289/79/297 -f 296/80/296 297/81/299 290/68/298 -s 2 -f 334/68/284 298/68/284 291/68/284 -f 304/68/285 333/68/285 297/68/285 -s 1 -f 298/82/300 292/71/286 291/72/289 -f 298/82/300 299/83/301 292/71/286 -f 300/84/302 293/74/291 292/71/286 -f 299/83/301 300/84/302 292/71/286 -f 300/84/302 294/76/292 293/74/291 -f 300/84/302 301/85/303 294/76/292 -f 302/86/304 295/78/295 294/76/292 -f 301/85/303 302/86/304 294/76/292 -f 302/86/304 296/80/296 295/78/295 -f 302/86/304 303/87/305 296/80/296 -f 304/88/306 297/81/299 296/80/296 -f 303/87/305 304/88/306 296/80/296 -s 2 -f 334/68/284 305/68/284 298/68/284 -f 311/68/285 333/68/285 304/68/285 -s 1 -f 306/89/307 299/83/301 298/82/300 -f 305/90/308 306/89/307 298/82/300 -f 306/89/307 300/84/302 299/83/301 -f 306/89/307 307/91/309 300/84/302 -f 308/92/310 301/85/303 300/84/302 -f 307/91/309 308/92/310 300/84/302 -f 308/92/310 302/86/304 301/85/303 -f 308/92/310 309/93/311 302/86/304 -f 310/94/312 303/87/305 302/86/304 -f 309/93/311 310/94/312 302/86/304 -f 310/94/312 304/88/306 303/87/305 -f 310/94/312 311/95/313 304/88/306 -s 2 -f 334/68/284 312/68/284 305/68/284 -f 318/68/285 333/68/285 311/68/285 -s 1 -f 312/96/314 306/89/307 305/90/308 -f 312/96/314 313/97/315 306/89/307 -f 314/98/316 307/91/309 306/89/307 -f 313/97/315 314/98/316 306/89/307 -f 314/98/316 308/92/310 307/91/309 -f 314/98/316 315/99/317 308/92/310 -f 316/100/318 309/93/311 308/92/310 -f 315/99/317 316/100/318 308/92/310 -f 316/100/318 310/94/312 309/93/311 -f 316/100/318 317/101/319 310/94/312 -f 318/102/320 311/95/313 310/94/312 -f 317/101/319 318/102/320 310/94/312 -s 2 -f 334/68/284 319/68/284 312/68/284 -f 325/68/285 333/68/285 318/68/285 -s 1 -f 320/103/321 313/97/315 312/96/314 -f 319/104/322 320/103/321 312/96/314 -f 320/103/321 314/98/316 313/97/315 -f 320/103/321 321/105/323 314/98/316 -f 322/106/324 315/99/317 314/98/316 -f 321/105/323 322/106/324 314/98/316 -f 322/106/324 316/100/318 315/99/317 -f 322/106/324 323/107/325 316/100/318 -f 324/108/326 317/101/319 316/100/318 -f 323/107/325 324/108/326 316/100/318 -f 324/108/326 318/102/320 317/101/319 -f 324/108/326 325/109/327 318/102/320 -s 2 -f 334/68/284 326/68/284 319/68/284 -f 332/68/285 333/68/285 325/68/285 -s 1 -f 326/110/328 320/103/321 319/104/322 -f 326/110/328 327/111/329 320/103/321 -f 328/112/330 321/105/323 320/103/321 -f 327/111/329 328/112/330 320/103/321 -f 328/112/330 322/106/324 321/105/323 -f 328/112/330 329/113/331 322/106/324 -f 330/114/332 323/107/325 322/106/324 -f 329/113/331 330/114/332 322/106/324 -f 330/114/332 324/108/326 323/107/325 -f 330/114/332 331/115/333 324/108/326 -f 332/116/334 325/109/327 324/108/326 -f 331/115/333 332/116/334 324/108/326 -s 2 -f 334/68/284 284/68/284 326/68/284 -f 290/68/285 333/68/285 332/68/285 -s 1 -f 285/117/287 327/111/329 326/110/328 -f 284/118/288 285/117/287 326/110/328 -f 285/117/287 328/112/330 327/111/329 -f 285/117/287 286/119/290 328/112/330 -f 287/120/293 329/113/331 328/112/330 -f 286/119/290 287/120/293 328/112/330 -f 287/120/293 330/114/332 329/113/331 -f 287/120/293 288/121/294 330/114/332 -f 289/122/297 331/115/333 330/114/332 -f 288/121/294 289/122/297 330/114/332 -f 289/122/297 332/116/334 331/115/333 -f 289/122/297 290/123/298 332/116/334 -# 98 triangles in group - -g Bein3Li -usemtl BeinTex -s 2 -f 335/68/335 342/68/335 385/68/335 -f 341/68/336 384/68/336 348/68/336 -s 1 -f 335/69/337 336/70/338 343/71/339 -f 335/69/337 343/71/339 342/72/340 -f 336/70/338 337/73/341 343/71/339 -f 337/73/341 344/74/342 343/71/339 -f 337/73/341 338/75/343 345/76/344 -f 337/73/341 345/76/344 344/74/342 -f 338/75/343 339/77/345 345/76/344 -f 339/77/345 346/78/346 345/76/344 -f 339/77/345 340/79/347 347/80/348 -f 339/77/345 347/80/348 346/78/346 -f 340/79/347 341/68/349 347/80/348 -f 341/68/349 348/81/350 347/80/348 -s 2 -f 342/68/335 349/68/335 385/68/335 -f 348/68/336 384/68/336 355/68/336 -s 1 -f 342/72/340 343/71/339 349/82/351 -f 343/71/339 350/83/352 349/82/351 -f 343/71/339 344/74/342 351/84/353 -f 343/71/339 351/84/353 350/83/352 -f 344/74/342 345/76/344 351/84/353 -f 345/76/344 352/85/354 351/84/353 -f 345/76/344 346/78/346 353/86/355 -f 345/76/344 353/86/355 352/85/354 -f 346/78/346 347/80/348 353/86/355 -f 347/80/348 354/87/356 353/86/355 -f 347/80/348 348/81/350 355/88/357 -f 347/80/348 355/88/357 354/87/356 -s 2 -f 349/68/335 356/68/335 385/68/335 -f 355/68/336 384/68/336 362/68/336 -s 1 -f 349/82/351 350/83/352 357/89/358 -f 349/82/351 357/89/358 356/90/359 -f 350/83/352 351/84/353 357/89/358 -f 351/84/353 358/91/360 357/89/358 -f 351/84/353 352/85/354 359/92/361 -f 351/84/353 359/92/361 358/91/360 -f 352/85/354 353/86/355 359/92/361 -f 353/86/355 360/93/362 359/92/361 -f 353/86/355 354/87/356 361/94/363 -f 353/86/355 361/94/363 360/93/362 -f 354/87/356 355/88/357 361/94/363 -f 355/88/357 362/95/364 361/94/363 -s 2 -f 356/68/335 363/68/335 385/68/335 -f 362/68/336 384/68/336 369/68/336 -s 1 -f 356/90/359 357/89/358 363/96/365 -f 357/89/358 364/97/366 363/96/365 -f 357/89/358 358/91/360 365/98/367 -f 357/89/358 365/98/367 364/97/366 -f 358/91/360 359/92/361 365/98/367 -f 359/92/361 366/99/368 365/98/367 -f 359/92/361 360/93/362 367/100/369 -f 359/92/361 367/100/369 366/99/368 -f 360/93/362 361/94/363 367/100/369 -f 361/94/363 368/101/370 367/100/369 -f 361/94/363 362/95/364 369/102/371 -f 361/94/363 369/102/371 368/101/370 -s 2 -f 363/68/335 370/68/335 385/68/335 -f 369/68/336 384/68/336 376/68/336 -s 1 -f 363/96/365 364/97/366 371/103/372 -f 363/96/365 371/103/372 370/104/373 -f 364/97/366 365/98/367 371/103/372 -f 365/98/367 372/105/374 371/103/372 -f 365/98/367 366/99/368 373/106/375 -f 365/98/367 373/106/375 372/105/374 -f 366/99/368 367/100/369 373/106/375 -f 367/100/369 374/107/376 373/106/375 -f 367/100/369 368/101/370 375/108/377 -f 367/100/369 375/108/377 374/107/376 -f 368/101/370 369/102/371 375/108/377 -f 369/102/371 376/109/378 375/108/377 -s 2 -f 370/68/335 377/68/335 385/68/335 -f 376/68/336 384/68/336 383/68/336 -s 1 -f 370/104/373 371/103/372 377/110/379 -f 371/103/372 378/111/380 377/110/379 -f 371/103/372 372/105/374 379/112/381 -f 371/103/372 379/112/381 378/111/380 -f 372/105/374 373/106/375 379/112/381 -f 373/106/375 380/113/382 379/112/381 -f 373/106/375 374/107/376 381/114/383 -f 373/106/375 381/114/383 380/113/382 -f 374/107/376 375/108/377 381/114/383 -f 375/108/377 382/115/384 381/114/383 -f 375/108/377 376/109/378 383/116/385 -f 375/108/377 383/116/385 382/115/384 -s 2 -f 377/68/335 335/68/335 385/68/335 -f 383/68/336 384/68/336 341/68/336 -s 1 -f 377/110/379 378/111/380 336/117/338 -f 377/110/379 336/117/338 335/118/337 -f 378/111/380 379/112/381 336/117/338 -f 379/112/381 337/119/341 336/117/338 -f 379/112/381 380/113/382 338/120/343 -f 379/112/381 338/120/343 337/119/341 -f 380/113/382 381/114/383 338/120/343 -f 381/114/383 339/121/345 338/120/343 -f 381/114/383 382/115/384 340/122/347 -f 381/114/383 340/122/347 339/121/345 -f 382/115/384 383/116/385 340/122/347 -f 383/116/385 341/123/349 340/122/347 -# 98 triangles in group - -g Bein4Re -usemtl BeinTex -s 2 -f 436/68/386 393/68/386 386/68/386 -f 399/68/387 435/68/387 392/68/387 -s 1 -f 394/71/388 387/70/389 386/69/390 -f 393/72/391 394/71/388 386/69/390 -f 394/71/388 388/73/392 387/70/389 -f 394/71/388 395/74/393 388/73/392 -f 396/76/394 389/75/395 388/73/392 -f 395/74/393 396/76/394 388/73/392 -f 396/76/394 390/77/396 389/75/395 -f 396/76/394 397/78/397 390/77/396 -f 398/80/398 391/79/399 390/77/396 -f 397/78/397 398/80/398 390/77/396 -f 398/80/398 392/68/400 391/79/399 -f 398/80/398 399/81/401 392/68/400 -s 2 -f 436/68/386 400/68/386 393/68/386 -f 406/68/387 435/68/387 399/68/387 -s 1 -f 400/82/402 394/71/388 393/72/391 -f 400/82/402 401/83/403 394/71/388 -f 402/84/404 395/74/393 394/71/388 -f 401/83/403 402/84/404 394/71/388 -f 402/84/404 396/76/394 395/74/393 -f 402/84/404 403/85/405 396/76/394 -f 404/86/406 397/78/397 396/76/394 -f 403/85/405 404/86/406 396/76/394 -f 404/86/406 398/80/398 397/78/397 -f 404/86/406 405/87/407 398/80/398 -f 406/88/408 399/81/401 398/80/398 -f 405/87/407 406/88/408 398/80/398 -s 2 -f 436/68/386 407/68/386 400/68/386 -f 413/68/387 435/68/387 406/68/387 -s 1 -f 408/89/409 401/83/403 400/82/402 -f 407/90/410 408/89/409 400/82/402 -f 408/89/409 402/84/404 401/83/403 -f 408/89/409 409/91/411 402/84/404 -f 410/92/412 403/85/405 402/84/404 -f 409/91/411 410/92/412 402/84/404 -f 410/92/412 404/86/406 403/85/405 -f 410/92/412 411/93/413 404/86/406 -f 412/94/414 405/87/407 404/86/406 -f 411/93/413 412/94/414 404/86/406 -f 412/94/414 406/88/408 405/87/407 -f 412/94/414 413/95/415 406/88/408 -s 2 -f 436/68/386 414/68/386 407/68/386 -f 420/68/387 435/68/387 413/68/387 -s 1 -f 414/96/416 408/89/409 407/90/410 -f 414/96/416 415/97/417 408/89/409 -f 416/98/418 409/91/411 408/89/409 -f 415/97/417 416/98/418 408/89/409 -f 416/98/418 410/92/412 409/91/411 -f 416/98/418 417/99/419 410/92/412 -f 418/100/420 411/93/413 410/92/412 -f 417/99/419 418/100/420 410/92/412 -f 418/100/420 412/94/414 411/93/413 -f 418/100/420 419/101/421 412/94/414 -f 420/102/422 413/95/415 412/94/414 -f 419/101/421 420/102/422 412/94/414 -s 2 -f 436/68/386 421/68/386 414/68/386 -f 427/68/387 435/68/387 420/68/387 -s 1 -f 422/103/423 415/97/417 414/96/416 -f 421/104/424 422/103/423 414/96/416 -f 422/103/423 416/98/418 415/97/417 -f 422/103/423 423/105/425 416/98/418 -f 424/106/426 417/99/419 416/98/418 -f 423/105/425 424/106/426 416/98/418 -f 424/106/426 418/100/420 417/99/419 -f 424/106/426 425/107/427 418/100/420 -f 426/108/428 419/101/421 418/100/420 -f 425/107/427 426/108/428 418/100/420 -f 426/108/428 420/102/422 419/101/421 -f 426/108/428 427/109/429 420/102/422 -s 2 -f 436/68/386 428/68/386 421/68/386 -f 434/68/387 435/68/387 427/68/387 -s 1 -f 428/110/430 422/103/423 421/104/424 -f 428/110/430 429/111/431 422/103/423 -f 430/112/432 423/105/425 422/103/423 -f 429/111/431 430/112/432 422/103/423 -f 430/112/432 424/106/426 423/105/425 -f 430/112/432 431/113/433 424/106/426 -f 432/114/434 425/107/427 424/106/426 -f 431/113/433 432/114/434 424/106/426 -f 432/114/434 426/108/428 425/107/427 -f 432/114/434 433/115/435 426/108/428 -f 434/116/436 427/109/429 426/108/428 -f 433/115/435 434/116/436 426/108/428 -s 2 -f 436/68/386 386/68/386 428/68/386 -f 392/68/387 435/68/387 434/68/387 -s 1 -f 387/117/389 429/111/431 428/110/430 -f 386/118/390 387/117/389 428/110/430 -f 387/117/389 430/112/432 429/111/431 -f 387/117/389 388/119/392 430/112/432 -f 389/120/395 431/113/433 430/112/432 -f 388/119/392 389/120/395 430/112/432 -f 389/120/395 432/114/434 431/113/433 -f 389/120/395 390/121/396 432/114/434 -f 391/122/399 433/115/435 432/114/434 -f 390/121/396 391/122/399 432/114/434 -f 391/122/399 434/116/436 433/115/435 -f 391/122/399 392/123/400 434/116/436 -# 98 triangles in group - -g Bein4Li -usemtl BeinTex -s 2 -f 437/68/437 444/68/437 487/68/437 -f 443/68/438 486/68/438 450/68/438 -s 1 -f 437/69/439 438/70/440 445/71/441 -f 437/69/439 445/71/441 444/72/442 -f 438/70/440 439/73/443 445/71/441 -f 439/73/443 446/74/444 445/71/441 -f 439/73/443 440/75/445 447/76/446 -f 439/73/443 447/76/446 446/74/444 -f 440/75/445 441/77/447 447/76/446 -f 441/77/447 448/78/448 447/76/446 -f 441/77/447 442/79/449 449/80/450 -f 441/77/447 449/80/450 448/78/448 -f 442/79/449 443/68/451 449/80/450 -f 443/68/451 450/81/452 449/80/450 -s 2 -f 444/68/437 451/68/437 487/68/437 -f 450/68/438 486/68/438 457/68/438 -s 1 -f 444/72/442 445/71/441 451/82/453 -f 445/71/441 452/83/454 451/82/453 -f 445/71/441 446/74/444 453/84/455 -f 445/71/441 453/84/455 452/83/454 -f 446/74/444 447/76/446 453/84/455 -f 447/76/446 454/85/456 453/84/455 -f 447/76/446 448/78/448 455/86/457 -f 447/76/446 455/86/457 454/85/456 -f 448/78/448 449/80/450 455/86/457 -f 449/80/450 456/87/458 455/86/457 -f 449/80/450 450/81/452 457/88/459 -f 449/80/450 457/88/459 456/87/458 -s 2 -f 451/68/437 458/68/437 487/68/437 -f 457/68/438 486/68/438 464/68/438 -s 1 -f 451/82/453 452/83/454 459/89/460 -f 451/82/453 459/89/460 458/90/461 -f 452/83/454 453/84/455 459/89/460 -f 453/84/455 460/91/462 459/89/460 -f 453/84/455 454/85/456 461/92/463 -f 453/84/455 461/92/463 460/91/462 -f 454/85/456 455/86/457 461/92/463 -f 455/86/457 462/93/464 461/92/463 -f 455/86/457 456/87/458 463/94/465 -f 455/86/457 463/94/465 462/93/464 -f 456/87/458 457/88/459 463/94/465 -f 457/88/459 464/95/466 463/94/465 -s 2 -f 458/68/437 465/68/437 487/68/437 -f 464/68/438 486/68/438 471/68/438 -s 1 -f 458/90/461 459/89/460 465/96/467 -f 459/89/460 466/97/468 465/96/467 -f 459/89/460 460/91/462 467/98/469 -f 459/89/460 467/98/469 466/97/468 -f 460/91/462 461/92/463 467/98/469 -f 461/92/463 468/99/470 467/98/469 -f 461/92/463 462/93/464 469/100/471 -f 461/92/463 469/100/471 468/99/470 -f 462/93/464 463/94/465 469/100/471 -f 463/94/465 470/101/472 469/100/471 -f 463/94/465 464/95/466 471/102/473 -f 463/94/465 471/102/473 470/101/472 -s 2 -f 465/68/437 472/68/437 487/68/437 -f 471/68/438 486/68/438 478/68/438 -s 1 -f 465/96/467 466/97/468 473/103/474 -f 465/96/467 473/103/474 472/104/475 -f 466/97/468 467/98/469 473/103/474 -f 467/98/469 474/105/476 473/103/474 -f 467/98/469 468/99/470 475/106/477 -f 467/98/469 475/106/477 474/105/476 -f 468/99/470 469/100/471 475/106/477 -f 469/100/471 476/107/478 475/106/477 -f 469/100/471 470/101/472 477/108/479 -f 469/100/471 477/108/479 476/107/478 -f 470/101/472 471/102/473 477/108/479 -f 471/102/473 478/109/480 477/108/479 -s 2 -f 472/68/437 479/68/437 487/68/437 -f 478/68/438 486/68/438 485/68/438 -s 1 -f 472/104/475 473/103/474 479/110/481 -f 473/103/474 480/111/482 479/110/481 -f 473/103/474 474/105/476 481/112/483 -f 473/103/474 481/112/483 480/111/482 -f 474/105/476 475/106/477 481/112/483 -f 475/106/477 482/113/484 481/112/483 -f 475/106/477 476/107/478 483/114/485 -f 475/106/477 483/114/485 482/113/484 -f 476/107/478 477/108/479 483/114/485 -f 477/108/479 484/115/486 483/114/485 -f 477/108/479 478/109/480 485/116/487 -f 477/108/479 485/116/487 484/115/486 -s 2 -f 479/68/437 437/68/437 487/68/437 -f 485/68/438 486/68/438 443/68/438 -s 1 -f 479/110/481 480/111/482 438/117/440 -f 479/110/481 438/117/440 437/118/439 -f 480/111/482 481/112/483 438/117/440 -f 481/112/483 439/119/443 438/117/440 -f 481/112/483 482/113/484 440/120/445 -f 481/112/483 440/120/445 439/119/443 -f 482/113/484 483/114/485 440/120/445 -f 483/114/485 441/121/447 440/120/445 -f 483/114/485 484/115/486 442/122/449 -f 483/114/485 442/122/449 441/121/447 -f 484/115/486 485/116/487 442/122/449 -f 485/116/487 443/123/451 442/122/449 -# 98 triangles in group - -g Zahn -usemtl BeinTex -s 2 -f 488/124/488 491/124/488 510/124/488 -f 490/125/489 509/126/489 493/127/489 -s 1 -f 488/124/490 489/128/491 492/129/492 -f 488/124/490 492/129/492 491/124/488 -f 489/128/491 490/125/493 492/129/492 -f 490/125/493 493/127/494 492/129/492 -s 2 -f 491/124/488 494/124/488 510/124/488 -f 493/127/489 509/126/489 496/130/489 -s 1 -f 491/124/488 492/129/492 494/124/495 -f 492/129/492 495/131/496 494/124/495 -f 492/129/492 493/127/494 496/130/497 -f 492/129/492 496/130/497 495/131/496 -s 2 -f 494/124/488 497/124/488 510/124/488 -f 496/130/489 509/126/489 499/132/489 -s 1 -f 494/124/495 495/131/496 498/133/498 -f 494/124/495 498/133/498 497/124/488 -f 495/131/496 496/130/497 498/133/498 -f 496/130/497 499/132/499 498/133/498 -s 2 -f 497/124/488 500/124/488 510/124/488 -f 499/132/489 509/126/489 502/134/489 -s 1 -f 497/124/488 498/133/498 500/124/500 -f 498/133/498 501/135/501 500/124/500 -f 498/133/498 499/132/499 502/134/502 -f 498/133/498 502/134/502 501/135/501 -s 2 -f 500/124/488 503/124/488 510/124/488 -f 502/134/489 509/126/489 505/136/489 -s 1 -f 500/124/500 501/135/501 504/137/503 -f 500/124/500 504/137/503 503/124/488 -f 501/135/501 502/134/502 504/137/503 -f 502/134/502 505/136/504 504/137/503 -s 2 -f 503/124/488 506/124/488 510/124/488 -f 505/136/489 509/126/489 508/138/489 -s 1 -f 503/124/488 504/137/503 506/124/505 -f 504/137/503 507/139/506 506/124/505 -f 504/137/503 505/136/504 508/138/507 -f 504/137/503 508/138/507 507/139/506 -s 2 -f 506/124/488 488/124/488 510/124/488 -f 508/138/489 509/126/489 490/125/489 -s 1 -f 506/124/505 507/139/506 489/128/491 -f 506/124/505 489/128/491 488/124/490 -f 507/139/506 508/138/507 489/128/491 -f 508/138/507 490/125/493 489/128/491 -# 42 triangles in group - -g klZahn -usemtl BeinTex -s 2 -f 511/140/488 514/140/488 533/140/488 -f 513/141/508 532/142/508 516/143/508 -s 1 -f 511/140/509 512/144/510 515/145/511 -f 511/140/509 515/145/511 514/140/488 -f 512/144/510 513/141/512 515/145/511 -f 513/141/512 516/143/513 515/145/511 -s 2 -f 514/140/488 517/140/488 533/140/488 -f 516/143/508 532/142/508 519/146/508 -s 1 -f 514/140/488 515/145/511 517/140/514 -f 515/145/511 518/147/515 517/140/514 -f 515/145/511 516/143/513 519/146/516 -f 515/145/511 519/146/516 518/147/515 -s 2 -f 517/140/488 520/140/488 533/140/488 -f 519/146/508 532/142/508 522/148/508 -s 1 -f 517/140/514 518/147/515 521/149/517 -f 517/140/514 521/149/517 520/140/488 -f 518/147/515 519/146/516 521/149/517 -f 519/146/516 522/148/518 521/149/517 -s 2 -f 520/140/488 523/140/488 533/140/488 -f 522/148/508 532/142/508 525/150/508 -s 1 -f 520/140/488 521/149/517 523/140/519 -f 521/149/517 524/151/520 523/140/519 -f 521/149/517 522/148/518 525/150/521 -f 521/149/517 525/150/521 524/151/520 -s 2 -f 523/140/488 526/140/488 533/140/488 -f 525/150/508 532/142/508 528/152/508 -s 1 -f 523/140/519 524/151/520 527/153/522 -f 523/140/519 527/153/522 526/140/488 -f 524/151/520 525/150/521 527/153/522 -f 525/150/521 528/152/523 527/153/522 -s 2 -f 526/140/488 529/140/488 533/140/488 -f 528/152/508 532/142/508 531/154/508 -s 1 -f 526/140/488 527/153/522 529/140/524 -f 527/153/522 530/155/525 529/140/524 -f 527/153/522 528/152/523 531/154/526 -f 527/153/522 531/154/526 530/155/525 -s 2 -f 529/140/488 511/140/488 533/140/488 -f 531/154/508 532/142/508 513/141/508 -s 1 -f 529/140/524 530/155/525 512/144/510 -f 529/140/524 512/144/510 511/140/509 -f 530/155/525 531/154/526 512/144/510 -f 531/154/526 513/141/512 512/144/510 -# 42 triangles in group - -g Kopf -usemtl Skin -f 534/68/527 563/156/528 562/157/529 -f 534/68/527 564/158/530 563/156/528 -f 535/69/531 536/159/532 537/160/533 -f 534/68/527 565/161/534 564/158/530 -f 535/69/531 537/160/533 538/162/535 -f 534/68/527 566/163/536 565/161/534 -f 535/69/531 538/162/535 539/164/537 -f 534/68/527 567/165/538 566/163/536 -f 535/69/531 539/164/537 540/166/539 -f 534/68/527 568/167/540 567/165/538 -f 542/168/541 543/169/542 536/159/532 -f 536/159/532 543/169/542 544/170/543 -f 536/159/532 544/170/543 537/160/533 -f 537/160/533 544/170/543 538/162/535 -f 544/170/543 545/169/544 538/162/535 -f 538/162/535 545/169/544 546/171/545 -f 538/162/535 546/171/545 539/164/537 -f 539/164/537 546/171/545 540/166/539 -f 546/171/545 547/172/546 540/166/539 -f 541/173/547 548/174/548 542/168/541 -f 548/174/548 549/175/549 542/168/541 -f 542/168/541 549/175/549 550/176/550 -f 542/168/541 550/176/550 543/169/542 -f 543/169/542 550/176/550 544/170/543 -f 550/176/550 551/177/551 544/170/543 -f 544/170/543 551/177/551 552/178/552 -f 544/170/543 552/178/552 545/169/544 -f 545/169/544 552/178/552 546/171/545 -f 552/178/552 553/179/553 546/171/545 -f 546/171/545 553/179/553 554/180/554 -f 546/171/545 554/180/554 547/172/546 -f 548/174/548 555/181/555 556/182/556 -f 548/174/548 556/182/556 549/175/549 -f 549/175/549 556/182/556 550/176/550 -f 556/182/556 557/183/557 550/176/550 -f 550/176/550 557/183/557 558/184/558 -f 550/176/550 558/184/558 551/177/551 -f 551/177/551 558/184/558 552/178/552 -f 558/184/558 559/185/559 552/178/552 -f 553/179/553 560/186/560 554/180/554 -f 560/186/560 561/187/561 554/180/554 -f 555/181/555 562/157/529 556/182/556 -f 562/157/529 563/156/528 556/182/556 -f 556/182/556 563/156/528 564/158/530 -f 556/182/556 564/158/530 557/183/557 -f 557/183/557 564/158/530 558/184/558 -f 564/158/530 565/161/534 558/184/558 -f 558/184/558 565/161/534 566/163/536 -f 558/184/558 566/163/536 559/185/559 -f 559/185/559 566/163/536 560/186/560 -f 566/163/536 567/165/538 560/186/560 -f 560/186/560 567/165/538 568/167/540 -f 560/186/560 568/167/540 561/187/561 -f 575/188/562 585/189/563 586/190/564 -f 553/179/553 576/191/565 586/190/564 -f 586/190/564 575/188/562 553/179/553 -f 577/192/566 576/191/565 553/179/553 -f 576/191/565 577/192/566 587/193/567 -f 587/193/567 586/190/564 576/191/565 -f 588/194/568 587/193/567 577/192/566 -f 577/192/566 578/195/569 588/194/568 -f 589/196/570 588/194/568 579/197/571 -f 578/195/569 579/197/571 588/194/568 -f 590/198/572 589/196/570 569/199/573 -f 589/196/570 579/197/571 569/199/573 -f 569/199/573 580/200/574 590/198/572 -f 569/199/573 570/201/575 580/200/574 -f 570/201/575 571/202/576 580/200/574 -f 581/203/577 580/200/574 571/202/576 -f 571/202/576 572/204/578 581/203/577 -f 582/205/579 581/203/577 572/204/578 -f 583/206/580 582/205/579 572/204/578 -f 572/204/578 573/207/581 583/206/580 -f 584/208/582 583/206/580 573/207/581 -f 573/207/581 574/209/583 584/208/582 -f 585/189/563 584/208/582 574/209/583 -f 574/209/583 575/188/562 585/189/563 -f 575/188/562 560/186/560 553/179/553 -f 575/188/562 574/209/583 560/186/560 -f 574/209/583 573/207/581 560/186/560 -f 573/207/581 572/204/578 560/186/560 -f 572/204/578 571/202/576 560/186/560 -f 559/185/559 560/186/560 571/202/576 -f 571/202/576 570/201/575 559/185/559 -f 570/201/575 569/199/573 559/185/559 -f 577/192/566 553/179/553 552/178/552 -f 578/195/569 577/192/566 552/178/552 -f 579/197/571 578/195/569 552/178/552 -f 552/178/552 559/185/559 569/199/573 -f 579/197/571 569/199/573 552/178/552 -# 90 triangles in group - -g Brust -usemtl Skin -f 595/210/584 596/211/585 597/212/586 -f 591/120/587 597/212/586 593/213/588 -f 597/212/586 596/211/585 593/213/588 -f 595/210/584 597/212/586 598/214/589 -f 599/215/590 598/214/589 600/216/591 -f 591/120/587 600/216/591 597/212/586 -f 598/214/589 597/212/586 600/216/591 -f 595/210/584 598/214/589 601/217/592 -f 602/75/593 601/217/592 603/218/594 -f 599/215/590 603/218/594 598/214/589 -f 601/217/592 598/214/589 603/218/594 -f 602/75/593 603/218/594 604/219/595 -f 599/215/590 605/220/596 603/218/594 -f 604/219/595 603/218/594 605/220/596 -f 599/215/590 600/216/591 606/221/597 -f 591/120/587 592/222/598 600/216/591 -f 606/221/597 600/216/591 592/222/598 -f 595/210/584 601/217/592 594/223/599 -f 602/75/593 607/224/600 601/217/592 -f 594/223/599 601/217/592 607/224/600 -# 20 triangles in group - -g Kopf2 -usemtl Skin -f 636/225/601 637/226/602 608/123/603 -f 637/226/602 638/227/604 608/123/603 -f 611/228/605 610/229/606 609/118/607 -f 638/227/604 639/230/608 608/123/603 -f 612/231/609 611/228/605 609/118/607 -f 639/230/608 640/232/610 608/123/603 -f 613/233/611 612/231/609 609/118/607 -f 640/232/610 641/234/612 608/123/603 -f 614/235/613 613/233/611 609/118/607 -f 641/234/612 642/236/614 608/123/603 -f 610/229/606 617/237/615 616/238/616 -f 618/239/617 617/237/615 610/229/606 -f 611/228/605 618/239/617 610/229/606 -f 612/231/609 618/239/617 611/228/605 -f 612/231/609 619/237/618 618/239/617 -f 620/240/619 619/237/618 612/231/609 -f 613/233/611 620/240/619 612/231/609 -f 614/235/613 620/240/619 613/233/611 -f 614/235/613 621/241/620 620/240/619 -f 616/238/616 622/176/621 615/242/622 -f 616/238/616 623/243/623 622/176/621 -f 624/174/624 623/243/623 616/238/616 -f 617/237/615 624/174/624 616/238/616 -f 618/239/617 624/174/624 617/237/615 -f 618/239/617 625/244/625 624/174/624 -f 626/245/626 625/244/625 618/239/617 -f 619/237/618 626/245/626 618/239/617 -f 620/240/619 626/245/626 619/237/618 -f 620/240/619 627/246/627 626/245/626 -f 628/247/628 627/246/627 620/240/619 -f 621/241/620 628/247/628 620/240/619 -f 630/248/629 629/249/630 622/176/621 -f 623/243/623 630/248/629 622/176/621 -f 624/174/624 630/248/629 623/243/623 -f 624/174/624 631/250/631 630/248/629 -f 632/251/632 631/250/631 624/174/624 -f 625/244/625 632/251/632 624/174/624 -f 626/245/626 632/251/632 625/244/625 -f 626/245/626 633/252/633 632/251/632 -f 628/247/628 634/253/634 627/246/627 -f 628/247/628 635/254/635 634/253/634 -f 630/248/629 636/225/601 629/249/630 -f 630/248/629 637/226/602 636/225/601 -f 638/227/604 637/226/602 630/248/629 -f 631/250/631 638/227/604 630/248/629 -f 632/251/632 638/227/604 631/250/631 -f 632/251/632 639/230/608 638/227/604 -f 640/232/610 639/230/608 632/251/632 -f 633/252/633 640/232/610 632/251/632 -f 634/253/634 640/232/610 633/252/633 -f 634/253/634 641/234/612 640/232/610 -f 642/236/614 641/234/612 634/253/634 -f 635/254/635 642/236/614 634/253/634 -f 660/255/636 659/256/637 649/257/638 -f 660/255/636 650/258/639 627/246/627 -f 627/246/627 649/257/638 660/255/636 -f 627/246/627 650/258/639 651/259/640 -f 661/260/641 651/259/640 650/258/639 -f 650/258/639 660/255/636 661/260/641 -f 651/259/640 661/260/641 662/261/642 -f 662/261/642 652/262/643 651/259/640 -f 653/263/644 662/261/642 663/264/645 -f 662/261/642 653/263/644 652/262/643 -f 643/265/646 663/264/645 664/266/647 -f 643/265/646 653/263/644 663/264/645 -f 664/266/647 654/267/648 643/265/646 -f 654/267/648 644/268/649 643/265/646 -f 654/267/648 645/269/650 644/268/649 -f 645/269/650 654/267/648 655/270/651 -f 655/270/651 646/271/652 645/269/650 -f 646/271/652 655/270/651 656/272/653 -f 646/271/652 656/272/653 657/273/654 -f 657/273/654 647/274/655 646/271/652 -f 647/274/655 657/273/654 658/275/656 -f 658/275/656 648/276/657 647/274/655 -f 648/276/657 658/275/656 659/256/637 -f 659/256/637 649/257/638 648/276/657 -f 627/246/627 634/253/634 649/257/638 -f 634/253/634 648/276/657 649/257/638 -f 634/253/634 647/274/655 648/276/657 -f 634/253/634 646/271/652 647/274/655 -f 634/253/634 645/269/650 646/271/652 -f 645/269/650 634/253/634 633/252/633 -f 633/252/633 644/268/649 645/269/650 -f 633/252/633 643/265/646 644/268/649 -f 626/245/626 627/246/627 651/259/640 -f 626/245/626 651/259/640 652/262/643 -f 626/245/626 652/262/643 653/263/644 -f 643/265/646 633/252/633 626/245/626 -f 626/245/626 643/265/646 653/263/644 -# 90 triangles in group - -g Zahn2 -usemtl BeinTex -s 2 -f 687/124/488 668/124/488 665/124/488 -f 670/127/658 686/126/658 667/125/658 -s 1 -f 669/129/659 666/128/660 665/124/661 -f 668/124/488 669/129/659 665/124/661 -f 669/129/659 667/125/662 666/128/660 -f 669/129/659 670/127/663 667/125/662 -s 2 -f 687/124/488 671/124/488 668/124/488 -f 673/130/658 686/126/658 670/127/658 -s 1 -f 671/124/664 669/129/659 668/124/488 -f 671/124/664 672/131/665 669/129/659 -f 673/130/666 670/127/663 669/129/659 -f 672/131/665 673/130/666 669/129/659 -s 2 -f 687/124/488 674/124/488 671/124/488 -f 676/132/658 686/126/658 673/130/658 -s 1 -f 675/133/667 672/131/665 671/124/664 -f 674/124/488 675/133/667 671/124/664 -f 675/133/667 673/130/666 672/131/665 -f 675/133/667 676/132/668 673/130/666 -s 2 -f 687/124/488 677/124/488 674/124/488 -f 679/134/658 686/126/658 676/132/658 -s 1 -f 677/124/669 675/133/667 674/124/488 -f 677/124/669 678/135/670 675/133/667 -f 679/134/671 676/132/668 675/133/667 -f 678/135/670 679/134/671 675/133/667 -s 2 -f 687/124/488 680/124/488 677/124/488 -f 682/136/658 686/126/658 679/134/658 -s 1 -f 681/137/672 678/135/670 677/124/669 -f 680/124/488 681/137/672 677/124/669 -f 681/137/672 679/134/671 678/135/670 -f 681/137/672 682/136/673 679/134/671 -s 2 -f 687/124/488 683/124/488 680/124/488 -f 685/138/658 686/126/658 682/136/658 -s 1 -f 683/124/674 681/137/672 680/124/488 -f 683/124/674 684/139/675 681/137/672 -f 685/138/676 682/136/673 681/137/672 -f 684/139/675 685/138/676 681/137/672 -s 2 -f 687/124/488 665/124/488 683/124/488 -f 667/125/658 686/126/658 685/138/658 -s 1 -f 666/128/660 684/139/675 683/124/674 -f 665/124/661 666/128/660 683/124/674 -f 666/128/660 685/138/676 684/139/675 -f 666/128/660 667/125/662 685/138/676 -# 42 triangles in group - -g klZahn2 -usemtl BeinTex -s 2 -f 710/140/488 691/140/488 688/140/488 -f 693/143/677 709/142/677 690/141/677 -s 1 -f 692/145/678 689/144/679 688/140/680 -f 691/140/488 692/145/678 688/140/680 -f 692/145/678 690/141/681 689/144/679 -f 692/145/678 693/143/682 690/141/681 -s 2 -f 710/140/488 694/140/488 691/140/488 -f 696/146/677 709/142/677 693/143/677 -s 1 -f 694/140/683 692/145/678 691/140/488 -f 694/140/683 695/147/684 692/145/678 -f 696/146/685 693/143/682 692/145/678 -f 695/147/684 696/146/685 692/145/678 -s 2 -f 710/140/488 697/140/488 694/140/488 -f 699/148/677 709/142/677 696/146/677 -s 1 -f 698/149/686 695/147/684 694/140/683 -f 697/140/488 698/149/686 694/140/683 -f 698/149/686 696/146/685 695/147/684 -f 698/149/686 699/148/687 696/146/685 -s 2 -f 710/140/488 700/140/488 697/140/488 -f 702/150/677 709/142/677 699/148/677 -s 1 -f 700/140/688 698/149/686 697/140/488 -f 700/140/688 701/151/689 698/149/686 -f 702/150/690 699/148/687 698/149/686 -f 701/151/689 702/150/690 698/149/686 -s 2 -f 710/140/488 703/140/488 700/140/488 -f 705/152/677 709/142/677 702/150/677 -s 1 -f 704/153/691 701/151/689 700/140/688 -f 703/140/488 704/153/691 700/140/688 -f 704/153/691 702/150/690 701/151/689 -f 704/153/691 705/152/692 702/150/690 -s 2 -f 710/140/488 706/140/488 703/140/488 -f 708/154/677 709/142/677 705/152/677 -s 1 -f 706/140/693 704/153/691 703/140/488 -f 706/140/693 707/155/694 704/153/691 -f 708/154/695 705/152/692 704/153/691 -f 707/155/694 708/154/695 704/153/691 -s 2 -f 710/140/488 688/140/488 706/140/488 -f 690/141/677 709/142/677 708/154/677 -s 1 -f 689/144/679 707/155/694 706/140/693 -f 688/140/680 689/144/679 706/140/693 -f 689/144/679 708/154/695 707/155/694 -f 689/144/679 690/141/681 708/154/695 -# 42 triangles in group - -g Auge -usemtl Augentex -f 711/277/696 712/278/697 713/279/698 -f 711/277/696 713/279/698 714/280/699 -f 715/281/700 714/280/699 716/282/701 -f 714/280/699 713/279/698 716/282/701 -f 715/281/700 716/282/701 717/283/702 -f 718/284/703 720/285/704 721/286/705 -f 722/287/706 721/286/705 723/288/707 -f 719/289/708 723/288/707 720/285/704 -f 721/286/705 720/285/704 723/288/707 -f 722/287/706 723/288/707 724/290/709 -f 725/291/710 724/290/709 726/292/711 -f 719/289/708 726/292/711 723/288/707 -f 724/290/709 723/288/707 726/292/711 -f 725/291/710 727/293/712 729/294/713 -f 730/295/714 729/294/713 731/296/715 -f 728/297/716 731/296/715 727/293/712 -f 729/294/713 727/293/712 731/296/715 -f 730/295/714 731/296/715 732/298/717 -f 711/277/696 732/298/717 733/299/718 -f 728/297/716 733/299/718 731/296/715 -f 732/298/717 731/296/715 733/299/718 -f 711/277/696 733/299/718 712/278/697 -f 715/281/700 734/300/719 714/280/699 -f 711/277/696 714/280/699 732/298/717 -f 730/295/714 732/298/717 734/300/719 -f 714/280/699 734/300/719 732/298/717 -f 715/281/700 735/301/720 734/300/719 -f 730/295/714 734/300/719 736/302/721 -f 722/287/706 736/302/721 735/301/720 -f 734/300/719 735/301/720 736/302/721 -f 715/281/700 717/283/702 735/301/720 -f 722/287/706 735/301/720 721/286/705 -f 718/284/703 721/286/705 717/283/702 -f 735/301/720 717/283/702 721/286/705 -f 725/291/710 729/294/713 724/290/709 -f 722/287/706 724/290/709 736/302/721 -f 730/295/714 736/302/721 729/294/713 -f 724/290/709 729/294/713 736/302/721 -# 38 triangles in group - -g Duplicate05 -usemtl Augentex -f 739/279/722 738/278/723 737/277/724 -f 740/280/725 739/279/722 737/277/724 -f 742/282/726 740/280/725 741/281/727 -f 742/282/726 739/279/722 740/280/725 -f 743/283/728 742/282/726 741/281/727 -f 747/286/729 746/285/730 744/284/731 -f 749/288/732 747/286/729 748/287/733 -f 746/285/730 749/288/732 745/289/734 -f 749/288/732 746/285/730 747/286/729 -f 750/290/735 749/288/732 748/287/733 -f 752/292/736 750/290/735 751/291/737 -f 749/288/732 752/292/736 745/289/734 -f 752/292/736 749/288/732 750/290/735 -f 755/294/738 753/293/739 751/291/737 -f 757/296/740 755/294/738 756/295/741 -f 753/293/739 757/296/740 754/297/742 -f 757/296/740 753/293/739 755/294/738 -f 758/298/743 757/296/740 756/295/741 -f 759/299/744 758/298/743 737/277/724 -f 757/296/740 759/299/744 754/297/742 -f 759/299/744 757/296/740 758/298/743 -f 738/278/723 759/299/744 737/277/724 -f 740/280/725 760/300/745 741/281/727 -f 758/298/743 740/280/725 737/277/724 -f 760/300/745 758/298/743 756/295/741 -f 758/298/743 760/300/745 740/280/725 -f 760/300/745 761/301/746 741/281/727 -f 762/302/747 760/300/745 756/295/741 -f 761/301/746 762/302/747 748/287/733 -f 762/302/747 761/301/746 760/300/745 -f 761/301/746 743/283/728 741/281/727 -f 747/286/729 761/301/746 748/287/733 -f 743/283/728 747/286/729 744/284/731 -f 747/286/729 743/283/728 761/301/746 -f 750/290/735 755/294/738 751/291/737 -f 762/302/747 750/290/735 748/287/733 -f 755/294/738 762/302/747 756/295/741 -f 762/302/747 755/294/738 750/290/735 -# 38 triangles in group - -# 1368 triangles total - +# File produced by Open Asset Import Library (http://www.assimp.sf.net) +# (assimp v3.3.29758555) + +mtllib spider.obj.mtl + +# 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.41482543945312 +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.68484497070312 +v 39.18625640869141 16.23099708557129 -35.63270568847656 +v 51.09176254272461 11.23489952087402 -25.68484497070312 +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 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.19473266601562 -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 -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.98501586914062 13.43557167053223 -79.02035522460938 +v -69.89360046386719 14.10584259033203 -80.14413452148438 +v -81.67832183837891 -31.37918090820312 -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 -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.50344848632812 +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 -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.37185668945312 -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.95950317382812 -39.73274230957031 57.5407600402832 +v -49.36812591552734 8.476757049560547 19.08589744567871 +v -49.19630432128906 7.804555892944336 21.29348754882812 +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 -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 -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 -92.65523529052734 -39.6205940246582 56.67316055297852 +v -52.60464477539062 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.11734008789062 +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.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.81033325195312 -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.05325317382812 +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.65310668945312 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.48403930664062 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.03384399414062 44.86114120483398 +v -27.90771293640137 -35.34060668945312 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.37918090820312 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 -3.589093923568726 14.20652008056641 58.0562744140625 +v 2.445001125335693 -29.51860809326172 81.25101470947266 +v -30.15432739257812 -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 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 -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.85086059570312 +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.37918090820312 -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 -14.50934600830078 29.82746124267578 -46.45841217041016 +v -13.3946418762207 29.56021118164062 -51.82656097412109 +v -3.589093923568726 14.20652008056641 -78.05626678466797 +v 2.445001125335693 -29.51860809326172 -101.2510147094727 +v -30.15432739257812 -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 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 -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.15628051757812 +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 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.69778442382812 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 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.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 1.900102972984314 28.02400207519531 -44.582763671875 +v 13.52688598632812 5.642467975616455 -66.95231628417969 +v 13.22692108154297 6.223588943481445 -69.17202758789062 +v 17.86732864379883 -29.66015243530273 -80.59872436523438 +v 17.64273071289062 -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.45840454101562 +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.69778442382812 -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.62808227539062 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.06387329101562 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.06387329101562 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.86489868164062 +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.62808227539062 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.57522583007812 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 -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.57522583007812 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.57522583007812 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.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.57522583007812 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.8114089965820312 -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.3192520141601562 -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.5362930297851562 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_HLeib01_HLeib01_HLeib01' with 80 faces +g HLeib01_HLeib01_HLeib01_HLeib01 +usemtl HLeibTex +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_OK_OK_OK' with 60 faces +g OK_OK_OK_OK +usemtl Skin +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_Bein1Li_Bein1Li_Bein1Li' with 98 faces +g Bein1Li_Bein1Li_Bein1Li_Bein1Li +usemtl BeinTex +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_Bein1Re_Bein1Re_Bein1Re' with 98 faces +g Bein1Re_Bein1Re_Bein1Re_Bein1Re +usemtl BeinTex +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_Bein2Li_Bein2Li_Bein2Li' with 98 faces +g Bein2Li_Bein2Li_Bein2Li_Bein2Li +usemtl BeinTex +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_Bein2Re_Bein2Re_Bein2Re' with 98 faces +g Bein2Re_Bein2Re_Bein2Re_Bein2Re +usemtl BeinTex +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_Bein3Re_Bein3Re_Bein3Re' with 98 faces +g Bein3Re_Bein3Re_Bein3Re_Bein3Re +usemtl BeinTex +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_Bein3Li_Bein3Li_Bein3Li' with 98 faces +g Bein3Li_Bein3Li_Bein3Li_Bein3Li +usemtl BeinTex +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_Bein4Re_Bein4Re_Bein4Re' with 98 faces +g Bein4Re_Bein4Re_Bein4Re_Bein4Re +usemtl BeinTex +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_Bein4Li_Bein4Li_Bein4Li' with 98 faces +g Bein4Li_Bein4Li_Bein4Li_Bein4Li +usemtl BeinTex +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_Zahn_Zahn_Zahn' with 42 faces +g Zahn_Zahn_Zahn_Zahn +usemtl BeinTex +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_klZahn_klZahn_klZahn' with 42 faces +g klZahn_klZahn_klZahn_klZahn +usemtl BeinTex +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_Kopf_Kopf_Kopf' with 90 faces +g Kopf_Kopf_Kopf_Kopf +usemtl Skin +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_Brust_Brust_Brust' with 20 faces +g Brust_Brust_Brust_Brust +usemtl Skin +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_Kopf2_Kopf2_Kopf2' with 90 faces +g Kopf2_Kopf2_Kopf2_Kopf2 +usemtl Skin +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_Zahn2_Zahn2_Zahn2' with 42 faces +g Zahn2_Zahn2_Zahn2_Zahn2 +usemtl BeinTex +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_klZahn2_klZahn2_klZahn2' with 42 faces +g klZahn2_klZahn2_klZahn2_klZahn2 +usemtl BeinTex +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_Auge_Auge_Auge' with 38 faces +g Auge_Auge_Auge_Auge +usemtl Augentex +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_Duplicate05_Duplicate05_Duplicate05' with 38 faces +g Duplicate05_Duplicate05_Duplicate05_Duplicate05 +usemtl Augentex +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/float-color.ply b/test/models/PLY/float-color.ply new file mode 100644 index 000000000..34353ad53 --- /dev/null +++ b/test/models/PLY/float-color.ply @@ -0,0 +1,18 @@ +ply +format ascii 1.0 +comment VCGLIB generated +element vertex 3 +property float x +property float y +property float z +property float red +property float green +property float blue +property float alpha +element face 1 +property list uchar int vertex_indices +end_header +0.0 0.0 0.0 0 0 1 1 +100.0 0.0 0.0 0 0 1 1 +200.0 200.0 0.0 0 0 1 1 +3 0 1 2 \ No newline at end of file diff --git a/test/models/SMD/holy_grailref.smd b/test/models/SMD/holy_grailref.smd new file mode 100644 index 000000000..0a3a331aa --- /dev/null +++ b/test/models/SMD/holy_grailref.smd @@ -0,0 +1,3594 @@ +version 1 +nodes +0 "Cylinder01" -1 +end +skeleton +time 0 +0 0.000000 0.000000 6.268408 0.000000 -0.000000 0.000000 +end +triangles +holygrail.tga +0 4.642112 0.000006 0.109110 0.194769 0.000000 -0.980834 0.367188 0.382813 1 0 1.000000 +0 4.362156 -1.587696 0.109110 0.183020 -0.066591 -0.980834 0.382813 0.359375 1 0 1.000000 +0 3.556062 -2.983890 0.109111 0.149174 -0.125187 -0.980834 0.406250 0.335938 1 0 1.000000 +holygrail.tga +0 7.522307 0.000000 20.680813 0.997131 0.000000 -0.075381 0.773438 0.726563 1 0 1.000000 +0 7.068654 -2.572787 20.680813 0.937010 -0.341044 -0.075381 0.726563 0.726563 1 0 1.000000 +0 6.528368 -2.376138 18.269222 0.829829 -0.302042 -0.469131 0.726563 0.671875 1 0 1.000000 +holygrail.tga +0 -3.761152 6.514506 20.680819 -0.498550 0.863552 -0.075381 0.117188 0.726563 1 0 1.000000 +0 -1.306235 7.408025 20.680819 -0.173132 0.981994 -0.075381 0.058594 0.726563 1 0 1.000000 +0 -1.206394 6.841801 18.269226 -0.153325 0.869686 -0.469131 0.058594 0.671875 1 0 1.000000 +holygrail.tga +0 -2.863631 -1.042275 14.964446 -0.903104 -0.328684 0.276284 0.339844 0.578125 1 0 1.000000 +0 -2.334454 -1.958836 14.964447 -0.736198 -0.617756 0.276284 0.394531 0.578125 1 0 1.000000 +0 -2.195500 -1.842239 15.321719 -0.714652 -0.599658 -0.360088 0.394531 0.593750 1 0 1.000000 +holygrail.tga +0 -2.334451 1.958838 14.964448 -0.736198 0.617756 0.276284 0.171875 0.578125 1 0 1.000000 +0 -1.523703 2.639137 14.964448 -0.480514 0.832301 0.276284 0.117188 0.578125 1 0 1.000000 +0 -1.569052 2.717682 14.071264 -0.493851 0.855373 -0.156285 0.117188 0.539063 1 0 1.000000 +holygrail.tga +0 0.544927 3.090433 14.071264 0.171484 0.972686 -0.156285 1.000000 0.539063 1 0 1.000000 +0 1.569054 2.717682 14.071264 0.493851 0.855373 -0.156285 0.941406 0.539063 1 0 1.000000 +0 1.387662 2.403501 13.267400 0.420179 0.727775 -0.541978 0.941406 0.507813 1 0 1.000000 +holygrail.tga +0 -2.593930 0.000002 5.842322 -0.849239 0.000000 0.527940 0.289063 0.195313 1 0 1.000000 +0 -2.437499 -0.887174 5.842322 -0.798029 -0.290445 0.527940 0.339844 0.195313 1 0 1.000000 +0 -1.840913 -0.670035 7.003459 -0.935789 -0.340587 0.090976 0.339844 0.261719 1 0 1.000000 +holygrail.tga +0 -5.129199 -1.866871 0.823655 -0.888028 -0.323222 0.326945 0.339844 0.031250 1 0 1.000000 +0 -4.181361 -3.508573 0.823656 -0.723930 -0.607440 0.326945 0.394531 0.031250 1 0 1.000000 +0 -3.833975 -3.217081 1.180929 -0.615467 -0.516434 0.595355 0.394531 0.046875 1 0 1.000000 +holygrail.tga +0 7.868691 2.863969 23.281614 0.772057 0.280984 0.569994 0.832031 0.816406 1 0 1.000000 +0 8.373683 0.000000 23.281614 0.821619 0.000000 0.569994 0.773438 0.816406 1 0 1.000000 +0 8.373683 0.000000 22.962572 0.957976 0.000000 -0.286752 0.773438 0.804688 1 0 1.000000 +holygrail.tga +0 8.373683 0.000000 22.962572 0.957976 0.000000 -0.286752 0.773438 0.804688 1 0 1.000000 +0 7.868691 2.863969 22.962572 0.900204 0.327647 -0.286752 0.832031 0.804688 1 0 1.000000 +0 7.868691 2.863969 23.281614 0.772057 0.280984 0.569994 0.832031 0.816406 1 0 1.000000 +holygrail.tga +0 6.414617 5.382501 23.281618 0.629383 0.528123 0.569994 0.886719 0.816406 1 0 1.000000 +0 7.868691 2.863969 23.281614 0.772057 0.280984 0.569994 0.832031 0.816406 1 0 1.000000 +0 7.868691 2.863969 22.962572 0.900204 0.327647 -0.286752 0.832031 0.804688 1 0 1.000000 +holygrail.tga +0 7.868691 2.863969 22.962572 0.900204 0.327647 -0.286752 0.832031 0.804688 1 0 1.000000 +0 6.414617 5.382501 22.962572 0.733848 0.615772 -0.286752 0.886719 0.804688 1 0 1.000000 +0 6.414617 5.382501 23.281618 0.629383 0.528123 0.569994 0.886719 0.816406 1 0 1.000000 +holygrail.tga +0 4.186843 7.251825 23.281618 0.410810 0.711539 0.569994 0.941406 0.816406 1 0 1.000000 +0 6.414617 5.382501 23.281618 0.629383 0.528123 0.569994 0.886719 0.816406 1 0 1.000000 +0 6.414617 5.382501 22.962572 0.733848 0.615772 -0.286752 0.886719 0.804688 1 0 1.000000 +holygrail.tga +0 6.414617 5.382501 22.962572 0.733848 0.615772 -0.286752 0.886719 0.804688 1 0 1.000000 +0 4.186843 7.251825 22.962572 0.478988 0.829646 -0.286752 0.941406 0.804688 1 0 1.000000 +0 4.186843 7.251825 23.281618 0.410810 0.711539 0.569994 0.941406 0.816406 1 0 1.000000 +holygrail.tga +0 1.454075 8.246472 23.281618 0.142674 0.809137 0.569994 1.000000 0.816406 1 0 1.000000 +0 4.186843 7.251825 23.281618 0.410810 0.711539 0.569994 0.941406 0.816406 1 0 1.000000 +0 4.186843 7.251825 22.962572 0.478988 0.829646 -0.286752 0.941406 0.804688 1 0 1.000000 +holygrail.tga +0 4.186843 7.251825 22.962572 0.478988 0.829646 -0.286752 0.941406 0.804688 1 0 1.000000 +0 1.454075 8.246472 22.962572 0.166326 0.943419 -0.286752 1.000000 0.804688 1 0 1.000000 +0 1.454075 8.246472 23.281618 0.142674 0.809137 0.569994 1.000000 0.816406 1 0 1.000000 +holygrail.tga +0 -1.454076 8.246472 23.281618 -0.142674 0.809137 0.569994 0.058594 0.816406 1 0 1.000000 +0 1.454075 8.246472 23.281618 0.142674 0.809137 0.569994 0.000000 0.816406 1 0 1.000000 +0 1.454075 8.246472 22.962572 0.166326 0.943419 -0.286752 0.000000 0.804688 1 0 1.000000 +holygrail.tga +0 1.454075 8.246472 22.962572 0.166326 0.943419 -0.286752 0.000000 0.804688 1 0 1.000000 +0 -1.454076 8.246470 22.962572 -0.166326 0.943419 -0.286752 0.058594 0.804688 1 0 1.000000 +0 -1.454076 8.246472 23.281618 -0.142674 0.809137 0.569994 0.058594 0.816406 1 0 1.000000 +holygrail.tga +0 -4.186843 7.251825 23.281618 -0.410810 0.711539 0.569994 0.117188 0.816406 1 0 1.000000 +0 -1.454076 8.246472 23.281618 -0.142674 0.809137 0.569994 0.058594 0.816406 1 0 1.000000 +0 -1.454076 8.246470 22.962572 -0.166326 0.943419 -0.286752 0.058594 0.804688 1 0 1.000000 +holygrail.tga +0 -1.454076 8.246470 22.962572 -0.166326 0.943419 -0.286752 0.058594 0.804688 1 0 1.000000 +0 -4.186843 7.251825 22.962572 -0.478988 0.829646 -0.286752 0.117188 0.804688 1 0 1.000000 +0 -4.186843 7.251825 23.281618 -0.410810 0.711539 0.569994 0.117188 0.816406 1 0 1.000000 +holygrail.tga +0 -6.414615 5.382501 23.281618 -0.629383 0.528123 0.569994 0.171875 0.816406 1 0 1.000000 +0 -4.186843 7.251825 23.281618 -0.410810 0.711539 0.569994 0.117188 0.816406 1 0 1.000000 +0 -4.186843 7.251825 22.962572 -0.478988 0.829646 -0.286752 0.117188 0.804688 1 0 1.000000 +holygrail.tga +0 -4.186843 7.251825 22.962572 -0.478988 0.829646 -0.286752 0.117188 0.804688 1 0 1.000000 +0 -6.414615 5.382501 22.962572 -0.733848 0.615772 -0.286752 0.171875 0.804688 1 0 1.000000 +0 -6.414615 5.382501 23.281618 -0.629383 0.528123 0.569994 0.171875 0.816406 1 0 1.000000 +holygrail.tga +0 -7.868690 2.863969 23.281614 -0.772057 0.280984 0.569994 0.226563 0.816406 1 0 1.000000 +0 -6.414615 5.382501 23.281618 -0.629383 0.528123 0.569994 0.171875 0.816406 1 0 1.000000 +0 -6.414615 5.382501 22.962572 -0.733848 0.615772 -0.286752 0.171875 0.804688 1 0 1.000000 +holygrail.tga +0 -6.414615 5.382501 22.962572 -0.733848 0.615772 -0.286752 0.171875 0.804688 1 0 1.000000 +0 -7.868690 2.863969 22.962572 -0.900204 0.327647 -0.286752 0.226563 0.804688 1 0 1.000000 +0 -7.868690 2.863969 23.281614 -0.772057 0.280984 0.569994 0.226563 0.816406 1 0 1.000000 +holygrail.tga +0 -8.373686 0.000001 23.281614 -0.821619 0.000000 0.570025 0.289063 0.816406 1 0 1.000000 +0 -7.868690 2.863969 23.281614 -0.772057 0.280984 0.569994 0.226563 0.816406 1 0 1.000000 +0 -7.868690 2.863969 22.962572 -0.900204 0.327647 -0.286752 0.226563 0.804688 1 0 1.000000 +holygrail.tga +0 -7.868690 2.863969 22.962572 -0.900204 0.327647 -0.286752 0.226563 0.804688 1 0 1.000000 +0 -8.373686 0.000001 22.962572 -0.957976 0.000000 -0.286752 0.289063 0.804688 1 0 1.000000 +0 -8.373686 0.000001 23.281614 -0.821619 0.000000 0.570025 0.289063 0.816406 1 0 1.000000 +holygrail.tga +0 -7.868692 -2.863967 23.281614 -0.772057 -0.280984 0.569994 0.339844 0.816406 1 0 1.000000 +0 -8.373686 0.000001 23.281614 -0.821619 0.000000 0.570025 0.289063 0.816406 1 0 1.000000 +0 -8.373686 0.000001 22.962572 -0.957976 0.000000 -0.286752 0.289063 0.804688 1 0 1.000000 +holygrail.tga +0 -8.373686 0.000001 22.962572 -0.957976 0.000000 -0.286752 0.289063 0.804688 1 0 1.000000 +0 -7.868692 -2.863967 22.962572 -0.900204 -0.327647 -0.286752 0.339844 0.804688 1 0 1.000000 +0 -7.868692 -2.863967 23.281614 -0.772057 -0.280984 0.569994 0.339844 0.816406 1 0 1.000000 +holygrail.tga +0 -6.414616 -5.382501 23.281614 -0.629383 -0.528123 0.569994 0.394531 0.816406 1 0 1.000000 +0 -7.868692 -2.863967 23.281614 -0.772057 -0.280984 0.569994 0.339844 0.816406 1 0 1.000000 +0 -7.868692 -2.863967 22.962572 -0.900204 -0.327647 -0.286752 0.339844 0.804688 1 0 1.000000 +holygrail.tga +0 -7.868692 -2.863967 22.962572 -0.900204 -0.327647 -0.286752 0.339844 0.804688 1 0 1.000000 +0 -6.414616 -5.382500 22.962572 -0.733848 -0.615772 -0.286752 0.394531 0.804688 1 0 1.000000 +0 -6.414616 -5.382501 23.281614 -0.629383 -0.528123 0.569994 0.394531 0.816406 1 0 1.000000 +holygrail.tga +0 -4.186845 -7.251821 23.281614 -0.410810 -0.711539 0.570025 0.449219 0.816406 1 0 1.000000 +0 -6.414616 -5.382501 23.281614 -0.629383 -0.528123 0.569994 0.394531 0.816406 1 0 1.000000 +0 -6.414616 -5.382500 22.962572 -0.733848 -0.615772 -0.286752 0.394531 0.804688 1 0 1.000000 +holygrail.tga +0 -6.414616 -5.382500 22.962572 -0.733848 -0.615772 -0.286752 0.394531 0.804688 1 0 1.000000 +0 -4.186845 -7.251822 22.962572 -0.478988 -0.829646 -0.286752 0.449219 0.804688 1 0 1.000000 +0 -4.186845 -7.251821 23.281614 -0.410810 -0.711539 0.570025 0.449219 0.816406 1 0 1.000000 +holygrail.tga +0 -1.454078 -8.246469 23.281614 -0.142674 -0.809137 0.570025 0.503906 0.816406 1 0 1.000000 +0 -4.186845 -7.251821 23.281614 -0.410810 -0.711539 0.570025 0.449219 0.816406 1 0 1.000000 +0 -4.186845 -7.251822 22.962572 -0.478988 -0.829646 -0.286752 0.449219 0.804688 1 0 1.000000 +holygrail.tga +0 -4.186845 -7.251822 22.962572 -0.478988 -0.829646 -0.286752 0.449219 0.804688 1 0 1.000000 +0 -1.454079 -8.246470 22.962572 -0.166326 -0.943419 -0.286752 0.503906 0.804688 1 0 1.000000 +0 -1.454078 -8.246469 23.281614 -0.142674 -0.809137 0.570025 0.503906 0.816406 1 0 1.000000 +holygrail.tga +0 1.454071 -8.246470 23.281614 0.142644 -0.809137 0.569994 0.554688 0.816406 1 0 1.000000 +0 -1.454078 -8.246469 23.281614 -0.142674 -0.809137 0.570025 0.503906 0.816406 1 0 1.000000 +0 -1.454079 -8.246470 22.962572 -0.166326 -0.943419 -0.286752 0.503906 0.804688 1 0 1.000000 +holygrail.tga +0 -1.454079 -8.246470 22.962572 -0.166326 -0.943419 -0.286752 0.503906 0.804688 1 0 1.000000 +0 1.454071 -8.246470 22.962572 0.166326 -0.943419 -0.286752 0.554688 0.804688 1 0 1.000000 +0 1.454071 -8.246470 23.281614 0.142644 -0.809137 0.569994 0.554688 0.816406 1 0 1.000000 +holygrail.tga +0 4.186839 -7.251825 23.281614 0.410810 -0.711539 0.570025 0.613281 0.816406 1 0 1.000000 +0 1.454071 -8.246470 23.281614 0.142644 -0.809137 0.569994 0.554688 0.816406 1 0 1.000000 +0 1.454071 -8.246470 22.962572 0.166326 -0.943419 -0.286752 0.554688 0.804688 1 0 1.000000 +holygrail.tga +0 1.454071 -8.246470 22.962572 0.166326 -0.943419 -0.286752 0.554688 0.804688 1 0 1.000000 +0 4.186839 -7.251826 22.962572 0.478988 -0.829646 -0.286752 0.613281 0.804688 1 0 1.000000 +0 4.186839 -7.251825 23.281614 0.410810 -0.711539 0.570025 0.613281 0.816406 1 0 1.000000 +holygrail.tga +0 6.414613 -5.382505 23.281614 0.629383 -0.528123 0.569994 0.664063 0.816406 1 0 1.000000 +0 4.186839 -7.251825 23.281614 0.410810 -0.711539 0.570025 0.613281 0.816406 1 0 1.000000 +0 4.186839 -7.251826 22.962572 0.478988 -0.829646 -0.286752 0.613281 0.804688 1 0 1.000000 +holygrail.tga +0 4.186839 -7.251826 22.962572 0.478988 -0.829646 -0.286752 0.613281 0.804688 1 0 1.000000 +0 6.414613 -5.382505 22.962572 0.733848 -0.615772 -0.286752 0.664063 0.804688 1 0 1.000000 +0 6.414613 -5.382505 23.281614 0.629383 -0.528123 0.569994 0.664063 0.816406 1 0 1.000000 +holygrail.tga +0 7.868689 -2.863975 23.281614 0.772057 -0.280984 0.569994 0.726563 0.816406 1 0 1.000000 +0 6.414613 -5.382505 23.281614 0.629383 -0.528123 0.569994 0.664063 0.816406 1 0 1.000000 +0 6.414613 -5.382505 22.962572 0.733848 -0.615772 -0.286752 0.664063 0.804688 1 0 1.000000 +holygrail.tga +0 6.414613 -5.382505 22.962572 0.733848 -0.615772 -0.286752 0.664063 0.804688 1 0 1.000000 +0 7.868689 -2.863975 22.962572 0.900204 -0.327647 -0.286752 0.726563 0.804688 1 0 1.000000 +0 7.868689 -2.863975 23.281614 0.772057 -0.280984 0.569994 0.726563 0.816406 1 0 1.000000 +holygrail.tga +0 8.373683 0.000000 23.281614 0.821619 0.000000 0.569994 0.773438 0.816406 1 0 1.000000 +0 7.868689 -2.863975 23.281614 0.772057 -0.280984 0.569994 0.726563 0.816406 1 0 1.000000 +0 7.868689 -2.863975 22.962572 0.900204 -0.327647 -0.286752 0.726563 0.804688 1 0 1.000000 +holygrail.tga +0 7.868689 -2.863975 22.962572 0.900204 -0.327647 -0.286752 0.726563 0.804688 1 0 1.000000 +0 8.373683 0.000000 22.962572 0.957976 0.000000 -0.286752 0.773438 0.804688 1 0 1.000000 +0 8.373683 0.000000 23.281614 0.821619 0.000000 0.569994 0.773438 0.816406 1 0 1.000000 +holygrail.tga +0 3.556066 2.983894 0.109113 0.149174 0.125187 -0.980834 0.406250 0.429688 1 0 1.000000 +0 4.362160 1.587699 0.109111 0.183020 0.066591 -0.980834 0.382813 0.410156 1 0 1.000000 +0 4.642112 0.000006 0.109110 0.194769 0.000000 -0.980834 0.367188 0.382813 1 0 1.000000 +holygrail.tga +0 3.556062 -2.983890 0.109111 0.149174 -0.125187 -0.980834 0.406250 0.335938 1 0 1.000000 +0 2.321053 -4.020187 0.109110 0.097385 -0.168676 -0.980834 0.437500 0.320313 1 0 1.000000 +0 0.806092 -4.571585 0.109110 0.033815 -0.191809 -0.980834 0.480469 0.308594 1 0 1.000000 +holygrail.tga +0 4.642112 0.000006 0.109110 0.194769 0.000000 -0.980834 0.367188 0.382813 1 0 1.000000 +0 3.556062 -2.983890 0.109111 0.149174 -0.125187 -0.980834 0.406250 0.335938 1 0 1.000000 +0 0.806092 -4.571585 0.109110 0.033815 -0.191809 -0.980834 0.480469 0.308594 1 0 1.000000 +holygrail.tga +0 3.556066 2.983894 0.109113 0.149174 0.125187 -0.980834 0.406250 0.429688 1 0 1.000000 +0 4.642112 0.000006 0.109110 0.194769 0.000000 -0.980834 0.367188 0.382813 1 0 1.000000 +0 0.806092 -4.571585 0.109110 0.033815 -0.191809 -0.980834 0.480469 0.308594 1 0 1.000000 +holygrail.tga +0 0.806092 -4.571585 0.109110 0.033815 -0.191809 -0.980834 0.480469 0.308594 1 0 1.000000 +0 -0.806094 -4.571585 0.109110 -0.033815 -0.191809 -0.980834 0.527344 0.308594 1 0 1.000000 +0 -2.321057 -4.020183 0.109110 -0.097385 -0.168676 -0.980834 0.570313 0.320313 1 0 1.000000 +holygrail.tga +0 -2.321057 -4.020183 0.109110 -0.097385 -0.168676 -0.980834 0.570313 0.320313 1 0 1.000000 +0 -3.556065 -2.983887 0.109111 -0.149174 -0.125187 -0.980834 0.609375 0.335938 1 0 1.000000 +0 -4.362159 -1.587692 0.109110 -0.183020 -0.066591 -0.980834 0.632813 0.359375 1 0 1.000000 +holygrail.tga +0 0.806092 -4.571585 0.109110 0.033815 -0.191809 -0.980834 0.480469 0.308594 1 0 1.000000 +0 -2.321057 -4.020183 0.109110 -0.097385 -0.168676 -0.980834 0.570313 0.320313 1 0 1.000000 +0 -4.362159 -1.587692 0.109110 -0.183020 -0.066591 -0.980834 0.632813 0.359375 1 0 1.000000 +holygrail.tga +0 3.556066 2.983894 0.109113 0.149174 0.125187 -0.980834 0.406250 0.429688 1 0 1.000000 +0 0.806092 -4.571585 0.109110 0.033815 -0.191809 -0.980834 0.480469 0.308594 1 0 1.000000 +0 -4.362159 -1.587692 0.109110 -0.183020 -0.066591 -0.980834 0.632813 0.359375 1 0 1.000000 +holygrail.tga +0 -4.362159 -1.587692 0.109110 -0.183020 -0.066591 -0.980834 0.632813 0.359375 1 0 1.000000 +0 -4.642111 0.000003 0.109110 -0.194769 0.000000 -0.980834 0.644531 0.382813 1 0 1.000000 +0 -4.362158 1.587698 0.109111 -0.183020 0.066591 -0.980834 0.632813 0.410156 1 0 1.000000 +holygrail.tga +0 -4.362158 1.587698 0.109111 -0.183020 0.066591 -0.980834 0.632813 0.410156 1 0 1.000000 +0 -3.556063 2.983893 0.109113 -0.149174 0.125187 -0.980834 0.609375 0.429688 1 0 1.000000 +0 -2.321054 4.020190 0.109112 -0.097385 0.168676 -0.980834 0.570313 0.449219 1 0 1.000000 +holygrail.tga +0 -4.362159 -1.587692 0.109110 -0.183020 -0.066591 -0.980834 0.632813 0.359375 1 0 1.000000 +0 -4.362158 1.587698 0.109111 -0.183020 0.066591 -0.980834 0.632813 0.410156 1 0 1.000000 +0 -2.321054 4.020190 0.109112 -0.097385 0.168676 -0.980834 0.570313 0.449219 1 0 1.000000 +holygrail.tga +0 3.556066 2.983894 0.109113 0.149174 0.125187 -0.980834 0.406250 0.429688 1 0 1.000000 +0 -4.362159 -1.587692 0.109110 -0.183020 -0.066591 -0.980834 0.632813 0.359375 1 0 1.000000 +0 -2.321054 4.020190 0.109112 -0.097385 0.168676 -0.980834 0.570313 0.449219 1 0 1.000000 +holygrail.tga +0 -2.321054 4.020190 0.109112 -0.097385 0.168676 -0.980834 0.570313 0.449219 1 0 1.000000 +0 -0.806095 4.571591 0.109112 -0.033815 0.191809 -0.980834 0.527344 0.457031 1 0 1.000000 +0 0.806094 4.571591 0.109112 0.033815 0.191809 -0.980834 0.480469 0.457031 1 0 1.000000 +holygrail.tga +0 3.556066 2.983894 0.109113 0.149174 0.125187 -0.980834 0.406250 0.429688 1 0 1.000000 +0 -2.321054 4.020190 0.109112 -0.097385 0.168676 -0.980834 0.570313 0.449219 1 0 1.000000 +0 0.806094 4.571591 0.109112 0.033815 0.191809 -0.980834 0.480469 0.457031 1 0 1.000000 +holygrail.tga +0 3.556066 2.983894 0.109113 0.149174 0.125187 -0.980834 0.406250 0.429688 1 0 1.000000 +0 0.806094 4.571591 0.109112 0.033815 0.191809 -0.980834 0.480469 0.457031 1 0 1.000000 +0 2.321057 4.020190 0.109112 0.097385 0.168645 -0.980834 0.437500 0.449219 1 0 1.000000 +holygrail.tga +0 0.558996 -0.968207 15.421605 -0.090548 0.156835 0.983459 0.437500 0.449219 1 0 1.000000 +0 0.856433 -0.718628 15.421605 -0.138707 0.116398 0.983459 0.406250 0.429688 1 0 1.000000 +0 1.050567 -0.382379 15.421605 -0.170171 0.061922 0.983459 0.382813 0.410156 1 0 1.000000 +holygrail.tga +0 1.050567 -0.382379 15.421605 -0.170171 0.061922 0.983459 0.382813 0.410156 1 0 1.000000 +0 1.117992 0.000004 15.421604 -0.181097 0.000000 0.983459 0.367188 0.382813 1 0 1.000000 +0 1.050568 0.382381 15.421604 -0.170171 -0.061922 0.983459 0.382813 0.359375 1 0 1.000000 +holygrail.tga +0 1.050568 0.382381 15.421604 -0.170171 -0.061922 0.983459 0.382813 0.359375 1 0 1.000000 +0 0.856432 0.718634 15.421607 -0.138737 -0.116398 0.983459 0.406250 0.335938 1 0 1.000000 +0 0.558995 0.968213 15.421606 -0.090548 -0.156835 0.983459 0.437500 0.320313 1 0 1.000000 +holygrail.tga +0 1.050567 -0.382379 15.421605 -0.170171 0.061922 0.983459 0.382813 0.410156 1 0 1.000000 +0 1.050568 0.382381 15.421604 -0.170171 -0.061922 0.983459 0.382813 0.359375 1 0 1.000000 +0 0.558995 0.968213 15.421606 -0.090548 -0.156835 0.983459 0.437500 0.320313 1 0 1.000000 +holygrail.tga +0 0.558996 -0.968207 15.421605 -0.090548 0.156835 0.983459 0.437500 0.449219 1 0 1.000000 +0 1.050567 -0.382379 15.421605 -0.170171 0.061922 0.983459 0.382813 0.410156 1 0 1.000000 +0 0.558995 0.968213 15.421606 -0.090548 -0.156835 0.983459 0.437500 0.320313 1 0 1.000000 +holygrail.tga +0 0.558995 0.968213 15.421606 -0.090548 -0.156835 0.983459 0.437500 0.320313 1 0 1.000000 +0 0.194135 1.101012 15.421606 -0.031434 -0.178350 0.983459 0.480469 0.308594 1 0 1.000000 +0 -0.194137 1.101012 15.421606 0.031434 -0.178350 0.983459 0.527344 0.308594 1 0 1.000000 +holygrail.tga +0 -0.194137 1.101012 15.421606 0.031434 -0.178350 0.983459 0.527344 0.308594 1 0 1.000000 +0 -0.558994 0.968215 15.421606 0.090548 -0.156835 0.983459 0.570313 0.320313 1 0 1.000000 +0 -0.856431 0.718634 15.421607 0.138707 -0.116398 0.983459 0.609375 0.335938 1 0 1.000000 +holygrail.tga +0 0.558995 0.968213 15.421606 -0.090548 -0.156835 0.983459 0.437500 0.320313 1 0 1.000000 +0 -0.194137 1.101012 15.421606 0.031434 -0.178350 0.983459 0.527344 0.308594 1 0 1.000000 +0 -0.856431 0.718634 15.421607 0.138707 -0.116398 0.983459 0.609375 0.335938 1 0 1.000000 +holygrail.tga +0 0.558996 -0.968207 15.421605 -0.090548 0.156835 0.983459 0.437500 0.449219 1 0 1.000000 +0 0.558995 0.968213 15.421606 -0.090548 -0.156835 0.983459 0.437500 0.320313 1 0 1.000000 +0 -0.856431 0.718634 15.421607 0.138707 -0.116398 0.983459 0.609375 0.335938 1 0 1.000000 +holygrail.tga +0 -0.856431 0.718634 15.421607 0.138707 -0.116398 0.983459 0.609375 0.335938 1 0 1.000000 +0 -1.050570 0.382377 15.421604 0.170171 -0.061922 0.983459 0.632813 0.359375 1 0 1.000000 +0 -1.117993 0.000002 15.421604 0.181097 0.000000 0.983459 0.644531 0.382813 1 0 1.000000 +holygrail.tga +0 -1.117993 0.000002 15.421604 0.181097 0.000000 0.983459 0.644531 0.382813 1 0 1.000000 +0 -1.050570 -0.382374 15.421605 0.170171 0.061922 0.983459 0.632813 0.410156 1 0 1.000000 +0 -0.856433 -0.718628 15.421605 0.138707 0.116398 0.983459 0.609375 0.429688 1 0 1.000000 +holygrail.tga +0 -0.856431 0.718634 15.421607 0.138707 -0.116398 0.983459 0.609375 0.335938 1 0 1.000000 +0 -1.117993 0.000002 15.421604 0.181097 0.000000 0.983459 0.644531 0.382813 1 0 1.000000 +0 -0.856433 -0.718628 15.421605 0.138707 0.116398 0.983459 0.609375 0.429688 1 0 1.000000 +holygrail.tga +0 0.558996 -0.968207 15.421605 -0.090548 0.156835 0.983459 0.437500 0.449219 1 0 1.000000 +0 -0.856431 0.718634 15.421607 0.138707 -0.116398 0.983459 0.609375 0.335938 1 0 1.000000 +0 -0.856433 -0.718628 15.421605 0.138707 0.116398 0.983459 0.609375 0.429688 1 0 1.000000 +holygrail.tga +0 -0.856433 -0.718628 15.421605 0.138707 0.116398 0.983459 0.609375 0.429688 1 0 1.000000 +0 -0.558999 -0.968206 15.421605 0.090548 0.156835 0.983459 0.570313 0.449219 1 0 1.000000 +0 -0.194136 -1.101005 15.421605 0.031434 0.178350 0.983459 0.527344 0.457031 1 0 1.000000 +holygrail.tga +0 0.558996 -0.968207 15.421605 -0.090548 0.156835 0.983459 0.437500 0.449219 1 0 1.000000 +0 -0.856433 -0.718628 15.421605 0.138707 0.116398 0.983459 0.609375 0.429688 1 0 1.000000 +0 -0.194136 -1.101005 15.421605 0.031434 0.178350 0.983459 0.527344 0.457031 1 0 1.000000 +holygrail.tga +0 0.558996 -0.968207 15.421605 -0.090548 0.156835 0.983459 0.437500 0.449219 1 0 1.000000 +0 -0.194136 -1.101005 15.421605 0.031434 0.178350 0.983459 0.527344 0.457031 1 0 1.000000 +0 0.194136 -1.101005 15.421605 -0.031434 0.178350 0.983459 0.480469 0.457031 1 0 1.000000 +holygrail.tga +0 7.447392 0.000000 21.609118 0.963805 0.000000 -0.266549 0.773438 0.765625 1 0 1.000000 +0 6.998259 2.547157 21.609118 0.905667 0.329630 -0.266549 0.832031 0.765625 1 0 1.000000 +0 7.868691 2.863969 22.962572 0.900204 0.327647 -0.286752 0.832031 0.804688 1 0 1.000000 +holygrail.tga +0 7.868691 2.863969 22.962572 0.900204 0.327647 -0.286752 0.832031 0.804688 1 0 1.000000 +0 8.373683 0.000000 22.962572 0.957976 0.000000 -0.286752 0.773438 0.804688 1 0 1.000000 +0 7.447392 0.000000 21.609118 0.963805 0.000000 -0.266549 0.773438 0.765625 1 0 1.000000 +holygrail.tga +0 6.998256 -2.547163 21.609116 0.905667 -0.329630 -0.266549 0.726563 0.765625 1 0 1.000000 +0 7.447392 0.000000 21.609118 0.963805 0.000000 -0.266549 0.773438 0.765625 1 0 1.000000 +0 8.373683 0.000000 22.962572 0.957976 0.000000 -0.286752 0.773438 0.804688 1 0 1.000000 +holygrail.tga +0 8.373683 0.000000 22.962572 0.957976 0.000000 -0.286752 0.773438 0.804688 1 0 1.000000 +0 7.868689 -2.863975 22.962572 0.900204 -0.327647 -0.286752 0.726563 0.804688 1 0 1.000000 +0 6.998256 -2.547163 21.609116 0.905667 -0.329630 -0.266549 0.726563 0.765625 1 0 1.000000 +holygrail.tga +0 5.705028 -4.787095 21.609116 0.738304 -0.619526 -0.266549 0.664063 0.765625 1 0 1.000000 +0 6.998256 -2.547163 21.609116 0.905667 -0.329630 -0.266549 0.726563 0.765625 1 0 1.000000 +0 7.868689 -2.863975 22.962572 0.900204 -0.327647 -0.286752 0.726563 0.804688 1 0 1.000000 +holygrail.tga +0 7.868689 -2.863975 22.962572 0.900204 -0.327647 -0.286752 0.726563 0.804688 1 0 1.000000 +0 6.414613 -5.382505 22.962572 0.733848 -0.615772 -0.286752 0.664063 0.804688 1 0 1.000000 +0 5.705028 -4.787095 21.609116 0.738304 -0.619526 -0.266549 0.664063 0.765625 1 0 1.000000 +holygrail.tga +0 3.723691 -6.449633 21.609116 0.481887 -0.834681 -0.266549 0.613281 0.765625 1 0 1.000000 +0 5.705028 -4.787095 21.609116 0.738304 -0.619526 -0.266549 0.664063 0.765625 1 0 1.000000 +0 6.414613 -5.382505 22.962572 0.733848 -0.615772 -0.286752 0.664063 0.804688 1 0 1.000000 +holygrail.tga +0 6.414613 -5.382505 22.962572 0.733848 -0.615772 -0.286752 0.664063 0.804688 1 0 1.000000 +0 4.186839 -7.251826 22.962572 0.478988 -0.829646 -0.286752 0.613281 0.804688 1 0 1.000000 +0 3.723691 -6.449633 21.609116 0.481887 -0.834681 -0.266549 0.613281 0.765625 1 0 1.000000 +holygrail.tga +0 1.293223 -7.334250 21.609116 0.167364 -0.949156 -0.266549 0.554688 0.765625 1 0 1.000000 +0 3.723691 -6.449633 21.609116 0.481887 -0.834681 -0.266549 0.613281 0.765625 1 0 1.000000 +0 4.186839 -7.251826 22.962572 0.478988 -0.829646 -0.286752 0.613281 0.804688 1 0 1.000000 +holygrail.tga +0 4.186839 -7.251826 22.962572 0.478988 -0.829646 -0.286752 0.613281 0.804688 1 0 1.000000 +0 1.454071 -8.246470 22.962572 0.166326 -0.943419 -0.286752 0.554688 0.804688 1 0 1.000000 +0 1.293223 -7.334250 21.609116 0.167364 -0.949156 -0.266549 0.554688 0.765625 1 0 1.000000 +holygrail.tga +0 -1.293228 -7.334249 21.609116 -0.167364 -0.949156 -0.266549 0.503906 0.765625 1 0 1.000000 +0 1.293223 -7.334250 21.609116 0.167364 -0.949156 -0.266549 0.554688 0.765625 1 0 1.000000 +0 1.454071 -8.246470 22.962572 0.166326 -0.943419 -0.286752 0.554688 0.804688 1 0 1.000000 +holygrail.tga +0 1.454071 -8.246470 22.962572 0.166326 -0.943419 -0.286752 0.554688 0.804688 1 0 1.000000 +0 -1.454079 -8.246470 22.962572 -0.166326 -0.943419 -0.286752 0.503906 0.804688 1 0 1.000000 +0 -1.293228 -7.334249 21.609116 -0.167364 -0.949156 -0.266549 0.503906 0.765625 1 0 1.000000 +holygrail.tga +0 -3.723698 -6.449631 21.609116 -0.481887 -0.834681 -0.266549 0.449219 0.765625 1 0 1.000000 +0 -1.293228 -7.334249 21.609116 -0.167364 -0.949156 -0.266549 0.503906 0.765625 1 0 1.000000 +0 -1.454079 -8.246470 22.962572 -0.166326 -0.943419 -0.286752 0.503906 0.804688 1 0 1.000000 +holygrail.tga +0 -1.454079 -8.246470 22.962572 -0.166326 -0.943419 -0.286752 0.503906 0.804688 1 0 1.000000 +0 -4.186845 -7.251822 22.962572 -0.478988 -0.829646 -0.286752 0.449219 0.804688 1 0 1.000000 +0 -3.723698 -6.449631 21.609116 -0.481887 -0.834681 -0.266549 0.449219 0.765625 1 0 1.000000 +holygrail.tga +0 -5.705035 -4.787091 21.609116 -0.738304 -0.619526 -0.266549 0.394531 0.765625 1 0 1.000000 +0 -3.723698 -6.449631 21.609116 -0.481887 -0.834681 -0.266549 0.449219 0.765625 1 0 1.000000 +0 -4.186845 -7.251822 22.962572 -0.478988 -0.829646 -0.286752 0.449219 0.804688 1 0 1.000000 +holygrail.tga +0 -4.186845 -7.251822 22.962572 -0.478988 -0.829646 -0.286752 0.449219 0.804688 1 0 1.000000 +0 -6.414616 -5.382500 22.962572 -0.733848 -0.615772 -0.286752 0.394531 0.804688 1 0 1.000000 +0 -5.705035 -4.787091 21.609116 -0.738304 -0.619526 -0.266549 0.394531 0.765625 1 0 1.000000 +holygrail.tga +0 -6.998259 -2.547156 21.609116 -0.905667 -0.329630 -0.266549 0.339844 0.765625 1 0 1.000000 +0 -5.705035 -4.787091 21.609116 -0.738304 -0.619526 -0.266549 0.394531 0.765625 1 0 1.000000 +0 -6.414616 -5.382500 22.962572 -0.733848 -0.615772 -0.286752 0.394531 0.804688 1 0 1.000000 +holygrail.tga +0 -6.414616 -5.382500 22.962572 -0.733848 -0.615772 -0.286752 0.394531 0.804688 1 0 1.000000 +0 -7.868692 -2.863967 22.962572 -0.900204 -0.327647 -0.286752 0.339844 0.804688 1 0 1.000000 +0 -6.998259 -2.547156 21.609116 -0.905667 -0.329630 -0.266549 0.339844 0.765625 1 0 1.000000 +holygrail.tga +0 -7.447392 0.000001 21.609118 -0.963805 0.000000 -0.266549 0.289063 0.765625 1 0 1.000000 +0 -6.998259 -2.547156 21.609116 -0.905667 -0.329630 -0.266549 0.339844 0.765625 1 0 1.000000 +0 -7.868692 -2.863967 22.962572 -0.900204 -0.327647 -0.286752 0.339844 0.804688 1 0 1.000000 +holygrail.tga +0 -7.868692 -2.863967 22.962572 -0.900204 -0.327647 -0.286752 0.339844 0.804688 1 0 1.000000 +0 -8.373686 0.000001 22.962572 -0.957976 0.000000 -0.286752 0.289063 0.804688 1 0 1.000000 +0 -7.447392 0.000001 21.609118 -0.963805 0.000000 -0.266549 0.289063 0.765625 1 0 1.000000 +holygrail.tga +0 -6.998257 2.547158 21.609118 -0.905667 0.329630 -0.266549 0.226563 0.765625 1 0 1.000000 +0 -7.447392 0.000001 21.609118 -0.963805 0.000000 -0.266549 0.289063 0.765625 1 0 1.000000 +0 -8.373686 0.000001 22.962572 -0.957976 0.000000 -0.286752 0.289063 0.804688 1 0 1.000000 +holygrail.tga +0 -8.373686 0.000001 22.962572 -0.957976 0.000000 -0.286752 0.289063 0.804688 1 0 1.000000 +0 -7.868690 2.863969 22.962572 -0.900204 0.327647 -0.286752 0.226563 0.804688 1 0 1.000000 +0 -6.998257 2.547158 21.609118 -0.905667 0.329630 -0.266549 0.226563 0.765625 1 0 1.000000 +holygrail.tga +0 -5.705031 4.787089 21.609118 -0.738304 0.619526 -0.266549 0.171875 0.765625 1 0 1.000000 +0 -6.998257 2.547158 21.609118 -0.905667 0.329630 -0.266549 0.226563 0.765625 1 0 1.000000 +0 -7.868690 2.863969 22.962572 -0.900204 0.327647 -0.286752 0.226563 0.804688 1 0 1.000000 +holygrail.tga +0 -7.868690 2.863969 22.962572 -0.900204 0.327647 -0.286752 0.226563 0.804688 1 0 1.000000 +0 -6.414615 5.382501 22.962572 -0.733848 0.615772 -0.286752 0.171875 0.804688 1 0 1.000000 +0 -5.705031 4.787089 21.609118 -0.738304 0.619526 -0.266549 0.171875 0.765625 1 0 1.000000 +holygrail.tga +0 -3.723695 6.449628 21.609118 -0.481887 0.834681 -0.266549 0.117188 0.765625 1 0 1.000000 +0 -5.705031 4.787089 21.609118 -0.738304 0.619526 -0.266549 0.171875 0.765625 1 0 1.000000 +0 -6.414615 5.382501 22.962572 -0.733848 0.615772 -0.286752 0.171875 0.804688 1 0 1.000000 +holygrail.tga +0 -6.414615 5.382501 22.962572 -0.733848 0.615772 -0.286752 0.171875 0.804688 1 0 1.000000 +0 -4.186843 7.251825 22.962572 -0.478988 0.829646 -0.286752 0.117188 0.804688 1 0 1.000000 +0 -3.723695 6.449628 21.609118 -0.481887 0.834681 -0.266549 0.117188 0.765625 1 0 1.000000 +holygrail.tga +0 -1.293226 7.334247 21.609118 -0.167364 0.949156 -0.266549 0.058594 0.765625 1 0 1.000000 +0 -3.723695 6.449628 21.609118 -0.481887 0.834681 -0.266549 0.117188 0.765625 1 0 1.000000 +0 -4.186843 7.251825 22.962572 -0.478988 0.829646 -0.286752 0.117188 0.804688 1 0 1.000000 +holygrail.tga +0 -4.186843 7.251825 22.962572 -0.478988 0.829646 -0.286752 0.117188 0.804688 1 0 1.000000 +0 -1.454076 8.246470 22.962572 -0.166326 0.943419 -0.286752 0.058594 0.804688 1 0 1.000000 +0 -1.293226 7.334247 21.609118 -0.167364 0.949156 -0.266549 0.058594 0.765625 1 0 1.000000 +holygrail.tga +0 1.293226 7.334248 21.609118 0.167364 0.949156 -0.266549 0.000000 0.765625 1 0 1.000000 +0 -1.293226 7.334247 21.609118 -0.167364 0.949156 -0.266549 0.058594 0.765625 1 0 1.000000 +0 -1.454076 8.246470 22.962572 -0.166326 0.943419 -0.286752 0.058594 0.804688 1 0 1.000000 +holygrail.tga +0 -1.454076 8.246470 22.962572 -0.166326 0.943419 -0.286752 0.058594 0.804688 1 0 1.000000 +0 1.454075 8.246472 22.962572 0.166326 0.943419 -0.286752 0.000000 0.804688 1 0 1.000000 +0 1.293226 7.334248 21.609118 0.167364 0.949156 -0.266549 0.000000 0.765625 1 0 1.000000 +holygrail.tga +0 3.723696 6.449628 21.609118 0.481887 0.834681 -0.266549 0.941406 0.765625 1 0 1.000000 +0 1.293226 7.334248 21.609118 0.167364 0.949156 -0.266549 1.000000 0.765625 1 0 1.000000 +0 1.454075 8.246472 22.962572 0.166326 0.943419 -0.286752 1.000000 0.804688 1 0 1.000000 +holygrail.tga +0 1.454075 8.246472 22.962572 0.166326 0.943419 -0.286752 1.000000 0.804688 1 0 1.000000 +0 4.186843 7.251825 22.962572 0.478988 0.829646 -0.286752 0.941406 0.804688 1 0 1.000000 +0 3.723696 6.449628 21.609118 0.481887 0.834681 -0.266549 0.941406 0.765625 1 0 1.000000 +holygrail.tga +0 5.705034 4.787089 21.609118 0.738304 0.619526 -0.266549 0.886719 0.765625 1 0 1.000000 +0 3.723696 6.449628 21.609118 0.481887 0.834681 -0.266549 0.941406 0.765625 1 0 1.000000 +0 4.186843 7.251825 22.962572 0.478988 0.829646 -0.286752 0.941406 0.804688 1 0 1.000000 +holygrail.tga +0 4.186843 7.251825 22.962572 0.478988 0.829646 -0.286752 0.941406 0.804688 1 0 1.000000 +0 6.414617 5.382501 22.962572 0.733848 0.615772 -0.286752 0.886719 0.804688 1 0 1.000000 +0 5.705034 4.787089 21.609118 0.738304 0.619526 -0.266549 0.886719 0.765625 1 0 1.000000 +holygrail.tga +0 6.998259 2.547157 21.609118 0.905667 0.329630 -0.266549 0.832031 0.765625 1 0 1.000000 +0 5.705034 4.787089 21.609118 0.738304 0.619526 -0.266549 0.886719 0.765625 1 0 1.000000 +0 6.414617 5.382501 22.962572 0.733848 0.615772 -0.286752 0.886719 0.804688 1 0 1.000000 +holygrail.tga +0 6.414617 5.382501 22.962572 0.733848 0.615772 -0.286752 0.886719 0.804688 1 0 1.000000 +0 7.868691 2.863969 22.962572 0.900204 0.327647 -0.286752 0.832031 0.804688 1 0 1.000000 +0 6.998259 2.547157 21.609118 0.905667 0.329630 -0.266549 0.832031 0.765625 1 0 1.000000 +holygrail.tga +0 7.522307 0.000000 20.680813 0.997131 0.000000 -0.075381 0.773438 0.726563 1 0 1.000000 +0 7.068658 2.572779 20.680817 0.937010 0.341044 -0.075381 0.832031 0.726563 1 0 1.000000 +0 6.998259 2.547157 21.609118 0.905667 0.329630 -0.266549 0.832031 0.765625 1 0 1.000000 +holygrail.tga +0 6.998259 2.547157 21.609118 0.905667 0.329630 -0.266549 0.832031 0.765625 1 0 1.000000 +0 7.447392 0.000000 21.609118 0.963805 0.000000 -0.266549 0.773438 0.765625 1 0 1.000000 +0 7.522307 0.000000 20.680813 0.997131 0.000000 -0.075381 0.773438 0.726563 1 0 1.000000 +holygrail.tga +0 7.068654 -2.572787 20.680813 0.937010 -0.341044 -0.075381 0.726563 0.726563 1 0 1.000000 +0 7.522307 0.000000 20.680813 0.997131 0.000000 -0.075381 0.773438 0.726563 1 0 1.000000 +0 7.447392 0.000000 21.609118 0.963805 0.000000 -0.266549 0.773438 0.765625 1 0 1.000000 +holygrail.tga +0 7.447392 0.000000 21.609118 0.963805 0.000000 -0.266549 0.773438 0.765625 1 0 1.000000 +0 6.998256 -2.547163 21.609116 0.905667 -0.329630 -0.266549 0.726563 0.765625 1 0 1.000000 +0 7.068654 -2.572787 20.680813 0.937010 -0.341044 -0.075381 0.726563 0.726563 1 0 1.000000 +holygrail.tga +0 5.762416 -4.835249 20.680813 0.763848 -0.640950 -0.075381 0.664063 0.726563 1 0 1.000000 +0 7.068654 -2.572787 20.680813 0.937010 -0.341044 -0.075381 0.726563 0.726563 1 0 1.000000 +0 6.998256 -2.547163 21.609116 0.905667 -0.329630 -0.266549 0.726563 0.765625 1 0 1.000000 +holygrail.tga +0 6.998256 -2.547163 21.609116 0.905667 -0.329630 -0.266549 0.726563 0.765625 1 0 1.000000 +0 5.705028 -4.787095 21.609116 0.738304 -0.619526 -0.266549 0.664063 0.765625 1 0 1.000000 +0 5.762416 -4.835249 20.680813 0.763848 -0.640950 -0.075381 0.664063 0.726563 1 0 1.000000 +holygrail.tga +0 3.761149 -6.514512 20.680813 0.498550 -0.863552 -0.075381 0.613281 0.726563 1 0 1.000000 +0 5.762416 -4.835249 20.680813 0.763848 -0.640950 -0.075381 0.664063 0.726563 1 0 1.000000 +0 5.705028 -4.787095 21.609116 0.738304 -0.619526 -0.266549 0.664063 0.765625 1 0 1.000000 +holygrail.tga +0 5.705028 -4.787095 21.609116 0.738304 -0.619526 -0.266549 0.664063 0.765625 1 0 1.000000 +0 3.723691 -6.449633 21.609116 0.481887 -0.834681 -0.266549 0.613281 0.765625 1 0 1.000000 +0 3.761149 -6.514512 20.680813 0.498550 -0.863552 -0.075381 0.613281 0.726563 1 0 1.000000 +holygrail.tga +0 1.306232 -7.408028 20.680813 0.173132 -0.981994 -0.075381 0.554688 0.726563 1 0 1.000000 +0 3.761149 -6.514512 20.680813 0.498550 -0.863552 -0.075381 0.613281 0.726563 1 0 1.000000 +0 3.723691 -6.449633 21.609116 0.481887 -0.834681 -0.266549 0.613281 0.765625 1 0 1.000000 +holygrail.tga +0 3.723691 -6.449633 21.609116 0.481887 -0.834681 -0.266549 0.613281 0.765625 1 0 1.000000 +0 1.293223 -7.334250 21.609116 0.167364 -0.949156 -0.266549 0.554688 0.765625 1 0 1.000000 +0 1.306232 -7.408028 20.680813 0.173132 -0.981994 -0.075381 0.554688 0.726563 1 0 1.000000 +holygrail.tga +0 -1.306237 -7.408028 20.680813 -0.173132 -0.981994 -0.075381 0.503906 0.726563 1 0 1.000000 +0 1.306232 -7.408028 20.680813 0.173132 -0.981994 -0.075381 0.554688 0.726563 1 0 1.000000 +0 1.293223 -7.334250 21.609116 0.167364 -0.949156 -0.266549 0.554688 0.765625 1 0 1.000000 +holygrail.tga +0 1.293223 -7.334250 21.609116 0.167364 -0.949156 -0.266549 0.554688 0.765625 1 0 1.000000 +0 -1.293228 -7.334249 21.609116 -0.167364 -0.949156 -0.266549 0.503906 0.765625 1 0 1.000000 +0 -1.306237 -7.408028 20.680813 -0.173132 -0.981994 -0.075381 0.503906 0.726563 1 0 1.000000 +holygrail.tga +0 -3.761156 -6.514509 20.680813 -0.498550 -0.863552 -0.075381 0.449219 0.726563 1 0 1.000000 +0 -1.306237 -7.408028 20.680813 -0.173132 -0.981994 -0.075381 0.503906 0.726563 1 0 1.000000 +0 -1.293228 -7.334249 21.609116 -0.167364 -0.949156 -0.266549 0.503906 0.765625 1 0 1.000000 +holygrail.tga +0 -1.293228 -7.334249 21.609116 -0.167364 -0.949156 -0.266549 0.503906 0.765625 1 0 1.000000 +0 -3.723698 -6.449631 21.609116 -0.481887 -0.834681 -0.266549 0.449219 0.765625 1 0 1.000000 +0 -3.761156 -6.514509 20.680813 -0.498550 -0.863552 -0.075381 0.449219 0.726563 1 0 1.000000 +holygrail.tga +0 -5.762423 -4.835244 20.680813 -0.763848 -0.640950 -0.075381 0.394531 0.726563 1 0 1.000000 +0 -3.761156 -6.514509 20.680813 -0.498550 -0.863552 -0.075381 0.449219 0.726563 1 0 1.000000 +0 -3.723698 -6.449631 21.609116 -0.481887 -0.834681 -0.266549 0.449219 0.765625 1 0 1.000000 +holygrail.tga +0 -3.723698 -6.449631 21.609116 -0.481887 -0.834681 -0.266549 0.449219 0.765625 1 0 1.000000 +0 -5.705035 -4.787091 21.609116 -0.738304 -0.619526 -0.266549 0.394531 0.765625 1 0 1.000000 +0 -5.762423 -4.835244 20.680813 -0.763848 -0.640950 -0.075381 0.394531 0.726563 1 0 1.000000 +holygrail.tga +0 -7.068657 -2.572778 20.680813 -0.937010 -0.341044 -0.075381 0.339844 0.726563 1 0 1.000000 +0 -5.762423 -4.835244 20.680813 -0.763848 -0.640950 -0.075381 0.394531 0.726563 1 0 1.000000 +0 -5.705035 -4.787091 21.609116 -0.738304 -0.619526 -0.266549 0.394531 0.765625 1 0 1.000000 +holygrail.tga +0 -5.705035 -4.787091 21.609116 -0.738304 -0.619526 -0.266549 0.394531 0.765625 1 0 1.000000 +0 -6.998259 -2.547156 21.609116 -0.905667 -0.329630 -0.266549 0.339844 0.765625 1 0 1.000000 +0 -7.068657 -2.572778 20.680813 -0.937010 -0.341044 -0.075381 0.339844 0.726563 1 0 1.000000 +holygrail.tga +0 -7.522305 0.000001 20.680813 -0.997131 0.000000 -0.075381 0.289063 0.726563 1 0 1.000000 +0 -7.068657 -2.572778 20.680813 -0.937010 -0.341044 -0.075381 0.339844 0.726563 1 0 1.000000 +0 -6.998259 -2.547156 21.609116 -0.905667 -0.329630 -0.266549 0.339844 0.765625 1 0 1.000000 +holygrail.tga +0 -6.998259 -2.547156 21.609116 -0.905667 -0.329630 -0.266549 0.339844 0.765625 1 0 1.000000 +0 -7.447392 0.000001 21.609118 -0.963805 0.000000 -0.266549 0.289063 0.765625 1 0 1.000000 +0 -7.522305 0.000001 20.680813 -0.997131 0.000000 -0.075381 0.289063 0.726563 1 0 1.000000 +holygrail.tga +0 -7.068655 2.572781 20.680817 -0.937010 0.341044 -0.075381 0.226563 0.726563 1 0 1.000000 +0 -7.522305 0.000001 20.680813 -0.997131 0.000000 -0.075381 0.289063 0.726563 1 0 1.000000 +0 -7.447392 0.000001 21.609118 -0.963805 0.000000 -0.266549 0.289063 0.765625 1 0 1.000000 +holygrail.tga +0 -7.447392 0.000001 21.609118 -0.963805 0.000000 -0.266549 0.289063 0.765625 1 0 1.000000 +0 -6.998257 2.547158 21.609118 -0.905667 0.329630 -0.266549 0.226563 0.765625 1 0 1.000000 +0 -7.068655 2.572781 20.680817 -0.937010 0.341044 -0.075381 0.226563 0.726563 1 0 1.000000 +holygrail.tga +0 -5.762418 4.835245 20.680819 -0.763848 0.640950 -0.075381 0.171875 0.726563 1 0 1.000000 +0 -7.068655 2.572781 20.680817 -0.937010 0.341044 -0.075381 0.226563 0.726563 1 0 1.000000 +0 -6.998257 2.547158 21.609118 -0.905667 0.329630 -0.266549 0.226563 0.765625 1 0 1.000000 +holygrail.tga +0 -6.998257 2.547158 21.609118 -0.905667 0.329630 -0.266549 0.226563 0.765625 1 0 1.000000 +0 -5.705031 4.787089 21.609118 -0.738304 0.619526 -0.266549 0.171875 0.765625 1 0 1.000000 +0 -5.762418 4.835245 20.680819 -0.763848 0.640950 -0.075381 0.171875 0.726563 1 0 1.000000 +holygrail.tga +0 -3.761152 6.514506 20.680819 -0.498550 0.863552 -0.075381 0.117188 0.726563 1 0 1.000000 +0 -5.762418 4.835245 20.680819 -0.763848 0.640950 -0.075381 0.171875 0.726563 1 0 1.000000 +0 -5.705031 4.787089 21.609118 -0.738304 0.619526 -0.266549 0.171875 0.765625 1 0 1.000000 +holygrail.tga +0 -5.705031 4.787089 21.609118 -0.738304 0.619526 -0.266549 0.171875 0.765625 1 0 1.000000 +0 -3.723695 6.449628 21.609118 -0.481887 0.834681 -0.266549 0.117188 0.765625 1 0 1.000000 +0 -3.761152 6.514506 20.680819 -0.498550 0.863552 -0.075381 0.117188 0.726563 1 0 1.000000 +holygrail.tga +0 -1.306235 7.408025 20.680819 -0.173132 0.981994 -0.075381 0.058594 0.726563 1 0 1.000000 +0 -3.761152 6.514506 20.680819 -0.498550 0.863552 -0.075381 0.117188 0.726563 1 0 1.000000 +0 -3.723695 6.449628 21.609118 -0.481887 0.834681 -0.266549 0.117188 0.765625 1 0 1.000000 +holygrail.tga +0 -3.723695 6.449628 21.609118 -0.481887 0.834681 -0.266549 0.117188 0.765625 1 0 1.000000 +0 -1.293226 7.334247 21.609118 -0.167364 0.949156 -0.266549 0.058594 0.765625 1 0 1.000000 +0 -1.306235 7.408025 20.680819 -0.173132 0.981994 -0.075381 0.058594 0.726563 1 0 1.000000 +holygrail.tga +0 1.306234 7.408025 20.680819 0.173132 0.981994 -0.075381 0.000000 0.726563 1 0 1.000000 +0 -1.306235 7.408025 20.680819 -0.173132 0.981994 -0.075381 0.058594 0.726563 1 0 1.000000 +0 -1.293226 7.334247 21.609118 -0.167364 0.949156 -0.266549 0.058594 0.765625 1 0 1.000000 +holygrail.tga +0 -1.293226 7.334247 21.609118 -0.167364 0.949156 -0.266549 0.058594 0.765625 1 0 1.000000 +0 1.293226 7.334248 21.609118 0.167364 0.949156 -0.266549 0.000000 0.765625 1 0 1.000000 +0 1.306234 7.408025 20.680819 0.173132 0.981994 -0.075381 0.000000 0.726563 1 0 1.000000 +holygrail.tga +0 3.761154 6.514506 20.680819 0.498550 0.863552 -0.075381 0.941406 0.726563 1 0 1.000000 +0 1.306234 7.408025 20.680819 0.173132 0.981994 -0.075381 1.000000 0.726563 1 0 1.000000 +0 1.293226 7.334248 21.609118 0.167364 0.949156 -0.266549 1.000000 0.765625 1 0 1.000000 +holygrail.tga +0 1.293226 7.334248 21.609118 0.167364 0.949156 -0.266549 1.000000 0.765625 1 0 1.000000 +0 3.723696 6.449628 21.609118 0.481887 0.834681 -0.266549 0.941406 0.765625 1 0 1.000000 +0 3.761154 6.514506 20.680819 0.498550 0.863552 -0.075381 0.941406 0.726563 1 0 1.000000 +holygrail.tga +0 5.762424 4.835242 20.680819 0.763848 0.640950 -0.075381 0.886719 0.726563 1 0 1.000000 +0 3.761154 6.514506 20.680819 0.498550 0.863552 -0.075381 0.941406 0.726563 1 0 1.000000 +0 3.723696 6.449628 21.609118 0.481887 0.834681 -0.266549 0.941406 0.765625 1 0 1.000000 +holygrail.tga +0 3.723696 6.449628 21.609118 0.481887 0.834681 -0.266549 0.941406 0.765625 1 0 1.000000 +0 5.705034 4.787089 21.609118 0.738304 0.619526 -0.266549 0.886719 0.765625 1 0 1.000000 +0 5.762424 4.835242 20.680819 0.763848 0.640950 -0.075381 0.886719 0.726563 1 0 1.000000 +holygrail.tga +0 7.068658 2.572779 20.680817 0.937010 0.341044 -0.075381 0.832031 0.726563 1 0 1.000000 +0 5.762424 4.835242 20.680819 0.763848 0.640950 -0.075381 0.886719 0.726563 1 0 1.000000 +0 5.705034 4.787089 21.609118 0.738304 0.619526 -0.266549 0.886719 0.765625 1 0 1.000000 +holygrail.tga +0 5.705034 4.787089 21.609118 0.738304 0.619526 -0.266549 0.886719 0.765625 1 0 1.000000 +0 6.998259 2.547157 21.609118 0.905667 0.329630 -0.266549 0.832031 0.765625 1 0 1.000000 +0 7.068658 2.572779 20.680817 0.937010 0.341044 -0.075381 0.832031 0.726563 1 0 1.000000 +holygrail.tga +0 6.947347 0.000000 18.269222 0.883084 0.000000 -0.469131 0.773438 0.671875 1 0 1.000000 +0 6.528371 2.376132 18.269222 0.829829 0.302042 -0.469161 0.832031 0.671875 1 0 1.000000 +0 7.068658 2.572779 20.680817 0.937010 0.341044 -0.075381 0.832031 0.726563 1 0 1.000000 +holygrail.tga +0 7.068658 2.572779 20.680817 0.937010 0.341044 -0.075381 0.832031 0.726563 1 0 1.000000 +0 7.522307 0.000000 20.680813 0.997131 0.000000 -0.075381 0.773438 0.726563 1 0 1.000000 +0 6.947347 0.000000 18.269222 0.883084 0.000000 -0.469131 0.773438 0.671875 1 0 1.000000 +holygrail.tga +0 6.528368 -2.376138 18.269222 0.829829 -0.302042 -0.469131 0.726563 0.671875 1 0 1.000000 +0 6.947347 0.000000 18.269222 0.883084 0.000000 -0.469131 0.773438 0.671875 1 0 1.000000 +0 7.522307 0.000000 20.680813 0.997131 0.000000 -0.075381 0.773438 0.726563 1 0 1.000000 +holygrail.tga +0 5.321972 -4.465671 18.269222 0.676473 -0.567644 -0.469131 0.664063 0.671875 1 0 1.000000 +0 6.528368 -2.376138 18.269222 0.829829 -0.302042 -0.469131 0.726563 0.671875 1 0 1.000000 +0 7.068654 -2.572787 20.680813 0.937010 -0.341044 -0.075381 0.726563 0.726563 1 0 1.000000 +holygrail.tga +0 7.068654 -2.572787 20.680813 0.937010 -0.341044 -0.075381 0.726563 0.726563 1 0 1.000000 +0 5.762416 -4.835249 20.680813 0.763848 -0.640950 -0.075381 0.664063 0.726563 1 0 1.000000 +0 5.321972 -4.465671 18.269222 0.676473 -0.567644 -0.469131 0.664063 0.671875 1 0 1.000000 +holygrail.tga +0 3.473669 -6.016580 18.269222 0.441542 -0.764794 -0.469161 0.613281 0.671875 1 0 1.000000 +0 5.321972 -4.465671 18.269222 0.676473 -0.567644 -0.469131 0.664063 0.671875 1 0 1.000000 +0 5.762416 -4.835249 20.680813 0.763848 -0.640950 -0.075381 0.664063 0.726563 1 0 1.000000 +holygrail.tga +0 5.762416 -4.835249 20.680813 0.763848 -0.640950 -0.075381 0.664063 0.726563 1 0 1.000000 +0 3.761149 -6.514512 20.680813 0.498550 -0.863552 -0.075381 0.613281 0.726563 1 0 1.000000 +0 3.473669 -6.016580 18.269222 0.441542 -0.764794 -0.469161 0.613281 0.671875 1 0 1.000000 +holygrail.tga +0 1.206391 -6.841802 18.269222 0.153325 -0.869686 -0.469161 0.554688 0.671875 1 0 1.000000 +0 3.473669 -6.016580 18.269222 0.441542 -0.764794 -0.469161 0.613281 0.671875 1 0 1.000000 +0 3.761149 -6.514512 20.680813 0.498550 -0.863552 -0.075381 0.613281 0.726563 1 0 1.000000 +holygrail.tga +0 3.761149 -6.514512 20.680813 0.498550 -0.863552 -0.075381 0.613281 0.726563 1 0 1.000000 +0 1.306232 -7.408028 20.680813 0.173132 -0.981994 -0.075381 0.554688 0.726563 1 0 1.000000 +0 1.206391 -6.841802 18.269222 0.153325 -0.869686 -0.469161 0.554688 0.671875 1 0 1.000000 +holygrail.tga +0 -1.206396 -6.841800 18.269222 -0.153325 -0.869686 -0.469161 0.503906 0.671875 1 0 1.000000 +0 1.206391 -6.841802 18.269222 0.153325 -0.869686 -0.469161 0.554688 0.671875 1 0 1.000000 +0 1.306232 -7.408028 20.680813 0.173132 -0.981994 -0.075381 0.554688 0.726563 1 0 1.000000 +holygrail.tga +0 1.306232 -7.408028 20.680813 0.173132 -0.981994 -0.075381 0.554688 0.726563 1 0 1.000000 +0 -1.306237 -7.408028 20.680813 -0.173132 -0.981994 -0.075381 0.503906 0.726563 1 0 1.000000 +0 -1.206396 -6.841800 18.269222 -0.153325 -0.869686 -0.469161 0.503906 0.671875 1 0 1.000000 +holygrail.tga +0 -3.473675 -6.016577 18.269222 -0.441542 -0.764794 -0.469161 0.449219 0.671875 1 0 1.000000 +0 -1.206396 -6.841800 18.269222 -0.153325 -0.869686 -0.469161 0.503906 0.671875 1 0 1.000000 +0 -1.306237 -7.408028 20.680813 -0.173132 -0.981994 -0.075381 0.503906 0.726563 1 0 1.000000 +holygrail.tga +0 -1.306237 -7.408028 20.680813 -0.173132 -0.981994 -0.075381 0.503906 0.726563 1 0 1.000000 +0 -3.761156 -6.514509 20.680813 -0.498550 -0.863552 -0.075381 0.449219 0.726563 1 0 1.000000 +0 -3.473675 -6.016577 18.269222 -0.441542 -0.764794 -0.469161 0.449219 0.671875 1 0 1.000000 +holygrail.tga +0 -5.321978 -4.465666 18.269222 -0.676473 -0.567644 -0.469161 0.394531 0.671875 1 0 1.000000 +0 -3.473675 -6.016577 18.269222 -0.441542 -0.764794 -0.469161 0.449219 0.671875 1 0 1.000000 +0 -3.761156 -6.514509 20.680813 -0.498550 -0.863552 -0.075381 0.449219 0.726563 1 0 1.000000 +holygrail.tga +0 -3.761156 -6.514509 20.680813 -0.498550 -0.863552 -0.075381 0.449219 0.726563 1 0 1.000000 +0 -5.762423 -4.835244 20.680813 -0.763848 -0.640950 -0.075381 0.394531 0.726563 1 0 1.000000 +0 -5.321978 -4.465666 18.269222 -0.676473 -0.567644 -0.469161 0.394531 0.671875 1 0 1.000000 +holygrail.tga +0 -6.528372 -2.376130 18.269222 -0.829829 -0.302042 -0.469131 0.339844 0.671875 1 0 1.000000 +0 -5.321978 -4.465666 18.269222 -0.676473 -0.567644 -0.469161 0.394531 0.671875 1 0 1.000000 +0 -5.762423 -4.835244 20.680813 -0.763848 -0.640950 -0.075381 0.394531 0.726563 1 0 1.000000 +holygrail.tga +0 -5.762423 -4.835244 20.680813 -0.763848 -0.640950 -0.075381 0.394531 0.726563 1 0 1.000000 +0 -7.068657 -2.572778 20.680813 -0.937010 -0.341044 -0.075381 0.339844 0.726563 1 0 1.000000 +0 -6.528372 -2.376130 18.269222 -0.829829 -0.302042 -0.469131 0.339844 0.671875 1 0 1.000000 +holygrail.tga +0 -6.947345 0.000001 18.269222 -0.883084 0.000000 -0.469131 0.289063 0.671875 1 0 1.000000 +0 -6.528372 -2.376130 18.269222 -0.829829 -0.302042 -0.469131 0.339844 0.671875 1 0 1.000000 +0 -7.068657 -2.572778 20.680813 -0.937010 -0.341044 -0.075381 0.339844 0.726563 1 0 1.000000 +holygrail.tga +0 -7.068657 -2.572778 20.680813 -0.937010 -0.341044 -0.075381 0.339844 0.726563 1 0 1.000000 +0 -7.522305 0.000001 20.680813 -0.997131 0.000000 -0.075381 0.289063 0.726563 1 0 1.000000 +0 -6.947345 0.000001 18.269222 -0.883084 0.000000 -0.469131 0.289063 0.671875 1 0 1.000000 +holygrail.tga +0 -6.528370 2.376133 18.269222 -0.829829 0.302042 -0.469131 0.226563 0.671875 1 0 1.000000 +0 -6.947345 0.000001 18.269222 -0.883084 0.000000 -0.469131 0.289063 0.671875 1 0 1.000000 +0 -7.522305 0.000001 20.680813 -0.997131 0.000000 -0.075381 0.289063 0.726563 1 0 1.000000 +holygrail.tga +0 -7.522305 0.000001 20.680813 -0.997131 0.000000 -0.075381 0.289063 0.726563 1 0 1.000000 +0 -7.068655 2.572781 20.680817 -0.937010 0.341044 -0.075381 0.226563 0.726563 1 0 1.000000 +0 -6.528370 2.376133 18.269222 -0.829829 0.302042 -0.469131 0.226563 0.671875 1 0 1.000000 +holygrail.tga +0 -5.321973 4.465668 18.269226 -0.676473 0.567644 -0.469131 0.171875 0.671875 1 0 1.000000 +0 -6.528370 2.376133 18.269222 -0.829829 0.302042 -0.469131 0.226563 0.671875 1 0 1.000000 +0 -7.068655 2.572781 20.680817 -0.937010 0.341044 -0.075381 0.226563 0.726563 1 0 1.000000 +holygrail.tga +0 -7.068655 2.572781 20.680817 -0.937010 0.341044 -0.075381 0.226563 0.726563 1 0 1.000000 +0 -5.762418 4.835245 20.680819 -0.763848 0.640950 -0.075381 0.171875 0.726563 1 0 1.000000 +0 -5.321973 4.465668 18.269226 -0.676473 0.567644 -0.469131 0.171875 0.671875 1 0 1.000000 +holygrail.tga +0 -3.473672 6.016578 18.269226 -0.441542 0.764794 -0.469131 0.117188 0.671875 1 0 1.000000 +0 -5.321973 4.465668 18.269226 -0.676473 0.567644 -0.469131 0.171875 0.671875 1 0 1.000000 +0 -5.762418 4.835245 20.680819 -0.763848 0.640950 -0.075381 0.171875 0.726563 1 0 1.000000 +holygrail.tga +0 -5.762418 4.835245 20.680819 -0.763848 0.640950 -0.075381 0.171875 0.726563 1 0 1.000000 +0 -3.761152 6.514506 20.680819 -0.498550 0.863552 -0.075381 0.117188 0.726563 1 0 1.000000 +0 -3.473672 6.016578 18.269226 -0.441542 0.764794 -0.469131 0.117188 0.671875 1 0 1.000000 +holygrail.tga +0 -1.206394 6.841801 18.269226 -0.153325 0.869686 -0.469131 0.058594 0.671875 1 0 1.000000 +0 -3.473672 6.016578 18.269226 -0.441542 0.764794 -0.469131 0.117188 0.671875 1 0 1.000000 +0 -3.761152 6.514506 20.680819 -0.498550 0.863552 -0.075381 0.117188 0.726563 1 0 1.000000 +holygrail.tga +0 1.206393 6.841801 18.269226 0.153325 0.869686 -0.469131 0.000000 0.671875 1 0 1.000000 +0 -1.206394 6.841801 18.269226 -0.153325 0.869686 -0.469131 0.058594 0.671875 1 0 1.000000 +0 -1.306235 7.408025 20.680819 -0.173132 0.981994 -0.075381 0.058594 0.726563 1 0 1.000000 +holygrail.tga +0 -1.306235 7.408025 20.680819 -0.173132 0.981994 -0.075381 0.058594 0.726563 1 0 1.000000 +0 1.306234 7.408025 20.680819 0.173132 0.981994 -0.075381 0.000000 0.726563 1 0 1.000000 +0 1.206393 6.841801 18.269226 0.153325 0.869686 -0.469131 0.000000 0.671875 1 0 1.000000 +holygrail.tga +0 3.473674 6.016578 18.269226 0.441542 0.764794 -0.469131 0.941406 0.671875 1 0 1.000000 +0 1.206393 6.841801 18.269226 0.153325 0.869686 -0.469131 1.000000 0.671875 1 0 1.000000 +0 1.306234 7.408025 20.680819 0.173132 0.981994 -0.075381 1.000000 0.726563 1 0 1.000000 +holygrail.tga +0 1.306234 7.408025 20.680819 0.173132 0.981994 -0.075381 1.000000 0.726563 1 0 1.000000 +0 3.761154 6.514506 20.680819 0.498550 0.863552 -0.075381 0.941406 0.726563 1 0 1.000000 +0 3.473674 6.016578 18.269226 0.441542 0.764794 -0.469131 0.941406 0.671875 1 0 1.000000 +holygrail.tga +0 5.321978 4.465666 18.269226 0.676473 0.567644 -0.469131 0.886719 0.671875 1 0 1.000000 +0 3.473674 6.016578 18.269226 0.441542 0.764794 -0.469131 0.941406 0.671875 1 0 1.000000 +0 3.761154 6.514506 20.680819 0.498550 0.863552 -0.075381 0.941406 0.726563 1 0 1.000000 +holygrail.tga +0 3.761154 6.514506 20.680819 0.498550 0.863552 -0.075381 0.941406 0.726563 1 0 1.000000 +0 5.762424 4.835242 20.680819 0.763848 0.640950 -0.075381 0.886719 0.726563 1 0 1.000000 +0 5.321978 4.465666 18.269226 0.676473 0.567644 -0.469131 0.886719 0.671875 1 0 1.000000 +holygrail.tga +0 6.528371 2.376132 18.269222 0.829829 0.302042 -0.469161 0.832031 0.671875 1 0 1.000000 +0 5.321978 4.465666 18.269226 0.676473 0.567644 -0.469131 0.886719 0.671875 1 0 1.000000 +0 5.762424 4.835242 20.680819 0.763848 0.640950 -0.075381 0.886719 0.726563 1 0 1.000000 +holygrail.tga +0 5.762424 4.835242 20.680819 0.763848 0.640950 -0.075381 0.886719 0.726563 1 0 1.000000 +0 7.068658 2.572779 20.680817 0.937010 0.341044 -0.075381 0.832031 0.726563 1 0 1.000000 +0 6.528371 2.376132 18.269222 0.829829 0.302042 -0.469161 0.832031 0.671875 1 0 1.000000 +holygrail.tga +0 5.042727 0.000002 16.304220 0.588488 0.000000 -0.808466 0.773438 0.632813 1 0 1.000000 +0 4.738615 1.724714 16.304220 0.552995 0.201270 -0.808466 0.832031 0.632813 1 0 1.000000 +0 6.528371 2.376132 18.269222 0.829829 0.302042 -0.469161 0.832031 0.671875 1 0 1.000000 +holygrail.tga +0 6.528371 2.376132 18.269222 0.829829 0.302042 -0.469161 0.832031 0.671875 1 0 1.000000 +0 6.947347 0.000000 18.269222 0.883084 0.000000 -0.469131 0.773438 0.671875 1 0 1.000000 +0 5.042727 0.000002 16.304220 0.588488 0.000000 -0.808466 0.773438 0.632813 1 0 1.000000 +holygrail.tga +0 4.738611 -1.724718 16.304220 0.552995 -0.201270 -0.808466 0.726563 0.632813 1 0 1.000000 +0 5.042727 0.000002 16.304220 0.588488 0.000000 -0.808466 0.773438 0.632813 1 0 1.000000 +0 6.947347 0.000000 18.269222 0.883084 0.000000 -0.469131 0.773438 0.671875 1 0 1.000000 +holygrail.tga +0 6.947347 0.000000 18.269222 0.883084 0.000000 -0.469131 0.773438 0.671875 1 0 1.000000 +0 6.528368 -2.376138 18.269222 0.829829 -0.302042 -0.469131 0.726563 0.671875 1 0 1.000000 +0 4.738611 -1.724718 16.304220 0.552995 -0.201270 -0.808466 0.726563 0.632813 1 0 1.000000 +holygrail.tga +0 3.862950 -3.241404 16.304220 0.450819 -0.378277 -0.808466 0.664063 0.632813 1 0 1.000000 +0 4.738611 -1.724718 16.304220 0.552995 -0.201270 -0.808466 0.726563 0.632813 1 0 1.000000 +0 6.528368 -2.376138 18.269222 0.829829 -0.302042 -0.469131 0.726563 0.671875 1 0 1.000000 +holygrail.tga +0 6.528368 -2.376138 18.269222 0.829829 -0.302042 -0.469131 0.726563 0.671875 1 0 1.000000 +0 5.321972 -4.465671 18.269222 0.676473 -0.567644 -0.469131 0.664063 0.671875 1 0 1.000000 +0 3.862950 -3.241404 16.304220 0.450819 -0.378277 -0.808466 0.664063 0.632813 1 0 1.000000 +holygrail.tga +0 2.521360 -4.367131 16.304220 0.294229 -0.509659 -0.808466 0.613281 0.632813 1 0 1.000000 +0 3.862950 -3.241404 16.304220 0.450819 -0.378277 -0.808466 0.664063 0.632813 1 0 1.000000 +0 5.321972 -4.465671 18.269222 0.676473 -0.567644 -0.469131 0.664063 0.671875 1 0 1.000000 +holygrail.tga +0 5.321972 -4.465671 18.269222 0.676473 -0.567644 -0.469131 0.664063 0.671875 1 0 1.000000 +0 3.473669 -6.016580 18.269222 0.441542 -0.764794 -0.469161 0.613281 0.671875 1 0 1.000000 +0 2.521360 -4.367131 16.304220 0.294229 -0.509659 -0.808466 0.613281 0.632813 1 0 1.000000 +holygrail.tga +0 0.875658 -4.966117 16.304220 0.102176 -0.579547 -0.808466 0.554688 0.632813 1 0 1.000000 +0 2.521360 -4.367131 16.304220 0.294229 -0.509659 -0.808466 0.613281 0.632813 1 0 1.000000 +0 3.473669 -6.016580 18.269222 0.441542 -0.764794 -0.469161 0.613281 0.671875 1 0 1.000000 +holygrail.tga +0 3.473669 -6.016580 18.269222 0.441542 -0.764794 -0.469161 0.613281 0.671875 1 0 1.000000 +0 1.206391 -6.841802 18.269222 0.153325 -0.869686 -0.469161 0.554688 0.671875 1 0 1.000000 +0 0.875658 -4.966117 16.304220 0.102176 -0.579547 -0.808466 0.554688 0.632813 1 0 1.000000 +holygrail.tga +0 -0.875661 -4.966116 16.304220 -0.102176 -0.579547 -0.808466 0.503906 0.632813 1 0 1.000000 +0 0.875658 -4.966117 16.304220 0.102176 -0.579547 -0.808466 0.554688 0.632813 1 0 1.000000 +0 1.206391 -6.841802 18.269222 0.153325 -0.869686 -0.469161 0.554688 0.671875 1 0 1.000000 +holygrail.tga +0 1.206391 -6.841802 18.269222 0.153325 -0.869686 -0.469161 0.554688 0.671875 1 0 1.000000 +0 -1.206396 -6.841800 18.269222 -0.153325 -0.869686 -0.469161 0.503906 0.671875 1 0 1.000000 +0 -0.875661 -4.966116 16.304220 -0.102176 -0.579547 -0.808466 0.503906 0.632813 1 0 1.000000 +holygrail.tga +0 -2.521365 -4.367128 16.304220 -0.294229 -0.509629 -0.808466 0.449219 0.632813 1 0 1.000000 +0 -0.875661 -4.966116 16.304220 -0.102176 -0.579547 -0.808466 0.503906 0.632813 1 0 1.000000 +0 -1.206396 -6.841800 18.269222 -0.153325 -0.869686 -0.469161 0.503906 0.671875 1 0 1.000000 +holygrail.tga +0 -1.206396 -6.841800 18.269222 -0.153325 -0.869686 -0.469161 0.503906 0.671875 1 0 1.000000 +0 -3.473675 -6.016577 18.269222 -0.441542 -0.764794 -0.469161 0.449219 0.671875 1 0 1.000000 +0 -2.521365 -4.367128 16.304220 -0.294229 -0.509629 -0.808466 0.449219 0.632813 1 0 1.000000 +holygrail.tga +0 -3.862954 -3.241400 16.304220 -0.450819 -0.378277 -0.808466 0.394531 0.632813 1 0 1.000000 +0 -2.521365 -4.367128 16.304220 -0.294229 -0.509629 -0.808466 0.449219 0.632813 1 0 1.000000 +0 -3.473675 -6.016577 18.269222 -0.441542 -0.764794 -0.469161 0.449219 0.671875 1 0 1.000000 +holygrail.tga +0 -3.473675 -6.016577 18.269222 -0.441542 -0.764794 -0.469161 0.449219 0.671875 1 0 1.000000 +0 -5.321978 -4.465666 18.269222 -0.676473 -0.567644 -0.469161 0.394531 0.671875 1 0 1.000000 +0 -3.862954 -3.241400 16.304220 -0.450819 -0.378277 -0.808466 0.394531 0.632813 1 0 1.000000 +holygrail.tga +0 -4.738615 -1.724712 16.304220 -0.552995 -0.201270 -0.808466 0.339844 0.632813 1 0 1.000000 +0 -3.862954 -3.241400 16.304220 -0.450819 -0.378277 -0.808466 0.394531 0.632813 1 0 1.000000 +0 -5.321978 -4.465666 18.269222 -0.676473 -0.567644 -0.469161 0.394531 0.671875 1 0 1.000000 +holygrail.tga +0 -5.321978 -4.465666 18.269222 -0.676473 -0.567644 -0.469161 0.394531 0.671875 1 0 1.000000 +0 -6.528372 -2.376130 18.269222 -0.829829 -0.302042 -0.469131 0.339844 0.671875 1 0 1.000000 +0 -4.738615 -1.724712 16.304220 -0.552995 -0.201270 -0.808466 0.339844 0.632813 1 0 1.000000 +holygrail.tga +0 -5.042726 0.000001 16.304220 -0.588488 0.000000 -0.808466 0.289063 0.632813 1 0 1.000000 +0 -4.738615 -1.724712 16.304220 -0.552995 -0.201270 -0.808466 0.339844 0.632813 1 0 1.000000 +0 -6.528372 -2.376130 18.269222 -0.829829 -0.302042 -0.469131 0.339844 0.671875 1 0 1.000000 +holygrail.tga +0 -6.528372 -2.376130 18.269222 -0.829829 -0.302042 -0.469131 0.339844 0.671875 1 0 1.000000 +0 -6.947345 0.000001 18.269222 -0.883084 0.000000 -0.469131 0.289063 0.671875 1 0 1.000000 +0 -5.042726 0.000001 16.304220 -0.588488 0.000000 -0.808466 0.289063 0.632813 1 0 1.000000 +holygrail.tga +0 -4.738614 1.724714 16.304220 -0.552995 0.201270 -0.808466 0.226563 0.632813 1 0 1.000000 +0 -5.042726 0.000001 16.304220 -0.588488 0.000000 -0.808466 0.289063 0.632813 1 0 1.000000 +0 -6.947345 0.000001 18.269222 -0.883084 0.000000 -0.469131 0.289063 0.671875 1 0 1.000000 +holygrail.tga +0 -6.947345 0.000001 18.269222 -0.883084 0.000000 -0.469131 0.289063 0.671875 1 0 1.000000 +0 -6.528370 2.376133 18.269222 -0.829829 0.302042 -0.469131 0.226563 0.671875 1 0 1.000000 +0 -4.738614 1.724714 16.304220 -0.552995 0.201270 -0.808466 0.226563 0.632813 1 0 1.000000 +holygrail.tga +0 -3.862951 3.241403 16.304222 -0.450819 0.378277 -0.808466 0.171875 0.632813 1 0 1.000000 +0 -4.738614 1.724714 16.304220 -0.552995 0.201270 -0.808466 0.226563 0.632813 1 0 1.000000 +0 -6.528370 2.376133 18.269222 -0.829829 0.302042 -0.469131 0.226563 0.671875 1 0 1.000000 +holygrail.tga +0 -6.528370 2.376133 18.269222 -0.829829 0.302042 -0.469131 0.226563 0.671875 1 0 1.000000 +0 -5.321973 4.465668 18.269226 -0.676473 0.567644 -0.469131 0.171875 0.671875 1 0 1.000000 +0 -3.862951 3.241403 16.304222 -0.450819 0.378277 -0.808466 0.171875 0.632813 1 0 1.000000 +holygrail.tga +0 -2.521362 4.367130 16.304222 -0.294229 0.509659 -0.808466 0.117188 0.632813 1 0 1.000000 +0 -3.862951 3.241403 16.304222 -0.450819 0.378277 -0.808466 0.171875 0.632813 1 0 1.000000 +0 -5.321973 4.465668 18.269226 -0.676473 0.567644 -0.469131 0.171875 0.671875 1 0 1.000000 +holygrail.tga +0 -5.321973 4.465668 18.269226 -0.676473 0.567644 -0.469131 0.171875 0.671875 1 0 1.000000 +0 -3.473672 6.016578 18.269226 -0.441542 0.764794 -0.469131 0.117188 0.671875 1 0 1.000000 +0 -2.521362 4.367130 16.304222 -0.294229 0.509659 -0.808466 0.117188 0.632813 1 0 1.000000 +holygrail.tga +0 -0.875661 4.966117 16.304222 -0.102176 0.579547 -0.808466 0.058594 0.632813 1 0 1.000000 +0 -2.521362 4.367130 16.304222 -0.294229 0.509659 -0.808466 0.117188 0.632813 1 0 1.000000 +0 -3.473672 6.016578 18.269226 -0.441542 0.764794 -0.469131 0.117188 0.671875 1 0 1.000000 +holygrail.tga +0 -3.473672 6.016578 18.269226 -0.441542 0.764794 -0.469131 0.117188 0.671875 1 0 1.000000 +0 -1.206394 6.841801 18.269226 -0.153325 0.869686 -0.469131 0.058594 0.671875 1 0 1.000000 +0 -0.875661 4.966117 16.304222 -0.102176 0.579547 -0.808466 0.058594 0.632813 1 0 1.000000 +holygrail.tga +0 0.875660 4.966117 16.304222 0.102176 0.579547 -0.808466 0.000000 0.632813 1 0 1.000000 +0 -0.875661 4.966117 16.304222 -0.102176 0.579547 -0.808466 0.058594 0.632813 1 0 1.000000 +0 -1.206394 6.841801 18.269226 -0.153325 0.869686 -0.469131 0.058594 0.671875 1 0 1.000000 +holygrail.tga +0 -1.206394 6.841801 18.269226 -0.153325 0.869686 -0.469131 0.058594 0.671875 1 0 1.000000 +0 1.206393 6.841801 18.269226 0.153325 0.869686 -0.469131 0.000000 0.671875 1 0 1.000000 +0 0.875660 4.966117 16.304222 0.102176 0.579547 -0.808466 0.000000 0.632813 1 0 1.000000 +holygrail.tga +0 2.521364 4.367130 16.304222 0.294229 0.509659 -0.808466 0.941406 0.632813 1 0 1.000000 +0 0.875660 4.966117 16.304222 0.102176 0.579547 -0.808466 1.000000 0.632813 1 0 1.000000 +0 1.206393 6.841801 18.269226 0.153325 0.869686 -0.469131 1.000000 0.671875 1 0 1.000000 +holygrail.tga +0 1.206393 6.841801 18.269226 0.153325 0.869686 -0.469131 1.000000 0.671875 1 0 1.000000 +0 3.473674 6.016578 18.269226 0.441542 0.764794 -0.469131 0.941406 0.671875 1 0 1.000000 +0 2.521364 4.367130 16.304222 0.294229 0.509659 -0.808466 0.941406 0.632813 1 0 1.000000 +holygrail.tga +0 3.862955 3.241401 16.304222 0.450819 0.378277 -0.808466 0.886719 0.632813 1 0 1.000000 +0 2.521364 4.367130 16.304222 0.294229 0.509659 -0.808466 0.941406 0.632813 1 0 1.000000 +0 3.473674 6.016578 18.269226 0.441542 0.764794 -0.469131 0.941406 0.671875 1 0 1.000000 +holygrail.tga +0 3.473674 6.016578 18.269226 0.441542 0.764794 -0.469131 0.941406 0.671875 1 0 1.000000 +0 5.321978 4.465666 18.269226 0.676473 0.567644 -0.469131 0.886719 0.671875 1 0 1.000000 +0 3.862955 3.241401 16.304222 0.450819 0.378277 -0.808466 0.886719 0.632813 1 0 1.000000 +holygrail.tga +0 4.738615 1.724714 16.304220 0.552995 0.201270 -0.808466 0.832031 0.632813 1 0 1.000000 +0 3.862955 3.241401 16.304222 0.450819 0.378277 -0.808466 0.886719 0.632813 1 0 1.000000 +0 5.321978 4.465666 18.269226 0.676473 0.567644 -0.469131 0.886719 0.671875 1 0 1.000000 +holygrail.tga +0 5.321978 4.465666 18.269226 0.676473 0.567644 -0.469131 0.886719 0.671875 1 0 1.000000 +0 6.528371 2.376132 18.269222 0.829829 0.302042 -0.469161 0.832031 0.671875 1 0 1.000000 +0 4.738615 1.724714 16.304220 0.552995 0.201270 -0.808466 0.832031 0.632813 1 0 1.000000 +holygrail.tga +0 2.866019 0.000003 15.321719 0.932890 0.000000 -0.360088 0.773438 0.593750 1 0 1.000000 +0 2.693178 0.980237 15.321720 0.876644 0.319071 -0.360088 0.832031 0.593750 1 0 1.000000 +0 4.738615 1.724714 16.304220 0.552995 0.201270 -0.808466 0.832031 0.632813 1 0 1.000000 +holygrail.tga +0 4.738615 1.724714 16.304220 0.552995 0.201270 -0.808466 0.832031 0.632813 1 0 1.000000 +0 5.042727 0.000002 16.304220 0.588488 0.000000 -0.808466 0.773438 0.632813 1 0 1.000000 +0 2.866019 0.000003 15.321719 0.932890 0.000000 -0.360088 0.773438 0.593750 1 0 1.000000 +holygrail.tga +0 2.693176 -0.980238 15.321719 0.876644 -0.319071 -0.360088 0.726563 0.593750 1 0 1.000000 +0 2.866019 0.000003 15.321719 0.932890 0.000000 -0.360088 0.773438 0.593750 1 0 1.000000 +0 5.042727 0.000002 16.304220 0.588488 0.000000 -0.808466 0.773438 0.632813 1 0 1.000000 +holygrail.tga +0 5.042727 0.000002 16.304220 0.588488 0.000000 -0.808466 0.773438 0.632813 1 0 1.000000 +0 4.738611 -1.724718 16.304220 0.552995 -0.201270 -0.808466 0.726563 0.632813 1 0 1.000000 +0 2.693176 -0.980238 15.321719 0.876644 -0.319071 -0.360088 0.726563 0.593750 1 0 1.000000 +holygrail.tga +0 2.195496 -1.842242 15.321719 0.714652 -0.599658 -0.360088 0.664063 0.593750 1 0 1.000000 +0 2.693176 -0.980238 15.321719 0.876644 -0.319071 -0.360088 0.726563 0.593750 1 0 1.000000 +0 4.738611 -1.724718 16.304220 0.552995 -0.201270 -0.808466 0.726563 0.632813 1 0 1.000000 +holygrail.tga +0 4.738611 -1.724718 16.304220 0.552995 -0.201270 -0.808466 0.726563 0.632813 1 0 1.000000 +0 3.862950 -3.241404 16.304220 0.450819 -0.378277 -0.808466 0.664063 0.632813 1 0 1.000000 +0 2.195496 -1.842242 15.321719 0.714652 -0.599658 -0.360088 0.664063 0.593750 1 0 1.000000 +holygrail.tga +0 1.433007 -2.482047 15.321719 0.466445 -0.807917 -0.360088 0.613281 0.593750 1 0 1.000000 +0 2.195496 -1.842242 15.321719 0.714652 -0.599658 -0.360088 0.664063 0.593750 1 0 1.000000 +0 3.862950 -3.241404 16.304220 0.450819 -0.378277 -0.808466 0.664063 0.632813 1 0 1.000000 +holygrail.tga +0 3.862950 -3.241404 16.304220 0.450819 -0.378277 -0.808466 0.664063 0.632813 1 0 1.000000 +0 2.521360 -4.367131 16.304220 0.294229 -0.509659 -0.808466 0.613281 0.632813 1 0 1.000000 +0 1.433007 -2.482047 15.321719 0.466445 -0.807917 -0.360088 0.613281 0.593750 1 0 1.000000 +holygrail.tga +0 0.497677 -2.822478 15.321719 0.161992 -0.918729 -0.360088 0.554688 0.593750 1 0 1.000000 +0 1.433007 -2.482047 15.321719 0.466445 -0.807917 -0.360088 0.613281 0.593750 1 0 1.000000 +0 2.521360 -4.367131 16.304220 0.294229 -0.509659 -0.808466 0.613281 0.632813 1 0 1.000000 +holygrail.tga +0 2.521360 -4.367131 16.304220 0.294229 -0.509659 -0.808466 0.613281 0.632813 1 0 1.000000 +0 0.875658 -4.966117 16.304220 0.102176 -0.579547 -0.808466 0.554688 0.632813 1 0 1.000000 +0 0.497677 -2.822478 15.321719 0.161992 -0.918729 -0.360088 0.554688 0.593750 1 0 1.000000 +holygrail.tga +0 -0.497679 -2.822478 15.321719 -0.161992 -0.918729 -0.360088 0.503906 0.593750 1 0 1.000000 +0 0.497677 -2.822478 15.321719 0.161992 -0.918729 -0.360088 0.554688 0.593750 1 0 1.000000 +0 0.875658 -4.966117 16.304220 0.102176 -0.579547 -0.808466 0.554688 0.632813 1 0 1.000000 +holygrail.tga +0 0.875658 -4.966117 16.304220 0.102176 -0.579547 -0.808466 0.554688 0.632813 1 0 1.000000 +0 -0.875661 -4.966116 16.304220 -0.102176 -0.579547 -0.808466 0.503906 0.632813 1 0 1.000000 +0 -0.497679 -2.822478 15.321719 -0.161992 -0.918729 -0.360088 0.503906 0.593750 1 0 1.000000 +holygrail.tga +0 -1.433010 -2.482045 15.321719 -0.466445 -0.807917 -0.360088 0.449219 0.593750 1 0 1.000000 +0 -0.497679 -2.822478 15.321719 -0.161992 -0.918729 -0.360088 0.503906 0.593750 1 0 1.000000 +0 -0.875661 -4.966116 16.304220 -0.102176 -0.579547 -0.808466 0.503906 0.632813 1 0 1.000000 +holygrail.tga +0 -0.875661 -4.966116 16.304220 -0.102176 -0.579547 -0.808466 0.503906 0.632813 1 0 1.000000 +0 -2.521365 -4.367128 16.304220 -0.294229 -0.509629 -0.808466 0.449219 0.632813 1 0 1.000000 +0 -1.433010 -2.482045 15.321719 -0.466445 -0.807917 -0.360088 0.449219 0.593750 1 0 1.000000 +holygrail.tga +0 -2.195500 -1.842239 15.321719 -0.714652 -0.599658 -0.360088 0.394531 0.593750 1 0 1.000000 +0 -1.433010 -2.482045 15.321719 -0.466445 -0.807917 -0.360088 0.449219 0.593750 1 0 1.000000 +0 -2.521365 -4.367128 16.304220 -0.294229 -0.509629 -0.808466 0.449219 0.632813 1 0 1.000000 +holygrail.tga +0 -2.521365 -4.367128 16.304220 -0.294229 -0.509629 -0.808466 0.449219 0.632813 1 0 1.000000 +0 -3.862954 -3.241400 16.304220 -0.450819 -0.378277 -0.808466 0.394531 0.632813 1 0 1.000000 +0 -2.195500 -1.842239 15.321719 -0.714652 -0.599658 -0.360088 0.394531 0.593750 1 0 1.000000 +holygrail.tga +0 -2.693178 -0.980235 15.321719 -0.876644 -0.319071 -0.360088 0.339844 0.593750 1 0 1.000000 +0 -2.195500 -1.842239 15.321719 -0.714652 -0.599658 -0.360088 0.394531 0.593750 1 0 1.000000 +0 -3.862954 -3.241400 16.304220 -0.450819 -0.378277 -0.808466 0.394531 0.632813 1 0 1.000000 +holygrail.tga +0 -3.862954 -3.241400 16.304220 -0.450819 -0.378277 -0.808466 0.394531 0.632813 1 0 1.000000 +0 -4.738615 -1.724712 16.304220 -0.552995 -0.201270 -0.808466 0.339844 0.632813 1 0 1.000000 +0 -2.693178 -0.980235 15.321719 -0.876644 -0.319071 -0.360088 0.339844 0.593750 1 0 1.000000 +holygrail.tga +0 -2.866019 0.000000 15.321719 -0.932890 0.000000 -0.360088 0.289063 0.593750 1 0 1.000000 +0 -2.693178 -0.980235 15.321719 -0.876644 -0.319071 -0.360088 0.339844 0.593750 1 0 1.000000 +0 -4.738615 -1.724712 16.304220 -0.552995 -0.201270 -0.808466 0.339844 0.632813 1 0 1.000000 +holygrail.tga +0 -4.738615 -1.724712 16.304220 -0.552995 -0.201270 -0.808466 0.339844 0.632813 1 0 1.000000 +0 -5.042726 0.000001 16.304220 -0.588488 0.000000 -0.808466 0.289063 0.632813 1 0 1.000000 +0 -2.866019 0.000000 15.321719 -0.932890 0.000000 -0.360088 0.289063 0.593750 1 0 1.000000 +holygrail.tga +0 -2.693177 0.980236 15.321720 -0.876644 0.319071 -0.360088 0.226563 0.593750 1 0 1.000000 +0 -2.866019 0.000000 15.321719 -0.932890 0.000000 -0.360088 0.289063 0.593750 1 0 1.000000 +0 -5.042726 0.000001 16.304220 -0.588488 0.000000 -0.808466 0.289063 0.632813 1 0 1.000000 +holygrail.tga +0 -5.042726 0.000001 16.304220 -0.588488 0.000000 -0.808466 0.289063 0.632813 1 0 1.000000 +0 -4.738614 1.724714 16.304220 -0.552995 0.201270 -0.808466 0.226563 0.632813 1 0 1.000000 +0 -2.693177 0.980236 15.321720 -0.876644 0.319071 -0.360088 0.226563 0.593750 1 0 1.000000 +holygrail.tga +0 -2.195497 1.842241 15.321721 -0.714652 0.599658 -0.360088 0.171875 0.593750 1 0 1.000000 +0 -2.693177 0.980236 15.321720 -0.876644 0.319071 -0.360088 0.226563 0.593750 1 0 1.000000 +0 -4.738614 1.724714 16.304220 -0.552995 0.201270 -0.808466 0.226563 0.632813 1 0 1.000000 +holygrail.tga +0 -4.738614 1.724714 16.304220 -0.552995 0.201270 -0.808466 0.226563 0.632813 1 0 1.000000 +0 -3.862951 3.241403 16.304222 -0.450819 0.378277 -0.808466 0.171875 0.632813 1 0 1.000000 +0 -2.195497 1.842241 15.321721 -0.714652 0.599658 -0.360088 0.171875 0.593750 1 0 1.000000 +holygrail.tga +0 -1.433007 2.482047 15.321721 -0.466445 0.807917 -0.360088 0.117188 0.593750 1 0 1.000000 +0 -2.195497 1.842241 15.321721 -0.714652 0.599658 -0.360088 0.171875 0.593750 1 0 1.000000 +0 -3.862951 3.241403 16.304222 -0.450819 0.378277 -0.808466 0.171875 0.632813 1 0 1.000000 +holygrail.tga +0 -3.862951 3.241403 16.304222 -0.450819 0.378277 -0.808466 0.171875 0.632813 1 0 1.000000 +0 -2.521362 4.367130 16.304222 -0.294229 0.509659 -0.808466 0.117188 0.632813 1 0 1.000000 +0 -1.433007 2.482047 15.321721 -0.466445 0.807917 -0.360088 0.117188 0.593750 1 0 1.000000 +holygrail.tga +0 -0.497679 2.822479 15.321721 -0.161992 0.918729 -0.360088 0.058594 0.593750 1 0 1.000000 +0 -1.433007 2.482047 15.321721 -0.466445 0.807917 -0.360088 0.117188 0.593750 1 0 1.000000 +0 -2.521362 4.367130 16.304222 -0.294229 0.509659 -0.808466 0.117188 0.632813 1 0 1.000000 +holygrail.tga +0 -2.521362 4.367130 16.304222 -0.294229 0.509659 -0.808466 0.117188 0.632813 1 0 1.000000 +0 -0.875661 4.966117 16.304222 -0.102176 0.579547 -0.808466 0.058594 0.632813 1 0 1.000000 +0 -0.497679 2.822479 15.321721 -0.161992 0.918729 -0.360088 0.058594 0.593750 1 0 1.000000 +holygrail.tga +0 0.497679 2.822479 15.321721 0.161992 0.918729 -0.360088 0.000000 0.593750 1 0 1.000000 +0 -0.497679 2.822479 15.321721 -0.161992 0.918729 -0.360088 0.058594 0.593750 1 0 1.000000 +0 -0.875661 4.966117 16.304222 -0.102176 0.579547 -0.808466 0.058594 0.632813 1 0 1.000000 +holygrail.tga +0 -0.875661 4.966117 16.304222 -0.102176 0.579547 -0.808466 0.058594 0.632813 1 0 1.000000 +0 0.875660 4.966117 16.304222 0.102176 0.579547 -0.808466 0.000000 0.632813 1 0 1.000000 +0 0.497679 2.822479 15.321721 0.161992 0.918729 -0.360088 0.000000 0.593750 1 0 1.000000 +holygrail.tga +0 1.433010 2.482046 15.321721 0.466445 0.807917 -0.360088 0.941406 0.593750 1 0 1.000000 +0 0.497679 2.822479 15.321721 0.161992 0.918729 -0.360088 1.000000 0.593750 1 0 1.000000 +0 0.875660 4.966117 16.304222 0.102176 0.579547 -0.808466 1.000000 0.632813 1 0 1.000000 +holygrail.tga +0 0.875660 4.966117 16.304222 0.102176 0.579547 -0.808466 1.000000 0.632813 1 0 1.000000 +0 2.521364 4.367130 16.304222 0.294229 0.509659 -0.808466 0.941406 0.632813 1 0 1.000000 +0 1.433010 2.482046 15.321721 0.466445 0.807917 -0.360088 0.941406 0.593750 1 0 1.000000 +holygrail.tga +0 2.195500 1.842241 15.321721 0.714652 0.599658 -0.360088 0.886719 0.593750 1 0 1.000000 +0 1.433010 2.482046 15.321721 0.466445 0.807917 -0.360088 0.941406 0.593750 1 0 1.000000 +0 2.521364 4.367130 16.304222 0.294229 0.509659 -0.808466 0.941406 0.632813 1 0 1.000000 +holygrail.tga +0 2.521364 4.367130 16.304222 0.294229 0.509659 -0.808466 0.941406 0.632813 1 0 1.000000 +0 3.862955 3.241401 16.304222 0.450819 0.378277 -0.808466 0.886719 0.632813 1 0 1.000000 +0 2.195500 1.842241 15.321721 0.714652 0.599658 -0.360088 0.886719 0.593750 1 0 1.000000 +holygrail.tga +0 2.693178 0.980237 15.321720 0.876644 0.319071 -0.360088 0.832031 0.593750 1 0 1.000000 +0 2.195500 1.842241 15.321721 0.714652 0.599658 -0.360088 0.886719 0.593750 1 0 1.000000 +0 3.862955 3.241401 16.304222 0.450819 0.378277 -0.808466 0.886719 0.632813 1 0 1.000000 +holygrail.tga +0 3.862955 3.241401 16.304222 0.450819 0.378277 -0.808466 0.886719 0.632813 1 0 1.000000 +0 4.738615 1.724714 16.304220 0.552995 0.201270 -0.808466 0.832031 0.632813 1 0 1.000000 +0 2.693178 0.980237 15.321720 0.876644 0.319071 -0.360088 0.832031 0.593750 1 0 1.000000 +holygrail.tga +0 3.047412 0.000003 14.964446 0.961058 0.000000 0.276284 0.773438 0.578125 1 0 1.000000 +0 2.863631 1.042277 14.964447 0.903104 0.328684 0.276284 0.832031 0.578125 1 0 1.000000 +0 2.693178 0.980237 15.321720 0.876644 0.319071 -0.360088 0.832031 0.593750 1 0 1.000000 +holygrail.tga +0 2.693178 0.980237 15.321720 0.876644 0.319071 -0.360088 0.832031 0.593750 1 0 1.000000 +0 2.866019 0.000003 15.321719 0.932890 0.000000 -0.360088 0.773438 0.593750 1 0 1.000000 +0 3.047412 0.000003 14.964446 0.961058 0.000000 0.276284 0.773438 0.578125 1 0 1.000000 +holygrail.tga +0 2.863629 -1.042278 14.964446 0.903104 -0.328684 0.276284 0.726563 0.578125 1 0 1.000000 +0 3.047412 0.000003 14.964446 0.961058 0.000000 0.276284 0.773438 0.578125 1 0 1.000000 +0 2.866019 0.000003 15.321719 0.932890 0.000000 -0.360088 0.773438 0.593750 1 0 1.000000 +holygrail.tga +0 2.866019 0.000003 15.321719 0.932890 0.000000 -0.360088 0.773438 0.593750 1 0 1.000000 +0 2.693176 -0.980238 15.321719 0.876644 -0.319071 -0.360088 0.726563 0.593750 1 0 1.000000 +0 2.863629 -1.042278 14.964446 0.903104 -0.328684 0.276284 0.726563 0.578125 1 0 1.000000 +holygrail.tga +0 2.334451 -1.958839 14.964447 0.736198 -0.617756 0.276284 0.664063 0.578125 1 0 1.000000 +0 2.863629 -1.042278 14.964446 0.903104 -0.328684 0.276284 0.726563 0.578125 1 0 1.000000 +0 2.693176 -0.980238 15.321719 0.876644 -0.319071 -0.360088 0.726563 0.593750 1 0 1.000000 +holygrail.tga +0 2.693176 -0.980238 15.321719 0.876644 -0.319071 -0.360088 0.726563 0.593750 1 0 1.000000 +0 2.195496 -1.842242 15.321719 0.714652 -0.599658 -0.360088 0.664063 0.593750 1 0 1.000000 +0 2.334451 -1.958839 14.964447 0.736198 -0.617756 0.276284 0.664063 0.578125 1 0 1.000000 +holygrail.tga +0 1.523703 -2.639137 14.964447 0.480514 -0.832301 0.276284 0.613281 0.578125 1 0 1.000000 +0 2.334451 -1.958839 14.964447 0.736198 -0.617756 0.276284 0.664063 0.578125 1 0 1.000000 +0 2.195496 -1.842242 15.321719 0.714652 -0.599658 -0.360088 0.664063 0.593750 1 0 1.000000 +holygrail.tga +0 2.195496 -1.842242 15.321719 0.714652 -0.599658 -0.360088 0.664063 0.593750 1 0 1.000000 +0 1.433007 -2.482047 15.321719 0.466445 -0.807917 -0.360088 0.613281 0.593750 1 0 1.000000 +0 1.523703 -2.639137 14.964447 0.480514 -0.832301 0.276284 0.613281 0.578125 1 0 1.000000 +holygrail.tga +0 0.529176 -3.001114 14.964447 0.166875 -0.946440 0.276284 0.554688 0.578125 1 0 1.000000 +0 1.523703 -2.639137 14.964447 0.480514 -0.832301 0.276284 0.613281 0.578125 1 0 1.000000 +0 1.433007 -2.482047 15.321719 0.466445 -0.807917 -0.360088 0.613281 0.593750 1 0 1.000000 +holygrail.tga +0 1.433007 -2.482047 15.321719 0.466445 -0.807917 -0.360088 0.613281 0.593750 1 0 1.000000 +0 0.497677 -2.822478 15.321719 0.161992 -0.918729 -0.360088 0.554688 0.593750 1 0 1.000000 +0 0.529176 -3.001114 14.964447 0.166875 -0.946440 0.276284 0.554688 0.578125 1 0 1.000000 +holygrail.tga +0 -0.529177 -3.001114 14.964447 -0.166875 -0.946440 0.276284 0.503906 0.578125 1 0 1.000000 +0 0.529176 -3.001114 14.964447 0.166875 -0.946440 0.276284 0.554688 0.578125 1 0 1.000000 +0 0.497677 -2.822478 15.321719 0.161992 -0.918729 -0.360088 0.554688 0.593750 1 0 1.000000 +holygrail.tga +0 0.497677 -2.822478 15.321719 0.161992 -0.918729 -0.360088 0.554688 0.593750 1 0 1.000000 +0 -0.497679 -2.822478 15.321719 -0.161992 -0.918729 -0.360088 0.503906 0.593750 1 0 1.000000 +0 -0.529177 -3.001114 14.964447 -0.166875 -0.946440 0.276284 0.503906 0.578125 1 0 1.000000 +holygrail.tga +0 -1.523706 -2.639135 14.964447 -0.480514 -0.832301 0.276284 0.449219 0.578125 1 0 1.000000 +0 -0.529177 -3.001114 14.964447 -0.166875 -0.946440 0.276284 0.503906 0.578125 1 0 1.000000 +0 -0.497679 -2.822478 15.321719 -0.161992 -0.918729 -0.360088 0.503906 0.593750 1 0 1.000000 +holygrail.tga +0 -0.497679 -2.822478 15.321719 -0.161992 -0.918729 -0.360088 0.503906 0.593750 1 0 1.000000 +0 -1.433010 -2.482045 15.321719 -0.466445 -0.807917 -0.360088 0.449219 0.593750 1 0 1.000000 +0 -1.523706 -2.639135 14.964447 -0.480514 -0.832301 0.276284 0.449219 0.578125 1 0 1.000000 +holygrail.tga +0 -2.334454 -1.958836 14.964447 -0.736198 -0.617756 0.276284 0.394531 0.578125 1 0 1.000000 +0 -1.523706 -2.639135 14.964447 -0.480514 -0.832301 0.276284 0.449219 0.578125 1 0 1.000000 +0 -1.433010 -2.482045 15.321719 -0.466445 -0.807917 -0.360088 0.449219 0.593750 1 0 1.000000 +holygrail.tga +0 -1.433010 -2.482045 15.321719 -0.466445 -0.807917 -0.360088 0.449219 0.593750 1 0 1.000000 +0 -2.195500 -1.842239 15.321719 -0.714652 -0.599658 -0.360088 0.394531 0.593750 1 0 1.000000 +0 -2.334454 -1.958836 14.964447 -0.736198 -0.617756 0.276284 0.394531 0.578125 1 0 1.000000 +holygrail.tga +0 -2.195500 -1.842239 15.321719 -0.714652 -0.599658 -0.360088 0.394531 0.593750 1 0 1.000000 +0 -2.693178 -0.980235 15.321719 -0.876644 -0.319071 -0.360088 0.339844 0.593750 1 0 1.000000 +0 -2.863631 -1.042275 14.964446 -0.903104 -0.328684 0.276284 0.339844 0.578125 1 0 1.000000 +holygrail.tga +0 -3.047411 0.000000 14.964446 -0.961058 0.000000 0.276284 0.289063 0.578125 1 0 1.000000 +0 -2.863631 -1.042275 14.964446 -0.903104 -0.328684 0.276284 0.339844 0.578125 1 0 1.000000 +0 -2.693178 -0.980235 15.321719 -0.876644 -0.319071 -0.360088 0.339844 0.593750 1 0 1.000000 +holygrail.tga +0 -2.693178 -0.980235 15.321719 -0.876644 -0.319071 -0.360088 0.339844 0.593750 1 0 1.000000 +0 -2.866019 0.000000 15.321719 -0.932890 0.000000 -0.360088 0.289063 0.593750 1 0 1.000000 +0 -3.047411 0.000000 14.964446 -0.961058 0.000000 0.276284 0.289063 0.578125 1 0 1.000000 +holygrail.tga +0 -2.863631 1.042276 14.964447 -0.903104 0.328684 0.276284 0.226563 0.578125 1 0 1.000000 +0 -3.047411 0.000000 14.964446 -0.961058 0.000000 0.276284 0.289063 0.578125 1 0 1.000000 +0 -2.866019 0.000000 15.321719 -0.932890 0.000000 -0.360088 0.289063 0.593750 1 0 1.000000 +holygrail.tga +0 -2.866019 0.000000 15.321719 -0.932890 0.000000 -0.360088 0.289063 0.593750 1 0 1.000000 +0 -2.693177 0.980236 15.321720 -0.876644 0.319071 -0.360088 0.226563 0.593750 1 0 1.000000 +0 -2.863631 1.042276 14.964447 -0.903104 0.328684 0.276284 0.226563 0.578125 1 0 1.000000 +holygrail.tga +0 -2.334451 1.958838 14.964448 -0.736198 0.617756 0.276284 0.171875 0.578125 1 0 1.000000 +0 -2.863631 1.042276 14.964447 -0.903104 0.328684 0.276284 0.226563 0.578125 1 0 1.000000 +0 -2.693177 0.980236 15.321720 -0.876644 0.319071 -0.360088 0.226563 0.593750 1 0 1.000000 +holygrail.tga +0 -2.693177 0.980236 15.321720 -0.876644 0.319071 -0.360088 0.226563 0.593750 1 0 1.000000 +0 -2.195497 1.842241 15.321721 -0.714652 0.599658 -0.360088 0.171875 0.593750 1 0 1.000000 +0 -2.334451 1.958838 14.964448 -0.736198 0.617756 0.276284 0.171875 0.578125 1 0 1.000000 +holygrail.tga +0 -1.523703 2.639137 14.964448 -0.480514 0.832301 0.276284 0.117188 0.578125 1 0 1.000000 +0 -2.334451 1.958838 14.964448 -0.736198 0.617756 0.276284 0.171875 0.578125 1 0 1.000000 +0 -2.195497 1.842241 15.321721 -0.714652 0.599658 -0.360088 0.171875 0.593750 1 0 1.000000 +holygrail.tga +0 -2.195497 1.842241 15.321721 -0.714652 0.599658 -0.360088 0.171875 0.593750 1 0 1.000000 +0 -1.433007 2.482047 15.321721 -0.466445 0.807917 -0.360088 0.117188 0.593750 1 0 1.000000 +0 -1.523703 2.639137 14.964448 -0.480514 0.832301 0.276284 0.117188 0.578125 1 0 1.000000 +holygrail.tga +0 -0.529177 3.001115 14.964448 -0.166875 0.946440 0.276284 0.058594 0.578125 1 0 1.000000 +0 -1.523703 2.639137 14.964448 -0.480514 0.832301 0.276284 0.117188 0.578125 1 0 1.000000 +0 -1.433007 2.482047 15.321721 -0.466445 0.807917 -0.360088 0.117188 0.593750 1 0 1.000000 +holygrail.tga +0 -1.433007 2.482047 15.321721 -0.466445 0.807917 -0.360088 0.117188 0.593750 1 0 1.000000 +0 -0.497679 2.822479 15.321721 -0.161992 0.918729 -0.360088 0.058594 0.593750 1 0 1.000000 +0 -0.529177 3.001115 14.964448 -0.166875 0.946440 0.276284 0.058594 0.578125 1 0 1.000000 +holygrail.tga +0 0.529177 3.001115 14.964448 0.166875 0.946440 0.276284 0.000000 0.578125 1 0 1.000000 +0 -0.529177 3.001115 14.964448 -0.166875 0.946440 0.276284 0.058594 0.578125 1 0 1.000000 +0 -0.497679 2.822479 15.321721 -0.161992 0.918729 -0.360088 0.058594 0.593750 1 0 1.000000 +holygrail.tga +0 -0.497679 2.822479 15.321721 -0.161992 0.918729 -0.360088 0.058594 0.593750 1 0 1.000000 +0 0.497679 2.822479 15.321721 0.161992 0.918729 -0.360088 0.000000 0.593750 1 0 1.000000 +0 0.529177 3.001115 14.964448 0.166875 0.946440 0.276284 0.000000 0.578125 1 0 1.000000 +holygrail.tga +0 1.523706 2.639137 14.964448 0.480514 0.832301 0.276284 0.941406 0.578125 1 0 1.000000 +0 0.529177 3.001115 14.964448 0.166875 0.946440 0.276284 1.000000 0.578125 1 0 1.000000 +0 0.497679 2.822479 15.321721 0.161992 0.918729 -0.360088 1.000000 0.593750 1 0 1.000000 +holygrail.tga +0 0.497679 2.822479 15.321721 0.161992 0.918729 -0.360088 1.000000 0.593750 1 0 1.000000 +0 1.433010 2.482046 15.321721 0.466445 0.807917 -0.360088 0.941406 0.593750 1 0 1.000000 +0 1.523706 2.639137 14.964448 0.480514 0.832301 0.276284 0.941406 0.578125 1 0 1.000000 +holygrail.tga +0 2.334455 1.958838 14.964448 0.736198 0.617756 0.276284 0.886719 0.578125 1 0 1.000000 +0 1.523706 2.639137 14.964448 0.480514 0.832301 0.276284 0.941406 0.578125 1 0 1.000000 +0 1.433010 2.482046 15.321721 0.466445 0.807917 -0.360088 0.941406 0.593750 1 0 1.000000 +holygrail.tga +0 1.433010 2.482046 15.321721 0.466445 0.807917 -0.360088 0.941406 0.593750 1 0 1.000000 +0 2.195500 1.842241 15.321721 0.714652 0.599658 -0.360088 0.886719 0.593750 1 0 1.000000 +0 2.334455 1.958838 14.964448 0.736198 0.617756 0.276284 0.886719 0.578125 1 0 1.000000 +holygrail.tga +0 2.863631 1.042277 14.964447 0.903104 0.328684 0.276284 0.832031 0.578125 1 0 1.000000 +0 2.334455 1.958838 14.964448 0.736198 0.617756 0.276284 0.886719 0.578125 1 0 1.000000 +0 2.195500 1.842241 15.321721 0.714652 0.599658 -0.360088 0.886719 0.593750 1 0 1.000000 +holygrail.tga +0 2.195500 1.842241 15.321721 0.714652 0.599658 -0.360088 0.886719 0.593750 1 0 1.000000 +0 2.693178 0.980237 15.321720 0.876644 0.319071 -0.360088 0.832031 0.593750 1 0 1.000000 +0 2.863631 1.042277 14.964447 0.903104 0.328684 0.276284 0.832031 0.578125 1 0 1.000000 +holygrail.tga +0 3.138108 0.000003 14.071262 0.987701 0.000000 -0.156285 0.773438 0.539063 1 0 1.000000 +0 2.948858 1.073297 14.071264 0.928129 0.337809 -0.156285 0.832031 0.539063 1 0 1.000000 +0 2.863631 1.042277 14.964447 0.903104 0.328684 0.276284 0.832031 0.578125 1 0 1.000000 +holygrail.tga +0 2.863631 1.042277 14.964447 0.903104 0.328684 0.276284 0.832031 0.578125 1 0 1.000000 +0 3.047412 0.000003 14.964446 0.961058 0.000000 0.276284 0.773438 0.578125 1 0 1.000000 +0 3.138108 0.000003 14.071262 0.987701 0.000000 -0.156285 0.773438 0.539063 1 0 1.000000 +holygrail.tga +0 2.948855 -1.073298 14.071262 0.928129 -0.337809 -0.156285 0.726563 0.539063 1 0 1.000000 +0 3.138108 0.000003 14.071262 0.987701 0.000000 -0.156285 0.773438 0.539063 1 0 1.000000 +0 3.047412 0.000003 14.964446 0.961058 0.000000 0.276284 0.773438 0.578125 1 0 1.000000 +holygrail.tga +0 3.047412 0.000003 14.964446 0.961058 0.000000 0.276284 0.773438 0.578125 1 0 1.000000 +0 2.863629 -1.042278 14.964446 0.903104 -0.328684 0.276284 0.726563 0.578125 1 0 1.000000 +0 2.948855 -1.073298 14.071262 0.928129 -0.337809 -0.156285 0.726563 0.539063 1 0 1.000000 +holygrail.tga +0 2.403928 -2.017137 14.071264 0.756615 -0.634877 -0.156285 0.664063 0.539063 1 0 1.000000 +0 2.948855 -1.073298 14.071262 0.928129 -0.337809 -0.156285 0.726563 0.539063 1 0 1.000000 +0 2.863629 -1.042278 14.964446 0.903104 -0.328684 0.276284 0.726563 0.578125 1 0 1.000000 +holygrail.tga +0 2.863629 -1.042278 14.964446 0.903104 -0.328684 0.276284 0.726563 0.578125 1 0 1.000000 +0 2.334451 -1.958839 14.964447 0.736198 -0.617756 0.276284 0.664063 0.578125 1 0 1.000000 +0 2.403928 -2.017137 14.071264 0.756615 -0.634877 -0.156285 0.664063 0.539063 1 0 1.000000 +holygrail.tga +0 1.569051 -2.717682 14.071264 0.493851 -0.855373 -0.156285 0.613281 0.539063 1 0 1.000000 +0 2.403928 -2.017137 14.071264 0.756615 -0.634877 -0.156285 0.664063 0.539063 1 0 1.000000 +0 2.334451 -1.958839 14.964447 0.736198 -0.617756 0.276284 0.664063 0.578125 1 0 1.000000 +holygrail.tga +0 2.334451 -1.958839 14.964447 0.736198 -0.617756 0.276284 0.664063 0.578125 1 0 1.000000 +0 1.523703 -2.639137 14.964447 0.480514 -0.832301 0.276284 0.613281 0.578125 1 0 1.000000 +0 1.569051 -2.717682 14.071264 0.493851 -0.855373 -0.156285 0.613281 0.539063 1 0 1.000000 +holygrail.tga +0 0.544925 -3.090432 14.071264 0.171484 -0.972686 -0.156285 0.554688 0.539063 1 0 1.000000 +0 1.569051 -2.717682 14.071264 0.493851 -0.855373 -0.156285 0.613281 0.539063 1 0 1.000000 +0 1.523703 -2.639137 14.964447 0.480514 -0.832301 0.276284 0.613281 0.578125 1 0 1.000000 +holygrail.tga +0 1.523703 -2.639137 14.964447 0.480514 -0.832301 0.276284 0.613281 0.578125 1 0 1.000000 +0 0.529176 -3.001114 14.964447 0.166875 -0.946440 0.276284 0.554688 0.578125 1 0 1.000000 +0 0.544925 -3.090432 14.071264 0.171484 -0.972686 -0.156285 0.554688 0.539063 1 0 1.000000 +holygrail.tga +0 -0.544927 -3.090432 14.071264 -0.171484 -0.972686 -0.156285 0.503906 0.539063 1 0 1.000000 +0 0.544925 -3.090432 14.071264 0.171484 -0.972686 -0.156285 0.554688 0.539063 1 0 1.000000 +0 0.529176 -3.001114 14.964447 0.166875 -0.946440 0.276284 0.554688 0.578125 1 0 1.000000 +holygrail.tga +0 0.529176 -3.001114 14.964447 0.166875 -0.946440 0.276284 0.554688 0.578125 1 0 1.000000 +0 -0.529177 -3.001114 14.964447 -0.166875 -0.946440 0.276284 0.503906 0.578125 1 0 1.000000 +0 -0.544927 -3.090432 14.071264 -0.171484 -0.972686 -0.156285 0.503906 0.539063 1 0 1.000000 +holygrail.tga +0 -1.569054 -2.717680 14.071264 -0.493851 -0.855373 -0.156285 0.449219 0.539063 1 0 1.000000 +0 -0.544927 -3.090432 14.071264 -0.171484 -0.972686 -0.156285 0.503906 0.539063 1 0 1.000000 +0 -0.529177 -3.001114 14.964447 -0.166875 -0.946440 0.276284 0.503906 0.578125 1 0 1.000000 +holygrail.tga +0 -0.529177 -3.001114 14.964447 -0.166875 -0.946440 0.276284 0.503906 0.578125 1 0 1.000000 +0 -1.523706 -2.639135 14.964447 -0.480514 -0.832301 0.276284 0.449219 0.578125 1 0 1.000000 +0 -1.569054 -2.717680 14.071264 -0.493851 -0.855373 -0.156285 0.449219 0.539063 1 0 1.000000 +holygrail.tga +0 -2.403931 -2.017134 14.071264 -0.756615 -0.634877 -0.156285 0.394531 0.539063 1 0 1.000000 +0 -1.569054 -2.717680 14.071264 -0.493851 -0.855373 -0.156285 0.449219 0.539063 1 0 1.000000 +0 -1.523706 -2.639135 14.964447 -0.480514 -0.832301 0.276284 0.449219 0.578125 1 0 1.000000 +holygrail.tga +0 -1.523706 -2.639135 14.964447 -0.480514 -0.832301 0.276284 0.449219 0.578125 1 0 1.000000 +0 -2.334454 -1.958836 14.964447 -0.736198 -0.617756 0.276284 0.394531 0.578125 1 0 1.000000 +0 -2.403931 -2.017134 14.071264 -0.756615 -0.634877 -0.156285 0.394531 0.539063 1 0 1.000000 +holygrail.tga +0 -2.948857 -1.073294 14.071262 -0.928129 -0.337809 -0.156285 0.339844 0.539063 1 0 1.000000 +0 -2.403931 -2.017134 14.071264 -0.756615 -0.634877 -0.156285 0.394531 0.539063 1 0 1.000000 +0 -2.334454 -1.958836 14.964447 -0.736198 -0.617756 0.276284 0.394531 0.578125 1 0 1.000000 +holygrail.tga +0 -2.334454 -1.958836 14.964447 -0.736198 -0.617756 0.276284 0.394531 0.578125 1 0 1.000000 +0 -2.863631 -1.042275 14.964446 -0.903104 -0.328684 0.276284 0.339844 0.578125 1 0 1.000000 +0 -2.948857 -1.073294 14.071262 -0.928129 -0.337809 -0.156285 0.339844 0.539063 1 0 1.000000 +holygrail.tga +0 -3.138107 0.000001 14.071262 -0.987701 0.000000 -0.156285 0.289063 0.539063 1 0 1.000000 +0 -2.948857 -1.073294 14.071262 -0.928129 -0.337809 -0.156285 0.339844 0.539063 1 0 1.000000 +0 -2.863631 -1.042275 14.964446 -0.903104 -0.328684 0.276284 0.339844 0.578125 1 0 1.000000 +holygrail.tga +0 -2.863631 -1.042275 14.964446 -0.903104 -0.328684 0.276284 0.339844 0.578125 1 0 1.000000 +0 -3.047411 0.000000 14.964446 -0.961058 0.000000 0.276284 0.289063 0.578125 1 0 1.000000 +0 -3.138107 0.000001 14.071262 -0.987701 0.000000 -0.156285 0.289063 0.539063 1 0 1.000000 +holygrail.tga +0 -2.948857 1.073296 14.071264 -0.928129 0.337809 -0.156285 0.226563 0.539063 1 0 1.000000 +0 -3.138107 0.000001 14.071262 -0.987701 0.000000 -0.156285 0.289063 0.539063 1 0 1.000000 +0 -3.047411 0.000000 14.964446 -0.961058 0.000000 0.276284 0.289063 0.578125 1 0 1.000000 +holygrail.tga +0 -3.047411 0.000000 14.964446 -0.961058 0.000000 0.276284 0.289063 0.578125 1 0 1.000000 +0 -2.863631 1.042276 14.964447 -0.903104 0.328684 0.276284 0.226563 0.578125 1 0 1.000000 +0 -2.948857 1.073296 14.071264 -0.928129 0.337809 -0.156285 0.226563 0.539063 1 0 1.000000 +holygrail.tga +0 -2.403929 2.017137 14.071265 -0.756615 0.634877 -0.156285 0.171875 0.539063 1 0 1.000000 +0 -2.948857 1.073296 14.071264 -0.928129 0.337809 -0.156285 0.226563 0.539063 1 0 1.000000 +0 -2.863631 1.042276 14.964447 -0.903104 0.328684 0.276284 0.226563 0.578125 1 0 1.000000 +holygrail.tga +0 -2.863631 1.042276 14.964447 -0.903104 0.328684 0.276284 0.226563 0.578125 1 0 1.000000 +0 -2.334451 1.958838 14.964448 -0.736198 0.617756 0.276284 0.171875 0.578125 1 0 1.000000 +0 -2.403929 2.017137 14.071265 -0.756615 0.634877 -0.156285 0.171875 0.539063 1 0 1.000000 +holygrail.tga +0 -1.569052 2.717682 14.071264 -0.493851 0.855373 -0.156285 0.117188 0.539063 1 0 1.000000 +0 -2.403929 2.017137 14.071265 -0.756615 0.634877 -0.156285 0.171875 0.539063 1 0 1.000000 +0 -2.334451 1.958838 14.964448 -0.736198 0.617756 0.276284 0.171875 0.578125 1 0 1.000000 +holygrail.tga +0 -0.544927 3.090433 14.071264 -0.171514 0.972686 -0.156285 0.058594 0.539063 1 0 1.000000 +0 -1.569052 2.717682 14.071264 -0.493851 0.855373 -0.156285 0.117188 0.539063 1 0 1.000000 +0 -1.523703 2.639137 14.964448 -0.480514 0.832301 0.276284 0.117188 0.578125 1 0 1.000000 +holygrail.tga +0 -1.523703 2.639137 14.964448 -0.480514 0.832301 0.276284 0.117188 0.578125 1 0 1.000000 +0 -0.529177 3.001115 14.964448 -0.166875 0.946440 0.276284 0.058594 0.578125 1 0 1.000000 +0 -0.544927 3.090433 14.071264 -0.171514 0.972686 -0.156285 0.058594 0.539063 1 0 1.000000 +holygrail.tga +0 0.544927 3.090433 14.071264 0.171484 0.972686 -0.156285 0.000000 0.539063 1 0 1.000000 +0 -0.544927 3.090433 14.071264 -0.171514 0.972686 -0.156285 0.058594 0.539063 1 0 1.000000 +0 -0.529177 3.001115 14.964448 -0.166875 0.946440 0.276284 0.058594 0.578125 1 0 1.000000 +holygrail.tga +0 -0.529177 3.001115 14.964448 -0.166875 0.946440 0.276284 0.058594 0.578125 1 0 1.000000 +0 0.529177 3.001115 14.964448 0.166875 0.946440 0.276284 0.000000 0.578125 1 0 1.000000 +0 0.544927 3.090433 14.071264 0.171484 0.972686 -0.156285 0.000000 0.539063 1 0 1.000000 +holygrail.tga +0 1.569054 2.717682 14.071264 0.493851 0.855373 -0.156285 0.941406 0.539063 1 0 1.000000 +0 0.544927 3.090433 14.071264 0.171484 0.972686 -0.156285 1.000000 0.539063 1 0 1.000000 +0 0.529177 3.001115 14.964448 0.166875 0.946440 0.276284 1.000000 0.578125 1 0 1.000000 +holygrail.tga +0 0.529177 3.001115 14.964448 0.166875 0.946440 0.276284 1.000000 0.578125 1 0 1.000000 +0 1.523706 2.639137 14.964448 0.480514 0.832301 0.276284 0.941406 0.578125 1 0 1.000000 +0 1.569054 2.717682 14.071264 0.493851 0.855373 -0.156285 0.941406 0.539063 1 0 1.000000 +holygrail.tga +0 2.403932 2.017136 14.071265 0.756615 0.634877 -0.156285 0.886719 0.539063 1 0 1.000000 +0 1.569054 2.717682 14.071264 0.493851 0.855373 -0.156285 0.941406 0.539063 1 0 1.000000 +0 1.523706 2.639137 14.964448 0.480514 0.832301 0.276284 0.941406 0.578125 1 0 1.000000 +holygrail.tga +0 1.523706 2.639137 14.964448 0.480514 0.832301 0.276284 0.941406 0.578125 1 0 1.000000 +0 2.334455 1.958838 14.964448 0.736198 0.617756 0.276284 0.886719 0.578125 1 0 1.000000 +0 2.403932 2.017136 14.071265 0.756615 0.634877 -0.156285 0.886719 0.539063 1 0 1.000000 +holygrail.tga +0 2.948858 1.073297 14.071264 0.928129 0.337809 -0.156285 0.832031 0.539063 1 0 1.000000 +0 2.403932 2.017136 14.071265 0.756615 0.634877 -0.156285 0.886719 0.539063 1 0 1.000000 +0 2.334455 1.958838 14.964448 0.736198 0.617756 0.276284 0.886719 0.578125 1 0 1.000000 +holygrail.tga +0 2.334455 1.958838 14.964448 0.736198 0.617756 0.276284 0.886719 0.578125 1 0 1.000000 +0 2.863631 1.042277 14.964447 0.903104 0.328684 0.276284 0.832031 0.578125 1 0 1.000000 +0 2.948858 1.073297 14.071264 0.928129 0.337809 -0.156285 0.832031 0.539063 1 0 1.000000 +holygrail.tga +0 2.775323 0.000004 13.267398 0.840388 0.000000 -0.541978 0.773438 0.507813 1 0 1.000000 +0 2.607951 0.949218 13.267399 0.789697 0.287423 -0.541978 0.832031 0.507813 1 0 1.000000 +0 2.948858 1.073297 14.071264 0.928129 0.337809 -0.156285 0.832031 0.539063 1 0 1.000000 +holygrail.tga +0 2.948858 1.073297 14.071264 0.928129 0.337809 -0.156285 0.832031 0.539063 1 0 1.000000 +0 3.138108 0.000003 14.071262 0.987701 0.000000 -0.156285 0.773438 0.539063 1 0 1.000000 +0 2.775323 0.000004 13.267398 0.840388 0.000000 -0.541978 0.773438 0.507813 1 0 1.000000 +holygrail.tga +0 2.607949 -0.949218 13.267398 0.789697 -0.287423 -0.541978 0.726563 0.507813 1 0 1.000000 +0 2.775323 0.000004 13.267398 0.840388 0.000000 -0.541978 0.773438 0.507813 1 0 1.000000 +0 3.138108 0.000003 14.071262 0.987701 0.000000 -0.156285 0.773438 0.539063 1 0 1.000000 +holygrail.tga +0 3.138108 0.000003 14.071262 0.987701 0.000000 -0.156285 0.773438 0.539063 1 0 1.000000 +0 2.948855 -1.073298 14.071262 0.928129 -0.337809 -0.156285 0.726563 0.539063 1 0 1.000000 +0 2.607949 -0.949218 13.267398 0.789697 -0.287423 -0.541978 0.726563 0.507813 1 0 1.000000 +holygrail.tga +0 2.126019 -1.783943 13.267399 0.643757 -0.540178 -0.541978 0.664063 0.507813 1 0 1.000000 +0 2.607949 -0.949218 13.267398 0.789697 -0.287423 -0.541978 0.726563 0.507813 1 0 1.000000 +0 2.948855 -1.073298 14.071262 0.928129 -0.337809 -0.156285 0.726563 0.539063 1 0 1.000000 +holygrail.tga +0 2.948855 -1.073298 14.071262 0.928129 -0.337809 -0.156285 0.726563 0.539063 1 0 1.000000 +0 2.403928 -2.017137 14.071264 0.756615 -0.634877 -0.156285 0.664063 0.539063 1 0 1.000000 +0 2.126019 -1.783943 13.267399 0.643757 -0.540178 -0.541978 0.664063 0.507813 1 0 1.000000 +holygrail.tga +0 1.387658 -2.403501 13.267399 0.420179 -0.727775 -0.541978 0.613281 0.507813 1 0 1.000000 +0 2.126019 -1.783943 13.267399 0.643757 -0.540178 -0.541978 0.664063 0.507813 1 0 1.000000 +0 2.403928 -2.017137 14.071264 0.756615 -0.634877 -0.156285 0.664063 0.539063 1 0 1.000000 +holygrail.tga +0 2.403928 -2.017137 14.071264 0.756615 -0.634877 -0.156285 0.664063 0.539063 1 0 1.000000 +0 1.569051 -2.717682 14.071264 0.493851 -0.855373 -0.156285 0.613281 0.539063 1 0 1.000000 +0 1.387658 -2.403501 13.267399 0.420179 -0.727775 -0.541978 0.613281 0.507813 1 0 1.000000 +holygrail.tga +0 0.481928 -2.733159 13.267399 0.145909 -0.827601 -0.541978 0.554688 0.507813 1 0 1.000000 +0 1.387658 -2.403501 13.267399 0.420179 -0.727775 -0.541978 0.613281 0.507813 1 0 1.000000 +0 1.569051 -2.717682 14.071264 0.493851 -0.855373 -0.156285 0.613281 0.539063 1 0 1.000000 +holygrail.tga +0 1.569051 -2.717682 14.071264 0.493851 -0.855373 -0.156285 0.613281 0.539063 1 0 1.000000 +0 0.544925 -3.090432 14.071264 0.171484 -0.972686 -0.156285 0.554688 0.539063 1 0 1.000000 +0 0.481928 -2.733159 13.267399 0.145909 -0.827601 -0.541978 0.554688 0.507813 1 0 1.000000 +holygrail.tga +0 -0.481930 -2.733159 13.267399 -0.145909 -0.827601 -0.541978 0.503906 0.507813 1 0 1.000000 +0 0.481928 -2.733159 13.267399 0.145909 -0.827601 -0.541978 0.554688 0.507813 1 0 1.000000 +0 0.544925 -3.090432 14.071264 0.171484 -0.972686 -0.156285 0.554688 0.539063 1 0 1.000000 +holygrail.tga +0 0.544925 -3.090432 14.071264 0.171484 -0.972686 -0.156285 0.554688 0.539063 1 0 1.000000 +0 -0.544927 -3.090432 14.071264 -0.171484 -0.972686 -0.156285 0.503906 0.539063 1 0 1.000000 +0 -0.481930 -2.733159 13.267399 -0.145909 -0.827601 -0.541978 0.503906 0.507813 1 0 1.000000 +holygrail.tga +0 -1.387662 -2.403499 13.267399 -0.420179 -0.727775 -0.541978 0.449219 0.507813 1 0 1.000000 +0 -0.481930 -2.733159 13.267399 -0.145909 -0.827601 -0.541978 0.503906 0.507813 1 0 1.000000 +0 -0.544927 -3.090432 14.071264 -0.171484 -0.972686 -0.156285 0.503906 0.539063 1 0 1.000000 +holygrail.tga +0 -0.544927 -3.090432 14.071264 -0.171484 -0.972686 -0.156285 0.503906 0.539063 1 0 1.000000 +0 -1.569054 -2.717680 14.071264 -0.493851 -0.855373 -0.156285 0.449219 0.539063 1 0 1.000000 +0 -1.387662 -2.403499 13.267399 -0.420179 -0.727775 -0.541978 0.449219 0.507813 1 0 1.000000 +holygrail.tga +0 -2.126022 -1.783940 13.267399 -0.643757 -0.540178 -0.541978 0.394531 0.507813 1 0 1.000000 +0 -1.387662 -2.403499 13.267399 -0.420179 -0.727775 -0.541978 0.449219 0.507813 1 0 1.000000 +0 -1.569054 -2.717680 14.071264 -0.493851 -0.855373 -0.156285 0.449219 0.539063 1 0 1.000000 +holygrail.tga +0 -1.569054 -2.717680 14.071264 -0.493851 -0.855373 -0.156285 0.449219 0.539063 1 0 1.000000 +0 -2.403931 -2.017134 14.071264 -0.756615 -0.634877 -0.156285 0.394531 0.539063 1 0 1.000000 +0 -2.126022 -1.783940 13.267399 -0.643757 -0.540178 -0.541978 0.394531 0.507813 1 0 1.000000 +holygrail.tga +0 -2.607951 -0.949215 13.267398 -0.789697 -0.287423 -0.541978 0.339844 0.507813 1 0 1.000000 +0 -2.126022 -1.783940 13.267399 -0.643757 -0.540178 -0.541978 0.394531 0.507813 1 0 1.000000 +0 -2.403931 -2.017134 14.071264 -0.756615 -0.634877 -0.156285 0.394531 0.539063 1 0 1.000000 +holygrail.tga +0 -2.403931 -2.017134 14.071264 -0.756615 -0.634877 -0.156285 0.394531 0.539063 1 0 1.000000 +0 -2.948857 -1.073294 14.071262 -0.928129 -0.337809 -0.156285 0.339844 0.539063 1 0 1.000000 +0 -2.607951 -0.949215 13.267398 -0.789697 -0.287423 -0.541978 0.339844 0.507813 1 0 1.000000 +holygrail.tga +0 -2.775322 0.000001 13.267398 -0.840388 0.000000 -0.541978 0.289063 0.507813 1 0 1.000000 +0 -2.607951 -0.949215 13.267398 -0.789697 -0.287423 -0.541978 0.339844 0.507813 1 0 1.000000 +0 -2.948857 -1.073294 14.071262 -0.928129 -0.337809 -0.156285 0.339844 0.539063 1 0 1.000000 +holygrail.tga +0 -2.948857 -1.073294 14.071262 -0.928129 -0.337809 -0.156285 0.339844 0.539063 1 0 1.000000 +0 -3.138107 0.000001 14.071262 -0.987701 0.000000 -0.156285 0.289063 0.539063 1 0 1.000000 +0 -2.775322 0.000001 13.267398 -0.840388 0.000000 -0.541978 0.289063 0.507813 1 0 1.000000 +holygrail.tga +0 -2.607951 0.949216 13.267399 -0.789697 0.287423 -0.541978 0.226563 0.507813 1 0 1.000000 +0 -2.775322 0.000001 13.267398 -0.840388 0.000000 -0.541978 0.289063 0.507813 1 0 1.000000 +0 -3.138107 0.000001 14.071262 -0.987701 0.000000 -0.156285 0.289063 0.539063 1 0 1.000000 +holygrail.tga +0 -3.138107 0.000001 14.071262 -0.987701 0.000000 -0.156285 0.289063 0.539063 1 0 1.000000 +0 -2.948857 1.073296 14.071264 -0.928129 0.337809 -0.156285 0.226563 0.539063 1 0 1.000000 +0 -2.607951 0.949216 13.267399 -0.789697 0.287423 -0.541978 0.226563 0.507813 1 0 1.000000 +holygrail.tga +0 -2.126019 1.783943 13.267401 -0.643757 0.540178 -0.541978 0.171875 0.507813 1 0 1.000000 +0 -2.607951 0.949216 13.267399 -0.789697 0.287423 -0.541978 0.226563 0.507813 1 0 1.000000 +0 -2.948857 1.073296 14.071264 -0.928129 0.337809 -0.156285 0.226563 0.539063 1 0 1.000000 +holygrail.tga +0 -2.948857 1.073296 14.071264 -0.928129 0.337809 -0.156285 0.226563 0.539063 1 0 1.000000 +0 -2.403929 2.017137 14.071265 -0.756615 0.634877 -0.156285 0.171875 0.539063 1 0 1.000000 +0 -2.126019 1.783943 13.267401 -0.643757 0.540178 -0.541978 0.171875 0.507813 1 0 1.000000 +holygrail.tga +0 -1.387659 2.403502 13.267400 -0.420179 0.727775 -0.541978 0.117188 0.507813 1 0 1.000000 +0 -2.126019 1.783943 13.267401 -0.643757 0.540178 -0.541978 0.171875 0.507813 1 0 1.000000 +0 -2.403929 2.017137 14.071265 -0.756615 0.634877 -0.156285 0.171875 0.539063 1 0 1.000000 +holygrail.tga +0 -2.403929 2.017137 14.071265 -0.756615 0.634877 -0.156285 0.171875 0.539063 1 0 1.000000 +0 -1.569052 2.717682 14.071264 -0.493851 0.855373 -0.156285 0.117188 0.539063 1 0 1.000000 +0 -1.387659 2.403502 13.267400 -0.420179 0.727775 -0.541978 0.117188 0.507813 1 0 1.000000 +holygrail.tga +0 -0.481930 2.733161 13.267400 -0.145909 0.827601 -0.541978 0.058594 0.507813 1 0 1.000000 +0 -1.387659 2.403502 13.267400 -0.420179 0.727775 -0.541978 0.117188 0.507813 1 0 1.000000 +0 -1.569052 2.717682 14.071264 -0.493851 0.855373 -0.156285 0.117188 0.539063 1 0 1.000000 +holygrail.tga +0 -1.569052 2.717682 14.071264 -0.493851 0.855373 -0.156285 0.117188 0.539063 1 0 1.000000 +0 -0.544927 3.090433 14.071264 -0.171514 0.972686 -0.156285 0.058594 0.539063 1 0 1.000000 +0 -0.481930 2.733161 13.267400 -0.145909 0.827601 -0.541978 0.058594 0.507813 1 0 1.000000 +holygrail.tga +0 0.481930 2.733161 13.267400 0.145909 0.827601 -0.541978 0.000000 0.507813 1 0 1.000000 +0 -0.481930 2.733161 13.267400 -0.145909 0.827601 -0.541978 0.058594 0.507813 1 0 1.000000 +0 -0.544927 3.090433 14.071264 -0.171514 0.972686 -0.156285 0.058594 0.539063 1 0 1.000000 +holygrail.tga +0 -0.544927 3.090433 14.071264 -0.171514 0.972686 -0.156285 0.058594 0.539063 1 0 1.000000 +0 0.544927 3.090433 14.071264 0.171484 0.972686 -0.156285 0.000000 0.539063 1 0 1.000000 +0 0.481930 2.733161 13.267400 0.145909 0.827601 -0.541978 0.000000 0.507813 1 0 1.000000 +holygrail.tga +0 1.387662 2.403501 13.267400 0.420179 0.727775 -0.541978 0.941406 0.507813 1 0 1.000000 +0 0.481930 2.733161 13.267400 0.145909 0.827601 -0.541978 1.000000 0.507813 1 0 1.000000 +0 0.544927 3.090433 14.071264 0.171484 0.972686 -0.156285 1.000000 0.539063 1 0 1.000000 +holygrail.tga +0 2.126023 1.783943 13.267401 0.643757 0.540178 -0.541978 0.886719 0.507813 1 0 1.000000 +0 1.387662 2.403501 13.267400 0.420179 0.727775 -0.541978 0.941406 0.507813 1 0 1.000000 +0 1.569054 2.717682 14.071264 0.493851 0.855373 -0.156285 0.941406 0.539063 1 0 1.000000 +holygrail.tga +0 1.569054 2.717682 14.071264 0.493851 0.855373 -0.156285 0.941406 0.539063 1 0 1.000000 +0 2.403932 2.017136 14.071265 0.756615 0.634877 -0.156285 0.886719 0.539063 1 0 1.000000 +0 2.126023 1.783943 13.267401 0.643757 0.540178 -0.541978 0.886719 0.507813 1 0 1.000000 +holygrail.tga +0 2.607951 0.949218 13.267399 0.789697 0.287423 -0.541978 0.832031 0.507813 1 0 1.000000 +0 2.126023 1.783943 13.267401 0.643757 0.540178 -0.541978 0.886719 0.507813 1 0 1.000000 +0 2.403932 2.017136 14.071265 0.756615 0.634877 -0.156285 0.886719 0.539063 1 0 1.000000 +holygrail.tga +0 2.403932 2.017136 14.071265 0.756615 0.634877 -0.156285 0.886719 0.539063 1 0 1.000000 +0 2.948858 1.073297 14.071264 0.928129 0.337809 -0.156285 0.832031 0.539063 1 0 1.000000 +0 2.607951 0.949218 13.267399 0.789697 0.287423 -0.541978 0.832031 0.507813 1 0 1.000000 +holygrail.tga +0 1.959057 0.000004 12.374216 0.918821 0.000000 -0.394635 0.773438 0.468750 1 0 1.000000 +0 1.840913 0.670039 12.374216 0.863399 0.314249 -0.394635 0.832031 0.468750 1 0 1.000000 +0 2.607951 0.949218 13.267399 0.789697 0.287423 -0.541978 0.832031 0.507813 1 0 1.000000 +holygrail.tga +0 2.607951 0.949218 13.267399 0.789697 0.287423 -0.541978 0.832031 0.507813 1 0 1.000000 +0 2.775323 0.000004 13.267398 0.840388 0.000000 -0.541978 0.773438 0.507813 1 0 1.000000 +0 1.959057 0.000004 12.374216 0.918821 0.000000 -0.394635 0.773438 0.468750 1 0 1.000000 +holygrail.tga +0 1.840911 -0.670037 12.374216 0.863399 -0.314249 -0.394635 0.726563 0.468750 1 0 1.000000 +0 1.959057 0.000004 12.374216 0.918821 0.000000 -0.394635 0.773438 0.468750 1 0 1.000000 +0 2.775323 0.000004 13.267398 0.840388 0.000000 -0.541978 0.773438 0.507813 1 0 1.000000 +holygrail.tga +0 2.775323 0.000004 13.267398 0.840388 0.000000 -0.541978 0.773438 0.507813 1 0 1.000000 +0 2.607949 -0.949218 13.267398 0.789697 -0.287423 -0.541978 0.726563 0.507813 1 0 1.000000 +0 1.840911 -0.670037 12.374216 0.863399 -0.314249 -0.394635 0.726563 0.468750 1 0 1.000000 +holygrail.tga +0 1.500723 -1.259257 12.374216 0.703848 -0.590594 -0.394635 0.664063 0.468750 1 0 1.000000 +0 1.840911 -0.670037 12.374216 0.863399 -0.314249 -0.394635 0.726563 0.468750 1 0 1.000000 +0 2.607949 -0.949218 13.267398 0.789697 -0.287423 -0.541978 0.726563 0.507813 1 0 1.000000 +holygrail.tga +0 2.607949 -0.949218 13.267398 0.789697 -0.287423 -0.541978 0.726563 0.507813 1 0 1.000000 +0 2.126019 -1.783943 13.267399 0.643757 -0.540178 -0.541978 0.664063 0.507813 1 0 1.000000 +0 1.500723 -1.259257 12.374216 0.703848 -0.590594 -0.394635 0.664063 0.468750 1 0 1.000000 +holygrail.tga +0 0.979526 -1.696594 12.374216 0.459395 -0.795709 -0.394635 0.613281 0.468750 1 0 1.000000 +0 1.500723 -1.259257 12.374216 0.703848 -0.590594 -0.394635 0.664063 0.468750 1 0 1.000000 +0 2.126019 -1.783943 13.267399 0.643757 -0.540178 -0.541978 0.664063 0.507813 1 0 1.000000 +holygrail.tga +0 2.126019 -1.783943 13.267399 0.643757 -0.540178 -0.541978 0.664063 0.507813 1 0 1.000000 +0 1.387658 -2.403501 13.267399 0.420179 -0.727775 -0.541978 0.613281 0.507813 1 0 1.000000 +0 0.979526 -1.696594 12.374216 0.459395 -0.795709 -0.394635 0.613281 0.468750 1 0 1.000000 +holygrail.tga +0 0.340186 -1.929294 12.374216 0.159551 -0.904874 -0.394635 0.554688 0.468750 1 0 1.000000 +0 0.979526 -1.696594 12.374216 0.459395 -0.795709 -0.394635 0.613281 0.468750 1 0 1.000000 +0 1.387658 -2.403501 13.267399 0.420179 -0.727775 -0.541978 0.613281 0.507813 1 0 1.000000 +holygrail.tga +0 1.387658 -2.403501 13.267399 0.420179 -0.727775 -0.541978 0.613281 0.507813 1 0 1.000000 +0 0.481928 -2.733159 13.267399 0.145909 -0.827601 -0.541978 0.554688 0.507813 1 0 1.000000 +0 0.340186 -1.929294 12.374216 0.159551 -0.904874 -0.394635 0.554688 0.468750 1 0 1.000000 +holygrail.tga +0 -0.340186 -1.929294 12.374216 -0.159551 -0.904874 -0.394635 0.503906 0.468750 1 0 1.000000 +0 0.340186 -1.929294 12.374216 0.159551 -0.904874 -0.394635 0.554688 0.468750 1 0 1.000000 +0 0.481928 -2.733159 13.267399 0.145909 -0.827601 -0.541978 0.554688 0.507813 1 0 1.000000 +holygrail.tga +0 0.481928 -2.733159 13.267399 0.145909 -0.827601 -0.541978 0.554688 0.507813 1 0 1.000000 +0 -0.481930 -2.733159 13.267399 -0.145909 -0.827601 -0.541978 0.503906 0.507813 1 0 1.000000 +0 -0.340186 -1.929294 12.374216 -0.159551 -0.904874 -0.394635 0.503906 0.468750 1 0 1.000000 +holygrail.tga +0 -0.979529 -1.696592 12.374216 -0.459395 -0.795709 -0.394635 0.449219 0.468750 1 0 1.000000 +0 -0.340186 -1.929294 12.374216 -0.159551 -0.904874 -0.394635 0.503906 0.468750 1 0 1.000000 +0 -0.481930 -2.733159 13.267399 -0.145909 -0.827601 -0.541978 0.503906 0.507813 1 0 1.000000 +holygrail.tga +0 -0.481930 -2.733159 13.267399 -0.145909 -0.827601 -0.541978 0.503906 0.507813 1 0 1.000000 +0 -1.387662 -2.403499 13.267399 -0.420179 -0.727775 -0.541978 0.449219 0.507813 1 0 1.000000 +0 -0.979529 -1.696592 12.374216 -0.459395 -0.795709 -0.394635 0.449219 0.468750 1 0 1.000000 +holygrail.tga +0 -1.500727 -1.259255 12.374216 -0.703848 -0.590594 -0.394635 0.394531 0.468750 1 0 1.000000 +0 -0.979529 -1.696592 12.374216 -0.459395 -0.795709 -0.394635 0.449219 0.468750 1 0 1.000000 +0 -1.387662 -2.403499 13.267399 -0.420179 -0.727775 -0.541978 0.449219 0.507813 1 0 1.000000 +holygrail.tga +0 -1.387662 -2.403499 13.267399 -0.420179 -0.727775 -0.541978 0.449219 0.507813 1 0 1.000000 +0 -2.126022 -1.783940 13.267399 -0.643757 -0.540178 -0.541978 0.394531 0.507813 1 0 1.000000 +0 -1.500727 -1.259255 12.374216 -0.703848 -0.590594 -0.394635 0.394531 0.468750 1 0 1.000000 +holygrail.tga +0 -1.840912 -0.670036 12.374216 -0.863399 -0.314249 -0.394635 0.339844 0.468750 1 0 1.000000 +0 -1.500727 -1.259255 12.374216 -0.703848 -0.590594 -0.394635 0.394531 0.468750 1 0 1.000000 +0 -2.126022 -1.783940 13.267399 -0.643757 -0.540178 -0.541978 0.394531 0.507813 1 0 1.000000 +holygrail.tga +0 -2.126022 -1.783940 13.267399 -0.643757 -0.540178 -0.541978 0.394531 0.507813 1 0 1.000000 +0 -2.607951 -0.949215 13.267398 -0.789697 -0.287423 -0.541978 0.339844 0.507813 1 0 1.000000 +0 -1.840912 -0.670036 12.374216 -0.863399 -0.314249 -0.394635 0.339844 0.468750 1 0 1.000000 +holygrail.tga +0 -1.959057 0.000001 12.374216 -0.918821 0.000000 -0.394635 0.289063 0.468750 1 0 1.000000 +0 -1.840912 -0.670036 12.374216 -0.863399 -0.314249 -0.394635 0.339844 0.468750 1 0 1.000000 +0 -2.607951 -0.949215 13.267398 -0.789697 -0.287423 -0.541978 0.339844 0.507813 1 0 1.000000 +holygrail.tga +0 -2.607951 -0.949215 13.267398 -0.789697 -0.287423 -0.541978 0.339844 0.507813 1 0 1.000000 +0 -2.775322 0.000001 13.267398 -0.840388 0.000000 -0.541978 0.289063 0.507813 1 0 1.000000 +0 -1.959057 0.000001 12.374216 -0.918821 0.000000 -0.394635 0.289063 0.468750 1 0 1.000000 +holygrail.tga +0 -1.840912 0.670037 12.374216 -0.863399 0.314249 -0.394635 0.226563 0.468750 1 0 1.000000 +0 -1.959057 0.000001 12.374216 -0.918821 0.000000 -0.394635 0.289063 0.468750 1 0 1.000000 +0 -2.775322 0.000001 13.267398 -0.840388 0.000000 -0.541978 0.289063 0.507813 1 0 1.000000 +holygrail.tga +0 -2.775322 0.000001 13.267398 -0.840388 0.000000 -0.541978 0.289063 0.507813 1 0 1.000000 +0 -2.607951 0.949216 13.267399 -0.789697 0.287423 -0.541978 0.226563 0.507813 1 0 1.000000 +0 -1.840912 0.670037 12.374216 -0.863399 0.314249 -0.394635 0.226563 0.468750 1 0 1.000000 +holygrail.tga +0 -1.500724 1.259258 12.374218 -0.703848 0.590594 -0.394635 0.171875 0.468750 1 0 1.000000 +0 -1.840912 0.670037 12.374216 -0.863399 0.314249 -0.394635 0.226563 0.468750 1 0 1.000000 +0 -2.607951 0.949216 13.267399 -0.789697 0.287423 -0.541978 0.226563 0.507813 1 0 1.000000 +holygrail.tga +0 -2.607951 0.949216 13.267399 -0.789697 0.287423 -0.541978 0.226563 0.507813 1 0 1.000000 +0 -2.126019 1.783943 13.267401 -0.643757 0.540178 -0.541978 0.171875 0.507813 1 0 1.000000 +0 -1.500724 1.259258 12.374218 -0.703848 0.590594 -0.394635 0.171875 0.468750 1 0 1.000000 +holygrail.tga +0 -0.979526 1.696596 12.374216 -0.459395 0.795709 -0.394635 0.117188 0.468750 1 0 1.000000 +0 -1.500724 1.259258 12.374218 -0.703848 0.590594 -0.394635 0.171875 0.468750 1 0 1.000000 +0 -2.126019 1.783943 13.267401 -0.643757 0.540178 -0.541978 0.171875 0.507813 1 0 1.000000 +holygrail.tga +0 -2.126019 1.783943 13.267401 -0.643757 0.540178 -0.541978 0.171875 0.507813 1 0 1.000000 +0 -1.387659 2.403502 13.267400 -0.420179 0.727775 -0.541978 0.117188 0.507813 1 0 1.000000 +0 -0.979526 1.696596 12.374216 -0.459395 0.795709 -0.394635 0.117188 0.468750 1 0 1.000000 +holygrail.tga +0 -0.340187 1.929296 12.374216 -0.159551 0.904874 -0.394635 0.058594 0.468750 1 0 1.000000 +0 -0.979526 1.696596 12.374216 -0.459395 0.795709 -0.394635 0.117188 0.468750 1 0 1.000000 +0 -1.387659 2.403502 13.267400 -0.420179 0.727775 -0.541978 0.117188 0.507813 1 0 1.000000 +holygrail.tga +0 -1.387659 2.403502 13.267400 -0.420179 0.727775 -0.541978 0.117188 0.507813 1 0 1.000000 +0 -0.481930 2.733161 13.267400 -0.145909 0.827601 -0.541978 0.058594 0.507813 1 0 1.000000 +0 -0.340187 1.929296 12.374216 -0.159551 0.904874 -0.394635 0.058594 0.468750 1 0 1.000000 +holygrail.tga +0 0.340187 1.929296 12.374216 0.159551 0.904874 -0.394635 0.000000 0.468750 1 0 1.000000 +0 -0.340187 1.929296 12.374216 -0.159551 0.904874 -0.394635 0.058594 0.468750 1 0 1.000000 +0 -0.481930 2.733161 13.267400 -0.145909 0.827601 -0.541978 0.058594 0.507813 1 0 1.000000 +holygrail.tga +0 -0.481930 2.733161 13.267400 -0.145909 0.827601 -0.541978 0.058594 0.507813 1 0 1.000000 +0 0.481930 2.733161 13.267400 0.145909 0.827601 -0.541978 0.000000 0.507813 1 0 1.000000 +0 0.340187 1.929296 12.374216 0.159551 0.904874 -0.394635 0.000000 0.468750 1 0 1.000000 +holygrail.tga +0 0.979529 1.696595 12.374216 0.459395 0.795709 -0.394635 0.941406 0.468750 1 0 1.000000 +0 0.340187 1.929296 12.374216 0.159551 0.904874 -0.394635 1.000000 0.468750 1 0 1.000000 +0 0.481930 2.733161 13.267400 0.145909 0.827601 -0.541978 1.000000 0.507813 1 0 1.000000 +holygrail.tga +0 0.481930 2.733161 13.267400 0.145909 0.827601 -0.541978 1.000000 0.507813 1 0 1.000000 +0 1.387662 2.403501 13.267400 0.420179 0.727775 -0.541978 0.941406 0.507813 1 0 1.000000 +0 0.979529 1.696595 12.374216 0.459395 0.795709 -0.394635 0.941406 0.468750 1 0 1.000000 +holygrail.tga +0 1.500727 1.259258 12.374218 0.703848 0.590594 -0.394635 0.886719 0.468750 1 0 1.000000 +0 0.979529 1.696595 12.374216 0.459395 0.795709 -0.394635 0.941406 0.468750 1 0 1.000000 +0 1.387662 2.403501 13.267400 0.420179 0.727775 -0.541978 0.941406 0.507813 1 0 1.000000 +holygrail.tga +0 1.387662 2.403501 13.267400 0.420179 0.727775 -0.541978 0.941406 0.507813 1 0 1.000000 +0 2.126023 1.783943 13.267401 0.643757 0.540178 -0.541978 0.886719 0.507813 1 0 1.000000 +0 1.500727 1.259258 12.374218 0.703848 0.590594 -0.394635 0.886719 0.468750 1 0 1.000000 +holygrail.tga +0 1.840913 0.670039 12.374216 0.863399 0.314249 -0.394635 0.832031 0.468750 1 0 1.000000 +0 1.500727 1.259258 12.374218 0.703848 0.590594 -0.394635 0.886719 0.468750 1 0 1.000000 +0 2.126023 1.783943 13.267401 0.643757 0.540178 -0.541978 0.886719 0.507813 1 0 1.000000 +holygrail.tga +0 2.126023 1.783943 13.267401 0.643757 0.540178 -0.541978 0.886719 0.507813 1 0 1.000000 +0 2.607951 0.949218 13.267399 0.789697 0.287423 -0.541978 0.832031 0.507813 1 0 1.000000 +0 1.840913 0.670039 12.374216 0.863399 0.314249 -0.394635 0.832031 0.468750 1 0 1.000000 +holygrail.tga +0 1.777665 0.000005 7.896642 0.923429 0.000000 0.383679 0.773438 0.300781 1 0 1.000000 +0 1.670460 0.607999 7.896643 0.867763 0.315836 0.383679 0.832031 0.300781 1 0 1.000000 +0 1.840913 0.670039 12.374216 0.863399 0.314249 -0.394635 0.832031 0.468750 1 0 1.000000 +holygrail.tga +0 1.840913 0.670039 12.374216 0.863399 0.314249 -0.394635 0.832031 0.468750 1 0 1.000000 +0 1.959057 0.000004 12.374216 0.918821 0.000000 -0.394635 0.773438 0.468750 1 0 1.000000 +0 1.777665 0.000005 7.896642 0.923429 0.000000 0.383679 0.773438 0.300781 1 0 1.000000 +holygrail.tga +0 1.670458 -0.607997 7.896642 0.867733 -0.315836 0.383679 0.726563 0.300781 1 0 1.000000 +0 1.777665 0.000005 7.896642 0.923429 0.000000 0.383679 0.773438 0.300781 1 0 1.000000 +0 1.959057 0.000004 12.374216 0.918821 0.000000 -0.394635 0.773438 0.468750 1 0 1.000000 +holygrail.tga +0 1.959057 0.000004 12.374216 0.918821 0.000000 -0.394635 0.773438 0.468750 1 0 1.000000 +0 1.840911 -0.670037 12.374216 0.863399 -0.314249 -0.394635 0.726563 0.468750 1 0 1.000000 +0 1.670458 -0.607997 7.896642 0.867733 -0.315836 0.383679 0.726563 0.300781 1 0 1.000000 +holygrail.tga +0 1.361769 -1.142660 7.896643 0.707389 -0.593585 0.383679 0.664063 0.300781 1 0 1.000000 +0 1.670458 -0.607997 7.896642 0.867733 -0.315836 0.383679 0.726563 0.300781 1 0 1.000000 +0 1.840911 -0.670037 12.374216 0.863399 -0.314249 -0.394635 0.726563 0.468750 1 0 1.000000 +holygrail.tga +0 1.840911 -0.670037 12.374216 0.863399 -0.314249 -0.394635 0.726563 0.468750 1 0 1.000000 +0 1.500723 -1.259257 12.374216 0.703848 -0.590594 -0.394635 0.664063 0.468750 1 0 1.000000 +0 1.361769 -1.142660 7.896643 0.707389 -0.593585 0.383679 0.664063 0.300781 1 0 1.000000 +holygrail.tga +0 0.888830 -1.539503 7.896643 0.461715 -0.799707 0.383679 0.613281 0.300781 1 0 1.000000 +0 1.361769 -1.142660 7.896643 0.707389 -0.593585 0.383679 0.664063 0.300781 1 0 1.000000 +0 1.500723 -1.259257 12.374216 0.703848 -0.590594 -0.394635 0.664063 0.468750 1 0 1.000000 +holygrail.tga +0 1.500723 -1.259257 12.374216 0.703848 -0.590594 -0.394635 0.664063 0.468750 1 0 1.000000 +0 0.979526 -1.696594 12.374216 0.459395 -0.795709 -0.394635 0.613281 0.468750 1 0 1.000000 +0 0.888830 -1.539503 7.896643 0.461715 -0.799707 0.383679 0.613281 0.300781 1 0 1.000000 +holygrail.tga +0 0.308687 -1.750657 7.896643 0.160344 -0.909421 0.383679 0.554688 0.300781 1 0 1.000000 +0 0.888830 -1.539503 7.896643 0.461715 -0.799707 0.383679 0.613281 0.300781 1 0 1.000000 +0 0.979526 -1.696594 12.374216 0.459395 -0.795709 -0.394635 0.613281 0.468750 1 0 1.000000 +holygrail.tga +0 0.979526 -1.696594 12.374216 0.459395 -0.795709 -0.394635 0.613281 0.468750 1 0 1.000000 +0 0.340186 -1.929294 12.374216 0.159551 -0.904874 -0.394635 0.554688 0.468750 1 0 1.000000 +0 0.308687 -1.750657 7.896643 0.160344 -0.909421 0.383679 0.554688 0.300781 1 0 1.000000 +holygrail.tga +0 -0.308688 -1.750657 7.896643 -0.160344 -0.909421 0.383679 0.503906 0.300781 1 0 1.000000 +0 0.308687 -1.750657 7.896643 0.160344 -0.909421 0.383679 0.554688 0.300781 1 0 1.000000 +0 0.340186 -1.929294 12.374216 0.159551 -0.904874 -0.394635 0.554688 0.468750 1 0 1.000000 +holygrail.tga +0 0.340186 -1.929294 12.374216 0.159551 -0.904874 -0.394635 0.554688 0.468750 1 0 1.000000 +0 -0.340186 -1.929294 12.374216 -0.159551 -0.904874 -0.394635 0.503906 0.468750 1 0 1.000000 +0 -0.308688 -1.750657 7.896643 -0.160344 -0.909421 0.383679 0.503906 0.300781 1 0 1.000000 +holygrail.tga +0 -0.888833 -1.539501 7.896643 -0.461715 -0.799707 0.383679 0.449219 0.300781 1 0 1.000000 +0 -0.308688 -1.750657 7.896643 -0.160344 -0.909421 0.383679 0.503906 0.300781 1 0 1.000000 +0 -0.340186 -1.929294 12.374216 -0.159551 -0.904874 -0.394635 0.503906 0.468750 1 0 1.000000 +holygrail.tga +0 -0.340186 -1.929294 12.374216 -0.159551 -0.904874 -0.394635 0.503906 0.468750 1 0 1.000000 +0 -0.979529 -1.696592 12.374216 -0.459395 -0.795709 -0.394635 0.449219 0.468750 1 0 1.000000 +0 -0.888833 -1.539501 7.896643 -0.461715 -0.799707 0.383679 0.449219 0.300781 1 0 1.000000 +holygrail.tga +0 -1.361772 -1.142658 7.896643 -0.707389 -0.593585 0.383679 0.394531 0.300781 1 0 1.000000 +0 -0.888833 -1.539501 7.896643 -0.461715 -0.799707 0.383679 0.449219 0.300781 1 0 1.000000 +0 -0.979529 -1.696592 12.374216 -0.459395 -0.795709 -0.394635 0.449219 0.468750 1 0 1.000000 +holygrail.tga +0 -0.979529 -1.696592 12.374216 -0.459395 -0.795709 -0.394635 0.449219 0.468750 1 0 1.000000 +0 -1.500727 -1.259255 12.374216 -0.703848 -0.590594 -0.394635 0.394531 0.468750 1 0 1.000000 +0 -1.361772 -1.142658 7.896643 -0.707389 -0.593585 0.383679 0.394531 0.300781 1 0 1.000000 +holygrail.tga +0 -1.670460 -0.607996 7.896642 -0.867763 -0.315836 0.383679 0.339844 0.300781 1 0 1.000000 +0 -1.361772 -1.142658 7.896643 -0.707389 -0.593585 0.383679 0.394531 0.300781 1 0 1.000000 +0 -1.500727 -1.259255 12.374216 -0.703848 -0.590594 -0.394635 0.394531 0.468750 1 0 1.000000 +holygrail.tga +0 -1.500727 -1.259255 12.374216 -0.703848 -0.590594 -0.394635 0.394531 0.468750 1 0 1.000000 +0 -1.840912 -0.670036 12.374216 -0.863399 -0.314249 -0.394635 0.339844 0.468750 1 0 1.000000 +0 -1.670460 -0.607996 7.896642 -0.867763 -0.315836 0.383679 0.339844 0.300781 1 0 1.000000 +holygrail.tga +0 -1.777665 0.000001 7.896642 -0.923429 0.000000 0.383679 0.289063 0.300781 1 0 1.000000 +0 -1.670460 -0.607996 7.896642 -0.867763 -0.315836 0.383679 0.339844 0.300781 1 0 1.000000 +0 -1.840912 -0.670036 12.374216 -0.863399 -0.314249 -0.394635 0.339844 0.468750 1 0 1.000000 +holygrail.tga +0 -1.840912 -0.670036 12.374216 -0.863399 -0.314249 -0.394635 0.339844 0.468750 1 0 1.000000 +0 -1.959057 0.000001 12.374216 -0.918821 0.000000 -0.394635 0.289063 0.468750 1 0 1.000000 +0 -1.777665 0.000001 7.896642 -0.923429 0.000000 0.383679 0.289063 0.300781 1 0 1.000000 +holygrail.tga +0 -1.670459 0.607998 7.896643 -0.867763 0.315836 0.383679 0.226563 0.300781 1 0 1.000000 +0 -1.777665 0.000001 7.896642 -0.923429 0.000000 0.383679 0.289063 0.300781 1 0 1.000000 +0 -1.959057 0.000001 12.374216 -0.918821 0.000000 -0.394635 0.289063 0.468750 1 0 1.000000 +holygrail.tga +0 -1.959057 0.000001 12.374216 -0.918821 0.000000 -0.394635 0.289063 0.468750 1 0 1.000000 +0 -1.840912 0.670037 12.374216 -0.863399 0.314249 -0.394635 0.226563 0.468750 1 0 1.000000 +0 -1.670459 0.607998 7.896643 -0.867763 0.315836 0.383679 0.226563 0.300781 1 0 1.000000 +holygrail.tga +0 -1.361770 1.142662 7.896644 -0.707389 0.593585 0.383679 0.171875 0.300781 1 0 1.000000 +0 -1.670459 0.607998 7.896643 -0.867763 0.315836 0.383679 0.226563 0.300781 1 0 1.000000 +0 -1.840912 0.670037 12.374216 -0.863399 0.314249 -0.394635 0.226563 0.468750 1 0 1.000000 +holygrail.tga +0 -1.840912 0.670037 12.374216 -0.863399 0.314249 -0.394635 0.226563 0.468750 1 0 1.000000 +0 -1.500724 1.259258 12.374218 -0.703848 0.590594 -0.394635 0.171875 0.468750 1 0 1.000000 +0 -1.361770 1.142662 7.896644 -0.707389 0.593585 0.383679 0.171875 0.300781 1 0 1.000000 +holygrail.tga +0 -0.888830 1.539506 7.896644 -0.461715 0.799707 0.383679 0.117188 0.300781 1 0 1.000000 +0 -1.361770 1.142662 7.896644 -0.707389 0.593585 0.383679 0.171875 0.300781 1 0 1.000000 +0 -1.500724 1.259258 12.374218 -0.703848 0.590594 -0.394635 0.171875 0.468750 1 0 1.000000 +holygrail.tga +0 -1.500724 1.259258 12.374218 -0.703848 0.590594 -0.394635 0.171875 0.468750 1 0 1.000000 +0 -0.979526 1.696596 12.374216 -0.459395 0.795709 -0.394635 0.117188 0.468750 1 0 1.000000 +0 -0.888830 1.539506 7.896644 -0.461715 0.799707 0.383679 0.117188 0.300781 1 0 1.000000 +holygrail.tga +0 -0.308688 1.750661 7.896644 -0.160344 0.909421 0.383679 0.058594 0.300781 1 0 1.000000 +0 -0.888830 1.539506 7.896644 -0.461715 0.799707 0.383679 0.117188 0.300781 1 0 1.000000 +0 -0.979526 1.696596 12.374216 -0.459395 0.795709 -0.394635 0.117188 0.468750 1 0 1.000000 +holygrail.tga +0 -0.979526 1.696596 12.374216 -0.459395 0.795709 -0.394635 0.117188 0.468750 1 0 1.000000 +0 -0.340187 1.929296 12.374216 -0.159551 0.904874 -0.394635 0.058594 0.468750 1 0 1.000000 +0 -0.308688 1.750661 7.896644 -0.160344 0.909421 0.383679 0.058594 0.300781 1 0 1.000000 +holygrail.tga +0 0.308688 1.750661 7.896644 0.160344 0.909421 0.383679 0.000000 0.300781 1 0 1.000000 +0 -0.308688 1.750661 7.896644 -0.160344 0.909421 0.383679 0.058594 0.300781 1 0 1.000000 +0 -0.340187 1.929296 12.374216 -0.159551 0.904874 -0.394635 0.058594 0.468750 1 0 1.000000 +holygrail.tga +0 -0.340187 1.929296 12.374216 -0.159551 0.904874 -0.394635 0.058594 0.468750 1 0 1.000000 +0 0.340187 1.929296 12.374216 0.159551 0.904874 -0.394635 0.000000 0.468750 1 0 1.000000 +0 0.308688 1.750661 7.896644 0.160344 0.909421 0.383679 0.000000 0.300781 1 0 1.000000 +holygrail.tga +0 0.888833 1.539505 7.896644 0.461715 0.799707 0.383679 0.941406 0.300781 1 0 1.000000 +0 0.308688 1.750661 7.896644 0.160344 0.909421 0.383679 1.000000 0.300781 1 0 1.000000 +0 0.340187 1.929296 12.374216 0.159551 0.904874 -0.394635 1.000000 0.468750 1 0 1.000000 +holygrail.tga +0 0.340187 1.929296 12.374216 0.159551 0.904874 -0.394635 1.000000 0.468750 1 0 1.000000 +0 0.979529 1.696595 12.374216 0.459395 0.795709 -0.394635 0.941406 0.468750 1 0 1.000000 +0 0.888833 1.539505 7.896644 0.461715 0.799707 0.383679 0.941406 0.300781 1 0 1.000000 +holygrail.tga +0 1.361772 1.142662 7.896644 0.707389 0.593554 0.383679 0.886719 0.300781 1 0 1.000000 +0 0.888833 1.539505 7.896644 0.461715 0.799707 0.383679 0.941406 0.300781 1 0 1.000000 +0 0.979529 1.696595 12.374216 0.459395 0.795709 -0.394635 0.941406 0.468750 1 0 1.000000 +holygrail.tga +0 0.979529 1.696595 12.374216 0.459395 0.795709 -0.394635 0.941406 0.468750 1 0 1.000000 +0 1.500727 1.259258 12.374218 0.703848 0.590594 -0.394635 0.886719 0.468750 1 0 1.000000 +0 1.361772 1.142662 7.896644 0.707389 0.593554 0.383679 0.886719 0.300781 1 0 1.000000 +holygrail.tga +0 1.670460 0.607999 7.896643 0.867763 0.315836 0.383679 0.832031 0.300781 1 0 1.000000 +0 1.361772 1.142662 7.896644 0.707389 0.593554 0.383679 0.886719 0.300781 1 0 1.000000 +0 1.500727 1.259258 12.374218 0.703848 0.590594 -0.394635 0.886719 0.468750 1 0 1.000000 +holygrail.tga +0 1.500727 1.259258 12.374218 0.703848 0.590594 -0.394635 0.886719 0.468750 1 0 1.000000 +0 1.840913 0.670039 12.374216 0.863399 0.314249 -0.394635 0.832031 0.468750 1 0 1.000000 +0 1.670460 0.607999 7.896643 0.867763 0.315836 0.383679 0.832031 0.300781 1 0 1.000000 +holygrail.tga +0 2.140450 0.000005 7.539369 0.975707 0.000000 0.219001 0.773438 0.285156 1 0 1.000000 +0 2.011366 0.732079 7.539370 0.916868 0.333689 0.219001 0.832031 0.285156 1 0 1.000000 +0 1.670460 0.607999 7.896643 0.867763 0.315836 0.383679 0.832031 0.300781 1 0 1.000000 +holygrail.tga +0 1.670460 0.607999 7.896643 0.867763 0.315836 0.383679 0.832031 0.300781 1 0 1.000000 +0 1.777665 0.000005 7.896642 0.923429 0.000000 0.383679 0.773438 0.300781 1 0 1.000000 +0 2.140450 0.000005 7.539369 0.975707 0.000000 0.219001 0.773438 0.285156 1 0 1.000000 +holygrail.tga +0 2.011364 -0.732077 7.539369 0.916868 -0.333689 0.219001 0.726563 0.285156 1 0 1.000000 +0 2.140450 0.000005 7.539369 0.975707 0.000000 0.219001 0.773438 0.285156 1 0 1.000000 +0 1.777665 0.000005 7.896642 0.923429 0.000000 0.383679 0.773438 0.300781 1 0 1.000000 +holygrail.tga +0 1.777665 0.000005 7.896642 0.923429 0.000000 0.383679 0.773438 0.300781 1 0 1.000000 +0 1.670458 -0.607997 7.896642 0.867733 -0.315836 0.383679 0.726563 0.300781 1 0 1.000000 +0 2.011364 -0.732077 7.539369 0.916868 -0.333689 0.219001 0.726563 0.285156 1 0 1.000000 +holygrail.tga +0 1.639678 -1.375854 7.539370 0.747429 -0.627155 0.219001 0.664063 0.285156 1 0 1.000000 +0 2.011364 -0.732077 7.539369 0.916868 -0.333689 0.219001 0.726563 0.285156 1 0 1.000000 +0 1.670458 -0.607997 7.896642 0.867733 -0.315836 0.383679 0.726563 0.300781 1 0 1.000000 +holygrail.tga +0 1.670458 -0.607997 7.896642 0.867733 -0.315836 0.383679 0.726563 0.300781 1 0 1.000000 +0 1.361769 -1.142660 7.896643 0.707389 -0.593585 0.383679 0.664063 0.300781 1 0 1.000000 +0 1.639678 -1.375854 7.539370 0.747429 -0.627155 0.219001 0.664063 0.285156 1 0 1.000000 +holygrail.tga +0 1.070222 -1.853684 7.539370 0.487838 -0.844997 0.219001 0.613281 0.285156 1 0 1.000000 +0 1.639678 -1.375854 7.539370 0.747429 -0.627155 0.219001 0.664063 0.285156 1 0 1.000000 +0 1.361769 -1.142660 7.896643 0.707389 -0.593585 0.383679 0.664063 0.300781 1 0 1.000000 +holygrail.tga +0 1.361769 -1.142660 7.896643 0.707389 -0.593585 0.383679 0.664063 0.300781 1 0 1.000000 +0 0.888830 -1.539503 7.896643 0.461715 -0.799707 0.383679 0.613281 0.300781 1 0 1.000000 +0 1.070222 -1.853684 7.539370 0.487838 -0.844997 0.219001 0.613281 0.285156 1 0 1.000000 +holygrail.tga +0 0.371684 -2.107931 7.539370 0.169408 -0.960875 0.219001 0.554688 0.285156 1 0 1.000000 +0 1.070222 -1.853684 7.539370 0.487838 -0.844997 0.219001 0.613281 0.285156 1 0 1.000000 +0 0.888830 -1.539503 7.896643 0.461715 -0.799707 0.383679 0.613281 0.300781 1 0 1.000000 +holygrail.tga +0 0.888830 -1.539503 7.896643 0.461715 -0.799707 0.383679 0.613281 0.300781 1 0 1.000000 +0 0.308687 -1.750657 7.896643 0.160344 -0.909421 0.383679 0.554688 0.300781 1 0 1.000000 +0 0.371684 -2.107931 7.539370 0.169408 -0.960875 0.219001 0.554688 0.285156 1 0 1.000000 +holygrail.tga +0 -0.371685 -2.107930 7.539370 -0.169408 -0.960875 0.219001 0.503906 0.285156 1 0 1.000000 +0 0.371684 -2.107931 7.539370 0.169408 -0.960875 0.219001 0.554688 0.285156 1 0 1.000000 +0 0.308687 -1.750657 7.896643 0.160344 -0.909421 0.383679 0.554688 0.300781 1 0 1.000000 +holygrail.tga +0 0.308687 -1.750657 7.896643 0.160344 -0.909421 0.383679 0.554688 0.300781 1 0 1.000000 +0 -0.308688 -1.750657 7.896643 -0.160344 -0.909421 0.383679 0.503906 0.300781 1 0 1.000000 +0 -0.371685 -2.107930 7.539370 -0.169408 -0.960875 0.219001 0.503906 0.285156 1 0 1.000000 +holygrail.tga +0 -1.070225 -1.853682 7.539370 -0.487838 -0.844997 0.219001 0.449219 0.285156 1 0 1.000000 +0 -0.371685 -2.107930 7.539370 -0.169408 -0.960875 0.219001 0.503906 0.285156 1 0 1.000000 +0 -0.308688 -1.750657 7.896643 -0.160344 -0.909421 0.383679 0.503906 0.300781 1 0 1.000000 +holygrail.tga +0 -0.308688 -1.750657 7.896643 -0.160344 -0.909421 0.383679 0.503906 0.300781 1 0 1.000000 +0 -0.888833 -1.539501 7.896643 -0.461715 -0.799707 0.383679 0.449219 0.300781 1 0 1.000000 +0 -1.070225 -1.853682 7.539370 -0.487838 -0.844997 0.219001 0.449219 0.285156 1 0 1.000000 +holygrail.tga +0 -1.639682 -1.375851 7.539370 -0.747429 -0.627155 0.219001 0.394531 0.285156 1 0 1.000000 +0 -1.070225 -1.853682 7.539370 -0.487838 -0.844997 0.219001 0.449219 0.285156 1 0 1.000000 +0 -0.888833 -1.539501 7.896643 -0.461715 -0.799707 0.383679 0.449219 0.300781 1 0 1.000000 +holygrail.tga +0 -0.888833 -1.539501 7.896643 -0.461715 -0.799707 0.383679 0.449219 0.300781 1 0 1.000000 +0 -1.361772 -1.142658 7.896643 -0.707389 -0.593585 0.383679 0.394531 0.300781 1 0 1.000000 +0 -1.639682 -1.375851 7.539370 -0.747429 -0.627155 0.219001 0.394531 0.285156 1 0 1.000000 +holygrail.tga +0 -2.011366 -0.732075 7.539369 -0.916868 -0.333689 0.219001 0.339844 0.285156 1 0 1.000000 +0 -1.639682 -1.375851 7.539370 -0.747429 -0.627155 0.219001 0.394531 0.285156 1 0 1.000000 +0 -1.361772 -1.142658 7.896643 -0.707389 -0.593585 0.383679 0.394531 0.300781 1 0 1.000000 +holygrail.tga +0 -1.361772 -1.142658 7.896643 -0.707389 -0.593585 0.383679 0.394531 0.300781 1 0 1.000000 +0 -1.670460 -0.607996 7.896642 -0.867763 -0.315836 0.383679 0.339844 0.300781 1 0 1.000000 +0 -2.011366 -0.732075 7.539369 -0.916868 -0.333689 0.219001 0.339844 0.285156 1 0 1.000000 +holygrail.tga +0 -2.140450 0.000001 7.539369 -0.975707 0.000000 0.219001 0.289063 0.285156 1 0 1.000000 +0 -2.011366 -0.732075 7.539369 -0.916868 -0.333689 0.219001 0.339844 0.285156 1 0 1.000000 +0 -1.670460 -0.607996 7.896642 -0.867763 -0.315836 0.383679 0.339844 0.300781 1 0 1.000000 +holygrail.tga +0 -1.670460 -0.607996 7.896642 -0.867763 -0.315836 0.383679 0.339844 0.300781 1 0 1.000000 +0 -1.777665 0.000001 7.896642 -0.923429 0.000000 0.383679 0.289063 0.300781 1 0 1.000000 +0 -2.140450 0.000001 7.539369 -0.975707 0.000000 0.219001 0.289063 0.285156 1 0 1.000000 +holygrail.tga +0 -2.011365 0.732077 7.539370 -0.916868 0.333689 0.219001 0.226563 0.285156 1 0 1.000000 +0 -2.140450 0.000001 7.539369 -0.975707 0.000000 0.219001 0.289063 0.285156 1 0 1.000000 +0 -1.777665 0.000001 7.896642 -0.923429 0.000000 0.383679 0.289063 0.300781 1 0 1.000000 +holygrail.tga +0 -1.777665 0.000001 7.896642 -0.923429 0.000000 0.383679 0.289063 0.300781 1 0 1.000000 +0 -1.670459 0.607998 7.896643 -0.867763 0.315836 0.383679 0.226563 0.300781 1 0 1.000000 +0 -2.011365 0.732077 7.539370 -0.916868 0.333689 0.219001 0.226563 0.285156 1 0 1.000000 +holygrail.tga +0 -1.639679 1.375856 7.539371 -0.747429 0.627155 0.219001 0.171875 0.285156 1 0 1.000000 +0 -2.011365 0.732077 7.539370 -0.916868 0.333689 0.219001 0.226563 0.285156 1 0 1.000000 +0 -1.670459 0.607998 7.896643 -0.867763 0.315836 0.383679 0.226563 0.300781 1 0 1.000000 +holygrail.tga +0 -1.670459 0.607998 7.896643 -0.867763 0.315836 0.383679 0.226563 0.300781 1 0 1.000000 +0 -1.361770 1.142662 7.896644 -0.707389 0.593585 0.383679 0.171875 0.300781 1 0 1.000000 +0 -1.639679 1.375856 7.539371 -0.747429 0.627155 0.219001 0.171875 0.285156 1 0 1.000000 +holygrail.tga +0 -1.070222 1.853687 7.539371 -0.487838 0.844997 0.219001 0.117188 0.285156 1 0 1.000000 +0 -1.639679 1.375856 7.539371 -0.747429 0.627155 0.219001 0.171875 0.285156 1 0 1.000000 +0 -1.361770 1.142662 7.896644 -0.707389 0.593585 0.383679 0.171875 0.300781 1 0 1.000000 +holygrail.tga +0 -1.361770 1.142662 7.896644 -0.707389 0.593585 0.383679 0.171875 0.300781 1 0 1.000000 +0 -0.888830 1.539506 7.896644 -0.461715 0.799707 0.383679 0.117188 0.300781 1 0 1.000000 +0 -1.070222 1.853687 7.539371 -0.487838 0.844997 0.219001 0.117188 0.285156 1 0 1.000000 +holygrail.tga +0 -0.371685 2.107934 7.539371 -0.169408 0.960875 0.219001 0.058594 0.285156 1 0 1.000000 +0 -1.070222 1.853687 7.539371 -0.487838 0.844997 0.219001 0.117188 0.285156 1 0 1.000000 +0 -0.888830 1.539506 7.896644 -0.461715 0.799707 0.383679 0.117188 0.300781 1 0 1.000000 +holygrail.tga +0 -0.888830 1.539506 7.896644 -0.461715 0.799707 0.383679 0.117188 0.300781 1 0 1.000000 +0 -0.308688 1.750661 7.896644 -0.160344 0.909421 0.383679 0.058594 0.300781 1 0 1.000000 +0 -0.371685 2.107934 7.539371 -0.169408 0.960875 0.219001 0.058594 0.285156 1 0 1.000000 +holygrail.tga +0 0.371685 2.107934 7.539371 0.169408 0.960875 0.219001 0.000000 0.285156 1 0 1.000000 +0 -0.371685 2.107934 7.539371 -0.169408 0.960875 0.219001 0.058594 0.285156 1 0 1.000000 +0 -0.308688 1.750661 7.896644 -0.160344 0.909421 0.383679 0.058594 0.300781 1 0 1.000000 +holygrail.tga +0 -0.308688 1.750661 7.896644 -0.160344 0.909421 0.383679 0.058594 0.300781 1 0 1.000000 +0 0.308688 1.750661 7.896644 0.160344 0.909421 0.383679 0.000000 0.300781 1 0 1.000000 +0 0.371685 2.107934 7.539371 0.169408 0.960875 0.219001 0.000000 0.285156 1 0 1.000000 +holygrail.tga +0 1.070225 1.853686 7.539371 0.487838 0.844997 0.219001 0.941406 0.285156 1 0 1.000000 +0 0.371685 2.107934 7.539371 0.169408 0.960875 0.219001 1.000000 0.285156 1 0 1.000000 +0 0.308688 1.750661 7.896644 0.160344 0.909421 0.383679 1.000000 0.300781 1 0 1.000000 +holygrail.tga +0 0.308688 1.750661 7.896644 0.160344 0.909421 0.383679 1.000000 0.300781 1 0 1.000000 +0 0.888833 1.539505 7.896644 0.461715 0.799707 0.383679 0.941406 0.300781 1 0 1.000000 +0 1.070225 1.853686 7.539371 0.487838 0.844997 0.219001 0.941406 0.285156 1 0 1.000000 +holygrail.tga +0 1.639682 1.375855 7.539371 0.747429 0.627155 0.219001 0.886719 0.285156 1 0 1.000000 +0 1.070225 1.853686 7.539371 0.487838 0.844997 0.219001 0.941406 0.285156 1 0 1.000000 +0 0.888833 1.539505 7.896644 0.461715 0.799707 0.383679 0.941406 0.300781 1 0 1.000000 +holygrail.tga +0 0.888833 1.539505 7.896644 0.461715 0.799707 0.383679 0.941406 0.300781 1 0 1.000000 +0 1.361772 1.142662 7.896644 0.707389 0.593554 0.383679 0.886719 0.300781 1 0 1.000000 +0 1.639682 1.375855 7.539371 0.747429 0.627155 0.219001 0.886719 0.285156 1 0 1.000000 +holygrail.tga +0 2.011366 0.732079 7.539370 0.916868 0.333689 0.219001 0.832031 0.285156 1 0 1.000000 +0 1.639682 1.375855 7.539371 0.747429 0.627155 0.219001 0.886719 0.285156 1 0 1.000000 +0 1.361772 1.142662 7.896644 0.707389 0.593554 0.383679 0.886719 0.300781 1 0 1.000000 +holygrail.tga +0 1.361772 1.142662 7.896644 0.707389 0.593554 0.383679 0.886719 0.300781 1 0 1.000000 +0 1.670460 0.607999 7.896643 0.867763 0.315836 0.383679 0.832031 0.300781 1 0 1.000000 +0 2.011366 0.732079 7.539370 0.916868 0.333689 0.219001 0.832031 0.285156 1 0 1.000000 +holygrail.tga +0 1.959058 0.000005 7.003459 0.995849 0.000000 0.090976 0.773438 0.261719 1 0 1.000000 +0 1.840913 0.670040 7.003460 0.935789 0.340587 0.090976 0.832031 0.261719 1 0 1.000000 +0 2.011366 0.732079 7.539370 0.916868 0.333689 0.219001 0.832031 0.285156 1 0 1.000000 +holygrail.tga +0 2.011366 0.732079 7.539370 0.916868 0.333689 0.219001 0.832031 0.285156 1 0 1.000000 +0 2.140450 0.000005 7.539369 0.975707 0.000000 0.219001 0.773438 0.285156 1 0 1.000000 +0 1.959058 0.000005 7.003459 0.995849 0.000000 0.090976 0.773438 0.261719 1 0 1.000000 +holygrail.tga +0 1.840911 -0.670037 7.003459 0.935789 -0.340587 0.090976 0.726563 0.261719 1 0 1.000000 +0 1.959058 0.000005 7.003459 0.995849 0.000000 0.090976 0.773438 0.261719 1 0 1.000000 +0 2.140450 0.000005 7.539369 0.975707 0.000000 0.219001 0.773438 0.285156 1 0 1.000000 +holygrail.tga +0 2.140450 0.000005 7.539369 0.975707 0.000000 0.219001 0.773438 0.285156 1 0 1.000000 +0 2.011364 -0.732077 7.539369 0.916868 -0.333689 0.219001 0.726563 0.285156 1 0 1.000000 +0 1.840911 -0.670037 7.003459 0.935789 -0.340587 0.090976 0.726563 0.261719 1 0 1.000000 +holygrail.tga +0 1.500724 -1.259257 7.003460 0.762841 -0.640095 0.090976 0.664063 0.261719 1 0 1.000000 +0 1.840911 -0.670037 7.003459 0.935789 -0.340587 0.090976 0.726563 0.261719 1 0 1.000000 +0 2.011364 -0.732077 7.539369 0.916868 -0.333689 0.219001 0.726563 0.285156 1 0 1.000000 +holygrail.tga +0 2.011364 -0.732077 7.539369 0.916868 -0.333689 0.219001 0.726563 0.285156 1 0 1.000000 +0 1.639678 -1.375854 7.539370 0.747429 -0.627155 0.219001 0.664063 0.285156 1 0 1.000000 +0 1.500724 -1.259257 7.003460 0.762841 -0.640095 0.090976 0.664063 0.261719 1 0 1.000000 +holygrail.tga +0 0.979526 -1.696594 7.003460 0.497909 -0.862423 0.090976 0.613281 0.261719 1 0 1.000000 +0 1.500724 -1.259257 7.003460 0.762841 -0.640095 0.090976 0.664063 0.261719 1 0 1.000000 +0 1.639678 -1.375854 7.539370 0.747429 -0.627155 0.219001 0.664063 0.285156 1 0 1.000000 +holygrail.tga +0 1.639678 -1.375854 7.539370 0.747429 -0.627155 0.219001 0.664063 0.285156 1 0 1.000000 +0 1.070222 -1.853684 7.539370 0.487838 -0.844997 0.219001 0.613281 0.285156 1 0 1.000000 +0 0.979526 -1.696594 7.003460 0.497909 -0.862423 0.090976 0.613281 0.261719 1 0 1.000000 +holygrail.tga +0 0.340186 -1.929294 7.003460 0.172918 -0.980712 0.090976 0.554688 0.261719 1 0 1.000000 +0 0.979526 -1.696594 7.003460 0.497909 -0.862423 0.090976 0.613281 0.261719 1 0 1.000000 +0 1.070222 -1.853684 7.539370 0.487838 -0.844997 0.219001 0.613281 0.285156 1 0 1.000000 +holygrail.tga +0 1.070222 -1.853684 7.539370 0.487838 -0.844997 0.219001 0.613281 0.285156 1 0 1.000000 +0 0.371684 -2.107931 7.539370 0.169408 -0.960875 0.219001 0.554688 0.285156 1 0 1.000000 +0 0.340186 -1.929294 7.003460 0.172918 -0.980712 0.090976 0.554688 0.261719 1 0 1.000000 +holygrail.tga +0 -0.340186 -1.929294 7.003460 -0.172918 -0.980712 0.090976 0.503906 0.261719 1 0 1.000000 +0 0.340186 -1.929294 7.003460 0.172918 -0.980712 0.090976 0.554688 0.261719 1 0 1.000000 +0 0.371684 -2.107931 7.539370 0.169408 -0.960875 0.219001 0.554688 0.285156 1 0 1.000000 +holygrail.tga +0 0.371684 -2.107931 7.539370 0.169408 -0.960875 0.219001 0.554688 0.285156 1 0 1.000000 +0 -0.371685 -2.107930 7.539370 -0.169408 -0.960875 0.219001 0.503906 0.285156 1 0 1.000000 +0 -0.340186 -1.929294 7.003460 -0.172918 -0.980712 0.090976 0.503906 0.261719 1 0 1.000000 +holygrail.tga +0 -0.979529 -1.696592 7.003460 -0.497909 -0.862423 0.090976 0.449219 0.261719 1 0 1.000000 +0 -0.340186 -1.929294 7.003460 -0.172918 -0.980712 0.090976 0.503906 0.261719 1 0 1.000000 +0 -0.371685 -2.107930 7.539370 -0.169408 -0.960875 0.219001 0.503906 0.285156 1 0 1.000000 +holygrail.tga +0 -0.371685 -2.107930 7.539370 -0.169408 -0.960875 0.219001 0.503906 0.285156 1 0 1.000000 +0 -1.070225 -1.853682 7.539370 -0.487838 -0.844997 0.219001 0.449219 0.285156 1 0 1.000000 +0 -0.979529 -1.696592 7.003460 -0.497909 -0.862423 0.090976 0.449219 0.261719 1 0 1.000000 +holygrail.tga +0 -1.500727 -1.259254 7.003460 -0.762841 -0.640095 0.090976 0.394531 0.261719 1 0 1.000000 +0 -0.979529 -1.696592 7.003460 -0.497909 -0.862423 0.090976 0.449219 0.261719 1 0 1.000000 +0 -1.070225 -1.853682 7.539370 -0.487838 -0.844997 0.219001 0.449219 0.285156 1 0 1.000000 +holygrail.tga +0 -1.070225 -1.853682 7.539370 -0.487838 -0.844997 0.219001 0.449219 0.285156 1 0 1.000000 +0 -1.639682 -1.375851 7.539370 -0.747429 -0.627155 0.219001 0.394531 0.285156 1 0 1.000000 +0 -1.500727 -1.259254 7.003460 -0.762841 -0.640095 0.090976 0.394531 0.261719 1 0 1.000000 +holygrail.tga +0 -1.840913 -0.670035 7.003459 -0.935789 -0.340587 0.090976 0.339844 0.261719 1 0 1.000000 +0 -1.500727 -1.259254 7.003460 -0.762841 -0.640095 0.090976 0.394531 0.261719 1 0 1.000000 +0 -1.639682 -1.375851 7.539370 -0.747429 -0.627155 0.219001 0.394531 0.285156 1 0 1.000000 +holygrail.tga +0 -1.639682 -1.375851 7.539370 -0.747429 -0.627155 0.219001 0.394531 0.285156 1 0 1.000000 +0 -2.011366 -0.732075 7.539369 -0.916868 -0.333689 0.219001 0.339844 0.285156 1 0 1.000000 +0 -1.840913 -0.670035 7.003459 -0.935789 -0.340587 0.090976 0.339844 0.261719 1 0 1.000000 +holygrail.tga +0 -1.959058 0.000001 7.003459 -0.995849 0.000000 0.090976 0.289063 0.261719 1 0 1.000000 +0 -1.840913 -0.670035 7.003459 -0.935789 -0.340587 0.090976 0.339844 0.261719 1 0 1.000000 +0 -2.011366 -0.732075 7.539369 -0.916868 -0.333689 0.219001 0.339844 0.285156 1 0 1.000000 +holygrail.tga +0 -2.011366 -0.732075 7.539369 -0.916868 -0.333689 0.219001 0.339844 0.285156 1 0 1.000000 +0 -2.140450 0.000001 7.539369 -0.975707 0.000000 0.219001 0.289063 0.285156 1 0 1.000000 +0 -1.959058 0.000001 7.003459 -0.995849 0.000000 0.090976 0.289063 0.261719 1 0 1.000000 +holygrail.tga +0 -1.840912 0.670038 7.003460 -0.935789 0.340587 0.090976 0.226563 0.261719 1 0 1.000000 +0 -1.959058 0.000001 7.003459 -0.995849 0.000000 0.090976 0.289063 0.261719 1 0 1.000000 +0 -2.140450 0.000001 7.539369 -0.975707 0.000000 0.219001 0.289063 0.285156 1 0 1.000000 +holygrail.tga +0 -2.140450 0.000001 7.539369 -0.975707 0.000000 0.219001 0.289063 0.285156 1 0 1.000000 +0 -2.011365 0.732077 7.539370 -0.916868 0.333689 0.219001 0.226563 0.285156 1 0 1.000000 +0 -1.840912 0.670038 7.003460 -0.935789 0.340587 0.090976 0.226563 0.261719 1 0 1.000000 +holygrail.tga +0 -1.500725 1.259259 7.003461 -0.762841 0.640095 0.090976 0.171875 0.261719 1 0 1.000000 +0 -1.840912 0.670038 7.003460 -0.935789 0.340587 0.090976 0.226563 0.261719 1 0 1.000000 +0 -2.011365 0.732077 7.539370 -0.916868 0.333689 0.219001 0.226563 0.285156 1 0 1.000000 +holygrail.tga +0 -2.011365 0.732077 7.539370 -0.916868 0.333689 0.219001 0.226563 0.285156 1 0 1.000000 +0 -1.639679 1.375856 7.539371 -0.747429 0.627155 0.219001 0.171875 0.285156 1 0 1.000000 +0 -1.500725 1.259259 7.003461 -0.762841 0.640095 0.090976 0.171875 0.261719 1 0 1.000000 +holygrail.tga +0 -0.979526 1.696597 7.003461 -0.497909 0.862423 0.090976 0.117188 0.261719 1 0 1.000000 +0 -1.500725 1.259259 7.003461 -0.762841 0.640095 0.090976 0.171875 0.261719 1 0 1.000000 +0 -1.639679 1.375856 7.539371 -0.747429 0.627155 0.219001 0.171875 0.285156 1 0 1.000000 +holygrail.tga +0 -1.639679 1.375856 7.539371 -0.747429 0.627155 0.219001 0.171875 0.285156 1 0 1.000000 +0 -1.070222 1.853687 7.539371 -0.487838 0.844997 0.219001 0.117188 0.285156 1 0 1.000000 +0 -0.979526 1.696597 7.003461 -0.497909 0.862423 0.090976 0.117188 0.261719 1 0 1.000000 +holygrail.tga +0 -0.340187 1.929298 7.003461 -0.172918 0.980712 0.090976 0.058594 0.261719 1 0 1.000000 +0 -0.979526 1.696597 7.003461 -0.497909 0.862423 0.090976 0.117188 0.261719 1 0 1.000000 +0 -1.070222 1.853687 7.539371 -0.487838 0.844997 0.219001 0.117188 0.285156 1 0 1.000000 +holygrail.tga +0 -1.070222 1.853687 7.539371 -0.487838 0.844997 0.219001 0.117188 0.285156 1 0 1.000000 +0 -0.371685 2.107934 7.539371 -0.169408 0.960875 0.219001 0.058594 0.285156 1 0 1.000000 +0 -0.340187 1.929298 7.003461 -0.172918 0.980712 0.090976 0.058594 0.261719 1 0 1.000000 +holygrail.tga +0 0.340187 1.929298 7.003461 0.172918 0.980712 0.090976 0.000000 0.261719 1 0 1.000000 +0 -0.340187 1.929298 7.003461 -0.172918 0.980712 0.090976 0.058594 0.261719 1 0 1.000000 +0 -0.371685 2.107934 7.539371 -0.169408 0.960875 0.219001 0.058594 0.285156 1 0 1.000000 +holygrail.tga +0 -0.371685 2.107934 7.539371 -0.169408 0.960875 0.219001 0.058594 0.285156 1 0 1.000000 +0 0.371685 2.107934 7.539371 0.169408 0.960875 0.219001 0.000000 0.285156 1 0 1.000000 +0 0.340187 1.929298 7.003461 0.172918 0.980712 0.090976 0.000000 0.261719 1 0 1.000000 +holygrail.tga +0 0.979529 1.696596 7.003461 0.497909 0.862423 0.090976 0.941406 0.261719 1 0 1.000000 +0 0.340187 1.929298 7.003461 0.172918 0.980712 0.090976 1.000000 0.261719 1 0 1.000000 +0 0.371685 2.107934 7.539371 0.169408 0.960875 0.219001 1.000000 0.285156 1 0 1.000000 +holygrail.tga +0 0.371685 2.107934 7.539371 0.169408 0.960875 0.219001 1.000000 0.285156 1 0 1.000000 +0 1.070225 1.853686 7.539371 0.487838 0.844997 0.219001 0.941406 0.285156 1 0 1.000000 +0 0.979529 1.696596 7.003461 0.497909 0.862423 0.090976 0.941406 0.261719 1 0 1.000000 +holygrail.tga +0 1.500727 1.259259 7.003461 0.762841 0.640095 0.090976 0.886719 0.261719 1 0 1.000000 +0 0.979529 1.696596 7.003461 0.497909 0.862423 0.090976 0.941406 0.261719 1 0 1.000000 +0 1.070225 1.853686 7.539371 0.487838 0.844997 0.219001 0.941406 0.285156 1 0 1.000000 +holygrail.tga +0 1.070225 1.853686 7.539371 0.487838 0.844997 0.219001 0.941406 0.285156 1 0 1.000000 +0 1.639682 1.375855 7.539371 0.747429 0.627155 0.219001 0.886719 0.285156 1 0 1.000000 +0 1.500727 1.259259 7.003461 0.762841 0.640095 0.090976 0.886719 0.261719 1 0 1.000000 +holygrail.tga +0 1.840913 0.670040 7.003460 0.935789 0.340587 0.090976 0.832031 0.261719 1 0 1.000000 +0 1.500727 1.259259 7.003461 0.762841 0.640095 0.090976 0.886719 0.261719 1 0 1.000000 +0 1.639682 1.375855 7.539371 0.747429 0.627155 0.219001 0.886719 0.285156 1 0 1.000000 +holygrail.tga +0 1.639682 1.375855 7.539371 0.747429 0.627155 0.219001 0.886719 0.285156 1 0 1.000000 +0 2.011366 0.732079 7.539370 0.916868 0.333689 0.219001 0.832031 0.285156 1 0 1.000000 +0 1.840913 0.670040 7.003460 0.935789 0.340587 0.090976 0.832031 0.261719 1 0 1.000000 +holygrail.tga +0 2.593931 0.000005 5.842322 0.849239 0.000000 0.527940 0.773438 0.195313 1 0 1.000000 +0 2.437499 0.887179 5.842322 0.798029 0.290445 0.527940 0.832031 0.195313 1 0 1.000000 +0 1.840913 0.670040 7.003460 0.935789 0.340587 0.090976 0.832031 0.261719 1 0 1.000000 +holygrail.tga +0 1.840913 0.670040 7.003460 0.935789 0.340587 0.090976 0.832031 0.261719 1 0 1.000000 +0 1.959058 0.000005 7.003459 0.995849 0.000000 0.090976 0.773438 0.261719 1 0 1.000000 +0 2.593931 0.000005 5.842322 0.849239 0.000000 0.527940 0.773438 0.195313 1 0 1.000000 +holygrail.tga +0 2.437497 -0.887177 5.842322 0.798029 -0.290445 0.527940 0.726563 0.195313 1 0 1.000000 +0 2.593931 0.000005 5.842322 0.849239 0.000000 0.527940 0.773438 0.195313 1 0 1.000000 +0 1.959058 0.000005 7.003459 0.995849 0.000000 0.090976 0.773438 0.261719 1 0 1.000000 +holygrail.tga +0 1.959058 0.000005 7.003459 0.995849 0.000000 0.090976 0.773438 0.261719 1 0 1.000000 +0 1.840911 -0.670037 7.003459 0.935789 -0.340587 0.090976 0.726563 0.261719 1 0 1.000000 +0 2.437497 -0.887177 5.842322 0.798029 -0.290445 0.527940 0.726563 0.195313 1 0 1.000000 +holygrail.tga +0 1.987065 -1.667345 5.842322 0.650563 -0.545885 0.527940 0.664063 0.195313 1 0 1.000000 +0 2.437497 -0.887177 5.842322 0.798029 -0.290445 0.527940 0.726563 0.195313 1 0 1.000000 +0 1.840911 -0.670037 7.003459 0.935789 -0.340587 0.090976 0.726563 0.261719 1 0 1.000000 +holygrail.tga +0 1.840911 -0.670037 7.003459 0.935789 -0.340587 0.090976 0.726563 0.261719 1 0 1.000000 +0 1.500724 -1.259257 7.003460 0.762841 -0.640095 0.090976 0.664063 0.261719 1 0 1.000000 +0 1.987065 -1.667345 5.842322 0.650563 -0.545885 0.527940 0.664063 0.195313 1 0 1.000000 +holygrail.tga +0 1.296963 -2.246410 5.842322 0.424604 -0.735466 0.527940 0.613281 0.195313 1 0 1.000000 +0 1.987065 -1.667345 5.842322 0.650563 -0.545885 0.527940 0.664063 0.195313 1 0 1.000000 +0 1.500724 -1.259257 7.003460 0.762841 -0.640095 0.090976 0.664063 0.261719 1 0 1.000000 +holygrail.tga +0 1.500724 -1.259257 7.003460 0.762841 -0.640095 0.090976 0.664063 0.261719 1 0 1.000000 +0 0.979526 -1.696594 7.003460 0.497909 -0.862423 0.090976 0.613281 0.261719 1 0 1.000000 +0 1.296963 -2.246410 5.842322 0.424604 -0.735466 0.527940 0.613281 0.195313 1 0 1.000000 +holygrail.tga +0 0.450430 -2.554522 5.842322 0.147465 -0.836360 0.527940 0.554688 0.195313 1 0 1.000000 +0 1.296963 -2.246410 5.842322 0.424604 -0.735466 0.527940 0.613281 0.195313 1 0 1.000000 +0 0.979526 -1.696594 7.003460 0.497909 -0.862423 0.090976 0.613281 0.261719 1 0 1.000000 +holygrail.tga +0 0.979526 -1.696594 7.003460 0.497909 -0.862423 0.090976 0.613281 0.261719 1 0 1.000000 +0 0.340186 -1.929294 7.003460 0.172918 -0.980712 0.090976 0.554688 0.261719 1 0 1.000000 +0 0.450430 -2.554522 5.842322 0.147465 -0.836360 0.527940 0.554688 0.195313 1 0 1.000000 +holygrail.tga +0 -0.450431 -2.554522 5.842322 -0.147465 -0.836360 0.527940 0.503906 0.195313 1 0 1.000000 +0 0.450430 -2.554522 5.842322 0.147465 -0.836360 0.527940 0.554688 0.195313 1 0 1.000000 +0 0.340186 -1.929294 7.003460 0.172918 -0.980712 0.090976 0.554688 0.261719 1 0 1.000000 +holygrail.tga +0 0.340186 -1.929294 7.003460 0.172918 -0.980712 0.090976 0.554688 0.261719 1 0 1.000000 +0 -0.340186 -1.929294 7.003460 -0.172918 -0.980712 0.090976 0.503906 0.261719 1 0 1.000000 +0 -0.450431 -2.554522 5.842322 -0.147465 -0.836360 0.527940 0.503906 0.195313 1 0 1.000000 +holygrail.tga +0 -1.296966 -2.246408 5.842322 -0.424604 -0.735466 0.527940 0.449219 0.195313 1 0 1.000000 +0 -0.450431 -2.554522 5.842322 -0.147465 -0.836360 0.527940 0.503906 0.195313 1 0 1.000000 +0 -0.340186 -1.929294 7.003460 -0.172918 -0.980712 0.090976 0.503906 0.261719 1 0 1.000000 +holygrail.tga +0 -0.340186 -1.929294 7.003460 -0.172918 -0.980712 0.090976 0.503906 0.261719 1 0 1.000000 +0 -0.979529 -1.696592 7.003460 -0.497909 -0.862423 0.090976 0.449219 0.261719 1 0 1.000000 +0 -1.296966 -2.246408 5.842322 -0.424604 -0.735466 0.527940 0.449219 0.195313 1 0 1.000000 +holygrail.tga +0 -1.987068 -1.667343 5.842322 -0.650563 -0.545885 0.527940 0.394531 0.195313 1 0 1.000000 +0 -1.296966 -2.246408 5.842322 -0.424604 -0.735466 0.527940 0.449219 0.195313 1 0 1.000000 +0 -0.979529 -1.696592 7.003460 -0.497909 -0.862423 0.090976 0.449219 0.261719 1 0 1.000000 +holygrail.tga +0 -0.979529 -1.696592 7.003460 -0.497909 -0.862423 0.090976 0.449219 0.261719 1 0 1.000000 +0 -1.500727 -1.259254 7.003460 -0.762841 -0.640095 0.090976 0.394531 0.261719 1 0 1.000000 +0 -1.987068 -1.667343 5.842322 -0.650563 -0.545885 0.527940 0.394531 0.195313 1 0 1.000000 +holygrail.tga +0 -2.437499 -0.887174 5.842322 -0.798029 -0.290445 0.527940 0.339844 0.195313 1 0 1.000000 +0 -1.987068 -1.667343 5.842322 -0.650563 -0.545885 0.527940 0.394531 0.195313 1 0 1.000000 +0 -1.500727 -1.259254 7.003460 -0.762841 -0.640095 0.090976 0.394531 0.261719 1 0 1.000000 +holygrail.tga +0 -1.500727 -1.259254 7.003460 -0.762841 -0.640095 0.090976 0.394531 0.261719 1 0 1.000000 +0 -1.840913 -0.670035 7.003459 -0.935789 -0.340587 0.090976 0.339844 0.261719 1 0 1.000000 +0 -2.437499 -0.887174 5.842322 -0.798029 -0.290445 0.527940 0.339844 0.195313 1 0 1.000000 +holygrail.tga +0 -1.840913 -0.670035 7.003459 -0.935789 -0.340587 0.090976 0.339844 0.261719 1 0 1.000000 +0 -1.959058 0.000001 7.003459 -0.995849 0.000000 0.090976 0.289063 0.261719 1 0 1.000000 +0 -2.593930 0.000002 5.842322 -0.849239 0.000000 0.527940 0.289063 0.195313 1 0 1.000000 +holygrail.tga +0 -2.437498 0.887178 5.842322 -0.798029 0.290445 0.527940 0.226563 0.195313 1 0 1.000000 +0 -2.593930 0.000002 5.842322 -0.849239 0.000000 0.527940 0.289063 0.195313 1 0 1.000000 +0 -1.959058 0.000001 7.003459 -0.995849 0.000000 0.090976 0.289063 0.261719 1 0 1.000000 +holygrail.tga +0 -1.959058 0.000001 7.003459 -0.995849 0.000000 0.090976 0.289063 0.261719 1 0 1.000000 +0 -1.840912 0.670038 7.003460 -0.935789 0.340587 0.090976 0.226563 0.261719 1 0 1.000000 +0 -2.437498 0.887178 5.842322 -0.798029 0.290445 0.527940 0.226563 0.195313 1 0 1.000000 +holygrail.tga +0 -1.987065 1.667348 5.842324 -0.650563 0.545885 0.527940 0.171875 0.195313 1 0 1.000000 +0 -2.437498 0.887178 5.842322 -0.798029 0.290445 0.527940 0.226563 0.195313 1 0 1.000000 +0 -1.840912 0.670038 7.003460 -0.935789 0.340587 0.090976 0.226563 0.261719 1 0 1.000000 +holygrail.tga +0 -1.840912 0.670038 7.003460 -0.935789 0.340587 0.090976 0.226563 0.261719 1 0 1.000000 +0 -1.500725 1.259259 7.003461 -0.762841 0.640095 0.090976 0.171875 0.261719 1 0 1.000000 +0 -1.987065 1.667348 5.842324 -0.650563 0.545885 0.527940 0.171875 0.195313 1 0 1.000000 +holygrail.tga +0 -1.296963 2.246413 5.842323 -0.424604 0.735466 0.527940 0.117188 0.195313 1 0 1.000000 +0 -1.987065 1.667348 5.842324 -0.650563 0.545885 0.527940 0.171875 0.195313 1 0 1.000000 +0 -1.500725 1.259259 7.003461 -0.762841 0.640095 0.090976 0.171875 0.261719 1 0 1.000000 +holygrail.tga +0 -1.500725 1.259259 7.003461 -0.762841 0.640095 0.090976 0.171875 0.261719 1 0 1.000000 +0 -0.979526 1.696597 7.003461 -0.497909 0.862423 0.090976 0.117188 0.261719 1 0 1.000000 +0 -1.296963 2.246413 5.842323 -0.424604 0.735466 0.527940 0.117188 0.195313 1 0 1.000000 +holygrail.tga +0 -0.450431 2.554526 5.842323 -0.147465 0.836360 0.527940 0.058594 0.195313 1 0 1.000000 +0 -1.296963 2.246413 5.842323 -0.424604 0.735466 0.527940 0.117188 0.195313 1 0 1.000000 +0 -0.979526 1.696597 7.003461 -0.497909 0.862423 0.090976 0.117188 0.261719 1 0 1.000000 +holygrail.tga +0 -0.979526 1.696597 7.003461 -0.497909 0.862423 0.090976 0.117188 0.261719 1 0 1.000000 +0 -0.340187 1.929298 7.003461 -0.172918 0.980712 0.090976 0.058594 0.261719 1 0 1.000000 +0 -0.450431 2.554526 5.842323 -0.147465 0.836360 0.527940 0.058594 0.195313 1 0 1.000000 +holygrail.tga +0 0.450431 2.554526 5.842323 0.147465 0.836360 0.527940 0.000000 0.195313 1 0 1.000000 +0 -0.450431 2.554526 5.842323 -0.147465 0.836360 0.527940 0.058594 0.195313 1 0 1.000000 +0 -0.340187 1.929298 7.003461 -0.172918 0.980712 0.090976 0.058594 0.261719 1 0 1.000000 +holygrail.tga +0 -0.340187 1.929298 7.003461 -0.172918 0.980712 0.090976 0.058594 0.261719 1 0 1.000000 +0 0.340187 1.929298 7.003461 0.172918 0.980712 0.090976 0.000000 0.261719 1 0 1.000000 +0 0.450431 2.554526 5.842323 0.147465 0.836360 0.527940 0.000000 0.195313 1 0 1.000000 +holygrail.tga +0 1.296966 2.246413 5.842323 0.424604 0.735466 0.527940 0.941406 0.195313 1 0 1.000000 +0 0.450431 2.554526 5.842323 0.147465 0.836360 0.527940 1.000000 0.195313 1 0 1.000000 +0 0.340187 1.929298 7.003461 0.172918 0.980712 0.090976 1.000000 0.261719 1 0 1.000000 +holygrail.tga +0 0.340187 1.929298 7.003461 0.172918 0.980712 0.090976 1.000000 0.261719 1 0 1.000000 +0 0.979529 1.696596 7.003461 0.497909 0.862423 0.090976 0.941406 0.261719 1 0 1.000000 +0 1.296966 2.246413 5.842323 0.424604 0.735466 0.527940 0.941406 0.195313 1 0 1.000000 +holygrail.tga +0 1.987068 1.667347 5.842324 0.650563 0.545885 0.527940 0.886719 0.195313 1 0 1.000000 +0 1.296966 2.246413 5.842323 0.424604 0.735466 0.527940 0.941406 0.195313 1 0 1.000000 +0 0.979529 1.696596 7.003461 0.497909 0.862423 0.090976 0.941406 0.261719 1 0 1.000000 +holygrail.tga +0 0.979529 1.696596 7.003461 0.497909 0.862423 0.090976 0.941406 0.261719 1 0 1.000000 +0 1.500727 1.259259 7.003461 0.762841 0.640095 0.090976 0.886719 0.261719 1 0 1.000000 +0 1.987068 1.667347 5.842324 0.650563 0.545885 0.527940 0.886719 0.195313 1 0 1.000000 +holygrail.tga +0 2.437499 0.887179 5.842322 0.798029 0.290445 0.527940 0.832031 0.195313 1 0 1.000000 +0 1.987068 1.667347 5.842324 0.650563 0.545885 0.527940 0.886719 0.195313 1 0 1.000000 +0 1.500727 1.259259 7.003461 0.762841 0.640095 0.090976 0.886719 0.261719 1 0 1.000000 +holygrail.tga +0 1.500727 1.259259 7.003461 0.762841 0.640095 0.090976 0.886719 0.261719 1 0 1.000000 +0 1.840913 0.670040 7.003460 0.935789 0.340587 0.090976 0.832031 0.261719 1 0 1.000000 +0 2.437499 0.887179 5.842322 0.798029 0.290445 0.527940 0.832031 0.195313 1 0 1.000000 +holygrail.tga +0 4.181049 0.000005 3.551379 0.894467 0.000000 0.447096 0.773438 0.113281 1 0 1.000000 +0 3.928904 1.430006 3.551379 0.840510 0.305918 0.447096 0.832031 0.113281 1 0 1.000000 +0 2.437499 0.887179 5.842322 0.798029 0.290445 0.527940 0.832031 0.195313 1 0 1.000000 +holygrail.tga +0 2.437499 0.887179 5.842322 0.798029 0.290445 0.527940 0.832031 0.195313 1 0 1.000000 +0 2.593931 0.000005 5.842322 0.849239 0.000000 0.527940 0.773438 0.195313 1 0 1.000000 +0 4.181049 0.000005 3.551379 0.894467 0.000000 0.447096 0.773438 0.113281 1 0 1.000000 +holygrail.tga +0 3.928901 -1.430004 3.551379 0.840510 -0.305918 0.447096 0.726563 0.113281 1 0 1.000000 +0 4.181049 0.000005 3.551379 0.894467 0.000000 0.447096 0.773438 0.113281 1 0 1.000000 +0 2.593931 0.000005 5.842322 0.849239 0.000000 0.527940 0.773438 0.195313 1 0 1.000000 +holygrail.tga +0 2.593931 0.000005 5.842322 0.849239 0.000000 0.527940 0.773438 0.195313 1 0 1.000000 +0 2.437497 -0.887177 5.842322 0.798029 -0.290445 0.527940 0.726563 0.195313 1 0 1.000000 +0 3.928901 -1.430004 3.551379 0.840510 -0.305918 0.447096 0.726563 0.113281 1 0 1.000000 +holygrail.tga +0 3.202868 -2.687525 3.551379 0.685202 -0.574938 0.447096 0.664063 0.113281 1 0 1.000000 +0 3.928901 -1.430004 3.551379 0.840510 -0.305918 0.447096 0.726563 0.113281 1 0 1.000000 +0 2.437497 -0.887177 5.842322 0.798029 -0.290445 0.527940 0.726563 0.195313 1 0 1.000000 +holygrail.tga +0 2.437497 -0.887177 5.842322 0.798029 -0.290445 0.527940 0.726563 0.195313 1 0 1.000000 +0 1.987065 -1.667345 5.842322 0.650563 -0.545885 0.527940 0.664063 0.195313 1 0 1.000000 +0 3.202868 -2.687525 3.551379 0.685202 -0.574938 0.447096 0.664063 0.113281 1 0 1.000000 +holygrail.tga +0 2.090522 -3.620895 3.551380 0.447218 -0.774621 0.447096 0.613281 0.113281 1 0 1.000000 +0 3.202868 -2.687525 3.551379 0.685202 -0.574938 0.447096 0.664063 0.113281 1 0 1.000000 +0 1.987065 -1.667345 5.842322 0.650563 -0.545885 0.527940 0.664063 0.195313 1 0 1.000000 +holygrail.tga +0 1.987065 -1.667345 5.842322 0.650563 -0.545885 0.527940 0.664063 0.195313 1 0 1.000000 +0 1.296963 -2.246410 5.842322 0.424604 -0.735466 0.527940 0.613281 0.195313 1 0 1.000000 +0 2.090522 -3.620895 3.551380 0.447218 -0.774621 0.447096 0.613281 0.113281 1 0 1.000000 +holygrail.tga +0 0.726029 -4.117528 3.551379 0.155309 -0.880886 0.447096 0.554688 0.113281 1 0 1.000000 +0 2.090522 -3.620895 3.551380 0.447218 -0.774621 0.447096 0.613281 0.113281 1 0 1.000000 +0 1.296963 -2.246410 5.842322 0.424604 -0.735466 0.527940 0.613281 0.195313 1 0 1.000000 +holygrail.tga +0 1.296963 -2.246410 5.842322 0.424604 -0.735466 0.527940 0.613281 0.195313 1 0 1.000000 +0 0.450430 -2.554522 5.842322 0.147465 -0.836360 0.527940 0.554688 0.195313 1 0 1.000000 +0 0.726029 -4.117528 3.551379 0.155309 -0.880886 0.447096 0.554688 0.113281 1 0 1.000000 +holygrail.tga +0 -0.726032 -4.117528 3.551379 -0.155309 -0.880886 0.447096 0.503906 0.113281 1 0 1.000000 +0 0.726029 -4.117528 3.551379 0.155309 -0.880886 0.447096 0.554688 0.113281 1 0 1.000000 +0 0.450430 -2.554522 5.842322 0.147465 -0.836360 0.527940 0.554688 0.195313 1 0 1.000000 +holygrail.tga +0 0.450430 -2.554522 5.842322 0.147465 -0.836360 0.527940 0.554688 0.195313 1 0 1.000000 +0 -0.450431 -2.554522 5.842322 -0.147465 -0.836360 0.527940 0.503906 0.195313 1 0 1.000000 +0 -0.726032 -4.117528 3.551379 -0.155309 -0.880886 0.447096 0.503906 0.113281 1 0 1.000000 +holygrail.tga +0 -2.090525 -3.620892 3.551380 -0.447218 -0.774621 0.447096 0.449219 0.113281 1 0 1.000000 +0 -0.726032 -4.117528 3.551379 -0.155309 -0.880886 0.447096 0.503906 0.113281 1 0 1.000000 +0 -0.450431 -2.554522 5.842322 -0.147465 -0.836360 0.527940 0.503906 0.195313 1 0 1.000000 +holygrail.tga +0 -0.450431 -2.554522 5.842322 -0.147465 -0.836360 0.527940 0.503906 0.195313 1 0 1.000000 +0 -1.296966 -2.246408 5.842322 -0.424604 -0.735466 0.527940 0.449219 0.195313 1 0 1.000000 +0 -2.090525 -3.620892 3.551380 -0.447218 -0.774621 0.447096 0.449219 0.113281 1 0 1.000000 +holygrail.tga +0 -3.202872 -2.687522 3.551379 -0.685202 -0.574938 0.447096 0.394531 0.113281 1 0 1.000000 +0 -2.090525 -3.620892 3.551380 -0.447218 -0.774621 0.447096 0.449219 0.113281 1 0 1.000000 +0 -1.296966 -2.246408 5.842322 -0.424604 -0.735466 0.527940 0.449219 0.195313 1 0 1.000000 +holygrail.tga +0 -1.296966 -2.246408 5.842322 -0.424604 -0.735466 0.527940 0.449219 0.195313 1 0 1.000000 +0 -1.987068 -1.667343 5.842322 -0.650563 -0.545885 0.527940 0.394531 0.195313 1 0 1.000000 +0 -3.202872 -2.687522 3.551379 -0.685202 -0.574938 0.447096 0.394531 0.113281 1 0 1.000000 +holygrail.tga +0 -3.928903 -1.429999 3.551379 -0.840510 -0.305918 0.447096 0.339844 0.113281 1 0 1.000000 +0 -3.202872 -2.687522 3.551379 -0.685202 -0.574938 0.447096 0.394531 0.113281 1 0 1.000000 +0 -1.987068 -1.667343 5.842322 -0.650563 -0.545885 0.527940 0.394531 0.195313 1 0 1.000000 +holygrail.tga +0 -1.987068 -1.667343 5.842322 -0.650563 -0.545885 0.527940 0.394531 0.195313 1 0 1.000000 +0 -2.437499 -0.887174 5.842322 -0.798029 -0.290445 0.527940 0.339844 0.195313 1 0 1.000000 +0 -3.928903 -1.429999 3.551379 -0.840510 -0.305918 0.447096 0.339844 0.113281 1 0 1.000000 +holygrail.tga +0 -4.181049 0.000003 3.551379 -0.894467 0.000000 0.447096 0.289063 0.113281 1 0 1.000000 +0 -3.928903 -1.429999 3.551379 -0.840510 -0.305918 0.447096 0.339844 0.113281 1 0 1.000000 +0 -2.437499 -0.887174 5.842322 -0.798029 -0.290445 0.527940 0.339844 0.195313 1 0 1.000000 +holygrail.tga +0 -2.437499 -0.887174 5.842322 -0.798029 -0.290445 0.527940 0.339844 0.195313 1 0 1.000000 +0 -2.593930 0.000002 5.842322 -0.849239 0.000000 0.527940 0.289063 0.195313 1 0 1.000000 +0 -4.181049 0.000003 3.551379 -0.894467 0.000000 0.447096 0.289063 0.113281 1 0 1.000000 +holygrail.tga +0 -3.928902 1.430005 3.551379 -0.840510 0.305918 0.447096 0.226563 0.113281 1 0 1.000000 +0 -4.181049 0.000003 3.551379 -0.894467 0.000000 0.447096 0.289063 0.113281 1 0 1.000000 +0 -2.593930 0.000002 5.842322 -0.849239 0.000000 0.527940 0.289063 0.195313 1 0 1.000000 +holygrail.tga +0 -2.593930 0.000002 5.842322 -0.849239 0.000000 0.527940 0.289063 0.195313 1 0 1.000000 +0 -2.437498 0.887178 5.842322 -0.798029 0.290445 0.527940 0.226563 0.195313 1 0 1.000000 +0 -3.928902 1.430005 3.551379 -0.840510 0.305918 0.447096 0.226563 0.113281 1 0 1.000000 +holygrail.tga +0 -3.202868 2.687529 3.551382 -0.685202 0.574938 0.447096 0.171875 0.113281 1 0 1.000000 +0 -3.928902 1.430005 3.551379 -0.840510 0.305918 0.447096 0.226563 0.113281 1 0 1.000000 +0 -2.437498 0.887178 5.842322 -0.798029 0.290445 0.527940 0.226563 0.195313 1 0 1.000000 +holygrail.tga +0 -2.437498 0.887178 5.842322 -0.798029 0.290445 0.527940 0.226563 0.195313 1 0 1.000000 +0 -1.987065 1.667348 5.842324 -0.650563 0.545885 0.527940 0.171875 0.195313 1 0 1.000000 +0 -3.202868 2.687529 3.551382 -0.685202 0.574938 0.447096 0.171875 0.113281 1 0 1.000000 +holygrail.tga +0 -2.090523 3.620899 3.551381 -0.447218 0.774621 0.447096 0.117188 0.113281 1 0 1.000000 +0 -3.202868 2.687529 3.551382 -0.685202 0.574938 0.447096 0.171875 0.113281 1 0 1.000000 +0 -1.987065 1.667348 5.842324 -0.650563 0.545885 0.527940 0.171875 0.195313 1 0 1.000000 +holygrail.tga +0 -1.987065 1.667348 5.842324 -0.650563 0.545885 0.527940 0.171875 0.195313 1 0 1.000000 +0 -1.296963 2.246413 5.842323 -0.424604 0.735466 0.527940 0.117188 0.195313 1 0 1.000000 +0 -2.090523 3.620899 3.551381 -0.447218 0.774621 0.447096 0.117188 0.113281 1 0 1.000000 +holygrail.tga +0 -0.726032 4.117534 3.551381 -0.155309 0.880886 0.447096 0.058594 0.113281 1 0 1.000000 +0 -2.090523 3.620899 3.551381 -0.447218 0.774621 0.447096 0.117188 0.113281 1 0 1.000000 +0 -1.296963 2.246413 5.842323 -0.424604 0.735466 0.527940 0.117188 0.195313 1 0 1.000000 +holygrail.tga +0 -1.296963 2.246413 5.842323 -0.424604 0.735466 0.527940 0.117188 0.195313 1 0 1.000000 +0 -0.450431 2.554526 5.842323 -0.147465 0.836360 0.527940 0.058594 0.195313 1 0 1.000000 +0 -0.726032 4.117534 3.551381 -0.155309 0.880886 0.447096 0.058594 0.113281 1 0 1.000000 +holygrail.tga +0 0.726032 4.117534 3.551381 0.155309 0.880886 0.447096 0.000000 0.113281 1 0 1.000000 +0 -0.726032 4.117534 3.551381 -0.155309 0.880886 0.447096 0.058594 0.113281 1 0 1.000000 +0 -0.450431 2.554526 5.842323 -0.147465 0.836360 0.527940 0.058594 0.195313 1 0 1.000000 +holygrail.tga +0 -0.450431 2.554526 5.842323 -0.147465 0.836360 0.527940 0.058594 0.195313 1 0 1.000000 +0 0.450431 2.554526 5.842323 0.147465 0.836360 0.527940 0.000000 0.195313 1 0 1.000000 +0 0.726032 4.117534 3.551381 0.155309 0.880886 0.447096 0.000000 0.113281 1 0 1.000000 +holygrail.tga +0 2.090526 3.620899 3.551381 0.447218 0.774621 0.447096 0.941406 0.113281 1 0 1.000000 +0 0.726032 4.117534 3.551381 0.155309 0.880886 0.447096 1.000000 0.113281 1 0 1.000000 +0 0.450431 2.554526 5.842323 0.147465 0.836360 0.527940 1.000000 0.195313 1 0 1.000000 +holygrail.tga +0 0.450431 2.554526 5.842323 0.147465 0.836360 0.527940 1.000000 0.195313 1 0 1.000000 +0 1.296966 2.246413 5.842323 0.424604 0.735466 0.527940 0.941406 0.195313 1 0 1.000000 +0 2.090526 3.620899 3.551381 0.447218 0.774621 0.447096 0.941406 0.113281 1 0 1.000000 +holygrail.tga +0 3.202872 2.687529 3.551382 0.685202 0.574938 0.447096 0.886719 0.113281 1 0 1.000000 +0 2.090526 3.620899 3.551381 0.447218 0.774621 0.447096 0.941406 0.113281 1 0 1.000000 +0 1.296966 2.246413 5.842323 0.424604 0.735466 0.527940 0.941406 0.195313 1 0 1.000000 +holygrail.tga +0 1.296966 2.246413 5.842323 0.424604 0.735466 0.527940 0.941406 0.195313 1 0 1.000000 +0 1.987068 1.667347 5.842324 0.650563 0.545885 0.527940 0.886719 0.195313 1 0 1.000000 +0 3.202872 2.687529 3.551382 0.685202 0.574938 0.447096 0.886719 0.113281 1 0 1.000000 +holygrail.tga +0 3.928904 1.430006 3.551379 0.840510 0.305918 0.447096 0.832031 0.113281 1 0 1.000000 +0 3.202872 2.687529 3.551382 0.685202 0.574938 0.447096 0.886719 0.113281 1 0 1.000000 +0 1.987068 1.667347 5.842324 0.650563 0.545885 0.527940 0.886719 0.195313 1 0 1.000000 +holygrail.tga +0 1.987068 1.667347 5.842324 0.650563 0.545885 0.527940 0.886719 0.195313 1 0 1.000000 +0 2.437499 0.887179 5.842322 0.798029 0.290445 0.527940 0.832031 0.195313 1 0 1.000000 +0 3.928904 1.430006 3.551379 0.840510 0.305918 0.447096 0.832031 0.113281 1 0 1.000000 +holygrail.tga +0 5.004897 0.000005 1.180928 0.803430 0.000000 0.595355 0.773438 0.046875 1 0 1.000000 +0 4.703067 1.711779 1.180930 0.754967 0.274789 0.595355 0.832031 0.046875 1 0 1.000000 +0 3.928904 1.430006 3.551379 0.840510 0.305918 0.447096 0.832031 0.113281 1 0 1.000000 +holygrail.tga +0 3.928904 1.430006 3.551379 0.840510 0.305918 0.447096 0.832031 0.113281 1 0 1.000000 +0 4.181049 0.000005 3.551379 0.894467 0.000000 0.447096 0.773438 0.113281 1 0 1.000000 +0 5.004897 0.000005 1.180928 0.803430 0.000000 0.595355 0.773438 0.046875 1 0 1.000000 +holygrail.tga +0 4.703063 -1.711777 1.180928 0.754967 -0.274789 0.595355 0.726563 0.046875 1 0 1.000000 +0 5.004897 0.000005 1.180928 0.803430 0.000000 0.595355 0.773438 0.046875 1 0 1.000000 +0 4.181049 0.000005 3.551379 0.894467 0.000000 0.447096 0.773438 0.113281 1 0 1.000000 +holygrail.tga +0 4.181049 0.000005 3.551379 0.894467 0.000000 0.447096 0.773438 0.113281 1 0 1.000000 +0 3.928901 -1.430004 3.551379 0.840510 -0.305918 0.447096 0.726563 0.113281 1 0 1.000000 +0 4.703063 -1.711777 1.180928 0.754967 -0.274789 0.595355 0.726563 0.046875 1 0 1.000000 +holygrail.tga +0 3.833971 -3.217084 1.180929 0.615467 -0.516434 0.595355 0.664063 0.046875 1 0 1.000000 +0 4.703063 -1.711777 1.180928 0.754967 -0.274789 0.595355 0.726563 0.046875 1 0 1.000000 +0 3.928901 -1.430004 3.551379 0.840510 -0.305918 0.447096 0.726563 0.113281 1 0 1.000000 +holygrail.tga +0 3.928901 -1.430004 3.551379 0.840510 -0.305918 0.447096 0.726563 0.113281 1 0 1.000000 +0 3.202868 -2.687525 3.551379 0.685202 -0.574938 0.447096 0.664063 0.113281 1 0 1.000000 +0 3.833971 -3.217084 1.180929 0.615467 -0.516434 0.595355 0.664063 0.046875 1 0 1.000000 +holygrail.tga +0 2.502445 -4.334369 1.180929 0.401715 -0.695791 0.595355 0.613281 0.046875 1 0 1.000000 +0 3.833971 -3.217084 1.180929 0.615467 -0.516434 0.595355 0.664063 0.046875 1 0 1.000000 +0 3.202868 -2.687525 3.551379 0.685202 -0.574938 0.447096 0.664063 0.113281 1 0 1.000000 +holygrail.tga +0 3.202868 -2.687525 3.551379 0.685202 -0.574938 0.447096 0.664063 0.113281 1 0 1.000000 +0 2.090522 -3.620895 3.551380 0.447218 -0.774621 0.447096 0.613281 0.113281 1 0 1.000000 +0 2.502445 -4.334369 1.180929 0.401715 -0.695791 0.595355 0.613281 0.046875 1 0 1.000000 +holygrail.tga +0 0.869089 -4.928859 1.180929 0.139500 -0.791223 0.595355 0.554688 0.046875 1 0 1.000000 +0 2.502445 -4.334369 1.180929 0.401715 -0.695791 0.595355 0.613281 0.046875 1 0 1.000000 +0 2.090522 -3.620895 3.551380 0.447218 -0.774621 0.447096 0.613281 0.113281 1 0 1.000000 +holygrail.tga +0 2.090522 -3.620895 3.551380 0.447218 -0.774621 0.447096 0.613281 0.113281 1 0 1.000000 +0 0.726029 -4.117528 3.551379 0.155309 -0.880886 0.447096 0.554688 0.113281 1 0 1.000000 +0 0.869089 -4.928859 1.180929 0.139500 -0.791223 0.595355 0.554688 0.046875 1 0 1.000000 +holygrail.tga +0 -0.869091 -4.928859 1.180929 -0.139500 -0.791223 0.595355 0.503906 0.046875 1 0 1.000000 +0 0.869089 -4.928859 1.180929 0.139500 -0.791223 0.595355 0.554688 0.046875 1 0 1.000000 +0 0.726029 -4.117528 3.551379 0.155309 -0.880886 0.447096 0.554688 0.113281 1 0 1.000000 +holygrail.tga +0 0.726029 -4.117528 3.551379 0.155309 -0.880886 0.447096 0.554688 0.113281 1 0 1.000000 +0 -0.726032 -4.117528 3.551379 -0.155309 -0.880886 0.447096 0.503906 0.113281 1 0 1.000000 +0 -0.869091 -4.928859 1.180929 -0.139500 -0.791223 0.595355 0.503906 0.046875 1 0 1.000000 +holygrail.tga +0 -2.502449 -4.334364 1.180929 -0.401715 -0.695791 0.595355 0.449219 0.046875 1 0 1.000000 +0 -0.869091 -4.928859 1.180929 -0.139500 -0.791223 0.595355 0.503906 0.046875 1 0 1.000000 +0 -0.726032 -4.117528 3.551379 -0.155309 -0.880886 0.447096 0.503906 0.113281 1 0 1.000000 +holygrail.tga +0 -0.726032 -4.117528 3.551379 -0.155309 -0.880886 0.447096 0.503906 0.113281 1 0 1.000000 +0 -2.090525 -3.620892 3.551380 -0.447218 -0.774621 0.447096 0.449219 0.113281 1 0 1.000000 +0 -2.502449 -4.334364 1.180929 -0.401715 -0.695791 0.595355 0.449219 0.046875 1 0 1.000000 +holygrail.tga +0 -3.833975 -3.217081 1.180929 -0.615467 -0.516434 0.595355 0.394531 0.046875 1 0 1.000000 +0 -2.502449 -4.334364 1.180929 -0.401715 -0.695791 0.595355 0.449219 0.046875 1 0 1.000000 +0 -2.090525 -3.620892 3.551380 -0.447218 -0.774621 0.447096 0.449219 0.113281 1 0 1.000000 +holygrail.tga +0 -2.090525 -3.620892 3.551380 -0.447218 -0.774621 0.447096 0.449219 0.113281 1 0 1.000000 +0 -3.202872 -2.687522 3.551379 -0.685202 -0.574938 0.447096 0.394531 0.113281 1 0 1.000000 +0 -3.833975 -3.217081 1.180929 -0.615467 -0.516434 0.595355 0.394531 0.046875 1 0 1.000000 +holygrail.tga +0 -4.703066 -1.711772 1.180928 -0.754967 -0.274789 0.595355 0.339844 0.046875 1 0 1.000000 +0 -3.833975 -3.217081 1.180929 -0.615467 -0.516434 0.595355 0.394531 0.046875 1 0 1.000000 +0 -3.202872 -2.687522 3.551379 -0.685202 -0.574938 0.447096 0.394531 0.113281 1 0 1.000000 +holygrail.tga +0 -3.202872 -2.687522 3.551379 -0.685202 -0.574938 0.447096 0.394531 0.113281 1 0 1.000000 +0 -3.928903 -1.429999 3.551379 -0.840510 -0.305918 0.447096 0.339844 0.113281 1 0 1.000000 +0 -4.703066 -1.711772 1.180928 -0.754967 -0.274789 0.595355 0.339844 0.046875 1 0 1.000000 +holygrail.tga +0 -5.004897 0.000003 1.180928 -0.803430 0.000000 0.595355 0.289063 0.046875 1 0 1.000000 +0 -4.703066 -1.711772 1.180928 -0.754967 -0.274789 0.595355 0.339844 0.046875 1 0 1.000000 +0 -3.928903 -1.429999 3.551379 -0.840510 -0.305918 0.447096 0.339844 0.113281 1 0 1.000000 +holygrail.tga +0 -3.928903 -1.429999 3.551379 -0.840510 -0.305918 0.447096 0.339844 0.113281 1 0 1.000000 +0 -4.181049 0.000003 3.551379 -0.894467 0.000000 0.447096 0.289063 0.113281 1 0 1.000000 +0 -5.004897 0.000003 1.180928 -0.803430 0.000000 0.595355 0.289063 0.046875 1 0 1.000000 +holygrail.tga +0 -4.703065 1.711778 1.180930 -0.754967 0.274789 0.595355 0.226563 0.046875 1 0 1.000000 +0 -5.004897 0.000003 1.180928 -0.803430 0.000000 0.595355 0.289063 0.046875 1 0 1.000000 +0 -4.181049 0.000003 3.551379 -0.894467 0.000000 0.447096 0.289063 0.113281 1 0 1.000000 +holygrail.tga +0 -4.181049 0.000003 3.551379 -0.894467 0.000000 0.447096 0.289063 0.113281 1 0 1.000000 +0 -3.928902 1.430005 3.551379 -0.840510 0.305918 0.447096 0.226563 0.113281 1 0 1.000000 +0 -4.703065 1.711778 1.180930 -0.754967 0.274789 0.595355 0.226563 0.046875 1 0 1.000000 +holygrail.tga +0 -3.833973 3.217087 1.180931 -0.615467 0.516434 0.595355 0.171875 0.046875 1 0 1.000000 +0 -4.703065 1.711778 1.180930 -0.754967 0.274789 0.595355 0.226563 0.046875 1 0 1.000000 +0 -3.928902 1.430005 3.551379 -0.840510 0.305918 0.447096 0.226563 0.113281 1 0 1.000000 +holygrail.tga +0 -3.928902 1.430005 3.551379 -0.840510 0.305918 0.447096 0.226563 0.113281 1 0 1.000000 +0 -3.202868 2.687529 3.551382 -0.685202 0.574938 0.447096 0.171875 0.113281 1 0 1.000000 +0 -3.833973 3.217087 1.180931 -0.615467 0.516434 0.595355 0.171875 0.046875 1 0 1.000000 +holygrail.tga +0 -2.502447 4.334371 1.180930 -0.401715 0.695791 0.595355 0.117188 0.046875 1 0 1.000000 +0 -3.833973 3.217087 1.180931 -0.615467 0.516434 0.595355 0.171875 0.046875 1 0 1.000000 +0 -3.202868 2.687529 3.551382 -0.685202 0.574938 0.447096 0.171875 0.113281 1 0 1.000000 +holygrail.tga +0 -3.202868 2.687529 3.551382 -0.685202 0.574938 0.447096 0.171875 0.113281 1 0 1.000000 +0 -2.090523 3.620899 3.551381 -0.447218 0.774621 0.447096 0.117188 0.113281 1 0 1.000000 +0 -2.502447 4.334371 1.180930 -0.401715 0.695791 0.595355 0.117188 0.046875 1 0 1.000000 +holygrail.tga +0 -0.869092 4.928864 1.180930 -0.139500 0.791223 0.595355 0.058594 0.046875 1 0 1.000000 +0 -2.502447 4.334371 1.180930 -0.401715 0.695791 0.595355 0.117188 0.046875 1 0 1.000000 +0 -2.090523 3.620899 3.551381 -0.447218 0.774621 0.447096 0.117188 0.113281 1 0 1.000000 +holygrail.tga +0 -2.090523 3.620899 3.551381 -0.447218 0.774621 0.447096 0.117188 0.113281 1 0 1.000000 +0 -0.726032 4.117534 3.551381 -0.155309 0.880886 0.447096 0.058594 0.113281 1 0 1.000000 +0 -0.869092 4.928864 1.180930 -0.139500 0.791223 0.595355 0.058594 0.046875 1 0 1.000000 +holygrail.tga +0 0.869091 4.928864 1.180930 0.139500 0.791223 0.595355 0.000000 0.046875 1 0 1.000000 +0 -0.869092 4.928864 1.180930 -0.139500 0.791223 0.595355 0.058594 0.046875 1 0 1.000000 +0 -0.726032 4.117534 3.551381 -0.155309 0.880886 0.447096 0.058594 0.113281 1 0 1.000000 +holygrail.tga +0 -0.726032 4.117534 3.551381 -0.155309 0.880886 0.447096 0.058594 0.113281 1 0 1.000000 +0 0.726032 4.117534 3.551381 0.155309 0.880886 0.447096 0.000000 0.113281 1 0 1.000000 +0 0.869091 4.928864 1.180930 0.139500 0.791223 0.595355 0.000000 0.046875 1 0 1.000000 +holygrail.tga +0 2.502450 4.334371 1.180930 0.401715 0.695791 0.595355 0.941406 0.046875 1 0 1.000000 +0 0.869091 4.928864 1.180930 0.139500 0.791223 0.595355 1.000000 0.046875 1 0 1.000000 +0 0.726032 4.117534 3.551381 0.155309 0.880886 0.447096 1.000000 0.113281 1 0 1.000000 +holygrail.tga +0 0.726032 4.117534 3.551381 0.155309 0.880886 0.447096 1.000000 0.113281 1 0 1.000000 +0 2.090526 3.620899 3.551381 0.447218 0.774621 0.447096 0.941406 0.113281 1 0 1.000000 +0 2.502450 4.334371 1.180930 0.401715 0.695791 0.595355 0.941406 0.046875 1 0 1.000000 +holygrail.tga +0 3.833976 3.217088 1.180931 0.615467 0.516434 0.595355 0.886719 0.046875 1 0 1.000000 +0 2.502450 4.334371 1.180930 0.401715 0.695791 0.595355 0.941406 0.046875 1 0 1.000000 +0 2.090526 3.620899 3.551381 0.447218 0.774621 0.447096 0.941406 0.113281 1 0 1.000000 +holygrail.tga +0 2.090526 3.620899 3.551381 0.447218 0.774621 0.447096 0.941406 0.113281 1 0 1.000000 +0 3.202872 2.687529 3.551382 0.685202 0.574938 0.447096 0.886719 0.113281 1 0 1.000000 +0 3.833976 3.217088 1.180931 0.615467 0.516434 0.595355 0.886719 0.046875 1 0 1.000000 +holygrail.tga +0 4.703067 1.711779 1.180930 0.754967 0.274789 0.595355 0.832031 0.046875 1 0 1.000000 +0 3.833976 3.217088 1.180931 0.615467 0.516434 0.595355 0.886719 0.046875 1 0 1.000000 +0 3.202872 2.687529 3.551382 0.685202 0.574938 0.447096 0.886719 0.113281 1 0 1.000000 +holygrail.tga +0 3.202872 2.687529 3.551382 0.685202 0.574938 0.447096 0.886719 0.113281 1 0 1.000000 +0 3.928904 1.430006 3.551379 0.840510 0.305918 0.447096 0.832031 0.113281 1 0 1.000000 +0 4.703067 1.711779 1.180930 0.754967 0.274789 0.595355 0.832031 0.046875 1 0 1.000000 +holygrail.tga +0 5.458378 0.000005 0.823655 0.945036 0.000000 0.326945 0.773438 0.031250 1 0 1.000000 +0 5.129200 1.866878 0.823657 0.888028 0.323222 0.326945 0.832031 0.031250 1 0 1.000000 +0 4.703067 1.711779 1.180930 0.754967 0.274789 0.595355 0.832031 0.046875 1 0 1.000000 +holygrail.tga +0 4.703067 1.711779 1.180930 0.754967 0.274789 0.595355 0.832031 0.046875 1 0 1.000000 +0 5.004897 0.000005 1.180928 0.803430 0.000000 0.595355 0.773438 0.046875 1 0 1.000000 +0 5.458378 0.000005 0.823655 0.945036 0.000000 0.326945 0.773438 0.031250 1 0 1.000000 +holygrail.tga +0 5.129196 -1.866876 0.823655 0.888028 -0.323222 0.326945 0.726563 0.031250 1 0 1.000000 +0 5.458378 0.000005 0.823655 0.945036 0.000000 0.326945 0.773438 0.031250 1 0 1.000000 +0 5.004897 0.000005 1.180928 0.803430 0.000000 0.595355 0.773438 0.046875 1 0 1.000000 +holygrail.tga +0 5.004897 0.000005 1.180928 0.803430 0.000000 0.595355 0.773438 0.046875 1 0 1.000000 +0 4.703063 -1.711777 1.180928 0.754967 -0.274789 0.595355 0.726563 0.046875 1 0 1.000000 +0 5.129196 -1.866876 0.823655 0.888028 -0.323222 0.326945 0.726563 0.031250 1 0 1.000000 +holygrail.tga +0 4.181357 -3.508576 0.823656 0.723930 -0.607440 0.326945 0.664063 0.031250 1 0 1.000000 +0 5.129196 -1.866876 0.823655 0.888028 -0.323222 0.326945 0.726563 0.031250 1 0 1.000000 +0 4.703063 -1.711777 1.180928 0.754967 -0.274789 0.595355 0.726563 0.046875 1 0 1.000000 +holygrail.tga +0 4.703063 -1.711777 1.180928 0.754967 -0.274789 0.595355 0.726563 0.046875 1 0 1.000000 +0 3.833971 -3.217084 1.180929 0.615467 -0.516434 0.595355 0.664063 0.046875 1 0 1.000000 +0 4.181357 -3.508576 0.823656 0.723930 -0.607440 0.326945 0.664063 0.031250 1 0 1.000000 +holygrail.tga +0 2.729186 -4.727095 0.823656 0.472518 -0.818415 0.326945 0.613281 0.031250 1 0 1.000000 +0 4.181357 -3.508576 0.823656 0.723930 -0.607440 0.326945 0.664063 0.031250 1 0 1.000000 +0 3.833971 -3.217084 1.180929 0.615467 -0.516434 0.595355 0.664063 0.046875 1 0 1.000000 +holygrail.tga +0 3.833971 -3.217084 1.180929 0.615467 -0.516434 0.595355 0.664063 0.046875 1 0 1.000000 +0 2.502445 -4.334369 1.180929 0.401715 -0.695791 0.595355 0.613281 0.046875 1 0 1.000000 +0 2.729186 -4.727095 0.823656 0.472518 -0.818415 0.326945 0.613281 0.031250 1 0 1.000000 +holygrail.tga +0 0.947835 -5.375450 0.823656 0.164098 -0.930662 0.326945 0.554688 0.031250 1 0 1.000000 +0 2.729186 -4.727095 0.823656 0.472518 -0.818415 0.326945 0.613281 0.031250 1 0 1.000000 +0 2.502445 -4.334369 1.180929 0.401715 -0.695791 0.595355 0.613281 0.046875 1 0 1.000000 +holygrail.tga +0 2.502445 -4.334369 1.180929 0.401715 -0.695791 0.595355 0.613281 0.046875 1 0 1.000000 +0 0.869089 -4.928859 1.180929 0.139500 -0.791223 0.595355 0.554688 0.046875 1 0 1.000000 +0 0.947835 -5.375450 0.823656 0.164098 -0.930662 0.326945 0.554688 0.031250 1 0 1.000000 +holygrail.tga +0 -0.947838 -5.375450 0.823656 -0.164098 -0.930662 0.326945 0.503906 0.031250 1 0 1.000000 +0 0.947835 -5.375450 0.823656 0.164098 -0.930662 0.326945 0.554688 0.031250 1 0 1.000000 +0 0.869089 -4.928859 1.180929 0.139500 -0.791223 0.595355 0.554688 0.046875 1 0 1.000000 +holygrail.tga +0 0.869089 -4.928859 1.180929 0.139500 -0.791223 0.595355 0.554688 0.046875 1 0 1.000000 +0 -0.869091 -4.928859 1.180929 -0.139500 -0.791223 0.595355 0.503906 0.046875 1 0 1.000000 +0 -0.947838 -5.375450 0.823656 -0.164098 -0.930662 0.326945 0.503906 0.031250 1 0 1.000000 +holygrail.tga +0 -2.729190 -4.727090 0.823656 -0.472518 -0.818415 0.326945 0.449219 0.031250 1 0 1.000000 +0 -0.947838 -5.375450 0.823656 -0.164098 -0.930662 0.326945 0.503906 0.031250 1 0 1.000000 +0 -0.869091 -4.928859 1.180929 -0.139500 -0.791223 0.595355 0.503906 0.046875 1 0 1.000000 +holygrail.tga +0 -0.869091 -4.928859 1.180929 -0.139500 -0.791223 0.595355 0.503906 0.046875 1 0 1.000000 +0 -2.502449 -4.334364 1.180929 -0.401715 -0.695791 0.595355 0.449219 0.046875 1 0 1.000000 +0 -2.729190 -4.727090 0.823656 -0.472518 -0.818415 0.326945 0.449219 0.031250 1 0 1.000000 +holygrail.tga +0 -4.181361 -3.508573 0.823656 -0.723930 -0.607440 0.326945 0.394531 0.031250 1 0 1.000000 +0 -2.729190 -4.727090 0.823656 -0.472518 -0.818415 0.326945 0.449219 0.031250 1 0 1.000000 +0 -2.502449 -4.334364 1.180929 -0.401715 -0.695791 0.595355 0.449219 0.046875 1 0 1.000000 +holygrail.tga +0 -2.502449 -4.334364 1.180929 -0.401715 -0.695791 0.595355 0.449219 0.046875 1 0 1.000000 +0 -3.833975 -3.217081 1.180929 -0.615467 -0.516434 0.595355 0.394531 0.046875 1 0 1.000000 +0 -4.181361 -3.508573 0.823656 -0.723930 -0.607440 0.326945 0.394531 0.031250 1 0 1.000000 +holygrail.tga +0 -3.833975 -3.217081 1.180929 -0.615467 -0.516434 0.595355 0.394531 0.046875 1 0 1.000000 +0 -4.703066 -1.711772 1.180928 -0.754967 -0.274789 0.595355 0.339844 0.046875 1 0 1.000000 +0 -5.129199 -1.866871 0.823655 -0.888028 -0.323222 0.326945 0.339844 0.031250 1 0 1.000000 +holygrail.tga +0 -5.458377 0.000004 0.823655 -0.945036 0.000000 0.326945 0.289063 0.031250 1 0 1.000000 +0 -5.129199 -1.866871 0.823655 -0.888028 -0.323222 0.326945 0.339844 0.031250 1 0 1.000000 +0 -4.703066 -1.711772 1.180928 -0.754967 -0.274789 0.595355 0.339844 0.046875 1 0 1.000000 +holygrail.tga +0 -4.703066 -1.711772 1.180928 -0.754967 -0.274789 0.595355 0.339844 0.046875 1 0 1.000000 +0 -5.004897 0.000003 1.180928 -0.803430 0.000000 0.595355 0.289063 0.046875 1 0 1.000000 +0 -5.458377 0.000004 0.823655 -0.945036 0.000000 0.326945 0.289063 0.031250 1 0 1.000000 +holygrail.tga +0 -5.129197 1.866878 0.823657 -0.888028 0.323222 0.326945 0.226563 0.031250 1 0 1.000000 +0 -5.458377 0.000004 0.823655 -0.945036 0.000000 0.326945 0.289063 0.031250 1 0 1.000000 +0 -5.004897 0.000003 1.180928 -0.803430 0.000000 0.595355 0.289063 0.046875 1 0 1.000000 +holygrail.tga +0 -5.004897 0.000003 1.180928 -0.803430 0.000000 0.595355 0.289063 0.046875 1 0 1.000000 +0 -4.703065 1.711778 1.180930 -0.754967 0.274789 0.595355 0.226563 0.046875 1 0 1.000000 +0 -5.129197 1.866878 0.823657 -0.888028 0.323222 0.326945 0.226563 0.031250 1 0 1.000000 +holygrail.tga +0 -4.181359 3.508579 0.823658 -0.723930 0.607440 0.326945 0.171875 0.031250 1 0 1.000000 +0 -5.129197 1.866878 0.823657 -0.888028 0.323222 0.326945 0.226563 0.031250 1 0 1.000000 +0 -4.703065 1.711778 1.180930 -0.754967 0.274789 0.595355 0.226563 0.046875 1 0 1.000000 +holygrail.tga +0 -4.703065 1.711778 1.180930 -0.754967 0.274789 0.595355 0.226563 0.046875 1 0 1.000000 +0 -3.833973 3.217087 1.180931 -0.615467 0.516434 0.595355 0.171875 0.046875 1 0 1.000000 +0 -4.181359 3.508579 0.823658 -0.723930 0.607440 0.326945 0.171875 0.031250 1 0 1.000000 +holygrail.tga +0 -2.729187 4.727097 0.823657 -0.472518 0.818415 0.326945 0.117188 0.031250 1 0 1.000000 +0 -4.181359 3.508579 0.823658 -0.723930 0.607440 0.326945 0.171875 0.031250 1 0 1.000000 +0 -3.833973 3.217087 1.180931 -0.615467 0.516434 0.595355 0.171875 0.046875 1 0 1.000000 +holygrail.tga +0 -3.833973 3.217087 1.180931 -0.615467 0.516434 0.595355 0.171875 0.046875 1 0 1.000000 +0 -2.502447 4.334371 1.180930 -0.401715 0.695791 0.595355 0.117188 0.046875 1 0 1.000000 +0 -2.729187 4.727097 0.823657 -0.472518 0.818415 0.326945 0.117188 0.031250 1 0 1.000000 +holygrail.tga +0 -0.947838 5.375456 0.823657 -0.164098 0.930662 0.326945 0.058594 0.031250 1 0 1.000000 +0 -2.729187 4.727097 0.823657 -0.472518 0.818415 0.326945 0.117188 0.031250 1 0 1.000000 +0 -2.502447 4.334371 1.180930 -0.401715 0.695791 0.595355 0.117188 0.046875 1 0 1.000000 +holygrail.tga +0 -2.502447 4.334371 1.180930 -0.401715 0.695791 0.595355 0.117188 0.046875 1 0 1.000000 +0 -0.869092 4.928864 1.180930 -0.139500 0.791223 0.595355 0.058594 0.046875 1 0 1.000000 +0 -0.947838 5.375456 0.823657 -0.164098 0.930662 0.326945 0.058594 0.031250 1 0 1.000000 +holygrail.tga +0 0.947837 5.375456 0.823657 0.164098 0.930662 0.326945 0.000000 0.031250 1 0 1.000000 +0 -0.947838 5.375456 0.823657 -0.164098 0.930662 0.326945 0.058594 0.031250 1 0 1.000000 +0 -0.869092 4.928864 1.180930 -0.139500 0.791223 0.595355 0.058594 0.046875 1 0 1.000000 +holygrail.tga +0 -0.869092 4.928864 1.180930 -0.139500 0.791223 0.595355 0.058594 0.046875 1 0 1.000000 +0 0.869091 4.928864 1.180930 0.139500 0.791223 0.595355 0.000000 0.046875 1 0 1.000000 +0 0.947837 5.375456 0.823657 0.164098 0.930662 0.326945 0.000000 0.031250 1 0 1.000000 +holygrail.tga +0 2.729190 4.727097 0.823657 0.472518 0.818415 0.326945 0.941406 0.031250 1 0 1.000000 +0 0.947837 5.375456 0.823657 0.164098 0.930662 0.326945 1.000000 0.031250 1 0 1.000000 +0 0.869091 4.928864 1.180930 0.139500 0.791223 0.595355 1.000000 0.046875 1 0 1.000000 +holygrail.tga +0 0.869091 4.928864 1.180930 0.139500 0.791223 0.595355 1.000000 0.046875 1 0 1.000000 +0 2.502450 4.334371 1.180930 0.401715 0.695791 0.595355 0.941406 0.046875 1 0 1.000000 +0 2.729190 4.727097 0.823657 0.472518 0.818415 0.326945 0.941406 0.031250 1 0 1.000000 +holygrail.tga +0 4.181362 3.508579 0.823658 0.723930 0.607440 0.326945 0.886719 0.031250 1 0 1.000000 +0 2.729190 4.727097 0.823657 0.472518 0.818415 0.326945 0.941406 0.031250 1 0 1.000000 +0 2.502450 4.334371 1.180930 0.401715 0.695791 0.595355 0.941406 0.046875 1 0 1.000000 +holygrail.tga +0 2.502450 4.334371 1.180930 0.401715 0.695791 0.595355 0.941406 0.046875 1 0 1.000000 +0 3.833976 3.217088 1.180931 0.615467 0.516434 0.595355 0.886719 0.046875 1 0 1.000000 +0 4.181362 3.508579 0.823658 0.723930 0.607440 0.326945 0.886719 0.031250 1 0 1.000000 +holygrail.tga +0 5.129200 1.866878 0.823657 0.888028 0.323222 0.326945 0.832031 0.031250 1 0 1.000000 +0 4.181362 3.508579 0.823658 0.723930 0.607440 0.326945 0.886719 0.031250 1 0 1.000000 +0 3.833976 3.217088 1.180931 0.615467 0.516434 0.595355 0.886719 0.046875 1 0 1.000000 +holygrail.tga +0 3.833976 3.217088 1.180931 0.615467 0.516434 0.595355 0.886719 0.046875 1 0 1.000000 +0 4.703067 1.711779 1.180930 0.754967 0.274789 0.595355 0.832031 0.046875 1 0 1.000000 +0 5.129200 1.866878 0.823657 0.888028 0.323222 0.326945 0.832031 0.031250 1 0 1.000000 +holygrail.tga +0 5.367682 0.000005 0.377064 0.780297 0.000000 -0.625355 0.773438 0.011719 1 0 1.000000 +0 5.043973 1.835858 0.377065 0.733238 0.266884 -0.625355 0.832031 0.011719 1 0 1.000000 +0 5.129200 1.866878 0.823657 0.888028 0.323222 0.326945 0.832031 0.031250 1 0 1.000000 +holygrail.tga +0 5.129200 1.866878 0.823657 0.888028 0.323222 0.326945 0.832031 0.031250 1 0 1.000000 +0 5.458378 0.000005 0.823655 0.945036 0.000000 0.326945 0.773438 0.031250 1 0 1.000000 +0 5.367682 0.000005 0.377064 0.780297 0.000000 -0.625355 0.773438 0.011719 1 0 1.000000 +holygrail.tga +0 5.043969 -1.835857 0.377064 0.733238 -0.266884 -0.625355 0.726563 0.011719 1 0 1.000000 +0 5.367682 0.000005 0.377064 0.780297 0.000000 -0.625355 0.773438 0.011719 1 0 1.000000 +0 5.458378 0.000005 0.823655 0.945036 0.000000 0.326945 0.773438 0.031250 1 0 1.000000 +holygrail.tga +0 5.458378 0.000005 0.823655 0.945036 0.000000 0.326945 0.773438 0.031250 1 0 1.000000 +0 5.129196 -1.866876 0.823655 0.888028 -0.323222 0.326945 0.726563 0.031250 1 0 1.000000 +0 5.043969 -1.835857 0.377064 0.733238 -0.266884 -0.625355 0.726563 0.011719 1 0 1.000000 +holygrail.tga +0 4.111880 -3.450277 0.377065 0.597736 -0.501572 -0.625355 0.664063 0.011719 1 0 1.000000 +0 5.043969 -1.835857 0.377064 0.733238 -0.266884 -0.625355 0.726563 0.011719 1 0 1.000000 +0 5.129196 -1.866876 0.823655 0.888028 -0.323222 0.326945 0.726563 0.031250 1 0 1.000000 +holygrail.tga +0 5.129196 -1.866876 0.823655 0.888028 -0.323222 0.326945 0.726563 0.031250 1 0 1.000000 +0 4.181357 -3.508576 0.823656 0.723930 -0.607440 0.326945 0.664063 0.031250 1 0 1.000000 +0 4.111880 -3.450277 0.377065 0.597736 -0.501572 -0.625355 0.664063 0.011719 1 0 1.000000 +holygrail.tga +0 2.683838 -4.648550 0.377065 0.390149 -0.675771 -0.625355 0.613281 0.011719 1 0 1.000000 +0 4.111880 -3.450277 0.377065 0.597736 -0.501572 -0.625355 0.664063 0.011719 1 0 1.000000 +0 4.181357 -3.508576 0.823656 0.723930 -0.607440 0.326945 0.664063 0.031250 1 0 1.000000 +holygrail.tga +0 4.181357 -3.508576 0.823656 0.723930 -0.607440 0.326945 0.664063 0.031250 1 0 1.000000 +0 2.729186 -4.727095 0.823656 0.472518 -0.818415 0.326945 0.613281 0.031250 1 0 1.000000 +0 2.683838 -4.648550 0.377065 0.390149 -0.675771 -0.625355 0.613281 0.011719 1 0 1.000000 +holygrail.tga +0 0.932086 -5.286132 0.377065 0.135472 -0.768456 -0.625355 0.554688 0.011719 1 0 1.000000 +0 2.683838 -4.648550 0.377065 0.390149 -0.675771 -0.625355 0.613281 0.011719 1 0 1.000000 +0 2.729186 -4.727095 0.823656 0.472518 -0.818415 0.326945 0.613281 0.031250 1 0 1.000000 +holygrail.tga +0 2.729186 -4.727095 0.823656 0.472518 -0.818415 0.326945 0.613281 0.031250 1 0 1.000000 +0 0.947835 -5.375450 0.823656 0.164098 -0.930662 0.326945 0.554688 0.031250 1 0 1.000000 +0 0.932086 -5.286132 0.377065 0.135472 -0.768456 -0.625355 0.554688 0.011719 1 0 1.000000 +holygrail.tga +0 -0.932088 -5.286132 0.377065 -0.135472 -0.768456 -0.625355 0.503906 0.011719 1 0 1.000000 +0 0.932086 -5.286132 0.377065 0.135472 -0.768456 -0.625355 0.554688 0.011719 1 0 1.000000 +0 0.947835 -5.375450 0.823656 0.164098 -0.930662 0.326945 0.554688 0.031250 1 0 1.000000 +holygrail.tga +0 0.947835 -5.375450 0.823656 0.164098 -0.930662 0.326945 0.554688 0.031250 1 0 1.000000 +0 -0.947838 -5.375450 0.823656 -0.164098 -0.930662 0.326945 0.503906 0.031250 1 0 1.000000 +0 -0.932088 -5.286132 0.377065 -0.135472 -0.768456 -0.625355 0.503906 0.011719 1 0 1.000000 +holygrail.tga +0 -2.683842 -4.648545 0.377065 -0.390149 -0.675771 -0.625355 0.449219 0.011719 1 0 1.000000 +0 -0.932088 -5.286132 0.377065 -0.135472 -0.768456 -0.625355 0.503906 0.011719 1 0 1.000000 +0 -0.947838 -5.375450 0.823656 -0.164098 -0.930662 0.326945 0.503906 0.031250 1 0 1.000000 +holygrail.tga +0 -0.947838 -5.375450 0.823656 -0.164098 -0.930662 0.326945 0.503906 0.031250 1 0 1.000000 +0 -2.729190 -4.727090 0.823656 -0.472518 -0.818415 0.326945 0.449219 0.031250 1 0 1.000000 +0 -2.683842 -4.648545 0.377065 -0.390149 -0.675771 -0.625355 0.449219 0.011719 1 0 1.000000 +holygrail.tga +0 -4.111884 -3.450274 0.377065 -0.597736 -0.501572 -0.625355 0.394531 0.011719 1 0 1.000000 +0 -2.683842 -4.648545 0.377065 -0.390149 -0.675771 -0.625355 0.449219 0.011719 1 0 1.000000 +0 -2.729190 -4.727090 0.823656 -0.472518 -0.818415 0.326945 0.449219 0.031250 1 0 1.000000 +holygrail.tga +0 -2.729190 -4.727090 0.823656 -0.472518 -0.818415 0.326945 0.449219 0.031250 1 0 1.000000 +0 -4.181361 -3.508573 0.823656 -0.723930 -0.607440 0.326945 0.394531 0.031250 1 0 1.000000 +0 -4.111884 -3.450274 0.377065 -0.597736 -0.501572 -0.625355 0.394531 0.011719 1 0 1.000000 +holygrail.tga +0 -5.043972 -1.835851 0.377064 -0.733238 -0.266884 -0.625355 0.339844 0.011719 1 0 1.000000 +0 -4.111884 -3.450274 0.377065 -0.597736 -0.501572 -0.625355 0.394531 0.011719 1 0 1.000000 +0 -4.181361 -3.508573 0.823656 -0.723930 -0.607440 0.326945 0.394531 0.031250 1 0 1.000000 +holygrail.tga +0 -4.181361 -3.508573 0.823656 -0.723930 -0.607440 0.326945 0.394531 0.031250 1 0 1.000000 +0 -5.129199 -1.866871 0.823655 -0.888028 -0.323222 0.326945 0.339844 0.031250 1 0 1.000000 +0 -5.043972 -1.835851 0.377064 -0.733238 -0.266884 -0.625355 0.339844 0.011719 1 0 1.000000 +holygrail.tga +0 -5.367681 0.000004 0.377064 -0.780297 0.000000 -0.625355 0.289063 0.011719 1 0 1.000000 +0 -5.043972 -1.835851 0.377064 -0.733238 -0.266884 -0.625355 0.339844 0.011719 1 0 1.000000 +0 -5.129199 -1.866871 0.823655 -0.888028 -0.323222 0.326945 0.339844 0.031250 1 0 1.000000 +holygrail.tga +0 -5.129199 -1.866871 0.823655 -0.888028 -0.323222 0.326945 0.339844 0.031250 1 0 1.000000 +0 -5.458377 0.000004 0.823655 -0.945036 0.000000 0.326945 0.289063 0.031250 1 0 1.000000 +0 -5.367681 0.000004 0.377064 -0.780297 0.000000 -0.625355 0.289063 0.011719 1 0 1.000000 +holygrail.tga +0 -5.043971 1.835858 0.377065 -0.733238 0.266884 -0.625355 0.226563 0.011719 1 0 1.000000 +0 -5.367681 0.000004 0.377064 -0.780297 0.000000 -0.625355 0.289063 0.011719 1 0 1.000000 +0 -5.458377 0.000004 0.823655 -0.945036 0.000000 0.326945 0.289063 0.031250 1 0 1.000000 +holygrail.tga +0 -5.458377 0.000004 0.823655 -0.945036 0.000000 0.326945 0.289063 0.031250 1 0 1.000000 +0 -5.129197 1.866878 0.823657 -0.888028 0.323222 0.326945 0.226563 0.031250 1 0 1.000000 +0 -5.043971 1.835858 0.377065 -0.733238 0.266884 -0.625355 0.226563 0.011719 1 0 1.000000 +holygrail.tga +0 -4.111882 3.450281 0.377067 -0.597736 0.501572 -0.625355 0.171875 0.011719 1 0 1.000000 +0 -5.043971 1.835858 0.377065 -0.733238 0.266884 -0.625355 0.226563 0.011719 1 0 1.000000 +0 -5.129197 1.866878 0.823657 -0.888028 0.323222 0.326945 0.226563 0.031250 1 0 1.000000 +holygrail.tga +0 -5.129197 1.866878 0.823657 -0.888028 0.323222 0.326945 0.226563 0.031250 1 0 1.000000 +0 -4.181359 3.508579 0.823658 -0.723930 0.607440 0.326945 0.171875 0.031250 1 0 1.000000 +0 -4.111882 3.450281 0.377067 -0.597736 0.501572 -0.625355 0.171875 0.011719 1 0 1.000000 +holygrail.tga +0 -2.683839 4.648551 0.377066 -0.390149 0.675771 -0.625355 0.117188 0.011719 1 0 1.000000 +0 -4.111882 3.450281 0.377067 -0.597736 0.501572 -0.625355 0.171875 0.011719 1 0 1.000000 +0 -4.181359 3.508579 0.823658 -0.723930 0.607440 0.326945 0.171875 0.031250 1 0 1.000000 +holygrail.tga +0 -4.181359 3.508579 0.823658 -0.723930 0.607440 0.326945 0.171875 0.031250 1 0 1.000000 +0 -2.729187 4.727097 0.823657 -0.472518 0.818415 0.326945 0.117188 0.031250 1 0 1.000000 +0 -2.683839 4.648551 0.377066 -0.390149 0.675771 -0.625355 0.117188 0.011719 1 0 1.000000 +holygrail.tga +0 -0.932089 5.286138 0.377066 -0.135472 0.768456 -0.625355 0.058594 0.011719 1 0 1.000000 +0 -2.683839 4.648551 0.377066 -0.390149 0.675771 -0.625355 0.117188 0.011719 1 0 1.000000 +0 -2.729187 4.727097 0.823657 -0.472518 0.818415 0.326945 0.117188 0.031250 1 0 1.000000 +holygrail.tga +0 -2.729187 4.727097 0.823657 -0.472518 0.818415 0.326945 0.117188 0.031250 1 0 1.000000 +0 -0.947838 5.375456 0.823657 -0.164098 0.930662 0.326945 0.058594 0.031250 1 0 1.000000 +0 -0.932089 5.286138 0.377066 -0.135472 0.768456 -0.625355 0.058594 0.011719 1 0 1.000000 +holygrail.tga +0 0.932088 5.286138 0.377066 0.135472 0.768456 -0.625355 0.000000 0.011719 1 0 1.000000 +0 -0.932089 5.286138 0.377066 -0.135472 0.768456 -0.625355 0.058594 0.011719 1 0 1.000000 +0 -0.947838 5.375456 0.823657 -0.164098 0.930662 0.326945 0.058594 0.031250 1 0 1.000000 +holygrail.tga +0 -0.947838 5.375456 0.823657 -0.164098 0.930662 0.326945 0.058594 0.031250 1 0 1.000000 +0 0.947837 5.375456 0.823657 0.164098 0.930662 0.326945 0.000000 0.031250 1 0 1.000000 +0 0.932088 5.286138 0.377066 0.135472 0.768456 -0.625355 0.000000 0.011719 1 0 1.000000 +holygrail.tga +0 2.683842 4.648551 0.377066 0.390149 0.675771 -0.625355 0.941406 0.011719 1 0 1.000000 +0 0.932088 5.286138 0.377066 0.135472 0.768456 -0.625355 1.000000 0.011719 1 0 1.000000 +0 0.947837 5.375456 0.823657 0.164098 0.930662 0.326945 1.000000 0.031250 1 0 1.000000 +holygrail.tga +0 0.947837 5.375456 0.823657 0.164098 0.930662 0.326945 1.000000 0.031250 1 0 1.000000 +0 2.729190 4.727097 0.823657 0.472518 0.818415 0.326945 0.941406 0.031250 1 0 1.000000 +0 2.683842 4.648551 0.377066 0.390149 0.675771 -0.625355 0.941406 0.011719 1 0 1.000000 +holygrail.tga +0 4.111885 3.450281 0.377067 0.597736 0.501572 -0.625355 0.886719 0.011719 1 0 1.000000 +0 2.683842 4.648551 0.377066 0.390149 0.675771 -0.625355 0.941406 0.011719 1 0 1.000000 +0 2.729190 4.727097 0.823657 0.472518 0.818415 0.326945 0.941406 0.031250 1 0 1.000000 +holygrail.tga +0 2.729190 4.727097 0.823657 0.472518 0.818415 0.326945 0.941406 0.031250 1 0 1.000000 +0 4.181362 3.508579 0.823658 0.723930 0.607440 0.326945 0.886719 0.031250 1 0 1.000000 +0 4.111885 3.450281 0.377067 0.597736 0.501572 -0.625355 0.886719 0.011719 1 0 1.000000 +holygrail.tga +0 5.043973 1.835858 0.377065 0.733238 0.266884 -0.625355 0.832031 0.011719 1 0 1.000000 +0 4.111885 3.450281 0.377067 0.597736 0.501572 -0.625355 0.886719 0.011719 1 0 1.000000 +0 4.181362 3.508579 0.823658 0.723930 0.607440 0.326945 0.886719 0.031250 1 0 1.000000 +holygrail.tga +0 4.181362 3.508579 0.823658 0.723930 0.607440 0.326945 0.886719 0.031250 1 0 1.000000 +0 5.129200 1.866878 0.823657 0.888028 0.323222 0.326945 0.832031 0.031250 1 0 1.000000 +0 5.043973 1.835858 0.377065 0.733238 0.266884 -0.625355 0.832031 0.011719 1 0 1.000000 +holygrail.tga +0 4.642112 0.000006 0.109110 0.194769 0.000000 -0.980834 0.773438 0.000000 1 0 1.000000 +0 4.362160 1.587699 0.109111 0.183020 0.066591 -0.980834 0.832031 0.000000 1 0 1.000000 +0 5.043973 1.835858 0.377065 0.733238 0.266884 -0.625355 0.832031 0.011719 1 0 1.000000 +holygrail.tga +0 5.043973 1.835858 0.377065 0.733238 0.266884 -0.625355 0.832031 0.011719 1 0 1.000000 +0 5.367682 0.000005 0.377064 0.780297 0.000000 -0.625355 0.773438 0.011719 1 0 1.000000 +0 4.642112 0.000006 0.109110 0.194769 0.000000 -0.980834 0.773438 0.000000 1 0 1.000000 +holygrail.tga +0 4.362156 -1.587696 0.109110 0.183020 -0.066591 -0.980834 0.726563 0.000000 1 0 1.000000 +0 4.642112 0.000006 0.109110 0.194769 0.000000 -0.980834 0.773438 0.000000 1 0 1.000000 +0 5.367682 0.000005 0.377064 0.780297 0.000000 -0.625355 0.773438 0.011719 1 0 1.000000 +holygrail.tga +0 5.367682 0.000005 0.377064 0.780297 0.000000 -0.625355 0.773438 0.011719 1 0 1.000000 +0 5.043969 -1.835857 0.377064 0.733238 -0.266884 -0.625355 0.726563 0.011719 1 0 1.000000 +0 4.362156 -1.587696 0.109110 0.183020 -0.066591 -0.980834 0.726563 0.000000 1 0 1.000000 +holygrail.tga +0 3.556062 -2.983890 0.109111 0.149174 -0.125187 -0.980834 0.664063 0.000000 1 0 1.000000 +0 4.362156 -1.587696 0.109110 0.183020 -0.066591 -0.980834 0.726563 0.000000 1 0 1.000000 +0 5.043969 -1.835857 0.377064 0.733238 -0.266884 -0.625355 0.726563 0.011719 1 0 1.000000 +holygrail.tga +0 5.043969 -1.835857 0.377064 0.733238 -0.266884 -0.625355 0.726563 0.011719 1 0 1.000000 +0 4.111880 -3.450277 0.377065 0.597736 -0.501572 -0.625355 0.664063 0.011719 1 0 1.000000 +0 3.556062 -2.983890 0.109111 0.149174 -0.125187 -0.980834 0.664063 0.000000 1 0 1.000000 +holygrail.tga +0 2.321053 -4.020187 0.109110 0.097385 -0.168676 -0.980834 0.613281 0.000000 1 0 1.000000 +0 3.556062 -2.983890 0.109111 0.149174 -0.125187 -0.980834 0.664063 0.000000 1 0 1.000000 +0 4.111880 -3.450277 0.377065 0.597736 -0.501572 -0.625355 0.664063 0.011719 1 0 1.000000 +holygrail.tga +0 4.111880 -3.450277 0.377065 0.597736 -0.501572 -0.625355 0.664063 0.011719 1 0 1.000000 +0 2.683838 -4.648550 0.377065 0.390149 -0.675771 -0.625355 0.613281 0.011719 1 0 1.000000 +0 2.321053 -4.020187 0.109110 0.097385 -0.168676 -0.980834 0.613281 0.000000 1 0 1.000000 +holygrail.tga +0 0.806092 -4.571585 0.109110 0.033815 -0.191809 -0.980834 0.554688 0.000000 1 0 1.000000 +0 2.321053 -4.020187 0.109110 0.097385 -0.168676 -0.980834 0.613281 0.000000 1 0 1.000000 +0 2.683838 -4.648550 0.377065 0.390149 -0.675771 -0.625355 0.613281 0.011719 1 0 1.000000 +holygrail.tga +0 2.683838 -4.648550 0.377065 0.390149 -0.675771 -0.625355 0.613281 0.011719 1 0 1.000000 +0 0.932086 -5.286132 0.377065 0.135472 -0.768456 -0.625355 0.554688 0.011719 1 0 1.000000 +0 0.806092 -4.571585 0.109110 0.033815 -0.191809 -0.980834 0.554688 0.000000 1 0 1.000000 +holygrail.tga +0 -0.806094 -4.571585 0.109110 -0.033815 -0.191809 -0.980834 0.503906 0.000000 1 0 1.000000 +0 0.806092 -4.571585 0.109110 0.033815 -0.191809 -0.980834 0.554688 0.000000 1 0 1.000000 +0 0.932086 -5.286132 0.377065 0.135472 -0.768456 -0.625355 0.554688 0.011719 1 0 1.000000 +holygrail.tga +0 0.932086 -5.286132 0.377065 0.135472 -0.768456 -0.625355 0.554688 0.011719 1 0 1.000000 +0 -0.932088 -5.286132 0.377065 -0.135472 -0.768456 -0.625355 0.503906 0.011719 1 0 1.000000 +0 -0.806094 -4.571585 0.109110 -0.033815 -0.191809 -0.980834 0.503906 0.000000 1 0 1.000000 +holygrail.tga +0 -2.321057 -4.020183 0.109110 -0.097385 -0.168676 -0.980834 0.449219 0.000000 1 0 1.000000 +0 -0.806094 -4.571585 0.109110 -0.033815 -0.191809 -0.980834 0.503906 0.000000 1 0 1.000000 +0 -0.932088 -5.286132 0.377065 -0.135472 -0.768456 -0.625355 0.503906 0.011719 1 0 1.000000 +holygrail.tga +0 -0.932088 -5.286132 0.377065 -0.135472 -0.768456 -0.625355 0.503906 0.011719 1 0 1.000000 +0 -2.683842 -4.648545 0.377065 -0.390149 -0.675771 -0.625355 0.449219 0.011719 1 0 1.000000 +0 -2.321057 -4.020183 0.109110 -0.097385 -0.168676 -0.980834 0.449219 0.000000 1 0 1.000000 +holygrail.tga +0 -3.556065 -2.983887 0.109111 -0.149174 -0.125187 -0.980834 0.394531 0.000000 1 0 1.000000 +0 -2.321057 -4.020183 0.109110 -0.097385 -0.168676 -0.980834 0.449219 0.000000 1 0 1.000000 +0 -2.683842 -4.648545 0.377065 -0.390149 -0.675771 -0.625355 0.449219 0.011719 1 0 1.000000 +holygrail.tga +0 -2.683842 -4.648545 0.377065 -0.390149 -0.675771 -0.625355 0.449219 0.011719 1 0 1.000000 +0 -4.111884 -3.450274 0.377065 -0.597736 -0.501572 -0.625355 0.394531 0.011719 1 0 1.000000 +0 -3.556065 -2.983887 0.109111 -0.149174 -0.125187 -0.980834 0.394531 0.000000 1 0 1.000000 +holygrail.tga +0 -4.362159 -1.587692 0.109110 -0.183020 -0.066591 -0.980834 0.339844 0.000000 1 0 1.000000 +0 -3.556065 -2.983887 0.109111 -0.149174 -0.125187 -0.980834 0.394531 0.000000 1 0 1.000000 +0 -4.111884 -3.450274 0.377065 -0.597736 -0.501572 -0.625355 0.394531 0.011719 1 0 1.000000 +holygrail.tga +0 -4.111884 -3.450274 0.377065 -0.597736 -0.501572 -0.625355 0.394531 0.011719 1 0 1.000000 +0 -5.043972 -1.835851 0.377064 -0.733238 -0.266884 -0.625355 0.339844 0.011719 1 0 1.000000 +0 -4.362159 -1.587692 0.109110 -0.183020 -0.066591 -0.980834 0.339844 0.000000 1 0 1.000000 +holygrail.tga +0 -4.642111 0.000003 0.109110 -0.194769 0.000000 -0.980834 0.289063 0.000000 1 0 1.000000 +0 -4.362159 -1.587692 0.109110 -0.183020 -0.066591 -0.980834 0.339844 0.000000 1 0 1.000000 +0 -5.043972 -1.835851 0.377064 -0.733238 -0.266884 -0.625355 0.339844 0.011719 1 0 1.000000 +holygrail.tga +0 -5.043972 -1.835851 0.377064 -0.733238 -0.266884 -0.625355 0.339844 0.011719 1 0 1.000000 +0 -5.367681 0.000004 0.377064 -0.780297 0.000000 -0.625355 0.289063 0.011719 1 0 1.000000 +0 -4.642111 0.000003 0.109110 -0.194769 0.000000 -0.980834 0.289063 0.000000 1 0 1.000000 +holygrail.tga +0 -4.362158 1.587698 0.109111 -0.183020 0.066591 -0.980834 0.226563 0.000000 1 0 1.000000 +0 -4.642111 0.000003 0.109110 -0.194769 0.000000 -0.980834 0.289063 0.000000 1 0 1.000000 +0 -5.367681 0.000004 0.377064 -0.780297 0.000000 -0.625355 0.289063 0.011719 1 0 1.000000 +holygrail.tga +0 -5.367681 0.000004 0.377064 -0.780297 0.000000 -0.625355 0.289063 0.011719 1 0 1.000000 +0 -5.043971 1.835858 0.377065 -0.733238 0.266884 -0.625355 0.226563 0.011719 1 0 1.000000 +0 -4.362158 1.587698 0.109111 -0.183020 0.066591 -0.980834 0.226563 0.000000 1 0 1.000000 +holygrail.tga +0 -3.556063 2.983893 0.109113 -0.149174 0.125187 -0.980834 0.171875 0.000000 1 0 1.000000 +0 -4.362158 1.587698 0.109111 -0.183020 0.066591 -0.980834 0.226563 0.000000 1 0 1.000000 +0 -5.043971 1.835858 0.377065 -0.733238 0.266884 -0.625355 0.226563 0.011719 1 0 1.000000 +holygrail.tga +0 -5.043971 1.835858 0.377065 -0.733238 0.266884 -0.625355 0.226563 0.011719 1 0 1.000000 +0 -4.111882 3.450281 0.377067 -0.597736 0.501572 -0.625355 0.171875 0.011719 1 0 1.000000 +0 -3.556063 2.983893 0.109113 -0.149174 0.125187 -0.980834 0.171875 0.000000 1 0 1.000000 +holygrail.tga +0 -2.321054 4.020190 0.109112 -0.097385 0.168676 -0.980834 0.117188 0.000000 1 0 1.000000 +0 -3.556063 2.983893 0.109113 -0.149174 0.125187 -0.980834 0.171875 0.000000 1 0 1.000000 +0 -4.111882 3.450281 0.377067 -0.597736 0.501572 -0.625355 0.171875 0.011719 1 0 1.000000 +holygrail.tga +0 -4.111882 3.450281 0.377067 -0.597736 0.501572 -0.625355 0.171875 0.011719 1 0 1.000000 +0 -2.683839 4.648551 0.377066 -0.390149 0.675771 -0.625355 0.117188 0.011719 1 0 1.000000 +0 -2.321054 4.020190 0.109112 -0.097385 0.168676 -0.980834 0.117188 0.000000 1 0 1.000000 +holygrail.tga +0 -0.806095 4.571591 0.109112 -0.033815 0.191809 -0.980834 0.058594 0.000000 1 0 1.000000 +0 -2.321054 4.020190 0.109112 -0.097385 0.168676 -0.980834 0.117188 0.000000 1 0 1.000000 +0 -2.683839 4.648551 0.377066 -0.390149 0.675771 -0.625355 0.117188 0.011719 1 0 1.000000 +holygrail.tga +0 -2.683839 4.648551 0.377066 -0.390149 0.675771 -0.625355 0.117188 0.011719 1 0 1.000000 +0 -0.932089 5.286138 0.377066 -0.135472 0.768456 -0.625355 0.058594 0.011719 1 0 1.000000 +0 -0.806095 4.571591 0.109112 -0.033815 0.191809 -0.980834 0.058594 0.000000 1 0 1.000000 +holygrail.tga +0 0.806094 4.571591 0.109112 0.033815 0.191809 -0.980834 0.000000 0.000000 1 0 1.000000 +0 -0.806095 4.571591 0.109112 -0.033815 0.191809 -0.980834 0.058594 0.000000 1 0 1.000000 +0 -0.932089 5.286138 0.377066 -0.135472 0.768456 -0.625355 0.058594 0.011719 1 0 1.000000 +holygrail.tga +0 -0.932089 5.286138 0.377066 -0.135472 0.768456 -0.625355 0.058594 0.011719 1 0 1.000000 +0 0.932088 5.286138 0.377066 0.135472 0.768456 -0.625355 0.000000 0.011719 1 0 1.000000 +0 0.806094 4.571591 0.109112 0.033815 0.191809 -0.980834 0.000000 0.000000 1 0 1.000000 +holygrail.tga +0 2.321057 4.020190 0.109112 0.097385 0.168645 -0.980834 0.941406 0.000000 1 0 1.000000 +0 0.806094 4.571591 0.109112 0.033815 0.191809 -0.980834 1.000000 0.000000 1 0 1.000000 +0 0.932088 5.286138 0.377066 0.135472 0.768456 -0.625355 1.000000 0.011719 1 0 1.000000 +holygrail.tga +0 0.932088 5.286138 0.377066 0.135472 0.768456 -0.625355 1.000000 0.011719 1 0 1.000000 +0 2.683842 4.648551 0.377066 0.390149 0.675771 -0.625355 0.941406 0.011719 1 0 1.000000 +0 2.321057 4.020190 0.109112 0.097385 0.168645 -0.980834 0.941406 0.000000 1 0 1.000000 +holygrail.tga +0 3.556066 2.983894 0.109113 0.149174 0.125187 -0.980834 0.886719 0.000000 1 0 1.000000 +0 2.321057 4.020190 0.109112 0.097385 0.168645 -0.980834 0.941406 0.000000 1 0 1.000000 +0 2.683842 4.648551 0.377066 0.390149 0.675771 -0.625355 0.941406 0.011719 1 0 1.000000 +holygrail.tga +0 2.683842 4.648551 0.377066 0.390149 0.675771 -0.625355 0.941406 0.011719 1 0 1.000000 +0 4.111885 3.450281 0.377067 0.597736 0.501572 -0.625355 0.886719 0.011719 1 0 1.000000 +0 3.556066 2.983894 0.109113 0.149174 0.125187 -0.980834 0.886719 0.000000 1 0 1.000000 +holygrail.tga +0 4.362160 1.587699 0.109111 0.183020 0.066591 -0.980834 0.832031 0.000000 1 0 1.000000 +0 3.556066 2.983894 0.109113 0.149174 0.125187 -0.980834 0.886719 0.000000 1 0 1.000000 +0 4.111885 3.450281 0.377067 0.597736 0.501572 -0.625355 0.886719 0.011719 1 0 1.000000 +holygrail.tga +0 4.111885 3.450281 0.377067 0.597736 0.501572 -0.625355 0.886719 0.011719 1 0 1.000000 +0 5.043973 1.835858 0.377065 0.733238 0.266884 -0.625355 0.832031 0.011719 1 0 1.000000 +0 4.362160 1.587699 0.109111 0.183020 0.066591 -0.980834 0.832031 0.000000 1 0 1.000000 +holygrail.tga +0 7.441395 2.708446 23.414263 -0.256661 -0.093417 0.961974 0.832031 0.835938 1 0 1.000000 +0 7.918965 0.000000 23.414259 -0.273141 0.000000 0.961943 0.773438 0.835938 1 0 1.000000 +0 8.373683 0.000000 23.281614 0.821619 0.000000 0.569994 0.773438 0.816406 1 0 1.000000 +holygrail.tga +0 8.373683 0.000000 23.281614 0.821619 0.000000 0.569994 0.773438 0.816406 1 0 1.000000 +0 7.868691 2.863969 23.281614 0.772057 0.280984 0.569994 0.832031 0.816406 1 0 1.000000 +0 7.441395 2.708446 23.414263 -0.256661 -0.093417 0.961974 0.832031 0.835938 1 0 1.000000 +holygrail.tga +0 6.066281 5.090213 23.414265 -0.209235 -0.175542 0.961943 0.886719 0.835938 1 0 1.000000 +0 7.441395 2.708446 23.414263 -0.256661 -0.093417 0.961974 0.832031 0.835938 1 0 1.000000 +0 7.868691 2.863969 23.281614 0.772057 0.280984 0.569994 0.832031 0.816406 1 0 1.000000 +holygrail.tga +0 7.868691 2.863969 23.281614 0.772057 0.280984 0.569994 0.832031 0.816406 1 0 1.000000 +0 6.414617 5.382501 23.281618 0.629383 0.528123 0.569994 0.886719 0.816406 1 0 1.000000 +0 6.066281 5.090213 23.414265 -0.209235 -0.175542 0.961943 0.886719 0.835938 1 0 1.000000 +holygrail.tga +0 3.959483 6.858027 23.414265 -0.136540 -0.236518 0.961974 0.941406 0.835938 1 0 1.000000 +0 6.066281 5.090213 23.414265 -0.209235 -0.175542 0.961943 0.886719 0.835938 1 0 1.000000 +0 6.414617 5.382501 23.281618 0.629383 0.528123 0.569994 0.886719 0.816406 1 0 1.000000 +holygrail.tga +0 6.414617 5.382501 23.281618 0.629383 0.528123 0.569994 0.886719 0.816406 1 0 1.000000 +0 4.186843 7.251825 23.281618 0.410810 0.711539 0.569994 0.941406 0.816406 1 0 1.000000 +0 3.959483 6.858027 23.414265 -0.136540 -0.236518 0.961974 0.941406 0.835938 1 0 1.000000 +holygrail.tga +0 1.375114 7.798662 23.414265 -0.047426 -0.268960 0.961974 1.000000 0.835938 1 0 1.000000 +0 3.959483 6.858027 23.414265 -0.136540 -0.236518 0.961974 0.941406 0.835938 1 0 1.000000 +0 4.186843 7.251825 23.281618 0.410810 0.711539 0.569994 0.941406 0.816406 1 0 1.000000 +holygrail.tga +0 4.186843 7.251825 23.281618 0.410810 0.711539 0.569994 0.941406 0.816406 1 0 1.000000 +0 1.454075 8.246472 23.281618 0.142674 0.809137 0.569994 1.000000 0.816406 1 0 1.000000 +0 1.375114 7.798662 23.414265 -0.047426 -0.268960 0.961974 1.000000 0.835938 1 0 1.000000 +holygrail.tga +0 -1.375114 7.798662 23.414265 0.047426 -0.268960 0.961974 0.058594 0.835938 1 0 1.000000 +0 1.375114 7.798662 23.414265 -0.047426 -0.268960 0.961974 0.000000 0.835938 1 0 1.000000 +0 1.454075 8.246472 23.281618 0.142674 0.809137 0.569994 0.000000 0.816406 1 0 1.000000 +holygrail.tga +0 1.454075 8.246472 23.281618 0.142674 0.809137 0.569994 0.000000 0.816406 1 0 1.000000 +0 -1.454076 8.246472 23.281618 -0.142674 0.809137 0.569994 0.058594 0.816406 1 0 1.000000 +0 -1.375114 7.798662 23.414265 0.047426 -0.268960 0.961974 0.058594 0.835938 1 0 1.000000 +holygrail.tga +0 -3.959483 6.858027 23.414265 0.136570 -0.236518 0.961974 0.117188 0.835938 1 0 1.000000 +0 -1.375114 7.798662 23.414265 0.047426 -0.268960 0.961974 0.058594 0.835938 1 0 1.000000 +0 -1.454076 8.246472 23.281618 -0.142674 0.809137 0.569994 0.058594 0.816406 1 0 1.000000 +holygrail.tga +0 -1.454076 8.246472 23.281618 -0.142674 0.809137 0.569994 0.058594 0.816406 1 0 1.000000 +0 -4.186843 7.251825 23.281618 -0.410810 0.711539 0.569994 0.117188 0.816406 1 0 1.000000 +0 -3.959483 6.858027 23.414265 0.136570 -0.236518 0.961974 0.117188 0.835938 1 0 1.000000 +holygrail.tga +0 -6.066280 5.090213 23.414265 0.209204 -0.175542 0.961974 0.171875 0.835938 1 0 1.000000 +0 -3.959483 6.858027 23.414265 0.136570 -0.236518 0.961974 0.117188 0.835938 1 0 1.000000 +0 -4.186843 7.251825 23.281618 -0.410810 0.711539 0.569994 0.117188 0.816406 1 0 1.000000 +holygrail.tga +0 -4.186843 7.251825 23.281618 -0.410810 0.711539 0.569994 0.117188 0.816406 1 0 1.000000 +0 -6.414615 5.382501 23.281618 -0.629383 0.528123 0.569994 0.171875 0.816406 1 0 1.000000 +0 -6.066280 5.090213 23.414265 0.209204 -0.175542 0.961974 0.171875 0.835938 1 0 1.000000 +holygrail.tga +0 -7.441395 2.708446 23.414263 0.256661 -0.093417 0.961974 0.226563 0.835938 1 0 1.000000 +0 -6.066280 5.090213 23.414265 0.209204 -0.175542 0.961974 0.171875 0.835938 1 0 1.000000 +0 -6.414615 5.382501 23.281618 -0.629383 0.528123 0.569994 0.171875 0.816406 1 0 1.000000 +holygrail.tga +0 -6.414615 5.382501 23.281618 -0.629383 0.528123 0.569994 0.171875 0.816406 1 0 1.000000 +0 -7.868690 2.863969 23.281614 -0.772057 0.280984 0.569994 0.226563 0.816406 1 0 1.000000 +0 -7.441395 2.708446 23.414263 0.256661 -0.093417 0.961974 0.226563 0.835938 1 0 1.000000 +holygrail.tga +0 -7.918966 0.000001 23.414259 0.273141 0.000000 0.961943 0.289063 0.835938 1 0 1.000000 +0 -7.441395 2.708446 23.414263 0.256661 -0.093417 0.961974 0.226563 0.835938 1 0 1.000000 +0 -7.868690 2.863969 23.281614 -0.772057 0.280984 0.569994 0.226563 0.816406 1 0 1.000000 +holygrail.tga +0 -7.868690 2.863969 23.281614 -0.772057 0.280984 0.569994 0.226563 0.816406 1 0 1.000000 +0 -8.373686 0.000001 23.281614 -0.821619 0.000000 0.570025 0.289063 0.816406 1 0 1.000000 +0 -7.918966 0.000001 23.414259 0.273141 0.000000 0.961943 0.289063 0.835938 1 0 1.000000 +holygrail.tga +0 -7.441395 -2.708445 23.414259 0.256661 0.093417 0.961943 0.339844 0.835938 1 0 1.000000 +0 -7.918966 0.000001 23.414259 0.273141 0.000000 0.961943 0.289063 0.835938 1 0 1.000000 +0 -8.373686 0.000001 23.281614 -0.821619 0.000000 0.570025 0.289063 0.816406 1 0 1.000000 +holygrail.tga +0 -8.373686 0.000001 23.281614 -0.821619 0.000000 0.570025 0.289063 0.816406 1 0 1.000000 +0 -7.868692 -2.863967 23.281614 -0.772057 -0.280984 0.569994 0.339844 0.816406 1 0 1.000000 +0 -7.441395 -2.708445 23.414259 0.256661 0.093417 0.961943 0.339844 0.835938 1 0 1.000000 +holygrail.tga +0 -6.066282 -5.090212 23.414259 0.209235 0.175542 0.961943 0.394531 0.835938 1 0 1.000000 +0 -7.441395 -2.708445 23.414259 0.256661 0.093417 0.961943 0.339844 0.835938 1 0 1.000000 +0 -7.868692 -2.863967 23.281614 -0.772057 -0.280984 0.569994 0.339844 0.816406 1 0 1.000000 +holygrail.tga +0 -7.868692 -2.863967 23.281614 -0.772057 -0.280984 0.569994 0.339844 0.816406 1 0 1.000000 +0 -6.414616 -5.382501 23.281614 -0.629383 -0.528123 0.569994 0.394531 0.816406 1 0 1.000000 +0 -6.066282 -5.090212 23.414259 0.209235 0.175542 0.961943 0.394531 0.835938 1 0 1.000000 +holygrail.tga +0 -3.959486 -6.858022 23.414259 0.136570 0.236518 0.961943 0.449219 0.835938 1 0 1.000000 +0 -6.066282 -5.090212 23.414259 0.209235 0.175542 0.961943 0.394531 0.835938 1 0 1.000000 +0 -6.414616 -5.382501 23.281614 -0.629383 -0.528123 0.569994 0.394531 0.816406 1 0 1.000000 +holygrail.tga +0 -6.414616 -5.382501 23.281614 -0.629383 -0.528123 0.569994 0.394531 0.816406 1 0 1.000000 +0 -4.186845 -7.251821 23.281614 -0.410810 -0.711539 0.570025 0.449219 0.816406 1 0 1.000000 +0 -3.959486 -6.858022 23.414259 0.136570 0.236518 0.961943 0.449219 0.835938 1 0 1.000000 +holygrail.tga +0 -1.375116 -7.798658 23.414259 0.047426 0.268990 0.961974 0.503906 0.835938 1 0 1.000000 +0 -3.959486 -6.858022 23.414259 0.136570 0.236518 0.961943 0.449219 0.835938 1 0 1.000000 +0 -4.186845 -7.251821 23.281614 -0.410810 -0.711539 0.570025 0.449219 0.816406 1 0 1.000000 +holygrail.tga +0 -4.186845 -7.251821 23.281614 -0.410810 -0.711539 0.570025 0.449219 0.816406 1 0 1.000000 +0 -1.454078 -8.246469 23.281614 -0.142674 -0.809137 0.570025 0.503906 0.816406 1 0 1.000000 +0 -1.375116 -7.798658 23.414259 0.047426 0.268990 0.961974 0.503906 0.835938 1 0 1.000000 +holygrail.tga +0 1.375110 -7.798660 23.414259 -0.047426 0.268990 0.961943 0.554688 0.835938 1 0 1.000000 +0 -1.375116 -7.798658 23.414259 0.047426 0.268990 0.961974 0.503906 0.835938 1 0 1.000000 +0 -1.454078 -8.246469 23.281614 -0.142674 -0.809137 0.570025 0.503906 0.816406 1 0 1.000000 +holygrail.tga +0 -1.454078 -8.246469 23.281614 -0.142674 -0.809137 0.570025 0.503906 0.816406 1 0 1.000000 +0 1.454071 -8.246470 23.281614 0.142644 -0.809137 0.569994 0.554688 0.816406 1 0 1.000000 +0 1.375110 -7.798660 23.414259 -0.047426 0.268990 0.961943 0.554688 0.835938 1 0 1.000000 +holygrail.tga +0 3.959481 -6.858026 23.414259 -0.136570 0.236518 0.961943 0.613281 0.835938 1 0 1.000000 +0 1.375110 -7.798660 23.414259 -0.047426 0.268990 0.961943 0.554688 0.835938 1 0 1.000000 +0 1.454071 -8.246470 23.281614 0.142644 -0.809137 0.569994 0.554688 0.816406 1 0 1.000000 +holygrail.tga +0 1.454071 -8.246470 23.281614 0.142644 -0.809137 0.569994 0.554688 0.816406 1 0 1.000000 +0 4.186839 -7.251825 23.281614 0.410810 -0.711539 0.570025 0.613281 0.816406 1 0 1.000000 +0 3.959481 -6.858026 23.414259 -0.136570 0.236518 0.961943 0.613281 0.835938 1 0 1.000000 +holygrail.tga +0 6.066278 -5.090217 23.414259 -0.209235 0.175542 0.961943 0.664063 0.835938 1 0 1.000000 +0 3.959481 -6.858026 23.414259 -0.136570 0.236518 0.961943 0.613281 0.835938 1 0 1.000000 +0 4.186839 -7.251825 23.281614 0.410810 -0.711539 0.570025 0.613281 0.816406 1 0 1.000000 +holygrail.tga +0 4.186839 -7.251825 23.281614 0.410810 -0.711539 0.570025 0.613281 0.816406 1 0 1.000000 +0 6.414613 -5.382505 23.281614 0.629383 -0.528123 0.569994 0.664063 0.816406 1 0 1.000000 +0 6.066278 -5.090217 23.414259 -0.209235 0.175542 0.961943 0.664063 0.835938 1 0 1.000000 +holygrail.tga +0 7.441392 -2.708453 23.414259 -0.256661 0.093417 0.961974 0.726563 0.835938 1 0 1.000000 +0 6.066278 -5.090217 23.414259 -0.209235 0.175542 0.961943 0.664063 0.835938 1 0 1.000000 +0 6.414613 -5.382505 23.281614 0.629383 -0.528123 0.569994 0.664063 0.816406 1 0 1.000000 +holygrail.tga +0 6.414613 -5.382505 23.281614 0.629383 -0.528123 0.569994 0.664063 0.816406 1 0 1.000000 +0 7.868689 -2.863975 23.281614 0.772057 -0.280984 0.569994 0.726563 0.816406 1 0 1.000000 +0 7.441392 -2.708453 23.414259 -0.256661 0.093417 0.961974 0.726563 0.835938 1 0 1.000000 +holygrail.tga +0 7.918965 0.000000 23.414259 -0.273141 0.000000 0.961943 0.773438 0.835938 1 0 1.000000 +0 7.441392 -2.708453 23.414259 -0.256661 0.093417 0.961974 0.726563 0.835938 1 0 1.000000 +0 7.868689 -2.863975 23.281614 0.772057 -0.280984 0.569994 0.726563 0.816406 1 0 1.000000 +holygrail.tga +0 7.868689 -2.863975 23.281614 0.772057 -0.280984 0.569994 0.726563 0.816406 1 0 1.000000 +0 8.373683 0.000000 23.281614 0.821619 0.000000 0.569994 0.773438 0.816406 1 0 1.000000 +0 7.918965 0.000000 23.414259 -0.273141 0.000000 0.961943 0.773438 0.835938 1 0 1.000000 +holygrail.tga +0 6.249387 2.274592 21.590519 -0.861690 -0.313608 0.398877 0.832031 0.855469 1 0 1.000000 +0 6.650457 0.000001 21.590519 -0.916990 0.000000 0.398877 0.773438 0.855469 1 0 1.000000 +0 7.918965 0.000000 23.414259 -0.273141 0.000000 0.961943 0.773438 0.835938 1 0 1.000000 +holygrail.tga +0 7.918965 0.000000 23.414259 -0.273141 0.000000 0.961943 0.773438 0.835938 1 0 1.000000 +0 7.441395 2.708446 23.414263 -0.256661 -0.093417 0.961974 0.832031 0.835938 1 0 1.000000 +0 6.249387 2.274592 21.590519 -0.861690 -0.313608 0.398877 0.832031 0.855469 1 0 1.000000 +holygrail.tga +0 5.094548 4.274832 21.590523 -0.702445 -0.589435 0.398877 0.886719 0.855469 1 0 1.000000 +0 6.249387 2.274592 21.590519 -0.861690 -0.313608 0.398877 0.832031 0.855469 1 0 1.000000 +0 7.441395 2.708446 23.414263 -0.256661 -0.093417 0.961974 0.832031 0.835938 1 0 1.000000 +holygrail.tga +0 7.441395 2.708446 23.414263 -0.256661 -0.093417 0.961974 0.832031 0.835938 1 0 1.000000 +0 6.066281 5.090213 23.414265 -0.209235 -0.175542 0.961943 0.886719 0.835938 1 0 1.000000 +0 5.094548 4.274832 21.590523 -0.702445 -0.589435 0.398877 0.886719 0.855469 1 0 1.000000 +holygrail.tga +0 3.325229 5.759467 21.590523 -0.458480 -0.794122 0.398877 0.941406 0.855469 1 0 1.000000 +0 5.094548 4.274832 21.590523 -0.702445 -0.589435 0.398877 0.886719 0.855469 1 0 1.000000 +0 6.066281 5.090213 23.414265 -0.209235 -0.175542 0.961943 0.886719 0.835938 1 0 1.000000 +holygrail.tga +0 6.066281 5.090213 23.414265 -0.209235 -0.175542 0.961943 0.886719 0.835938 1 0 1.000000 +0 3.959483 6.858027 23.414265 -0.136540 -0.236518 0.961974 0.941406 0.835938 1 0 1.000000 +0 3.325229 5.759467 21.590523 -0.458480 -0.794122 0.398877 0.941406 0.855469 1 0 1.000000 +holygrail.tga +0 1.154840 6.549425 21.590523 -0.159215 -0.903043 0.398877 1.000000 0.855469 1 0 1.000000 +0 3.325229 5.759467 21.590523 -0.458480 -0.794122 0.398877 0.941406 0.855469 1 0 1.000000 +0 3.959483 6.858027 23.414265 -0.136540 -0.236518 0.961974 0.941406 0.835938 1 0 1.000000 +holygrail.tga +0 3.959483 6.858027 23.414265 -0.136540 -0.236518 0.961974 0.941406 0.835938 1 0 1.000000 +0 1.375114 7.798662 23.414265 -0.047426 -0.268960 0.961974 1.000000 0.835938 1 0 1.000000 +0 1.154840 6.549425 21.590523 -0.159215 -0.903043 0.398877 1.000000 0.855469 1 0 1.000000 +holygrail.tga +0 -1.154840 6.549425 21.590523 0.159215 -0.903043 0.398877 0.058594 0.855469 1 0 1.000000 +0 1.154840 6.549425 21.590523 -0.159215 -0.903043 0.398877 0.000000 0.855469 1 0 1.000000 +0 1.375114 7.798662 23.414265 -0.047426 -0.268960 0.961974 0.000000 0.835938 1 0 1.000000 +holygrail.tga +0 1.375114 7.798662 23.414265 -0.047426 -0.268960 0.961974 0.000000 0.835938 1 0 1.000000 +0 -1.375114 7.798662 23.414265 0.047426 -0.268960 0.961974 0.058594 0.835938 1 0 1.000000 +0 -1.154840 6.549425 21.590523 0.159215 -0.903043 0.398877 0.058594 0.855469 1 0 1.000000 +holygrail.tga +0 -3.325229 5.759468 21.590523 0.458480 -0.794122 0.398877 0.117188 0.855469 1 0 1.000000 +0 -1.154840 6.549425 21.590523 0.159215 -0.903043 0.398877 0.058594 0.855469 1 0 1.000000 +0 -1.375114 7.798662 23.414265 0.047426 -0.268960 0.961974 0.058594 0.835938 1 0 1.000000 +holygrail.tga +0 -1.375114 7.798662 23.414265 0.047426 -0.268960 0.961974 0.058594 0.835938 1 0 1.000000 +0 -3.959483 6.858027 23.414265 0.136570 -0.236518 0.961974 0.117188 0.835938 1 0 1.000000 +0 -3.325229 5.759468 21.590523 0.458480 -0.794122 0.398877 0.117188 0.855469 1 0 1.000000 +holygrail.tga +0 -5.094546 4.274832 21.590523 0.702445 -0.589435 0.398877 0.171875 0.855469 1 0 1.000000 +0 -3.325229 5.759468 21.590523 0.458480 -0.794122 0.398877 0.117188 0.855469 1 0 1.000000 +0 -3.959483 6.858027 23.414265 0.136570 -0.236518 0.961974 0.117188 0.835938 1 0 1.000000 +holygrail.tga +0 -3.959483 6.858027 23.414265 0.136570 -0.236518 0.961974 0.117188 0.835938 1 0 1.000000 +0 -6.066280 5.090213 23.414265 0.209204 -0.175542 0.961974 0.171875 0.835938 1 0 1.000000 +0 -5.094546 4.274832 21.590523 0.702445 -0.589435 0.398877 0.171875 0.855469 1 0 1.000000 +holygrail.tga +0 -6.249386 2.274591 21.590519 0.861690 -0.313608 0.398877 0.226563 0.855469 1 0 1.000000 +0 -5.094546 4.274832 21.590523 0.702445 -0.589435 0.398877 0.171875 0.855469 1 0 1.000000 +0 -6.066280 5.090213 23.414265 0.209204 -0.175542 0.961974 0.171875 0.835938 1 0 1.000000 +holygrail.tga +0 -6.066280 5.090213 23.414265 0.209204 -0.175542 0.961974 0.171875 0.835938 1 0 1.000000 +0 -7.441395 2.708446 23.414263 0.256661 -0.093417 0.961974 0.226563 0.835938 1 0 1.000000 +0 -6.249386 2.274591 21.590519 0.861690 -0.313608 0.398877 0.226563 0.855469 1 0 1.000000 +holygrail.tga +0 -6.650458 0.000001 21.590519 0.916990 0.000000 0.398877 0.289063 0.855469 1 0 1.000000 +0 -6.249386 2.274591 21.590519 0.861690 -0.313608 0.398877 0.226563 0.855469 1 0 1.000000 +0 -7.441395 2.708446 23.414263 0.256661 -0.093417 0.961974 0.226563 0.835938 1 0 1.000000 +holygrail.tga +0 -7.441395 2.708446 23.414263 0.256661 -0.093417 0.961974 0.226563 0.835938 1 0 1.000000 +0 -7.918966 0.000001 23.414259 0.273141 0.000000 0.961943 0.289063 0.835938 1 0 1.000000 +0 -6.650458 0.000001 21.590519 0.916990 0.000000 0.398877 0.289063 0.855469 1 0 1.000000 +holygrail.tga +0 -6.249387 -2.274589 21.590519 0.861690 0.313608 0.398877 0.339844 0.855469 1 0 1.000000 +0 -6.650458 0.000001 21.590519 0.916990 0.000000 0.398877 0.289063 0.855469 1 0 1.000000 +0 -7.918966 0.000001 23.414259 0.273141 0.000000 0.961943 0.289063 0.835938 1 0 1.000000 +holygrail.tga +0 -7.918966 0.000001 23.414259 0.273141 0.000000 0.961943 0.289063 0.835938 1 0 1.000000 +0 -7.441395 -2.708445 23.414259 0.256661 0.093417 0.961943 0.339844 0.835938 1 0 1.000000 +0 -6.249387 -2.274589 21.590519 0.861690 0.313608 0.398877 0.339844 0.855469 1 0 1.000000 +holygrail.tga +0 -5.094548 -4.274831 21.590519 0.702445 0.589435 0.398877 0.394531 0.855469 1 0 1.000000 +0 -6.249387 -2.274589 21.590519 0.861690 0.313608 0.398877 0.339844 0.855469 1 0 1.000000 +0 -7.441395 -2.708445 23.414259 0.256661 0.093417 0.961943 0.339844 0.835938 1 0 1.000000 +holygrail.tga +0 -7.441395 -2.708445 23.414259 0.256661 0.093417 0.961943 0.339844 0.835938 1 0 1.000000 +0 -6.066282 -5.090212 23.414259 0.209235 0.175542 0.961943 0.394531 0.835938 1 0 1.000000 +0 -5.094548 -4.274831 21.590519 0.702445 0.589435 0.398877 0.394531 0.855469 1 0 1.000000 +holygrail.tga +0 -3.325232 -5.759462 21.590519 0.458480 0.794122 0.398877 0.449219 0.855469 1 0 1.000000 +0 -5.094548 -4.274831 21.590519 0.702445 0.589435 0.398877 0.394531 0.855469 1 0 1.000000 +0 -6.066282 -5.090212 23.414259 0.209235 0.175542 0.961943 0.394531 0.835938 1 0 1.000000 +holygrail.tga +0 -6.066282 -5.090212 23.414259 0.209235 0.175542 0.961943 0.394531 0.835938 1 0 1.000000 +0 -3.959486 -6.858022 23.414259 0.136570 0.236518 0.961943 0.449219 0.835938 1 0 1.000000 +0 -3.325232 -5.759462 21.590519 0.458480 0.794122 0.398877 0.449219 0.855469 1 0 1.000000 +holygrail.tga +0 -1.154842 -6.549421 21.590519 0.159215 0.903043 0.398877 0.503906 0.855469 1 0 1.000000 +0 -3.325232 -5.759462 21.590519 0.458480 0.794122 0.398877 0.449219 0.855469 1 0 1.000000 +0 -3.959486 -6.858022 23.414259 0.136570 0.236518 0.961943 0.449219 0.835938 1 0 1.000000 +holygrail.tga +0 -3.959486 -6.858022 23.414259 0.136570 0.236518 0.961943 0.449219 0.835938 1 0 1.000000 +0 -1.375116 -7.798658 23.414259 0.047426 0.268990 0.961974 0.503906 0.835938 1 0 1.000000 +0 -1.154842 -6.549421 21.590519 0.159215 0.903043 0.398877 0.503906 0.855469 1 0 1.000000 +holygrail.tga +0 1.154837 -6.549423 21.590519 -0.159215 0.903043 0.398877 0.554688 0.855469 1 0 1.000000 +0 -1.154842 -6.549421 21.590519 0.159215 0.903043 0.398877 0.503906 0.855469 1 0 1.000000 +0 -1.375116 -7.798658 23.414259 0.047426 0.268990 0.961974 0.503906 0.835938 1 0 1.000000 +holygrail.tga +0 -1.375116 -7.798658 23.414259 0.047426 0.268990 0.961974 0.503906 0.835938 1 0 1.000000 +0 1.375110 -7.798660 23.414259 -0.047426 0.268990 0.961943 0.554688 0.835938 1 0 1.000000 +0 1.154837 -6.549423 21.590519 -0.159215 0.903043 0.398877 0.554688 0.855469 1 0 1.000000 +holygrail.tga +0 3.325227 -5.759466 21.590519 -0.458480 0.794122 0.398877 0.613281 0.855469 1 0 1.000000 +0 1.154837 -6.549423 21.590519 -0.159215 0.903043 0.398877 0.554688 0.855469 1 0 1.000000 +0 1.375110 -7.798660 23.414259 -0.047426 0.268990 0.961943 0.554688 0.835938 1 0 1.000000 +holygrail.tga +0 1.375110 -7.798660 23.414259 -0.047426 0.268990 0.961943 0.554688 0.835938 1 0 1.000000 +0 3.959481 -6.858026 23.414259 -0.136570 0.236518 0.961943 0.613281 0.835938 1 0 1.000000 +0 3.325227 -5.759466 21.590519 -0.458480 0.794122 0.398877 0.613281 0.855469 1 0 1.000000 +holygrail.tga +0 5.094545 -4.274835 21.590519 -0.702445 0.589435 0.398877 0.664063 0.855469 1 0 1.000000 +0 3.325227 -5.759466 21.590519 -0.458480 0.794122 0.398877 0.613281 0.855469 1 0 1.000000 +0 3.959481 -6.858026 23.414259 -0.136570 0.236518 0.961943 0.613281 0.835938 1 0 1.000000 +holygrail.tga +0 3.959481 -6.858026 23.414259 -0.136570 0.236518 0.961943 0.613281 0.835938 1 0 1.000000 +0 6.066278 -5.090217 23.414259 -0.209235 0.175542 0.961943 0.664063 0.835938 1 0 1.000000 +0 5.094545 -4.274835 21.590519 -0.702445 0.589435 0.398877 0.664063 0.855469 1 0 1.000000 +holygrail.tga +0 6.249385 -2.274596 21.590519 -0.861690 0.313608 0.398877 0.726563 0.855469 1 0 1.000000 +0 5.094545 -4.274835 21.590519 -0.702445 0.589435 0.398877 0.664063 0.855469 1 0 1.000000 +0 6.066278 -5.090217 23.414259 -0.209235 0.175542 0.961943 0.664063 0.835938 1 0 1.000000 +holygrail.tga +0 6.066278 -5.090217 23.414259 -0.209235 0.175542 0.961943 0.664063 0.835938 1 0 1.000000 +0 7.441392 -2.708453 23.414259 -0.256661 0.093417 0.961974 0.726563 0.835938 1 0 1.000000 +0 6.249385 -2.274596 21.590519 -0.861690 0.313608 0.398877 0.726563 0.855469 1 0 1.000000 +holygrail.tga +0 6.650457 0.000001 21.590519 -0.916990 0.000000 0.398877 0.773438 0.855469 1 0 1.000000 +0 6.249385 -2.274596 21.590519 -0.861690 0.313608 0.398877 0.726563 0.855469 1 0 1.000000 +0 7.441392 -2.708453 23.414259 -0.256661 0.093417 0.961974 0.726563 0.835938 1 0 1.000000 +holygrail.tga +0 7.441392 -2.708453 23.414259 -0.256661 0.093417 0.961974 0.726563 0.835938 1 0 1.000000 +0 7.918965 0.000000 23.414259 -0.273141 0.000000 0.961943 0.773438 0.835938 1 0 1.000000 +0 6.650457 0.000001 21.590519 -0.916990 0.000000 0.398877 0.773438 0.855469 1 0 1.000000 +holygrail.tga +0 5.652801 2.057453 18.369108 -0.818079 -0.297739 0.491989 0.832031 0.898438 1 0 1.000000 +0 6.015584 0.000001 18.369108 -0.870571 0.000000 0.491989 0.773438 0.898438 1 0 1.000000 +0 6.650457 0.000001 21.590519 -0.916990 0.000000 0.398877 0.773438 0.855469 1 0 1.000000 +holygrail.tga +0 6.650457 0.000001 21.590519 -0.916990 0.000000 0.398877 0.773438 0.855469 1 0 1.000000 +0 6.249387 2.274592 21.590519 -0.861690 -0.313608 0.398877 0.832031 0.855469 1 0 1.000000 +0 5.652801 2.057453 18.369108 -0.818079 -0.297739 0.491989 0.832031 0.898438 1 0 1.000000 +holygrail.tga +0 4.608207 3.866745 18.369110 -0.666890 -0.559587 0.491989 0.886719 0.898438 1 0 1.000000 +0 5.652801 2.057453 18.369108 -0.818079 -0.297739 0.491989 0.832031 0.898438 1 0 1.000000 +0 6.249387 2.274592 21.590519 -0.861690 -0.313608 0.398877 0.832031 0.855469 1 0 1.000000 +holygrail.tga +0 6.249387 2.274592 21.590519 -0.861690 -0.313608 0.398877 0.832031 0.855469 1 0 1.000000 +0 5.094548 4.274832 21.590523 -0.702445 -0.589435 0.398877 0.886719 0.855469 1 0 1.000000 +0 4.608207 3.866745 18.369110 -0.666890 -0.559587 0.491989 0.886719 0.898438 1 0 1.000000 +holygrail.tga +0 3.007792 5.209651 18.369110 -0.435286 -0.753929 0.491989 0.941406 0.898438 1 0 1.000000 +0 4.608207 3.866745 18.369110 -0.666890 -0.559587 0.491989 0.886719 0.898438 1 0 1.000000 +0 5.094548 4.274832 21.590523 -0.702445 -0.589435 0.398877 0.886719 0.855469 1 0 1.000000 +holygrail.tga +0 5.094548 4.274832 21.590523 -0.702445 -0.589435 0.398877 0.886719 0.855469 1 0 1.000000 +0 3.325229 5.759467 21.590523 -0.458480 -0.794122 0.398877 0.941406 0.855469 1 0 1.000000 +0 3.007792 5.209651 18.369110 -0.435286 -0.753929 0.491989 0.941406 0.898438 1 0 1.000000 +holygrail.tga +0 1.044595 5.924198 18.369110 -0.151158 -0.857356 0.491989 1.000000 0.898438 1 0 1.000000 +0 3.007792 5.209651 18.369110 -0.435286 -0.753929 0.491989 0.941406 0.898438 1 0 1.000000 +0 3.325229 5.759467 21.590523 -0.458480 -0.794122 0.398877 0.941406 0.855469 1 0 1.000000 +holygrail.tga +0 3.325229 5.759467 21.590523 -0.458480 -0.794122 0.398877 0.941406 0.855469 1 0 1.000000 +0 1.154840 6.549425 21.590523 -0.159215 -0.903043 0.398877 1.000000 0.855469 1 0 1.000000 +0 1.044595 5.924198 18.369110 -0.151158 -0.857356 0.491989 1.000000 0.898438 1 0 1.000000 +holygrail.tga +0 -1.044596 5.924198 18.369110 0.151158 -0.857356 0.491989 0.058594 0.898438 1 0 1.000000 +0 1.044595 5.924198 18.369110 -0.151158 -0.857356 0.491989 0.000000 0.898438 1 0 1.000000 +0 1.154840 6.549425 21.590523 -0.159215 -0.903043 0.398877 0.000000 0.855469 1 0 1.000000 +holygrail.tga +0 1.154840 6.549425 21.590523 -0.159215 -0.903043 0.398877 0.000000 0.855469 1 0 1.000000 +0 -1.154840 6.549425 21.590523 0.159215 -0.903043 0.398877 0.058594 0.855469 1 0 1.000000 +0 -1.044596 5.924198 18.369110 0.151158 -0.857356 0.491989 0.058594 0.898438 1 0 1.000000 +holygrail.tga +0 -3.007792 5.209652 18.369110 0.435286 -0.753929 0.491989 0.117188 0.898438 1 0 1.000000 +0 -1.044596 5.924198 18.369110 0.151158 -0.857356 0.491989 0.058594 0.898438 1 0 1.000000 +0 -1.154840 6.549425 21.590523 0.159215 -0.903043 0.398877 0.058594 0.855469 1 0 1.000000 +holygrail.tga +0 -1.154840 6.549425 21.590523 0.159215 -0.903043 0.398877 0.058594 0.855469 1 0 1.000000 +0 -3.325229 5.759468 21.590523 0.458480 -0.794122 0.398877 0.117188 0.855469 1 0 1.000000 +0 -3.007792 5.209652 18.369110 0.435286 -0.753929 0.491989 0.117188 0.898438 1 0 1.000000 +holygrail.tga +0 -4.608205 3.866745 18.369110 0.666890 -0.559587 0.491989 0.171875 0.898438 1 0 1.000000 +0 -3.007792 5.209652 18.369110 0.435286 -0.753929 0.491989 0.117188 0.898438 1 0 1.000000 +0 -3.325229 5.759468 21.590523 0.458480 -0.794122 0.398877 0.117188 0.855469 1 0 1.000000 +holygrail.tga +0 -3.325229 5.759468 21.590523 0.458480 -0.794122 0.398877 0.117188 0.855469 1 0 1.000000 +0 -5.094546 4.274832 21.590523 0.702445 -0.589435 0.398877 0.171875 0.855469 1 0 1.000000 +0 -4.608205 3.866745 18.369110 0.666890 -0.559587 0.491989 0.171875 0.898438 1 0 1.000000 +holygrail.tga +0 -5.652801 2.057453 18.369108 0.818079 -0.297739 0.491989 0.226563 0.898438 1 0 1.000000 +0 -4.608205 3.866745 18.369110 0.666890 -0.559587 0.491989 0.171875 0.898438 1 0 1.000000 +0 -5.094546 4.274832 21.590523 0.702445 -0.589435 0.398877 0.171875 0.855469 1 0 1.000000 +holygrail.tga +0 -5.094546 4.274832 21.590523 0.702445 -0.589435 0.398877 0.171875 0.855469 1 0 1.000000 +0 -6.249386 2.274591 21.590519 0.861690 -0.313608 0.398877 0.226563 0.855469 1 0 1.000000 +0 -5.652801 2.057453 18.369108 0.818079 -0.297739 0.491989 0.226563 0.898438 1 0 1.000000 +holygrail.tga +0 -6.015585 0.000002 18.369108 0.870571 0.000000 0.491989 0.289063 0.898438 1 0 1.000000 +0 -5.652801 2.057453 18.369108 0.818079 -0.297739 0.491989 0.226563 0.898438 1 0 1.000000 +0 -6.249386 2.274591 21.590519 0.861690 -0.313608 0.398877 0.226563 0.855469 1 0 1.000000 +holygrail.tga +0 -6.249386 2.274591 21.590519 0.861690 -0.313608 0.398877 0.226563 0.855469 1 0 1.000000 +0 -6.650458 0.000001 21.590519 0.916990 0.000000 0.398877 0.289063 0.855469 1 0 1.000000 +0 -6.015585 0.000002 18.369108 0.870571 0.000000 0.491989 0.289063 0.898438 1 0 1.000000 +holygrail.tga +0 -5.652802 -2.057449 18.369108 0.818079 0.297739 0.491989 0.339844 0.898438 1 0 1.000000 +0 -6.015585 0.000002 18.369108 0.870571 0.000000 0.491989 0.289063 0.898438 1 0 1.000000 +0 -6.650458 0.000001 21.590519 0.916990 0.000000 0.398877 0.289063 0.855469 1 0 1.000000 +holygrail.tga +0 -6.650458 0.000001 21.590519 0.916990 0.000000 0.398877 0.289063 0.855469 1 0 1.000000 +0 -6.249387 -2.274589 21.590519 0.861690 0.313608 0.398877 0.339844 0.855469 1 0 1.000000 +0 -5.652802 -2.057449 18.369108 0.818079 0.297739 0.491989 0.339844 0.898438 1 0 1.000000 +holygrail.tga +0 -4.608207 -3.866742 18.369108 0.666890 0.559587 0.491989 0.394531 0.898438 1 0 1.000000 +0 -5.652802 -2.057449 18.369108 0.818079 0.297739 0.491989 0.339844 0.898438 1 0 1.000000 +0 -6.249387 -2.274589 21.590519 0.861690 0.313608 0.398877 0.339844 0.855469 1 0 1.000000 +holygrail.tga +0 -6.249387 -2.274589 21.590519 0.861690 0.313608 0.398877 0.339844 0.855469 1 0 1.000000 +0 -5.094548 -4.274831 21.590519 0.702445 0.589435 0.398877 0.394531 0.855469 1 0 1.000000 +0 -4.608207 -3.866742 18.369108 0.666890 0.559587 0.491989 0.394531 0.898438 1 0 1.000000 +holygrail.tga +0 -3.007795 -5.209646 18.369108 0.435286 0.753929 0.491989 0.449219 0.898438 1 0 1.000000 +0 -4.608207 -3.866742 18.369108 0.666890 0.559587 0.491989 0.394531 0.898438 1 0 1.000000 +0 -5.094548 -4.274831 21.590519 0.702445 0.589435 0.398877 0.394531 0.855469 1 0 1.000000 +holygrail.tga +0 -5.094548 -4.274831 21.590519 0.702445 0.589435 0.398877 0.394531 0.855469 1 0 1.000000 +0 -3.325232 -5.759462 21.590519 0.458480 0.794122 0.398877 0.449219 0.855469 1 0 1.000000 +0 -3.007795 -5.209646 18.369108 0.435286 0.753929 0.491989 0.449219 0.898438 1 0 1.000000 +holygrail.tga +0 -1.044597 -5.924192 18.369108 0.151158 0.857356 0.491989 0.503906 0.898438 1 0 1.000000 +0 -3.007795 -5.209646 18.369108 0.435286 0.753929 0.491989 0.449219 0.898438 1 0 1.000000 +0 -3.325232 -5.759462 21.590519 0.458480 0.794122 0.398877 0.449219 0.855469 1 0 1.000000 +holygrail.tga +0 -3.325232 -5.759462 21.590519 0.458480 0.794122 0.398877 0.449219 0.855469 1 0 1.000000 +0 -1.154842 -6.549421 21.590519 0.159215 0.903043 0.398877 0.503906 0.855469 1 0 1.000000 +0 -1.044597 -5.924192 18.369108 0.151158 0.857356 0.491989 0.503906 0.898438 1 0 1.000000 +holygrail.tga +0 1.044592 -5.924194 18.369108 -0.151158 0.857356 0.491989 0.554688 0.898438 1 0 1.000000 +0 -1.044597 -5.924192 18.369108 0.151158 0.857356 0.491989 0.503906 0.898438 1 0 1.000000 +0 -1.154842 -6.549421 21.590519 0.159215 0.903043 0.398877 0.503906 0.855469 1 0 1.000000 +holygrail.tga +0 -1.154842 -6.549421 21.590519 0.159215 0.903043 0.398877 0.503906 0.855469 1 0 1.000000 +0 1.154837 -6.549423 21.590519 -0.159215 0.903043 0.398877 0.554688 0.855469 1 0 1.000000 +0 1.044592 -5.924194 18.369108 -0.151158 0.857356 0.491989 0.554688 0.898438 1 0 1.000000 +holygrail.tga +0 3.007790 -5.209648 18.369108 -0.435286 0.753929 0.491989 0.613281 0.898438 1 0 1.000000 +0 1.044592 -5.924194 18.369108 -0.151158 0.857356 0.491989 0.554688 0.898438 1 0 1.000000 +0 1.154837 -6.549423 21.590519 -0.159215 0.903043 0.398877 0.554688 0.855469 1 0 1.000000 +holygrail.tga +0 1.154837 -6.549423 21.590519 -0.159215 0.903043 0.398877 0.554688 0.855469 1 0 1.000000 +0 3.325227 -5.759466 21.590519 -0.458480 0.794122 0.398877 0.613281 0.855469 1 0 1.000000 +0 3.007790 -5.209648 18.369108 -0.435286 0.753929 0.491989 0.613281 0.898438 1 0 1.000000 +holygrail.tga +0 4.608204 -3.866745 18.369108 -0.666890 0.559587 0.491989 0.664063 0.898438 1 0 1.000000 +0 3.007790 -5.209648 18.369108 -0.435286 0.753929 0.491989 0.613281 0.898438 1 0 1.000000 +0 3.325227 -5.759466 21.590519 -0.458480 0.794122 0.398877 0.613281 0.855469 1 0 1.000000 +holygrail.tga +0 3.325227 -5.759466 21.590519 -0.458480 0.794122 0.398877 0.613281 0.855469 1 0 1.000000 +0 5.094545 -4.274835 21.590519 -0.702445 0.589435 0.398877 0.664063 0.855469 1 0 1.000000 +0 4.608204 -3.866745 18.369108 -0.666890 0.559587 0.491989 0.664063 0.898438 1 0 1.000000 +holygrail.tga +0 5.652799 -2.057456 18.369108 -0.818079 0.297739 0.491989 0.726563 0.898438 1 0 1.000000 +0 4.608204 -3.866745 18.369108 -0.666890 0.559587 0.491989 0.664063 0.898438 1 0 1.000000 +0 5.094545 -4.274835 21.590519 -0.702445 0.589435 0.398877 0.664063 0.855469 1 0 1.000000 +holygrail.tga +0 5.094545 -4.274835 21.590519 -0.702445 0.589435 0.398877 0.664063 0.855469 1 0 1.000000 +0 6.249385 -2.274596 21.590519 -0.861690 0.313608 0.398877 0.726563 0.855469 1 0 1.000000 +0 5.652799 -2.057456 18.369108 -0.818079 0.297739 0.491989 0.726563 0.898438 1 0 1.000000 +holygrail.tga +0 6.015584 0.000001 18.369108 -0.870571 0.000000 0.491989 0.773438 0.898438 1 0 1.000000 +0 5.652799 -2.057456 18.369108 -0.818079 0.297739 0.491989 0.726563 0.898438 1 0 1.000000 +0 6.249385 -2.274596 21.590519 -0.861690 0.313608 0.398877 0.726563 0.855469 1 0 1.000000 +holygrail.tga +0 6.249385 -2.274596 21.590519 -0.861690 0.313608 0.398877 0.726563 0.855469 1 0 1.000000 +0 6.650457 0.000001 21.590519 -0.916990 0.000000 0.398877 0.773438 0.855469 1 0 1.000000 +0 6.015584 0.000001 18.369108 -0.870571 0.000000 0.491989 0.773438 0.898438 1 0 1.000000 +holygrail.tga +0 3.266459 1.188897 16.225468 -0.477004 -0.173589 0.861568 0.832031 0.953125 1 0 1.000000 +0 3.476092 0.000003 16.225468 -0.507614 0.000000 0.861568 0.773438 0.953125 1 0 1.000000 +0 6.015584 0.000001 18.369108 -0.870571 0.000000 0.491989 0.773438 0.898438 1 0 1.000000 +holygrail.tga +0 6.015584 0.000001 18.369108 -0.870571 0.000000 0.491989 0.773438 0.898438 1 0 1.000000 +0 5.652801 2.057453 18.369108 -0.818079 -0.297739 0.491989 0.832031 0.898438 1 0 1.000000 +0 3.266459 1.188897 16.225468 -0.477004 -0.173589 0.861568 0.832031 0.953125 1 0 1.000000 +holygrail.tga +0 2.662842 2.234391 16.225471 -0.388836 -0.326273 0.861568 0.886719 0.953125 1 0 1.000000 +0 3.266459 1.188897 16.225468 -0.477004 -0.173589 0.861568 0.832031 0.953125 1 0 1.000000 +0 5.652801 2.057453 18.369108 -0.818079 -0.297739 0.491989 0.832031 0.898438 1 0 1.000000 +holygrail.tga +0 5.652801 2.057453 18.369108 -0.818079 -0.297739 0.491989 0.832031 0.898438 1 0 1.000000 +0 4.608207 3.866745 18.369110 -0.666890 -0.559587 0.491989 0.886719 0.898438 1 0 1.000000 +0 2.662842 2.234391 16.225471 -0.388836 -0.326273 0.861568 0.886719 0.953125 1 0 1.000000 +holygrail.tga +0 1.738046 3.010388 16.225471 -0.253792 -0.439589 0.861568 0.941406 0.953125 1 0 1.000000 +0 2.662842 2.234391 16.225471 -0.388836 -0.326273 0.861568 0.886719 0.953125 1 0 1.000000 +0 4.608207 3.866745 18.369110 -0.666890 -0.559587 0.491989 0.886719 0.898438 1 0 1.000000 +holygrail.tga +0 4.608207 3.866745 18.369110 -0.666890 -0.559587 0.491989 0.886719 0.898438 1 0 1.000000 +0 3.007792 5.209651 18.369110 -0.435286 -0.753929 0.491989 0.941406 0.898438 1 0 1.000000 +0 1.738046 3.010388 16.225471 -0.253792 -0.439589 0.861568 0.941406 0.953125 1 0 1.000000 +holygrail.tga +0 0.603616 3.423287 16.225471 -0.088137 -0.499893 0.861568 1.000000 0.953125 1 0 1.000000 +0 1.738046 3.010388 16.225471 -0.253792 -0.439589 0.861568 0.941406 0.953125 1 0 1.000000 +0 3.007792 5.209651 18.369110 -0.435286 -0.753929 0.491989 0.941406 0.898438 1 0 1.000000 +holygrail.tga +0 3.007792 5.209651 18.369110 -0.435286 -0.753929 0.491989 0.941406 0.898438 1 0 1.000000 +0 1.044595 5.924198 18.369110 -0.151158 -0.857356 0.491989 1.000000 0.898438 1 0 1.000000 +0 0.603616 3.423287 16.225471 -0.088137 -0.499893 0.861568 1.000000 0.953125 1 0 1.000000 +holygrail.tga +0 -0.603617 3.423287 16.225471 0.088137 -0.499893 0.861568 0.058594 0.953125 1 0 1.000000 +0 0.603616 3.423287 16.225471 -0.088137 -0.499893 0.861568 0.000000 0.953125 1 0 1.000000 +0 1.044595 5.924198 18.369110 -0.151158 -0.857356 0.491989 0.000000 0.898438 1 0 1.000000 +holygrail.tga +0 1.044595 5.924198 18.369110 -0.151158 -0.857356 0.491989 0.000000 0.898438 1 0 1.000000 +0 -1.044596 5.924198 18.369110 0.151158 -0.857356 0.491989 0.058594 0.898438 1 0 1.000000 +0 -0.603617 3.423287 16.225471 0.088137 -0.499893 0.861568 0.058594 0.953125 1 0 1.000000 +holygrail.tga +0 -1.738045 3.010389 16.225471 0.253792 -0.439589 0.861568 0.117188 0.953125 1 0 1.000000 +0 -0.603617 3.423287 16.225471 0.088137 -0.499893 0.861568 0.058594 0.953125 1 0 1.000000 +0 -1.044596 5.924198 18.369110 0.151158 -0.857356 0.491989 0.058594 0.898438 1 0 1.000000 +holygrail.tga +0 -1.044596 5.924198 18.369110 0.151158 -0.857356 0.491989 0.058594 0.898438 1 0 1.000000 +0 -3.007792 5.209652 18.369110 0.435286 -0.753929 0.491989 0.117188 0.898438 1 0 1.000000 +0 -1.738045 3.010389 16.225471 0.253792 -0.439589 0.861568 0.117188 0.953125 1 0 1.000000 +holygrail.tga +0 -2.662841 2.234391 16.225471 0.388836 -0.326273 0.861568 0.171875 0.953125 1 0 1.000000 +0 -1.738045 3.010389 16.225471 0.253792 -0.439589 0.861568 0.117188 0.953125 1 0 1.000000 +0 -3.007792 5.209652 18.369110 0.435286 -0.753929 0.491989 0.117188 0.898438 1 0 1.000000 +holygrail.tga +0 -3.007792 5.209652 18.369110 0.435286 -0.753929 0.491989 0.117188 0.898438 1 0 1.000000 +0 -4.608205 3.866745 18.369110 0.666890 -0.559587 0.491989 0.171875 0.898438 1 0 1.000000 +0 -2.662841 2.234391 16.225471 0.388836 -0.326273 0.861568 0.171875 0.953125 1 0 1.000000 +holygrail.tga +0 -3.266459 1.188895 16.225468 0.477004 -0.173589 0.861568 0.226563 0.953125 1 0 1.000000 +0 -2.662841 2.234391 16.225471 0.388836 -0.326273 0.861568 0.171875 0.953125 1 0 1.000000 +0 -4.608205 3.866745 18.369110 0.666890 -0.559587 0.491989 0.171875 0.898438 1 0 1.000000 +holygrail.tga +0 -4.608205 3.866745 18.369110 0.666890 -0.559587 0.491989 0.171875 0.898438 1 0 1.000000 +0 -5.652801 2.057453 18.369108 0.818079 -0.297739 0.491989 0.226563 0.898438 1 0 1.000000 +0 -3.266459 1.188895 16.225468 0.477004 -0.173589 0.861568 0.226563 0.953125 1 0 1.000000 +holygrail.tga +0 -3.476093 0.000002 16.225468 0.507614 0.000000 0.861568 0.289063 0.953125 1 0 1.000000 +0 -3.266459 1.188895 16.225468 0.477004 -0.173589 0.861568 0.226563 0.953125 1 0 1.000000 +0 -5.652801 2.057453 18.369108 0.818079 -0.297739 0.491989 0.226563 0.898438 1 0 1.000000 +holygrail.tga +0 -5.652801 2.057453 18.369108 0.818079 -0.297739 0.491989 0.226563 0.898438 1 0 1.000000 +0 -6.015585 0.000002 18.369108 0.870571 0.000000 0.491989 0.289063 0.898438 1 0 1.000000 +0 -3.476093 0.000002 16.225468 0.507614 0.000000 0.861568 0.289063 0.953125 1 0 1.000000 +holygrail.tga +0 -3.266459 -1.188892 16.225468 0.477004 0.173589 0.861568 0.339844 0.953125 1 0 1.000000 +0 -3.476093 0.000002 16.225468 0.507614 0.000000 0.861568 0.289063 0.953125 1 0 1.000000 +0 -6.015585 0.000002 18.369108 0.870571 0.000000 0.491989 0.289063 0.898438 1 0 1.000000 +holygrail.tga +0 -6.015585 0.000002 18.369108 0.870571 0.000000 0.491989 0.289063 0.898438 1 0 1.000000 +0 -5.652802 -2.057449 18.369108 0.818079 0.297739 0.491989 0.339844 0.898438 1 0 1.000000 +0 -3.266459 -1.188892 16.225468 0.477004 0.173589 0.861568 0.339844 0.953125 1 0 1.000000 +holygrail.tga +0 -2.662843 -2.234386 16.225468 0.388836 0.326273 0.861568 0.394531 0.953125 1 0 1.000000 +0 -3.266459 -1.188892 16.225468 0.477004 0.173589 0.861568 0.339844 0.953125 1 0 1.000000 +0 -5.652802 -2.057449 18.369108 0.818079 0.297739 0.491989 0.339844 0.898438 1 0 1.000000 +holygrail.tga +0 -5.652802 -2.057449 18.369108 0.818079 0.297739 0.491989 0.339844 0.898438 1 0 1.000000 +0 -4.608207 -3.866742 18.369108 0.666890 0.559587 0.491989 0.394531 0.898438 1 0 1.000000 +0 -2.662843 -2.234386 16.225468 0.388836 0.326273 0.861568 0.394531 0.953125 1 0 1.000000 +holygrail.tga +0 -1.738049 -3.010380 16.225470 0.253792 0.439589 0.861568 0.449219 0.953125 1 0 1.000000 +0 -2.662843 -2.234386 16.225468 0.388836 0.326273 0.861568 0.394531 0.953125 1 0 1.000000 +0 -4.608207 -3.866742 18.369108 0.666890 0.559587 0.491989 0.394531 0.898438 1 0 1.000000 +holygrail.tga +0 -4.608207 -3.866742 18.369108 0.666890 0.559587 0.491989 0.394531 0.898438 1 0 1.000000 +0 -3.007795 -5.209646 18.369108 0.435286 0.753929 0.491989 0.449219 0.898438 1 0 1.000000 +0 -1.738049 -3.010380 16.225470 0.253792 0.439589 0.861568 0.449219 0.953125 1 0 1.000000 +holygrail.tga +0 -0.603617 -3.423280 16.225470 0.088137 0.499893 0.861568 0.503906 0.953125 1 0 1.000000 +0 -1.738049 -3.010380 16.225470 0.253792 0.439589 0.861568 0.449219 0.953125 1 0 1.000000 +0 -3.007795 -5.209646 18.369108 0.435286 0.753929 0.491989 0.449219 0.898438 1 0 1.000000 +holygrail.tga +0 -3.007795 -5.209646 18.369108 0.435286 0.753929 0.491989 0.449219 0.898438 1 0 1.000000 +0 -1.044597 -5.924192 18.369108 0.151158 0.857356 0.491989 0.503906 0.898438 1 0 1.000000 +0 -0.603617 -3.423280 16.225470 0.088137 0.499893 0.861568 0.503906 0.953125 1 0 1.000000 +holygrail.tga +0 0.603615 -3.423281 16.225470 -0.088137 0.499893 0.861568 0.554688 0.953125 1 0 1.000000 +0 -0.603617 -3.423280 16.225470 0.088137 0.499893 0.861568 0.503906 0.953125 1 0 1.000000 +0 -1.044597 -5.924192 18.369108 0.151158 0.857356 0.491989 0.503906 0.898438 1 0 1.000000 +holygrail.tga +0 -1.044597 -5.924192 18.369108 0.151158 0.857356 0.491989 0.503906 0.898438 1 0 1.000000 +0 1.044592 -5.924194 18.369108 -0.151158 0.857356 0.491989 0.554688 0.898438 1 0 1.000000 +0 0.603615 -3.423281 16.225470 -0.088137 0.499893 0.861568 0.554688 0.953125 1 0 1.000000 +holygrail.tga +0 1.738045 -3.010382 16.225470 -0.253792 0.439589 0.861568 0.613281 0.953125 1 0 1.000000 +0 0.603615 -3.423281 16.225470 -0.088137 0.499893 0.861568 0.554688 0.953125 1 0 1.000000 +0 1.044592 -5.924194 18.369108 -0.151158 0.857356 0.491989 0.554688 0.898438 1 0 1.000000 +holygrail.tga +0 1.044592 -5.924194 18.369108 -0.151158 0.857356 0.491989 0.554688 0.898438 1 0 1.000000 +0 3.007790 -5.209648 18.369108 -0.435286 0.753929 0.491989 0.613281 0.898438 1 0 1.000000 +0 1.738045 -3.010382 16.225470 -0.253792 0.439589 0.861568 0.613281 0.953125 1 0 1.000000 +holygrail.tga +0 2.662842 -2.234388 16.225468 -0.388836 0.326273 0.861568 0.664063 0.953125 1 0 1.000000 +0 1.738045 -3.010382 16.225470 -0.253792 0.439589 0.861568 0.613281 0.953125 1 0 1.000000 +0 3.007790 -5.209648 18.369108 -0.435286 0.753929 0.491989 0.613281 0.898438 1 0 1.000000 +holygrail.tga +0 3.007790 -5.209648 18.369108 -0.435286 0.753929 0.491989 0.613281 0.898438 1 0 1.000000 +0 4.608204 -3.866745 18.369108 -0.666890 0.559587 0.491989 0.664063 0.898438 1 0 1.000000 +0 2.662842 -2.234388 16.225468 -0.388836 0.326273 0.861568 0.664063 0.953125 1 0 1.000000 +holygrail.tga +0 3.266457 -1.188897 16.225468 -0.477004 0.173589 0.861568 0.726563 0.953125 1 0 1.000000 +0 2.662842 -2.234388 16.225468 -0.388836 0.326273 0.861568 0.664063 0.953125 1 0 1.000000 +0 4.608204 -3.866745 18.369108 -0.666890 0.559587 0.491989 0.664063 0.898438 1 0 1.000000 +holygrail.tga +0 4.608204 -3.866745 18.369108 -0.666890 0.559587 0.491989 0.664063 0.898438 1 0 1.000000 +0 5.652799 -2.057456 18.369108 -0.818079 0.297739 0.491989 0.726563 0.898438 1 0 1.000000 +0 3.266457 -1.188897 16.225468 -0.477004 0.173589 0.861568 0.726563 0.953125 1 0 1.000000 +holygrail.tga +0 3.476092 0.000003 16.225468 -0.507614 0.000000 0.861568 0.773438 0.953125 1 0 1.000000 +0 3.266457 -1.188897 16.225468 -0.477004 0.173589 0.861568 0.726563 0.953125 1 0 1.000000 +0 5.652799 -2.057456 18.369108 -0.818079 0.297739 0.491989 0.726563 0.898438 1 0 1.000000 +holygrail.tga +0 5.652799 -2.057456 18.369108 -0.818079 0.297739 0.491989 0.726563 0.898438 1 0 1.000000 +0 6.015584 0.000001 18.369108 -0.870571 0.000000 0.491989 0.773438 0.898438 1 0 1.000000 +0 3.476092 0.000003 16.225468 -0.507614 0.000000 0.861568 0.773438 0.953125 1 0 1.000000 +holygrail.tga +0 1.050568 0.382381 15.421604 -0.170171 -0.061922 0.983459 0.832031 1.000000 1 0 1.000000 +0 1.117992 0.000004 15.421604 -0.181097 0.000000 0.983459 0.773438 1.000000 1 0 1.000000 +0 3.476092 0.000003 16.225468 -0.507614 0.000000 0.861568 0.773438 0.953125 1 0 1.000000 +holygrail.tga +0 3.476092 0.000003 16.225468 -0.507614 0.000000 0.861568 0.773438 0.953125 1 0 1.000000 +0 3.266459 1.188897 16.225468 -0.477004 -0.173589 0.861568 0.832031 0.953125 1 0 1.000000 +0 1.050568 0.382381 15.421604 -0.170171 -0.061922 0.983459 0.832031 1.000000 1 0 1.000000 +holygrail.tga +0 0.856432 0.718634 15.421607 -0.138737 -0.116398 0.983459 0.886719 1.000000 1 0 1.000000 +0 1.050568 0.382381 15.421604 -0.170171 -0.061922 0.983459 0.832031 1.000000 1 0 1.000000 +0 3.266459 1.188897 16.225468 -0.477004 -0.173589 0.861568 0.832031 0.953125 1 0 1.000000 +holygrail.tga +0 3.266459 1.188897 16.225468 -0.477004 -0.173589 0.861568 0.832031 0.953125 1 0 1.000000 +0 2.662842 2.234391 16.225471 -0.388836 -0.326273 0.861568 0.886719 0.953125 1 0 1.000000 +0 0.856432 0.718634 15.421607 -0.138737 -0.116398 0.983459 0.886719 1.000000 1 0 1.000000 +holygrail.tga +0 0.558995 0.968213 15.421606 -0.090548 -0.156835 0.983459 0.941406 1.000000 1 0 1.000000 +0 0.856432 0.718634 15.421607 -0.138737 -0.116398 0.983459 0.886719 1.000000 1 0 1.000000 +0 2.662842 2.234391 16.225471 -0.388836 -0.326273 0.861568 0.886719 0.953125 1 0 1.000000 +holygrail.tga +0 2.662842 2.234391 16.225471 -0.388836 -0.326273 0.861568 0.886719 0.953125 1 0 1.000000 +0 1.738046 3.010388 16.225471 -0.253792 -0.439589 0.861568 0.941406 0.953125 1 0 1.000000 +0 0.558995 0.968213 15.421606 -0.090548 -0.156835 0.983459 0.941406 1.000000 1 0 1.000000 +holygrail.tga +0 0.194135 1.101012 15.421606 -0.031434 -0.178350 0.983459 1.000000 1.000000 1 0 1.000000 +0 0.558995 0.968213 15.421606 -0.090548 -0.156835 0.983459 0.941406 1.000000 1 0 1.000000 +0 1.738046 3.010388 16.225471 -0.253792 -0.439589 0.861568 0.941406 0.953125 1 0 1.000000 +holygrail.tga +0 1.738046 3.010388 16.225471 -0.253792 -0.439589 0.861568 0.941406 0.953125 1 0 1.000000 +0 0.603616 3.423287 16.225471 -0.088137 -0.499893 0.861568 1.000000 0.953125 1 0 1.000000 +0 0.194135 1.101012 15.421606 -0.031434 -0.178350 0.983459 1.000000 1.000000 1 0 1.000000 +holygrail.tga +0 -0.194137 1.101012 15.421606 0.031434 -0.178350 0.983459 0.058594 1.000000 1 0 1.000000 +0 0.194135 1.101012 15.421606 -0.031434 -0.178350 0.983459 0.000000 1.000000 1 0 1.000000 +0 0.603616 3.423287 16.225471 -0.088137 -0.499893 0.861568 0.000000 0.953125 1 0 1.000000 +holygrail.tga +0 0.603616 3.423287 16.225471 -0.088137 -0.499893 0.861568 0.000000 0.953125 1 0 1.000000 +0 -0.603617 3.423287 16.225471 0.088137 -0.499893 0.861568 0.058594 0.953125 1 0 1.000000 +0 -0.194137 1.101012 15.421606 0.031434 -0.178350 0.983459 0.058594 1.000000 1 0 1.000000 +holygrail.tga +0 -0.558994 0.968215 15.421606 0.090548 -0.156835 0.983459 0.117188 1.000000 1 0 1.000000 +0 -0.194137 1.101012 15.421606 0.031434 -0.178350 0.983459 0.058594 1.000000 1 0 1.000000 +0 -0.603617 3.423287 16.225471 0.088137 -0.499893 0.861568 0.058594 0.953125 1 0 1.000000 +holygrail.tga +0 -0.603617 3.423287 16.225471 0.088137 -0.499893 0.861568 0.058594 0.953125 1 0 1.000000 +0 -1.738045 3.010389 16.225471 0.253792 -0.439589 0.861568 0.117188 0.953125 1 0 1.000000 +0 -0.558994 0.968215 15.421606 0.090548 -0.156835 0.983459 0.117188 1.000000 1 0 1.000000 +holygrail.tga +0 -0.856431 0.718634 15.421607 0.138707 -0.116398 0.983459 0.171875 1.000000 1 0 1.000000 +0 -0.558994 0.968215 15.421606 0.090548 -0.156835 0.983459 0.117188 1.000000 1 0 1.000000 +0 -1.738045 3.010389 16.225471 0.253792 -0.439589 0.861568 0.117188 0.953125 1 0 1.000000 +holygrail.tga +0 -1.738045 3.010389 16.225471 0.253792 -0.439589 0.861568 0.117188 0.953125 1 0 1.000000 +0 -2.662841 2.234391 16.225471 0.388836 -0.326273 0.861568 0.171875 0.953125 1 0 1.000000 +0 -0.856431 0.718634 15.421607 0.138707 -0.116398 0.983459 0.171875 1.000000 1 0 1.000000 +holygrail.tga +0 -1.050570 0.382377 15.421604 0.170171 -0.061922 0.983459 0.226563 1.000000 1 0 1.000000 +0 -0.856431 0.718634 15.421607 0.138707 -0.116398 0.983459 0.171875 1.000000 1 0 1.000000 +0 -2.662841 2.234391 16.225471 0.388836 -0.326273 0.861568 0.171875 0.953125 1 0 1.000000 +holygrail.tga +0 -2.662841 2.234391 16.225471 0.388836 -0.326273 0.861568 0.171875 0.953125 1 0 1.000000 +0 -3.266459 1.188895 16.225468 0.477004 -0.173589 0.861568 0.226563 0.953125 1 0 1.000000 +0 -1.050570 0.382377 15.421604 0.170171 -0.061922 0.983459 0.226563 1.000000 1 0 1.000000 +holygrail.tga +0 -1.117993 0.000002 15.421604 0.181097 0.000000 0.983459 0.289063 1.000000 1 0 1.000000 +0 -1.050570 0.382377 15.421604 0.170171 -0.061922 0.983459 0.226563 1.000000 1 0 1.000000 +0 -3.266459 1.188895 16.225468 0.477004 -0.173589 0.861568 0.226563 0.953125 1 0 1.000000 +holygrail.tga +0 -3.266459 1.188895 16.225468 0.477004 -0.173589 0.861568 0.226563 0.953125 1 0 1.000000 +0 -3.476093 0.000002 16.225468 0.507614 0.000000 0.861568 0.289063 0.953125 1 0 1.000000 +0 -1.117993 0.000002 15.421604 0.181097 0.000000 0.983459 0.289063 1.000000 1 0 1.000000 +holygrail.tga +0 -1.050570 -0.382374 15.421605 0.170171 0.061922 0.983459 0.339844 1.000000 1 0 1.000000 +0 -1.117993 0.000002 15.421604 0.181097 0.000000 0.983459 0.289063 1.000000 1 0 1.000000 +0 -3.476093 0.000002 16.225468 0.507614 0.000000 0.861568 0.289063 0.953125 1 0 1.000000 +holygrail.tga +0 -3.476093 0.000002 16.225468 0.507614 0.000000 0.861568 0.289063 0.953125 1 0 1.000000 +0 -3.266459 -1.188892 16.225468 0.477004 0.173589 0.861568 0.339844 0.953125 1 0 1.000000 +0 -1.050570 -0.382374 15.421605 0.170171 0.061922 0.983459 0.339844 1.000000 1 0 1.000000 +holygrail.tga +0 -0.856433 -0.718628 15.421605 0.138707 0.116398 0.983459 0.394531 1.000000 1 0 1.000000 +0 -1.050570 -0.382374 15.421605 0.170171 0.061922 0.983459 0.339844 1.000000 1 0 1.000000 +0 -3.266459 -1.188892 16.225468 0.477004 0.173589 0.861568 0.339844 0.953125 1 0 1.000000 +holygrail.tga +0 -3.266459 -1.188892 16.225468 0.477004 0.173589 0.861568 0.339844 0.953125 1 0 1.000000 +0 -2.662843 -2.234386 16.225468 0.388836 0.326273 0.861568 0.394531 0.953125 1 0 1.000000 +0 -0.856433 -0.718628 15.421605 0.138707 0.116398 0.983459 0.394531 1.000000 1 0 1.000000 +holygrail.tga +0 -0.558999 -0.968206 15.421605 0.090548 0.156835 0.983459 0.449219 1.000000 1 0 1.000000 +0 -0.856433 -0.718628 15.421605 0.138707 0.116398 0.983459 0.394531 1.000000 1 0 1.000000 +0 -2.662843 -2.234386 16.225468 0.388836 0.326273 0.861568 0.394531 0.953125 1 0 1.000000 +holygrail.tga +0 -2.662843 -2.234386 16.225468 0.388836 0.326273 0.861568 0.394531 0.953125 1 0 1.000000 +0 -1.738049 -3.010380 16.225470 0.253792 0.439589 0.861568 0.449219 0.953125 1 0 1.000000 +0 -0.558999 -0.968206 15.421605 0.090548 0.156835 0.983459 0.449219 1.000000 1 0 1.000000 +holygrail.tga +0 -0.194136 -1.101005 15.421605 0.031434 0.178350 0.983459 0.503906 1.000000 1 0 1.000000 +0 -0.558999 -0.968206 15.421605 0.090548 0.156835 0.983459 0.449219 1.000000 1 0 1.000000 +0 -1.738049 -3.010380 16.225470 0.253792 0.439589 0.861568 0.449219 0.953125 1 0 1.000000 +holygrail.tga +0 -1.738049 -3.010380 16.225470 0.253792 0.439589 0.861568 0.449219 0.953125 1 0 1.000000 +0 -0.603617 -3.423280 16.225470 0.088137 0.499893 0.861568 0.503906 0.953125 1 0 1.000000 +0 -0.194136 -1.101005 15.421605 0.031434 0.178350 0.983459 0.503906 1.000000 1 0 1.000000 +holygrail.tga +0 0.194136 -1.101005 15.421605 -0.031434 0.178350 0.983459 0.554688 1.000000 1 0 1.000000 +0 -0.194136 -1.101005 15.421605 0.031434 0.178350 0.983459 0.503906 1.000000 1 0 1.000000 +0 -0.603617 -3.423280 16.225470 0.088137 0.499893 0.861568 0.503906 0.953125 1 0 1.000000 +holygrail.tga +0 -0.603617 -3.423280 16.225470 0.088137 0.499893 0.861568 0.503906 0.953125 1 0 1.000000 +0 0.603615 -3.423281 16.225470 -0.088137 0.499893 0.861568 0.554688 0.953125 1 0 1.000000 +0 0.194136 -1.101005 15.421605 -0.031434 0.178350 0.983459 0.554688 1.000000 1 0 1.000000 +holygrail.tga +0 0.558996 -0.968207 15.421605 -0.090548 0.156835 0.983459 0.613281 1.000000 1 0 1.000000 +0 0.194136 -1.101005 15.421605 -0.031434 0.178350 0.983459 0.554688 1.000000 1 0 1.000000 +0 0.603615 -3.423281 16.225470 -0.088137 0.499893 0.861568 0.554688 0.953125 1 0 1.000000 +holygrail.tga +0 0.603615 -3.423281 16.225470 -0.088137 0.499893 0.861568 0.554688 0.953125 1 0 1.000000 +0 1.738045 -3.010382 16.225470 -0.253792 0.439589 0.861568 0.613281 0.953125 1 0 1.000000 +0 0.558996 -0.968207 15.421605 -0.090548 0.156835 0.983459 0.613281 1.000000 1 0 1.000000 +holygrail.tga +0 0.856433 -0.718628 15.421605 -0.138707 0.116398 0.983459 0.664063 1.000000 1 0 1.000000 +0 0.558996 -0.968207 15.421605 -0.090548 0.156835 0.983459 0.613281 1.000000 1 0 1.000000 +0 1.738045 -3.010382 16.225470 -0.253792 0.439589 0.861568 0.613281 0.953125 1 0 1.000000 +holygrail.tga +0 1.738045 -3.010382 16.225470 -0.253792 0.439589 0.861568 0.613281 0.953125 1 0 1.000000 +0 2.662842 -2.234388 16.225468 -0.388836 0.326273 0.861568 0.664063 0.953125 1 0 1.000000 +0 0.856433 -0.718628 15.421605 -0.138707 0.116398 0.983459 0.664063 1.000000 1 0 1.000000 +holygrail.tga +0 1.050567 -0.382379 15.421605 -0.170171 0.061922 0.983459 0.726563 1.000000 1 0 1.000000 +0 0.856433 -0.718628 15.421605 -0.138707 0.116398 0.983459 0.664063 1.000000 1 0 1.000000 +0 2.662842 -2.234388 16.225468 -0.388836 0.326273 0.861568 0.664063 0.953125 1 0 1.000000 +holygrail.tga +0 2.662842 -2.234388 16.225468 -0.388836 0.326273 0.861568 0.664063 0.953125 1 0 1.000000 +0 3.266457 -1.188897 16.225468 -0.477004 0.173589 0.861568 0.726563 0.953125 1 0 1.000000 +0 1.050567 -0.382379 15.421605 -0.170171 0.061922 0.983459 0.726563 1.000000 1 0 1.000000 +holygrail.tga +0 1.117992 0.000004 15.421604 -0.181097 0.000000 0.983459 0.773438 1.000000 1 0 1.000000 +0 1.050567 -0.382379 15.421605 -0.170171 0.061922 0.983459 0.726563 1.000000 1 0 1.000000 +0 3.266457 -1.188897 16.225468 -0.477004 0.173589 0.861568 0.726563 0.953125 1 0 1.000000 +holygrail.tga +0 3.266457 -1.188897 16.225468 -0.477004 0.173589 0.861568 0.726563 0.953125 1 0 1.000000 +0 3.476092 0.000003 16.225468 -0.507614 0.000000 0.861568 0.773438 0.953125 1 0 1.000000 +0 1.117992 0.000004 15.421604 -0.181097 0.000000 0.983459 0.773438 1.000000 1 0 1.000000 +end diff --git a/test/models/SMD/holygrail.tga b/test/models/SMD/holygrail.tga new file mode 100644 index 000000000..99df7364f Binary files /dev/null and b/test/models/SMD/holygrail.tga differ diff --git a/test/unit/AbstractImportExportBase.cpp b/test/unit/AbstractImportExportBase.cpp new file mode 100644 index 000000000..27748301f --- /dev/null +++ b/test/unit/AbstractImportExportBase.cpp @@ -0,0 +1,47 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "AbstractImportExportBase.h" + +using namespace ::Assimp; + +AbstractImportExportBase::~AbstractImportExportBase() { + // empty +} diff --git a/test/unit/AbstractImportExportBase.h b/test/unit/AbstractImportExportBase.h new file mode 100644 index 000000000..529b9cf7d --- /dev/null +++ b/test/unit/AbstractImportExportBase.h @@ -0,0 +1,55 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#pragma once + +#include "UnitTestPCH.h" + +class AbstractImportExportBase : public ::testing::Test { +public: + virtual ~AbstractImportExportBase(); + virtual bool importerTest() = 0; + virtual bool exporterTest(); +}; + +inline +bool AbstractImportExportBase::exporterTest() { + return true; +} diff --git a/test/unit/SceneDiffer.cpp b/test/unit/SceneDiffer.cpp index 395ab77ce..14edeaa5c 100644 --- a/test/unit/SceneDiffer.cpp +++ b/test/unit/SceneDiffer.cpp @@ -44,9 +44,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -using namespace Assimp; +namespace Assimp { -SceneDiffer::SceneDiffer() { +SceneDiffer::SceneDiffer() +: m_diffs() { // empty } @@ -94,14 +95,14 @@ bool SceneDiffer::isEqual( const aiScene *expected, const aiScene *toCompare ) { addDiff( stream.str() ); return false; } - + if ( expected->mNumMaterials > 0 ) { if ( nullptr == expected->mMaterials || nullptr == toCompare->mMaterials ) { addDiff( "Number of materials > 0 and mat pointer is nullptr" ); return false; } } - + for ( unsigned int i = 0; i < expected->mNumMaterials; i++ ) { aiMaterial *expectedMat( expected->mMaterials[ i ] ); aiMaterial *toCompareMat( expected->mMaterials[ i ] ); @@ -119,7 +120,7 @@ void SceneDiffer::showReport() { if ( m_diffs.empty() ) { return; } - + for ( std::vector::iterator it = m_diffs.begin(); it != m_diffs.end(); it++ ) { std::cout << *it << "\n"; } @@ -144,11 +145,11 @@ static std::string dumpVector3( const aiVector3D &toDump ) { return stream.str(); } -static std::string dumpColor4D( const aiColor4D &toDump ) { +/*static std::string dumpColor4D( const aiColor4D &toDump ) { std::stringstream stream; stream << "( " << toDump.r << ", " << toDump.g << ", " << toDump.b << ", " << toDump.a << ")"; return stream.str(); -} +}*/ static std::string dumpFace( const aiFace &face ) { std::stringstream stream; @@ -156,7 +157,8 @@ static std::string dumpFace( const aiFace &face ) { stream << face.mIndices[ i ]; if ( i < face.mNumIndices - 1 ) { stream << ", "; - } else { + } + else { stream << "\n"; } } @@ -213,98 +215,98 @@ bool SceneDiffer::compareMesh( aiMesh *expected, aiMesh *toCompare ) { return false; } -// return true; - - //ToDo! - bool normalEqual( true ); -/* for ( unsigned int i = 0; i < expected->mNumVertices; i++ ) { - aiVector3D &expNormal( expected->mNormals[ i ] ); - aiVector3D &toCompNormal( toCompare->mNormals[ i ] ); - if ( expNormal.Equal( toCompNormal ) ) { - std::stringstream stream; - stream << "Normal not equal ( expected: " << dumpVector3( expNormal ) << ", found: " << dumpVector3( toCompNormal ) << "\n"; - addDiff( stream.str() ); - normalEqual = false; - } - } - if ( !normalEqual ) { - return false; - } + // return true; - // vertex colors - bool vertColEqual( true ); - for ( unsigned int a = 0; a < AI_MAX_NUMBER_OF_COLOR_SETS; a++ ) { - if ( expected->HasVertexColors(a) != toCompare->HasVertexColors(a) ) { - addDiff( "Expected are normals, toCompare does not have any." ); - return false; - } + //ToDo! + /*bool normalEqual( true ); for ( unsigned int i = 0; i < expected->mNumVertices; i++ ) { - aiColor4D &expColor4D( expected->mColors[ a ][ i ] ); - aiColor4D &toCompColor4D( toCompare->mColors[ a ][ i ] ); - if ( expColor4D != toCompColor4D ) { + aiVector3D &expNormal( expected->mNormals[ i ] ); + aiVector3D &toCompNormal( toCompare->mNormals[ i ] ); + if ( expNormal.Equal( toCompNormal ) ) { std::stringstream stream; - stream << "Color4D not equal ( expected: " << dumpColor4D( expColor4D ) << ", found: " << dumpColor4D( toCompColor4D ) << "\n"; + stream << "Normal not equal ( expected: " << dumpVector3( expNormal ) << ", found: " << dumpVector3( toCompNormal ) << "\n"; addDiff( stream.str() ); - vertColEqual = false; + normalEqual = false; } } - if ( !vertColEqual ) { + if ( !normalEqual ) { return false; } - } - // texture coords - bool texCoordsEqual( true ); - for ( unsigned int a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; a++ ) { - if ( expected->HasTextureCoords( a ) != toCompare->HasTextureCoords( a ) ) { - addDiff( "Expected are texture coords, toCompare does not have any." ); - return false; - } - for ( unsigned int i = 0; i < expected->mNumVertices; i++ ) { - aiVector3D &expTexCoord( expected->mTextureCoords[ a ][ i ] ); - aiVector3D &toCompTexCoord( toCompare->mTextureCoords[ a ][ i ] ); - if ( expTexCoord.Equal( toCompTexCoord ) ) { - std::stringstream stream; - stream << "Texture coords not equal ( expected: " << dumpVector3( expTexCoord ) << ", found: " << dumpVector3( toCompTexCoord ) << "\n"; - addDiff( stream.str() ); - vertColEqual = false; + // vertex colors + bool vertColEqual( true ); + for ( unsigned int a = 0; a < AI_MAX_NUMBER_OF_COLOR_SETS; a++ ) { + if ( expected->HasVertexColors(a) != toCompare->HasVertexColors(a) ) { + addDiff( "Expected are normals, toCompare does not have any." ); + return false; + } + for ( unsigned int i = 0; i < expected->mNumVertices; i++ ) { + aiColor4D &expColor4D( expected->mColors[ a ][ i ] ); + aiColor4D &toCompColor4D( toCompare->mColors[ a ][ i ] ); + if ( expColor4D != toCompColor4D ) { + std::stringstream stream; + stream << "Color4D not equal ( expected: " << dumpColor4D( expColor4D ) << ", found: " << dumpColor4D( toCompColor4D ) << "\n"; + addDiff( stream.str() ); + vertColEqual = false; + } + } + if ( !vertColEqual ) { + return false; } } - if ( !vertColEqual ) { + + // texture coords + bool texCoordsEqual( true ); + for ( unsigned int a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; a++ ) { + if ( expected->HasTextureCoords( a ) != toCompare->HasTextureCoords( a ) ) { + addDiff( "Expected are texture coords, toCompare does not have any." ); + return false; + } + for ( unsigned int i = 0; i < expected->mNumVertices; i++ ) { + aiVector3D &expTexCoord( expected->mTextureCoords[ a ][ i ] ); + aiVector3D &toCompTexCoord( toCompare->mTextureCoords[ a ][ i ] ); + if ( expTexCoord.Equal( toCompTexCoord ) ) { + std::stringstream stream; + stream << "Texture coords not equal ( expected: " << dumpVector3( expTexCoord ) << ", found: " << dumpVector3( toCompTexCoord ) << "\n"; + addDiff( stream.str() ); + vertColEqual = false; + } + } + if ( !vertColEqual ) { + return false; + } + } + + // tangents and bi-tangents + if ( expected->HasTangentsAndBitangents() != toCompare->HasTangentsAndBitangents() ) { + addDiff( "Expected are tangents and bi-tangents, toCompare does not have any." ); return false; } - } + bool tangentsEqual( true ); + for ( unsigned int i = 0; i < expected->mNumVertices; i++ ) { + aiVector3D &expTangents( expected->mTangents[ i ] ); + aiVector3D &toCompTangents( toCompare->mTangents[ i ] ); + if ( expTangents.Equal( toCompTangents ) ) { + std::stringstream stream; + stream << "Tangents not equal ( expected: " << dumpVector3( expTangents ) << ", found: " << dumpVector3( toCompTangents ) << "\n"; + addDiff( stream.str() ); + tangentsEqual = false; + } - // tangents and bi-tangents - if ( expected->HasTangentsAndBitangents() != toCompare->HasTangentsAndBitangents() ) { - addDiff( "Expected are tangents and bi-tangents, toCompare does not have any." ); - return false; - } - bool tangentsEqual( true ); - for ( unsigned int i = 0; i < expected->mNumVertices; i++ ) { - aiVector3D &expTangents( expected->mTangents[ i ] ); - aiVector3D &toCompTangents( toCompare->mTangents[ i ] ); - if ( expTangents.Equal( toCompTangents ) ) { - std::stringstream stream; - stream << "Tangents not equal ( expected: " << dumpVector3( expTangents ) << ", found: " << dumpVector3( toCompTangents ) << "\n"; - addDiff( stream.str() ); - tangentsEqual = false; + aiVector3D &expBiTangents( expected->mBitangents[ i ] ); + aiVector3D &toCompBiTangents( toCompare->mBitangents[ i ] ); + if ( expBiTangents.Equal( toCompBiTangents ) ) { + std::stringstream stream; + stream << "Tangents not equal ( expected: " << dumpVector3( expBiTangents ) << ", found: " << dumpVector3( toCompBiTangents ) << " )\n"; + addDiff( stream.str() ); + tangentsEqual = false; + } } + if ( !tangentsEqual ) { + return false; + }*/ - aiVector3D &expBiTangents( expected->mBitangents[ i ] ); - aiVector3D &toCompBiTangents( toCompare->mBitangents[ i ] ); - if ( expBiTangents.Equal( toCompBiTangents ) ) { - std::stringstream stream; - stream << "Tangents not equal ( expected: " << dumpVector3( expBiTangents ) << ", found: " << dumpVector3( toCompBiTangents ) << " )\n"; - addDiff( stream.str() ); - tangentsEqual = false; - } - } - if ( !tangentsEqual ) { - return false; - }*/ - - // faces + // faces if ( expected->mNumFaces != toCompare->mNumFaces ) { std::stringstream stream; stream << "Number of faces are not equal, ( expected: " << expected->mNumFaces << ", found: " << toCompare->mNumFaces << ")\n"; @@ -367,3 +369,5 @@ bool SceneDiffer::compareMaterial( aiMaterial *expected, aiMaterial *toCompare ) return true; } + +} diff --git a/test/unit/SceneDiffer.h b/test/unit/SceneDiffer.h index 7dc5973ff..f0cc45907 100644 --- a/test/unit/SceneDiffer.h +++ b/test/unit/SceneDiffer.h @@ -50,6 +50,8 @@ struct aiMesh; struct aiMaterial; struct aiFace; +namespace Assimp { + class SceneDiffer { public: SceneDiffer(); @@ -67,3 +69,5 @@ protected: private: std::vector m_diffs; }; + +} diff --git a/test/unit/TestIOStream.h b/test/unit/TestIOStream.h index a979caec8..3dbfc45e3 100644 --- a/test/unit/TestIOStream.h +++ b/test/unit/TestIOStream.h @@ -39,7 +39,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #pragma once -#include "DefaultIOStream.h" +#include using namespace ::Assimp; diff --git a/test/unit/TestIOSystem.h b/test/unit/TestIOSystem.h index cf7962f98..e7ed193b8 100644 --- a/test/unit/TestIOSystem.h +++ b/test/unit/TestIOSystem.h @@ -1,3 +1,43 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ #pragma once #include "UnitTestPCH.h" diff --git a/test/unit/TestModelFactory.h b/test/unit/TestModelFactory.h new file mode 100644 index 000000000..94dd97036 --- /dev/null +++ b/test/unit/TestModelFactory.h @@ -0,0 +1,97 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#pragma once + +#include "UnitTestPCH.h" +#include +#include + +namespace Assimp { + +class TestModelFacttory { +public: + TestModelFacttory() { + // empty + } + + ~TestModelFacttory() { + // empty + } + + static aiScene *createDefaultTestModel( float &opacity ) { + aiScene *scene( new aiScene ); + scene->mNumMaterials = 1; + scene->mMaterials = new aiMaterial*; + scene->mMaterials[ 0 ] = new aiMaterial; + aiColor3D color( 1, 0, 0 ); + EXPECT_EQ( AI_SUCCESS, scene->mMaterials[ 0 ]->AddProperty( &color, 1, AI_MATKEY_COLOR_DIFFUSE ) ); + + ::srand( static_cast< unsigned int >( ::time( NULL ) ) ); + opacity = float( rand() ) / float( RAND_MAX ); + EXPECT_EQ( AI_SUCCESS, scene->mMaterials[ 0 ]->AddProperty( &opacity, 1, AI_MATKEY_OPACITY ) ); + + scene->mNumMeshes = 1; + scene->mMeshes = new aiMesh*; + scene->mMeshes[ 0 ] = new aiMesh; + scene->mMeshes[ 0 ]->mMaterialIndex = 0; + scene->mMeshes[ 0 ]->mPrimitiveTypes = aiPrimitiveType_TRIANGLE; + scene->mMeshes[ 0 ]->mNumVertices = 3; + scene->mMeshes[ 0 ]->mVertices = new aiVector3D[ 3 ]; + scene->mMeshes[ 0 ]->mVertices[ 0 ] = aiVector3D( 1, 0, 0 ); + scene->mMeshes[ 0 ]->mVertices[ 1 ] = aiVector3D( 0, 1, 0 ); + scene->mMeshes[ 0 ]->mVertices[ 2 ] = aiVector3D( 0, 0, 1 ); + scene->mMeshes[ 0 ]->mNumFaces = 1; + scene->mMeshes[ 0 ]->mFaces = new aiFace; + scene->mMeshes[ 0 ]->mFaces[ 0 ].mNumIndices = 3; + scene->mMeshes[ 0 ]->mFaces[ 0 ].mIndices = new unsigned int[ 3 ]; + scene->mMeshes[ 0 ]->mFaces[ 0 ].mIndices[ 0 ] = 0; + scene->mMeshes[ 0 ]->mFaces[ 0 ].mIndices[ 1 ] = 1; + scene->mMeshes[ 0 ]->mFaces[ 0 ].mIndices[ 2 ] = 2; + + scene->mRootNode = new aiNode; + scene->mRootNode->mNumMeshes = 1; + scene->mRootNode->mMeshes = new unsigned int( 0 ); + + return scene; + } +}; + +} diff --git a/test/unit/ut3DImportExport.cpp b/test/unit/ut3DImportExport.cpp new file mode 100644 index 000000000..28f1eb433 --- /dev/null +++ b/test/unit/ut3DImportExport.cpp @@ -0,0 +1,61 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class ut3DImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/3D/box_a.3d", 0 ); + return nullptr != scene; + } +}; + +TEST_F( ut3DImportExport, import3DFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/ut3DSImportExport.cpp b/test/unit/ut3DSImportExport.cpp new file mode 100644 index 000000000..9d1052af0 --- /dev/null +++ b/test/unit/ut3DSImportExport.cpp @@ -0,0 +1,61 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class ut3DSImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/3DS/fels.3ds", 0 ); + return nullptr != scene; + } +}; + +TEST_F( ut3DSImportExport, import3DSFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utACImportExport.cpp b/test/unit/utACImportExport.cpp new file mode 100644 index 000000000..757d065f6 --- /dev/null +++ b/test/unit/utACImportExport.cpp @@ -0,0 +1,61 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utACImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/AC/Wuson.ac", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utACImportExport, importACFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utAMFImportExport.cpp b/test/unit/utAMFImportExport.cpp new file mode 100644 index 000000000..fda1df1c9 --- /dev/null +++ b/test/unit/utAMFImportExport.cpp @@ -0,0 +1,61 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utAMFImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/AMF/test1.amf", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utAMFImportExport, importACFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utASEImportExport.cpp b/test/unit/utASEImportExport.cpp new file mode 100644 index 000000000..4fdbe8e79 --- /dev/null +++ b/test/unit/utASEImportExport.cpp @@ -0,0 +1,61 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utASEImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/ASE/ThreeCubesGreen.ASE", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utASEImportExport, importACFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utAnim.cpp b/test/unit/utAnim.cpp new file mode 100644 index 000000000..90d6d36b3 --- /dev/null +++ b/test/unit/utAnim.cpp @@ -0,0 +1,107 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" + +#include + +using namespace Assimp; + +class utAnim : public ::testing::Test { + // empty +}; + +TEST_F( utAnim, aiVectorKeyCreationTest ) { + aiVectorKey defaultConstTest; + EXPECT_DOUBLE_EQ( 0.0, defaultConstTest.mTime ); + + aiVector3D v( 1, 2, 3 ); + aiVectorKey constrWithValuesTest( 1, v ); + EXPECT_DOUBLE_EQ( 1.0, constrWithValuesTest.mTime ); + EXPECT_EQ( v, constrWithValuesTest.mValue ); + + EXPECT_NE( defaultConstTest, constrWithValuesTest ); + EXPECT_TRUE( defaultConstTest != constrWithValuesTest ); + defaultConstTest.mTime = 1; + constrWithValuesTest.mTime = 2; + EXPECT_TRUE( defaultConstTest < constrWithValuesTest ); +} + +TEST_F( utAnim, aiQuatKeyTest ) { + aiQuatKey defaultConstrTest; + EXPECT_DOUBLE_EQ( 0.0, defaultConstrTest.mTime ); + + aiQuaternion q; + aiQuatKey constrWithValuesTest( 1.0, q ); + EXPECT_DOUBLE_EQ( 1.0, constrWithValuesTest.mTime ); + EXPECT_EQ( q, constrWithValuesTest.mValue ); +} + +TEST_F( utAnim, aiNodeAnimTest ) { + bool ok( true ); + try { + aiNodeAnim myAnim; + EXPECT_EQ( aiAnimBehaviour_DEFAULT, myAnim.mPreState ); + EXPECT_EQ( aiAnimBehaviour_DEFAULT, myAnim.mPostState ); + } catch ( ... ) { + ok = false; + } + EXPECT_TRUE( ok ); +} + +TEST_F( utAnim, aiMeshAnimTest ) { + bool ok( true ); + try { + aiMeshAnim myMeshAnim; + } catch ( ... ) { + ok = false; + } + EXPECT_TRUE( ok ); +} + +TEST_F( utAnim, aiAnimationTest ) { + bool ok( true ); + try { + aiAnimation myAnimation; + } catch ( ... ) { + ok = false; + } + EXPECT_TRUE( ok ); +} \ No newline at end of file diff --git a/test/unit/utB3DImportExport.cpp b/test/unit/utB3DImportExport.cpp new file mode 100644 index 000000000..916a2112d --- /dev/null +++ b/test/unit/utB3DImportExport.cpp @@ -0,0 +1,61 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utB3DImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/B3D/WusonBlitz.b3d", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utB3DImportExport, importACFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utBVHImportExport.cpp b/test/unit/utBVHImportExport.cpp new file mode 100644 index 000000000..b78d9c2a0 --- /dev/null +++ b/test/unit/utBVHImportExport.cpp @@ -0,0 +1,59 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utBVHImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/BVH/01_01.bvh", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utBVHImportExport, importBlenFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utBlenderImportExport.cpp b/test/unit/utBlenderImportExport.cpp new file mode 100644 index 000000000..2c2b712b1 --- /dev/null +++ b/test/unit/utBlenderImportExport.cpp @@ -0,0 +1,59 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utBlenderImporterExporter : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/BLEND/box.blend", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utBlenderImporterExporter, importBlenFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utBlenderIntermediate.cpp b/test/unit/utBlenderIntermediate.cpp index eea30e202..89b324324 100644 --- a/test/unit/utBlenderIntermediate.cpp +++ b/test/unit/utBlenderIntermediate.cpp @@ -40,6 +40,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "UnitTestPCH.h" #include "BlenderIntermediate.h" +#include "./../include/assimp/camera.h" +#include "./../include/assimp/light.h" +#include "./../include/assimp/mesh.h" +#include "./../include/assimp/texture.h" using namespace ::Assimp; using namespace ::Assimp::Blender; diff --git a/test/unit/utCSMImportExport.cpp b/test/unit/utCSMImportExport.cpp new file mode 100644 index 000000000..6fc27d597 --- /dev/null +++ b/test/unit/utCSMImportExport.cpp @@ -0,0 +1,59 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utCSMImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/CSM/ThomasFechten.csm", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utCSMImportExport, importBlenFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utColladaImportExport.cpp b/test/unit/utColladaImportExport.cpp new file mode 100644 index 000000000..23134d313 --- /dev/null +++ b/test/unit/utColladaImportExport.cpp @@ -0,0 +1,59 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utColladaImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/Collada/duck.dae", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utColladaImportExport, importBlenFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utD3MFImportExport.cpp b/test/unit/utD3MFImportExport.cpp new file mode 100644 index 000000000..62de9d156 --- /dev/null +++ b/test/unit/utD3MFImportExport.cpp @@ -0,0 +1,57 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" +#include "AbstractImportExportBase.h" + +#include + +class utD3MFImporterExporter : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/3MF/box.3mf", 0); + return nullptr != scene; + } +}; + +TEST_F(utD3MFImporterExporter, import3MFFromFileTest) { + EXPECT_TRUE(importerTest()); +} diff --git a/test/unit/utDXFImporterExporter.cpp b/test/unit/utDXFImporterExporter.cpp new file mode 100644 index 000000000..74912212c --- /dev/null +++ b/test/unit/utDXFImporterExporter.cpp @@ -0,0 +1,61 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utDXFImporterExporter : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/DXF/PinkEggFromLW.dxf", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utDXFImporterExporter, importDXFFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utDefaultIOStream.cpp b/test/unit/utDefaultIOStream.cpp index 50a15437c..3f570665f 100644 --- a/test/unit/utDefaultIOStream.cpp +++ b/test/unit/utDefaultIOStream.cpp @@ -50,6 +50,7 @@ TEST_F( utDefaultIOStream, FileSizeTest ) { tmpnam( buffer ); std::FILE *fs( std::fopen( buffer, "w+" ) ); size_t written( std::fwrite( buffer, 1, sizeof( char ) * L_tmpnam, fs ) ); + EXPECT_NE( 0U, written ); std::fflush( fs ); TestDefaultIOStream myStream( fs, buffer ); diff --git a/test/unit/utFBXImporterExporter.cpp b/test/unit/utFBXImporterExporter.cpp new file mode 100644 index 000000000..d02d06def --- /dev/null +++ b/test/unit/utFBXImporterExporter.cpp @@ -0,0 +1,61 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utFBXImporterExporter : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/FBX/spider.fbx", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utFBXImporterExporter, importXFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utHMPImportExport.cpp b/test/unit/utHMPImportExport.cpp new file mode 100644 index 000000000..3dcfc387e --- /dev/null +++ b/test/unit/utHMPImportExport.cpp @@ -0,0 +1,61 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utHMPImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/HMP/terrain.hmp", 0 ); + return nullptr != scene; + + return true; + } +}; + +TEST_F( utHMPImportExport, importHMPFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utIFCImportExport.cpp b/test/unit/utIFCImportExport.cpp new file mode 100644 index 000000000..4b825a36b --- /dev/null +++ b/test/unit/utIFCImportExport.cpp @@ -0,0 +1,61 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utIFCImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/IFC/AC14-FZK-Haus.ifc", 0 ); + return nullptr != scene; + + return true; + } +}; + +TEST_F( utIFCImportExport, importIFCFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utIOStreamBuffer.cpp b/test/unit/utIOStreamBuffer.cpp index ded6c0eb7..aa70881a9 100644 --- a/test/unit/utIOStreamBuffer.cpp +++ b/test/unit/utIOStreamBuffer.cpp @@ -61,10 +61,10 @@ TEST_F( IOStreamBufferTest, creationTest ) { TEST_F( IOStreamBufferTest, accessCacheSizeTest ) { IOStreamBuffer myBuffer1; - EXPECT_NE( 0, myBuffer1.cacheSize() ); + EXPECT_NE( 0U, myBuffer1.cacheSize() ); IOStreamBuffer myBuffer2( 100 ); - EXPECT_EQ( 100, myBuffer2.cacheSize() ); + EXPECT_EQ( 100U, myBuffer2.cacheSize() ); } TEST_F( IOStreamBufferTest, open_close_Test ) { @@ -77,6 +77,7 @@ TEST_F( IOStreamBufferTest, open_close_Test ) { tmpnam( buffer ); std::FILE *fs( std::fopen( buffer, "w+" ) ); size_t written( std::fwrite( buffer, 1, sizeof( char ) * L_tmpnam, fs ) ); + EXPECT_NE( 0U, written ); std::fflush( fs ); TestDefaultIOStream myStream( fs, buffer ); @@ -91,10 +92,11 @@ TEST_F( IOStreamBufferTest, readlineTest ) { tmpnam( buffer ); std::FILE *fs( std::fopen( buffer, "w+" ) ); size_t written( std::fwrite( buffer, 1, sizeof( char ) * L_tmpnam, fs ) ); + EXPECT_NE( 0U, written ); std::fflush( fs ); IOStreamBuffer myBuffer( 26 ); - EXPECT_EQ( 26, myBuffer.cacheSize() ); + EXPECT_EQ( 26U, myBuffer.cacheSize() ); TestDefaultIOStream myStream( fs, buffer ); size_t size( myStream.FileSize() ); @@ -110,3 +112,4 @@ TEST_F( IOStreamBufferTest, readlineTest ) { TEST_F( IOStreamBufferTest, accessBlockIndexTest ) { } + diff --git a/test/unit/utIOSystem.cpp b/test/unit/utIOSystem.cpp index dfae55320..a2b333ab0 100644 --- a/test/unit/utIOSystem.cpp +++ b/test/unit/utIOSystem.cpp @@ -60,12 +60,6 @@ protected: TestIOSystem* pImp; }; -/* -virtual bool PushDirectory( const std::string &path ); -virtual const std::string &CurrentDirectory() const; -virtual bool PopDirectory(); -*/ - TEST_F( IOSystemTest, accessDirectoryStackTest ) { EXPECT_FALSE( pImp->PopDirectory() ); EXPECT_EQ( 0, pImp->StackSize() ); diff --git a/test/unit/utImporter.cpp b/test/unit/utImporter.cpp index 6e2d03a63..a2ba25ac2 100644 --- a/test/unit/utImporter.cpp +++ b/test/unit/utImporter.cpp @@ -44,7 +44,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../../include/assimp/scene.h" #include #include - +#include "TestIOSystem.h" +#include using namespace ::std; using namespace ::Assimp; @@ -52,12 +53,12 @@ using namespace ::Assimp; class ImporterTest : public ::testing::Test { public: - virtual void SetUp() { - pImp = new Importer(); + virtual void SetUp() { + pImp = new Importer(); } - - virtual void TearDown() { - delete pImp; + + virtual void TearDown() { + delete pImp; } protected: @@ -68,47 +69,47 @@ protected: // test data for Importer::ReadFileFromMemory() - ./test/3DS/CameraRollAnim.3ds static unsigned char InputData_abRawBlock[1310] = { -77,77,30,5,0,0,2,0,10,0,0,0,3,0,0,0,61,61,91,3,0,0,62,61,10,0,0,0,3,0,0,0, -0,1,10,0,0,0,0,0,128,63,0,64,254,2,0,0,66,111,120,48,49,0,0,65,242,2,0,0,16,65,64,1, -0,0,26,0,102,74,198,193,102,74,198,193,0,0,0,0,205,121,55,66,102,74,198,193,0,0,0,0,102,74,198,193, -138,157,184,65,0,0,0,0,205,121,55,66,138,157,184,65,0,0,0,0,102,74,198,193,102,74,198,193,90,252,26,66, -205,121,55,66,102,74,198,193,90,252,26,66,102,74,198,193,138,157,184,65,90,252,26,66,205,121,55,66,138,157,184,65, -90,252,26,66,102,74,198,193,102,74,198,193,0,0,0,0,205,121,55,66,102,74,198,193,0,0,0,0,205,121,55,66, -102,74,198,193,90,252,26,66,205,121,55,66,102,74,198,193,90,252,26,66,102,74,198,193,102,74,198,193,90,252,26,66, -102,74,198,193,102,74,198,193,0,0,0,0,205,121,55,66,138,157,184,65,0,0,0,0,205,121,55,66,102,74,198,193, -90,252,26,66,205,121,55,66,138,157,184,65,0,0,0,0,102,74,198,193,138,157,184,65,0,0,0,0,102,74,198,193, -138,157,184,65,90,252,26,66,102,74,198,193,138,157,184,65,90,252,26,66,205,121,55,66,138,157,184,65,90,252,26,66, -205,121,55,66,138,157,184,65,0,0,0,0,102,74,198,193,138,157,184,65,0,0,0,0,102,74,198,193,102,74,198,193, -90,252,26,66,102,74,198,193,102,74,198,193,90,252,26,66,102,74,198,193,138,157,184,65,0,0,0,0,64,65,216,0, -0,0,26,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,128,63,0,0,0,0, -0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,0,0,128,63, -0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63, -0,0,128,63,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0, -0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63, -0,0,128,63,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63, -0,0,128,63,0,0,128,63,0,0,128,63,0,0,0,0,0,0,0,0,96,65,54,0,0,0,0,0,128,63,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,53,169, -40,65,176,205,90,191,0,0,0,0,32,65,158,0,0,0,12,0,0,0,2,0,3,0,6,0,3,0,1,0,0,0, -6,0,4,0,5,0,7,0,6,0,7,0,6,0,4,0,6,0,8,0,9,0,10,0,6,0,11,0,12,0,13,0, -6,0,1,0,14,0,7,0,6,0,7,0,15,0,1,0,6,0,16,0,17,0,18,0,6,0,19,0,20,0,21,0, -6,0,22,0,0,0,23,0,6,0,24,0,6,0,25,0,6,0,80,65,54,0,0,0,2,0,0,0,2,0,0,0, -4,0,0,0,4,0,0,0,8,0,0,0,8,0,0,0,16,0,0,0,16,0,0,0,32,0,0,0,32,0,0,0, -64,0,0,0,64,0,0,0,0,64,67,0,0,0,67,97,109,101,114,97,48,49,0,0,71,52,0,0,0,189,19,25, -195,136,104,81,64,147,56,182,65,96,233,20,194,67,196,97,190,147,56,182,65,0,0,0,0,85,85,85,66,32,71,14, -0,0,0,0,0,0,0,0,0,122,68,0,176,179,1,0,0,10,176,21,0,0,0,5,0,77,65,88,83,67,69,78, -69,0,44,1,0,0,8,176,14,0,0,0,0,0,0,0,44,1,0,0,9,176,10,0,0,0,128,2,0,0,2,176, -168,0,0,0,48,176,8,0,0,0,0,0,16,176,18,0,0,0,66,111,120,48,49,0,0,64,0,0,255,255,19,176, -18,0,0,0,0,0,0,128,0,0,0,128,0,0,0,128,32,176,38,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,0,0,0,0,0,0,0,53,169,40,65,176,205,90,191,0,0,0,0,33,176,42,0,0,0,0,0,0,0, -0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -34,176,38,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0, -128,63,0,0,128,63,3,176,143,0,0,0,48,176,8,0,0,0,1,0,16,176,21,0,0,0,67,97,109,101,114,97, -48,49,0,0,64,0,0,255,255,32,176,38,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, -0,0,0,189,19,25,195,136,104,81,64,147,56,182,65,35,176,30,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -0,0,0,0,0,0,0,0,0,0,0,52,66,36,176,40,0,0,0,0,0,0,0,0,0,120,0,0,0,2,0,0, -0,0,0,0,0,0,0,120,13,90,189,120,0,0,0,0,0,99,156,154,194,4,176,73,0,0,0,48,176,8,0,0, -0,2,0,16,176,21,0,0,0,67,97,109,101,114,97,48,49,0,0,64,0,0,255,255,32,176,38,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,96,233,20,194,67,196,97,190,147,56,182,65, + 77,77,30,5,0,0,2,0,10,0,0,0,3,0,0,0,61,61,91,3,0,0,62,61,10,0,0,0,3,0,0,0, + 0,1,10,0,0,0,0,0,128,63,0,64,254,2,0,0,66,111,120,48,49,0,0,65,242,2,0,0,16,65,64,1, + 0,0,26,0,102,74,198,193,102,74,198,193,0,0,0,0,205,121,55,66,102,74,198,193,0,0,0,0,102,74,198,193, + 138,157,184,65,0,0,0,0,205,121,55,66,138,157,184,65,0,0,0,0,102,74,198,193,102,74,198,193,90,252,26,66, + 205,121,55,66,102,74,198,193,90,252,26,66,102,74,198,193,138,157,184,65,90,252,26,66,205,121,55,66,138,157,184,65, + 90,252,26,66,102,74,198,193,102,74,198,193,0,0,0,0,205,121,55,66,102,74,198,193,0,0,0,0,205,121,55,66, + 102,74,198,193,90,252,26,66,205,121,55,66,102,74,198,193,90,252,26,66,102,74,198,193,102,74,198,193,90,252,26,66, + 102,74,198,193,102,74,198,193,0,0,0,0,205,121,55,66,138,157,184,65,0,0,0,0,205,121,55,66,102,74,198,193, + 90,252,26,66,205,121,55,66,138,157,184,65,0,0,0,0,102,74,198,193,138,157,184,65,0,0,0,0,102,74,198,193, + 138,157,184,65,90,252,26,66,102,74,198,193,138,157,184,65,90,252,26,66,205,121,55,66,138,157,184,65,90,252,26,66, + 205,121,55,66,138,157,184,65,0,0,0,0,102,74,198,193,138,157,184,65,0,0,0,0,102,74,198,193,102,74,198,193, + 90,252,26,66,102,74,198,193,102,74,198,193,90,252,26,66,102,74,198,193,138,157,184,65,0,0,0,0,64,65,216,0, + 0,0,26,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,128,63,0,0,0,0, + 0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,0,0,128,63, + 0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63, + 0,0,128,63,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0, + 0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63, + 0,0,128,63,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63, + 0,0,128,63,0,0,128,63,0,0,128,63,0,0,0,0,0,0,0,0,96,65,54,0,0,0,0,0,128,63,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,53,169, + 40,65,176,205,90,191,0,0,0,0,32,65,158,0,0,0,12,0,0,0,2,0,3,0,6,0,3,0,1,0,0,0, + 6,0,4,0,5,0,7,0,6,0,7,0,6,0,4,0,6,0,8,0,9,0,10,0,6,0,11,0,12,0,13,0, + 6,0,1,0,14,0,7,0,6,0,7,0,15,0,1,0,6,0,16,0,17,0,18,0,6,0,19,0,20,0,21,0, + 6,0,22,0,0,0,23,0,6,0,24,0,6,0,25,0,6,0,80,65,54,0,0,0,2,0,0,0,2,0,0,0, + 4,0,0,0,4,0,0,0,8,0,0,0,8,0,0,0,16,0,0,0,16,0,0,0,32,0,0,0,32,0,0,0, + 64,0,0,0,64,0,0,0,0,64,67,0,0,0,67,97,109,101,114,97,48,49,0,0,71,52,0,0,0,189,19,25, + 195,136,104,81,64,147,56,182,65,96,233,20,194,67,196,97,190,147,56,182,65,0,0,0,0,85,85,85,66,32,71,14, + 0,0,0,0,0,0,0,0,0,122,68,0,176,179,1,0,0,10,176,21,0,0,0,5,0,77,65,88,83,67,69,78, + 69,0,44,1,0,0,8,176,14,0,0,0,0,0,0,0,44,1,0,0,9,176,10,0,0,0,128,2,0,0,2,176, + 168,0,0,0,48,176,8,0,0,0,0,0,16,176,18,0,0,0,66,111,120,48,49,0,0,64,0,0,255,255,19,176, + 18,0,0,0,0,0,0,128,0,0,0,128,0,0,0,128,32,176,38,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0,0,0,53,169,40,65,176,205,90,191,0,0,0,0,33,176,42,0,0,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 34,176,38,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0, + 128,63,0,0,128,63,3,176,143,0,0,0,48,176,8,0,0,0,1,0,16,176,21,0,0,0,67,97,109,101,114,97, + 48,49,0,0,64,0,0,255,255,32,176,38,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, + 0,0,0,189,19,25,195,136,104,81,64,147,56,182,65,35,176,30,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,0,0,0,0,0,0,0,0,52,66,36,176,40,0,0,0,0,0,0,0,0,0,120,0,0,0,2,0,0, + 0,0,0,0,0,0,0,120,13,90,189,120,0,0,0,0,0,99,156,154,194,4,176,73,0,0,0,48,176,8,0,0, + 0,2,0,16,176,21,0,0,0,67,97,109,101,114,97,48,49,0,0,64,0,0,255,255,32,176,38,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,96,233,20,194,67,196,97,190,147,56,182,65, }; #define AIUT_DEF_ERROR_TEXT "sorry, this is a test" @@ -271,4 +272,7 @@ TEST_F(ImporterTest, testMultipleReads) //EXPECT_TRUE(pImp->ReadFile(ASSIMP_TEST_MODELS_DIR "/X/dwarf.x",flags)); # is in nonbsd } -// ------------------------------------------------------------------------------------------------ +TEST_F( ImporterTest, SearchFileHeaderForTokenTest ) { + //DefaultIOSystem ioSystem; +// BaseImporter::SearchFileHeaderForToken( &ioSystem, assetPath, Token, 2 ) +} diff --git a/test/unit/utIssues.cpp b/test/unit/utIssues.cpp index 499fc80ee..cae5ee8cc 100644 --- a/test/unit/utIssues.cpp +++ b/test/unit/utIssues.cpp @@ -44,6 +44,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include "TestModelFactory.h" + using namespace Assimp; class utIssues : public ::testing::Test { @@ -53,57 +55,24 @@ class utIssues : public ::testing::Test { #ifndef ASSIMP_BUILD_NO_EXPORT TEST_F( utIssues, OpacityBugWhenExporting_727 ) { - /*aiScene *scene( new aiScene ); - - scene->mNumMaterials = 1; - scene->mMaterials = new aiMaterial*; - scene->mMaterials[ 0 ] = new aiMaterial; - aiColor3D color( 1, 0, 0 ); - EXPECT_EQ( AI_SUCCESS, scene->mMaterials[ 0 ]->AddProperty( &color, 1, AI_MATKEY_COLOR_DIFFUSE ) ); - - ::srand( static_cast( ::time( NULL ) ) ); - float opacity( float( rand() ) / float( RAND_MAX ) ); - EXPECT_EQ( AI_SUCCESS, scene->mMaterials[ 0 ]->AddProperty( &opacity, 1, AI_MATKEY_OPACITY ) ); - - scene->mNumMeshes = 1; - scene->mMeshes = new aiMesh*; - scene->mMeshes[ 0 ] = new aiMesh; - scene->mMeshes[ 0 ]->mMaterialIndex = 0; - scene->mMeshes[ 0 ]->mPrimitiveTypes = aiPrimitiveType_TRIANGLE; - scene->mMeshes[ 0 ]->mNumVertices = 3; - scene->mMeshes[ 0 ]->mVertices = new aiVector3D[ 3 ]; - scene->mMeshes[ 0 ]->mVertices[ 0 ] = aiVector3D( 1, 0, 0 ); - scene->mMeshes[ 0 ]->mVertices[ 1 ] = aiVector3D( 0, 1, 0 ); - scene->mMeshes[ 0 ]->mVertices[ 2 ] = aiVector3D( 0, 0, 1 ); - scene->mMeshes[ 0 ]->mNumFaces = 1; - scene->mMeshes[ 0 ]->mFaces = new aiFace; - scene->mMeshes[ 0 ]->mFaces[ 0 ].mNumIndices = 3; - scene->mMeshes[ 0 ]->mFaces[ 0 ].mIndices = new unsigned int[ 3 ]; - scene->mMeshes[ 0 ]->mFaces[ 0 ].mIndices[ 0 ] = 0; - scene->mMeshes[ 0 ]->mFaces[ 0 ].mIndices[ 1 ] = 1; - scene->mMeshes[ 0 ]->mFaces[ 0 ].mIndices[ 2 ] = 2; - - scene->mRootNode = new aiNode; - scene->mRootNode->mNumMeshes = 1; - scene->mRootNode->mMeshes = new unsigned int( 0 ); - + float opacity; + aiScene *scene( TestModelFacttory::createDefaultTestModel( opacity ) ); Assimp::Importer importer; Assimp::Exporter exporter; - for ( std::size_t i( 0 ); i < exporter.GetExportFormatCount(); ++i ) { - std::string path; - const aiExportFormatDesc *desc( exporter.GetExportFormatDescription( i ) ); - EXPECT_NE( desc, nullptr ); - path.append( desc->fileExtension ); - - ASSERT_EQ( AI_SUCCESS, exporter.Export( scene, desc->id, path ) ); - const aiScene *newScene( importer.ReadFile( path, 0 ) ); - ASSERT_TRUE( NULL != newScene ); - float newOpacity; - if ( newScene->mNumMaterials > 0 ) { - //ASSERT_EQ( AI_SUCCESS, newScene->mMaterials[ 0 ]->Get( AI_MATKEY_OPACITY, newOpacity ) ); - //EXPECT_EQ( opacity, newOpacity ); - } - }*/ + + std::string path = "dae"; + const aiExportFormatDesc *desc( exporter.GetExportFormatDescription( 0 ) ); + EXPECT_NE( desc, nullptr ); + path.append( desc->fileExtension ); + EXPECT_EQ( AI_SUCCESS, exporter.Export( scene, desc->id, path ) ); + const aiScene *newScene( importer.ReadFile( path, 0 ) ); + EXPECT_TRUE( NULL != newScene ); + float newOpacity; + if ( newScene->mNumMaterials > 0 ) { + std::cout << "Desc = " << desc->description << "\n"; + EXPECT_EQ( AI_SUCCESS, newScene->mMaterials[ 0 ]->Get( AI_MATKEY_OPACITY, newOpacity ) ); + EXPECT_EQ( opacity, newOpacity ); + } } #endif // ASSIMP_BUILD_NO_EXPORT diff --git a/test/unit/utLWSImportExport.cpp b/test/unit/utLWSImportExport.cpp new file mode 100644 index 000000000..3a5dc3247 --- /dev/null +++ b/test/unit/utLWSImportExport.cpp @@ -0,0 +1,62 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + + +class utLWSImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/LWS/move_x.lws", 0 ); + return nullptr != scene; + + return true; + } +}; + +TEST_F( utLWSImportExport, importLWSFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utMatrix3x3.cpp b/test/unit/utMatrix3x3.cpp index d013980d0..7ece5449b 100644 --- a/test/unit/utMatrix3x3.cpp +++ b/test/unit/utMatrix3x3.cpp @@ -45,7 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using namespace ::Assimp; class utMatrix3x3Test : public ::testing::Test { - + // empty }; TEST_F( utMatrix3x3Test, FromToMatrixTest ) { diff --git a/test/unit/utMetadata.cpp b/test/unit/utMetadata.cpp index 61bff3897..08255d716 100644 --- a/test/unit/utMetadata.cpp +++ b/test/unit/utMetadata.cpp @@ -75,7 +75,7 @@ TEST_F( utMetadata, allocTest ) { data = aiMetadata::Alloc( 1 ); EXPECT_NE( nullptr, data ); - EXPECT_EQ( 1, data->mNumProperties ); + EXPECT_EQ( 1U, data->mNumProperties ); EXPECT_NE( nullptr, data->mKeys ); EXPECT_NE( nullptr, data->mValues ); } @@ -177,3 +177,4 @@ TEST_F( utMetadata, get_set_aiVector3D_Test ) { EXPECT_EQ( vec, result ); EXPECT_TRUE( success ); } + diff --git a/test/unit/utObjImportExport.cpp b/test/unit/utObjImportExport.cpp index 70c4310e5..37b89ba48 100644 --- a/test/unit/utObjImportExport.cpp +++ b/test/unit/utObjImportExport.cpp @@ -41,9 +41,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "UnitTestPCH.h" #include "SceneDiffer.h" - -#include +#include "AbstractImportExportBase.h" #include +#include +#include using namespace Assimp; @@ -90,6 +91,7 @@ static const std::string ObjModel = "\n" "# Point / Line / Face list\n" "\n" + "g Box01\n" "usemtl Default\n" "f 4 3 2 1\n" "f 2 6 5 1\n" @@ -100,7 +102,21 @@ static const std::string ObjModel = "\n" "# End of file\n"; -class utObjImportExport : public ::testing::Test { +static const std::string ObjModel_Issue1111 = + "o 1\n" + "\n" + "# Vertex list\n" + "\n" + "v -0.5 -0.5 0.5\n" + "v -0.5 -0.5 -0.5\n" + "v -0.5 0.5 -0.5\n" + "\n" + "usemtl\n" + "f 1 2 3\n" + "\n" + "# End of file\n"; + +class utObjImportExport : public AbstractImportExportBase { protected: virtual void SetUp() { m_im = new Assimp::Importer; @@ -173,11 +189,43 @@ protected: return expScene; } + virtual bool importerTest() { + ::Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/OBJ/spider.obj", 0 ); + return nullptr != scene; + } + +#ifndef ASSIMP_BUILD_NO_EXPORT + + virtual bool exporterTest() { + ::Assimp::Importer importer; + ::Assimp::Exporter exporter; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/OBJ/spider.obj", 0 ); + EXPECT_NE( nullptr, scene ); + EXPECT_EQ( aiReturn_SUCCESS, exporter.Export( scene, "obj", ASSIMP_TEST_MODELS_DIR "/OBJ/spider.obj" ) ); + + return true; + } + +#endif // ASSIMP_BUILD_NO_EXPORT + protected: - Assimp::Importer *m_im; + ::Assimp::Importer *m_im; aiScene *m_expectedScene; }; +TEST_F( utObjImportExport, importObjFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} + +#ifndef ASSIMP_BUILD_NO_EXPORT + +TEST_F( utObjImportExport, exportObjFromFileTest ) { + EXPECT_TRUE( exporterTest() ); +} + +#endif // ASSIMP_BUILD_NO_EXPORT + TEST_F( utObjImportExport, obj_import_test ) { const aiScene *scene = m_im->ReadFileFromMemory( (void*) ObjModel.c_str(), ObjModel.size(), 0 ); aiScene *expected = createScene(); @@ -189,3 +237,19 @@ TEST_F( utObjImportExport, obj_import_test ) { m_im->FreeScene(); } + +TEST_F( utObjImportExport, issue1111_no_mat_name_Test ) { + const aiScene *scene = m_im->ReadFileFromMemory( ( void* ) ObjModel_Issue1111.c_str(), ObjModel_Issue1111.size(), 0 ); + EXPECT_NE( nullptr, scene ); +} + +TEST_F( utObjImportExport, issue809_vertex_color_Test ) { + ::Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/OBJ/cube_with_vertexcolors.obj", 0 ); + EXPECT_NE( nullptr, scene ); + +#ifndef ASSIMP_BUILD_NO_EXPORT + ::Assimp::Exporter exporter; + EXPECT_EQ( aiReturn_SUCCESS, exporter.Export( scene, "obj", ASSIMP_TEST_MODELS_DIR "/OBJ/test.obj" ) ); +#endif // ASSIMP_BUILD_NO_EXPORT +} diff --git a/test/unit/utPLYImportExport.cpp b/test/unit/utPLYImportExport.cpp new file mode 100644 index 000000000..e9458038f --- /dev/null +++ b/test/unit/utPLYImportExport.cpp @@ -0,0 +1,64 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2017, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" + +#include +#include "AbstractImportExportBase.h" + +using namespace ::Assimp; + +class utPLYImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/PLY/cube.ply", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utPLYImportExport, importTest ) { + EXPECT_TRUE( importerTest() ); +} + +TEST_F( utPLYImportExport, vertexColorTest ) { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/PLY/float-color.ply", 0 ); +} \ No newline at end of file diff --git a/test/unit/utSIBImporter.cpp b/test/unit/utSIBImporter.cpp new file mode 100644 index 000000000..b201537ce --- /dev/null +++ b/test/unit/utSIBImporter.cpp @@ -0,0 +1,70 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" + +#include "SIBImporter.h" +#include +#include "AbstractImportExportBase.h" + +using namespace ::Assimp; + +class utSIBImporter : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/SIB/heffalump.sib", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utSIBImporter, createTest ) { + bool ok( true ); + try { + SIBImporter myImporter; + } catch ( ... ) { + ok = false; + } + EXPECT_TRUE( ok ); +} + +TEST_F( utSIBImporter, importTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utSMDImportExport.cpp b/test/unit/utSMDImportExport.cpp new file mode 100644 index 000000000..d26885e47 --- /dev/null +++ b/test/unit/utSMDImportExport.cpp @@ -0,0 +1,77 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" + +#include "SMDLoader.h" +#include +#include "AbstractImportExportBase.h" + +using namespace ::Assimp; + +class utSMDImporter : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/SMD/triangle.smd", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utSMDImporter, createTest ) { + bool ok( true ); + try { + SMDImporter myImporter; + } + catch ( ... ) { + ok = false; + } + EXPECT_TRUE( ok ); +} + +TEST_F( utSMDImporter, importTest ) { + EXPECT_TRUE( importerTest() ); +} + +TEST_F( utSMDImporter, issue_899_Texture_garbage_at_end_of_string_Test ) { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/SMD/holy_grailref.smd", 0 ); + EXPECT_NE( nullptr, scene ); +} diff --git a/test/unit/utScene.cpp b/test/unit/utScene.cpp new file mode 100644 index 000000000..8d630ce35 --- /dev/null +++ b/test/unit/utScene.cpp @@ -0,0 +1,64 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" +#include + +using namespace ::Assimp; + +class utScene : public ::testing::Test { + // empty +}; + +TEST_F( utScene, aiNode_addChildrenTest ) { + aiNode myNode; + + static const size_t NumChildren = 10; + aiNode **childrenPtr = new aiNode*[ NumChildren ]; + for ( unsigned int i = 0; i < NumChildren; i++ ) { + childrenPtr[ i ] = new aiNode; + } + myNode.addChildren( NumChildren, childrenPtr ); + EXPECT_EQ( NumChildren, myNode.mNumChildren ); + for ( unsigned int i = 0; i < NumChildren; i++ ) { + EXPECT_EQ( childrenPtr[ i ], myNode.mChildren[ i ] ); + } +} + diff --git a/test/unit/utVector3.cpp b/test/unit/utVector3.cpp new file mode 100644 index 000000000..1492281a1 --- /dev/null +++ b/test/unit/utVector3.cpp @@ -0,0 +1,69 @@ +/*------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2017, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------*/ +#include "UnitTestPCH.h" +#include + +using namespace ::Assimp; + +class utVector3 : public ::testing::Test { + // empty +}; + +TEST_F(utVector3, CreationTest) { + aiVector3D v0; + aiVector3D v1( 1.0f, 2.0f, 3.0f ); + EXPECT_FLOAT_EQ (1.0f, v1[ 0 ] ); + EXPECT_FLOAT_EQ( 2.0f, v1[ 1 ] ); + EXPECT_FLOAT_EQ( 3.0f, v1[ 2 ] ); + aiVector3D v2( 1 ); + EXPECT_FLOAT_EQ( 1.0f, v2[ 0 ] ); + EXPECT_FLOAT_EQ( 1.0f, v2[ 1 ] ); + EXPECT_FLOAT_EQ( 1.0f, v2[ 2 ] ); + aiVector3D v3( v1 ); + EXPECT_FLOAT_EQ( v1[ 0 ], v3[ 0 ] ); + EXPECT_FLOAT_EQ( v1[ 1 ], v3[ 1 ] ); + EXPECT_FLOAT_EQ( v1[ 2 ], v3[ 2 ] ); +} + +TEST_F( utVector3, BracketOpTest ) { + aiVector3D v(1.0f, 2.0f, 3.0f); + EXPECT_FLOAT_EQ( 1.0f, v[ 0 ] ); + EXPECT_FLOAT_EQ( 2.0f, v[ 1 ] ); + EXPECT_FLOAT_EQ( 3.0f, v[ 2 ] ); +} diff --git a/test/unit/utVersion.cpp b/test/unit/utVersion.cpp index d8953f866..84177dbce 100644 --- a/test/unit/utVersion.cpp +++ b/test/unit/utVersion.cpp @@ -48,22 +48,23 @@ TEST_F( utVersion, aiGetLegalStringTest ) { EXPECT_NE( lv, nullptr ); std::string text( lv ); - size_t pos( text.find( std::string( "2016" ) ) ); + size_t pos( text.find( std::string( "2017" ) ) ); EXPECT_NE( pos, std::string::npos ); } TEST_F( utVersion, aiGetVersionMinorTest ) { - EXPECT_EQ( aiGetVersionMinor(), 3 ); + EXPECT_EQ( aiGetVersionMinor(), 3U ); } TEST_F( utVersion, aiGetVersionMajorTest ) { - EXPECT_EQ( aiGetVersionMajor(), 3 ); + EXPECT_EQ( aiGetVersionMajor(), 3U ); } TEST_F( utVersion, aiGetCompileFlagsTest ) { - EXPECT_NE( aiGetCompileFlags(), 0 ); + EXPECT_NE( aiGetCompileFlags(), 0U ); } TEST_F( utVersion, aiGetVersionRevisionTest ) { - EXPECT_NE( aiGetVersionRevision(), 0 ); + EXPECT_NE( aiGetVersionRevision(), 0U ); } + diff --git a/test/unit/utXImporterExporter.cpp b/test/unit/utXImporterExporter.cpp new file mode 100644 index 000000000..9293e042e --- /dev/null +++ b/test/unit/utXImporterExporter.cpp @@ -0,0 +1,61 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utXImporterExporter : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/X/test.x", 0 ); + return nullptr != scene; + } +}; + +TEST_F( utXImporterExporter, importXFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utglTFImportExport.cpp b/test/unit/utglTFImportExport.cpp new file mode 100644 index 000000000..1ae365037 --- /dev/null +++ b/test/unit/utglTFImportExport.cpp @@ -0,0 +1,61 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2016, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" +#include "AbstractImportExportBase.h" + +#include + +using namespace Assimp; + +class utglTFImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/glFT/TwoBoxes/TwoBoxes.gltf", 0 ); + //return nullptr != scene; + + return true; + } +}; + +TEST_F( utglTFImportExport, importglTFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/tools/assimp_cmd/WriteDumb.cpp b/tools/assimp_cmd/WriteDumb.cpp index 12f5bd25a..44b0c6926 100644 --- a/tools/assimp_cmd/WriteDumb.cpp +++ b/tools/assimp_cmd/WriteDumb.cpp @@ -292,14 +292,14 @@ uint32_t WriteBinaryTexture(const aiTexture* tex) len += Write(tex->mWidth); len += Write(tex->mHeight); - len += fwrite(tex->achFormatHint,1,4,out); + len += static_cast(fwrite(tex->achFormatHint,1,4,out)); if(!shortened) { if (!tex->mHeight) { - len += fwrite(tex->pcData,1,tex->mWidth,out); + len += static_cast(fwrite(tex->pcData,1,tex->mWidth,out)); } else { - len += fwrite(tex->pcData,1,tex->mWidth*tex->mHeight*4,out); + len += static_cast(fwrite(tex->pcData,1,tex->mWidth*tex->mHeight*4,out)); } } @@ -321,7 +321,7 @@ uint32_t WriteBinaryBone(const aiBone* b) if (shortened) { len += WriteBounds(b->mWeights,b->mNumWeights); } // else write as usual - else len += fwrite(b->mWeights,1,b->mNumWeights*sizeof(aiVertexWeight),out); + else len += static_cast(fwrite(b->mWeights,1,b->mNumWeights*sizeof(aiVertexWeight),out)); ChangeInteger(old,len); return len; @@ -368,13 +368,13 @@ uint32_t WriteBinaryMesh(const aiMesh* mesh) if (shortened) { len += WriteBounds(mesh->mVertices,mesh->mNumVertices); } // else write as usual - else len += fwrite(mesh->mVertices,1,12*mesh->mNumVertices,out); + else len += static_cast(fwrite(mesh->mVertices,1,12*mesh->mNumVertices,out)); } if (mesh->mNormals) { if (shortened) { len += WriteBounds(mesh->mNormals,mesh->mNumVertices); } // else write as usual - else len += fwrite(mesh->mNormals,1,12*mesh->mNumVertices,out); + else len += static_cast(fwrite(mesh->mNormals,1,12*mesh->mNumVertices,out)); } if (mesh->mTangents && mesh->mBitangents) { if (shortened) { @@ -382,8 +382,8 @@ uint32_t WriteBinaryMesh(const aiMesh* mesh) len += WriteBounds(mesh->mBitangents,mesh->mNumVertices); } // else write as usual else { - len += fwrite(mesh->mTangents,1,12*mesh->mNumVertices,out); - len += fwrite(mesh->mBitangents,1,12*mesh->mNumVertices,out); + len += static_cast(fwrite(mesh->mTangents,1,12*mesh->mNumVertices,out)); + len += static_cast(fwrite(mesh->mBitangents,1,12*mesh->mNumVertices,out)); } } for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_COLOR_SETS;++n) { @@ -393,7 +393,7 @@ uint32_t WriteBinaryMesh(const aiMesh* mesh) if (shortened) { len += WriteBounds(mesh->mColors[n],mesh->mNumVertices); } // else write as usual - else len += fwrite(mesh->mColors[n],16*mesh->mNumVertices,1,out); + else len += static_cast(fwrite(mesh->mColors[n],16*mesh->mNumVertices,1,out)); } for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_TEXTURECOORDS;++n) { if (!mesh->mTextureCoords[n]) @@ -405,7 +405,7 @@ uint32_t WriteBinaryMesh(const aiMesh* mesh) if (shortened) { len += WriteBounds(mesh->mTextureCoords[n],mesh->mNumVertices); } // else write as usual - else len += fwrite(mesh->mTextureCoords[n],12*mesh->mNumVertices,1,out); + else len += static_cast(fwrite(mesh->mTextureCoords[n],12*mesh->mNumVertices,1,out)); } // write faces. There are no floating-point calculations involved @@ -472,7 +472,7 @@ uint32_t WriteBinaryMaterialProperty(const aiMaterialProperty* prop) len += Write(prop->mDataLength); len += Write((unsigned int)prop->mType); - len += fwrite(prop->mData,1,prop->mDataLength,out); + len += static_cast(fwrite(prop->mData,1,prop->mDataLength,out)); ChangeInteger(old,len); return len; @@ -509,21 +509,21 @@ uint32_t WriteBinaryNodeAnim(const aiNodeAnim* nd) len += WriteBounds(nd->mPositionKeys,nd->mNumPositionKeys); } // else write as usual - else len += fwrite(nd->mPositionKeys,1,nd->mNumPositionKeys*sizeof(aiVectorKey),out); + else len += static_cast(fwrite(nd->mPositionKeys,1,nd->mNumPositionKeys*sizeof(aiVectorKey),out)); } if (nd->mRotationKeys) { if (shortened) { len += WriteBounds(nd->mRotationKeys,nd->mNumRotationKeys); } // else write as usual - else len += fwrite(nd->mRotationKeys,1,nd->mNumRotationKeys*sizeof(aiQuatKey),out); + else len += static_cast(fwrite(nd->mRotationKeys,1,nd->mNumRotationKeys*sizeof(aiQuatKey),out)); } if (nd->mScalingKeys) { if (shortened) { len += WriteBounds(nd->mScalingKeys,nd->mNumScalingKeys); } // else write as usual - else len += fwrite(nd->mScalingKeys,1,nd->mNumScalingKeys*sizeof(aiVectorKey),out); + else len += static_cast(fwrite(nd->mScalingKeys,1,nd->mNumScalingKeys*sizeof(aiVectorKey),out)); } ChangeInteger(old,len); diff --git a/tools/assimp_view/MessageProc.cpp b/tools/assimp_view/MessageProc.cpp index 74c94d7d6..4595c58cd 100644 --- a/tools/assimp_view/MessageProc.cpp +++ b/tools/assimp_view/MessageProc.cpp @@ -1537,7 +1537,7 @@ INT_PTR CALLBACK MessageProc(HWND hwndDlg,UINT uMsg, SetTextColor(pcStruct->hDC,RGB(0xFF-r,0xFF-g,0xFF-b)); SetBkMode(pcStruct->hDC,TRANSPARENT); - TextOut(pcStruct->hDC,4,1,szText,strlen(szText)); + TextOut(pcStruct->hDC,4,1,szText, static_cast(strlen(szText))); bDraw = true; } else if(IDC_LCOLOR2 == pcStruct->CtlID) @@ -1568,7 +1568,7 @@ INT_PTR CALLBACK MessageProc(HWND hwndDlg,UINT uMsg, SetTextColor(pcStruct->hDC,RGB(0xFF-r,0xFF-g,0xFF-b)); SetBkMode(pcStruct->hDC,TRANSPARENT); - TextOut(pcStruct->hDC,4,1,szText,strlen(szText)); + TextOut(pcStruct->hDC,4,1,szText, static_cast(strlen(szText))); bDraw = true; } else if(IDC_LCOLOR3 == pcStruct->CtlID) @@ -1597,7 +1597,7 @@ INT_PTR CALLBACK MessageProc(HWND hwndDlg,UINT uMsg, SetTextColor(pcStruct->hDC,RGB(0xFF-r,0xFF-g,0xFF-b)); SetBkMode(pcStruct->hDC,TRANSPARENT); - TextOut(pcStruct->hDC,4,1,szText,strlen(szText)); + TextOut(pcStruct->hDC,4,1,szText,static_cast(strlen(szText))); bDraw = true; } // draw the black border around the rects diff --git a/workspaces/Android-NDK/jni/Android.mk b/workspaces/Android-NDK/jni/Android.mk deleted file mode 100755 index b4d1da7ef..000000000 --- a/workspaces/Android-NDK/jni/Android.mk +++ /dev/null @@ -1,124 +0,0 @@ -LOCAL_PATH := $(call my-dir)/../../../ - -include $(CLEAR_VARS) -LOCAL_MODULE := assimp_static -ASSIMP_SRC_DIR = code - -FILE_LIST := $(wildcard $(LOCAL_PATH)/$(ASSIMP_SRC_DIR)/*.cpp) -FILE_LIST += $(wildcard $(LOCAL_PATH)/contrib/openddlparser/code/*.cpp) -FILE_LIST += $(wildcard $(LOCAL_PATH)/contrib/unzip/*.c) -FILE_LIST += $(wildcard $(LOCAL_PATH)/contrib/poly2tri/poly2tri/*/*.cc) - -LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%) - -LOCAL_SRC_FILES += contrib/clipper/clipper.cpp \ - contrib/ConvertUTF/ConvertUTF.c \ - contrib/irrXML/irrXML.cpp - -# enables -frtti and -fexceptions -LOCAL_CPP_FEATURES := exceptions -# identifier 'nullptr' will become a keyword in C++0x [-Wc++0x-compat] -# but next breaks blender and other importer -# LOCAL_CFLAGS += -std=c++11 - -# can't be disabled? rudamentary function? -# -DASSIMP_BUILD_NO_FLIPWINDING_PROCESS \ -# -DontBuildProcess = \ - -DASSIMP_BUILD_NO_FLIPUVS_PROCESS \ - -DASSIMP_BUILD_NO_MAKELEFTHANDED_PROCESS \ - -DASSIMP_BUILD_NO_CALCTANGENTS_PROCESS \ - -DASSIMP_BUILD_NO_DEBONE_PROCESS \ - -DASSIMP_BUILD_NO_FINDDEGENERATES_PROCESS \ - -DASSIMP_BUILD_NO_FINDINSTANCES_PROCESS \ - -DASSIMP_BUILD_NO_FINDINVALIDDATA_PROCESS \ - -DASSIMP_BUILD_NO_FIXINFACINGNORMALS_PROCESS \ - -DASSIMP_BUILD_NO_GENFACENORMALS_PROCESS \ - -DASSIMP_BUILD_NO_GENUVCOORDS_PROCESS \ - -DASSIMP_BUILD_NO_GENVERTEXNORMALS_PROCESS \ - -DASSIMP_BUILD_NO_IMPROVECACHELOCALITY_PROCESS \ - -DASSIMP_BUILD_NO_JOINVERTICES_PROCESS \ - -DASSIMP_BUILD_NO_LIMITBONEWEIGHTS_PROCESS \ - -DASSIMP_BUILD_NO_OPTIMIZEGRAPH_PROCESS \ - -DASSIMP_BUILD_NO_OPTIMIZEMESHES_PROCESS \ - -DASSIMP_BUILD_NO_PRETRANSFORMVERTICES_PROCESS \ - -DASSIMP_BUILD_NO_REMOVEVC_PROCESS \ - -DASSIMP_BUILD_NO_REMOVE_REDUNDANTMATERIALS_PROCESS \ - -DASSIMP_BUILD_NO_SORTBYPTYPE_PROCESS \ - -DASSIMP_BUILD_NO_SPLITBYBONECOUNT_PROCESS \ - -DASSIMP_BUILD_NO_SPLITLARGEMESHES_PROCESS \ - -DASSIMP_BUILD_NO_TRANSFORMTEXCOORDS_PROCESS \ - -DASSIMP_BUILD_NO_TRIANGULATE_PROCESS \ - -DASSIMP_BUILD_NO_VALIDATEDS_PROCESS - -DontBuildImporters = \ - -DASSIMP_BUILD_NO_X_IMPORTER \ - -DASSIMP_BUILD_NO_3DS_IMPORTER \ - -DASSIMP_BUILD_NO_MD3_IMPORTER \ - -DASSIMP_BUILD_NO_MDL_IMPORTER \ - -DASSIMP_BUILD_NO_MD2_IMPORTER \ - -DASSIMP_BUILD_NO_PLY_IMPORTER \ - -DASSIMP_BUILD_NO_ASE_IMPORTER \ - -DASSIMP_BUILD_NO_HMP_IMPORTER \ - -DASSIMP_BUILD_NO_SMD_IMPORTER \ - -DASSIMP_BUILD_NO_MDC_IMPORTER \ - -DASSIMP_BUILD_NO_MD5_IMPORTER \ - -DASSIMP_BUILD_NO_STL_IMPORTER \ - -DASSIMP_BUILD_NO_LWO_IMPORTER \ - -DASSIMP_BUILD_NO_DXF_IMPORTER \ - -DASSIMP_BUILD_NO_NFF_IMPORTER \ - -DASSIMP_BUILD_NO_RAW_IMPORTER \ - -DASSIMP_BUILD_NO_OFF_IMPORTER \ - -DASSIMP_BUILD_NO_AC_IMPORTER \ - -DASSIMP_BUILD_NO_BVH_IMPORTER \ - -DASSIMP_BUILD_NO_IRRMESH_IMPORTER \ - -DASSIMP_BUILD_NO_IRR_IMPORTER \ - -DASSIMP_BUILD_NO_Q3D_IMPORTER \ - -DASSIMP_BUILD_NO_B3D_IMPORTER \ - -DASSIMP_BUILD_NO_COLLADA_IMPORTER \ - -DASSIMP_BUILD_NO_TERRAGEN_IMPORTER \ - -DASSIMP_BUILD_NO_CSM_IMPORTER \ - -DASSIMP_BUILD_NO_3D_IMPORTER \ - -DASSIMP_BUILD_NO_LWS_IMPORTER \ - -DASSIMP_BUILD_NO_OGRE_IMPORTER \ - -DASSIMP_BUILD_NO_MS3D_IMPORTER \ - -DASSIMP_BUILD_NO_COB_IMPORTER \ - -DASSIMP_BUILD_NO_Q3BSP_IMPORTER \ - -DASSIMP_BUILD_NO_NDO_IMPORTER \ - -DASSIMP_BUILD_NO_IFC_IMPORTER \ - -DASSIMP_BUILD_NO_XGL_IMPORTER \ - -DASSIMP_BUILD_NO_FBX_IMPORTER \ - -DASSIMP_BUILD_NO_C4D_IMPORTER \ - -DASSIMP_BUILD_NO_OPENGEX_IMPORTER \ - -DASSIMP_BUILD_NO_ASSBIN_IMPORTER -# -DASSIMP_BUILD_NO_BLEND_IMPORTER \ -# -DASSIMP_BUILD_NO_GEO_IMPORTER -# -DASSIMP_BUILD_NO_OBJ_IMPORTER \ -# -DontBuildImporters := -DASSIMP_BUILD_NO_IFC_IMPORTER -DASSIMP_BUILD_NO_IRRMESH_IMPORTER -DASSIMP_BUILD_NO_IRR_IMPORTER -DASSIMP_BUILD_NO_C4D_IMPORTER - -ASSIMP_FLAGS_3_0 = -DASSIMP_BUILD_DLL_EXPORT -DASSIMP_BUILD_NO_OWN_ZLIB -DASSIMP_BUILD_BOOST_WORKAROUND -Dassimp_EXPORTS -fPIC -fvisibility=hidden -Wall -ASSIMP_FLAGS_3_1 = $(ASSIMP_FLAGS_3_0) # -DASSIMP_BUILD_BLENDER_DEBUG - -LOCAL_CFLAGS += $(ASSIMP_FLAGS_3_1) -DASSIMP_BUILD_NO_EXPORT -DOPENDDL_NO_USE_CPP11 $(DontBuildImporters) # $(DontBuildProcess) - -LOCAL_C_INCLUDES += $(LOCAL_PATH)/include $(LOCAL_PATH)/$(ASSIMP_SRC_DIR)/BoostWorkaround $(LOCAL_PATH)/contrib/openddlparser/include ./ -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include $(LOCAL_PATH)/$(ASSIMP_SRC_DIR)/BoostWorkaround - -include $(BUILD_STATIC_LIBRARY) - -include $(CLEAR_VARS) -LOCAL_MODULE := assimp - -LOCAL_CFLAGS += -UASSIMP_BUILD_DLL_EXPORT -LOCAL_WHOLE_STATIC_LIBRARIES = assimp_static - -LOCAL_LDLIBS := -lz - -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include $(LOCAL_PATH)/$(ASSIMP_SRC_DIR)/BoostWorkaround -include $(BUILD_SHARED_LIBRARY) - --include $(LOCAL_PATH)/assimp_cmd.mk - -# let it on original place -include $(LOCAL_PATH)/port/jassimp/jassimp-native/Android.mk diff --git a/workspaces/Android-NDK/jni/Application.mk b/workspaces/Android-NDK/jni/Application.mk deleted file mode 100755 index 3d264db1b..000000000 --- a/workspaces/Android-NDK/jni/Application.mk +++ /dev/null @@ -1,8 +0,0 @@ -ifeq ($(CC),clang) - NDK_TOOLCHAIN_VERSION := $(CC) - $(info "Use llvm Compiler") -endif - -APP_ABI := armeabi-v7a - -APP_STL := stlport_static diff --git a/workspaces/xcode3/assimp.xcodeproj/project.pbxproj b/workspaces/xcode3/assimp.xcodeproj/project.pbxproj deleted file mode 100644 index 1ae088b13..000000000 --- a/workspaces/xcode3/assimp.xcodeproj/project.pbxproj +++ /dev/null @@ -1,5912 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 2B7F46DD1708365200A106A9 /* assbin_chunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F456D1708365100A106A9 /* assbin_chunks.h */; }; - 2B7F46DE1708365200A106A9 /* assbin_chunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F456D1708365100A106A9 /* assbin_chunks.h */; }; - 2B7F46DF1708365200A106A9 /* assbin_chunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F456D1708365100A106A9 /* assbin_chunks.h */; }; - 2B7F46E01708365200A106A9 /* assbin_chunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F456D1708365100A106A9 /* assbin_chunks.h */; }; - 2B7F46E11708365200A106A9 /* assbin_chunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F456D1708365100A106A9 /* assbin_chunks.h */; }; - 2B7F46E21708365200A106A9 /* Assimp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F456E1708365100A106A9 /* Assimp.cpp */; }; - 2B7F46E31708365200A106A9 /* Assimp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F456E1708365100A106A9 /* Assimp.cpp */; }; - 2B7F46E41708365200A106A9 /* Assimp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F456E1708365100A106A9 /* Assimp.cpp */; }; - 2B7F46E51708365200A106A9 /* Assimp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F456E1708365100A106A9 /* Assimp.cpp */; }; - 2B7F46E61708365200A106A9 /* Assimp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F456E1708365100A106A9 /* Assimp.cpp */; }; - 2B7F46E71708365200A106A9 /* AssimpCExport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F456F1708365100A106A9 /* AssimpCExport.cpp */; }; - 2B7F46E81708365200A106A9 /* AssimpCExport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F456F1708365100A106A9 /* AssimpCExport.cpp */; }; - 2B7F46E91708365200A106A9 /* AssimpCExport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F456F1708365100A106A9 /* AssimpCExport.cpp */; }; - 2B7F46EA1708365200A106A9 /* AssimpCExport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F456F1708365100A106A9 /* AssimpCExport.cpp */; }; - 2B7F46EB1708365200A106A9 /* AssimpCExport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F456F1708365100A106A9 /* AssimpCExport.cpp */; }; - 2B7F47001708365200A106A9 /* BaseImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45741708365100A106A9 /* BaseImporter.cpp */; }; - 2B7F47011708365200A106A9 /* BaseImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45741708365100A106A9 /* BaseImporter.cpp */; }; - 2B7F47021708365200A106A9 /* BaseImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45741708365100A106A9 /* BaseImporter.cpp */; }; - 2B7F47031708365200A106A9 /* BaseImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45741708365100A106A9 /* BaseImporter.cpp */; }; - 2B7F47041708365200A106A9 /* BaseImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45741708365100A106A9 /* BaseImporter.cpp */; }; - 2B7F47051708365200A106A9 /* BaseImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45751708365100A106A9 /* BaseImporter.h */; }; - 2B7F47061708365200A106A9 /* BaseImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45751708365100A106A9 /* BaseImporter.h */; }; - 2B7F47071708365200A106A9 /* BaseImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45751708365100A106A9 /* BaseImporter.h */; }; - 2B7F47081708365200A106A9 /* BaseImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45751708365100A106A9 /* BaseImporter.h */; }; - 2B7F47091708365200A106A9 /* BaseImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45751708365100A106A9 /* BaseImporter.h */; }; - 2B7F470A1708365200A106A9 /* BaseProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45761708365100A106A9 /* BaseProcess.cpp */; }; - 2B7F470B1708365200A106A9 /* BaseProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45761708365100A106A9 /* BaseProcess.cpp */; }; - 2B7F470C1708365200A106A9 /* BaseProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45761708365100A106A9 /* BaseProcess.cpp */; }; - 2B7F470D1708365200A106A9 /* BaseProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45761708365100A106A9 /* BaseProcess.cpp */; }; - 2B7F470E1708365200A106A9 /* BaseProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45761708365100A106A9 /* BaseProcess.cpp */; }; - 2B7F470F1708365200A106A9 /* BaseProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45771708365100A106A9 /* BaseProcess.h */; }; - 2B7F47101708365200A106A9 /* BaseProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45771708365100A106A9 /* BaseProcess.h */; }; - 2B7F47111708365200A106A9 /* BaseProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45771708365100A106A9 /* BaseProcess.h */; }; - 2B7F47121708365200A106A9 /* BaseProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45771708365100A106A9 /* BaseProcess.h */; }; - 2B7F47131708365200A106A9 /* BaseProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45771708365100A106A9 /* BaseProcess.h */; }; - 2B7F47461708365200A106A9 /* BlobIOSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45831708365100A106A9 /* BlobIOSystem.h */; }; - 2B7F47471708365200A106A9 /* BlobIOSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45831708365100A106A9 /* BlobIOSystem.h */; }; - 2B7F47481708365200A106A9 /* BlobIOSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45831708365100A106A9 /* BlobIOSystem.h */; }; - 2B7F47491708365200A106A9 /* BlobIOSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45831708365100A106A9 /* BlobIOSystem.h */; }; - 2B7F474A1708365200A106A9 /* BlobIOSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45831708365100A106A9 /* BlobIOSystem.h */; }; - 2B7F474B1708365200A106A9 /* foreach.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45861708365100A106A9 /* foreach.hpp */; }; - 2B7F474C1708365200A106A9 /* foreach.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45861708365100A106A9 /* foreach.hpp */; }; - 2B7F474D1708365200A106A9 /* foreach.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45861708365100A106A9 /* foreach.hpp */; }; - 2B7F474E1708365200A106A9 /* foreach.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45861708365100A106A9 /* foreach.hpp */; }; - 2B7F474F1708365200A106A9 /* foreach.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45861708365100A106A9 /* foreach.hpp */; }; - 2B7F47501708365200A106A9 /* format.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45871708365100A106A9 /* format.hpp */; }; - 2B7F47511708365200A106A9 /* format.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45871708365100A106A9 /* format.hpp */; }; - 2B7F47521708365200A106A9 /* format.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45871708365100A106A9 /* format.hpp */; }; - 2B7F47531708365200A106A9 /* format.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45871708365100A106A9 /* format.hpp */; }; - 2B7F47541708365200A106A9 /* format.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45871708365100A106A9 /* format.hpp */; }; - 2B7F47551708365200A106A9 /* lexical_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45881708365100A106A9 /* lexical_cast.hpp */; }; - 2B7F47561708365200A106A9 /* lexical_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45881708365100A106A9 /* lexical_cast.hpp */; }; - 2B7F47571708365200A106A9 /* lexical_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45881708365100A106A9 /* lexical_cast.hpp */; }; - 2B7F47581708365200A106A9 /* lexical_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45881708365100A106A9 /* lexical_cast.hpp */; }; - 2B7F47591708365200A106A9 /* lexical_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45881708365100A106A9 /* lexical_cast.hpp */; }; - 2B7F475A1708365200A106A9 /* make_shared.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458A1708365100A106A9 /* make_shared.hpp */; }; - 2B7F475B1708365200A106A9 /* make_shared.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458A1708365100A106A9 /* make_shared.hpp */; }; - 2B7F475C1708365200A106A9 /* make_shared.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458A1708365100A106A9 /* make_shared.hpp */; }; - 2B7F475D1708365200A106A9 /* make_shared.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458A1708365100A106A9 /* make_shared.hpp */; }; - 2B7F475E1708365200A106A9 /* make_shared.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458A1708365100A106A9 /* make_shared.hpp */; }; - 2B7F475F1708365200A106A9 /* common_factor_rt.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458C1708365100A106A9 /* common_factor_rt.hpp */; }; - 2B7F47601708365200A106A9 /* common_factor_rt.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458C1708365100A106A9 /* common_factor_rt.hpp */; }; - 2B7F47611708365200A106A9 /* common_factor_rt.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458C1708365100A106A9 /* common_factor_rt.hpp */; }; - 2B7F47621708365200A106A9 /* common_factor_rt.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458C1708365100A106A9 /* common_factor_rt.hpp */; }; - 2B7F47631708365200A106A9 /* common_factor_rt.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458C1708365100A106A9 /* common_factor_rt.hpp */; }; - 2B7F47641708365200A106A9 /* noncopyable.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458D1708365100A106A9 /* noncopyable.hpp */; }; - 2B7F47651708365200A106A9 /* noncopyable.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458D1708365100A106A9 /* noncopyable.hpp */; }; - 2B7F47661708365200A106A9 /* noncopyable.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458D1708365100A106A9 /* noncopyable.hpp */; }; - 2B7F47671708365200A106A9 /* noncopyable.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458D1708365100A106A9 /* noncopyable.hpp */; }; - 2B7F47681708365200A106A9 /* noncopyable.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458D1708365100A106A9 /* noncopyable.hpp */; }; - 2B7F47691708365200A106A9 /* pointer_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458E1708365100A106A9 /* pointer_cast.hpp */; }; - 2B7F476A1708365200A106A9 /* pointer_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458E1708365100A106A9 /* pointer_cast.hpp */; }; - 2B7F476B1708365200A106A9 /* pointer_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458E1708365100A106A9 /* pointer_cast.hpp */; }; - 2B7F476C1708365200A106A9 /* pointer_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458E1708365100A106A9 /* pointer_cast.hpp */; }; - 2B7F476D1708365200A106A9 /* pointer_cast.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458E1708365100A106A9 /* pointer_cast.hpp */; }; - 2B7F476E1708365200A106A9 /* scoped_array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458F1708365100A106A9 /* scoped_array.hpp */; }; - 2B7F476F1708365200A106A9 /* scoped_array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458F1708365100A106A9 /* scoped_array.hpp */; }; - 2B7F47701708365200A106A9 /* scoped_array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458F1708365100A106A9 /* scoped_array.hpp */; }; - 2B7F47711708365200A106A9 /* scoped_array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458F1708365100A106A9 /* scoped_array.hpp */; }; - 2B7F47721708365200A106A9 /* scoped_array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F458F1708365100A106A9 /* scoped_array.hpp */; }; - 2B7F47731708365200A106A9 /* scoped_ptr.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45901708365100A106A9 /* scoped_ptr.hpp */; }; - 2B7F47741708365200A106A9 /* scoped_ptr.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45901708365100A106A9 /* scoped_ptr.hpp */; }; - 2B7F47751708365200A106A9 /* scoped_ptr.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45901708365100A106A9 /* scoped_ptr.hpp */; }; - 2B7F47761708365200A106A9 /* scoped_ptr.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45901708365100A106A9 /* scoped_ptr.hpp */; }; - 2B7F47771708365200A106A9 /* scoped_ptr.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45901708365100A106A9 /* scoped_ptr.hpp */; }; - 2B7F47781708365200A106A9 /* shared_array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45911708365100A106A9 /* shared_array.hpp */; }; - 2B7F47791708365200A106A9 /* shared_array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45911708365100A106A9 /* shared_array.hpp */; }; - 2B7F477A1708365200A106A9 /* shared_array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45911708365100A106A9 /* shared_array.hpp */; }; - 2B7F477B1708365200A106A9 /* shared_array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45911708365100A106A9 /* shared_array.hpp */; }; - 2B7F477C1708365200A106A9 /* shared_array.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45911708365100A106A9 /* shared_array.hpp */; }; - 2B7F477D1708365200A106A9 /* shared_ptr.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45921708365100A106A9 /* shared_ptr.hpp */; }; - 2B7F477E1708365200A106A9 /* shared_ptr.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45921708365100A106A9 /* shared_ptr.hpp */; }; - 2B7F477F1708365200A106A9 /* shared_ptr.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45921708365100A106A9 /* shared_ptr.hpp */; }; - 2B7F47801708365200A106A9 /* shared_ptr.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45921708365100A106A9 /* shared_ptr.hpp */; }; - 2B7F47811708365200A106A9 /* shared_ptr.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45921708365100A106A9 /* shared_ptr.hpp */; }; - 2B7F47821708365200A106A9 /* static_assert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45931708365100A106A9 /* static_assert.hpp */; }; - 2B7F47831708365200A106A9 /* static_assert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45931708365100A106A9 /* static_assert.hpp */; }; - 2B7F47841708365200A106A9 /* static_assert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45931708365100A106A9 /* static_assert.hpp */; }; - 2B7F47851708365200A106A9 /* static_assert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45931708365100A106A9 /* static_assert.hpp */; }; - 2B7F47861708365200A106A9 /* static_assert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45931708365100A106A9 /* static_assert.hpp */; }; - 2B7F47871708365200A106A9 /* timer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45941708365100A106A9 /* timer.hpp */; }; - 2B7F47881708365200A106A9 /* timer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45941708365100A106A9 /* timer.hpp */; }; - 2B7F47891708365200A106A9 /* timer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45941708365100A106A9 /* timer.hpp */; }; - 2B7F478A1708365200A106A9 /* timer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45941708365100A106A9 /* timer.hpp */; }; - 2B7F478B1708365200A106A9 /* timer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45941708365100A106A9 /* timer.hpp */; }; - 2B7F478C1708365200A106A9 /* tuple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45961708365100A106A9 /* tuple.hpp */; }; - 2B7F478D1708365200A106A9 /* tuple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45961708365100A106A9 /* tuple.hpp */; }; - 2B7F478E1708365200A106A9 /* tuple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45961708365100A106A9 /* tuple.hpp */; }; - 2B7F478F1708365200A106A9 /* tuple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45961708365100A106A9 /* tuple.hpp */; }; - 2B7F47901708365200A106A9 /* tuple.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45961708365100A106A9 /* tuple.hpp */; }; - 2B7F479B1708365200A106A9 /* ByteSwapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwapper.h */; }; - 2B7F479C1708365200A106A9 /* ByteSwapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwapper.h */; }; - 2B7F479D1708365200A106A9 /* ByteSwapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwapper.h */; }; - 2B7F479E1708365200A106A9 /* ByteSwapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwapper.h */; }; - 2B7F479F1708365200A106A9 /* ByteSwapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45991708365100A106A9 /* ByteSwapper.h */; }; - 2B7F47A01708365200A106A9 /* CalcTangentsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F459A1708365100A106A9 /* CalcTangentsProcess.cpp */; }; - 2B7F47A11708365200A106A9 /* CalcTangentsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F459A1708365100A106A9 /* CalcTangentsProcess.cpp */; }; - 2B7F47A21708365200A106A9 /* CalcTangentsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F459A1708365100A106A9 /* CalcTangentsProcess.cpp */; }; - 2B7F47A31708365200A106A9 /* CalcTangentsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F459A1708365100A106A9 /* CalcTangentsProcess.cpp */; }; - 2B7F47A41708365200A106A9 /* CalcTangentsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F459A1708365100A106A9 /* CalcTangentsProcess.cpp */; }; - 2B7F47A51708365200A106A9 /* CalcTangentsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F459B1708365100A106A9 /* CalcTangentsProcess.h */; }; - 2B7F47A61708365200A106A9 /* CalcTangentsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F459B1708365100A106A9 /* CalcTangentsProcess.h */; }; - 2B7F47A71708365200A106A9 /* CalcTangentsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F459B1708365100A106A9 /* CalcTangentsProcess.h */; }; - 2B7F47A81708365200A106A9 /* CalcTangentsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F459B1708365100A106A9 /* CalcTangentsProcess.h */; }; - 2B7F47A91708365200A106A9 /* CalcTangentsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F459B1708365100A106A9 /* CalcTangentsProcess.h */; }; - 2B7F47AA1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F459C1708365100A106A9 /* CInterfaceIOWrapper.h */; }; - 2B7F47AB1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F459C1708365100A106A9 /* CInterfaceIOWrapper.h */; }; - 2B7F47AC1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F459C1708365100A106A9 /* CInterfaceIOWrapper.h */; }; - 2B7F47AD1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F459C1708365100A106A9 /* CInterfaceIOWrapper.h */; }; - 2B7F47AE1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F459C1708365100A106A9 /* CInterfaceIOWrapper.h */; }; - 2B7F47BE1708365200A106A9 /* ColladaExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A11708365100A106A9 /* ColladaExporter.cpp */; }; - 2B7F47BF1708365200A106A9 /* ColladaExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A11708365100A106A9 /* ColladaExporter.cpp */; }; - 2B7F47C01708365200A106A9 /* ColladaExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A11708365100A106A9 /* ColladaExporter.cpp */; }; - 2B7F47C11708365200A106A9 /* ColladaExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A11708365100A106A9 /* ColladaExporter.cpp */; }; - 2B7F47C21708365200A106A9 /* ColladaExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A11708365100A106A9 /* ColladaExporter.cpp */; }; - 2B7F47C31708365200A106A9 /* ColladaExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A21708365100A106A9 /* ColladaExporter.h */; }; - 2B7F47C41708365200A106A9 /* ColladaExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A21708365100A106A9 /* ColladaExporter.h */; }; - 2B7F47C51708365200A106A9 /* ColladaExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A21708365100A106A9 /* ColladaExporter.h */; }; - 2B7F47C61708365200A106A9 /* ColladaExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A21708365100A106A9 /* ColladaExporter.h */; }; - 2B7F47C71708365200A106A9 /* ColladaExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A21708365100A106A9 /* ColladaExporter.h */; }; - 2B7F47C81708365200A106A9 /* ColladaHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A31708365100A106A9 /* ColladaHelper.h */; }; - 2B7F47C91708365200A106A9 /* ColladaHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A31708365100A106A9 /* ColladaHelper.h */; }; - 2B7F47CA1708365200A106A9 /* ColladaHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A31708365100A106A9 /* ColladaHelper.h */; }; - 2B7F47CB1708365200A106A9 /* ColladaHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A31708365100A106A9 /* ColladaHelper.h */; }; - 2B7F47CC1708365200A106A9 /* ColladaHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A31708365100A106A9 /* ColladaHelper.h */; }; - 2B7F47CD1708365200A106A9 /* ColladaLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A41708365100A106A9 /* ColladaLoader.cpp */; }; - 2B7F47CE1708365200A106A9 /* ColladaLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A41708365100A106A9 /* ColladaLoader.cpp */; }; - 2B7F47CF1708365200A106A9 /* ColladaLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A41708365100A106A9 /* ColladaLoader.cpp */; }; - 2B7F47D01708365200A106A9 /* ColladaLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A41708365100A106A9 /* ColladaLoader.cpp */; }; - 2B7F47D11708365200A106A9 /* ColladaLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A41708365100A106A9 /* ColladaLoader.cpp */; }; - 2B7F47D21708365200A106A9 /* ColladaLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A51708365100A106A9 /* ColladaLoader.h */; }; - 2B7F47D31708365200A106A9 /* ColladaLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A51708365100A106A9 /* ColladaLoader.h */; }; - 2B7F47D41708365200A106A9 /* ColladaLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A51708365100A106A9 /* ColladaLoader.h */; }; - 2B7F47D51708365200A106A9 /* ColladaLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A51708365100A106A9 /* ColladaLoader.h */; }; - 2B7F47D61708365200A106A9 /* ColladaLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A51708365100A106A9 /* ColladaLoader.h */; }; - 2B7F47D71708365200A106A9 /* ColladaParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A61708365100A106A9 /* ColladaParser.cpp */; }; - 2B7F47D81708365200A106A9 /* ColladaParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A61708365100A106A9 /* ColladaParser.cpp */; }; - 2B7F47D91708365200A106A9 /* ColladaParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A61708365100A106A9 /* ColladaParser.cpp */; }; - 2B7F47DA1708365200A106A9 /* ColladaParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A61708365100A106A9 /* ColladaParser.cpp */; }; - 2B7F47DB1708365200A106A9 /* ColladaParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A61708365100A106A9 /* ColladaParser.cpp */; }; - 2B7F47DC1708365200A106A9 /* ColladaParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A71708365100A106A9 /* ColladaParser.h */; }; - 2B7F47DD1708365200A106A9 /* ColladaParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A71708365100A106A9 /* ColladaParser.h */; }; - 2B7F47DE1708365200A106A9 /* ColladaParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A71708365100A106A9 /* ColladaParser.h */; }; - 2B7F47DF1708365200A106A9 /* ColladaParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A71708365100A106A9 /* ColladaParser.h */; }; - 2B7F47E01708365200A106A9 /* ColladaParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A71708365100A106A9 /* ColladaParser.h */; }; - 2B7F47E11708365200A106A9 /* ComputeUVMappingProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A81708365100A106A9 /* ComputeUVMappingProcess.cpp */; }; - 2B7F47E21708365200A106A9 /* ComputeUVMappingProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A81708365100A106A9 /* ComputeUVMappingProcess.cpp */; }; - 2B7F47E31708365200A106A9 /* ComputeUVMappingProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A81708365100A106A9 /* ComputeUVMappingProcess.cpp */; }; - 2B7F47E41708365200A106A9 /* ComputeUVMappingProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A81708365100A106A9 /* ComputeUVMappingProcess.cpp */; }; - 2B7F47E51708365200A106A9 /* ComputeUVMappingProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45A81708365100A106A9 /* ComputeUVMappingProcess.cpp */; }; - 2B7F47E61708365200A106A9 /* ComputeUVMappingProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A91708365100A106A9 /* ComputeUVMappingProcess.h */; }; - 2B7F47E71708365200A106A9 /* ComputeUVMappingProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A91708365100A106A9 /* ComputeUVMappingProcess.h */; }; - 2B7F47E81708365200A106A9 /* ComputeUVMappingProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A91708365100A106A9 /* ComputeUVMappingProcess.h */; }; - 2B7F47E91708365200A106A9 /* ComputeUVMappingProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A91708365100A106A9 /* ComputeUVMappingProcess.h */; }; - 2B7F47EA1708365200A106A9 /* ComputeUVMappingProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45A91708365100A106A9 /* ComputeUVMappingProcess.h */; }; - 2B7F47EB1708365200A106A9 /* ConvertToLHProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45AA1708365100A106A9 /* ConvertToLHProcess.cpp */; }; - 2B7F47EC1708365200A106A9 /* ConvertToLHProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45AA1708365100A106A9 /* ConvertToLHProcess.cpp */; }; - 2B7F47ED1708365200A106A9 /* ConvertToLHProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45AA1708365100A106A9 /* ConvertToLHProcess.cpp */; }; - 2B7F47EE1708365200A106A9 /* ConvertToLHProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45AA1708365100A106A9 /* ConvertToLHProcess.cpp */; }; - 2B7F47EF1708365200A106A9 /* ConvertToLHProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45AA1708365100A106A9 /* ConvertToLHProcess.cpp */; }; - 2B7F47F01708365200A106A9 /* ConvertToLHProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45AB1708365100A106A9 /* ConvertToLHProcess.h */; }; - 2B7F47F11708365200A106A9 /* ConvertToLHProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45AB1708365100A106A9 /* ConvertToLHProcess.h */; }; - 2B7F47F21708365200A106A9 /* ConvertToLHProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45AB1708365100A106A9 /* ConvertToLHProcess.h */; }; - 2B7F47F31708365200A106A9 /* ConvertToLHProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45AB1708365100A106A9 /* ConvertToLHProcess.h */; }; - 2B7F47F41708365200A106A9 /* ConvertToLHProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45AB1708365100A106A9 /* ConvertToLHProcess.h */; }; - 2B7F47FF1708365200A106A9 /* DeboneProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45AE1708365100A106A9 /* DeboneProcess.cpp */; }; - 2B7F48001708365200A106A9 /* DeboneProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45AE1708365100A106A9 /* DeboneProcess.cpp */; }; - 2B7F48011708365200A106A9 /* DeboneProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45AE1708365100A106A9 /* DeboneProcess.cpp */; }; - 2B7F48021708365200A106A9 /* DeboneProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45AE1708365100A106A9 /* DeboneProcess.cpp */; }; - 2B7F48031708365200A106A9 /* DeboneProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45AE1708365100A106A9 /* DeboneProcess.cpp */; }; - 2B7F48041708365200A106A9 /* DeboneProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45AF1708365100A106A9 /* DeboneProcess.h */; }; - 2B7F48051708365200A106A9 /* DeboneProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45AF1708365100A106A9 /* DeboneProcess.h */; }; - 2B7F48061708365200A106A9 /* DeboneProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45AF1708365100A106A9 /* DeboneProcess.h */; }; - 2B7F48071708365200A106A9 /* DeboneProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45AF1708365100A106A9 /* DeboneProcess.h */; }; - 2B7F48081708365200A106A9 /* DeboneProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45AF1708365100A106A9 /* DeboneProcess.h */; }; - 2B7F48091708365200A106A9 /* DefaultIOStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B01708365100A106A9 /* DefaultIOStream.cpp */; }; - 2B7F480A1708365200A106A9 /* DefaultIOStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B01708365100A106A9 /* DefaultIOStream.cpp */; }; - 2B7F480B1708365200A106A9 /* DefaultIOStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B01708365100A106A9 /* DefaultIOStream.cpp */; }; - 2B7F480C1708365200A106A9 /* DefaultIOStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B01708365100A106A9 /* DefaultIOStream.cpp */; }; - 2B7F480D1708365200A106A9 /* DefaultIOStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B01708365100A106A9 /* DefaultIOStream.cpp */; }; - 2B7F480E1708365200A106A9 /* DefaultIOStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B11708365100A106A9 /* DefaultIOStream.h */; }; - 2B7F480F1708365200A106A9 /* DefaultIOStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B11708365100A106A9 /* DefaultIOStream.h */; }; - 2B7F48101708365200A106A9 /* DefaultIOStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B11708365100A106A9 /* DefaultIOStream.h */; }; - 2B7F48111708365200A106A9 /* DefaultIOStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B11708365100A106A9 /* DefaultIOStream.h */; }; - 2B7F48121708365200A106A9 /* DefaultIOStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B11708365100A106A9 /* DefaultIOStream.h */; }; - 2B7F48131708365200A106A9 /* DefaultIOSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B21708365100A106A9 /* DefaultIOSystem.cpp */; }; - 2B7F48141708365200A106A9 /* DefaultIOSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B21708365100A106A9 /* DefaultIOSystem.cpp */; }; - 2B7F48151708365200A106A9 /* DefaultIOSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B21708365100A106A9 /* DefaultIOSystem.cpp */; }; - 2B7F48161708365200A106A9 /* DefaultIOSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B21708365100A106A9 /* DefaultIOSystem.cpp */; }; - 2B7F48171708365200A106A9 /* DefaultIOSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B21708365100A106A9 /* DefaultIOSystem.cpp */; }; - 2B7F48181708365200A106A9 /* DefaultIOSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B31708365100A106A9 /* DefaultIOSystem.h */; }; - 2B7F48191708365200A106A9 /* DefaultIOSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B31708365100A106A9 /* DefaultIOSystem.h */; }; - 2B7F481A1708365200A106A9 /* DefaultIOSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B31708365100A106A9 /* DefaultIOSystem.h */; }; - 2B7F481B1708365200A106A9 /* DefaultIOSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B31708365100A106A9 /* DefaultIOSystem.h */; }; - 2B7F481C1708365200A106A9 /* DefaultIOSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B31708365100A106A9 /* DefaultIOSystem.h */; }; - 2B7F481D1708365200A106A9 /* DefaultLogger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B41708365100A106A9 /* DefaultLogger.cpp */; }; - 2B7F481E1708365200A106A9 /* DefaultLogger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B41708365100A106A9 /* DefaultLogger.cpp */; }; - 2B7F481F1708365200A106A9 /* DefaultLogger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B41708365100A106A9 /* DefaultLogger.cpp */; }; - 2B7F48201708365200A106A9 /* DefaultLogger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B41708365100A106A9 /* DefaultLogger.cpp */; }; - 2B7F48211708365200A106A9 /* DefaultLogger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45B41708365100A106A9 /* DefaultLogger.cpp */; }; - 2B7F48221708365200A106A9 /* DefaultProgressHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B51708365100A106A9 /* DefaultProgressHandler.h */; }; - 2B7F48231708365200A106A9 /* DefaultProgressHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B51708365100A106A9 /* DefaultProgressHandler.h */; }; - 2B7F48241708365200A106A9 /* DefaultProgressHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B51708365100A106A9 /* DefaultProgressHandler.h */; }; - 2B7F48251708365200A106A9 /* DefaultProgressHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B51708365100A106A9 /* DefaultProgressHandler.h */; }; - 2B7F48261708365200A106A9 /* DefaultProgressHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B51708365100A106A9 /* DefaultProgressHandler.h */; }; - 2B7F48361708365200A106A9 /* Exceptional.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B91708365100A106A9 /* Exceptional.h */; }; - 2B7F48371708365200A106A9 /* Exceptional.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B91708365100A106A9 /* Exceptional.h */; }; - 2B7F48381708365200A106A9 /* Exceptional.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B91708365100A106A9 /* Exceptional.h */; }; - 2B7F48391708365200A106A9 /* Exceptional.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B91708365100A106A9 /* Exceptional.h */; }; - 2B7F483A1708365200A106A9 /* Exceptional.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45B91708365100A106A9 /* Exceptional.h */; }; - 2B7F483B1708365200A106A9 /* Exporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BA1708365100A106A9 /* Exporter.cpp */; }; - 2B7F483C1708365200A106A9 /* Exporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BA1708365100A106A9 /* Exporter.cpp */; }; - 2B7F483D1708365200A106A9 /* Exporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BA1708365100A106A9 /* Exporter.cpp */; }; - 2B7F483E1708365200A106A9 /* Exporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BA1708365100A106A9 /* Exporter.cpp */; }; - 2B7F483F1708365200A106A9 /* Exporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BA1708365100A106A9 /* Exporter.cpp */; }; - 2B7F48401708365200A106A9 /* fast_atof.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45BB1708365100A106A9 /* fast_atof.h */; }; - 2B7F48411708365200A106A9 /* fast_atof.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45BB1708365100A106A9 /* fast_atof.h */; }; - 2B7F48421708365200A106A9 /* fast_atof.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45BB1708365100A106A9 /* fast_atof.h */; }; - 2B7F48431708365200A106A9 /* fast_atof.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45BB1708365100A106A9 /* fast_atof.h */; }; - 2B7F48441708365200A106A9 /* fast_atof.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45BB1708365100A106A9 /* fast_atof.h */; }; - 2B7F48451708365200A106A9 /* FBXAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BC1708365100A106A9 /* FBXAnimation.cpp */; }; - 2B7F48461708365200A106A9 /* FBXAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BC1708365100A106A9 /* FBXAnimation.cpp */; }; - 2B7F48471708365200A106A9 /* FBXAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BC1708365100A106A9 /* FBXAnimation.cpp */; }; - 2B7F48481708365200A106A9 /* FBXAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BC1708365100A106A9 /* FBXAnimation.cpp */; }; - 2B7F48491708365200A106A9 /* FBXAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BC1708365100A106A9 /* FBXAnimation.cpp */; }; - 2B7F484A1708365200A106A9 /* FBXBinaryTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BD1708365100A106A9 /* FBXBinaryTokenizer.cpp */; }; - 2B7F484B1708365200A106A9 /* FBXBinaryTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BD1708365100A106A9 /* FBXBinaryTokenizer.cpp */; }; - 2B7F484C1708365200A106A9 /* FBXBinaryTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BD1708365100A106A9 /* FBXBinaryTokenizer.cpp */; }; - 2B7F484D1708365200A106A9 /* FBXBinaryTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BD1708365100A106A9 /* FBXBinaryTokenizer.cpp */; }; - 2B7F484E1708365200A106A9 /* FBXBinaryTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BD1708365100A106A9 /* FBXBinaryTokenizer.cpp */; }; - 2B7F484F1708365200A106A9 /* FBXCompileConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45BE1708365100A106A9 /* FBXCompileConfig.h */; }; - 2B7F48501708365200A106A9 /* FBXCompileConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45BE1708365100A106A9 /* FBXCompileConfig.h */; }; - 2B7F48511708365200A106A9 /* FBXCompileConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45BE1708365100A106A9 /* FBXCompileConfig.h */; }; - 2B7F48521708365200A106A9 /* FBXCompileConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45BE1708365100A106A9 /* FBXCompileConfig.h */; }; - 2B7F48531708365200A106A9 /* FBXCompileConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45BE1708365100A106A9 /* FBXCompileConfig.h */; }; - 2B7F48541708365200A106A9 /* FBXConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BF1708365100A106A9 /* FBXConverter.cpp */; }; - 2B7F48551708365200A106A9 /* FBXConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BF1708365100A106A9 /* FBXConverter.cpp */; }; - 2B7F48561708365200A106A9 /* FBXConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BF1708365100A106A9 /* FBXConverter.cpp */; }; - 2B7F48571708365200A106A9 /* FBXConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BF1708365100A106A9 /* FBXConverter.cpp */; }; - 2B7F48581708365200A106A9 /* FBXConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45BF1708365100A106A9 /* FBXConverter.cpp */; }; - 2B7F48591708365200A106A9 /* FBXConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C01708365100A106A9 /* FBXConverter.h */; }; - 2B7F485A1708365200A106A9 /* FBXConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C01708365100A106A9 /* FBXConverter.h */; }; - 2B7F485B1708365200A106A9 /* FBXConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C01708365100A106A9 /* FBXConverter.h */; }; - 2B7F485C1708365200A106A9 /* FBXConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C01708365100A106A9 /* FBXConverter.h */; }; - 2B7F485D1708365200A106A9 /* FBXConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C01708365100A106A9 /* FBXConverter.h */; }; - 2B7F485E1708365200A106A9 /* FBXDeformer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C11708365100A106A9 /* FBXDeformer.cpp */; }; - 2B7F485F1708365200A106A9 /* FBXDeformer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C11708365100A106A9 /* FBXDeformer.cpp */; }; - 2B7F48601708365200A106A9 /* FBXDeformer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C11708365100A106A9 /* FBXDeformer.cpp */; }; - 2B7F48611708365200A106A9 /* FBXDeformer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C11708365100A106A9 /* FBXDeformer.cpp */; }; - 2B7F48621708365200A106A9 /* FBXDeformer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C11708365100A106A9 /* FBXDeformer.cpp */; }; - 2B7F48631708365200A106A9 /* FBXDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C21708365100A106A9 /* FBXDocument.cpp */; }; - 2B7F48641708365200A106A9 /* FBXDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C21708365100A106A9 /* FBXDocument.cpp */; }; - 2B7F48651708365200A106A9 /* FBXDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C21708365100A106A9 /* FBXDocument.cpp */; }; - 2B7F48661708365200A106A9 /* FBXDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C21708365100A106A9 /* FBXDocument.cpp */; }; - 2B7F48671708365200A106A9 /* FBXDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C21708365100A106A9 /* FBXDocument.cpp */; }; - 2B7F48681708365200A106A9 /* FBXDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C31708365100A106A9 /* FBXDocument.h */; }; - 2B7F48691708365200A106A9 /* FBXDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C31708365100A106A9 /* FBXDocument.h */; }; - 2B7F486A1708365200A106A9 /* FBXDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C31708365100A106A9 /* FBXDocument.h */; }; - 2B7F486B1708365200A106A9 /* FBXDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C31708365100A106A9 /* FBXDocument.h */; }; - 2B7F486C1708365200A106A9 /* FBXDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C31708365100A106A9 /* FBXDocument.h */; }; - 2B7F486D1708365200A106A9 /* FBXDocumentUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C41708365100A106A9 /* FBXDocumentUtil.cpp */; }; - 2B7F486E1708365200A106A9 /* FBXDocumentUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C41708365100A106A9 /* FBXDocumentUtil.cpp */; }; - 2B7F486F1708365200A106A9 /* FBXDocumentUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C41708365100A106A9 /* FBXDocumentUtil.cpp */; }; - 2B7F48701708365200A106A9 /* FBXDocumentUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C41708365100A106A9 /* FBXDocumentUtil.cpp */; }; - 2B7F48711708365200A106A9 /* FBXDocumentUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C41708365100A106A9 /* FBXDocumentUtil.cpp */; }; - 2B7F48721708365200A106A9 /* FBXDocumentUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C51708365100A106A9 /* FBXDocumentUtil.h */; }; - 2B7F48731708365200A106A9 /* FBXDocumentUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C51708365100A106A9 /* FBXDocumentUtil.h */; }; - 2B7F48741708365200A106A9 /* FBXDocumentUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C51708365100A106A9 /* FBXDocumentUtil.h */; }; - 2B7F48751708365200A106A9 /* FBXDocumentUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C51708365100A106A9 /* FBXDocumentUtil.h */; }; - 2B7F48761708365200A106A9 /* FBXDocumentUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C51708365100A106A9 /* FBXDocumentUtil.h */; }; - 2B7F48771708365200A106A9 /* FBXImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C61708365100A106A9 /* FBXImporter.cpp */; }; - 2B7F48781708365200A106A9 /* FBXImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C61708365100A106A9 /* FBXImporter.cpp */; }; - 2B7F48791708365200A106A9 /* FBXImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C61708365100A106A9 /* FBXImporter.cpp */; }; - 2B7F487A1708365200A106A9 /* FBXImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C61708365100A106A9 /* FBXImporter.cpp */; }; - 2B7F487B1708365200A106A9 /* FBXImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C61708365100A106A9 /* FBXImporter.cpp */; }; - 2B7F487C1708365200A106A9 /* FBXImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C71708365100A106A9 /* FBXImporter.h */; }; - 2B7F487D1708365200A106A9 /* FBXImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C71708365100A106A9 /* FBXImporter.h */; }; - 2B7F487E1708365200A106A9 /* FBXImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C71708365100A106A9 /* FBXImporter.h */; }; - 2B7F487F1708365200A106A9 /* FBXImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C71708365100A106A9 /* FBXImporter.h */; }; - 2B7F48801708365200A106A9 /* FBXImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C71708365100A106A9 /* FBXImporter.h */; }; - 2B7F48811708365200A106A9 /* FBXImportSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C81708365100A106A9 /* FBXImportSettings.h */; }; - 2B7F48821708365200A106A9 /* FBXImportSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C81708365100A106A9 /* FBXImportSettings.h */; }; - 2B7F48831708365200A106A9 /* FBXImportSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C81708365100A106A9 /* FBXImportSettings.h */; }; - 2B7F48841708365200A106A9 /* FBXImportSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C81708365100A106A9 /* FBXImportSettings.h */; }; - 2B7F48851708365200A106A9 /* FBXImportSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45C81708365100A106A9 /* FBXImportSettings.h */; }; - 2B7F48861708365200A106A9 /* FBXMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C91708365100A106A9 /* FBXMaterial.cpp */; }; - 2B7F48871708365200A106A9 /* FBXMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C91708365100A106A9 /* FBXMaterial.cpp */; }; - 2B7F48881708365200A106A9 /* FBXMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C91708365100A106A9 /* FBXMaterial.cpp */; }; - 2B7F48891708365200A106A9 /* FBXMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C91708365100A106A9 /* FBXMaterial.cpp */; }; - 2B7F488A1708365200A106A9 /* FBXMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45C91708365100A106A9 /* FBXMaterial.cpp */; }; - 2B7F488B1708365200A106A9 /* FBXMeshGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CA1708365100A106A9 /* FBXMeshGeometry.cpp */; }; - 2B7F488C1708365200A106A9 /* FBXMeshGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CA1708365100A106A9 /* FBXMeshGeometry.cpp */; }; - 2B7F488D1708365200A106A9 /* FBXMeshGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CA1708365100A106A9 /* FBXMeshGeometry.cpp */; }; - 2B7F488E1708365200A106A9 /* FBXMeshGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CA1708365100A106A9 /* FBXMeshGeometry.cpp */; }; - 2B7F488F1708365200A106A9 /* FBXMeshGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CA1708365100A106A9 /* FBXMeshGeometry.cpp */; }; - 2B7F48901708365200A106A9 /* FBXModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CB1708365100A106A9 /* FBXModel.cpp */; }; - 2B7F48911708365200A106A9 /* FBXModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CB1708365100A106A9 /* FBXModel.cpp */; }; - 2B7F48921708365200A106A9 /* FBXModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CB1708365100A106A9 /* FBXModel.cpp */; }; - 2B7F48931708365200A106A9 /* FBXModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CB1708365100A106A9 /* FBXModel.cpp */; }; - 2B7F48941708365200A106A9 /* FBXModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CB1708365100A106A9 /* FBXModel.cpp */; }; - 2B7F48951708365200A106A9 /* FBXNodeAttribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CC1708365100A106A9 /* FBXNodeAttribute.cpp */; }; - 2B7F48961708365200A106A9 /* FBXNodeAttribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CC1708365100A106A9 /* FBXNodeAttribute.cpp */; }; - 2B7F48971708365200A106A9 /* FBXNodeAttribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CC1708365100A106A9 /* FBXNodeAttribute.cpp */; }; - 2B7F48981708365200A106A9 /* FBXNodeAttribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CC1708365100A106A9 /* FBXNodeAttribute.cpp */; }; - 2B7F48991708365200A106A9 /* FBXNodeAttribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CC1708365100A106A9 /* FBXNodeAttribute.cpp */; }; - 2B7F489A1708365200A106A9 /* FBXParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CD1708365100A106A9 /* FBXParser.cpp */; }; - 2B7F489B1708365200A106A9 /* FBXParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CD1708365100A106A9 /* FBXParser.cpp */; }; - 2B7F489C1708365200A106A9 /* FBXParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CD1708365100A106A9 /* FBXParser.cpp */; }; - 2B7F489D1708365200A106A9 /* FBXParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CD1708365100A106A9 /* FBXParser.cpp */; }; - 2B7F489E1708365200A106A9 /* FBXParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CD1708365100A106A9 /* FBXParser.cpp */; }; - 2B7F489F1708365200A106A9 /* FBXParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45CE1708365100A106A9 /* FBXParser.h */; }; - 2B7F48A01708365200A106A9 /* FBXParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45CE1708365100A106A9 /* FBXParser.h */; }; - 2B7F48A11708365200A106A9 /* FBXParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45CE1708365100A106A9 /* FBXParser.h */; }; - 2B7F48A21708365200A106A9 /* FBXParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45CE1708365100A106A9 /* FBXParser.h */; }; - 2B7F48A31708365200A106A9 /* FBXParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45CE1708365100A106A9 /* FBXParser.h */; }; - 2B7F48A41708365200A106A9 /* FBXProperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CF1708365100A106A9 /* FBXProperties.cpp */; }; - 2B7F48A51708365200A106A9 /* FBXProperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CF1708365100A106A9 /* FBXProperties.cpp */; }; - 2B7F48A61708365200A106A9 /* FBXProperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CF1708365100A106A9 /* FBXProperties.cpp */; }; - 2B7F48A71708365200A106A9 /* FBXProperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CF1708365100A106A9 /* FBXProperties.cpp */; }; - 2B7F48A81708365200A106A9 /* FBXProperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45CF1708365100A106A9 /* FBXProperties.cpp */; }; - 2B7F48A91708365200A106A9 /* FBXProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D01708365100A106A9 /* FBXProperties.h */; }; - 2B7F48AA1708365200A106A9 /* FBXProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D01708365100A106A9 /* FBXProperties.h */; }; - 2B7F48AB1708365200A106A9 /* FBXProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D01708365100A106A9 /* FBXProperties.h */; }; - 2B7F48AC1708365200A106A9 /* FBXProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D01708365100A106A9 /* FBXProperties.h */; }; - 2B7F48AD1708365200A106A9 /* FBXProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D01708365100A106A9 /* FBXProperties.h */; }; - 2B7F48AE1708365200A106A9 /* FBXTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D11708365100A106A9 /* FBXTokenizer.cpp */; }; - 2B7F48AF1708365200A106A9 /* FBXTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D11708365100A106A9 /* FBXTokenizer.cpp */; }; - 2B7F48B01708365200A106A9 /* FBXTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D11708365100A106A9 /* FBXTokenizer.cpp */; }; - 2B7F48B11708365200A106A9 /* FBXTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D11708365100A106A9 /* FBXTokenizer.cpp */; }; - 2B7F48B21708365200A106A9 /* FBXTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D11708365100A106A9 /* FBXTokenizer.cpp */; }; - 2B7F48B31708365200A106A9 /* FBXTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D21708365100A106A9 /* FBXTokenizer.h */; }; - 2B7F48B41708365200A106A9 /* FBXTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D21708365100A106A9 /* FBXTokenizer.h */; }; - 2B7F48B51708365200A106A9 /* FBXTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D21708365100A106A9 /* FBXTokenizer.h */; }; - 2B7F48B61708365200A106A9 /* FBXTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D21708365100A106A9 /* FBXTokenizer.h */; }; - 2B7F48B71708365200A106A9 /* FBXTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D21708365100A106A9 /* FBXTokenizer.h */; }; - 2B7F48B81708365200A106A9 /* FBXUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D31708365100A106A9 /* FBXUtil.cpp */; }; - 2B7F48B91708365200A106A9 /* FBXUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D31708365100A106A9 /* FBXUtil.cpp */; }; - 2B7F48BA1708365200A106A9 /* FBXUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D31708365100A106A9 /* FBXUtil.cpp */; }; - 2B7F48BB1708365200A106A9 /* FBXUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D31708365100A106A9 /* FBXUtil.cpp */; }; - 2B7F48BC1708365200A106A9 /* FBXUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D31708365100A106A9 /* FBXUtil.cpp */; }; - 2B7F48BD1708365200A106A9 /* FBXUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D41708365100A106A9 /* FBXUtil.h */; }; - 2B7F48BE1708365200A106A9 /* FBXUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D41708365100A106A9 /* FBXUtil.h */; }; - 2B7F48BF1708365200A106A9 /* FBXUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D41708365100A106A9 /* FBXUtil.h */; }; - 2B7F48C01708365200A106A9 /* FBXUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D41708365100A106A9 /* FBXUtil.h */; }; - 2B7F48C11708365200A106A9 /* FBXUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D41708365100A106A9 /* FBXUtil.h */; }; - 2B7F48C21708365200A106A9 /* FileLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D51708365100A106A9 /* FileLogStream.h */; }; - 2B7F48C31708365200A106A9 /* FileLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D51708365100A106A9 /* FileLogStream.h */; }; - 2B7F48C41708365200A106A9 /* FileLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D51708365100A106A9 /* FileLogStream.h */; }; - 2B7F48C51708365200A106A9 /* FileLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D51708365100A106A9 /* FileLogStream.h */; }; - 2B7F48C61708365200A106A9 /* FileLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D51708365100A106A9 /* FileLogStream.h */; }; - 2B7F48C71708365200A106A9 /* FileSystemFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D61708365100A106A9 /* FileSystemFilter.h */; }; - 2B7F48C81708365200A106A9 /* FileSystemFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D61708365100A106A9 /* FileSystemFilter.h */; }; - 2B7F48C91708365200A106A9 /* FileSystemFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D61708365100A106A9 /* FileSystemFilter.h */; }; - 2B7F48CA1708365200A106A9 /* FileSystemFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D61708365100A106A9 /* FileSystemFilter.h */; }; - 2B7F48CB1708365200A106A9 /* FileSystemFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D61708365100A106A9 /* FileSystemFilter.h */; }; - 2B7F48CC1708365200A106A9 /* FindDegenerates.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D71708365100A106A9 /* FindDegenerates.cpp */; }; - 2B7F48CD1708365200A106A9 /* FindDegenerates.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D71708365100A106A9 /* FindDegenerates.cpp */; }; - 2B7F48CE1708365200A106A9 /* FindDegenerates.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D71708365100A106A9 /* FindDegenerates.cpp */; }; - 2B7F48CF1708365200A106A9 /* FindDegenerates.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D71708365100A106A9 /* FindDegenerates.cpp */; }; - 2B7F48D01708365200A106A9 /* FindDegenerates.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D71708365100A106A9 /* FindDegenerates.cpp */; }; - 2B7F48D11708365200A106A9 /* FindDegenerates.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D81708365100A106A9 /* FindDegenerates.h */; }; - 2B7F48D21708365200A106A9 /* FindDegenerates.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D81708365100A106A9 /* FindDegenerates.h */; }; - 2B7F48D31708365200A106A9 /* FindDegenerates.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D81708365100A106A9 /* FindDegenerates.h */; }; - 2B7F48D41708365200A106A9 /* FindDegenerates.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D81708365100A106A9 /* FindDegenerates.h */; }; - 2B7F48D51708365200A106A9 /* FindDegenerates.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45D81708365100A106A9 /* FindDegenerates.h */; }; - 2B7F48D61708365200A106A9 /* FindInstancesProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D91708365100A106A9 /* FindInstancesProcess.cpp */; }; - 2B7F48D71708365200A106A9 /* FindInstancesProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D91708365100A106A9 /* FindInstancesProcess.cpp */; }; - 2B7F48D81708365200A106A9 /* FindInstancesProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D91708365100A106A9 /* FindInstancesProcess.cpp */; }; - 2B7F48D91708365200A106A9 /* FindInstancesProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D91708365100A106A9 /* FindInstancesProcess.cpp */; }; - 2B7F48DA1708365200A106A9 /* FindInstancesProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45D91708365100A106A9 /* FindInstancesProcess.cpp */; }; - 2B7F48DB1708365200A106A9 /* FindInstancesProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DA1708365100A106A9 /* FindInstancesProcess.h */; }; - 2B7F48DC1708365200A106A9 /* FindInstancesProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DA1708365100A106A9 /* FindInstancesProcess.h */; }; - 2B7F48DD1708365200A106A9 /* FindInstancesProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DA1708365100A106A9 /* FindInstancesProcess.h */; }; - 2B7F48DE1708365200A106A9 /* FindInstancesProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DA1708365100A106A9 /* FindInstancesProcess.h */; }; - 2B7F48DF1708365200A106A9 /* FindInstancesProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DA1708365100A106A9 /* FindInstancesProcess.h */; }; - 2B7F48E01708365200A106A9 /* FindInvalidDataProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45DB1708365100A106A9 /* FindInvalidDataProcess.cpp */; }; - 2B7F48E11708365200A106A9 /* FindInvalidDataProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45DB1708365100A106A9 /* FindInvalidDataProcess.cpp */; }; - 2B7F48E21708365200A106A9 /* FindInvalidDataProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45DB1708365100A106A9 /* FindInvalidDataProcess.cpp */; }; - 2B7F48E31708365200A106A9 /* FindInvalidDataProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45DB1708365100A106A9 /* FindInvalidDataProcess.cpp */; }; - 2B7F48E41708365200A106A9 /* FindInvalidDataProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45DB1708365100A106A9 /* FindInvalidDataProcess.cpp */; }; - 2B7F48E51708365200A106A9 /* FindInvalidDataProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DC1708365100A106A9 /* FindInvalidDataProcess.h */; }; - 2B7F48E61708365200A106A9 /* FindInvalidDataProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DC1708365100A106A9 /* FindInvalidDataProcess.h */; }; - 2B7F48E71708365200A106A9 /* FindInvalidDataProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DC1708365100A106A9 /* FindInvalidDataProcess.h */; }; - 2B7F48E81708365200A106A9 /* FindInvalidDataProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DC1708365100A106A9 /* FindInvalidDataProcess.h */; }; - 2B7F48E91708365200A106A9 /* FindInvalidDataProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DC1708365100A106A9 /* FindInvalidDataProcess.h */; }; - 2B7F48EA1708365200A106A9 /* FixNormalsStep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45DD1708365100A106A9 /* FixNormalsStep.cpp */; }; - 2B7F48EB1708365200A106A9 /* FixNormalsStep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45DD1708365100A106A9 /* FixNormalsStep.cpp */; }; - 2B7F48EC1708365200A106A9 /* FixNormalsStep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45DD1708365100A106A9 /* FixNormalsStep.cpp */; }; - 2B7F48ED1708365200A106A9 /* FixNormalsStep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45DD1708365100A106A9 /* FixNormalsStep.cpp */; }; - 2B7F48EE1708365200A106A9 /* FixNormalsStep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45DD1708365100A106A9 /* FixNormalsStep.cpp */; }; - 2B7F48EF1708365200A106A9 /* FixNormalsStep.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DE1708365100A106A9 /* FixNormalsStep.h */; }; - 2B7F48F01708365200A106A9 /* FixNormalsStep.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DE1708365100A106A9 /* FixNormalsStep.h */; }; - 2B7F48F11708365200A106A9 /* FixNormalsStep.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DE1708365100A106A9 /* FixNormalsStep.h */; }; - 2B7F48F21708365200A106A9 /* FixNormalsStep.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DE1708365100A106A9 /* FixNormalsStep.h */; }; - 2B7F48F31708365200A106A9 /* FixNormalsStep.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DE1708365100A106A9 /* FixNormalsStep.h */; }; - 2B7F48F41708365200A106A9 /* GenericProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DF1708365100A106A9 /* GenericProperty.h */; }; - 2B7F48F51708365200A106A9 /* GenericProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DF1708365100A106A9 /* GenericProperty.h */; }; - 2B7F48F61708365200A106A9 /* GenericProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DF1708365100A106A9 /* GenericProperty.h */; }; - 2B7F48F71708365200A106A9 /* GenericProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DF1708365100A106A9 /* GenericProperty.h */; }; - 2B7F48F81708365200A106A9 /* GenericProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45DF1708365100A106A9 /* GenericProperty.h */; }; - 2B7F48F91708365200A106A9 /* GenFaceNormalsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E01708365100A106A9 /* GenFaceNormalsProcess.cpp */; }; - 2B7F48FA1708365200A106A9 /* GenFaceNormalsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E01708365100A106A9 /* GenFaceNormalsProcess.cpp */; }; - 2B7F48FB1708365200A106A9 /* GenFaceNormalsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E01708365100A106A9 /* GenFaceNormalsProcess.cpp */; }; - 2B7F48FC1708365200A106A9 /* GenFaceNormalsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E01708365100A106A9 /* GenFaceNormalsProcess.cpp */; }; - 2B7F48FD1708365200A106A9 /* GenFaceNormalsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E01708365100A106A9 /* GenFaceNormalsProcess.cpp */; }; - 2B7F48FE1708365200A106A9 /* GenFaceNormalsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E11708365100A106A9 /* GenFaceNormalsProcess.h */; }; - 2B7F48FF1708365200A106A9 /* GenFaceNormalsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E11708365100A106A9 /* GenFaceNormalsProcess.h */; }; - 2B7F49001708365200A106A9 /* GenFaceNormalsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E11708365100A106A9 /* GenFaceNormalsProcess.h */; }; - 2B7F49011708365200A106A9 /* GenFaceNormalsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E11708365100A106A9 /* GenFaceNormalsProcess.h */; }; - 2B7F49021708365200A106A9 /* GenFaceNormalsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E11708365100A106A9 /* GenFaceNormalsProcess.h */; }; - 2B7F49031708365200A106A9 /* GenVertexNormalsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E21708365100A106A9 /* GenVertexNormalsProcess.cpp */; }; - 2B7F49041708365200A106A9 /* GenVertexNormalsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E21708365100A106A9 /* GenVertexNormalsProcess.cpp */; }; - 2B7F49051708365200A106A9 /* GenVertexNormalsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E21708365100A106A9 /* GenVertexNormalsProcess.cpp */; }; - 2B7F49061708365200A106A9 /* GenVertexNormalsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E21708365100A106A9 /* GenVertexNormalsProcess.cpp */; }; - 2B7F49071708365200A106A9 /* GenVertexNormalsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E21708365100A106A9 /* GenVertexNormalsProcess.cpp */; }; - 2B7F49081708365200A106A9 /* GenVertexNormalsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E31708365100A106A9 /* GenVertexNormalsProcess.h */; }; - 2B7F49091708365200A106A9 /* GenVertexNormalsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E31708365100A106A9 /* GenVertexNormalsProcess.h */; }; - 2B7F490A1708365200A106A9 /* GenVertexNormalsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E31708365100A106A9 /* GenVertexNormalsProcess.h */; }; - 2B7F490B1708365200A106A9 /* GenVertexNormalsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E31708365100A106A9 /* GenVertexNormalsProcess.h */; }; - 2B7F490C1708365200A106A9 /* GenVertexNormalsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E31708365100A106A9 /* GenVertexNormalsProcess.h */; }; - 2B7F49121708365200A106A9 /* Hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E51708365100A106A9 /* Hash.h */; }; - 2B7F49131708365200A106A9 /* Hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E51708365100A106A9 /* Hash.h */; }; - 2B7F49141708365200A106A9 /* Hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E51708365100A106A9 /* Hash.h */; }; - 2B7F49151708365200A106A9 /* Hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E51708365100A106A9 /* Hash.h */; }; - 2B7F49161708365200A106A9 /* Hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45E51708365100A106A9 /* Hash.h */; }; - 2B7F49261708365200A106A9 /* IFCBoolean.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E91708365100A106A9 /* IFCBoolean.cpp */; }; - 2B7F49271708365200A106A9 /* IFCBoolean.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E91708365100A106A9 /* IFCBoolean.cpp */; }; - 2B7F49281708365200A106A9 /* IFCBoolean.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E91708365100A106A9 /* IFCBoolean.cpp */; }; - 2B7F49291708365200A106A9 /* IFCBoolean.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E91708365100A106A9 /* IFCBoolean.cpp */; }; - 2B7F492A1708365200A106A9 /* IFCBoolean.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45E91708365100A106A9 /* IFCBoolean.cpp */; }; - 2B7F492B1708365200A106A9 /* IFCCurve.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EA1708365100A106A9 /* IFCCurve.cpp */; }; - 2B7F492C1708365200A106A9 /* IFCCurve.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EA1708365100A106A9 /* IFCCurve.cpp */; }; - 2B7F492D1708365200A106A9 /* IFCCurve.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EA1708365100A106A9 /* IFCCurve.cpp */; }; - 2B7F492E1708365200A106A9 /* IFCCurve.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EA1708365100A106A9 /* IFCCurve.cpp */; }; - 2B7F492F1708365200A106A9 /* IFCCurve.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EA1708365100A106A9 /* IFCCurve.cpp */; }; - 2B7F49301708365200A106A9 /* IFCGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EB1708365100A106A9 /* IFCGeometry.cpp */; }; - 2B7F49311708365200A106A9 /* IFCGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EB1708365100A106A9 /* IFCGeometry.cpp */; }; - 2B7F49321708365200A106A9 /* IFCGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EB1708365100A106A9 /* IFCGeometry.cpp */; }; - 2B7F49331708365200A106A9 /* IFCGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EB1708365100A106A9 /* IFCGeometry.cpp */; }; - 2B7F49341708365200A106A9 /* IFCGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EB1708365100A106A9 /* IFCGeometry.cpp */; }; - 2B7F49351708365200A106A9 /* IFCLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EC1708365100A106A9 /* IFCLoader.cpp */; }; - 2B7F49361708365200A106A9 /* IFCLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EC1708365100A106A9 /* IFCLoader.cpp */; }; - 2B7F49371708365200A106A9 /* IFCLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EC1708365100A106A9 /* IFCLoader.cpp */; }; - 2B7F49381708365200A106A9 /* IFCLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EC1708365100A106A9 /* IFCLoader.cpp */; }; - 2B7F49391708365200A106A9 /* IFCLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EC1708365100A106A9 /* IFCLoader.cpp */; }; - 2B7F493A1708365200A106A9 /* IFCLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45ED1708365100A106A9 /* IFCLoader.h */; }; - 2B7F493B1708365200A106A9 /* IFCLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45ED1708365100A106A9 /* IFCLoader.h */; }; - 2B7F493C1708365200A106A9 /* IFCLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45ED1708365100A106A9 /* IFCLoader.h */; }; - 2B7F493D1708365200A106A9 /* IFCLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45ED1708365100A106A9 /* IFCLoader.h */; }; - 2B7F493E1708365200A106A9 /* IFCLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45ED1708365100A106A9 /* IFCLoader.h */; }; - 2B7F493F1708365200A106A9 /* IFCMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EE1708365100A106A9 /* IFCMaterial.cpp */; }; - 2B7F49401708365200A106A9 /* IFCMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EE1708365100A106A9 /* IFCMaterial.cpp */; }; - 2B7F49411708365200A106A9 /* IFCMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EE1708365100A106A9 /* IFCMaterial.cpp */; }; - 2B7F49421708365200A106A9 /* IFCMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EE1708365100A106A9 /* IFCMaterial.cpp */; }; - 2B7F49431708365200A106A9 /* IFCMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EE1708365100A106A9 /* IFCMaterial.cpp */; }; - 2B7F49441708365200A106A9 /* IFCOpenings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EF1708365100A106A9 /* IFCOpenings.cpp */; }; - 2B7F49451708365200A106A9 /* IFCOpenings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EF1708365100A106A9 /* IFCOpenings.cpp */; }; - 2B7F49461708365200A106A9 /* IFCOpenings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EF1708365100A106A9 /* IFCOpenings.cpp */; }; - 2B7F49471708365200A106A9 /* IFCOpenings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EF1708365100A106A9 /* IFCOpenings.cpp */; }; - 2B7F49481708365200A106A9 /* IFCOpenings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45EF1708365100A106A9 /* IFCOpenings.cpp */; }; - 2B7F49491708365200A106A9 /* IFCProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F01708365100A106A9 /* IFCProfile.cpp */; }; - 2B7F494A1708365200A106A9 /* IFCProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F01708365100A106A9 /* IFCProfile.cpp */; }; - 2B7F494B1708365200A106A9 /* IFCProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F01708365100A106A9 /* IFCProfile.cpp */; }; - 2B7F494C1708365200A106A9 /* IFCProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F01708365100A106A9 /* IFCProfile.cpp */; }; - 2B7F494D1708365200A106A9 /* IFCProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F01708365100A106A9 /* IFCProfile.cpp */; }; - 2B7F494E1708365200A106A9 /* IFCReaderGen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F11708365100A106A9 /* IFCReaderGen.cpp */; }; - 2B7F494F1708365200A106A9 /* IFCReaderGen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F11708365100A106A9 /* IFCReaderGen.cpp */; }; - 2B7F49501708365200A106A9 /* IFCReaderGen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F11708365100A106A9 /* IFCReaderGen.cpp */; }; - 2B7F49511708365200A106A9 /* IFCReaderGen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F11708365100A106A9 /* IFCReaderGen.cpp */; }; - 2B7F49521708365200A106A9 /* IFCReaderGen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F11708365100A106A9 /* IFCReaderGen.cpp */; }; - 2B7F49531708365200A106A9 /* IFCReaderGen.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F21708365100A106A9 /* IFCReaderGen.h */; }; - 2B7F49541708365200A106A9 /* IFCReaderGen.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F21708365100A106A9 /* IFCReaderGen.h */; }; - 2B7F49551708365200A106A9 /* IFCReaderGen.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F21708365100A106A9 /* IFCReaderGen.h */; }; - 2B7F49561708365200A106A9 /* IFCReaderGen.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F21708365100A106A9 /* IFCReaderGen.h */; }; - 2B7F49571708365200A106A9 /* IFCReaderGen.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F21708365100A106A9 /* IFCReaderGen.h */; }; - 2B7F49581708365200A106A9 /* IFCUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F31708365100A106A9 /* IFCUtil.cpp */; }; - 2B7F49591708365200A106A9 /* IFCUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F31708365100A106A9 /* IFCUtil.cpp */; }; - 2B7F495A1708365200A106A9 /* IFCUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F31708365100A106A9 /* IFCUtil.cpp */; }; - 2B7F495B1708365200A106A9 /* IFCUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F31708365100A106A9 /* IFCUtil.cpp */; }; - 2B7F495C1708365200A106A9 /* IFCUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F31708365100A106A9 /* IFCUtil.cpp */; }; - 2B7F495D1708365200A106A9 /* IFCUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F41708365100A106A9 /* IFCUtil.h */; }; - 2B7F495E1708365200A106A9 /* IFCUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F41708365100A106A9 /* IFCUtil.h */; }; - 2B7F495F1708365200A106A9 /* IFCUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F41708365100A106A9 /* IFCUtil.h */; }; - 2B7F49601708365200A106A9 /* IFCUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F41708365100A106A9 /* IFCUtil.h */; }; - 2B7F49611708365200A106A9 /* IFCUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F41708365100A106A9 /* IFCUtil.h */; }; - 2B7F49621708365200A106A9 /* IFF.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F51708365100A106A9 /* IFF.h */; }; - 2B7F49631708365200A106A9 /* IFF.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F51708365100A106A9 /* IFF.h */; }; - 2B7F49641708365200A106A9 /* IFF.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F51708365100A106A9 /* IFF.h */; }; - 2B7F49651708365200A106A9 /* IFF.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F51708365100A106A9 /* IFF.h */; }; - 2B7F49661708365200A106A9 /* IFF.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F51708365100A106A9 /* IFF.h */; }; - 2B7F49671708365200A106A9 /* Importer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F61708365100A106A9 /* Importer.cpp */; }; - 2B7F49681708365200A106A9 /* Importer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F61708365100A106A9 /* Importer.cpp */; }; - 2B7F49691708365200A106A9 /* Importer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F61708365100A106A9 /* Importer.cpp */; }; - 2B7F496A1708365200A106A9 /* Importer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F61708365100A106A9 /* Importer.cpp */; }; - 2B7F496B1708365200A106A9 /* Importer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F61708365100A106A9 /* Importer.cpp */; }; - 2B7F496C1708365200A106A9 /* Importer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F71708365100A106A9 /* Importer.h */; }; - 2B7F496D1708365200A106A9 /* Importer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F71708365100A106A9 /* Importer.h */; }; - 2B7F496E1708365200A106A9 /* Importer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F71708365100A106A9 /* Importer.h */; }; - 2B7F496F1708365200A106A9 /* Importer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F71708365100A106A9 /* Importer.h */; }; - 2B7F49701708365200A106A9 /* Importer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45F71708365100A106A9 /* Importer.h */; }; - 2B7F49711708365200A106A9 /* ImporterRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F81708365100A106A9 /* ImporterRegistry.cpp */; }; - 2B7F49721708365200A106A9 /* ImporterRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F81708365100A106A9 /* ImporterRegistry.cpp */; }; - 2B7F49731708365200A106A9 /* ImporterRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F81708365100A106A9 /* ImporterRegistry.cpp */; }; - 2B7F49741708365200A106A9 /* ImporterRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F81708365100A106A9 /* ImporterRegistry.cpp */; }; - 2B7F49751708365200A106A9 /* ImporterRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F81708365100A106A9 /* ImporterRegistry.cpp */; }; - 2B7F49761708365200A106A9 /* ImproveCacheLocality.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F91708365100A106A9 /* ImproveCacheLocality.cpp */; }; - 2B7F49771708365200A106A9 /* ImproveCacheLocality.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F91708365100A106A9 /* ImproveCacheLocality.cpp */; }; - 2B7F49781708365200A106A9 /* ImproveCacheLocality.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F91708365100A106A9 /* ImproveCacheLocality.cpp */; }; - 2B7F49791708365200A106A9 /* ImproveCacheLocality.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F91708365100A106A9 /* ImproveCacheLocality.cpp */; }; - 2B7F497A1708365200A106A9 /* ImproveCacheLocality.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F45F91708365100A106A9 /* ImproveCacheLocality.cpp */; }; - 2B7F497B1708365200A106A9 /* ImproveCacheLocality.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45FA1708365100A106A9 /* ImproveCacheLocality.h */; }; - 2B7F497C1708365200A106A9 /* ImproveCacheLocality.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45FA1708365100A106A9 /* ImproveCacheLocality.h */; }; - 2B7F497D1708365200A106A9 /* ImproveCacheLocality.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45FA1708365100A106A9 /* ImproveCacheLocality.h */; }; - 2B7F497E1708365200A106A9 /* ImproveCacheLocality.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45FA1708365100A106A9 /* ImproveCacheLocality.h */; }; - 2B7F497F1708365200A106A9 /* ImproveCacheLocality.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F45FA1708365100A106A9 /* ImproveCacheLocality.h */; }; - 2B7F49A31708365200A106A9 /* JoinVerticesProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46021708365100A106A9 /* JoinVerticesProcess.cpp */; }; - 2B7F49A41708365200A106A9 /* JoinVerticesProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46021708365100A106A9 /* JoinVerticesProcess.cpp */; }; - 2B7F49A51708365200A106A9 /* JoinVerticesProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46021708365100A106A9 /* JoinVerticesProcess.cpp */; }; - 2B7F49A61708365200A106A9 /* JoinVerticesProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46021708365100A106A9 /* JoinVerticesProcess.cpp */; }; - 2B7F49A71708365200A106A9 /* JoinVerticesProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46021708365100A106A9 /* JoinVerticesProcess.cpp */; }; - 2B7F49A81708365200A106A9 /* JoinVerticesProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46031708365100A106A9 /* JoinVerticesProcess.h */; }; - 2B7F49A91708365200A106A9 /* JoinVerticesProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46031708365100A106A9 /* JoinVerticesProcess.h */; }; - 2B7F49AA1708365200A106A9 /* JoinVerticesProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46031708365100A106A9 /* JoinVerticesProcess.h */; }; - 2B7F49AB1708365200A106A9 /* JoinVerticesProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46031708365100A106A9 /* JoinVerticesProcess.h */; }; - 2B7F49AC1708365200A106A9 /* JoinVerticesProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46031708365100A106A9 /* JoinVerticesProcess.h */; }; - 2B7F49AD1708365200A106A9 /* LimitBoneWeightsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46041708365100A106A9 /* LimitBoneWeightsProcess.cpp */; }; - 2B7F49AE1708365200A106A9 /* LimitBoneWeightsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46041708365100A106A9 /* LimitBoneWeightsProcess.cpp */; }; - 2B7F49AF1708365200A106A9 /* LimitBoneWeightsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46041708365100A106A9 /* LimitBoneWeightsProcess.cpp */; }; - 2B7F49B01708365200A106A9 /* LimitBoneWeightsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46041708365100A106A9 /* LimitBoneWeightsProcess.cpp */; }; - 2B7F49B11708365200A106A9 /* LimitBoneWeightsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46041708365100A106A9 /* LimitBoneWeightsProcess.cpp */; }; - 2B7F49B21708365200A106A9 /* LimitBoneWeightsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46051708365100A106A9 /* LimitBoneWeightsProcess.h */; }; - 2B7F49B31708365200A106A9 /* LimitBoneWeightsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46051708365100A106A9 /* LimitBoneWeightsProcess.h */; }; - 2B7F49B41708365200A106A9 /* LimitBoneWeightsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46051708365100A106A9 /* LimitBoneWeightsProcess.h */; }; - 2B7F49B51708365200A106A9 /* LimitBoneWeightsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46051708365100A106A9 /* LimitBoneWeightsProcess.h */; }; - 2B7F49B61708365200A106A9 /* LimitBoneWeightsProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46051708365100A106A9 /* LimitBoneWeightsProcess.h */; }; - 2B7F49B71708365200A106A9 /* LineSplitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46061708365100A106A9 /* LineSplitter.h */; }; - 2B7F49B81708365200A106A9 /* LineSplitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46061708365100A106A9 /* LineSplitter.h */; }; - 2B7F49B91708365200A106A9 /* LineSplitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46061708365100A106A9 /* LineSplitter.h */; }; - 2B7F49BA1708365200A106A9 /* LineSplitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46061708365100A106A9 /* LineSplitter.h */; }; - 2B7F49BB1708365200A106A9 /* LineSplitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46061708365100A106A9 /* LineSplitter.h */; }; - 2B7F49BC1708365200A106A9 /* LogAux.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46071708365100A106A9 /* LogAux.h */; }; - 2B7F49BD1708365200A106A9 /* LogAux.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46071708365100A106A9 /* LogAux.h */; }; - 2B7F49BE1708365200A106A9 /* LogAux.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46071708365100A106A9 /* LogAux.h */; }; - 2B7F49BF1708365200A106A9 /* LogAux.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46071708365100A106A9 /* LogAux.h */; }; - 2B7F49C01708365200A106A9 /* LogAux.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46071708365100A106A9 /* LogAux.h */; }; - 2B7F49F81708365200A106A9 /* MakeVerboseFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46141708365200A106A9 /* MakeVerboseFormat.cpp */; }; - 2B7F49F91708365200A106A9 /* MakeVerboseFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46141708365200A106A9 /* MakeVerboseFormat.cpp */; }; - 2B7F49FA1708365200A106A9 /* MakeVerboseFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46141708365200A106A9 /* MakeVerboseFormat.cpp */; }; - 2B7F49FB1708365200A106A9 /* MakeVerboseFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46141708365200A106A9 /* MakeVerboseFormat.cpp */; }; - 2B7F49FC1708365200A106A9 /* MakeVerboseFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46141708365200A106A9 /* MakeVerboseFormat.cpp */; }; - 2B7F49FD1708365200A106A9 /* MakeVerboseFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46151708365200A106A9 /* MakeVerboseFormat.h */; }; - 2B7F49FE1708365200A106A9 /* MakeVerboseFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46151708365200A106A9 /* MakeVerboseFormat.h */; }; - 2B7F49FF1708365200A106A9 /* MakeVerboseFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46151708365200A106A9 /* MakeVerboseFormat.h */; }; - 2B7F4A001708365200A106A9 /* MakeVerboseFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46151708365200A106A9 /* MakeVerboseFormat.h */; }; - 2B7F4A011708365200A106A9 /* MakeVerboseFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46151708365200A106A9 /* MakeVerboseFormat.h */; }; - 2B7F4A021708365200A106A9 /* MaterialSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46161708365200A106A9 /* MaterialSystem.cpp */; }; - 2B7F4A031708365200A106A9 /* MaterialSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46161708365200A106A9 /* MaterialSystem.cpp */; }; - 2B7F4A041708365200A106A9 /* MaterialSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46161708365200A106A9 /* MaterialSystem.cpp */; }; - 2B7F4A051708365200A106A9 /* MaterialSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46161708365200A106A9 /* MaterialSystem.cpp */; }; - 2B7F4A061708365200A106A9 /* MaterialSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46161708365200A106A9 /* MaterialSystem.cpp */; }; - 2B7F4A071708365200A106A9 /* MaterialSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46171708365200A106A9 /* MaterialSystem.h */; }; - 2B7F4A081708365200A106A9 /* MaterialSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46171708365200A106A9 /* MaterialSystem.h */; }; - 2B7F4A091708365200A106A9 /* MaterialSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46171708365200A106A9 /* MaterialSystem.h */; }; - 2B7F4A0A1708365200A106A9 /* MaterialSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46171708365200A106A9 /* MaterialSystem.h */; }; - 2B7F4A0B1708365200A106A9 /* MaterialSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46171708365200A106A9 /* MaterialSystem.h */; }; - 2B7F4A2F1708365200A106A9 /* MD4FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F461F1708365200A106A9 /* MD4FileData.h */; }; - 2B7F4A301708365200A106A9 /* MD4FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F461F1708365200A106A9 /* MD4FileData.h */; }; - 2B7F4A311708365200A106A9 /* MD4FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F461F1708365200A106A9 /* MD4FileData.h */; }; - 2B7F4A321708365200A106A9 /* MD4FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F461F1708365200A106A9 /* MD4FileData.h */; }; - 2B7F4A331708365200A106A9 /* MD4FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F461F1708365200A106A9 /* MD4FileData.h */; }; - 2B7F4A751708365200A106A9 /* MemoryIOWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F462D1708365200A106A9 /* MemoryIOWrapper.h */; }; - 2B7F4A761708365200A106A9 /* MemoryIOWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F462D1708365200A106A9 /* MemoryIOWrapper.h */; }; - 2B7F4A771708365200A106A9 /* MemoryIOWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F462D1708365200A106A9 /* MemoryIOWrapper.h */; }; - 2B7F4A781708365200A106A9 /* MemoryIOWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F462D1708365200A106A9 /* MemoryIOWrapper.h */; }; - 2B7F4A791708365200A106A9 /* MemoryIOWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F462D1708365200A106A9 /* MemoryIOWrapper.h */; }; - 2B7F4A981708365200A106A9 /* ObjExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46341708365200A106A9 /* ObjExporter.cpp */; }; - 2B7F4A991708365200A106A9 /* ObjExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46341708365200A106A9 /* ObjExporter.cpp */; }; - 2B7F4A9A1708365200A106A9 /* ObjExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46341708365200A106A9 /* ObjExporter.cpp */; }; - 2B7F4A9B1708365200A106A9 /* ObjExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46341708365200A106A9 /* ObjExporter.cpp */; }; - 2B7F4A9C1708365200A106A9 /* ObjExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46341708365200A106A9 /* ObjExporter.cpp */; }; - 2B7F4A9D1708365200A106A9 /* ObjExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46351708365200A106A9 /* ObjExporter.h */; }; - 2B7F4A9E1708365200A106A9 /* ObjExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46351708365200A106A9 /* ObjExporter.h */; }; - 2B7F4A9F1708365200A106A9 /* ObjExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46351708365200A106A9 /* ObjExporter.h */; }; - 2B7F4AA01708365200A106A9 /* ObjExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46351708365200A106A9 /* ObjExporter.h */; }; - 2B7F4AA11708365200A106A9 /* ObjExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46351708365200A106A9 /* ObjExporter.h */; }; - 2B7F4AA21708365200A106A9 /* ObjFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46361708365200A106A9 /* ObjFileData.h */; }; - 2B7F4AA31708365200A106A9 /* ObjFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46361708365200A106A9 /* ObjFileData.h */; }; - 2B7F4AA41708365200A106A9 /* ObjFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46361708365200A106A9 /* ObjFileData.h */; }; - 2B7F4AA51708365200A106A9 /* ObjFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46361708365200A106A9 /* ObjFileData.h */; }; - 2B7F4AA61708365200A106A9 /* ObjFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46361708365200A106A9 /* ObjFileData.h */; }; - 2B7F4AA71708365200A106A9 /* ObjFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46371708365200A106A9 /* ObjFileImporter.cpp */; }; - 2B7F4AA81708365200A106A9 /* ObjFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46371708365200A106A9 /* ObjFileImporter.cpp */; }; - 2B7F4AA91708365200A106A9 /* ObjFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46371708365200A106A9 /* ObjFileImporter.cpp */; }; - 2B7F4AAA1708365200A106A9 /* ObjFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46371708365200A106A9 /* ObjFileImporter.cpp */; }; - 2B7F4AAB1708365200A106A9 /* ObjFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46371708365200A106A9 /* ObjFileImporter.cpp */; }; - 2B7F4AAC1708365200A106A9 /* ObjFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46381708365200A106A9 /* ObjFileImporter.h */; }; - 2B7F4AAD1708365200A106A9 /* ObjFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46381708365200A106A9 /* ObjFileImporter.h */; }; - 2B7F4AAE1708365200A106A9 /* ObjFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46381708365200A106A9 /* ObjFileImporter.h */; }; - 2B7F4AAF1708365200A106A9 /* ObjFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46381708365200A106A9 /* ObjFileImporter.h */; }; - 2B7F4AB01708365200A106A9 /* ObjFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46381708365200A106A9 /* ObjFileImporter.h */; }; - 2B7F4AB11708365200A106A9 /* ObjFileMtlImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46391708365200A106A9 /* ObjFileMtlImporter.cpp */; }; - 2B7F4AB21708365200A106A9 /* ObjFileMtlImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46391708365200A106A9 /* ObjFileMtlImporter.cpp */; }; - 2B7F4AB31708365200A106A9 /* ObjFileMtlImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46391708365200A106A9 /* ObjFileMtlImporter.cpp */; }; - 2B7F4AB41708365200A106A9 /* ObjFileMtlImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46391708365200A106A9 /* ObjFileMtlImporter.cpp */; }; - 2B7F4AB51708365200A106A9 /* ObjFileMtlImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46391708365200A106A9 /* ObjFileMtlImporter.cpp */; }; - 2B7F4AB61708365200A106A9 /* ObjFileMtlImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463A1708365200A106A9 /* ObjFileMtlImporter.h */; }; - 2B7F4AB71708365200A106A9 /* ObjFileMtlImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463A1708365200A106A9 /* ObjFileMtlImporter.h */; }; - 2B7F4AB81708365200A106A9 /* ObjFileMtlImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463A1708365200A106A9 /* ObjFileMtlImporter.h */; }; - 2B7F4AB91708365200A106A9 /* ObjFileMtlImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463A1708365200A106A9 /* ObjFileMtlImporter.h */; }; - 2B7F4ABA1708365200A106A9 /* ObjFileMtlImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463A1708365200A106A9 /* ObjFileMtlImporter.h */; }; - 2B7F4ABB1708365200A106A9 /* ObjFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F463B1708365200A106A9 /* ObjFileParser.cpp */; }; - 2B7F4ABC1708365200A106A9 /* ObjFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F463B1708365200A106A9 /* ObjFileParser.cpp */; }; - 2B7F4ABD1708365200A106A9 /* ObjFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F463B1708365200A106A9 /* ObjFileParser.cpp */; }; - 2B7F4ABE1708365200A106A9 /* ObjFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F463B1708365200A106A9 /* ObjFileParser.cpp */; }; - 2B7F4ABF1708365200A106A9 /* ObjFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F463B1708365200A106A9 /* ObjFileParser.cpp */; }; - 2B7F4AC01708365200A106A9 /* ObjFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463C1708365200A106A9 /* ObjFileParser.h */; }; - 2B7F4AC11708365200A106A9 /* ObjFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463C1708365200A106A9 /* ObjFileParser.h */; }; - 2B7F4AC21708365200A106A9 /* ObjFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463C1708365200A106A9 /* ObjFileParser.h */; }; - 2B7F4AC31708365200A106A9 /* ObjFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463C1708365200A106A9 /* ObjFileParser.h */; }; - 2B7F4AC41708365200A106A9 /* ObjFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463C1708365200A106A9 /* ObjFileParser.h */; }; - 2B7F4AC51708365200A106A9 /* ObjTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463D1708365200A106A9 /* ObjTools.h */; }; - 2B7F4AC61708365200A106A9 /* ObjTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463D1708365200A106A9 /* ObjTools.h */; }; - 2B7F4AC71708365200A106A9 /* ObjTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463D1708365200A106A9 /* ObjTools.h */; }; - 2B7F4AC81708365200A106A9 /* ObjTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463D1708365200A106A9 /* ObjTools.h */; }; - 2B7F4AC91708365200A106A9 /* ObjTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F463D1708365200A106A9 /* ObjTools.h */; }; - 2B7F4AF21708365200A106A9 /* OptimizeGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46461708365200A106A9 /* OptimizeGraph.cpp */; }; - 2B7F4AF31708365200A106A9 /* OptimizeGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46461708365200A106A9 /* OptimizeGraph.cpp */; }; - 2B7F4AF41708365200A106A9 /* OptimizeGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46461708365200A106A9 /* OptimizeGraph.cpp */; }; - 2B7F4AF51708365200A106A9 /* OptimizeGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46461708365200A106A9 /* OptimizeGraph.cpp */; }; - 2B7F4AF61708365200A106A9 /* OptimizeGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46461708365200A106A9 /* OptimizeGraph.cpp */; }; - 2B7F4AF71708365200A106A9 /* OptimizeGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46471708365200A106A9 /* OptimizeGraph.h */; }; - 2B7F4AF81708365200A106A9 /* OptimizeGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46471708365200A106A9 /* OptimizeGraph.h */; }; - 2B7F4AF91708365200A106A9 /* OptimizeGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46471708365200A106A9 /* OptimizeGraph.h */; }; - 2B7F4AFA1708365200A106A9 /* OptimizeGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46471708365200A106A9 /* OptimizeGraph.h */; }; - 2B7F4AFB1708365200A106A9 /* OptimizeGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46471708365200A106A9 /* OptimizeGraph.h */; }; - 2B7F4AFC1708365200A106A9 /* OptimizeMeshes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46481708365200A106A9 /* OptimizeMeshes.cpp */; }; - 2B7F4AFD1708365200A106A9 /* OptimizeMeshes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46481708365200A106A9 /* OptimizeMeshes.cpp */; }; - 2B7F4AFE1708365200A106A9 /* OptimizeMeshes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46481708365200A106A9 /* OptimizeMeshes.cpp */; }; - 2B7F4AFF1708365200A106A9 /* OptimizeMeshes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46481708365200A106A9 /* OptimizeMeshes.cpp */; }; - 2B7F4B001708365200A106A9 /* OptimizeMeshes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46481708365200A106A9 /* OptimizeMeshes.cpp */; }; - 2B7F4B011708365200A106A9 /* OptimizeMeshes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46491708365200A106A9 /* OptimizeMeshes.h */; }; - 2B7F4B021708365200A106A9 /* OptimizeMeshes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46491708365200A106A9 /* OptimizeMeshes.h */; }; - 2B7F4B031708365200A106A9 /* OptimizeMeshes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46491708365200A106A9 /* OptimizeMeshes.h */; }; - 2B7F4B041708365200A106A9 /* OptimizeMeshes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46491708365200A106A9 /* OptimizeMeshes.h */; }; - 2B7F4B051708365200A106A9 /* OptimizeMeshes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46491708365200A106A9 /* OptimizeMeshes.h */; }; - 2B7F4B061708365200A106A9 /* ParsingUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F464A1708365200A106A9 /* ParsingUtils.h */; }; - 2B7F4B071708365200A106A9 /* ParsingUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F464A1708365200A106A9 /* ParsingUtils.h */; }; - 2B7F4B081708365200A106A9 /* ParsingUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F464A1708365200A106A9 /* ParsingUtils.h */; }; - 2B7F4B091708365200A106A9 /* ParsingUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F464A1708365200A106A9 /* ParsingUtils.h */; }; - 2B7F4B0A1708365200A106A9 /* ParsingUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F464A1708365200A106A9 /* ParsingUtils.h */; }; - 2B7F4B291708365200A106A9 /* PolyTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46511708365200A106A9 /* PolyTools.h */; }; - 2B7F4B2A1708365200A106A9 /* PolyTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46511708365200A106A9 /* PolyTools.h */; }; - 2B7F4B2B1708365200A106A9 /* PolyTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46511708365200A106A9 /* PolyTools.h */; }; - 2B7F4B2C1708365200A106A9 /* PolyTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46511708365200A106A9 /* PolyTools.h */; }; - 2B7F4B2D1708365200A106A9 /* PolyTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46511708365200A106A9 /* PolyTools.h */; }; - 2B7F4B2E1708365200A106A9 /* PostStepRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46521708365200A106A9 /* PostStepRegistry.cpp */; }; - 2B7F4B2F1708365200A106A9 /* PostStepRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46521708365200A106A9 /* PostStepRegistry.cpp */; }; - 2B7F4B301708365200A106A9 /* PostStepRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46521708365200A106A9 /* PostStepRegistry.cpp */; }; - 2B7F4B311708365200A106A9 /* PostStepRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46521708365200A106A9 /* PostStepRegistry.cpp */; }; - 2B7F4B321708365200A106A9 /* PostStepRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46521708365200A106A9 /* PostStepRegistry.cpp */; }; - 2B7F4B331708365200A106A9 /* PretransformVertices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46531708365200A106A9 /* PretransformVertices.cpp */; }; - 2B7F4B341708365200A106A9 /* PretransformVertices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46531708365200A106A9 /* PretransformVertices.cpp */; }; - 2B7F4B351708365200A106A9 /* PretransformVertices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46531708365200A106A9 /* PretransformVertices.cpp */; }; - 2B7F4B361708365200A106A9 /* PretransformVertices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46531708365200A106A9 /* PretransformVertices.cpp */; }; - 2B7F4B371708365200A106A9 /* PretransformVertices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46531708365200A106A9 /* PretransformVertices.cpp */; }; - 2B7F4B381708365200A106A9 /* PretransformVertices.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46541708365200A106A9 /* PretransformVertices.h */; }; - 2B7F4B391708365200A106A9 /* PretransformVertices.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46541708365200A106A9 /* PretransformVertices.h */; }; - 2B7F4B3A1708365200A106A9 /* PretransformVertices.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46541708365200A106A9 /* PretransformVertices.h */; }; - 2B7F4B3B1708365200A106A9 /* PretransformVertices.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46541708365200A106A9 /* PretransformVertices.h */; }; - 2B7F4B3C1708365200A106A9 /* PretransformVertices.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46541708365200A106A9 /* PretransformVertices.h */; }; - 2B7F4B3D1708365200A106A9 /* ProcessHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46551708365200A106A9 /* ProcessHelper.cpp */; }; - 2B7F4B3E1708365200A106A9 /* ProcessHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46551708365200A106A9 /* ProcessHelper.cpp */; }; - 2B7F4B3F1708365200A106A9 /* ProcessHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46551708365200A106A9 /* ProcessHelper.cpp */; }; - 2B7F4B401708365200A106A9 /* ProcessHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46551708365200A106A9 /* ProcessHelper.cpp */; }; - 2B7F4B411708365200A106A9 /* ProcessHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46551708365200A106A9 /* ProcessHelper.cpp */; }; - 2B7F4B421708365200A106A9 /* ProcessHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46561708365200A106A9 /* ProcessHelper.h */; }; - 2B7F4B431708365200A106A9 /* ProcessHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46561708365200A106A9 /* ProcessHelper.h */; }; - 2B7F4B441708365200A106A9 /* ProcessHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46561708365200A106A9 /* ProcessHelper.h */; }; - 2B7F4B451708365200A106A9 /* ProcessHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46561708365200A106A9 /* ProcessHelper.h */; }; - 2B7F4B461708365200A106A9 /* ProcessHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46561708365200A106A9 /* ProcessHelper.h */; }; - 2B7F4B471708365200A106A9 /* Profiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46571708365200A106A9 /* Profiler.h */; }; - 2B7F4B481708365200A106A9 /* Profiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46571708365200A106A9 /* Profiler.h */; }; - 2B7F4B491708365200A106A9 /* Profiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46571708365200A106A9 /* Profiler.h */; }; - 2B7F4B4A1708365200A106A9 /* Profiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46571708365200A106A9 /* Profiler.h */; }; - 2B7F4B4B1708365200A106A9 /* Profiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46571708365200A106A9 /* Profiler.h */; }; - 2B7F4B4C1708365200A106A9 /* pstdint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46581708365200A106A9 /* pstdint.h */; }; - 2B7F4B4D1708365200A106A9 /* pstdint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46581708365200A106A9 /* pstdint.h */; }; - 2B7F4B4E1708365200A106A9 /* pstdint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46581708365200A106A9 /* pstdint.h */; }; - 2B7F4B4F1708365200A106A9 /* pstdint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46581708365200A106A9 /* pstdint.h */; }; - 2B7F4B501708365200A106A9 /* pstdint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46581708365200A106A9 /* pstdint.h */; }; - 2B7F4B7E1708365200A106A9 /* qnan.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46621708365200A106A9 /* qnan.h */; }; - 2B7F4B7F1708365200A106A9 /* qnan.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46621708365200A106A9 /* qnan.h */; }; - 2B7F4B801708365200A106A9 /* qnan.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46621708365200A106A9 /* qnan.h */; }; - 2B7F4B811708365200A106A9 /* qnan.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46621708365200A106A9 /* qnan.h */; }; - 2B7F4B821708365200A106A9 /* qnan.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46621708365200A106A9 /* qnan.h */; }; - 2B7F4B8D1708365200A106A9 /* RemoveComments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46651708365200A106A9 /* RemoveComments.cpp */; }; - 2B7F4B8E1708365200A106A9 /* RemoveComments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46651708365200A106A9 /* RemoveComments.cpp */; }; - 2B7F4B8F1708365200A106A9 /* RemoveComments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46651708365200A106A9 /* RemoveComments.cpp */; }; - 2B7F4B901708365200A106A9 /* RemoveComments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46651708365200A106A9 /* RemoveComments.cpp */; }; - 2B7F4B911708365200A106A9 /* RemoveComments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46651708365200A106A9 /* RemoveComments.cpp */; }; - 2B7F4B921708365200A106A9 /* RemoveComments.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46661708365200A106A9 /* RemoveComments.h */; }; - 2B7F4B931708365200A106A9 /* RemoveComments.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46661708365200A106A9 /* RemoveComments.h */; }; - 2B7F4B941708365200A106A9 /* RemoveComments.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46661708365200A106A9 /* RemoveComments.h */; }; - 2B7F4B951708365200A106A9 /* RemoveComments.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46661708365200A106A9 /* RemoveComments.h */; }; - 2B7F4B961708365200A106A9 /* RemoveComments.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46661708365200A106A9 /* RemoveComments.h */; }; - 2B7F4B971708365200A106A9 /* RemoveRedundantMaterials.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46671708365200A106A9 /* RemoveRedundantMaterials.cpp */; }; - 2B7F4B981708365200A106A9 /* RemoveRedundantMaterials.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46671708365200A106A9 /* RemoveRedundantMaterials.cpp */; }; - 2B7F4B991708365200A106A9 /* RemoveRedundantMaterials.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46671708365200A106A9 /* RemoveRedundantMaterials.cpp */; }; - 2B7F4B9A1708365200A106A9 /* RemoveRedundantMaterials.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46671708365200A106A9 /* RemoveRedundantMaterials.cpp */; }; - 2B7F4B9B1708365200A106A9 /* RemoveRedundantMaterials.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46671708365200A106A9 /* RemoveRedundantMaterials.cpp */; }; - 2B7F4B9C1708365200A106A9 /* RemoveRedundantMaterials.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46681708365200A106A9 /* RemoveRedundantMaterials.h */; }; - 2B7F4B9D1708365200A106A9 /* RemoveRedundantMaterials.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46681708365200A106A9 /* RemoveRedundantMaterials.h */; }; - 2B7F4B9E1708365200A106A9 /* RemoveRedundantMaterials.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46681708365200A106A9 /* RemoveRedundantMaterials.h */; }; - 2B7F4B9F1708365200A106A9 /* RemoveRedundantMaterials.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46681708365200A106A9 /* RemoveRedundantMaterials.h */; }; - 2B7F4BA01708365200A106A9 /* RemoveRedundantMaterials.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46681708365200A106A9 /* RemoveRedundantMaterials.h */; }; - 2B7F4BA11708365200A106A9 /* RemoveVCProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46691708365200A106A9 /* RemoveVCProcess.cpp */; }; - 2B7F4BA21708365200A106A9 /* RemoveVCProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46691708365200A106A9 /* RemoveVCProcess.cpp */; }; - 2B7F4BA31708365200A106A9 /* RemoveVCProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46691708365200A106A9 /* RemoveVCProcess.cpp */; }; - 2B7F4BA41708365200A106A9 /* RemoveVCProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46691708365200A106A9 /* RemoveVCProcess.cpp */; }; - 2B7F4BA51708365200A106A9 /* RemoveVCProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46691708365200A106A9 /* RemoveVCProcess.cpp */; }; - 2B7F4BA61708365200A106A9 /* RemoveVCProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F466A1708365200A106A9 /* RemoveVCProcess.h */; }; - 2B7F4BA71708365200A106A9 /* RemoveVCProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F466A1708365200A106A9 /* RemoveVCProcess.h */; }; - 2B7F4BA81708365200A106A9 /* RemoveVCProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F466A1708365200A106A9 /* RemoveVCProcess.h */; }; - 2B7F4BA91708365200A106A9 /* RemoveVCProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F466A1708365200A106A9 /* RemoveVCProcess.h */; }; - 2B7F4BAA1708365200A106A9 /* RemoveVCProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F466A1708365200A106A9 /* RemoveVCProcess.h */; }; - 2B7F4BB01708365200A106A9 /* SceneCombiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F466E1708365200A106A9 /* SceneCombiner.cpp */; }; - 2B7F4BB11708365200A106A9 /* SceneCombiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F466E1708365200A106A9 /* SceneCombiner.cpp */; }; - 2B7F4BB21708365200A106A9 /* SceneCombiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F466E1708365200A106A9 /* SceneCombiner.cpp */; }; - 2B7F4BB31708365200A106A9 /* SceneCombiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F466E1708365200A106A9 /* SceneCombiner.cpp */; }; - 2B7F4BB41708365200A106A9 /* SceneCombiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F466E1708365200A106A9 /* SceneCombiner.cpp */; }; - 2B7F4BB51708365200A106A9 /* SceneCombiner.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F466F1708365200A106A9 /* SceneCombiner.h */; }; - 2B7F4BB61708365200A106A9 /* SceneCombiner.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F466F1708365200A106A9 /* SceneCombiner.h */; }; - 2B7F4BB71708365200A106A9 /* SceneCombiner.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F466F1708365200A106A9 /* SceneCombiner.h */; }; - 2B7F4BB81708365200A106A9 /* SceneCombiner.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F466F1708365200A106A9 /* SceneCombiner.h */; }; - 2B7F4BB91708365200A106A9 /* SceneCombiner.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F466F1708365200A106A9 /* SceneCombiner.h */; }; - 2B7F4BBA1708365200A106A9 /* ScenePreprocessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46701708365200A106A9 /* ScenePreprocessor.cpp */; }; - 2B7F4BBB1708365200A106A9 /* ScenePreprocessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46701708365200A106A9 /* ScenePreprocessor.cpp */; }; - 2B7F4BBC1708365200A106A9 /* ScenePreprocessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46701708365200A106A9 /* ScenePreprocessor.cpp */; }; - 2B7F4BBD1708365200A106A9 /* ScenePreprocessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46701708365200A106A9 /* ScenePreprocessor.cpp */; }; - 2B7F4BBE1708365200A106A9 /* ScenePreprocessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46701708365200A106A9 /* ScenePreprocessor.cpp */; }; - 2B7F4BBF1708365200A106A9 /* ScenePreprocessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46711708365200A106A9 /* ScenePreprocessor.h */; }; - 2B7F4BC01708365200A106A9 /* ScenePreprocessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46711708365200A106A9 /* ScenePreprocessor.h */; }; - 2B7F4BC11708365200A106A9 /* ScenePreprocessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46711708365200A106A9 /* ScenePreprocessor.h */; }; - 2B7F4BC21708365200A106A9 /* ScenePreprocessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46711708365200A106A9 /* ScenePreprocessor.h */; }; - 2B7F4BC31708365200A106A9 /* ScenePreprocessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46711708365200A106A9 /* ScenePreprocessor.h */; }; - 2B7F4BC41708365200A106A9 /* ScenePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46721708365200A106A9 /* ScenePrivate.h */; }; - 2B7F4BC51708365200A106A9 /* ScenePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46721708365200A106A9 /* ScenePrivate.h */; }; - 2B7F4BC61708365200A106A9 /* ScenePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46721708365200A106A9 /* ScenePrivate.h */; }; - 2B7F4BC71708365200A106A9 /* ScenePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46721708365200A106A9 /* ScenePrivate.h */; }; - 2B7F4BC81708365200A106A9 /* ScenePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46721708365200A106A9 /* ScenePrivate.h */; }; - 2B7F4BC91708365200A106A9 /* SGSpatialSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46731708365200A106A9 /* SGSpatialSort.cpp */; }; - 2B7F4BCA1708365200A106A9 /* SGSpatialSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46731708365200A106A9 /* SGSpatialSort.cpp */; }; - 2B7F4BCB1708365200A106A9 /* SGSpatialSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46731708365200A106A9 /* SGSpatialSort.cpp */; }; - 2B7F4BCC1708365200A106A9 /* SGSpatialSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46731708365200A106A9 /* SGSpatialSort.cpp */; }; - 2B7F4BCD1708365200A106A9 /* SGSpatialSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46731708365200A106A9 /* SGSpatialSort.cpp */; }; - 2B7F4BCE1708365200A106A9 /* SGSpatialSort.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46741708365200A106A9 /* SGSpatialSort.h */; }; - 2B7F4BCF1708365200A106A9 /* SGSpatialSort.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46741708365200A106A9 /* SGSpatialSort.h */; }; - 2B7F4BD01708365200A106A9 /* SGSpatialSort.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46741708365200A106A9 /* SGSpatialSort.h */; }; - 2B7F4BD11708365200A106A9 /* SGSpatialSort.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46741708365200A106A9 /* SGSpatialSort.h */; }; - 2B7F4BD21708365200A106A9 /* SGSpatialSort.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46741708365200A106A9 /* SGSpatialSort.h */; }; - 2B7F4BD31708365200A106A9 /* SkeletonMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46751708365200A106A9 /* SkeletonMeshBuilder.cpp */; }; - 2B7F4BD41708365200A106A9 /* SkeletonMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46751708365200A106A9 /* SkeletonMeshBuilder.cpp */; }; - 2B7F4BD51708365200A106A9 /* SkeletonMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46751708365200A106A9 /* SkeletonMeshBuilder.cpp */; }; - 2B7F4BD61708365200A106A9 /* SkeletonMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46751708365200A106A9 /* SkeletonMeshBuilder.cpp */; }; - 2B7F4BD71708365200A106A9 /* SkeletonMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46751708365200A106A9 /* SkeletonMeshBuilder.cpp */; }; - 2B7F4BD81708365200A106A9 /* SkeletonMeshBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46761708365200A106A9 /* SkeletonMeshBuilder.h */; }; - 2B7F4BD91708365200A106A9 /* SkeletonMeshBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46761708365200A106A9 /* SkeletonMeshBuilder.h */; }; - 2B7F4BDA1708365200A106A9 /* SkeletonMeshBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46761708365200A106A9 /* SkeletonMeshBuilder.h */; }; - 2B7F4BDB1708365200A106A9 /* SkeletonMeshBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46761708365200A106A9 /* SkeletonMeshBuilder.h */; }; - 2B7F4BDC1708365200A106A9 /* SkeletonMeshBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46761708365200A106A9 /* SkeletonMeshBuilder.h */; }; - 2B7F4BE71708365200A106A9 /* SmoothingGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46791708365200A106A9 /* SmoothingGroups.h */; }; - 2B7F4BE81708365200A106A9 /* SmoothingGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46791708365200A106A9 /* SmoothingGroups.h */; }; - 2B7F4BE91708365200A106A9 /* SmoothingGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46791708365200A106A9 /* SmoothingGroups.h */; }; - 2B7F4BEA1708365200A106A9 /* SmoothingGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46791708365200A106A9 /* SmoothingGroups.h */; }; - 2B7F4BEB1708365200A106A9 /* SmoothingGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46791708365200A106A9 /* SmoothingGroups.h */; }; - 2B7F4BEC1708365200A106A9 /* SortByPTypeProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467B1708365200A106A9 /* SortByPTypeProcess.cpp */; }; - 2B7F4BED1708365200A106A9 /* SortByPTypeProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467B1708365200A106A9 /* SortByPTypeProcess.cpp */; }; - 2B7F4BEE1708365200A106A9 /* SortByPTypeProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467B1708365200A106A9 /* SortByPTypeProcess.cpp */; }; - 2B7F4BEF1708365200A106A9 /* SortByPTypeProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467B1708365200A106A9 /* SortByPTypeProcess.cpp */; }; - 2B7F4BF01708365200A106A9 /* SortByPTypeProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467B1708365200A106A9 /* SortByPTypeProcess.cpp */; }; - 2B7F4BF11708365200A106A9 /* SortByPTypeProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F467C1708365200A106A9 /* SortByPTypeProcess.h */; }; - 2B7F4BF21708365200A106A9 /* SortByPTypeProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F467C1708365200A106A9 /* SortByPTypeProcess.h */; }; - 2B7F4BF31708365200A106A9 /* SortByPTypeProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F467C1708365200A106A9 /* SortByPTypeProcess.h */; }; - 2B7F4BF41708365200A106A9 /* SortByPTypeProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F467C1708365200A106A9 /* SortByPTypeProcess.h */; }; - 2B7F4BF51708365200A106A9 /* SortByPTypeProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F467C1708365200A106A9 /* SortByPTypeProcess.h */; }; - 2B7F4BF61708365200A106A9 /* SpatialSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467D1708365200A106A9 /* SpatialSort.cpp */; }; - 2B7F4BF71708365200A106A9 /* SpatialSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467D1708365200A106A9 /* SpatialSort.cpp */; }; - 2B7F4BF81708365200A106A9 /* SpatialSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467D1708365200A106A9 /* SpatialSort.cpp */; }; - 2B7F4BF91708365200A106A9 /* SpatialSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467D1708365200A106A9 /* SpatialSort.cpp */; }; - 2B7F4BFA1708365200A106A9 /* SpatialSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467D1708365200A106A9 /* SpatialSort.cpp */; }; - 2B7F4BFB1708365200A106A9 /* SpatialSort.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F467E1708365200A106A9 /* SpatialSort.h */; }; - 2B7F4BFC1708365200A106A9 /* SpatialSort.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F467E1708365200A106A9 /* SpatialSort.h */; }; - 2B7F4BFD1708365200A106A9 /* SpatialSort.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F467E1708365200A106A9 /* SpatialSort.h */; }; - 2B7F4BFE1708365200A106A9 /* SpatialSort.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F467E1708365200A106A9 /* SpatialSort.h */; }; - 2B7F4BFF1708365200A106A9 /* SpatialSort.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F467E1708365200A106A9 /* SpatialSort.h */; }; - 2B7F4C001708365200A106A9 /* SplitByBoneCountProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467F1708365200A106A9 /* SplitByBoneCountProcess.cpp */; }; - 2B7F4C011708365200A106A9 /* SplitByBoneCountProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467F1708365200A106A9 /* SplitByBoneCountProcess.cpp */; }; - 2B7F4C021708365200A106A9 /* SplitByBoneCountProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467F1708365200A106A9 /* SplitByBoneCountProcess.cpp */; }; - 2B7F4C031708365200A106A9 /* SplitByBoneCountProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467F1708365200A106A9 /* SplitByBoneCountProcess.cpp */; }; - 2B7F4C041708365200A106A9 /* SplitByBoneCountProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F467F1708365200A106A9 /* SplitByBoneCountProcess.cpp */; }; - 2B7F4C051708365200A106A9 /* SplitByBoneCountProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46801708365200A106A9 /* SplitByBoneCountProcess.h */; }; - 2B7F4C061708365200A106A9 /* SplitByBoneCountProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46801708365200A106A9 /* SplitByBoneCountProcess.h */; }; - 2B7F4C071708365200A106A9 /* SplitByBoneCountProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46801708365200A106A9 /* SplitByBoneCountProcess.h */; }; - 2B7F4C081708365200A106A9 /* SplitByBoneCountProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46801708365200A106A9 /* SplitByBoneCountProcess.h */; }; - 2B7F4C091708365200A106A9 /* SplitByBoneCountProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46801708365200A106A9 /* SplitByBoneCountProcess.h */; }; - 2B7F4C0A1708365200A106A9 /* SplitLargeMeshes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46811708365200A106A9 /* SplitLargeMeshes.cpp */; }; - 2B7F4C0B1708365200A106A9 /* SplitLargeMeshes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46811708365200A106A9 /* SplitLargeMeshes.cpp */; }; - 2B7F4C0C1708365200A106A9 /* SplitLargeMeshes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46811708365200A106A9 /* SplitLargeMeshes.cpp */; }; - 2B7F4C0D1708365200A106A9 /* SplitLargeMeshes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46811708365200A106A9 /* SplitLargeMeshes.cpp */; }; - 2B7F4C0E1708365200A106A9 /* SplitLargeMeshes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46811708365200A106A9 /* SplitLargeMeshes.cpp */; }; - 2B7F4C0F1708365200A106A9 /* SplitLargeMeshes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46821708365200A106A9 /* SplitLargeMeshes.h */; }; - 2B7F4C101708365200A106A9 /* SplitLargeMeshes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46821708365200A106A9 /* SplitLargeMeshes.h */; }; - 2B7F4C111708365200A106A9 /* SplitLargeMeshes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46821708365200A106A9 /* SplitLargeMeshes.h */; }; - 2B7F4C121708365200A106A9 /* SplitLargeMeshes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46821708365200A106A9 /* SplitLargeMeshes.h */; }; - 2B7F4C131708365200A106A9 /* SplitLargeMeshes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46821708365200A106A9 /* SplitLargeMeshes.h */; }; - 2B7F4C141708365200A106A9 /* StandardShapes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46831708365200A106A9 /* StandardShapes.cpp */; }; - 2B7F4C151708365200A106A9 /* StandardShapes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46831708365200A106A9 /* StandardShapes.cpp */; }; - 2B7F4C161708365200A106A9 /* StandardShapes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46831708365200A106A9 /* StandardShapes.cpp */; }; - 2B7F4C171708365200A106A9 /* StandardShapes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46831708365200A106A9 /* StandardShapes.cpp */; }; - 2B7F4C181708365200A106A9 /* StandardShapes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46831708365200A106A9 /* StandardShapes.cpp */; }; - 2B7F4C191708365200A106A9 /* StandardShapes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46841708365200A106A9 /* StandardShapes.h */; }; - 2B7F4C1A1708365200A106A9 /* StandardShapes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46841708365200A106A9 /* StandardShapes.h */; }; - 2B7F4C1B1708365200A106A9 /* StandardShapes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46841708365200A106A9 /* StandardShapes.h */; }; - 2B7F4C1C1708365200A106A9 /* StandardShapes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46841708365200A106A9 /* StandardShapes.h */; }; - 2B7F4C1D1708365200A106A9 /* StandardShapes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46841708365200A106A9 /* StandardShapes.h */; }; - 2B7F4C1E1708365200A106A9 /* StdOStreamLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46851708365200A106A9 /* StdOStreamLogStream.h */; }; - 2B7F4C1F1708365200A106A9 /* StdOStreamLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46851708365200A106A9 /* StdOStreamLogStream.h */; }; - 2B7F4C201708365200A106A9 /* StdOStreamLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46851708365200A106A9 /* StdOStreamLogStream.h */; }; - 2B7F4C211708365200A106A9 /* StdOStreamLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46851708365200A106A9 /* StdOStreamLogStream.h */; }; - 2B7F4C221708365200A106A9 /* StdOStreamLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46851708365200A106A9 /* StdOStreamLogStream.h */; }; - 2B7F4C231708365200A106A9 /* STEPFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46861708365200A106A9 /* STEPFile.h */; }; - 2B7F4C241708365200A106A9 /* STEPFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46861708365200A106A9 /* STEPFile.h */; }; - 2B7F4C251708365200A106A9 /* STEPFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46861708365200A106A9 /* STEPFile.h */; }; - 2B7F4C261708365200A106A9 /* STEPFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46861708365200A106A9 /* STEPFile.h */; }; - 2B7F4C271708365200A106A9 /* STEPFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46861708365200A106A9 /* STEPFile.h */; }; - 2B7F4C281708365200A106A9 /* STEPFileEncoding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46871708365200A106A9 /* STEPFileEncoding.cpp */; }; - 2B7F4C291708365200A106A9 /* STEPFileEncoding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46871708365200A106A9 /* STEPFileEncoding.cpp */; }; - 2B7F4C2A1708365200A106A9 /* STEPFileEncoding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46871708365200A106A9 /* STEPFileEncoding.cpp */; }; - 2B7F4C2B1708365200A106A9 /* STEPFileEncoding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46871708365200A106A9 /* STEPFileEncoding.cpp */; }; - 2B7F4C2C1708365200A106A9 /* STEPFileEncoding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46871708365200A106A9 /* STEPFileEncoding.cpp */; }; - 2B7F4C2D1708365200A106A9 /* STEPFileEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46881708365200A106A9 /* STEPFileEncoding.h */; }; - 2B7F4C2E1708365200A106A9 /* STEPFileEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46881708365200A106A9 /* STEPFileEncoding.h */; }; - 2B7F4C2F1708365200A106A9 /* STEPFileEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46881708365200A106A9 /* STEPFileEncoding.h */; }; - 2B7F4C301708365200A106A9 /* STEPFileEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46881708365200A106A9 /* STEPFileEncoding.h */; }; - 2B7F4C311708365200A106A9 /* STEPFileEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46881708365200A106A9 /* STEPFileEncoding.h */; }; - 2B7F4C321708365200A106A9 /* STEPFileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46891708365200A106A9 /* STEPFileReader.cpp */; }; - 2B7F4C331708365200A106A9 /* STEPFileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46891708365200A106A9 /* STEPFileReader.cpp */; }; - 2B7F4C341708365200A106A9 /* STEPFileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46891708365200A106A9 /* STEPFileReader.cpp */; }; - 2B7F4C351708365200A106A9 /* STEPFileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46891708365200A106A9 /* STEPFileReader.cpp */; }; - 2B7F4C361708365200A106A9 /* STEPFileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46891708365200A106A9 /* STEPFileReader.cpp */; }; - 2B7F4C371708365200A106A9 /* STEPFileReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468A1708365200A106A9 /* STEPFileReader.h */; }; - 2B7F4C381708365200A106A9 /* STEPFileReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468A1708365200A106A9 /* STEPFileReader.h */; }; - 2B7F4C391708365200A106A9 /* STEPFileReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468A1708365200A106A9 /* STEPFileReader.h */; }; - 2B7F4C3A1708365200A106A9 /* STEPFileReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468A1708365200A106A9 /* STEPFileReader.h */; }; - 2B7F4C3B1708365200A106A9 /* STEPFileReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468A1708365200A106A9 /* STEPFileReader.h */; }; - 2B7F4C3C1708365200A106A9 /* STLExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F468B1708365200A106A9 /* STLExporter.cpp */; }; - 2B7F4C3D1708365200A106A9 /* STLExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F468B1708365200A106A9 /* STLExporter.cpp */; }; - 2B7F4C3E1708365200A106A9 /* STLExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F468B1708365200A106A9 /* STLExporter.cpp */; }; - 2B7F4C3F1708365200A106A9 /* STLExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F468B1708365200A106A9 /* STLExporter.cpp */; }; - 2B7F4C401708365200A106A9 /* STLExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F468B1708365200A106A9 /* STLExporter.cpp */; }; - 2B7F4C411708365200A106A9 /* STLExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468C1708365200A106A9 /* STLExporter.h */; }; - 2B7F4C421708365200A106A9 /* STLExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468C1708365200A106A9 /* STLExporter.h */; }; - 2B7F4C431708365200A106A9 /* STLExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468C1708365200A106A9 /* STLExporter.h */; }; - 2B7F4C441708365200A106A9 /* STLExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468C1708365200A106A9 /* STLExporter.h */; }; - 2B7F4C451708365200A106A9 /* STLExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468C1708365200A106A9 /* STLExporter.h */; }; - 2B7F4C461708365200A106A9 /* STLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F468D1708365200A106A9 /* STLLoader.cpp */; }; - 2B7F4C471708365200A106A9 /* STLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F468D1708365200A106A9 /* STLLoader.cpp */; }; - 2B7F4C481708365200A106A9 /* STLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F468D1708365200A106A9 /* STLLoader.cpp */; }; - 2B7F4C491708365200A106A9 /* STLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F468D1708365200A106A9 /* STLLoader.cpp */; }; - 2B7F4C4A1708365200A106A9 /* STLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F468D1708365200A106A9 /* STLLoader.cpp */; }; - 2B7F4C4B1708365200A106A9 /* STLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468E1708365200A106A9 /* STLLoader.h */; }; - 2B7F4C4C1708365200A106A9 /* STLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468E1708365200A106A9 /* STLLoader.h */; }; - 2B7F4C4D1708365200A106A9 /* STLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468E1708365200A106A9 /* STLLoader.h */; }; - 2B7F4C4E1708365200A106A9 /* STLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468E1708365200A106A9 /* STLLoader.h */; }; - 2B7F4C4F1708365200A106A9 /* STLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468E1708365200A106A9 /* STLLoader.h */; }; - 2B7F4C501708365200A106A9 /* StreamReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468F1708365200A106A9 /* StreamReader.h */; }; - 2B7F4C511708365200A106A9 /* StreamReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468F1708365200A106A9 /* StreamReader.h */; }; - 2B7F4C521708365200A106A9 /* StreamReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468F1708365200A106A9 /* StreamReader.h */; }; - 2B7F4C531708365200A106A9 /* StreamReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468F1708365200A106A9 /* StreamReader.h */; }; - 2B7F4C541708365200A106A9 /* StreamReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F468F1708365200A106A9 /* StreamReader.h */; }; - 2B7F4C551708365200A106A9 /* StringComparison.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46901708365200A106A9 /* StringComparison.h */; }; - 2B7F4C561708365200A106A9 /* StringComparison.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46901708365200A106A9 /* StringComparison.h */; }; - 2B7F4C571708365200A106A9 /* StringComparison.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46901708365200A106A9 /* StringComparison.h */; }; - 2B7F4C581708365200A106A9 /* StringComparison.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46901708365200A106A9 /* StringComparison.h */; }; - 2B7F4C591708365200A106A9 /* StringComparison.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46901708365200A106A9 /* StringComparison.h */; }; - 2B7F4C5A1708365200A106A9 /* Subdivision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46911708365200A106A9 /* Subdivision.cpp */; }; - 2B7F4C5B1708365200A106A9 /* Subdivision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46911708365200A106A9 /* Subdivision.cpp */; }; - 2B7F4C5C1708365200A106A9 /* Subdivision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46911708365200A106A9 /* Subdivision.cpp */; }; - 2B7F4C5D1708365200A106A9 /* Subdivision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46911708365200A106A9 /* Subdivision.cpp */; }; - 2B7F4C5E1708365200A106A9 /* Subdivision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46911708365200A106A9 /* Subdivision.cpp */; }; - 2B7F4C5F1708365200A106A9 /* Subdivision.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46921708365200A106A9 /* Subdivision.h */; }; - 2B7F4C601708365200A106A9 /* Subdivision.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46921708365200A106A9 /* Subdivision.h */; }; - 2B7F4C611708365200A106A9 /* Subdivision.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46921708365200A106A9 /* Subdivision.h */; }; - 2B7F4C621708365200A106A9 /* Subdivision.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46921708365200A106A9 /* Subdivision.h */; }; - 2B7F4C631708365200A106A9 /* Subdivision.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46921708365200A106A9 /* Subdivision.h */; }; - 2B7F4C641708365200A106A9 /* TargetAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46931708365200A106A9 /* TargetAnimation.cpp */; }; - 2B7F4C651708365200A106A9 /* TargetAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46931708365200A106A9 /* TargetAnimation.cpp */; }; - 2B7F4C661708365200A106A9 /* TargetAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46931708365200A106A9 /* TargetAnimation.cpp */; }; - 2B7F4C671708365200A106A9 /* TargetAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46931708365200A106A9 /* TargetAnimation.cpp */; }; - 2B7F4C681708365200A106A9 /* TargetAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46931708365200A106A9 /* TargetAnimation.cpp */; }; - 2B7F4C691708365200A106A9 /* TargetAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46941708365200A106A9 /* TargetAnimation.h */; }; - 2B7F4C6A1708365200A106A9 /* TargetAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46941708365200A106A9 /* TargetAnimation.h */; }; - 2B7F4C6B1708365200A106A9 /* TargetAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46941708365200A106A9 /* TargetAnimation.h */; }; - 2B7F4C6C1708365200A106A9 /* TargetAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46941708365200A106A9 /* TargetAnimation.h */; }; - 2B7F4C6D1708365200A106A9 /* TargetAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46941708365200A106A9 /* TargetAnimation.h */; }; - 2B7F4C781708365200A106A9 /* TextureTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46971708365200A106A9 /* TextureTransform.cpp */; }; - 2B7F4C791708365200A106A9 /* TextureTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46971708365200A106A9 /* TextureTransform.cpp */; }; - 2B7F4C7A1708365200A106A9 /* TextureTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46971708365200A106A9 /* TextureTransform.cpp */; }; - 2B7F4C7B1708365200A106A9 /* TextureTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46971708365200A106A9 /* TextureTransform.cpp */; }; - 2B7F4C7C1708365200A106A9 /* TextureTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46971708365200A106A9 /* TextureTransform.cpp */; }; - 2B7F4C7D1708365200A106A9 /* TextureTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46981708365200A106A9 /* TextureTransform.h */; }; - 2B7F4C7E1708365200A106A9 /* TextureTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46981708365200A106A9 /* TextureTransform.h */; }; - 2B7F4C7F1708365200A106A9 /* TextureTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46981708365200A106A9 /* TextureTransform.h */; }; - 2B7F4C801708365200A106A9 /* TextureTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46981708365200A106A9 /* TextureTransform.h */; }; - 2B7F4C811708365200A106A9 /* TextureTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46981708365200A106A9 /* TextureTransform.h */; }; - 2B7F4C821708365200A106A9 /* TinyFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46991708365200A106A9 /* TinyFormatter.h */; }; - 2B7F4C831708365200A106A9 /* TinyFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46991708365200A106A9 /* TinyFormatter.h */; }; - 2B7F4C841708365200A106A9 /* TinyFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46991708365200A106A9 /* TinyFormatter.h */; }; - 2B7F4C851708365200A106A9 /* TinyFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46991708365200A106A9 /* TinyFormatter.h */; }; - 2B7F4C861708365200A106A9 /* TinyFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46991708365200A106A9 /* TinyFormatter.h */; }; - 2B7F4C871708365200A106A9 /* TriangulateProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F469A1708365200A106A9 /* TriangulateProcess.cpp */; }; - 2B7F4C881708365200A106A9 /* TriangulateProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F469A1708365200A106A9 /* TriangulateProcess.cpp */; }; - 2B7F4C891708365200A106A9 /* TriangulateProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F469A1708365200A106A9 /* TriangulateProcess.cpp */; }; - 2B7F4C8A1708365200A106A9 /* TriangulateProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F469A1708365200A106A9 /* TriangulateProcess.cpp */; }; - 2B7F4C8B1708365200A106A9 /* TriangulateProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F469A1708365200A106A9 /* TriangulateProcess.cpp */; }; - 2B7F4C8C1708365200A106A9 /* TriangulateProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F469B1708365200A106A9 /* TriangulateProcess.h */; }; - 2B7F4C8D1708365200A106A9 /* TriangulateProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F469B1708365200A106A9 /* TriangulateProcess.h */; }; - 2B7F4C8E1708365200A106A9 /* TriangulateProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F469B1708365200A106A9 /* TriangulateProcess.h */; }; - 2B7F4C8F1708365200A106A9 /* TriangulateProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F469B1708365200A106A9 /* TriangulateProcess.h */; }; - 2B7F4C901708365200A106A9 /* TriangulateProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F469B1708365200A106A9 /* TriangulateProcess.h */; }; - 2B7F4C9B1708365200A106A9 /* ValidateDataStructure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F469E1708365200A106A9 /* ValidateDataStructure.cpp */; }; - 2B7F4C9C1708365200A106A9 /* ValidateDataStructure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F469E1708365200A106A9 /* ValidateDataStructure.cpp */; }; - 2B7F4C9D1708365200A106A9 /* ValidateDataStructure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F469E1708365200A106A9 /* ValidateDataStructure.cpp */; }; - 2B7F4C9E1708365200A106A9 /* ValidateDataStructure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F469E1708365200A106A9 /* ValidateDataStructure.cpp */; }; - 2B7F4C9F1708365200A106A9 /* ValidateDataStructure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F469E1708365200A106A9 /* ValidateDataStructure.cpp */; }; - 2B7F4CA01708365200A106A9 /* ValidateDataStructure.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F469F1708365200A106A9 /* ValidateDataStructure.h */; }; - 2B7F4CA11708365200A106A9 /* ValidateDataStructure.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F469F1708365200A106A9 /* ValidateDataStructure.h */; }; - 2B7F4CA21708365200A106A9 /* ValidateDataStructure.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F469F1708365200A106A9 /* ValidateDataStructure.h */; }; - 2B7F4CA31708365200A106A9 /* ValidateDataStructure.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F469F1708365200A106A9 /* ValidateDataStructure.h */; }; - 2B7F4CA41708365200A106A9 /* ValidateDataStructure.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F469F1708365200A106A9 /* ValidateDataStructure.h */; }; - 2B7F4CA51708365200A106A9 /* Vertex.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A01708365200A106A9 /* Vertex.h */; }; - 2B7F4CA61708365200A106A9 /* Vertex.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A01708365200A106A9 /* Vertex.h */; }; - 2B7F4CA71708365200A106A9 /* Vertex.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A01708365200A106A9 /* Vertex.h */; }; - 2B7F4CA81708365200A106A9 /* Vertex.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A01708365200A106A9 /* Vertex.h */; }; - 2B7F4CA91708365200A106A9 /* Vertex.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A01708365200A106A9 /* Vertex.h */; }; - 2B7F4CAA1708365200A106A9 /* VertexTriangleAdjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46A11708365200A106A9 /* VertexTriangleAdjacency.cpp */; }; - 2B7F4CAB1708365200A106A9 /* VertexTriangleAdjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46A11708365200A106A9 /* VertexTriangleAdjacency.cpp */; }; - 2B7F4CAC1708365200A106A9 /* VertexTriangleAdjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46A11708365200A106A9 /* VertexTriangleAdjacency.cpp */; }; - 2B7F4CAD1708365200A106A9 /* VertexTriangleAdjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46A11708365200A106A9 /* VertexTriangleAdjacency.cpp */; }; - 2B7F4CAE1708365200A106A9 /* VertexTriangleAdjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B7F46A11708365200A106A9 /* VertexTriangleAdjacency.cpp */; }; - 2B7F4CAF1708365200A106A9 /* VertexTriangleAdjacency.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A21708365200A106A9 /* VertexTriangleAdjacency.h */; }; - 2B7F4CB01708365200A106A9 /* VertexTriangleAdjacency.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A21708365200A106A9 /* VertexTriangleAdjacency.h */; }; - 2B7F4CB11708365200A106A9 /* VertexTriangleAdjacency.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A21708365200A106A9 /* VertexTriangleAdjacency.h */; }; - 2B7F4CB21708365200A106A9 /* VertexTriangleAdjacency.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A21708365200A106A9 /* VertexTriangleAdjacency.h */; }; - 2B7F4CB31708365200A106A9 /* VertexTriangleAdjacency.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A21708365200A106A9 /* VertexTriangleAdjacency.h */; }; - 2B7F4CB41708365200A106A9 /* Win32DebugLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A31708365200A106A9 /* Win32DebugLogStream.h */; }; - 2B7F4CB51708365200A106A9 /* Win32DebugLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A31708365200A106A9 /* Win32DebugLogStream.h */; }; - 2B7F4CB61708365200A106A9 /* Win32DebugLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A31708365200A106A9 /* Win32DebugLogStream.h */; }; - 2B7F4CB71708365200A106A9 /* Win32DebugLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A31708365200A106A9 /* Win32DebugLogStream.h */; }; - 2B7F4CB81708365200A106A9 /* Win32DebugLogStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7F46A31708365200A106A9 /* Win32DebugLogStream.h */; }; - 2BA44E11170862D800C78A66 /* libstdc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BA44E10170862D800C78A66 /* libstdc++.dylib */; }; - 2BA44E12170862DE00C78A66 /* libstdc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BA44E10170862D800C78A66 /* libstdc++.dylib */; }; - 2BA44E13170862E400C78A66 /* libstdc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BA44E10170862D800C78A66 /* libstdc++.dylib */; }; - 2BA44E14170862EA00C78A66 /* libstdc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BA44E10170862D800C78A66 /* libstdc++.dylib */; }; - 2BA44E1A1708680600C78A66 /* libstdc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BA44E10170862D800C78A66 /* libstdc++.dylib */; }; - 3AB8A3AF0E50D67A00606590 /* MDCFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AB0E50D67A00606590 /* MDCFileData.h */; }; - 3AB8A3B00E50D67A00606590 /* MDCLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A3AC0E50D67A00606590 /* MDCLoader.cpp */; }; - 3AB8A3B10E50D67A00606590 /* MDCLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AD0E50D67A00606590 /* MDCLoader.h */; }; - 3AB8A3B20E50D67A00606590 /* MDCNormalTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AE0E50D67A00606590 /* MDCNormalTable.h */; }; - 3AB8A3BA0E50D6DB00606590 /* LWOFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3B70E50D6DB00606590 /* LWOFileData.h */; }; - 3AB8A3BB0E50D6DB00606590 /* LWOLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A3B80E50D6DB00606590 /* LWOLoader.cpp */; }; - 3AB8A3BC0E50D6DB00606590 /* LWOLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3B90E50D6DB00606590 /* LWOLoader.h */; }; - 3AB8A3C60E50D77900606590 /* HMPFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3C50E50D77900606590 /* HMPFileData.h */; }; - 3AB8A7DD0E53715F00606590 /* LWOMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A7DC0E53715F00606590 /* LWOMaterial.cpp */; }; - 3AF45AF90E4B716800207D74 /* 3DSConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A860E4B716800207D74 /* 3DSConverter.cpp */; }; - 3AF45AFB0E4B716800207D74 /* 3DSHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A880E4B716800207D74 /* 3DSHelper.h */; }; - 3AF45AFC0E4B716800207D74 /* 3DSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A890E4B716800207D74 /* 3DSLoader.cpp */; }; - 3AF45AFD0E4B716800207D74 /* 3DSLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A8A0E4B716800207D74 /* 3DSLoader.h */; }; - 3AF45B010E4B716800207D74 /* ASELoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A8E0E4B716800207D74 /* ASELoader.cpp */; }; - 3AF45B020E4B716800207D74 /* ASELoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A8F0E4B716800207D74 /* ASELoader.h */; }; - 3AF45B030E4B716800207D74 /* ASEParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A900E4B716800207D74 /* ASEParser.cpp */; }; - 3AF45B040E4B716800207D74 /* ASEParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A910E4B716800207D74 /* ASEParser.h */; }; - 3AF45B1B0E4B716800207D74 /* HalfLifeFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AA90E4B716800207D74 /* HalfLifeFileData.h */; }; - 3AF45B1D0E4B716800207D74 /* HMPLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AAB0E4B716800207D74 /* HMPLoader.cpp */; }; - 3AF45B1E0E4B716800207D74 /* HMPLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AAC0E4B716800207D74 /* HMPLoader.h */; }; - 3AF45B2A0E4B716800207D74 /* MD2FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AB80E4B716800207D74 /* MD2FileData.h */; }; - 3AF45B2B0E4B716800207D74 /* MD2Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AB90E4B716800207D74 /* MD2Loader.cpp */; }; - 3AF45B2C0E4B716800207D74 /* MD2Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABA0E4B716800207D74 /* MD2Loader.h */; }; - 3AF45B2D0E4B716800207D74 /* MD2NormalTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABB0E4B716800207D74 /* MD2NormalTable.h */; }; - 3AF45B2E0E4B716800207D74 /* MD3FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABC0E4B716800207D74 /* MD3FileData.h */; }; - 3AF45B2F0E4B716800207D74 /* MD3Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45ABD0E4B716800207D74 /* MD3Loader.cpp */; }; - 3AF45B300E4B716800207D74 /* MD3Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABE0E4B716800207D74 /* MD3Loader.h */; }; - 3AF45B340E4B716800207D74 /* MD5Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC20E4B716800207D74 /* MD5Loader.cpp */; }; - 3AF45B350E4B716800207D74 /* MD5Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC30E4B716800207D74 /* MD5Loader.h */; }; - 3AF45B360E4B716800207D74 /* MD5Parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC40E4B716800207D74 /* MD5Parser.cpp */; }; - 3AF45B370E4B716800207D74 /* MD5Parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC50E4B716800207D74 /* MD5Parser.h */; }; - 3AF45B380E4B716800207D74 /* MDLDefaultColorMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC60E4B716800207D74 /* MDLDefaultColorMap.h */; }; - 3AF45B390E4B716800207D74 /* MDLFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC70E4B716800207D74 /* MDLFileData.h */; }; - 3AF45B3A0E4B716800207D74 /* MDLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC80E4B716800207D74 /* MDLLoader.cpp */; }; - 3AF45B3B0E4B716800207D74 /* MDLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC90E4B716800207D74 /* MDLLoader.h */; }; - 3AF45B3C0E4B716800207D74 /* MDLMaterialLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45ACA0E4B716800207D74 /* MDLMaterialLoader.cpp */; }; - 3AF45B460E4B716800207D74 /* PlyLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AD40E4B716800207D74 /* PlyLoader.cpp */; }; - 3AF45B470E4B716800207D74 /* PlyLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AD50E4B716800207D74 /* PlyLoader.h */; }; - 3AF45B480E4B716800207D74 /* PlyParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AD60E4B716800207D74 /* PlyParser.cpp */; }; - 3AF45B490E4B716800207D74 /* PlyParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AD70E4B716800207D74 /* PlyParser.h */; }; - 3AF45B520E4B716800207D74 /* SMDLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AE20E4B716800207D74 /* SMDLoader.cpp */; }; - 3AF45B530E4B716800207D74 /* SMDLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AE30E4B716800207D74 /* SMDLoader.h */; }; - 3AF45B640E4B716800207D74 /* XFileHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF40E4B716800207D74 /* XFileHelper.h */; }; - 3AF45B650E4B716800207D74 /* XFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AF50E4B716800207D74 /* XFileImporter.cpp */; }; - 3AF45B660E4B716800207D74 /* XFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF60E4B716800207D74 /* XFileImporter.h */; }; - 3AF45B670E4B716800207D74 /* XFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AF70E4B716800207D74 /* XFileParser.cpp */; }; - 3AF45B680E4B716800207D74 /* XFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF80E4B716800207D74 /* XFileParser.h */; }; - 7411B15011416D5E00BCD793 /* CSMLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B14E11416D5E00BCD793 /* CSMLoader.cpp */; }; - 7411B15111416D5E00BCD793 /* CSMLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B14F11416D5E00BCD793 /* CSMLoader.h */; }; - 7411B15211416D5E00BCD793 /* CSMLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B14E11416D5E00BCD793 /* CSMLoader.cpp */; }; - 7411B15311416D5E00BCD793 /* CSMLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B14F11416D5E00BCD793 /* CSMLoader.h */; }; - 7411B15411416D5E00BCD793 /* CSMLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B14E11416D5E00BCD793 /* CSMLoader.cpp */; }; - 7411B15511416D5E00BCD793 /* CSMLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B14F11416D5E00BCD793 /* CSMLoader.h */; }; - 7411B15611416D5E00BCD793 /* CSMLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B14E11416D5E00BCD793 /* CSMLoader.cpp */; }; - 7411B15711416D5E00BCD793 /* CSMLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B14F11416D5E00BCD793 /* CSMLoader.h */; }; - 7411B15B11416DDD00BCD793 /* LWSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B15911416DDD00BCD793 /* LWSLoader.cpp */; }; - 7411B15C11416DDD00BCD793 /* LWSLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B15A11416DDD00BCD793 /* LWSLoader.h */; }; - 7411B15D11416DDD00BCD793 /* LWSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B15911416DDD00BCD793 /* LWSLoader.cpp */; }; - 7411B15E11416DDD00BCD793 /* LWSLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B15A11416DDD00BCD793 /* LWSLoader.h */; }; - 7411B15F11416DDD00BCD793 /* LWSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B15911416DDD00BCD793 /* LWSLoader.cpp */; }; - 7411B16011416DDD00BCD793 /* LWSLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B15A11416DDD00BCD793 /* LWSLoader.h */; }; - 7411B16111416DDD00BCD793 /* LWSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B15911416DDD00BCD793 /* LWSLoader.cpp */; }; - 7411B16211416DDD00BCD793 /* LWSLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B15A11416DDD00BCD793 /* LWSLoader.h */; }; - 7411B16511416DF400BCD793 /* LWOAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B16311416DF400BCD793 /* LWOAnimation.cpp */; }; - 7411B16611416DF400BCD793 /* LWOAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B16411416DF400BCD793 /* LWOAnimation.h */; }; - 7411B16711416DF400BCD793 /* LWOAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B16311416DF400BCD793 /* LWOAnimation.cpp */; }; - 7411B16811416DF400BCD793 /* LWOAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B16411416DF400BCD793 /* LWOAnimation.h */; }; - 7411B16911416DF400BCD793 /* LWOAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B16311416DF400BCD793 /* LWOAnimation.cpp */; }; - 7411B16A11416DF400BCD793 /* LWOAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B16411416DF400BCD793 /* LWOAnimation.h */; }; - 7411B16B11416DF400BCD793 /* LWOAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B16311416DF400BCD793 /* LWOAnimation.cpp */; }; - 7411B16C11416DF400BCD793 /* LWOAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B16411416DF400BCD793 /* LWOAnimation.h */; }; - 7411B17211416E2500BCD793 /* MS3DLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B17011416E2500BCD793 /* MS3DLoader.cpp */; }; - 7411B17311416E2500BCD793 /* MS3DLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B17111416E2500BCD793 /* MS3DLoader.h */; }; - 7411B17411416E2500BCD793 /* MS3DLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B17011416E2500BCD793 /* MS3DLoader.cpp */; }; - 7411B17511416E2500BCD793 /* MS3DLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B17111416E2500BCD793 /* MS3DLoader.h */; }; - 7411B17611416E2500BCD793 /* MS3DLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B17011416E2500BCD793 /* MS3DLoader.cpp */; }; - 7411B17711416E2500BCD793 /* MS3DLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B17111416E2500BCD793 /* MS3DLoader.h */; }; - 7411B17811416E2500BCD793 /* MS3DLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B17011416E2500BCD793 /* MS3DLoader.cpp */; }; - 7411B17911416E2500BCD793 /* MS3DLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B17111416E2500BCD793 /* MS3DLoader.h */; }; - 7411B18D11416EBC00BCD793 /* UnrealLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B18B11416EBC00BCD793 /* UnrealLoader.cpp */; }; - 7411B18E11416EBC00BCD793 /* UnrealLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B18C11416EBC00BCD793 /* UnrealLoader.h */; }; - 7411B18F11416EBC00BCD793 /* UnrealLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B18B11416EBC00BCD793 /* UnrealLoader.cpp */; }; - 7411B19011416EBC00BCD793 /* UnrealLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B18C11416EBC00BCD793 /* UnrealLoader.h */; }; - 7411B19111416EBC00BCD793 /* UnrealLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B18B11416EBC00BCD793 /* UnrealLoader.cpp */; }; - 7411B19211416EBC00BCD793 /* UnrealLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B18C11416EBC00BCD793 /* UnrealLoader.h */; }; - 7411B19311416EBC00BCD793 /* UnrealLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B18B11416EBC00BCD793 /* UnrealLoader.cpp */; }; - 7411B19411416EBC00BCD793 /* UnrealLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B18C11416EBC00BCD793 /* UnrealLoader.h */; }; - 745FF840113ECB080020C31B /* 3DSHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A880E4B716800207D74 /* 3DSHelper.h */; }; - 745FF841113ECB080020C31B /* 3DSLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A8A0E4B716800207D74 /* 3DSLoader.h */; }; - 745FF842113ECB080020C31B /* ASELoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A8F0E4B716800207D74 /* ASELoader.h */; }; - 745FF843113ECB080020C31B /* ASEParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A910E4B716800207D74 /* ASEParser.h */; }; - 745FF850113ECB080020C31B /* HalfLifeFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AA90E4B716800207D74 /* HalfLifeFileData.h */; }; - 745FF851113ECB080020C31B /* HMPLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AAC0E4B716800207D74 /* HMPLoader.h */; }; - 745FF856113ECB080020C31B /* MD2FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AB80E4B716800207D74 /* MD2FileData.h */; }; - 745FF857113ECB080020C31B /* MD2Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABA0E4B716800207D74 /* MD2Loader.h */; }; - 745FF858113ECB080020C31B /* MD2NormalTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABB0E4B716800207D74 /* MD2NormalTable.h */; }; - 745FF859113ECB080020C31B /* MD3FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABC0E4B716800207D74 /* MD3FileData.h */; }; - 745FF85A113ECB080020C31B /* MD3Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABE0E4B716800207D74 /* MD3Loader.h */; }; - 745FF85B113ECB080020C31B /* MD5Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC30E4B716800207D74 /* MD5Loader.h */; }; - 745FF85C113ECB080020C31B /* MD5Parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC50E4B716800207D74 /* MD5Parser.h */; }; - 745FF85D113ECB080020C31B /* MDLDefaultColorMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC60E4B716800207D74 /* MDLDefaultColorMap.h */; }; - 745FF85E113ECB080020C31B /* MDLFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC70E4B716800207D74 /* MDLFileData.h */; }; - 745FF85F113ECB080020C31B /* MDLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC90E4B716800207D74 /* MDLLoader.h */; }; - 745FF866113ECB080020C31B /* PlyLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AD50E4B716800207D74 /* PlyLoader.h */; }; - 745FF867113ECB080020C31B /* PlyParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AD70E4B716800207D74 /* PlyParser.h */; }; - 745FF86C113ECB080020C31B /* SMDLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AE30E4B716800207D74 /* SMDLoader.h */; }; - 745FF876113ECB080020C31B /* XFileHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF40E4B716800207D74 /* XFileHelper.h */; }; - 745FF877113ECB080020C31B /* XFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF60E4B716800207D74 /* XFileImporter.h */; }; - 745FF878113ECB080020C31B /* XFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF80E4B716800207D74 /* XFileParser.h */; }; - 745FF87B113ECB080020C31B /* MDCFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AB0E50D67A00606590 /* MDCFileData.h */; }; - 745FF87C113ECB080020C31B /* MDCLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AD0E50D67A00606590 /* MDCLoader.h */; }; - 745FF87D113ECB080020C31B /* MDCNormalTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AE0E50D67A00606590 /* MDCNormalTable.h */; }; - 745FF87F113ECB080020C31B /* LWOFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3B70E50D6DB00606590 /* LWOFileData.h */; }; - 745FF880113ECB080020C31B /* LWOLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3B90E50D6DB00606590 /* LWOLoader.h */; }; - 745FF881113ECB080020C31B /* HMPFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3C50E50D77900606590 /* HMPFileData.h */; }; - 745FF889113ECB080020C31B /* ACLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFD10F5DD87000124155 /* ACLoader.h */; }; - 745FF88A113ECB080020C31B /* IRRLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDA0F5DD90800124155 /* IRRLoader.h */; }; - 745FF88B113ECB080020C31B /* IRRMeshLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDC0F5DD90800124155 /* IRRMeshLoader.h */; }; - 745FF88C113ECB080020C31B /* IRRShared.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDE0F5DD90800124155 /* IRRShared.h */; }; - 745FF890113ECB080020C31B /* NFFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFF50F5DD96100124155 /* NFFLoader.h */; }; - 745FF892113ECB080020C31B /* Q3DLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0070F5DD9DD00124155 /* Q3DLoader.h */; }; - 745FF893113ECB080020C31B /* BVHLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB00C0F5DD9F400124155 /* BVHLoader.h */; }; - 745FF894113ECB080020C31B /* OFFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0130F5DDA1400124155 /* OFFLoader.h */; }; - 745FF895113ECB080020C31B /* RawLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB01B0F5DDA4400124155 /* RawLoader.h */; }; - 745FF896113ECB080020C31B /* DXFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0210F5DDA5700124155 /* DXFLoader.h */; }; - 745FF897113ECB080020C31B /* TerragenLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB02F0F5DDAB500124155 /* TerragenLoader.h */; }; - 745FF898113ECB080020C31B /* irrXMLWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0360F5DDB1B00124155 /* irrXMLWrapper.h */; }; - 745FF8AA113ECB080020C31B /* B3DImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0870F5DDE0700124155 /* B3DImporter.h */; }; - 745FF8B0113ECB080020C31B /* 3DSConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A860E4B716800207D74 /* 3DSConverter.cpp */; }; - 745FF8B1113ECB080020C31B /* 3DSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A890E4B716800207D74 /* 3DSLoader.cpp */; }; - 745FF8B3113ECB080020C31B /* ASELoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A8E0E4B716800207D74 /* ASELoader.cpp */; }; - 745FF8B4113ECB080020C31B /* ASEParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A900E4B716800207D74 /* ASEParser.cpp */; }; - 745FF8BF113ECB080020C31B /* HMPLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AAB0E4B716800207D74 /* HMPLoader.cpp */; }; - 745FF8C5113ECB080020C31B /* MD2Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AB90E4B716800207D74 /* MD2Loader.cpp */; }; - 745FF8C6113ECB080020C31B /* MD3Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45ABD0E4B716800207D74 /* MD3Loader.cpp */; }; - 745FF8C7113ECB080020C31B /* MD5Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC20E4B716800207D74 /* MD5Loader.cpp */; }; - 745FF8C8113ECB080020C31B /* MD5Parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC40E4B716800207D74 /* MD5Parser.cpp */; }; - 745FF8C9113ECB080020C31B /* MDLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC80E4B716800207D74 /* MDLLoader.cpp */; }; - 745FF8CA113ECB080020C31B /* MDLMaterialLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45ACA0E4B716800207D74 /* MDLMaterialLoader.cpp */; }; - 745FF8CE113ECB080020C31B /* PlyLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AD40E4B716800207D74 /* PlyLoader.cpp */; }; - 745FF8CF113ECB080020C31B /* PlyParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AD60E4B716800207D74 /* PlyParser.cpp */; }; - 745FF8D3113ECB080020C31B /* SMDLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AE20E4B716800207D74 /* SMDLoader.cpp */; }; - 745FF8DB113ECB080020C31B /* XFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AF50E4B716800207D74 /* XFileImporter.cpp */; }; - 745FF8DC113ECB080020C31B /* XFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AF70E4B716800207D74 /* XFileParser.cpp */; }; - 745FF8DD113ECB080020C31B /* MDCLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A3AC0E50D67A00606590 /* MDCLoader.cpp */; }; - 745FF8DF113ECB080020C31B /* LWOLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A3B80E50D6DB00606590 /* LWOLoader.cpp */; }; - 745FF8E1113ECB080020C31B /* LWOMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A7DC0E53715F00606590 /* LWOMaterial.cpp */; }; - 745FF8E2113ECB080020C31B /* ACLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFD00F5DD87000124155 /* ACLoader.cpp */; }; - 745FF8E3113ECB080020C31B /* IRRLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFD90F5DD90800124155 /* IRRLoader.cpp */; }; - 745FF8E4113ECB080020C31B /* IRRMeshLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFDB0F5DD90800124155 /* IRRMeshLoader.cpp */; }; - 745FF8E5113ECB080020C31B /* IRRShared.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFDD0F5DD90800124155 /* IRRShared.cpp */; }; - 745FF8E8113ECB080020C31B /* NFFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFF60F5DD96100124155 /* NFFLoader.cpp */; }; - 745FF8EA113ECB080020C31B /* Q3DLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0060F5DD9DD00124155 /* Q3DLoader.cpp */; }; - 745FF8EB113ECB080020C31B /* BVHLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB00D0F5DD9F400124155 /* BVHLoader.cpp */; }; - 745FF8EC113ECB080020C31B /* OFFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0140F5DDA1400124155 /* OFFLoader.cpp */; }; - 745FF8ED113ECB080020C31B /* RawLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB01C0F5DDA4400124155 /* RawLoader.cpp */; }; - 745FF8EE113ECB080020C31B /* DXFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0220F5DDA5700124155 /* DXFLoader.cpp */; }; - 745FF8EF113ECB080020C31B /* LWOBLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0270F5DDA9200124155 /* LWOBLoader.cpp */; }; - 745FF8F0113ECB080020C31B /* TerragenLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0300F5DDAB500124155 /* TerragenLoader.cpp */; }; - 745FF8FC113ECB080020C31B /* B3DImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0880F5DDE0700124155 /* B3DImporter.cpp */; }; - 745FF923113ECC660020C31B /* 3DSHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A880E4B716800207D74 /* 3DSHelper.h */; }; - 745FF924113ECC660020C31B /* 3DSLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A8A0E4B716800207D74 /* 3DSLoader.h */; }; - 745FF925113ECC660020C31B /* ASELoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A8F0E4B716800207D74 /* ASELoader.h */; }; - 745FF926113ECC660020C31B /* ASEParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A910E4B716800207D74 /* ASEParser.h */; }; - 745FF933113ECC660020C31B /* HalfLifeFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AA90E4B716800207D74 /* HalfLifeFileData.h */; }; - 745FF934113ECC660020C31B /* HMPLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AAC0E4B716800207D74 /* HMPLoader.h */; }; - 745FF939113ECC660020C31B /* MD2FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AB80E4B716800207D74 /* MD2FileData.h */; }; - 745FF93A113ECC660020C31B /* MD2Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABA0E4B716800207D74 /* MD2Loader.h */; }; - 745FF93B113ECC660020C31B /* MD2NormalTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABB0E4B716800207D74 /* MD2NormalTable.h */; }; - 745FF93C113ECC660020C31B /* MD3FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABC0E4B716800207D74 /* MD3FileData.h */; }; - 745FF93D113ECC660020C31B /* MD3Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABE0E4B716800207D74 /* MD3Loader.h */; }; - 745FF93E113ECC660020C31B /* MD5Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC30E4B716800207D74 /* MD5Loader.h */; }; - 745FF93F113ECC660020C31B /* MD5Parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC50E4B716800207D74 /* MD5Parser.h */; }; - 745FF940113ECC660020C31B /* MDLDefaultColorMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC60E4B716800207D74 /* MDLDefaultColorMap.h */; }; - 745FF941113ECC660020C31B /* MDLFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC70E4B716800207D74 /* MDLFileData.h */; }; - 745FF942113ECC660020C31B /* MDLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC90E4B716800207D74 /* MDLLoader.h */; }; - 745FF949113ECC660020C31B /* PlyLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AD50E4B716800207D74 /* PlyLoader.h */; }; - 745FF94A113ECC660020C31B /* PlyParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AD70E4B716800207D74 /* PlyParser.h */; }; - 745FF94F113ECC660020C31B /* SMDLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AE30E4B716800207D74 /* SMDLoader.h */; }; - 745FF959113ECC660020C31B /* XFileHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF40E4B716800207D74 /* XFileHelper.h */; }; - 745FF95A113ECC660020C31B /* XFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF60E4B716800207D74 /* XFileImporter.h */; }; - 745FF95B113ECC660020C31B /* XFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF80E4B716800207D74 /* XFileParser.h */; }; - 745FF95E113ECC660020C31B /* MDCFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AB0E50D67A00606590 /* MDCFileData.h */; }; - 745FF95F113ECC660020C31B /* MDCLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AD0E50D67A00606590 /* MDCLoader.h */; }; - 745FF960113ECC660020C31B /* MDCNormalTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AE0E50D67A00606590 /* MDCNormalTable.h */; }; - 745FF962113ECC660020C31B /* LWOFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3B70E50D6DB00606590 /* LWOFileData.h */; }; - 745FF963113ECC660020C31B /* LWOLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3B90E50D6DB00606590 /* LWOLoader.h */; }; - 745FF964113ECC660020C31B /* HMPFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3C50E50D77900606590 /* HMPFileData.h */; }; - 745FF96C113ECC660020C31B /* ACLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFD10F5DD87000124155 /* ACLoader.h */; }; - 745FF96D113ECC660020C31B /* IRRLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDA0F5DD90800124155 /* IRRLoader.h */; }; - 745FF96E113ECC660020C31B /* IRRMeshLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDC0F5DD90800124155 /* IRRMeshLoader.h */; }; - 745FF96F113ECC660020C31B /* IRRShared.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDE0F5DD90800124155 /* IRRShared.h */; }; - 745FF973113ECC660020C31B /* NFFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFF50F5DD96100124155 /* NFFLoader.h */; }; - 745FF975113ECC660020C31B /* Q3DLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0070F5DD9DD00124155 /* Q3DLoader.h */; }; - 745FF976113ECC660020C31B /* BVHLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB00C0F5DD9F400124155 /* BVHLoader.h */; }; - 745FF977113ECC660020C31B /* OFFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0130F5DDA1400124155 /* OFFLoader.h */; }; - 745FF978113ECC660020C31B /* RawLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB01B0F5DDA4400124155 /* RawLoader.h */; }; - 745FF979113ECC660020C31B /* DXFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0210F5DDA5700124155 /* DXFLoader.h */; }; - 745FF97A113ECC660020C31B /* TerragenLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB02F0F5DDAB500124155 /* TerragenLoader.h */; }; - 745FF97B113ECC660020C31B /* irrXMLWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0360F5DDB1B00124155 /* irrXMLWrapper.h */; }; - 745FF98D113ECC660020C31B /* B3DImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0870F5DDE0700124155 /* B3DImporter.h */; }; - 745FF993113ECC660020C31B /* 3DSConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A860E4B716800207D74 /* 3DSConverter.cpp */; }; - 745FF994113ECC660020C31B /* 3DSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A890E4B716800207D74 /* 3DSLoader.cpp */; }; - 745FF996113ECC660020C31B /* ASELoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A8E0E4B716800207D74 /* ASELoader.cpp */; }; - 745FF997113ECC660020C31B /* ASEParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A900E4B716800207D74 /* ASEParser.cpp */; }; - 745FF9A2113ECC660020C31B /* HMPLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AAB0E4B716800207D74 /* HMPLoader.cpp */; }; - 745FF9A8113ECC660020C31B /* MD2Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AB90E4B716800207D74 /* MD2Loader.cpp */; }; - 745FF9A9113ECC660020C31B /* MD3Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45ABD0E4B716800207D74 /* MD3Loader.cpp */; }; - 745FF9AA113ECC660020C31B /* MD5Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC20E4B716800207D74 /* MD5Loader.cpp */; }; - 745FF9AB113ECC660020C31B /* MD5Parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC40E4B716800207D74 /* MD5Parser.cpp */; }; - 745FF9AC113ECC660020C31B /* MDLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC80E4B716800207D74 /* MDLLoader.cpp */; }; - 745FF9AD113ECC660020C31B /* MDLMaterialLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45ACA0E4B716800207D74 /* MDLMaterialLoader.cpp */; }; - 745FF9B1113ECC660020C31B /* PlyLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AD40E4B716800207D74 /* PlyLoader.cpp */; }; - 745FF9B2113ECC660020C31B /* PlyParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AD60E4B716800207D74 /* PlyParser.cpp */; }; - 745FF9B6113ECC660020C31B /* SMDLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AE20E4B716800207D74 /* SMDLoader.cpp */; }; - 745FF9BE113ECC660020C31B /* XFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AF50E4B716800207D74 /* XFileImporter.cpp */; }; - 745FF9BF113ECC660020C31B /* XFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AF70E4B716800207D74 /* XFileParser.cpp */; }; - 745FF9C0113ECC660020C31B /* MDCLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A3AC0E50D67A00606590 /* MDCLoader.cpp */; }; - 745FF9C2113ECC660020C31B /* LWOLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A3B80E50D6DB00606590 /* LWOLoader.cpp */; }; - 745FF9C4113ECC660020C31B /* LWOMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A7DC0E53715F00606590 /* LWOMaterial.cpp */; }; - 745FF9C5113ECC660020C31B /* ACLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFD00F5DD87000124155 /* ACLoader.cpp */; }; - 745FF9C6113ECC660020C31B /* IRRLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFD90F5DD90800124155 /* IRRLoader.cpp */; }; - 745FF9C7113ECC660020C31B /* IRRMeshLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFDB0F5DD90800124155 /* IRRMeshLoader.cpp */; }; - 745FF9C8113ECC660020C31B /* IRRShared.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFDD0F5DD90800124155 /* IRRShared.cpp */; }; - 745FF9CB113ECC660020C31B /* NFFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFF60F5DD96100124155 /* NFFLoader.cpp */; }; - 745FF9CD113ECC660020C31B /* Q3DLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0060F5DD9DD00124155 /* Q3DLoader.cpp */; }; - 745FF9CE113ECC660020C31B /* BVHLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB00D0F5DD9F400124155 /* BVHLoader.cpp */; }; - 745FF9CF113ECC660020C31B /* OFFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0140F5DDA1400124155 /* OFFLoader.cpp */; }; - 745FF9D0113ECC660020C31B /* RawLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB01C0F5DDA4400124155 /* RawLoader.cpp */; }; - 745FF9D1113ECC660020C31B /* DXFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0220F5DDA5700124155 /* DXFLoader.cpp */; }; - 745FF9D2113ECC660020C31B /* LWOBLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0270F5DDA9200124155 /* LWOBLoader.cpp */; }; - 745FF9D3113ECC660020C31B /* TerragenLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0300F5DDAB500124155 /* TerragenLoader.cpp */; }; - 745FF9DF113ECC660020C31B /* B3DImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0880F5DDE0700124155 /* B3DImporter.cpp */; }; - 74C9BB5111ACBB1000AF885C /* BlenderDNA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4911ACBB1000AF885C /* BlenderDNA.cpp */; }; - 74C9BB5211ACBB1000AF885C /* BlenderDNA.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4A11ACBB1000AF885C /* BlenderDNA.h */; }; - 74C9BB5311ACBB1000AF885C /* BlenderLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4C11ACBB1000AF885C /* BlenderLoader.cpp */; }; - 74C9BB5411ACBB1000AF885C /* BlenderLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4D11ACBB1000AF885C /* BlenderLoader.h */; }; - 74C9BB5511ACBB1000AF885C /* BlenderScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4E11ACBB1000AF885C /* BlenderScene.cpp */; }; - 74C9BB5611ACBB1000AF885C /* BlenderScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4F11ACBB1000AF885C /* BlenderScene.h */; }; - 74C9BB5711ACBB1000AF885C /* BlenderSceneGen.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB5011ACBB1000AF885C /* BlenderSceneGen.h */; }; - 74C9BB5811ACBB1000AF885C /* BlenderDNA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4911ACBB1000AF885C /* BlenderDNA.cpp */; }; - 74C9BB5911ACBB1000AF885C /* BlenderDNA.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4A11ACBB1000AF885C /* BlenderDNA.h */; }; - 74C9BB5A11ACBB1000AF885C /* BlenderLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4C11ACBB1000AF885C /* BlenderLoader.cpp */; }; - 74C9BB5B11ACBB1000AF885C /* BlenderLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4D11ACBB1000AF885C /* BlenderLoader.h */; }; - 74C9BB5C11ACBB1000AF885C /* BlenderScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4E11ACBB1000AF885C /* BlenderScene.cpp */; }; - 74C9BB5D11ACBB1000AF885C /* BlenderScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4F11ACBB1000AF885C /* BlenderScene.h */; }; - 74C9BB5E11ACBB1000AF885C /* BlenderSceneGen.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB5011ACBB1000AF885C /* BlenderSceneGen.h */; }; - 74C9BB5F11ACBB1000AF885C /* BlenderDNA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4911ACBB1000AF885C /* BlenderDNA.cpp */; }; - 74C9BB6011ACBB1000AF885C /* BlenderDNA.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4A11ACBB1000AF885C /* BlenderDNA.h */; }; - 74C9BB6111ACBB1000AF885C /* BlenderLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4C11ACBB1000AF885C /* BlenderLoader.cpp */; }; - 74C9BB6211ACBB1000AF885C /* BlenderLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4D11ACBB1000AF885C /* BlenderLoader.h */; }; - 74C9BB6311ACBB1000AF885C /* BlenderScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4E11ACBB1000AF885C /* BlenderScene.cpp */; }; - 74C9BB6411ACBB1000AF885C /* BlenderScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4F11ACBB1000AF885C /* BlenderScene.h */; }; - 74C9BB6511ACBB1000AF885C /* BlenderSceneGen.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB5011ACBB1000AF885C /* BlenderSceneGen.h */; }; - 74C9BB6611ACBB1000AF885C /* BlenderDNA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4911ACBB1000AF885C /* BlenderDNA.cpp */; }; - 74C9BB6711ACBB1000AF885C /* BlenderDNA.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4A11ACBB1000AF885C /* BlenderDNA.h */; }; - 74C9BB6811ACBB1000AF885C /* BlenderLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4C11ACBB1000AF885C /* BlenderLoader.cpp */; }; - 74C9BB6911ACBB1000AF885C /* BlenderLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4D11ACBB1000AF885C /* BlenderLoader.h */; }; - 74C9BB6A11ACBB1000AF885C /* BlenderScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4E11ACBB1000AF885C /* BlenderScene.cpp */; }; - 74C9BB6B11ACBB1000AF885C /* BlenderScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4F11ACBB1000AF885C /* BlenderScene.h */; }; - 74C9BB6C11ACBB1000AF885C /* BlenderSceneGen.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB5011ACBB1000AF885C /* BlenderSceneGen.h */; }; - 74C9BB8811ACBB9900AF885C /* AssimpPCH.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB8611ACBB9900AF885C /* AssimpPCH.cpp */; }; - 74C9BB8911ACBB9900AF885C /* AssimpPCH.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB8711ACBB9900AF885C /* AssimpPCH.h */; }; - 74C9BB8A11ACBB9900AF885C /* AssimpPCH.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB8611ACBB9900AF885C /* AssimpPCH.cpp */; }; - 74C9BB8B11ACBB9900AF885C /* AssimpPCH.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB8711ACBB9900AF885C /* AssimpPCH.h */; }; - 74C9BB8C11ACBB9900AF885C /* AssimpPCH.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB8611ACBB9900AF885C /* AssimpPCH.cpp */; }; - 74C9BB8D11ACBB9900AF885C /* AssimpPCH.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB8711ACBB9900AF885C /* AssimpPCH.h */; }; - 74C9BB8E11ACBB9900AF885C /* AssimpPCH.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB8611ACBB9900AF885C /* AssimpPCH.cpp */; }; - 74C9BB8F11ACBB9900AF885C /* AssimpPCH.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB8711ACBB9900AF885C /* AssimpPCH.h */; }; - 74C9BB9611ACBBBC00AF885C /* COBLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB9311ACBBBC00AF885C /* COBLoader.cpp */; }; - 74C9BB9711ACBBBC00AF885C /* COBLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB9411ACBBBC00AF885C /* COBLoader.h */; }; - 74C9BB9811ACBBBC00AF885C /* COBScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB9511ACBBBC00AF885C /* COBScene.h */; }; - 74C9BB9911ACBBBC00AF885C /* COBLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB9311ACBBBC00AF885C /* COBLoader.cpp */; }; - 74C9BB9A11ACBBBC00AF885C /* COBLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB9411ACBBBC00AF885C /* COBLoader.h */; }; - 74C9BB9B11ACBBBC00AF885C /* COBScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB9511ACBBBC00AF885C /* COBScene.h */; }; - 74C9BB9C11ACBBBC00AF885C /* COBLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB9311ACBBBC00AF885C /* COBLoader.cpp */; }; - 74C9BB9D11ACBBBC00AF885C /* COBLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB9411ACBBBC00AF885C /* COBLoader.h */; }; - 74C9BB9E11ACBBBC00AF885C /* COBScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB9511ACBBBC00AF885C /* COBScene.h */; }; - 74C9BB9F11ACBBBC00AF885C /* COBLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB9311ACBBBC00AF885C /* COBLoader.cpp */; }; - 74C9BBA011ACBBBC00AF885C /* COBLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB9411ACBBBC00AF885C /* COBLoader.h */; }; - 74C9BBA111ACBBBC00AF885C /* COBScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB9511ACBBBC00AF885C /* COBScene.h */; }; - 74C9BBB411ACBC2600AF885C /* revision.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BBB311ACBC2600AF885C /* revision.h */; }; - 74C9BBB511ACBC2600AF885C /* revision.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BBB311ACBC2600AF885C /* revision.h */; }; - 74C9BBB611ACBC2600AF885C /* revision.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BBB311ACBC2600AF885C /* revision.h */; }; - 74C9BBB711ACBC2600AF885C /* revision.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BBB311ACBC2600AF885C /* revision.h */; }; - 8E7ABBA8127E0F1A00512ED1 /* Q3BSPFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA1127E0F1A00512ED1 /* Q3BSPFileData.h */; }; - 8E7ABBA9127E0F1A00512ED1 /* Q3BSPFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA2127E0F1A00512ED1 /* Q3BSPFileImporter.cpp */; }; - 8E7ABBAA127E0F1A00512ED1 /* Q3BSPFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA3127E0F1A00512ED1 /* Q3BSPFileImporter.h */; }; - 8E7ABBAB127E0F1A00512ED1 /* Q3BSPFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA4127E0F1A00512ED1 /* Q3BSPFileParser.cpp */; }; - 8E7ABBAC127E0F1A00512ED1 /* Q3BSPFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA5127E0F1A00512ED1 /* Q3BSPFileParser.h */; }; - 8E7ABBAD127E0F1A00512ED1 /* Q3BSPZipArchive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA6127E0F1A00512ED1 /* Q3BSPZipArchive.cpp */; }; - 8E7ABBAE127E0F1A00512ED1 /* Q3BSPZipArchive.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA7127E0F1A00512ED1 /* Q3BSPZipArchive.h */; }; - 8E7ABBAF127E0F1A00512ED1 /* Q3BSPFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA1127E0F1A00512ED1 /* Q3BSPFileData.h */; }; - 8E7ABBB0127E0F1A00512ED1 /* Q3BSPFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA2127E0F1A00512ED1 /* Q3BSPFileImporter.cpp */; }; - 8E7ABBB1127E0F1A00512ED1 /* Q3BSPFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA3127E0F1A00512ED1 /* Q3BSPFileImporter.h */; }; - 8E7ABBB2127E0F1A00512ED1 /* Q3BSPFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA4127E0F1A00512ED1 /* Q3BSPFileParser.cpp */; }; - 8E7ABBB3127E0F1A00512ED1 /* Q3BSPFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA5127E0F1A00512ED1 /* Q3BSPFileParser.h */; }; - 8E7ABBB4127E0F1A00512ED1 /* Q3BSPZipArchive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA6127E0F1A00512ED1 /* Q3BSPZipArchive.cpp */; }; - 8E7ABBB5127E0F1A00512ED1 /* Q3BSPZipArchive.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA7127E0F1A00512ED1 /* Q3BSPZipArchive.h */; }; - 8E7ABBB6127E0F1A00512ED1 /* Q3BSPFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA1127E0F1A00512ED1 /* Q3BSPFileData.h */; }; - 8E7ABBB7127E0F1A00512ED1 /* Q3BSPFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA2127E0F1A00512ED1 /* Q3BSPFileImporter.cpp */; }; - 8E7ABBB8127E0F1A00512ED1 /* Q3BSPFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA3127E0F1A00512ED1 /* Q3BSPFileImporter.h */; }; - 8E7ABBB9127E0F1A00512ED1 /* Q3BSPFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA4127E0F1A00512ED1 /* Q3BSPFileParser.cpp */; }; - 8E7ABBBA127E0F1A00512ED1 /* Q3BSPFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA5127E0F1A00512ED1 /* Q3BSPFileParser.h */; }; - 8E7ABBBB127E0F1A00512ED1 /* Q3BSPZipArchive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA6127E0F1A00512ED1 /* Q3BSPZipArchive.cpp */; }; - 8E7ABBBC127E0F1A00512ED1 /* Q3BSPZipArchive.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA7127E0F1A00512ED1 /* Q3BSPZipArchive.h */; }; - 8E7ABBBD127E0F1A00512ED1 /* Q3BSPFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA1127E0F1A00512ED1 /* Q3BSPFileData.h */; }; - 8E7ABBBE127E0F1A00512ED1 /* Q3BSPFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA2127E0F1A00512ED1 /* Q3BSPFileImporter.cpp */; }; - 8E7ABBBF127E0F1A00512ED1 /* Q3BSPFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA3127E0F1A00512ED1 /* Q3BSPFileImporter.h */; }; - 8E7ABBC0127E0F1A00512ED1 /* Q3BSPFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA4127E0F1A00512ED1 /* Q3BSPFileParser.cpp */; }; - 8E7ABBC1127E0F1A00512ED1 /* Q3BSPFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA5127E0F1A00512ED1 /* Q3BSPFileParser.h */; }; - 8E7ABBC2127E0F1A00512ED1 /* Q3BSPZipArchive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA6127E0F1A00512ED1 /* Q3BSPZipArchive.cpp */; }; - 8E7ABBC3127E0F1A00512ED1 /* Q3BSPZipArchive.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA7127E0F1A00512ED1 /* Q3BSPZipArchive.h */; }; - 8E7ABBC6127E0F2A00512ED1 /* NDOLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBC4127E0F2A00512ED1 /* NDOLoader.cpp */; }; - 8E7ABBC7127E0F2A00512ED1 /* NDOLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBC5127E0F2A00512ED1 /* NDOLoader.h */; }; - 8E7ABBC8127E0F2A00512ED1 /* NDOLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBC4127E0F2A00512ED1 /* NDOLoader.cpp */; }; - 8E7ABBC9127E0F2A00512ED1 /* NDOLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBC5127E0F2A00512ED1 /* NDOLoader.h */; }; - 8E7ABBCA127E0F2A00512ED1 /* NDOLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBC4127E0F2A00512ED1 /* NDOLoader.cpp */; }; - 8E7ABBCB127E0F2A00512ED1 /* NDOLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBC5127E0F2A00512ED1 /* NDOLoader.h */; }; - 8E7ABBCC127E0F2A00512ED1 /* NDOLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBC4127E0F2A00512ED1 /* NDOLoader.cpp */; }; - 8E7ABBCD127E0F2A00512ED1 /* NDOLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBC5127E0F2A00512ED1 /* NDOLoader.h */; }; - 8E7ABBD1127E0F3800512ED1 /* BlenderIntermediate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBCE127E0F3800512ED1 /* BlenderIntermediate.h */; }; - 8E7ABBD2127E0F3800512ED1 /* BlenderModifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBCF127E0F3800512ED1 /* BlenderModifier.cpp */; }; - 8E7ABBD3127E0F3800512ED1 /* BlenderModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBD0127E0F3800512ED1 /* BlenderModifier.h */; }; - 8E7ABBD4127E0F3800512ED1 /* BlenderIntermediate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBCE127E0F3800512ED1 /* BlenderIntermediate.h */; }; - 8E7ABBD5127E0F3800512ED1 /* BlenderModifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBCF127E0F3800512ED1 /* BlenderModifier.cpp */; }; - 8E7ABBD6127E0F3800512ED1 /* BlenderModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBD0127E0F3800512ED1 /* BlenderModifier.h */; }; - 8E7ABBD7127E0F3800512ED1 /* BlenderIntermediate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBCE127E0F3800512ED1 /* BlenderIntermediate.h */; }; - 8E7ABBD8127E0F3800512ED1 /* BlenderModifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBCF127E0F3800512ED1 /* BlenderModifier.cpp */; }; - 8E7ABBD9127E0F3800512ED1 /* BlenderModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBD0127E0F3800512ED1 /* BlenderModifier.h */; }; - 8E7ABBDA127E0F3800512ED1 /* BlenderIntermediate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBCE127E0F3800512ED1 /* BlenderIntermediate.h */; }; - 8E7ABBDB127E0F3800512ED1 /* BlenderModifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBCF127E0F3800512ED1 /* BlenderModifier.cpp */; }; - 8E7ABBDC127E0F3800512ED1 /* BlenderModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBD0127E0F3800512ED1 /* BlenderModifier.h */; }; - 8E8DEE5C127E2B78005EF64D /* ConvertUTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE4B127E2B78005EF64D /* ConvertUTF.c */; }; - 8E8DEE5D127E2B78005EF64D /* ConvertUTF.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE4C127E2B78005EF64D /* ConvertUTF.h */; }; - 8E8DEE5E127E2B78005EF64D /* CXMLReaderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE4F127E2B78005EF64D /* CXMLReaderImpl.h */; }; - 8E8DEE5F127E2B78005EF64D /* heapsort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE50127E2B78005EF64D /* heapsort.h */; }; - 8E8DEE60127E2B78005EF64D /* irrArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE51127E2B78005EF64D /* irrArray.h */; }; - 8E8DEE61127E2B78005EF64D /* irrString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE52127E2B78005EF64D /* irrString.h */; }; - 8E8DEE62127E2B78005EF64D /* irrTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE53127E2B78005EF64D /* irrTypes.h */; }; - 8E8DEE63127E2B78005EF64D /* irrXML.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE54127E2B78005EF64D /* irrXML.cpp */; }; - 8E8DEE64127E2B78005EF64D /* irrXML.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE55127E2B78005EF64D /* irrXML.h */; }; - 8E8DEE65127E2B78005EF64D /* crypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE57127E2B78005EF64D /* crypt.h */; }; - 8E8DEE66127E2B78005EF64D /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE58127E2B78005EF64D /* ioapi.c */; }; - 8E8DEE67127E2B78005EF64D /* ioapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE59127E2B78005EF64D /* ioapi.h */; }; - 8E8DEE68127E2B78005EF64D /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE5A127E2B78005EF64D /* unzip.c */; }; - 8E8DEE69127E2B78005EF64D /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE5B127E2B78005EF64D /* unzip.h */; }; - 8E8DEE6A127E2B78005EF64D /* ConvertUTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE4B127E2B78005EF64D /* ConvertUTF.c */; }; - 8E8DEE6B127E2B78005EF64D /* ConvertUTF.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE4C127E2B78005EF64D /* ConvertUTF.h */; }; - 8E8DEE6C127E2B78005EF64D /* CXMLReaderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE4F127E2B78005EF64D /* CXMLReaderImpl.h */; }; - 8E8DEE6D127E2B78005EF64D /* heapsort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE50127E2B78005EF64D /* heapsort.h */; }; - 8E8DEE6E127E2B78005EF64D /* irrArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE51127E2B78005EF64D /* irrArray.h */; }; - 8E8DEE6F127E2B78005EF64D /* irrString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE52127E2B78005EF64D /* irrString.h */; }; - 8E8DEE70127E2B78005EF64D /* irrTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE53127E2B78005EF64D /* irrTypes.h */; }; - 8E8DEE71127E2B78005EF64D /* irrXML.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE54127E2B78005EF64D /* irrXML.cpp */; }; - 8E8DEE72127E2B78005EF64D /* irrXML.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE55127E2B78005EF64D /* irrXML.h */; }; - 8E8DEE73127E2B78005EF64D /* crypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE57127E2B78005EF64D /* crypt.h */; }; - 8E8DEE74127E2B78005EF64D /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE58127E2B78005EF64D /* ioapi.c */; }; - 8E8DEE75127E2B78005EF64D /* ioapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE59127E2B78005EF64D /* ioapi.h */; }; - 8E8DEE76127E2B78005EF64D /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE5A127E2B78005EF64D /* unzip.c */; }; - 8E8DEE77127E2B78005EF64D /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE5B127E2B78005EF64D /* unzip.h */; }; - 8E8DEE78127E2B78005EF64D /* ConvertUTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE4B127E2B78005EF64D /* ConvertUTF.c */; }; - 8E8DEE79127E2B78005EF64D /* ConvertUTF.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE4C127E2B78005EF64D /* ConvertUTF.h */; }; - 8E8DEE7A127E2B78005EF64D /* CXMLReaderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE4F127E2B78005EF64D /* CXMLReaderImpl.h */; }; - 8E8DEE7B127E2B78005EF64D /* heapsort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE50127E2B78005EF64D /* heapsort.h */; }; - 8E8DEE7C127E2B78005EF64D /* irrArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE51127E2B78005EF64D /* irrArray.h */; }; - 8E8DEE7D127E2B78005EF64D /* irrString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE52127E2B78005EF64D /* irrString.h */; }; - 8E8DEE7E127E2B78005EF64D /* irrTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE53127E2B78005EF64D /* irrTypes.h */; }; - 8E8DEE7F127E2B78005EF64D /* irrXML.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE54127E2B78005EF64D /* irrXML.cpp */; }; - 8E8DEE80127E2B78005EF64D /* irrXML.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE55127E2B78005EF64D /* irrXML.h */; }; - 8E8DEE81127E2B78005EF64D /* crypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE57127E2B78005EF64D /* crypt.h */; }; - 8E8DEE82127E2B78005EF64D /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE58127E2B78005EF64D /* ioapi.c */; }; - 8E8DEE83127E2B78005EF64D /* ioapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE59127E2B78005EF64D /* ioapi.h */; }; - 8E8DEE84127E2B78005EF64D /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE5A127E2B78005EF64D /* unzip.c */; }; - 8E8DEE85127E2B78005EF64D /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE5B127E2B78005EF64D /* unzip.h */; }; - 8E8DEE86127E2B78005EF64D /* ConvertUTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE4B127E2B78005EF64D /* ConvertUTF.c */; }; - 8E8DEE87127E2B78005EF64D /* ConvertUTF.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE4C127E2B78005EF64D /* ConvertUTF.h */; }; - 8E8DEE88127E2B78005EF64D /* CXMLReaderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE4F127E2B78005EF64D /* CXMLReaderImpl.h */; }; - 8E8DEE89127E2B78005EF64D /* heapsort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE50127E2B78005EF64D /* heapsort.h */; }; - 8E8DEE8A127E2B78005EF64D /* irrArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE51127E2B78005EF64D /* irrArray.h */; }; - 8E8DEE8B127E2B78005EF64D /* irrString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE52127E2B78005EF64D /* irrString.h */; }; - 8E8DEE8C127E2B78005EF64D /* irrTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE53127E2B78005EF64D /* irrTypes.h */; }; - 8E8DEE8D127E2B78005EF64D /* irrXML.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE54127E2B78005EF64D /* irrXML.cpp */; }; - 8E8DEE8E127E2B78005EF64D /* irrXML.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE55127E2B78005EF64D /* irrXML.h */; }; - 8E8DEE8F127E2B78005EF64D /* crypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE57127E2B78005EF64D /* crypt.h */; }; - 8E8DEE90127E2B78005EF64D /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE58127E2B78005EF64D /* ioapi.c */; }; - 8E8DEE91127E2B78005EF64D /* ioapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE59127E2B78005EF64D /* ioapi.h */; }; - 8E8DEE92127E2B78005EF64D /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE5A127E2B78005EF64D /* unzip.c */; }; - 8E8DEE93127E2B78005EF64D /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE5B127E2B78005EF64D /* unzip.h */; }; - B91974D1163AEA54009C397B /* 3DSHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A880E4B716800207D74 /* 3DSHelper.h */; }; - B91974D2163AEA54009C397B /* 3DSLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A8A0E4B716800207D74 /* 3DSLoader.h */; }; - B91974D3163AEA54009C397B /* ASELoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A8F0E4B716800207D74 /* ASELoader.h */; }; - B91974D4163AEA54009C397B /* ASEParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A910E4B716800207D74 /* ASEParser.h */; }; - B91974E0163AEA54009C397B /* HalfLifeFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AA90E4B716800207D74 /* HalfLifeFileData.h */; }; - B91974E1163AEA54009C397B /* HMPLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AAC0E4B716800207D74 /* HMPLoader.h */; }; - B91974E6163AEA54009C397B /* MD2FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AB80E4B716800207D74 /* MD2FileData.h */; }; - B91974E7163AEA54009C397B /* MD2Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABA0E4B716800207D74 /* MD2Loader.h */; }; - B91974E8163AEA54009C397B /* MD2NormalTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABB0E4B716800207D74 /* MD2NormalTable.h */; }; - B91974E9163AEA54009C397B /* MD3FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABC0E4B716800207D74 /* MD3FileData.h */; }; - B91974EA163AEA54009C397B /* MD3Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABE0E4B716800207D74 /* MD3Loader.h */; }; - B91974EB163AEA54009C397B /* MD5Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC30E4B716800207D74 /* MD5Loader.h */; }; - B91974EC163AEA54009C397B /* MD5Parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC50E4B716800207D74 /* MD5Parser.h */; }; - B91974ED163AEA54009C397B /* MDLDefaultColorMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC60E4B716800207D74 /* MDLDefaultColorMap.h */; }; - B91974EE163AEA54009C397B /* MDLFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC70E4B716800207D74 /* MDLFileData.h */; }; - B91974EF163AEA54009C397B /* MDLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC90E4B716800207D74 /* MDLLoader.h */; }; - B91974F6163AEA54009C397B /* PlyLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AD50E4B716800207D74 /* PlyLoader.h */; }; - B91974F7163AEA54009C397B /* PlyParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AD70E4B716800207D74 /* PlyParser.h */; }; - B91974FC163AEA54009C397B /* SMDLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AE30E4B716800207D74 /* SMDLoader.h */; }; - B9197506163AEA54009C397B /* XFileHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF40E4B716800207D74 /* XFileHelper.h */; }; - B9197507163AEA54009C397B /* XFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF60E4B716800207D74 /* XFileImporter.h */; }; - B9197508163AEA54009C397B /* XFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF80E4B716800207D74 /* XFileParser.h */; }; - B9197509163AEA54009C397B /* MDCFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AB0E50D67A00606590 /* MDCFileData.h */; }; - B919750A163AEA54009C397B /* MDCLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AD0E50D67A00606590 /* MDCLoader.h */; }; - B919750B163AEA54009C397B /* MDCNormalTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AE0E50D67A00606590 /* MDCNormalTable.h */; }; - B919750D163AEA54009C397B /* LWOFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3B70E50D6DB00606590 /* LWOFileData.h */; }; - B919750E163AEA54009C397B /* LWOLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3B90E50D6DB00606590 /* LWOLoader.h */; }; - B919750F163AEA54009C397B /* HMPFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3C50E50D77900606590 /* HMPFileData.h */; }; - B9197512163AEA54009C397B /* ACLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFD10F5DD87000124155 /* ACLoader.h */; }; - B9197513163AEA54009C397B /* IRRLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDA0F5DD90800124155 /* IRRLoader.h */; }; - B9197514163AEA54009C397B /* IRRMeshLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDC0F5DD90800124155 /* IRRMeshLoader.h */; }; - B9197515163AEA54009C397B /* IRRShared.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDE0F5DD90800124155 /* IRRShared.h */; }; - B9197519163AEA54009C397B /* NFFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFF50F5DD96100124155 /* NFFLoader.h */; }; - B919751B163AEA54009C397B /* Q3DLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0070F5DD9DD00124155 /* Q3DLoader.h */; }; - B919751C163AEA54009C397B /* BVHLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB00C0F5DD9F400124155 /* BVHLoader.h */; }; - B919751D163AEA54009C397B /* OFFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0130F5DDA1400124155 /* OFFLoader.h */; }; - B919751E163AEA54009C397B /* RawLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB01B0F5DDA4400124155 /* RawLoader.h */; }; - B919751F163AEA54009C397B /* DXFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0210F5DDA5700124155 /* DXFLoader.h */; }; - B9197520163AEA54009C397B /* TerragenLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB02F0F5DDAB500124155 /* TerragenLoader.h */; }; - B9197521163AEA54009C397B /* irrXMLWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0360F5DDB1B00124155 /* irrXMLWrapper.h */; }; - B919752D163AEA54009C397B /* B3DImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0870F5DDE0700124155 /* B3DImporter.h */; }; - B9197535163AEA54009C397B /* CSMLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B14F11416D5E00BCD793 /* CSMLoader.h */; }; - B9197536163AEA54009C397B /* LWSLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B15A11416DDD00BCD793 /* LWSLoader.h */; }; - B9197537163AEA54009C397B /* LWOAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B16411416DF400BCD793 /* LWOAnimation.h */; }; - B9197538163AEA54009C397B /* MS3DLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B17111416E2500BCD793 /* MS3DLoader.h */; }; - B9197539163AEA54009C397B /* UnrealLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7411B18C11416EBC00BCD793 /* UnrealLoader.h */; }; - B9197545163AEA54009C397B /* BlenderDNA.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4A11ACBB1000AF885C /* BlenderDNA.h */; }; - B9197546163AEA54009C397B /* BlenderLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4D11ACBB1000AF885C /* BlenderLoader.h */; }; - B9197547163AEA54009C397B /* BlenderScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB4F11ACBB1000AF885C /* BlenderScene.h */; }; - B9197548163AEA54009C397B /* BlenderSceneGen.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB5011ACBB1000AF885C /* BlenderSceneGen.h */; }; - B919754D163AEA54009C397B /* AssimpPCH.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB8711ACBB9900AF885C /* AssimpPCH.h */; }; - B919754E163AEA54009C397B /* COBLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB9411ACBBBC00AF885C /* COBLoader.h */; }; - B919754F163AEA54009C397B /* COBScene.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BB9511ACBBBC00AF885C /* COBScene.h */; }; - B9197550163AEA54009C397B /* revision.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C9BBB311ACBC2600AF885C /* revision.h */; }; - B9197555163AEA54009C397B /* Q3BSPFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA1127E0F1A00512ED1 /* Q3BSPFileData.h */; }; - B9197556163AEA54009C397B /* Q3BSPFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA3127E0F1A00512ED1 /* Q3BSPFileImporter.h */; }; - B9197557163AEA54009C397B /* Q3BSPFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA5127E0F1A00512ED1 /* Q3BSPFileParser.h */; }; - B9197558163AEA54009C397B /* Q3BSPZipArchive.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBA7127E0F1A00512ED1 /* Q3BSPZipArchive.h */; }; - B9197559163AEA54009C397B /* NDOLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBC5127E0F2A00512ED1 /* NDOLoader.h */; }; - B919755A163AEA54009C397B /* BlenderIntermediate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBCE127E0F3800512ED1 /* BlenderIntermediate.h */; }; - B919755B163AEA54009C397B /* BlenderModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7ABBD0127E0F3800512ED1 /* BlenderModifier.h */; }; - B9197560163AEA54009C397B /* ConvertUTF.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE4C127E2B78005EF64D /* ConvertUTF.h */; }; - B9197561163AEA54009C397B /* CXMLReaderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE4F127E2B78005EF64D /* CXMLReaderImpl.h */; }; - B9197562163AEA54009C397B /* heapsort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE50127E2B78005EF64D /* heapsort.h */; }; - B9197563163AEA54009C397B /* irrArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE51127E2B78005EF64D /* irrArray.h */; }; - B9197564163AEA54009C397B /* irrString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE52127E2B78005EF64D /* irrString.h */; }; - B9197565163AEA54009C397B /* irrTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE53127E2B78005EF64D /* irrTypes.h */; }; - B9197566163AEA54009C397B /* irrXML.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE55127E2B78005EF64D /* irrXML.h */; }; - B9197567163AEA54009C397B /* crypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE57127E2B78005EF64D /* crypt.h */; }; - B9197568163AEA54009C397B /* ioapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE59127E2B78005EF64D /* ioapi.h */; }; - B9197569163AEA54009C397B /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8DEE5B127E2B78005EF64D /* unzip.h */; }; - B919756A163AEA54009C397B /* anim.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B751543268400E63FFE /* anim.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B919756B163AEA54009C397B /* camera.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B771543268400E63FFE /* camera.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B919756C163AEA54009C397B /* cexport.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B781543268400E63FFE /* cexport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B919756D163AEA54009C397B /* cfileio.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B791543268400E63FFE /* cfileio.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B919756E163AEA54009C397B /* cimport.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7A1543268400E63FFE /* cimport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B919756F163AEA54009C397B /* color4.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7B1543268400E63FFE /* color4.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197570163AEA54009C397B /* poppack1.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7E1543268400E63FFE /* poppack1.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197571163AEA54009C397B /* pushpack1.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7F1543268400E63FFE /* pushpack1.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197572163AEA54009C397B /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B801543268400E63FFE /* config.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197573163AEA54009C397B /* DefaultLogger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B811543268400E63FFE /* DefaultLogger.hpp */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197574163AEA54009C397B /* defs.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B821543268400E63FFE /* defs.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197575163AEA54009C397B /* Exporter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B831543268400E63FFE /* Exporter.hpp */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197576163AEA54009C397B /* Importer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B841543268400E63FFE /* Importer.hpp */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197577163AEA54009C397B /* importerdesc.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B851543268400E63FFE /* importerdesc.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197578163AEA54009C397B /* IOStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B861543268400E63FFE /* IOStream.hpp */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197579163AEA54009C397B /* IOSystem.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B871543268400E63FFE /* IOSystem.hpp */; settings = {ATTRIBUTES = (Public, ); }; }; - B919757A163AEA54009C397B /* light.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B881543268400E63FFE /* light.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B919757B163AEA54009C397B /* Logger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B891543268400E63FFE /* Logger.hpp */; settings = {ATTRIBUTES = (Public, ); }; }; - B919757C163AEA54009C397B /* LogStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8A1543268400E63FFE /* LogStream.hpp */; settings = {ATTRIBUTES = (Public, ); }; }; - B919757D163AEA54009C397B /* material.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8B1543268400E63FFE /* material.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B919757E163AEA54009C397B /* matrix3x3.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8D1543268400E63FFE /* matrix3x3.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B919757F163AEA54009C397B /* matrix4x4.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8F1543268400E63FFE /* matrix4x4.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197580163AEA54009C397B /* mesh.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B911543268400E63FFE /* mesh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197581163AEA54009C397B /* NullLogger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B921543268400E63FFE /* NullLogger.hpp */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197582163AEA54009C397B /* postprocess.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B931543268400E63FFE /* postprocess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197583163AEA54009C397B /* ProgressHandler.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B941543268400E63FFE /* ProgressHandler.hpp */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197584163AEA54009C397B /* quaternion.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B951543268400E63FFE /* quaternion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197585163AEA54009C397B /* scene.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B971543268400E63FFE /* scene.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197586163AEA54009C397B /* texture.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B981543268400E63FFE /* texture.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197587163AEA54009C397B /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B991543268400E63FFE /* types.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197588163AEA54009C397B /* vector2.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9A1543268400E63FFE /* vector2.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9197589163AEA54009C397B /* vector3.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9C1543268400E63FFE /* vector3.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B919758A163AEA54009C397B /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9E1543268400E63FFE /* version.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B919758B163AEA54009C397B /* OgreImporter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8C36154328B600E63FFE /* OgreImporter.hpp */; }; - B919758C163AEA54009C397B /* OgreXmlHelper.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8C3A154328B600E63FFE /* OgreXmlHelper.hpp */; }; - B9197596163AEA54009C397B /* PlyExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = F99A9F3115436269000682F3 /* PlyExporter.h */; }; - B919759C163AEA54009C397B /* crc32.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704B154366AB004D91DD /* crc32.h */; }; - B919759D163AEA54009C397B /* deflate.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704D154366AB004D91DD /* deflate.h */; }; - B919759E163AEA54009C397B /* inffast.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704F154366AB004D91DD /* inffast.h */; }; - B919759F163AEA54009C397B /* inffixed.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607050154366AB004D91DD /* inffixed.h */; }; - B91975A0163AEA54009C397B /* inflate.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607052154366AB004D91DD /* inflate.h */; }; - B91975A1163AEA54009C397B /* inftrees.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607054154366AB004D91DD /* inftrees.h */; }; - B91975A2163AEA54009C397B /* trees.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607057154366AB004D91DD /* trees.h */; }; - B91975A3163AEA54009C397B /* zconf.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607058154366AB004D91DD /* zconf.h */; }; - B91975A4163AEA54009C397B /* zconf.in.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607059154366AB004D91DD /* zconf.in.h */; }; - B91975A5163AEA54009C397B /* zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = F960705A154366AB004D91DD /* zlib.h */; }; - B91975A6163AEA54009C397B /* zutil.h in Headers */ = {isa = PBXBuildFile; fileRef = F960705C154366AB004D91DD /* zutil.h */; }; - B91975A7163AEA54009C397B /* XGLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070B6154366ED004D91DD /* XGLLoader.h */; }; - B91975A8163AEA54009C397B /* clipper.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F96070C61543673B004D91DD /* clipper.hpp */; }; - B91975A9163AEA54009C397B /* shapes.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D31543675E004D91DD /* shapes.h */; }; - B91975AA163AEA54009C397B /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D41543675E004D91DD /* utils.h */; }; - B91975AB163AEA54009C397B /* poly2tri.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D51543675E004D91DD /* poly2tri.h */; }; - B91975AC163AEA54009C397B /* advancing_front.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D81543675E004D91DD /* advancing_front.h */; }; - B91975AD163AEA54009C397B /* cdt.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DA1543675E004D91DD /* cdt.h */; }; - B91975AE163AEA54009C397B /* sweep.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DC1543675E004D91DD /* sweep.h */; }; - B91975AF163AEA54009C397B /* sweep_context.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DE1543675E004D91DD /* sweep_context.h */; }; - B91975B0163AEA54009C397B /* ai_assert.h in Headers */ = {isa = PBXBuildFile; fileRef = F97BA03515439DB3009EB9DD /* ai_assert.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B91975B7163AEA54009C397B /* 3DSConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A860E4B716800207D74 /* 3DSConverter.cpp */; }; - B91975B8163AEA54009C397B /* 3DSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A890E4B716800207D74 /* 3DSLoader.cpp */; }; - B91975B9163AEA54009C397B /* ASELoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A8E0E4B716800207D74 /* ASELoader.cpp */; }; - B91975BA163AEA54009C397B /* ASEParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A900E4B716800207D74 /* ASEParser.cpp */; }; - B91975C4163AEA54009C397B /* HMPLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AAB0E4B716800207D74 /* HMPLoader.cpp */; }; - B91975CA163AEA54009C397B /* MD2Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AB90E4B716800207D74 /* MD2Loader.cpp */; }; - B91975CB163AEA54009C397B /* MD3Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45ABD0E4B716800207D74 /* MD3Loader.cpp */; }; - B91975CC163AEA54009C397B /* MD5Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC20E4B716800207D74 /* MD5Loader.cpp */; }; - B91975CD163AEA54009C397B /* MD5Parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC40E4B716800207D74 /* MD5Parser.cpp */; }; - B91975CE163AEA54009C397B /* MDLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC80E4B716800207D74 /* MDLLoader.cpp */; }; - B91975CF163AEA54009C397B /* MDLMaterialLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45ACA0E4B716800207D74 /* MDLMaterialLoader.cpp */; }; - B91975D3163AEA54009C397B /* PlyLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AD40E4B716800207D74 /* PlyLoader.cpp */; }; - B91975D4163AEA54009C397B /* PlyParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AD60E4B716800207D74 /* PlyParser.cpp */; }; - B91975D8163AEA54009C397B /* SMDLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AE20E4B716800207D74 /* SMDLoader.cpp */; }; - B91975E0163AEA54009C397B /* XFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AF50E4B716800207D74 /* XFileImporter.cpp */; }; - B91975E1163AEA54009C397B /* XFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AF70E4B716800207D74 /* XFileParser.cpp */; }; - B91975E2163AEA54009C397B /* MDCLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A3AC0E50D67A00606590 /* MDCLoader.cpp */; }; - B91975E4163AEA54009C397B /* LWOLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A3B80E50D6DB00606590 /* LWOLoader.cpp */; }; - B91975E6163AEA54009C397B /* LWOMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A7DC0E53715F00606590 /* LWOMaterial.cpp */; }; - B91975E7163AEA54009C397B /* ACLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFD00F5DD87000124155 /* ACLoader.cpp */; }; - B91975E8163AEA54009C397B /* IRRLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFD90F5DD90800124155 /* IRRLoader.cpp */; }; - B91975E9163AEA54009C397B /* IRRMeshLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFDB0F5DD90800124155 /* IRRMeshLoader.cpp */; }; - B91975EA163AEA54009C397B /* IRRShared.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFDD0F5DD90800124155 /* IRRShared.cpp */; }; - B91975ED163AEA54009C397B /* NFFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFF60F5DD96100124155 /* NFFLoader.cpp */; }; - B91975EF163AEA54009C397B /* Q3DLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0060F5DD9DD00124155 /* Q3DLoader.cpp */; }; - B91975F0163AEA54009C397B /* BVHLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB00D0F5DD9F400124155 /* BVHLoader.cpp */; }; - B91975F1163AEA54009C397B /* OFFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0140F5DDA1400124155 /* OFFLoader.cpp */; }; - B91975F2163AEA54009C397B /* RawLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB01C0F5DDA4400124155 /* RawLoader.cpp */; }; - B91975F3163AEA54009C397B /* DXFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0220F5DDA5700124155 /* DXFLoader.cpp */; }; - B91975F4163AEA54009C397B /* LWOBLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0270F5DDA9200124155 /* LWOBLoader.cpp */; }; - B91975F5163AEA54009C397B /* TerragenLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0300F5DDAB500124155 /* TerragenLoader.cpp */; }; - B9197600163AEA54009C397B /* B3DImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0880F5DDE0700124155 /* B3DImporter.cpp */; }; - B9197601163AEA54009C397B /* CSMLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B14E11416D5E00BCD793 /* CSMLoader.cpp */; }; - B9197602163AEA54009C397B /* LWSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B15911416DDD00BCD793 /* LWSLoader.cpp */; }; - B9197603163AEA54009C397B /* LWOAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B16311416DF400BCD793 /* LWOAnimation.cpp */; }; - B9197604163AEA54009C397B /* MS3DLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B17011416E2500BCD793 /* MS3DLoader.cpp */; }; - B9197605163AEA54009C397B /* UnrealLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7411B18B11416EBC00BCD793 /* UnrealLoader.cpp */; }; - B919760A163AEA54009C397B /* BlenderDNA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4911ACBB1000AF885C /* BlenderDNA.cpp */; }; - B919760B163AEA54009C397B /* BlenderLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4C11ACBB1000AF885C /* BlenderLoader.cpp */; }; - B919760C163AEA54009C397B /* BlenderScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB4E11ACBB1000AF885C /* BlenderScene.cpp */; }; - B919760E163AEA54009C397B /* AssimpPCH.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB8611ACBB9900AF885C /* AssimpPCH.cpp */; }; - B919760F163AEA54009C397B /* COBLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C9BB9311ACBBBC00AF885C /* COBLoader.cpp */; }; - B9197610163AEA54009C397B /* Q3BSPFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA2127E0F1A00512ED1 /* Q3BSPFileImporter.cpp */; }; - B9197611163AEA54009C397B /* Q3BSPFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA4127E0F1A00512ED1 /* Q3BSPFileParser.cpp */; }; - B9197612163AEA54009C397B /* Q3BSPZipArchive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBA6127E0F1A00512ED1 /* Q3BSPZipArchive.cpp */; }; - B9197613163AEA54009C397B /* NDOLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBC4127E0F2A00512ED1 /* NDOLoader.cpp */; }; - B9197614163AEA54009C397B /* BlenderModifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E7ABBCF127E0F3800512ED1 /* BlenderModifier.cpp */; }; - B9197615163AEA54009C397B /* ConvertUTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE4B127E2B78005EF64D /* ConvertUTF.c */; }; - B9197616163AEA54009C397B /* irrXML.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE54127E2B78005EF64D /* irrXML.cpp */; }; - B9197617163AEA54009C397B /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE58127E2B78005EF64D /* ioapi.c */; }; - B9197618163AEA54009C397B /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E8DEE5A127E2B78005EF64D /* unzip.c */; }; - B9197619163AEA54009C397B /* OgreImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C35154328B600E63FFE /* OgreImporter.cpp */; }; - B919761A163AEA54009C397B /* OgreMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C37154328B600E63FFE /* OgreMaterial.cpp */; }; - B919761B163AEA54009C397B /* OgreMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C38154328B600E63FFE /* OgreMesh.cpp */; }; - B919761C163AEA54009C397B /* OgreSkeleton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C39154328B600E63FFE /* OgreSkeleton.cpp */; }; - B9197620163AEA54009C397B /* PlyExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99A9F3015436269000682F3 /* PlyExporter.cpp */; }; - B9197625163AEA54009C397B /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607047154366AB004D91DD /* adler32.c */; }; - B9197626163AEA54009C397B /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607049154366AB004D91DD /* compress.c */; }; - B9197627163AEA54009C397B /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704A154366AB004D91DD /* crc32.c */; }; - B9197628163AEA54009C397B /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704C154366AB004D91DD /* deflate.c */; }; - B9197629163AEA54009C397B /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704E154366AB004D91DD /* inffast.c */; }; - B919762A163AEA54009C397B /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607051154366AB004D91DD /* inflate.c */; }; - B919762B163AEA54009C397B /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607053154366AB004D91DD /* inftrees.c */; }; - B919762C163AEA54009C397B /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607056154366AB004D91DD /* trees.c */; }; - B919762D163AEA54009C397B /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = F960705B154366AB004D91DD /* zutil.c */; }; - B919762E163AEA54009C397B /* XGLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F96070B5154366ED004D91DD /* XGLLoader.cpp */; }; - B919762F163AEA54009C397B /* clipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F96070C51543673B004D91DD /* clipper.cpp */; }; - B9197630163AEA54009C397B /* shapes.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D21543675E004D91DD /* shapes.cc */; }; - B9197631163AEA54009C397B /* advancing_front.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D71543675E004D91DD /* advancing_front.cc */; }; - B9197632163AEA54009C397B /* cdt.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D91543675E004D91DD /* cdt.cc */; }; - B9197633163AEA54009C397B /* sweep.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070DB1543675E004D91DD /* sweep.cc */; }; - B9197634163AEA54009C397B /* sweep_context.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070DD1543675E004D91DD /* sweep_context.cc */; }; - F90BAFD20F5DD87000124155 /* ACLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFD00F5DD87000124155 /* ACLoader.cpp */; }; - F90BAFD30F5DD87000124155 /* ACLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFD10F5DD87000124155 /* ACLoader.h */; }; - F90BAFDF0F5DD90800124155 /* IRRLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFD90F5DD90800124155 /* IRRLoader.cpp */; }; - F90BAFE00F5DD90800124155 /* IRRLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDA0F5DD90800124155 /* IRRLoader.h */; }; - F90BAFE10F5DD90800124155 /* IRRMeshLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFDB0F5DD90800124155 /* IRRMeshLoader.cpp */; }; - F90BAFE20F5DD90800124155 /* IRRMeshLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDC0F5DD90800124155 /* IRRMeshLoader.h */; }; - F90BAFE30F5DD90800124155 /* IRRShared.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFDD0F5DD90800124155 /* IRRShared.cpp */; }; - F90BAFE40F5DD90800124155 /* IRRShared.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDE0F5DD90800124155 /* IRRShared.h */; }; - F90BAFF70F5DD96100124155 /* NFFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFF50F5DD96100124155 /* NFFLoader.h */; }; - F90BAFF80F5DD96100124155 /* NFFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFF60F5DD96100124155 /* NFFLoader.cpp */; }; - F90BB0080F5DD9DD00124155 /* Q3DLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0060F5DD9DD00124155 /* Q3DLoader.cpp */; }; - F90BB0090F5DD9DD00124155 /* Q3DLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0070F5DD9DD00124155 /* Q3DLoader.h */; }; - F90BB00E0F5DD9F400124155 /* BVHLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB00C0F5DD9F400124155 /* BVHLoader.h */; }; - F90BB00F0F5DD9F400124155 /* BVHLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB00D0F5DD9F400124155 /* BVHLoader.cpp */; }; - F90BB0150F5DDA1400124155 /* OFFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0130F5DDA1400124155 /* OFFLoader.h */; }; - F90BB0160F5DDA1400124155 /* OFFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0140F5DDA1400124155 /* OFFLoader.cpp */; }; - F90BB01D0F5DDA4400124155 /* RawLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB01B0F5DDA4400124155 /* RawLoader.h */; }; - F90BB01E0F5DDA4400124155 /* RawLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB01C0F5DDA4400124155 /* RawLoader.cpp */; }; - F90BB0230F5DDA5700124155 /* DXFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0210F5DDA5700124155 /* DXFLoader.h */; }; - F90BB0240F5DDA5700124155 /* DXFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0220F5DDA5700124155 /* DXFLoader.cpp */; }; - F90BB0280F5DDA9200124155 /* LWOBLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0270F5DDA9200124155 /* LWOBLoader.cpp */; }; - F90BB0310F5DDAB500124155 /* TerragenLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB02F0F5DDAB500124155 /* TerragenLoader.h */; }; - F90BB0320F5DDAB500124155 /* TerragenLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0300F5DDAB500124155 /* TerragenLoader.cpp */; }; - F90BB0370F5DDB1B00124155 /* irrXMLWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0360F5DDB1B00124155 /* irrXMLWrapper.h */; }; - F90BB0890F5DDE0700124155 /* B3DImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0870F5DDE0700124155 /* B3DImporter.h */; }; - F90BB08A0F5DDE0700124155 /* B3DImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0880F5DDE0700124155 /* B3DImporter.cpp */; }; - F960705D154366AB004D91DD /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607047154366AB004D91DD /* adler32.c */; }; - F960705E154366AB004D91DD /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607049154366AB004D91DD /* compress.c */; }; - F960705F154366AB004D91DD /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704A154366AB004D91DD /* crc32.c */; }; - F9607060154366AB004D91DD /* crc32.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704B154366AB004D91DD /* crc32.h */; }; - F9607061154366AB004D91DD /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704C154366AB004D91DD /* deflate.c */; }; - F9607062154366AB004D91DD /* deflate.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704D154366AB004D91DD /* deflate.h */; }; - F9607063154366AB004D91DD /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704E154366AB004D91DD /* inffast.c */; }; - F9607064154366AB004D91DD /* inffast.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704F154366AB004D91DD /* inffast.h */; }; - F9607065154366AB004D91DD /* inffixed.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607050154366AB004D91DD /* inffixed.h */; }; - F9607066154366AB004D91DD /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607051154366AB004D91DD /* inflate.c */; }; - F9607067154366AB004D91DD /* inflate.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607052154366AB004D91DD /* inflate.h */; }; - F9607068154366AB004D91DD /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607053154366AB004D91DD /* inftrees.c */; }; - F9607069154366AB004D91DD /* inftrees.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607054154366AB004D91DD /* inftrees.h */; }; - F960706A154366AB004D91DD /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607056154366AB004D91DD /* trees.c */; }; - F960706B154366AB004D91DD /* trees.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607057154366AB004D91DD /* trees.h */; }; - F960706C154366AB004D91DD /* zconf.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607058154366AB004D91DD /* zconf.h */; }; - F960706D154366AB004D91DD /* zconf.in.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607059154366AB004D91DD /* zconf.in.h */; }; - F960706E154366AB004D91DD /* zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = F960705A154366AB004D91DD /* zlib.h */; }; - F960706F154366AB004D91DD /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = F960705B154366AB004D91DD /* zutil.c */; }; - F9607070154366AB004D91DD /* zutil.h in Headers */ = {isa = PBXBuildFile; fileRef = F960705C154366AB004D91DD /* zutil.h */; }; - F9607071154366AB004D91DD /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607047154366AB004D91DD /* adler32.c */; }; - F9607072154366AB004D91DD /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607049154366AB004D91DD /* compress.c */; }; - F9607073154366AB004D91DD /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704A154366AB004D91DD /* crc32.c */; }; - F9607074154366AB004D91DD /* crc32.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704B154366AB004D91DD /* crc32.h */; }; - F9607075154366AB004D91DD /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704C154366AB004D91DD /* deflate.c */; }; - F9607076154366AB004D91DD /* deflate.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704D154366AB004D91DD /* deflate.h */; }; - F9607077154366AB004D91DD /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704E154366AB004D91DD /* inffast.c */; }; - F9607078154366AB004D91DD /* inffast.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704F154366AB004D91DD /* inffast.h */; }; - F9607079154366AB004D91DD /* inffixed.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607050154366AB004D91DD /* inffixed.h */; }; - F960707A154366AB004D91DD /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607051154366AB004D91DD /* inflate.c */; }; - F960707B154366AB004D91DD /* inflate.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607052154366AB004D91DD /* inflate.h */; }; - F960707C154366AB004D91DD /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607053154366AB004D91DD /* inftrees.c */; }; - F960707D154366AB004D91DD /* inftrees.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607054154366AB004D91DD /* inftrees.h */; }; - F960707E154366AB004D91DD /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607056154366AB004D91DD /* trees.c */; }; - F960707F154366AB004D91DD /* trees.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607057154366AB004D91DD /* trees.h */; }; - F9607080154366AB004D91DD /* zconf.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607058154366AB004D91DD /* zconf.h */; }; - F9607081154366AB004D91DD /* zconf.in.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607059154366AB004D91DD /* zconf.in.h */; }; - F9607082154366AB004D91DD /* zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = F960705A154366AB004D91DD /* zlib.h */; }; - F9607083154366AB004D91DD /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = F960705B154366AB004D91DD /* zutil.c */; }; - F9607084154366AB004D91DD /* zutil.h in Headers */ = {isa = PBXBuildFile; fileRef = F960705C154366AB004D91DD /* zutil.h */; }; - F9607085154366AB004D91DD /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607047154366AB004D91DD /* adler32.c */; }; - F9607086154366AB004D91DD /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607049154366AB004D91DD /* compress.c */; }; - F9607087154366AB004D91DD /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704A154366AB004D91DD /* crc32.c */; }; - F9607088154366AB004D91DD /* crc32.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704B154366AB004D91DD /* crc32.h */; }; - F9607089154366AB004D91DD /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704C154366AB004D91DD /* deflate.c */; }; - F960708A154366AB004D91DD /* deflate.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704D154366AB004D91DD /* deflate.h */; }; - F960708B154366AB004D91DD /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704E154366AB004D91DD /* inffast.c */; }; - F960708C154366AB004D91DD /* inffast.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704F154366AB004D91DD /* inffast.h */; }; - F960708D154366AB004D91DD /* inffixed.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607050154366AB004D91DD /* inffixed.h */; }; - F960708E154366AB004D91DD /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607051154366AB004D91DD /* inflate.c */; }; - F960708F154366AB004D91DD /* inflate.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607052154366AB004D91DD /* inflate.h */; }; - F9607090154366AB004D91DD /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607053154366AB004D91DD /* inftrees.c */; }; - F9607091154366AB004D91DD /* inftrees.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607054154366AB004D91DD /* inftrees.h */; }; - F9607092154366AB004D91DD /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607056154366AB004D91DD /* trees.c */; }; - F9607093154366AB004D91DD /* trees.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607057154366AB004D91DD /* trees.h */; }; - F9607094154366AB004D91DD /* zconf.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607058154366AB004D91DD /* zconf.h */; }; - F9607095154366AB004D91DD /* zconf.in.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607059154366AB004D91DD /* zconf.in.h */; }; - F9607096154366AB004D91DD /* zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = F960705A154366AB004D91DD /* zlib.h */; }; - F9607097154366AB004D91DD /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = F960705B154366AB004D91DD /* zutil.c */; }; - F9607098154366AB004D91DD /* zutil.h in Headers */ = {isa = PBXBuildFile; fileRef = F960705C154366AB004D91DD /* zutil.h */; }; - F9607099154366AB004D91DD /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607047154366AB004D91DD /* adler32.c */; }; - F960709A154366AB004D91DD /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607049154366AB004D91DD /* compress.c */; }; - F960709B154366AB004D91DD /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704A154366AB004D91DD /* crc32.c */; }; - F960709C154366AB004D91DD /* crc32.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704B154366AB004D91DD /* crc32.h */; }; - F960709D154366AB004D91DD /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704C154366AB004D91DD /* deflate.c */; }; - F960709E154366AB004D91DD /* deflate.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704D154366AB004D91DD /* deflate.h */; }; - F960709F154366AB004D91DD /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = F960704E154366AB004D91DD /* inffast.c */; }; - F96070A0154366AB004D91DD /* inffast.h in Headers */ = {isa = PBXBuildFile; fileRef = F960704F154366AB004D91DD /* inffast.h */; }; - F96070A1154366AB004D91DD /* inffixed.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607050154366AB004D91DD /* inffixed.h */; }; - F96070A2154366AB004D91DD /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607051154366AB004D91DD /* inflate.c */; }; - F96070A3154366AB004D91DD /* inflate.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607052154366AB004D91DD /* inflate.h */; }; - F96070A4154366AB004D91DD /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607053154366AB004D91DD /* inftrees.c */; }; - F96070A5154366AB004D91DD /* inftrees.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607054154366AB004D91DD /* inftrees.h */; }; - F96070A6154366AB004D91DD /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = F9607056154366AB004D91DD /* trees.c */; }; - F96070A7154366AB004D91DD /* trees.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607057154366AB004D91DD /* trees.h */; }; - F96070A8154366AB004D91DD /* zconf.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607058154366AB004D91DD /* zconf.h */; }; - F96070A9154366AB004D91DD /* zconf.in.h in Headers */ = {isa = PBXBuildFile; fileRef = F9607059154366AB004D91DD /* zconf.in.h */; }; - F96070AA154366AB004D91DD /* zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = F960705A154366AB004D91DD /* zlib.h */; }; - F96070AB154366AB004D91DD /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = F960705B154366AB004D91DD /* zutil.c */; }; - F96070AC154366AB004D91DD /* zutil.h in Headers */ = {isa = PBXBuildFile; fileRef = F960705C154366AB004D91DD /* zutil.h */; }; - F96070B7154366ED004D91DD /* XGLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F96070B5154366ED004D91DD /* XGLLoader.cpp */; }; - F96070B8154366ED004D91DD /* XGLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070B6154366ED004D91DD /* XGLLoader.h */; }; - F96070B9154366ED004D91DD /* XGLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F96070B5154366ED004D91DD /* XGLLoader.cpp */; }; - F96070BA154366ED004D91DD /* XGLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070B6154366ED004D91DD /* XGLLoader.h */; }; - F96070BB154366ED004D91DD /* XGLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F96070B5154366ED004D91DD /* XGLLoader.cpp */; }; - F96070BC154366ED004D91DD /* XGLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070B6154366ED004D91DD /* XGLLoader.h */; }; - F96070BD154366ED004D91DD /* XGLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F96070B5154366ED004D91DD /* XGLLoader.cpp */; }; - F96070BE154366ED004D91DD /* XGLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070B6154366ED004D91DD /* XGLLoader.h */; }; - F96070C81543673B004D91DD /* clipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F96070C51543673B004D91DD /* clipper.cpp */; }; - F96070C91543673B004D91DD /* clipper.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F96070C61543673B004D91DD /* clipper.hpp */; }; - F96070CA1543673B004D91DD /* clipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F96070C51543673B004D91DD /* clipper.cpp */; }; - F96070CB1543673B004D91DD /* clipper.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F96070C61543673B004D91DD /* clipper.hpp */; }; - F96070CC1543673B004D91DD /* clipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F96070C51543673B004D91DD /* clipper.cpp */; }; - F96070CD1543673B004D91DD /* clipper.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F96070C61543673B004D91DD /* clipper.hpp */; }; - F96070CE1543673B004D91DD /* clipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F96070C51543673B004D91DD /* clipper.cpp */; }; - F96070CF1543673B004D91DD /* clipper.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F96070C61543673B004D91DD /* clipper.hpp */; }; - F96070DF1543675E004D91DD /* shapes.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D21543675E004D91DD /* shapes.cc */; }; - F96070E01543675E004D91DD /* shapes.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D31543675E004D91DD /* shapes.h */; }; - F96070E11543675E004D91DD /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D41543675E004D91DD /* utils.h */; }; - F96070E21543675E004D91DD /* poly2tri.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D51543675E004D91DD /* poly2tri.h */; }; - F96070E31543675E004D91DD /* advancing_front.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D71543675E004D91DD /* advancing_front.cc */; }; - F96070E41543675E004D91DD /* advancing_front.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D81543675E004D91DD /* advancing_front.h */; }; - F96070E51543675E004D91DD /* cdt.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D91543675E004D91DD /* cdt.cc */; }; - F96070E61543675E004D91DD /* cdt.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DA1543675E004D91DD /* cdt.h */; }; - F96070E71543675E004D91DD /* sweep.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070DB1543675E004D91DD /* sweep.cc */; }; - F96070E81543675E004D91DD /* sweep.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DC1543675E004D91DD /* sweep.h */; }; - F96070E91543675E004D91DD /* sweep_context.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070DD1543675E004D91DD /* sweep_context.cc */; }; - F96070EA1543675E004D91DD /* sweep_context.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DE1543675E004D91DD /* sweep_context.h */; }; - F96070EB1543675E004D91DD /* shapes.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D21543675E004D91DD /* shapes.cc */; }; - F96070EC1543675E004D91DD /* shapes.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D31543675E004D91DD /* shapes.h */; }; - F96070ED1543675E004D91DD /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D41543675E004D91DD /* utils.h */; }; - F96070EE1543675E004D91DD /* poly2tri.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D51543675E004D91DD /* poly2tri.h */; }; - F96070EF1543675E004D91DD /* advancing_front.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D71543675E004D91DD /* advancing_front.cc */; }; - F96070F01543675E004D91DD /* advancing_front.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D81543675E004D91DD /* advancing_front.h */; }; - F96070F11543675E004D91DD /* cdt.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D91543675E004D91DD /* cdt.cc */; }; - F96070F21543675E004D91DD /* cdt.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DA1543675E004D91DD /* cdt.h */; }; - F96070F31543675E004D91DD /* sweep.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070DB1543675E004D91DD /* sweep.cc */; }; - F96070F41543675E004D91DD /* sweep.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DC1543675E004D91DD /* sweep.h */; }; - F96070F51543675E004D91DD /* sweep_context.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070DD1543675E004D91DD /* sweep_context.cc */; }; - F96070F61543675E004D91DD /* sweep_context.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DE1543675E004D91DD /* sweep_context.h */; }; - F96070F71543675E004D91DD /* shapes.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D21543675E004D91DD /* shapes.cc */; }; - F96070F81543675E004D91DD /* shapes.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D31543675E004D91DD /* shapes.h */; }; - F96070F91543675E004D91DD /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D41543675E004D91DD /* utils.h */; }; - F96070FA1543675E004D91DD /* poly2tri.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D51543675E004D91DD /* poly2tri.h */; }; - F96070FB1543675E004D91DD /* advancing_front.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D71543675E004D91DD /* advancing_front.cc */; }; - F96070FC1543675E004D91DD /* advancing_front.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D81543675E004D91DD /* advancing_front.h */; }; - F96070FD1543675E004D91DD /* cdt.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D91543675E004D91DD /* cdt.cc */; }; - F96070FE1543675E004D91DD /* cdt.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DA1543675E004D91DD /* cdt.h */; }; - F96070FF1543675E004D91DD /* sweep.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070DB1543675E004D91DD /* sweep.cc */; }; - F96071001543675E004D91DD /* sweep.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DC1543675E004D91DD /* sweep.h */; }; - F96071011543675E004D91DD /* sweep_context.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070DD1543675E004D91DD /* sweep_context.cc */; }; - F96071021543675E004D91DD /* sweep_context.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DE1543675E004D91DD /* sweep_context.h */; }; - F96071031543675E004D91DD /* shapes.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D21543675E004D91DD /* shapes.cc */; }; - F96071041543675E004D91DD /* shapes.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D31543675E004D91DD /* shapes.h */; }; - F96071051543675E004D91DD /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D41543675E004D91DD /* utils.h */; }; - F96071061543675E004D91DD /* poly2tri.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D51543675E004D91DD /* poly2tri.h */; }; - F96071071543675E004D91DD /* advancing_front.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D71543675E004D91DD /* advancing_front.cc */; }; - F96071081543675E004D91DD /* advancing_front.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070D81543675E004D91DD /* advancing_front.h */; }; - F96071091543675E004D91DD /* cdt.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070D91543675E004D91DD /* cdt.cc */; }; - F960710A1543675E004D91DD /* cdt.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DA1543675E004D91DD /* cdt.h */; }; - F960710B1543675E004D91DD /* sweep.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070DB1543675E004D91DD /* sweep.cc */; }; - F960710C1543675E004D91DD /* sweep.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DC1543675E004D91DD /* sweep.h */; }; - F960710D1543675E004D91DD /* sweep_context.cc in Sources */ = {isa = PBXBuildFile; fileRef = F96070DD1543675E004D91DD /* sweep_context.cc */; }; - F960710E1543675E004D91DD /* sweep_context.h in Headers */ = {isa = PBXBuildFile; fileRef = F96070DE1543675E004D91DD /* sweep_context.h */; }; - F962E88B0F5DE6C8009A5495 /* 3DSConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A860E4B716800207D74 /* 3DSConverter.cpp */; }; - F962E88C0F5DE6C8009A5495 /* 3DSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A890E4B716800207D74 /* 3DSLoader.cpp */; }; - F962E88E0F5DE6C8009A5495 /* ASELoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A8E0E4B716800207D74 /* ASELoader.cpp */; }; - F962E88F0F5DE6C8009A5495 /* ASEParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45A900E4B716800207D74 /* ASEParser.cpp */; }; - F962E89A0F5DE6C8009A5495 /* HMPLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AAB0E4B716800207D74 /* HMPLoader.cpp */; }; - F962E8A00F5DE6C8009A5495 /* MD2Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AB90E4B716800207D74 /* MD2Loader.cpp */; }; - F962E8A10F5DE6C8009A5495 /* MD3Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45ABD0E4B716800207D74 /* MD3Loader.cpp */; }; - F962E8A20F5DE6C8009A5495 /* MD5Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC20E4B716800207D74 /* MD5Loader.cpp */; }; - F962E8A30F5DE6C8009A5495 /* MD5Parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC40E4B716800207D74 /* MD5Parser.cpp */; }; - F962E8A40F5DE6C8009A5495 /* MDLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AC80E4B716800207D74 /* MDLLoader.cpp */; }; - F962E8A50F5DE6C8009A5495 /* MDLMaterialLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45ACA0E4B716800207D74 /* MDLMaterialLoader.cpp */; }; - F962E8A90F5DE6C8009A5495 /* PlyLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AD40E4B716800207D74 /* PlyLoader.cpp */; }; - F962E8AA0F5DE6C8009A5495 /* PlyParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AD60E4B716800207D74 /* PlyParser.cpp */; }; - F962E8AE0F5DE6C8009A5495 /* SMDLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AE20E4B716800207D74 /* SMDLoader.cpp */; }; - F962E8B60F5DE6C8009A5495 /* XFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AF50E4B716800207D74 /* XFileImporter.cpp */; }; - F962E8B70F5DE6C8009A5495 /* XFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF45AF70E4B716800207D74 /* XFileParser.cpp */; }; - F962E8B80F5DE6C8009A5495 /* MDCLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A3AC0E50D67A00606590 /* MDCLoader.cpp */; }; - F962E8BA0F5DE6C8009A5495 /* LWOLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A3B80E50D6DB00606590 /* LWOLoader.cpp */; }; - F962E8BC0F5DE6C8009A5495 /* LWOMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AB8A7DC0E53715F00606590 /* LWOMaterial.cpp */; }; - F962E8BD0F5DE6C8009A5495 /* ACLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFD00F5DD87000124155 /* ACLoader.cpp */; }; - F962E8BE0F5DE6C8009A5495 /* IRRLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFD90F5DD90800124155 /* IRRLoader.cpp */; }; - F962E8BF0F5DE6C8009A5495 /* IRRMeshLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFDB0F5DD90800124155 /* IRRMeshLoader.cpp */; }; - F962E8C00F5DE6C8009A5495 /* IRRShared.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFDD0F5DD90800124155 /* IRRShared.cpp */; }; - F962E8C30F5DE6C8009A5495 /* NFFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BAFF60F5DD96100124155 /* NFFLoader.cpp */; }; - F962E8C50F5DE6C8009A5495 /* Q3DLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0060F5DD9DD00124155 /* Q3DLoader.cpp */; }; - F962E8C60F5DE6C8009A5495 /* BVHLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB00D0F5DD9F400124155 /* BVHLoader.cpp */; }; - F962E8C70F5DE6C8009A5495 /* OFFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0140F5DDA1400124155 /* OFFLoader.cpp */; }; - F962E8C80F5DE6C8009A5495 /* RawLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB01C0F5DDA4400124155 /* RawLoader.cpp */; }; - F962E8C90F5DE6C8009A5495 /* DXFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0220F5DDA5700124155 /* DXFLoader.cpp */; }; - F962E8CA0F5DE6C8009A5495 /* LWOBLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0270F5DDA9200124155 /* LWOBLoader.cpp */; }; - F962E8CB0F5DE6C8009A5495 /* TerragenLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0300F5DDAB500124155 /* TerragenLoader.cpp */; }; - F962E8D70F5DE6C8009A5495 /* B3DImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F90BB0880F5DDE0700124155 /* B3DImporter.cpp */; }; - F962E8ED0F5DE6E2009A5495 /* 3DSHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A880E4B716800207D74 /* 3DSHelper.h */; }; - F962E8EE0F5DE6E2009A5495 /* 3DSLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A8A0E4B716800207D74 /* 3DSLoader.h */; }; - F962E8EF0F5DE6E2009A5495 /* ASELoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A8F0E4B716800207D74 /* ASELoader.h */; }; - F962E8F00F5DE6E2009A5495 /* ASEParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45A910E4B716800207D74 /* ASEParser.h */; }; - F962E8FD0F5DE6E2009A5495 /* HalfLifeFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AA90E4B716800207D74 /* HalfLifeFileData.h */; }; - F962E8FE0F5DE6E2009A5495 /* HMPLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AAC0E4B716800207D74 /* HMPLoader.h */; }; - F962E9030F5DE6E2009A5495 /* MD2FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AB80E4B716800207D74 /* MD2FileData.h */; }; - F962E9040F5DE6E2009A5495 /* MD2Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABA0E4B716800207D74 /* MD2Loader.h */; }; - F962E9050F5DE6E2009A5495 /* MD2NormalTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABB0E4B716800207D74 /* MD2NormalTable.h */; }; - F962E9060F5DE6E2009A5495 /* MD3FileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABC0E4B716800207D74 /* MD3FileData.h */; }; - F962E9070F5DE6E2009A5495 /* MD3Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45ABE0E4B716800207D74 /* MD3Loader.h */; }; - F962E9080F5DE6E2009A5495 /* MD5Loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC30E4B716800207D74 /* MD5Loader.h */; }; - F962E9090F5DE6E2009A5495 /* MD5Parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC50E4B716800207D74 /* MD5Parser.h */; }; - F962E90A0F5DE6E2009A5495 /* MDLDefaultColorMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC60E4B716800207D74 /* MDLDefaultColorMap.h */; }; - F962E90B0F5DE6E2009A5495 /* MDLFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC70E4B716800207D74 /* MDLFileData.h */; }; - F962E90C0F5DE6E2009A5495 /* MDLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AC90E4B716800207D74 /* MDLLoader.h */; }; - F962E9130F5DE6E2009A5495 /* PlyLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AD50E4B716800207D74 /* PlyLoader.h */; }; - F962E9140F5DE6E2009A5495 /* PlyParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AD70E4B716800207D74 /* PlyParser.h */; }; - F962E9190F5DE6E2009A5495 /* SMDLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AE30E4B716800207D74 /* SMDLoader.h */; }; - F962E9230F5DE6E2009A5495 /* XFileHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF40E4B716800207D74 /* XFileHelper.h */; }; - F962E9240F5DE6E2009A5495 /* XFileImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF60E4B716800207D74 /* XFileImporter.h */; }; - F962E9250F5DE6E2009A5495 /* XFileParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF45AF80E4B716800207D74 /* XFileParser.h */; }; - F962E9280F5DE6E2009A5495 /* MDCFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AB0E50D67A00606590 /* MDCFileData.h */; }; - F962E9290F5DE6E2009A5495 /* MDCLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AD0E50D67A00606590 /* MDCLoader.h */; }; - F962E92A0F5DE6E2009A5495 /* MDCNormalTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3AE0E50D67A00606590 /* MDCNormalTable.h */; }; - F962E92C0F5DE6E2009A5495 /* LWOFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3B70E50D6DB00606590 /* LWOFileData.h */; }; - F962E92D0F5DE6E2009A5495 /* LWOLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3B90E50D6DB00606590 /* LWOLoader.h */; }; - F962E92E0F5DE6E2009A5495 /* HMPFileData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB8A3C50E50D77900606590 /* HMPFileData.h */; }; - F962E9360F5DE6E2009A5495 /* ACLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFD10F5DD87000124155 /* ACLoader.h */; }; - F962E9370F5DE6E2009A5495 /* IRRLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDA0F5DD90800124155 /* IRRLoader.h */; }; - F962E9380F5DE6E2009A5495 /* IRRMeshLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDC0F5DD90800124155 /* IRRMeshLoader.h */; }; - F962E9390F5DE6E2009A5495 /* IRRShared.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFDE0F5DD90800124155 /* IRRShared.h */; }; - F962E93D0F5DE6E2009A5495 /* NFFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BAFF50F5DD96100124155 /* NFFLoader.h */; }; - F962E93F0F5DE6E2009A5495 /* Q3DLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0070F5DD9DD00124155 /* Q3DLoader.h */; }; - F962E9400F5DE6E2009A5495 /* BVHLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB00C0F5DD9F400124155 /* BVHLoader.h */; }; - F962E9410F5DE6E2009A5495 /* OFFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0130F5DDA1400124155 /* OFFLoader.h */; }; - F962E9420F5DE6E2009A5495 /* RawLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB01B0F5DDA4400124155 /* RawLoader.h */; }; - F962E9430F5DE6E2009A5495 /* DXFLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0210F5DDA5700124155 /* DXFLoader.h */; }; - F962E9440F5DE6E2009A5495 /* TerragenLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB02F0F5DDAB500124155 /* TerragenLoader.h */; }; - F962E9450F5DE6E2009A5495 /* irrXMLWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0360F5DDB1B00124155 /* irrXMLWrapper.h */; }; - F962E9570F5DE6E2009A5495 /* B3DImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = F90BB0870F5DDE0700124155 /* B3DImporter.h */; }; - F97BA03615439DB3009EB9DD /* ai_assert.h in Headers */ = {isa = PBXBuildFile; fileRef = F97BA03515439DB3009EB9DD /* ai_assert.h */; }; - F97BA03715439DB3009EB9DD /* ai_assert.h in Headers */ = {isa = PBXBuildFile; fileRef = F97BA03515439DB3009EB9DD /* ai_assert.h */; }; - F97BA03815439DB3009EB9DD /* ai_assert.h in Headers */ = {isa = PBXBuildFile; fileRef = F97BA03515439DB3009EB9DD /* ai_assert.h */; }; - F97BA03915439DB3009EB9DD /* ai_assert.h in Headers */ = {isa = PBXBuildFile; fileRef = F97BA03515439DB3009EB9DD /* ai_assert.h */; }; - F99A9F3215436269000682F3 /* PlyExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99A9F3015436269000682F3 /* PlyExporter.cpp */; }; - F99A9F3315436269000682F3 /* PlyExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = F99A9F3115436269000682F3 /* PlyExporter.h */; }; - F99A9F3415436269000682F3 /* PlyExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99A9F3015436269000682F3 /* PlyExporter.cpp */; }; - F99A9F3515436269000682F3 /* PlyExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = F99A9F3115436269000682F3 /* PlyExporter.h */; }; - F99A9F3615436269000682F3 /* PlyExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99A9F3015436269000682F3 /* PlyExporter.cpp */; }; - F99A9F3715436269000682F3 /* PlyExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = F99A9F3115436269000682F3 /* PlyExporter.h */; }; - F99A9F3815436269000682F3 /* PlyExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99A9F3015436269000682F3 /* PlyExporter.cpp */; }; - F99A9F3915436269000682F3 /* PlyExporter.h in Headers */ = {isa = PBXBuildFile; fileRef = F99A9F3115436269000682F3 /* PlyExporter.h */; }; - F9BA8B9F1543268400E63FFE /* anim.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B751543268400E63FFE /* anim.h */; }; - F9BA8BA11543268400E63FFE /* camera.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B771543268400E63FFE /* camera.h */; }; - F9BA8BA21543268400E63FFE /* cexport.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B781543268400E63FFE /* cexport.h */; }; - F9BA8BA31543268400E63FFE /* cfileio.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B791543268400E63FFE /* cfileio.h */; }; - F9BA8BA41543268400E63FFE /* cimport.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7A1543268400E63FFE /* cimport.h */; }; - F9BA8BA51543268400E63FFE /* color4.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7B1543268400E63FFE /* color4.h */; }; - F9BA8BA61543268400E63FFE /* poppack1.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7E1543268400E63FFE /* poppack1.h */; }; - F9BA8BA71543268400E63FFE /* pushpack1.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7F1543268400E63FFE /* pushpack1.h */; }; - F9BA8BA81543268400E63FFE /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B801543268400E63FFE /* config.h */; }; - F9BA8BA91543268400E63FFE /* DefaultLogger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B811543268400E63FFE /* DefaultLogger.hpp */; }; - F9BA8BAA1543268400E63FFE /* defs.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B821543268400E63FFE /* defs.h */; }; - F9BA8BAB1543268400E63FFE /* Exporter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B831543268400E63FFE /* Exporter.hpp */; }; - F9BA8BAC1543268400E63FFE /* Importer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B841543268400E63FFE /* Importer.hpp */; }; - F9BA8BAD1543268400E63FFE /* importerdesc.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B851543268400E63FFE /* importerdesc.h */; }; - F9BA8BAE1543268400E63FFE /* IOStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B861543268400E63FFE /* IOStream.hpp */; }; - F9BA8BAF1543268400E63FFE /* IOSystem.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B871543268400E63FFE /* IOSystem.hpp */; }; - F9BA8BB01543268400E63FFE /* light.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B881543268400E63FFE /* light.h */; }; - F9BA8BB11543268400E63FFE /* Logger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B891543268400E63FFE /* Logger.hpp */; }; - F9BA8BB21543268400E63FFE /* LogStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8A1543268400E63FFE /* LogStream.hpp */; }; - F9BA8BB31543268400E63FFE /* material.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8B1543268400E63FFE /* material.h */; }; - F9BA8BB41543268400E63FFE /* matrix3x3.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8D1543268400E63FFE /* matrix3x3.h */; }; - F9BA8BB51543268400E63FFE /* matrix4x4.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8F1543268400E63FFE /* matrix4x4.h */; }; - F9BA8BB61543268400E63FFE /* mesh.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B911543268400E63FFE /* mesh.h */; }; - F9BA8BB71543268400E63FFE /* NullLogger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B921543268400E63FFE /* NullLogger.hpp */; }; - F9BA8BB81543268400E63FFE /* postprocess.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B931543268400E63FFE /* postprocess.h */; }; - F9BA8BB91543268400E63FFE /* ProgressHandler.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B941543268400E63FFE /* ProgressHandler.hpp */; }; - F9BA8BBA1543268400E63FFE /* quaternion.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B951543268400E63FFE /* quaternion.h */; }; - F9BA8BBB1543268400E63FFE /* scene.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B971543268400E63FFE /* scene.h */; }; - F9BA8BBC1543268400E63FFE /* texture.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B981543268400E63FFE /* texture.h */; }; - F9BA8BBD1543268400E63FFE /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B991543268400E63FFE /* types.h */; }; - F9BA8BBE1543268400E63FFE /* vector2.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9A1543268400E63FFE /* vector2.h */; }; - F9BA8BBF1543268400E63FFE /* vector3.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9C1543268400E63FFE /* vector3.h */; }; - F9BA8BC01543268400E63FFE /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9E1543268400E63FFE /* version.h */; }; - F9BA8BC11543268400E63FFE /* anim.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B751543268400E63FFE /* anim.h */; }; - F9BA8BC31543268400E63FFE /* camera.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B771543268400E63FFE /* camera.h */; }; - F9BA8BC41543268400E63FFE /* cexport.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B781543268400E63FFE /* cexport.h */; }; - F9BA8BC51543268400E63FFE /* cfileio.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B791543268400E63FFE /* cfileio.h */; }; - F9BA8BC61543268400E63FFE /* cimport.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7A1543268400E63FFE /* cimport.h */; }; - F9BA8BC71543268400E63FFE /* color4.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7B1543268400E63FFE /* color4.h */; }; - F9BA8BC81543268400E63FFE /* poppack1.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7E1543268400E63FFE /* poppack1.h */; }; - F9BA8BC91543268400E63FFE /* pushpack1.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7F1543268400E63FFE /* pushpack1.h */; }; - F9BA8BCA1543268400E63FFE /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B801543268400E63FFE /* config.h */; }; - F9BA8BCB1543268400E63FFE /* DefaultLogger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B811543268400E63FFE /* DefaultLogger.hpp */; }; - F9BA8BCC1543268400E63FFE /* defs.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B821543268400E63FFE /* defs.h */; }; - F9BA8BCD1543268400E63FFE /* Exporter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B831543268400E63FFE /* Exporter.hpp */; }; - F9BA8BCE1543268400E63FFE /* Importer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B841543268400E63FFE /* Importer.hpp */; }; - F9BA8BCF1543268400E63FFE /* importerdesc.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B851543268400E63FFE /* importerdesc.h */; }; - F9BA8BD01543268400E63FFE /* IOStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B861543268400E63FFE /* IOStream.hpp */; }; - F9BA8BD11543268400E63FFE /* IOSystem.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B871543268400E63FFE /* IOSystem.hpp */; }; - F9BA8BD21543268400E63FFE /* light.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B881543268400E63FFE /* light.h */; }; - F9BA8BD31543268400E63FFE /* Logger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B891543268400E63FFE /* Logger.hpp */; }; - F9BA8BD41543268400E63FFE /* LogStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8A1543268400E63FFE /* LogStream.hpp */; }; - F9BA8BD51543268400E63FFE /* material.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8B1543268400E63FFE /* material.h */; }; - F9BA8BD61543268400E63FFE /* matrix3x3.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8D1543268400E63FFE /* matrix3x3.h */; }; - F9BA8BD71543268400E63FFE /* matrix4x4.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8F1543268400E63FFE /* matrix4x4.h */; }; - F9BA8BD81543268400E63FFE /* mesh.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B911543268400E63FFE /* mesh.h */; }; - F9BA8BD91543268400E63FFE /* NullLogger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B921543268400E63FFE /* NullLogger.hpp */; }; - F9BA8BDA1543268400E63FFE /* postprocess.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B931543268400E63FFE /* postprocess.h */; }; - F9BA8BDB1543268400E63FFE /* ProgressHandler.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B941543268400E63FFE /* ProgressHandler.hpp */; }; - F9BA8BDC1543268400E63FFE /* quaternion.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B951543268400E63FFE /* quaternion.h */; }; - F9BA8BDD1543268400E63FFE /* scene.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B971543268400E63FFE /* scene.h */; }; - F9BA8BDE1543268400E63FFE /* texture.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B981543268400E63FFE /* texture.h */; }; - F9BA8BDF1543268400E63FFE /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B991543268400E63FFE /* types.h */; }; - F9BA8BE01543268400E63FFE /* vector2.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9A1543268400E63FFE /* vector2.h */; }; - F9BA8BE11543268400E63FFE /* vector3.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9C1543268400E63FFE /* vector3.h */; }; - F9BA8BE21543268400E63FFE /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9E1543268400E63FFE /* version.h */; }; - F9BA8BE31543268400E63FFE /* anim.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B751543268400E63FFE /* anim.h */; }; - F9BA8BE51543268400E63FFE /* camera.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B771543268400E63FFE /* camera.h */; }; - F9BA8BE61543268400E63FFE /* cexport.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B781543268400E63FFE /* cexport.h */; }; - F9BA8BE71543268400E63FFE /* cfileio.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B791543268400E63FFE /* cfileio.h */; }; - F9BA8BE81543268400E63FFE /* cimport.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7A1543268400E63FFE /* cimport.h */; }; - F9BA8BE91543268400E63FFE /* color4.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7B1543268400E63FFE /* color4.h */; }; - F9BA8BEA1543268400E63FFE /* poppack1.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7E1543268400E63FFE /* poppack1.h */; }; - F9BA8BEB1543268400E63FFE /* pushpack1.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7F1543268400E63FFE /* pushpack1.h */; }; - F9BA8BEC1543268400E63FFE /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B801543268400E63FFE /* config.h */; }; - F9BA8BED1543268400E63FFE /* DefaultLogger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B811543268400E63FFE /* DefaultLogger.hpp */; }; - F9BA8BEE1543268400E63FFE /* defs.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B821543268400E63FFE /* defs.h */; }; - F9BA8BEF1543268400E63FFE /* Exporter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B831543268400E63FFE /* Exporter.hpp */; }; - F9BA8BF01543268400E63FFE /* Importer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B841543268400E63FFE /* Importer.hpp */; }; - F9BA8BF11543268400E63FFE /* importerdesc.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B851543268400E63FFE /* importerdesc.h */; }; - F9BA8BF21543268400E63FFE /* IOStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B861543268400E63FFE /* IOStream.hpp */; }; - F9BA8BF31543268400E63FFE /* IOSystem.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B871543268400E63FFE /* IOSystem.hpp */; }; - F9BA8BF41543268400E63FFE /* light.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B881543268400E63FFE /* light.h */; }; - F9BA8BF51543268400E63FFE /* Logger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B891543268400E63FFE /* Logger.hpp */; }; - F9BA8BF61543268400E63FFE /* LogStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8A1543268400E63FFE /* LogStream.hpp */; }; - F9BA8BF71543268400E63FFE /* material.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8B1543268400E63FFE /* material.h */; }; - F9BA8BF81543268400E63FFE /* matrix3x3.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8D1543268400E63FFE /* matrix3x3.h */; }; - F9BA8BF91543268400E63FFE /* matrix4x4.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8F1543268400E63FFE /* matrix4x4.h */; }; - F9BA8BFA1543268400E63FFE /* mesh.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B911543268400E63FFE /* mesh.h */; }; - F9BA8BFB1543268400E63FFE /* NullLogger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B921543268400E63FFE /* NullLogger.hpp */; }; - F9BA8BFC1543268400E63FFE /* postprocess.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B931543268400E63FFE /* postprocess.h */; }; - F9BA8BFD1543268400E63FFE /* ProgressHandler.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B941543268400E63FFE /* ProgressHandler.hpp */; }; - F9BA8BFE1543268400E63FFE /* quaternion.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B951543268400E63FFE /* quaternion.h */; }; - F9BA8BFF1543268400E63FFE /* scene.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B971543268400E63FFE /* scene.h */; }; - F9BA8C001543268400E63FFE /* texture.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B981543268400E63FFE /* texture.h */; }; - F9BA8C011543268400E63FFE /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B991543268400E63FFE /* types.h */; }; - F9BA8C021543268400E63FFE /* vector2.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9A1543268400E63FFE /* vector2.h */; }; - F9BA8C031543268400E63FFE /* vector3.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9C1543268400E63FFE /* vector3.h */; }; - F9BA8C041543268400E63FFE /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9E1543268400E63FFE /* version.h */; }; - F9BA8C051543268400E63FFE /* anim.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B751543268400E63FFE /* anim.h */; }; - F9BA8C071543268400E63FFE /* camera.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B771543268400E63FFE /* camera.h */; }; - F9BA8C081543268400E63FFE /* cexport.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B781543268400E63FFE /* cexport.h */; }; - F9BA8C091543268400E63FFE /* cfileio.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B791543268400E63FFE /* cfileio.h */; }; - F9BA8C0A1543268400E63FFE /* cimport.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7A1543268400E63FFE /* cimport.h */; }; - F9BA8C0B1543268400E63FFE /* color4.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7B1543268400E63FFE /* color4.h */; }; - F9BA8C0C1543268400E63FFE /* poppack1.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7E1543268400E63FFE /* poppack1.h */; }; - F9BA8C0D1543268400E63FFE /* pushpack1.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B7F1543268400E63FFE /* pushpack1.h */; }; - F9BA8C0E1543268400E63FFE /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B801543268400E63FFE /* config.h */; }; - F9BA8C0F1543268400E63FFE /* DefaultLogger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B811543268400E63FFE /* DefaultLogger.hpp */; }; - F9BA8C101543268400E63FFE /* defs.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B821543268400E63FFE /* defs.h */; }; - F9BA8C111543268400E63FFE /* Exporter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B831543268400E63FFE /* Exporter.hpp */; }; - F9BA8C121543268400E63FFE /* Importer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B841543268400E63FFE /* Importer.hpp */; }; - F9BA8C131543268400E63FFE /* importerdesc.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B851543268400E63FFE /* importerdesc.h */; }; - F9BA8C141543268400E63FFE /* IOStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B861543268400E63FFE /* IOStream.hpp */; }; - F9BA8C151543268400E63FFE /* IOSystem.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B871543268400E63FFE /* IOSystem.hpp */; }; - F9BA8C161543268400E63FFE /* light.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B881543268400E63FFE /* light.h */; }; - F9BA8C171543268400E63FFE /* Logger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B891543268400E63FFE /* Logger.hpp */; }; - F9BA8C181543268400E63FFE /* LogStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8A1543268400E63FFE /* LogStream.hpp */; }; - F9BA8C191543268400E63FFE /* material.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8B1543268400E63FFE /* material.h */; }; - F9BA8C1A1543268400E63FFE /* matrix3x3.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8D1543268400E63FFE /* matrix3x3.h */; }; - F9BA8C1B1543268400E63FFE /* matrix4x4.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B8F1543268400E63FFE /* matrix4x4.h */; }; - F9BA8C1C1543268400E63FFE /* mesh.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B911543268400E63FFE /* mesh.h */; }; - F9BA8C1D1543268400E63FFE /* NullLogger.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B921543268400E63FFE /* NullLogger.hpp */; }; - F9BA8C1E1543268400E63FFE /* postprocess.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B931543268400E63FFE /* postprocess.h */; }; - F9BA8C1F1543268400E63FFE /* ProgressHandler.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B941543268400E63FFE /* ProgressHandler.hpp */; }; - F9BA8C201543268400E63FFE /* quaternion.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B951543268400E63FFE /* quaternion.h */; }; - F9BA8C211543268400E63FFE /* scene.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B971543268400E63FFE /* scene.h */; }; - F9BA8C221543268400E63FFE /* texture.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B981543268400E63FFE /* texture.h */; }; - F9BA8C231543268400E63FFE /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B991543268400E63FFE /* types.h */; }; - F9BA8C241543268400E63FFE /* vector2.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9A1543268400E63FFE /* vector2.h */; }; - F9BA8C251543268400E63FFE /* vector3.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9C1543268400E63FFE /* vector3.h */; }; - F9BA8C261543268400E63FFE /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8B9E1543268400E63FFE /* version.h */; }; - F9BA8C3B154328B600E63FFE /* OgreImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C35154328B600E63FFE /* OgreImporter.cpp */; }; - F9BA8C3C154328B600E63FFE /* OgreImporter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8C36154328B600E63FFE /* OgreImporter.hpp */; }; - F9BA8C3D154328B600E63FFE /* OgreMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C37154328B600E63FFE /* OgreMaterial.cpp */; }; - F9BA8C3E154328B600E63FFE /* OgreMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C38154328B600E63FFE /* OgreMesh.cpp */; }; - F9BA8C3F154328B600E63FFE /* OgreSkeleton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C39154328B600E63FFE /* OgreSkeleton.cpp */; }; - F9BA8C40154328B600E63FFE /* OgreXmlHelper.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8C3A154328B600E63FFE /* OgreXmlHelper.hpp */; }; - F9BA8C41154328B600E63FFE /* OgreImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C35154328B600E63FFE /* OgreImporter.cpp */; }; - F9BA8C42154328B600E63FFE /* OgreImporter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8C36154328B600E63FFE /* OgreImporter.hpp */; }; - F9BA8C43154328B600E63FFE /* OgreMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C37154328B600E63FFE /* OgreMaterial.cpp */; }; - F9BA8C44154328B600E63FFE /* OgreMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C38154328B600E63FFE /* OgreMesh.cpp */; }; - F9BA8C45154328B600E63FFE /* OgreSkeleton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C39154328B600E63FFE /* OgreSkeleton.cpp */; }; - F9BA8C46154328B600E63FFE /* OgreXmlHelper.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8C3A154328B600E63FFE /* OgreXmlHelper.hpp */; }; - F9BA8C47154328B600E63FFE /* OgreImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C35154328B600E63FFE /* OgreImporter.cpp */; }; - F9BA8C48154328B600E63FFE /* OgreImporter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8C36154328B600E63FFE /* OgreImporter.hpp */; }; - F9BA8C49154328B600E63FFE /* OgreMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C37154328B600E63FFE /* OgreMaterial.cpp */; }; - F9BA8C4A154328B600E63FFE /* OgreMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C38154328B600E63FFE /* OgreMesh.cpp */; }; - F9BA8C4B154328B600E63FFE /* OgreSkeleton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C39154328B600E63FFE /* OgreSkeleton.cpp */; }; - F9BA8C4C154328B600E63FFE /* OgreXmlHelper.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8C3A154328B600E63FFE /* OgreXmlHelper.hpp */; }; - F9BA8C4D154328B600E63FFE /* OgreImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C35154328B600E63FFE /* OgreImporter.cpp */; }; - F9BA8C4E154328B600E63FFE /* OgreImporter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8C36154328B600E63FFE /* OgreImporter.hpp */; }; - F9BA8C4F154328B600E63FFE /* OgreMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C37154328B600E63FFE /* OgreMaterial.cpp */; }; - F9BA8C50154328B600E63FFE /* OgreMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C38154328B600E63FFE /* OgreMesh.cpp */; }; - F9BA8C51154328B600E63FFE /* OgreSkeleton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BA8C39154328B600E63FFE /* OgreSkeleton.cpp */; }; - F9BA8C52154328B600E63FFE /* OgreXmlHelper.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F9BA8C3A154328B600E63FFE /* OgreXmlHelper.hpp */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 2B7F456D1708365100A106A9 /* assbin_chunks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assbin_chunks.h; sourceTree = ""; }; - 2B7F456E1708365100A106A9 /* Assimp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Assimp.cpp; sourceTree = ""; }; - 2B7F456F1708365100A106A9 /* AssimpCExport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AssimpCExport.cpp; sourceTree = ""; }; - 2B7F45741708365100A106A9 /* BaseImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BaseImporter.cpp; sourceTree = ""; }; - 2B7F45751708365100A106A9 /* BaseImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseImporter.h; sourceTree = ""; }; - 2B7F45761708365100A106A9 /* BaseProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BaseProcess.cpp; sourceTree = ""; }; - 2B7F45771708365100A106A9 /* BaseProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseProcess.h; sourceTree = ""; }; - 2B7F45831708365100A106A9 /* BlobIOSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlobIOSystem.h; sourceTree = ""; }; - 2B7F45861708365100A106A9 /* foreach.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = foreach.hpp; sourceTree = ""; }; - 2B7F45871708365100A106A9 /* format.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = format.hpp; sourceTree = ""; }; - 2B7F45881708365100A106A9 /* lexical_cast.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = lexical_cast.hpp; sourceTree = ""; }; - 2B7F45891708365100A106A9 /* LICENSE_1_0.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE_1_0.txt; sourceTree = ""; }; - 2B7F458A1708365100A106A9 /* make_shared.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = make_shared.hpp; sourceTree = ""; }; - 2B7F458C1708365100A106A9 /* common_factor_rt.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = common_factor_rt.hpp; sourceTree = ""; }; - 2B7F458D1708365100A106A9 /* noncopyable.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = noncopyable.hpp; sourceTree = ""; }; - 2B7F458E1708365100A106A9 /* pointer_cast.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = pointer_cast.hpp; sourceTree = ""; }; - 2B7F458F1708365100A106A9 /* scoped_array.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = scoped_array.hpp; sourceTree = ""; }; - 2B7F45901708365100A106A9 /* scoped_ptr.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = scoped_ptr.hpp; sourceTree = ""; }; - 2B7F45911708365100A106A9 /* shared_array.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = shared_array.hpp; sourceTree = ""; }; - 2B7F45921708365100A106A9 /* shared_ptr.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = shared_ptr.hpp; sourceTree = ""; }; - 2B7F45931708365100A106A9 /* static_assert.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = static_assert.hpp; sourceTree = ""; }; - 2B7F45941708365100A106A9 /* timer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = timer.hpp; sourceTree = ""; }; - 2B7F45961708365100A106A9 /* tuple.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = tuple.hpp; sourceTree = ""; }; - 2B7F45991708365100A106A9 /* ByteSwapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ByteSwapper.h; sourceTree = ""; }; - 2B7F459A1708365100A106A9 /* CalcTangentsProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CalcTangentsProcess.cpp; sourceTree = ""; }; - 2B7F459B1708365100A106A9 /* CalcTangentsProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CalcTangentsProcess.h; sourceTree = ""; }; - 2B7F459C1708365100A106A9 /* CInterfaceIOWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CInterfaceIOWrapper.h; sourceTree = ""; }; - 2B7F45A11708365100A106A9 /* ColladaExporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ColladaExporter.cpp; sourceTree = ""; }; - 2B7F45A21708365100A106A9 /* ColladaExporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColladaExporter.h; sourceTree = ""; }; - 2B7F45A31708365100A106A9 /* ColladaHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColladaHelper.h; sourceTree = ""; }; - 2B7F45A41708365100A106A9 /* ColladaLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ColladaLoader.cpp; sourceTree = ""; }; - 2B7F45A51708365100A106A9 /* ColladaLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColladaLoader.h; sourceTree = ""; }; - 2B7F45A61708365100A106A9 /* ColladaParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ColladaParser.cpp; sourceTree = ""; }; - 2B7F45A71708365100A106A9 /* ColladaParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColladaParser.h; sourceTree = ""; }; - 2B7F45A81708365100A106A9 /* ComputeUVMappingProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComputeUVMappingProcess.cpp; sourceTree = ""; }; - 2B7F45A91708365100A106A9 /* ComputeUVMappingProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComputeUVMappingProcess.h; sourceTree = ""; }; - 2B7F45AA1708365100A106A9 /* ConvertToLHProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConvertToLHProcess.cpp; sourceTree = ""; }; - 2B7F45AB1708365100A106A9 /* ConvertToLHProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConvertToLHProcess.h; sourceTree = ""; }; - 2B7F45AE1708365100A106A9 /* DeboneProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeboneProcess.cpp; sourceTree = ""; }; - 2B7F45AF1708365100A106A9 /* DeboneProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeboneProcess.h; sourceTree = ""; }; - 2B7F45B01708365100A106A9 /* DefaultIOStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DefaultIOStream.cpp; sourceTree = ""; }; - 2B7F45B11708365100A106A9 /* DefaultIOStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DefaultIOStream.h; sourceTree = ""; }; - 2B7F45B21708365100A106A9 /* DefaultIOSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DefaultIOSystem.cpp; sourceTree = ""; }; - 2B7F45B31708365100A106A9 /* DefaultIOSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DefaultIOSystem.h; sourceTree = ""; }; - 2B7F45B41708365100A106A9 /* DefaultLogger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DefaultLogger.cpp; sourceTree = ""; }; - 2B7F45B51708365100A106A9 /* DefaultProgressHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DefaultProgressHandler.h; sourceTree = ""; }; - 2B7F45B91708365100A106A9 /* Exceptional.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Exceptional.h; sourceTree = ""; }; - 2B7F45BA1708365100A106A9 /* Exporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Exporter.cpp; sourceTree = ""; }; - 2B7F45BB1708365100A106A9 /* fast_atof.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fast_atof.h; sourceTree = ""; }; - 2B7F45BC1708365100A106A9 /* FBXAnimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXAnimation.cpp; sourceTree = ""; }; - 2B7F45BD1708365100A106A9 /* FBXBinaryTokenizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXBinaryTokenizer.cpp; sourceTree = ""; }; - 2B7F45BE1708365100A106A9 /* FBXCompileConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBXCompileConfig.h; sourceTree = ""; }; - 2B7F45BF1708365100A106A9 /* FBXConverter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXConverter.cpp; sourceTree = ""; }; - 2B7F45C01708365100A106A9 /* FBXConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBXConverter.h; sourceTree = ""; }; - 2B7F45C11708365100A106A9 /* FBXDeformer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXDeformer.cpp; sourceTree = ""; }; - 2B7F45C21708365100A106A9 /* FBXDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXDocument.cpp; sourceTree = ""; }; - 2B7F45C31708365100A106A9 /* FBXDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBXDocument.h; sourceTree = ""; }; - 2B7F45C41708365100A106A9 /* FBXDocumentUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXDocumentUtil.cpp; sourceTree = ""; }; - 2B7F45C51708365100A106A9 /* FBXDocumentUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBXDocumentUtil.h; sourceTree = ""; }; - 2B7F45C61708365100A106A9 /* FBXImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXImporter.cpp; sourceTree = ""; }; - 2B7F45C71708365100A106A9 /* FBXImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBXImporter.h; sourceTree = ""; }; - 2B7F45C81708365100A106A9 /* FBXImportSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBXImportSettings.h; sourceTree = ""; }; - 2B7F45C91708365100A106A9 /* FBXMaterial.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXMaterial.cpp; sourceTree = ""; }; - 2B7F45CA1708365100A106A9 /* FBXMeshGeometry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXMeshGeometry.cpp; sourceTree = ""; }; - 2B7F45CB1708365100A106A9 /* FBXModel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXModel.cpp; sourceTree = ""; }; - 2B7F45CC1708365100A106A9 /* FBXNodeAttribute.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXNodeAttribute.cpp; sourceTree = ""; }; - 2B7F45CD1708365100A106A9 /* FBXParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXParser.cpp; sourceTree = ""; }; - 2B7F45CE1708365100A106A9 /* FBXParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBXParser.h; sourceTree = ""; }; - 2B7F45CF1708365100A106A9 /* FBXProperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXProperties.cpp; sourceTree = ""; }; - 2B7F45D01708365100A106A9 /* FBXProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBXProperties.h; sourceTree = ""; }; - 2B7F45D11708365100A106A9 /* FBXTokenizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXTokenizer.cpp; sourceTree = ""; }; - 2B7F45D21708365100A106A9 /* FBXTokenizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBXTokenizer.h; sourceTree = ""; }; - 2B7F45D31708365100A106A9 /* FBXUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FBXUtil.cpp; sourceTree = ""; }; - 2B7F45D41708365100A106A9 /* FBXUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBXUtil.h; sourceTree = ""; }; - 2B7F45D51708365100A106A9 /* FileLogStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileLogStream.h; sourceTree = ""; }; - 2B7F45D61708365100A106A9 /* FileSystemFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileSystemFilter.h; sourceTree = ""; }; - 2B7F45D71708365100A106A9 /* FindDegenerates.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FindDegenerates.cpp; sourceTree = ""; }; - 2B7F45D81708365100A106A9 /* FindDegenerates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FindDegenerates.h; sourceTree = ""; }; - 2B7F45D91708365100A106A9 /* FindInstancesProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FindInstancesProcess.cpp; sourceTree = ""; }; - 2B7F45DA1708365100A106A9 /* FindInstancesProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FindInstancesProcess.h; sourceTree = ""; }; - 2B7F45DB1708365100A106A9 /* FindInvalidDataProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FindInvalidDataProcess.cpp; sourceTree = ""; }; - 2B7F45DC1708365100A106A9 /* FindInvalidDataProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FindInvalidDataProcess.h; sourceTree = ""; }; - 2B7F45DD1708365100A106A9 /* FixNormalsStep.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FixNormalsStep.cpp; sourceTree = ""; }; - 2B7F45DE1708365100A106A9 /* FixNormalsStep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FixNormalsStep.h; sourceTree = ""; }; - 2B7F45DF1708365100A106A9 /* GenericProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GenericProperty.h; sourceTree = ""; }; - 2B7F45E01708365100A106A9 /* GenFaceNormalsProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GenFaceNormalsProcess.cpp; sourceTree = ""; }; - 2B7F45E11708365100A106A9 /* GenFaceNormalsProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GenFaceNormalsProcess.h; sourceTree = ""; }; - 2B7F45E21708365100A106A9 /* GenVertexNormalsProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GenVertexNormalsProcess.cpp; sourceTree = ""; }; - 2B7F45E31708365100A106A9 /* GenVertexNormalsProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GenVertexNormalsProcess.h; sourceTree = ""; }; - 2B7F45E51708365100A106A9 /* Hash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Hash.h; sourceTree = ""; }; - 2B7F45E91708365100A106A9 /* IFCBoolean.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IFCBoolean.cpp; path = ../../code/IFCBoolean.cpp; sourceTree = ""; }; - 2B7F45EA1708365100A106A9 /* IFCCurve.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IFCCurve.cpp; path = ../../code/IFCCurve.cpp; sourceTree = ""; }; - 2B7F45EB1708365100A106A9 /* IFCGeometry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IFCGeometry.cpp; path = ../../code/IFCGeometry.cpp; sourceTree = ""; }; - 2B7F45EC1708365100A106A9 /* IFCLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IFCLoader.cpp; path = ../../code/IFCLoader.cpp; sourceTree = ""; }; - 2B7F45ED1708365100A106A9 /* IFCLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IFCLoader.h; path = ../../code/IFCLoader.h; sourceTree = ""; }; - 2B7F45EE1708365100A106A9 /* IFCMaterial.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IFCMaterial.cpp; path = ../../code/IFCMaterial.cpp; sourceTree = ""; }; - 2B7F45EF1708365100A106A9 /* IFCOpenings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IFCOpenings.cpp; path = ../../code/IFCOpenings.cpp; sourceTree = ""; }; - 2B7F45F01708365100A106A9 /* IFCProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IFCProfile.cpp; path = ../../code/IFCProfile.cpp; sourceTree = ""; }; - 2B7F45F11708365100A106A9 /* IFCReaderGen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IFCReaderGen.cpp; path = ../../code/IFCReaderGen.cpp; sourceTree = ""; }; - 2B7F45F21708365100A106A9 /* IFCReaderGen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IFCReaderGen.h; path = ../../code/IFCReaderGen.h; sourceTree = ""; }; - 2B7F45F31708365100A106A9 /* IFCUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IFCUtil.cpp; path = ../../code/IFCUtil.cpp; sourceTree = ""; }; - 2B7F45F41708365100A106A9 /* IFCUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IFCUtil.h; path = ../../code/IFCUtil.h; sourceTree = ""; }; - 2B7F45F51708365100A106A9 /* IFF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IFF.h; sourceTree = ""; }; - 2B7F45F61708365100A106A9 /* Importer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Importer.cpp; sourceTree = ""; }; - 2B7F45F71708365100A106A9 /* Importer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Importer.h; sourceTree = ""; }; - 2B7F45F81708365100A106A9 /* ImporterRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImporterRegistry.cpp; sourceTree = ""; }; - 2B7F45F91708365100A106A9 /* ImproveCacheLocality.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImproveCacheLocality.cpp; sourceTree = ""; }; - 2B7F45FA1708365100A106A9 /* ImproveCacheLocality.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImproveCacheLocality.h; sourceTree = ""; }; - 2B7F46021708365100A106A9 /* JoinVerticesProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JoinVerticesProcess.cpp; sourceTree = ""; }; - 2B7F46031708365100A106A9 /* JoinVerticesProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JoinVerticesProcess.h; sourceTree = ""; }; - 2B7F46041708365100A106A9 /* LimitBoneWeightsProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LimitBoneWeightsProcess.cpp; sourceTree = ""; }; - 2B7F46051708365100A106A9 /* LimitBoneWeightsProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LimitBoneWeightsProcess.h; sourceTree = ""; }; - 2B7F46061708365100A106A9 /* LineSplitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineSplitter.h; sourceTree = ""; }; - 2B7F46071708365100A106A9 /* LogAux.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogAux.h; sourceTree = ""; }; - 2B7F46141708365200A106A9 /* MakeVerboseFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MakeVerboseFormat.cpp; sourceTree = ""; }; - 2B7F46151708365200A106A9 /* MakeVerboseFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MakeVerboseFormat.h; sourceTree = ""; }; - 2B7F46161708365200A106A9 /* MaterialSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MaterialSystem.cpp; sourceTree = ""; }; - 2B7F46171708365200A106A9 /* MaterialSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MaterialSystem.h; sourceTree = ""; }; - 2B7F461F1708365200A106A9 /* MD4FileData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MD4FileData.h; sourceTree = ""; }; - 2B7F462D1708365200A106A9 /* MemoryIOWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryIOWrapper.h; sourceTree = ""; }; - 2B7F46341708365200A106A9 /* ObjExporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ObjExporter.cpp; sourceTree = ""; }; - 2B7F46351708365200A106A9 /* ObjExporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjExporter.h; sourceTree = ""; }; - 2B7F46361708365200A106A9 /* ObjFileData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjFileData.h; sourceTree = ""; }; - 2B7F46371708365200A106A9 /* ObjFileImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ObjFileImporter.cpp; sourceTree = ""; }; - 2B7F46381708365200A106A9 /* ObjFileImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjFileImporter.h; sourceTree = ""; }; - 2B7F46391708365200A106A9 /* ObjFileMtlImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ObjFileMtlImporter.cpp; sourceTree = ""; }; - 2B7F463A1708365200A106A9 /* ObjFileMtlImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjFileMtlImporter.h; sourceTree = ""; }; - 2B7F463B1708365200A106A9 /* ObjFileParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ObjFileParser.cpp; sourceTree = ""; }; - 2B7F463C1708365200A106A9 /* ObjFileParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjFileParser.h; sourceTree = ""; }; - 2B7F463D1708365200A106A9 /* ObjTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjTools.h; sourceTree = ""; }; - 2B7F46461708365200A106A9 /* OptimizeGraph.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OptimizeGraph.cpp; sourceTree = ""; }; - 2B7F46471708365200A106A9 /* OptimizeGraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OptimizeGraph.h; sourceTree = ""; }; - 2B7F46481708365200A106A9 /* OptimizeMeshes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OptimizeMeshes.cpp; sourceTree = ""; }; - 2B7F46491708365200A106A9 /* OptimizeMeshes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OptimizeMeshes.h; sourceTree = ""; }; - 2B7F464A1708365200A106A9 /* ParsingUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParsingUtils.h; sourceTree = ""; }; - 2B7F46511708365200A106A9 /* PolyTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolyTools.h; sourceTree = ""; }; - 2B7F46521708365200A106A9 /* PostStepRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PostStepRegistry.cpp; sourceTree = ""; }; - 2B7F46531708365200A106A9 /* PretransformVertices.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PretransformVertices.cpp; sourceTree = ""; }; - 2B7F46541708365200A106A9 /* PretransformVertices.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PretransformVertices.h; sourceTree = ""; }; - 2B7F46551708365200A106A9 /* ProcessHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessHelper.cpp; sourceTree = ""; }; - 2B7F46561708365200A106A9 /* ProcessHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessHelper.h; sourceTree = ""; }; - 2B7F46571708365200A106A9 /* Profiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Profiler.h; sourceTree = ""; }; - 2B7F46581708365200A106A9 /* pstdint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pstdint.h; sourceTree = ""; }; - 2B7F46621708365200A106A9 /* qnan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qnan.h; sourceTree = ""; }; - 2B7F46651708365200A106A9 /* RemoveComments.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoveComments.cpp; sourceTree = ""; }; - 2B7F46661708365200A106A9 /* RemoveComments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoveComments.h; sourceTree = ""; }; - 2B7F46671708365200A106A9 /* RemoveRedundantMaterials.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoveRedundantMaterials.cpp; sourceTree = ""; }; - 2B7F46681708365200A106A9 /* RemoveRedundantMaterials.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoveRedundantMaterials.h; sourceTree = ""; }; - 2B7F46691708365200A106A9 /* RemoveVCProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoveVCProcess.cpp; sourceTree = ""; }; - 2B7F466A1708365200A106A9 /* RemoveVCProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoveVCProcess.h; sourceTree = ""; }; - 2B7F466E1708365200A106A9 /* SceneCombiner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SceneCombiner.cpp; sourceTree = ""; }; - 2B7F466F1708365200A106A9 /* SceneCombiner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneCombiner.h; sourceTree = ""; }; - 2B7F46701708365200A106A9 /* ScenePreprocessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScenePreprocessor.cpp; sourceTree = ""; }; - 2B7F46711708365200A106A9 /* ScenePreprocessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScenePreprocessor.h; sourceTree = ""; }; - 2B7F46721708365200A106A9 /* ScenePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScenePrivate.h; sourceTree = ""; }; - 2B7F46731708365200A106A9 /* SGSpatialSort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SGSpatialSort.cpp; sourceTree = ""; }; - 2B7F46741708365200A106A9 /* SGSpatialSort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SGSpatialSort.h; sourceTree = ""; }; - 2B7F46751708365200A106A9 /* SkeletonMeshBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkeletonMeshBuilder.cpp; sourceTree = ""; }; - 2B7F46761708365200A106A9 /* SkeletonMeshBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkeletonMeshBuilder.h; sourceTree = ""; }; - 2B7F46791708365200A106A9 /* SmoothingGroups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SmoothingGroups.h; sourceTree = ""; }; - 2B7F467A1708365200A106A9 /* SmoothingGroups.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SmoothingGroups.inl; sourceTree = ""; }; - 2B7F467B1708365200A106A9 /* SortByPTypeProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SortByPTypeProcess.cpp; sourceTree = ""; }; - 2B7F467C1708365200A106A9 /* SortByPTypeProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SortByPTypeProcess.h; sourceTree = ""; }; - 2B7F467D1708365200A106A9 /* SpatialSort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpatialSort.cpp; sourceTree = ""; }; - 2B7F467E1708365200A106A9 /* SpatialSort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpatialSort.h; sourceTree = ""; }; - 2B7F467F1708365200A106A9 /* SplitByBoneCountProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SplitByBoneCountProcess.cpp; sourceTree = ""; }; - 2B7F46801708365200A106A9 /* SplitByBoneCountProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SplitByBoneCountProcess.h; sourceTree = ""; }; - 2B7F46811708365200A106A9 /* SplitLargeMeshes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SplitLargeMeshes.cpp; sourceTree = ""; }; - 2B7F46821708365200A106A9 /* SplitLargeMeshes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SplitLargeMeshes.h; sourceTree = ""; }; - 2B7F46831708365200A106A9 /* StandardShapes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StandardShapes.cpp; sourceTree = ""; }; - 2B7F46841708365200A106A9 /* StandardShapes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StandardShapes.h; sourceTree = ""; }; - 2B7F46851708365200A106A9 /* StdOStreamLogStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StdOStreamLogStream.h; sourceTree = ""; }; - 2B7F46861708365200A106A9 /* STEPFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = STEPFile.h; path = ../../code/STEPFile.h; sourceTree = ""; }; - 2B7F46871708365200A106A9 /* STEPFileEncoding.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = STEPFileEncoding.cpp; path = ../../code/STEPFileEncoding.cpp; sourceTree = ""; }; - 2B7F46881708365200A106A9 /* STEPFileEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = STEPFileEncoding.h; path = ../../code/STEPFileEncoding.h; sourceTree = ""; }; - 2B7F46891708365200A106A9 /* STEPFileReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = STEPFileReader.cpp; path = ../../code/STEPFileReader.cpp; sourceTree = ""; }; - 2B7F468A1708365200A106A9 /* STEPFileReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = STEPFileReader.h; path = ../../code/STEPFileReader.h; sourceTree = ""; }; - 2B7F468B1708365200A106A9 /* STLExporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = STLExporter.cpp; sourceTree = ""; }; - 2B7F468C1708365200A106A9 /* STLExporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = STLExporter.h; sourceTree = ""; }; - 2B7F468D1708365200A106A9 /* STLLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = STLLoader.cpp; sourceTree = ""; }; - 2B7F468E1708365200A106A9 /* STLLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = STLLoader.h; sourceTree = ""; }; - 2B7F468F1708365200A106A9 /* StreamReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StreamReader.h; sourceTree = ""; }; - 2B7F46901708365200A106A9 /* StringComparison.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringComparison.h; sourceTree = ""; }; - 2B7F46911708365200A106A9 /* Subdivision.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Subdivision.cpp; sourceTree = ""; }; - 2B7F46921708365200A106A9 /* Subdivision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Subdivision.h; sourceTree = ""; }; - 2B7F46931708365200A106A9 /* TargetAnimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TargetAnimation.cpp; sourceTree = ""; }; - 2B7F46941708365200A106A9 /* TargetAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetAnimation.h; sourceTree = ""; }; - 2B7F46971708365200A106A9 /* TextureTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextureTransform.cpp; sourceTree = ""; }; - 2B7F46981708365200A106A9 /* TextureTransform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureTransform.h; sourceTree = ""; }; - 2B7F46991708365200A106A9 /* TinyFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TinyFormatter.h; sourceTree = ""; }; - 2B7F469A1708365200A106A9 /* TriangulateProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TriangulateProcess.cpp; sourceTree = ""; }; - 2B7F469B1708365200A106A9 /* TriangulateProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TriangulateProcess.h; sourceTree = ""; }; - 2B7F469E1708365200A106A9 /* ValidateDataStructure.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ValidateDataStructure.cpp; sourceTree = ""; }; - 2B7F469F1708365200A106A9 /* ValidateDataStructure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValidateDataStructure.h; sourceTree = ""; }; - 2B7F46A01708365200A106A9 /* Vertex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Vertex.h; sourceTree = ""; }; - 2B7F46A11708365200A106A9 /* VertexTriangleAdjacency.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VertexTriangleAdjacency.cpp; sourceTree = ""; }; - 2B7F46A21708365200A106A9 /* VertexTriangleAdjacency.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VertexTriangleAdjacency.h; sourceTree = ""; }; - 2B7F46A31708365200A106A9 /* Win32DebugLogStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Win32DebugLogStream.h; sourceTree = ""; }; - 2BA44E10170862D800C78A66 /* libstdc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.dylib"; path = "Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib/libstdc++.dylib"; sourceTree = DEVELOPER_DIR; }; - 3AB8A3AB0E50D67A00606590 /* MDCFileData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDCFileData.h; sourceTree = ""; }; - 3AB8A3AC0E50D67A00606590 /* MDCLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MDCLoader.cpp; sourceTree = ""; }; - 3AB8A3AD0E50D67A00606590 /* MDCLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDCLoader.h; sourceTree = ""; }; - 3AB8A3AE0E50D67A00606590 /* MDCNormalTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDCNormalTable.h; sourceTree = ""; }; - 3AB8A3B70E50D6DB00606590 /* LWOFileData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LWOFileData.h; sourceTree = ""; }; - 3AB8A3B80E50D6DB00606590 /* LWOLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LWOLoader.cpp; sourceTree = ""; }; - 3AB8A3B90E50D6DB00606590 /* LWOLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LWOLoader.h; sourceTree = ""; }; - 3AB8A3C50E50D77900606590 /* HMPFileData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMPFileData.h; sourceTree = ""; }; - 3AB8A7DC0E53715F00606590 /* LWOMaterial.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LWOMaterial.cpp; sourceTree = ""; }; - 3AF45A860E4B716800207D74 /* 3DSConverter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = 3DSConverter.cpp; sourceTree = ""; }; - 3AF45A880E4B716800207D74 /* 3DSHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 3DSHelper.h; sourceTree = ""; }; - 3AF45A890E4B716800207D74 /* 3DSLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = 3DSLoader.cpp; sourceTree = ""; }; - 3AF45A8A0E4B716800207D74 /* 3DSLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 3DSLoader.h; sourceTree = ""; }; - 3AF45A8E0E4B716800207D74 /* ASELoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ASELoader.cpp; sourceTree = ""; }; - 3AF45A8F0E4B716800207D74 /* ASELoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASELoader.h; sourceTree = ""; }; - 3AF45A900E4B716800207D74 /* ASEParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ASEParser.cpp; sourceTree = ""; }; - 3AF45A910E4B716800207D74 /* ASEParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASEParser.h; sourceTree = ""; }; - 3AF45AA90E4B716800207D74 /* HalfLifeFileData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HalfLifeFileData.h; sourceTree = ""; }; - 3AF45AAB0E4B716800207D74 /* HMPLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HMPLoader.cpp; sourceTree = ""; }; - 3AF45AAC0E4B716800207D74 /* HMPLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMPLoader.h; sourceTree = ""; }; - 3AF45AB80E4B716800207D74 /* MD2FileData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MD2FileData.h; sourceTree = ""; }; - 3AF45AB90E4B716800207D74 /* MD2Loader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MD2Loader.cpp; sourceTree = ""; }; - 3AF45ABA0E4B716800207D74 /* MD2Loader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MD2Loader.h; sourceTree = ""; }; - 3AF45ABB0E4B716800207D74 /* MD2NormalTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MD2NormalTable.h; sourceTree = ""; }; - 3AF45ABC0E4B716800207D74 /* MD3FileData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MD3FileData.h; sourceTree = ""; }; - 3AF45ABD0E4B716800207D74 /* MD3Loader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MD3Loader.cpp; sourceTree = ""; }; - 3AF45ABE0E4B716800207D74 /* MD3Loader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MD3Loader.h; sourceTree = ""; }; - 3AF45AC20E4B716800207D74 /* MD5Loader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MD5Loader.cpp; sourceTree = ""; }; - 3AF45AC30E4B716800207D74 /* MD5Loader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MD5Loader.h; sourceTree = ""; }; - 3AF45AC40E4B716800207D74 /* MD5Parser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MD5Parser.cpp; sourceTree = ""; }; - 3AF45AC50E4B716800207D74 /* MD5Parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MD5Parser.h; sourceTree = ""; }; - 3AF45AC60E4B716800207D74 /* MDLDefaultColorMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDLDefaultColorMap.h; sourceTree = ""; }; - 3AF45AC70E4B716800207D74 /* MDLFileData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDLFileData.h; sourceTree = ""; }; - 3AF45AC80E4B716800207D74 /* MDLLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MDLLoader.cpp; sourceTree = ""; }; - 3AF45AC90E4B716800207D74 /* MDLLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDLLoader.h; sourceTree = ""; }; - 3AF45ACA0E4B716800207D74 /* MDLMaterialLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MDLMaterialLoader.cpp; sourceTree = ""; }; - 3AF45AD40E4B716800207D74 /* PlyLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlyLoader.cpp; sourceTree = ""; }; - 3AF45AD50E4B716800207D74 /* PlyLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlyLoader.h; sourceTree = ""; }; - 3AF45AD60E4B716800207D74 /* PlyParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlyParser.cpp; sourceTree = ""; }; - 3AF45AD70E4B716800207D74 /* PlyParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlyParser.h; sourceTree = ""; }; - 3AF45AE20E4B716800207D74 /* SMDLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SMDLoader.cpp; sourceTree = ""; }; - 3AF45AE30E4B716800207D74 /* SMDLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMDLoader.h; sourceTree = ""; }; - 3AF45AF40E4B716800207D74 /* XFileHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XFileHelper.h; sourceTree = ""; }; - 3AF45AF50E4B716800207D74 /* XFileImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XFileImporter.cpp; sourceTree = ""; }; - 3AF45AF60E4B716800207D74 /* XFileImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XFileImporter.h; sourceTree = ""; }; - 3AF45AF70E4B716800207D74 /* XFileParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XFileParser.cpp; sourceTree = ""; }; - 3AF45AF80E4B716800207D74 /* XFileParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XFileParser.h; sourceTree = ""; }; - 7411B14E11416D5E00BCD793 /* CSMLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CSMLoader.cpp; path = ../../code/CSMLoader.cpp; sourceTree = SOURCE_ROOT; }; - 7411B14F11416D5E00BCD793 /* CSMLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CSMLoader.h; path = ../../code/CSMLoader.h; sourceTree = SOURCE_ROOT; }; - 7411B15911416DDD00BCD793 /* LWSLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LWSLoader.cpp; path = ../../code/LWSLoader.cpp; sourceTree = SOURCE_ROOT; }; - 7411B15A11416DDD00BCD793 /* LWSLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LWSLoader.h; path = ../../code/LWSLoader.h; sourceTree = SOURCE_ROOT; }; - 7411B16311416DF400BCD793 /* LWOAnimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LWOAnimation.cpp; path = ../../code/LWOAnimation.cpp; sourceTree = SOURCE_ROOT; }; - 7411B16411416DF400BCD793 /* LWOAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LWOAnimation.h; path = ../../code/LWOAnimation.h; sourceTree = SOURCE_ROOT; }; - 7411B17011416E2500BCD793 /* MS3DLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MS3DLoader.cpp; path = ../../code/MS3DLoader.cpp; sourceTree = SOURCE_ROOT; }; - 7411B17111416E2500BCD793 /* MS3DLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MS3DLoader.h; path = ../../code/MS3DLoader.h; sourceTree = SOURCE_ROOT; }; - 7411B18B11416EBC00BCD793 /* UnrealLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UnrealLoader.cpp; path = ../../code/UnrealLoader.cpp; sourceTree = SOURCE_ROOT; }; - 7411B18C11416EBC00BCD793 /* UnrealLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UnrealLoader.h; path = ../../code/UnrealLoader.h; sourceTree = SOURCE_ROOT; }; - 74C9BB4911ACBB1000AF885C /* BlenderDNA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BlenderDNA.cpp; path = ../../code/BlenderDNA.cpp; sourceTree = SOURCE_ROOT; }; - 74C9BB4A11ACBB1000AF885C /* BlenderDNA.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BlenderDNA.h; path = ../../code/BlenderDNA.h; sourceTree = SOURCE_ROOT; }; - 74C9BB4B11ACBB1000AF885C /* BlenderDNA.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = BlenderDNA.inl; path = ../../code/BlenderDNA.inl; sourceTree = SOURCE_ROOT; }; - 74C9BB4C11ACBB1000AF885C /* BlenderLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BlenderLoader.cpp; path = ../../code/BlenderLoader.cpp; sourceTree = SOURCE_ROOT; }; - 74C9BB4D11ACBB1000AF885C /* BlenderLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BlenderLoader.h; path = ../../code/BlenderLoader.h; sourceTree = SOURCE_ROOT; }; - 74C9BB4E11ACBB1000AF885C /* BlenderScene.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BlenderScene.cpp; path = ../../code/BlenderScene.cpp; sourceTree = SOURCE_ROOT; }; - 74C9BB4F11ACBB1000AF885C /* BlenderScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BlenderScene.h; path = ../../code/BlenderScene.h; sourceTree = SOURCE_ROOT; }; - 74C9BB5011ACBB1000AF885C /* BlenderSceneGen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BlenderSceneGen.h; path = ../../code/BlenderSceneGen.h; sourceTree = SOURCE_ROOT; }; - 74C9BB8611ACBB9900AF885C /* AssimpPCH.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AssimpPCH.cpp; path = ../../code/AssimpPCH.cpp; sourceTree = SOURCE_ROOT; }; - 74C9BB8711ACBB9900AF885C /* AssimpPCH.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AssimpPCH.h; path = ../../code/AssimpPCH.h; sourceTree = SOURCE_ROOT; }; - 74C9BB9311ACBBBC00AF885C /* COBLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = COBLoader.cpp; path = ../../code/COBLoader.cpp; sourceTree = SOURCE_ROOT; }; - 74C9BB9411ACBBBC00AF885C /* COBLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = COBLoader.h; path = ../../code/COBLoader.h; sourceTree = SOURCE_ROOT; }; - 74C9BB9511ACBBBC00AF885C /* COBScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = COBScene.h; path = ../../code/COBScene.h; sourceTree = SOURCE_ROOT; }; - 74C9BBB311ACBC2600AF885C /* revision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = revision.h; path = ../../revision.h; sourceTree = SOURCE_ROOT; }; - 8E7ABBA1127E0F1A00512ED1 /* Q3BSPFileData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Q3BSPFileData.h; path = ../../code/Q3BSPFileData.h; sourceTree = SOURCE_ROOT; }; - 8E7ABBA2127E0F1A00512ED1 /* Q3BSPFileImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Q3BSPFileImporter.cpp; path = ../../code/Q3BSPFileImporter.cpp; sourceTree = SOURCE_ROOT; }; - 8E7ABBA3127E0F1A00512ED1 /* Q3BSPFileImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Q3BSPFileImporter.h; path = ../../code/Q3BSPFileImporter.h; sourceTree = SOURCE_ROOT; }; - 8E7ABBA4127E0F1A00512ED1 /* Q3BSPFileParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Q3BSPFileParser.cpp; path = ../../code/Q3BSPFileParser.cpp; sourceTree = SOURCE_ROOT; }; - 8E7ABBA5127E0F1A00512ED1 /* Q3BSPFileParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Q3BSPFileParser.h; path = ../../code/Q3BSPFileParser.h; sourceTree = SOURCE_ROOT; }; - 8E7ABBA6127E0F1A00512ED1 /* Q3BSPZipArchive.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Q3BSPZipArchive.cpp; path = ../../code/Q3BSPZipArchive.cpp; sourceTree = SOURCE_ROOT; }; - 8E7ABBA7127E0F1A00512ED1 /* Q3BSPZipArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Q3BSPZipArchive.h; path = ../../code/Q3BSPZipArchive.h; sourceTree = SOURCE_ROOT; }; - 8E7ABBC4127E0F2A00512ED1 /* NDOLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NDOLoader.cpp; path = ../../code/NDOLoader.cpp; sourceTree = SOURCE_ROOT; }; - 8E7ABBC5127E0F2A00512ED1 /* NDOLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NDOLoader.h; path = ../../code/NDOLoader.h; sourceTree = SOURCE_ROOT; }; - 8E7ABBCE127E0F3800512ED1 /* BlenderIntermediate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BlenderIntermediate.h; path = ../../code/BlenderIntermediate.h; sourceTree = SOURCE_ROOT; }; - 8E7ABBCF127E0F3800512ED1 /* BlenderModifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BlenderModifier.cpp; path = ../../code/BlenderModifier.cpp; sourceTree = SOURCE_ROOT; }; - 8E7ABBD0127E0F3800512ED1 /* BlenderModifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BlenderModifier.h; path = ../../code/BlenderModifier.h; sourceTree = SOURCE_ROOT; }; - 8E8DEE4B127E2B78005EF64D /* ConvertUTF.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ConvertUTF.c; sourceTree = ""; }; - 8E8DEE4C127E2B78005EF64D /* ConvertUTF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConvertUTF.h; sourceTree = ""; }; - 8E8DEE4F127E2B78005EF64D /* CXMLReaderImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLReaderImpl.h; sourceTree = ""; }; - 8E8DEE50127E2B78005EF64D /* heapsort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = heapsort.h; sourceTree = ""; }; - 8E8DEE51127E2B78005EF64D /* irrArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = irrArray.h; sourceTree = ""; }; - 8E8DEE52127E2B78005EF64D /* irrString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = irrString.h; sourceTree = ""; }; - 8E8DEE53127E2B78005EF64D /* irrTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = irrTypes.h; sourceTree = ""; }; - 8E8DEE54127E2B78005EF64D /* irrXML.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = irrXML.cpp; sourceTree = ""; }; - 8E8DEE55127E2B78005EF64D /* irrXML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = irrXML.h; sourceTree = ""; }; - 8E8DEE57127E2B78005EF64D /* crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; - 8E8DEE58127E2B78005EF64D /* ioapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; - 8E8DEE59127E2B78005EF64D /* ioapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; - 8E8DEE5A127E2B78005EF64D /* unzip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; - 8E8DEE5B127E2B78005EF64D /* unzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; - 8E8DEEA3127E2D59005EF64D /* libassimpd.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libassimpd.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; - 8E8DEEA4127E2D59005EF64D /* libassimpd.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libassimpd.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 8E8DEEA5127E2D59005EF64D /* libassimpd.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libassimpd.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; - 8E8DEEA6127E2D59005EF64D /* libassimpd.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libassimpd.a; sourceTree = BUILT_PRODUCTS_DIR; }; - B919763F163AEA54009C397B /* libassimp-ios.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libassimp-ios.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - F90BAFD00F5DD87000124155 /* ACLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ACLoader.cpp; sourceTree = ""; }; - F90BAFD10F5DD87000124155 /* ACLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACLoader.h; sourceTree = ""; }; - F90BAFD90F5DD90800124155 /* IRRLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IRRLoader.cpp; sourceTree = ""; }; - F90BAFDA0F5DD90800124155 /* IRRLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IRRLoader.h; sourceTree = ""; }; - F90BAFDB0F5DD90800124155 /* IRRMeshLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IRRMeshLoader.cpp; sourceTree = ""; }; - F90BAFDC0F5DD90800124155 /* IRRMeshLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IRRMeshLoader.h; sourceTree = ""; }; - F90BAFDD0F5DD90800124155 /* IRRShared.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IRRShared.cpp; sourceTree = ""; }; - F90BAFDE0F5DD90800124155 /* IRRShared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IRRShared.h; sourceTree = ""; }; - F90BAFF50F5DD96100124155 /* NFFLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NFFLoader.h; sourceTree = ""; }; - F90BAFF60F5DD96100124155 /* NFFLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NFFLoader.cpp; sourceTree = ""; }; - F90BB0060F5DD9DD00124155 /* Q3DLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Q3DLoader.cpp; sourceTree = ""; }; - F90BB0070F5DD9DD00124155 /* Q3DLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Q3DLoader.h; sourceTree = ""; }; - F90BB00C0F5DD9F400124155 /* BVHLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BVHLoader.h; sourceTree = ""; }; - F90BB00D0F5DD9F400124155 /* BVHLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BVHLoader.cpp; sourceTree = ""; }; - F90BB0130F5DDA1400124155 /* OFFLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OFFLoader.h; sourceTree = ""; }; - F90BB0140F5DDA1400124155 /* OFFLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OFFLoader.cpp; sourceTree = ""; }; - F90BB01B0F5DDA4400124155 /* RawLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RawLoader.h; sourceTree = ""; }; - F90BB01C0F5DDA4400124155 /* RawLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RawLoader.cpp; sourceTree = ""; }; - F90BB0210F5DDA5700124155 /* DXFLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DXFLoader.h; sourceTree = ""; }; - F90BB0220F5DDA5700124155 /* DXFLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DXFLoader.cpp; sourceTree = ""; }; - F90BB0270F5DDA9200124155 /* LWOBLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LWOBLoader.cpp; sourceTree = ""; }; - F90BB02F0F5DDAB500124155 /* TerragenLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TerragenLoader.h; sourceTree = ""; }; - F90BB0300F5DDAB500124155 /* TerragenLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TerragenLoader.cpp; sourceTree = ""; }; - F90BB0360F5DDB1B00124155 /* irrXMLWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = irrXMLWrapper.h; sourceTree = ""; }; - F90BB0870F5DDE0700124155 /* B3DImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = B3DImporter.h; path = ../../code/B3DImporter.h; sourceTree = SOURCE_ROOT; }; - F90BB0880F5DDE0700124155 /* B3DImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = B3DImporter.cpp; path = ../../code/B3DImporter.cpp; sourceTree = SOURCE_ROOT; }; - F9607047154366AB004D91DD /* adler32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; - F9607049154366AB004D91DD /* compress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; - F960704A154366AB004D91DD /* crc32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; - F960704B154366AB004D91DD /* crc32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; - F960704C154366AB004D91DD /* deflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; - F960704D154366AB004D91DD /* deflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; - F960704E154366AB004D91DD /* inffast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; - F960704F154366AB004D91DD /* inffast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; - F9607050154366AB004D91DD /* inffixed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; - F9607051154366AB004D91DD /* inflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; - F9607052154366AB004D91DD /* inflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; - F9607053154366AB004D91DD /* inftrees.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; - F9607054154366AB004D91DD /* inftrees.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; - F9607056154366AB004D91DD /* trees.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; - F9607057154366AB004D91DD /* trees.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; - F9607058154366AB004D91DD /* zconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; - F9607059154366AB004D91DD /* zconf.in.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zconf.in.h; sourceTree = ""; }; - F960705A154366AB004D91DD /* zlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; - F960705B154366AB004D91DD /* zutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; - F960705C154366AB004D91DD /* zutil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; - F96070B5154366ED004D91DD /* XGLLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = XGLLoader.cpp; path = ../../code/XGLLoader.cpp; sourceTree = SOURCE_ROOT; }; - F96070B6154366ED004D91DD /* XGLLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XGLLoader.h; path = ../../code/XGLLoader.h; sourceTree = SOURCE_ROOT; }; - F96070C51543673B004D91DD /* clipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = clipper.cpp; sourceTree = ""; }; - F96070C61543673B004D91DD /* clipper.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = clipper.hpp; sourceTree = ""; }; - F96070D21543675E004D91DD /* shapes.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shapes.cc; sourceTree = ""; }; - F96070D31543675E004D91DD /* shapes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shapes.h; sourceTree = ""; }; - F96070D41543675E004D91DD /* utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = ""; }; - F96070D51543675E004D91DD /* poly2tri.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = poly2tri.h; sourceTree = ""; }; - F96070D71543675E004D91DD /* advancing_front.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = advancing_front.cc; sourceTree = ""; }; - F96070D81543675E004D91DD /* advancing_front.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = advancing_front.h; sourceTree = ""; }; - F96070D91543675E004D91DD /* cdt.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cdt.cc; sourceTree = ""; }; - F96070DA1543675E004D91DD /* cdt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cdt.h; sourceTree = ""; }; - F96070DB1543675E004D91DD /* sweep.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sweep.cc; sourceTree = ""; }; - F96070DC1543675E004D91DD /* sweep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sweep.h; sourceTree = ""; }; - F96070DD1543675E004D91DD /* sweep_context.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sweep_context.cc; sourceTree = ""; }; - F96070DE1543675E004D91DD /* sweep_context.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sweep_context.h; sourceTree = ""; }; - F97BA03515439DB3009EB9DD /* ai_assert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ai_assert.h; sourceTree = ""; }; - F99A9F3015436269000682F3 /* PlyExporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlyExporter.cpp; sourceTree = ""; }; - F99A9F3115436269000682F3 /* PlyExporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlyExporter.h; sourceTree = ""; }; - F9BA8B751543268400E63FFE /* anim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = anim.h; sourceTree = ""; }; - F9BA8B771543268400E63FFE /* camera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = camera.h; sourceTree = ""; }; - F9BA8B781543268400E63FFE /* cexport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cexport.h; sourceTree = ""; }; - F9BA8B791543268400E63FFE /* cfileio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfileio.h; sourceTree = ""; }; - F9BA8B7A1543268400E63FFE /* cimport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cimport.h; sourceTree = ""; }; - F9BA8B7B1543268400E63FFE /* color4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = color4.h; sourceTree = ""; }; - F9BA8B7C1543268400E63FFE /* color4.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = color4.inl; sourceTree = ""; }; - F9BA8B7E1543268400E63FFE /* poppack1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = poppack1.h; sourceTree = ""; }; - F9BA8B7F1543268400E63FFE /* pushpack1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pushpack1.h; sourceTree = ""; }; - F9BA8B801543268400E63FFE /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; - F9BA8B811543268400E63FFE /* DefaultLogger.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = DefaultLogger.hpp; sourceTree = ""; }; - F9BA8B821543268400E63FFE /* defs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = defs.h; sourceTree = ""; }; - F9BA8B831543268400E63FFE /* Exporter.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Exporter.hpp; sourceTree = ""; }; - F9BA8B841543268400E63FFE /* Importer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Importer.hpp; sourceTree = ""; }; - F9BA8B851543268400E63FFE /* importerdesc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = importerdesc.h; sourceTree = ""; }; - F9BA8B861543268400E63FFE /* IOStream.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = IOStream.hpp; sourceTree = ""; }; - F9BA8B871543268400E63FFE /* IOSystem.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = IOSystem.hpp; sourceTree = ""; }; - F9BA8B881543268400E63FFE /* light.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = light.h; sourceTree = ""; }; - F9BA8B891543268400E63FFE /* Logger.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Logger.hpp; sourceTree = ""; }; - F9BA8B8A1543268400E63FFE /* LogStream.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = LogStream.hpp; sourceTree = ""; }; - F9BA8B8B1543268400E63FFE /* material.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = material.h; sourceTree = ""; }; - F9BA8B8C1543268400E63FFE /* material.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = material.inl; sourceTree = ""; }; - F9BA8B8D1543268400E63FFE /* matrix3x3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = matrix3x3.h; sourceTree = ""; }; - F9BA8B8E1543268400E63FFE /* matrix3x3.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = matrix3x3.inl; sourceTree = ""; }; - F9BA8B8F1543268400E63FFE /* matrix4x4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = matrix4x4.h; sourceTree = ""; }; - F9BA8B901543268400E63FFE /* matrix4x4.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = matrix4x4.inl; sourceTree = ""; }; - F9BA8B911543268400E63FFE /* mesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mesh.h; sourceTree = ""; }; - F9BA8B921543268400E63FFE /* NullLogger.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = NullLogger.hpp; sourceTree = ""; }; - F9BA8B931543268400E63FFE /* postprocess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = postprocess.h; sourceTree = ""; }; - F9BA8B941543268400E63FFE /* ProgressHandler.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = ProgressHandler.hpp; sourceTree = ""; }; - F9BA8B951543268400E63FFE /* quaternion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quaternion.h; sourceTree = ""; }; - F9BA8B961543268400E63FFE /* quaternion.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = quaternion.inl; sourceTree = ""; }; - F9BA8B971543268400E63FFE /* scene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scene.h; sourceTree = ""; }; - F9BA8B981543268400E63FFE /* texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = texture.h; sourceTree = ""; }; - F9BA8B991543268400E63FFE /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; - F9BA8B9A1543268400E63FFE /* vector2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector2.h; sourceTree = ""; }; - F9BA8B9B1543268400E63FFE /* vector2.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vector2.inl; sourceTree = ""; }; - F9BA8B9C1543268400E63FFE /* vector3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector3.h; sourceTree = ""; }; - F9BA8B9D1543268400E63FFE /* vector3.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vector3.inl; sourceTree = ""; }; - F9BA8B9E1543268400E63FFE /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; - F9BA8C35154328B600E63FFE /* OgreImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OgreImporter.cpp; path = ../../code/OgreImporter.cpp; sourceTree = SOURCE_ROOT; }; - F9BA8C36154328B600E63FFE /* OgreImporter.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = OgreImporter.hpp; path = ../../code/OgreImporter.hpp; sourceTree = SOURCE_ROOT; }; - F9BA8C37154328B600E63FFE /* OgreMaterial.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OgreMaterial.cpp; path = ../../code/OgreMaterial.cpp; sourceTree = SOURCE_ROOT; }; - F9BA8C38154328B600E63FFE /* OgreMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OgreMesh.cpp; path = ../../code/OgreMesh.cpp; sourceTree = SOURCE_ROOT; }; - F9BA8C39154328B600E63FFE /* OgreSkeleton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OgreSkeleton.cpp; path = ../../code/OgreSkeleton.cpp; sourceTree = SOURCE_ROOT; }; - F9BA8C3A154328B600E63FFE /* OgreXmlHelper.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = OgreXmlHelper.hpp; path = ../../code/OgreXmlHelper.hpp; sourceTree = SOURCE_ROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 745FF8AB113ECB080020C31B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2BA44E13170862E400C78A66 /* libstdc++.dylib in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 745FF98E113ECC660020C31B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2BA44E14170862EA00C78A66 /* libstdc++.dylib in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B91975B4163AEA54009C397B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2BA44E1A1708680600C78A66 /* libstdc++.dylib in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D2AAC09B05546B4700DB518D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2BA44E11170862D800C78A66 /* libstdc++.dylib in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F962E8820F5DE66A009A5495 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2BA44E12170862DE00C78A66 /* libstdc++.dylib in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 034768DDFF38A45A11DB9C8B /* Products */ = { - isa = PBXGroup; - children = ( - 8E8DEEA3127E2D59005EF64D /* libassimpd.dylib */, - 8E8DEEA4127E2D59005EF64D /* libassimpd.a */, - 8E8DEEA5127E2D59005EF64D /* libassimpd.dylib */, - 8E8DEEA6127E2D59005EF64D /* libassimpd.a */, - B919763F163AEA54009C397B /* libassimp-ios.a */, - ); - name = Products; - sourceTree = ""; - }; - 0867D691FE84028FC02AAC07 /* assimp */ = { - isa = PBXGroup; - children = ( - 08FB77ACFE841707C02AAC07 /* Source */, - F90BB0700F5DDD7000124155 /* 3rd party libs */, - 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, - 034768DDFF38A45A11DB9C8B /* Products */, - ); - name = assimp; - sourceTree = ""; - }; - 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - 2BA44E10170862D800C78A66 /* libstdc++.dylib */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 08FB77ACFE841707C02AAC07 /* Source */ = { - isa = PBXGroup; - children = ( - 2B7F45621708365100A106A9 /* code */, - F90BB0830F5DDDC700124155 /* importers */, - 3AF45A520E4B715000207D74 /* include */, - 74C9BB8611ACBB9900AF885C /* AssimpPCH.cpp */, - 74C9BB8711ACBB9900AF885C /* AssimpPCH.h */, - 74C9BBB311ACBC2600AF885C /* revision.h */, - ); - name = Source; - sourceTree = ""; - }; - 2B7F45621708365100A106A9 /* code */ = { - isa = PBXGroup; - children = ( - 2B7F45841708365100A106A9 /* BoostWorkaround */, - 2B7F456D1708365100A106A9 /* assbin_chunks.h */, - 2B7F456E1708365100A106A9 /* Assimp.cpp */, - 2B7F456F1708365100A106A9 /* AssimpCExport.cpp */, - 2B7F45741708365100A106A9 /* BaseImporter.cpp */, - 2B7F45751708365100A106A9 /* BaseImporter.h */, - 2B7F45761708365100A106A9 /* BaseProcess.cpp */, - 2B7F45771708365100A106A9 /* BaseProcess.h */, - 2B7F45831708365100A106A9 /* BlobIOSystem.h */, - 2B7F45991708365100A106A9 /* ByteSwapper.h */, - 2B7F459A1708365100A106A9 /* CalcTangentsProcess.cpp */, - 2B7F459B1708365100A106A9 /* CalcTangentsProcess.h */, - 2B7F459C1708365100A106A9 /* CInterfaceIOWrapper.h */, - 2B7F45A81708365100A106A9 /* ComputeUVMappingProcess.cpp */, - 2B7F45A91708365100A106A9 /* ComputeUVMappingProcess.h */, - 2B7F45AA1708365100A106A9 /* ConvertToLHProcess.cpp */, - 2B7F45AB1708365100A106A9 /* ConvertToLHProcess.h */, - 2B7F45AE1708365100A106A9 /* DeboneProcess.cpp */, - 2B7F45AF1708365100A106A9 /* DeboneProcess.h */, - 2B7F45B01708365100A106A9 /* DefaultIOStream.cpp */, - 2B7F45B11708365100A106A9 /* DefaultIOStream.h */, - 2B7F45B21708365100A106A9 /* DefaultIOSystem.cpp */, - 2B7F45B31708365100A106A9 /* DefaultIOSystem.h */, - 2B7F45B41708365100A106A9 /* DefaultLogger.cpp */, - 2B7F45B51708365100A106A9 /* DefaultProgressHandler.h */, - 2B7F45B91708365100A106A9 /* Exceptional.h */, - 2B7F45BA1708365100A106A9 /* Exporter.cpp */, - 2B7F45BB1708365100A106A9 /* fast_atof.h */, - 2B7F45BC1708365100A106A9 /* FBXAnimation.cpp */, - 2B7F45BD1708365100A106A9 /* FBXBinaryTokenizer.cpp */, - 2B7F45BE1708365100A106A9 /* FBXCompileConfig.h */, - 2B7F45BF1708365100A106A9 /* FBXConverter.cpp */, - 2B7F45C01708365100A106A9 /* FBXConverter.h */, - 2B7F45C11708365100A106A9 /* FBXDeformer.cpp */, - 2B7F45C21708365100A106A9 /* FBXDocument.cpp */, - 2B7F45C31708365100A106A9 /* FBXDocument.h */, - 2B7F45C41708365100A106A9 /* FBXDocumentUtil.cpp */, - 2B7F45C51708365100A106A9 /* FBXDocumentUtil.h */, - 2B7F45C61708365100A106A9 /* FBXImporter.cpp */, - 2B7F45C71708365100A106A9 /* FBXImporter.h */, - 2B7F45C81708365100A106A9 /* FBXImportSettings.h */, - 2B7F45C91708365100A106A9 /* FBXMaterial.cpp */, - 2B7F45CA1708365100A106A9 /* FBXMeshGeometry.cpp */, - 2B7F45CB1708365100A106A9 /* FBXModel.cpp */, - 2B7F45CC1708365100A106A9 /* FBXNodeAttribute.cpp */, - 2B7F45CD1708365100A106A9 /* FBXParser.cpp */, - 2B7F45CE1708365100A106A9 /* FBXParser.h */, - 2B7F45CF1708365100A106A9 /* FBXProperties.cpp */, - 2B7F45D01708365100A106A9 /* FBXProperties.h */, - 2B7F45D11708365100A106A9 /* FBXTokenizer.cpp */, - 2B7F45D21708365100A106A9 /* FBXTokenizer.h */, - 2B7F45D31708365100A106A9 /* FBXUtil.cpp */, - 2B7F45D41708365100A106A9 /* FBXUtil.h */, - 2B7F45D51708365100A106A9 /* FileLogStream.h */, - 2B7F45D61708365100A106A9 /* FileSystemFilter.h */, - 2B7F45D71708365100A106A9 /* FindDegenerates.cpp */, - 2B7F45D81708365100A106A9 /* FindDegenerates.h */, - 2B7F45D91708365100A106A9 /* FindInstancesProcess.cpp */, - 2B7F45DA1708365100A106A9 /* FindInstancesProcess.h */, - 2B7F45DB1708365100A106A9 /* FindInvalidDataProcess.cpp */, - 2B7F45DC1708365100A106A9 /* FindInvalidDataProcess.h */, - 2B7F45DD1708365100A106A9 /* FixNormalsStep.cpp */, - 2B7F45DE1708365100A106A9 /* FixNormalsStep.h */, - 2B7F45DF1708365100A106A9 /* GenericProperty.h */, - 2B7F45E01708365100A106A9 /* GenFaceNormalsProcess.cpp */, - 2B7F45E11708365100A106A9 /* GenFaceNormalsProcess.h */, - 2B7F45E21708365100A106A9 /* GenVertexNormalsProcess.cpp */, - 2B7F45E31708365100A106A9 /* GenVertexNormalsProcess.h */, - 2B7F45E51708365100A106A9 /* Hash.h */, - 2B7F45F51708365100A106A9 /* IFF.h */, - 2B7F45F61708365100A106A9 /* Importer.cpp */, - 2B7F45F71708365100A106A9 /* Importer.h */, - 2B7F45F81708365100A106A9 /* ImporterRegistry.cpp */, - 2B7F45F91708365100A106A9 /* ImproveCacheLocality.cpp */, - 2B7F45FA1708365100A106A9 /* ImproveCacheLocality.h */, - 2B7F46021708365100A106A9 /* JoinVerticesProcess.cpp */, - 2B7F46031708365100A106A9 /* JoinVerticesProcess.h */, - 2B7F46041708365100A106A9 /* LimitBoneWeightsProcess.cpp */, - 2B7F46051708365100A106A9 /* LimitBoneWeightsProcess.h */, - 2B7F46061708365100A106A9 /* LineSplitter.h */, - 2B7F46071708365100A106A9 /* LogAux.h */, - 2B7F46141708365200A106A9 /* MakeVerboseFormat.cpp */, - 2B7F46151708365200A106A9 /* MakeVerboseFormat.h */, - 2B7F46161708365200A106A9 /* MaterialSystem.cpp */, - 2B7F46171708365200A106A9 /* MaterialSystem.h */, - 2B7F461F1708365200A106A9 /* MD4FileData.h */, - 2B7F462D1708365200A106A9 /* MemoryIOWrapper.h */, - 2B7F46461708365200A106A9 /* OptimizeGraph.cpp */, - 2B7F46471708365200A106A9 /* OptimizeGraph.h */, - 2B7F46481708365200A106A9 /* OptimizeMeshes.cpp */, - 2B7F46491708365200A106A9 /* OptimizeMeshes.h */, - 2B7F464A1708365200A106A9 /* ParsingUtils.h */, - 2B7F46511708365200A106A9 /* PolyTools.h */, - 2B7F46521708365200A106A9 /* PostStepRegistry.cpp */, - 2B7F46531708365200A106A9 /* PretransformVertices.cpp */, - 2B7F46541708365200A106A9 /* PretransformVertices.h */, - 2B7F46551708365200A106A9 /* ProcessHelper.cpp */, - 2B7F46561708365200A106A9 /* ProcessHelper.h */, - 2B7F46571708365200A106A9 /* Profiler.h */, - 2B7F46581708365200A106A9 /* pstdint.h */, - 2B7F46621708365200A106A9 /* qnan.h */, - 2B7F46651708365200A106A9 /* RemoveComments.cpp */, - 2B7F46661708365200A106A9 /* RemoveComments.h */, - 2B7F46671708365200A106A9 /* RemoveRedundantMaterials.cpp */, - 2B7F46681708365200A106A9 /* RemoveRedundantMaterials.h */, - 2B7F46691708365200A106A9 /* RemoveVCProcess.cpp */, - 2B7F466A1708365200A106A9 /* RemoveVCProcess.h */, - 2B7F466E1708365200A106A9 /* SceneCombiner.cpp */, - 2B7F466F1708365200A106A9 /* SceneCombiner.h */, - 2B7F46701708365200A106A9 /* ScenePreprocessor.cpp */, - 2B7F46711708365200A106A9 /* ScenePreprocessor.h */, - 2B7F46721708365200A106A9 /* ScenePrivate.h */, - 2B7F46731708365200A106A9 /* SGSpatialSort.cpp */, - 2B7F46741708365200A106A9 /* SGSpatialSort.h */, - 2B7F46751708365200A106A9 /* SkeletonMeshBuilder.cpp */, - 2B7F46761708365200A106A9 /* SkeletonMeshBuilder.h */, - 2B7F46791708365200A106A9 /* SmoothingGroups.h */, - 2B7F467A1708365200A106A9 /* SmoothingGroups.inl */, - 2B7F467B1708365200A106A9 /* SortByPTypeProcess.cpp */, - 2B7F467C1708365200A106A9 /* SortByPTypeProcess.h */, - 2B7F467D1708365200A106A9 /* SpatialSort.cpp */, - 2B7F467E1708365200A106A9 /* SpatialSort.h */, - 2B7F467F1708365200A106A9 /* SplitByBoneCountProcess.cpp */, - 2B7F46801708365200A106A9 /* SplitByBoneCountProcess.h */, - 2B7F46811708365200A106A9 /* SplitLargeMeshes.cpp */, - 2B7F46821708365200A106A9 /* SplitLargeMeshes.h */, - 2B7F46831708365200A106A9 /* StandardShapes.cpp */, - 2B7F46841708365200A106A9 /* StandardShapes.h */, - 2B7F46851708365200A106A9 /* StdOStreamLogStream.h */, - 2B7F468F1708365200A106A9 /* StreamReader.h */, - 2B7F46901708365200A106A9 /* StringComparison.h */, - 2B7F46911708365200A106A9 /* Subdivision.cpp */, - 2B7F46921708365200A106A9 /* Subdivision.h */, - 2B7F46931708365200A106A9 /* TargetAnimation.cpp */, - 2B7F46941708365200A106A9 /* TargetAnimation.h */, - 2B7F46971708365200A106A9 /* TextureTransform.cpp */, - 2B7F46981708365200A106A9 /* TextureTransform.h */, - 2B7F46991708365200A106A9 /* TinyFormatter.h */, - 2B7F469A1708365200A106A9 /* TriangulateProcess.cpp */, - 2B7F469B1708365200A106A9 /* TriangulateProcess.h */, - 2B7F469E1708365200A106A9 /* ValidateDataStructure.cpp */, - 2B7F469F1708365200A106A9 /* ValidateDataStructure.h */, - 2B7F46A01708365200A106A9 /* Vertex.h */, - 2B7F46A11708365200A106A9 /* VertexTriangleAdjacency.cpp */, - 2B7F46A21708365200A106A9 /* VertexTriangleAdjacency.h */, - 2B7F46A31708365200A106A9 /* Win32DebugLogStream.h */, - ); - name = code; - path = ../../code; - sourceTree = ""; - }; - 2B7F45841708365100A106A9 /* BoostWorkaround */ = { - isa = PBXGroup; - children = ( - 2B7F45851708365100A106A9 /* boost */, - ); - path = BoostWorkaround; - sourceTree = ""; - }; - 2B7F45851708365100A106A9 /* boost */ = { - isa = PBXGroup; - children = ( - 2B7F45861708365100A106A9 /* foreach.hpp */, - 2B7F45871708365100A106A9 /* format.hpp */, - 2B7F45881708365100A106A9 /* lexical_cast.hpp */, - 2B7F45891708365100A106A9 /* LICENSE_1_0.txt */, - 2B7F458A1708365100A106A9 /* make_shared.hpp */, - 2B7F458B1708365100A106A9 /* math */, - 2B7F458D1708365100A106A9 /* noncopyable.hpp */, - 2B7F458E1708365100A106A9 /* pointer_cast.hpp */, - 2B7F458F1708365100A106A9 /* scoped_array.hpp */, - 2B7F45901708365100A106A9 /* scoped_ptr.hpp */, - 2B7F45911708365100A106A9 /* shared_array.hpp */, - 2B7F45921708365100A106A9 /* shared_ptr.hpp */, - 2B7F45931708365100A106A9 /* static_assert.hpp */, - 2B7F45941708365100A106A9 /* timer.hpp */, - 2B7F45951708365100A106A9 /* tuple */, - ); - path = boost; - sourceTree = ""; - }; - 2B7F458B1708365100A106A9 /* math */ = { - isa = PBXGroup; - children = ( - 2B7F458C1708365100A106A9 /* common_factor_rt.hpp */, - ); - path = math; - sourceTree = ""; - }; - 2B7F45951708365100A106A9 /* tuple */ = { - isa = PBXGroup; - children = ( - 2B7F45961708365100A106A9 /* tuple.hpp */, - ); - path = tuple; - sourceTree = ""; - }; - 3AB8A3A70E50D59500606590 /* MDC */ = { - isa = PBXGroup; - children = ( - 3AB8A3AB0E50D67A00606590 /* MDCFileData.h */, - 3AB8A3AC0E50D67A00606590 /* MDCLoader.cpp */, - 3AB8A3AD0E50D67A00606590 /* MDCLoader.h */, - 3AB8A3AE0E50D67A00606590 /* MDCNormalTable.h */, - ); - name = MDC; - path = ../../code; - sourceTree = ""; - }; - 3AB8A3A80E50D5F400606590 /* LWO */ = { - isa = PBXGroup; - children = ( - 7411B16311416DF400BCD793 /* LWOAnimation.cpp */, - 7411B16411416DF400BCD793 /* LWOAnimation.h */, - F90BB0270F5DDA9200124155 /* LWOBLoader.cpp */, - 3AB8A3B70E50D6DB00606590 /* LWOFileData.h */, - 3AB8A3B80E50D6DB00606590 /* LWOLoader.cpp */, - 3AB8A3B90E50D6DB00606590 /* LWOLoader.h */, - 3AB8A7DC0E53715F00606590 /* LWOMaterial.cpp */, - ); - name = LWO; - path = ../../code; - sourceTree = ""; - }; - 3AF45A520E4B715000207D74 /* include */ = { - isa = PBXGroup; - children = ( - F9BA8B741543268400E63FFE /* assimp */, - ); - name = include; - path = ../../include; - sourceTree = SOURCE_ROOT; - }; - 3AF45B690E4B722000207D74 /* 3DS */ = { - isa = PBXGroup; - children = ( - 3AF45A860E4B716800207D74 /* 3DSConverter.cpp */, - 3AF45A880E4B716800207D74 /* 3DSHelper.h */, - 3AF45A890E4B716800207D74 /* 3DSLoader.cpp */, - 3AF45A8A0E4B716800207D74 /* 3DSLoader.h */, - ); - name = 3DS; - path = ../../code; - sourceTree = ""; - }; - 3AF45B6A0E4B726700207D74 /* ASE */ = { - isa = PBXGroup; - children = ( - 3AF45A8E0E4B716800207D74 /* ASELoader.cpp */, - 3AF45A8F0E4B716800207D74 /* ASELoader.h */, - 3AF45A900E4B716800207D74 /* ASEParser.cpp */, - 3AF45A910E4B716800207D74 /* ASEParser.h */, - ); - name = ASE; - path = ../../code; - sourceTree = ""; - }; - 3AF45B6C0E4B72C600207D74 /* HMP */ = { - isa = PBXGroup; - children = ( - 3AB8A3C50E50D77900606590 /* HMPFileData.h */, - 3AF45AAB0E4B716800207D74 /* HMPLoader.cpp */, - 3AF45AAC0E4B716800207D74 /* HMPLoader.h */, - ); - name = HMP; - path = ../../code; - sourceTree = ""; - }; - 3AF45B870E4B74DA00207D74 /* MD2 */ = { - isa = PBXGroup; - children = ( - 3AF45AB80E4B716800207D74 /* MD2FileData.h */, - 3AF45AB90E4B716800207D74 /* MD2Loader.cpp */, - 3AF45ABA0E4B716800207D74 /* MD2Loader.h */, - 3AF45ABB0E4B716800207D74 /* MD2NormalTable.h */, - ); - name = MD2; - path = ../../code; - sourceTree = ""; - }; - 3AF45B880E4B751000207D74 /* MD3 */ = { - isa = PBXGroup; - children = ( - 3AF45ABC0E4B716800207D74 /* MD3FileData.h */, - 3AF45ABD0E4B716800207D74 /* MD3Loader.cpp */, - 3AF45ABE0E4B716800207D74 /* MD3Loader.h */, - ); - name = MD3; - path = ../../code; - sourceTree = ""; - }; - 3AF45B8A0E4B755E00207D74 /* MD5 */ = { - isa = PBXGroup; - children = ( - 3AF45AC20E4B716800207D74 /* MD5Loader.cpp */, - 3AF45AC30E4B716800207D74 /* MD5Loader.h */, - 3AF45AC40E4B716800207D74 /* MD5Parser.cpp */, - 3AF45AC50E4B716800207D74 /* MD5Parser.h */, - ); - name = MD5; - path = ../../code; - sourceTree = ""; - }; - 3AF45B8B0E4B75BC00207D74 /* MDL */ = { - isa = PBXGroup; - children = ( - 3AF45AA90E4B716800207D74 /* HalfLifeFileData.h */, - 3AF45AC60E4B716800207D74 /* MDLDefaultColorMap.h */, - 3AF45AC70E4B716800207D74 /* MDLFileData.h */, - 3AF45AC80E4B716800207D74 /* MDLLoader.cpp */, - 3AF45AC90E4B716800207D74 /* MDLLoader.h */, - 3AF45ACA0E4B716800207D74 /* MDLMaterialLoader.cpp */, - ); - name = MDL; - path = ../../code; - sourceTree = ""; - }; - 3AF45B8C0E4B75F200207D74 /* Obj */ = { - isa = PBXGroup; - children = ( - 2B7F46341708365200A106A9 /* ObjExporter.cpp */, - 2B7F46351708365200A106A9 /* ObjExporter.h */, - 2B7F46361708365200A106A9 /* ObjFileData.h */, - 2B7F46371708365200A106A9 /* ObjFileImporter.cpp */, - 2B7F46381708365200A106A9 /* ObjFileImporter.h */, - 2B7F46391708365200A106A9 /* ObjFileMtlImporter.cpp */, - 2B7F463A1708365200A106A9 /* ObjFileMtlImporter.h */, - 2B7F463B1708365200A106A9 /* ObjFileParser.cpp */, - 2B7F463C1708365200A106A9 /* ObjFileParser.h */, - 2B7F463D1708365200A106A9 /* ObjTools.h */, - ); - name = Obj; - path = ../../code; - sourceTree = ""; - }; - 3AF45B8D0E4B761A00207D74 /* Ply */ = { - isa = PBXGroup; - children = ( - F99A9F3015436269000682F3 /* PlyExporter.cpp */, - F99A9F3115436269000682F3 /* PlyExporter.h */, - 3AF45AD40E4B716800207D74 /* PlyLoader.cpp */, - 3AF45AD50E4B716800207D74 /* PlyLoader.h */, - 3AF45AD60E4B716800207D74 /* PlyParser.cpp */, - 3AF45AD70E4B716800207D74 /* PlyParser.h */, - ); - name = Ply; - path = ../../code; - sourceTree = ""; - }; - 3AF45B8E0E4B764400207D74 /* SMD */ = { - isa = PBXGroup; - children = ( - 3AF45AE20E4B716800207D74 /* SMDLoader.cpp */, - 3AF45AE30E4B716800207D74 /* SMDLoader.h */, - ); - name = SMD; - path = ../../code; - sourceTree = ""; - }; - 3AF45B8F0E4B766700207D74 /* X */ = { - isa = PBXGroup; - children = ( - 3AF45AF40E4B716800207D74 /* XFileHelper.h */, - 3AF45AF50E4B716800207D74 /* XFileImporter.cpp */, - 3AF45AF60E4B716800207D74 /* XFileImporter.h */, - 3AF45AF70E4B716800207D74 /* XFileParser.cpp */, - 3AF45AF80E4B716800207D74 /* XFileParser.h */, - ); - name = X; - path = ../../code; - sourceTree = ""; - }; - 3AF45B910E4B77BE00207D74 /* STL */ = { - isa = PBXGroup; - children = ( - 2B7F468B1708365200A106A9 /* STLExporter.cpp */, - 2B7F468C1708365200A106A9 /* STLExporter.h */, - 2B7F468D1708365200A106A9 /* STLLoader.cpp */, - 2B7F468E1708365200A106A9 /* STLLoader.h */, - ); - name = STL; - path = ../../code; - sourceTree = ""; - }; - 7411B14711416C3F00BCD793 /* CSM */ = { - isa = PBXGroup; - children = ( - 7411B14E11416D5E00BCD793 /* CSMLoader.cpp */, - 7411B14F11416D5E00BCD793 /* CSMLoader.h */, - ); - name = CSM; - sourceTree = ""; - }; - 7411B15811416D6600BCD793 /* LWS */ = { - isa = PBXGroup; - children = ( - 7411B15911416DDD00BCD793 /* LWSLoader.cpp */, - 7411B15A11416DDD00BCD793 /* LWSLoader.h */, - ); - name = LWS; - sourceTree = ""; - }; - 7411B16F11416E0400BCD793 /* MS3D */ = { - isa = PBXGroup; - children = ( - 7411B17011416E2500BCD793 /* MS3DLoader.cpp */, - 7411B17111416E2500BCD793 /* MS3DLoader.h */, - ); - name = MS3D; - sourceTree = ""; - }; - 7411B17A11416E2E00BCD793 /* Ogre */ = { - isa = PBXGroup; - children = ( - F9BA8C35154328B600E63FFE /* OgreImporter.cpp */, - F9BA8C36154328B600E63FFE /* OgreImporter.hpp */, - F9BA8C37154328B600E63FFE /* OgreMaterial.cpp */, - F9BA8C38154328B600E63FFE /* OgreMesh.cpp */, - F9BA8C39154328B600E63FFE /* OgreSkeleton.cpp */, - F9BA8C3A154328B600E63FFE /* OgreXmlHelper.hpp */, - ); - name = Ogre; - sourceTree = ""; - }; - 7411B18A11416EA100BCD793 /* Unreal */ = { - isa = PBXGroup; - children = ( - 7411B18B11416EBC00BCD793 /* UnrealLoader.cpp */, - 7411B18C11416EBC00BCD793 /* UnrealLoader.h */, - ); - name = Unreal; - sourceTree = ""; - }; - 74C9BB4611ACBAE500AF885C /* Blender */ = { - isa = PBXGroup; - children = ( - 74C9BB4911ACBB1000AF885C /* BlenderDNA.cpp */, - 74C9BB4A11ACBB1000AF885C /* BlenderDNA.h */, - 74C9BB4B11ACBB1000AF885C /* BlenderDNA.inl */, - 8E7ABBCE127E0F3800512ED1 /* BlenderIntermediate.h */, - 74C9BB4C11ACBB1000AF885C /* BlenderLoader.cpp */, - 74C9BB4D11ACBB1000AF885C /* BlenderLoader.h */, - 8E7ABBCF127E0F3800512ED1 /* BlenderModifier.cpp */, - 8E7ABBD0127E0F3800512ED1 /* BlenderModifier.h */, - 74C9BB4E11ACBB1000AF885C /* BlenderScene.cpp */, - 74C9BB4F11ACBB1000AF885C /* BlenderScene.h */, - 74C9BB5011ACBB1000AF885C /* BlenderSceneGen.h */, - ); - name = Blender; - sourceTree = ""; - }; - 74C9BB9211ACBBA600AF885C /* COB */ = { - isa = PBXGroup; - children = ( - 74C9BB9311ACBBBC00AF885C /* COBLoader.cpp */, - 74C9BB9411ACBBBC00AF885C /* COBLoader.h */, - 74C9BB9511ACBBBC00AF885C /* COBScene.h */, - ); - name = COB; - sourceTree = ""; - }; - 8E7ABB99127E0EE000512ED1 /* NDO */ = { - isa = PBXGroup; - children = ( - 8E7ABBC4127E0F2A00512ED1 /* NDOLoader.cpp */, - 8E7ABBC5127E0F2A00512ED1 /* NDOLoader.h */, - ); - name = NDO; - sourceTree = ""; - }; - 8E7ABB9C127E0EFD00512ED1 /* Q3BSP */ = { - isa = PBXGroup; - children = ( - 8E7ABBA1127E0F1A00512ED1 /* Q3BSPFileData.h */, - 8E7ABBA2127E0F1A00512ED1 /* Q3BSPFileImporter.cpp */, - 8E7ABBA3127E0F1A00512ED1 /* Q3BSPFileImporter.h */, - 8E7ABBA4127E0F1A00512ED1 /* Q3BSPFileParser.cpp */, - 8E7ABBA5127E0F1A00512ED1 /* Q3BSPFileParser.h */, - 8E7ABBA6127E0F1A00512ED1 /* Q3BSPZipArchive.cpp */, - 8E7ABBA7127E0F1A00512ED1 /* Q3BSPZipArchive.h */, - ); - name = Q3BSP; - sourceTree = ""; - }; - 8E8DEE4A127E2B78005EF64D /* ConvertUTF */ = { - isa = PBXGroup; - children = ( - 8E8DEE4B127E2B78005EF64D /* ConvertUTF.c */, - 8E8DEE4C127E2B78005EF64D /* ConvertUTF.h */, - ); - path = ConvertUTF; - sourceTree = ""; - }; - 8E8DEE4E127E2B78005EF64D /* irrXML */ = { - isa = PBXGroup; - children = ( - 8E8DEE4F127E2B78005EF64D /* CXMLReaderImpl.h */, - 8E8DEE50127E2B78005EF64D /* heapsort.h */, - 8E8DEE51127E2B78005EF64D /* irrArray.h */, - 8E8DEE52127E2B78005EF64D /* irrString.h */, - 8E8DEE53127E2B78005EF64D /* irrTypes.h */, - 8E8DEE54127E2B78005EF64D /* irrXML.cpp */, - 8E8DEE55127E2B78005EF64D /* irrXML.h */, - ); - path = irrXML; - sourceTree = ""; - }; - 8E8DEE56127E2B78005EF64D /* unzip */ = { - isa = PBXGroup; - children = ( - 8E8DEE57127E2B78005EF64D /* crypt.h */, - 8E8DEE58127E2B78005EF64D /* ioapi.c */, - 8E8DEE59127E2B78005EF64D /* ioapi.h */, - 8E8DEE5A127E2B78005EF64D /* unzip.c */, - 8E8DEE5B127E2B78005EF64D /* unzip.h */, - ); - path = unzip; - sourceTree = ""; - }; - F90BAFCE0F5DD85F00124155 /* AC */ = { - isa = PBXGroup; - children = ( - F90BAFD00F5DD87000124155 /* ACLoader.cpp */, - F90BAFD10F5DD87000124155 /* ACLoader.h */, - ); - name = AC; - path = ../../code; - sourceTree = ""; - }; - F90BAFD40F5DD8F200124155 /* IRR */ = { - isa = PBXGroup; - children = ( - F90BAFD90F5DD90800124155 /* IRRLoader.cpp */, - F90BAFDA0F5DD90800124155 /* IRRLoader.h */, - F90BAFDB0F5DD90800124155 /* IRRMeshLoader.cpp */, - F90BAFDC0F5DD90800124155 /* IRRMeshLoader.h */, - F90BAFDD0F5DD90800124155 /* IRRShared.cpp */, - F90BAFDE0F5DD90800124155 /* IRRShared.h */, - F90BB0360F5DDB1B00124155 /* irrXMLWrapper.h */, - ); - name = IRR; - path = ../../code; - sourceTree = ""; - }; - F90BAFE60F5DD91F00124155 /* COLLADA */ = { - isa = PBXGroup; - children = ( - 2B7F45A11708365100A106A9 /* ColladaExporter.cpp */, - 2B7F45A21708365100A106A9 /* ColladaExporter.h */, - 2B7F45A31708365100A106A9 /* ColladaHelper.h */, - 2B7F45A41708365100A106A9 /* ColladaLoader.cpp */, - 2B7F45A51708365100A106A9 /* ColladaLoader.h */, - 2B7F45A61708365100A106A9 /* ColladaParser.cpp */, - 2B7F45A71708365100A106A9 /* ColladaParser.h */, - ); - name = COLLADA; - path = ../../code; - sourceTree = ""; - }; - F90BAFF30F5DD95600124155 /* NFF */ = { - isa = PBXGroup; - children = ( - F90BAFF50F5DD96100124155 /* NFFLoader.h */, - F90BAFF60F5DD96100124155 /* NFFLoader.cpp */, - ); - name = NFF; - path = ../../code; - sourceTree = ""; - }; - F90BB0040F5DD9CD00124155 /* Q3D */ = { - isa = PBXGroup; - children = ( - F90BB0060F5DD9DD00124155 /* Q3DLoader.cpp */, - F90BB0070F5DD9DD00124155 /* Q3DLoader.h */, - ); - name = Q3D; - path = ../../code; - sourceTree = ""; - }; - F90BB00A0F5DD9E800124155 /* BVH */ = { - isa = PBXGroup; - children = ( - F90BB00C0F5DD9F400124155 /* BVHLoader.h */, - F90BB00D0F5DD9F400124155 /* BVHLoader.cpp */, - ); - name = BVH; - path = ../../code; - sourceTree = ""; - }; - F90BB0110F5DDA0B00124155 /* OFF */ = { - isa = PBXGroup; - children = ( - F90BB0130F5DDA1400124155 /* OFFLoader.h */, - F90BB0140F5DDA1400124155 /* OFFLoader.cpp */, - ); - name = OFF; - path = ../../code; - sourceTree = ""; - }; - F90BB0190F5DDA3100124155 /* RAW */ = { - isa = PBXGroup; - children = ( - F90BB01B0F5DDA4400124155 /* RawLoader.h */, - F90BB01C0F5DDA4400124155 /* RawLoader.cpp */, - ); - name = RAW; - path = ../../code; - sourceTree = ""; - }; - F90BB01F0F5DDA4A00124155 /* DXF */ = { - isa = PBXGroup; - children = ( - F90BB0210F5DDA5700124155 /* DXFLoader.h */, - F90BB0220F5DDA5700124155 /* DXFLoader.cpp */, - ); - name = DXF; - path = ../../code; - sourceTree = ""; - }; - F90BB02A0F5DDAA900124155 /* Terragen */ = { - isa = PBXGroup; - children = ( - F90BB02F0F5DDAB500124155 /* TerragenLoader.h */, - F90BB0300F5DDAB500124155 /* TerragenLoader.cpp */, - ); - name = Terragen; - path = ../../code; - sourceTree = ""; - }; - F90BB0700F5DDD7000124155 /* 3rd party libs */ = { - isa = PBXGroup; - children = ( - F96070C41543673B004D91DD /* clipper */, - 8E8DEE4A127E2B78005EF64D /* ConvertUTF */, - 8E8DEE4E127E2B78005EF64D /* irrXML */, - F96070D01543675E004D91DD /* poly2tri */, - 8E8DEE56127E2B78005EF64D /* unzip */, - F9607046154366AB004D91DD /* zlib */, - ); - name = "3rd party libs"; - path = ../../contrib; - sourceTree = ""; - }; - F90BB0830F5DDDC700124155 /* importers */ = { - isa = PBXGroup; - children = ( - 3AF45B690E4B722000207D74 /* 3DS */, - F90BAFCE0F5DD85F00124155 /* AC */, - 3AF45B6A0E4B726700207D74 /* ASE */, - F90BB0850F5DDDF800124155 /* B3D */, - 74C9BB4611ACBAE500AF885C /* Blender */, - F90BB00A0F5DD9E800124155 /* BVH */, - 74C9BB9211ACBBA600AF885C /* COB */, - F90BAFE60F5DD91F00124155 /* COLLADA */, - 7411B14711416C3F00BCD793 /* CSM */, - F90BB01F0F5DDA4A00124155 /* DXF */, - 3AF45B6C0E4B72C600207D74 /* HMP */, - F97BA06415439FB2009EB9DD /* IFC */, - F90BAFD40F5DD8F200124155 /* IRR */, - 3AB8A3A80E50D5F400606590 /* LWO */, - 7411B15811416D6600BCD793 /* LWS */, - 3AF45B870E4B74DA00207D74 /* MD2 */, - 3AF45B880E4B751000207D74 /* MD3 */, - 3AF45B8A0E4B755E00207D74 /* MD5 */, - 3AB8A3A70E50D59500606590 /* MDC */, - 3AF45B8B0E4B75BC00207D74 /* MDL */, - 7411B16F11416E0400BCD793 /* MS3D */, - 8E7ABB99127E0EE000512ED1 /* NDO */, - F90BAFF30F5DD95600124155 /* NFF */, - 3AF45B8C0E4B75F200207D74 /* Obj */, - F90BB0110F5DDA0B00124155 /* OFF */, - 7411B17A11416E2E00BCD793 /* Ogre */, - 3AF45B8D0E4B761A00207D74 /* Ply */, - 8E7ABB9C127E0EFD00512ED1 /* Q3BSP */, - F90BB0040F5DD9CD00124155 /* Q3D */, - F90BB0190F5DDA3100124155 /* RAW */, - 3AF45B8E0E4B764400207D74 /* SMD */, - F99A9F5315436318000682F3 /* STEP */, - 3AF45B910E4B77BE00207D74 /* STL */, - F90BB02A0F5DDAA900124155 /* Terragen */, - 7411B18A11416EA100BCD793 /* Unreal */, - 3AF45B8F0E4B766700207D74 /* X */, - F96070B1154366E3004D91DD /* XGL */, - ); - name = importers; - sourceTree = ""; - }; - F90BB0850F5DDDF800124155 /* B3D */ = { - isa = PBXGroup; - children = ( - F90BB0870F5DDE0700124155 /* B3DImporter.h */, - F90BB0880F5DDE0700124155 /* B3DImporter.cpp */, - ); - name = B3D; - sourceTree = ""; - }; - F9607046154366AB004D91DD /* zlib */ = { - isa = PBXGroup; - children = ( - F9607047154366AB004D91DD /* adler32.c */, - F9607049154366AB004D91DD /* compress.c */, - F960704A154366AB004D91DD /* crc32.c */, - F960704B154366AB004D91DD /* crc32.h */, - F960704C154366AB004D91DD /* deflate.c */, - F960704D154366AB004D91DD /* deflate.h */, - F960704E154366AB004D91DD /* inffast.c */, - F960704F154366AB004D91DD /* inffast.h */, - F9607050154366AB004D91DD /* inffixed.h */, - F9607051154366AB004D91DD /* inflate.c */, - F9607052154366AB004D91DD /* inflate.h */, - F9607053154366AB004D91DD /* inftrees.c */, - F9607054154366AB004D91DD /* inftrees.h */, - F9607056154366AB004D91DD /* trees.c */, - F9607057154366AB004D91DD /* trees.h */, - F9607058154366AB004D91DD /* zconf.h */, - F9607059154366AB004D91DD /* zconf.in.h */, - F960705A154366AB004D91DD /* zlib.h */, - F960705B154366AB004D91DD /* zutil.c */, - F960705C154366AB004D91DD /* zutil.h */, - ); - path = zlib; - sourceTree = ""; - }; - F96070B1154366E3004D91DD /* XGL */ = { - isa = PBXGroup; - children = ( - F96070B5154366ED004D91DD /* XGLLoader.cpp */, - F96070B6154366ED004D91DD /* XGLLoader.h */, - ); - name = XGL; - sourceTree = ""; - }; - F96070C41543673B004D91DD /* clipper */ = { - isa = PBXGroup; - children = ( - F96070C51543673B004D91DD /* clipper.cpp */, - F96070C61543673B004D91DD /* clipper.hpp */, - ); - path = clipper; - sourceTree = ""; - }; - F96070D01543675E004D91DD /* poly2tri */ = { - isa = PBXGroup; - children = ( - F96070D11543675E004D91DD /* common */, - F96070D51543675E004D91DD /* poly2tri.h */, - F96070D61543675E004D91DD /* sweep */, - ); - name = poly2tri; - path = poly2tri/poly2tri; - sourceTree = ""; - }; - F96070D11543675E004D91DD /* common */ = { - isa = PBXGroup; - children = ( - F96070D21543675E004D91DD /* shapes.cc */, - F96070D31543675E004D91DD /* shapes.h */, - F96070D41543675E004D91DD /* utils.h */, - ); - path = common; - sourceTree = ""; - }; - F96070D61543675E004D91DD /* sweep */ = { - isa = PBXGroup; - children = ( - F96070D71543675E004D91DD /* advancing_front.cc */, - F96070D81543675E004D91DD /* advancing_front.h */, - F96070D91543675E004D91DD /* cdt.cc */, - F96070DA1543675E004D91DD /* cdt.h */, - F96070DB1543675E004D91DD /* sweep.cc */, - F96070DC1543675E004D91DD /* sweep.h */, - F96070DD1543675E004D91DD /* sweep_context.cc */, - F96070DE1543675E004D91DD /* sweep_context.h */, - ); - path = sweep; - sourceTree = ""; - }; - F97BA06415439FB2009EB9DD /* IFC */ = { - isa = PBXGroup; - children = ( - 2B7F45E91708365100A106A9 /* IFCBoolean.cpp */, - 2B7F45EA1708365100A106A9 /* IFCCurve.cpp */, - 2B7F45EB1708365100A106A9 /* IFCGeometry.cpp */, - 2B7F45EC1708365100A106A9 /* IFCLoader.cpp */, - 2B7F45ED1708365100A106A9 /* IFCLoader.h */, - 2B7F45EE1708365100A106A9 /* IFCMaterial.cpp */, - 2B7F45EF1708365100A106A9 /* IFCOpenings.cpp */, - 2B7F45F01708365100A106A9 /* IFCProfile.cpp */, - 2B7F45F11708365100A106A9 /* IFCReaderGen.cpp */, - 2B7F45F21708365100A106A9 /* IFCReaderGen.h */, - 2B7F45F31708365100A106A9 /* IFCUtil.cpp */, - 2B7F45F41708365100A106A9 /* IFCUtil.h */, - ); - name = IFC; - sourceTree = ""; - }; - F99A9F5315436318000682F3 /* STEP */ = { - isa = PBXGroup; - children = ( - 2B7F46861708365200A106A9 /* STEPFile.h */, - 2B7F46871708365200A106A9 /* STEPFileEncoding.cpp */, - 2B7F46881708365200A106A9 /* STEPFileEncoding.h */, - 2B7F46891708365200A106A9 /* STEPFileReader.cpp */, - 2B7F468A1708365200A106A9 /* STEPFileReader.h */, - ); - name = STEP; - sourceTree = ""; - }; - F9BA8B741543268400E63FFE /* assimp */ = { - isa = PBXGroup; - children = ( - F97BA03515439DB3009EB9DD /* ai_assert.h */, - F9BA8B751543268400E63FFE /* anim.h */, - F9BA8B771543268400E63FFE /* camera.h */, - F9BA8B781543268400E63FFE /* cexport.h */, - F9BA8B791543268400E63FFE /* cfileio.h */, - F9BA8B7A1543268400E63FFE /* cimport.h */, - F9BA8B7B1543268400E63FFE /* color4.h */, - F9BA8B7C1543268400E63FFE /* color4.inl */, - F9BA8B7D1543268400E63FFE /* Compiler */, - F9BA8B801543268400E63FFE /* config.h */, - F9BA8B811543268400E63FFE /* DefaultLogger.hpp */, - F9BA8B821543268400E63FFE /* defs.h */, - F9BA8B831543268400E63FFE /* Exporter.hpp */, - F9BA8B841543268400E63FFE /* Importer.hpp */, - F9BA8B851543268400E63FFE /* importerdesc.h */, - F9BA8B861543268400E63FFE /* IOStream.hpp */, - F9BA8B871543268400E63FFE /* IOSystem.hpp */, - F9BA8B881543268400E63FFE /* light.h */, - F9BA8B891543268400E63FFE /* Logger.hpp */, - F9BA8B8A1543268400E63FFE /* LogStream.hpp */, - F9BA8B8B1543268400E63FFE /* material.h */, - F9BA8B8C1543268400E63FFE /* material.inl */, - F9BA8B8D1543268400E63FFE /* matrix3x3.h */, - F9BA8B8E1543268400E63FFE /* matrix3x3.inl */, - F9BA8B8F1543268400E63FFE /* matrix4x4.h */, - F9BA8B901543268400E63FFE /* matrix4x4.inl */, - F9BA8B911543268400E63FFE /* mesh.h */, - F9BA8B921543268400E63FFE /* NullLogger.hpp */, - F9BA8B931543268400E63FFE /* postprocess.h */, - F9BA8B941543268400E63FFE /* ProgressHandler.hpp */, - F9BA8B951543268400E63FFE /* quaternion.h */, - F9BA8B961543268400E63FFE /* quaternion.inl */, - F9BA8B971543268400E63FFE /* scene.h */, - F9BA8B981543268400E63FFE /* texture.h */, - F9BA8B991543268400E63FFE /* types.h */, - F9BA8B9A1543268400E63FFE /* vector2.h */, - F9BA8B9B1543268400E63FFE /* vector2.inl */, - F9BA8B9C1543268400E63FFE /* vector3.h */, - F9BA8B9D1543268400E63FFE /* vector3.inl */, - F9BA8B9E1543268400E63FFE /* version.h */, - ); - path = assimp; - sourceTree = ""; - }; - F9BA8B7D1543268400E63FFE /* Compiler */ = { - isa = PBXGroup; - children = ( - F9BA8B7E1543268400E63FFE /* poppack1.h */, - F9BA8B7F1543268400E63FFE /* pushpack1.h */, - ); - path = Compiler; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 745FF82A113ECB080020C31B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 745FF840113ECB080020C31B /* 3DSHelper.h in Headers */, - 745FF841113ECB080020C31B /* 3DSLoader.h in Headers */, - 745FF842113ECB080020C31B /* ASELoader.h in Headers */, - 745FF843113ECB080020C31B /* ASEParser.h in Headers */, - 745FF850113ECB080020C31B /* HalfLifeFileData.h in Headers */, - 745FF851113ECB080020C31B /* HMPLoader.h in Headers */, - 745FF856113ECB080020C31B /* MD2FileData.h in Headers */, - 745FF857113ECB080020C31B /* MD2Loader.h in Headers */, - 745FF858113ECB080020C31B /* MD2NormalTable.h in Headers */, - 745FF859113ECB080020C31B /* MD3FileData.h in Headers */, - 745FF85A113ECB080020C31B /* MD3Loader.h in Headers */, - 745FF85B113ECB080020C31B /* MD5Loader.h in Headers */, - 745FF85C113ECB080020C31B /* MD5Parser.h in Headers */, - 745FF85D113ECB080020C31B /* MDLDefaultColorMap.h in Headers */, - 745FF85E113ECB080020C31B /* MDLFileData.h in Headers */, - 745FF85F113ECB080020C31B /* MDLLoader.h in Headers */, - 745FF866113ECB080020C31B /* PlyLoader.h in Headers */, - 745FF867113ECB080020C31B /* PlyParser.h in Headers */, - 745FF86C113ECB080020C31B /* SMDLoader.h in Headers */, - 745FF876113ECB080020C31B /* XFileHelper.h in Headers */, - 745FF877113ECB080020C31B /* XFileImporter.h in Headers */, - 745FF878113ECB080020C31B /* XFileParser.h in Headers */, - 745FF87B113ECB080020C31B /* MDCFileData.h in Headers */, - 745FF87C113ECB080020C31B /* MDCLoader.h in Headers */, - 745FF87D113ECB080020C31B /* MDCNormalTable.h in Headers */, - 745FF87F113ECB080020C31B /* LWOFileData.h in Headers */, - 745FF880113ECB080020C31B /* LWOLoader.h in Headers */, - 745FF881113ECB080020C31B /* HMPFileData.h in Headers */, - 745FF889113ECB080020C31B /* ACLoader.h in Headers */, - 745FF88A113ECB080020C31B /* IRRLoader.h in Headers */, - 745FF88B113ECB080020C31B /* IRRMeshLoader.h in Headers */, - 745FF88C113ECB080020C31B /* IRRShared.h in Headers */, - 745FF890113ECB080020C31B /* NFFLoader.h in Headers */, - 745FF892113ECB080020C31B /* Q3DLoader.h in Headers */, - 745FF893113ECB080020C31B /* BVHLoader.h in Headers */, - 745FF894113ECB080020C31B /* OFFLoader.h in Headers */, - 745FF895113ECB080020C31B /* RawLoader.h in Headers */, - 745FF896113ECB080020C31B /* DXFLoader.h in Headers */, - 745FF897113ECB080020C31B /* TerragenLoader.h in Headers */, - 745FF898113ECB080020C31B /* irrXMLWrapper.h in Headers */, - 745FF8AA113ECB080020C31B /* B3DImporter.h in Headers */, - 7411B15311416D5E00BCD793 /* CSMLoader.h in Headers */, - 7411B15E11416DDD00BCD793 /* LWSLoader.h in Headers */, - 7411B16811416DF400BCD793 /* LWOAnimation.h in Headers */, - 7411B17511416E2500BCD793 /* MS3DLoader.h in Headers */, - 7411B19011416EBC00BCD793 /* UnrealLoader.h in Headers */, - 74C9BB6011ACBB1000AF885C /* BlenderDNA.h in Headers */, - 74C9BB6211ACBB1000AF885C /* BlenderLoader.h in Headers */, - 74C9BB6411ACBB1000AF885C /* BlenderScene.h in Headers */, - 74C9BB6511ACBB1000AF885C /* BlenderSceneGen.h in Headers */, - 74C9BB8911ACBB9900AF885C /* AssimpPCH.h in Headers */, - 74C9BB9711ACBBBC00AF885C /* COBLoader.h in Headers */, - 74C9BB9811ACBBBC00AF885C /* COBScene.h in Headers */, - 74C9BBB411ACBC2600AF885C /* revision.h in Headers */, - 8E7ABBA8127E0F1A00512ED1 /* Q3BSPFileData.h in Headers */, - 8E7ABBAA127E0F1A00512ED1 /* Q3BSPFileImporter.h in Headers */, - 8E7ABBAC127E0F1A00512ED1 /* Q3BSPFileParser.h in Headers */, - 8E7ABBAE127E0F1A00512ED1 /* Q3BSPZipArchive.h in Headers */, - 8E7ABBC7127E0F2A00512ED1 /* NDOLoader.h in Headers */, - 8E7ABBD1127E0F3800512ED1 /* BlenderIntermediate.h in Headers */, - 8E7ABBD3127E0F3800512ED1 /* BlenderModifier.h in Headers */, - 8E8DEE5D127E2B78005EF64D /* ConvertUTF.h in Headers */, - 8E8DEE5E127E2B78005EF64D /* CXMLReaderImpl.h in Headers */, - 8E8DEE5F127E2B78005EF64D /* heapsort.h in Headers */, - 8E8DEE60127E2B78005EF64D /* irrArray.h in Headers */, - 8E8DEE61127E2B78005EF64D /* irrString.h in Headers */, - 8E8DEE62127E2B78005EF64D /* irrTypes.h in Headers */, - 8E8DEE64127E2B78005EF64D /* irrXML.h in Headers */, - 8E8DEE65127E2B78005EF64D /* crypt.h in Headers */, - 8E8DEE67127E2B78005EF64D /* ioapi.h in Headers */, - 8E8DEE69127E2B78005EF64D /* unzip.h in Headers */, - F9BA8BE31543268400E63FFE /* anim.h in Headers */, - F9BA8BE51543268400E63FFE /* camera.h in Headers */, - F9BA8BE61543268400E63FFE /* cexport.h in Headers */, - F9BA8BE71543268400E63FFE /* cfileio.h in Headers */, - F9BA8BE81543268400E63FFE /* cimport.h in Headers */, - F9BA8BE91543268400E63FFE /* color4.h in Headers */, - F9BA8BEA1543268400E63FFE /* poppack1.h in Headers */, - F9BA8BEB1543268400E63FFE /* pushpack1.h in Headers */, - F9BA8BEC1543268400E63FFE /* config.h in Headers */, - F9BA8BED1543268400E63FFE /* DefaultLogger.hpp in Headers */, - F9BA8BEE1543268400E63FFE /* defs.h in Headers */, - F9BA8BEF1543268400E63FFE /* Exporter.hpp in Headers */, - F9BA8BF01543268400E63FFE /* Importer.hpp in Headers */, - F9BA8BF11543268400E63FFE /* importerdesc.h in Headers */, - F9BA8BF21543268400E63FFE /* IOStream.hpp in Headers */, - F9BA8BF31543268400E63FFE /* IOSystem.hpp in Headers */, - F9BA8BF41543268400E63FFE /* light.h in Headers */, - F9BA8BF51543268400E63FFE /* Logger.hpp in Headers */, - F9BA8BF61543268400E63FFE /* LogStream.hpp in Headers */, - F9BA8BF71543268400E63FFE /* material.h in Headers */, - F9BA8BF81543268400E63FFE /* matrix3x3.h in Headers */, - F9BA8BF91543268400E63FFE /* matrix4x4.h in Headers */, - F9BA8BFA1543268400E63FFE /* mesh.h in Headers */, - F9BA8BFB1543268400E63FFE /* NullLogger.hpp in Headers */, - F9BA8BFC1543268400E63FFE /* postprocess.h in Headers */, - F9BA8BFD1543268400E63FFE /* ProgressHandler.hpp in Headers */, - F9BA8BFE1543268400E63FFE /* quaternion.h in Headers */, - F9BA8BFF1543268400E63FFE /* scene.h in Headers */, - F9BA8C001543268400E63FFE /* texture.h in Headers */, - F9BA8C011543268400E63FFE /* types.h in Headers */, - F9BA8C021543268400E63FFE /* vector2.h in Headers */, - F9BA8C031543268400E63FFE /* vector3.h in Headers */, - F9BA8C041543268400E63FFE /* version.h in Headers */, - F9BA8C48154328B600E63FFE /* OgreImporter.hpp in Headers */, - F9BA8C4C154328B600E63FFE /* OgreXmlHelper.hpp in Headers */, - F99A9F3715436269000682F3 /* PlyExporter.h in Headers */, - F9607088154366AB004D91DD /* crc32.h in Headers */, - F960708A154366AB004D91DD /* deflate.h in Headers */, - F960708C154366AB004D91DD /* inffast.h in Headers */, - F960708D154366AB004D91DD /* inffixed.h in Headers */, - F960708F154366AB004D91DD /* inflate.h in Headers */, - F9607091154366AB004D91DD /* inftrees.h in Headers */, - F9607093154366AB004D91DD /* trees.h in Headers */, - F9607094154366AB004D91DD /* zconf.h in Headers */, - F9607095154366AB004D91DD /* zconf.in.h in Headers */, - F9607096154366AB004D91DD /* zlib.h in Headers */, - F9607098154366AB004D91DD /* zutil.h in Headers */, - F96070BC154366ED004D91DD /* XGLLoader.h in Headers */, - F96070CD1543673B004D91DD /* clipper.hpp in Headers */, - F96070F81543675E004D91DD /* shapes.h in Headers */, - F96070F91543675E004D91DD /* utils.h in Headers */, - F96070FA1543675E004D91DD /* poly2tri.h in Headers */, - F96070FC1543675E004D91DD /* advancing_front.h in Headers */, - F96070FE1543675E004D91DD /* cdt.h in Headers */, - F96071001543675E004D91DD /* sweep.h in Headers */, - F96071021543675E004D91DD /* sweep_context.h in Headers */, - F97BA03815439DB3009EB9DD /* ai_assert.h in Headers */, - 2B7F46DF1708365200A106A9 /* assbin_chunks.h in Headers */, - 2B7F47071708365200A106A9 /* BaseImporter.h in Headers */, - 2B7F47111708365200A106A9 /* BaseProcess.h in Headers */, - 2B7F47481708365200A106A9 /* BlobIOSystem.h in Headers */, - 2B7F474D1708365200A106A9 /* foreach.hpp in Headers */, - 2B7F47521708365200A106A9 /* format.hpp in Headers */, - 2B7F47571708365200A106A9 /* lexical_cast.hpp in Headers */, - 2B7F475C1708365200A106A9 /* make_shared.hpp in Headers */, - 2B7F47611708365200A106A9 /* common_factor_rt.hpp in Headers */, - 2B7F47661708365200A106A9 /* noncopyable.hpp in Headers */, - 2B7F476B1708365200A106A9 /* pointer_cast.hpp in Headers */, - 2B7F47701708365200A106A9 /* scoped_array.hpp in Headers */, - 2B7F47751708365200A106A9 /* scoped_ptr.hpp in Headers */, - 2B7F477A1708365200A106A9 /* shared_array.hpp in Headers */, - 2B7F477F1708365200A106A9 /* shared_ptr.hpp in Headers */, - 2B7F47841708365200A106A9 /* static_assert.hpp in Headers */, - 2B7F47891708365200A106A9 /* timer.hpp in Headers */, - 2B7F478E1708365200A106A9 /* tuple.hpp in Headers */, - 2B7F479D1708365200A106A9 /* ByteSwapper.h in Headers */, - 2B7F47A71708365200A106A9 /* CalcTangentsProcess.h in Headers */, - 2B7F47AC1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */, - 2B7F47C51708365200A106A9 /* ColladaExporter.h in Headers */, - 2B7F47CA1708365200A106A9 /* ColladaHelper.h in Headers */, - 2B7F47D41708365200A106A9 /* ColladaLoader.h in Headers */, - 2B7F47DE1708365200A106A9 /* ColladaParser.h in Headers */, - 2B7F47E81708365200A106A9 /* ComputeUVMappingProcess.h in Headers */, - 2B7F47F21708365200A106A9 /* ConvertToLHProcess.h in Headers */, - 2B7F48061708365200A106A9 /* DeboneProcess.h in Headers */, - 2B7F48101708365200A106A9 /* DefaultIOStream.h in Headers */, - 2B7F481A1708365200A106A9 /* DefaultIOSystem.h in Headers */, - 2B7F48241708365200A106A9 /* DefaultProgressHandler.h in Headers */, - 2B7F48381708365200A106A9 /* Exceptional.h in Headers */, - 2B7F48421708365200A106A9 /* fast_atof.h in Headers */, - 2B7F48511708365200A106A9 /* FBXCompileConfig.h in Headers */, - 2B7F485B1708365200A106A9 /* FBXConverter.h in Headers */, - 2B7F486A1708365200A106A9 /* FBXDocument.h in Headers */, - 2B7F48741708365200A106A9 /* FBXDocumentUtil.h in Headers */, - 2B7F487E1708365200A106A9 /* FBXImporter.h in Headers */, - 2B7F48831708365200A106A9 /* FBXImportSettings.h in Headers */, - 2B7F48A11708365200A106A9 /* FBXParser.h in Headers */, - 2B7F48AB1708365200A106A9 /* FBXProperties.h in Headers */, - 2B7F48B51708365200A106A9 /* FBXTokenizer.h in Headers */, - 2B7F48BF1708365200A106A9 /* FBXUtil.h in Headers */, - 2B7F48C41708365200A106A9 /* FileLogStream.h in Headers */, - 2B7F48C91708365200A106A9 /* FileSystemFilter.h in Headers */, - 2B7F48D31708365200A106A9 /* FindDegenerates.h in Headers */, - 2B7F48DD1708365200A106A9 /* FindInstancesProcess.h in Headers */, - 2B7F48E71708365200A106A9 /* FindInvalidDataProcess.h in Headers */, - 2B7F48F11708365200A106A9 /* FixNormalsStep.h in Headers */, - 2B7F48F61708365200A106A9 /* GenericProperty.h in Headers */, - 2B7F49001708365200A106A9 /* GenFaceNormalsProcess.h in Headers */, - 2B7F490A1708365200A106A9 /* GenVertexNormalsProcess.h in Headers */, - 2B7F49141708365200A106A9 /* Hash.h in Headers */, - 2B7F493C1708365200A106A9 /* IFCLoader.h in Headers */, - 2B7F49551708365200A106A9 /* IFCReaderGen.h in Headers */, - 2B7F495F1708365200A106A9 /* IFCUtil.h in Headers */, - 2B7F49641708365200A106A9 /* IFF.h in Headers */, - 2B7F496E1708365200A106A9 /* Importer.h in Headers */, - 2B7F497D1708365200A106A9 /* ImproveCacheLocality.h in Headers */, - 2B7F49AA1708365200A106A9 /* JoinVerticesProcess.h in Headers */, - 2B7F49B41708365200A106A9 /* LimitBoneWeightsProcess.h in Headers */, - 2B7F49B91708365200A106A9 /* LineSplitter.h in Headers */, - 2B7F49BE1708365200A106A9 /* LogAux.h in Headers */, - 2B7F49FF1708365200A106A9 /* MakeVerboseFormat.h in Headers */, - 2B7F4A091708365200A106A9 /* MaterialSystem.h in Headers */, - 2B7F4A311708365200A106A9 /* MD4FileData.h in Headers */, - 2B7F4A771708365200A106A9 /* MemoryIOWrapper.h in Headers */, - 2B7F4A9F1708365200A106A9 /* ObjExporter.h in Headers */, - 2B7F4AA41708365200A106A9 /* ObjFileData.h in Headers */, - 2B7F4AAE1708365200A106A9 /* ObjFileImporter.h in Headers */, - 2B7F4AB81708365200A106A9 /* ObjFileMtlImporter.h in Headers */, - 2B7F4AC21708365200A106A9 /* ObjFileParser.h in Headers */, - 2B7F4AC71708365200A106A9 /* ObjTools.h in Headers */, - 2B7F4AF91708365200A106A9 /* OptimizeGraph.h in Headers */, - 2B7F4B031708365200A106A9 /* OptimizeMeshes.h in Headers */, - 2B7F4B081708365200A106A9 /* ParsingUtils.h in Headers */, - 2B7F4B2B1708365200A106A9 /* PolyTools.h in Headers */, - 2B7F4B3A1708365200A106A9 /* PretransformVertices.h in Headers */, - 2B7F4B441708365200A106A9 /* ProcessHelper.h in Headers */, - 2B7F4B491708365200A106A9 /* Profiler.h in Headers */, - 2B7F4B4E1708365200A106A9 /* pstdint.h in Headers */, - 2B7F4B801708365200A106A9 /* qnan.h in Headers */, - 2B7F4B941708365200A106A9 /* RemoveComments.h in Headers */, - 2B7F4B9E1708365200A106A9 /* RemoveRedundantMaterials.h in Headers */, - 2B7F4BA81708365200A106A9 /* RemoveVCProcess.h in Headers */, - 2B7F4BB71708365200A106A9 /* SceneCombiner.h in Headers */, - 2B7F4BC11708365200A106A9 /* ScenePreprocessor.h in Headers */, - 2B7F4BC61708365200A106A9 /* ScenePrivate.h in Headers */, - 2B7F4BD01708365200A106A9 /* SGSpatialSort.h in Headers */, - 2B7F4BDA1708365200A106A9 /* SkeletonMeshBuilder.h in Headers */, - 2B7F4BE91708365200A106A9 /* SmoothingGroups.h in Headers */, - 2B7F4BF31708365200A106A9 /* SortByPTypeProcess.h in Headers */, - 2B7F4BFD1708365200A106A9 /* SpatialSort.h in Headers */, - 2B7F4C071708365200A106A9 /* SplitByBoneCountProcess.h in Headers */, - 2B7F4C111708365200A106A9 /* SplitLargeMeshes.h in Headers */, - 2B7F4C1B1708365200A106A9 /* StandardShapes.h in Headers */, - 2B7F4C201708365200A106A9 /* StdOStreamLogStream.h in Headers */, - 2B7F4C251708365200A106A9 /* STEPFile.h in Headers */, - 2B7F4C2F1708365200A106A9 /* STEPFileEncoding.h in Headers */, - 2B7F4C391708365200A106A9 /* STEPFileReader.h in Headers */, - 2B7F4C431708365200A106A9 /* STLExporter.h in Headers */, - 2B7F4C4D1708365200A106A9 /* STLLoader.h in Headers */, - 2B7F4C521708365200A106A9 /* StreamReader.h in Headers */, - 2B7F4C571708365200A106A9 /* StringComparison.h in Headers */, - 2B7F4C611708365200A106A9 /* Subdivision.h in Headers */, - 2B7F4C6B1708365200A106A9 /* TargetAnimation.h in Headers */, - 2B7F4C7F1708365200A106A9 /* TextureTransform.h in Headers */, - 2B7F4C841708365200A106A9 /* TinyFormatter.h in Headers */, - 2B7F4C8E1708365200A106A9 /* TriangulateProcess.h in Headers */, - 2B7F4CA21708365200A106A9 /* ValidateDataStructure.h in Headers */, - 2B7F4CA71708365200A106A9 /* Vertex.h in Headers */, - 2B7F4CB11708365200A106A9 /* VertexTriangleAdjacency.h in Headers */, - 2B7F4CB61708365200A106A9 /* Win32DebugLogStream.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 745FF90D113ECC660020C31B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 745FF923113ECC660020C31B /* 3DSHelper.h in Headers */, - 745FF924113ECC660020C31B /* 3DSLoader.h in Headers */, - 745FF925113ECC660020C31B /* ASELoader.h in Headers */, - 745FF926113ECC660020C31B /* ASEParser.h in Headers */, - 745FF933113ECC660020C31B /* HalfLifeFileData.h in Headers */, - 745FF934113ECC660020C31B /* HMPLoader.h in Headers */, - 745FF939113ECC660020C31B /* MD2FileData.h in Headers */, - 745FF93A113ECC660020C31B /* MD2Loader.h in Headers */, - 745FF93B113ECC660020C31B /* MD2NormalTable.h in Headers */, - 745FF93C113ECC660020C31B /* MD3FileData.h in Headers */, - 745FF93D113ECC660020C31B /* MD3Loader.h in Headers */, - 745FF93E113ECC660020C31B /* MD5Loader.h in Headers */, - 745FF93F113ECC660020C31B /* MD5Parser.h in Headers */, - 745FF940113ECC660020C31B /* MDLDefaultColorMap.h in Headers */, - 745FF941113ECC660020C31B /* MDLFileData.h in Headers */, - 745FF942113ECC660020C31B /* MDLLoader.h in Headers */, - 745FF949113ECC660020C31B /* PlyLoader.h in Headers */, - 745FF94A113ECC660020C31B /* PlyParser.h in Headers */, - 745FF94F113ECC660020C31B /* SMDLoader.h in Headers */, - 745FF959113ECC660020C31B /* XFileHelper.h in Headers */, - 745FF95A113ECC660020C31B /* XFileImporter.h in Headers */, - 745FF95B113ECC660020C31B /* XFileParser.h in Headers */, - 745FF95E113ECC660020C31B /* MDCFileData.h in Headers */, - 745FF95F113ECC660020C31B /* MDCLoader.h in Headers */, - 745FF960113ECC660020C31B /* MDCNormalTable.h in Headers */, - 745FF962113ECC660020C31B /* LWOFileData.h in Headers */, - 745FF963113ECC660020C31B /* LWOLoader.h in Headers */, - 745FF964113ECC660020C31B /* HMPFileData.h in Headers */, - 745FF96C113ECC660020C31B /* ACLoader.h in Headers */, - 745FF96D113ECC660020C31B /* IRRLoader.h in Headers */, - 745FF96E113ECC660020C31B /* IRRMeshLoader.h in Headers */, - 745FF96F113ECC660020C31B /* IRRShared.h in Headers */, - 745FF973113ECC660020C31B /* NFFLoader.h in Headers */, - 745FF975113ECC660020C31B /* Q3DLoader.h in Headers */, - 745FF976113ECC660020C31B /* BVHLoader.h in Headers */, - 745FF977113ECC660020C31B /* OFFLoader.h in Headers */, - 745FF978113ECC660020C31B /* RawLoader.h in Headers */, - 745FF979113ECC660020C31B /* DXFLoader.h in Headers */, - 745FF97A113ECC660020C31B /* TerragenLoader.h in Headers */, - 745FF97B113ECC660020C31B /* irrXMLWrapper.h in Headers */, - 745FF98D113ECC660020C31B /* B3DImporter.h in Headers */, - 7411B15111416D5E00BCD793 /* CSMLoader.h in Headers */, - 7411B15C11416DDD00BCD793 /* LWSLoader.h in Headers */, - 7411B16611416DF400BCD793 /* LWOAnimation.h in Headers */, - 7411B17311416E2500BCD793 /* MS3DLoader.h in Headers */, - 7411B18E11416EBC00BCD793 /* UnrealLoader.h in Headers */, - 74C9BB6711ACBB1000AF885C /* BlenderDNA.h in Headers */, - 74C9BB6911ACBB1000AF885C /* BlenderLoader.h in Headers */, - 74C9BB6B11ACBB1000AF885C /* BlenderScene.h in Headers */, - 74C9BB6C11ACBB1000AF885C /* BlenderSceneGen.h in Headers */, - 74C9BB8B11ACBB9900AF885C /* AssimpPCH.h in Headers */, - 74C9BB9A11ACBBBC00AF885C /* COBLoader.h in Headers */, - 74C9BB9B11ACBBBC00AF885C /* COBScene.h in Headers */, - 74C9BBB511ACBC2600AF885C /* revision.h in Headers */, - 8E7ABBBD127E0F1A00512ED1 /* Q3BSPFileData.h in Headers */, - 8E7ABBBF127E0F1A00512ED1 /* Q3BSPFileImporter.h in Headers */, - 8E7ABBC1127E0F1A00512ED1 /* Q3BSPFileParser.h in Headers */, - 8E7ABBC3127E0F1A00512ED1 /* Q3BSPZipArchive.h in Headers */, - 8E7ABBCD127E0F2A00512ED1 /* NDOLoader.h in Headers */, - 8E7ABBDA127E0F3800512ED1 /* BlenderIntermediate.h in Headers */, - 8E7ABBDC127E0F3800512ED1 /* BlenderModifier.h in Headers */, - 8E8DEE87127E2B78005EF64D /* ConvertUTF.h in Headers */, - 8E8DEE88127E2B78005EF64D /* CXMLReaderImpl.h in Headers */, - 8E8DEE89127E2B78005EF64D /* heapsort.h in Headers */, - 8E8DEE8A127E2B78005EF64D /* irrArray.h in Headers */, - 8E8DEE8B127E2B78005EF64D /* irrString.h in Headers */, - 8E8DEE8C127E2B78005EF64D /* irrTypes.h in Headers */, - 8E8DEE8E127E2B78005EF64D /* irrXML.h in Headers */, - 8E8DEE8F127E2B78005EF64D /* crypt.h in Headers */, - 8E8DEE91127E2B78005EF64D /* ioapi.h in Headers */, - 8E8DEE93127E2B78005EF64D /* unzip.h in Headers */, - F9BA8C051543268400E63FFE /* anim.h in Headers */, - F9BA8C071543268400E63FFE /* camera.h in Headers */, - F9BA8C081543268400E63FFE /* cexport.h in Headers */, - F9BA8C091543268400E63FFE /* cfileio.h in Headers */, - F9BA8C0A1543268400E63FFE /* cimport.h in Headers */, - F9BA8C0B1543268400E63FFE /* color4.h in Headers */, - F9BA8C0C1543268400E63FFE /* poppack1.h in Headers */, - F9BA8C0D1543268400E63FFE /* pushpack1.h in Headers */, - F9BA8C0E1543268400E63FFE /* config.h in Headers */, - F9BA8C0F1543268400E63FFE /* DefaultLogger.hpp in Headers */, - F9BA8C101543268400E63FFE /* defs.h in Headers */, - F9BA8C111543268400E63FFE /* Exporter.hpp in Headers */, - F9BA8C121543268400E63FFE /* Importer.hpp in Headers */, - F9BA8C131543268400E63FFE /* importerdesc.h in Headers */, - F9BA8C141543268400E63FFE /* IOStream.hpp in Headers */, - F9BA8C151543268400E63FFE /* IOSystem.hpp in Headers */, - F9BA8C161543268400E63FFE /* light.h in Headers */, - F9BA8C171543268400E63FFE /* Logger.hpp in Headers */, - F9BA8C181543268400E63FFE /* LogStream.hpp in Headers */, - F9BA8C191543268400E63FFE /* material.h in Headers */, - F9BA8C1A1543268400E63FFE /* matrix3x3.h in Headers */, - F9BA8C1B1543268400E63FFE /* matrix4x4.h in Headers */, - F9BA8C1C1543268400E63FFE /* mesh.h in Headers */, - F9BA8C1D1543268400E63FFE /* NullLogger.hpp in Headers */, - F9BA8C1E1543268400E63FFE /* postprocess.h in Headers */, - F9BA8C1F1543268400E63FFE /* ProgressHandler.hpp in Headers */, - F9BA8C201543268400E63FFE /* quaternion.h in Headers */, - F9BA8C211543268400E63FFE /* scene.h in Headers */, - F9BA8C221543268400E63FFE /* texture.h in Headers */, - F9BA8C231543268400E63FFE /* types.h in Headers */, - F9BA8C241543268400E63FFE /* vector2.h in Headers */, - F9BA8C251543268400E63FFE /* vector3.h in Headers */, - F9BA8C261543268400E63FFE /* version.h in Headers */, - F9BA8C4E154328B600E63FFE /* OgreImporter.hpp in Headers */, - F9BA8C52154328B600E63FFE /* OgreXmlHelper.hpp in Headers */, - F99A9F3915436269000682F3 /* PlyExporter.h in Headers */, - F960709C154366AB004D91DD /* crc32.h in Headers */, - F960709E154366AB004D91DD /* deflate.h in Headers */, - F96070A0154366AB004D91DD /* inffast.h in Headers */, - F96070A1154366AB004D91DD /* inffixed.h in Headers */, - F96070A3154366AB004D91DD /* inflate.h in Headers */, - F96070A5154366AB004D91DD /* inftrees.h in Headers */, - F96070A7154366AB004D91DD /* trees.h in Headers */, - F96070A8154366AB004D91DD /* zconf.h in Headers */, - F96070A9154366AB004D91DD /* zconf.in.h in Headers */, - F96070AA154366AB004D91DD /* zlib.h in Headers */, - F96070AC154366AB004D91DD /* zutil.h in Headers */, - F96070BE154366ED004D91DD /* XGLLoader.h in Headers */, - F96070CF1543673B004D91DD /* clipper.hpp in Headers */, - F96071041543675E004D91DD /* shapes.h in Headers */, - F96071051543675E004D91DD /* utils.h in Headers */, - F96071061543675E004D91DD /* poly2tri.h in Headers */, - F96071081543675E004D91DD /* advancing_front.h in Headers */, - F960710A1543675E004D91DD /* cdt.h in Headers */, - F960710C1543675E004D91DD /* sweep.h in Headers */, - F960710E1543675E004D91DD /* sweep_context.h in Headers */, - F97BA03915439DB3009EB9DD /* ai_assert.h in Headers */, - 2B7F46E01708365200A106A9 /* assbin_chunks.h in Headers */, - 2B7F47081708365200A106A9 /* BaseImporter.h in Headers */, - 2B7F47121708365200A106A9 /* BaseProcess.h in Headers */, - 2B7F47491708365200A106A9 /* BlobIOSystem.h in Headers */, - 2B7F474E1708365200A106A9 /* foreach.hpp in Headers */, - 2B7F47531708365200A106A9 /* format.hpp in Headers */, - 2B7F47581708365200A106A9 /* lexical_cast.hpp in Headers */, - 2B7F475D1708365200A106A9 /* make_shared.hpp in Headers */, - 2B7F47621708365200A106A9 /* common_factor_rt.hpp in Headers */, - 2B7F47671708365200A106A9 /* noncopyable.hpp in Headers */, - 2B7F476C1708365200A106A9 /* pointer_cast.hpp in Headers */, - 2B7F47711708365200A106A9 /* scoped_array.hpp in Headers */, - 2B7F47761708365200A106A9 /* scoped_ptr.hpp in Headers */, - 2B7F477B1708365200A106A9 /* shared_array.hpp in Headers */, - 2B7F47801708365200A106A9 /* shared_ptr.hpp in Headers */, - 2B7F47851708365200A106A9 /* static_assert.hpp in Headers */, - 2B7F478A1708365200A106A9 /* timer.hpp in Headers */, - 2B7F478F1708365200A106A9 /* tuple.hpp in Headers */, - 2B7F479E1708365200A106A9 /* ByteSwapper.h in Headers */, - 2B7F47A81708365200A106A9 /* CalcTangentsProcess.h in Headers */, - 2B7F47AD1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */, - 2B7F47C61708365200A106A9 /* ColladaExporter.h in Headers */, - 2B7F47CB1708365200A106A9 /* ColladaHelper.h in Headers */, - 2B7F47D51708365200A106A9 /* ColladaLoader.h in Headers */, - 2B7F47DF1708365200A106A9 /* ColladaParser.h in Headers */, - 2B7F47E91708365200A106A9 /* ComputeUVMappingProcess.h in Headers */, - 2B7F47F31708365200A106A9 /* ConvertToLHProcess.h in Headers */, - 2B7F48071708365200A106A9 /* DeboneProcess.h in Headers */, - 2B7F48111708365200A106A9 /* DefaultIOStream.h in Headers */, - 2B7F481B1708365200A106A9 /* DefaultIOSystem.h in Headers */, - 2B7F48251708365200A106A9 /* DefaultProgressHandler.h in Headers */, - 2B7F48391708365200A106A9 /* Exceptional.h in Headers */, - 2B7F48431708365200A106A9 /* fast_atof.h in Headers */, - 2B7F48521708365200A106A9 /* FBXCompileConfig.h in Headers */, - 2B7F485C1708365200A106A9 /* FBXConverter.h in Headers */, - 2B7F486B1708365200A106A9 /* FBXDocument.h in Headers */, - 2B7F48751708365200A106A9 /* FBXDocumentUtil.h in Headers */, - 2B7F487F1708365200A106A9 /* FBXImporter.h in Headers */, - 2B7F48841708365200A106A9 /* FBXImportSettings.h in Headers */, - 2B7F48A21708365200A106A9 /* FBXParser.h in Headers */, - 2B7F48AC1708365200A106A9 /* FBXProperties.h in Headers */, - 2B7F48B61708365200A106A9 /* FBXTokenizer.h in Headers */, - 2B7F48C01708365200A106A9 /* FBXUtil.h in Headers */, - 2B7F48C51708365200A106A9 /* FileLogStream.h in Headers */, - 2B7F48CA1708365200A106A9 /* FileSystemFilter.h in Headers */, - 2B7F48D41708365200A106A9 /* FindDegenerates.h in Headers */, - 2B7F48DE1708365200A106A9 /* FindInstancesProcess.h in Headers */, - 2B7F48E81708365200A106A9 /* FindInvalidDataProcess.h in Headers */, - 2B7F48F21708365200A106A9 /* FixNormalsStep.h in Headers */, - 2B7F48F71708365200A106A9 /* GenericProperty.h in Headers */, - 2B7F49011708365200A106A9 /* GenFaceNormalsProcess.h in Headers */, - 2B7F490B1708365200A106A9 /* GenVertexNormalsProcess.h in Headers */, - 2B7F49151708365200A106A9 /* Hash.h in Headers */, - 2B7F493D1708365200A106A9 /* IFCLoader.h in Headers */, - 2B7F49561708365200A106A9 /* IFCReaderGen.h in Headers */, - 2B7F49601708365200A106A9 /* IFCUtil.h in Headers */, - 2B7F49651708365200A106A9 /* IFF.h in Headers */, - 2B7F496F1708365200A106A9 /* Importer.h in Headers */, - 2B7F497E1708365200A106A9 /* ImproveCacheLocality.h in Headers */, - 2B7F49AB1708365200A106A9 /* JoinVerticesProcess.h in Headers */, - 2B7F49B51708365200A106A9 /* LimitBoneWeightsProcess.h in Headers */, - 2B7F49BA1708365200A106A9 /* LineSplitter.h in Headers */, - 2B7F49BF1708365200A106A9 /* LogAux.h in Headers */, - 2B7F4A001708365200A106A9 /* MakeVerboseFormat.h in Headers */, - 2B7F4A0A1708365200A106A9 /* MaterialSystem.h in Headers */, - 2B7F4A321708365200A106A9 /* MD4FileData.h in Headers */, - 2B7F4A781708365200A106A9 /* MemoryIOWrapper.h in Headers */, - 2B7F4AA01708365200A106A9 /* ObjExporter.h in Headers */, - 2B7F4AA51708365200A106A9 /* ObjFileData.h in Headers */, - 2B7F4AAF1708365200A106A9 /* ObjFileImporter.h in Headers */, - 2B7F4AB91708365200A106A9 /* ObjFileMtlImporter.h in Headers */, - 2B7F4AC31708365200A106A9 /* ObjFileParser.h in Headers */, - 2B7F4AC81708365200A106A9 /* ObjTools.h in Headers */, - 2B7F4AFA1708365200A106A9 /* OptimizeGraph.h in Headers */, - 2B7F4B041708365200A106A9 /* OptimizeMeshes.h in Headers */, - 2B7F4B091708365200A106A9 /* ParsingUtils.h in Headers */, - 2B7F4B2C1708365200A106A9 /* PolyTools.h in Headers */, - 2B7F4B3B1708365200A106A9 /* PretransformVertices.h in Headers */, - 2B7F4B451708365200A106A9 /* ProcessHelper.h in Headers */, - 2B7F4B4A1708365200A106A9 /* Profiler.h in Headers */, - 2B7F4B4F1708365200A106A9 /* pstdint.h in Headers */, - 2B7F4B811708365200A106A9 /* qnan.h in Headers */, - 2B7F4B951708365200A106A9 /* RemoveComments.h in Headers */, - 2B7F4B9F1708365200A106A9 /* RemoveRedundantMaterials.h in Headers */, - 2B7F4BA91708365200A106A9 /* RemoveVCProcess.h in Headers */, - 2B7F4BB81708365200A106A9 /* SceneCombiner.h in Headers */, - 2B7F4BC21708365200A106A9 /* ScenePreprocessor.h in Headers */, - 2B7F4BC71708365200A106A9 /* ScenePrivate.h in Headers */, - 2B7F4BD11708365200A106A9 /* SGSpatialSort.h in Headers */, - 2B7F4BDB1708365200A106A9 /* SkeletonMeshBuilder.h in Headers */, - 2B7F4BEA1708365200A106A9 /* SmoothingGroups.h in Headers */, - 2B7F4BF41708365200A106A9 /* SortByPTypeProcess.h in Headers */, - 2B7F4BFE1708365200A106A9 /* SpatialSort.h in Headers */, - 2B7F4C081708365200A106A9 /* SplitByBoneCountProcess.h in Headers */, - 2B7F4C121708365200A106A9 /* SplitLargeMeshes.h in Headers */, - 2B7F4C1C1708365200A106A9 /* StandardShapes.h in Headers */, - 2B7F4C211708365200A106A9 /* StdOStreamLogStream.h in Headers */, - 2B7F4C261708365200A106A9 /* STEPFile.h in Headers */, - 2B7F4C301708365200A106A9 /* STEPFileEncoding.h in Headers */, - 2B7F4C3A1708365200A106A9 /* STEPFileReader.h in Headers */, - 2B7F4C441708365200A106A9 /* STLExporter.h in Headers */, - 2B7F4C4E1708365200A106A9 /* STLLoader.h in Headers */, - 2B7F4C531708365200A106A9 /* StreamReader.h in Headers */, - 2B7F4C581708365200A106A9 /* StringComparison.h in Headers */, - 2B7F4C621708365200A106A9 /* Subdivision.h in Headers */, - 2B7F4C6C1708365200A106A9 /* TargetAnimation.h in Headers */, - 2B7F4C801708365200A106A9 /* TextureTransform.h in Headers */, - 2B7F4C851708365200A106A9 /* TinyFormatter.h in Headers */, - 2B7F4C8F1708365200A106A9 /* TriangulateProcess.h in Headers */, - 2B7F4CA31708365200A106A9 /* ValidateDataStructure.h in Headers */, - 2B7F4CA81708365200A106A9 /* Vertex.h in Headers */, - 2B7F4CB21708365200A106A9 /* VertexTriangleAdjacency.h in Headers */, - 2B7F4CB71708365200A106A9 /* Win32DebugLogStream.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B91974D0163AEA54009C397B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B91974D1163AEA54009C397B /* 3DSHelper.h in Headers */, - B91974D2163AEA54009C397B /* 3DSLoader.h in Headers */, - B91974D3163AEA54009C397B /* ASELoader.h in Headers */, - B91974D4163AEA54009C397B /* ASEParser.h in Headers */, - B91974E0163AEA54009C397B /* HalfLifeFileData.h in Headers */, - B91974E1163AEA54009C397B /* HMPLoader.h in Headers */, - B91974E6163AEA54009C397B /* MD2FileData.h in Headers */, - B91974E7163AEA54009C397B /* MD2Loader.h in Headers */, - B91974E8163AEA54009C397B /* MD2NormalTable.h in Headers */, - B91974E9163AEA54009C397B /* MD3FileData.h in Headers */, - B91974EA163AEA54009C397B /* MD3Loader.h in Headers */, - B91974EB163AEA54009C397B /* MD5Loader.h in Headers */, - B91974EC163AEA54009C397B /* MD5Parser.h in Headers */, - B91974ED163AEA54009C397B /* MDLDefaultColorMap.h in Headers */, - B91974EE163AEA54009C397B /* MDLFileData.h in Headers */, - B91974EF163AEA54009C397B /* MDLLoader.h in Headers */, - B91974F6163AEA54009C397B /* PlyLoader.h in Headers */, - B91974F7163AEA54009C397B /* PlyParser.h in Headers */, - B91974FC163AEA54009C397B /* SMDLoader.h in Headers */, - B9197506163AEA54009C397B /* XFileHelper.h in Headers */, - B9197507163AEA54009C397B /* XFileImporter.h in Headers */, - B9197508163AEA54009C397B /* XFileParser.h in Headers */, - B9197509163AEA54009C397B /* MDCFileData.h in Headers */, - B919750A163AEA54009C397B /* MDCLoader.h in Headers */, - B919750B163AEA54009C397B /* MDCNormalTable.h in Headers */, - B919750D163AEA54009C397B /* LWOFileData.h in Headers */, - B919750E163AEA54009C397B /* LWOLoader.h in Headers */, - B919750F163AEA54009C397B /* HMPFileData.h in Headers */, - B9197512163AEA54009C397B /* ACLoader.h in Headers */, - B9197513163AEA54009C397B /* IRRLoader.h in Headers */, - B9197514163AEA54009C397B /* IRRMeshLoader.h in Headers */, - B9197515163AEA54009C397B /* IRRShared.h in Headers */, - B9197519163AEA54009C397B /* NFFLoader.h in Headers */, - B919751B163AEA54009C397B /* Q3DLoader.h in Headers */, - B919751C163AEA54009C397B /* BVHLoader.h in Headers */, - B919751D163AEA54009C397B /* OFFLoader.h in Headers */, - B919751E163AEA54009C397B /* RawLoader.h in Headers */, - B919751F163AEA54009C397B /* DXFLoader.h in Headers */, - B9197520163AEA54009C397B /* TerragenLoader.h in Headers */, - B9197521163AEA54009C397B /* irrXMLWrapper.h in Headers */, - B919752D163AEA54009C397B /* B3DImporter.h in Headers */, - B9197535163AEA54009C397B /* CSMLoader.h in Headers */, - B9197536163AEA54009C397B /* LWSLoader.h in Headers */, - B9197537163AEA54009C397B /* LWOAnimation.h in Headers */, - B9197538163AEA54009C397B /* MS3DLoader.h in Headers */, - B9197539163AEA54009C397B /* UnrealLoader.h in Headers */, - B9197545163AEA54009C397B /* BlenderDNA.h in Headers */, - B9197546163AEA54009C397B /* BlenderLoader.h in Headers */, - B9197547163AEA54009C397B /* BlenderScene.h in Headers */, - B9197548163AEA54009C397B /* BlenderSceneGen.h in Headers */, - B919754D163AEA54009C397B /* AssimpPCH.h in Headers */, - B919754E163AEA54009C397B /* COBLoader.h in Headers */, - B919754F163AEA54009C397B /* COBScene.h in Headers */, - B9197550163AEA54009C397B /* revision.h in Headers */, - B9197555163AEA54009C397B /* Q3BSPFileData.h in Headers */, - B9197556163AEA54009C397B /* Q3BSPFileImporter.h in Headers */, - B9197557163AEA54009C397B /* Q3BSPFileParser.h in Headers */, - B9197558163AEA54009C397B /* Q3BSPZipArchive.h in Headers */, - B9197559163AEA54009C397B /* NDOLoader.h in Headers */, - B919755A163AEA54009C397B /* BlenderIntermediate.h in Headers */, - B919755B163AEA54009C397B /* BlenderModifier.h in Headers */, - B9197560163AEA54009C397B /* ConvertUTF.h in Headers */, - B9197561163AEA54009C397B /* CXMLReaderImpl.h in Headers */, - B9197562163AEA54009C397B /* heapsort.h in Headers */, - B9197563163AEA54009C397B /* irrArray.h in Headers */, - B9197564163AEA54009C397B /* irrString.h in Headers */, - B9197565163AEA54009C397B /* irrTypes.h in Headers */, - B9197566163AEA54009C397B /* irrXML.h in Headers */, - B9197567163AEA54009C397B /* crypt.h in Headers */, - B9197568163AEA54009C397B /* ioapi.h in Headers */, - B9197569163AEA54009C397B /* unzip.h in Headers */, - B919756A163AEA54009C397B /* anim.h in Headers */, - B919756B163AEA54009C397B /* camera.h in Headers */, - B919756C163AEA54009C397B /* cexport.h in Headers */, - B919756D163AEA54009C397B /* cfileio.h in Headers */, - B919756E163AEA54009C397B /* cimport.h in Headers */, - B919756F163AEA54009C397B /* color4.h in Headers */, - B9197570163AEA54009C397B /* poppack1.h in Headers */, - B9197571163AEA54009C397B /* pushpack1.h in Headers */, - B9197572163AEA54009C397B /* config.h in Headers */, - B9197573163AEA54009C397B /* DefaultLogger.hpp in Headers */, - B9197574163AEA54009C397B /* defs.h in Headers */, - B9197575163AEA54009C397B /* Exporter.hpp in Headers */, - B9197576163AEA54009C397B /* Importer.hpp in Headers */, - B9197577163AEA54009C397B /* importerdesc.h in Headers */, - B9197578163AEA54009C397B /* IOStream.hpp in Headers */, - B9197579163AEA54009C397B /* IOSystem.hpp in Headers */, - B919757A163AEA54009C397B /* light.h in Headers */, - B919757B163AEA54009C397B /* Logger.hpp in Headers */, - B919757C163AEA54009C397B /* LogStream.hpp in Headers */, - B919757D163AEA54009C397B /* material.h in Headers */, - B919757E163AEA54009C397B /* matrix3x3.h in Headers */, - B919757F163AEA54009C397B /* matrix4x4.h in Headers */, - B9197580163AEA54009C397B /* mesh.h in Headers */, - B9197581163AEA54009C397B /* NullLogger.hpp in Headers */, - B9197582163AEA54009C397B /* postprocess.h in Headers */, - B9197583163AEA54009C397B /* ProgressHandler.hpp in Headers */, - B9197584163AEA54009C397B /* quaternion.h in Headers */, - B9197585163AEA54009C397B /* scene.h in Headers */, - B9197586163AEA54009C397B /* texture.h in Headers */, - B9197587163AEA54009C397B /* types.h in Headers */, - B9197588163AEA54009C397B /* vector2.h in Headers */, - B9197589163AEA54009C397B /* vector3.h in Headers */, - B919758A163AEA54009C397B /* version.h in Headers */, - B919758B163AEA54009C397B /* OgreImporter.hpp in Headers */, - B919758C163AEA54009C397B /* OgreXmlHelper.hpp in Headers */, - B9197596163AEA54009C397B /* PlyExporter.h in Headers */, - B919759C163AEA54009C397B /* crc32.h in Headers */, - B919759D163AEA54009C397B /* deflate.h in Headers */, - B919759E163AEA54009C397B /* inffast.h in Headers */, - B919759F163AEA54009C397B /* inffixed.h in Headers */, - B91975A0163AEA54009C397B /* inflate.h in Headers */, - B91975A1163AEA54009C397B /* inftrees.h in Headers */, - B91975A2163AEA54009C397B /* trees.h in Headers */, - B91975A3163AEA54009C397B /* zconf.h in Headers */, - B91975A4163AEA54009C397B /* zconf.in.h in Headers */, - B91975A5163AEA54009C397B /* zlib.h in Headers */, - B91975A6163AEA54009C397B /* zutil.h in Headers */, - B91975A7163AEA54009C397B /* XGLLoader.h in Headers */, - B91975A8163AEA54009C397B /* clipper.hpp in Headers */, - B91975A9163AEA54009C397B /* shapes.h in Headers */, - B91975AA163AEA54009C397B /* utils.h in Headers */, - B91975AB163AEA54009C397B /* poly2tri.h in Headers */, - B91975AC163AEA54009C397B /* advancing_front.h in Headers */, - B91975AD163AEA54009C397B /* cdt.h in Headers */, - B91975AE163AEA54009C397B /* sweep.h in Headers */, - B91975AF163AEA54009C397B /* sweep_context.h in Headers */, - B91975B0163AEA54009C397B /* ai_assert.h in Headers */, - 2B7F46E11708365200A106A9 /* assbin_chunks.h in Headers */, - 2B7F47091708365200A106A9 /* BaseImporter.h in Headers */, - 2B7F47131708365200A106A9 /* BaseProcess.h in Headers */, - 2B7F474A1708365200A106A9 /* BlobIOSystem.h in Headers */, - 2B7F474F1708365200A106A9 /* foreach.hpp in Headers */, - 2B7F47541708365200A106A9 /* format.hpp in Headers */, - 2B7F47591708365200A106A9 /* lexical_cast.hpp in Headers */, - 2B7F475E1708365200A106A9 /* make_shared.hpp in Headers */, - 2B7F47631708365200A106A9 /* common_factor_rt.hpp in Headers */, - 2B7F47681708365200A106A9 /* noncopyable.hpp in Headers */, - 2B7F476D1708365200A106A9 /* pointer_cast.hpp in Headers */, - 2B7F47721708365200A106A9 /* scoped_array.hpp in Headers */, - 2B7F47771708365200A106A9 /* scoped_ptr.hpp in Headers */, - 2B7F477C1708365200A106A9 /* shared_array.hpp in Headers */, - 2B7F47811708365200A106A9 /* shared_ptr.hpp in Headers */, - 2B7F47861708365200A106A9 /* static_assert.hpp in Headers */, - 2B7F478B1708365200A106A9 /* timer.hpp in Headers */, - 2B7F47901708365200A106A9 /* tuple.hpp in Headers */, - 2B7F479F1708365200A106A9 /* ByteSwapper.h in Headers */, - 2B7F47A91708365200A106A9 /* CalcTangentsProcess.h in Headers */, - 2B7F47AE1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */, - 2B7F47C71708365200A106A9 /* ColladaExporter.h in Headers */, - 2B7F47CC1708365200A106A9 /* ColladaHelper.h in Headers */, - 2B7F47D61708365200A106A9 /* ColladaLoader.h in Headers */, - 2B7F47E01708365200A106A9 /* ColladaParser.h in Headers */, - 2B7F47EA1708365200A106A9 /* ComputeUVMappingProcess.h in Headers */, - 2B7F47F41708365200A106A9 /* ConvertToLHProcess.h in Headers */, - 2B7F48081708365200A106A9 /* DeboneProcess.h in Headers */, - 2B7F48121708365200A106A9 /* DefaultIOStream.h in Headers */, - 2B7F481C1708365200A106A9 /* DefaultIOSystem.h in Headers */, - 2B7F48261708365200A106A9 /* DefaultProgressHandler.h in Headers */, - 2B7F483A1708365200A106A9 /* Exceptional.h in Headers */, - 2B7F48441708365200A106A9 /* fast_atof.h in Headers */, - 2B7F48531708365200A106A9 /* FBXCompileConfig.h in Headers */, - 2B7F485D1708365200A106A9 /* FBXConverter.h in Headers */, - 2B7F486C1708365200A106A9 /* FBXDocument.h in Headers */, - 2B7F48761708365200A106A9 /* FBXDocumentUtil.h in Headers */, - 2B7F48801708365200A106A9 /* FBXImporter.h in Headers */, - 2B7F48851708365200A106A9 /* FBXImportSettings.h in Headers */, - 2B7F48A31708365200A106A9 /* FBXParser.h in Headers */, - 2B7F48AD1708365200A106A9 /* FBXProperties.h in Headers */, - 2B7F48B71708365200A106A9 /* FBXTokenizer.h in Headers */, - 2B7F48C11708365200A106A9 /* FBXUtil.h in Headers */, - 2B7F48C61708365200A106A9 /* FileLogStream.h in Headers */, - 2B7F48CB1708365200A106A9 /* FileSystemFilter.h in Headers */, - 2B7F48D51708365200A106A9 /* FindDegenerates.h in Headers */, - 2B7F48DF1708365200A106A9 /* FindInstancesProcess.h in Headers */, - 2B7F48E91708365200A106A9 /* FindInvalidDataProcess.h in Headers */, - 2B7F48F31708365200A106A9 /* FixNormalsStep.h in Headers */, - 2B7F48F81708365200A106A9 /* GenericProperty.h in Headers */, - 2B7F49021708365200A106A9 /* GenFaceNormalsProcess.h in Headers */, - 2B7F490C1708365200A106A9 /* GenVertexNormalsProcess.h in Headers */, - 2B7F49161708365200A106A9 /* Hash.h in Headers */, - 2B7F493E1708365200A106A9 /* IFCLoader.h in Headers */, - 2B7F49571708365200A106A9 /* IFCReaderGen.h in Headers */, - 2B7F49611708365200A106A9 /* IFCUtil.h in Headers */, - 2B7F49661708365200A106A9 /* IFF.h in Headers */, - 2B7F49701708365200A106A9 /* Importer.h in Headers */, - 2B7F497F1708365200A106A9 /* ImproveCacheLocality.h in Headers */, - 2B7F49AC1708365200A106A9 /* JoinVerticesProcess.h in Headers */, - 2B7F49B61708365200A106A9 /* LimitBoneWeightsProcess.h in Headers */, - 2B7F49BB1708365200A106A9 /* LineSplitter.h in Headers */, - 2B7F49C01708365200A106A9 /* LogAux.h in Headers */, - 2B7F4A011708365200A106A9 /* MakeVerboseFormat.h in Headers */, - 2B7F4A0B1708365200A106A9 /* MaterialSystem.h in Headers */, - 2B7F4A331708365200A106A9 /* MD4FileData.h in Headers */, - 2B7F4A791708365200A106A9 /* MemoryIOWrapper.h in Headers */, - 2B7F4AA11708365200A106A9 /* ObjExporter.h in Headers */, - 2B7F4AA61708365200A106A9 /* ObjFileData.h in Headers */, - 2B7F4AB01708365200A106A9 /* ObjFileImporter.h in Headers */, - 2B7F4ABA1708365200A106A9 /* ObjFileMtlImporter.h in Headers */, - 2B7F4AC41708365200A106A9 /* ObjFileParser.h in Headers */, - 2B7F4AC91708365200A106A9 /* ObjTools.h in Headers */, - 2B7F4AFB1708365200A106A9 /* OptimizeGraph.h in Headers */, - 2B7F4B051708365200A106A9 /* OptimizeMeshes.h in Headers */, - 2B7F4B0A1708365200A106A9 /* ParsingUtils.h in Headers */, - 2B7F4B2D1708365200A106A9 /* PolyTools.h in Headers */, - 2B7F4B3C1708365200A106A9 /* PretransformVertices.h in Headers */, - 2B7F4B461708365200A106A9 /* ProcessHelper.h in Headers */, - 2B7F4B4B1708365200A106A9 /* Profiler.h in Headers */, - 2B7F4B501708365200A106A9 /* pstdint.h in Headers */, - 2B7F4B821708365200A106A9 /* qnan.h in Headers */, - 2B7F4B961708365200A106A9 /* RemoveComments.h in Headers */, - 2B7F4BA01708365200A106A9 /* RemoveRedundantMaterials.h in Headers */, - 2B7F4BAA1708365200A106A9 /* RemoveVCProcess.h in Headers */, - 2B7F4BB91708365200A106A9 /* SceneCombiner.h in Headers */, - 2B7F4BC31708365200A106A9 /* ScenePreprocessor.h in Headers */, - 2B7F4BC81708365200A106A9 /* ScenePrivate.h in Headers */, - 2B7F4BD21708365200A106A9 /* SGSpatialSort.h in Headers */, - 2B7F4BDC1708365200A106A9 /* SkeletonMeshBuilder.h in Headers */, - 2B7F4BEB1708365200A106A9 /* SmoothingGroups.h in Headers */, - 2B7F4BF51708365200A106A9 /* SortByPTypeProcess.h in Headers */, - 2B7F4BFF1708365200A106A9 /* SpatialSort.h in Headers */, - 2B7F4C091708365200A106A9 /* SplitByBoneCountProcess.h in Headers */, - 2B7F4C131708365200A106A9 /* SplitLargeMeshes.h in Headers */, - 2B7F4C1D1708365200A106A9 /* StandardShapes.h in Headers */, - 2B7F4C221708365200A106A9 /* StdOStreamLogStream.h in Headers */, - 2B7F4C271708365200A106A9 /* STEPFile.h in Headers */, - 2B7F4C311708365200A106A9 /* STEPFileEncoding.h in Headers */, - 2B7F4C3B1708365200A106A9 /* STEPFileReader.h in Headers */, - 2B7F4C451708365200A106A9 /* STLExporter.h in Headers */, - 2B7F4C4F1708365200A106A9 /* STLLoader.h in Headers */, - 2B7F4C541708365200A106A9 /* StreamReader.h in Headers */, - 2B7F4C591708365200A106A9 /* StringComparison.h in Headers */, - 2B7F4C631708365200A106A9 /* Subdivision.h in Headers */, - 2B7F4C6D1708365200A106A9 /* TargetAnimation.h in Headers */, - 2B7F4C811708365200A106A9 /* TextureTransform.h in Headers */, - 2B7F4C861708365200A106A9 /* TinyFormatter.h in Headers */, - 2B7F4C901708365200A106A9 /* TriangulateProcess.h in Headers */, - 2B7F4CA41708365200A106A9 /* ValidateDataStructure.h in Headers */, - 2B7F4CA91708365200A106A9 /* Vertex.h in Headers */, - 2B7F4CB31708365200A106A9 /* VertexTriangleAdjacency.h in Headers */, - 2B7F4CB81708365200A106A9 /* Win32DebugLogStream.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D2AAC09905546B4700DB518D /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 3AF45AFB0E4B716800207D74 /* 3DSHelper.h in Headers */, - 3AF45AFD0E4B716800207D74 /* 3DSLoader.h in Headers */, - 3AF45B020E4B716800207D74 /* ASELoader.h in Headers */, - 3AF45B040E4B716800207D74 /* ASEParser.h in Headers */, - 3AF45B1B0E4B716800207D74 /* HalfLifeFileData.h in Headers */, - 3AF45B1E0E4B716800207D74 /* HMPLoader.h in Headers */, - 3AF45B2A0E4B716800207D74 /* MD2FileData.h in Headers */, - 3AF45B2C0E4B716800207D74 /* MD2Loader.h in Headers */, - 3AF45B2D0E4B716800207D74 /* MD2NormalTable.h in Headers */, - 3AF45B2E0E4B716800207D74 /* MD3FileData.h in Headers */, - 3AF45B300E4B716800207D74 /* MD3Loader.h in Headers */, - 3AF45B350E4B716800207D74 /* MD5Loader.h in Headers */, - 3AF45B370E4B716800207D74 /* MD5Parser.h in Headers */, - 3AF45B380E4B716800207D74 /* MDLDefaultColorMap.h in Headers */, - 3AF45B390E4B716800207D74 /* MDLFileData.h in Headers */, - 3AF45B3B0E4B716800207D74 /* MDLLoader.h in Headers */, - 3AF45B470E4B716800207D74 /* PlyLoader.h in Headers */, - 3AF45B490E4B716800207D74 /* PlyParser.h in Headers */, - 3AF45B530E4B716800207D74 /* SMDLoader.h in Headers */, - 3AF45B640E4B716800207D74 /* XFileHelper.h in Headers */, - 3AF45B660E4B716800207D74 /* XFileImporter.h in Headers */, - 3AF45B680E4B716800207D74 /* XFileParser.h in Headers */, - 3AB8A3AF0E50D67A00606590 /* MDCFileData.h in Headers */, - 3AB8A3B10E50D67A00606590 /* MDCLoader.h in Headers */, - 3AB8A3B20E50D67A00606590 /* MDCNormalTable.h in Headers */, - 3AB8A3BA0E50D6DB00606590 /* LWOFileData.h in Headers */, - 3AB8A3BC0E50D6DB00606590 /* LWOLoader.h in Headers */, - 3AB8A3C60E50D77900606590 /* HMPFileData.h in Headers */, - F90BAFD30F5DD87000124155 /* ACLoader.h in Headers */, - F90BAFE00F5DD90800124155 /* IRRLoader.h in Headers */, - F90BAFE20F5DD90800124155 /* IRRMeshLoader.h in Headers */, - F90BAFE40F5DD90800124155 /* IRRShared.h in Headers */, - F90BAFF70F5DD96100124155 /* NFFLoader.h in Headers */, - F90BB0090F5DD9DD00124155 /* Q3DLoader.h in Headers */, - F90BB00E0F5DD9F400124155 /* BVHLoader.h in Headers */, - F90BB0150F5DDA1400124155 /* OFFLoader.h in Headers */, - F90BB01D0F5DDA4400124155 /* RawLoader.h in Headers */, - F90BB0230F5DDA5700124155 /* DXFLoader.h in Headers */, - F90BB0310F5DDAB500124155 /* TerragenLoader.h in Headers */, - F90BB0370F5DDB1B00124155 /* irrXMLWrapper.h in Headers */, - F90BB0890F5DDE0700124155 /* B3DImporter.h in Headers */, - 7411B15511416D5E00BCD793 /* CSMLoader.h in Headers */, - 7411B16011416DDD00BCD793 /* LWSLoader.h in Headers */, - 7411B16A11416DF400BCD793 /* LWOAnimation.h in Headers */, - 7411B17711416E2500BCD793 /* MS3DLoader.h in Headers */, - 7411B19211416EBC00BCD793 /* UnrealLoader.h in Headers */, - 74C9BB5211ACBB1000AF885C /* BlenderDNA.h in Headers */, - 74C9BB5411ACBB1000AF885C /* BlenderLoader.h in Headers */, - 74C9BB5611ACBB1000AF885C /* BlenderScene.h in Headers */, - 74C9BB5711ACBB1000AF885C /* BlenderSceneGen.h in Headers */, - 74C9BB8D11ACBB9900AF885C /* AssimpPCH.h in Headers */, - 74C9BB9D11ACBBBC00AF885C /* COBLoader.h in Headers */, - 74C9BB9E11ACBBBC00AF885C /* COBScene.h in Headers */, - 74C9BBB611ACBC2600AF885C /* revision.h in Headers */, - 8E7ABBAF127E0F1A00512ED1 /* Q3BSPFileData.h in Headers */, - 8E7ABBB1127E0F1A00512ED1 /* Q3BSPFileImporter.h in Headers */, - 8E7ABBB3127E0F1A00512ED1 /* Q3BSPFileParser.h in Headers */, - 8E7ABBB5127E0F1A00512ED1 /* Q3BSPZipArchive.h in Headers */, - 8E7ABBC9127E0F2A00512ED1 /* NDOLoader.h in Headers */, - 8E7ABBD4127E0F3800512ED1 /* BlenderIntermediate.h in Headers */, - 8E7ABBD6127E0F3800512ED1 /* BlenderModifier.h in Headers */, - 8E8DEE6B127E2B78005EF64D /* ConvertUTF.h in Headers */, - 8E8DEE6C127E2B78005EF64D /* CXMLReaderImpl.h in Headers */, - 8E8DEE6D127E2B78005EF64D /* heapsort.h in Headers */, - 8E8DEE6E127E2B78005EF64D /* irrArray.h in Headers */, - 8E8DEE6F127E2B78005EF64D /* irrString.h in Headers */, - 8E8DEE70127E2B78005EF64D /* irrTypes.h in Headers */, - 8E8DEE72127E2B78005EF64D /* irrXML.h in Headers */, - 8E8DEE73127E2B78005EF64D /* crypt.h in Headers */, - 8E8DEE75127E2B78005EF64D /* ioapi.h in Headers */, - 8E8DEE77127E2B78005EF64D /* unzip.h in Headers */, - F9BA8B9F1543268400E63FFE /* anim.h in Headers */, - F9BA8BA11543268400E63FFE /* camera.h in Headers */, - F9BA8BA21543268400E63FFE /* cexport.h in Headers */, - F9BA8BA31543268400E63FFE /* cfileio.h in Headers */, - F9BA8BA41543268400E63FFE /* cimport.h in Headers */, - F9BA8BA51543268400E63FFE /* color4.h in Headers */, - F9BA8BA61543268400E63FFE /* poppack1.h in Headers */, - F9BA8BA71543268400E63FFE /* pushpack1.h in Headers */, - F9BA8BA81543268400E63FFE /* config.h in Headers */, - F9BA8BA91543268400E63FFE /* DefaultLogger.hpp in Headers */, - F9BA8BAA1543268400E63FFE /* defs.h in Headers */, - F9BA8BAB1543268400E63FFE /* Exporter.hpp in Headers */, - F9BA8BAC1543268400E63FFE /* Importer.hpp in Headers */, - F9BA8BAD1543268400E63FFE /* importerdesc.h in Headers */, - F9BA8BAE1543268400E63FFE /* IOStream.hpp in Headers */, - F9BA8BAF1543268400E63FFE /* IOSystem.hpp in Headers */, - F9BA8BB01543268400E63FFE /* light.h in Headers */, - F9BA8BB11543268400E63FFE /* Logger.hpp in Headers */, - F9BA8BB21543268400E63FFE /* LogStream.hpp in Headers */, - F9BA8BB31543268400E63FFE /* material.h in Headers */, - F9BA8BB41543268400E63FFE /* matrix3x3.h in Headers */, - F9BA8BB51543268400E63FFE /* matrix4x4.h in Headers */, - F9BA8BB61543268400E63FFE /* mesh.h in Headers */, - F9BA8BB71543268400E63FFE /* NullLogger.hpp in Headers */, - F9BA8BB81543268400E63FFE /* postprocess.h in Headers */, - F9BA8BB91543268400E63FFE /* ProgressHandler.hpp in Headers */, - F9BA8BBA1543268400E63FFE /* quaternion.h in Headers */, - F9BA8BBB1543268400E63FFE /* scene.h in Headers */, - F9BA8BBC1543268400E63FFE /* texture.h in Headers */, - F9BA8BBD1543268400E63FFE /* types.h in Headers */, - F9BA8BBE1543268400E63FFE /* vector2.h in Headers */, - F9BA8BBF1543268400E63FFE /* vector3.h in Headers */, - F9BA8BC01543268400E63FFE /* version.h in Headers */, - F9BA8C3C154328B600E63FFE /* OgreImporter.hpp in Headers */, - F9BA8C40154328B600E63FFE /* OgreXmlHelper.hpp in Headers */, - F99A9F3315436269000682F3 /* PlyExporter.h in Headers */, - F9607060154366AB004D91DD /* crc32.h in Headers */, - F9607062154366AB004D91DD /* deflate.h in Headers */, - F9607064154366AB004D91DD /* inffast.h in Headers */, - F9607065154366AB004D91DD /* inffixed.h in Headers */, - F9607067154366AB004D91DD /* inflate.h in Headers */, - F9607069154366AB004D91DD /* inftrees.h in Headers */, - F960706B154366AB004D91DD /* trees.h in Headers */, - F960706C154366AB004D91DD /* zconf.h in Headers */, - F960706D154366AB004D91DD /* zconf.in.h in Headers */, - F960706E154366AB004D91DD /* zlib.h in Headers */, - F9607070154366AB004D91DD /* zutil.h in Headers */, - F96070B8154366ED004D91DD /* XGLLoader.h in Headers */, - F96070C91543673B004D91DD /* clipper.hpp in Headers */, - F96070E01543675E004D91DD /* shapes.h in Headers */, - F96070E11543675E004D91DD /* utils.h in Headers */, - F96070E21543675E004D91DD /* poly2tri.h in Headers */, - F96070E41543675E004D91DD /* advancing_front.h in Headers */, - F96070E61543675E004D91DD /* cdt.h in Headers */, - F96070E81543675E004D91DD /* sweep.h in Headers */, - F96070EA1543675E004D91DD /* sweep_context.h in Headers */, - F97BA03615439DB3009EB9DD /* ai_assert.h in Headers */, - 2B7F46DD1708365200A106A9 /* assbin_chunks.h in Headers */, - 2B7F47051708365200A106A9 /* BaseImporter.h in Headers */, - 2B7F470F1708365200A106A9 /* BaseProcess.h in Headers */, - 2B7F47461708365200A106A9 /* BlobIOSystem.h in Headers */, - 2B7F474B1708365200A106A9 /* foreach.hpp in Headers */, - 2B7F47501708365200A106A9 /* format.hpp in Headers */, - 2B7F47551708365200A106A9 /* lexical_cast.hpp in Headers */, - 2B7F475A1708365200A106A9 /* make_shared.hpp in Headers */, - 2B7F475F1708365200A106A9 /* common_factor_rt.hpp in Headers */, - 2B7F47641708365200A106A9 /* noncopyable.hpp in Headers */, - 2B7F47691708365200A106A9 /* pointer_cast.hpp in Headers */, - 2B7F476E1708365200A106A9 /* scoped_array.hpp in Headers */, - 2B7F47731708365200A106A9 /* scoped_ptr.hpp in Headers */, - 2B7F47781708365200A106A9 /* shared_array.hpp in Headers */, - 2B7F477D1708365200A106A9 /* shared_ptr.hpp in Headers */, - 2B7F47821708365200A106A9 /* static_assert.hpp in Headers */, - 2B7F47871708365200A106A9 /* timer.hpp in Headers */, - 2B7F478C1708365200A106A9 /* tuple.hpp in Headers */, - 2B7F479B1708365200A106A9 /* ByteSwapper.h in Headers */, - 2B7F47A51708365200A106A9 /* CalcTangentsProcess.h in Headers */, - 2B7F47AA1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */, - 2B7F47C31708365200A106A9 /* ColladaExporter.h in Headers */, - 2B7F47C81708365200A106A9 /* ColladaHelper.h in Headers */, - 2B7F47D21708365200A106A9 /* ColladaLoader.h in Headers */, - 2B7F47DC1708365200A106A9 /* ColladaParser.h in Headers */, - 2B7F47E61708365200A106A9 /* ComputeUVMappingProcess.h in Headers */, - 2B7F47F01708365200A106A9 /* ConvertToLHProcess.h in Headers */, - 2B7F48041708365200A106A9 /* DeboneProcess.h in Headers */, - 2B7F480E1708365200A106A9 /* DefaultIOStream.h in Headers */, - 2B7F48181708365200A106A9 /* DefaultIOSystem.h in Headers */, - 2B7F48221708365200A106A9 /* DefaultProgressHandler.h in Headers */, - 2B7F48361708365200A106A9 /* Exceptional.h in Headers */, - 2B7F48401708365200A106A9 /* fast_atof.h in Headers */, - 2B7F484F1708365200A106A9 /* FBXCompileConfig.h in Headers */, - 2B7F48591708365200A106A9 /* FBXConverter.h in Headers */, - 2B7F48681708365200A106A9 /* FBXDocument.h in Headers */, - 2B7F48721708365200A106A9 /* FBXDocumentUtil.h in Headers */, - 2B7F487C1708365200A106A9 /* FBXImporter.h in Headers */, - 2B7F48811708365200A106A9 /* FBXImportSettings.h in Headers */, - 2B7F489F1708365200A106A9 /* FBXParser.h in Headers */, - 2B7F48A91708365200A106A9 /* FBXProperties.h in Headers */, - 2B7F48B31708365200A106A9 /* FBXTokenizer.h in Headers */, - 2B7F48BD1708365200A106A9 /* FBXUtil.h in Headers */, - 2B7F48C21708365200A106A9 /* FileLogStream.h in Headers */, - 2B7F48C71708365200A106A9 /* FileSystemFilter.h in Headers */, - 2B7F48D11708365200A106A9 /* FindDegenerates.h in Headers */, - 2B7F48DB1708365200A106A9 /* FindInstancesProcess.h in Headers */, - 2B7F48E51708365200A106A9 /* FindInvalidDataProcess.h in Headers */, - 2B7F48EF1708365200A106A9 /* FixNormalsStep.h in Headers */, - 2B7F48F41708365200A106A9 /* GenericProperty.h in Headers */, - 2B7F48FE1708365200A106A9 /* GenFaceNormalsProcess.h in Headers */, - 2B7F49081708365200A106A9 /* GenVertexNormalsProcess.h in Headers */, - 2B7F49121708365200A106A9 /* Hash.h in Headers */, - 2B7F493A1708365200A106A9 /* IFCLoader.h in Headers */, - 2B7F49531708365200A106A9 /* IFCReaderGen.h in Headers */, - 2B7F495D1708365200A106A9 /* IFCUtil.h in Headers */, - 2B7F49621708365200A106A9 /* IFF.h in Headers */, - 2B7F496C1708365200A106A9 /* Importer.h in Headers */, - 2B7F497B1708365200A106A9 /* ImproveCacheLocality.h in Headers */, - 2B7F49A81708365200A106A9 /* JoinVerticesProcess.h in Headers */, - 2B7F49B21708365200A106A9 /* LimitBoneWeightsProcess.h in Headers */, - 2B7F49B71708365200A106A9 /* LineSplitter.h in Headers */, - 2B7F49BC1708365200A106A9 /* LogAux.h in Headers */, - 2B7F49FD1708365200A106A9 /* MakeVerboseFormat.h in Headers */, - 2B7F4A071708365200A106A9 /* MaterialSystem.h in Headers */, - 2B7F4A2F1708365200A106A9 /* MD4FileData.h in Headers */, - 2B7F4A751708365200A106A9 /* MemoryIOWrapper.h in Headers */, - 2B7F4A9D1708365200A106A9 /* ObjExporter.h in Headers */, - 2B7F4AA21708365200A106A9 /* ObjFileData.h in Headers */, - 2B7F4AAC1708365200A106A9 /* ObjFileImporter.h in Headers */, - 2B7F4AB61708365200A106A9 /* ObjFileMtlImporter.h in Headers */, - 2B7F4AC01708365200A106A9 /* ObjFileParser.h in Headers */, - 2B7F4AC51708365200A106A9 /* ObjTools.h in Headers */, - 2B7F4AF71708365200A106A9 /* OptimizeGraph.h in Headers */, - 2B7F4B011708365200A106A9 /* OptimizeMeshes.h in Headers */, - 2B7F4B061708365200A106A9 /* ParsingUtils.h in Headers */, - 2B7F4B291708365200A106A9 /* PolyTools.h in Headers */, - 2B7F4B381708365200A106A9 /* PretransformVertices.h in Headers */, - 2B7F4B421708365200A106A9 /* ProcessHelper.h in Headers */, - 2B7F4B471708365200A106A9 /* Profiler.h in Headers */, - 2B7F4B4C1708365200A106A9 /* pstdint.h in Headers */, - 2B7F4B7E1708365200A106A9 /* qnan.h in Headers */, - 2B7F4B921708365200A106A9 /* RemoveComments.h in Headers */, - 2B7F4B9C1708365200A106A9 /* RemoveRedundantMaterials.h in Headers */, - 2B7F4BA61708365200A106A9 /* RemoveVCProcess.h in Headers */, - 2B7F4BB51708365200A106A9 /* SceneCombiner.h in Headers */, - 2B7F4BBF1708365200A106A9 /* ScenePreprocessor.h in Headers */, - 2B7F4BC41708365200A106A9 /* ScenePrivate.h in Headers */, - 2B7F4BCE1708365200A106A9 /* SGSpatialSort.h in Headers */, - 2B7F4BD81708365200A106A9 /* SkeletonMeshBuilder.h in Headers */, - 2B7F4BE71708365200A106A9 /* SmoothingGroups.h in Headers */, - 2B7F4BF11708365200A106A9 /* SortByPTypeProcess.h in Headers */, - 2B7F4BFB1708365200A106A9 /* SpatialSort.h in Headers */, - 2B7F4C051708365200A106A9 /* SplitByBoneCountProcess.h in Headers */, - 2B7F4C0F1708365200A106A9 /* SplitLargeMeshes.h in Headers */, - 2B7F4C191708365200A106A9 /* StandardShapes.h in Headers */, - 2B7F4C1E1708365200A106A9 /* StdOStreamLogStream.h in Headers */, - 2B7F4C231708365200A106A9 /* STEPFile.h in Headers */, - 2B7F4C2D1708365200A106A9 /* STEPFileEncoding.h in Headers */, - 2B7F4C371708365200A106A9 /* STEPFileReader.h in Headers */, - 2B7F4C411708365200A106A9 /* STLExporter.h in Headers */, - 2B7F4C4B1708365200A106A9 /* STLLoader.h in Headers */, - 2B7F4C501708365200A106A9 /* StreamReader.h in Headers */, - 2B7F4C551708365200A106A9 /* StringComparison.h in Headers */, - 2B7F4C5F1708365200A106A9 /* Subdivision.h in Headers */, - 2B7F4C691708365200A106A9 /* TargetAnimation.h in Headers */, - 2B7F4C7D1708365200A106A9 /* TextureTransform.h in Headers */, - 2B7F4C821708365200A106A9 /* TinyFormatter.h in Headers */, - 2B7F4C8C1708365200A106A9 /* TriangulateProcess.h in Headers */, - 2B7F4CA01708365200A106A9 /* ValidateDataStructure.h in Headers */, - 2B7F4CA51708365200A106A9 /* Vertex.h in Headers */, - 2B7F4CAF1708365200A106A9 /* VertexTriangleAdjacency.h in Headers */, - 2B7F4CB41708365200A106A9 /* Win32DebugLogStream.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F962E8800F5DE66A009A5495 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - F962E8ED0F5DE6E2009A5495 /* 3DSHelper.h in Headers */, - F962E8EE0F5DE6E2009A5495 /* 3DSLoader.h in Headers */, - F962E8EF0F5DE6E2009A5495 /* ASELoader.h in Headers */, - F962E8F00F5DE6E2009A5495 /* ASEParser.h in Headers */, - F962E8FD0F5DE6E2009A5495 /* HalfLifeFileData.h in Headers */, - F962E8FE0F5DE6E2009A5495 /* HMPLoader.h in Headers */, - F962E9030F5DE6E2009A5495 /* MD2FileData.h in Headers */, - F962E9040F5DE6E2009A5495 /* MD2Loader.h in Headers */, - F962E9050F5DE6E2009A5495 /* MD2NormalTable.h in Headers */, - F962E9060F5DE6E2009A5495 /* MD3FileData.h in Headers */, - F962E9070F5DE6E2009A5495 /* MD3Loader.h in Headers */, - F962E9080F5DE6E2009A5495 /* MD5Loader.h in Headers */, - F962E9090F5DE6E2009A5495 /* MD5Parser.h in Headers */, - F962E90A0F5DE6E2009A5495 /* MDLDefaultColorMap.h in Headers */, - F962E90B0F5DE6E2009A5495 /* MDLFileData.h in Headers */, - F962E90C0F5DE6E2009A5495 /* MDLLoader.h in Headers */, - F962E9130F5DE6E2009A5495 /* PlyLoader.h in Headers */, - F962E9140F5DE6E2009A5495 /* PlyParser.h in Headers */, - F962E9190F5DE6E2009A5495 /* SMDLoader.h in Headers */, - F962E9230F5DE6E2009A5495 /* XFileHelper.h in Headers */, - F962E9240F5DE6E2009A5495 /* XFileImporter.h in Headers */, - F962E9250F5DE6E2009A5495 /* XFileParser.h in Headers */, - F962E9280F5DE6E2009A5495 /* MDCFileData.h in Headers */, - F962E9290F5DE6E2009A5495 /* MDCLoader.h in Headers */, - F962E92A0F5DE6E2009A5495 /* MDCNormalTable.h in Headers */, - F962E92C0F5DE6E2009A5495 /* LWOFileData.h in Headers */, - F962E92D0F5DE6E2009A5495 /* LWOLoader.h in Headers */, - F962E92E0F5DE6E2009A5495 /* HMPFileData.h in Headers */, - F962E9360F5DE6E2009A5495 /* ACLoader.h in Headers */, - F962E9370F5DE6E2009A5495 /* IRRLoader.h in Headers */, - F962E9380F5DE6E2009A5495 /* IRRMeshLoader.h in Headers */, - F962E9390F5DE6E2009A5495 /* IRRShared.h in Headers */, - F962E93D0F5DE6E2009A5495 /* NFFLoader.h in Headers */, - F962E93F0F5DE6E2009A5495 /* Q3DLoader.h in Headers */, - F962E9400F5DE6E2009A5495 /* BVHLoader.h in Headers */, - F962E9410F5DE6E2009A5495 /* OFFLoader.h in Headers */, - F962E9420F5DE6E2009A5495 /* RawLoader.h in Headers */, - F962E9430F5DE6E2009A5495 /* DXFLoader.h in Headers */, - F962E9440F5DE6E2009A5495 /* TerragenLoader.h in Headers */, - F962E9450F5DE6E2009A5495 /* irrXMLWrapper.h in Headers */, - F962E9570F5DE6E2009A5495 /* B3DImporter.h in Headers */, - 7411B15711416D5E00BCD793 /* CSMLoader.h in Headers */, - 7411B16211416DDD00BCD793 /* LWSLoader.h in Headers */, - 7411B16C11416DF400BCD793 /* LWOAnimation.h in Headers */, - 7411B17911416E2500BCD793 /* MS3DLoader.h in Headers */, - 7411B19411416EBC00BCD793 /* UnrealLoader.h in Headers */, - 74C9BB5911ACBB1000AF885C /* BlenderDNA.h in Headers */, - 74C9BB5B11ACBB1000AF885C /* BlenderLoader.h in Headers */, - 74C9BB5D11ACBB1000AF885C /* BlenderScene.h in Headers */, - 74C9BB5E11ACBB1000AF885C /* BlenderSceneGen.h in Headers */, - 74C9BB8F11ACBB9900AF885C /* AssimpPCH.h in Headers */, - 74C9BBA011ACBBBC00AF885C /* COBLoader.h in Headers */, - 74C9BBA111ACBBBC00AF885C /* COBScene.h in Headers */, - 74C9BBB711ACBC2600AF885C /* revision.h in Headers */, - 8E7ABBB6127E0F1A00512ED1 /* Q3BSPFileData.h in Headers */, - 8E7ABBB8127E0F1A00512ED1 /* Q3BSPFileImporter.h in Headers */, - 8E7ABBBA127E0F1A00512ED1 /* Q3BSPFileParser.h in Headers */, - 8E7ABBBC127E0F1A00512ED1 /* Q3BSPZipArchive.h in Headers */, - 8E7ABBCB127E0F2A00512ED1 /* NDOLoader.h in Headers */, - 8E7ABBD7127E0F3800512ED1 /* BlenderIntermediate.h in Headers */, - 8E7ABBD9127E0F3800512ED1 /* BlenderModifier.h in Headers */, - 8E8DEE79127E2B78005EF64D /* ConvertUTF.h in Headers */, - 8E8DEE7A127E2B78005EF64D /* CXMLReaderImpl.h in Headers */, - 8E8DEE7B127E2B78005EF64D /* heapsort.h in Headers */, - 8E8DEE7C127E2B78005EF64D /* irrArray.h in Headers */, - 8E8DEE7D127E2B78005EF64D /* irrString.h in Headers */, - 8E8DEE7E127E2B78005EF64D /* irrTypes.h in Headers */, - 8E8DEE80127E2B78005EF64D /* irrXML.h in Headers */, - 8E8DEE81127E2B78005EF64D /* crypt.h in Headers */, - 8E8DEE83127E2B78005EF64D /* ioapi.h in Headers */, - 8E8DEE85127E2B78005EF64D /* unzip.h in Headers */, - F9BA8BC11543268400E63FFE /* anim.h in Headers */, - F9BA8BC31543268400E63FFE /* camera.h in Headers */, - F9BA8BC41543268400E63FFE /* cexport.h in Headers */, - F9BA8BC51543268400E63FFE /* cfileio.h in Headers */, - F9BA8BC61543268400E63FFE /* cimport.h in Headers */, - F9BA8BC71543268400E63FFE /* color4.h in Headers */, - F9BA8BC81543268400E63FFE /* poppack1.h in Headers */, - F9BA8BC91543268400E63FFE /* pushpack1.h in Headers */, - F9BA8BCA1543268400E63FFE /* config.h in Headers */, - F9BA8BCB1543268400E63FFE /* DefaultLogger.hpp in Headers */, - F9BA8BCC1543268400E63FFE /* defs.h in Headers */, - F9BA8BCD1543268400E63FFE /* Exporter.hpp in Headers */, - F9BA8BCE1543268400E63FFE /* Importer.hpp in Headers */, - F9BA8BCF1543268400E63FFE /* importerdesc.h in Headers */, - F9BA8BD01543268400E63FFE /* IOStream.hpp in Headers */, - F9BA8BD11543268400E63FFE /* IOSystem.hpp in Headers */, - F9BA8BD21543268400E63FFE /* light.h in Headers */, - F9BA8BD31543268400E63FFE /* Logger.hpp in Headers */, - F9BA8BD41543268400E63FFE /* LogStream.hpp in Headers */, - F9BA8BD51543268400E63FFE /* material.h in Headers */, - F9BA8BD61543268400E63FFE /* matrix3x3.h in Headers */, - F9BA8BD71543268400E63FFE /* matrix4x4.h in Headers */, - F9BA8BD81543268400E63FFE /* mesh.h in Headers */, - F9BA8BD91543268400E63FFE /* NullLogger.hpp in Headers */, - F9BA8BDA1543268400E63FFE /* postprocess.h in Headers */, - F9BA8BDB1543268400E63FFE /* ProgressHandler.hpp in Headers */, - F9BA8BDC1543268400E63FFE /* quaternion.h in Headers */, - F9BA8BDD1543268400E63FFE /* scene.h in Headers */, - F9BA8BDE1543268400E63FFE /* texture.h in Headers */, - F9BA8BDF1543268400E63FFE /* types.h in Headers */, - F9BA8BE01543268400E63FFE /* vector2.h in Headers */, - F9BA8BE11543268400E63FFE /* vector3.h in Headers */, - F9BA8BE21543268400E63FFE /* version.h in Headers */, - F9BA8C42154328B600E63FFE /* OgreImporter.hpp in Headers */, - F9BA8C46154328B600E63FFE /* OgreXmlHelper.hpp in Headers */, - F99A9F3515436269000682F3 /* PlyExporter.h in Headers */, - F9607074154366AB004D91DD /* crc32.h in Headers */, - F9607076154366AB004D91DD /* deflate.h in Headers */, - F9607078154366AB004D91DD /* inffast.h in Headers */, - F9607079154366AB004D91DD /* inffixed.h in Headers */, - F960707B154366AB004D91DD /* inflate.h in Headers */, - F960707D154366AB004D91DD /* inftrees.h in Headers */, - F960707F154366AB004D91DD /* trees.h in Headers */, - F9607080154366AB004D91DD /* zconf.h in Headers */, - F9607081154366AB004D91DD /* zconf.in.h in Headers */, - F9607082154366AB004D91DD /* zlib.h in Headers */, - F9607084154366AB004D91DD /* zutil.h in Headers */, - F96070BA154366ED004D91DD /* XGLLoader.h in Headers */, - F96070CB1543673B004D91DD /* clipper.hpp in Headers */, - F96070EC1543675E004D91DD /* shapes.h in Headers */, - F96070ED1543675E004D91DD /* utils.h in Headers */, - F96070EE1543675E004D91DD /* poly2tri.h in Headers */, - F96070F01543675E004D91DD /* advancing_front.h in Headers */, - F96070F21543675E004D91DD /* cdt.h in Headers */, - F96070F41543675E004D91DD /* sweep.h in Headers */, - F96070F61543675E004D91DD /* sweep_context.h in Headers */, - F97BA03715439DB3009EB9DD /* ai_assert.h in Headers */, - 2B7F46DE1708365200A106A9 /* assbin_chunks.h in Headers */, - 2B7F47061708365200A106A9 /* BaseImporter.h in Headers */, - 2B7F47101708365200A106A9 /* BaseProcess.h in Headers */, - 2B7F47471708365200A106A9 /* BlobIOSystem.h in Headers */, - 2B7F474C1708365200A106A9 /* foreach.hpp in Headers */, - 2B7F47511708365200A106A9 /* format.hpp in Headers */, - 2B7F47561708365200A106A9 /* lexical_cast.hpp in Headers */, - 2B7F475B1708365200A106A9 /* make_shared.hpp in Headers */, - 2B7F47601708365200A106A9 /* common_factor_rt.hpp in Headers */, - 2B7F47651708365200A106A9 /* noncopyable.hpp in Headers */, - 2B7F476A1708365200A106A9 /* pointer_cast.hpp in Headers */, - 2B7F476F1708365200A106A9 /* scoped_array.hpp in Headers */, - 2B7F47741708365200A106A9 /* scoped_ptr.hpp in Headers */, - 2B7F47791708365200A106A9 /* shared_array.hpp in Headers */, - 2B7F477E1708365200A106A9 /* shared_ptr.hpp in Headers */, - 2B7F47831708365200A106A9 /* static_assert.hpp in Headers */, - 2B7F47881708365200A106A9 /* timer.hpp in Headers */, - 2B7F478D1708365200A106A9 /* tuple.hpp in Headers */, - 2B7F479C1708365200A106A9 /* ByteSwapper.h in Headers */, - 2B7F47A61708365200A106A9 /* CalcTangentsProcess.h in Headers */, - 2B7F47AB1708365200A106A9 /* CInterfaceIOWrapper.h in Headers */, - 2B7F47C41708365200A106A9 /* ColladaExporter.h in Headers */, - 2B7F47C91708365200A106A9 /* ColladaHelper.h in Headers */, - 2B7F47D31708365200A106A9 /* ColladaLoader.h in Headers */, - 2B7F47DD1708365200A106A9 /* ColladaParser.h in Headers */, - 2B7F47E71708365200A106A9 /* ComputeUVMappingProcess.h in Headers */, - 2B7F47F11708365200A106A9 /* ConvertToLHProcess.h in Headers */, - 2B7F48051708365200A106A9 /* DeboneProcess.h in Headers */, - 2B7F480F1708365200A106A9 /* DefaultIOStream.h in Headers */, - 2B7F48191708365200A106A9 /* DefaultIOSystem.h in Headers */, - 2B7F48231708365200A106A9 /* DefaultProgressHandler.h in Headers */, - 2B7F48371708365200A106A9 /* Exceptional.h in Headers */, - 2B7F48411708365200A106A9 /* fast_atof.h in Headers */, - 2B7F48501708365200A106A9 /* FBXCompileConfig.h in Headers */, - 2B7F485A1708365200A106A9 /* FBXConverter.h in Headers */, - 2B7F48691708365200A106A9 /* FBXDocument.h in Headers */, - 2B7F48731708365200A106A9 /* FBXDocumentUtil.h in Headers */, - 2B7F487D1708365200A106A9 /* FBXImporter.h in Headers */, - 2B7F48821708365200A106A9 /* FBXImportSettings.h in Headers */, - 2B7F48A01708365200A106A9 /* FBXParser.h in Headers */, - 2B7F48AA1708365200A106A9 /* FBXProperties.h in Headers */, - 2B7F48B41708365200A106A9 /* FBXTokenizer.h in Headers */, - 2B7F48BE1708365200A106A9 /* FBXUtil.h in Headers */, - 2B7F48C31708365200A106A9 /* FileLogStream.h in Headers */, - 2B7F48C81708365200A106A9 /* FileSystemFilter.h in Headers */, - 2B7F48D21708365200A106A9 /* FindDegenerates.h in Headers */, - 2B7F48DC1708365200A106A9 /* FindInstancesProcess.h in Headers */, - 2B7F48E61708365200A106A9 /* FindInvalidDataProcess.h in Headers */, - 2B7F48F01708365200A106A9 /* FixNormalsStep.h in Headers */, - 2B7F48F51708365200A106A9 /* GenericProperty.h in Headers */, - 2B7F48FF1708365200A106A9 /* GenFaceNormalsProcess.h in Headers */, - 2B7F49091708365200A106A9 /* GenVertexNormalsProcess.h in Headers */, - 2B7F49131708365200A106A9 /* Hash.h in Headers */, - 2B7F493B1708365200A106A9 /* IFCLoader.h in Headers */, - 2B7F49541708365200A106A9 /* IFCReaderGen.h in Headers */, - 2B7F495E1708365200A106A9 /* IFCUtil.h in Headers */, - 2B7F49631708365200A106A9 /* IFF.h in Headers */, - 2B7F496D1708365200A106A9 /* Importer.h in Headers */, - 2B7F497C1708365200A106A9 /* ImproveCacheLocality.h in Headers */, - 2B7F49A91708365200A106A9 /* JoinVerticesProcess.h in Headers */, - 2B7F49B31708365200A106A9 /* LimitBoneWeightsProcess.h in Headers */, - 2B7F49B81708365200A106A9 /* LineSplitter.h in Headers */, - 2B7F49BD1708365200A106A9 /* LogAux.h in Headers */, - 2B7F49FE1708365200A106A9 /* MakeVerboseFormat.h in Headers */, - 2B7F4A081708365200A106A9 /* MaterialSystem.h in Headers */, - 2B7F4A301708365200A106A9 /* MD4FileData.h in Headers */, - 2B7F4A761708365200A106A9 /* MemoryIOWrapper.h in Headers */, - 2B7F4A9E1708365200A106A9 /* ObjExporter.h in Headers */, - 2B7F4AA31708365200A106A9 /* ObjFileData.h in Headers */, - 2B7F4AAD1708365200A106A9 /* ObjFileImporter.h in Headers */, - 2B7F4AB71708365200A106A9 /* ObjFileMtlImporter.h in Headers */, - 2B7F4AC11708365200A106A9 /* ObjFileParser.h in Headers */, - 2B7F4AC61708365200A106A9 /* ObjTools.h in Headers */, - 2B7F4AF81708365200A106A9 /* OptimizeGraph.h in Headers */, - 2B7F4B021708365200A106A9 /* OptimizeMeshes.h in Headers */, - 2B7F4B071708365200A106A9 /* ParsingUtils.h in Headers */, - 2B7F4B2A1708365200A106A9 /* PolyTools.h in Headers */, - 2B7F4B391708365200A106A9 /* PretransformVertices.h in Headers */, - 2B7F4B431708365200A106A9 /* ProcessHelper.h in Headers */, - 2B7F4B481708365200A106A9 /* Profiler.h in Headers */, - 2B7F4B4D1708365200A106A9 /* pstdint.h in Headers */, - 2B7F4B7F1708365200A106A9 /* qnan.h in Headers */, - 2B7F4B931708365200A106A9 /* RemoveComments.h in Headers */, - 2B7F4B9D1708365200A106A9 /* RemoveRedundantMaterials.h in Headers */, - 2B7F4BA71708365200A106A9 /* RemoveVCProcess.h in Headers */, - 2B7F4BB61708365200A106A9 /* SceneCombiner.h in Headers */, - 2B7F4BC01708365200A106A9 /* ScenePreprocessor.h in Headers */, - 2B7F4BC51708365200A106A9 /* ScenePrivate.h in Headers */, - 2B7F4BCF1708365200A106A9 /* SGSpatialSort.h in Headers */, - 2B7F4BD91708365200A106A9 /* SkeletonMeshBuilder.h in Headers */, - 2B7F4BE81708365200A106A9 /* SmoothingGroups.h in Headers */, - 2B7F4BF21708365200A106A9 /* SortByPTypeProcess.h in Headers */, - 2B7F4BFC1708365200A106A9 /* SpatialSort.h in Headers */, - 2B7F4C061708365200A106A9 /* SplitByBoneCountProcess.h in Headers */, - 2B7F4C101708365200A106A9 /* SplitLargeMeshes.h in Headers */, - 2B7F4C1A1708365200A106A9 /* StandardShapes.h in Headers */, - 2B7F4C1F1708365200A106A9 /* StdOStreamLogStream.h in Headers */, - 2B7F4C241708365200A106A9 /* STEPFile.h in Headers */, - 2B7F4C2E1708365200A106A9 /* STEPFileEncoding.h in Headers */, - 2B7F4C381708365200A106A9 /* STEPFileReader.h in Headers */, - 2B7F4C421708365200A106A9 /* STLExporter.h in Headers */, - 2B7F4C4C1708365200A106A9 /* STLLoader.h in Headers */, - 2B7F4C511708365200A106A9 /* StreamReader.h in Headers */, - 2B7F4C561708365200A106A9 /* StringComparison.h in Headers */, - 2B7F4C601708365200A106A9 /* Subdivision.h in Headers */, - 2B7F4C6A1708365200A106A9 /* TargetAnimation.h in Headers */, - 2B7F4C7E1708365200A106A9 /* TextureTransform.h in Headers */, - 2B7F4C831708365200A106A9 /* TinyFormatter.h in Headers */, - 2B7F4C8D1708365200A106A9 /* TriangulateProcess.h in Headers */, - 2B7F4CA11708365200A106A9 /* ValidateDataStructure.h in Headers */, - 2B7F4CA61708365200A106A9 /* Vertex.h in Headers */, - 2B7F4CB01708365200A106A9 /* VertexTriangleAdjacency.h in Headers */, - 2B7F4CB51708365200A106A9 /* Win32DebugLogStream.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 745FF829113ECB080020C31B /* assimp-no-boost */ = { - isa = PBXNativeTarget; - buildConfigurationList = 745FF8FD113ECB080020C31B /* Build configuration list for PBXNativeTarget "assimp-no-boost" */; - buildPhases = ( - 745FF82A113ECB080020C31B /* Headers */, - 745FF8AB113ECB080020C31B /* Frameworks */, - 745FF8AF113ECB080020C31B /* Sources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "assimp-no-boost"; - productName = libassimp; - productReference = 8E8DEEA5127E2D59005EF64D /* libassimpd.dylib */; - productType = "com.apple.product-type.library.dynamic"; - }; - 745FF90C113ECC660020C31B /* assimp-static-no-boost */ = { - isa = PBXNativeTarget; - buildConfigurationList = 745FF9E0113ECC660020C31B /* Build configuration list for PBXNativeTarget "assimp-static-no-boost" */; - buildPhases = ( - 745FF90D113ECC660020C31B /* Headers */, - 745FF98E113ECC660020C31B /* Frameworks */, - 745FF992113ECC660020C31B /* Sources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "assimp-static-no-boost"; - productName = "assimp-static"; - productReference = 8E8DEEA6127E2D59005EF64D /* libassimpd.a */; - productType = "com.apple.product-type.library.static"; - }; - B91974CF163AEA54009C397B /* assimp-ios-static-no-boost */ = { - isa = PBXNativeTarget; - buildConfigurationList = B919763C163AEA54009C397B /* Build configuration list for PBXNativeTarget "assimp-ios-static-no-boost" */; - buildPhases = ( - B91974D0163AEA54009C397B /* Headers */, - B91975B4163AEA54009C397B /* Frameworks */, - B91975B6163AEA54009C397B /* Sources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "assimp-ios-static-no-boost"; - productName = "assimp-static"; - productReference = B919763F163AEA54009C397B /* libassimp-ios.a */; - productType = "com.apple.product-type.library.static"; - }; - D2AAC09C05546B4700DB518D /* assimp */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1DEB916008733D950010E9CD /* Build configuration list for PBXNativeTarget "assimp" */; - buildPhases = ( - D2AAC09905546B4700DB518D /* Headers */, - D2AAC09B05546B4700DB518D /* Frameworks */, - D2AAC09A05546B4700DB518D /* Sources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = assimp; - productName = libassimp; - productReference = 8E8DEEA3127E2D59005EF64D /* libassimpd.dylib */; - productType = "com.apple.product-type.library.dynamic"; - }; - F962E8830F5DE66A009A5495 /* assimp-static */ = { - isa = PBXNativeTarget; - buildConfigurationList = F962E8870F5DE689009A5495 /* Build configuration list for PBXNativeTarget "assimp-static" */; - buildPhases = ( - F962E8800F5DE66A009A5495 /* Headers */, - F962E8820F5DE66A009A5495 /* Frameworks */, - F962E8810F5DE66A009A5495 /* Sources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "assimp-static"; - productName = "assimp-static"; - productReference = 8E8DEEA4127E2D59005EF64D /* libassimpd.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 0867D690FE84028FC02AAC07 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 0460; - }; - buildConfigurationList = 1DEB916408733D950010E9CD /* Build configuration list for PBXProject "assimp" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 1; - knownRegions = ( - English, - Japanese, - French, - German, - ); - mainGroup = 0867D691FE84028FC02AAC07 /* assimp */; - productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - D2AAC09C05546B4700DB518D /* assimp */, - F962E8830F5DE66A009A5495 /* assimp-static */, - 745FF829113ECB080020C31B /* assimp-no-boost */, - 745FF90C113ECC660020C31B /* assimp-static-no-boost */, - B91974CF163AEA54009C397B /* assimp-ios-static-no-boost */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - 745FF8AF113ECB080020C31B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 745FF8B0113ECB080020C31B /* 3DSConverter.cpp in Sources */, - 745FF8B1113ECB080020C31B /* 3DSLoader.cpp in Sources */, - 745FF8B3113ECB080020C31B /* ASELoader.cpp in Sources */, - 745FF8B4113ECB080020C31B /* ASEParser.cpp in Sources */, - 745FF8BF113ECB080020C31B /* HMPLoader.cpp in Sources */, - 745FF8C5113ECB080020C31B /* MD2Loader.cpp in Sources */, - 745FF8C6113ECB080020C31B /* MD3Loader.cpp in Sources */, - 745FF8C7113ECB080020C31B /* MD5Loader.cpp in Sources */, - 745FF8C8113ECB080020C31B /* MD5Parser.cpp in Sources */, - 745FF8C9113ECB080020C31B /* MDLLoader.cpp in Sources */, - 745FF8CA113ECB080020C31B /* MDLMaterialLoader.cpp in Sources */, - 745FF8CE113ECB080020C31B /* PlyLoader.cpp in Sources */, - 745FF8CF113ECB080020C31B /* PlyParser.cpp in Sources */, - 745FF8D3113ECB080020C31B /* SMDLoader.cpp in Sources */, - 745FF8DB113ECB080020C31B /* XFileImporter.cpp in Sources */, - 745FF8DC113ECB080020C31B /* XFileParser.cpp in Sources */, - 745FF8DD113ECB080020C31B /* MDCLoader.cpp in Sources */, - 745FF8DF113ECB080020C31B /* LWOLoader.cpp in Sources */, - 745FF8E1113ECB080020C31B /* LWOMaterial.cpp in Sources */, - 745FF8E2113ECB080020C31B /* ACLoader.cpp in Sources */, - 745FF8E3113ECB080020C31B /* IRRLoader.cpp in Sources */, - 745FF8E4113ECB080020C31B /* IRRMeshLoader.cpp in Sources */, - 745FF8E5113ECB080020C31B /* IRRShared.cpp in Sources */, - 745FF8E8113ECB080020C31B /* NFFLoader.cpp in Sources */, - 745FF8EA113ECB080020C31B /* Q3DLoader.cpp in Sources */, - 745FF8EB113ECB080020C31B /* BVHLoader.cpp in Sources */, - 745FF8EC113ECB080020C31B /* OFFLoader.cpp in Sources */, - 745FF8ED113ECB080020C31B /* RawLoader.cpp in Sources */, - 745FF8EE113ECB080020C31B /* DXFLoader.cpp in Sources */, - 745FF8EF113ECB080020C31B /* LWOBLoader.cpp in Sources */, - 745FF8F0113ECB080020C31B /* TerragenLoader.cpp in Sources */, - 745FF8FC113ECB080020C31B /* B3DImporter.cpp in Sources */, - 7411B15211416D5E00BCD793 /* CSMLoader.cpp in Sources */, - 7411B15D11416DDD00BCD793 /* LWSLoader.cpp in Sources */, - 7411B16711416DF400BCD793 /* LWOAnimation.cpp in Sources */, - 7411B17411416E2500BCD793 /* MS3DLoader.cpp in Sources */, - 7411B18F11416EBC00BCD793 /* UnrealLoader.cpp in Sources */, - 74C9BB5F11ACBB1000AF885C /* BlenderDNA.cpp in Sources */, - 74C9BB6111ACBB1000AF885C /* BlenderLoader.cpp in Sources */, - 74C9BB6311ACBB1000AF885C /* BlenderScene.cpp in Sources */, - 74C9BB8811ACBB9900AF885C /* AssimpPCH.cpp in Sources */, - 74C9BB9611ACBBBC00AF885C /* COBLoader.cpp in Sources */, - 8E7ABBA9127E0F1A00512ED1 /* Q3BSPFileImporter.cpp in Sources */, - 8E7ABBAB127E0F1A00512ED1 /* Q3BSPFileParser.cpp in Sources */, - 8E7ABBAD127E0F1A00512ED1 /* Q3BSPZipArchive.cpp in Sources */, - 8E7ABBC6127E0F2A00512ED1 /* NDOLoader.cpp in Sources */, - 8E7ABBD2127E0F3800512ED1 /* BlenderModifier.cpp in Sources */, - 8E8DEE5C127E2B78005EF64D /* ConvertUTF.c in Sources */, - 8E8DEE63127E2B78005EF64D /* irrXML.cpp in Sources */, - 8E8DEE66127E2B78005EF64D /* ioapi.c in Sources */, - 8E8DEE68127E2B78005EF64D /* unzip.c in Sources */, - F9BA8C47154328B600E63FFE /* OgreImporter.cpp in Sources */, - F9BA8C49154328B600E63FFE /* OgreMaterial.cpp in Sources */, - F9BA8C4A154328B600E63FFE /* OgreMesh.cpp in Sources */, - F9BA8C4B154328B600E63FFE /* OgreSkeleton.cpp in Sources */, - F99A9F3615436269000682F3 /* PlyExporter.cpp in Sources */, - F9607085154366AB004D91DD /* adler32.c in Sources */, - F9607086154366AB004D91DD /* compress.c in Sources */, - F9607087154366AB004D91DD /* crc32.c in Sources */, - F9607089154366AB004D91DD /* deflate.c in Sources */, - F960708B154366AB004D91DD /* inffast.c in Sources */, - F960708E154366AB004D91DD /* inflate.c in Sources */, - F9607090154366AB004D91DD /* inftrees.c in Sources */, - F9607092154366AB004D91DD /* trees.c in Sources */, - F9607097154366AB004D91DD /* zutil.c in Sources */, - F96070BB154366ED004D91DD /* XGLLoader.cpp in Sources */, - F96070CC1543673B004D91DD /* clipper.cpp in Sources */, - F96070F71543675E004D91DD /* shapes.cc in Sources */, - F96070FB1543675E004D91DD /* advancing_front.cc in Sources */, - F96070FD1543675E004D91DD /* cdt.cc in Sources */, - F96070FF1543675E004D91DD /* sweep.cc in Sources */, - F96071011543675E004D91DD /* sweep_context.cc in Sources */, - 2B7F46E41708365200A106A9 /* Assimp.cpp in Sources */, - 2B7F46E91708365200A106A9 /* AssimpCExport.cpp in Sources */, - 2B7F47021708365200A106A9 /* BaseImporter.cpp in Sources */, - 2B7F470C1708365200A106A9 /* BaseProcess.cpp in Sources */, - 2B7F47A21708365200A106A9 /* CalcTangentsProcess.cpp in Sources */, - 2B7F47C01708365200A106A9 /* ColladaExporter.cpp in Sources */, - 2B7F47CF1708365200A106A9 /* ColladaLoader.cpp in Sources */, - 2B7F47D91708365200A106A9 /* ColladaParser.cpp in Sources */, - 2B7F47E31708365200A106A9 /* ComputeUVMappingProcess.cpp in Sources */, - 2B7F47ED1708365200A106A9 /* ConvertToLHProcess.cpp in Sources */, - 2B7F48011708365200A106A9 /* DeboneProcess.cpp in Sources */, - 2B7F480B1708365200A106A9 /* DefaultIOStream.cpp in Sources */, - 2B7F48151708365200A106A9 /* DefaultIOSystem.cpp in Sources */, - 2B7F481F1708365200A106A9 /* DefaultLogger.cpp in Sources */, - 2B7F483D1708365200A106A9 /* Exporter.cpp in Sources */, - 2B7F48471708365200A106A9 /* FBXAnimation.cpp in Sources */, - 2B7F484C1708365200A106A9 /* FBXBinaryTokenizer.cpp in Sources */, - 2B7F48561708365200A106A9 /* FBXConverter.cpp in Sources */, - 2B7F48601708365200A106A9 /* FBXDeformer.cpp in Sources */, - 2B7F48651708365200A106A9 /* FBXDocument.cpp in Sources */, - 2B7F486F1708365200A106A9 /* FBXDocumentUtil.cpp in Sources */, - 2B7F48791708365200A106A9 /* FBXImporter.cpp in Sources */, - 2B7F48881708365200A106A9 /* FBXMaterial.cpp in Sources */, - 2B7F488D1708365200A106A9 /* FBXMeshGeometry.cpp in Sources */, - 2B7F48921708365200A106A9 /* FBXModel.cpp in Sources */, - 2B7F48971708365200A106A9 /* FBXNodeAttribute.cpp in Sources */, - 2B7F489C1708365200A106A9 /* FBXParser.cpp in Sources */, - 2B7F48A61708365200A106A9 /* FBXProperties.cpp in Sources */, - 2B7F48B01708365200A106A9 /* FBXTokenizer.cpp in Sources */, - 2B7F48BA1708365200A106A9 /* FBXUtil.cpp in Sources */, - 2B7F48CE1708365200A106A9 /* FindDegenerates.cpp in Sources */, - 2B7F48D81708365200A106A9 /* FindInstancesProcess.cpp in Sources */, - 2B7F48E21708365200A106A9 /* FindInvalidDataProcess.cpp in Sources */, - 2B7F48EC1708365200A106A9 /* FixNormalsStep.cpp in Sources */, - 2B7F48FB1708365200A106A9 /* GenFaceNormalsProcess.cpp in Sources */, - 2B7F49051708365200A106A9 /* GenVertexNormalsProcess.cpp in Sources */, - 2B7F49281708365200A106A9 /* IFCBoolean.cpp in Sources */, - 2B7F492D1708365200A106A9 /* IFCCurve.cpp in Sources */, - 2B7F49321708365200A106A9 /* IFCGeometry.cpp in Sources */, - 2B7F49371708365200A106A9 /* IFCLoader.cpp in Sources */, - 2B7F49411708365200A106A9 /* IFCMaterial.cpp in Sources */, - 2B7F49461708365200A106A9 /* IFCOpenings.cpp in Sources */, - 2B7F494B1708365200A106A9 /* IFCProfile.cpp in Sources */, - 2B7F49501708365200A106A9 /* IFCReaderGen.cpp in Sources */, - 2B7F495A1708365200A106A9 /* IFCUtil.cpp in Sources */, - 2B7F49691708365200A106A9 /* Importer.cpp in Sources */, - 2B7F49731708365200A106A9 /* ImporterRegistry.cpp in Sources */, - 2B7F49781708365200A106A9 /* ImproveCacheLocality.cpp in Sources */, - 2B7F49A51708365200A106A9 /* JoinVerticesProcess.cpp in Sources */, - 2B7F49AF1708365200A106A9 /* LimitBoneWeightsProcess.cpp in Sources */, - 2B7F49FA1708365200A106A9 /* MakeVerboseFormat.cpp in Sources */, - 2B7F4A041708365200A106A9 /* MaterialSystem.cpp in Sources */, - 2B7F4A9A1708365200A106A9 /* ObjExporter.cpp in Sources */, - 2B7F4AA91708365200A106A9 /* ObjFileImporter.cpp in Sources */, - 2B7F4AB31708365200A106A9 /* ObjFileMtlImporter.cpp in Sources */, - 2B7F4ABD1708365200A106A9 /* ObjFileParser.cpp in Sources */, - 2B7F4AF41708365200A106A9 /* OptimizeGraph.cpp in Sources */, - 2B7F4AFE1708365200A106A9 /* OptimizeMeshes.cpp in Sources */, - 2B7F4B301708365200A106A9 /* PostStepRegistry.cpp in Sources */, - 2B7F4B351708365200A106A9 /* PretransformVertices.cpp in Sources */, - 2B7F4B3F1708365200A106A9 /* ProcessHelper.cpp in Sources */, - 2B7F4B8F1708365200A106A9 /* RemoveComments.cpp in Sources */, - 2B7F4B991708365200A106A9 /* RemoveRedundantMaterials.cpp in Sources */, - 2B7F4BA31708365200A106A9 /* RemoveVCProcess.cpp in Sources */, - 2B7F4BB21708365200A106A9 /* SceneCombiner.cpp in Sources */, - 2B7F4BBC1708365200A106A9 /* ScenePreprocessor.cpp in Sources */, - 2B7F4BCB1708365200A106A9 /* SGSpatialSort.cpp in Sources */, - 2B7F4BD51708365200A106A9 /* SkeletonMeshBuilder.cpp in Sources */, - 2B7F4BEE1708365200A106A9 /* SortByPTypeProcess.cpp in Sources */, - 2B7F4BF81708365200A106A9 /* SpatialSort.cpp in Sources */, - 2B7F4C021708365200A106A9 /* SplitByBoneCountProcess.cpp in Sources */, - 2B7F4C0C1708365200A106A9 /* SplitLargeMeshes.cpp in Sources */, - 2B7F4C161708365200A106A9 /* StandardShapes.cpp in Sources */, - 2B7F4C2A1708365200A106A9 /* STEPFileEncoding.cpp in Sources */, - 2B7F4C341708365200A106A9 /* STEPFileReader.cpp in Sources */, - 2B7F4C3E1708365200A106A9 /* STLExporter.cpp in Sources */, - 2B7F4C481708365200A106A9 /* STLLoader.cpp in Sources */, - 2B7F4C5C1708365200A106A9 /* Subdivision.cpp in Sources */, - 2B7F4C661708365200A106A9 /* TargetAnimation.cpp in Sources */, - 2B7F4C7A1708365200A106A9 /* TextureTransform.cpp in Sources */, - 2B7F4C891708365200A106A9 /* TriangulateProcess.cpp in Sources */, - 2B7F4C9D1708365200A106A9 /* ValidateDataStructure.cpp in Sources */, - 2B7F4CAC1708365200A106A9 /* VertexTriangleAdjacency.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 745FF992113ECC660020C31B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 745FF993113ECC660020C31B /* 3DSConverter.cpp in Sources */, - 745FF994113ECC660020C31B /* 3DSLoader.cpp in Sources */, - 745FF996113ECC660020C31B /* ASELoader.cpp in Sources */, - 745FF997113ECC660020C31B /* ASEParser.cpp in Sources */, - 745FF9A2113ECC660020C31B /* HMPLoader.cpp in Sources */, - 745FF9A8113ECC660020C31B /* MD2Loader.cpp in Sources */, - 745FF9A9113ECC660020C31B /* MD3Loader.cpp in Sources */, - 745FF9AA113ECC660020C31B /* MD5Loader.cpp in Sources */, - 745FF9AB113ECC660020C31B /* MD5Parser.cpp in Sources */, - 745FF9AC113ECC660020C31B /* MDLLoader.cpp in Sources */, - 745FF9AD113ECC660020C31B /* MDLMaterialLoader.cpp in Sources */, - 745FF9B1113ECC660020C31B /* PlyLoader.cpp in Sources */, - 745FF9B2113ECC660020C31B /* PlyParser.cpp in Sources */, - 745FF9B6113ECC660020C31B /* SMDLoader.cpp in Sources */, - 745FF9BE113ECC660020C31B /* XFileImporter.cpp in Sources */, - 745FF9BF113ECC660020C31B /* XFileParser.cpp in Sources */, - 745FF9C0113ECC660020C31B /* MDCLoader.cpp in Sources */, - 745FF9C2113ECC660020C31B /* LWOLoader.cpp in Sources */, - 745FF9C4113ECC660020C31B /* LWOMaterial.cpp in Sources */, - 745FF9C5113ECC660020C31B /* ACLoader.cpp in Sources */, - 745FF9C6113ECC660020C31B /* IRRLoader.cpp in Sources */, - 745FF9C7113ECC660020C31B /* IRRMeshLoader.cpp in Sources */, - 745FF9C8113ECC660020C31B /* IRRShared.cpp in Sources */, - 745FF9CB113ECC660020C31B /* NFFLoader.cpp in Sources */, - 745FF9CD113ECC660020C31B /* Q3DLoader.cpp in Sources */, - 745FF9CE113ECC660020C31B /* BVHLoader.cpp in Sources */, - 745FF9CF113ECC660020C31B /* OFFLoader.cpp in Sources */, - 745FF9D0113ECC660020C31B /* RawLoader.cpp in Sources */, - 745FF9D1113ECC660020C31B /* DXFLoader.cpp in Sources */, - 745FF9D2113ECC660020C31B /* LWOBLoader.cpp in Sources */, - 745FF9D3113ECC660020C31B /* TerragenLoader.cpp in Sources */, - 745FF9DF113ECC660020C31B /* B3DImporter.cpp in Sources */, - 7411B15011416D5E00BCD793 /* CSMLoader.cpp in Sources */, - 7411B15B11416DDD00BCD793 /* LWSLoader.cpp in Sources */, - 7411B16511416DF400BCD793 /* LWOAnimation.cpp in Sources */, - 7411B17211416E2500BCD793 /* MS3DLoader.cpp in Sources */, - 7411B18D11416EBC00BCD793 /* UnrealLoader.cpp in Sources */, - 74C9BB6611ACBB1000AF885C /* BlenderDNA.cpp in Sources */, - 74C9BB6811ACBB1000AF885C /* BlenderLoader.cpp in Sources */, - 74C9BB6A11ACBB1000AF885C /* BlenderScene.cpp in Sources */, - 74C9BB8A11ACBB9900AF885C /* AssimpPCH.cpp in Sources */, - 74C9BB9911ACBBBC00AF885C /* COBLoader.cpp in Sources */, - 8E7ABBBE127E0F1A00512ED1 /* Q3BSPFileImporter.cpp in Sources */, - 8E7ABBC0127E0F1A00512ED1 /* Q3BSPFileParser.cpp in Sources */, - 8E7ABBC2127E0F1A00512ED1 /* Q3BSPZipArchive.cpp in Sources */, - 8E7ABBCC127E0F2A00512ED1 /* NDOLoader.cpp in Sources */, - 8E7ABBDB127E0F3800512ED1 /* BlenderModifier.cpp in Sources */, - 8E8DEE86127E2B78005EF64D /* ConvertUTF.c in Sources */, - 8E8DEE8D127E2B78005EF64D /* irrXML.cpp in Sources */, - 8E8DEE90127E2B78005EF64D /* ioapi.c in Sources */, - 8E8DEE92127E2B78005EF64D /* unzip.c in Sources */, - F9BA8C4D154328B600E63FFE /* OgreImporter.cpp in Sources */, - F9BA8C4F154328B600E63FFE /* OgreMaterial.cpp in Sources */, - F9BA8C50154328B600E63FFE /* OgreMesh.cpp in Sources */, - F9BA8C51154328B600E63FFE /* OgreSkeleton.cpp in Sources */, - F99A9F3815436269000682F3 /* PlyExporter.cpp in Sources */, - F9607099154366AB004D91DD /* adler32.c in Sources */, - F960709A154366AB004D91DD /* compress.c in Sources */, - F960709B154366AB004D91DD /* crc32.c in Sources */, - F960709D154366AB004D91DD /* deflate.c in Sources */, - F960709F154366AB004D91DD /* inffast.c in Sources */, - F96070A2154366AB004D91DD /* inflate.c in Sources */, - F96070A4154366AB004D91DD /* inftrees.c in Sources */, - F96070A6154366AB004D91DD /* trees.c in Sources */, - F96070AB154366AB004D91DD /* zutil.c in Sources */, - F96070BD154366ED004D91DD /* XGLLoader.cpp in Sources */, - F96070CE1543673B004D91DD /* clipper.cpp in Sources */, - F96071031543675E004D91DD /* shapes.cc in Sources */, - F96071071543675E004D91DD /* advancing_front.cc in Sources */, - F96071091543675E004D91DD /* cdt.cc in Sources */, - F960710B1543675E004D91DD /* sweep.cc in Sources */, - F960710D1543675E004D91DD /* sweep_context.cc in Sources */, - 2B7F46E51708365200A106A9 /* Assimp.cpp in Sources */, - 2B7F46EA1708365200A106A9 /* AssimpCExport.cpp in Sources */, - 2B7F47031708365200A106A9 /* BaseImporter.cpp in Sources */, - 2B7F470D1708365200A106A9 /* BaseProcess.cpp in Sources */, - 2B7F47A31708365200A106A9 /* CalcTangentsProcess.cpp in Sources */, - 2B7F47C11708365200A106A9 /* ColladaExporter.cpp in Sources */, - 2B7F47D01708365200A106A9 /* ColladaLoader.cpp in Sources */, - 2B7F47DA1708365200A106A9 /* ColladaParser.cpp in Sources */, - 2B7F47E41708365200A106A9 /* ComputeUVMappingProcess.cpp in Sources */, - 2B7F47EE1708365200A106A9 /* ConvertToLHProcess.cpp in Sources */, - 2B7F48021708365200A106A9 /* DeboneProcess.cpp in Sources */, - 2B7F480C1708365200A106A9 /* DefaultIOStream.cpp in Sources */, - 2B7F48161708365200A106A9 /* DefaultIOSystem.cpp in Sources */, - 2B7F48201708365200A106A9 /* DefaultLogger.cpp in Sources */, - 2B7F483E1708365200A106A9 /* Exporter.cpp in Sources */, - 2B7F48481708365200A106A9 /* FBXAnimation.cpp in Sources */, - 2B7F484D1708365200A106A9 /* FBXBinaryTokenizer.cpp in Sources */, - 2B7F48571708365200A106A9 /* FBXConverter.cpp in Sources */, - 2B7F48611708365200A106A9 /* FBXDeformer.cpp in Sources */, - 2B7F48661708365200A106A9 /* FBXDocument.cpp in Sources */, - 2B7F48701708365200A106A9 /* FBXDocumentUtil.cpp in Sources */, - 2B7F487A1708365200A106A9 /* FBXImporter.cpp in Sources */, - 2B7F48891708365200A106A9 /* FBXMaterial.cpp in Sources */, - 2B7F488E1708365200A106A9 /* FBXMeshGeometry.cpp in Sources */, - 2B7F48931708365200A106A9 /* FBXModel.cpp in Sources */, - 2B7F48981708365200A106A9 /* FBXNodeAttribute.cpp in Sources */, - 2B7F489D1708365200A106A9 /* FBXParser.cpp in Sources */, - 2B7F48A71708365200A106A9 /* FBXProperties.cpp in Sources */, - 2B7F48B11708365200A106A9 /* FBXTokenizer.cpp in Sources */, - 2B7F48BB1708365200A106A9 /* FBXUtil.cpp in Sources */, - 2B7F48CF1708365200A106A9 /* FindDegenerates.cpp in Sources */, - 2B7F48D91708365200A106A9 /* FindInstancesProcess.cpp in Sources */, - 2B7F48E31708365200A106A9 /* FindInvalidDataProcess.cpp in Sources */, - 2B7F48ED1708365200A106A9 /* FixNormalsStep.cpp in Sources */, - 2B7F48FC1708365200A106A9 /* GenFaceNormalsProcess.cpp in Sources */, - 2B7F49061708365200A106A9 /* GenVertexNormalsProcess.cpp in Sources */, - 2B7F49291708365200A106A9 /* IFCBoolean.cpp in Sources */, - 2B7F492E1708365200A106A9 /* IFCCurve.cpp in Sources */, - 2B7F49331708365200A106A9 /* IFCGeometry.cpp in Sources */, - 2B7F49381708365200A106A9 /* IFCLoader.cpp in Sources */, - 2B7F49421708365200A106A9 /* IFCMaterial.cpp in Sources */, - 2B7F49471708365200A106A9 /* IFCOpenings.cpp in Sources */, - 2B7F494C1708365200A106A9 /* IFCProfile.cpp in Sources */, - 2B7F49511708365200A106A9 /* IFCReaderGen.cpp in Sources */, - 2B7F495B1708365200A106A9 /* IFCUtil.cpp in Sources */, - 2B7F496A1708365200A106A9 /* Importer.cpp in Sources */, - 2B7F49741708365200A106A9 /* ImporterRegistry.cpp in Sources */, - 2B7F49791708365200A106A9 /* ImproveCacheLocality.cpp in Sources */, - 2B7F49A61708365200A106A9 /* JoinVerticesProcess.cpp in Sources */, - 2B7F49B01708365200A106A9 /* LimitBoneWeightsProcess.cpp in Sources */, - 2B7F49FB1708365200A106A9 /* MakeVerboseFormat.cpp in Sources */, - 2B7F4A051708365200A106A9 /* MaterialSystem.cpp in Sources */, - 2B7F4A9B1708365200A106A9 /* ObjExporter.cpp in Sources */, - 2B7F4AAA1708365200A106A9 /* ObjFileImporter.cpp in Sources */, - 2B7F4AB41708365200A106A9 /* ObjFileMtlImporter.cpp in Sources */, - 2B7F4ABE1708365200A106A9 /* ObjFileParser.cpp in Sources */, - 2B7F4AF51708365200A106A9 /* OptimizeGraph.cpp in Sources */, - 2B7F4AFF1708365200A106A9 /* OptimizeMeshes.cpp in Sources */, - 2B7F4B311708365200A106A9 /* PostStepRegistry.cpp in Sources */, - 2B7F4B361708365200A106A9 /* PretransformVertices.cpp in Sources */, - 2B7F4B401708365200A106A9 /* ProcessHelper.cpp in Sources */, - 2B7F4B901708365200A106A9 /* RemoveComments.cpp in Sources */, - 2B7F4B9A1708365200A106A9 /* RemoveRedundantMaterials.cpp in Sources */, - 2B7F4BA41708365200A106A9 /* RemoveVCProcess.cpp in Sources */, - 2B7F4BB31708365200A106A9 /* SceneCombiner.cpp in Sources */, - 2B7F4BBD1708365200A106A9 /* ScenePreprocessor.cpp in Sources */, - 2B7F4BCC1708365200A106A9 /* SGSpatialSort.cpp in Sources */, - 2B7F4BD61708365200A106A9 /* SkeletonMeshBuilder.cpp in Sources */, - 2B7F4BEF1708365200A106A9 /* SortByPTypeProcess.cpp in Sources */, - 2B7F4BF91708365200A106A9 /* SpatialSort.cpp in Sources */, - 2B7F4C031708365200A106A9 /* SplitByBoneCountProcess.cpp in Sources */, - 2B7F4C0D1708365200A106A9 /* SplitLargeMeshes.cpp in Sources */, - 2B7F4C171708365200A106A9 /* StandardShapes.cpp in Sources */, - 2B7F4C2B1708365200A106A9 /* STEPFileEncoding.cpp in Sources */, - 2B7F4C351708365200A106A9 /* STEPFileReader.cpp in Sources */, - 2B7F4C3F1708365200A106A9 /* STLExporter.cpp in Sources */, - 2B7F4C491708365200A106A9 /* STLLoader.cpp in Sources */, - 2B7F4C5D1708365200A106A9 /* Subdivision.cpp in Sources */, - 2B7F4C671708365200A106A9 /* TargetAnimation.cpp in Sources */, - 2B7F4C7B1708365200A106A9 /* TextureTransform.cpp in Sources */, - 2B7F4C8A1708365200A106A9 /* TriangulateProcess.cpp in Sources */, - 2B7F4C9E1708365200A106A9 /* ValidateDataStructure.cpp in Sources */, - 2B7F4CAD1708365200A106A9 /* VertexTriangleAdjacency.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B91975B6163AEA54009C397B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B91975B7163AEA54009C397B /* 3DSConverter.cpp in Sources */, - B91975B8163AEA54009C397B /* 3DSLoader.cpp in Sources */, - B91975B9163AEA54009C397B /* ASELoader.cpp in Sources */, - B91975BA163AEA54009C397B /* ASEParser.cpp in Sources */, - B91975C4163AEA54009C397B /* HMPLoader.cpp in Sources */, - B91975CA163AEA54009C397B /* MD2Loader.cpp in Sources */, - B91975CB163AEA54009C397B /* MD3Loader.cpp in Sources */, - B91975CC163AEA54009C397B /* MD5Loader.cpp in Sources */, - B91975CD163AEA54009C397B /* MD5Parser.cpp in Sources */, - B91975CE163AEA54009C397B /* MDLLoader.cpp in Sources */, - B91975CF163AEA54009C397B /* MDLMaterialLoader.cpp in Sources */, - B91975D3163AEA54009C397B /* PlyLoader.cpp in Sources */, - B91975D4163AEA54009C397B /* PlyParser.cpp in Sources */, - B91975D8163AEA54009C397B /* SMDLoader.cpp in Sources */, - B91975E0163AEA54009C397B /* XFileImporter.cpp in Sources */, - B91975E1163AEA54009C397B /* XFileParser.cpp in Sources */, - B91975E2163AEA54009C397B /* MDCLoader.cpp in Sources */, - B91975E4163AEA54009C397B /* LWOLoader.cpp in Sources */, - B91975E6163AEA54009C397B /* LWOMaterial.cpp in Sources */, - B91975E7163AEA54009C397B /* ACLoader.cpp in Sources */, - B91975E8163AEA54009C397B /* IRRLoader.cpp in Sources */, - B91975E9163AEA54009C397B /* IRRMeshLoader.cpp in Sources */, - B91975EA163AEA54009C397B /* IRRShared.cpp in Sources */, - B91975ED163AEA54009C397B /* NFFLoader.cpp in Sources */, - B91975EF163AEA54009C397B /* Q3DLoader.cpp in Sources */, - B91975F0163AEA54009C397B /* BVHLoader.cpp in Sources */, - B91975F1163AEA54009C397B /* OFFLoader.cpp in Sources */, - B91975F2163AEA54009C397B /* RawLoader.cpp in Sources */, - B91975F3163AEA54009C397B /* DXFLoader.cpp in Sources */, - B91975F4163AEA54009C397B /* LWOBLoader.cpp in Sources */, - B91975F5163AEA54009C397B /* TerragenLoader.cpp in Sources */, - B9197600163AEA54009C397B /* B3DImporter.cpp in Sources */, - B9197601163AEA54009C397B /* CSMLoader.cpp in Sources */, - B9197602163AEA54009C397B /* LWSLoader.cpp in Sources */, - B9197603163AEA54009C397B /* LWOAnimation.cpp in Sources */, - B9197604163AEA54009C397B /* MS3DLoader.cpp in Sources */, - B9197605163AEA54009C397B /* UnrealLoader.cpp in Sources */, - B919760A163AEA54009C397B /* BlenderDNA.cpp in Sources */, - B919760B163AEA54009C397B /* BlenderLoader.cpp in Sources */, - B919760C163AEA54009C397B /* BlenderScene.cpp in Sources */, - B919760E163AEA54009C397B /* AssimpPCH.cpp in Sources */, - B919760F163AEA54009C397B /* COBLoader.cpp in Sources */, - B9197610163AEA54009C397B /* Q3BSPFileImporter.cpp in Sources */, - B9197611163AEA54009C397B /* Q3BSPFileParser.cpp in Sources */, - B9197612163AEA54009C397B /* Q3BSPZipArchive.cpp in Sources */, - B9197613163AEA54009C397B /* NDOLoader.cpp in Sources */, - B9197614163AEA54009C397B /* BlenderModifier.cpp in Sources */, - B9197615163AEA54009C397B /* ConvertUTF.c in Sources */, - B9197616163AEA54009C397B /* irrXML.cpp in Sources */, - B9197617163AEA54009C397B /* ioapi.c in Sources */, - B9197618163AEA54009C397B /* unzip.c in Sources */, - B9197619163AEA54009C397B /* OgreImporter.cpp in Sources */, - B919761A163AEA54009C397B /* OgreMaterial.cpp in Sources */, - B919761B163AEA54009C397B /* OgreMesh.cpp in Sources */, - B919761C163AEA54009C397B /* OgreSkeleton.cpp in Sources */, - B9197620163AEA54009C397B /* PlyExporter.cpp in Sources */, - B9197625163AEA54009C397B /* adler32.c in Sources */, - B9197626163AEA54009C397B /* compress.c in Sources */, - B9197627163AEA54009C397B /* crc32.c in Sources */, - B9197628163AEA54009C397B /* deflate.c in Sources */, - B9197629163AEA54009C397B /* inffast.c in Sources */, - B919762A163AEA54009C397B /* inflate.c in Sources */, - B919762B163AEA54009C397B /* inftrees.c in Sources */, - B919762C163AEA54009C397B /* trees.c in Sources */, - B919762D163AEA54009C397B /* zutil.c in Sources */, - B919762E163AEA54009C397B /* XGLLoader.cpp in Sources */, - B919762F163AEA54009C397B /* clipper.cpp in Sources */, - B9197630163AEA54009C397B /* shapes.cc in Sources */, - B9197631163AEA54009C397B /* advancing_front.cc in Sources */, - B9197632163AEA54009C397B /* cdt.cc in Sources */, - B9197633163AEA54009C397B /* sweep.cc in Sources */, - B9197634163AEA54009C397B /* sweep_context.cc in Sources */, - 2B7F46E61708365200A106A9 /* Assimp.cpp in Sources */, - 2B7F46EB1708365200A106A9 /* AssimpCExport.cpp in Sources */, - 2B7F47041708365200A106A9 /* BaseImporter.cpp in Sources */, - 2B7F470E1708365200A106A9 /* BaseProcess.cpp in Sources */, - 2B7F47A41708365200A106A9 /* CalcTangentsProcess.cpp in Sources */, - 2B7F47C21708365200A106A9 /* ColladaExporter.cpp in Sources */, - 2B7F47D11708365200A106A9 /* ColladaLoader.cpp in Sources */, - 2B7F47DB1708365200A106A9 /* ColladaParser.cpp in Sources */, - 2B7F47E51708365200A106A9 /* ComputeUVMappingProcess.cpp in Sources */, - 2B7F47EF1708365200A106A9 /* ConvertToLHProcess.cpp in Sources */, - 2B7F48031708365200A106A9 /* DeboneProcess.cpp in Sources */, - 2B7F480D1708365200A106A9 /* DefaultIOStream.cpp in Sources */, - 2B7F48171708365200A106A9 /* DefaultIOSystem.cpp in Sources */, - 2B7F48211708365200A106A9 /* DefaultLogger.cpp in Sources */, - 2B7F483F1708365200A106A9 /* Exporter.cpp in Sources */, - 2B7F48491708365200A106A9 /* FBXAnimation.cpp in Sources */, - 2B7F484E1708365200A106A9 /* FBXBinaryTokenizer.cpp in Sources */, - 2B7F48581708365200A106A9 /* FBXConverter.cpp in Sources */, - 2B7F48621708365200A106A9 /* FBXDeformer.cpp in Sources */, - 2B7F48671708365200A106A9 /* FBXDocument.cpp in Sources */, - 2B7F48711708365200A106A9 /* FBXDocumentUtil.cpp in Sources */, - 2B7F487B1708365200A106A9 /* FBXImporter.cpp in Sources */, - 2B7F488A1708365200A106A9 /* FBXMaterial.cpp in Sources */, - 2B7F488F1708365200A106A9 /* FBXMeshGeometry.cpp in Sources */, - 2B7F48941708365200A106A9 /* FBXModel.cpp in Sources */, - 2B7F48991708365200A106A9 /* FBXNodeAttribute.cpp in Sources */, - 2B7F489E1708365200A106A9 /* FBXParser.cpp in Sources */, - 2B7F48A81708365200A106A9 /* FBXProperties.cpp in Sources */, - 2B7F48B21708365200A106A9 /* FBXTokenizer.cpp in Sources */, - 2B7F48BC1708365200A106A9 /* FBXUtil.cpp in Sources */, - 2B7F48D01708365200A106A9 /* FindDegenerates.cpp in Sources */, - 2B7F48DA1708365200A106A9 /* FindInstancesProcess.cpp in Sources */, - 2B7F48E41708365200A106A9 /* FindInvalidDataProcess.cpp in Sources */, - 2B7F48EE1708365200A106A9 /* FixNormalsStep.cpp in Sources */, - 2B7F48FD1708365200A106A9 /* GenFaceNormalsProcess.cpp in Sources */, - 2B7F49071708365200A106A9 /* GenVertexNormalsProcess.cpp in Sources */, - 2B7F492A1708365200A106A9 /* IFCBoolean.cpp in Sources */, - 2B7F492F1708365200A106A9 /* IFCCurve.cpp in Sources */, - 2B7F49341708365200A106A9 /* IFCGeometry.cpp in Sources */, - 2B7F49391708365200A106A9 /* IFCLoader.cpp in Sources */, - 2B7F49431708365200A106A9 /* IFCMaterial.cpp in Sources */, - 2B7F49481708365200A106A9 /* IFCOpenings.cpp in Sources */, - 2B7F494D1708365200A106A9 /* IFCProfile.cpp in Sources */, - 2B7F49521708365200A106A9 /* IFCReaderGen.cpp in Sources */, - 2B7F495C1708365200A106A9 /* IFCUtil.cpp in Sources */, - 2B7F496B1708365200A106A9 /* Importer.cpp in Sources */, - 2B7F49751708365200A106A9 /* ImporterRegistry.cpp in Sources */, - 2B7F497A1708365200A106A9 /* ImproveCacheLocality.cpp in Sources */, - 2B7F49A71708365200A106A9 /* JoinVerticesProcess.cpp in Sources */, - 2B7F49B11708365200A106A9 /* LimitBoneWeightsProcess.cpp in Sources */, - 2B7F49FC1708365200A106A9 /* MakeVerboseFormat.cpp in Sources */, - 2B7F4A061708365200A106A9 /* MaterialSystem.cpp in Sources */, - 2B7F4A9C1708365200A106A9 /* ObjExporter.cpp in Sources */, - 2B7F4AAB1708365200A106A9 /* ObjFileImporter.cpp in Sources */, - 2B7F4AB51708365200A106A9 /* ObjFileMtlImporter.cpp in Sources */, - 2B7F4ABF1708365200A106A9 /* ObjFileParser.cpp in Sources */, - 2B7F4AF61708365200A106A9 /* OptimizeGraph.cpp in Sources */, - 2B7F4B001708365200A106A9 /* OptimizeMeshes.cpp in Sources */, - 2B7F4B321708365200A106A9 /* PostStepRegistry.cpp in Sources */, - 2B7F4B371708365200A106A9 /* PretransformVertices.cpp in Sources */, - 2B7F4B411708365200A106A9 /* ProcessHelper.cpp in Sources */, - 2B7F4B911708365200A106A9 /* RemoveComments.cpp in Sources */, - 2B7F4B9B1708365200A106A9 /* RemoveRedundantMaterials.cpp in Sources */, - 2B7F4BA51708365200A106A9 /* RemoveVCProcess.cpp in Sources */, - 2B7F4BB41708365200A106A9 /* SceneCombiner.cpp in Sources */, - 2B7F4BBE1708365200A106A9 /* ScenePreprocessor.cpp in Sources */, - 2B7F4BCD1708365200A106A9 /* SGSpatialSort.cpp in Sources */, - 2B7F4BD71708365200A106A9 /* SkeletonMeshBuilder.cpp in Sources */, - 2B7F4BF01708365200A106A9 /* SortByPTypeProcess.cpp in Sources */, - 2B7F4BFA1708365200A106A9 /* SpatialSort.cpp in Sources */, - 2B7F4C041708365200A106A9 /* SplitByBoneCountProcess.cpp in Sources */, - 2B7F4C0E1708365200A106A9 /* SplitLargeMeshes.cpp in Sources */, - 2B7F4C181708365200A106A9 /* StandardShapes.cpp in Sources */, - 2B7F4C2C1708365200A106A9 /* STEPFileEncoding.cpp in Sources */, - 2B7F4C361708365200A106A9 /* STEPFileReader.cpp in Sources */, - 2B7F4C401708365200A106A9 /* STLExporter.cpp in Sources */, - 2B7F4C4A1708365200A106A9 /* STLLoader.cpp in Sources */, - 2B7F4C5E1708365200A106A9 /* Subdivision.cpp in Sources */, - 2B7F4C681708365200A106A9 /* TargetAnimation.cpp in Sources */, - 2B7F4C7C1708365200A106A9 /* TextureTransform.cpp in Sources */, - 2B7F4C8B1708365200A106A9 /* TriangulateProcess.cpp in Sources */, - 2B7F4C9F1708365200A106A9 /* ValidateDataStructure.cpp in Sources */, - 2B7F4CAE1708365200A106A9 /* VertexTriangleAdjacency.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D2AAC09A05546B4700DB518D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 3AF45AF90E4B716800207D74 /* 3DSConverter.cpp in Sources */, - 3AF45AFC0E4B716800207D74 /* 3DSLoader.cpp in Sources */, - 3AF45B010E4B716800207D74 /* ASELoader.cpp in Sources */, - 3AF45B030E4B716800207D74 /* ASEParser.cpp in Sources */, - 3AF45B1D0E4B716800207D74 /* HMPLoader.cpp in Sources */, - 3AF45B2B0E4B716800207D74 /* MD2Loader.cpp in Sources */, - 3AF45B2F0E4B716800207D74 /* MD3Loader.cpp in Sources */, - 3AF45B340E4B716800207D74 /* MD5Loader.cpp in Sources */, - 3AF45B360E4B716800207D74 /* MD5Parser.cpp in Sources */, - 3AF45B3A0E4B716800207D74 /* MDLLoader.cpp in Sources */, - 3AF45B3C0E4B716800207D74 /* MDLMaterialLoader.cpp in Sources */, - 3AF45B460E4B716800207D74 /* PlyLoader.cpp in Sources */, - 3AF45B480E4B716800207D74 /* PlyParser.cpp in Sources */, - 3AF45B520E4B716800207D74 /* SMDLoader.cpp in Sources */, - 3AF45B650E4B716800207D74 /* XFileImporter.cpp in Sources */, - 3AF45B670E4B716800207D74 /* XFileParser.cpp in Sources */, - 3AB8A3B00E50D67A00606590 /* MDCLoader.cpp in Sources */, - 3AB8A3BB0E50D6DB00606590 /* LWOLoader.cpp in Sources */, - 3AB8A7DD0E53715F00606590 /* LWOMaterial.cpp in Sources */, - F90BAFD20F5DD87000124155 /* ACLoader.cpp in Sources */, - F90BAFDF0F5DD90800124155 /* IRRLoader.cpp in Sources */, - F90BAFE10F5DD90800124155 /* IRRMeshLoader.cpp in Sources */, - F90BAFE30F5DD90800124155 /* IRRShared.cpp in Sources */, - F90BAFF80F5DD96100124155 /* NFFLoader.cpp in Sources */, - F90BB0080F5DD9DD00124155 /* Q3DLoader.cpp in Sources */, - F90BB00F0F5DD9F400124155 /* BVHLoader.cpp in Sources */, - F90BB0160F5DDA1400124155 /* OFFLoader.cpp in Sources */, - F90BB01E0F5DDA4400124155 /* RawLoader.cpp in Sources */, - F90BB0240F5DDA5700124155 /* DXFLoader.cpp in Sources */, - F90BB0280F5DDA9200124155 /* LWOBLoader.cpp in Sources */, - F90BB0320F5DDAB500124155 /* TerragenLoader.cpp in Sources */, - F90BB08A0F5DDE0700124155 /* B3DImporter.cpp in Sources */, - 7411B15411416D5E00BCD793 /* CSMLoader.cpp in Sources */, - 7411B15F11416DDD00BCD793 /* LWSLoader.cpp in Sources */, - 7411B16911416DF400BCD793 /* LWOAnimation.cpp in Sources */, - 7411B17611416E2500BCD793 /* MS3DLoader.cpp in Sources */, - 7411B19111416EBC00BCD793 /* UnrealLoader.cpp in Sources */, - 74C9BB5111ACBB1000AF885C /* BlenderDNA.cpp in Sources */, - 74C9BB5311ACBB1000AF885C /* BlenderLoader.cpp in Sources */, - 74C9BB5511ACBB1000AF885C /* BlenderScene.cpp in Sources */, - 74C9BB8C11ACBB9900AF885C /* AssimpPCH.cpp in Sources */, - 74C9BB9C11ACBBBC00AF885C /* COBLoader.cpp in Sources */, - 8E7ABBB0127E0F1A00512ED1 /* Q3BSPFileImporter.cpp in Sources */, - 8E7ABBB2127E0F1A00512ED1 /* Q3BSPFileParser.cpp in Sources */, - 8E7ABBB4127E0F1A00512ED1 /* Q3BSPZipArchive.cpp in Sources */, - 8E7ABBC8127E0F2A00512ED1 /* NDOLoader.cpp in Sources */, - 8E7ABBD5127E0F3800512ED1 /* BlenderModifier.cpp in Sources */, - 8E8DEE6A127E2B78005EF64D /* ConvertUTF.c in Sources */, - 8E8DEE71127E2B78005EF64D /* irrXML.cpp in Sources */, - 8E8DEE74127E2B78005EF64D /* ioapi.c in Sources */, - 8E8DEE76127E2B78005EF64D /* unzip.c in Sources */, - F9BA8C3B154328B600E63FFE /* OgreImporter.cpp in Sources */, - F9BA8C3D154328B600E63FFE /* OgreMaterial.cpp in Sources */, - F9BA8C3E154328B600E63FFE /* OgreMesh.cpp in Sources */, - F9BA8C3F154328B600E63FFE /* OgreSkeleton.cpp in Sources */, - F99A9F3215436269000682F3 /* PlyExporter.cpp in Sources */, - F960705D154366AB004D91DD /* adler32.c in Sources */, - F960705E154366AB004D91DD /* compress.c in Sources */, - F960705F154366AB004D91DD /* crc32.c in Sources */, - F9607061154366AB004D91DD /* deflate.c in Sources */, - F9607063154366AB004D91DD /* inffast.c in Sources */, - F9607066154366AB004D91DD /* inflate.c in Sources */, - F9607068154366AB004D91DD /* inftrees.c in Sources */, - F960706A154366AB004D91DD /* trees.c in Sources */, - F960706F154366AB004D91DD /* zutil.c in Sources */, - F96070B7154366ED004D91DD /* XGLLoader.cpp in Sources */, - F96070C81543673B004D91DD /* clipper.cpp in Sources */, - F96070DF1543675E004D91DD /* shapes.cc in Sources */, - F96070E31543675E004D91DD /* advancing_front.cc in Sources */, - F96070E51543675E004D91DD /* cdt.cc in Sources */, - F96070E71543675E004D91DD /* sweep.cc in Sources */, - F96070E91543675E004D91DD /* sweep_context.cc in Sources */, - 2B7F46E21708365200A106A9 /* Assimp.cpp in Sources */, - 2B7F46E71708365200A106A9 /* AssimpCExport.cpp in Sources */, - 2B7F47001708365200A106A9 /* BaseImporter.cpp in Sources */, - 2B7F470A1708365200A106A9 /* BaseProcess.cpp in Sources */, - 2B7F47A01708365200A106A9 /* CalcTangentsProcess.cpp in Sources */, - 2B7F47BE1708365200A106A9 /* ColladaExporter.cpp in Sources */, - 2B7F47CD1708365200A106A9 /* ColladaLoader.cpp in Sources */, - 2B7F47D71708365200A106A9 /* ColladaParser.cpp in Sources */, - 2B7F47E11708365200A106A9 /* ComputeUVMappingProcess.cpp in Sources */, - 2B7F47EB1708365200A106A9 /* ConvertToLHProcess.cpp in Sources */, - 2B7F47FF1708365200A106A9 /* DeboneProcess.cpp in Sources */, - 2B7F48091708365200A106A9 /* DefaultIOStream.cpp in Sources */, - 2B7F48131708365200A106A9 /* DefaultIOSystem.cpp in Sources */, - 2B7F481D1708365200A106A9 /* DefaultLogger.cpp in Sources */, - 2B7F483B1708365200A106A9 /* Exporter.cpp in Sources */, - 2B7F48451708365200A106A9 /* FBXAnimation.cpp in Sources */, - 2B7F484A1708365200A106A9 /* FBXBinaryTokenizer.cpp in Sources */, - 2B7F48541708365200A106A9 /* FBXConverter.cpp in Sources */, - 2B7F485E1708365200A106A9 /* FBXDeformer.cpp in Sources */, - 2B7F48631708365200A106A9 /* FBXDocument.cpp in Sources */, - 2B7F486D1708365200A106A9 /* FBXDocumentUtil.cpp in Sources */, - 2B7F48771708365200A106A9 /* FBXImporter.cpp in Sources */, - 2B7F48861708365200A106A9 /* FBXMaterial.cpp in Sources */, - 2B7F488B1708365200A106A9 /* FBXMeshGeometry.cpp in Sources */, - 2B7F48901708365200A106A9 /* FBXModel.cpp in Sources */, - 2B7F48951708365200A106A9 /* FBXNodeAttribute.cpp in Sources */, - 2B7F489A1708365200A106A9 /* FBXParser.cpp in Sources */, - 2B7F48A41708365200A106A9 /* FBXProperties.cpp in Sources */, - 2B7F48AE1708365200A106A9 /* FBXTokenizer.cpp in Sources */, - 2B7F48B81708365200A106A9 /* FBXUtil.cpp in Sources */, - 2B7F48CC1708365200A106A9 /* FindDegenerates.cpp in Sources */, - 2B7F48D61708365200A106A9 /* FindInstancesProcess.cpp in Sources */, - 2B7F48E01708365200A106A9 /* FindInvalidDataProcess.cpp in Sources */, - 2B7F48EA1708365200A106A9 /* FixNormalsStep.cpp in Sources */, - 2B7F48F91708365200A106A9 /* GenFaceNormalsProcess.cpp in Sources */, - 2B7F49031708365200A106A9 /* GenVertexNormalsProcess.cpp in Sources */, - 2B7F49261708365200A106A9 /* IFCBoolean.cpp in Sources */, - 2B7F492B1708365200A106A9 /* IFCCurve.cpp in Sources */, - 2B7F49301708365200A106A9 /* IFCGeometry.cpp in Sources */, - 2B7F49351708365200A106A9 /* IFCLoader.cpp in Sources */, - 2B7F493F1708365200A106A9 /* IFCMaterial.cpp in Sources */, - 2B7F49441708365200A106A9 /* IFCOpenings.cpp in Sources */, - 2B7F49491708365200A106A9 /* IFCProfile.cpp in Sources */, - 2B7F494E1708365200A106A9 /* IFCReaderGen.cpp in Sources */, - 2B7F49581708365200A106A9 /* IFCUtil.cpp in Sources */, - 2B7F49671708365200A106A9 /* Importer.cpp in Sources */, - 2B7F49711708365200A106A9 /* ImporterRegistry.cpp in Sources */, - 2B7F49761708365200A106A9 /* ImproveCacheLocality.cpp in Sources */, - 2B7F49A31708365200A106A9 /* JoinVerticesProcess.cpp in Sources */, - 2B7F49AD1708365200A106A9 /* LimitBoneWeightsProcess.cpp in Sources */, - 2B7F49F81708365200A106A9 /* MakeVerboseFormat.cpp in Sources */, - 2B7F4A021708365200A106A9 /* MaterialSystem.cpp in Sources */, - 2B7F4A981708365200A106A9 /* ObjExporter.cpp in Sources */, - 2B7F4AA71708365200A106A9 /* ObjFileImporter.cpp in Sources */, - 2B7F4AB11708365200A106A9 /* ObjFileMtlImporter.cpp in Sources */, - 2B7F4ABB1708365200A106A9 /* ObjFileParser.cpp in Sources */, - 2B7F4AF21708365200A106A9 /* OptimizeGraph.cpp in Sources */, - 2B7F4AFC1708365200A106A9 /* OptimizeMeshes.cpp in Sources */, - 2B7F4B2E1708365200A106A9 /* PostStepRegistry.cpp in Sources */, - 2B7F4B331708365200A106A9 /* PretransformVertices.cpp in Sources */, - 2B7F4B3D1708365200A106A9 /* ProcessHelper.cpp in Sources */, - 2B7F4B8D1708365200A106A9 /* RemoveComments.cpp in Sources */, - 2B7F4B971708365200A106A9 /* RemoveRedundantMaterials.cpp in Sources */, - 2B7F4BA11708365200A106A9 /* RemoveVCProcess.cpp in Sources */, - 2B7F4BB01708365200A106A9 /* SceneCombiner.cpp in Sources */, - 2B7F4BBA1708365200A106A9 /* ScenePreprocessor.cpp in Sources */, - 2B7F4BC91708365200A106A9 /* SGSpatialSort.cpp in Sources */, - 2B7F4BD31708365200A106A9 /* SkeletonMeshBuilder.cpp in Sources */, - 2B7F4BEC1708365200A106A9 /* SortByPTypeProcess.cpp in Sources */, - 2B7F4BF61708365200A106A9 /* SpatialSort.cpp in Sources */, - 2B7F4C001708365200A106A9 /* SplitByBoneCountProcess.cpp in Sources */, - 2B7F4C0A1708365200A106A9 /* SplitLargeMeshes.cpp in Sources */, - 2B7F4C141708365200A106A9 /* StandardShapes.cpp in Sources */, - 2B7F4C281708365200A106A9 /* STEPFileEncoding.cpp in Sources */, - 2B7F4C321708365200A106A9 /* STEPFileReader.cpp in Sources */, - 2B7F4C3C1708365200A106A9 /* STLExporter.cpp in Sources */, - 2B7F4C461708365200A106A9 /* STLLoader.cpp in Sources */, - 2B7F4C5A1708365200A106A9 /* Subdivision.cpp in Sources */, - 2B7F4C641708365200A106A9 /* TargetAnimation.cpp in Sources */, - 2B7F4C781708365200A106A9 /* TextureTransform.cpp in Sources */, - 2B7F4C871708365200A106A9 /* TriangulateProcess.cpp in Sources */, - 2B7F4C9B1708365200A106A9 /* ValidateDataStructure.cpp in Sources */, - 2B7F4CAA1708365200A106A9 /* VertexTriangleAdjacency.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F962E8810F5DE66A009A5495 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F962E88B0F5DE6C8009A5495 /* 3DSConverter.cpp in Sources */, - F962E88C0F5DE6C8009A5495 /* 3DSLoader.cpp in Sources */, - F962E88E0F5DE6C8009A5495 /* ASELoader.cpp in Sources */, - F962E88F0F5DE6C8009A5495 /* ASEParser.cpp in Sources */, - F962E89A0F5DE6C8009A5495 /* HMPLoader.cpp in Sources */, - F962E8A00F5DE6C8009A5495 /* MD2Loader.cpp in Sources */, - F962E8A10F5DE6C8009A5495 /* MD3Loader.cpp in Sources */, - F962E8A20F5DE6C8009A5495 /* MD5Loader.cpp in Sources */, - F962E8A30F5DE6C8009A5495 /* MD5Parser.cpp in Sources */, - F962E8A40F5DE6C8009A5495 /* MDLLoader.cpp in Sources */, - F962E8A50F5DE6C8009A5495 /* MDLMaterialLoader.cpp in Sources */, - F962E8A90F5DE6C8009A5495 /* PlyLoader.cpp in Sources */, - F962E8AA0F5DE6C8009A5495 /* PlyParser.cpp in Sources */, - F962E8AE0F5DE6C8009A5495 /* SMDLoader.cpp in Sources */, - F962E8B60F5DE6C8009A5495 /* XFileImporter.cpp in Sources */, - F962E8B70F5DE6C8009A5495 /* XFileParser.cpp in Sources */, - F962E8B80F5DE6C8009A5495 /* MDCLoader.cpp in Sources */, - F962E8BA0F5DE6C8009A5495 /* LWOLoader.cpp in Sources */, - F962E8BC0F5DE6C8009A5495 /* LWOMaterial.cpp in Sources */, - F962E8BD0F5DE6C8009A5495 /* ACLoader.cpp in Sources */, - F962E8BE0F5DE6C8009A5495 /* IRRLoader.cpp in Sources */, - F962E8BF0F5DE6C8009A5495 /* IRRMeshLoader.cpp in Sources */, - F962E8C00F5DE6C8009A5495 /* IRRShared.cpp in Sources */, - F962E8C30F5DE6C8009A5495 /* NFFLoader.cpp in Sources */, - F962E8C50F5DE6C8009A5495 /* Q3DLoader.cpp in Sources */, - F962E8C60F5DE6C8009A5495 /* BVHLoader.cpp in Sources */, - F962E8C70F5DE6C8009A5495 /* OFFLoader.cpp in Sources */, - F962E8C80F5DE6C8009A5495 /* RawLoader.cpp in Sources */, - F962E8C90F5DE6C8009A5495 /* DXFLoader.cpp in Sources */, - F962E8CA0F5DE6C8009A5495 /* LWOBLoader.cpp in Sources */, - F962E8CB0F5DE6C8009A5495 /* TerragenLoader.cpp in Sources */, - F962E8D70F5DE6C8009A5495 /* B3DImporter.cpp in Sources */, - 7411B15611416D5E00BCD793 /* CSMLoader.cpp in Sources */, - 7411B16111416DDD00BCD793 /* LWSLoader.cpp in Sources */, - 7411B16B11416DF400BCD793 /* LWOAnimation.cpp in Sources */, - 7411B17811416E2500BCD793 /* MS3DLoader.cpp in Sources */, - 7411B19311416EBC00BCD793 /* UnrealLoader.cpp in Sources */, - 74C9BB5811ACBB1000AF885C /* BlenderDNA.cpp in Sources */, - 74C9BB5A11ACBB1000AF885C /* BlenderLoader.cpp in Sources */, - 74C9BB5C11ACBB1000AF885C /* BlenderScene.cpp in Sources */, - 74C9BB8E11ACBB9900AF885C /* AssimpPCH.cpp in Sources */, - 74C9BB9F11ACBBBC00AF885C /* COBLoader.cpp in Sources */, - 8E7ABBB7127E0F1A00512ED1 /* Q3BSPFileImporter.cpp in Sources */, - 8E7ABBB9127E0F1A00512ED1 /* Q3BSPFileParser.cpp in Sources */, - 8E7ABBBB127E0F1A00512ED1 /* Q3BSPZipArchive.cpp in Sources */, - 8E7ABBCA127E0F2A00512ED1 /* NDOLoader.cpp in Sources */, - 8E7ABBD8127E0F3800512ED1 /* BlenderModifier.cpp in Sources */, - 8E8DEE78127E2B78005EF64D /* ConvertUTF.c in Sources */, - 8E8DEE7F127E2B78005EF64D /* irrXML.cpp in Sources */, - 8E8DEE82127E2B78005EF64D /* ioapi.c in Sources */, - 8E8DEE84127E2B78005EF64D /* unzip.c in Sources */, - F9BA8C41154328B600E63FFE /* OgreImporter.cpp in Sources */, - F9BA8C43154328B600E63FFE /* OgreMaterial.cpp in Sources */, - F9BA8C44154328B600E63FFE /* OgreMesh.cpp in Sources */, - F9BA8C45154328B600E63FFE /* OgreSkeleton.cpp in Sources */, - F99A9F3415436269000682F3 /* PlyExporter.cpp in Sources */, - F9607071154366AB004D91DD /* adler32.c in Sources */, - F9607072154366AB004D91DD /* compress.c in Sources */, - F9607073154366AB004D91DD /* crc32.c in Sources */, - F9607075154366AB004D91DD /* deflate.c in Sources */, - F9607077154366AB004D91DD /* inffast.c in Sources */, - F960707A154366AB004D91DD /* inflate.c in Sources */, - F960707C154366AB004D91DD /* inftrees.c in Sources */, - F960707E154366AB004D91DD /* trees.c in Sources */, - F9607083154366AB004D91DD /* zutil.c in Sources */, - F96070B9154366ED004D91DD /* XGLLoader.cpp in Sources */, - F96070CA1543673B004D91DD /* clipper.cpp in Sources */, - F96070EB1543675E004D91DD /* shapes.cc in Sources */, - F96070EF1543675E004D91DD /* advancing_front.cc in Sources */, - F96070F11543675E004D91DD /* cdt.cc in Sources */, - F96070F31543675E004D91DD /* sweep.cc in Sources */, - F96070F51543675E004D91DD /* sweep_context.cc in Sources */, - 2B7F46E31708365200A106A9 /* Assimp.cpp in Sources */, - 2B7F46E81708365200A106A9 /* AssimpCExport.cpp in Sources */, - 2B7F47011708365200A106A9 /* BaseImporter.cpp in Sources */, - 2B7F470B1708365200A106A9 /* BaseProcess.cpp in Sources */, - 2B7F47A11708365200A106A9 /* CalcTangentsProcess.cpp in Sources */, - 2B7F47BF1708365200A106A9 /* ColladaExporter.cpp in Sources */, - 2B7F47CE1708365200A106A9 /* ColladaLoader.cpp in Sources */, - 2B7F47D81708365200A106A9 /* ColladaParser.cpp in Sources */, - 2B7F47E21708365200A106A9 /* ComputeUVMappingProcess.cpp in Sources */, - 2B7F47EC1708365200A106A9 /* ConvertToLHProcess.cpp in Sources */, - 2B7F48001708365200A106A9 /* DeboneProcess.cpp in Sources */, - 2B7F480A1708365200A106A9 /* DefaultIOStream.cpp in Sources */, - 2B7F48141708365200A106A9 /* DefaultIOSystem.cpp in Sources */, - 2B7F481E1708365200A106A9 /* DefaultLogger.cpp in Sources */, - 2B7F483C1708365200A106A9 /* Exporter.cpp in Sources */, - 2B7F48461708365200A106A9 /* FBXAnimation.cpp in Sources */, - 2B7F484B1708365200A106A9 /* FBXBinaryTokenizer.cpp in Sources */, - 2B7F48551708365200A106A9 /* FBXConverter.cpp in Sources */, - 2B7F485F1708365200A106A9 /* FBXDeformer.cpp in Sources */, - 2B7F48641708365200A106A9 /* FBXDocument.cpp in Sources */, - 2B7F486E1708365200A106A9 /* FBXDocumentUtil.cpp in Sources */, - 2B7F48781708365200A106A9 /* FBXImporter.cpp in Sources */, - 2B7F48871708365200A106A9 /* FBXMaterial.cpp in Sources */, - 2B7F488C1708365200A106A9 /* FBXMeshGeometry.cpp in Sources */, - 2B7F48911708365200A106A9 /* FBXModel.cpp in Sources */, - 2B7F48961708365200A106A9 /* FBXNodeAttribute.cpp in Sources */, - 2B7F489B1708365200A106A9 /* FBXParser.cpp in Sources */, - 2B7F48A51708365200A106A9 /* FBXProperties.cpp in Sources */, - 2B7F48AF1708365200A106A9 /* FBXTokenizer.cpp in Sources */, - 2B7F48B91708365200A106A9 /* FBXUtil.cpp in Sources */, - 2B7F48CD1708365200A106A9 /* FindDegenerates.cpp in Sources */, - 2B7F48D71708365200A106A9 /* FindInstancesProcess.cpp in Sources */, - 2B7F48E11708365200A106A9 /* FindInvalidDataProcess.cpp in Sources */, - 2B7F48EB1708365200A106A9 /* FixNormalsStep.cpp in Sources */, - 2B7F48FA1708365200A106A9 /* GenFaceNormalsProcess.cpp in Sources */, - 2B7F49041708365200A106A9 /* GenVertexNormalsProcess.cpp in Sources */, - 2B7F49271708365200A106A9 /* IFCBoolean.cpp in Sources */, - 2B7F492C1708365200A106A9 /* IFCCurve.cpp in Sources */, - 2B7F49311708365200A106A9 /* IFCGeometry.cpp in Sources */, - 2B7F49361708365200A106A9 /* IFCLoader.cpp in Sources */, - 2B7F49401708365200A106A9 /* IFCMaterial.cpp in Sources */, - 2B7F49451708365200A106A9 /* IFCOpenings.cpp in Sources */, - 2B7F494A1708365200A106A9 /* IFCProfile.cpp in Sources */, - 2B7F494F1708365200A106A9 /* IFCReaderGen.cpp in Sources */, - 2B7F49591708365200A106A9 /* IFCUtil.cpp in Sources */, - 2B7F49681708365200A106A9 /* Importer.cpp in Sources */, - 2B7F49721708365200A106A9 /* ImporterRegistry.cpp in Sources */, - 2B7F49771708365200A106A9 /* ImproveCacheLocality.cpp in Sources */, - 2B7F49A41708365200A106A9 /* JoinVerticesProcess.cpp in Sources */, - 2B7F49AE1708365200A106A9 /* LimitBoneWeightsProcess.cpp in Sources */, - 2B7F49F91708365200A106A9 /* MakeVerboseFormat.cpp in Sources */, - 2B7F4A031708365200A106A9 /* MaterialSystem.cpp in Sources */, - 2B7F4A991708365200A106A9 /* ObjExporter.cpp in Sources */, - 2B7F4AA81708365200A106A9 /* ObjFileImporter.cpp in Sources */, - 2B7F4AB21708365200A106A9 /* ObjFileMtlImporter.cpp in Sources */, - 2B7F4ABC1708365200A106A9 /* ObjFileParser.cpp in Sources */, - 2B7F4AF31708365200A106A9 /* OptimizeGraph.cpp in Sources */, - 2B7F4AFD1708365200A106A9 /* OptimizeMeshes.cpp in Sources */, - 2B7F4B2F1708365200A106A9 /* PostStepRegistry.cpp in Sources */, - 2B7F4B341708365200A106A9 /* PretransformVertices.cpp in Sources */, - 2B7F4B3E1708365200A106A9 /* ProcessHelper.cpp in Sources */, - 2B7F4B8E1708365200A106A9 /* RemoveComments.cpp in Sources */, - 2B7F4B981708365200A106A9 /* RemoveRedundantMaterials.cpp in Sources */, - 2B7F4BA21708365200A106A9 /* RemoveVCProcess.cpp in Sources */, - 2B7F4BB11708365200A106A9 /* SceneCombiner.cpp in Sources */, - 2B7F4BBB1708365200A106A9 /* ScenePreprocessor.cpp in Sources */, - 2B7F4BCA1708365200A106A9 /* SGSpatialSort.cpp in Sources */, - 2B7F4BD41708365200A106A9 /* SkeletonMeshBuilder.cpp in Sources */, - 2B7F4BED1708365200A106A9 /* SortByPTypeProcess.cpp in Sources */, - 2B7F4BF71708365200A106A9 /* SpatialSort.cpp in Sources */, - 2B7F4C011708365200A106A9 /* SplitByBoneCountProcess.cpp in Sources */, - 2B7F4C0B1708365200A106A9 /* SplitLargeMeshes.cpp in Sources */, - 2B7F4C151708365200A106A9 /* StandardShapes.cpp in Sources */, - 2B7F4C291708365200A106A9 /* STEPFileEncoding.cpp in Sources */, - 2B7F4C331708365200A106A9 /* STEPFileReader.cpp in Sources */, - 2B7F4C3D1708365200A106A9 /* STLExporter.cpp in Sources */, - 2B7F4C471708365200A106A9 /* STLLoader.cpp in Sources */, - 2B7F4C5B1708365200A106A9 /* Subdivision.cpp in Sources */, - 2B7F4C651708365200A106A9 /* TargetAnimation.cpp in Sources */, - 2B7F4C791708365200A106A9 /* TextureTransform.cpp in Sources */, - 2B7F4C881708365200A106A9 /* TriangulateProcess.cpp in Sources */, - 2B7F4C9C1708365200A106A9 /* ValidateDataStructure.cpp in Sources */, - 2B7F4CAB1708365200A106A9 /* VertexTriangleAdjacency.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 1DEB916108733D950010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = stabs; - EXECUTABLE_PREFIX = lib; - GCC_DYNAMIC_NO_PIC = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ""; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - HEADER_SEARCH_PATHS = /usr/local/include; - LD_DYLIB_INSTALL_NAME = libassimpd.dylib; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - PRODUCT_NAME = assimpd; - SDKROOT = macosx; - VALID_ARCHS = "i386 x86_64 armv7 armv6"; - ZERO_LINK = YES; - }; - name = Debug; - }; - 1DEB916208733D950010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - DEBUG_INFORMATION_FORMAT = stabs; - EXECUTABLE_PREFIX = lib; - GCC_MODEL_TUNING = G5; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - HEADER_SEARCH_PATHS = /usr/local/include; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - PRODUCT_NAME = assimp; - SDKROOT = macosx; - STRIP_INSTALLED_PRODUCT = YES; - STRIP_STYLE = "non-global"; - VALID_ARCHS = "i386 x86_64 armv7 armv6"; - }; - name = Release; - }; - 1DEB916508733D950010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; - CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; - GCC_DEBUGGING_SYMBOLS = full; - GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PFE_FILE_C_DIALECTS = "c++"; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ../../code/AssimpPCH.h; - GCC_PREPROCESSOR_DEFINITIONS = DEBUG; - GCC_VERSION = com.apple.compilers.llvmgcc42; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = "/usr/local/include/boost-1_38"; - LD_DYLIB_INSTALL_NAME = libassimp.dylib; - LIBRARY_SEARCH_PATHS = /usr/local/lib; - OBJROOT = "../../obj/$(PROJECT_NAME)_$(CONFIGURATION)_MacOSX"; - ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = ""; - SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; - SYMROOT = "../../bin/$(PROJECT_NAME)_$(CONFIGURATION)_MacOSX"; - }; - name = Debug; - }; - 1DEB916608733D950010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; - CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; - GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; - GCC_PFE_FILE_C_DIALECTS = "c++"; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ../../code/AssimpPCH.h; - GCC_PREPROCESSOR_DEFINITIONS = NDEBUG; - GCC_VERSION = com.apple.compilers.llvmgcc42; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = "/usr/local/include/boost-1_38"; - LD_DYLIB_INSTALL_NAME = libassimp.dylib; - LIBRARY_SEARCH_PATHS = /usr/local/lib; - OBJROOT = "../../obj/$(PROJECT_NAME)_$(CONFIGURATION)_MacOSX"; - OTHER_LDFLAGS = ""; - SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; - SYMROOT = "../../bin/$(PROJECT_NAME)_$(CONFIGURATION)_MacOSX"; - }; - name = Release; - }; - 745FF8FE113ECB080020C31B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = stabs; - EXECUTABLE_PREFIX = lib; - GCC_DYNAMIC_NO_PIC = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ASSIMP_BUILD_BOOST_WORKAROUND; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - HEADER_SEARCH_PATHS = "${SRCROOT}/../../code/BoostWorkaround"; - LD_DYLIB_INSTALL_NAME = libassimpd.dylib; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - PRODUCT_NAME = assimpd; - SDKROOT = macosx; - VALID_ARCHS = "i386 x86_64 armv6 armv7"; - ZERO_LINK = YES; - }; - name = Debug; - }; - 745FF8FF113ECB080020C31B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - DEBUG_INFORMATION_FORMAT = stabs; - EXECUTABLE_PREFIX = lib; - GCC_MODEL_TUNING = G5; - GCC_PREPROCESSOR_DEFINITIONS = ( - NDEBUG, - ASSIMP_BUILD_BOOST_WORKAROUND, - ); - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - HEADER_SEARCH_PATHS = "${SRCROOT}/../../code/BoostWorkaround"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - PRODUCT_NAME = assimp; - SDKROOT = macosx; - STRIP_INSTALLED_PRODUCT = YES; - STRIP_STYLE = "non-global"; - VALID_ARCHS = "i386 x86_64 armv6 armv7"; - }; - name = Release; - }; - 745FF9E1113ECC660020C31B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_SYMBOL_SEPARATION = NO; - GCC_INLINES_ARE_PRIVATE_EXTERN = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ASSIMP_BUILD_BOOST_WORKAROUND; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - HEADER_SEARCH_PATHS = "${SRCROOT}/../../code/BoostWorkaround"; - INSTALL_PATH = /usr/local/lib; - LD_DYLIB_INSTALL_NAME = ""; - ONLY_ACTIVE_ARCH = NO; - PRODUCT_NAME = assimpd; - SDKROOT = macosx; - SEPARATE_STRIP = NO; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - VALID_ARCHS = "x86_64 i386"; - }; - name = Debug; - }; - 745FF9E2113ECC660020C31B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = YES; - GCC_ENABLE_SYMBOL_SEPARATION = NO; - GCC_INLINES_ARE_PRIVATE_EXTERN = YES; - GCC_MODEL_TUNING = G5; - GCC_PREPROCESSOR_DEFINITIONS = ( - NDEBUG, - ASSIMP_BUILD_BOOST_WORKAROUND, - ); - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - HEADER_SEARCH_PATHS = "${SRCROOT}/../../code/BoostWorkaround"; - INSTALL_PATH = /usr/local/lib; - PRODUCT_NAME = assimp; - SDKROOT = macosx; - SEPARATE_STRIP = NO; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - VALID_ARCHS = "x86_64 i386"; - ZERO_LINK = NO; - }; - name = Release; - }; - B919763D163AEA54009C397B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_SYMBOL_SEPARATION = NO; - GCC_INLINES_ARE_PRIVATE_EXTERN = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ASSIMP_BUILD_BOOST_WORKAROUND; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - HEADER_SEARCH_PATHS = "${SRCROOT}/../../code/BoostWorkaround"; - INSTALL_PATH = /usr/local/lib; - LD_DYLIB_INSTALL_NAME = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib\"", - ); - OBJROOT = "../../obj/$(PROJECT_NAME)_$(CONFIGURATION)_iOS"; - ONLY_ACTIVE_ARCH = NO; - PRODUCT_NAME = "assimp-ios"; - SDKROOT = iphoneos; - SEPARATE_STRIP = NO; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "../../bin/$(PROJECT_NAME)_$(CONFIGURATION)_iOS"; - }; - name = Debug; - }; - B919763E163AEA54009C397B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = YES; - GCC_ENABLE_SYMBOL_SEPARATION = NO; - GCC_INLINES_ARE_PRIVATE_EXTERN = YES; - GCC_MODEL_TUNING = G5; - GCC_PREPROCESSOR_DEFINITIONS = ( - NDEBUG, - ASSIMP_BUILD_BOOST_WORKAROUND, - ); - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - HEADER_SEARCH_PATHS = "${SRCROOT}/../../code/BoostWorkaround"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib\"", - ); - OBJROOT = "../../obj/$(PROJECT_NAME)_$(CONFIGURATION)_iOS"; - ONLY_ACTIVE_ARCH = NO; - PRODUCT_NAME = "assimp-ios"; - SDKROOT = iphoneos; - SEPARATE_STRIP = NO; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "../../bin/$(PROJECT_NAME)_$(CONFIGURATION)_iOS"; - ZERO_LINK = NO; - }; - name = Release; - }; - F962E8850F5DE66B009A5495 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = stabs; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_SYMBOL_SEPARATION = NO; - GCC_INLINES_ARE_PRIVATE_EXTERN = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ""; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - HEADER_SEARCH_PATHS = /usr/local/include; - INSTALL_PATH = /usr/local/lib; - LD_DYLIB_INSTALL_NAME = ""; - PRODUCT_NAME = assimpd; - SDKROOT = macosx; - SEPARATE_STRIP = NO; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - VALID_ARCHS = "i386 x86_64 armv7 armv6"; - }; - name = Debug; - }; - F962E8860F5DE66B009A5495 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_ENABLE_SYMBOL_SEPARATION = NO; - GCC_INLINES_ARE_PRIVATE_EXTERN = YES; - GCC_MODEL_TUNING = G5; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - HEADER_SEARCH_PATHS = /usr/local/include; - INSTALL_PATH = /usr/local/lib; - PRODUCT_NAME = assimp; - SDKROOT = macosx; - SEPARATE_STRIP = NO; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - VALID_ARCHS = "i386 x86_64 armv7 armv6"; - ZERO_LINK = NO; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1DEB916008733D950010E9CD /* Build configuration list for PBXNativeTarget "assimp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB916108733D950010E9CD /* Debug */, - 1DEB916208733D950010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1DEB916408733D950010E9CD /* Build configuration list for PBXProject "assimp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB916508733D950010E9CD /* Debug */, - 1DEB916608733D950010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 745FF8FD113ECB080020C31B /* Build configuration list for PBXNativeTarget "assimp-no-boost" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 745FF8FE113ECB080020C31B /* Debug */, - 745FF8FF113ECB080020C31B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 745FF9E0113ECC660020C31B /* Build configuration list for PBXNativeTarget "assimp-static-no-boost" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 745FF9E1113ECC660020C31B /* Debug */, - 745FF9E2113ECC660020C31B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B919763C163AEA54009C397B /* Build configuration list for PBXNativeTarget "assimp-ios-static-no-boost" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B919763D163AEA54009C397B /* Debug */, - B919763E163AEA54009C397B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F962E8870F5DE689009A5495 /* Build configuration list for PBXNativeTarget "assimp-static" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F962E8850F5DE66B009A5495 /* Debug */, - F962E8860F5DE66B009A5495 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 0867D690FE84028FC02AAC07 /* Project object */; -} diff --git a/workspaces/xcode3/info.txt b/workspaces/xcode3/info.txt deleted file mode 100644 index d22a76b6f..000000000 --- a/workspaces/xcode3/info.txt +++ /dev/null @@ -1,6 +0,0 @@ -The xcode project files in this directory are contributed by Andy Maloney and are not continuously updated. -Currently, it's for Assimp r352. If you're using a newer revision, watch out for missing files/includes/... - -See Andy's description at -http://sourceforge.net/tracker/index.php?func=detail&aid=2659135&group_id=226462&atid=1067634 (Tracker item 2659135) -for more information. diff --git a/workspaces/xcode6/Assimp.xcodeproj/project.pbxproj b/workspaces/xcode6/Assimp.xcodeproj/project.pbxproj deleted file mode 100644 index 249aba3a3..000000000 --- a/workspaces/xcode6/Assimp.xcodeproj/project.pbxproj +++ /dev/null @@ -1,2074 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 2DC891CA1D2CFA22001E0B0E /* D3MFImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2DC891C61D2CFA22001E0B0E /* D3MFImporter.cpp */; }; - 2DC891CB1D2CFA22001E0B0E /* D3MFOpcPackage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2DC891C81D2CFA22001E0B0E /* D3MFOpcPackage.cpp */; }; - 2DC891D01D2CFA75001E0B0E /* C4DImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2DC891CE1D2CFA75001E0B0E /* C4DImporter.cpp */; }; - 7F79242A1AB43E20005A8E5D /* 3DSConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15221A74FC9C4B2AAA7306E3 /* 3DSConverter.cpp */; }; - 7F79242B1AB43E20005A8E5D /* 3DSExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ECCBBF2D75A44335AB93C84A /* 3DSExporter.cpp */; }; - 7F79242C1AB43E20005A8E5D /* 3DSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02E9476D129940BF84DE6682 /* 3DSLoader.cpp */; }; - 7F79242D1AB43E20005A8E5D /* ACLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F1076BAC69DB4935A93045A8 /* ACLoader.cpp */; }; - 7F79242E1AB43E20005A8E5D /* ASELoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C477FA4D89548F1BCEDC5A0 /* ASELoader.cpp */; }; - 7F79242F1AB43E20005A8E5D /* ASEParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 929F59CCA32549EC884A5033 /* ASEParser.cpp */; }; - 7F7924301AB43E20005A8E5D /* AssbinExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6389F68312384CFD847B1D13 /* AssbinExporter.cpp */; }; - 7F7924311AB43E20005A8E5D /* AssbinLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D9FEEF58B24548F782A5D53C /* AssbinLoader.cpp */; }; - 7F7924321AB43E20005A8E5D /* Assimp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 705D30EE141A48F292783F0E /* Assimp.cpp */; }; - 7F7924331AB43E20005A8E5D /* AssimpCExport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1A9535EDF9A4FF2B8DABD7D /* AssimpCExport.cpp */; }; - 7F7924351AB43E20005A8E5D /* AssxmlExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B3E8A1BEF8E74F04AE06871B /* AssxmlExporter.cpp */; }; - 7F7924361AB43E20005A8E5D /* B3DImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FCCB4BB481FB461688FE2F29 /* B3DImporter.cpp */; }; - 7F7924371AB43E20005A8E5D /* BVHLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C80B9A3AF4204AE08AA50BAE /* BVHLoader.cpp */; }; - 7F7924381AB43E20005A8E5D /* BaseImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A58410FEAA884A2D8D73ACCE /* BaseImporter.cpp */; }; - 7F7924391AB43E20005A8E5D /* BaseProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAB6BC13FCFE40F5801D0972 /* BaseProcess.cpp */; }; - 7F79243A1AB43E20005A8E5D /* Bitmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 10238FBD7A9D401A82D667CB /* Bitmap.cpp */; }; - 7F79243B1AB43E20005A8E5D /* BlenderBMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 603AFA882AFF49AEAC2C8FA2 /* BlenderBMesh.cpp */; }; - 7F79243C1AB43E20005A8E5D /* BlenderDNA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B65258E349704523BC43904D /* BlenderDNA.cpp */; }; - 7F79243D1AB43E20005A8E5D /* BlenderLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 906F71D342544BF381E1318E /* BlenderLoader.cpp */; }; - 7F79243E1AB43E20005A8E5D /* BlenderModifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3106D75C13874F5AB3EBBFE7 /* BlenderModifier.cpp */; }; - 7F79243F1AB43E20005A8E5D /* BlenderScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE0D259917354C80BE1CC791 /* BlenderScene.cpp */; }; - 7F7924401AB43E20005A8E5D /* BlenderTessellator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 12C5DD7A285042EDB1897FAE /* BlenderTessellator.cpp */; }; - 7F7924411AB43E20005A8E5D /* COBLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C84DA0E6CE13493D833BA1C1 /* COBLoader.cpp */; }; - 7F7924421AB43E20005A8E5D /* CSMLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 77908990BEF04D0881E8AE80 /* CSMLoader.cpp */; }; - 7F7924431AB43E20005A8E5D /* CalcTangentsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90DD6CA40A5E41458E11FF3E /* CalcTangentsProcess.cpp */; }; - 7F7924441AB43E20005A8E5D /* ColladaExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C0527629078403F81CFD117 /* ColladaExporter.cpp */; }; - 7F7924451AB43E20005A8E5D /* ColladaLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A4706D216414D4F8AA72EC9 /* ColladaLoader.cpp */; }; - 7F7924461AB43E20005A8E5D /* ColladaParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 420D77ED33554D54AA4D50EF /* ColladaParser.cpp */; }; - 7F7924471AB43E20005A8E5D /* ComputeUVMappingProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ABBB4561E72413EB40702C3 /* ComputeUVMappingProcess.cpp */; }; - 7F7924481AB43E20005A8E5D /* ConvertToLHProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92D8734FFF9742B39A371B70 /* ConvertToLHProcess.cpp */; }; - 7F7924491AB43E20005A8E5D /* DXFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 466D6B9A7CCD402D9AA87071 /* DXFLoader.cpp */; }; - 7F79244A1AB43E20005A8E5D /* DeboneProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E20FCC571F144DDBD831CCB /* DeboneProcess.cpp */; }; - 7F79244B1AB43E20005A8E5D /* DefaultIOStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9FEF4D69EFC4605A4F752E5 /* DefaultIOStream.cpp */; }; - 7F79244C1AB43E20005A8E5D /* DefaultIOSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1D502654EF864101A2DA9476 /* DefaultIOSystem.cpp */; }; - 7F79244D1AB43E20005A8E5D /* DefaultLogger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9E9EB834E09420197C3FB8C /* DefaultLogger.cpp */; }; - 7F79244E1AB43E20005A8E5D /* Exporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FF4E90FB1A3446F095ECC8BD /* Exporter.cpp */; }; - 7F79244F1AB43E20005A8E5D /* FBXAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAD34F1AA6664B6B935C9421 /* FBXAnimation.cpp */; }; - 7F7924501AB43E20005A8E5D /* FBXBinaryTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1108AC28566B4D2B9F27C691 /* FBXBinaryTokenizer.cpp */; }; - 7F7924511AB43E20005A8E5D /* FBXConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7A56A688A3845768410F500 /* FBXConverter.cpp */; }; - 7F7924521AB43E20005A8E5D /* FBXDeformer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9855496CEA774F4FA7FBB862 /* FBXDeformer.cpp */; }; - 7F7924531AB43E20005A8E5D /* FBXDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F22D5BA425444A028DA42BEA /* FBXDocument.cpp */; }; - 7F7924541AB43E20005A8E5D /* FBXDocumentUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BB38E7E7661842448F008372 /* FBXDocumentUtil.cpp */; }; - 7F7924551AB43E20005A8E5D /* FBXImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B4C688FA08F44716855CDD3C /* FBXImporter.cpp */; }; - 7F7924561AB43E20005A8E5D /* FBXMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE6163EB035149A6B8139DB8 /* FBXMaterial.cpp */; }; - 7F7924571AB43E20005A8E5D /* FBXMeshGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42E110B9E6924AF9B55AE65A /* FBXMeshGeometry.cpp */; }; - 7F7924581AB43E20005A8E5D /* FBXModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A61BDC559CE4186B03C0396 /* FBXModel.cpp */; }; - 7F7924591AB43E20005A8E5D /* FBXNodeAttribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33B70115CA54405F895BA471 /* FBXNodeAttribute.cpp */; }; - 7F79245A1AB43E20005A8E5D /* FBXParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5F373DF3B03B4B848B78EAD2 /* FBXParser.cpp */; }; - 7F79245B1AB43E20005A8E5D /* FBXProperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9D203F78B24C4D7E8E2084A3 /* FBXProperties.cpp */; }; - 7F79245C1AB43E20005A8E5D /* FBXTokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CF07D05DC86F4C98BC42FDCF /* FBXTokenizer.cpp */; }; - 7F79245D1AB43E20005A8E5D /* FBXUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E6332CD992D447CA910DA456 /* FBXUtil.cpp */; }; - 7F79245E1AB43E20005A8E5D /* FindDegenerates.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BABB7734139C452A9DDEE797 /* FindDegenerates.cpp */; }; - 7F79245F1AB43E20005A8E5D /* FindInstancesProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C9A101D1311C4E77AAEDD94C /* FindInstancesProcess.cpp */; }; - 7F7924601AB43E20005A8E5D /* FindInvalidDataProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9B4221AA0AD2418FAA45EB64 /* FindInvalidDataProcess.cpp */; }; - 7F7924611AB43E20005A8E5D /* FixNormalsStep.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C54518F708BA4A328D5D7325 /* FixNormalsStep.cpp */; }; - 7F7924621AB43E20005A8E5D /* GenFaceNormalsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 982AE676D2364350B1FBD095 /* GenFaceNormalsProcess.cpp */; }; - 7F7924631AB43E20005A8E5D /* GenVertexNormalsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0AED12A1A6D4635A8CFB65A /* GenVertexNormalsProcess.cpp */; }; - 7F7924641AB43E20005A8E5D /* HMPLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43ABFF591F374920A5E18A24 /* HMPLoader.cpp */; }; - 7F7924651AB43E20005A8E5D /* IFCBoolean.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 285D1FDA48EC4DD8933B603E /* IFCBoolean.cpp */; }; - 7F7924661AB43E20005A8E5D /* IFCCurve.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E7FD92FFCF441B0A60FC8B4 /* IFCCurve.cpp */; }; - 7F7924671AB43E20005A8E5D /* IFCGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3267EBBA6EEB435F83FF25E4 /* IFCGeometry.cpp */; }; - 7F7924681AB43E20005A8E5D /* IFCLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0E9BB0220704C5D93CE7CE9 /* IFCLoader.cpp */; }; - 7F7924691AB43E20005A8E5D /* IFCMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0014AE5E87A74AAA9EF0EC4B /* IFCMaterial.cpp */; }; - 7F79246A1AB43E20005A8E5D /* IFCOpenings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74679D2078FD46ED9AC73355 /* IFCOpenings.cpp */; }; - 7F79246B1AB43E20005A8E5D /* IFCProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46E9F455A3284DB399986293 /* IFCProfile.cpp */; }; - 7F79246C1AB43E20005A8E5D /* IFCReaderGen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F5D1E6368384D429BA29D5A /* IFCReaderGen.cpp */; }; - 7F79246D1AB43E20005A8E5D /* IFCUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59E3D32E3FC7438DB148537F /* IFCUtil.cpp */; }; - 7F79246E1AB43E20005A8E5D /* IRRLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97DFA90F9D0C4B999C150B10 /* IRRLoader.cpp */; }; - 7F79246F1AB43E20005A8E5D /* IRRMeshLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7FFD53046F4AEB898C0832 /* IRRMeshLoader.cpp */; }; - 7F7924701AB43E20005A8E5D /* IRRShared.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CC54A231FF6B4B0CABCFD167 /* IRRShared.cpp */; }; - 7F7924711AB43E20005A8E5D /* Importer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9472EFB6831740DD91471337 /* Importer.cpp */; }; - 7F7924721AB43E20005A8E5D /* ImporterRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D029CE902F8045B0B3AFFDDB /* ImporterRegistry.cpp */; }; - 7F7924731AB43E20005A8E5D /* ImproveCacheLocality.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 70D5FDFA995E45E6A3E8FD37 /* ImproveCacheLocality.cpp */; }; - 7F7924741AB43E20005A8E5D /* JoinVerticesProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B36DA471B9E142FC9425EC45 /* JoinVerticesProcess.cpp */; }; - 7F7924751AB43E20005A8E5D /* LWOAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 680C392FFE0B4CC5ABC7CA64 /* LWOAnimation.cpp */; }; - 7F7924761AB43E20005A8E5D /* LWOBLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D629F6BF53864979B7619067 /* LWOBLoader.cpp */; }; - 7F7924771AB43E20005A8E5D /* LWOLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5A4E05386C094B809A315A07 /* LWOLoader.cpp */; }; - 7F7924781AB43E20005A8E5D /* LWOMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ED21FC57A384CE6B4F53C0C /* LWOMaterial.cpp */; }; - 7F7924791AB43E20005A8E5D /* LWSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFF41974881F466A9561BE4B /* LWSLoader.cpp */; }; - 7F79247A1AB43E20005A8E5D /* LimitBoneWeightsProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E065DB38B0284196A9283CA3 /* LimitBoneWeightsProcess.cpp */; }; - 7F79247B1AB43E20005A8E5D /* MD2Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49B655CCE1314D4E8A94B371 /* MD2Loader.cpp */; }; - 7F79247C1AB43E20005A8E5D /* MD3Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 563FBACCFD774BDEA4AEAC10 /* MD3Loader.cpp */; }; - 7F79247D1AB43E20005A8E5D /* MD5Loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A277DBC1EFB944F995659A20 /* MD5Loader.cpp */; }; - 7F79247E1AB43E20005A8E5D /* MD5Parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BC5FD00572F4C58B267A0EC /* MD5Parser.cpp */; }; - 7F79247F1AB43E20005A8E5D /* MDCLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 35E4944C052A4C91BF31DE5F /* MDCLoader.cpp */; }; - 7F7924801AB43E20005A8E5D /* MDLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA92FFC8B06D4569AD9C4CB1 /* MDLLoader.cpp */; }; - 7F7924811AB43E20005A8E5D /* MDLMaterialLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CEC69808E1844C23B95D3475 /* MDLMaterialLoader.cpp */; }; - 7F7924821AB43E20005A8E5D /* MS3DLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7A990C6FF244DC397B7BA7C /* MS3DLoader.cpp */; }; - 7F7924831AB43E20005A8E5D /* MakeVerboseFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21B797DAB0E0427C9339AE0F /* MakeVerboseFormat.cpp */; }; - 7F7924841AB43E20005A8E5D /* MaterialSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7FF72CB6E99E40E19AE0E64C /* MaterialSystem.cpp */; }; - 7F7924851AB43E20005A8E5D /* NDOLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B4F1B5789CA540C78FB9219D /* NDOLoader.cpp */; }; - 7F7924861AB43E20005A8E5D /* NFFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0D6E8E292F594A2DAFF53564 /* NFFLoader.cpp */; }; - 7F7924871AB43E20005A8E5D /* OFFLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EFD557FE2C3A46D78F070655 /* OFFLoader.cpp */; }; - 7F7924881AB43E20005A8E5D /* ObjExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE811A81663A492A84E13937 /* ObjExporter.cpp */; }; - 7F7924891AB43E20005A8E5D /* ObjFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 862131D4574B4CABA5EC957B /* ObjFileImporter.cpp */; }; - 7F79248A1AB43E20005A8E5D /* ObjFileMtlImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4108529663904025B21E526B /* ObjFileMtlImporter.cpp */; }; - 7F79248B1AB43E20005A8E5D /* ObjFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ACF73EEAB2424213BF7158D5 /* ObjFileParser.cpp */; }; - 7F79248C1AB43E20005A8E5D /* OgreBinarySerializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 56ADEC4899C047F2839AD791 /* OgreBinarySerializer.cpp */; }; - 7F79248D1AB43E20005A8E5D /* OgreImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 923283A9791E4B4E86D623FC /* OgreImporter.cpp */; }; - 7F79248E1AB43E20005A8E5D /* OgreMaterial.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F75457C6D026451B9267B65E /* OgreMaterial.cpp */; }; - 7F79248F1AB43E20005A8E5D /* OgreStructs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79A49EFE23E34E1CBA2E4377 /* OgreStructs.cpp */; }; - 7F7924901AB43E20005A8E5D /* OgreXmlSerializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EF9F805A4BA4428CA98C9DE5 /* OgreXmlSerializer.cpp */; }; - 7F7924911AB43E20005A8E5D /* OptimizeGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAB9AE5328F843F5A8A3E85C /* OptimizeGraph.cpp */; }; - 7F7924921AB43E20005A8E5D /* OptimizeMeshes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ACC87E846AE4E4A86E1AEF4 /* OptimizeMeshes.cpp */; }; - 7F7924931AB43E20005A8E5D /* PlyExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E51043448F1744FFA78526D5 /* PlyExporter.cpp */; }; - 7F7924941AB43E20005A8E5D /* PlyLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 409C98EE093C499B8A574CA9 /* PlyLoader.cpp */; }; - 7F7924951AB43E20005A8E5D /* PlyParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D504725E540109530E254 /* PlyParser.cpp */; }; - 7F7924961AB43E20005A8E5D /* PostStepRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E663847651834244834CB9F5 /* PostStepRegistry.cpp */; }; - 7F7924971AB43E20005A8E5D /* PretransformVertices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 023C115651B54570AA2040DB /* PretransformVertices.cpp */; }; - 7F7924981AB43E20005A8E5D /* ProcessHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 890E32C714444692AA016AE5 /* ProcessHelper.cpp */; }; - 7F7924991AB43E20005A8E5D /* Q3BSPFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A88D56FBEA084A3EA9A0ECB3 /* Q3BSPFileImporter.cpp */; }; - 7F79249A1AB43E20005A8E5D /* Q3BSPFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A60A00727F04E049CF3AE33 /* Q3BSPFileParser.cpp */; }; - 7F79249B1AB43E20005A8E5D /* Q3BSPZipArchive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43C75175738C4119871E8BB0 /* Q3BSPZipArchive.cpp */; }; - 7F79249C1AB43E20005A8E5D /* Q3DLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5178B3983F147F3B9BD8217 /* Q3DLoader.cpp */; }; - 7F79249D1AB43E20005A8E5D /* RawLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1D4A669762194B9D9A26DD20 /* RawLoader.cpp */; }; - 7F79249E1AB43E20005A8E5D /* RemoveComments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6A86069DEEDC42B88634F78D /* RemoveComments.cpp */; }; - 7F79249F1AB43E20005A8E5D /* RemoveRedundantMaterials.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ADACEBC4973F4FC0A6FEC68A /* RemoveRedundantMaterials.cpp */; }; - 7F7924A01AB43E20005A8E5D /* RemoveVCProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB4ABA17AF264257BDA4D921 /* RemoveVCProcess.cpp */; }; - 7F7924A11AB43E20005A8E5D /* SGSpatialSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52836A0629E24447B924750A /* SGSpatialSort.cpp */; }; - 7F7924A21AB43E20005A8E5D /* SMDLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD9BEC6B8A264AB092F98E20 /* SMDLoader.cpp */; }; - 7F7924A31AB43E20005A8E5D /* STEPFileEncoding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E11A39E91576445599DF2AC4 /* STEPFileEncoding.cpp */; }; - 7F7924A41AB43E20005A8E5D /* STEPFileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDE3ECA98173418A9F997992 /* STEPFileReader.cpp */; }; - 7F7924A51AB43E20005A8E5D /* STLExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 89D2D359BD854D8AA60CB720 /* STLExporter.cpp */; }; - 7F7924A61AB43E20005A8E5D /* STLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D2F1605B9484B08BB33402D /* STLLoader.cpp */; }; - 7F7924A71AB43E20005A8E5D /* SceneCombiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 73A3D87FF2C04C3BA3684F54 /* SceneCombiner.cpp */; }; - 7F7924A81AB43E20005A8E5D /* ScenePreprocessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1775DE08FC8647EB896A0FB3 /* ScenePreprocessor.cpp */; }; - 7F7924A91AB43E20005A8E5D /* SkeletonMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9B2827B3E64147E08A5AD334 /* SkeletonMeshBuilder.cpp */; }; - 7F7924AA1AB43E20005A8E5D /* SortByPTypeProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BD9A81E0E27E44718609615B /* SortByPTypeProcess.cpp */; }; - 7F7924AB1AB43E20005A8E5D /* SpatialSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8EEC6646FC044D1E9658A590 /* SpatialSort.cpp */; }; - 7F7924AC1AB43E20005A8E5D /* SplitByBoneCountProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 99A4349D505F4CC593F48CF6 /* SplitByBoneCountProcess.cpp */; }; - 7F7924AD1AB43E20005A8E5D /* SplitLargeMeshes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A43641DC9C1B4B578BC40476 /* SplitLargeMeshes.cpp */; }; - 7F7924AE1AB43E20005A8E5D /* StandardShapes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C18C5023460E4D17B8C922D7 /* StandardShapes.cpp */; }; - 7F7924AF1AB43E20005A8E5D /* Subdivision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BBDEB63CFEB4F2EAA95358D /* Subdivision.cpp */; }; - 7F7924B01AB43E20005A8E5D /* TargetAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6F65B6129F774AEDB8DC845A /* TargetAnimation.cpp */; }; - 7F7924B11AB43E20005A8E5D /* TerragenLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4866DA5A7BFD49F79B61CBF8 /* TerragenLoader.cpp */; }; - 7F7924B21AB43E20005A8E5D /* TextureTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF76D04D95E649BCBC15E64F /* TextureTransform.cpp */; }; - 7F7924B31AB43E20005A8E5D /* TriangulateProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0AC303D18A48A69AB3BC03 /* TriangulateProcess.cpp */; }; - 7F7924B41AB43E20005A8E5D /* UnrealLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B8FD96D46314ACD8F157AC3 /* UnrealLoader.cpp */; }; - 7F7924B51AB43E20005A8E5D /* ValidateDataStructure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0EF4F7A237F648C2809A8F31 /* ValidateDataStructure.cpp */; }; - 7F7924B61AB43E20005A8E5D /* VertexTriangleAdjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0AAF26EBF0A64ABDB840BA64 /* VertexTriangleAdjacency.cpp */; }; - 7F7924B71AB43E20005A8E5D /* XFileExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 435DC362E63D4CCBA68656D3 /* XFileExporter.cpp */; }; - 7F7924B81AB43E20005A8E5D /* XFileImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 06DB494DCE4D47FDA00E8B35 /* XFileImporter.cpp */; }; - 7F7924B91AB43E20005A8E5D /* XFileParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C02A113B804568A7E39CBC /* XFileParser.cpp */; }; - 7F7924BA1AB43E20005A8E5D /* XGLLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E395349546A4FDF843E6963 /* XGLLoader.cpp */; }; - 7F7924BB1AB43E20005A8E5D /* ConvertUTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A0960F123634603B15EEA38 /* ConvertUTF.c */; }; - 7F7924BC1AB43E20005A8E5D /* clipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59F8A11A7AED45CC94CEDF28 /* clipper.cpp */; }; - 7F7924BD1AB43E20005A8E5D /* irrXML.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 64C6BACDA5DD4139AA26EE81 /* irrXML.cpp */; }; - 7F7924BE1AB43E20005A8E5D /* shapes.cc in Sources */ = {isa = PBXBuildFile; fileRef = AE00939F150F413780C8AAD7 /* shapes.cc */; }; - 7F7924BF1AB43E20005A8E5D /* advancing_front.cc in Sources */ = {isa = PBXBuildFile; fileRef = B72D0BA3EF66439F8D582ED3 /* advancing_front.cc */; }; - 7F7924C01AB43E20005A8E5D /* cdt.cc in Sources */ = {isa = PBXBuildFile; fileRef = 849EC6315E4A4E5FA06521EA /* cdt.cc */; }; - 7F7924C11AB43E20005A8E5D /* sweep.cc in Sources */ = {isa = PBXBuildFile; fileRef = 49E993CD86A346869AF473BC /* sweep.cc */; }; - 7F7924C21AB43E20005A8E5D /* sweep_context.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5E10483FBE6D4F4594B460E0 /* sweep_context.cc */; }; - 7F7924C31AB43E20005A8E5D /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = AF75E6049338489BB256D295 /* ioapi.c */; }; - 7F7924C41AB43E20005A8E5D /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 973D4231A4AA4925B019FEEE /* unzip.c */; }; - 7F7A93A81B65D0110094C4DA /* DDLNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F7A93A51B65D0110094C4DA /* DDLNode.cpp */; }; - 7F7A93A91B65D0110094C4DA /* OpenDDLParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F7A93A61B65D0110094C4DA /* OpenDDLParser.cpp */; }; - 7F7A93AA1B65D0110094C4DA /* Value.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F7A93A71B65D0110094C4DA /* Value.cpp */; }; - 7FBE9FEA1B65AC1200D2115E /* OpenGEXExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7FBE9FE51B65AC1200D2115E /* OpenGEXExporter.cpp */; }; - 7FBE9FEB1B65AC1200D2115E /* OpenGEXImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7FBE9FE71B65AC1200D2115E /* OpenGEXImporter.cpp */; }; - 7FBEA0121B65B11800D2115E /* Version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7FBEA0111B65B11800D2115E /* Version.cpp */; }; - AFB7F8521C882F1A00D7B6E9 /* OpenDDLCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFB7F8501C882F1A00D7B6E9 /* OpenDDLCommon.cpp */; }; - AFB7F8531C882F1A00D7B6E9 /* OpenDDLExport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFB7F8511C882F1A00D7B6E9 /* OpenDDLExport.cpp */; }; - AFB7F85D1C882F8200D7B6E9 /* glTFExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFB7F8591C882F8200D7B6E9 /* glTFExporter.cpp */; }; - AFB7F85E1C882F8200D7B6E9 /* glTFImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFB7F85B1C882F8200D7B6E9 /* glTFImporter.cpp */; }; - AFB7F8631C88302500D7B6E9 /* SIBImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFB7F8611C88302500D7B6E9 /* SIBImporter.cpp */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 0014AE5E87A74AAA9EF0EC4B /* IFCMaterial.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = IFCMaterial.cpp; path = code/IFCMaterial.cpp; sourceTree = SOURCE_ROOT; }; - 005DFE3B6FFC4BEBB7055330 /* ObjFileData.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ObjFileData.h; path = code/ObjFileData.h; sourceTree = SOURCE_ROOT; }; - 00EB692107B84590B0560BFB /* MD4FileData.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MD4FileData.h; path = code/MD4FileData.h; sourceTree = SOURCE_ROOT; }; - 023C115651B54570AA2040DB /* PretransformVertices.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = PretransformVertices.cpp; path = code/PretransformVertices.cpp; sourceTree = SOURCE_ROOT; }; - 02587469A85540EE875B04B5 /* heapsort.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = heapsort.h; path = contrib/irrXML/heapsort.h; sourceTree = SOURCE_ROOT; }; - 02E9476D129940BF84DE6682 /* 3DSLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = 3DSLoader.cpp; path = code/3DSLoader.cpp; sourceTree = SOURCE_ROOT; }; - 0535CB113239433DA7CD7FDE /* color4.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = color4.h; path = include/assimp/color4.h; sourceTree = SOURCE_ROOT; }; - 05EA73C462244F1791039BFB /* material.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = material.h; path = include/assimp/material.h; sourceTree = SOURCE_ROOT; }; - 06DB494DCE4D47FDA00E8B35 /* XFileImporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = XFileImporter.cpp; path = code/XFileImporter.cpp; sourceTree = SOURCE_ROOT; }; - 073189BEE7A5466B9EE817D4 /* matrix3x3.inl */ = {isa = PBXFileReference; explicitFileType = sourcecode; fileEncoding = 4; name = matrix3x3.inl; path = include/assimp/matrix3x3.inl; sourceTree = SOURCE_ROOT; }; - 079B3C75D1014265959C427D /* color4.inl */ = {isa = PBXFileReference; explicitFileType = sourcecode; fileEncoding = 4; name = color4.inl; path = include/assimp/color4.inl; sourceTree = SOURCE_ROOT; }; - 08E8379F20984AD59515AD95 /* MD3FileData.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MD3FileData.h; path = code/MD3FileData.h; sourceTree = SOURCE_ROOT; }; - 0A941971CBF04E8D900E9799 /* JoinVerticesProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = JoinVerticesProcess.h; path = code/JoinVerticesProcess.h; sourceTree = SOURCE_ROOT; }; - 0AA53AD6095A4D1088431EED /* MakeVerboseFormat.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MakeVerboseFormat.h; path = code/MakeVerboseFormat.h; sourceTree = SOURCE_ROOT; }; - 0AAF26EBF0A64ABDB840BA64 /* VertexTriangleAdjacency.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = VertexTriangleAdjacency.cpp; path = code/VertexTriangleAdjacency.cpp; sourceTree = SOURCE_ROOT; }; - 0B519CCAB4B241E59C567077 /* 3DSExporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = 3DSExporter.h; path = code/3DSExporter.h; sourceTree = SOURCE_ROOT; }; - 0BC5FD00572F4C58B267A0EC /* MD5Parser.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = MD5Parser.cpp; path = code/MD5Parser.cpp; sourceTree = SOURCE_ROOT; }; - 0C1B00249A554394A4F9CF2A /* ParsingUtils.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ParsingUtils.h; path = code/ParsingUtils.h; sourceTree = SOURCE_ROOT; }; - 0CCD090F58EB40ACBBDBBDEE /* AssbinLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = AssbinLoader.h; path = code/AssbinLoader.h; sourceTree = SOURCE_ROOT; }; - 0D6E8E292F594A2DAFF53564 /* NFFLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = NFFLoader.cpp; path = code/NFFLoader.cpp; sourceTree = SOURCE_ROOT; }; - 0EF256EC06E345EB930772EC /* FBXDocument.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FBXDocument.h; path = code/FBXDocument.h; sourceTree = SOURCE_ROOT; }; - 0EF4F7A237F648C2809A8F31 /* ValidateDataStructure.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ValidateDataStructure.cpp; path = code/ValidateDataStructure.cpp; sourceTree = SOURCE_ROOT; }; - 0FBF026F27F340AD9FABAF02 /* GenFaceNormalsProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = GenFaceNormalsProcess.h; path = code/GenFaceNormalsProcess.h; sourceTree = SOURCE_ROOT; }; - 101172E4EF2E43D988B6B571 /* PretransformVertices.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = PretransformVertices.h; path = code/PretransformVertices.h; sourceTree = SOURCE_ROOT; }; - 1011FC45108745A7BBA98904 /* IRRLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = IRRLoader.h; path = code/IRRLoader.h; sourceTree = SOURCE_ROOT; }; - 10238FBD7A9D401A82D667CB /* Bitmap.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = Bitmap.cpp; path = code/Bitmap.cpp; sourceTree = SOURCE_ROOT; }; - 10E9B0497D844A10BC759A09 /* matrix3x3.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = matrix3x3.h; path = include/assimp/matrix3x3.h; sourceTree = SOURCE_ROOT; }; - 1108AC28566B4D2B9F27C691 /* FBXBinaryTokenizer.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXBinaryTokenizer.cpp; path = code/FBXBinaryTokenizer.cpp; sourceTree = SOURCE_ROOT; }; - 12C5DD7A285042EDB1897FAE /* BlenderTessellator.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = BlenderTessellator.cpp; path = code/BlenderTessellator.cpp; sourceTree = SOURCE_ROOT; }; - 12E167EBA81B4CD3A241D7AF /* irrXML.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = irrXML.h; path = contrib/irrXML/irrXML.h; sourceTree = SOURCE_ROOT; }; - 139DFC029C4C44B09952C645 /* material.inl */ = {isa = PBXFileReference; explicitFileType = sourcecode; fileEncoding = 4; name = material.inl; path = include/assimp/material.inl; sourceTree = SOURCE_ROOT; }; - 13BFADA520C04B15AE256CC2 /* IFCUtil.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = IFCUtil.h; path = code/IFCUtil.h; sourceTree = SOURCE_ROOT; }; - 1520A11AA6E54812939B1FBB /* FileLogStream.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FileLogStream.h; path = code/FileLogStream.h; sourceTree = SOURCE_ROOT; }; - 15221A74FC9C4B2AAA7306E3 /* 3DSConverter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = 3DSConverter.cpp; path = code/3DSConverter.cpp; sourceTree = SOURCE_ROOT; }; - 1533BE4C09F1430C8BF4D248 /* Vertex.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = Vertex.h; path = code/Vertex.h; sourceTree = SOURCE_ROOT; }; - 157C3CC81232428FA535E05F /* BlenderLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = BlenderLoader.h; path = code/BlenderLoader.h; sourceTree = SOURCE_ROOT; }; - 16437E08A946431EB2EFA3E0 /* SortByPTypeProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = SortByPTypeProcess.h; path = code/SortByPTypeProcess.h; sourceTree = SOURCE_ROOT; }; - 1775DE08FC8647EB896A0FB3 /* ScenePreprocessor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ScenePreprocessor.cpp; path = code/ScenePreprocessor.cpp; sourceTree = SOURCE_ROOT; }; - 180177D50FDA4C10AD629DC2 /* ObjFileMtlImporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ObjFileMtlImporter.h; path = code/ObjFileMtlImporter.h; sourceTree = SOURCE_ROOT; }; - 1A0AC303D18A48A69AB3BC03 /* TriangulateProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = TriangulateProcess.cpp; path = code/TriangulateProcess.cpp; sourceTree = SOURCE_ROOT; }; - 1A4706D216414D4F8AA72EC9 /* ColladaLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ColladaLoader.cpp; path = code/ColladaLoader.cpp; sourceTree = SOURCE_ROOT; }; - 1A61BDC559CE4186B03C0396 /* FBXModel.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXModel.cpp; path = code/FBXModel.cpp; sourceTree = SOURCE_ROOT; }; - 1AF1EE8EFE594A40ACE03D19 /* fast_atof.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = fast_atof.h; path = code/fast_atof.h; sourceTree = SOURCE_ROOT; }; - 1BC6B0FE92DD4F38803BC17B /* CSMLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = CSMLoader.h; path = code/CSMLoader.h; sourceTree = SOURCE_ROOT; }; - 1C0527629078403F81CFD117 /* ColladaExporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ColladaExporter.cpp; path = code/ColladaExporter.cpp; sourceTree = SOURCE_ROOT; }; - 1CBCEE37D89145F19F23F036 /* MD3Loader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MD3Loader.h; path = code/MD3Loader.h; sourceTree = SOURCE_ROOT; }; - 1D4A669762194B9D9A26DD20 /* RawLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = RawLoader.cpp; path = code/RawLoader.cpp; sourceTree = SOURCE_ROOT; }; - 1D502654EF864101A2DA9476 /* DefaultIOSystem.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = DefaultIOSystem.cpp; path = code/DefaultIOSystem.cpp; sourceTree = SOURCE_ROOT; }; - 1DC56C794E434BA28E5CCC36 /* format.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = format.hpp; path = code/BoostWorkaround/boost/format.hpp; sourceTree = SOURCE_ROOT; }; - 1ED21FC57A384CE6B4F53C0C /* LWOMaterial.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = LWOMaterial.cpp; path = code/LWOMaterial.cpp; sourceTree = SOURCE_ROOT; }; - 1FC965B1F11B45F98051C565 /* ObjFileImporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ObjFileImporter.h; path = code/ObjFileImporter.h; sourceTree = SOURCE_ROOT; }; - 21B797DAB0E0427C9339AE0F /* MakeVerboseFormat.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = MakeVerboseFormat.cpp; path = code/MakeVerboseFormat.cpp; sourceTree = SOURCE_ROOT; }; - 21E21BE7CB364AC3AB81E54C /* MD2FileData.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MD2FileData.h; path = code/MD2FileData.h; sourceTree = SOURCE_ROOT; }; - 23097CBD64E343738B8F22EE /* BlobIOSystem.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = BlobIOSystem.h; path = code/BlobIOSystem.h; sourceTree = SOURCE_ROOT; }; - 262DFE65C6D34442AA79D15A /* qnan.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = qnan.h; path = code/qnan.h; sourceTree = SOURCE_ROOT; }; - 267A74499024423A86150697 /* cimport.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = cimport.h; path = include/assimp/cimport.h; sourceTree = SOURCE_ROOT; }; - 267D593135514108B7DEF072 /* sweep_context.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = sweep_context.h; path = contrib/poly2tri/poly2tri/sweep/sweep_context.h; sourceTree = SOURCE_ROOT; }; - 26BF681530B04B73961997CB /* FBXCompileConfig.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FBXCompileConfig.h; path = code/FBXCompileConfig.h; sourceTree = SOURCE_ROOT; }; - 27605E75944D41B0B98260A3 /* ASEParser.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ASEParser.h; path = code/ASEParser.h; sourceTree = SOURCE_ROOT; }; - 278FB5C8BD814F2DAE04A1C7 /* pstdint.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = pstdint.h; path = include/assimp/Compiler/pstdint.h; sourceTree = SOURCE_ROOT; }; - 279D2A482FE9402A8F7EC441 /* quaternion.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = quaternion.h; path = include/assimp/quaternion.h; sourceTree = SOURCE_ROOT; }; - 27F2019E621B4CDA94DD5270 /* UnrealLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = UnrealLoader.h; path = code/UnrealLoader.h; sourceTree = SOURCE_ROOT; }; - 285D1FDA48EC4DD8933B603E /* IFCBoolean.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = IFCBoolean.cpp; path = code/IFCBoolean.cpp; sourceTree = SOURCE_ROOT; }; - 28A938B21261484998F68F4A /* FindInstancesProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FindInstancesProcess.h; path = code/FindInstancesProcess.h; sourceTree = SOURCE_ROOT; }; - 296407DE471C4F298742FB59 /* StandardShapes.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = StandardShapes.h; path = code/StandardShapes.h; sourceTree = SOURCE_ROOT; }; - 2ABBB4561E72413EB40702C3 /* ComputeUVMappingProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ComputeUVMappingProcess.cpp; path = code/ComputeUVMappingProcess.cpp; sourceTree = SOURCE_ROOT; }; - 2AC344FBB0C34D49800F4B8A /* GenVertexNormalsProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = GenVertexNormalsProcess.h; path = code/GenVertexNormalsProcess.h; sourceTree = SOURCE_ROOT; }; - 2ACC87E846AE4E4A86E1AEF4 /* OptimizeMeshes.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = OptimizeMeshes.cpp; path = code/OptimizeMeshes.cpp; sourceTree = SOURCE_ROOT; }; - 2BE34AF1CE0C4767ACE21597 /* IFCLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = IFCLoader.h; path = code/IFCLoader.h; sourceTree = SOURCE_ROOT; }; - 2C4D504725E540109530E254 /* PlyParser.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = PlyParser.cpp; path = code/PlyParser.cpp; sourceTree = SOURCE_ROOT; }; - 2DC891C61D2CFA22001E0B0E /* D3MFImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = D3MFImporter.cpp; path = code/D3MFImporter.cpp; sourceTree = ""; }; - 2DC891C71D2CFA22001E0B0E /* D3MFImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = D3MFImporter.h; path = code/D3MFImporter.h; sourceTree = ""; }; - 2DC891C81D2CFA22001E0B0E /* D3MFOpcPackage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = D3MFOpcPackage.cpp; path = code/D3MFOpcPackage.cpp; sourceTree = ""; }; - 2DC891C91D2CFA22001E0B0E /* D3MFOpcPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = D3MFOpcPackage.h; path = code/D3MFOpcPackage.h; sourceTree = ""; }; - 2DC891CD1D2CFA75001E0B0E /* ByteSwapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ByteSwapper.h; path = code/ByteSwapper.h; sourceTree = ""; }; - 2DC891CE1D2CFA75001E0B0E /* C4DImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = C4DImporter.cpp; path = code/C4DImporter.cpp; sourceTree = ""; }; - 2DC891CF1D2CFA75001E0B0E /* C4DImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = C4DImporter.h; path = code/C4DImporter.h; sourceTree = ""; }; - 2DCF6F156A3A4B4C807E5368 /* SmoothingGroups.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = SmoothingGroups.h; path = code/SmoothingGroups.h; sourceTree = SOURCE_ROOT; }; - 2E7FD92FFCF441B0A60FC8B4 /* IFCCurve.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = IFCCurve.cpp; path = code/IFCCurve.cpp; sourceTree = SOURCE_ROOT; }; - 2F34A6A3C4104625A52BF7C2 /* cexport.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = cexport.h; path = include/assimp/cexport.h; sourceTree = SOURCE_ROOT; }; - 3106D75C13874F5AB3EBBFE7 /* BlenderModifier.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = BlenderModifier.cpp; path = code/BlenderModifier.cpp; sourceTree = SOURCE_ROOT; }; - 32170F499DAC4E4595AF6D6B /* BaseImporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = BaseImporter.h; path = code/BaseImporter.h; sourceTree = SOURCE_ROOT; }; - 3267EBBA6EEB435F83FF25E4 /* IFCGeometry.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = IFCGeometry.cpp; path = code/IFCGeometry.cpp; sourceTree = SOURCE_ROOT; }; - 32CC68350B7640ACA7C83DDA /* DefaultIOStream.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = DefaultIOStream.h; path = code/DefaultIOStream.h; sourceTree = SOURCE_ROOT; }; - 333F4676A92043739F5A9D32 /* ObjFileParser.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ObjFileParser.h; path = code/ObjFileParser.h; sourceTree = SOURCE_ROOT; }; - 339E56B5FD264481BBF21835 /* CInterfaceIOWrapper.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = CInterfaceIOWrapper.h; path = code/CInterfaceIOWrapper.h; sourceTree = SOURCE_ROOT; }; - 33B70115CA54405F895BA471 /* FBXNodeAttribute.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXNodeAttribute.cpp; path = code/FBXNodeAttribute.cpp; sourceTree = SOURCE_ROOT; }; - 3551D90CCED1454A8B912066 /* XFileParser.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = XFileParser.h; path = code/XFileParser.h; sourceTree = SOURCE_ROOT; }; - 35A9B50143214C63A956FA27 /* ConvertToLHProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ConvertToLHProcess.h; path = code/ConvertToLHProcess.h; sourceTree = SOURCE_ROOT; }; - 35E4944C052A4C91BF31DE5F /* MDCLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = MDCLoader.cpp; path = code/MDCLoader.cpp; sourceTree = SOURCE_ROOT; }; - 37A3E0E2BB484DD8B9FCCA5E /* NDOLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = NDOLoader.h; path = code/NDOLoader.h; sourceTree = SOURCE_ROOT; }; - 3ACFF3FC39C74C4A966C0FEA /* GenericProperty.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = GenericProperty.h; path = code/GenericProperty.h; sourceTree = SOURCE_ROOT; }; - 3B407EAF162843CBA46BC9D4 /* scene.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = scene.h; path = include/assimp/scene.h; sourceTree = SOURCE_ROOT; }; - 3B8FD96D46314ACD8F157AC3 /* UnrealLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = UnrealLoader.cpp; path = code/UnrealLoader.cpp; sourceTree = SOURCE_ROOT; }; - 3E84DEFC1E0646AD82F79998 /* shared_ptr.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = shared_ptr.hpp; path = code/BoostWorkaround/boost/shared_ptr.hpp; sourceTree = SOURCE_ROOT; }; - 3F5D1E6368384D429BA29D5A /* IFCReaderGen.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = IFCReaderGen.cpp; path = code/IFCReaderGen.cpp; sourceTree = SOURCE_ROOT; }; - 409C98EE093C499B8A574CA9 /* PlyLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = PlyLoader.cpp; path = code/PlyLoader.cpp; sourceTree = SOURCE_ROOT; }; - 4108529663904025B21E526B /* ObjFileMtlImporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ObjFileMtlImporter.cpp; path = code/ObjFileMtlImporter.cpp; sourceTree = SOURCE_ROOT; }; - 41C2F6D564924BF4ACE75CAC /* postprocess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = postprocess.h; path = include/assimp/postprocess.h; sourceTree = SOURCE_ROOT; }; - 420D77ED33554D54AA4D50EF /* ColladaParser.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ColladaParser.cpp; path = code/ColladaParser.cpp; sourceTree = SOURCE_ROOT; }; - 42E110B9E6924AF9B55AE65A /* FBXMeshGeometry.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXMeshGeometry.cpp; path = code/FBXMeshGeometry.cpp; sourceTree = SOURCE_ROOT; }; - 42E68041B1C442E3B49FC304 /* B3DImporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = B3DImporter.h; path = code/B3DImporter.h; sourceTree = SOURCE_ROOT; }; - 435DC362E63D4CCBA68656D3 /* XFileExporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = XFileExporter.cpp; path = code/XFileExporter.cpp; sourceTree = SOURCE_ROOT; }; - 43899EB0B0704A9DB8F0C54F /* BlenderDNA.inl */ = {isa = PBXFileReference; explicitFileType = sourcecode; fileEncoding = 4; name = BlenderDNA.inl; path = code/BlenderDNA.inl; sourceTree = SOURCE_ROOT; }; - 43ABFF591F374920A5E18A24 /* HMPLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = HMPLoader.cpp; path = code/HMPLoader.cpp; sourceTree = SOURCE_ROOT; }; - 43C75175738C4119871E8BB0 /* Q3BSPZipArchive.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = Q3BSPZipArchive.cpp; path = code/Q3BSPZipArchive.cpp; sourceTree = SOURCE_ROOT; }; - 43FC808D2F4745ACB06A9D33 /* MD5Parser.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MD5Parser.h; path = code/MD5Parser.h; sourceTree = SOURCE_ROOT; }; - 445F70426FCC42F088405E86 /* COBLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = COBLoader.h; path = code/COBLoader.h; sourceTree = SOURCE_ROOT; }; - 4493838DDEE841BF96A0F008 /* matrix4x4.inl */ = {isa = PBXFileReference; explicitFileType = sourcecode; fileEncoding = 4; name = matrix4x4.inl; path = include/assimp/matrix4x4.inl; sourceTree = SOURCE_ROOT; }; - 4568875B66584E12AA1538C7 /* BlenderBMesh.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = BlenderBMesh.h; path = code/BlenderBMesh.h; sourceTree = SOURCE_ROOT; }; - 45BC2EB74251493CBBFAEB5D /* SkeletonMeshBuilder.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = SkeletonMeshBuilder.h; path = code/SkeletonMeshBuilder.h; sourceTree = SOURCE_ROOT; }; - 45E342A1499E4F03ADD49028 /* BVHLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = BVHLoader.h; path = code/BVHLoader.h; sourceTree = SOURCE_ROOT; }; - 45F6A2B351AB4B749E55B299 /* PlyParser.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = PlyParser.h; path = code/PlyParser.h; sourceTree = SOURCE_ROOT; }; - 466D6B9A7CCD402D9AA87071 /* DXFLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = DXFLoader.cpp; path = code/DXFLoader.cpp; sourceTree = SOURCE_ROOT; }; - 46E9F455A3284DB399986293 /* IFCProfile.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = IFCProfile.cpp; path = code/IFCProfile.cpp; sourceTree = SOURCE_ROOT; }; - 4770D6DCA1854B4F9B85546A /* DeboneProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = DeboneProcess.h; path = code/DeboneProcess.h; sourceTree = SOURCE_ROOT; }; - 47FF3063906E4786ABF0939B /* STEPFile.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = STEPFile.h; path = code/STEPFile.h; sourceTree = SOURCE_ROOT; }; - 4866DA5A7BFD49F79B61CBF8 /* TerragenLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = TerragenLoader.cpp; path = code/TerragenLoader.cpp; sourceTree = SOURCE_ROOT; }; - 4936396409984881858E7B15 /* irrTypes.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = irrTypes.h; path = contrib/irrXML/irrTypes.h; sourceTree = SOURCE_ROOT; }; - 49AFF879142C4BA4865843DC /* Bitmap.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = Bitmap.h; path = code/Bitmap.h; sourceTree = SOURCE_ROOT; }; - 49B655CCE1314D4E8A94B371 /* MD2Loader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = MD2Loader.cpp; path = code/MD2Loader.cpp; sourceTree = SOURCE_ROOT; }; - 49E993CD86A346869AF473BC /* sweep.cc */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = sweep.cc; path = contrib/poly2tri/poly2tri/sweep/sweep.cc; sourceTree = SOURCE_ROOT; }; - 49FE5C30FC854A3EBD0E9C19 /* irrArray.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = irrArray.h; path = contrib/irrXML/irrArray.h; sourceTree = SOURCE_ROOT; }; - 4A60A00727F04E049CF3AE33 /* Q3BSPFileParser.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = Q3BSPFileParser.cpp; path = code/Q3BSPFileParser.cpp; sourceTree = SOURCE_ROOT; }; - 4B571231CE2B464BBF1E853F /* FindDegenerates.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FindDegenerates.h; path = code/FindDegenerates.h; sourceTree = SOURCE_ROOT; }; - 4BBDEB63CFEB4F2EAA95358D /* Subdivision.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = Subdivision.cpp; path = code/Subdivision.cpp; sourceTree = SOURCE_ROOT; }; - 4CBC1122A79D4F6C94E36CE3 /* StdOStreamLogStream.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = StdOStreamLogStream.h; path = code/StdOStreamLogStream.h; sourceTree = SOURCE_ROOT; }; - 4D2F1605B9484B08BB33402D /* STLLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = STLLoader.cpp; path = code/STLLoader.cpp; sourceTree = SOURCE_ROOT; }; - 4D82A29A8BBF44E69E026F84 /* importerdesc.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = importerdesc.h; path = include/assimp/importerdesc.h; sourceTree = SOURCE_ROOT; }; - 4DABF3CB245F4246B0184513 /* ACLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ACLoader.h; path = code/ACLoader.h; sourceTree = SOURCE_ROOT; }; - 4FE1E4726B144AD1B922A1A0 /* ScenePreprocessor.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ScenePreprocessor.h; path = code/ScenePreprocessor.h; sourceTree = SOURCE_ROOT; }; - 501B18C2B590455D8A3C3E78 /* XGLLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = XGLLoader.h; path = code/XGLLoader.h; sourceTree = SOURCE_ROOT; }; - 50935A81362041BEADF18609 /* utils.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = utils.h; path = contrib/poly2tri/poly2tri/common/utils.h; sourceTree = SOURCE_ROOT; }; - 52836A0629E24447B924750A /* SGSpatialSort.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = SGSpatialSort.cpp; path = code/SGSpatialSort.cpp; sourceTree = SOURCE_ROOT; }; - 531FBC4210644C61954EA4C4 /* MD2Loader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MD2Loader.h; path = code/MD2Loader.h; sourceTree = SOURCE_ROOT; }; - 53537D08E9B44A25B43B697B /* XFileImporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = XFileImporter.h; path = code/XFileImporter.h; sourceTree = SOURCE_ROOT; }; - 5631CE86F56F458EA0E2415F /* HMPLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = HMPLoader.h; path = code/HMPLoader.h; sourceTree = SOURCE_ROOT; }; - 563FBACCFD774BDEA4AEAC10 /* MD3Loader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = MD3Loader.cpp; path = code/MD3Loader.cpp; sourceTree = SOURCE_ROOT; }; - 56ADEC4899C047F2839AD791 /* OgreBinarySerializer.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = OgreBinarySerializer.cpp; path = code/OgreBinarySerializer.cpp; sourceTree = SOURCE_ROOT; }; - 56CE07D64D114C4BAB6D9F08 /* Logger.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = Logger.hpp; path = include/assimp/Logger.hpp; sourceTree = SOURCE_ROOT; }; - 56DA1CDC223747F4AFBAF953 /* types.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = types.h; path = include/assimp/types.h; sourceTree = SOURCE_ROOT; }; - 59A1859480754E90B958CA85 /* BlenderTessellator.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = BlenderTessellator.h; path = code/BlenderTessellator.h; sourceTree = SOURCE_ROOT; }; - 59E3D32E3FC7438DB148537F /* IFCUtil.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = IFCUtil.cpp; path = code/IFCUtil.cpp; sourceTree = SOURCE_ROOT; }; - 59F8A11A7AED45CC94CEDF28 /* clipper.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = clipper.cpp; path = contrib/clipper/clipper.cpp; sourceTree = SOURCE_ROOT; }; - 5A4E05386C094B809A315A07 /* LWOLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = LWOLoader.cpp; path = code/LWOLoader.cpp; sourceTree = SOURCE_ROOT; }; - 5C15EEB253204E8A8E0D0E38 /* Q3BSPFileParser.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = Q3BSPFileParser.h; path = code/Q3BSPFileParser.h; sourceTree = SOURCE_ROOT; }; - 5C1EA03E3AE24AA5A778B7F1 /* Profiler.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = Profiler.h; path = code/Profiler.h; sourceTree = SOURCE_ROOT; }; - 5D4E64EABD9548A59E9637AF /* irrString.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = irrString.h; path = contrib/irrXML/irrString.h; sourceTree = SOURCE_ROOT; }; - 5E10483FBE6D4F4594B460E0 /* sweep_context.cc */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = sweep_context.cc; path = contrib/poly2tri/poly2tri/sweep/sweep_context.cc; sourceTree = SOURCE_ROOT; }; - 5F373DF3B03B4B848B78EAD2 /* FBXParser.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXParser.cpp; path = code/FBXParser.cpp; sourceTree = SOURCE_ROOT; }; - 5F84BDD0D5D345A2BF1E08E1 /* metadata.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = metadata.h; path = include/assimp/metadata.h; sourceTree = SOURCE_ROOT; }; - 5FBE72DCC6AC485ABCF89B8C /* ImproveCacheLocality.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ImproveCacheLocality.h; path = code/ImproveCacheLocality.h; sourceTree = SOURCE_ROOT; }; - 603AFA882AFF49AEAC2C8FA2 /* BlenderBMesh.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = BlenderBMesh.cpp; path = code/BlenderBMesh.cpp; sourceTree = SOURCE_ROOT; }; - 6162B57DE81A4E538430056E /* IFCReaderGen.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = IFCReaderGen.h; path = code/IFCReaderGen.h; sourceTree = SOURCE_ROOT; }; - 621E96E95F60421EB6B4525C /* MDCLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MDCLoader.h; path = code/MDCLoader.h; sourceTree = SOURCE_ROOT; }; - 62E8551653634972ABBABCAD /* sweep.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = sweep.h; path = contrib/poly2tri/poly2tri/sweep/sweep.h; sourceTree = SOURCE_ROOT; }; - 6347FA5D391D4320B9457D3F /* MS3DLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MS3DLoader.h; path = code/MS3DLoader.h; sourceTree = SOURCE_ROOT; }; - 6389F68312384CFD847B1D13 /* AssbinExporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = AssbinExporter.cpp; path = code/AssbinExporter.cpp; sourceTree = SOURCE_ROOT; }; - 638B3F6AC17A435C9B86C86C /* ColladaExporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ColladaExporter.h; path = code/ColladaExporter.h; sourceTree = SOURCE_ROOT; }; - 6454A961FAF44B3E9086D2F8 /* Q3BSPZipArchive.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = Q3BSPZipArchive.h; path = code/Q3BSPZipArchive.h; sourceTree = SOURCE_ROOT; }; - 64C6BACDA5DD4139AA26EE81 /* irrXML.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = irrXML.cpp; path = contrib/irrXML/irrXML.cpp; sourceTree = SOURCE_ROOT; }; - 657B9A15EE7A4B7BA519A969 /* LogStream.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = LogStream.hpp; path = include/assimp/LogStream.hpp; sourceTree = SOURCE_ROOT; }; - 670FE6DD7EDF421488F2F97F /* IRRMeshLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = IRRMeshLoader.h; path = code/IRRMeshLoader.h; sourceTree = SOURCE_ROOT; }; - 680C392FFE0B4CC5ABC7CA64 /* LWOAnimation.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = LWOAnimation.cpp; path = code/LWOAnimation.cpp; sourceTree = SOURCE_ROOT; }; - 680FBD79376A41B690C405B8 /* LineSplitter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = LineSplitter.h; path = code/LineSplitter.h; sourceTree = SOURCE_ROOT; }; - 68703F99581F49CB9E2B9F37 /* LWSLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = LWSLoader.h; path = code/LWSLoader.h; sourceTree = SOURCE_ROOT; }; - 6981B16018CF46CAA54C0BAA /* ColladaLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ColladaLoader.h; path = code/ColladaLoader.h; sourceTree = SOURCE_ROOT; }; - 69AFF47737244CE3BD1653CC /* ProgressHandler.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = ProgressHandler.hpp; path = include/assimp/ProgressHandler.hpp; sourceTree = SOURCE_ROOT; }; - 6A86069DEEDC42B88634F78D /* RemoveComments.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = RemoveComments.cpp; path = code/RemoveComments.cpp; sourceTree = SOURCE_ROOT; }; - 6AC645CEB6F74AE5A62DF68B /* IFF.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = IFF.h; path = code/IFF.h; sourceTree = SOURCE_ROOT; }; - 6BAB32C8E06E43689FC5E7EA /* MD5Loader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MD5Loader.h; path = code/MD5Loader.h; sourceTree = SOURCE_ROOT; }; - 6CC21F1D0E4140FE923E4EE6 /* AssbinExporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = AssbinExporter.h; path = code/AssbinExporter.h; sourceTree = SOURCE_ROOT; }; - 6D72952403D04713A6451654 /* vector3.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = vector3.h; path = include/assimp/vector3.h; sourceTree = SOURCE_ROOT; }; - 6E20FCC571F144DDBD831CCB /* DeboneProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = DeboneProcess.cpp; path = code/DeboneProcess.cpp; sourceTree = SOURCE_ROOT; }; - 6E82409E9D274D278971F3B0 /* Q3BSPFileData.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = Q3BSPFileData.h; path = code/Q3BSPFileData.h; sourceTree = SOURCE_ROOT; }; - 6F49958B5CCF423681133515 /* OgreParsingUtils.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = OgreParsingUtils.h; path = code/OgreParsingUtils.h; sourceTree = SOURCE_ROOT; }; - 6F65B6129F774AEDB8DC845A /* TargetAnimation.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = TargetAnimation.cpp; path = code/TargetAnimation.cpp; sourceTree = SOURCE_ROOT; }; - 6F88E78E61FC4A01BC30BE85 /* ConvertUTF.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ConvertUTF.h; path = contrib/ConvertUTF/ConvertUTF.h; sourceTree = SOURCE_ROOT; }; - 705D30EE141A48F292783F0E /* Assimp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = Assimp.cpp; path = code/Assimp.cpp; sourceTree = SOURCE_ROOT; }; - 70D5FDFA995E45E6A3E8FD37 /* ImproveCacheLocality.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ImproveCacheLocality.cpp; path = code/ImproveCacheLocality.cpp; sourceTree = SOURCE_ROOT; }; - 71EAFDE1910B4A54AAAF2101 /* HMPFileData.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = HMPFileData.h; path = code/HMPFileData.h; sourceTree = SOURCE_ROOT; }; - 71F65BF6936E4E97A5933EF9 /* OgreImporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = OgreImporter.h; path = code/OgreImporter.h; sourceTree = SOURCE_ROOT; }; - 725DAD1CE04C4F64BDAB7037 /* ValidateDataStructure.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ValidateDataStructure.h; path = code/ValidateDataStructure.h; sourceTree = SOURCE_ROOT; }; - 72832410F47C44E3BAE709C2 /* BlenderDNA.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = BlenderDNA.h; path = code/BlenderDNA.h; sourceTree = SOURCE_ROOT; }; - 72F2DF0B93CF4D3ABAD7513D /* LWOLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = LWOLoader.h; path = code/LWOLoader.h; sourceTree = SOURCE_ROOT; }; - 72F637AC7D9E4FBFBB9201CE /* ioapi.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ioapi.h; path = contrib/unzip/ioapi.h; sourceTree = SOURCE_ROOT; }; - 731205CAB88247C095E33412 /* Exporter.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = Exporter.hpp; path = include/assimp/Exporter.hpp; sourceTree = SOURCE_ROOT; }; - 73A3D87FF2C04C3BA3684F54 /* SceneCombiner.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = SceneCombiner.cpp; path = code/SceneCombiner.cpp; sourceTree = SOURCE_ROOT; }; - 74679D2078FD46ED9AC73355 /* IFCOpenings.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = IFCOpenings.cpp; path = code/IFCOpenings.cpp; sourceTree = SOURCE_ROOT; }; - 74C02A113B804568A7E39CBC /* XFileParser.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = XFileParser.cpp; path = code/XFileParser.cpp; sourceTree = SOURCE_ROOT; }; - 7644CE6B26D740258577EE9D /* scoped_ptr.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = scoped_ptr.hpp; path = code/BoostWorkaround/boost/scoped_ptr.hpp; sourceTree = SOURCE_ROOT; }; - 76773A53296549FFA43956A1 /* Q3DLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = Q3DLoader.h; path = code/Q3DLoader.h; sourceTree = SOURCE_ROOT; }; - 76D801D898C4443D8240EDB7 /* BlenderSceneGen.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = BlenderSceneGen.h; path = code/BlenderSceneGen.h; sourceTree = SOURCE_ROOT; }; - 77908990BEF04D0881E8AE80 /* CSMLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = CSMLoader.cpp; path = code/CSMLoader.cpp; sourceTree = SOURCE_ROOT; }; - 79A49EFE23E34E1CBA2E4377 /* OgreStructs.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = OgreStructs.cpp; path = code/OgreStructs.cpp; sourceTree = SOURCE_ROOT; }; - 7BDF90B124F74A39A5EB3B02 /* DXFLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = DXFLoader.h; path = code/DXFLoader.h; sourceTree = SOURCE_ROOT; }; - 7C10178C0B7241DD874A0AF3 /* ColladaHelper.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ColladaHelper.h; path = code/ColladaHelper.h; sourceTree = SOURCE_ROOT; }; - 7C477FA4D89548F1BCEDC5A0 /* ASELoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ASELoader.cpp; path = code/ASELoader.cpp; sourceTree = SOURCE_ROOT; }; - 7C63156710964DEDAC0929BD /* HalfLifeFileData.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = HalfLifeFileData.h; path = code/HalfLifeFileData.h; sourceTree = SOURCE_ROOT; }; - 7CAF8A3096E04CB983B53CC1 /* BlenderIntermediate.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = BlenderIntermediate.h; path = code/BlenderIntermediate.h; sourceTree = SOURCE_ROOT; }; - 7DC4B0B5E57F4F4892CC823E /* MemoryIOWrapper.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MemoryIOWrapper.h; path = code/MemoryIOWrapper.h; sourceTree = SOURCE_ROOT; }; - 7E8BA0D338C9433587BC6C35 /* StreamWriter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = StreamWriter.h; path = code/StreamWriter.h; sourceTree = SOURCE_ROOT; }; - 7F29EF981AB26C4900E9D380 /* libz.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.1.dylib; path = /usr/lib/libz.1.dylib; sourceTree = ""; }; - 7F392D921AB2C7BB00D952EB /* libc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.dylib"; path = "/usr/lib/libc++.dylib"; sourceTree = ""; }; - 7F7922801AB43AC3005A8E5D /* libassimp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libassimp.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 7F7A93A51B65D0110094C4DA /* DDLNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DDLNode.cpp; path = contrib/openddlparser/code/DDLNode.cpp; sourceTree = ""; }; - 7F7A93A61B65D0110094C4DA /* OpenDDLParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OpenDDLParser.cpp; path = contrib/openddlparser/code/OpenDDLParser.cpp; sourceTree = ""; }; - 7F7A93A71B65D0110094C4DA /* Value.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Value.cpp; path = contrib/openddlparser/code/Value.cpp; sourceTree = ""; }; - 7FBE9FE51B65AC1200D2115E /* OpenGEXExporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OpenGEXExporter.cpp; path = code/OpenGEXExporter.cpp; sourceTree = ""; }; - 7FBE9FE61B65AC1200D2115E /* OpenGEXExporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenGEXExporter.h; path = code/OpenGEXExporter.h; sourceTree = ""; }; - 7FBE9FE71B65AC1200D2115E /* OpenGEXImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OpenGEXImporter.cpp; path = code/OpenGEXImporter.cpp; sourceTree = ""; }; - 7FBE9FE81B65AC1200D2115E /* OpenGEXImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenGEXImporter.h; path = code/OpenGEXImporter.h; sourceTree = ""; }; - 7FBE9FE91B65AC1200D2115E /* OpenGEXStructs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenGEXStructs.h; path = code/OpenGEXStructs.h; sourceTree = ""; }; - 7FBEA0071B65AF9200D2115E /* DDLNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DDLNode.h; path = contrib/openddlparser/include/openddlparser/DDLNode.h; sourceTree = ""; }; - 7FBEA0081B65AF9200D2115E /* OpenDDLCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenDDLCommon.h; path = contrib/openddlparser/include/openddlparser/OpenDDLCommon.h; sourceTree = ""; }; - 7FBEA00A1B65AF9200D2115E /* OpenDDLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenDDLParser.h; path = contrib/openddlparser/include/openddlparser/OpenDDLParser.h; sourceTree = ""; }; - 7FBEA00B1B65AF9200D2115E /* OpenDDLParserUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenDDLParserUtils.h; path = contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h; sourceTree = ""; }; - 7FBEA00D1B65AF9200D2115E /* Value.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Value.h; path = contrib/openddlparser/include/openddlparser/Value.h; sourceTree = ""; }; - 7FBEA0111B65B11800D2115E /* Version.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Version.cpp; path = code/Version.cpp; sourceTree = ""; }; - 7FF72CB6E99E40E19AE0E64C /* MaterialSystem.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = MaterialSystem.cpp; path = code/MaterialSystem.cpp; sourceTree = SOURCE_ROOT; }; - 815702BED5644DD5B242F347 /* TerragenLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = TerragenLoader.h; path = code/TerragenLoader.h; sourceTree = SOURCE_ROOT; }; - 8299401C3E4A43A18E887DC1 /* SGSpatialSort.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = SGSpatialSort.h; path = code/SGSpatialSort.h; sourceTree = SOURCE_ROOT; }; - 8343910BBD464297932B3CE0 /* FixNormalsStep.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FixNormalsStep.h; path = code/FixNormalsStep.h; sourceTree = SOURCE_ROOT; }; - 8476FEE874C1404B9B4B9617 /* SceneCombiner.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = SceneCombiner.h; path = code/SceneCombiner.h; sourceTree = SOURCE_ROOT; }; - 849EC6315E4A4E5FA06521EA /* cdt.cc */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = cdt.cc; path = contrib/poly2tri/poly2tri/sweep/cdt.cc; sourceTree = SOURCE_ROOT; }; - 862131D4574B4CABA5EC957B /* ObjFileImporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ObjFileImporter.cpp; path = code/ObjFileImporter.cpp; sourceTree = SOURCE_ROOT; }; - 86E296E459F94050ACBA3C63 /* IOSystem.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = IOSystem.hpp; path = include/assimp/IOSystem.hpp; sourceTree = SOURCE_ROOT; }; - 88ADA502481B403191BD35F0 /* STLExporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = STLExporter.h; path = code/STLExporter.h; sourceTree = SOURCE_ROOT; }; - 890E32C714444692AA016AE5 /* ProcessHelper.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ProcessHelper.cpp; path = code/ProcessHelper.cpp; sourceTree = SOURCE_ROOT; }; - 89473420F7E448A7BE71FCBA /* FBXUtil.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FBXUtil.h; path = code/FBXUtil.h; sourceTree = SOURCE_ROOT; }; - 89D2D359BD854D8AA60CB720 /* STLExporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = STLExporter.cpp; path = code/STLExporter.cpp; sourceTree = SOURCE_ROOT; }; - 8C9AEFFFF3B948148D32D76F /* shared_array.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = shared_array.hpp; path = code/BoostWorkaround/boost/shared_array.hpp; sourceTree = SOURCE_ROOT; }; - 8D53CC35AAED4CE8B9710E04 /* vector3.inl */ = {isa = PBXFileReference; explicitFileType = sourcecode; fileEncoding = 4; name = vector3.inl; path = include/assimp/vector3.inl; sourceTree = SOURCE_ROOT; }; - 8D977E197CA4477AB9F3278C /* NullLogger.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = NullLogger.hpp; path = include/assimp/NullLogger.hpp; sourceTree = SOURCE_ROOT; }; - 8E2108F568374F65ACE217D1 /* light.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = light.h; path = include/assimp/light.h; sourceTree = SOURCE_ROOT; }; - 8E395349546A4FDF843E6963 /* XGLLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = XGLLoader.cpp; path = code/XGLLoader.cpp; sourceTree = SOURCE_ROOT; }; - 8EEC6646FC044D1E9658A590 /* SpatialSort.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = SpatialSort.cpp; path = code/SpatialSort.cpp; sourceTree = SOURCE_ROOT; }; - 8F4261792A60481DA04E6E1A /* XFileHelper.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = XFileHelper.h; path = code/XFileHelper.h; sourceTree = SOURCE_ROOT; }; - 8FE8B4781BB3406EB3452154 /* ObjTools.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ObjTools.h; path = code/ObjTools.h; sourceTree = SOURCE_ROOT; }; - 904A696E49D540C2A880792B /* cdt.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = cdt.h; path = contrib/poly2tri/poly2tri/sweep/cdt.h; sourceTree = SOURCE_ROOT; }; - 906F71D342544BF381E1318E /* BlenderLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = BlenderLoader.cpp; path = code/BlenderLoader.cpp; sourceTree = SOURCE_ROOT; }; - 90949C7A51E84D3595D71A6B /* config.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = config.h; path = include/assimp/config.h; sourceTree = SOURCE_ROOT; }; - 90DD6CA40A5E41458E11FF3E /* CalcTangentsProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = CalcTangentsProcess.cpp; path = code/CalcTangentsProcess.cpp; sourceTree = SOURCE_ROOT; }; - 916456789C75419DB1436FAD /* OgreBinarySerializer.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = OgreBinarySerializer.h; path = code/OgreBinarySerializer.h; sourceTree = SOURCE_ROOT; }; - 91D49B3C51684882A01EA492 /* PlyLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = PlyLoader.h; path = code/PlyLoader.h; sourceTree = SOURCE_ROOT; }; - 91EF6411C40946758A06144F /* ObjExporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ObjExporter.h; path = code/ObjExporter.h; sourceTree = SOURCE_ROOT; }; - 91FF8B1DCC0644008AE34A04 /* FindInvalidDataProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FindInvalidDataProcess.h; path = code/FindInvalidDataProcess.h; sourceTree = SOURCE_ROOT; }; - 923283A9791E4B4E86D623FC /* OgreImporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = OgreImporter.cpp; path = code/OgreImporter.cpp; sourceTree = SOURCE_ROOT; }; - 926E8B7924144B349A88023D /* OptimizeGraph.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = OptimizeGraph.h; path = code/OptimizeGraph.h; sourceTree = SOURCE_ROOT; }; - 9293C5A353F9497A850E05D5 /* unzip.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = unzip.h; path = contrib/unzip/unzip.h; sourceTree = SOURCE_ROOT; }; - 929F59CCA32549EC884A5033 /* ASEParser.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ASEParser.cpp; path = code/ASEParser.cpp; sourceTree = SOURCE_ROOT; }; - 92D8734FFF9742B39A371B70 /* ConvertToLHProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ConvertToLHProcess.cpp; path = code/ConvertToLHProcess.cpp; sourceTree = SOURCE_ROOT; }; - 9472EFB6831740DD91471337 /* Importer.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = Importer.cpp; path = code/Importer.cpp; sourceTree = SOURCE_ROOT; }; - 95641498F25A4F6FABBC03A4 /* MDCFileData.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MDCFileData.h; path = code/MDCFileData.h; sourceTree = SOURCE_ROOT; }; - 957FBC18FED2484F83308E36 /* SpatialSort.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = SpatialSort.h; path = code/SpatialSort.h; sourceTree = SOURCE_ROOT; }; - 967D69AC1A344D4E988F0B2C /* common_factor_rt.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = common_factor_rt.hpp; path = code/BoostWorkaround/boost/math/common_factor_rt.hpp; sourceTree = SOURCE_ROOT; }; - 96A02CBA1AE642BD9519719D /* make_shared.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = make_shared.hpp; path = code/BoostWorkaround/boost/make_shared.hpp; sourceTree = SOURCE_ROOT; }; - 973D4231A4AA4925B019FEEE /* unzip.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.c; fileEncoding = 4; name = unzip.c; path = contrib/unzip/unzip.c; sourceTree = SOURCE_ROOT; }; - 9761D873B9604504B9AD7CD5 /* defs.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = defs.h; path = include/assimp/defs.h; sourceTree = SOURCE_ROOT; }; - 97914BDA4AA34081855BF16C /* ScenePrivate.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ScenePrivate.h; path = code/ScenePrivate.h; sourceTree = SOURCE_ROOT; }; - 97DFA90F9D0C4B999C150B10 /* IRRLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = IRRLoader.cpp; path = code/IRRLoader.cpp; sourceTree = SOURCE_ROOT; }; - 97F52051AF4F478FA77AABBC /* quaternion.inl */ = {isa = PBXFileReference; explicitFileType = sourcecode; fileEncoding = 4; name = quaternion.inl; path = include/assimp/quaternion.inl; sourceTree = SOURCE_ROOT; }; - 982AE676D2364350B1FBD095 /* GenFaceNormalsProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = GenFaceNormalsProcess.cpp; path = code/GenFaceNormalsProcess.cpp; sourceTree = SOURCE_ROOT; }; - 9855496CEA774F4FA7FBB862 /* FBXDeformer.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXDeformer.cpp; path = code/FBXDeformer.cpp; sourceTree = SOURCE_ROOT; }; - 99A4349D505F4CC593F48CF6 /* SplitByBoneCountProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = SplitByBoneCountProcess.cpp; path = code/SplitByBoneCountProcess.cpp; sourceTree = SOURCE_ROOT; }; - 9A0960F123634603B15EEA38 /* ConvertUTF.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.c; fileEncoding = 4; name = ConvertUTF.c; path = contrib/ConvertUTF/ConvertUTF.c; sourceTree = SOURCE_ROOT; }; - 9A61AF384D4D45778698DD7D /* ASELoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ASELoader.h; path = code/ASELoader.h; sourceTree = SOURCE_ROOT; }; - 9B2827B3E64147E08A5AD334 /* SkeletonMeshBuilder.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = SkeletonMeshBuilder.cpp; path = code/SkeletonMeshBuilder.cpp; sourceTree = SOURCE_ROOT; }; - 9B4221AA0AD2418FAA45EB64 /* FindInvalidDataProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FindInvalidDataProcess.cpp; path = code/FindInvalidDataProcess.cpp; sourceTree = SOURCE_ROOT; }; - 9C5E3F9248B64C7EBF20EC27 /* Hash.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = Hash.h; path = code/Hash.h; sourceTree = SOURCE_ROOT; }; - 9D203F78B24C4D7E8E2084A3 /* FBXProperties.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXProperties.cpp; path = code/FBXProperties.cpp; sourceTree = SOURCE_ROOT; }; - 9E0572B45F1F4605BD5C919D /* COBScene.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = COBScene.h; path = code/COBScene.h; sourceTree = SOURCE_ROOT; }; - A06CBE89CFAB48E786F7A5C0 /* 3DSLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = 3DSLoader.h; path = code/3DSLoader.h; sourceTree = SOURCE_ROOT; }; - A0AED12A1A6D4635A8CFB65A /* GenVertexNormalsProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = GenVertexNormalsProcess.cpp; path = code/GenVertexNormalsProcess.cpp; sourceTree = SOURCE_ROOT; }; - A14347E954E8413CAF1455EA /* LWOAnimation.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = LWOAnimation.h; path = code/LWOAnimation.h; sourceTree = SOURCE_ROOT; }; - A1A9535EDF9A4FF2B8DABD7D /* AssimpCExport.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = AssimpCExport.cpp; path = code/AssimpCExport.cpp; sourceTree = SOURCE_ROOT; }; - A257229A058041389981CFC1 /* XFileExporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = XFileExporter.h; path = code/XFileExporter.h; sourceTree = SOURCE_ROOT; }; - A277DBC1EFB944F995659A20 /* MD5Loader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = MD5Loader.cpp; path = code/MD5Loader.cpp; sourceTree = SOURCE_ROOT; }; - A3D3024C3A59423487A125C8 /* STEPFileReader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = STEPFileReader.h; path = code/STEPFileReader.h; sourceTree = SOURCE_ROOT; }; - A43641DC9C1B4B578BC40476 /* SplitLargeMeshes.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = SplitLargeMeshes.cpp; path = code/SplitLargeMeshes.cpp; sourceTree = SOURCE_ROOT; }; - A436C47FBF904FECB4A58462 /* ProcessHelper.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ProcessHelper.h; path = code/ProcessHelper.h; sourceTree = SOURCE_ROOT; }; - A4CBF9157F01460ABEDEBF28 /* crypt.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = crypt.h; path = contrib/unzip/crypt.h; sourceTree = SOURCE_ROOT; }; - A58410FEAA884A2D8D73ACCE /* BaseImporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = BaseImporter.cpp; path = code/BaseImporter.cpp; sourceTree = SOURCE_ROOT; }; - A72115ED828F4069A427B460 /* Subdivision.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = Subdivision.h; path = code/Subdivision.h; sourceTree = SOURCE_ROOT; }; - A7733823362B4A389102D177 /* TargetAnimation.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = TargetAnimation.h; path = code/TargetAnimation.h; sourceTree = SOURCE_ROOT; }; - A7A56A688A3845768410F500 /* FBXConverter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXConverter.cpp; path = code/FBXConverter.cpp; sourceTree = SOURCE_ROOT; }; - A7A86F81858F4D928A568E17 /* FBXConverter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FBXConverter.h; path = code/FBXConverter.h; sourceTree = SOURCE_ROOT; }; - A7A990C6FF244DC397B7BA7C /* MS3DLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = MS3DLoader.cpp; path = code/MS3DLoader.cpp; sourceTree = SOURCE_ROOT; }; - A7CEBC6894424B888326CAB2 /* tuple.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = tuple.hpp; path = code/BoostWorkaround/boost/tuple/tuple.hpp; sourceTree = SOURCE_ROOT; }; - A88D56FBEA084A3EA9A0ECB3 /* Q3BSPFileImporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = Q3BSPFileImporter.cpp; path = code/Q3BSPFileImporter.cpp; sourceTree = SOURCE_ROOT; }; - A9E9EB834E09420197C3FB8C /* DefaultLogger.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = DefaultLogger.cpp; path = code/DefaultLogger.cpp; sourceTree = SOURCE_ROOT; }; - AA4946AEDB9F4F22873C4C4F /* FBXImporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FBXImporter.h; path = code/FBXImporter.h; sourceTree = SOURCE_ROOT; }; - AA92FFC8B06D4569AD9C4CB1 /* MDLLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = MDLLoader.cpp; path = code/MDLLoader.cpp; sourceTree = SOURCE_ROOT; }; - AAB9AE5328F843F5A8A3E85C /* OptimizeGraph.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = OptimizeGraph.cpp; path = code/OptimizeGraph.cpp; sourceTree = SOURCE_ROOT; }; - AAD3EA9B0BB84A788FCCA83E /* foreach.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = foreach.hpp; path = code/BoostWorkaround/boost/foreach.hpp; sourceTree = SOURCE_ROOT; }; - ABDA70358E34432A8A4637F4 /* RemoveVCProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = RemoveVCProcess.h; path = code/RemoveVCProcess.h; sourceTree = SOURCE_ROOT; }; - AC699876B6364EC1878CBA44 /* OgreXmlSerializer.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = OgreXmlSerializer.h; path = code/OgreXmlSerializer.h; sourceTree = SOURCE_ROOT; }; - ACF73EEAB2424213BF7158D5 /* ObjFileParser.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ObjFileParser.cpp; path = code/ObjFileParser.cpp; sourceTree = SOURCE_ROOT; }; - AD969BA482564C7FAA372F7C /* RemoveRedundantMaterials.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = RemoveRedundantMaterials.h; path = code/RemoveRedundantMaterials.h; sourceTree = SOURCE_ROOT; }; - ADACEBC4973F4FC0A6FEC68A /* RemoveRedundantMaterials.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = RemoveRedundantMaterials.cpp; path = code/RemoveRedundantMaterials.cpp; sourceTree = SOURCE_ROOT; }; - AE00939F150F413780C8AAD7 /* shapes.cc */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = shapes.cc; path = contrib/poly2tri/poly2tri/common/shapes.cc; sourceTree = SOURCE_ROOT; }; - AE1C2E2C9C424B3684AD9D4A /* texture.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = texture.h; path = include/assimp/texture.h; sourceTree = SOURCE_ROOT; }; - AF75E6049338489BB256D295 /* ioapi.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.c; fileEncoding = 4; name = ioapi.c; path = contrib/unzip/ioapi.c; sourceTree = SOURCE_ROOT; }; - AFA8B6DE5B3A4E52A85041C9 /* LWOFileData.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = LWOFileData.h; path = code/LWOFileData.h; sourceTree = SOURCE_ROOT; }; - AFB7F8501C882F1A00D7B6E9 /* OpenDDLCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OpenDDLCommon.cpp; path = contrib/openddlparser/code/OpenDDLCommon.cpp; sourceTree = ""; }; - AFB7F8511C882F1A00D7B6E9 /* OpenDDLExport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OpenDDLExport.cpp; path = contrib/openddlparser/code/OpenDDLExport.cpp; sourceTree = ""; }; - AFB7F8551C882F8200D7B6E9 /* glTFAsset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glTFAsset.h; path = code/glTFAsset.h; sourceTree = ""; }; - AFB7F8561C882F8200D7B6E9 /* glTFAsset.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = glTFAsset.inl; path = code/glTFAsset.inl; sourceTree = ""; }; - AFB7F8571C882F8200D7B6E9 /* glTFAssetWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glTFAssetWriter.h; path = code/glTFAssetWriter.h; sourceTree = ""; }; - AFB7F8581C882F8200D7B6E9 /* glTFAssetWriter.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = glTFAssetWriter.inl; path = code/glTFAssetWriter.inl; sourceTree = ""; }; - AFB7F8591C882F8200D7B6E9 /* glTFExporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = glTFExporter.cpp; path = code/glTFExporter.cpp; sourceTree = ""; }; - AFB7F85A1C882F8200D7B6E9 /* glTFExporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glTFExporter.h; path = code/glTFExporter.h; sourceTree = ""; }; - AFB7F85B1C882F8200D7B6E9 /* glTFImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = glTFImporter.cpp; path = code/glTFImporter.cpp; sourceTree = ""; }; - AFB7F85C1C882F8200D7B6E9 /* glTFImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glTFImporter.h; path = code/glTFImporter.h; sourceTree = ""; }; - AFB7F8611C88302500D7B6E9 /* SIBImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SIBImporter.cpp; path = code/SIBImporter.cpp; sourceTree = ""; }; - AFB7F8621C88302500D7B6E9 /* SIBImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SIBImporter.h; path = code/SIBImporter.h; sourceTree = ""; }; - AFF41974881F466A9561BE4B /* LWSLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = LWSLoader.cpp; path = code/LWSLoader.cpp; sourceTree = SOURCE_ROOT; }; - B04FE3598E344EC09B59CA2F /* IRRShared.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = IRRShared.h; path = code/IRRShared.h; sourceTree = SOURCE_ROOT; }; - B05DC38593F04180B322360B /* camera.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = camera.h; path = include/assimp/camera.h; sourceTree = SOURCE_ROOT; }; - B211101B342C414A9E43B7BC /* SplitByBoneCountProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = SplitByBoneCountProcess.h; path = code/SplitByBoneCountProcess.h; sourceTree = SOURCE_ROOT; }; - B36DA471B9E142FC9425EC45 /* JoinVerticesProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = JoinVerticesProcess.cpp; path = code/JoinVerticesProcess.cpp; sourceTree = SOURCE_ROOT; }; - B3E8A1BEF8E74F04AE06871B /* AssxmlExporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = AssxmlExporter.cpp; path = code/AssxmlExporter.cpp; sourceTree = SOURCE_ROOT; }; - B4086213AE40445F817FA840 /* RemoveComments.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = RemoveComments.h; path = code/RemoveComments.h; sourceTree = SOURCE_ROOT; }; - B40FE1BF9D8E411493BBDE0C /* ComputeUVMappingProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ComputeUVMappingProcess.h; path = code/ComputeUVMappingProcess.h; sourceTree = SOURCE_ROOT; }; - B441D87EE6ED4EBFB0586B66 /* anim.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = anim.h; path = include/assimp/anim.h; sourceTree = SOURCE_ROOT; }; - B4C688FA08F44716855CDD3C /* FBXImporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXImporter.cpp; path = code/FBXImporter.cpp; sourceTree = SOURCE_ROOT; }; - B4F1B5789CA540C78FB9219D /* NDOLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = NDOLoader.cpp; path = code/NDOLoader.cpp; sourceTree = SOURCE_ROOT; }; - B522B83A39CA461CBCABE25A /* BlenderScene.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = BlenderScene.h; path = code/BlenderScene.h; sourceTree = SOURCE_ROOT; }; - B54FBAAF061B40DBA3F48F83 /* IOStream.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = IOStream.hpp; path = include/assimp/IOStream.hpp; sourceTree = SOURCE_ROOT; }; - B6074B1E864740F787A97EA3 /* vector2.inl */ = {isa = PBXFileReference; explicitFileType = sourcecode; fileEncoding = 4; name = vector2.inl; path = include/assimp/vector2.inl; sourceTree = SOURCE_ROOT; }; - B65258E349704523BC43904D /* BlenderDNA.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = BlenderDNA.cpp; path = code/BlenderDNA.cpp; sourceTree = SOURCE_ROOT; }; - B6982D8069A145E5B9F97684 /* DXFHelper.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = DXFHelper.h; path = code/DXFHelper.h; sourceTree = SOURCE_ROOT; }; - B7192C50B16142398B7CD221 /* DefaultProgressHandler.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = DefaultProgressHandler.h; path = code/DefaultProgressHandler.h; sourceTree = SOURCE_ROOT; }; - B72D0BA3EF66439F8D582ED3 /* advancing_front.cc */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = advancing_front.cc; path = contrib/poly2tri/poly2tri/sweep/advancing_front.cc; sourceTree = SOURCE_ROOT; }; - B9DFF24FD63A4D9FAE213EED /* Importer.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = Importer.hpp; path = include/assimp/Importer.hpp; sourceTree = SOURCE_ROOT; }; - BA832069DF214327AE067503 /* matrix4x4.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = matrix4x4.h; path = include/assimp/matrix4x4.h; sourceTree = SOURCE_ROOT; }; - BABB7734139C452A9DDEE797 /* FindDegenerates.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FindDegenerates.cpp; path = code/FindDegenerates.cpp; sourceTree = SOURCE_ROOT; }; - BB38E7E7661842448F008372 /* FBXDocumentUtil.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXDocumentUtil.cpp; path = code/FBXDocumentUtil.cpp; sourceTree = SOURCE_ROOT; }; - BBEE1CF81183473C8492FC03 /* CalcTangentsProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = CalcTangentsProcess.h; path = code/CalcTangentsProcess.h; sourceTree = SOURCE_ROOT; }; - BD9A81E0E27E44718609615B /* SortByPTypeProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = SortByPTypeProcess.cpp; path = code/SortByPTypeProcess.cpp; sourceTree = SOURCE_ROOT; }; - BDD30C77BB68497EA3B7F2F7 /* StringComparison.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = StringComparison.h; path = code/StringComparison.h; sourceTree = SOURCE_ROOT; }; - BF94F50C216B45388CDEC1EF /* OFFLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = OFFLoader.h; path = code/OFFLoader.h; sourceTree = SOURCE_ROOT; }; - C17C5037C995420C8D259C0C /* FBXImportSettings.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FBXImportSettings.h; path = code/FBXImportSettings.h; sourceTree = SOURCE_ROOT; }; - C18C5023460E4D17B8C922D7 /* StandardShapes.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = StandardShapes.cpp; path = code/StandardShapes.cpp; sourceTree = SOURCE_ROOT; }; - C2C9EAC9B5B74AC397B070E8 /* scoped_array.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = scoped_array.hpp; path = code/BoostWorkaround/boost/scoped_array.hpp; sourceTree = SOURCE_ROOT; }; - C490BBF1881240EEA4A96315 /* clipper.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = clipper.hpp; path = contrib/clipper/clipper.hpp; sourceTree = SOURCE_ROOT; }; - C5178B3983F147F3B9BD8217 /* Q3DLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = Q3DLoader.cpp; path = code/Q3DLoader.cpp; sourceTree = SOURCE_ROOT; }; - C54518F708BA4A328D5D7325 /* FixNormalsStep.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FixNormalsStep.cpp; path = code/FixNormalsStep.cpp; sourceTree = SOURCE_ROOT; }; - C582480917FF4EB09C164D70 /* SMDLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = SMDLoader.h; path = code/SMDLoader.h; sourceTree = SOURCE_ROOT; }; - C5C3ED2BE50D4684994BD533 /* TextureTransform.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = TextureTransform.h; path = code/TextureTransform.h; sourceTree = SOURCE_ROOT; }; - C6D3C3E2BA2F49F2B17E7580 /* STLLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = STLLoader.h; path = code/STLLoader.h; sourceTree = SOURCE_ROOT; }; - C7B37CA474DF4CE7A5B0658E /* ai_assert.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ai_assert.h; path = include/assimp/ai_assert.h; sourceTree = SOURCE_ROOT; }; - C80B9A3AF4204AE08AA50BAE /* BVHLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = BVHLoader.cpp; path = code/BVHLoader.cpp; sourceTree = SOURCE_ROOT; }; - C84DA0E6CE13493D833BA1C1 /* COBLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = COBLoader.cpp; path = code/COBLoader.cpp; sourceTree = SOURCE_ROOT; }; - C9A101D1311C4E77AAEDD94C /* FindInstancesProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FindInstancesProcess.cpp; path = code/FindInstancesProcess.cpp; sourceTree = SOURCE_ROOT; }; - CB042D863BD447FFB117AE34 /* 3DSHelper.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = 3DSHelper.h; path = code/3DSHelper.h; sourceTree = SOURCE_ROOT; }; - CC54A231FF6B4B0CABCFD167 /* IRRShared.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = IRRShared.cpp; path = code/IRRShared.cpp; sourceTree = SOURCE_ROOT; }; - CC5D5CA1789448E9869B9669 /* PlyExporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = PlyExporter.h; path = code/PlyExporter.h; sourceTree = SOURCE_ROOT; }; - CDE3ECA98173418A9F997992 /* STEPFileReader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = STEPFileReader.cpp; path = code/STEPFileReader.cpp; sourceTree = SOURCE_ROOT; }; - CEC69808E1844C23B95D3475 /* MDLMaterialLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = MDLMaterialLoader.cpp; path = code/MDLMaterialLoader.cpp; sourceTree = SOURCE_ROOT; }; - CF07D05DC86F4C98BC42FDCF /* FBXTokenizer.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXTokenizer.cpp; path = code/FBXTokenizer.cpp; sourceTree = SOURCE_ROOT; }; - D029CE902F8045B0B3AFFDDB /* ImporterRegistry.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ImporterRegistry.cpp; path = code/ImporterRegistry.cpp; sourceTree = SOURCE_ROOT; }; - D0E9BB0220704C5D93CE7CE9 /* IFCLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = IFCLoader.cpp; path = code/IFCLoader.cpp; sourceTree = SOURCE_ROOT; }; - D1073FF20359469D921C9316 /* irrXMLWrapper.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = irrXMLWrapper.h; path = code/irrXMLWrapper.h; sourceTree = SOURCE_ROOT; }; - D2869C6AD4814588A45E8F81 /* NFFLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = NFFLoader.h; path = code/NFFLoader.h; sourceTree = SOURCE_ROOT; }; - D2EEB62ECBF749AA89146C66 /* SplitLargeMeshes.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = SplitLargeMeshes.h; path = code/SplitLargeMeshes.h; sourceTree = SOURCE_ROOT; }; - D40F70AC841D4B788B5C696B /* CXMLReaderImpl.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = CXMLReaderImpl.h; path = contrib/irrXML/CXMLReaderImpl.h; sourceTree = SOURCE_ROOT; }; - D56A4C70F65D4E07BD792D2C /* STEPFileEncoding.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = STEPFileEncoding.h; path = code/STEPFileEncoding.h; sourceTree = SOURCE_ROOT; }; - D5F4108F03D7457EB641836B /* MDLFileData.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MDLFileData.h; path = code/MDLFileData.h; sourceTree = SOURCE_ROOT; }; - D629F6BF53864979B7619067 /* LWOBLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = LWOBLoader.cpp; path = code/LWOBLoader.cpp; sourceTree = SOURCE_ROOT; }; - D82B5BA87B184532BE74D24F /* LogAux.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = LogAux.h; path = code/LogAux.h; sourceTree = SOURCE_ROOT; }; - D958B0B445E64F4BA9145D82 /* DefaultLogger.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = DefaultLogger.hpp; path = include/assimp/DefaultLogger.hpp; sourceTree = SOURCE_ROOT; }; - D9AB66BD27E246A18091626F /* DefaultIOSystem.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = DefaultIOSystem.h; path = code/DefaultIOSystem.h; sourceTree = SOURCE_ROOT; }; - D9FEEF58B24548F782A5D53C /* AssbinLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = AssbinLoader.cpp; path = code/AssbinLoader.cpp; sourceTree = SOURCE_ROOT; }; - DAE82F651F9E4D91A6A6C753 /* advancing_front.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = advancing_front.h; path = contrib/poly2tri/poly2tri/sweep/advancing_front.h; sourceTree = SOURCE_ROOT; }; - DC0210D3F25F470C86F914B3 /* ColladaParser.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = ColladaParser.h; path = code/ColladaParser.h; sourceTree = SOURCE_ROOT; }; - DC67FF8B4313494F8C03D840 /* XMLTools.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = XMLTools.h; path = code/XMLTools.h; sourceTree = SOURCE_ROOT; }; - DD3D18BC2E58447D9879CB00 /* OptimizeMeshes.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = OptimizeMeshes.h; path = code/OptimizeMeshes.h; sourceTree = SOURCE_ROOT; }; - DD4E4641B0FE4369BF3775C3 /* MDCNormalTable.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MDCNormalTable.h; path = code/MDCNormalTable.h; sourceTree = SOURCE_ROOT; }; - DD7FFD53046F4AEB898C0832 /* IRRMeshLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = IRRMeshLoader.cpp; path = code/IRRMeshLoader.cpp; sourceTree = SOURCE_ROOT; }; - DDDE82BDF4F94E0EA35649A4 /* LimitBoneWeightsProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = LimitBoneWeightsProcess.h; path = code/LimitBoneWeightsProcess.h; sourceTree = SOURCE_ROOT; }; - DE0D259917354C80BE1CC791 /* BlenderScene.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = BlenderScene.cpp; path = code/BlenderScene.cpp; sourceTree = SOURCE_ROOT; }; - DE811A81663A492A84E13937 /* ObjExporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ObjExporter.cpp; path = code/ObjExporter.cpp; sourceTree = SOURCE_ROOT; }; - DF76D04D95E649BCBC15E64F /* TextureTransform.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = TextureTransform.cpp; path = code/TextureTransform.cpp; sourceTree = SOURCE_ROOT; }; - DFF8AF202CAA40E69D1A2BD0 /* static_assert.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; name = static_assert.hpp; path = code/BoostWorkaround/boost/static_assert.hpp; sourceTree = SOURCE_ROOT; }; - E01801CB159D47928B3D96B5 /* TinyFormatter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = TinyFormatter.h; path = code/TinyFormatter.h; sourceTree = SOURCE_ROOT; }; - E065DB38B0284196A9283CA3 /* LimitBoneWeightsProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = LimitBoneWeightsProcess.cpp; path = code/LimitBoneWeightsProcess.cpp; sourceTree = SOURCE_ROOT; }; - E11A39E91576445599DF2AC4 /* STEPFileEncoding.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = STEPFileEncoding.cpp; path = code/STEPFileEncoding.cpp; sourceTree = SOURCE_ROOT; }; - E1313C36045444619026E9FB /* cfileio.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = cfileio.h; path = include/assimp/cfileio.h; sourceTree = SOURCE_ROOT; }; - E24E950227C848D3A759F5C2 /* MDLLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MDLLoader.h; path = code/MDLLoader.h; sourceTree = SOURCE_ROOT; }; - E51043448F1744FFA78526D5 /* PlyExporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = PlyExporter.cpp; path = code/PlyExporter.cpp; sourceTree = SOURCE_ROOT; }; - E6332CD992D447CA910DA456 /* FBXUtil.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXUtil.cpp; path = code/FBXUtil.cpp; sourceTree = SOURCE_ROOT; }; - E663847651834244834CB9F5 /* PostStepRegistry.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = PostStepRegistry.cpp; path = code/PostStepRegistry.cpp; sourceTree = SOURCE_ROOT; }; - E7E85BF696E74CFAAEBF895C /* FBXTokenizer.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FBXTokenizer.h; path = code/FBXTokenizer.h; sourceTree = SOURCE_ROOT; }; - E81BAB0ED0854DDFA62CB956 /* pushpack1.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = pushpack1.h; path = include/assimp/Compiler/pushpack1.h; sourceTree = SOURCE_ROOT; }; - E9ED3048A21E483F9C2721F4 /* mesh.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = mesh.h; path = include/assimp/mesh.h; sourceTree = SOURCE_ROOT; }; - EAD338BE19AE4C2E897B38B6 /* RawLoader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = RawLoader.h; path = code/RawLoader.h; sourceTree = SOURCE_ROOT; }; - EAD34F1AA6664B6B935C9421 /* FBXAnimation.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXAnimation.cpp; path = code/FBXAnimation.cpp; sourceTree = SOURCE_ROOT; }; - ECCBBF2D75A44335AB93C84A /* 3DSExporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = 3DSExporter.cpp; path = code/3DSExporter.cpp; sourceTree = SOURCE_ROOT; }; - ED20428B31DF46C6A9D65322 /* StreamReader.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = StreamReader.h; path = code/StreamReader.h; sourceTree = SOURCE_ROOT; }; - EE545B58FA1246C792C6AD01 /* shapes.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = shapes.h; path = contrib/poly2tri/poly2tri/common/shapes.h; sourceTree = SOURCE_ROOT; }; - EE6163EB035149A6B8139DB8 /* FBXMaterial.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXMaterial.cpp; path = code/FBXMaterial.cpp; sourceTree = SOURCE_ROOT; }; - EF9F805A4BA4428CA98C9DE5 /* OgreXmlSerializer.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = OgreXmlSerializer.cpp; path = code/OgreXmlSerializer.cpp; sourceTree = SOURCE_ROOT; }; - EFD557FE2C3A46D78F070655 /* OFFLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = OFFLoader.cpp; path = code/OFFLoader.cpp; sourceTree = SOURCE_ROOT; }; - F1076BAC69DB4935A93045A8 /* ACLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ACLoader.cpp; path = code/ACLoader.cpp; sourceTree = SOURCE_ROOT; }; - F1A7BD0B5CAE48699FCAEBD1 /* MDLDefaultColorMap.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MDLDefaultColorMap.h; path = code/MDLDefaultColorMap.h; sourceTree = SOURCE_ROOT; }; - F22D5BA425444A028DA42BEA /* FBXDocument.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = FBXDocument.cpp; path = code/FBXDocument.cpp; sourceTree = SOURCE_ROOT; }; - F44E3625C31843B0AFA1A744 /* AssxmlExporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = AssxmlExporter.h; path = code/AssxmlExporter.h; sourceTree = SOURCE_ROOT; }; - F468200042534D7CA2C9D891 /* BaseProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = BaseProcess.h; path = code/BaseProcess.h; sourceTree = SOURCE_ROOT; }; - F4AE5F74C20B400EA688B5ED /* VertexTriangleAdjacency.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = VertexTriangleAdjacency.h; path = code/VertexTriangleAdjacency.h; sourceTree = SOURCE_ROOT; }; - F4BA09C943DD49E184316D97 /* Win32DebugLogStream.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = Win32DebugLogStream.h; path = code/Win32DebugLogStream.h; sourceTree = SOURCE_ROOT; }; - F5720C42345840CB9FEA5A40 /* BlenderModifier.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = BlenderModifier.h; path = code/BlenderModifier.h; sourceTree = SOURCE_ROOT; }; - F75457C6D026451B9267B65E /* OgreMaterial.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = OgreMaterial.cpp; path = code/OgreMaterial.cpp; sourceTree = SOURCE_ROOT; }; - F81AE18E4AA94F9597FCB040 /* Importer.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = Importer.h; path = code/Importer.h; sourceTree = SOURCE_ROOT; }; - F898EEA0D9E64425A790587D /* Q3BSPFileImporter.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = Q3BSPFileImporter.h; path = code/Q3BSPFileImporter.h; sourceTree = SOURCE_ROOT; }; - F8AC3A243B9C47D6B31348BA /* FBXParser.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FBXParser.h; path = code/FBXParser.h; sourceTree = SOURCE_ROOT; }; - F8B1133805564E18B32FFA83 /* OgreStructs.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = OgreStructs.h; path = code/OgreStructs.h; sourceTree = SOURCE_ROOT; }; - F9FEF4D69EFC4605A4F752E5 /* DefaultIOStream.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = DefaultIOStream.cpp; path = code/DefaultIOStream.cpp; sourceTree = SOURCE_ROOT; }; - FAB6BC13FCFE40F5801D0972 /* BaseProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = BaseProcess.cpp; path = code/BaseProcess.cpp; sourceTree = SOURCE_ROOT; }; - FAC67CC462484F92A2CBD7D3 /* poppack1.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = poppack1.h; path = include/assimp/Compiler/poppack1.h; sourceTree = SOURCE_ROOT; }; - FB1E84BE85A34F98A44BBB2B /* vector2.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = vector2.h; path = include/assimp/vector2.h; sourceTree = SOURCE_ROOT; }; - FB2510D46F504365A03EE8A8 /* TriangulateProcess.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = TriangulateProcess.h; path = code/TriangulateProcess.h; sourceTree = SOURCE_ROOT; }; - FB4ABA17AF264257BDA4D921 /* RemoveVCProcess.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = RemoveVCProcess.cpp; path = code/RemoveVCProcess.cpp; sourceTree = SOURCE_ROOT; }; - FB55283BC24C4A1CA86C4900 /* PolyTools.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = PolyTools.h; path = code/PolyTools.h; sourceTree = SOURCE_ROOT; }; - FBC2BA7F2269489694BC890D /* FBXProperties.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = FBXProperties.h; path = code/FBXProperties.h; sourceTree = SOURCE_ROOT; }; - FC0801BA1F95494498A089AF /* version.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = version.h; path = include/assimp/version.h; sourceTree = SOURCE_ROOT; }; - FCCB4BB481FB461688FE2F29 /* B3DImporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = B3DImporter.cpp; path = code/B3DImporter.cpp; sourceTree = SOURCE_ROOT; }; - FD84CFD1BD3E4AF4BA622BB8 /* MD2NormalTable.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MD2NormalTable.h; path = code/MD2NormalTable.h; sourceTree = SOURCE_ROOT; }; - FD9BEC6B8A264AB092F98E20 /* SMDLoader.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = SMDLoader.cpp; path = code/SMDLoader.cpp; sourceTree = SOURCE_ROOT; }; - FEEA39CDD7934999B89E2B4D /* MaterialSystem.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = MaterialSystem.h; path = code/MaterialSystem.h; sourceTree = SOURCE_ROOT; }; - FF4E90FB1A3446F095ECC8BD /* Exporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = Exporter.cpp; path = code/Exporter.cpp; sourceTree = SOURCE_ROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 7F79227D1AB43AC3005A8E5D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 0117589D2B25420F831BA4CE /* MS3D */ = { - isa = PBXGroup; - children = ( - A7A990C6FF244DC397B7BA7C /* MS3DLoader.cpp */, - 6347FA5D391D4320B9457D3F /* MS3DLoader.h */, - ); - name = MS3D; - sourceTree = ""; - }; - 0593669570C8417B8FE0C89E /* Obj */ = { - isa = PBXGroup; - children = ( - DE811A81663A492A84E13937 /* ObjExporter.cpp */, - 91EF6411C40946758A06144F /* ObjExporter.h */, - 005DFE3B6FFC4BEBB7055330 /* ObjFileData.h */, - 862131D4574B4CABA5EC957B /* ObjFileImporter.cpp */, - 1FC965B1F11B45F98051C565 /* ObjFileImporter.h */, - 4108529663904025B21E526B /* ObjFileMtlImporter.cpp */, - 180177D50FDA4C10AD629DC2 /* ObjFileMtlImporter.h */, - ACF73EEAB2424213BF7158D5 /* ObjFileParser.cpp */, - 333F4676A92043739F5A9D32 /* ObjFileParser.h */, - 8FE8B4781BB3406EB3452154 /* ObjTools.h */, - ); - name = Obj; - sourceTree = ""; - }; - 09D1759329AB410E92DC273A /* Collada */ = { - isa = PBXGroup; - children = ( - 1C0527629078403F81CFD117 /* ColladaExporter.cpp */, - 638B3F6AC17A435C9B86C86C /* ColladaExporter.h */, - 7C10178C0B7241DD874A0AF3 /* ColladaHelper.h */, - 1A4706D216414D4F8AA72EC9 /* ColladaLoader.cpp */, - 6981B16018CF46CAA54C0BAA /* ColladaLoader.h */, - 420D77ED33554D54AA4D50EF /* ColladaParser.cpp */, - DC0210D3F25F470C86F914B3 /* ColladaParser.h */, - ); - name = Collada; - sourceTree = ""; - }; - 0C22F81E750C429183194A1D /* Assxml */ = { - isa = PBXGroup; - children = ( - B3E8A1BEF8E74F04AE06871B /* AssxmlExporter.cpp */, - F44E3625C31843B0AFA1A744 /* AssxmlExporter.h */, - ); - name = Assxml; - sourceTree = ""; - }; - 1126F68352DC4FD49AC55DD7 /* ConvertUTF */ = { - isa = PBXGroup; - children = ( - 9A0960F123634603B15EEA38 /* ConvertUTF.c */, - 6F88E78E61FC4A01BC30BE85 /* ConvertUTF.h */, - ); - name = ConvertUTF; - sourceTree = ""; - }; - 16ED8F46E8ED44BAB8D7BA1B /* MaterialSystem */ = { - isa = PBXGroup; - children = ( - 7FF72CB6E99E40E19AE0E64C /* MaterialSystem.cpp */, - FEEA39CDD7934999B89E2B4D /* MaterialSystem.h */, - ); - name = MaterialSystem; - sourceTree = ""; - }; - 1AC84A1DBE804A71B13E06C2 /* Clipper */ = { - isa = PBXGroup; - children = ( - 59F8A11A7AED45CC94CEDF28 /* clipper.cpp */, - C490BBF1881240EEA4A96315 /* clipper.hpp */, - ); - name = Clipper; - sourceTree = ""; - }; - 1BF60AA5F4B147508EB44D8C /* Exporter */ = { - isa = PBXGroup; - children = ( - A1A9535EDF9A4FF2B8DABD7D /* AssimpCExport.cpp */, - 23097CBD64E343738B8F22EE /* BlobIOSystem.h */, - FF4E90FB1A3446F095ECC8BD /* Exporter.cpp */, - ); - name = Exporter; - sourceTree = ""; - }; - 2B78DE034A954FAD96DA8432 /* IFC */ = { - isa = PBXGroup; - children = ( - 285D1FDA48EC4DD8933B603E /* IFCBoolean.cpp */, - 2E7FD92FFCF441B0A60FC8B4 /* IFCCurve.cpp */, - 3267EBBA6EEB435F83FF25E4 /* IFCGeometry.cpp */, - D0E9BB0220704C5D93CE7CE9 /* IFCLoader.cpp */, - 2BE34AF1CE0C4767ACE21597 /* IFCLoader.h */, - 0014AE5E87A74AAA9EF0EC4B /* IFCMaterial.cpp */, - 74679D2078FD46ED9AC73355 /* IFCOpenings.cpp */, - 46E9F455A3284DB399986293 /* IFCProfile.cpp */, - 3F5D1E6368384D429BA29D5A /* IFCReaderGen.cpp */, - 6162B57DE81A4E538430056E /* IFCReaderGen.h */, - 59E3D32E3FC7438DB148537F /* IFCUtil.cpp */, - 13BFADA520C04B15AE256CC2 /* IFCUtil.h */, - 47FF3063906E4786ABF0939B /* STEPFile.h */, - E11A39E91576445599DF2AC4 /* STEPFileEncoding.cpp */, - D56A4C70F65D4E07BD792D2C /* STEPFileEncoding.h */, - CDE3ECA98173418A9F997992 /* STEPFileReader.cpp */, - A3D3024C3A59423487A125C8 /* STEPFileReader.h */, - ); - name = IFC; - sourceTree = ""; - }; - 2CA4999D40FC406B97E1FFD3 /* Compiler */ = { - isa = PBXGroup; - children = ( - FAC67CC462484F92A2CBD7D3 /* poppack1.h */, - 278FB5C8BD814F2DAE04A1C7 /* pstdint.h */, - E81BAB0ED0854DDFA62CB956 /* pushpack1.h */, - ); - name = Compiler; - sourceTree = ""; - }; - 2DC7AE369B84444B9649035D /* assimp */ = { - isa = PBXGroup; - children = ( - 2DC891CC1D2CFA44001E0B0E /* C4D */, - 2DC891C51D2CFA01001E0B0E /* 3MF */, - DB181885BFCC44F594A1FA01 /* Source Files */, - 628C9A9A9FA640B9AA1DAC09 /* Common */, - 874C614E5BEB41419F0EEE1C /* Logging */, - 1BF60AA5F4B147508EB44D8C /* Exporter */, - D3013C8FC8034BC6859BC020 /* PostProcessing */, - 9AC9FD0CD777436C9C7291FF /* 3DS */, - 98D9A21F310D47DD8F390780 /* AC */, - CB3420FADCED418CACDBB584 /* ASE */, - A7F45F8E82C445EBA7D67C36 /* Assbin */, - 0C22F81E750C429183194A1D /* Assxml */, - A1E04517F0D440CDB46985A7 /* B3D */, - 91C8DA33C37E491BBAD264C5 /* BVH */, - 09D1759329AB410E92DC273A /* Collada */, - 5F3147F7FF1044D49A824DBC /* DXF */, - DD5B35196B184EFB820D1FBB /* CSM */, - AFB7F8541C882F6E00D7B6E9 /* glTF */, - 723B9CB1C871444FBB302576 /* HMP */, - 6CB3C1AECE8A4745861D913D /* Irr */, - 873AA0EB80814B0A9461BB7E /* LWO */, - 32F48CB0DF784B6BA63A5025 /* LWS */, - F9261D592F00437EAFC663B5 /* MD2 */, - 7D3FF9CAC50E41F0B59B9758 /* MD3 */, - 97326C49E0E34D43AE80F0FF /* MD5 */, - CB981D90CEF4472191978170 /* MDC */, - EF7D37EB84AF45FC8BF47E7F /* MDL */, - 16ED8F46E8ED44BAB8D7BA1B /* MaterialSystem */, - CF7D1A0DBB134AC4BCFE3C3F /* NFF */, - 8438F0F891674542AF8F2302 /* OFFFormat */, - 0593669570C8417B8FE0C89E /* Obj */, - 6D12DDA749D645C68DBED62E /* Ogre */, - 7FBE9FE41B65ABEF00D2115E /* OpenGEX */, - 462ED039D874460E97B08346 /* Ply */, - F0273EDFDBD34EDAA6678613 /* Q3D */, - C3D412701D614559B698CED1 /* Q3BSP */, - 9A8E68D1ECFC49B9BB435F1C /* Raw */, - AFB7F8601C88301600D7B6E9 /* SIB */, - 8C2B1B7516DD4C4798F5048F /* SMD */, - 2E29D94CA6DA405EB4AF90E0 /* STL */, - 3A5EB041B5CD4F98802B2540 /* Terragen */, - 8565C30231D64E81BB2B4ECD /* Unreal */, - 96A36CD42ADB4BBBB54004E1 /* XFile */, - 6E21649785DD4DB08D9A505D /* Extra */, - 0117589D2B25420F831BA4CE /* MS3D */, - DAFF6641A88441AFBE8B99B1 /* COB */, - 71D6A260C79746D3B50849D2 /* BLENDER */, - 71199EE27B264D74B9D0A1C2 /* NDO */, - 2B78DE034A954FAD96DA8432 /* IFC */, - 2FC31A6272B94FB681FB8087 /* XGL */, - 7F21D60E8DCD4C65923BD76C /* FBX */, - 6B385D1E46704FB7BABB2D90 /* IrrXML */, - 1126F68352DC4FD49AC55DD7 /* ConvertUTF */, - 8B032622745B45FDB154A53C /* unzip */, - F61A479614764D11AC3311A8 /* Poly2Tri */, - 1AC84A1DBE804A71B13E06C2 /* Clipper */, - 3B11CB13DD484F938D3E3792 /* Boost */, - FCFE51BCE7384933A972EDEE /* Header Files */, - 2CA4999D40FC406B97E1FFD3 /* Compiler */, - ); - name = assimp; - sourceTree = ""; - }; - 2DC891C51D2CFA01001E0B0E /* 3MF */ = { - isa = PBXGroup; - children = ( - 2DC891C61D2CFA22001E0B0E /* D3MFImporter.cpp */, - 2DC891C71D2CFA22001E0B0E /* D3MFImporter.h */, - 2DC891C81D2CFA22001E0B0E /* D3MFOpcPackage.cpp */, - 2DC891C91D2CFA22001E0B0E /* D3MFOpcPackage.h */, - ); - name = 3MF; - sourceTree = ""; - }; - 2DC891CC1D2CFA44001E0B0E /* C4D */ = { - isa = PBXGroup; - children = ( - 2DC891CE1D2CFA75001E0B0E /* C4DImporter.cpp */, - 2DC891CF1D2CFA75001E0B0E /* C4DImporter.h */, - ); - name = C4D; - sourceTree = ""; - }; - 2E29D94CA6DA405EB4AF90E0 /* STL */ = { - isa = PBXGroup; - children = ( - 89D2D359BD854D8AA60CB720 /* STLExporter.cpp */, - 88ADA502481B403191BD35F0 /* STLExporter.h */, - 4D2F1605B9484B08BB33402D /* STLLoader.cpp */, - C6D3C3E2BA2F49F2B17E7580 /* STLLoader.h */, - ); - name = STL; - sourceTree = ""; - }; - 2FC31A6272B94FB681FB8087 /* XGL */ = { - isa = PBXGroup; - children = ( - 8E395349546A4FDF843E6963 /* XGLLoader.cpp */, - 501B18C2B590455D8A3C3E78 /* XGLLoader.h */, - ); - name = XGL; - sourceTree = ""; - }; - 32F48CB0DF784B6BA63A5025 /* LWS */ = { - isa = PBXGroup; - children = ( - AFF41974881F466A9561BE4B /* LWSLoader.cpp */, - 68703F99581F49CB9E2B9F37 /* LWSLoader.h */, - ); - name = LWS; - sourceTree = ""; - }; - 3A5EB041B5CD4F98802B2540 /* Terragen */ = { - isa = PBXGroup; - children = ( - 4866DA5A7BFD49F79B61CBF8 /* TerragenLoader.cpp */, - 815702BED5644DD5B242F347 /* TerragenLoader.h */, - ); - name = Terragen; - sourceTree = ""; - }; - 3B11CB13DD484F938D3E3792 /* Boost */ = { - isa = PBXGroup; - children = ( - AAD3EA9B0BB84A788FCCA83E /* foreach.hpp */, - 1DC56C794E434BA28E5CCC36 /* format.hpp */, - 96A02CBA1AE642BD9519719D /* make_shared.hpp */, - 967D69AC1A344D4E988F0B2C /* common_factor_rt.hpp */, - C2C9EAC9B5B74AC397B070E8 /* scoped_array.hpp */, - 7644CE6B26D740258577EE9D /* scoped_ptr.hpp */, - 8C9AEFFFF3B948148D32D76F /* shared_array.hpp */, - 3E84DEFC1E0646AD82F79998 /* shared_ptr.hpp */, - DFF8AF202CAA40E69D1A2BD0 /* static_assert.hpp */, - A7CEBC6894424B888326CAB2 /* tuple.hpp */, - ); - name = Boost; - sourceTree = ""; - }; - 462ED039D874460E97B08346 /* Ply */ = { - isa = PBXGroup; - children = ( - E51043448F1744FFA78526D5 /* PlyExporter.cpp */, - CC5D5CA1789448E9869B9669 /* PlyExporter.h */, - 409C98EE093C499B8A574CA9 /* PlyLoader.cpp */, - 91D49B3C51684882A01EA492 /* PlyLoader.h */, - 2C4D504725E540109530E254 /* PlyParser.cpp */, - 45F6A2B351AB4B749E55B299 /* PlyParser.h */, - ); - name = Ply; - sourceTree = ""; - }; - 5F3147F7FF1044D49A824DBC /* DXF */ = { - isa = PBXGroup; - children = ( - B6982D8069A145E5B9F97684 /* DXFHelper.h */, - 466D6B9A7CCD402D9AA87071 /* DXFLoader.cpp */, - 7BDF90B124F74A39A5EB3B02 /* DXFLoader.h */, - ); - name = DXF; - sourceTree = ""; - }; - 628C9A9A9FA640B9AA1DAC09 /* Common */ = { - isa = PBXGroup; - children = ( - 2DC891CD1D2CFA75001E0B0E /* ByteSwapper.h */, - A58410FEAA884A2D8D73ACCE /* BaseImporter.cpp */, - 32170F499DAC4E4595AF6D6B /* BaseImporter.h */, - FAB6BC13FCFE40F5801D0972 /* BaseProcess.cpp */, - F468200042534D7CA2C9D891 /* BaseProcess.h */, - 10238FBD7A9D401A82D667CB /* Bitmap.cpp */, - 49AFF879142C4BA4865843DC /* Bitmap.h */, - 339E56B5FD264481BBF21835 /* CInterfaceIOWrapper.h */, - F9FEF4D69EFC4605A4F752E5 /* DefaultIOStream.cpp */, - 32CC68350B7640ACA7C83DDA /* DefaultIOStream.h */, - 1D502654EF864101A2DA9476 /* DefaultIOSystem.cpp */, - D9AB66BD27E246A18091626F /* DefaultIOSystem.h */, - B7192C50B16142398B7CD221 /* DefaultProgressHandler.h */, - 3ACFF3FC39C74C4A966C0FEA /* GenericProperty.h */, - 9C5E3F9248B64C7EBF20EC27 /* Hash.h */, - 6AC645CEB6F74AE5A62DF68B /* IFF.h */, - 9472EFB6831740DD91471337 /* Importer.cpp */, - F81AE18E4AA94F9597FCB040 /* Importer.h */, - D029CE902F8045B0B3AFFDDB /* ImporterRegistry.cpp */, - 680FBD79376A41B690C405B8 /* LineSplitter.h */, - D82B5BA87B184532BE74D24F /* LogAux.h */, - 7DC4B0B5E57F4F4892CC823E /* MemoryIOWrapper.h */, - 0C1B00249A554394A4F9CF2A /* ParsingUtils.h */, - E663847651834244834CB9F5 /* PostStepRegistry.cpp */, - 5C1EA03E3AE24AA5A778B7F1 /* Profiler.h */, - 6A86069DEEDC42B88634F78D /* RemoveComments.cpp */, - B4086213AE40445F817FA840 /* RemoveComments.h */, - 52836A0629E24447B924750A /* SGSpatialSort.cpp */, - 8299401C3E4A43A18E887DC1 /* SGSpatialSort.h */, - 73A3D87FF2C04C3BA3684F54 /* SceneCombiner.cpp */, - 8476FEE874C1404B9B4B9617 /* SceneCombiner.h */, - 1775DE08FC8647EB896A0FB3 /* ScenePreprocessor.cpp */, - 4FE1E4726B144AD1B922A1A0 /* ScenePreprocessor.h */, - 97914BDA4AA34081855BF16C /* ScenePrivate.h */, - 9B2827B3E64147E08A5AD334 /* SkeletonMeshBuilder.cpp */, - 45BC2EB74251493CBBFAEB5D /* SkeletonMeshBuilder.h */, - 2DCF6F156A3A4B4C807E5368 /* SmoothingGroups.h */, - 8EEC6646FC044D1E9658A590 /* SpatialSort.cpp */, - 957FBC18FED2484F83308E36 /* SpatialSort.h */, - 99A4349D505F4CC593F48CF6 /* SplitByBoneCountProcess.cpp */, - B211101B342C414A9E43B7BC /* SplitByBoneCountProcess.h */, - C18C5023460E4D17B8C922D7 /* StandardShapes.cpp */, - 296407DE471C4F298742FB59 /* StandardShapes.h */, - ED20428B31DF46C6A9D65322 /* StreamReader.h */, - 7E8BA0D338C9433587BC6C35 /* StreamWriter.h */, - BDD30C77BB68497EA3B7F2F7 /* StringComparison.h */, - 4BBDEB63CFEB4F2EAA95358D /* Subdivision.cpp */, - A72115ED828F4069A427B460 /* Subdivision.h */, - 6F65B6129F774AEDB8DC845A /* TargetAnimation.cpp */, - A7733823362B4A389102D177 /* TargetAnimation.h */, - E01801CB159D47928B3D96B5 /* TinyFormatter.h */, - 1533BE4C09F1430C8BF4D248 /* Vertex.h */, - 0AAF26EBF0A64ABDB840BA64 /* VertexTriangleAdjacency.cpp */, - F4AE5F74C20B400EA688B5ED /* VertexTriangleAdjacency.h */, - DC67FF8B4313494F8C03D840 /* XMLTools.h */, - 1AF1EE8EFE594A40ACE03D19 /* fast_atof.h */, - 262DFE65C6D34442AA79D15A /* qnan.h */, - ); - name = Common; - sourceTree = ""; - }; - 6B385D1E46704FB7BABB2D90 /* IrrXML */ = { - isa = PBXGroup; - children = ( - D1073FF20359469D921C9316 /* irrXMLWrapper.h */, - D40F70AC841D4B788B5C696B /* CXMLReaderImpl.h */, - 02587469A85540EE875B04B5 /* heapsort.h */, - 49FE5C30FC854A3EBD0E9C19 /* irrArray.h */, - 5D4E64EABD9548A59E9637AF /* irrString.h */, - 4936396409984881858E7B15 /* irrTypes.h */, - 64C6BACDA5DD4139AA26EE81 /* irrXML.cpp */, - 12E167EBA81B4CD3A241D7AF /* irrXML.h */, - ); - name = IrrXML; - sourceTree = ""; - }; - 6CB3C1AECE8A4745861D913D /* Irr */ = { - isa = PBXGroup; - children = ( - 97DFA90F9D0C4B999C150B10 /* IRRLoader.cpp */, - 1011FC45108745A7BBA98904 /* IRRLoader.h */, - DD7FFD53046F4AEB898C0832 /* IRRMeshLoader.cpp */, - 670FE6DD7EDF421488F2F97F /* IRRMeshLoader.h */, - CC54A231FF6B4B0CABCFD167 /* IRRShared.cpp */, - B04FE3598E344EC09B59CA2F /* IRRShared.h */, - ); - name = Irr; - sourceTree = ""; - }; - 6D12DDA749D645C68DBED62E /* Ogre */ = { - isa = PBXGroup; - children = ( - 56ADEC4899C047F2839AD791 /* OgreBinarySerializer.cpp */, - 916456789C75419DB1436FAD /* OgreBinarySerializer.h */, - 923283A9791E4B4E86D623FC /* OgreImporter.cpp */, - 71F65BF6936E4E97A5933EF9 /* OgreImporter.h */, - F75457C6D026451B9267B65E /* OgreMaterial.cpp */, - 6F49958B5CCF423681133515 /* OgreParsingUtils.h */, - 79A49EFE23E34E1CBA2E4377 /* OgreStructs.cpp */, - F8B1133805564E18B32FFA83 /* OgreStructs.h */, - EF9F805A4BA4428CA98C9DE5 /* OgreXmlSerializer.cpp */, - AC699876B6364EC1878CBA44 /* OgreXmlSerializer.h */, - ); - name = Ogre; - sourceTree = ""; - }; - 6E21649785DD4DB08D9A505D /* Extra */ = { - isa = PBXGroup; - children = ( - 00EB692107B84590B0560BFB /* MD4FileData.h */, - ); - name = Extra; - sourceTree = ""; - }; - 71199EE27B264D74B9D0A1C2 /* NDO */ = { - isa = PBXGroup; - children = ( - B4F1B5789CA540C78FB9219D /* NDOLoader.cpp */, - 37A3E0E2BB484DD8B9FCCA5E /* NDOLoader.h */, - ); - name = NDO; - sourceTree = ""; - }; - 71D6A260C79746D3B50849D2 /* BLENDER */ = { - isa = PBXGroup; - children = ( - 603AFA882AFF49AEAC2C8FA2 /* BlenderBMesh.cpp */, - 4568875B66584E12AA1538C7 /* BlenderBMesh.h */, - B65258E349704523BC43904D /* BlenderDNA.cpp */, - 72832410F47C44E3BAE709C2 /* BlenderDNA.h */, - 43899EB0B0704A9DB8F0C54F /* BlenderDNA.inl */, - 7CAF8A3096E04CB983B53CC1 /* BlenderIntermediate.h */, - 906F71D342544BF381E1318E /* BlenderLoader.cpp */, - 157C3CC81232428FA535E05F /* BlenderLoader.h */, - 3106D75C13874F5AB3EBBFE7 /* BlenderModifier.cpp */, - F5720C42345840CB9FEA5A40 /* BlenderModifier.h */, - DE0D259917354C80BE1CC791 /* BlenderScene.cpp */, - B522B83A39CA461CBCABE25A /* BlenderScene.h */, - 76D801D898C4443D8240EDB7 /* BlenderSceneGen.h */, - 12C5DD7A285042EDB1897FAE /* BlenderTessellator.cpp */, - 59A1859480754E90B958CA85 /* BlenderTessellator.h */, - ); - name = BLENDER; - sourceTree = ""; - }; - 723B9CB1C871444FBB302576 /* HMP */ = { - isa = PBXGroup; - children = ( - 71EAFDE1910B4A54AAAF2101 /* HMPFileData.h */, - 43ABFF591F374920A5E18A24 /* HMPLoader.cpp */, - 5631CE86F56F458EA0E2415F /* HMPLoader.h */, - 7C63156710964DEDAC0929BD /* HalfLifeFileData.h */, - ); - name = HMP; - sourceTree = ""; - }; - 7D3FF9CAC50E41F0B59B9758 /* MD3 */ = { - isa = PBXGroup; - children = ( - 08E8379F20984AD59515AD95 /* MD3FileData.h */, - 563FBACCFD774BDEA4AEAC10 /* MD3Loader.cpp */, - 1CBCEE37D89145F19F23F036 /* MD3Loader.h */, - ); - name = MD3; - sourceTree = ""; - }; - 7F21D60E8DCD4C65923BD76C /* FBX */ = { - isa = PBXGroup; - children = ( - EAD34F1AA6664B6B935C9421 /* FBXAnimation.cpp */, - 1108AC28566B4D2B9F27C691 /* FBXBinaryTokenizer.cpp */, - 26BF681530B04B73961997CB /* FBXCompileConfig.h */, - A7A56A688A3845768410F500 /* FBXConverter.cpp */, - A7A86F81858F4D928A568E17 /* FBXConverter.h */, - 9855496CEA774F4FA7FBB862 /* FBXDeformer.cpp */, - F22D5BA425444A028DA42BEA /* FBXDocument.cpp */, - 0EF256EC06E345EB930772EC /* FBXDocument.h */, - BB38E7E7661842448F008372 /* FBXDocumentUtil.cpp */, - C17C5037C995420C8D259C0C /* FBXImportSettings.h */, - B4C688FA08F44716855CDD3C /* FBXImporter.cpp */, - AA4946AEDB9F4F22873C4C4F /* FBXImporter.h */, - EE6163EB035149A6B8139DB8 /* FBXMaterial.cpp */, - 42E110B9E6924AF9B55AE65A /* FBXMeshGeometry.cpp */, - 1A61BDC559CE4186B03C0396 /* FBXModel.cpp */, - 33B70115CA54405F895BA471 /* FBXNodeAttribute.cpp */, - 5F373DF3B03B4B848B78EAD2 /* FBXParser.cpp */, - F8AC3A243B9C47D6B31348BA /* FBXParser.h */, - 9D203F78B24C4D7E8E2084A3 /* FBXProperties.cpp */, - FBC2BA7F2269489694BC890D /* FBXProperties.h */, - CF07D05DC86F4C98BC42FDCF /* FBXTokenizer.cpp */, - E7E85BF696E74CFAAEBF895C /* FBXTokenizer.h */, - E6332CD992D447CA910DA456 /* FBXUtil.cpp */, - 89473420F7E448A7BE71FCBA /* FBXUtil.h */, - ); - name = FBX; - sourceTree = ""; - }; - 7F392D931AB2C7C200D952EB /* Frameworks */ = { - isa = PBXGroup; - children = ( - 7F29EF981AB26C4900E9D380 /* libz.1.dylib */, - 7F392D921AB2C7BB00D952EB /* libc++.dylib */, - ); - name = Frameworks; - sourceTree = ""; - }; - 7FBE9FE41B65ABEF00D2115E /* OpenGEX */ = { - isa = PBXGroup; - children = ( - 7FBE9FE51B65AC1200D2115E /* OpenGEXExporter.cpp */, - 7FBE9FE61B65AC1200D2115E /* OpenGEXExporter.h */, - 7FBE9FE71B65AC1200D2115E /* OpenGEXImporter.cpp */, - 7FBE9FE81B65AC1200D2115E /* OpenGEXImporter.h */, - 7FBE9FE91B65AC1200D2115E /* OpenGEXStructs.h */, - 7FBEA0051B65AF8900D2115E /* openddlparser */, - ); - name = OpenGEX; - sourceTree = ""; - }; - 7FBEA0051B65AF8900D2115E /* openddlparser */ = { - isa = PBXGroup; - children = ( - AFB7F8501C882F1A00D7B6E9 /* OpenDDLCommon.cpp */, - AFB7F8511C882F1A00D7B6E9 /* OpenDDLExport.cpp */, - 7FBEA0081B65AF9200D2115E /* OpenDDLCommon.h */, - 7FBEA00B1B65AF9200D2115E /* OpenDDLParserUtils.h */, - 7FBEA0071B65AF9200D2115E /* DDLNode.h */, - 7F7A93A51B65D0110094C4DA /* DDLNode.cpp */, - 7FBEA00A1B65AF9200D2115E /* OpenDDLParser.h */, - 7F7A93A61B65D0110094C4DA /* OpenDDLParser.cpp */, - 7FBEA00D1B65AF9200D2115E /* Value.h */, - 7F7A93A71B65D0110094C4DA /* Value.cpp */, - ); - name = openddlparser; - sourceTree = ""; - }; - 8438F0F891674542AF8F2302 /* OFFFormat */ = { - isa = PBXGroup; - children = ( - EFD557FE2C3A46D78F070655 /* OFFLoader.cpp */, - BF94F50C216B45388CDEC1EF /* OFFLoader.h */, - ); - name = OFFFormat; - sourceTree = ""; - }; - 8565C30231D64E81BB2B4ECD /* Unreal */ = { - isa = PBXGroup; - children = ( - 3B8FD96D46314ACD8F157AC3 /* UnrealLoader.cpp */, - 27F2019E621B4CDA94DD5270 /* UnrealLoader.h */, - ); - name = Unreal; - sourceTree = ""; - }; - 873AA0EB80814B0A9461BB7E /* LWO */ = { - isa = PBXGroup; - children = ( - 680C392FFE0B4CC5ABC7CA64 /* LWOAnimation.cpp */, - A14347E954E8413CAF1455EA /* LWOAnimation.h */, - D629F6BF53864979B7619067 /* LWOBLoader.cpp */, - AFA8B6DE5B3A4E52A85041C9 /* LWOFileData.h */, - 5A4E05386C094B809A315A07 /* LWOLoader.cpp */, - 72F2DF0B93CF4D3ABAD7513D /* LWOLoader.h */, - 1ED21FC57A384CE6B4F53C0C /* LWOMaterial.cpp */, - ); - name = LWO; - sourceTree = ""; - }; - 874C614E5BEB41419F0EEE1C /* Logging */ = { - isa = PBXGroup; - children = ( - A9E9EB834E09420197C3FB8C /* DefaultLogger.cpp */, - 1520A11AA6E54812939B1FBB /* FileLogStream.h */, - 4CBC1122A79D4F6C94E36CE3 /* StdOStreamLogStream.h */, - F4BA09C943DD49E184316D97 /* Win32DebugLogStream.h */, - D958B0B445E64F4BA9145D82 /* DefaultLogger.hpp */, - 657B9A15EE7A4B7BA519A969 /* LogStream.hpp */, - 56CE07D64D114C4BAB6D9F08 /* Logger.hpp */, - 8D977E197CA4477AB9F3278C /* NullLogger.hpp */, - ); - name = Logging; - sourceTree = ""; - }; - 8B032622745B45FDB154A53C /* unzip */ = { - isa = PBXGroup; - children = ( - A4CBF9157F01460ABEDEBF28 /* crypt.h */, - AF75E6049338489BB256D295 /* ioapi.c */, - 72F637AC7D9E4FBFBB9201CE /* ioapi.h */, - 973D4231A4AA4925B019FEEE /* unzip.c */, - 9293C5A353F9497A850E05D5 /* unzip.h */, - ); - name = unzip; - sourceTree = ""; - }; - 8C2B1B7516DD4C4798F5048F /* SMD */ = { - isa = PBXGroup; - children = ( - FD9BEC6B8A264AB092F98E20 /* SMDLoader.cpp */, - C582480917FF4EB09C164D70 /* SMDLoader.h */, - ); - name = SMD; - sourceTree = ""; - }; - 91C8DA33C37E491BBAD264C5 /* BVH */ = { - isa = PBXGroup; - children = ( - C80B9A3AF4204AE08AA50BAE /* BVHLoader.cpp */, - 45E342A1499E4F03ADD49028 /* BVHLoader.h */, - ); - name = BVH; - sourceTree = ""; - }; - 96A36CD42ADB4BBBB54004E1 /* XFile */ = { - isa = PBXGroup; - children = ( - 435DC362E63D4CCBA68656D3 /* XFileExporter.cpp */, - A257229A058041389981CFC1 /* XFileExporter.h */, - 8F4261792A60481DA04E6E1A /* XFileHelper.h */, - 06DB494DCE4D47FDA00E8B35 /* XFileImporter.cpp */, - 53537D08E9B44A25B43B697B /* XFileImporter.h */, - 74C02A113B804568A7E39CBC /* XFileParser.cpp */, - 3551D90CCED1454A8B912066 /* XFileParser.h */, - ); - name = XFile; - sourceTree = ""; - }; - 97326C49E0E34D43AE80F0FF /* MD5 */ = { - isa = PBXGroup; - children = ( - A277DBC1EFB944F995659A20 /* MD5Loader.cpp */, - 6BAB32C8E06E43689FC5E7EA /* MD5Loader.h */, - 0BC5FD00572F4C58B267A0EC /* MD5Parser.cpp */, - 43FC808D2F4745ACB06A9D33 /* MD5Parser.h */, - ); - name = MD5; - sourceTree = ""; - }; - 98D9A21F310D47DD8F390780 /* AC */ = { - isa = PBXGroup; - children = ( - F1076BAC69DB4935A93045A8 /* ACLoader.cpp */, - 4DABF3CB245F4246B0184513 /* ACLoader.h */, - ); - name = AC; - sourceTree = ""; - }; - 9A8E68D1ECFC49B9BB435F1C /* Raw */ = { - isa = PBXGroup; - children = ( - 1D4A669762194B9D9A26DD20 /* RawLoader.cpp */, - EAD338BE19AE4C2E897B38B6 /* RawLoader.h */, - ); - name = Raw; - sourceTree = ""; - }; - 9AC9FD0CD777436C9C7291FF /* 3DS */ = { - isa = PBXGroup; - children = ( - 15221A74FC9C4B2AAA7306E3 /* 3DSConverter.cpp */, - ECCBBF2D75A44335AB93C84A /* 3DSExporter.cpp */, - 0B519CCAB4B241E59C567077 /* 3DSExporter.h */, - CB042D863BD447FFB117AE34 /* 3DSHelper.h */, - 02E9476D129940BF84DE6682 /* 3DSLoader.cpp */, - A06CBE89CFAB48E786F7A5C0 /* 3DSLoader.h */, - ); - name = 3DS; - sourceTree = ""; - }; - A1E04517F0D440CDB46985A7 /* B3D */ = { - isa = PBXGroup; - children = ( - FCCB4BB481FB461688FE2F29 /* B3DImporter.cpp */, - 42E68041B1C442E3B49FC304 /* B3DImporter.h */, - ); - name = B3D; - sourceTree = ""; - }; - A7F45F8E82C445EBA7D67C36 /* Assbin */ = { - isa = PBXGroup; - children = ( - 6389F68312384CFD847B1D13 /* AssbinExporter.cpp */, - 6CC21F1D0E4140FE923E4EE6 /* AssbinExporter.h */, - D9FEEF58B24548F782A5D53C /* AssbinLoader.cpp */, - 0CCD090F58EB40ACBBDBBDEE /* AssbinLoader.h */, - ); - name = Assbin; - sourceTree = ""; - }; - AF05BC16567A496BB5DCB2F0 /* Products */ = { - isa = PBXGroup; - children = ( - 7F7922801AB43AC3005A8E5D /* libassimp.a */, - ); - name = Products; - sourceTree = ""; - }; - AFB7F8541C882F6E00D7B6E9 /* glTF */ = { - isa = PBXGroup; - children = ( - AFB7F8551C882F8200D7B6E9 /* glTFAsset.h */, - AFB7F8561C882F8200D7B6E9 /* glTFAsset.inl */, - AFB7F8571C882F8200D7B6E9 /* glTFAssetWriter.h */, - AFB7F8581C882F8200D7B6E9 /* glTFAssetWriter.inl */, - AFB7F8591C882F8200D7B6E9 /* glTFExporter.cpp */, - AFB7F85A1C882F8200D7B6E9 /* glTFExporter.h */, - AFB7F85B1C882F8200D7B6E9 /* glTFImporter.cpp */, - AFB7F85C1C882F8200D7B6E9 /* glTFImporter.h */, - ); - name = glTF; - sourceTree = ""; - }; - AFB7F8601C88301600D7B6E9 /* SIB */ = { - isa = PBXGroup; - children = ( - AFB7F8611C88302500D7B6E9 /* SIBImporter.cpp */, - AFB7F8621C88302500D7B6E9 /* SIBImporter.h */, - ); - name = SIB; - sourceTree = ""; - }; - BCC52F1D5AF74E54A2D69524 = { - isa = PBXGroup; - children = ( - 2DC7AE369B84444B9649035D /* assimp */, - 7F392D931AB2C7C200D952EB /* Frameworks */, - AF05BC16567A496BB5DCB2F0 /* Products */, - ); - sourceTree = ""; - }; - C3D412701D614559B698CED1 /* Q3BSP */ = { - isa = PBXGroup; - children = ( - 6E82409E9D274D278971F3B0 /* Q3BSPFileData.h */, - A88D56FBEA084A3EA9A0ECB3 /* Q3BSPFileImporter.cpp */, - F898EEA0D9E64425A790587D /* Q3BSPFileImporter.h */, - 4A60A00727F04E049CF3AE33 /* Q3BSPFileParser.cpp */, - 5C15EEB253204E8A8E0D0E38 /* Q3BSPFileParser.h */, - 43C75175738C4119871E8BB0 /* Q3BSPZipArchive.cpp */, - 6454A961FAF44B3E9086D2F8 /* Q3BSPZipArchive.h */, - ); - name = Q3BSP; - sourceTree = ""; - }; - CB3420FADCED418CACDBB584 /* ASE */ = { - isa = PBXGroup; - children = ( - 7C477FA4D89548F1BCEDC5A0 /* ASELoader.cpp */, - 9A61AF384D4D45778698DD7D /* ASELoader.h */, - 929F59CCA32549EC884A5033 /* ASEParser.cpp */, - 27605E75944D41B0B98260A3 /* ASEParser.h */, - ); - name = ASE; - sourceTree = ""; - }; - CB981D90CEF4472191978170 /* MDC */ = { - isa = PBXGroup; - children = ( - 95641498F25A4F6FABBC03A4 /* MDCFileData.h */, - 35E4944C052A4C91BF31DE5F /* MDCLoader.cpp */, - 621E96E95F60421EB6B4525C /* MDCLoader.h */, - DD4E4641B0FE4369BF3775C3 /* MDCNormalTable.h */, - ); - name = MDC; - sourceTree = ""; - }; - CF7D1A0DBB134AC4BCFE3C3F /* NFF */ = { - isa = PBXGroup; - children = ( - 0D6E8E292F594A2DAFF53564 /* NFFLoader.cpp */, - D2869C6AD4814588A45E8F81 /* NFFLoader.h */, - ); - name = NFF; - sourceTree = ""; - }; - D3013C8FC8034BC6859BC020 /* PostProcessing */ = { - isa = PBXGroup; - children = ( - 90DD6CA40A5E41458E11FF3E /* CalcTangentsProcess.cpp */, - BBEE1CF81183473C8492FC03 /* CalcTangentsProcess.h */, - 2ABBB4561E72413EB40702C3 /* ComputeUVMappingProcess.cpp */, - B40FE1BF9D8E411493BBDE0C /* ComputeUVMappingProcess.h */, - 92D8734FFF9742B39A371B70 /* ConvertToLHProcess.cpp */, - 35A9B50143214C63A956FA27 /* ConvertToLHProcess.h */, - 6E20FCC571F144DDBD831CCB /* DeboneProcess.cpp */, - 4770D6DCA1854B4F9B85546A /* DeboneProcess.h */, - BABB7734139C452A9DDEE797 /* FindDegenerates.cpp */, - 4B571231CE2B464BBF1E853F /* FindDegenerates.h */, - C9A101D1311C4E77AAEDD94C /* FindInstancesProcess.cpp */, - 28A938B21261484998F68F4A /* FindInstancesProcess.h */, - 9B4221AA0AD2418FAA45EB64 /* FindInvalidDataProcess.cpp */, - 91FF8B1DCC0644008AE34A04 /* FindInvalidDataProcess.h */, - C54518F708BA4A328D5D7325 /* FixNormalsStep.cpp */, - 8343910BBD464297932B3CE0 /* FixNormalsStep.h */, - 982AE676D2364350B1FBD095 /* GenFaceNormalsProcess.cpp */, - 0FBF026F27F340AD9FABAF02 /* GenFaceNormalsProcess.h */, - A0AED12A1A6D4635A8CFB65A /* GenVertexNormalsProcess.cpp */, - 2AC344FBB0C34D49800F4B8A /* GenVertexNormalsProcess.h */, - 70D5FDFA995E45E6A3E8FD37 /* ImproveCacheLocality.cpp */, - 5FBE72DCC6AC485ABCF89B8C /* ImproveCacheLocality.h */, - B36DA471B9E142FC9425EC45 /* JoinVerticesProcess.cpp */, - 0A941971CBF04E8D900E9799 /* JoinVerticesProcess.h */, - E065DB38B0284196A9283CA3 /* LimitBoneWeightsProcess.cpp */, - DDDE82BDF4F94E0EA35649A4 /* LimitBoneWeightsProcess.h */, - 21B797DAB0E0427C9339AE0F /* MakeVerboseFormat.cpp */, - 0AA53AD6095A4D1088431EED /* MakeVerboseFormat.h */, - AAB9AE5328F843F5A8A3E85C /* OptimizeGraph.cpp */, - 926E8B7924144B349A88023D /* OptimizeGraph.h */, - 2ACC87E846AE4E4A86E1AEF4 /* OptimizeMeshes.cpp */, - DD3D18BC2E58447D9879CB00 /* OptimizeMeshes.h */, - FB55283BC24C4A1CA86C4900 /* PolyTools.h */, - 023C115651B54570AA2040DB /* PretransformVertices.cpp */, - 101172E4EF2E43D988B6B571 /* PretransformVertices.h */, - 890E32C714444692AA016AE5 /* ProcessHelper.cpp */, - A436C47FBF904FECB4A58462 /* ProcessHelper.h */, - ADACEBC4973F4FC0A6FEC68A /* RemoveRedundantMaterials.cpp */, - AD969BA482564C7FAA372F7C /* RemoveRedundantMaterials.h */, - FB4ABA17AF264257BDA4D921 /* RemoveVCProcess.cpp */, - ABDA70358E34432A8A4637F4 /* RemoveVCProcess.h */, - BD9A81E0E27E44718609615B /* SortByPTypeProcess.cpp */, - 16437E08A946431EB2EFA3E0 /* SortByPTypeProcess.h */, - A43641DC9C1B4B578BC40476 /* SplitLargeMeshes.cpp */, - D2EEB62ECBF749AA89146C66 /* SplitLargeMeshes.h */, - DF76D04D95E649BCBC15E64F /* TextureTransform.cpp */, - C5C3ED2BE50D4684994BD533 /* TextureTransform.h */, - 1A0AC303D18A48A69AB3BC03 /* TriangulateProcess.cpp */, - FB2510D46F504365A03EE8A8 /* TriangulateProcess.h */, - 0EF4F7A237F648C2809A8F31 /* ValidateDataStructure.cpp */, - 725DAD1CE04C4F64BDAB7037 /* ValidateDataStructure.h */, - ); - name = PostProcessing; - sourceTree = ""; - }; - DAFF6641A88441AFBE8B99B1 /* COB */ = { - isa = PBXGroup; - children = ( - C84DA0E6CE13493D833BA1C1 /* COBLoader.cpp */, - 445F70426FCC42F088405E86 /* COBLoader.h */, - 9E0572B45F1F4605BD5C919D /* COBScene.h */, - ); - name = COB; - sourceTree = ""; - }; - DB181885BFCC44F594A1FA01 /* Source Files */ = { - isa = PBXGroup; - children = ( - 705D30EE141A48F292783F0E /* Assimp.cpp */, - 7FBEA0111B65B11800D2115E /* Version.cpp */, - ); - name = "Source Files"; - sourceTree = ""; - }; - DD5B35196B184EFB820D1FBB /* CSM */ = { - isa = PBXGroup; - children = ( - 77908990BEF04D0881E8AE80 /* CSMLoader.cpp */, - 1BC6B0FE92DD4F38803BC17B /* CSMLoader.h */, - ); - name = CSM; - sourceTree = ""; - }; - EF7D37EB84AF45FC8BF47E7F /* MDL */ = { - isa = PBXGroup; - children = ( - F1A7BD0B5CAE48699FCAEBD1 /* MDLDefaultColorMap.h */, - D5F4108F03D7457EB641836B /* MDLFileData.h */, - AA92FFC8B06D4569AD9C4CB1 /* MDLLoader.cpp */, - E24E950227C848D3A759F5C2 /* MDLLoader.h */, - CEC69808E1844C23B95D3475 /* MDLMaterialLoader.cpp */, - ); - name = MDL; - sourceTree = ""; - }; - F0273EDFDBD34EDAA6678613 /* Q3D */ = { - isa = PBXGroup; - children = ( - C5178B3983F147F3B9BD8217 /* Q3DLoader.cpp */, - 76773A53296549FFA43956A1 /* Q3DLoader.h */, - ); - name = Q3D; - sourceTree = ""; - }; - F61A479614764D11AC3311A8 /* Poly2Tri */ = { - isa = PBXGroup; - children = ( - AE00939F150F413780C8AAD7 /* shapes.cc */, - EE545B58FA1246C792C6AD01 /* shapes.h */, - 50935A81362041BEADF18609 /* utils.h */, - B72D0BA3EF66439F8D582ED3 /* advancing_front.cc */, - DAE82F651F9E4D91A6A6C753 /* advancing_front.h */, - 849EC6315E4A4E5FA06521EA /* cdt.cc */, - 904A696E49D540C2A880792B /* cdt.h */, - 49E993CD86A346869AF473BC /* sweep.cc */, - 62E8551653634972ABBABCAD /* sweep.h */, - 5E10483FBE6D4F4594B460E0 /* sweep_context.cc */, - 267D593135514108B7DEF072 /* sweep_context.h */, - ); - name = Poly2Tri; - sourceTree = ""; - }; - F9261D592F00437EAFC663B5 /* MD2 */ = { - isa = PBXGroup; - children = ( - 21E21BE7CB364AC3AB81E54C /* MD2FileData.h */, - 49B655CCE1314D4E8A94B371 /* MD2Loader.cpp */, - 531FBC4210644C61954EA4C4 /* MD2Loader.h */, - FD84CFD1BD3E4AF4BA622BB8 /* MD2NormalTable.h */, - ); - name = MD2; - sourceTree = ""; - }; - FCFE51BCE7384933A972EDEE /* Header Files */ = { - isa = PBXGroup; - children = ( - 731205CAB88247C095E33412 /* Exporter.hpp */, - B54FBAAF061B40DBA3F48F83 /* IOStream.hpp */, - 86E296E459F94050ACBA3C63 /* IOSystem.hpp */, - B9DFF24FD63A4D9FAE213EED /* Importer.hpp */, - 69AFF47737244CE3BD1653CC /* ProgressHandler.hpp */, - C7B37CA474DF4CE7A5B0658E /* ai_assert.h */, - B441D87EE6ED4EBFB0586B66 /* anim.h */, - B05DC38593F04180B322360B /* camera.h */, - 2F34A6A3C4104625A52BF7C2 /* cexport.h */, - E1313C36045444619026E9FB /* cfileio.h */, - 267A74499024423A86150697 /* cimport.h */, - 0535CB113239433DA7CD7FDE /* color4.h */, - 079B3C75D1014265959C427D /* color4.inl */, - 90949C7A51E84D3595D71A6B /* config.h */, - 9761D873B9604504B9AD7CD5 /* defs.h */, - 4D82A29A8BBF44E69E026F84 /* importerdesc.h */, - 8E2108F568374F65ACE217D1 /* light.h */, - 05EA73C462244F1791039BFB /* material.h */, - 139DFC029C4C44B09952C645 /* material.inl */, - 10E9B0497D844A10BC759A09 /* matrix3x3.h */, - 073189BEE7A5466B9EE817D4 /* matrix3x3.inl */, - BA832069DF214327AE067503 /* matrix4x4.h */, - 4493838DDEE841BF96A0F008 /* matrix4x4.inl */, - E9ED3048A21E483F9C2721F4 /* mesh.h */, - 5F84BDD0D5D345A2BF1E08E1 /* metadata.h */, - 41C2F6D564924BF4ACE75CAC /* postprocess.h */, - 279D2A482FE9402A8F7EC441 /* quaternion.h */, - 97F52051AF4F478FA77AABBC /* quaternion.inl */, - 3B407EAF162843CBA46BC9D4 /* scene.h */, - AE1C2E2C9C424B3684AD9D4A /* texture.h */, - 56DA1CDC223747F4AFBAF953 /* types.h */, - FB1E84BE85A34F98A44BBB2B /* vector2.h */, - B6074B1E864740F787A97EA3 /* vector2.inl */, - 6D72952403D04713A6451654 /* vector3.h */, - 8D53CC35AAED4CE8B9710E04 /* vector3.inl */, - FC0801BA1F95494498A089AF /* version.h */, - ); - name = "Header Files"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 7F79227F1AB43AC3005A8E5D /* assimp */ = { - isa = PBXNativeTarget; - buildConfigurationList = 7F7922911AB43AC3005A8E5D /* Build configuration list for PBXNativeTarget "assimp" */; - buildPhases = ( - 7F79229B1AB43AF4005A8E5D /* Run Script to build "revision.h" */, - 7F79227C1AB43AC3005A8E5D /* Sources */, - 7F79227D1AB43AC3005A8E5D /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = assimp; - productName = assimp; - productReference = 7F7922801AB43AC3005A8E5D /* libassimp.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 9DE203BC835F4C81BCDF25CF /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 0700; - TargetAttributes = { - 7F79227F1AB43AC3005A8E5D = { - CreatedOnToolsVersion = 6.3; - }; - }; - }; - buildConfigurationList = 0C36C32B633D49CB92166176 /* Build configuration list for PBXProject "Assimp" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = BCC52F1D5AF74E54A2D69524; - projectDirPath = ../..; - projectRoot = ""; - targets = ( - 7F79227F1AB43AC3005A8E5D /* assimp */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXShellScriptBuildPhase section */ - 7F79229B1AB43AF4005A8E5D /* Run Script to build "revision.h" */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script to build \"revision.h\""; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "mkdir -p \"${DERIVED_FILE_DIR}\"\ncat \"${SRCROOT}/revision.h.in\" | sed \"s/@GIT_COMMIT_HASH@/`git rev-parse --short HEAD`/g\" | sed \"s/@GIT_BRANCH@/`git rev-parse --abbrev-ref HEAD`/g\" > \"${DERIVED_FILE_DIR}/revision.h\""; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 7F79227C1AB43AC3005A8E5D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7F79242A1AB43E20005A8E5D /* 3DSConverter.cpp in Sources */, - 7F79242B1AB43E20005A8E5D /* 3DSExporter.cpp in Sources */, - 7F79242C1AB43E20005A8E5D /* 3DSLoader.cpp in Sources */, - 7F79242D1AB43E20005A8E5D /* ACLoader.cpp in Sources */, - 7F79242E1AB43E20005A8E5D /* ASELoader.cpp in Sources */, - 7F79242F1AB43E20005A8E5D /* ASEParser.cpp in Sources */, - 7F7924301AB43E20005A8E5D /* AssbinExporter.cpp in Sources */, - 7F7924311AB43E20005A8E5D /* AssbinLoader.cpp in Sources */, - 7F7924321AB43E20005A8E5D /* Assimp.cpp in Sources */, - 7F7924331AB43E20005A8E5D /* AssimpCExport.cpp in Sources */, - 7F7924351AB43E20005A8E5D /* AssxmlExporter.cpp in Sources */, - 7F7924361AB43E20005A8E5D /* B3DImporter.cpp in Sources */, - 7F7924371AB43E20005A8E5D /* BVHLoader.cpp in Sources */, - 7F7924381AB43E20005A8E5D /* BaseImporter.cpp in Sources */, - 7F7924391AB43E20005A8E5D /* BaseProcess.cpp in Sources */, - 7F79243A1AB43E20005A8E5D /* Bitmap.cpp in Sources */, - 7F79243B1AB43E20005A8E5D /* BlenderBMesh.cpp in Sources */, - 7F79243C1AB43E20005A8E5D /* BlenderDNA.cpp in Sources */, - 7F79243D1AB43E20005A8E5D /* BlenderLoader.cpp in Sources */, - AFB7F85D1C882F8200D7B6E9 /* glTFExporter.cpp in Sources */, - 7F79243E1AB43E20005A8E5D /* BlenderModifier.cpp in Sources */, - 7F79243F1AB43E20005A8E5D /* BlenderScene.cpp in Sources */, - 7F7924401AB43E20005A8E5D /* BlenderTessellator.cpp in Sources */, - 7F7924411AB43E20005A8E5D /* COBLoader.cpp in Sources */, - 7F7924421AB43E20005A8E5D /* CSMLoader.cpp in Sources */, - 7F7924431AB43E20005A8E5D /* CalcTangentsProcess.cpp in Sources */, - 7F7924441AB43E20005A8E5D /* ColladaExporter.cpp in Sources */, - 7F7924451AB43E20005A8E5D /* ColladaLoader.cpp in Sources */, - 7F7924461AB43E20005A8E5D /* ColladaParser.cpp in Sources */, - 7F7924471AB43E20005A8E5D /* ComputeUVMappingProcess.cpp in Sources */, - 7F7924481AB43E20005A8E5D /* ConvertToLHProcess.cpp in Sources */, - 7F7924491AB43E20005A8E5D /* DXFLoader.cpp in Sources */, - 7F79244A1AB43E20005A8E5D /* DeboneProcess.cpp in Sources */, - 7F79244B1AB43E20005A8E5D /* DefaultIOStream.cpp in Sources */, - 7F79244C1AB43E20005A8E5D /* DefaultIOSystem.cpp in Sources */, - 7F7A93A81B65D0110094C4DA /* DDLNode.cpp in Sources */, - 7F79244D1AB43E20005A8E5D /* DefaultLogger.cpp in Sources */, - 2DC891D01D2CFA75001E0B0E /* C4DImporter.cpp in Sources */, - 7F79244E1AB43E20005A8E5D /* Exporter.cpp in Sources */, - 7F79244F1AB43E20005A8E5D /* FBXAnimation.cpp in Sources */, - 7F7924501AB43E20005A8E5D /* FBXBinaryTokenizer.cpp in Sources */, - 7F7924511AB43E20005A8E5D /* FBXConverter.cpp in Sources */, - 7F7924521AB43E20005A8E5D /* FBXDeformer.cpp in Sources */, - 7F7924531AB43E20005A8E5D /* FBXDocument.cpp in Sources */, - 7F7924541AB43E20005A8E5D /* FBXDocumentUtil.cpp in Sources */, - 7F7924551AB43E20005A8E5D /* FBXImporter.cpp in Sources */, - 7F7924561AB43E20005A8E5D /* FBXMaterial.cpp in Sources */, - 7F7924571AB43E20005A8E5D /* FBXMeshGeometry.cpp in Sources */, - 7F7924581AB43E20005A8E5D /* FBXModel.cpp in Sources */, - 7F7924591AB43E20005A8E5D /* FBXNodeAttribute.cpp in Sources */, - 7F79245A1AB43E20005A8E5D /* FBXParser.cpp in Sources */, - 7F79245B1AB43E20005A8E5D /* FBXProperties.cpp in Sources */, - 7F79245C1AB43E20005A8E5D /* FBXTokenizer.cpp in Sources */, - 7F79245D1AB43E20005A8E5D /* FBXUtil.cpp in Sources */, - 7F7A93A91B65D0110094C4DA /* OpenDDLParser.cpp in Sources */, - 7F79245E1AB43E20005A8E5D /* FindDegenerates.cpp in Sources */, - AFB7F8531C882F1A00D7B6E9 /* OpenDDLExport.cpp in Sources */, - 7F79245F1AB43E20005A8E5D /* FindInstancesProcess.cpp in Sources */, - 7F7924601AB43E20005A8E5D /* FindInvalidDataProcess.cpp in Sources */, - 7F7924611AB43E20005A8E5D /* FixNormalsStep.cpp in Sources */, - 2DC891CA1D2CFA22001E0B0E /* D3MFImporter.cpp in Sources */, - 7F7924621AB43E20005A8E5D /* GenFaceNormalsProcess.cpp in Sources */, - 7F7924631AB43E20005A8E5D /* GenVertexNormalsProcess.cpp in Sources */, - 7F7924641AB43E20005A8E5D /* HMPLoader.cpp in Sources */, - 7F7924651AB43E20005A8E5D /* IFCBoolean.cpp in Sources */, - 2DC891CB1D2CFA22001E0B0E /* D3MFOpcPackage.cpp in Sources */, - 7F7924661AB43E20005A8E5D /* IFCCurve.cpp in Sources */, - AFB7F85E1C882F8200D7B6E9 /* glTFImporter.cpp in Sources */, - 7F7924671AB43E20005A8E5D /* IFCGeometry.cpp in Sources */, - 7F7924681AB43E20005A8E5D /* IFCLoader.cpp in Sources */, - 7F7924691AB43E20005A8E5D /* IFCMaterial.cpp in Sources */, - 7F79246A1AB43E20005A8E5D /* IFCOpenings.cpp in Sources */, - 7F79246B1AB43E20005A8E5D /* IFCProfile.cpp in Sources */, - 7FBEA0121B65B11800D2115E /* Version.cpp in Sources */, - 7F79246C1AB43E20005A8E5D /* IFCReaderGen.cpp in Sources */, - 7F79246D1AB43E20005A8E5D /* IFCUtil.cpp in Sources */, - 7F79246E1AB43E20005A8E5D /* IRRLoader.cpp in Sources */, - 7F79246F1AB43E20005A8E5D /* IRRMeshLoader.cpp in Sources */, - 7F7924701AB43E20005A8E5D /* IRRShared.cpp in Sources */, - 7F7924711AB43E20005A8E5D /* Importer.cpp in Sources */, - 7F7924721AB43E20005A8E5D /* ImporterRegistry.cpp in Sources */, - 7F7924731AB43E20005A8E5D /* ImproveCacheLocality.cpp in Sources */, - 7F7924741AB43E20005A8E5D /* JoinVerticesProcess.cpp in Sources */, - 7F7924751AB43E20005A8E5D /* LWOAnimation.cpp in Sources */, - 7F7924761AB43E20005A8E5D /* LWOBLoader.cpp in Sources */, - 7F7924771AB43E20005A8E5D /* LWOLoader.cpp in Sources */, - 7F7924781AB43E20005A8E5D /* LWOMaterial.cpp in Sources */, - 7F7924791AB43E20005A8E5D /* LWSLoader.cpp in Sources */, - AFB7F8521C882F1A00D7B6E9 /* OpenDDLCommon.cpp in Sources */, - 7F79247A1AB43E20005A8E5D /* LimitBoneWeightsProcess.cpp in Sources */, - 7F79247B1AB43E20005A8E5D /* MD2Loader.cpp in Sources */, - 7F79247C1AB43E20005A8E5D /* MD3Loader.cpp in Sources */, - 7F79247D1AB43E20005A8E5D /* MD5Loader.cpp in Sources */, - 7F79247E1AB43E20005A8E5D /* MD5Parser.cpp in Sources */, - 7F79247F1AB43E20005A8E5D /* MDCLoader.cpp in Sources */, - 7F7924801AB43E20005A8E5D /* MDLLoader.cpp in Sources */, - 7F7924811AB43E20005A8E5D /* MDLMaterialLoader.cpp in Sources */, - 7F7924821AB43E20005A8E5D /* MS3DLoader.cpp in Sources */, - 7FBE9FEB1B65AC1200D2115E /* OpenGEXImporter.cpp in Sources */, - 7F7924831AB43E20005A8E5D /* MakeVerboseFormat.cpp in Sources */, - 7F7924841AB43E20005A8E5D /* MaterialSystem.cpp in Sources */, - 7F7924851AB43E20005A8E5D /* NDOLoader.cpp in Sources */, - 7F7924861AB43E20005A8E5D /* NFFLoader.cpp in Sources */, - 7F7924871AB43E20005A8E5D /* OFFLoader.cpp in Sources */, - 7F7924881AB43E20005A8E5D /* ObjExporter.cpp in Sources */, - 7F7924891AB43E20005A8E5D /* ObjFileImporter.cpp in Sources */, - 7F79248A1AB43E20005A8E5D /* ObjFileMtlImporter.cpp in Sources */, - 7F79248B1AB43E20005A8E5D /* ObjFileParser.cpp in Sources */, - 7F79248C1AB43E20005A8E5D /* OgreBinarySerializer.cpp in Sources */, - 7F79248D1AB43E20005A8E5D /* OgreImporter.cpp in Sources */, - 7F79248E1AB43E20005A8E5D /* OgreMaterial.cpp in Sources */, - 7F79248F1AB43E20005A8E5D /* OgreStructs.cpp in Sources */, - 7F7924901AB43E20005A8E5D /* OgreXmlSerializer.cpp in Sources */, - 7F7924911AB43E20005A8E5D /* OptimizeGraph.cpp in Sources */, - 7F7924921AB43E20005A8E5D /* OptimizeMeshes.cpp in Sources */, - 7F7924931AB43E20005A8E5D /* PlyExporter.cpp in Sources */, - 7F7924941AB43E20005A8E5D /* PlyLoader.cpp in Sources */, - 7F7924951AB43E20005A8E5D /* PlyParser.cpp in Sources */, - 7F7924961AB43E20005A8E5D /* PostStepRegistry.cpp in Sources */, - 7F7924971AB43E20005A8E5D /* PretransformVertices.cpp in Sources */, - 7F7924981AB43E20005A8E5D /* ProcessHelper.cpp in Sources */, - 7F7A93AA1B65D0110094C4DA /* Value.cpp in Sources */, - 7F7924991AB43E20005A8E5D /* Q3BSPFileImporter.cpp in Sources */, - 7F79249A1AB43E20005A8E5D /* Q3BSPFileParser.cpp in Sources */, - 7F79249B1AB43E20005A8E5D /* Q3BSPZipArchive.cpp in Sources */, - 7F79249C1AB43E20005A8E5D /* Q3DLoader.cpp in Sources */, - 7F79249D1AB43E20005A8E5D /* RawLoader.cpp in Sources */, - 7F79249E1AB43E20005A8E5D /* RemoveComments.cpp in Sources */, - 7F79249F1AB43E20005A8E5D /* RemoveRedundantMaterials.cpp in Sources */, - 7F7924A01AB43E20005A8E5D /* RemoveVCProcess.cpp in Sources */, - 7F7924A11AB43E20005A8E5D /* SGSpatialSort.cpp in Sources */, - 7F7924A21AB43E20005A8E5D /* SMDLoader.cpp in Sources */, - 7F7924A31AB43E20005A8E5D /* STEPFileEncoding.cpp in Sources */, - 7F7924A41AB43E20005A8E5D /* STEPFileReader.cpp in Sources */, - 7F7924A51AB43E20005A8E5D /* STLExporter.cpp in Sources */, - 7FBE9FEA1B65AC1200D2115E /* OpenGEXExporter.cpp in Sources */, - 7F7924A61AB43E20005A8E5D /* STLLoader.cpp in Sources */, - 7F7924A71AB43E20005A8E5D /* SceneCombiner.cpp in Sources */, - 7F7924A81AB43E20005A8E5D /* ScenePreprocessor.cpp in Sources */, - 7F7924A91AB43E20005A8E5D /* SkeletonMeshBuilder.cpp in Sources */, - 7F7924AA1AB43E20005A8E5D /* SortByPTypeProcess.cpp in Sources */, - 7F7924AB1AB43E20005A8E5D /* SpatialSort.cpp in Sources */, - 7F7924AC1AB43E20005A8E5D /* SplitByBoneCountProcess.cpp in Sources */, - 7F7924AD1AB43E20005A8E5D /* SplitLargeMeshes.cpp in Sources */, - AFB7F8631C88302500D7B6E9 /* SIBImporter.cpp in Sources */, - 7F7924AE1AB43E20005A8E5D /* StandardShapes.cpp in Sources */, - 7F7924AF1AB43E20005A8E5D /* Subdivision.cpp in Sources */, - 7F7924B01AB43E20005A8E5D /* TargetAnimation.cpp in Sources */, - 7F7924B11AB43E20005A8E5D /* TerragenLoader.cpp in Sources */, - 7F7924B21AB43E20005A8E5D /* TextureTransform.cpp in Sources */, - 7F7924B31AB43E20005A8E5D /* TriangulateProcess.cpp in Sources */, - 7F7924B41AB43E20005A8E5D /* UnrealLoader.cpp in Sources */, - 7F7924B51AB43E20005A8E5D /* ValidateDataStructure.cpp in Sources */, - 7F7924B61AB43E20005A8E5D /* VertexTriangleAdjacency.cpp in Sources */, - 7F7924B71AB43E20005A8E5D /* XFileExporter.cpp in Sources */, - 7F7924B81AB43E20005A8E5D /* XFileImporter.cpp in Sources */, - 7F7924B91AB43E20005A8E5D /* XFileParser.cpp in Sources */, - 7F7924BA1AB43E20005A8E5D /* XGLLoader.cpp in Sources */, - 7F7924BB1AB43E20005A8E5D /* ConvertUTF.c in Sources */, - 7F7924BC1AB43E20005A8E5D /* clipper.cpp in Sources */, - 7F7924BD1AB43E20005A8E5D /* irrXML.cpp in Sources */, - 7F7924BE1AB43E20005A8E5D /* shapes.cc in Sources */, - 7F7924BF1AB43E20005A8E5D /* advancing_front.cc in Sources */, - 7F7924C01AB43E20005A8E5D /* cdt.cc in Sources */, - 7F7924C11AB43E20005A8E5D /* sweep.cc in Sources */, - 7F7924C21AB43E20005A8E5D /* sweep_context.cc in Sources */, - 7F7924C31AB43E20005A8E5D /* ioapi.c in Sources */, - 7F7924C41AB43E20005A8E5D /* unzip.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 137567A2412C45B8A269E344 /* RelWithDebInfo */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = NDEBUG; - MACH_O_TYPE = staticlib; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx"; - }; - name = RelWithDebInfo; - }; - 7F7922921AB43AC3005A8E5D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = NO; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = NO; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DYLIB_COMPATIBILITY_VERSION = 3.0.0; - DYLIB_CURRENT_VERSION = 3.1.1; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - assimp_EXPORTS, - ASSIMP_BUILD_BOOST_WORKAROUND, - ASSIMP_BUILD_NO_OWN_ZLIB, - ASSIMP_BUILD_NO_C4D_IMPORTER, - ASSIMP_BUILD_DLL_EXPORT, - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - HEADER_SEARCH_PATHS = "$(SRCROOT)"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - USER_HEADER_SEARCH_PATHS = "code code/BoostWorkaround contrib/openddlparser/include contrib/rapidjson/include include $(inherited)"; - }; - name = Debug; - }; - 7F7922931AB43AC3005A8E5D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = NO; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = NO; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DYLIB_COMPATIBILITY_VERSION = 3.0.0; - DYLIB_CURRENT_VERSION = 3.1.1; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = fast; - GCC_PREPROCESSOR_DEFINITIONS = ( - assimp_EXPORTS, - ASSIMP_BUILD_BOOST_WORKAROUND, - ASSIMP_BUILD_NO_OWN_ZLIB, - ASSIMP_BUILD_NO_C4D_IMPORTER, - ASSIMP_BUILD_DLL_EXPORT, - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - HEADER_SEARCH_PATHS = "$(SRCROOT)"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - USER_HEADER_SEARCH_PATHS = "code code/BoostWorkaround contrib/openddlparser/include contrib/rapidjson/include include $(inherited)"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 7F7922941AB43AC3005A8E5D /* MinSizeRel */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = NO; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = NO; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DYLIB_COMPATIBILITY_VERSION = 3.0.0; - DYLIB_CURRENT_VERSION = 3.1.1; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - assimp_EXPORTS, - ASSIMP_BUILD_BOOST_WORKAROUND, - ASSIMP_BUILD_NO_OWN_ZLIB, - ASSIMP_BUILD_NO_C4D_IMPORTER, - ASSIMP_BUILD_DLL_EXPORT, - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - HEADER_SEARCH_PATHS = "$(SRCROOT)"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - USER_HEADER_SEARCH_PATHS = "code code/BoostWorkaround contrib/openddlparser/include contrib/rapidjson/include include $(inherited)"; - VALIDATE_PRODUCT = YES; - }; - name = MinSizeRel; - }; - 7F7922951AB43AC3005A8E5D /* RelWithDebInfo */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = NO; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = NO; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DYLIB_COMPATIBILITY_VERSION = 3.0.0; - DYLIB_CURRENT_VERSION = 3.1.1; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - assimp_EXPORTS, - ASSIMP_BUILD_BOOST_WORKAROUND, - ASSIMP_BUILD_NO_OWN_ZLIB, - ASSIMP_BUILD_NO_C4D_IMPORTER, - ASSIMP_BUILD_DLL_EXPORT, - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - HEADER_SEARCH_PATHS = "$(SRCROOT)"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - USER_HEADER_SEARCH_PATHS = "code code/BoostWorkaround contrib/openddlparser/include contrib/rapidjson/include include $(inherited)"; - VALIDATE_PRODUCT = YES; - }; - name = RelWithDebInfo; - }; - 9604718722A94CBB9F87A9D8 /* MinSizeRel */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = NDEBUG; - MACH_O_TYPE = staticlib; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx"; - }; - name = MinSizeRel; - }; - C58F2FA1D18E452FBFD3B286 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ENABLE_TESTABILITY = YES; - GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; - MACH_O_TYPE = staticlib; - ONLY_ACTIVE_ARCH = YES; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx"; - }; - name = Debug; - }; - DB0088F8DB7C490CBA3CCB90 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = NDEBUG; - MACH_O_TYPE = staticlib; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 0C36C32B633D49CB92166176 /* Build configuration list for PBXProject "Assimp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C58F2FA1D18E452FBFD3B286 /* Debug */, - DB0088F8DB7C490CBA3CCB90 /* Release */, - 9604718722A94CBB9F87A9D8 /* MinSizeRel */, - 137567A2412C45B8A269E344 /* RelWithDebInfo */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - 7F7922911AB43AC3005A8E5D /* Build configuration list for PBXNativeTarget "assimp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7F7922921AB43AC3005A8E5D /* Debug */, - 7F7922931AB43AC3005A8E5D /* Release */, - 7F7922941AB43AC3005A8E5D /* MinSizeRel */, - 7F7922951AB43AC3005A8E5D /* RelWithDebInfo */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; -/* End XCConfigurationList section */ - }; - rootObject = 9DE203BC835F4C81BCDF25CF /* Project object */; -} diff --git a/workspaces/xcode6/Assimp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/workspaces/xcode6/Assimp.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 0abcc1fa5..000000000 --- a/workspaces/xcode6/Assimp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/workspaces/xcode6/Assimp.xcodeproj/xcshareddata/xcschemes/assimp.xcscheme b/workspaces/xcode6/Assimp.xcodeproj/xcshareddata/xcschemes/assimp.xcscheme deleted file mode 100644 index 99aae1cbb..000000000 --- a/workspaces/xcode6/Assimp.xcodeproj/xcshareddata/xcschemes/assimp.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -