diff --git a/3rdParty/CMakeLists.txt b/3rdParty/CMakeLists.txt index a25c6a0..0c06320 100644 --- a/3rdParty/CMakeLists.txt +++ b/3rdParty/CMakeLists.txt @@ -4,4 +4,5 @@ add_subdirectory(GLM) add_subdirectory(FMOD) add_subdirectory(GLFW) add_subdirectory(FX11) -add_subdirectory(DirectXTex) \ No newline at end of file +add_subdirectory(DirectXTex) +add_subdirectory(VLD) \ No newline at end of file diff --git a/3rdParty/PhysX/CMakeLists.txt b/3rdParty/PhysX/CMakeLists.txt index 8ab9bfa..383b975 100644 --- a/3rdParty/PhysX/CMakeLists.txt +++ b/3rdParty/PhysX/CMakeLists.txt @@ -1,5 +1,5 @@ # PhysX CMake -set(PHYSX_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include") +set(PHYSX_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include" CACHE PATH "") if(CMAKE_BUILD_TYPE STREQUAL "Debug") # DLLs set(PHYSX_DLL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bin/debug/PhysX_64.dll" CACHE PATH "") @@ -11,6 +11,16 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug") set(PHYSX_COMMON_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/debug/PhysXCommon_64.lib" CACHE PATH "") set(PHYSX_COOKING_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/debug/PhysXCooking_64.lib" CACHE PATH "") set(PHYSX_FOUNDATION_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/debug/PhysXFoundation_64.lib" CACHE PATH "") + set(PHYSX_LOWLEVELAABB_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/debug/LowLevelAABB_static_64.lib" CACHE PATH "") + set(PHYSX_LOWLEVELDYNAMICS_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/debug/LowLevelDynamics_static_64.lib" CACHE PATH "") + set(PHYSX_LOWLEVEL_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/debug/LowLevel_static_64.lib" CACHE PATH "") + set(PHYSX_CHARACTERKINEMATIC_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/debug/PhysXCharacterKinematic_static_64.lib" CACHE PATH "") + set(PHYSX_EXTENSIONS_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/debug/PhysXExtensions_static_64.lib" CACHE PATH "") + set(PHYSX_PVDSDK_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/debug/PhysXPvdSDK_static_64.lib" CACHE PATH "") + set(PHYSX_TASK_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/debug/PhysXTask_static_64.lib" CACHE PATH "") + set(PHYSX_VEHICLE_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/debug/PhysXVehicle_static_64.lib" CACHE PATH "") + set(PHYSX_SCENEQUERY_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/debug/SceneQuery_static_64.lib" CACHE PATH "") + set(PHYSX_SIMULATIONCONTROLLER_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/debug/SimulationController_static_64.lib" CACHE PATH "") else() # DLLs set(PHYSX_DLL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bin/release/PhysX_64.dll" CACHE PATH "") @@ -22,5 +32,15 @@ else() set(PHYSX_COMMON_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/release/PhysXCommon_64.lib" CACHE PATH "") set(PHYSX_COOKING_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/release/PhysXCooking_64.lib" CACHE PATH "") set(PHYSX_FOUNDATION_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/release/PhysXFoundation_64.lib" CACHE PATH "") + set(PHYSX_LOWLEVELAABB_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/release/LowLevelAABB_static_64.lib" CACHE PATH "") + set(PHYSX_LOWLEVELDYNAMICS_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/release/LowLevelDynamics_static_64.lib" CACHE PATH "") + set(PHYSX_LOWLEVEL_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/release/LowLevel_static_64.lib" CACHE PATH "") + set(PHYSX_CHARACTERKINEMATIC_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/release/PhysXCharacterKinematic_static_64.lib" CACHE PATH "") + set(PHYSX_EXTENSIONS_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/release/PhysXExtensions_static_64.lib" CACHE PATH "") + set(PHYSX_PVDSDK_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/release/PhysXPvdSDK_static_64.lib" CACHE PATH "") + set(PHYSX_TASK_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/release/PhysXTask_static_64.lib" CACHE PATH "") + set(PHYSX_VEHICLE_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/release/PhysXVehicle_static_64.lib" CACHE PATH "") + set(PHYSX_SCENEQUERY_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/release/SceneQuery_static_64.lib" CACHE PATH "") + set(PHYSX_SIMULATIONCONTROLLER_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/release/SimulationController_static_64.lib" CACHE PATH "") endif() message("Include dir: ${PHYSX_INCLUDE_DIR}") \ No newline at end of file diff --git a/3rdParty/VLD/CMakeLists.txt b/3rdParty/VLD/CMakeLists.txt new file mode 100644 index 0000000..3404b44 --- /dev/null +++ b/3rdParty/VLD/CMakeLists.txt @@ -0,0 +1,5 @@ +# VLD CMake +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(VLD_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include" CACHE PATH "") + set(VLD_LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/vld.lib" CACHE PATH "") +endif() \ No newline at end of file diff --git a/3rdParty/VLD/include/vld.h b/3rdParty/VLD/include/vld.h new file mode 100644 index 0000000..b591ff3 --- /dev/null +++ b/3rdParty/VLD/include/vld.h @@ -0,0 +1,350 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Visual Leak Detector - Import Library Header +// Copyright (c) 2005-2014 VLD Team +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +// See COPYING.txt for the full terms of the GNU Lesser General Public License. +// +//////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include "vld_def.h" + +typedef int VLD_BOOL; +typedef unsigned int VLD_UINT; +typedef size_t VLD_SIZET; +typedef void* VLD_HMODULE; + +#if defined _DEBUG || defined VLD_FORCE_ENABLE + +#ifdef __AFXWIN_H__ +#error[VLD COMPILE ERROR] '#include ' should appear before '#include ' in file stdafx.h +#endif + +#pragma comment(lib, "vld.lib") + +// Force a symbolic reference to the global VisualLeakDetector class object from +// the DLL. This ensures that the DLL is loaded and linked with the program, +// even if no code otherwise imports any of the DLL's exports. +#pragma comment(linker, "/include:__imp_?g_vld@@3VVisualLeakDetector@@A") + +//////////////////////////////////////////////////////////////////////////////// +// +// Visual Leak Detector APIs +// + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +// VLDDisable - Disables Visual Leak Detector's memory leak detection at +// runtime. If memory leak detection is already disabled, then calling this +// function has no effect. +// +// Note: In multithreaded programs, this function operates on a per-thread +// basis. In other words, if you call this function from one thread, then +// memory leak detection is only disabled for that thread. If memory leak +// detection is enabled for other threads, then it will remain enabled for +// those other threads. It was designed to work this way to insulate you, +// the programmer, from having to ensure thread synchronization when calling +// VLDEnable() and VLDDisable(). Without this, calling these two functions +// unsynchronized could result in unpredictable and unintended behavior. +// But this also means that if you want to disable memory leak detection +// process-wide, then you need to call this function from every thread in +// the process. +// +// Return Value: +// +// None. +// +__declspec(dllimport) void VLDDisable (); + +// VLDEnable - Enables Visual Leak Detector's memory leak detection at runtime. +// If memory leak detection is already enabled, which it is by default, then +// calling this function has no effect. +// +// Note: In multithreaded programs, this function operates on a per-thread +// basis. In other words, if you call this function from one thread, then +// memory leak detection is only enabled for that thread. If memory leak +// detection is disabled for other threads, then it will remain disabled for +// those other threads. It was designed to work this way to insulate you, +// the programmer, from having to ensure thread synchronization when calling +// VLDEnable() and VLDDisable(). Without this, calling these two functions +// unsynchronized could result in unpredictable and unintended behavior. +// But this also means that if you want to enable memory leak detection +// process-wide, then you need to call this function from every thread in +// the process. +// +// Return Value: +// +// None. +// +__declspec(dllimport) void VLDEnable (); + +// VLDRestore - Restore Visual Leak Detector's previous state. +// +// Return Value: +// +// None. +// +__declspec(dllimport) void VLDRestore (); + +// VLDGlobalDisable - Disables Visual Leak Detector's memory leak detection at +// runtime in all threads. If memory leak detection is already disabled, +// then calling this function has no effect. +// +// Return Value: +// +// None. +// +__declspec(dllimport) void VLDGlobalDisable (); + +// VLDGlobalEnable - Enables Visual Leak Detector's memory leak detection +// at runtime in all threads. If memory leak detection is already enabled, +// which it is by default, then calling this function has no effect. +// +// Return Value: +// +// None. +// +__declspec(dllimport) void VLDGlobalEnable (); + +// VLDReportLeaks - Report leaks up to the execution point. +// +// Return Value: +// +// None. +// +__declspec(dllimport) VLD_UINT VLDReportLeaks (); + +// VLDReportThreadLeaks - Report thread leaks up to the execution point. +// +// threadId: thread Id. +// +// Return Value: +// +// None. +// +__declspec(dllimport) VLD_UINT VLDReportThreadLeaks (VLD_UINT threadId); + +// VLDGetLeaksCount - Return memory leaks count to the execution point. +// +// Return Value: +// +// None. +// +__declspec(dllimport) VLD_UINT VLDGetLeaksCount (); + +// VLDGetThreadLeaksCount - Return thread memory leaks count to the execution point. +// +// threadId: thread Id. +// +// Return Value: +// +// None. +// +__declspec(dllimport) VLD_UINT VLDGetThreadLeaksCount (VLD_UINT threadId); + +// VLDMarkAllLeaksAsReported - Mark all leaks as reported. +// +// Return Value: +// +// None. +// +__declspec(dllimport) void VLDMarkAllLeaksAsReported (); + +// VLDMarkThreadLeaksAsReported - Mark thread leaks as reported. +// +// threadId: thread Id. +// +// Return Value: +// +// None. +// +__declspec(dllimport) void VLDMarkThreadLeaksAsReported (VLD_UINT threadId); + + +// VLDRefreshModules - Look for recently loaded DLLs and patch them if necessary. +// +// Return Value: +// +// None. +// +__declspec(dllimport) void VLDRefreshModules(); + + +// VLDEnableModule - Enable Memory leak checking on the specified module. +// +// module: module handle. +// +// Return Value: +// +// None. +// + +__declspec(dllimport) void VLDEnableModule(VLD_HMODULE module); + + +// VLDDisableModule - Disable Memory leak checking on the specified module. +// +// module: module handle. +// +// Return Value: +// +// None. +// +__declspec(dllimport) void VLDDisableModule(VLD_HMODULE module); + +// VLDGetOptions - Return all current options. +// +// Return Value: +// +// Mask of current options. +// +__declspec(dllimport) VLD_UINT VLDGetOptions(); + +// VLDGetReportFilename - Return current report filename. +// +// filename: current report filename (max characters - MAX_PATH). +// +// Return Value: +// +// None. +// +__declspec(dllimport) void VLDGetReportFilename(wchar_t *filename); + +// VLDSetOptions - Update the report options via function call rather than INI file. +// +// option_mask: Only the following flags are checked +// VLD_OPT_AGGREGATE_DUPLICATES +// VLD_OPT_MODULE_LIST_INCLUDE +// VLD_OPT_SAFE_STACK_WALK +// VLD_OPT_SLOW_DEBUGGER_DUMP +// VLD_OPT_TRACE_INTERNAL_FRAMES +// VLD_OPT_START_DISABLED +// VLD_OPT_SKIP_HEAPFREE_LEAKS +// VLD_OPT_VALIDATE_HEAPFREE +// +// maxDataDump: maximum number of user-data bytes to dump for each leaked block. +// +// maxTraceFrames: maximum number of frames per stack trace for each leaked block. +// +// Return Value: +// +// None. +// +__declspec(dllimport) void VLDSetOptions(VLD_UINT option_mask, VLD_SIZET maxDataDump, VLD_UINT maxTraceFrames); + +// VLDSetModulesList - Set list of modules included/excluded in leak detection +// depending on parameter "includeModules". +// +// modules: list of modules to be forcefully included/excluded in leak detection. +// +// includeModules: include or exclude that modules. +// +// Return Value: +// +// None. +// +__declspec(dllimport) void VLDSetModulesList(const wchar_t *modules, VLD_BOOL includeModules); + +// VLDGetModulesList - Return current list of included/excluded modules +// depending on flag VLD_OPT_TRACE_INTERNAL_FRAMES. +// +// modules: destination string for list of included/excluded modules (maximum length 512 characters). +// +// size: maximum string size. +// +// Return Value: +// +// VLD_BOOL: TRUE if include modules, otherwise FALSE. +// +__declspec(dllimport) VLD_BOOL VLDGetModulesList(wchar_t *modules, VLD_UINT size); + +// VLDSetReportOptions - Update the report options via function call rather than INI file. +// +// Only the following flags are checked +// VLD_OPT_REPORT_TO_DEBUGGER +// VLD_OPT_REPORT_TO_FILE +// VLD_OPT_REPORT_TO_STDOUT +// VLD_OPT_UNICODE_REPORT +// +// filename is optional and can be NULL. +// +// Return Value: +// +// None. +// +__declspec(dllimport) void VLDSetReportOptions(VLD_UINT option_mask, const wchar_t *filename); + +// VLDSetReportHook - Installs or uninstalls a client-defined reporting function by hooking it +// into the C run-time debug reporting process (debug version only). +// +// mode: The action to take: VLD_RPTHOOK_INSTALL or VLD_RPTHOOK_REMOVE. +// +// pfnNewHook: Report hook to install or remove. +// +// Return Value: +// +// int: 0 if success. +// +__declspec(dllimport) int VLDSetReportHook(int mode, VLD_REPORT_HOOK pfnNewHook); + +// VLDResolveCallstacks - Performs symbol resolution for all saved extent CallStack's that have +// been tracked by Visual Leak Detector. This function is necessary for applications that +// dynamically load and unload modules, and through which memory leaks might be included. +// If this is NOT called, stack traces may have stack frames with no symbol information. This +// happens because the symbol API's cannot look up symbols for a binary / module that has been unloaded +// from the process. +// +// Return Value: +// +// int: 0 if successfully resolved all callstacks. +// +__declspec(dllexport) int VLDResolveCallstacks(); + +#ifdef __cplusplus +} +#endif // __cplusplus + +#else // !_DEBUG + +#define VLDEnable() +#define VLDDisable() +#define VLDRestore() +#define VLDGlobalDisable() +#define VLDGlobalEnable() +#define VLDReportLeaks() (0) +#define VLDReportThreadLeaks() (0) +#define VLDGetLeaksCount() (0) +#define VLDGetThreadLeaksCount() (0) +#define VLDMarkAllLeaksAsReported() +#define VLDMarkThreadLeaksAsReported(a) +#define VLDRefreshModules() +#define VLDEnableModule(a) +#define VLDDisableModule(b) +#define VLDGetOptions() (0) +#define VLDGetReportFilename(a) +#define VLDSetOptions(a, b, c) +#define VLDSetReportHook(a, b) +#define VLDSetModulesList(a) +#define VLDGetModulesList(a, b) (FALSE) +#define VLDSetReportOptions(a, b) +#define VLDResolveCallstacks() (0) + +#endif // _DEBUG diff --git a/3rdParty/VLD/include/vld_def.h b/3rdParty/VLD/include/vld_def.h new file mode 100644 index 0000000..265de49 --- /dev/null +++ b/3rdParty/VLD/include/vld_def.h @@ -0,0 +1,49 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Visual Leak Detector - Import Library Header +// Copyright (c) 2005-2014 VLD Team +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +// See COPYING.txt for the full terms of the GNU Lesser General Public License. +// +//////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#ifndef _WCHAR_T_DEFINED +# include +#endif + +#define VLD_OPT_AGGREGATE_DUPLICATES 0x0001 // If set, aggregate duplicate leaks in the leak report. +#define VLD_OPT_MODULE_LIST_INCLUDE 0x0002 // If set, modules in the module list are included, all others are excluded. +#define VLD_OPT_REPORT_TO_DEBUGGER 0x0004 // If set, the memory leak report is sent to the debugger. +#define VLD_OPT_REPORT_TO_FILE 0x0008 // If set, the memory leak report is sent to a file. +#define VLD_OPT_SAFE_STACK_WALK 0x0010 // If set, the stack is walked using the "safe" method (StackWalk64). +#define VLD_OPT_SELF_TEST 0x0020 // If set, perform a self-test to verify memory leak self-checking. +#define VLD_OPT_SLOW_DEBUGGER_DUMP 0x0040 // If set, inserts a slight delay between sending output to the debugger. +#define VLD_OPT_START_DISABLED 0x0080 // If set, memory leak detection will initially disabled. +#define VLD_OPT_TRACE_INTERNAL_FRAMES 0x0100 // If set, include useless frames (e.g. internal to VLD) in call stacks. +#define VLD_OPT_UNICODE_REPORT 0x0200 // If set, the leak report will be encoded UTF-16 instead of ASCII. +#define VLD_OPT_VLDOFF 0x0400 // If set, VLD will be completely deactivated. It will not attach to any modules. +#define VLD_OPT_REPORT_TO_STDOUT 0x0800 // If set, the memory leak report is sent to stdout. +#define VLD_OPT_SKIP_HEAPFREE_LEAKS 0x1000 // If set, VLD skip HeapFree memory leaks. +#define VLD_OPT_VALIDATE_HEAPFREE 0x2000 // If set, VLD verifies and reports heap consistency for HeapFree calls. +#define VLD_OPT_SKIP_CRTSTARTUP_LEAKS 0x4000 // If set, VLD skip crt srtartup memory leaks. + +#define VLD_RPTHOOK_INSTALL 0 +#define VLD_RPTHOOK_REMOVE 1 + +typedef int (__cdecl * VLD_REPORT_HOOK)(int reportType, wchar_t *message, int *returnValue); diff --git a/3rdParty/VLD/lib/vld.lib b/3rdParty/VLD/lib/vld.lib new file mode 100644 index 0000000..c189b1c Binary files /dev/null and b/3rdParty/VLD/lib/vld.lib differ diff --git a/Data/Engine/Models/capsule.obj b/Data/Engine/Models/capsule.obj new file mode 100644 index 0000000..3f6929a --- /dev/null +++ b/Data/Engine/Models/capsule.obj @@ -0,0 +1,2716 @@ +v 0.000000 -0.777785 -0.415735 +v 0.000000 -0.853553 -0.353553 +v 0.000000 -0.915735 -0.277785 +v 0.097545 -0.500000 -0.490393 +v 0.095671 -0.597545 -0.480970 +v 0.090120 -0.691342 -0.453064 +v 0.081106 -0.777785 -0.407747 +v 0.068975 -0.853553 -0.346760 +v 0.054193 -0.915735 -0.272447 +v 0.037329 -0.961940 -0.187665 +v 0.019030 -0.990393 -0.095671 +v 0.191342 -0.500000 -0.461940 +v 0.187665 -0.597545 -0.453064 +v 0.176777 -0.691342 -0.426777 +v 0.159095 -0.777785 -0.384089 +v 0.135299 -0.853553 -0.326641 +v 0.106304 -0.915735 -0.256640 +v 0.073223 -0.961940 -0.176777 +v 0.037329 -0.990393 -0.090120 +v 0.277785 -0.500000 -0.415735 +v 0.272448 -0.597545 -0.407747 +v 0.256640 -0.691342 -0.384089 +v 0.230970 -0.777785 -0.345671 +v 0.196424 -0.853553 -0.293969 +v 0.154329 -0.915735 -0.230970 +v 0.106304 -0.961940 -0.159095 +v 0.054193 -0.990393 -0.081106 +v 0.353553 -0.500000 -0.353553 +v 0.346760 -0.597545 -0.346760 +v 0.326641 -0.691342 -0.326641 +v 0.293969 -0.777785 -0.293969 +v 0.250000 -0.853553 -0.250000 +v 0.196424 -0.915735 -0.196424 +v 0.135299 -0.961940 -0.135299 +v 0.068975 -0.990393 -0.068975 +v 0.415735 -0.500000 -0.277785 +v 0.407747 -0.597545 -0.272447 +v 0.384089 -0.691342 -0.256640 +v 0.345671 -0.777785 -0.230970 +v 0.293969 -0.853553 -0.196424 +v 0.230970 -0.915735 -0.154329 +v 0.159095 -0.961940 -0.106304 +v 0.081106 -0.990393 -0.054193 +v 0.461940 -0.500000 -0.191342 +v 0.453064 -0.597545 -0.187665 +v 0.426777 -0.691342 -0.176777 +v 0.384089 -0.777785 -0.159095 +v 0.326641 -0.853553 -0.135299 +v 0.256640 -0.915735 -0.106304 +v 0.176777 -0.961940 -0.073223 +v 0.090120 -0.990393 -0.037329 +v 0.490393 -0.500000 -0.097545 +v 0.480970 -0.597545 -0.095671 +v 0.453064 -0.691342 -0.090120 +v 0.407747 -0.777785 -0.081106 +v 0.346760 -0.853553 -0.068975 +v 0.272448 -0.915735 -0.054193 +v 0.187665 -0.961940 -0.037329 +v 0.095671 -0.990393 -0.019030 +v 0.500000 -0.500000 0.000000 +v 0.490393 -0.597545 0.000000 +v 0.461940 -0.691342 0.000000 +v 0.415735 -0.777785 0.000000 +v 0.353553 -0.853553 0.000000 +v 0.277785 -0.915735 0.000000 +v 0.191342 -0.961940 0.000000 +v 0.097545 -0.990393 0.000000 +v 0.490393 -0.500000 0.097545 +v 0.480970 -0.597545 0.095671 +v 0.453064 -0.691342 0.090120 +v 0.407747 -0.777785 0.081106 +v 0.346760 -0.853553 0.068975 +v 0.272448 -0.915735 0.054193 +v 0.187665 -0.961940 0.037329 +v 0.095671 -0.990393 0.019030 +v 0.461940 -0.500000 0.191342 +v 0.453064 -0.597545 0.187665 +v 0.426777 -0.691342 0.176777 +v 0.384089 -0.777785 0.159095 +v 0.326641 -0.853553 0.135299 +v 0.256640 -0.915735 0.106304 +v 0.176777 -0.961940 0.073223 +v 0.090120 -0.990393 0.037329 +v 0.415735 -0.500000 0.277785 +v 0.407747 -0.597545 0.272448 +v 0.384089 -0.691342 0.256640 +v 0.345671 -0.777785 0.230970 +v 0.293969 -0.853553 0.196424 +v 0.230970 -0.915735 0.154329 +v 0.159095 -0.961940 0.106304 +v 0.081106 -0.990393 0.054193 +v 0.353553 -0.500000 0.353553 +v 0.346760 -0.597545 0.346760 +v 0.326641 -0.691342 0.326641 +v 0.293969 -0.777785 0.293969 +v 0.250000 -0.853553 0.250000 +v 0.196424 -0.915735 0.196424 +v 0.135299 -0.961940 0.135299 +v 0.068975 -0.990393 0.068975 +v 0.277785 -0.500000 0.415735 +v 0.272447 -0.597545 0.407747 +v 0.256640 -0.691342 0.384089 +v 0.230970 -0.777785 0.345671 +v 0.196424 -0.853553 0.293969 +v 0.154329 -0.915735 0.230970 +v 0.106304 -0.961940 0.159095 +v 0.054193 -0.990393 0.081106 +v 0.191342 -0.500000 0.461940 +v 0.187665 -0.597545 0.453064 +v 0.176777 -0.691342 0.426777 +v 0.159095 -0.777785 0.384089 +v 0.135299 -0.853553 0.326641 +v 0.106304 -0.915735 0.256640 +v 0.073223 -0.961940 0.176777 +v 0.037329 -0.990393 0.090120 +v 0.097545 -0.500000 0.490392 +v 0.095671 -0.597545 0.480970 +v 0.090120 -0.691342 0.453064 +v 0.081106 -0.777785 0.407746 +v 0.068975 -0.853553 0.346760 +v 0.054193 -0.915735 0.272448 +v 0.037329 -0.961940 0.187665 +v 0.019030 -0.990393 0.095671 +v -0.000000 -0.500000 0.500000 +v 0.000000 -0.597545 0.490393 +v 0.000000 -0.691342 0.461940 +v 0.000000 -0.777785 0.415735 +v 0.000000 -0.853553 0.353553 +v 0.000000 -0.915735 0.277785 +v 0.000000 -0.961940 0.191342 +v 0.000000 -0.990393 0.097545 +v -0.097545 -0.500000 0.490392 +v -0.095671 -0.597545 0.480970 +v -0.090120 -0.691342 0.453064 +v -0.081106 -0.777785 0.407746 +v -0.068975 -0.853553 0.346760 +v -0.054193 -0.915735 0.272448 +v -0.037329 -0.961940 0.187665 +v -0.019030 -0.990393 0.095671 +v -0.191342 -0.500000 0.461939 +v -0.187665 -0.597545 0.453064 +v -0.176777 -0.691342 0.426777 +v -0.159095 -0.777785 0.384089 +v -0.135299 -0.853553 0.326641 +v -0.106304 -0.915735 0.256640 +v -0.073223 -0.961940 0.176777 +v -0.037329 -0.990393 0.090120 +v -0.277785 -0.500000 0.415734 +v -0.272447 -0.597545 0.407746 +v -0.256640 -0.691342 0.384089 +v -0.230970 -0.777785 0.345671 +v -0.196424 -0.853553 0.293969 +v -0.154329 -0.915735 0.230970 +v -0.106304 -0.961940 0.159095 +v -0.054193 -0.990393 0.081106 +v -0.353553 -0.500000 0.353553 +v -0.346760 -0.597545 0.346760 +v -0.326641 -0.691342 0.326641 +v -0.293969 -0.777785 0.293969 +v -0.250000 -0.853553 0.250000 +v -0.196424 -0.915735 0.196424 +v -0.135299 -0.961940 0.135299 +v -0.068975 -0.990393 0.068975 +v -0.415734 -0.500000 0.277785 +v -0.407746 -0.597545 0.272447 +v -0.384089 -0.691342 0.256640 +v -0.345671 -0.777785 0.230970 +v -0.293969 -0.853553 0.196424 +v -0.230970 -0.915735 0.154329 +v -0.159095 -0.961940 0.106304 +v -0.081106 -0.990393 0.054193 +v -0.461939 -0.500000 0.191341 +v -0.453063 -0.597545 0.187665 +v -0.426777 -0.691342 0.176777 +v -0.384089 -0.777785 0.159095 +v -0.326641 -0.853553 0.135299 +v -0.256640 -0.915735 0.106304 +v -0.176777 -0.961940 0.073223 +v -0.090120 -0.990393 0.037329 +v -0.490392 -0.500000 0.097545 +v -0.480970 -0.597545 0.095671 +v -0.453064 -0.691342 0.090120 +v -0.407746 -0.777785 0.081106 +v -0.346760 -0.853553 0.068975 +v -0.272447 -0.915735 0.054193 +v -0.187665 -0.961940 0.037329 +v -0.095671 -0.990393 0.019030 +v -0.499999 -0.500000 -0.000000 +v -0.490392 -0.597545 -0.000000 +v -0.461940 -0.691342 -0.000000 +v -0.415735 -0.777785 0.000000 +v -0.353553 -0.853553 0.000000 +v -0.277785 -0.915735 0.000000 +v -0.191342 -0.961940 0.000000 +v -0.097545 -0.990393 0.000000 +v -0.490392 -0.500000 -0.097545 +v -0.480970 -0.597545 -0.095671 +v -0.453064 -0.691342 -0.090120 +v -0.407746 -0.777785 -0.081106 +v -0.346760 -0.853553 -0.068975 +v -0.272447 -0.915735 -0.054193 +v -0.187665 -0.961940 -0.037329 +v -0.095671 -0.990393 -0.019030 +v -0.461939 -0.500000 -0.191342 +v -0.453063 -0.597545 -0.187665 +v -0.426776 -0.691342 -0.176777 +v -0.384089 -0.777785 -0.159095 +v -0.326641 -0.853553 -0.135299 +v -0.256640 -0.915735 -0.106304 +v -0.176777 -0.961940 -0.073223 +v -0.090120 -0.990393 -0.037329 +v -0.415734 -0.500000 -0.277785 +v -0.407746 -0.597545 -0.272447 +v -0.384089 -0.691342 -0.256640 +v -0.345671 -0.777785 -0.230970 +v -0.293969 -0.853553 -0.196424 +v -0.230970 -0.915735 -0.154329 +v -0.159095 -0.961940 -0.106304 +v -0.081106 -0.990393 -0.054193 +v -0.353553 -0.500000 -0.353553 +v -0.346760 -0.597545 -0.346760 +v -0.326641 -0.691342 -0.326641 +v -0.293969 -0.777785 -0.293969 +v -0.250000 -0.853553 -0.250000 +v -0.196423 -0.915735 -0.196424 +v -0.135299 -0.961940 -0.135299 +v -0.068975 -0.990393 -0.068975 +v -0.277785 -0.500000 -0.415734 +v -0.272447 -0.597545 -0.407746 +v -0.256640 -0.691342 -0.384089 +v -0.230970 -0.777785 -0.345671 +v -0.196424 -0.853553 -0.293969 +v -0.154329 -0.915735 -0.230970 +v -0.106304 -0.961940 -0.159095 +v -0.054193 -0.990393 -0.081106 +v -0.191341 -0.500000 -0.461939 +v -0.187665 -0.597545 -0.453063 +v -0.176776 -0.691342 -0.426777 +v -0.159095 -0.777785 -0.384089 +v -0.135299 -0.853553 -0.326641 +v -0.106304 -0.915735 -0.256640 +v -0.073223 -0.961940 -0.176777 +v -0.037329 -0.990393 -0.090120 +v -0.097545 -0.500000 -0.490392 +v -0.095671 -0.597545 -0.480970 +v -0.090120 -0.691342 -0.453064 +v -0.081106 -0.777785 -0.407746 +v -0.068975 -0.853553 -0.346760 +v -0.054193 -0.915735 -0.272447 +v -0.037329 -0.961940 -0.187665 +v -0.019030 -0.990393 -0.095671 +v 0.000000 -0.500000 -0.499999 +v 0.000000 -0.597545 -0.490392 +v 0.000000 -0.691342 -0.461940 +v 0.000000 -0.961940 -0.191342 +v 0.000000 -0.990393 -0.097545 +v 0.000000 -1.000000 0.000000 +v -0.000000 0.990393 -0.097545 +v -0.000000 0.961940 -0.191342 +v -0.000000 0.915735 -0.277785 +v -0.000000 0.853553 -0.353553 +v -0.000000 0.777785 -0.415735 +v -0.000000 0.691342 -0.461940 +v -0.000000 0.597545 -0.490393 +v 0.019030 0.990393 -0.095671 +v 0.037329 0.961940 -0.187665 +v 0.054193 0.915735 -0.272447 +v 0.068975 0.853553 -0.346760 +v 0.081106 0.777785 -0.407746 +v 0.090120 0.691342 -0.453064 +v 0.095671 0.597545 -0.480970 +v 0.097545 0.500000 -0.490393 +v 0.037329 0.990393 -0.090120 +v 0.073223 0.961940 -0.176777 +v 0.106304 0.915735 -0.256640 +v 0.135299 0.853553 -0.326641 +v 0.159095 0.777785 -0.384089 +v 0.176777 0.691342 -0.426777 +v 0.187665 0.597545 -0.453064 +v 0.191342 0.500000 -0.461940 +v 0.054193 0.990393 -0.081106 +v 0.106304 0.961940 -0.159095 +v 0.154329 0.915735 -0.230970 +v 0.196424 0.853553 -0.293969 +v 0.230970 0.777785 -0.345671 +v 0.256640 0.691342 -0.384089 +v 0.272447 0.597545 -0.407746 +v 0.277785 0.500000 -0.415735 +v 0.068975 0.990393 -0.068975 +v 0.135299 0.961940 -0.135299 +v 0.196424 0.915735 -0.196424 +v 0.250000 0.853553 -0.250000 +v 0.293969 0.777785 -0.293969 +v 0.326641 0.691342 -0.326641 +v 0.346760 0.597545 -0.346760 +v 0.353553 0.500000 -0.353553 +v 0.081106 0.990393 -0.054193 +v 0.159095 0.961940 -0.106304 +v 0.230970 0.915735 -0.154329 +v 0.293969 0.853553 -0.196424 +v 0.345671 0.777785 -0.230970 +v 0.384089 0.691342 -0.256640 +v 0.407746 0.597545 -0.272447 +v 0.415735 0.500000 -0.277785 +v 0.090120 0.990393 -0.037329 +v 0.176777 0.961940 -0.073223 +v 0.256640 0.915735 -0.106304 +v 0.326641 0.853553 -0.135299 +v 0.384089 0.777785 -0.159095 +v 0.426777 0.691342 -0.176777 +v 0.453064 0.597545 -0.187665 +v 0.461940 0.500000 -0.191342 +v 0.095671 0.990393 -0.019030 +v 0.187665 0.961940 -0.037329 +v 0.272447 0.915735 -0.054193 +v 0.346760 0.853553 -0.068975 +v 0.407746 0.777785 -0.081106 +v 0.453064 0.691342 -0.090120 +v 0.480970 0.597545 -0.095671 +v 0.490392 0.500000 -0.097545 +v 0.097545 0.990393 0.000000 +v 0.191342 0.961940 0.000000 +v 0.277785 0.915735 0.000000 +v 0.353553 0.853553 0.000000 +v 0.415735 0.777785 0.000000 +v 0.461940 0.691342 0.000000 +v 0.490392 0.597545 0.000000 +v 0.500000 0.500000 0.000000 +v 0.095671 0.990393 0.019030 +v 0.187665 0.961940 0.037329 +v 0.272447 0.915735 0.054193 +v 0.346760 0.853553 0.068975 +v 0.407746 0.777785 0.081106 +v 0.453064 0.691342 0.090120 +v 0.480970 0.597545 0.095671 +v 0.490392 0.500000 0.097545 +v 0.090120 0.990393 0.037329 +v 0.176777 0.961940 0.073223 +v 0.256640 0.915735 0.106304 +v 0.326641 0.853553 0.135299 +v 0.384089 0.777785 0.159095 +v 0.426777 0.691342 0.176777 +v 0.453064 0.597545 0.187665 +v 0.461939 0.500000 0.191342 +v 0.081106 0.990393 0.054193 +v 0.159095 0.961940 0.106304 +v 0.230970 0.915735 0.154329 +v 0.293969 0.853553 0.196424 +v 0.345671 0.777785 0.230970 +v 0.384089 0.691342 0.256640 +v 0.407746 0.597545 0.272448 +v 0.415734 0.500000 0.277785 +v 0.068975 0.990393 0.068975 +v 0.135299 0.961940 0.135299 +v 0.196424 0.915735 0.196424 +v 0.250000 0.853553 0.250000 +v 0.293969 0.777785 0.293969 +v 0.326641 0.691342 0.326641 +v 0.346760 0.597545 0.346760 +v 0.353553 0.500000 0.353553 +v 0.054193 0.990393 0.081106 +v 0.106304 0.961940 0.159095 +v 0.154329 0.915735 0.230970 +v 0.196424 0.853553 0.293969 +v 0.230970 0.777785 0.345671 +v 0.256640 0.691342 0.384089 +v 0.272447 0.597545 0.407747 +v 0.277785 0.500000 0.415735 +v 0.037329 0.990393 0.090120 +v 0.073223 0.961940 0.176777 +v 0.106304 0.915735 0.256640 +v 0.135299 0.853553 0.326641 +v 0.159095 0.777785 0.384089 +v 0.176777 0.691342 0.426777 +v 0.187665 0.597545 0.453064 +v 0.191341 0.500000 0.461940 +v 0.019030 0.990393 0.095671 +v 0.037329 0.961940 0.187665 +v 0.054193 0.915735 0.272448 +v 0.068975 0.853553 0.346760 +v 0.081106 0.777785 0.407746 +v 0.090120 0.691342 0.453064 +v 0.095671 0.597545 0.480970 +v 0.097545 0.500000 0.490392 +v -0.000000 0.990393 0.097545 +v -0.000000 0.961940 0.191342 +v -0.000000 0.915735 0.277785 +v -0.000000 0.853553 0.353553 +v -0.000000 0.777785 0.415735 +v -0.000000 0.691342 0.461940 +v -0.000000 0.597545 0.490393 +v -0.000000 0.500000 0.500000 +v -0.019030 0.990393 0.095671 +v -0.037329 0.961940 0.187665 +v -0.054193 0.915735 0.272448 +v -0.068975 0.853553 0.346760 +v -0.081106 0.777785 0.407746 +v -0.090120 0.691342 0.453064 +v -0.095671 0.597545 0.480970 +v -0.097545 0.500000 0.490392 +v -0.037329 0.990393 0.090120 +v -0.073223 0.961940 0.176777 +v -0.106304 0.915735 0.256640 +v -0.135299 0.853553 0.326641 +v -0.159095 0.777785 0.384089 +v -0.176777 0.691342 0.426777 +v -0.187665 0.597545 0.453064 +v -0.191342 0.500000 0.461939 +v -0.054193 0.990393 0.081106 +v -0.106304 0.961940 0.159095 +v -0.154329 0.915735 0.230970 +v -0.196424 0.853553 0.293969 +v -0.230970 0.777785 0.345671 +v -0.256640 0.691342 0.384089 +v -0.272448 0.597545 0.407746 +v -0.277785 0.500000 0.415734 +v -0.068975 0.990393 0.068975 +v -0.135299 0.961940 0.135299 +v -0.196424 0.915735 0.196424 +v -0.250000 0.853553 0.250000 +v -0.293969 0.777785 0.293969 +v -0.326641 0.691342 0.326641 +v -0.346760 0.597545 0.346760 +v -0.353553 0.500000 0.353553 +v -0.081106 0.990393 0.054193 +v -0.159095 0.961940 0.106304 +v -0.230970 0.915735 0.154329 +v -0.293969 0.853553 0.196424 +v -0.345671 0.777785 0.230970 +v -0.384089 0.691342 0.256640 +v -0.407746 0.597545 0.272447 +v -0.415735 0.500000 0.277785 +v -0.000000 1.000000 0.000000 +v -0.090120 0.990393 0.037329 +v -0.176777 0.961940 0.073223 +v -0.256640 0.915735 0.106304 +v -0.326641 0.853553 0.135299 +v -0.384089 0.777785 0.159095 +v -0.426777 0.691342 0.176777 +v -0.453064 0.597545 0.187665 +v -0.461940 0.500000 0.191341 +v -0.095671 0.990393 0.019030 +v -0.187665 0.961940 0.037329 +v -0.272447 0.915735 0.054193 +v -0.346760 0.853553 0.068975 +v -0.407746 0.777785 0.081106 +v -0.453064 0.691342 0.090120 +v -0.480970 0.597545 0.095671 +v -0.490392 0.500000 0.097545 +v -0.097545 0.990393 0.000000 +v -0.191342 0.961940 0.000000 +v -0.277785 0.915735 0.000000 +v -0.353553 0.853553 0.000000 +v -0.415735 0.777785 0.000000 +v -0.461940 0.691342 0.000000 +v -0.490392 0.597545 0.000000 +v -0.500000 0.500000 -0.000000 +v -0.095671 0.990393 -0.019030 +v -0.187665 0.961940 -0.037329 +v -0.272447 0.915735 -0.054193 +v -0.346760 0.853553 -0.068975 +v -0.407746 0.777785 -0.081106 +v -0.453064 0.691342 -0.090120 +v -0.480970 0.597545 -0.095671 +v -0.490392 0.500000 -0.097545 +v -0.090120 0.990393 -0.037329 +v -0.176777 0.961940 -0.073223 +v -0.256640 0.915735 -0.106304 +v -0.326641 0.853553 -0.135299 +v -0.384089 0.777785 -0.159095 +v -0.426777 0.691342 -0.176777 +v -0.453064 0.597545 -0.187665 +v -0.461939 0.500000 -0.191342 +v -0.081106 0.990393 -0.054193 +v -0.159095 0.961940 -0.106304 +v -0.230970 0.915735 -0.154329 +v -0.293969 0.853553 -0.196424 +v -0.345671 0.777785 -0.230970 +v -0.384089 0.691342 -0.256640 +v -0.407746 0.597545 -0.272447 +v -0.415734 0.500000 -0.277785 +v -0.068975 0.990393 -0.068975 +v -0.135299 0.961940 -0.135299 +v -0.196424 0.915735 -0.196424 +v -0.250000 0.853553 -0.250000 +v -0.293969 0.777785 -0.293969 +v -0.326641 0.691342 -0.326641 +v -0.346760 0.597545 -0.346760 +v -0.353553 0.500000 -0.353553 +v -0.054193 0.990393 -0.081106 +v -0.106304 0.961940 -0.159095 +v -0.154329 0.915735 -0.230970 +v -0.196424 0.853553 -0.293969 +v -0.230970 0.777785 -0.345671 +v -0.256640 0.691342 -0.384089 +v -0.272447 0.597545 -0.407746 +v -0.277785 0.500000 -0.415734 +v -0.037329 0.990393 -0.090120 +v -0.073223 0.961940 -0.176777 +v -0.106304 0.915735 -0.256640 +v -0.135299 0.853553 -0.326641 +v -0.159095 0.777785 -0.384089 +v -0.176777 0.691342 -0.426776 +v -0.187665 0.597545 -0.453063 +v -0.191341 0.500000 -0.461939 +v -0.019030 0.990393 -0.095671 +v -0.037329 0.961940 -0.187665 +v -0.054193 0.915735 -0.272447 +v -0.068975 0.853553 -0.346760 +v -0.081106 0.777785 -0.407746 +v -0.090120 0.691342 -0.453063 +v -0.095671 0.597545 -0.480970 +v -0.097545 0.500000 -0.490392 +v 0.000000 0.500000 -0.499999 +vt 0.734375 0.000000 +vt 0.750000 0.062500 +vt 0.718750 0.062500 +vt 0.750000 0.500000 +vt 0.718750 0.437500 +vt 0.750000 0.437500 +vt 0.718750 0.375000 +vt 0.750000 0.375000 +vt 0.718750 0.312500 +vt 0.750000 0.312500 +vt 0.750000 0.250000 +vt 0.718750 0.250000 +vt 0.750000 0.187500 +vt 0.718750 0.187500 +vt 0.718750 0.125000 +vt 0.750000 0.125000 +vt 0.687500 0.062500 +vt 0.703125 0.000000 +vt 0.718750 0.500000 +vt 0.687500 0.437500 +vt 0.687500 0.375000 +vt 0.687500 0.312500 +vt 0.687500 0.250000 +vt 0.687500 0.187500 +vt 0.687500 0.125000 +vt 0.656250 0.375000 +vt 0.656250 0.312500 +vt 0.656250 0.250000 +vt 0.656250 0.187500 +vt 0.656250 0.125000 +vt 0.656250 0.062500 +vt 0.671875 0.000000 +vt 0.687500 0.500000 +vt 0.656250 0.437500 +vt 0.625000 0.062500 +vt 0.640625 0.000000 +vt 0.656250 0.500000 +vt 0.625000 0.437500 +vt 0.625000 0.375000 +vt 0.625000 0.312500 +vt 0.625000 0.250000 +vt 0.625000 0.187500 +vt 0.625000 0.125000 +vt 0.593750 0.250000 +vt 0.593750 0.187500 +vt 0.593750 0.125000 +vt 0.593750 0.062500 +vt 0.609375 0.000000 +vt 0.625000 0.500000 +vt 0.593750 0.437500 +vt 0.593750 0.375000 +vt 0.593750 0.312500 +vt 0.578125 0.000000 +vt 0.562500 0.062500 +vt 0.593750 0.500000 +vt 0.562500 0.437500 +vt 0.562500 0.375000 +vt 0.562500 0.312500 +vt 0.562500 0.250000 +vt 0.562500 0.187500 +vt 0.562500 0.125000 +vt 0.531250 0.250000 +vt 0.531250 0.187500 +vt 0.531250 0.125000 +vt 0.531250 0.062500 +vt 0.546875 0.000000 +vt 0.562500 0.500000 +vt 0.531250 0.437500 +vt 0.531250 0.375000 +vt 0.531250 0.312500 +vt 0.515625 0.000000 +vt 0.500000 0.062500 +vt 0.531250 0.500000 +vt 0.500000 0.437500 +vt 0.500000 0.375000 +vt 0.500000 0.312500 +vt 0.500000 0.250000 +vt 0.500000 0.187500 +vt 0.500000 0.125000 +vt 0.468750 0.250000 +vt 0.468750 0.187500 +vt 0.468750 0.125000 +vt 0.468750 0.062500 +vt 0.484375 0.000000 +vt 0.500000 0.500000 +vt 0.468750 0.437500 +vt 0.468750 0.375000 +vt 0.468750 0.312500 +vt 0.437500 0.437500 +vt 0.437500 0.375000 +vt 0.437500 0.312500 +vt 0.437500 0.250000 +vt 0.437500 0.187500 +vt 0.437500 0.125000 +vt 0.437500 0.062500 +vt 0.453125 0.000000 +vt 0.468750 0.500000 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.421875 0.000000 +vt 0.437500 0.500000 +vt 0.406250 0.437500 +vt 0.406250 0.375000 +vt 0.406250 0.312500 +vt 0.406250 0.250000 +vt 0.406250 0.187500 +vt 0.375000 0.437500 +vt 0.375000 0.375000 +vt 0.375000 0.312500 +vt 0.375000 0.250000 +vt 0.375000 0.187500 +vt 0.375000 0.125000 +vt 0.375000 0.062500 +vt 0.390625 0.000000 +vt 0.406250 0.500000 +vt 0.343750 0.125000 +vt 0.343750 0.062500 +vt 0.359375 0.000000 +vt 0.375000 0.500000 +vt 0.343750 0.437500 +vt 0.343750 0.375000 +vt 0.343750 0.312500 +vt 0.343750 0.250000 +vt 0.343750 0.187500 +vt 0.312500 0.312500 +vt 0.312500 0.250000 +vt 0.312500 0.187500 +vt 0.312500 0.125000 +vt 0.312500 0.062500 +vt 0.328125 0.000000 +vt 0.343750 0.500000 +vt 0.312500 0.437500 +vt 0.312500 0.375000 +vt 0.281250 0.125000 +vt 0.281250 0.062500 +vt 0.296875 0.000000 +vt 0.312500 0.500000 +vt 0.281250 0.437500 +vt 0.281250 0.375000 +vt 0.281250 0.312500 +vt 0.281250 0.250000 +vt 0.281250 0.187500 +vt 0.250000 0.312500 +vt 0.250000 0.250000 +vt 0.250000 0.187500 +vt 0.250000 0.125000 +vt 0.250000 0.062500 +vt 0.265625 0.000000 +vt 0.281250 0.500000 +vt 0.250000 0.437500 +vt 0.250000 0.375000 +vt 0.218750 0.062500 +vt 0.234375 0.000000 +vt 0.250000 0.500000 +vt 0.218750 0.437500 +vt 0.218750 0.375000 +vt 0.218750 0.312500 +vt 0.218750 0.250000 +vt 0.218750 0.187500 +vt 0.218750 0.125000 +vt 0.187500 0.250000 +vt 0.187500 0.187500 +vt 0.187500 0.125000 +vt 0.187500 0.062500 +vt 0.203125 0.000000 +vt 0.218750 0.500000 +vt 0.187500 0.437500 +vt 0.187500 0.375000 +vt 0.187500 0.312500 +vt 0.171875 0.000000 +vt 0.156250 0.062500 +vt 0.187500 0.500000 +vt 0.156250 0.437500 +vt 0.156250 0.375000 +vt 0.156250 0.312500 +vt 0.156250 0.250000 +vt 0.156250 0.187500 +vt 0.156250 0.125000 +vt 0.125000 0.250000 +vt 0.125000 0.187500 +vt 0.125000 0.125000 +vt 0.125000 0.062500 +vt 0.140625 0.000000 +vt 0.156250 0.500000 +vt 0.125000 0.437500 +vt 0.125000 0.375000 +vt 0.125000 0.312500 +vt 0.125000 0.500000 +vt 0.093750 0.437500 +vt 0.093750 0.375000 +vt 0.093750 0.312500 +vt 0.093750 0.250000 +vt 0.093750 0.187500 +vt 0.093750 0.125000 +vt 0.093750 0.062500 +vt 0.109375 0.000000 +vt 0.062500 0.250000 +vt 0.062500 0.187500 +vt 0.062500 0.125000 +vt 0.062500 0.062500 +vt 0.078125 0.000000 +vt 0.093750 0.500000 +vt 0.062500 0.437500 +vt 0.062500 0.375000 +vt 0.062500 0.312500 +vt 0.031250 0.437500 +vt 0.031250 0.375000 +vt 0.031250 0.312500 +vt 0.031250 0.250000 +vt 0.031250 0.187500 +vt 0.031250 0.125000 +vt 0.031250 0.062500 +vt 0.046875 0.000000 +vt 0.062500 0.500000 +vt 0.000000 0.125000 +vt 0.000000 0.062500 +vt 0.015625 0.000000 +vt 0.031250 0.500000 +vt 0.000000 0.437500 +vt 0.000000 0.375000 +vt 0.000000 0.312500 +vt 0.000000 0.250000 +vt 0.000000 0.187500 +vt 1.000000 0.375000 +vt 0.968750 0.437500 +vt 0.968750 0.375000 +vt 0.968750 0.312500 +vt 1.000000 0.312500 +vt 0.968750 0.250000 +vt 1.000000 0.250000 +vt 1.000000 0.187500 +vt 0.968750 0.187500 +vt 0.968750 0.125000 +vt 1.000000 0.125000 +vt 1.000000 0.062500 +vt 0.968750 0.062500 +vt 0.984375 0.000000 +vt 1.000000 0.500000 +vt 1.000000 0.437500 +vt 0.937500 0.125000 +vt 0.937500 0.062500 +vt 0.953125 0.000000 +vt 0.968750 0.500000 +vt 0.937500 0.437500 +vt 0.937500 0.375000 +vt 0.937500 0.312500 +vt 0.937500 0.250000 +vt 0.937500 0.187500 +vt 0.906250 0.312500 +vt 0.906250 0.250000 +vt 0.906250 0.187500 +vt 0.906250 0.125000 +vt 0.906250 0.062500 +vt 0.921875 0.000000 +vt 0.937500 0.500000 +vt 0.906250 0.437500 +vt 0.906250 0.375000 +vt 0.875000 0.125000 +vt 0.875000 0.062500 +vt 0.890625 0.000000 +vt 0.906250 0.500000 +vt 0.875000 0.437500 +vt 0.875000 0.375000 +vt 0.875000 0.312500 +vt 0.875000 0.250000 +vt 0.875000 0.187500 +vt 0.468750 0.500000 +vt 0.843750 0.250000 +vt 0.843750 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.843750 0.187500 +vt 0.562500 0.500000 +vt 0.843750 0.125000 +vt 0.406250 0.500000 +vt 0.375000 0.500000 +vt 0.843750 0.062500 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.031250 0.500000 +vt 0.859375 0.000000 +vt 0.875000 0.500000 +vt 0.843750 0.437500 +vt 0.125000 0.500000 +vt 0.843750 0.375000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.843750 0.312500 +vt 0.875000 0.500000 +vt 0.531250 0.500000 +vt 0.828125 0.000000 +vt 0.812500 0.062500 +vt 0.812500 0.437500 +vt 0.625000 0.500000 +vt 0.812500 0.375000 +vt 0.312500 0.500000 +vt 0.281250 0.500000 +vt 0.812500 0.312500 +vt 0.750000 0.500000 +vt 0.812500 0.250000 +vt 0.937500 0.500000 +vt 0.812500 0.187500 +vt 0.437500 0.500000 +vt 0.812500 0.125000 +vt 0.687500 0.500000 +vt 0.781250 0.250000 +vt 0.187500 0.500000 +vt 0.781250 0.187500 +vt 0.843750 0.500000 +vt 0.781250 0.125000 +vt 0.593750 0.500000 +vt 0.781250 0.062500 +vt 0.093750 0.500000 +vt 0.343750 0.500000 +vt 0.796875 0.000000 +vt 0.781250 0.437500 +vt 0.500000 0.500000 +vt 0.781250 0.375000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.781250 0.312500 +vt 0.718750 0.500000 +vt 0.765625 0.000000 +vt 0.156250 0.500000 +vt 0.906250 0.500000 +vt 0.656250 0.500000 +vt 0.062500 0.500000 +vt 0.968750 0.500000 +vt 0.718750 0.562500 +vt 0.750000 0.937500 +vt 0.734375 1.000000 +vt 0.718750 0.937500 +vt 0.718750 0.875000 +vt 0.750000 0.875000 +vt 0.718750 0.812500 +vt 0.750000 0.812500 +vt 0.718750 0.750000 +vt 0.750000 0.750000 +vt 0.718750 0.687500 +vt 0.750000 0.687500 +vt 0.718750 0.625000 +vt 0.750000 0.625000 +vt 0.750000 0.562500 +vt 0.687500 0.625000 +vt 0.687500 0.562500 +vt 0.703125 1.000000 +vt 0.687500 0.937500 +vt 0.687500 0.875000 +vt 0.687500 0.812500 +vt 0.687500 0.750000 +vt 0.687500 0.687500 +vt 0.656250 0.750000 +vt 0.656250 0.687500 +vt 0.656250 0.625000 +vt 0.656250 0.562500 +vt 0.671875 1.000000 +vt 0.656250 0.937500 +vt 0.656250 0.875000 +vt 0.656250 0.812500 +vt 0.625000 0.562500 +vt 0.640625 1.000000 +vt 0.625000 0.937500 +vt 0.625000 0.875000 +vt 0.625000 0.812500 +vt 0.625000 0.750000 +vt 0.625000 0.687500 +vt 0.625000 0.625000 +vt 0.593750 0.750000 +vt 0.593750 0.687500 +vt 0.593750 0.625000 +vt 0.593750 0.562500 +vt 0.609375 1.000000 +vt 0.593750 0.937500 +vt 0.593750 0.875000 +vt 0.593750 0.812500 +vt 0.562500 0.562500 +vt 0.578125 1.000000 +vt 0.562500 0.937500 +vt 0.562500 0.875000 +vt 0.562500 0.812500 +vt 0.562500 0.750000 +vt 0.562500 0.687500 +vt 0.562500 0.625000 +vt 0.531250 0.750000 +vt 0.531250 0.687500 +vt 0.531250 0.625000 +vt 0.531250 0.562500 +vt 0.546875 1.000000 +vt 0.531250 0.937500 +vt 0.531250 0.875000 +vt 0.531250 0.812500 +vt 0.500000 0.875000 +vt 0.500000 0.812500 +vt 0.500000 0.750000 +vt 0.500000 0.687500 +vt 0.500000 0.625000 +vt 0.500000 0.562500 +vt 0.515625 1.000000 +vt 0.500000 0.937500 +vt 0.468750 0.625000 +vt 0.468750 0.562500 +vt 0.484375 1.000000 +vt 0.468750 0.937500 +vt 0.468750 0.875000 +vt 0.468750 0.812500 +vt 0.468750 0.750000 +vt 0.468750 0.687500 +vt 0.437500 0.937500 +vt 0.437500 0.875000 +vt 0.437500 0.812500 +vt 0.437500 0.750000 +vt 0.437500 0.687500 +vt 0.437500 0.625000 +vt 0.437500 0.562500 +vt 0.453125 1.000000 +vt 0.406250 0.625000 +vt 0.406250 0.562500 +vt 0.421875 1.000000 +vt 0.406250 0.937500 +vt 0.406250 0.875000 +vt 0.406250 0.812500 +vt 0.406250 0.750000 +vt 0.406250 0.687500 +vt 0.375000 0.812500 +vt 0.375000 0.750000 +vt 0.375000 0.687500 +vt 0.375000 0.625000 +vt 0.375000 0.562500 +vt 0.390625 1.000000 +vt 0.375000 0.937500 +vt 0.375000 0.875000 +vt 0.343750 0.625000 +vt 0.343750 0.562500 +vt 0.359375 1.000000 +vt 0.343750 0.937500 +vt 0.343750 0.875000 +vt 0.343750 0.812500 +vt 0.343750 0.750000 +vt 0.343750 0.687500 +vt 0.312500 0.812500 +vt 0.312500 0.750000 +vt 0.312500 0.687500 +vt 0.312500 0.625000 +vt 0.312500 0.562500 +vt 0.328125 1.000000 +vt 0.312500 0.937500 +vt 0.312500 0.875000 +vt 0.281250 0.625000 +vt 0.281250 0.562500 +vt 0.296875 1.000000 +vt 0.281250 0.937500 +vt 0.281250 0.875000 +vt 0.281250 0.812500 +vt 0.281250 0.750000 +vt 0.281250 0.687500 +vt 0.250000 0.750000 +vt 0.250000 0.687500 +vt 0.250000 0.625000 +vt 0.250000 0.562500 +vt 0.265625 1.000000 +vt 0.250000 0.937500 +vt 0.250000 0.875000 +vt 0.250000 0.812500 +vt 0.218750 0.562500 +vt 0.234375 1.000000 +vt 0.218750 0.937500 +vt 0.218750 0.875000 +vt 0.218750 0.812500 +vt 0.218750 0.750000 +vt 0.218750 0.687500 +vt 0.218750 0.625000 +vt 0.187500 0.750000 +vt 0.187500 0.687500 +vt 0.187500 0.625000 +vt 0.187500 0.562500 +vt 0.203125 1.000000 +vt 0.187500 0.937500 +vt 0.187500 0.875000 +vt 0.187500 0.812500 +vt 0.171875 1.000000 +vt 0.156250 0.937500 +vt 0.156250 0.875000 +vt 0.156250 0.812500 +vt 0.156250 0.750000 +vt 0.156250 0.687500 +vt 0.156250 0.625000 +vt 0.156250 0.562500 +vt 0.125000 0.687500 +vt 0.125000 0.625000 +vt 0.125000 0.562500 +vt 0.140625 1.000000 +vt 0.125000 0.937500 +vt 0.125000 0.875000 +vt 0.125000 0.812500 +vt 0.125000 0.750000 +vt 0.093750 0.937500 +vt 0.093750 0.875000 +vt 0.093750 0.812500 +vt 0.093750 0.750000 +vt 0.093750 0.687500 +vt 0.093750 0.625000 +vt 0.093750 0.562500 +vt 0.109375 1.000000 +vt 0.062500 0.687500 +vt 0.062500 0.625000 +vt 0.062500 0.562500 +vt 0.078125 1.000000 +vt 0.062500 0.937500 +vt 0.062500 0.875000 +vt 0.062500 0.812500 +vt 0.062500 0.750000 +vt 0.031250 0.875000 +vt 0.031250 0.812500 +vt 0.031250 0.750000 +vt 0.031250 0.687500 +vt 0.031250 0.625000 +vt 0.031250 0.562500 +vt 0.046875 1.000000 +vt 0.031250 0.937500 +vt 0.000000 0.687500 +vt 0.000000 0.625000 +vt 0.000000 0.562500 +vt 0.015625 1.000000 +vt 0.000000 0.937500 +vt 0.000000 0.875000 +vt 0.000000 0.812500 +vt 0.000000 0.750000 +vt 1.000000 0.875000 +vt 0.968750 0.812500 +vt 1.000000 0.812500 +vt 0.968750 0.750000 +vt 1.000000 0.750000 +vt 1.000000 0.687500 +vt 0.968750 0.687500 +vt 1.000000 0.625000 +vt 0.968750 0.625000 +vt 1.000000 0.562500 +vt 0.968750 0.562500 +vt 1.000000 0.500000 +vt 1.000000 0.937500 +vt 0.984375 1.000000 +vt 0.968750 0.937500 +vt 0.968750 0.875000 +vt 0.937500 0.625000 +vt 0.937500 0.562500 +vt 0.953125 1.000000 +vt 0.937500 0.937500 +vt 0.937500 0.875000 +vt 0.937500 0.812500 +vt 0.937500 0.750000 +vt 0.937500 0.687500 +vt 0.906250 0.750000 +vt 0.906250 0.687500 +vt 0.906250 0.625000 +vt 0.906250 0.562500 +vt 0.921875 1.000000 +vt 0.906250 0.937500 +vt 0.906250 0.875000 +vt 0.906250 0.812500 +vt 0.875000 0.562500 +vt 0.890625 1.000000 +vt 0.875000 0.937500 +vt 0.875000 0.875000 +vt 0.875000 0.812500 +vt 0.875000 0.750000 +vt 0.875000 0.687500 +vt 0.875000 0.625000 +vt 0.843750 0.750000 +vt 0.843750 0.687500 +vt 0.843750 0.625000 +vt 0.843750 0.562500 +vt 0.859375 1.000000 +vt 0.843750 0.937500 +vt 0.843750 0.875000 +vt 0.843750 0.812500 +vt 0.812500 0.562500 +vt 0.828125 1.000000 +vt 0.812500 0.937500 +vt 0.812500 0.875000 +vt 0.812500 0.812500 +vt 0.812500 0.750000 +vt 0.812500 0.687500 +vt 0.812500 0.625000 +vt 0.781250 0.687500 +vt 0.781250 0.625000 +vt 0.781250 0.562500 +vt 0.796875 1.000000 +vt 0.781250 0.937500 +vt 0.781250 0.875000 +vt 0.781250 0.812500 +vt 0.781250 0.750000 +vt 0.765625 1.000000 +vn 0.0097 -0.9951 -0.0980 +vn 0.0975 -0.0975 -0.9904 +vn 0.0938 -0.2890 -0.9527 +vn 0.0865 -0.4696 -0.8786 +vn 0.0759 -0.6326 -0.7708 +vn 0.0624 -0.7715 -0.6332 +vn 0.0464 -0.8810 -0.4709 +vn 0.0286 -0.9565 -0.2902 +vn 0.0846 -0.9565 -0.2790 +vn 0.0286 -0.9951 -0.0942 +vn 0.2889 -0.0976 -0.9524 +vn 0.2779 -0.2890 -0.9161 +vn 0.2563 -0.4696 -0.8448 +vn 0.2248 -0.6326 -0.7412 +vn 0.1847 -0.7715 -0.6088 +vn 0.1374 -0.8810 -0.4528 +vn 0.4162 -0.4696 -0.7786 +vn 0.3651 -0.6326 -0.6831 +vn 0.2999 -0.7715 -0.5611 +vn 0.2231 -0.8810 -0.4173 +vn 0.1374 -0.9565 -0.2572 +vn 0.0464 -0.9951 -0.0869 +vn 0.4691 -0.0975 -0.8777 +vn 0.4513 -0.2890 -0.8443 +vn 0.1850 -0.9565 -0.2254 +vn 0.0625 -0.9951 -0.0761 +vn 0.6314 -0.0975 -0.7693 +vn 0.6073 -0.2890 -0.7400 +vn 0.5601 -0.4696 -0.6825 +vn 0.4913 -0.6326 -0.5987 +vn 0.4036 -0.7715 -0.4918 +vn 0.3002 -0.8810 -0.3658 +vn 0.5987 -0.6326 -0.4913 +vn 0.4918 -0.7715 -0.4036 +vn 0.3658 -0.8810 -0.3002 +vn 0.2254 -0.9566 -0.1850 +vn 0.0761 -0.9951 -0.0625 +vn 0.7693 -0.0976 -0.6314 +vn 0.7400 -0.2890 -0.6073 +vn 0.6825 -0.4696 -0.5601 +vn 0.0869 -0.9951 -0.0464 +vn 0.8777 -0.0975 -0.4691 +vn 0.8443 -0.2890 -0.4513 +vn 0.7786 -0.4696 -0.4162 +vn 0.6831 -0.6326 -0.3651 +vn 0.5611 -0.7715 -0.2999 +vn 0.4173 -0.8810 -0.2230 +vn 0.2571 -0.9565 -0.1375 +vn 0.7412 -0.6326 -0.2248 +vn 0.6088 -0.7715 -0.1847 +vn 0.4528 -0.8810 -0.1374 +vn 0.2790 -0.9565 -0.0846 +vn 0.0942 -0.9951 -0.0286 +vn 0.9524 -0.0975 -0.2889 +vn 0.9161 -0.2890 -0.2779 +vn 0.8448 -0.4696 -0.2563 +vn 0.0980 -0.9951 -0.0096 +vn 0.9904 -0.0976 -0.0975 +vn 0.9527 -0.2890 -0.0938 +vn 0.8786 -0.4696 -0.0865 +vn 0.7708 -0.6326 -0.0759 +vn 0.6332 -0.7715 -0.0624 +vn 0.4709 -0.8810 -0.0464 +vn 0.2902 -0.9565 -0.0286 +vn 0.6332 -0.7715 0.0624 +vn 0.4709 -0.8810 0.0464 +vn 0.2902 -0.9565 0.0286 +vn 0.0980 -0.9951 0.0096 +vn 0.9904 -0.0975 0.0975 +vn 0.9527 -0.2890 0.0938 +vn 0.8786 -0.4696 0.0865 +vn 0.7708 -0.6326 0.0759 +vn 0.9161 -0.2890 0.2779 +vn 0.8448 -0.4696 0.2563 +vn 0.7412 -0.6326 0.2248 +vn 0.6088 -0.7715 0.1847 +vn 0.4528 -0.8810 0.1374 +vn 0.2790 -0.9566 0.0846 +vn 0.0942 -0.9951 0.0286 +vn 0.9524 -0.0975 0.2889 +vn 0.4173 -0.8810 0.2231 +vn 0.2571 -0.9565 0.1374 +vn 0.0869 -0.9951 0.0464 +vn 0.8777 -0.0975 0.4691 +vn 0.8443 -0.2890 0.4513 +vn 0.7786 -0.4696 0.4162 +vn 0.6831 -0.6326 0.3651 +vn 0.5611 -0.7715 0.2999 +vn 0.7400 -0.2890 0.6073 +vn 0.6825 -0.4696 0.5601 +vn 0.5987 -0.6326 0.4913 +vn 0.4918 -0.7715 0.4036 +vn 0.3658 -0.8810 0.3002 +vn 0.2254 -0.9565 0.1850 +vn 0.0761 -0.9951 0.0625 +vn 0.7693 -0.0975 0.6314 +vn 0.3002 -0.8810 0.3658 +vn 0.1850 -0.9565 0.2254 +vn 0.0625 -0.9951 0.0761 +vn 0.6314 -0.0975 0.7693 +vn 0.6073 -0.2890 0.7400 +vn 0.5601 -0.4696 0.6825 +vn 0.4913 -0.6326 0.5987 +vn 0.4036 -0.7715 0.4918 +vn 0.4162 -0.4696 0.7786 +vn 0.3651 -0.6326 0.6831 +vn 0.2999 -0.7715 0.5611 +vn 0.2230 -0.8810 0.4173 +vn 0.1374 -0.9565 0.2571 +vn 0.0464 -0.9951 0.0869 +vn 0.4691 -0.0975 0.8777 +vn 0.4513 -0.2890 0.8443 +vn 0.0846 -0.9565 0.2790 +vn 0.0286 -0.9951 0.0942 +vn 0.2889 -0.0975 0.9524 +vn 0.2779 -0.2890 0.9161 +vn 0.2563 -0.4696 0.8448 +vn 0.2248 -0.6326 0.7412 +vn 0.1847 -0.7715 0.6088 +vn 0.1374 -0.8810 0.4528 +vn 0.0865 -0.4696 0.8786 +vn 0.0759 -0.6326 0.7708 +vn 0.0624 -0.7715 0.6332 +vn 0.0464 -0.8810 0.4709 +vn 0.0286 -0.9565 0.2902 +vn 0.0097 -0.9951 0.0980 +vn 0.0975 -0.0975 0.9904 +vn 0.0938 -0.2890 0.9527 +vn -0.0286 -0.9565 0.2902 +vn -0.0097 -0.9951 0.0980 +vn -0.0976 -0.0975 0.9904 +vn -0.0938 -0.2890 0.9527 +vn -0.0865 -0.4696 0.8786 +vn -0.0759 -0.6326 0.7708 +vn -0.0624 -0.7715 0.6332 +vn -0.0464 -0.8810 0.4709 +vn -0.2248 -0.6326 0.7412 +vn -0.1847 -0.7715 0.6088 +vn -0.1374 -0.8810 0.4528 +vn -0.0846 -0.9565 0.2790 +vn -0.0286 -0.9951 0.0942 +vn -0.2889 -0.0975 0.9524 +vn -0.2779 -0.2890 0.9161 +vn -0.2563 -0.4696 0.8448 +vn -0.0464 -0.9951 0.0869 +vn -0.4691 -0.0975 0.8777 +vn -0.4513 -0.2890 0.8443 +vn -0.4162 -0.4696 0.7786 +vn -0.3651 -0.6326 0.6831 +vn -0.2999 -0.7715 0.5611 +vn -0.2230 -0.8810 0.4173 +vn -0.1374 -0.9565 0.2571 +vn -0.4036 -0.7715 0.4918 +vn -0.3002 -0.8810 0.3658 +vn -0.1850 -0.9566 0.2254 +vn -0.0625 -0.9951 0.0761 +vn -0.6314 -0.0975 0.7693 +vn -0.6073 -0.2890 0.7400 +vn -0.5601 -0.4696 0.6825 +vn -0.4913 -0.6326 0.5987 +vn -0.7693 -0.0975 0.6314 +vn -0.7400 -0.2890 0.6073 +vn -0.6825 -0.4696 0.5601 +vn -0.5987 -0.6326 0.4913 +vn -0.4918 -0.7715 0.4036 +vn -0.3658 -0.8810 0.3002 +vn -0.2254 -0.9566 0.1850 +vn -0.0761 -0.9951 0.0625 +vn -0.5611 -0.7715 0.2999 +vn -0.4173 -0.8810 0.2230 +vn -0.2571 -0.9565 0.1375 +vn -0.0869 -0.9951 0.0464 +vn -0.8777 -0.0975 0.4691 +vn -0.8443 -0.2890 0.4513 +vn -0.7786 -0.4696 0.4162 +vn -0.6831 -0.6326 0.3651 +vn -0.9161 -0.2890 0.2779 +vn -0.8448 -0.4696 0.2563 +vn -0.7412 -0.6326 0.2248 +vn -0.6088 -0.7715 0.1847 +vn -0.4528 -0.8810 0.1374 +vn -0.2790 -0.9566 0.0846 +vn -0.0942 -0.9951 0.0286 +vn -0.9524 -0.0975 0.2889 +vn -0.4709 -0.8810 0.0464 +vn -0.2902 -0.9565 0.0286 +vn -0.0980 -0.9951 0.0096 +vn -0.9904 -0.0975 0.0975 +vn -0.9527 -0.2890 0.0938 +vn -0.8786 -0.4696 0.0865 +vn -0.7708 -0.6326 0.0759 +vn -0.6332 -0.7715 0.0624 +vn -0.9527 -0.2890 -0.0938 +vn -0.8786 -0.4696 -0.0865 +vn -0.7708 -0.6326 -0.0759 +vn -0.6332 -0.7715 -0.0624 +vn -0.4709 -0.8810 -0.0464 +vn -0.2902 -0.9565 -0.0286 +vn -0.0980 -0.9951 -0.0096 +vn -0.9904 -0.0975 -0.0975 +vn -0.4528 -0.8810 -0.1374 +vn -0.2790 -0.9565 -0.0846 +vn -0.0942 -0.9951 -0.0286 +vn -0.9524 -0.0975 -0.2889 +vn -0.9161 -0.2890 -0.2779 +vn -0.8448 -0.4696 -0.2563 +vn -0.7412 -0.6326 -0.2248 +vn -0.6088 -0.7715 -0.1847 +vn -0.7786 -0.4696 -0.4162 +vn -0.6831 -0.6326 -0.3651 +vn -0.5611 -0.7715 -0.2999 +vn -0.4173 -0.8810 -0.2231 +vn -0.2571 -0.9565 -0.1374 +vn -0.0869 -0.9951 -0.0464 +vn -0.8777 -0.0975 -0.4691 +vn -0.8443 -0.2890 -0.4513 +vn -0.2254 -0.9566 -0.1850 +vn -0.0761 -0.9951 -0.0625 +vn -0.7693 -0.0975 -0.6314 +vn -0.7400 -0.2890 -0.6073 +vn -0.6825 -0.4696 -0.5601 +vn -0.5987 -0.6326 -0.4913 +vn -0.4918 -0.7715 -0.4036 +vn -0.3658 -0.8810 -0.3002 +vn 0.9952 0.0000 0.0980 +vn -0.4913 -0.6326 -0.5987 +vn -0.4714 -0.0000 -0.8819 +vn -0.4036 -0.7715 -0.4918 +vn 0.8819 0.0000 -0.4714 +vn -0.3002 -0.8810 -0.3658 +vn 0.7730 0.0000 0.6344 +vn -0.1850 -0.9565 -0.2254 +vn -0.0980 -0.0000 0.9952 +vn -0.9569 -0.0000 0.2903 +vn -0.0625 -0.9951 -0.0761 +vn -0.6314 -0.0975 -0.7693 +vn -0.6344 -0.0000 0.7730 +vn -0.6073 -0.2890 -0.7400 +vn -0.2903 -0.0000 -0.9569 +vn -0.5601 -0.4696 -0.6825 +vn -0.7730 -0.0000 -0.6344 +vn 0.9569 0.0000 -0.2903 +vn -0.0464 -0.9951 -0.0869 +vn -0.4691 -0.0975 -0.8777 +vn 0.6344 0.0000 -0.7730 +vn -0.4513 -0.2890 -0.8443 +vn 0.2903 0.0000 0.9569 +vn -0.4162 -0.4696 -0.7786 +vn -0.0980 0.0000 -0.9952 +vn -0.3651 -0.6326 -0.6831 +vn -0.9569 -0.0000 -0.2903 +vn -0.2999 -0.7715 -0.5611 +vn 0.9569 0.0000 0.2903 +vn -0.2230 -0.8810 -0.4173 +vn 0.2903 0.0000 -0.9569 +vn -0.1374 -0.9565 -0.2571 +vn -0.2248 -0.6326 -0.7412 +vn -0.2903 -0.0000 0.9569 +vn -0.1847 -0.7715 -0.6088 +vn -0.6344 -0.0000 -0.7730 +vn -0.1374 -0.8810 -0.4528 +vn 0.7730 0.0000 -0.6344 +vn -0.0846 -0.9565 -0.2790 +vn -0.7730 -0.0000 0.6344 +vn 0.6344 0.0000 0.7730 +vn -0.0286 -0.9951 -0.0942 +vn -0.2889 -0.0975 -0.9524 +vn 0.9952 0.0000 -0.0980 +vn -0.2779 -0.2890 -0.9161 +vn -0.9952 -0.0000 0.0980 +vn -0.2563 -0.4696 -0.8448 +vn 0.0980 -0.0000 0.9952 +vn 0.0980 0.0000 -0.9952 +vn -0.0097 -0.9951 -0.0980 +vn -0.0975 -0.0975 -0.9904 +vn -0.4714 -0.0000 0.8819 +vn -0.0938 -0.2890 -0.9527 +vn -0.8819 -0.0000 -0.4714 +vn -0.0865 -0.4696 -0.8786 +vn 0.4714 0.0000 -0.8819 +vn -0.0759 -0.6326 -0.7708 +vn 0.8819 0.0000 0.4714 +vn -0.0624 -0.7715 -0.6332 +vn -0.8819 -0.0000 0.4714 +vn -0.0464 -0.8810 -0.4709 +vn 0.4714 0.0000 0.8819 +vn -0.0286 -0.9565 -0.2902 +vn -0.9952 -0.0000 -0.0980 +vn 0.0975 0.0975 -0.9904 +vn 0.0097 0.9951 -0.0980 +vn 0.0286 0.9565 -0.2902 +vn 0.0464 0.8810 -0.4709 +vn 0.0624 0.7715 -0.6332 +vn 0.0759 0.6326 -0.7708 +vn 0.0865 0.4696 -0.8786 +vn 0.0938 0.2890 -0.9527 +vn 0.2779 0.2890 -0.9161 +vn 0.2889 0.0975 -0.9524 +vn 0.0286 0.9951 -0.0942 +vn 0.0846 0.9565 -0.2790 +vn 0.1374 0.8810 -0.4528 +vn 0.1847 0.7715 -0.6088 +vn 0.2248 0.6326 -0.7412 +vn 0.2563 0.4696 -0.8448 +vn 0.2999 0.7715 -0.5611 +vn 0.3651 0.6326 -0.6831 +vn 0.4162 0.4696 -0.7786 +vn 0.4513 0.2890 -0.8443 +vn 0.4691 0.0975 -0.8777 +vn 0.0464 0.9951 -0.0869 +vn 0.1374 0.9565 -0.2571 +vn 0.2231 0.8810 -0.4173 +vn 0.6314 0.0975 -0.7693 +vn 0.0625 0.9951 -0.0761 +vn 0.1850 0.9565 -0.2254 +vn 0.3002 0.8810 -0.3658 +vn 0.4036 0.7715 -0.4918 +vn 0.4913 0.6326 -0.5987 +vn 0.5601 0.4696 -0.6825 +vn 0.6073 0.2890 -0.7400 +vn 0.4918 0.7715 -0.4036 +vn 0.5987 0.6326 -0.4913 +vn 0.6825 0.4696 -0.5601 +vn 0.7400 0.2890 -0.6073 +vn 0.7693 0.0975 -0.6314 +vn 0.0761 0.9951 -0.0625 +vn 0.2254 0.9566 -0.1850 +vn 0.3658 0.8810 -0.3002 +vn 0.8777 0.0975 -0.4691 +vn 0.0869 0.9951 -0.0464 +vn 0.2571 0.9565 -0.1374 +vn 0.4173 0.8810 -0.2231 +vn 0.5611 0.7715 -0.2999 +vn 0.6831 0.6326 -0.3651 +vn 0.7786 0.4696 -0.4162 +vn 0.8443 0.2890 -0.4513 +vn 0.7412 0.6326 -0.2248 +vn 0.8448 0.4696 -0.2563 +vn 0.9161 0.2890 -0.2779 +vn 0.9524 0.0975 -0.2889 +vn 0.0942 0.9951 -0.0286 +vn 0.2790 0.9565 -0.0846 +vn 0.4528 0.8810 -0.1374 +vn 0.6088 0.7715 -0.1847 +vn 0.2902 0.9565 -0.0286 +vn 0.4709 0.8810 -0.0464 +vn 0.6332 0.7715 -0.0624 +vn 0.7708 0.6326 -0.0759 +vn 0.8786 0.4696 -0.0865 +vn 0.9527 0.2890 -0.0938 +vn 0.9904 0.0975 -0.0975 +vn 0.0980 0.9951 -0.0097 +vn 0.8786 0.4696 0.0865 +vn 0.9527 0.2890 0.0938 +vn 0.9904 0.0975 0.0976 +vn 0.0980 0.9951 0.0097 +vn 0.2902 0.9565 0.0286 +vn 0.4709 0.8810 0.0464 +vn 0.6332 0.7715 0.0624 +vn 0.7708 0.6326 0.0759 +vn 0.2790 0.9565 0.0846 +vn 0.4528 0.8810 0.1374 +vn 0.6088 0.7715 0.1847 +vn 0.7412 0.6326 0.2248 +vn 0.8448 0.4696 0.2563 +vn 0.9161 0.2890 0.2779 +vn 0.9524 0.0975 0.2889 +vn 0.0942 0.9951 0.0286 +vn 0.7786 0.4696 0.4162 +vn 0.8443 0.2890 0.4513 +vn 0.8777 0.0975 0.4691 +vn 0.0869 0.9951 0.0464 +vn 0.2571 0.9565 0.1374 +vn 0.4173 0.8810 0.2231 +vn 0.5611 0.7715 0.2999 +vn 0.6831 0.6326 0.3651 +vn 0.3658 0.8810 0.3002 +vn 0.4918 0.7715 0.4036 +vn 0.5987 0.6326 0.4913 +vn 0.6825 0.4696 0.5601 +vn 0.7400 0.2890 0.6073 +vn 0.7693 0.0975 0.6314 +vn 0.0761 0.9951 0.0625 +vn 0.2254 0.9565 0.1850 +vn 0.6073 0.2890 0.7400 +vn 0.6314 0.0975 0.7693 +vn 0.0625 0.9951 0.0761 +vn 0.1850 0.9565 0.2254 +vn 0.3002 0.8810 0.3658 +vn 0.4036 0.7715 0.4918 +vn 0.4913 0.6326 0.5987 +vn 0.5601 0.4696 0.6825 +vn 0.2231 0.8810 0.4173 +vn 0.2999 0.7715 0.5611 +vn 0.3651 0.6326 0.6831 +vn 0.4162 0.4696 0.7786 +vn 0.4513 0.2890 0.8443 +vn 0.4691 0.0975 0.8777 +vn 0.0464 0.9951 0.0869 +vn 0.1374 0.9565 0.2571 +vn 0.2779 0.2890 0.9161 +vn 0.2889 0.0975 0.9524 +vn 0.0286 0.9951 0.0942 +vn 0.0846 0.9565 0.2790 +vn 0.1374 0.8810 0.4528 +vn 0.1847 0.7715 0.6088 +vn 0.2248 0.6326 0.7412 +vn 0.2563 0.4696 0.8448 +vn 0.0624 0.7715 0.6332 +vn 0.0759 0.6326 0.7708 +vn 0.0865 0.4696 0.8786 +vn 0.0938 0.2890 0.9527 +vn 0.0975 0.0975 0.9904 +vn 0.0097 0.9951 0.0980 +vn 0.0286 0.9565 0.2902 +vn 0.0464 0.8810 0.4709 +vn -0.0976 0.0975 0.9904 +vn -0.0097 0.9951 0.0980 +vn -0.0286 0.9565 0.2902 +vn -0.0464 0.8810 0.4709 +vn -0.0624 0.7715 0.6332 +vn -0.0759 0.6326 0.7708 +vn -0.0865 0.4696 0.8786 +vn -0.0938 0.2890 0.9527 +vn -0.2248 0.6326 0.7412 +vn -0.2563 0.4696 0.8448 +vn -0.2779 0.2890 0.9161 +vn -0.2889 0.0975 0.9524 +vn -0.0286 0.9951 0.0942 +vn -0.0846 0.9565 0.2790 +vn -0.1374 0.8810 0.4528 +vn -0.1847 0.7715 0.6088 +vn -0.0464 0.9951 0.0869 +vn -0.1374 0.9565 0.2571 +vn -0.2231 0.8810 0.4173 +vn -0.2999 0.7715 0.5611 +vn -0.3651 0.6326 0.6831 +vn -0.4162 0.4696 0.7786 +vn -0.4513 0.2890 0.8443 +vn -0.4691 0.0975 0.8777 +vn -0.4913 0.6326 0.5987 +vn -0.5601 0.4696 0.6825 +vn -0.6073 0.2890 0.7400 +vn -0.6314 0.0975 0.7693 +vn -0.0625 0.9951 0.0761 +vn -0.1850 0.9565 0.2254 +vn -0.3002 0.8810 0.3658 +vn -0.4036 0.7715 0.4918 +vn -0.2254 0.9565 0.1850 +vn -0.3658 0.8810 0.3002 +vn -0.4918 0.7715 0.4036 +vn -0.5987 0.6326 0.4913 +vn -0.6825 0.4696 0.5601 +vn -0.7400 0.2890 0.6073 +vn -0.7693 0.0975 0.6314 +vn -0.0761 0.9951 0.0625 +vn -0.7786 0.4696 0.4162 +vn -0.8443 0.2890 0.4513 +vn -0.8777 0.0975 0.4691 +vn -0.0869 0.9951 0.0464 +vn -0.2571 0.9565 0.1374 +vn -0.4173 0.8810 0.2231 +vn -0.5611 0.7715 0.2999 +vn -0.6831 0.6326 0.3651 +vn -0.2790 0.9565 0.0846 +vn -0.4528 0.8810 0.1374 +vn -0.6088 0.7715 0.1847 +vn -0.7412 0.6326 0.2248 +vn -0.8448 0.4696 0.2563 +vn -0.9161 0.2890 0.2779 +vn -0.9524 0.0975 0.2889 +vn -0.0942 0.9951 0.0286 +vn -0.8786 0.4696 0.0865 +vn -0.9527 0.2890 0.0938 +vn -0.9904 0.0975 0.0975 +vn -0.0980 0.9951 0.0097 +vn -0.2902 0.9565 0.0286 +vn -0.4709 0.8810 0.0464 +vn -0.6332 0.7715 0.0624 +vn -0.7708 0.6326 0.0759 +vn -0.4709 0.8810 -0.0464 +vn -0.6332 0.7715 -0.0624 +vn -0.7708 0.6326 -0.0759 +vn -0.8786 0.4696 -0.0865 +vn -0.9527 0.2890 -0.0938 +vn -0.9904 0.0975 -0.0976 +vn -0.0980 0.9951 -0.0097 +vn -0.2902 0.9565 -0.0286 +vn -0.9161 0.2890 -0.2779 +vn -0.9524 0.0975 -0.2889 +vn -0.0942 0.9951 -0.0286 +vn -0.2790 0.9565 -0.0846 +vn -0.4528 0.8810 -0.1374 +vn -0.6088 0.7715 -0.1847 +vn -0.7412 0.6326 -0.2248 +vn -0.8448 0.4696 -0.2563 +vn -0.5611 0.7715 -0.2999 +vn -0.6831 0.6326 -0.3651 +vn -0.7786 0.4696 -0.4162 +vn -0.8443 0.2890 -0.4513 +vn -0.8777 0.0975 -0.4691 +vn -0.0869 0.9951 -0.0464 +vn -0.2571 0.9565 -0.1374 +vn -0.4173 0.8810 -0.2231 +vn -0.7693 0.0975 -0.6314 +vn -0.0761 0.9951 -0.0625 +vn -0.2254 0.9565 -0.1850 +vn -0.3658 0.8810 -0.3002 +vn -0.4918 0.7715 -0.4036 +vn -0.5987 0.6326 -0.4913 +vn -0.6825 0.4696 -0.5601 +vn -0.7400 0.2890 -0.6073 +vn -0.4036 0.7715 -0.4918 +vn -0.4913 0.6326 -0.5987 +vn -0.5601 0.4696 -0.6825 +vn -0.6073 0.2890 -0.7400 +vn -0.6314 0.0975 -0.7693 +vn -0.0625 0.9951 -0.0761 +vn -0.1850 0.9565 -0.2254 +vn -0.3002 0.8810 -0.3658 +vn -0.4691 0.0975 -0.8777 +vn -0.0464 0.9951 -0.0869 +vn -0.1374 0.9565 -0.2571 +vn -0.2231 0.8810 -0.4173 +vn -0.2999 0.7715 -0.5611 +vn -0.3651 0.6326 -0.6831 +vn -0.4162 0.4696 -0.7786 +vn -0.4513 0.2890 -0.8443 +vn -0.2248 0.6326 -0.7412 +vn -0.2563 0.4696 -0.8448 +vn -0.2779 0.2890 -0.9161 +vn -0.2889 0.0975 -0.9524 +vn -0.0286 0.9951 -0.0942 +vn -0.0846 0.9565 -0.2790 +vn -0.1374 0.8810 -0.4528 +vn -0.1847 0.7715 -0.6088 +vn -0.0097 0.9951 -0.0980 +vn -0.0286 0.9565 -0.2902 +vn -0.0464 0.8810 -0.4709 +vn -0.0624 0.7715 -0.6332 +vn -0.0759 0.6326 -0.7708 +vn -0.0865 0.4696 -0.8786 +vn -0.0938 0.2890 -0.9527 +vn -0.0975 0.0975 -0.9904 +vn 0.2889 -0.0975 -0.9524 +vn 0.2230 -0.8810 -0.4173 +vn 0.1374 -0.9566 -0.2571 +vn 0.2254 -0.9565 -0.1850 +vn 0.7693 -0.0975 -0.6314 +vn 0.4173 -0.8810 -0.2231 +vn 0.2571 -0.9565 -0.1374 +vn 0.9524 -0.0976 -0.2889 +vn 0.9904 -0.0975 -0.0975 +vn 0.9904 -0.0975 0.0976 +vn 0.2790 -0.9565 0.0846 +vn 0.4173 -0.8810 0.2230 +vn -0.0975 -0.0975 0.9904 +vn -0.0846 -0.9566 0.2790 +vn -0.2231 -0.8810 0.4173 +vn -0.1374 -0.9566 0.2571 +vn -0.1850 -0.9565 0.2254 +vn -0.2254 -0.9565 0.1850 +vn -0.4173 -0.8810 0.2231 +vn -0.2571 -0.9565 0.1374 +vn -0.2790 -0.9565 0.0846 +vn -0.9904 -0.0975 -0.0976 +vn -0.4173 -0.8810 -0.2230 +vn -0.2254 -0.9565 -0.1850 +vn -0.2231 -0.8810 -0.4173 +vn 0.0286 0.9566 -0.2902 +vn 0.1374 0.9566 -0.2571 +vn 0.1850 0.9566 -0.2254 +vn 0.2254 0.9565 -0.1850 +vn 0.4173 0.8810 -0.2230 +vn 0.9524 0.0976 -0.2889 +vn 0.4173 0.8810 0.2230 +vn 0.1850 0.9566 0.2254 +vn 0.0976 0.0975 0.9904 +vn -0.1850 0.9566 0.2254 +vn -0.2571 0.9566 0.1374 +vn -0.4173 0.8810 0.2230 +vn -0.2571 0.9566 -0.1374 +vn -0.4173 0.8810 -0.2230 +vn -0.0976 0.0975 -0.9904 +usemtl None +s off +f 257/1/1 256/2/1 11/3/1 +f 252/4/2 5/5/2 253/6/2 +f 253/6/3 6/7/3 254/8/3 +f 254/8/4 7/9/4 1/10/4 +f 2/11/5 7/9/5 8/12/5 +f 3/13/6 8/12/6 9/14/6 +f 3/13/7 10/15/7 255/16/7 +f 255/16/8 11/3/8 256/2/8 +f 10/15/9 19/17/9 11/3/9 +f 257/18/10 11/3/10 19/17/10 +f 4/19/11 13/20/11 5/5/11 +f 5/5/12 14/21/12 6/7/12 +f 7/9/13 14/21/13 15/22/13 +f 7/9/14 16/23/14 8/12/14 +f 8/12/15 17/24/15 9/14/15 +f 9/14/16 18/25/16 10/15/16 +f 15/22/17 22/26/17 23/27/17 +f 15/22/18 24/28/18 16/23/18 +f 16/23/19 25/29/19 17/24/19 +f 18/25/20 25/29/20 26/30/20 +f 19/17/21 26/30/21 27/31/21 +f 257/32/22 19/17/22 27/31/22 +f 12/33/23 21/34/23 13/20/23 +f 14/21/24 21/34/24 22/26/24 +f 26/30/25 35/35/25 27/31/25 +f 257/36/26 27/31/26 35/35/26 +f 20/37/27 29/38/27 21/34/27 +f 22/26/28 29/38/28 30/39/28 +f 23/27/29 30/39/29 31/40/29 +f 23/27/30 32/41/30 24/28/30 +f 25/29/31 32/41/31 33/42/31 +f 25/29/32 34/43/32 26/30/32 +f 31/40/33 40/44/33 32/41/33 +f 33/42/34 40/44/34 41/45/34 +f 33/42/35 42/46/35 34/43/35 +f 34/43/36 43/47/36 35/35/36 +f 257/48/37 35/35/37 43/47/37 +f 28/49/38 37/50/38 29/38/38 +f 30/39/39 37/50/39 38/51/39 +f 31/40/40 38/51/40 39/52/40 +f 257/53/41 43/47/41 51/54/41 +f 36/55/42 45/56/42 37/50/42 +f 38/51/43 45/56/43 46/57/43 +f 39/52/44 46/57/44 47/58/44 +f 39/52/45 48/59/45 40/44/45 +f 41/45/46 48/59/46 49/60/46 +f 41/45/47 50/61/47 42/46/47 +f 43/47/48 50/61/48 51/54/48 +f 47/58/49 56/62/49 48/59/49 +f 49/60/50 56/62/50 57/63/50 +f 50/61/51 57/63/51 58/64/51 +f 51/54/52 58/64/52 59/65/52 +f 257/66/53 51/54/53 59/65/53 +f 44/67/54 53/68/54 45/56/54 +f 46/57/55 53/68/55 54/69/55 +f 46/57/56 55/70/56 47/58/56 +f 257/71/57 59/65/57 67/72/57 +f 52/73/58 61/74/58 53/68/58 +f 54/69/59 61/74/59 62/75/59 +f 54/69/60 63/76/60 55/70/60 +f 55/70/61 64/77/61 56/62/61 +f 57/63/62 64/77/62 65/78/62 +f 58/64/63 65/78/63 66/79/63 +f 58/64/64 67/72/64 59/65/64 +f 65/78/65 72/80/65 73/81/65 +f 65/78/66 74/82/66 66/79/66 +f 66/79/67 75/83/67 67/72/67 +f 257/84/68 67/72/68 75/83/68 +f 60/85/69 69/86/69 61/74/69 +f 62/75/70 69/86/70 70/87/70 +f 62/75/71 71/88/71 63/76/71 +f 63/76/72 72/80/72 64/77/72 +f 70/87/73 77/89/73 78/90/73 +f 70/87/74 79/91/74 71/88/74 +f 71/88/75 80/92/75 72/80/75 +f 73/81/76 80/92/76 81/93/76 +f 74/82/77 81/93/77 82/94/77 +f 75/83/78 82/94/78 83/95/78 +f 257/96/79 75/83/79 83/95/79 +f 68/97/80 77/89/80 69/86/80 +f 81/93/81 90/98/81 82/94/81 +f 82/94/82 91/99/82 83/95/82 +f 257/100/83 83/95/83 91/99/83 +f 76/101/84 85/102/84 77/89/84 +f 78/90/85 85/102/85 86/103/85 +f 78/90/86 87/104/86 79/91/86 +f 79/91/87 88/105/87 80/92/87 +f 81/93/88 88/105/88 89/106/88 +f 86/103/89 93/107/89 94/108/89 +f 86/103/90 95/109/90 87/104/90 +f 87/104/91 96/110/91 88/105/91 +f 89/106/92 96/110/92 97/111/92 +f 89/106/93 98/112/93 90/98/93 +f 91/99/94 98/112/94 99/113/94 +f 257/114/95 91/99/95 99/113/95 +f 84/115/96 93/107/96 85/102/96 +f 97/111/97 106/116/97 98/112/97 +f 99/113/98 106/116/98 107/117/98 +f 257/118/99 99/113/99 107/117/99 +f 92/119/100 101/120/100 93/107/100 +f 94/108/101 101/120/101 102/121/101 +f 94/108/102 103/122/102 95/109/102 +f 95/109/103 104/123/103 96/110/103 +f 97/111/104 104/123/104 105/124/104 +f 102/121/105 111/125/105 103/122/105 +f 103/122/106 112/126/106 104/123/106 +f 105/124/107 112/126/107 113/127/107 +f 105/124/108 114/128/108 106/116/108 +f 107/117/109 114/128/109 115/129/109 +f 257/130/110 107/117/110 115/129/110 +f 100/131/111 109/132/111 101/120/111 +f 102/121/112 109/132/112 110/133/112 +f 115/129/113 122/134/113 123/135/113 +f 257/136/114 115/129/114 123/135/114 +f 108/137/115 117/138/115 109/132/115 +f 110/133/116 117/138/116 118/139/116 +f 110/133/117 119/140/117 111/125/117 +f 111/125/118 120/141/118 112/126/118 +f 113/127/119 120/141/119 121/142/119 +f 113/127/120 122/134/120 114/128/120 +f 118/139/121 127/143/121 119/140/121 +f 119/140/122 128/144/122 120/141/122 +f 121/142/123 128/144/123 129/145/123 +f 121/142/124 130/146/124 122/134/124 +f 123/135/125 130/146/125 131/147/125 +f 257/148/126 123/135/126 131/147/126 +f 116/149/127 125/150/127 117/138/127 +f 118/139/128 125/150/128 126/151/128 +f 130/146/129 139/152/129 131/147/129 +f 257/153/130 131/147/130 139/152/130 +f 124/154/131 133/155/131 125/150/131 +f 126/151/132 133/155/132 134/156/132 +f 126/151/133 135/157/133 127/143/133 +f 127/143/134 136/158/134 128/144/134 +f 129/145/135 136/158/135 137/159/135 +f 129/145/136 138/160/136 130/146/136 +f 135/157/137 144/161/137 136/158/137 +f 137/159/138 144/161/138 145/162/138 +f 138/160/139 145/162/139 146/163/139 +f 139/152/140 146/163/140 147/164/140 +f 257/165/141 139/152/141 147/164/141 +f 132/166/142 141/167/142 133/155/142 +f 134/156/143 141/167/143 142/168/143 +f 134/156/144 143/169/144 135/157/144 +f 257/170/145 147/164/145 155/171/145 +f 140/172/146 149/173/146 141/167/146 +f 142/168/147 149/173/147 150/174/147 +f 142/168/148 151/175/148 143/169/148 +f 143/169/149 152/176/149 144/161/149 +f 145/162/150 152/176/150 153/177/150 +f 145/162/151 154/178/151 146/163/151 +f 147/164/152 154/178/152 155/171/152 +f 153/177/153 160/179/153 161/180/153 +f 154/178/154 161/180/154 162/181/154 +f 155/171/155 162/181/155 163/182/155 +f 257/183/156 155/171/156 163/182/156 +f 148/184/157 157/185/157 149/173/157 +f 150/174/158 157/185/158 158/186/158 +f 150/174/159 159/187/159 151/175/159 +f 151/175/160 160/179/160 152/176/160 +f 156/188/161 165/189/161 157/185/161 +f 158/186/162 165/189/162 166/190/162 +f 158/186/163 167/191/163 159/187/163 +f 159/187/164 168/192/164 160/179/164 +f 161/180/165 168/192/165 169/193/165 +f 162/181/166 169/193/166 170/194/166 +f 163/182/167 170/194/167 171/195/167 +f 257/196/168 163/182/168 171/195/168 +f 169/193/169 176/197/169 177/198/169 +f 170/194/170 177/198/170 178/199/170 +f 171/195/171 178/199/171 179/200/171 +f 257/201/172 171/195/172 179/200/172 +f 164/202/173 173/203/173 165/189/173 +f 166/190/174 173/203/174 174/204/174 +f 166/190/175 175/205/175 167/191/175 +f 167/191/176 176/197/176 168/192/176 +f 174/204/177 181/206/177 182/207/177 +f 174/204/178 183/208/178 175/205/178 +f 175/205/179 184/209/179 176/197/179 +f 177/198/180 184/209/180 185/210/180 +f 177/198/181 186/211/181 178/199/181 +f 179/200/182 186/211/182 187/212/182 +f 257/213/183 179/200/183 187/212/183 +f 172/214/184 181/206/184 173/203/184 +f 185/210/185 194/215/185 186/211/185 +f 187/212/186 194/215/186 195/216/186 +f 257/217/187 187/212/187 195/216/187 +f 180/218/188 189/219/188 181/206/188 +f 182/207/189 189/219/189 190/220/189 +f 182/207/190 191/221/190 183/208/190 +f 183/208/191 192/222/191 184/209/191 +f 185/210/192 192/222/192 193/223/192 +f 190/224/193 197/225/193 198/226/193 +f 190/224/194 199/227/194 191/228/194 +f 191/228/195 200/229/195 192/230/195 +f 193/231/196 200/229/196 201/232/196 +f 193/231/197 202/233/197 194/234/197 +f 195/235/198 202/233/198 203/236/198 +f 257/237/199 195/235/199 203/236/199 +f 188/238/200 197/225/200 189/239/200 +f 201/232/201 210/240/201 202/233/201 +f 203/236/202 210/240/202 211/241/202 +f 257/242/203 203/236/203 211/241/203 +f 196/243/204 205/244/204 197/225/204 +f 198/226/205 205/244/205 206/245/205 +f 198/226/206 207/246/206 199/227/206 +f 199/227/207 208/247/207 200/229/207 +f 201/232/208 208/247/208 209/248/208 +f 206/245/209 215/249/209 207/246/209 +f 207/246/210 216/250/210 208/247/210 +f 209/248/211 216/250/211 217/251/211 +f 210/240/212 217/251/212 218/252/212 +f 211/241/213 218/252/213 219/253/213 +f 257/254/214 211/241/214 219/253/214 +f 204/255/215 213/256/215 205/244/215 +f 206/245/216 213/256/216 214/257/216 +f 219/253/217 226/258/217 227/259/217 +f 257/260/218 219/253/218 227/259/218 +f 212/261/219 221/262/219 213/256/219 +f 214/257/220 221/262/220 222/263/220 +f 214/257/221 223/264/221 215/249/221 +f 215/249/222 224/265/222 216/250/222 +f 217/251/223 224/265/223 225/266/223 +f 218/252/224 225/266/224 226/258/224 +f 60/85/225 336/267/225 68/97/225 +f 223/264/226 232/268/226 224/265/226 +f 228/269/227 505/270/227 236/271/227 +f 225/266/228 232/268/228 233/272/228 +f 36/55/229 312/273/229 44/67/229 +f 225/266/230 234/274/230 226/258/230 +f 92/119/231 352/275/231 360/276/231 +f 226/258/232 235/277/232 227/259/232 +f 132/166/233 392/278/233 400/279/233 +f 172/214/234 449/280/234 180/218/234 +f 257/281/235 227/259/235 235/277/235 +f 220/282/236 229/283/236 221/262/236 +f 148/184/237 424/284/237 156/188/237 +f 221/262/238 230/285/238 222/263/238 +f 236/271/239 513/286/239 244/287/239 +f 222/263/240 231/288/240 223/264/240 +f 212/261/241 489/289/241 220/282/241 +f 44/67/242 320/290/242 52/73/242 +f 257/291/243 235/277/243 243/292/243 +f 228/269/244 237/293/244 229/283/244 +f 20/37/245 296/294/245 28/49/245 +f 229/283/246 238/295/246 230/285/246 +f 116/149/247 376/296/247 384/297/247 +f 230/285/248 239/298/248 231/288/248 +f 244/287/249 514/299/249 252/4/249 +f 231/288/250 240/300/250 232/268/250 +f 196/243/251 473/301/251 204/255/251 +f 233/272/252 240/300/252 241/302/252 +f 68/97/253 344/303/253 76/101/253 +f 233/272/254 242/304/254 234/274/254 +f 4/19/255 280/305/255 12/33/255 +f 234/274/256 243/292/256 235/277/256 +f 239/298/257 248/306/257 240/300/257 +f 132/166/258 408/307/258 140/172/258 +f 241/302/259 248/306/259 249/308/259 +f 220/282/260 497/309/260 228/269/260 +f 241/302/261 250/310/261 242/304/261 +f 28/49/262 304/311/262 36/55/262 +f 243/292/263 250/310/263 251/312/263 +f 156/188/264 432/313/264 164/202/264 +f 100/131/265 360/276/265 368/314/265 +f 257/315/266 243/292/266 251/312/266 +f 236/271/267 245/316/267 237/293/267 +f 52/73/268 328/317/268 60/85/268 +f 237/293/269 246/318/269 238/295/269 +f 180/218/270 457/319/270 188/320/270 +f 238/295/271 247/321/271 239/298/271 +f 124/154/272 384/297/272 392/278/272 +f 252/4/273 272/322/273 4/19/273 +f 257/323/274 251/312/274 256/2/274 +f 244/287/275 253/6/275 245/316/275 +f 140/172/276 416/324/276 148/184/276 +f 245/316/277 254/8/277 246/318/277 +f 204/255/278 481/325/278 212/261/278 +f 246/318/279 1/10/279 247/321/279 +f 12/33/280 288/326/280 20/37/280 +f 247/321/281 2/11/281 248/306/281 +f 76/101/282 352/275/282 84/115/282 +f 248/306/283 3/13/283 249/308/283 +f 164/202/284 441/327/284 172/214/284 +f 249/308/285 255/16/285 250/310/285 +f 108/137/286 368/314/286 376/296/286 +f 251/312/287 255/16/287 256/2/287 +f 188/238/288 465/328/288 196/243/288 +f 514/299/289 271/329/289 272/322/289 +f 258/330/290 433/331/290 265/332/290 +f 258/330/291 266/333/291 259/334/291 +f 259/334/292 267/335/292 260/336/292 +f 260/336/293 268/337/293 261/338/293 +f 261/338/294 269/339/294 262/340/294 +f 262/340/295 270/341/295 263/342/295 +f 263/342/296 271/329/296 264/343/296 +f 271/329/297 278/344/297 279/345/297 +f 272/322/298 279/345/298 280/305/298 +f 265/332/299 433/346/299 273/347/299 +f 266/333/300 273/347/300 274/348/300 +f 266/333/301 275/349/301 267/335/301 +f 267/335/302 276/350/302 268/337/302 +f 268/337/303 277/351/303 269/339/303 +f 269/339/304 278/344/304 270/341/304 +f 275/349/305 284/352/305 276/350/305 +f 276/350/306 285/353/306 277/351/306 +f 277/351/307 286/354/307 278/344/307 +f 278/344/308 287/355/308 279/345/308 +f 280/305/309 287/355/309 288/326/309 +f 273/347/310 433/356/310 281/357/310 +f 273/347/311 282/358/311 274/348/311 +f 274/348/312 283/359/312 275/349/312 +f 288/326/313 295/360/313 296/294/313 +f 281/357/314 433/361/314 289/362/314 +f 281/357/315 290/363/315 282/358/315 +f 283/359/316 290/363/316 291/364/316 +f 283/359/317 292/365/317 284/352/317 +f 284/352/318 293/366/318 285/353/318 +f 285/353/319 294/367/319 286/354/319 +f 286/354/320 295/360/320 287/355/320 +f 291/364/321 300/368/321 292/365/321 +f 293/366/322 300/368/322 301/369/322 +f 293/366/323 302/370/323 294/367/323 +f 295/360/324 302/370/324 303/371/324 +f 296/294/325 303/371/325 304/311/325 +f 289/362/326 433/372/326 297/373/326 +f 290/363/327 297/373/327 298/374/327 +f 291/364/328 298/374/328 299/375/328 +f 304/311/329 311/376/329 312/273/329 +f 297/373/330 433/377/330 305/378/330 +f 297/373/331 306/379/331 298/374/331 +f 298/374/332 307/380/332 299/375/332 +f 299/375/333 308/381/333 300/368/333 +f 301/369/334 308/381/334 309/382/334 +f 301/369/335 310/383/335 302/370/335 +f 303/371/336 310/383/336 311/376/336 +f 309/382/337 316/384/337 317/385/337 +f 309/382/338 318/386/338 310/383/338 +f 311/376/339 318/386/339 319/387/339 +f 312/273/340 319/387/340 320/290/340 +f 305/378/341 433/388/341 313/389/341 +f 306/379/342 313/389/342 314/390/342 +f 306/379/343 315/391/343 307/380/343 +f 307/380/344 316/384/344 308/381/344 +f 313/389/345 322/392/345 314/390/345 +f 314/390/346 323/393/346 315/391/346 +f 315/391/347 324/394/347 316/384/347 +f 317/385/348 324/394/348 325/395/348 +f 317/385/349 326/396/349 318/386/349 +f 319/387/350 326/396/350 327/397/350 +f 320/290/351 327/397/351 328/317/351 +f 313/389/352 433/398/352 321/399/352 +f 325/395/353 334/400/353 326/396/353 +f 327/397/354 334/400/354 335/401/354 +f 328/317/355 335/401/355 336/267/355 +f 321/399/356 433/402/356 329/403/356 +f 322/392/357 329/403/357 330/404/357 +f 322/392/358 331/405/358 323/393/358 +f 323/393/359 332/406/359 324/394/359 +f 325/395/360 332/406/360 333/407/360 +f 330/404/361 337/408/361 338/409/361 +f 330/404/362 339/410/362 331/405/362 +f 331/405/363 340/411/363 332/406/363 +f 333/407/364 340/411/364 341/412/364 +f 333/407/365 342/413/365 334/400/365 +f 335/401/366 342/413/366 343/414/366 +f 336/267/367 343/414/367 344/303/367 +f 329/403/368 433/415/368 337/408/368 +f 341/412/369 350/416/369 342/413/369 +f 343/414/370 350/416/370 351/417/370 +f 344/303/371 351/417/371 352/275/371 +f 337/408/372 433/418/372 345/419/372 +f 337/408/373 346/420/373 338/409/373 +f 338/409/374 347/421/374 339/410/374 +f 339/410/375 348/422/375 340/411/375 +f 341/412/376 348/422/376 349/423/376 +f 346/420/377 355/424/377 347/421/377 +f 347/421/378 356/425/378 348/422/378 +f 349/423/379 356/425/379 357/426/379 +f 349/423/380 358/427/380 350/416/380 +f 351/417/381 358/427/381 359/428/381 +f 352/275/382 359/428/382 360/276/382 +f 345/419/383 433/429/383 353/430/383 +f 346/420/384 353/430/384 354/431/384 +f 359/428/385 366/432/385 367/433/385 +f 360/276/386 367/433/386 368/314/386 +f 353/430/387 433/434/387 361/435/387 +f 354/431/388 361/435/388 362/436/388 +f 355/424/389 362/436/389 363/437/389 +f 355/424/390 364/438/390 356/425/390 +f 357/426/391 364/438/391 365/439/391 +f 357/426/392 366/432/392 358/427/392 +f 362/436/393 371/440/393 363/437/393 +f 363/437/394 372/441/394 364/438/394 +f 365/439/395 372/441/395 373/442/395 +f 365/439/396 374/443/396 366/432/396 +f 367/433/397 374/443/397 375/444/397 +f 368/314/398 375/444/398 376/296/398 +f 361/435/399 433/445/399 369/446/399 +f 361/435/400 370/447/400 362/436/400 +f 375/444/401 382/448/401 383/449/401 +f 376/296/402 383/449/402 384/297/402 +f 369/446/403 433/450/403 377/451/403 +f 369/446/404 378/452/404 370/447/404 +f 371/440/405 378/452/405 379/453/405 +f 371/440/406 380/454/406 372/441/406 +f 373/442/407 380/454/407 381/455/407 +f 373/442/408 382/448/408 374/443/408 +f 379/453/409 388/456/409 380/454/409 +f 381/455/410 388/456/410 389/457/410 +f 381/455/411 390/458/411 382/448/411 +f 383/449/412 390/458/412 391/459/412 +f 384/297/413 391/459/413 392/278/413 +f 377/451/414 433/460/414 385/461/414 +f 377/451/415 386/462/415 378/452/415 +f 378/452/416 387/463/416 379/453/416 +f 392/278/417 399/464/417 400/279/417 +f 385/461/418 433/465/418 393/466/418 +f 386/462/419 393/466/419 394/467/419 +f 387/463/420 394/467/420 395/468/420 +f 387/463/421 396/469/421 388/456/421 +f 389/457/422 396/469/422 397/470/422 +f 389/457/423 398/471/423 390/458/423 +f 391/459/424 398/471/424 399/464/424 +f 397/470/425 404/472/425 405/473/425 +f 397/470/426 406/474/426 398/471/426 +f 399/464/427 406/474/427 407/475/427 +f 400/279/428 407/475/428 408/307/428 +f 393/466/429 433/476/429 401/477/429 +f 393/466/430 402/478/430 394/467/430 +f 394/467/431 403/479/431 395/468/431 +f 395/468/432 404/472/432 396/469/432 +f 401/477/433 433/480/433 409/481/433 +f 401/477/434 410/482/434 402/478/434 +f 403/479/435 410/482/435 411/483/435 +f 403/479/436 412/484/436 404/472/436 +f 405/473/437 412/484/437 413/485/437 +f 405/473/438 414/486/438 406/474/438 +f 407/475/439 414/486/439 415/487/439 +f 408/307/440 415/487/440 416/324/440 +f 412/484/441 421/488/441 413/485/441 +f 414/486/442 421/488/442 422/489/442 +f 415/487/443 422/489/443 423/490/443 +f 416/324/444 423/490/444 424/284/444 +f 409/481/445 433/491/445 417/492/445 +f 409/481/446 418/493/446 410/482/446 +f 410/482/447 419/494/447 411/483/447 +f 411/483/448 420/495/448 412/484/448 +f 418/493/449 425/496/449 426/497/449 +f 418/493/450 427/498/450 419/494/450 +f 419/494/451 428/499/451 420/495/451 +f 421/488/452 428/499/452 429/500/452 +f 422/489/453 429/500/453 430/501/453 +f 423/490/454 430/501/454 431/502/454 +f 424/284/455 431/502/455 432/313/455 +f 417/492/456 433/503/456 425/496/456 +f 430/501/457 438/504/457 439/505/457 +f 431/502/458 439/505/458 440/506/458 +f 432/313/459 440/506/459 441/327/459 +f 425/496/460 433/507/460 434/508/460 +f 425/496/461 435/509/461 426/497/461 +f 426/497/462 436/510/462 427/498/462 +f 427/498/463 437/511/463 428/499/463 +f 428/499/464 438/504/464 429/500/464 +f 434/508/465 443/512/465 435/509/465 +f 436/510/466 443/512/466 444/513/466 +f 436/510/467 445/514/467 437/511/467 +f 438/504/468 445/514/468 446/515/468 +f 439/505/469 446/515/469 447/516/469 +f 440/506/470 447/516/470 448/517/470 +f 441/327/471 448/517/471 449/280/471 +f 434/508/472 433/518/472 442/519/472 +f 447/516/473 454/520/473 455/521/473 +f 448/517/474 455/521/474 456/522/474 +f 449/280/475 456/522/475 457/319/475 +f 442/519/476 433/523/476 450/524/476 +f 442/519/477 451/525/477 443/512/477 +f 443/512/478 452/526/478 444/513/478 +f 444/513/479 453/527/479 445/514/479 +f 446/515/480 453/527/480 454/520/480 +f 451/528/481 460/529/481 452/530/481 +f 452/530/482 461/531/482 453/532/482 +f 454/533/483 461/531/483 462/534/483 +f 455/535/484 462/534/484 463/536/484 +f 456/537/485 463/536/485 464/538/485 +f 457/539/486 464/538/486 465/328/486 +f 450/540/487 433/541/487 458/542/487 +f 450/540/488 459/543/488 451/528/488 +f 464/538/489 471/544/489 472/545/489 +f 465/328/490 472/545/490 473/301/490 +f 458/542/491 433/546/491 466/547/491 +f 458/542/492 467/548/492 459/543/492 +f 459/543/493 468/549/493 460/529/493 +f 460/529/494 469/550/494 461/531/494 +f 462/534/495 469/550/495 470/551/495 +f 463/536/496 470/551/496 471/544/496 +f 468/549/497 477/552/497 469/550/497 +f 470/551/498 477/552/498 478/553/498 +f 471/544/499 478/553/499 479/554/499 +f 472/545/500 479/554/500 480/555/500 +f 473/301/501 480/555/501 481/325/501 +f 466/547/502 433/556/502 474/557/502 +f 466/547/503 475/558/503 467/548/503 +f 467/548/504 476/559/504 468/549/504 +f 481/325/505 488/560/505 489/289/505 +f 474/557/506 433/561/506 482/562/506 +f 474/557/507 483/563/507 475/558/507 +f 475/558/508 484/564/508 476/559/508 +f 476/559/509 485/565/509 477/552/509 +f 478/553/510 485/565/510 486/566/510 +f 479/554/511 486/566/511 487/567/511 +f 480/555/512 487/567/512 488/560/512 +f 484/564/513 493/568/513 485/565/513 +f 486/566/514 493/568/514 494/569/514 +f 487/567/515 494/569/515 495/570/515 +f 488/560/516 495/570/516 496/571/516 +f 489/289/517 496/571/517 497/309/517 +f 482/562/518 433/572/518 490/573/518 +f 482/562/519 491/574/519 483/563/519 +f 483/563/520 492/575/520 484/564/520 +f 497/309/521 504/576/521 505/270/521 +f 490/573/522 433/577/522 498/578/522 +f 491/574/523 498/578/523 499/579/523 +f 492/575/524 499/579/524 500/580/524 +f 492/575/525 501/581/525 493/568/525 +f 493/568/526 502/582/526 494/569/526 +f 495/570/527 502/582/527 503/583/527 +f 496/571/528 503/583/528 504/576/528 +f 501/581/529 510/584/529 502/582/529 +f 503/583/530 510/584/530 511/585/530 +f 504/576/531 511/585/531 512/586/531 +f 505/270/532 512/586/532 513/286/532 +f 498/578/533 433/587/533 506/588/533 +f 498/578/534 507/589/534 499/579/534 +f 499/579/535 508/590/535 500/580/535 +f 500/580/536 509/591/536 501/581/536 +f 506/588/537 433/592/537 258/330/537 +f 507/589/538 258/330/538 259/334/538 +f 508/590/539 259/334/539 260/336/539 +f 509/591/540 260/336/540 261/338/540 +f 510/584/541 261/338/541 262/340/541 +f 511/585/542 262/340/542 263/342/542 +f 512/586/543 263/342/543 264/343/543 +f 513/286/544 264/343/544 514/299/544 +f 252/4/2 4/19/2 5/5/2 +f 253/6/3 5/5/3 6/7/3 +f 254/8/4 6/7/4 7/9/4 +f 2/11/5 1/10/5 7/9/5 +f 3/13/6 2/11/6 8/12/6 +f 3/13/7 9/14/7 10/15/7 +f 255/16/8 10/15/8 11/3/8 +f 10/15/9 18/25/9 19/17/9 +f 4/19/545 12/33/545 13/20/545 +f 5/5/12 13/20/12 14/21/12 +f 7/9/13 6/7/13 14/21/13 +f 7/9/14 15/22/14 16/23/14 +f 8/12/15 16/23/15 17/24/15 +f 9/14/16 17/24/16 18/25/16 +f 15/22/17 14/21/17 22/26/17 +f 15/22/18 23/27/18 24/28/18 +f 16/23/19 24/28/19 25/29/19 +f 18/25/546 17/24/546 25/29/546 +f 19/17/547 18/25/547 26/30/547 +f 12/33/23 20/37/23 21/34/23 +f 14/21/24 13/20/24 21/34/24 +f 26/30/25 34/43/25 35/35/25 +f 20/37/27 28/49/27 29/38/27 +f 22/26/28 21/34/28 29/38/28 +f 23/27/29 22/26/29 30/39/29 +f 23/27/30 31/40/30 32/41/30 +f 25/29/31 24/28/31 32/41/31 +f 25/29/32 33/42/32 34/43/32 +f 31/40/33 39/52/33 40/44/33 +f 33/42/34 32/41/34 40/44/34 +f 33/42/35 41/45/35 42/46/35 +f 34/43/548 42/46/548 43/47/548 +f 28/49/549 36/55/549 37/50/549 +f 30/39/39 29/38/39 37/50/39 +f 31/40/40 30/39/40 38/51/40 +f 36/55/42 44/67/42 45/56/42 +f 38/51/43 37/50/43 45/56/43 +f 39/52/44 38/51/44 46/57/44 +f 39/52/45 47/58/45 48/59/45 +f 41/45/46 40/44/46 48/59/46 +f 41/45/550 49/60/550 50/61/550 +f 43/47/551 42/46/551 50/61/551 +f 47/58/49 55/70/49 56/62/49 +f 49/60/50 48/59/50 56/62/50 +f 50/61/51 49/60/51 57/63/51 +f 51/54/52 50/61/52 58/64/52 +f 44/67/552 52/73/552 53/68/552 +f 46/57/55 45/56/55 53/68/55 +f 46/57/56 54/69/56 55/70/56 +f 52/73/553 60/85/553 61/74/553 +f 54/69/59 53/68/59 61/74/59 +f 54/69/60 62/75/60 63/76/60 +f 55/70/61 63/76/61 64/77/61 +f 57/63/62 56/62/62 64/77/62 +f 58/64/63 57/63/63 65/78/63 +f 58/64/64 66/79/64 67/72/64 +f 65/78/65 64/77/65 72/80/65 +f 65/78/66 73/81/66 74/82/66 +f 66/79/67 74/82/67 75/83/67 +f 60/85/554 68/97/554 69/86/554 +f 62/75/70 61/74/70 69/86/70 +f 62/75/71 70/87/71 71/88/71 +f 63/76/72 71/88/72 72/80/72 +f 70/87/73 69/86/73 77/89/73 +f 70/87/74 78/90/74 79/91/74 +f 71/88/75 79/91/75 80/92/75 +f 73/81/76 72/80/76 80/92/76 +f 74/82/77 73/81/77 81/93/77 +f 75/83/555 74/82/555 82/94/555 +f 68/97/80 76/101/80 77/89/80 +f 81/93/556 89/106/556 90/98/556 +f 82/94/82 90/98/82 91/99/82 +f 76/101/84 84/115/84 85/102/84 +f 78/90/85 77/89/85 85/102/85 +f 78/90/86 86/103/86 87/104/86 +f 79/91/87 87/104/87 88/105/87 +f 81/93/88 80/92/88 88/105/88 +f 86/103/89 85/102/89 93/107/89 +f 86/103/90 94/108/90 95/109/90 +f 87/104/91 95/109/91 96/110/91 +f 89/106/92 88/105/92 96/110/92 +f 89/106/93 97/111/93 98/112/93 +f 91/99/94 90/98/94 98/112/94 +f 84/115/96 92/119/96 93/107/96 +f 97/111/97 105/124/97 106/116/97 +f 99/113/98 98/112/98 106/116/98 +f 92/119/100 100/131/100 101/120/100 +f 94/108/101 93/107/101 101/120/101 +f 94/108/102 102/121/102 103/122/102 +f 95/109/103 103/122/103 104/123/103 +f 97/111/104 96/110/104 104/123/104 +f 102/121/105 110/133/105 111/125/105 +f 103/122/106 111/125/106 112/126/106 +f 105/124/107 104/123/107 112/126/107 +f 105/124/108 113/127/108 114/128/108 +f 107/117/109 106/116/109 114/128/109 +f 100/131/111 108/137/111 109/132/111 +f 102/121/112 101/120/112 109/132/112 +f 115/129/113 114/128/113 122/134/113 +f 108/137/115 116/149/115 117/138/115 +f 110/133/116 109/132/116 117/138/116 +f 110/133/117 118/139/117 119/140/117 +f 111/125/118 119/140/118 120/141/118 +f 113/127/119 112/126/119 120/141/119 +f 113/127/120 121/142/120 122/134/120 +f 118/139/121 126/151/121 127/143/121 +f 119/140/122 127/143/122 128/144/122 +f 121/142/123 120/141/123 128/144/123 +f 121/142/124 129/145/124 130/146/124 +f 123/135/125 122/134/125 130/146/125 +f 116/149/127 124/154/127 125/150/127 +f 118/139/128 117/138/128 125/150/128 +f 130/146/129 138/160/129 139/152/129 +f 124/154/557 132/166/557 133/155/557 +f 126/151/132 125/150/132 133/155/132 +f 126/151/133 134/156/133 135/157/133 +f 127/143/134 135/157/134 136/158/134 +f 129/145/135 128/144/135 136/158/135 +f 129/145/136 137/159/136 138/160/136 +f 135/157/137 143/169/137 144/161/137 +f 137/159/138 136/158/138 144/161/138 +f 138/160/139 137/159/139 145/162/139 +f 139/152/558 138/160/558 146/163/558 +f 132/166/142 140/172/142 141/167/142 +f 134/156/143 133/155/143 141/167/143 +f 134/156/144 142/168/144 143/169/144 +f 140/172/146 148/184/146 149/173/146 +f 142/168/147 141/167/147 149/173/147 +f 142/168/148 150/174/148 151/175/148 +f 143/169/149 151/175/149 152/176/149 +f 145/162/150 144/161/150 152/176/150 +f 145/162/559 153/177/559 154/178/559 +f 147/164/560 146/163/560 154/178/560 +f 153/177/153 152/176/153 160/179/153 +f 154/178/154 153/177/154 161/180/154 +f 155/171/561 154/178/561 162/181/561 +f 148/184/157 156/188/157 157/185/157 +f 150/174/158 149/173/158 157/185/158 +f 150/174/159 158/186/159 159/187/159 +f 151/175/160 159/187/160 160/179/160 +f 156/188/161 164/202/161 165/189/161 +f 158/186/162 157/185/162 165/189/162 +f 158/186/163 166/190/163 167/191/163 +f 159/187/164 167/191/164 168/192/164 +f 161/180/165 160/179/165 168/192/165 +f 162/181/166 161/180/166 169/193/166 +f 163/182/562 162/181/562 170/194/562 +f 169/193/169 168/192/169 176/197/169 +f 170/194/563 169/193/563 177/198/563 +f 171/195/564 170/194/564 178/199/564 +f 164/202/173 172/214/173 173/203/173 +f 166/190/174 165/189/174 173/203/174 +f 166/190/175 174/204/175 175/205/175 +f 167/191/176 175/205/176 176/197/176 +f 174/204/177 173/203/177 181/206/177 +f 174/204/178 182/207/178 183/208/178 +f 175/205/179 183/208/179 184/209/179 +f 177/198/180 176/197/180 184/209/180 +f 177/198/181 185/210/181 186/211/181 +f 179/200/565 178/199/565 186/211/565 +f 172/214/184 180/218/184 181/206/184 +f 185/210/185 193/223/185 194/215/185 +f 187/212/186 186/211/186 194/215/186 +f 180/218/188 188/320/188 189/219/188 +f 182/207/189 181/206/189 189/219/189 +f 182/207/190 190/220/190 191/221/190 +f 183/208/191 191/221/191 192/222/191 +f 185/210/192 184/209/192 192/222/192 +f 190/224/193 189/239/193 197/225/193 +f 190/224/194 198/226/194 199/227/194 +f 191/228/195 199/227/195 200/229/195 +f 193/231/196 192/230/196 200/229/196 +f 193/231/197 201/232/197 202/233/197 +f 195/235/198 194/234/198 202/233/198 +f 188/238/566 196/243/566 197/225/566 +f 201/232/201 209/248/201 210/240/201 +f 203/236/202 202/233/202 210/240/202 +f 196/243/204 204/255/204 205/244/204 +f 198/226/205 197/225/205 205/244/205 +f 198/226/206 206/245/206 207/246/206 +f 199/227/207 207/246/207 208/247/207 +f 201/232/208 200/229/208 208/247/208 +f 206/245/209 214/257/209 215/249/209 +f 207/246/210 215/249/210 216/250/210 +f 209/248/211 208/247/211 216/250/211 +f 210/240/567 209/248/567 217/251/567 +f 211/241/213 210/240/213 218/252/213 +f 204/255/215 212/261/215 213/256/215 +f 206/245/216 205/244/216 213/256/216 +f 219/253/568 218/252/568 226/258/568 +f 212/261/219 220/282/219 221/262/219 +f 214/257/220 213/256/220 221/262/220 +f 214/257/221 222/263/221 223/264/221 +f 215/249/222 223/264/222 224/265/222 +f 217/251/223 216/250/223 224/265/223 +f 218/252/224 217/251/224 225/266/224 +f 60/85/225 328/317/225 336/267/225 +f 223/264/226 231/288/226 232/268/226 +f 228/269/227 497/309/227 505/270/227 +f 225/266/228 224/265/228 232/268/228 +f 36/55/229 304/311/229 312/273/229 +f 225/266/230 233/272/230 234/274/230 +f 92/119/231 84/115/231 352/275/231 +f 226/258/232 234/274/232 235/277/232 +f 132/166/233 124/154/233 392/278/233 +f 172/214/234 441/327/234 449/280/234 +f 220/282/236 228/269/236 229/283/236 +f 148/184/237 416/324/237 424/284/237 +f 221/262/238 229/283/238 230/285/238 +f 236/271/239 505/270/239 513/286/239 +f 222/263/240 230/285/240 231/288/240 +f 212/261/241 481/325/241 489/289/241 +f 44/67/242 312/273/242 320/290/242 +f 228/269/244 236/271/244 237/293/244 +f 20/37/245 288/326/245 296/294/245 +f 229/283/246 237/293/246 238/295/246 +f 116/149/247 108/137/247 376/296/247 +f 230/285/248 238/295/248 239/298/248 +f 244/287/249 513/286/249 514/299/249 +f 231/288/250 239/298/250 240/300/250 +f 196/243/251 465/328/251 473/301/251 +f 233/272/252 232/268/252 240/300/252 +f 68/97/253 336/267/253 344/303/253 +f 233/272/569 241/302/569 242/304/569 +f 4/19/255 272/322/255 280/305/255 +f 234/274/256 242/304/256 243/292/256 +f 239/298/257 247/321/257 248/306/257 +f 132/166/258 400/279/258 408/307/258 +f 241/302/259 240/300/259 248/306/259 +f 220/282/260 489/289/260 497/309/260 +f 241/302/261 249/308/261 250/310/261 +f 28/49/262 296/294/262 304/311/262 +f 243/292/263 242/304/263 250/310/263 +f 156/188/264 424/284/264 432/313/264 +f 100/131/265 92/119/265 360/276/265 +f 236/271/267 244/287/267 245/316/267 +f 52/73/268 320/290/268 328/317/268 +f 237/293/269 245/316/269 246/318/269 +f 180/218/270 449/280/270 457/319/270 +f 238/295/271 246/318/271 247/321/271 +f 124/154/272 116/149/272 384/297/272 +f 252/4/273 514/299/273 272/322/273 +f 244/287/275 252/4/275 253/6/275 +f 140/172/276 408/307/276 416/324/276 +f 245/316/277 253/6/277 254/8/277 +f 204/255/278 473/301/278 481/325/278 +f 246/318/279 254/8/279 1/10/279 +f 12/33/280 280/305/280 288/326/280 +f 247/321/281 1/10/281 2/11/281 +f 76/101/282 344/303/282 352/275/282 +f 248/306/283 2/11/283 3/13/283 +f 164/202/284 432/313/284 441/327/284 +f 249/308/285 3/13/285 255/16/285 +f 108/137/286 100/131/286 368/314/286 +f 251/312/287 250/310/287 255/16/287 +f 188/238/288 457/539/288 465/328/288 +f 514/299/289 264/343/289 271/329/289 +f 258/330/570 265/332/570 266/333/570 +f 259/334/292 266/333/292 267/335/292 +f 260/336/293 267/335/293 268/337/293 +f 261/338/294 268/337/294 269/339/294 +f 262/340/295 269/339/295 270/341/295 +f 263/342/296 270/341/296 271/329/296 +f 271/329/297 270/341/297 278/344/297 +f 272/322/298 271/329/298 279/345/298 +f 266/333/300 265/332/300 273/347/300 +f 266/333/301 274/348/301 275/349/301 +f 267/335/302 275/349/302 276/350/302 +f 268/337/303 276/350/303 277/351/303 +f 269/339/304 277/351/304 278/344/304 +f 275/349/305 283/359/305 284/352/305 +f 276/350/306 284/352/306 285/353/306 +f 277/351/307 285/353/307 286/354/307 +f 278/344/308 286/354/308 287/355/308 +f 280/305/309 279/345/309 287/355/309 +f 273/347/571 281/357/571 282/358/571 +f 274/348/312 282/358/312 283/359/312 +f 288/326/313 287/355/313 295/360/313 +f 281/357/572 289/362/572 290/363/572 +f 283/359/316 282/358/316 290/363/316 +f 283/359/317 291/364/317 292/365/317 +f 284/352/318 292/365/318 293/366/318 +f 285/353/319 293/366/319 294/367/319 +f 286/354/320 294/367/320 295/360/320 +f 291/364/321 299/375/321 300/368/321 +f 293/366/322 292/365/322 300/368/322 +f 293/366/323 301/369/323 302/370/323 +f 295/360/324 294/367/324 302/370/324 +f 296/294/325 295/360/325 303/371/325 +f 290/363/573 289/362/573 297/373/573 +f 291/364/328 290/363/328 298/374/328 +f 304/311/329 303/371/329 311/376/329 +f 297/373/331 305/378/331 306/379/331 +f 298/374/574 306/379/574 307/380/574 +f 299/375/333 307/380/333 308/381/333 +f 301/369/334 300/368/334 308/381/334 +f 301/369/335 309/382/335 310/383/335 +f 303/371/336 302/370/336 310/383/336 +f 309/382/337 308/381/337 316/384/337 +f 309/382/338 317/385/338 318/386/338 +f 311/376/339 310/383/339 318/386/339 +f 312/273/575 311/376/575 319/387/575 +f 306/379/342 305/378/342 313/389/342 +f 306/379/343 314/390/343 315/391/343 +f 307/380/344 315/391/344 316/384/344 +f 313/389/345 321/399/345 322/392/345 +f 314/390/346 322/392/346 323/393/346 +f 315/391/347 323/393/347 324/394/347 +f 317/385/348 316/384/348 324/394/348 +f 317/385/349 325/395/349 326/396/349 +f 319/387/350 318/386/350 326/396/350 +f 320/290/351 319/387/351 327/397/351 +f 325/395/353 333/407/353 334/400/353 +f 327/397/354 326/396/354 334/400/354 +f 328/317/355 327/397/355 335/401/355 +f 322/392/357 321/399/357 329/403/357 +f 322/392/358 330/404/358 331/405/358 +f 323/393/359 331/405/359 332/406/359 +f 325/395/360 324/394/360 332/406/360 +f 330/404/361 329/403/361 337/408/361 +f 330/404/362 338/409/362 339/410/362 +f 331/405/363 339/410/363 340/411/363 +f 333/407/364 332/406/364 340/411/364 +f 333/407/365 341/412/365 342/413/365 +f 335/401/366 334/400/366 342/413/366 +f 336/267/367 335/401/367 343/414/367 +f 341/412/369 349/423/369 350/416/369 +f 343/414/370 342/413/370 350/416/370 +f 344/303/371 343/414/371 351/417/371 +f 337/408/373 345/419/373 346/420/373 +f 338/409/576 346/420/576 347/421/576 +f 339/410/375 347/421/375 348/422/375 +f 341/412/376 340/411/376 348/422/376 +f 346/420/377 354/431/377 355/424/377 +f 347/421/378 355/424/378 356/425/378 +f 349/423/379 348/422/379 356/425/379 +f 349/423/380 357/426/380 358/427/380 +f 351/417/381 350/416/381 358/427/381 +f 352/275/382 351/417/382 359/428/382 +f 346/420/384 345/419/384 353/430/384 +f 359/428/385 358/427/385 366/432/385 +f 360/276/386 359/428/386 367/433/386 +f 354/431/577 353/430/577 361/435/577 +f 355/424/389 354/431/389 362/436/389 +f 355/424/390 363/437/390 364/438/390 +f 357/426/391 356/425/391 364/438/391 +f 357/426/392 365/439/392 366/432/392 +f 362/436/393 370/447/393 371/440/393 +f 363/437/394 371/440/394 372/441/394 +f 365/439/395 364/438/395 372/441/395 +f 365/439/396 373/442/396 374/443/396 +f 367/433/397 366/432/397 374/443/397 +f 368/314/398 367/433/398 375/444/398 +f 361/435/400 369/446/400 370/447/400 +f 375/444/401 374/443/401 382/448/401 +f 376/296/402 375/444/402 383/449/402 +f 369/446/404 377/451/404 378/452/404 +f 371/440/405 370/447/405 378/452/405 +f 371/440/406 379/453/406 380/454/406 +f 373/442/407 372/441/407 380/454/407 +f 373/442/408 381/455/408 382/448/408 +f 379/453/409 387/463/409 388/456/409 +f 381/455/410 380/454/410 388/456/410 +f 381/455/411 389/457/411 390/458/411 +f 383/449/412 382/448/412 390/458/412 +f 384/297/578 383/449/578 391/459/578 +f 377/451/415 385/461/415 386/462/415 +f 378/452/416 386/462/416 387/463/416 +f 392/278/417 391/459/417 399/464/417 +f 386/462/419 385/461/419 393/466/419 +f 387/463/420 386/462/420 394/467/420 +f 387/463/421 395/468/421 396/469/421 +f 389/457/422 388/456/422 396/469/422 +f 389/457/423 397/470/423 398/471/423 +f 391/459/424 390/458/424 398/471/424 +f 397/470/425 396/469/425 404/472/425 +f 397/470/426 405/473/426 406/474/426 +f 399/464/427 398/471/427 406/474/427 +f 400/279/428 399/464/428 407/475/428 +f 393/466/430 401/477/430 402/478/430 +f 394/467/431 402/478/431 403/479/431 +f 395/468/432 403/479/432 404/472/432 +f 401/477/434 409/481/434 410/482/434 +f 403/479/435 402/478/435 410/482/435 +f 403/479/436 411/483/436 412/484/436 +f 405/473/437 404/472/437 412/484/437 +f 405/473/438 413/485/438 414/486/438 +f 407/475/439 406/474/439 414/486/439 +f 408/307/440 407/475/440 415/487/440 +f 412/484/441 420/495/441 421/488/441 +f 414/486/442 413/485/442 421/488/442 +f 415/487/443 414/486/443 422/489/443 +f 416/324/444 415/487/444 423/490/444 +f 409/481/579 417/492/579 418/493/579 +f 410/482/447 418/493/447 419/494/447 +f 411/483/448 419/494/448 420/495/448 +f 418/493/449 417/492/449 425/496/449 +f 418/493/450 426/497/450 427/498/450 +f 419/494/451 427/498/451 428/499/451 +f 421/488/452 420/495/452 428/499/452 +f 422/489/453 421/488/453 429/500/453 +f 423/490/454 422/489/454 430/501/454 +f 424/284/455 423/490/455 431/502/455 +f 430/501/457 429/500/457 438/504/457 +f 431/502/458 430/501/458 439/505/458 +f 432/313/459 431/502/459 440/506/459 +f 425/496/580 434/508/580 435/509/580 +f 426/497/581 435/509/581 436/510/581 +f 427/498/463 436/510/463 437/511/463 +f 428/499/464 437/511/464 438/504/464 +f 434/508/465 442/519/465 443/512/465 +f 436/510/466 435/509/466 443/512/466 +f 436/510/467 444/513/467 445/514/467 +f 438/504/468 437/511/468 445/514/468 +f 439/505/469 438/504/469 446/515/469 +f 440/506/470 439/505/470 447/516/470 +f 441/327/471 440/506/471 448/517/471 +f 447/516/473 446/515/473 454/520/473 +f 448/517/474 447/516/474 455/521/474 +f 449/280/475 448/517/475 456/522/475 +f 442/519/477 450/524/477 451/525/477 +f 443/512/478 451/525/478 452/526/478 +f 444/513/479 452/526/479 453/527/479 +f 446/515/480 445/514/480 453/527/480 +f 451/528/481 459/543/481 460/529/481 +f 452/530/482 460/529/482 461/531/482 +f 454/533/483 453/532/483 461/531/483 +f 455/535/484 454/533/484 462/534/484 +f 456/537/485 455/535/485 463/536/485 +f 457/539/486 456/537/486 464/538/486 +f 450/540/488 458/542/488 459/543/488 +f 464/538/489 463/536/489 471/544/489 +f 465/328/490 464/538/490 472/545/490 +f 458/542/492 466/547/492 467/548/492 +f 459/543/493 467/548/493 468/549/493 +f 460/529/494 468/549/494 469/550/494 +f 462/534/495 461/531/495 469/550/495 +f 463/536/496 462/534/496 470/551/496 +f 468/549/497 476/559/497 477/552/497 +f 470/551/498 469/550/498 477/552/498 +f 471/544/499 470/551/499 478/553/499 +f 472/545/500 471/544/500 479/554/500 +f 473/301/501 472/545/501 480/555/501 +f 466/547/582 474/557/582 475/558/582 +f 467/548/583 475/558/583 476/559/583 +f 481/325/505 480/555/505 488/560/505 +f 474/557/507 482/562/507 483/563/507 +f 475/558/508 483/563/508 484/564/508 +f 476/559/509 484/564/509 485/565/509 +f 478/553/510 477/552/510 485/565/510 +f 479/554/511 478/553/511 486/566/511 +f 480/555/512 479/554/512 487/567/512 +f 484/564/513 492/575/513 493/568/513 +f 486/566/514 485/565/514 493/568/514 +f 487/567/515 486/566/515 494/569/515 +f 488/560/516 487/567/516 495/570/516 +f 489/289/517 488/560/517 496/571/517 +f 482/562/519 490/573/519 491/574/519 +f 483/563/520 491/574/520 492/575/520 +f 497/309/521 496/571/521 504/576/521 +f 491/574/523 490/573/523 498/578/523 +f 492/575/524 491/574/524 499/579/524 +f 492/575/525 500/580/525 501/581/525 +f 493/568/526 501/581/526 502/582/526 +f 495/570/527 494/569/527 502/582/527 +f 496/571/528 495/570/528 503/583/528 +f 501/581/529 509/591/529 510/584/529 +f 503/583/530 502/582/530 510/584/530 +f 504/576/531 503/583/531 511/585/531 +f 505/270/532 504/576/532 512/586/532 +f 498/578/534 506/588/534 507/589/534 +f 499/579/535 507/589/535 508/590/535 +f 500/580/536 508/590/536 509/591/536 +f 507/589/538 506/588/538 258/330/538 +f 508/590/539 507/589/539 259/334/539 +f 509/591/540 508/590/540 260/336/540 +f 510/584/541 509/591/541 261/338/541 +f 511/585/542 510/584/542 262/340/542 +f 512/586/543 511/585/543 263/342/543 +f 513/286/584 512/586/584 264/343/584 diff --git a/Data/Engine/Models/cube.obj b/Data/Engine/Models/cube.obj new file mode 100644 index 0000000..951b4c5 --- /dev/null +++ b/Data/Engine/Models/cube.obj @@ -0,0 +1,43 @@ +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 0.500000 -0.500000 + +vt 1.000000 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 0.666667 0.000000 +vt 0.000000 0.333333 +vt 0.000000 0.000000 +vt 0.333333 0.000000 +vt 0.333333 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.666667 +vt 0.333333 0.333333 +vt 0.333333 0.666667 +vt 1.000000 0.000000 + +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -0.000000 0.000000 1.000000 +vn -1.000000 -0.000000 -0.000000 +vn 0.000000 0.000000 -1.000000 + +f 2/1/1 3/2/1 4/3/1 +f 8/1/2 7/4/2 6/5/2 +f 5/6/3 6/7/3 2/8/3 +f 6/8/4 7/5/4 3/4/4 +f 3/9/5 7/10/5 8/11/5 +f 1/12/6 4/13/6 8/11/6 +f 1/4/1 2/1/1 4/3/1 +f 5/14/2 8/1/2 6/5/2 +f 1/12/3 5/6/3 2/8/3 +f 2/12/4 6/8/4 3/4/4 +f 4/13/5 3/9/5 8/11/5 +f 5/6/6 1/12/6 8/11/6 \ No newline at end of file diff --git a/Data/Engine/Models/sphere.obj b/Data/Engine/Models/sphere.obj new file mode 100644 index 0000000..e20d4d4 --- /dev/null +++ b/Data/Engine/Models/sphere.obj @@ -0,0 +1,2531 @@ +v 0.000000 0.490393 -0.097545 +v 0.000000 0.461940 -0.191342 +v 0.000000 0.415735 -0.277785 +v 0.000000 0.353553 -0.353553 +v 0.000000 0.277785 -0.415735 +v 0.000000 0.191342 -0.461940 +v 0.000000 0.097545 -0.490393 +v 0.000000 0.000000 -0.500000 +v 0.000000 -0.097545 -0.490393 +v 0.000000 -0.415735 -0.277785 +v 0.019030 0.490393 -0.095671 +v 0.037329 0.461940 -0.187665 +v 0.054193 0.415735 -0.272448 +v 0.068975 0.353553 -0.346760 +v 0.081106 0.277785 -0.407747 +v 0.090120 0.191342 -0.453064 +v 0.095671 0.097545 -0.480970 +v 0.097545 0.000000 -0.490393 +v 0.095671 -0.097545 -0.480970 +v 0.090120 -0.191342 -0.453064 +v 0.081106 -0.277785 -0.407747 +v 0.068975 -0.353553 -0.346760 +v 0.054193 -0.415735 -0.272448 +v 0.037329 -0.461940 -0.187665 +v 0.019030 -0.490393 -0.095671 +v 0.037329 0.490393 -0.090120 +v 0.073223 0.461940 -0.176777 +v 0.106304 0.415735 -0.256640 +v 0.135299 0.353553 -0.326641 +v 0.159095 0.277785 -0.384089 +v 0.176777 0.191342 -0.426777 +v 0.187665 0.097545 -0.453064 +v 0.191342 0.000000 -0.461940 +v 0.187665 -0.097545 -0.453064 +v 0.176777 -0.191342 -0.426777 +v 0.159095 -0.277785 -0.384089 +v 0.135299 -0.353553 -0.326641 +v 0.106304 -0.415735 -0.256640 +v 0.073223 -0.461940 -0.176777 +v 0.037329 -0.490393 -0.090120 +v 0.054193 0.490393 -0.081106 +v 0.106304 0.461940 -0.159095 +v 0.154329 0.415735 -0.230970 +v 0.196424 0.353553 -0.293969 +v 0.230970 0.277785 -0.345671 +v 0.256640 0.191342 -0.384089 +v 0.272448 0.097545 -0.407746 +v 0.277785 0.000000 -0.415735 +v 0.272448 -0.097545 -0.407746 +v 0.256640 -0.191342 -0.384089 +v 0.230970 -0.277785 -0.345671 +v 0.196424 -0.353553 -0.293969 +v 0.154329 -0.415735 -0.230970 +v 0.106304 -0.461940 -0.159095 +v 0.054193 -0.490393 -0.081106 +v 0.068975 0.490393 -0.068975 +v 0.135299 0.461940 -0.135299 +v 0.196424 0.415735 -0.196424 +v 0.250000 0.353553 -0.250000 +v 0.293969 0.277785 -0.293969 +v 0.326641 0.191342 -0.326641 +v 0.346760 0.097545 -0.346760 +v 0.353554 0.000000 -0.353553 +v 0.346760 -0.097545 -0.346760 +v 0.326641 -0.191342 -0.326641 +v 0.293969 -0.277785 -0.293969 +v 0.250000 -0.353553 -0.250000 +v 0.196424 -0.415735 -0.196424 +v 0.135299 -0.461940 -0.135299 +v 0.068975 -0.490393 -0.068975 +v 0.081106 0.490393 -0.054193 +v 0.159095 0.461940 -0.106304 +v 0.230970 0.415735 -0.154329 +v 0.293969 0.353553 -0.196424 +v 0.345671 0.277785 -0.230970 +v 0.384089 0.191342 -0.256640 +v 0.407747 0.097545 -0.272447 +v 0.415735 0.000000 -0.277785 +v 0.407747 -0.097545 -0.272447 +v 0.384089 -0.191342 -0.256640 +v 0.345671 -0.277785 -0.230970 +v 0.293969 -0.353553 -0.196424 +v 0.230970 -0.415735 -0.154329 +v 0.159095 -0.461940 -0.106304 +v 0.081106 -0.490393 -0.054193 +v 0.090120 0.490393 -0.037329 +v 0.176777 0.461940 -0.073223 +v 0.256640 0.415735 -0.106304 +v 0.326641 0.353553 -0.135299 +v 0.384089 0.277785 -0.159095 +v 0.426777 0.191342 -0.176777 +v 0.453064 0.097545 -0.187665 +v 0.461940 0.000000 -0.191342 +v 0.453064 -0.097545 -0.187665 +v 0.426777 -0.191342 -0.176777 +v 0.384089 -0.277785 -0.159095 +v 0.326641 -0.353553 -0.135299 +v 0.256640 -0.415735 -0.106304 +v 0.176777 -0.461940 -0.073223 +v 0.090120 -0.490393 -0.037329 +v 0.095671 0.490393 -0.019030 +v 0.187665 0.461940 -0.037329 +v 0.272448 0.415735 -0.054193 +v 0.346760 0.353553 -0.068975 +v 0.407747 0.277785 -0.081106 +v 0.453064 0.191342 -0.090120 +v 0.480970 0.097545 -0.095671 +v 0.490393 0.000000 -0.097545 +v 0.480970 -0.097545 -0.095671 +v 0.453064 -0.191342 -0.090120 +v 0.407747 -0.277785 -0.081106 +v 0.346760 -0.353553 -0.068975 +v 0.272448 -0.415735 -0.054193 +v 0.187665 -0.461940 -0.037329 +v 0.095671 -0.490393 -0.019030 +v 0.097545 0.490393 0.000000 +v 0.191342 0.461940 0.000000 +v 0.277785 0.415735 0.000000 +v 0.353553 0.353553 0.000000 +v 0.415735 0.277785 0.000000 +v 0.461940 0.191342 0.000000 +v 0.490393 0.097545 0.000000 +v 0.500000 0.000000 0.000000 +v 0.490393 -0.097545 0.000000 +v 0.461940 -0.191342 0.000000 +v 0.415735 -0.277785 0.000000 +v 0.353553 -0.353553 0.000000 +v 0.277785 -0.415735 0.000000 +v 0.191342 -0.461940 0.000000 +v 0.097545 -0.490393 0.000000 +v 0.095671 0.490393 0.019030 +v 0.187665 0.461940 0.037329 +v 0.272448 0.415735 0.054193 +v 0.346760 0.353553 0.068975 +v 0.407747 0.277785 0.081106 +v 0.453064 0.191342 0.090120 +v 0.480970 0.097545 0.095671 +v 0.490393 0.000000 0.097545 +v 0.480970 -0.097545 0.095671 +v 0.453064 -0.191342 0.090120 +v 0.407747 -0.277785 0.081106 +v 0.346760 -0.353553 0.068975 +v 0.272448 -0.415735 0.054193 +v 0.187665 -0.461940 0.037329 +v 0.095671 -0.490393 0.019030 +v 0.090120 0.490393 0.037329 +v 0.176777 0.461940 0.073224 +v 0.256640 0.415735 0.106304 +v 0.326641 0.353553 0.135299 +v 0.384089 0.277785 0.159095 +v 0.426777 0.191342 0.176777 +v 0.453064 0.097545 0.187665 +v 0.461940 0.000000 0.191342 +v 0.453064 -0.097545 0.187665 +v 0.426777 -0.191342 0.176777 +v 0.384089 -0.277785 0.159095 +v 0.326641 -0.353553 0.135299 +v 0.256640 -0.415735 0.106304 +v 0.176777 -0.461940 0.073223 +v 0.090120 -0.490393 0.037329 +v 0.081106 0.490393 0.054193 +v 0.159095 0.461940 0.106304 +v 0.230970 0.415735 0.154329 +v 0.293969 0.353553 0.196424 +v 0.345671 0.277785 0.230970 +v 0.384089 0.191342 0.256640 +v 0.407747 0.097545 0.272448 +v 0.415735 0.000000 0.277785 +v 0.407747 -0.097545 0.272448 +v 0.384089 -0.191342 0.256640 +v 0.345671 -0.277785 0.230970 +v 0.293969 -0.353553 0.196424 +v 0.230970 -0.415735 0.154329 +v 0.159095 -0.461940 0.106304 +v 0.081106 -0.490393 0.054193 +v 0.068975 0.490393 0.068975 +v 0.135299 0.461940 0.135299 +v 0.196424 0.415735 0.196424 +v 0.250000 0.353553 0.250000 +v 0.293969 0.277785 0.293969 +v 0.326641 0.191342 0.326641 +v 0.346760 0.097545 0.346760 +v 0.353553 0.000000 0.353554 +v 0.346760 -0.097545 0.346760 +v 0.326641 -0.191342 0.326641 +v 0.293969 -0.277785 0.293969 +v 0.250000 -0.353553 0.250000 +v 0.196424 -0.415735 0.196424 +v 0.135299 -0.461940 0.135299 +v 0.068975 -0.490393 0.068975 +v 0.054193 0.490393 0.081106 +v 0.106304 0.461940 0.159095 +v 0.154329 0.415735 0.230970 +v 0.196424 0.353553 0.293969 +v 0.230970 0.277785 0.345671 +v 0.256640 0.191342 0.384089 +v 0.272447 0.097545 0.407747 +v 0.277785 0.000000 0.415735 +v 0.272447 -0.097545 0.407747 +v 0.256640 -0.191342 0.384089 +v 0.230970 -0.277785 0.345671 +v 0.196424 -0.353553 0.293969 +v 0.154329 -0.415735 0.230970 +v 0.106304 -0.461940 0.159095 +v 0.054193 -0.490393 0.081106 +v 0.000000 -0.500000 0.000000 +v 0.037329 0.490393 0.090120 +v 0.073223 0.461940 0.176777 +v 0.106304 0.415735 0.256640 +v 0.135299 0.353553 0.326641 +v 0.159095 0.277785 0.384089 +v 0.176777 0.191342 0.426777 +v 0.187665 0.097545 0.453064 +v 0.191342 0.000000 0.461940 +v 0.187665 -0.097545 0.453064 +v 0.176777 -0.191342 0.426777 +v 0.159095 -0.277785 0.384089 +v 0.135299 -0.353553 0.326641 +v 0.106304 -0.415735 0.256640 +v 0.073223 -0.461940 0.176777 +v 0.037329 -0.490393 0.090120 +v 0.019030 0.490393 0.095671 +v 0.037329 0.461940 0.187665 +v 0.054193 0.415735 0.272448 +v 0.068975 0.353553 0.346760 +v 0.081106 0.277785 0.407747 +v 0.090120 0.191342 0.453064 +v 0.095671 0.097545 0.480970 +v 0.097545 0.000000 0.490393 +v 0.095671 -0.097545 0.480970 +v 0.090120 -0.191342 0.453064 +v 0.081106 -0.277785 0.407747 +v 0.068975 -0.353553 0.346760 +v 0.054193 -0.415735 0.272448 +v 0.037329 -0.461940 0.187665 +v 0.019030 -0.490393 0.095671 +v -0.000000 0.490393 0.097545 +v 0.000000 0.461940 0.191342 +v 0.000000 0.415735 0.277785 +v -0.000000 0.353553 0.353554 +v -0.000000 0.277785 0.415735 +v 0.000000 0.191342 0.461940 +v -0.000000 0.097545 0.490393 +v -0.000000 0.000000 0.500000 +v -0.000000 -0.097545 0.490393 +v 0.000000 -0.191342 0.461940 +v -0.000000 -0.277785 0.415735 +v -0.000000 -0.353553 0.353554 +v -0.000000 -0.415735 0.277785 +v 0.000000 -0.461940 0.191342 +v 0.000000 -0.490393 0.097545 +v -0.019030 0.490393 0.095671 +v -0.037329 0.461940 0.187665 +v -0.054193 0.415735 0.272448 +v -0.068975 0.353553 0.346760 +v -0.081106 0.277785 0.407747 +v -0.090120 0.191342 0.453064 +v -0.095671 0.097545 0.480970 +v -0.097545 0.000000 0.490393 +v -0.095671 -0.097545 0.480970 +v -0.090120 -0.191342 0.453064 +v -0.081106 -0.277785 0.407747 +v -0.068975 -0.353553 0.346760 +v -0.054193 -0.415735 0.272448 +v -0.037329 -0.461940 0.187665 +v -0.019030 -0.490393 0.095671 +v -0.037329 0.490393 0.090120 +v -0.073223 0.461940 0.176777 +v -0.106304 0.415735 0.256640 +v -0.135299 0.353553 0.326641 +v -0.159095 0.277785 0.384089 +v -0.176777 0.191342 0.426777 +v -0.187665 0.097545 0.453064 +v -0.191342 0.000000 0.461940 +v -0.187665 -0.097545 0.453064 +v -0.176777 -0.191342 0.426777 +v -0.159095 -0.277785 0.384089 +v -0.135299 -0.353553 0.326641 +v -0.106304 -0.415735 0.256640 +v -0.073223 -0.461940 0.176777 +v -0.037329 -0.490393 0.090120 +v -0.054193 0.490393 0.081106 +v -0.106304 0.461940 0.159095 +v -0.154329 0.415735 0.230970 +v -0.196424 0.353553 0.293969 +v -0.230970 0.277785 0.345671 +v -0.256640 0.191342 0.384089 +v -0.272448 0.097545 0.407747 +v -0.277785 0.000000 0.415735 +v -0.272448 -0.097545 0.407747 +v -0.256640 -0.191342 0.384089 +v -0.230970 -0.277785 0.345671 +v -0.196424 -0.353553 0.293969 +v -0.154329 -0.415735 0.230970 +v -0.106304 -0.461940 0.159095 +v -0.054193 -0.490393 0.081106 +v -0.000000 0.500000 0.000000 +v -0.068975 0.490393 0.068975 +v -0.135299 0.461940 0.135299 +v -0.196424 0.415735 0.196424 +v -0.250000 0.353553 0.250000 +v -0.293969 0.277785 0.293969 +v -0.326641 0.191342 0.326641 +v -0.346760 0.097545 0.346760 +v -0.353553 0.000000 0.353553 +v -0.346760 -0.097545 0.346760 +v -0.326641 -0.191342 0.326641 +v -0.293969 -0.277785 0.293969 +v -0.250000 -0.353553 0.250000 +v -0.196424 -0.415735 0.196424 +v -0.135299 -0.461940 0.135299 +v -0.068975 -0.490393 0.068975 +v -0.081106 0.490393 0.054193 +v -0.159095 0.461940 0.106304 +v -0.230970 0.415735 0.154329 +v -0.293969 0.353553 0.196424 +v -0.345671 0.277785 0.230970 +v -0.384089 0.191342 0.256640 +v -0.407746 0.097545 0.272448 +v -0.415735 0.000000 0.277785 +v -0.407746 -0.097545 0.272448 +v -0.384089 -0.191342 0.256640 +v -0.345671 -0.277785 0.230970 +v -0.293969 -0.353553 0.196424 +v -0.230970 -0.415735 0.154329 +v -0.159095 -0.461940 0.106304 +v -0.081106 -0.490393 0.054193 +v -0.090120 0.490393 0.037329 +v -0.176777 0.461940 0.073223 +v -0.256640 0.415735 0.106304 +v -0.326641 0.353553 0.135299 +v -0.384089 0.277785 0.159095 +v -0.426777 0.191342 0.176777 +v -0.453064 0.097545 0.187665 +v -0.461940 0.000000 0.191342 +v -0.453064 -0.097545 0.187665 +v -0.426777 -0.191342 0.176777 +v -0.384089 -0.277785 0.159095 +v -0.326641 -0.353553 0.135299 +v -0.256640 -0.415735 0.106304 +v -0.176777 -0.461940 0.073223 +v -0.090120 -0.490393 0.037329 +v -0.095671 0.490393 0.019030 +v -0.187665 0.461940 0.037329 +v -0.272448 0.415735 0.054193 +v -0.346760 0.353553 0.068975 +v -0.407746 0.277785 0.081106 +v -0.453064 0.191342 0.090120 +v -0.480970 0.097545 0.095671 +v -0.490393 0.000000 0.097545 +v -0.480970 -0.097545 0.095671 +v -0.453064 -0.191342 0.090120 +v -0.407746 -0.277785 0.081106 +v -0.346760 -0.353553 0.068975 +v -0.272447 -0.415735 0.054193 +v -0.187665 -0.461940 0.037329 +v -0.095671 -0.490393 0.019030 +v -0.097545 0.490393 0.000000 +v -0.191342 0.461940 0.000000 +v -0.277785 0.415735 0.000000 +v -0.353553 0.353553 0.000000 +v -0.415735 0.277785 0.000000 +v -0.461940 0.191342 0.000000 +v -0.490392 0.097545 0.000000 +v -0.500000 0.000000 0.000000 +v -0.490392 -0.097545 0.000000 +v -0.461940 -0.191342 0.000000 +v -0.415735 -0.277785 0.000000 +v -0.353553 -0.353553 0.000000 +v -0.277785 -0.415735 0.000000 +v -0.191342 -0.461940 0.000000 +v -0.097545 -0.490393 0.000000 +v -0.095671 0.490393 -0.019030 +v -0.187665 0.461940 -0.037329 +v -0.272448 0.415735 -0.054193 +v -0.346760 0.353553 -0.068975 +v -0.407746 0.277785 -0.081106 +v -0.453064 0.191342 -0.090120 +v -0.480970 0.097545 -0.095671 +v -0.490393 0.000000 -0.097545 +v -0.480970 -0.097545 -0.095671 +v -0.453064 -0.191342 -0.090120 +v -0.407746 -0.277785 -0.081106 +v -0.346760 -0.353553 -0.068975 +v -0.272447 -0.415735 -0.054193 +v -0.187665 -0.461940 -0.037329 +v -0.095671 -0.490393 -0.019030 +v -0.090120 0.490393 -0.037329 +v -0.176777 0.461940 -0.073223 +v -0.256640 0.415735 -0.106304 +v -0.326641 0.353553 -0.135299 +v -0.384089 0.277785 -0.159095 +v -0.426777 0.191342 -0.176777 +v -0.453063 0.097545 -0.187665 +v -0.461940 0.000000 -0.191342 +v -0.453063 -0.097545 -0.187665 +v -0.426777 -0.191342 -0.176777 +v -0.384089 -0.277785 -0.159095 +v -0.326641 -0.353553 -0.135299 +v -0.256640 -0.415735 -0.106304 +v -0.176777 -0.461940 -0.073223 +v -0.090120 -0.490393 -0.037329 +v -0.081106 0.490393 -0.054193 +v -0.159095 0.461940 -0.106304 +v -0.230970 0.415735 -0.154329 +v -0.293969 0.353553 -0.196424 +v -0.345671 0.277785 -0.230970 +v -0.384089 0.191342 -0.256640 +v -0.407746 0.097545 -0.272447 +v -0.415735 0.000000 -0.277785 +v -0.407746 -0.097545 -0.272447 +v -0.384089 -0.191342 -0.256640 +v -0.345671 -0.277785 -0.230970 +v -0.293969 -0.353553 -0.196424 +v -0.230970 -0.415735 -0.154329 +v -0.159095 -0.461940 -0.106304 +v -0.081106 -0.490393 -0.054193 +v -0.068975 0.490393 -0.068975 +v -0.135299 0.461940 -0.135299 +v -0.196424 0.415735 -0.196424 +v -0.250000 0.353553 -0.250000 +v -0.293969 0.277785 -0.293969 +v -0.326641 0.191342 -0.326641 +v -0.346760 0.097545 -0.346760 +v -0.353553 0.000000 -0.353553 +v -0.346760 -0.097545 -0.346760 +v -0.326641 -0.191342 -0.326641 +v -0.293969 -0.277785 -0.293969 +v -0.250000 -0.353553 -0.250000 +v -0.196424 -0.415735 -0.196424 +v -0.135299 -0.461940 -0.135299 +v -0.068975 -0.490393 -0.068975 +v -0.054193 0.490393 -0.081106 +v -0.106304 0.461940 -0.159095 +v -0.154329 0.415735 -0.230970 +v -0.196424 0.353553 -0.293969 +v -0.230970 0.277785 -0.345671 +v -0.256640 0.191342 -0.384089 +v -0.272447 0.097545 -0.407746 +v -0.277785 0.000000 -0.415735 +v -0.272447 -0.097545 -0.407746 +v -0.256640 -0.191342 -0.384089 +v -0.230970 -0.277785 -0.345671 +v -0.196424 -0.353553 -0.293969 +v -0.154329 -0.415735 -0.230970 +v -0.106304 -0.461940 -0.159095 +v -0.054193 -0.490393 -0.081106 +v -0.037329 0.490393 -0.090120 +v -0.073223 0.461940 -0.176776 +v -0.106304 0.415735 -0.256640 +v -0.135299 0.353553 -0.326641 +v -0.159095 0.277785 -0.384089 +v -0.176777 0.191342 -0.426776 +v -0.187665 0.097545 -0.453063 +v -0.191342 0.000000 -0.461939 +v -0.187665 -0.097545 -0.453063 +v -0.176777 -0.191342 -0.426776 +v -0.159095 -0.277785 -0.384089 +v -0.135299 -0.353553 -0.326641 +v -0.106304 -0.415735 -0.256640 +v -0.073223 -0.461940 -0.176776 +v -0.037329 -0.490393 -0.090120 +v -0.019030 0.490393 -0.095671 +v -0.037329 0.461940 -0.187665 +v -0.054193 0.415735 -0.272447 +v -0.068975 0.353553 -0.346760 +v -0.081106 0.277785 -0.407746 +v -0.090120 0.191342 -0.453063 +v -0.095671 0.097545 -0.480969 +v -0.097545 0.000000 -0.490392 +v -0.095671 -0.097545 -0.480969 +v -0.090120 -0.191342 -0.453063 +v -0.081106 -0.277785 -0.407746 +v -0.068975 -0.353553 -0.346760 +v -0.054193 -0.415735 -0.272447 +v -0.037329 -0.461940 -0.187665 +v -0.019030 -0.490393 -0.095671 +v 0.000000 -0.191342 -0.461940 +v 0.000000 -0.277785 -0.415734 +v 0.000000 -0.353553 -0.353553 +v 0.000000 -0.461940 -0.191341 +v 0.000000 -0.490393 -0.097545 +vt 0.750000 0.437500 +vt 0.718750 0.375000 +vt 0.750000 0.375000 +vt 0.750000 0.812500 +vt 0.718750 0.875000 +vt 0.718750 0.812500 +vt 0.718750 0.312500 +vt 0.750000 0.312500 +vt 0.718750 0.750000 +vt 0.750000 0.750000 +vt 0.718750 0.250000 +vt 0.750000 0.250000 +vt 0.718750 0.687500 +vt 0.750000 0.687500 +vt 0.718750 0.187500 +vt 0.750000 0.187500 +vt 0.718750 0.625000 +vt 0.750000 0.625000 +vt 0.718750 0.125000 +vt 0.750000 0.125000 +vt 0.718750 0.562500 +vt 0.750000 0.562500 +vt 0.718750 0.062500 +vt 0.750000 0.062500 +vt 0.718750 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.937500 +vt 0.734375 1.000000 +vt 0.718750 0.937500 +vt 0.734375 0.000000 +vt 0.718750 0.437500 +vt 0.750000 0.875000 +vt 0.687500 0.500000 +vt 0.687500 0.437500 +vt 0.687500 0.937500 +vt 0.687500 0.875000 +vt 0.687500 0.375000 +vt 0.687500 0.812500 +vt 0.687500 0.312500 +vt 0.687500 0.750000 +vt 0.687500 0.250000 +vt 0.687500 0.687500 +vt 0.687500 0.187500 +vt 0.687500 0.625000 +vt 0.687500 0.125000 +vt 0.687500 0.562500 +vt 0.687500 0.062500 +vt 0.703125 1.000000 +vt 0.703125 0.000000 +vt 0.656250 0.187500 +vt 0.656250 0.625000 +vt 0.656250 0.125000 +vt 0.656250 0.562500 +vt 0.656250 0.062500 +vt 0.656250 0.500000 +vt 0.671875 1.000000 +vt 0.656250 0.937500 +vt 0.671875 0.000000 +vt 0.656250 0.437500 +vt 0.656250 0.875000 +vt 0.656250 0.375000 +vt 0.656250 0.812500 +vt 0.656250 0.312500 +vt 0.656250 0.750000 +vt 0.656250 0.250000 +vt 0.656250 0.687500 +vt 0.625000 0.875000 +vt 0.625000 0.375000 +vt 0.625000 0.812500 +vt 0.625000 0.312500 +vt 0.625000 0.750000 +vt 0.625000 0.250000 +vt 0.625000 0.687500 +vt 0.625000 0.187500 +vt 0.625000 0.625000 +vt 0.625000 0.125000 +vt 0.625000 0.562500 +vt 0.625000 0.062500 +vt 0.625000 0.500000 +vt 0.640625 1.000000 +vt 0.625000 0.937500 +vt 0.640625 0.000000 +vt 0.625000 0.437500 +vt 0.593750 0.625000 +vt 0.593750 0.125000 +vt 0.593750 0.562500 +vt 0.593750 0.062500 +vt 0.593750 0.500000 +vt 0.609375 1.000000 +vt 0.593750 0.937500 +vt 0.609375 0.000000 +vt 0.593750 0.437500 +vt 0.593750 0.875000 +vt 0.593750 0.375000 +vt 0.593750 0.812500 +vt 0.593750 0.312500 +vt 0.593750 0.750000 +vt 0.593750 0.250000 +vt 0.593750 0.687500 +vt 0.593750 0.187500 +vt 0.562500 0.375000 +vt 0.562500 0.812500 +vt 0.562500 0.312500 +vt 0.562500 0.750000 +vt 0.562500 0.250000 +vt 0.562500 0.687500 +vt 0.562500 0.187500 +vt 0.562500 0.625000 +vt 0.562500 0.125000 +vt 0.562500 0.562500 +vt 0.562500 0.062500 +vt 0.562500 0.500000 +vt 0.578125 1.000000 +vt 0.562500 0.937500 +vt 0.578125 0.000000 +vt 0.562500 0.437500 +vt 0.562500 0.875000 +vt 0.531250 0.125000 +vt 0.531250 0.625000 +vt 0.531250 0.562500 +vt 0.531250 0.062500 +vt 0.531250 0.500000 +vt 0.546875 1.000000 +vt 0.531250 0.937500 +vt 0.546875 0.000000 +vt 0.531250 0.437500 +vt 0.531250 0.875000 +vt 0.531250 0.375000 +vt 0.531250 0.812500 +vt 0.531250 0.312500 +vt 0.531250 0.750000 +vt 0.531250 0.250000 +vt 0.531250 0.687500 +vt 0.531250 0.187500 +vt 0.500000 0.375000 +vt 0.500000 0.312500 +vt 0.500000 0.750000 +vt 0.500000 0.250000 +vt 0.500000 0.687500 +vt 0.500000 0.187500 +vt 0.500000 0.625000 +vt 0.500000 0.125000 +vt 0.500000 0.562500 +vt 0.500000 0.062500 +vt 0.500000 0.500000 +vt 0.515625 1.000000 +vt 0.500000 0.937500 +vt 0.515625 0.000000 +vt 0.500000 0.437500 +vt 0.500000 0.875000 +vt 0.500000 0.812500 +vt 0.468750 0.125000 +vt 0.468750 0.062500 +vt 0.468750 0.500000 +vt 0.484374 1.000000 +vt 0.468750 0.937500 +vt 0.484375 0.000000 +vt 0.468750 0.437500 +vt 0.468750 0.875000 +vt 0.468750 0.375000 +vt 0.468750 0.812500 +vt 0.468750 0.312500 +vt 0.468750 0.750000 +vt 0.468750 0.250000 +vt 0.468750 0.687500 +vt 0.468750 0.187500 +vt 0.468750 0.625000 +vt 0.468750 0.562500 +vt 0.437500 0.750000 +vt 0.437500 0.250000 +vt 0.437500 0.687500 +vt 0.437500 0.187500 +vt 0.437500 0.625000 +vt 0.437500 0.125000 +vt 0.437500 0.562500 +vt 0.437500 0.062500 +vt 0.437500 0.500000 +vt 0.453124 1.000000 +vt 0.437500 0.937500 +vt 0.453125 0.000000 +vt 0.437500 0.437500 +vt 0.437500 0.875000 +vt 0.437500 0.375000 +vt 0.437500 0.812500 +vt 0.437500 0.312500 +vt 0.406250 0.500000 +vt 0.421874 1.000000 +vt 0.406250 0.937500 +vt 0.421875 0.000000 +vt 0.406250 0.062500 +vt 0.406250 0.437500 +vt 0.406250 0.875000 +vt 0.406250 0.375000 +vt 0.406250 0.812500 +vt 0.406250 0.312500 +vt 0.406250 0.750000 +vt 0.406250 0.250000 +vt 0.406250 0.687500 +vt 0.406250 0.187500 +vt 0.406250 0.625000 +vt 0.406250 0.125000 +vt 0.406250 0.562500 +vt 0.375000 0.250000 +vt 0.375000 0.750000 +vt 0.375000 0.687500 +vt 0.375000 0.187500 +vt 0.375000 0.625000 +vt 0.375000 0.125000 +vt 0.375000 0.562500 +vt 0.375000 0.062500 +vt 0.375000 0.500000 +vt 0.390625 1.000000 +vt 0.375000 0.937500 +vt 0.390625 0.000000 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt 0.375000 0.375000 +vt 0.375000 0.812500 +vt 0.375000 0.312500 +vt 0.359375 1.000000 +vt 0.343750 0.937500 +vt 0.359375 0.000000 +vt 0.343750 0.062500 +vt 0.343750 0.437500 +vt 0.343750 0.875000 +vt 0.343750 0.375000 +vt 0.343750 0.812500 +vt 0.343750 0.312500 +vt 0.343750 0.750000 +vt 0.343750 0.250000 +vt 0.343750 0.687500 +vt 0.343750 0.187500 +vt 0.343750 0.625000 +vt 0.343750 0.125000 +vt 0.343750 0.562500 +vt 0.343750 0.500000 +vt 0.312500 0.687500 +vt 0.312500 0.250000 +vt 0.312500 0.187500 +vt 0.312500 0.625000 +vt 0.312500 0.125000 +vt 0.312500 0.562500 +vt 0.312500 0.062500 +vt 0.312500 0.500000 +vt 0.328125 1.000000 +vt 0.312500 0.937500 +vt 0.328125 0.000000 +vt 0.312500 0.437500 +vt 0.312500 0.875000 +vt 0.312500 0.375000 +vt 0.312500 0.812500 +vt 0.312500 0.312500 +vt 0.312500 0.750000 +vt 0.281250 0.437500 +vt 0.281250 0.875000 +vt 0.281250 0.375000 +vt 0.281250 0.812500 +vt 0.281250 0.312500 +vt 0.281250 0.750000 +vt 0.281250 0.250000 +vt 0.281250 0.687500 +vt 0.281250 0.187500 +vt 0.281250 0.625000 +vt 0.281250 0.125000 +vt 0.281250 0.562500 +vt 0.281250 0.062500 +vt 0.281250 0.500000 +vt 0.296875 1.000000 +vt 0.281250 0.937500 +vt 0.296875 0.000000 +vt 0.250000 0.250000 +vt 0.250000 0.187500 +vt 0.250000 0.625000 +vt 0.250000 0.125000 +vt 0.250000 0.562500 +vt 0.250000 0.062500 +vt 0.250000 0.500000 +vt 0.265625 1.000000 +vt 0.250000 0.937500 +vt 0.265625 0.000000 +vt 0.250000 0.437500 +vt 0.250000 0.875000 +vt 0.250000 0.375000 +vt 0.250000 0.812500 +vt 0.250000 0.312500 +vt 0.250000 0.750000 +vt 0.250000 0.687500 +vt 0.218750 0.375000 +vt 0.218750 0.812500 +vt 0.218750 0.312500 +vt 0.218750 0.750000 +vt 0.218750 0.250000 +vt 0.218750 0.687500 +vt 0.218750 0.187500 +vt 0.218750 0.625000 +vt 0.218750 0.125000 +vt 0.218750 0.562500 +vt 0.218750 0.062500 +vt 0.218750 0.500000 +vt 0.234375 1.000000 +vt 0.218750 0.937500 +vt 0.234375 0.000000 +vt 0.218750 0.437500 +vt 0.218750 0.875000 +vt 0.187500 0.187500 +vt 0.187500 0.125000 +vt 0.187500 0.625000 +vt 0.187500 0.562500 +vt 0.187500 0.062500 +vt 0.187500 0.500000 +vt 0.203125 1.000000 +vt 0.187500 0.937500 +vt 0.203125 0.000000 +vt 0.187500 0.437500 +vt 0.187500 0.875000 +vt 0.187500 0.375000 +vt 0.187500 0.812500 +vt 0.187500 0.312500 +vt 0.187500 0.750000 +vt 0.187500 0.250000 +vt 0.187500 0.687500 +vt 0.156250 0.812500 +vt 0.156250 0.375000 +vt 0.156250 0.312500 +vt 0.156250 0.750000 +vt 0.156250 0.250000 +vt 0.156250 0.687500 +vt 0.156250 0.187500 +vt 0.156250 0.625000 +vt 0.156250 0.125000 +vt 0.156250 0.562500 +vt 0.156250 0.062500 +vt 0.156250 0.500000 +vt 0.171875 1.000000 +vt 0.156250 0.937500 +vt 0.171875 0.000000 +vt 0.156250 0.437500 +vt 0.156250 0.875000 +vt 0.125000 0.625000 +vt 0.125000 0.562500 +vt 0.125000 0.062500 +vt 0.125000 0.500000 +vt 0.140625 1.000000 +vt 0.125000 0.937500 +vt 0.140625 0.000000 +vt 0.125000 0.437500 +vt 0.125000 0.875000 +vt 0.125000 0.375000 +vt 0.125000 0.812500 +vt 0.125000 0.312500 +vt 0.125000 0.750000 +vt 0.125000 0.250000 +vt 0.125000 0.687500 +vt 0.125000 0.187500 +vt 0.125000 0.125000 +vt 0.093750 0.375000 +vt 0.093750 0.312500 +vt 0.093750 0.812500 +vt 0.093750 0.750000 +vt 0.093750 0.250000 +vt 0.093750 0.687500 +vt 0.093750 0.187500 +vt 0.093750 0.625000 +vt 0.093750 0.125000 +vt 0.093750 0.562500 +vt 0.093750 0.062500 +vt 0.093750 0.500000 +vt 0.109375 1.000000 +vt 0.093750 0.937500 +vt 0.109375 0.000000 +vt 0.093750 0.437500 +vt 0.093750 0.875000 +vt 0.062500 0.125000 +vt 0.062500 0.062500 +vt 0.062500 0.500000 +vt 0.078125 1.000000 +vt 0.062500 0.937500 +vt 0.078125 0.000000 +vt 0.062500 0.437500 +vt 0.062500 0.875000 +vt 0.062500 0.375000 +vt 0.062500 0.812500 +vt 0.062500 0.312500 +vt 0.062500 0.750000 +vt 0.062500 0.250000 +vt 0.062500 0.687500 +vt 0.062500 0.187500 +vt 0.062500 0.625000 +vt 0.062500 0.562500 +vt 0.031250 0.812500 +vt 0.031250 0.750000 +vt 0.031250 0.250000 +vt 0.031250 0.687500 +vt 0.031250 0.187500 +vt 0.031250 0.625000 +vt 0.031250 0.125000 +vt 0.031250 0.562500 +vt 0.031250 0.062500 +vt 0.031250 0.500000 +vt 0.046875 1.000000 +vt 0.031250 0.937500 +vt 0.046875 0.000000 +vt 0.031250 0.437500 +vt 0.031250 0.875000 +vt 0.031250 0.375000 +vt 0.031250 0.312500 +vt 0.000000 0.500000 +vt 0.015625 1.000000 +vt 0.000000 0.937500 +vt 0.015625 0.000000 +vt 0.000000 0.062500 +vt 0.000000 0.437500 +vt 0.000000 0.875000 +vt 0.000000 0.375000 +vt 0.000000 0.812500 +vt 0.000000 0.312500 +vt 0.000000 0.750000 +vt 0.000000 0.250000 +vt 0.000000 0.687500 +vt 0.000000 0.187500 +vt 0.000000 0.625000 +vt 0.000000 0.125000 +vt 0.000000 0.562500 +vt 1.000000 0.312500 +vt 0.968750 0.250000 +vt 1.000000 0.250000 +vt 1.000000 0.750000 +vt 0.968750 0.687500 +vt 1.000000 0.687500 +vt 0.968750 0.187500 +vt 1.000000 0.187500 +vt 0.968750 0.625000 +vt 1.000000 0.625000 +vt 1.000000 0.125000 +vt 0.968750 0.125000 +vt 1.000000 0.562500 +vt 0.968750 0.562500 +vt 0.968750 0.062500 +vt 1.000000 0.062500 +vt 0.968750 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.937500 +vt 0.984375 1.000000 +vt 0.968750 0.937500 +vt 0.984375 0.000000 +vt 1.000000 0.437500 +vt 0.968750 0.437500 +vt 1.000000 0.875000 +vt 0.968750 0.875000 +vt 0.968750 0.375000 +vt 1.000000 0.375000 +vt 0.968750 0.812500 +vt 1.000000 0.812500 +vt 0.968750 0.312500 +vt 0.968750 0.750000 +vt 0.953125 0.000000 +vt 0.937500 0.062500 +vt 0.937500 0.500000 +vt 0.937500 0.437500 +vt 0.937500 0.937500 +vt 0.937500 0.875000 +vt 0.937500 0.375000 +vt 0.937500 0.812500 +vt 0.937500 0.312500 +vt 0.937500 0.750000 +vt 0.937500 0.250000 +vt 0.937500 0.687500 +vt 0.937500 0.187500 +vt 0.937500 0.625000 +vt 0.937500 0.125000 +vt 0.937500 0.562500 +vt 0.953125 1.000000 +vt 0.906250 0.187500 +vt 0.906250 0.625000 +vt 0.906250 0.125000 +vt 0.906250 0.562500 +vt 0.906250 0.062500 +vt 0.906250 0.500000 +vt 0.921875 1.000000 +vt 0.906250 0.937500 +vt 0.921875 0.000000 +vt 0.906250 0.437500 +vt 0.906250 0.875000 +vt 0.906250 0.375000 +vt 0.906250 0.812500 +vt 0.906250 0.312500 +vt 0.906250 0.750000 +vt 0.906250 0.250000 +vt 0.906250 0.687500 +vt 0.875000 0.875000 +vt 0.875000 0.375000 +vt 0.875000 0.812500 +vt 0.875000 0.312500 +vt 0.875000 0.750000 +vt 0.875000 0.250000 +vt 0.875000 0.687500 +vt 0.875000 0.187500 +vt 0.875000 0.625000 +vt 0.875000 0.125000 +vt 0.875000 0.562500 +vt 0.875000 0.062500 +vt 0.875000 0.500000 +vt 0.890625 1.000000 +vt 0.875000 0.937500 +vt 0.890625 0.000000 +vt 0.875000 0.437500 +vt 0.843750 0.625000 +vt 0.843750 0.125000 +vt 0.843750 0.562500 +vt 0.843750 0.062500 +vt 0.843750 0.500000 +vt 0.859375 1.000000 +vt 0.843750 0.937500 +vt 0.859375 0.000000 +vt 0.843750 0.437500 +vt 0.843750 0.875000 +vt 0.843750 0.375000 +vt 0.843750 0.812500 +vt 0.843750 0.312500 +vt 0.843750 0.750000 +vt 0.843750 0.250000 +vt 0.843750 0.687500 +vt 0.843750 0.187500 +vt 0.812500 0.375000 +vt 0.812500 0.875000 +vt 0.812500 0.812500 +vt 0.812500 0.312500 +vt 0.812500 0.750000 +vt 0.812500 0.250000 +vt 0.812500 0.687500 +vt 0.812500 0.187500 +vt 0.812500 0.625000 +vt 0.812500 0.125000 +vt 0.812500 0.562500 +vt 0.812500 0.062500 +vt 0.812500 0.500000 +vt 0.828125 1.000000 +vt 0.812500 0.937500 +vt 0.828125 0.000000 +vt 0.812500 0.437500 +vt 0.781250 0.187500 +vt 0.781250 0.125000 +vt 0.781250 0.625000 +vt 0.781250 0.562500 +vt 0.781250 0.062500 +vt 0.781250 0.500000 +vt 0.796875 1.000000 +vt 0.781250 0.937500 +vt 0.796875 0.000000 +vt 0.781250 0.437500 +vt 0.781250 0.875000 +vt 0.781250 0.375000 +vt 0.781250 0.812500 +vt 0.781250 0.312500 +vt 0.781250 0.750000 +vt 0.781250 0.250000 +vt 0.781250 0.687500 +vt 0.765625 1.000000 +vt 0.765625 0.000000 +vn 0.0938 -0.2890 -0.9527 +vn 0.0464 0.8810 -0.4709 +vn 0.0865 -0.4696 -0.8786 +vn 0.0624 0.7715 -0.6332 +vn 0.0759 -0.6326 -0.7708 +vn 0.0759 0.6326 -0.7708 +vn 0.0624 -0.7715 -0.6332 +vn 0.0865 0.4696 -0.8786 +vn 0.0464 -0.8810 -0.4709 +vn 0.0938 0.2890 -0.9527 +vn 0.0286 -0.9565 -0.2902 +vn 0.0975 0.0975 -0.9904 +vn 0.0097 0.9951 -0.0980 +vn 0.0097 -0.9951 -0.0980 +vn 0.0975 -0.0975 -0.9904 +vn 0.0286 0.9565 -0.2902 +vn 0.2889 -0.0975 -0.9524 +vn 0.0846 0.9565 -0.2790 +vn 0.2779 -0.2890 -0.9161 +vn 0.1374 0.8810 -0.4528 +vn 0.2563 -0.4696 -0.8448 +vn 0.1847 0.7715 -0.6088 +vn 0.2248 -0.6326 -0.7412 +vn 0.2248 0.6326 -0.7412 +vn 0.1847 -0.7715 -0.6088 +vn 0.2563 0.4696 -0.8448 +vn 0.1374 -0.8810 -0.4528 +vn 0.2779 0.2890 -0.9161 +vn 0.0846 -0.9565 -0.2790 +vn 0.2889 0.0975 -0.9524 +vn 0.0286 0.9951 -0.0942 +vn 0.0286 -0.9951 -0.0942 +vn 0.2999 -0.7715 -0.5611 +vn 0.4162 0.4696 -0.7786 +vn 0.2230 -0.8810 -0.4173 +vn 0.4513 0.2890 -0.8443 +vn 0.1374 -0.9565 -0.2571 +vn 0.4691 0.0975 -0.8777 +vn 0.0464 0.9951 -0.0869 +vn 0.0464 -0.9951 -0.0869 +vn 0.4691 -0.0975 -0.8777 +vn 0.1374 0.9565 -0.2571 +vn 0.4513 -0.2890 -0.8443 +vn 0.2231 0.8810 -0.4173 +vn 0.4162 -0.4696 -0.7786 +vn 0.2999 0.7715 -0.5611 +vn 0.3651 -0.6326 -0.6831 +vn 0.3651 0.6326 -0.6831 +vn 0.1850 0.9565 -0.2254 +vn 0.6073 -0.2890 -0.7400 +vn 0.3002 0.8810 -0.3658 +vn 0.5601 -0.4696 -0.6825 +vn 0.4036 0.7715 -0.4918 +vn 0.4913 -0.6326 -0.5987 +vn 0.4913 0.6326 -0.5987 +vn 0.4036 -0.7715 -0.4918 +vn 0.5601 0.4696 -0.6825 +vn 0.3002 -0.8810 -0.3658 +vn 0.6073 0.2890 -0.7400 +vn 0.1850 -0.9565 -0.2254 +vn 0.6314 0.0976 -0.7693 +vn 0.0625 0.9951 -0.0761 +vn 0.0625 -0.9951 -0.0761 +vn 0.6314 -0.0976 -0.7693 +vn 0.6825 0.4696 -0.5601 +vn 0.3658 -0.8810 -0.3002 +vn 0.7400 0.2890 -0.6073 +vn 0.2254 -0.9565 -0.1850 +vn 0.7693 0.0976 -0.6314 +vn 0.0761 0.9951 -0.0625 +vn 0.0761 -0.9951 -0.0625 +vn 0.7693 -0.0975 -0.6314 +vn 0.2254 0.9565 -0.1850 +vn 0.7400 -0.2890 -0.6073 +vn 0.3658 0.8810 -0.3002 +vn 0.6825 -0.4696 -0.5601 +vn 0.4918 0.7715 -0.4036 +vn 0.5987 -0.6326 -0.4913 +vn 0.5987 0.6326 -0.4913 +vn 0.4918 -0.7715 -0.4036 +vn 0.8443 -0.2890 -0.4513 +vn 0.4173 0.8810 -0.2231 +vn 0.7786 -0.4696 -0.4162 +vn 0.5611 0.7715 -0.2999 +vn 0.6831 -0.6326 -0.3651 +vn 0.6831 0.6326 -0.3651 +vn 0.5611 -0.7715 -0.2999 +vn 0.7786 0.4696 -0.4162 +vn 0.4173 -0.8810 -0.2231 +vn 0.8443 0.2890 -0.4513 +vn 0.2571 -0.9565 -0.1374 +vn 0.8777 0.0976 -0.4691 +vn 0.0869 0.9951 -0.0464 +vn 0.0869 -0.9951 -0.0464 +vn 0.8777 -0.0976 -0.4691 +vn 0.2571 0.9565 -0.1374 +vn 0.4528 -0.8810 -0.1374 +vn 0.9161 0.2890 -0.2779 +vn 0.2790 -0.9565 -0.0846 +vn 0.9524 0.0976 -0.2889 +vn 0.0942 0.9951 -0.0286 +vn 0.0942 -0.9951 -0.0286 +vn 0.9524 -0.0976 -0.2889 +vn 0.2790 0.9565 -0.0846 +vn 0.9161 -0.2890 -0.2779 +vn 0.4528 0.8810 -0.1374 +vn 0.8448 -0.4696 -0.2563 +vn 0.6088 0.7715 -0.1847 +vn 0.7412 -0.6326 -0.2248 +vn 0.7412 0.6326 -0.2248 +vn 0.6088 -0.7715 -0.1847 +vn 0.8448 0.4696 -0.2563 +vn 0.8786 -0.4696 -0.0865 +vn 0.6332 0.7715 -0.0624 +vn 0.7708 -0.6326 -0.0759 +vn 0.7708 0.6326 -0.0759 +vn 0.6332 -0.7715 -0.0624 +vn 0.8786 0.4696 -0.0865 +vn 0.4709 -0.8810 -0.0464 +vn 0.9527 0.2890 -0.0938 +vn 0.2902 -0.9565 -0.0286 +vn 0.9904 0.0976 -0.0975 +vn 0.0980 0.9951 -0.0097 +vn 0.0980 -0.9951 -0.0097 +vn 0.9904 -0.0976 -0.0975 +vn 0.2902 0.9565 -0.0286 +vn 0.9527 -0.2890 -0.0938 +vn 0.4709 0.8810 -0.0464 +vn 0.2902 -0.9565 0.0286 +vn 0.9904 0.0976 0.0975 +vn 0.0980 0.9951 0.0097 +vn 0.0980 -0.9951 0.0097 +vn 0.9904 -0.0976 0.0975 +vn 0.2902 0.9565 0.0286 +vn 0.9527 -0.2890 0.0938 +vn 0.4709 0.8810 0.0464 +vn 0.8786 -0.4696 0.0865 +vn 0.6332 0.7715 0.0624 +vn 0.7708 -0.6326 0.0759 +vn 0.7708 0.6326 0.0759 +vn 0.6332 -0.7715 0.0624 +vn 0.8786 0.4696 0.0865 +vn 0.4709 -0.8810 0.0464 +vn 0.9527 0.2890 0.0938 +vn 0.6088 0.7715 0.1847 +vn 0.7412 -0.6326 0.2248 +vn 0.7412 0.6326 0.2248 +vn 0.6088 -0.7715 0.1847 +vn 0.8448 0.4696 0.2563 +vn 0.4528 -0.8810 0.1374 +vn 0.9161 0.2890 0.2779 +vn 0.2790 -0.9565 0.0846 +vn 0.9524 0.0976 0.2889 +vn 0.0942 0.9951 0.0286 +vn 0.0942 -0.9951 0.0286 +vn 0.9524 -0.0976 0.2889 +vn 0.2790 0.9565 0.0846 +vn 0.9161 -0.2890 0.2779 +vn 0.4528 0.8810 0.1374 +vn 0.8448 -0.4696 0.2563 +vn 0.8777 0.0976 0.4691 +vn 0.0869 0.9951 0.0464 +vn 0.0869 -0.9951 0.0464 +vn 0.8777 -0.0976 0.4691 +vn 0.2571 0.9565 0.1374 +vn 0.8443 -0.2890 0.4513 +vn 0.4173 0.8810 0.2231 +vn 0.7786 -0.4696 0.4162 +vn 0.5611 0.7715 0.2999 +vn 0.6831 -0.6326 0.3651 +vn 0.6831 0.6326 0.3651 +vn 0.5611 -0.7715 0.2999 +vn 0.7786 0.4696 0.4162 +vn 0.4173 -0.8810 0.2230 +vn 0.8443 0.2890 0.4513 +vn 0.2571 -0.9566 0.1374 +vn 0.5987 -0.6326 0.4913 +vn 0.5987 0.6326 0.4913 +vn 0.4918 -0.7715 0.4036 +vn 0.6825 0.4696 0.5601 +vn 0.3658 -0.8810 0.3002 +vn 0.7400 0.2890 0.6073 +vn 0.2254 -0.9566 0.1850 +vn 0.7693 0.0976 0.6314 +vn 0.0761 0.9951 0.0625 +vn 0.0761 -0.9951 0.0625 +vn 0.7693 -0.0976 0.6314 +vn 0.2254 0.9565 0.1850 +vn 0.7400 -0.2890 0.6073 +vn 0.3658 0.8810 0.3002 +vn 0.6825 -0.4696 0.5601 +vn 0.4918 0.7715 0.4036 +vn 0.0625 0.9951 0.0761 +vn 0.0625 -0.9951 0.0761 +vn 0.6314 -0.0976 0.7693 +vn 0.1850 0.9565 0.2254 +vn 0.6073 -0.2890 0.7400 +vn 0.3002 0.8810 0.3658 +vn 0.5601 -0.4696 0.6825 +vn 0.4036 0.7715 0.4918 +vn 0.4913 -0.6326 0.5987 +vn 0.4913 0.6326 0.5987 +vn 0.4036 -0.7715 0.4918 +vn 0.5601 0.4696 0.6825 +vn 0.3002 -0.8810 0.3658 +vn 0.6073 0.2890 0.7400 +vn 0.1850 -0.9565 0.2254 +vn 0.6314 0.0976 0.7693 +vn 0.3651 0.6326 0.6831 +vn 0.2999 -0.7715 0.5611 +vn 0.4162 0.4696 0.7786 +vn 0.2230 -0.8810 0.4173 +vn 0.4513 0.2890 0.8443 +vn 0.1374 -0.9565 0.2571 +vn 0.4691 0.0976 0.8777 +vn 0.0464 0.9951 0.0869 +vn 0.0464 -0.9951 0.0869 +vn 0.4691 -0.0976 0.8777 +vn 0.1374 0.9565 0.2571 +vn 0.4513 -0.2890 0.8443 +vn 0.2230 0.8810 0.4173 +vn 0.4162 -0.4696 0.7786 +vn 0.2999 0.7715 0.5611 +vn 0.3651 -0.6326 0.6831 +vn 0.2889 -0.0976 0.9524 +vn 0.0846 0.9565 0.2790 +vn 0.2779 -0.2890 0.9161 +vn 0.1374 0.8810 0.4528 +vn 0.2563 -0.4696 0.8448 +vn 0.1847 0.7715 0.6088 +vn 0.2248 -0.6326 0.7412 +vn 0.2248 0.6326 0.7412 +vn 0.1847 -0.7715 0.6088 +vn 0.2563 0.4696 0.8448 +vn 0.1374 -0.8810 0.4528 +vn 0.2779 0.2890 0.9161 +vn 0.0846 -0.9565 0.2790 +vn 0.2889 0.0976 0.9524 +vn 0.0286 0.9951 0.0942 +vn 0.0286 -0.9951 0.0942 +vn 0.0624 -0.7715 0.6332 +vn 0.0865 0.4696 0.8786 +vn 0.0464 -0.8810 0.4709 +vn 0.0938 0.2890 0.9527 +vn 0.0286 -0.9565 0.2902 +vn 0.0975 0.0976 0.9904 +vn 0.0097 0.9951 0.0980 +vn 0.0097 -0.9951 0.0980 +vn 0.0975 -0.0976 0.9904 +vn 0.0286 0.9565 0.2902 +vn 0.0938 -0.2890 0.9527 +vn 0.0464 0.8810 0.4709 +vn 0.0865 -0.4696 0.8786 +vn 0.0624 0.7715 0.6332 +vn 0.0759 -0.6326 0.7708 +vn 0.0759 0.6326 0.7708 +vn -0.0938 -0.2890 0.9527 +vn -0.0464 0.8810 0.4709 +vn -0.0865 -0.4696 0.8786 +vn -0.0624 0.7715 0.6332 +vn -0.0759 -0.6326 0.7708 +vn -0.0759 0.6326 0.7708 +vn -0.0624 -0.7715 0.6332 +vn -0.0865 0.4696 0.8786 +vn -0.0464 -0.8810 0.4709 +vn -0.0938 0.2890 0.9527 +vn -0.0286 -0.9565 0.2902 +vn -0.0976 0.0976 0.9904 +vn -0.0097 0.9951 0.0980 +vn -0.0097 -0.9951 0.0980 +vn -0.0976 -0.0976 0.9904 +vn -0.0286 0.9565 0.2902 +vn -0.1374 -0.8810 0.4528 +vn -0.2779 0.2890 0.9161 +vn -0.0846 -0.9565 0.2790 +vn -0.2889 0.0976 0.9524 +vn -0.0286 0.9951 0.0942 +vn -0.0286 -0.9951 0.0942 +vn -0.2889 -0.0976 0.9524 +vn -0.0846 0.9565 0.2790 +vn -0.2779 -0.2890 0.9161 +vn -0.1374 0.8810 0.4528 +vn -0.2563 -0.4696 0.8448 +vn -0.1847 0.7715 0.6088 +vn -0.2248 -0.6326 0.7412 +vn -0.2248 0.6326 0.7412 +vn -0.1847 -0.7715 0.6088 +vn -0.2563 0.4696 0.8448 +vn -0.2230 0.8810 0.4173 +vn -0.4162 -0.4696 0.7786 +vn -0.2999 0.7715 0.5611 +vn -0.3651 -0.6326 0.6831 +vn -0.3651 0.6326 0.6831 +vn -0.2999 -0.7715 0.5611 +vn -0.4162 0.4696 0.7786 +vn -0.2231 -0.8810 0.4173 +vn -0.4513 0.2890 0.8443 +vn -0.1374 -0.9565 0.2571 +vn -0.4691 0.0976 0.8777 +vn -0.0464 0.9951 0.0869 +vn -0.0464 -0.9951 0.0869 +vn -0.4691 -0.0976 0.8777 +vn -0.1374 0.9565 0.2571 +vn -0.4513 -0.2890 0.8443 +vn -0.6073 0.2890 0.7400 +vn -0.1850 -0.9565 0.2254 +vn -0.6314 0.0976 0.7693 +vn -0.0625 0.9951 0.0761 +vn -0.0625 -0.9951 0.0761 +vn -0.6314 -0.0976 0.7693 +vn -0.1850 0.9565 0.2254 +vn -0.6073 -0.2890 0.7400 +vn -0.3002 0.8810 0.3658 +vn -0.5601 -0.4696 0.6825 +vn -0.4036 0.7715 0.4918 +vn -0.4913 -0.6326 0.5987 +vn -0.4913 0.6326 0.5987 +vn -0.4036 -0.7715 0.4918 +vn -0.5601 0.4696 0.6825 +vn -0.3002 -0.8810 0.3658 +vn -0.6825 -0.4696 0.5601 +vn -0.4918 0.7715 0.4036 +vn -0.5987 -0.6326 0.4913 +vn -0.5987 0.6326 0.4913 +vn -0.4918 -0.7715 0.4036 +vn -0.6825 0.4696 0.5601 +vn -0.3658 -0.8810 0.3002 +vn -0.7400 0.2890 0.6073 +vn -0.2254 -0.9565 0.1850 +vn -0.7693 0.0976 0.6314 +vn -0.0761 0.9951 0.0625 +vn -0.0761 -0.9951 0.0625 +vn -0.7693 -0.0976 0.6314 +vn -0.2254 0.9565 0.1850 +vn -0.7400 -0.2890 0.6073 +vn -0.3658 0.8810 0.3002 +vn -0.2571 -0.9565 0.1374 +vn -0.8777 0.0976 0.4691 +vn -0.0869 0.9951 0.0464 +vn -0.0869 -0.9951 0.0464 +vn -0.8777 -0.0976 0.4691 +vn -0.2571 0.9565 0.1374 +vn -0.8443 -0.2890 0.4513 +vn -0.4173 0.8810 0.2230 +vn -0.7786 -0.4696 0.4162 +vn -0.5611 0.7715 0.2999 +vn -0.6831 -0.6326 0.3651 +vn -0.6831 0.6326 0.3651 +vn -0.5611 -0.7715 0.2999 +vn -0.7786 0.4696 0.4162 +vn -0.4173 -0.8810 0.2231 +vn -0.8443 0.2890 0.4513 +vn -0.6088 0.7715 0.1847 +vn -0.7412 -0.6326 0.2248 +vn -0.7412 0.6326 0.2248 +vn -0.6088 -0.7715 0.1847 +vn -0.8448 0.4696 0.2563 +vn -0.4528 -0.8810 0.1374 +vn -0.9161 0.2890 0.2779 +vn -0.2790 -0.9565 0.0846 +vn -0.9524 0.0976 0.2889 +vn -0.0942 0.9951 0.0286 +vn -0.0942 -0.9951 0.0286 +vn -0.9524 -0.0976 0.2889 +vn -0.2790 0.9565 0.0846 +vn -0.9161 -0.2890 0.2779 +vn -0.4528 0.8810 0.1374 +vn -0.8448 -0.4696 0.2563 +vn -0.9904 0.0976 0.0975 +vn -0.0980 0.9951 0.0097 +vn -0.0980 -0.9951 0.0097 +vn -0.9904 -0.0976 0.0975 +vn -0.2902 0.9565 0.0286 +vn -0.9527 -0.2890 0.0938 +vn -0.4709 0.8810 0.0464 +vn -0.8786 -0.4696 0.0865 +vn -0.6332 0.7715 0.0624 +vn -0.7708 -0.6326 0.0759 +vn -0.7708 0.6326 0.0759 +vn -0.6332 -0.7715 0.0624 +vn -0.8786 0.4696 0.0865 +vn -0.4709 -0.8810 0.0464 +vn -0.9527 0.2890 0.0938 +vn -0.2902 -0.9565 0.0286 +vn -0.7708 -0.6326 -0.0759 +vn -0.7708 0.6326 -0.0759 +vn -0.6332 -0.7715 -0.0624 +vn -0.8786 0.4696 -0.0865 +vn -0.4709 -0.8810 -0.0464 +vn -0.9527 0.2890 -0.0938 +vn -0.2902 -0.9565 -0.0286 +vn -0.9904 0.0976 -0.0976 +vn -0.0980 0.9951 -0.0097 +vn -0.0980 -0.9951 -0.0097 +vn -0.9904 -0.0976 -0.0976 +vn -0.2902 0.9565 -0.0286 +vn -0.9527 -0.2890 -0.0938 +vn -0.4709 0.8810 -0.0464 +vn -0.8786 -0.4696 -0.0865 +vn -0.6332 0.7715 -0.0624 +vn -0.0942 -0.9951 -0.0286 +vn -0.9524 -0.0976 -0.2889 +vn -0.2790 0.9565 -0.0846 +vn -0.9161 -0.2890 -0.2779 +vn -0.4528 0.8810 -0.1374 +vn -0.8448 -0.4696 -0.2563 +vn -0.6088 0.7715 -0.1847 +vn -0.7412 -0.6326 -0.2248 +vn -0.7412 0.6326 -0.2248 +vn -0.6088 -0.7715 -0.1847 +vn -0.8448 0.4696 -0.2563 +vn -0.4528 -0.8810 -0.1374 +vn -0.9161 0.2890 -0.2779 +vn -0.2790 -0.9565 -0.0846 +vn -0.9524 0.0976 -0.2889 +vn -0.0942 0.9951 -0.0286 +vn -0.5611 -0.7715 -0.2999 +vn -0.7786 0.4696 -0.4162 +vn -0.4173 -0.8810 -0.2231 +vn -0.8443 0.2890 -0.4513 +vn -0.2571 -0.9565 -0.1374 +vn -0.8777 0.0976 -0.4691 +vn -0.0869 0.9951 -0.0464 +vn -0.0869 -0.9951 -0.0464 +vn -0.8777 -0.0976 -0.4691 +vn -0.2571 0.9565 -0.1374 +vn -0.8443 -0.2890 -0.4513 +vn -0.4173 0.8810 -0.2231 +vn -0.7786 -0.4696 -0.4162 +vn -0.5611 0.7715 -0.2999 +vn -0.6831 -0.6326 -0.3651 +vn -0.6831 0.6326 -0.3651 +vn -0.2254 0.9565 -0.1850 +vn -0.7400 -0.2890 -0.6073 +vn -0.3658 0.8810 -0.3002 +vn -0.6825 -0.4696 -0.5601 +vn -0.4918 0.7715 -0.4036 +vn -0.5987 -0.6326 -0.4913 +vn -0.5987 0.6326 -0.4913 +vn -0.4918 -0.7715 -0.4036 +vn -0.6825 0.4696 -0.5601 +vn -0.3658 -0.8810 -0.3002 +vn -0.7400 0.2890 -0.6073 +vn -0.2254 -0.9565 -0.1850 +vn -0.7693 0.0976 -0.6314 +vn -0.0761 0.9951 -0.0625 +vn -0.0761 -0.9951 -0.0625 +vn -0.7693 -0.0976 -0.6314 +vn -0.5601 0.4696 -0.6825 +vn -0.3002 -0.8810 -0.3658 +vn -0.6073 0.2890 -0.7400 +vn -0.1850 -0.9565 -0.2254 +vn -0.6314 0.0976 -0.7693 +vn -0.0625 0.9951 -0.0761 +vn -0.0625 -0.9951 -0.0761 +vn -0.6314 -0.0976 -0.7693 +vn -0.1850 0.9565 -0.2254 +vn -0.6073 -0.2890 -0.7400 +vn -0.3002 0.8810 -0.3658 +vn -0.5601 -0.4696 -0.6825 +vn -0.4036 0.7715 -0.4918 +vn -0.4913 -0.6326 -0.5987 +vn -0.4913 0.6326 -0.5987 +vn -0.4036 -0.7715 -0.4918 +vn -0.4513 -0.2890 -0.8443 +vn -0.2230 0.8810 -0.4173 +vn -0.4162 -0.4696 -0.7786 +vn -0.2999 0.7715 -0.5611 +vn -0.3651 -0.6326 -0.6831 +vn -0.3651 0.6326 -0.6831 +vn -0.2999 -0.7715 -0.5611 +vn -0.4162 0.4696 -0.7786 +vn -0.2230 -0.8810 -0.4173 +vn -0.4513 0.2890 -0.8443 +vn -0.1374 -0.9565 -0.2571 +vn -0.4691 0.0976 -0.8777 +vn -0.0464 0.9951 -0.0869 +vn -0.0464 -0.9951 -0.0869 +vn -0.4691 -0.0976 -0.8777 +vn -0.1374 0.9565 -0.2571 +vn -0.1374 -0.8810 -0.4528 +vn -0.2779 0.2890 -0.9161 +vn -0.0846 -0.9565 -0.2790 +vn -0.2889 0.0976 -0.9524 +vn -0.0286 0.9951 -0.0942 +vn -0.0286 -0.9951 -0.0942 +vn -0.2889 -0.0976 -0.9524 +vn -0.0846 0.9565 -0.2790 +vn -0.2779 -0.2890 -0.9161 +vn -0.1374 0.8810 -0.4528 +vn -0.2563 -0.4696 -0.8448 +vn -0.1847 0.7715 -0.6088 +vn -0.2248 -0.6326 -0.7412 +vn -0.2248 0.6326 -0.7412 +vn -0.1847 -0.7715 -0.6088 +vn -0.2563 0.4696 -0.8448 +vn -0.0464 0.8810 -0.4709 +vn -0.0865 -0.4696 -0.8786 +vn -0.0624 0.7715 -0.6332 +vn -0.0759 -0.6326 -0.7708 +vn -0.0759 0.6326 -0.7708 +vn -0.0624 -0.7715 -0.6332 +vn -0.0865 0.4696 -0.8786 +vn -0.0464 -0.8810 -0.4709 +vn -0.0938 0.2890 -0.9527 +vn -0.0286 -0.9565 -0.2902 +vn -0.0976 0.0975 -0.9904 +vn -0.0097 0.9951 -0.0980 +vn -0.0097 -0.9951 -0.0980 +vn -0.0976 -0.0976 -0.9904 +vn -0.0286 0.9565 -0.2902 +vn -0.0938 -0.2890 -0.9527 +vn 0.0976 0.0975 -0.9904 +vn 0.0976 -0.0975 -0.9904 +vn 0.2230 0.8810 -0.4173 +vn 0.7693 0.0975 -0.6314 +vn 0.7693 -0.0976 -0.6314 +vn 0.4173 -0.8810 -0.2230 +vn 0.4173 -0.8810 0.2231 +vn 0.2571 -0.9565 0.1374 +vn 0.2254 -0.9565 0.1850 +vn -0.0846 0.9566 0.2790 +vn -0.2230 -0.8810 0.4173 +vn -0.1374 0.9566 0.2571 +vn -0.4173 0.8810 0.2231 +vn -0.4173 -0.8810 -0.2230 +vn -0.0976 0.0976 -0.9904 +vn -0.0976 -0.0975 -0.9904 +usemtl None +s off +f 9/1/1 20/2/1 478/3/1 +f 3/4/2 12/5/2 13/6/2 +f 478/3/3 21/7/3 479/8/3 +f 3/4/4 14/9/4 4/10/4 +f 479/8/5 22/11/5 480/12/5 +f 4/10/6 15/13/6 5/14/6 +f 480/12/7 23/15/7 10/16/7 +f 5/14/8 16/17/8 6/18/8 +f 10/16/9 24/19/9 481/20/9 +f 6/18/10 17/21/10 7/22/10 +f 481/20/11 25/23/11 482/24/11 +f 7/22/12 18/25/12 8/26/12 +f 1/27/13 297/28/13 11/29/13 +f 206/30/14 482/24/14 25/23/14 +f 8/26/15 19/31/15 9/1/15 +f 2/32/16 11/29/16 12/5/16 +f 19/31/17 33/33/17 34/34/17 +f 12/5/18 26/35/18 27/36/18 +f 19/31/19 35/37/19 20/2/19 +f 12/5/20 28/38/20 13/6/20 +f 21/7/21 35/37/21 36/39/21 +f 13/6/22 29/40/22 14/9/22 +f 22/11/23 36/39/23 37/41/23 +f 14/9/24 30/42/24 15/13/24 +f 23/15/25 37/41/25 38/43/25 +f 15/13/26 31/44/26 16/17/26 +f 24/19/27 38/43/27 39/45/27 +f 17/21/28 31/44/28 32/46/28 +f 24/19/29 40/47/29 25/23/29 +f 17/21/30 33/33/30 18/25/30 +f 11/29/31 297/48/31 26/35/31 +f 206/49/32 25/23/32 40/47/32 +f 37/41/33 53/50/33 38/43/33 +f 30/42/34 46/51/34 31/44/34 +f 38/43/35 54/52/35 39/45/35 +f 32/46/36 46/51/36 47/53/36 +f 39/45/37 55/54/37 40/47/37 +f 33/33/38 47/53/38 48/55/38 +f 26/35/39 297/56/39 41/57/39 +f 206/58/40 40/47/40 55/54/40 +f 33/33/41 49/59/41 34/34/41 +f 26/35/42 42/60/42 27/36/42 +f 34/34/43 50/61/43 35/37/43 +f 28/38/44 42/60/44 43/62/44 +f 36/39/45 50/61/45 51/63/45 +f 29/40/46 43/62/46 44/64/46 +f 36/39/47 52/65/47 37/41/47 +f 29/40/48 45/66/48 30/42/48 +f 41/57/49 57/67/49 42/60/49 +f 49/59/50 65/68/50 50/61/50 +f 42/60/51 58/69/51 43/62/51 +f 51/63/52 65/68/52 66/70/52 +f 43/62/53 59/71/53 44/64/53 +f 52/65/54 66/70/54 67/72/54 +f 44/64/55 60/73/55 45/66/55 +f 53/50/56 67/72/56 68/74/56 +f 45/66/57 61/75/57 46/51/57 +f 53/50/58 69/76/58 54/52/58 +f 47/53/59 61/75/59 62/77/59 +f 54/52/60 70/78/60 55/54/60 +f 48/55/61 62/77/61 63/79/61 +f 41/57/62 297/80/62 56/81/62 +f 206/82/63 55/54/63 70/78/63 +f 48/55/64 64/83/64 49/59/64 +f 60/73/65 76/84/65 61/75/65 +f 68/74/66 84/85/66 69/76/66 +f 62/77/67 76/84/67 77/86/67 +f 69/76/68 85/87/68 70/78/68 +f 63/79/69 77/86/69 78/88/69 +f 56/81/70 297/89/70 71/90/70 +f 206/91/71 70/78/71 85/87/71 +f 63/79/72 79/92/72 64/83/72 +f 56/81/73 72/93/73 57/67/73 +f 64/83/74 80/94/74 65/68/74 +f 57/67/75 73/95/75 58/69/75 +f 66/70/76 80/94/76 81/96/76 +f 58/69/77 74/97/77 59/71/77 +f 66/70/78 82/98/78 67/72/78 +f 60/73/79 74/97/79 75/99/79 +f 68/74/80 82/98/80 83/100/80 +f 79/92/81 95/101/81 80/94/81 +f 72/93/82 88/102/82 73/95/82 +f 81/96/83 95/101/83 96/103/83 +f 73/95/84 89/104/84 74/97/84 +f 81/96/85 97/105/85 82/98/85 +f 75/99/86 89/104/86 90/106/86 +f 83/100/87 97/105/87 98/107/87 +f 75/99/88 91/108/88 76/84/88 +f 83/100/89 99/109/89 84/85/89 +f 77/86/90 91/108/90 92/110/90 +f 85/87/91 99/109/91 100/111/91 +f 77/86/92 93/112/92 78/88/92 +f 71/90/93 297/113/93 86/114/93 +f 206/115/94 85/87/94 100/111/94 +f 79/92/95 93/112/95 94/116/95 +f 71/90/96 87/117/96 72/93/96 +f 98/107/97 114/118/97 99/109/97 +f 92/110/98 106/119/98 107/120/98 +f 100/111/99 114/118/99 115/121/99 +f 92/110/100 108/122/100 93/112/100 +f 86/114/101 297/123/101 101/124/101 +f 206/125/102 100/111/102 115/121/102 +f 94/116/103 108/122/103 109/126/103 +f 86/114/104 102/127/104 87/117/104 +f 94/116/105 110/128/105 95/101/105 +f 87/117/106 103/129/106 88/102/106 +f 96/103/107 110/128/107 111/130/107 +f 88/102/108 104/131/108 89/104/108 +f 96/103/109 112/132/109 97/105/109 +f 90/106/110 104/131/110 105/133/110 +f 98/107/111 112/132/111 113/134/111 +f 90/106/112 106/119/112 91/108/112 +f 111/130/113 125/135/113 126/136/113 +f 103/129/114 119/137/114 104/131/114 +f 111/130/115 127/138/115 112/132/115 +f 104/131/116 120/139/116 105/133/116 +f 113/134/117 127/138/117 128/140/117 +f 105/133/118 121/141/118 106/119/118 +f 114/118/119 128/140/119 129/142/119 +f 107/120/120 121/141/120 122/143/120 +f 115/121/121 129/142/121 130/144/121 +f 107/120/122 123/145/122 108/122/122 +f 101/124/123 297/146/123 116/147/123 +f 206/148/124 115/121/124 130/144/124 +f 109/126/125 123/145/125 124/149/125 +f 101/124/126 117/150/126 102/127/126 +f 109/126/127 125/135/127 110/128/127 +f 102/127/128 118/151/128 103/129/128 +f 130/144/129 144/152/129 145/153/129 +f 122/143/130 138/154/130 123/145/130 +f 116/147/131 297/155/131 131/156/131 +f 206/157/132 130/144/132 145/153/132 +f 124/149/133 138/154/133 139/158/133 +f 116/147/134 132/159/134 117/150/134 +f 124/149/135 140/160/135 125/135/135 +f 117/150/136 133/161/136 118/151/136 +f 126/136/137 140/160/137 141/162/137 +f 118/151/138 134/163/138 119/137/138 +f 126/136/139 142/164/139 127/138/139 +f 119/137/140 135/165/140 120/139/140 +f 128/140/141 142/164/141 143/166/141 +f 120/139/142 136/167/142 121/141/142 +f 128/140/143 144/152/143 129/142/143 +f 122/143/144 136/167/144 137/168/144 +f 133/161/145 149/169/145 134/163/145 +f 141/162/146 157/170/146 142/164/146 +f 135/165/147 149/169/147 150/171/147 +f 143/166/148 157/170/148 158/172/148 +f 135/165/149 151/173/149 136/167/149 +f 144/152/150 158/172/150 159/174/150 +f 137/168/151 151/173/151 152/175/151 +f 145/153/152 159/174/152 160/176/152 +f 137/168/153 153/177/153 138/154/153 +f 131/156/154 297/178/154 146/179/154 +f 206/180/155 145/153/155 160/176/155 +f 139/158/156 153/177/156 154/181/156 +f 131/156/157 147/182/157 132/159/157 +f 139/158/158 155/183/158 140/160/158 +f 132/159/159 148/184/159 133/161/159 +f 141/162/160 155/183/160 156/185/160 +f 152/175/161 168/186/161 153/177/161 +f 146/179/162 297/187/162 161/188/162 +f 206/189/163 160/176/163 175/190/163 +f 154/181/164 168/186/164 169/191/164 +f 146/179/165 162/192/165 147/182/165 +f 154/181/166 170/193/166 155/183/166 +f 147/182/167 163/194/167 148/184/167 +f 156/185/168 170/193/168 171/195/168 +f 148/184/169 164/196/169 149/169/169 +f 156/185/170 172/197/170 157/170/170 +f 150/171/171 164/196/171 165/198/171 +f 158/172/172 172/197/172 173/199/172 +f 150/171/173 166/200/173 151/173/173 +f 158/172/174 174/201/174 159/174/174 +f 152/175/175 166/200/175 167/202/175 +f 159/174/176 175/190/176 160/176/176 +f 171/195/177 187/203/177 172/197/177 +f 165/198/178 179/204/178 180/205/178 +f 173/199/179 187/203/179 188/206/179 +f 165/198/180 181/207/180 166/200/180 +f 174/201/181 188/206/181 189/208/181 +f 167/202/182 181/207/182 182/209/182 +f 175/190/183 189/208/183 190/210/183 +f 168/186/184 182/209/184 183/211/184 +f 161/188/185 297/212/185 176/213/185 +f 206/214/186 175/190/186 190/210/186 +f 168/186/187 184/215/187 169/191/187 +f 161/188/188 177/216/188 162/192/188 +f 169/191/189 185/217/189 170/193/189 +f 162/192/190 178/218/190 163/194/190 +f 171/195/191 185/217/191 186/219/191 +f 163/194/192 179/204/192 164/196/192 +f 176/213/193 297/220/193 191/221/193 +f 206/222/194 190/210/194 205/223/194 +f 183/211/195 199/224/195 184/215/195 +f 176/213/196 192/225/196 177/216/196 +f 184/215/197 200/226/197 185/217/197 +f 177/216/198 193/227/198 178/218/198 +f 186/219/199 200/226/199 201/228/199 +f 178/218/200 194/229/200 179/204/200 +f 186/219/201 202/230/201 187/203/201 +f 180/205/202 194/229/202 195/231/202 +f 188/206/203 202/230/203 203/232/203 +f 180/205/204 196/233/204 181/207/204 +f 189/208/205 203/232/205 204/234/205 +f 182/209/206 196/233/206 197/235/206 +f 190/210/207 204/234/207 205/223/207 +f 183/211/208 197/235/208 198/236/208 +f 194/229/209 211/237/209 195/231/209 +f 203/232/210 218/238/210 219/239/210 +f 195/231/211 212/240/211 196/233/211 +f 204/234/212 219/239/212 220/241/212 +f 197/235/213 212/240/213 213/242/213 +f 205/223/214 220/241/214 221/243/214 +f 198/236/215 213/242/215 214/244/215 +f 191/221/216 297/245/216 207/246/216 +f 206/247/217 205/223/217 221/243/217 +f 198/236/218 215/248/218 199/224/218 +f 191/221/219 208/249/219 192/225/219 +f 199/224/220 216/250/220 200/226/220 +f 193/227/221 208/249/221 209/251/221 +f 201/228/222 216/250/222 217/252/222 +f 193/227/223 210/253/223 194/229/223 +f 202/230/224 217/252/224 218/238/224 +f 214/244/225 230/254/225 215/248/225 +f 207/246/226 223/255/226 208/249/226 +f 215/248/227 231/256/227 216/250/227 +f 209/251/228 223/255/228 224/257/228 +f 217/252/229 231/256/229 232/258/229 +f 210/253/230 224/257/230 225/259/230 +f 217/252/231 233/260/231 218/238/231 +f 210/253/232 226/261/232 211/237/232 +f 218/238/233 234/262/233 219/239/233 +f 211/237/234 227/263/234 212/240/234 +f 219/239/235 235/264/235 220/241/235 +f 213/242/236 227/263/236 228/265/236 +f 221/243/237 235/264/237 236/266/237 +f 214/244/238 228/265/238 229/267/238 +f 207/246/239 297/268/239 222/269/239 +f 206/270/240 221/243/240 236/266/240 +f 234/262/241 248/271/241 249/272/241 +f 226/261/242 242/273/242 227/263/242 +f 235/264/243 249/272/243 250/274/243 +f 228/265/244 242/273/244 243/275/244 +f 236/266/245 250/274/245 251/276/245 +f 229/267/246 243/275/246 244/277/246 +f 222/269/247 297/278/247 237/279/247 +f 206/280/248 236/266/248 251/276/248 +f 229/267/249 245/281/249 230/254/249 +f 222/269/250 238/282/250 223/255/250 +f 230/254/251 246/283/251 231/256/251 +f 223/255/252 239/284/252 224/257/252 +f 232/258/253 246/283/253 247/285/253 +f 225/259/254 239/284/254 240/286/254 +f 232/258/255 248/271/255 233/260/255 +f 225/259/256 241/287/256 226/261/256 +f 245/281/257 261/288/257 246/283/257 +f 238/282/258 254/289/258 239/284/258 +f 247/285/259 261/288/259 262/290/259 +f 240/286/260 254/289/260 255/291/260 +f 247/285/261 263/292/261 248/271/261 +f 241/287/262 255/291/262 256/293/262 +f 248/271/263 264/294/263 249/272/263 +f 241/287/264 257/295/264 242/273/264 +f 250/274/265 264/294/265 265/296/265 +f 243/275/266 257/295/266 258/297/266 +f 251/276/267 265/296/267 266/298/267 +f 244/277/268 258/297/268 259/299/268 +f 237/279/269 297/300/269 252/301/269 +f 206/302/270 251/276/270 266/298/270 +f 244/277/271 260/303/271 245/281/271 +f 237/279/272 253/304/272 238/282/272 +f 265/296/273 279/305/273 280/306/273 +f 258/297/274 272/307/274 273/308/274 +f 266/298/275 280/306/275 281/309/275 +f 259/299/276 273/308/276 274/310/276 +f 252/301/277 297/311/277 267/312/277 +f 206/313/278 266/298/278 281/309/278 +f 259/299/279 275/314/279 260/303/279 +f 252/301/280 268/315/280 253/304/280 +f 260/303/281 276/316/281 261/288/281 +f 253/304/282 269/317/282 254/289/282 +f 262/290/283 276/316/283 277/318/283 +f 255/291/284 269/317/284 270/319/284 +f 262/290/285 278/320/285 263/292/285 +f 256/293/286 270/319/286 271/321/286 +f 263/292/287 279/305/287 264/294/287 +f 256/293/288 272/307/288 257/295/288 +f 268/315/289 284/322/289 269/317/289 +f 277/318/290 291/323/290 292/324/290 +f 270/319/291 284/322/291 285/325/291 +f 277/318/292 293/326/292 278/320/292 +f 271/321/293 285/325/293 286/327/293 +f 279/305/294 293/326/294 294/328/294 +f 271/321/295 287/329/295 272/307/295 +f 280/306/296 294/328/296 295/330/296 +f 273/308/297 287/329/297 288/331/297 +f 281/309/298 295/330/298 296/332/298 +f 274/310/299 288/331/299 289/333/299 +f 267/312/300 297/334/300 282/335/300 +f 206/336/301 281/309/301 296/332/301 +f 274/310/302 290/337/302 275/314/302 +f 267/312/303 283/338/303 268/315/303 +f 275/314/304 291/323/304 276/316/304 +f 288/331/305 303/339/305 304/340/305 +f 295/330/306 312/341/306 296/332/306 +f 289/333/307 304/340/307 305/342/307 +f 282/335/308 297/343/308 298/344/308 +f 206/345/309 296/332/309 312/341/309 +f 289/333/310 306/346/310 290/337/310 +f 282/335/311 299/347/311 283/338/311 +f 290/337/312 307/348/312 291/323/312 +f 283/338/313 300/349/313 284/322/313 +f 292/324/314 307/348/314 308/350/314 +f 285/325/315 300/349/315 301/351/315 +f 292/324/316 309/352/316 293/326/316 +f 286/327/317 301/351/317 302/353/317 +f 294/328/318 309/352/318 310/354/318 +f 286/327/319 303/339/319 287/329/319 +f 295/330/320 310/354/320 311/355/320 +f 308/350/321 322/356/321 323/357/321 +f 301/351/322 315/358/322 316/359/322 +f 308/350/323 324/360/323 309/352/323 +f 302/353/324 316/359/324 317/361/324 +f 310/354/325 324/360/325 325/362/325 +f 302/353/326 318/363/326 303/339/326 +f 311/355/327 325/362/327 326/364/327 +f 304/340/328 318/363/328 319/365/328 +f 311/355/329 327/366/329 312/341/329 +f 305/342/330 319/365/330 320/367/330 +f 298/344/331 297/368/331 313/369/331 +f 206/370/332 312/341/332 327/366/332 +f 305/342/333 321/371/333 306/346/333 +f 298/344/334 314/372/334 299/347/334 +f 306/346/335 322/356/335 307/348/335 +f 299/347/336 315/358/336 300/349/336 +f 327/366/337 341/373/337 342/374/337 +f 319/365/338 335/375/338 320/367/338 +f 313/369/339 297/376/339 328/377/339 +f 206/378/340 327/366/340 342/374/340 +f 321/371/341 335/375/341 336/379/341 +f 313/369/342 329/380/342 314/372/342 +f 321/371/343 337/381/343 322/356/343 +f 314/372/344 330/382/344 315/358/344 +f 323/357/345 337/381/345 338/383/345 +f 316/359/346 330/382/346 331/384/346 +f 323/357/347 339/385/347 324/360/347 +f 317/361/348 331/384/348 332/386/348 +f 325/362/349 339/385/349 340/387/349 +f 317/361/350 333/388/350 318/363/350 +f 326/364/351 340/387/351 341/373/351 +f 319/365/352 333/388/352 334/389/352 +f 331/384/353 345/390/353 346/391/353 +f 338/383/354 354/392/354 339/385/354 +f 332/386/355 346/391/355 347/393/355 +f 339/385/356 355/394/356 340/387/356 +f 332/386/357 348/395/357 333/388/357 +f 341/373/358 355/394/358 356/396/358 +f 334/389/359 348/395/359 349/397/359 +f 341/373/360 357/398/360 342/374/360 +f 334/389/361 350/399/361 335/375/361 +f 328/377/362 297/400/362 343/401/362 +f 206/402/363 342/374/363 357/398/363 +f 336/379/364 350/399/364 351/403/364 +f 328/377/365 344/404/365 329/380/365 +f 336/379/366 352/405/366 337/381/366 +f 329/380/367 345/390/367 330/382/367 +f 338/383/368 352/405/368 353/406/368 +f 349/397/369 365/407/369 350/399/369 +f 343/401/370 297/408/370 358/409/370 +f 206/410/371 357/398/371 372/411/371 +f 351/403/372 365/407/372 366/412/372 +f 344/404/373 358/409/373 359/413/373 +f 351/403/374 367/414/374 352/405/374 +f 344/404/375 360/415/375 345/390/375 +f 353/406/376 367/414/376 368/416/376 +f 346/391/377 360/415/377 361/417/377 +f 353/406/378 369/418/378 354/392/378 +f 347/393/379 361/417/379 362/419/379 +f 354/392/380 370/420/380 355/394/380 +f 347/393/381 363/421/381 348/395/381 +f 356/396/382 370/420/382 371/422/382 +f 349/397/383 363/421/383 364/423/383 +f 356/396/384 372/411/384 357/398/384 +f 368/424/385 384/425/385 369/426/385 +f 361/427/386 377/428/386 362/429/386 +f 369/426/387 385/430/387 370/431/387 +f 362/429/388 378/432/388 363/433/388 +f 371/434/389 385/430/389 386/435/389 +f 364/436/390 378/432/390 379/437/390 +f 371/434/391 387/438/391 372/439/391 +f 364/436/392 380/440/392 365/441/392 +f 358/442/393 297/443/393 373/444/393 +f 206/445/394 372/439/394 387/438/394 +f 366/446/395 380/440/395 381/447/395 +f 359/448/396 373/444/396 374/449/396 +f 366/446/397 382/450/397 367/451/397 +f 359/448/398 375/452/398 360/453/398 +f 368/424/399 382/450/399 383/454/399 +f 361/427/400 375/452/400 376/455/400 +f 206/456/401 387/438/401 402/457/401 +f 381/447/402 395/458/402 396/459/402 +f 374/449/403 388/460/403 389/461/403 +f 381/447/404 397/462/404 382/450/404 +f 374/449/405 390/463/405 375/452/405 +f 383/454/406 397/462/406 398/464/406 +f 376/455/407 390/463/407 391/465/407 +f 383/454/408 399/466/408 384/425/408 +f 377/428/409 391/465/409 392/467/409 +f 384/425/410 400/468/410 385/430/410 +f 377/428/411 393/469/411 378/432/411 +f 386/435/412 400/468/412 401/470/412 +f 379/437/413 393/469/413 394/471/413 +f 386/435/414 402/457/414 387/438/414 +f 379/437/415 395/458/415 380/440/415 +f 373/444/416 297/472/416 388/460/416 +f 399/466/417 415/473/417 400/468/417 +f 392/467/418 408/474/418 393/469/418 +f 401/470/419 415/473/419 416/475/419 +f 394/471/420 408/474/420 409/476/420 +f 401/470/421 417/477/421 402/457/421 +f 394/471/422 410/478/422 395/458/422 +f 388/460/423 297/479/423 403/480/423 +f 206/481/424 402/457/424 417/477/424 +f 396/459/425 410/478/425 411/482/425 +f 389/461/426 403/480/426 404/483/426 +f 396/459/427 412/484/427 397/462/427 +f 389/461/428 405/485/428 390/463/428 +f 398/464/429 412/484/429 413/486/429 +f 391/465/430 405/485/430 406/487/430 +f 398/464/431 414/488/431 399/466/431 +f 392/467/432 406/487/432 407/489/432 +f 403/480/433 419/490/433 404/483/433 +f 411/482/434 427/491/434 412/484/434 +f 404/483/435 420/492/435 405/485/435 +f 413/486/436 427/491/436 428/493/436 +f 406/487/437 420/492/437 421/494/437 +f 413/486/438 429/495/438 414/488/438 +f 407/489/439 421/494/439 422/496/439 +f 414/488/440 430/497/440 415/473/440 +f 407/489/441 423/498/441 408/474/441 +f 416/475/442 430/497/442 431/499/442 +f 409/476/443 423/498/443 424/500/443 +f 416/475/444 432/501/444 417/477/444 +f 409/476/445 425/502/445 410/478/445 +f 403/480/446 297/503/446 418/504/446 +f 206/505/447 417/477/447 432/501/447 +f 410/478/448 426/506/448 411/482/448 +f 422/496/449 438/507/449 423/498/449 +f 430/497/450 446/508/450 431/499/450 +f 424/500/451 438/507/451 439/509/451 +f 431/499/452 447/510/452 432/501/452 +f 425/502/453 439/509/453 440/511/453 +f 418/504/454 297/512/454 433/513/454 +f 206/514/455 432/501/455 447/510/455 +f 425/502/456 441/515/456 426/506/456 +f 418/504/457 434/516/457 419/490/457 +f 426/506/458 442/517/458 427/491/458 +f 419/490/459 435/518/459 420/492/459 +f 428/493/460 442/517/460 443/519/460 +f 420/492/461 436/520/461 421/494/461 +f 428/493/462 444/521/462 429/495/462 +f 422/496/463 436/520/463 437/522/463 +f 430/497/464 444/521/464 445/523/464 +f 441/515/465 457/524/465 442/517/465 +f 435/518/466 449/525/466 450/526/466 +f 443/519/467 457/524/467 458/527/467 +f 436/520/468 450/526/468 451/528/468 +f 443/519/469 459/529/469 444/521/469 +f 437/522/470 451/528/470 452/530/470 +f 444/521/471 460/531/471 445/523/471 +f 437/522/472 453/532/472 438/507/472 +f 446/508/473 460/531/473 461/533/473 +f 439/509/474 453/532/474 454/534/474 +f 446/508/475 462/535/475 447/510/475 +f 439/509/476 455/536/476 440/511/476 +f 433/513/477 297/537/477 448/538/477 +f 206/539/478 447/510/478 462/535/478 +f 441/515/479 455/536/479 456/540/479 +f 434/516/480 448/538/480 449/525/480 +f 461/533/481 475/541/481 476/542/481 +f 454/534/482 468/543/482 469/544/482 +f 461/533/483 477/545/483 462/535/483 +f 454/534/484 470/546/484 455/536/484 +f 448/538/485 297/547/485 463/548/485 +f 206/549/486 462/535/486 477/545/486 +f 456/540/487 470/546/487 471/550/487 +f 448/538/488 464/551/488 449/525/488 +f 456/540/489 472/552/489 457/524/489 +f 449/525/490 465/553/490 450/526/490 +f 458/527/491 472/552/491 473/554/491 +f 450/526/492 466/555/492 451/528/492 +f 458/527/493 474/556/493 459/529/493 +f 452/530/494 466/555/494 467/557/494 +f 460/531/495 474/556/495 475/541/495 +f 452/530/496 468/543/496 453/532/496 +f 465/553/497 2/32/497 3/4/497 +f 473/554/498 478/3/498 479/8/498 +f 466/555/499 3/4/499 4/10/499 +f 473/554/500 480/12/500 474/556/500 +f 467/557/501 4/10/501 5/14/501 +f 474/556/502 10/16/502 475/541/502 +f 468/543/503 5/14/503 6/18/503 +f 475/541/504 481/20/504 476/542/504 +f 469/544/505 6/18/505 7/22/505 +f 476/542/506 482/24/506 477/545/506 +f 470/546/507 7/22/507 8/26/507 +f 463/548/508 297/558/508 1/27/508 +f 206/559/509 477/545/509 482/24/509 +f 470/546/510 9/1/510 471/550/510 +f 464/551/511 1/27/511 2/32/511 +f 471/550/512 478/3/512 472/552/512 +f 9/1/1 19/31/1 20/2/1 +f 3/4/2 2/32/2 12/5/2 +f 478/3/3 20/2/3 21/7/3 +f 3/4/4 13/6/4 14/9/4 +f 479/8/5 21/7/5 22/11/5 +f 4/10/6 14/9/6 15/13/6 +f 480/12/7 22/11/7 23/15/7 +f 5/14/8 15/13/8 16/17/8 +f 10/16/9 23/15/9 24/19/9 +f 6/18/10 16/17/10 17/21/10 +f 481/20/11 24/19/11 25/23/11 +f 7/22/513 17/21/513 18/25/513 +f 8/26/514 18/25/514 19/31/514 +f 2/32/16 1/27/16 11/29/16 +f 19/31/17 18/25/17 33/33/17 +f 12/5/18 11/29/18 26/35/18 +f 19/31/19 34/34/19 35/37/19 +f 12/5/20 27/36/20 28/38/20 +f 21/7/21 20/2/21 35/37/21 +f 13/6/22 28/38/22 29/40/22 +f 22/11/23 21/7/23 36/39/23 +f 14/9/24 29/40/24 30/42/24 +f 23/15/25 22/11/25 37/41/25 +f 15/13/26 30/42/26 31/44/26 +f 24/19/27 23/15/27 38/43/27 +f 17/21/28 16/17/28 31/44/28 +f 24/19/29 39/45/29 40/47/29 +f 17/21/30 32/46/30 33/33/30 +f 37/41/33 52/65/33 53/50/33 +f 30/42/34 45/66/34 46/51/34 +f 38/43/35 53/50/35 54/52/35 +f 32/46/36 31/44/36 46/51/36 +f 39/45/37 54/52/37 55/54/37 +f 33/33/38 32/46/38 47/53/38 +f 33/33/41 48/55/41 49/59/41 +f 26/35/42 41/57/42 42/60/42 +f 34/34/43 49/59/43 50/61/43 +f 28/38/515 27/36/515 42/60/515 +f 36/39/45 35/37/45 50/61/45 +f 29/40/46 28/38/46 43/62/46 +f 36/39/47 51/63/47 52/65/47 +f 29/40/48 44/64/48 45/66/48 +f 41/57/49 56/81/49 57/67/49 +f 49/59/50 64/83/50 65/68/50 +f 42/60/51 57/67/51 58/69/51 +f 51/63/52 50/61/52 65/68/52 +f 43/62/53 58/69/53 59/71/53 +f 52/65/54 51/63/54 66/70/54 +f 44/64/55 59/71/55 60/73/55 +f 53/50/56 52/65/56 67/72/56 +f 45/66/57 60/73/57 61/75/57 +f 53/50/58 68/74/58 69/76/58 +f 47/53/59 46/51/59 61/75/59 +f 54/52/60 69/76/60 70/78/60 +f 48/55/61 47/53/61 62/77/61 +f 48/55/64 63/79/64 64/83/64 +f 60/73/65 75/99/65 76/84/65 +f 68/74/66 83/100/66 84/85/66 +f 62/77/67 61/75/67 76/84/67 +f 69/76/68 84/85/68 85/87/68 +f 63/79/516 62/77/516 77/86/516 +f 63/79/517 78/88/517 79/92/517 +f 56/81/73 71/90/73 72/93/73 +f 64/83/74 79/92/74 80/94/74 +f 57/67/75 72/93/75 73/95/75 +f 66/70/76 65/68/76 80/94/76 +f 58/69/77 73/95/77 74/97/77 +f 66/70/78 81/96/78 82/98/78 +f 60/73/79 59/71/79 74/97/79 +f 68/74/80 67/72/80 82/98/80 +f 79/92/81 94/116/81 95/101/81 +f 72/93/82 87/117/82 88/102/82 +f 81/96/83 80/94/83 95/101/83 +f 73/95/84 88/102/84 89/104/84 +f 81/96/85 96/103/85 97/105/85 +f 75/99/86 74/97/86 89/104/86 +f 83/100/87 82/98/87 97/105/87 +f 75/99/88 90/106/88 91/108/88 +f 83/100/518 98/107/518 99/109/518 +f 77/86/90 76/84/90 91/108/90 +f 85/87/91 84/85/91 99/109/91 +f 77/86/92 92/110/92 93/112/92 +f 79/92/95 78/88/95 93/112/95 +f 71/90/96 86/114/96 87/117/96 +f 98/107/97 113/134/97 114/118/97 +f 92/110/98 91/108/98 106/119/98 +f 100/111/99 99/109/99 114/118/99 +f 92/110/100 107/120/100 108/122/100 +f 94/116/103 93/112/103 108/122/103 +f 86/114/104 101/124/104 102/127/104 +f 94/116/105 109/126/105 110/128/105 +f 87/117/106 102/127/106 103/129/106 +f 96/103/107 95/101/107 110/128/107 +f 88/102/108 103/129/108 104/131/108 +f 96/103/109 111/130/109 112/132/109 +f 90/106/110 89/104/110 104/131/110 +f 98/107/111 97/105/111 112/132/111 +f 90/106/112 105/133/112 106/119/112 +f 111/130/113 110/128/113 125/135/113 +f 103/129/114 118/151/114 119/137/114 +f 111/130/115 126/136/115 127/138/115 +f 104/131/116 119/137/116 120/139/116 +f 113/134/117 112/132/117 127/138/117 +f 105/133/118 120/139/118 121/141/118 +f 114/118/119 113/134/119 128/140/119 +f 107/120/120 106/119/120 121/141/120 +f 115/121/121 114/118/121 129/142/121 +f 107/120/122 122/143/122 123/145/122 +f 109/126/125 108/122/125 123/145/125 +f 101/124/126 116/147/126 117/150/126 +f 109/126/127 124/149/127 125/135/127 +f 102/127/128 117/150/128 118/151/128 +f 130/144/129 129/142/129 144/152/129 +f 122/143/130 137/168/130 138/154/130 +f 124/149/133 123/145/133 138/154/133 +f 116/147/134 131/156/134 132/159/134 +f 124/149/135 139/158/135 140/160/135 +f 117/150/136 132/159/136 133/161/136 +f 126/136/137 125/135/137 140/160/137 +f 118/151/138 133/161/138 134/163/138 +f 126/136/139 141/162/139 142/164/139 +f 119/137/140 134/163/140 135/165/140 +f 128/140/141 127/138/141 142/164/141 +f 120/139/142 135/165/142 136/167/142 +f 128/140/143 143/166/143 144/152/143 +f 122/143/144 121/141/144 136/167/144 +f 133/161/145 148/184/145 149/169/145 +f 141/162/146 156/185/146 157/170/146 +f 135/165/147 134/163/147 149/169/147 +f 143/166/148 142/164/148 157/170/148 +f 135/165/149 150/171/149 151/173/149 +f 144/152/150 143/166/150 158/172/150 +f 137/168/151 136/167/151 151/173/151 +f 145/153/152 144/152/152 159/174/152 +f 137/168/153 152/175/153 153/177/153 +f 139/158/156 138/154/156 153/177/156 +f 131/156/157 146/179/157 147/182/157 +f 139/158/158 154/181/158 155/183/158 +f 132/159/159 147/182/159 148/184/159 +f 141/162/160 140/160/160 155/183/160 +f 152/175/161 167/202/161 168/186/161 +f 154/181/164 153/177/164 168/186/164 +f 146/179/165 161/188/165 162/192/165 +f 154/181/166 169/191/166 170/193/166 +f 147/182/167 162/192/167 163/194/167 +f 156/185/168 155/183/168 170/193/168 +f 148/184/169 163/194/169 164/196/169 +f 156/185/170 171/195/170 172/197/170 +f 150/171/171 149/169/171 164/196/171 +f 158/172/172 157/170/172 172/197/172 +f 150/171/173 165/198/173 166/200/173 +f 158/172/519 173/199/519 174/201/519 +f 152/175/175 151/173/175 166/200/175 +f 159/174/520 174/201/520 175/190/520 +f 171/195/177 186/219/177 187/203/177 +f 165/198/178 164/196/178 179/204/178 +f 173/199/179 172/197/179 187/203/179 +f 165/198/180 180/205/180 181/207/180 +f 174/201/181 173/199/181 188/206/181 +f 167/202/182 166/200/182 181/207/182 +f 175/190/521 174/201/521 189/208/521 +f 168/186/184 167/202/184 182/209/184 +f 168/186/187 183/211/187 184/215/187 +f 161/188/188 176/213/188 177/216/188 +f 169/191/189 184/215/189 185/217/189 +f 162/192/190 177/216/190 178/218/190 +f 171/195/191 170/193/191 185/217/191 +f 163/194/192 178/218/192 179/204/192 +f 183/211/195 198/236/195 199/224/195 +f 176/213/196 191/221/196 192/225/196 +f 184/215/197 199/224/197 200/226/197 +f 177/216/198 192/225/198 193/227/198 +f 186/219/199 185/217/199 200/226/199 +f 178/218/200 193/227/200 194/229/200 +f 186/219/201 201/228/201 202/230/201 +f 180/205/202 179/204/202 194/229/202 +f 188/206/203 187/203/203 202/230/203 +f 180/205/204 195/231/204 196/233/204 +f 189/208/205 188/206/205 203/232/205 +f 182/209/206 181/207/206 196/233/206 +f 190/210/207 189/208/207 204/234/207 +f 183/211/208 182/209/208 197/235/208 +f 194/229/209 210/253/209 211/237/209 +f 203/232/210 202/230/210 218/238/210 +f 195/231/211 211/237/211 212/240/211 +f 204/234/212 203/232/212 219/239/212 +f 197/235/213 196/233/213 212/240/213 +f 205/223/214 204/234/214 220/241/214 +f 198/236/215 197/235/215 213/242/215 +f 198/236/218 214/244/218 215/248/218 +f 191/221/219 207/246/219 208/249/219 +f 199/224/220 215/248/220 216/250/220 +f 193/227/221 192/225/221 208/249/221 +f 201/228/222 200/226/222 216/250/222 +f 193/227/223 209/251/223 210/253/223 +f 202/230/224 201/228/224 217/252/224 +f 214/244/225 229/267/225 230/254/225 +f 207/246/226 222/269/226 223/255/226 +f 215/248/227 230/254/227 231/256/227 +f 209/251/228 208/249/228 223/255/228 +f 217/252/229 216/250/229 231/256/229 +f 210/253/230 209/251/230 224/257/230 +f 217/252/231 232/258/231 233/260/231 +f 210/253/232 225/259/232 226/261/232 +f 218/238/233 233/260/233 234/262/233 +f 211/237/234 226/261/234 227/263/234 +f 219/239/235 234/262/235 235/264/235 +f 213/242/236 212/240/236 227/263/236 +f 221/243/237 220/241/237 235/264/237 +f 214/244/238 213/242/238 228/265/238 +f 234/262/241 233/260/241 248/271/241 +f 226/261/242 241/287/242 242/273/242 +f 235/264/243 234/262/243 249/272/243 +f 228/265/244 227/263/244 242/273/244 +f 236/266/245 235/264/245 250/274/245 +f 229/267/246 228/265/246 243/275/246 +f 229/267/249 244/277/249 245/281/249 +f 222/269/250 237/279/250 238/282/250 +f 230/254/251 245/281/251 246/283/251 +f 223/255/252 238/282/252 239/284/252 +f 232/258/253 231/256/253 246/283/253 +f 225/259/254 224/257/254 239/284/254 +f 232/258/255 247/285/255 248/271/255 +f 225/259/256 240/286/256 241/287/256 +f 245/281/257 260/303/257 261/288/257 +f 238/282/258 253/304/258 254/289/258 +f 247/285/259 246/283/259 261/288/259 +f 240/286/260 239/284/260 254/289/260 +f 247/285/261 262/290/261 263/292/261 +f 241/287/262 240/286/262 255/291/262 +f 248/271/263 263/292/263 264/294/263 +f 241/287/264 256/293/264 257/295/264 +f 250/274/265 249/272/265 264/294/265 +f 243/275/266 242/273/266 257/295/266 +f 251/276/267 250/274/267 265/296/267 +f 244/277/268 243/275/268 258/297/268 +f 244/277/271 259/299/271 260/303/271 +f 237/279/272 252/301/272 253/304/272 +f 265/296/273 264/294/273 279/305/273 +f 258/297/274 257/295/274 272/307/274 +f 266/298/275 265/296/275 280/306/275 +f 259/299/276 258/297/276 273/308/276 +f 259/299/279 274/310/279 275/314/279 +f 252/301/522 267/312/522 268/315/522 +f 260/303/281 275/314/281 276/316/281 +f 253/304/282 268/315/282 269/317/282 +f 262/290/283 261/288/283 276/316/283 +f 255/291/284 254/289/284 269/317/284 +f 262/290/285 277/318/285 278/320/285 +f 256/293/286 255/291/286 270/319/286 +f 263/292/287 278/320/287 279/305/287 +f 256/293/288 271/321/288 272/307/288 +f 268/315/289 283/338/289 284/322/289 +f 277/318/290 276/316/290 291/323/290 +f 270/319/291 269/317/291 284/322/291 +f 277/318/292 292/324/292 293/326/292 +f 271/321/293 270/319/293 285/325/293 +f 279/305/294 278/320/294 293/326/294 +f 271/321/295 286/327/295 287/329/295 +f 280/306/523 279/305/523 294/328/523 +f 273/308/297 272/307/297 287/329/297 +f 281/309/298 280/306/298 295/330/298 +f 274/310/299 273/308/299 288/331/299 +f 274/310/302 289/333/302 290/337/302 +f 267/312/524 282/335/524 283/338/524 +f 275/314/304 290/337/304 291/323/304 +f 288/331/305 287/329/305 303/339/305 +f 295/330/306 311/355/306 312/341/306 +f 289/333/307 288/331/307 304/340/307 +f 289/333/310 305/342/310 306/346/310 +f 282/335/311 298/344/311 299/347/311 +f 290/337/312 306/346/312 307/348/312 +f 283/338/313 299/347/313 300/349/313 +f 292/324/314 291/323/314 307/348/314 +f 285/325/315 284/322/315 300/349/315 +f 292/324/316 308/350/316 309/352/316 +f 286/327/317 285/325/317 301/351/317 +f 294/328/318 293/326/318 309/352/318 +f 286/327/319 302/353/319 303/339/319 +f 295/330/320 294/328/320 310/354/320 +f 308/350/321 307/348/321 322/356/321 +f 301/351/322 300/349/322 315/358/322 +f 308/350/323 323/357/323 324/360/323 +f 302/353/324 301/351/324 316/359/324 +f 310/354/325 309/352/325 324/360/325 +f 302/353/326 317/361/326 318/363/326 +f 311/355/327 310/354/327 325/362/327 +f 304/340/328 303/339/328 318/363/328 +f 311/355/329 326/364/329 327/366/329 +f 305/342/330 304/340/330 319/365/330 +f 305/342/333 320/367/333 321/371/333 +f 298/344/334 313/369/334 314/372/334 +f 306/346/335 321/371/335 322/356/335 +f 299/347/336 314/372/336 315/358/336 +f 327/366/337 326/364/337 341/373/337 +f 319/365/338 334/389/338 335/375/338 +f 321/371/341 320/367/341 335/375/341 +f 313/369/342 328/377/342 329/380/342 +f 321/371/343 336/379/343 337/381/343 +f 314/372/525 329/380/525 330/382/525 +f 323/357/345 322/356/345 337/381/345 +f 316/359/346 315/358/346 330/382/346 +f 323/357/347 338/383/347 339/385/347 +f 317/361/348 316/359/348 331/384/348 +f 325/362/349 324/360/349 339/385/349 +f 317/361/350 332/386/350 333/388/350 +f 326/364/351 325/362/351 340/387/351 +f 319/365/352 318/363/352 333/388/352 +f 331/384/353 330/382/353 345/390/353 +f 338/383/354 353/406/354 354/392/354 +f 332/386/355 331/384/355 346/391/355 +f 339/385/356 354/392/356 355/394/356 +f 332/386/357 347/393/357 348/395/357 +f 341/373/358 340/387/358 355/394/358 +f 334/389/359 333/388/359 348/395/359 +f 341/373/360 356/396/360 357/398/360 +f 334/389/361 349/397/361 350/399/361 +f 336/379/364 335/375/364 350/399/364 +f 328/377/365 343/401/365 344/404/365 +f 336/379/366 351/403/366 352/405/366 +f 329/380/367 344/404/367 345/390/367 +f 338/383/368 337/381/368 352/405/368 +f 349/397/369 364/423/369 365/407/369 +f 351/403/372 350/399/372 365/407/372 +f 344/404/373 343/401/373 358/409/373 +f 351/403/374 366/412/374 367/414/374 +f 344/404/375 359/413/375 360/415/375 +f 353/406/376 352/405/376 367/414/376 +f 346/391/377 345/390/377 360/415/377 +f 353/406/378 368/416/378 369/418/378 +f 347/393/379 346/391/379 361/417/379 +f 354/392/380 369/418/380 370/420/380 +f 347/393/381 362/419/381 363/421/381 +f 356/396/382 355/394/382 370/420/382 +f 349/397/383 348/395/383 363/421/383 +f 356/396/384 371/422/384 372/411/384 +f 368/424/385 383/454/385 384/425/385 +f 361/427/386 376/455/386 377/428/386 +f 369/426/387 384/425/387 385/430/387 +f 362/429/388 377/428/388 378/432/388 +f 371/434/389 370/431/389 385/430/389 +f 364/436/390 363/433/390 378/432/390 +f 371/434/391 386/435/391 387/438/391 +f 364/436/392 379/437/392 380/440/392 +f 366/446/395 365/441/395 380/440/395 +f 359/448/396 358/442/396 373/444/396 +f 366/446/397 381/447/397 382/450/397 +f 359/448/398 374/449/398 375/452/398 +f 368/424/399 367/451/399 382/450/399 +f 361/427/400 360/453/400 375/452/400 +f 381/447/402 380/440/402 395/458/402 +f 374/449/403 373/444/403 388/460/403 +f 381/447/404 396/459/404 397/462/404 +f 374/449/405 389/461/405 390/463/405 +f 383/454/406 382/450/406 397/462/406 +f 376/455/407 375/452/407 390/463/407 +f 383/454/408 398/464/408 399/466/408 +f 377/428/409 376/455/409 391/465/409 +f 384/425/410 399/466/410 400/468/410 +f 377/428/411 392/467/411 393/469/411 +f 386/435/412 385/430/412 400/468/412 +f 379/437/413 378/432/413 393/469/413 +f 386/435/414 401/470/414 402/457/414 +f 379/437/415 394/471/415 395/458/415 +f 399/466/417 414/488/417 415/473/417 +f 392/467/418 407/489/418 408/474/418 +f 401/470/526 400/468/526 415/473/526 +f 394/471/420 393/469/420 408/474/420 +f 401/470/421 416/475/421 417/477/421 +f 394/471/422 409/476/422 410/478/422 +f 396/459/425 395/458/425 410/478/425 +f 389/461/426 388/460/426 403/480/426 +f 396/459/427 411/482/427 412/484/427 +f 389/461/428 404/483/428 405/485/428 +f 398/464/429 397/462/429 412/484/429 +f 391/465/430 390/463/430 405/485/430 +f 398/464/431 413/486/431 414/488/431 +f 392/467/432 391/465/432 406/487/432 +f 403/480/433 418/504/433 419/490/433 +f 411/482/434 426/506/434 427/491/434 +f 404/483/435 419/490/435 420/492/435 +f 413/486/436 412/484/436 427/491/436 +f 406/487/437 405/485/437 420/492/437 +f 413/486/438 428/493/438 429/495/438 +f 407/489/439 406/487/439 421/494/439 +f 414/488/440 429/495/440 430/497/440 +f 407/489/441 422/496/441 423/498/441 +f 416/475/442 415/473/442 430/497/442 +f 409/476/443 408/474/443 423/498/443 +f 416/475/444 431/499/444 432/501/444 +f 409/476/445 424/500/445 425/502/445 +f 410/478/448 425/502/448 426/506/448 +f 422/496/449 437/522/449 438/507/449 +f 430/497/450 445/523/450 446/508/450 +f 424/500/451 423/498/451 438/507/451 +f 431/499/452 446/508/452 447/510/452 +f 425/502/453 424/500/453 439/509/453 +f 425/502/456 440/511/456 441/515/456 +f 418/504/457 433/513/457 434/516/457 +f 426/506/458 441/515/458 442/517/458 +f 419/490/459 434/516/459 435/518/459 +f 428/493/460 427/491/460 442/517/460 +f 420/492/461 435/518/461 436/520/461 +f 428/493/462 443/519/462 444/521/462 +f 422/496/463 421/494/463 436/520/463 +f 430/497/464 429/495/464 444/521/464 +f 441/515/465 456/540/465 457/524/465 +f 435/518/466 434/516/466 449/525/466 +f 443/519/467 442/517/467 457/524/467 +f 436/520/468 435/518/468 450/526/468 +f 443/519/469 458/527/469 459/529/469 +f 437/522/470 436/520/470 451/528/470 +f 444/521/471 459/529/471 460/531/471 +f 437/522/472 452/530/472 453/532/472 +f 446/508/473 445/523/473 460/531/473 +f 439/509/474 438/507/474 453/532/474 +f 446/508/475 461/533/475 462/535/475 +f 439/509/476 454/534/476 455/536/476 +f 441/515/479 440/511/479 455/536/479 +f 434/516/480 433/513/480 448/538/480 +f 461/533/481 460/531/481 475/541/481 +f 454/534/482 453/532/482 468/543/482 +f 461/533/483 476/542/483 477/545/483 +f 454/534/484 469/544/484 470/546/484 +f 456/540/487 455/536/487 470/546/487 +f 448/538/488 463/548/488 464/551/488 +f 456/540/489 471/550/489 472/552/489 +f 449/525/490 464/551/490 465/553/490 +f 458/527/491 457/524/491 472/552/491 +f 450/526/492 465/553/492 466/555/492 +f 458/527/493 473/554/493 474/556/493 +f 452/530/494 451/528/494 466/555/494 +f 460/531/495 459/529/495 474/556/495 +f 452/530/496 467/557/496 468/543/496 +f 465/553/497 464/551/497 2/32/497 +f 473/554/498 472/552/498 478/3/498 +f 466/555/499 465/553/499 3/4/499 +f 473/554/500 479/8/500 480/12/500 +f 467/557/501 466/555/501 4/10/501 +f 474/556/502 480/12/502 10/16/502 +f 468/543/503 467/557/503 5/14/503 +f 475/541/504 10/16/504 481/20/504 +f 469/544/505 468/543/505 6/18/505 +f 476/542/506 481/20/506 482/24/506 +f 470/546/527 469/544/527 7/22/527 +f 470/546/528 8/26/528 9/1/528 +f 464/551/511 463/548/511 1/27/511 +f 471/550/512 9/1/512 478/3/512 diff --git a/Graphics/Data/CustomMesh.h b/Graphics/Data/CustomMesh.h index 6410afe..c02e225 100644 --- a/Graphics/Data/CustomMesh.h +++ b/Graphics/Data/CustomMesh.h @@ -32,6 +32,16 @@ namespace leap::graphics m_Indices = indices; } + /// + /// Removes all existing vertices & indices, but keeps the capacity of the internal vectors + /// + void Clear() + { + m_Vertices.clear(); + m_Indices.clear(); + m_PrevSize = 0; + } + const std::vector& GetVertexBuffer() const { return m_Vertices; } unsigned int GetVertexSize() const { return m_PrevSize; } const std::vector& GetIndexBuffer() const { return m_Indices; } diff --git a/Graphics/DirectX/DirectXEngine.cpp b/Graphics/DirectX/DirectXEngine.cpp index d0a5b58..713524b 100644 --- a/Graphics/DirectX/DirectXEngine.cpp +++ b/Graphics/DirectX/DirectXEngine.cpp @@ -29,6 +29,8 @@ #include "../ImGui/imgui_impl_glfw.h" #include "imgui_impl_dx11.h" +#include "../Data/CustomMesh.h" + leap::graphics::DirectXEngine::DirectXEngine(GLFWwindow* pWindow) : m_pWindow(pWindow) { Debug::Log("DirectXRenderer Log: Created DirectX engine"); @@ -47,6 +49,10 @@ void leap::graphics::DirectXEngine::Initialize() Debug::Log("DirectXRenderer Log: Creating default material with ID \"Default\""); CreateMaterial(shaders::PosNormTex3D::GetShader(), "Default"); + Debug::Log("DirectXRenderer Log: Creating debug renderer"); + m_pDebugRenderer = CreateMeshRenderer(); + m_pDebugRenderer->SetIsLineRenderer(true); + m_IsInitialized = true; Debug::Log("DirectXRenderer Log: Successfully initialized DirectX engine"); } @@ -152,6 +158,18 @@ leap::graphics::ITexture* leap::graphics::DirectXEngine::CreateTexture(int width return pTextureRaw; } +void leap::graphics::DirectXEngine::DrawLines(const std::vector>& lines) +{ + unsigned int index{ static_cast(m_DebugDrawings.GetIndexBuffer().size()) }; + for (const auto& line : lines) + { + m_DebugDrawings.AddVertex(line.first); + m_DebugDrawings.AddVertex(line.second); + m_DebugDrawings.AddIndex(index++); + m_DebugDrawings.AddIndex(index++); + } +} + void leap::graphics::DirectXEngine::SetDirectionLight(const glm::mat3x3& transform) { if (!m_pCamera) return; @@ -342,6 +360,12 @@ void leap::graphics::DirectXEngine::Draw() if (m_pCamera) { + if (!m_DebugDrawings.GetIndexBuffer().empty()) + { + m_pDebugRenderer->LoadMesh(m_DebugDrawings); + m_DebugDrawings.Clear(); + } + RenderCameraView(); } else diff --git a/Graphics/DirectX/DirectXEngine.h b/Graphics/DirectX/DirectXEngine.h index e84aae2..453b316 100644 --- a/Graphics/DirectX/DirectXEngine.h +++ b/Graphics/DirectX/DirectXEngine.h @@ -24,6 +24,8 @@ struct ID3D11RenderTargetView; #include #include +#include "../Data/CustomMesh.h" + class GLFWwindow; namespace leap::graphics @@ -71,6 +73,9 @@ namespace leap::graphics virtual ITexture* CreateTexture(const std::string& path) override; virtual ITexture* CreateTexture(int width, int height) override; + // Debug rendering + virtual void DrawLines(const std::vector>& triangles) override; + private: void Release(); void ReloadDirectXEngine(); @@ -95,5 +100,8 @@ namespace leap::graphics bool m_IsInitialized{}; Camera* m_pCamera{}; DirectionalLight m_DirectionalLight{}; + + CustomMesh m_DebugDrawings{}; + IMeshRenderer* m_pDebugRenderer{}; }; } \ No newline at end of file diff --git a/Graphics/DirectX/DirectXMeshLoader.cpp b/Graphics/DirectX/DirectXMeshLoader.cpp index aba2338..b4a9851 100644 --- a/Graphics/DirectX/DirectXMeshLoader.cpp +++ b/Graphics/DirectX/DirectXMeshLoader.cpp @@ -28,6 +28,14 @@ const leap::graphics::DirectXMeshLoader::DirectXMeshDefinition& leap::graphics:: return m_CustomMeshes[m_CustomMeshes.size() - 1]; } +void leap::graphics::DirectXMeshLoader::RemoveCustomMesh(ID3D11Buffer* pVertexBuffer) +{ + auto meshIt{ std::find_if(begin(m_CustomMeshes), end(m_CustomMeshes), [pVertexBuffer](const auto& mesh) { return mesh.vertexBuffer == pVertexBuffer; }) }; + meshIt->vertexBuffer->Release(); + meshIt->indexBuffer->Release(); + m_CustomMeshes.erase(meshIt); +} + void leap::graphics::DirectXMeshLoader::Reload(ID3D11Device* pDevice) { for (auto& mesh : m_Meshes) diff --git a/Graphics/DirectX/DirectXMeshLoader.h b/Graphics/DirectX/DirectXMeshLoader.h index 3ea209e..86df6fe 100644 --- a/Graphics/DirectX/DirectXMeshLoader.h +++ b/Graphics/DirectX/DirectXMeshLoader.h @@ -29,6 +29,8 @@ namespace leap::graphics const DirectXMeshDefinition& LoadMesh(const std::string& dataPath, ID3D11Device* pDevice); const DirectXMeshDefinition& LoadMesh(const CustomMesh& mesh, ID3D11Device* pDevice); + void RemoveCustomMesh(ID3D11Buffer* pVertexBuffer); + void Reload(ID3D11Device* pDevice); private: diff --git a/Graphics/DirectX/DirectXMeshRenderer.cpp b/Graphics/DirectX/DirectXMeshRenderer.cpp index a66074b..fd16091 100644 --- a/Graphics/DirectX/DirectXMeshRenderer.cpp +++ b/Graphics/DirectX/DirectXMeshRenderer.cpp @@ -34,6 +34,8 @@ void leap::graphics::DirectXMeshRenderer::Draw(IMaterial* pMaterial) if (!pMaterial) pMaterial = DirectXDefaults::GetInstance().GetMaterialNotFound(m_pDevice); if (!m_pVertexBuffer || !m_pIndexBuffer) { + if (m_IsLineRenderer) return; + DirectXDefaults& defaults{ DirectXDefaults::GetInstance() }; pMaterial = defaults.GetMaterialError(m_pDevice); defaults.GetMeshError(m_pDevice, vertexSize, pVertexBuffer, pIndexBuffer, nrIndices); @@ -45,7 +47,7 @@ void leap::graphics::DirectXMeshRenderer::Draw(IMaterial* pMaterial) pDXMaterial->SetWorldMatrix(m_Transform); // Set primitive topology - m_pDeviceContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); + m_pDeviceContext->IASetPrimitiveTopology(m_IsLineRenderer ? D3D11_PRIMITIVE_TOPOLOGY_LINELIST : D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); // Set input layout m_pDeviceContext->IASetInputLayout(pDXMaterial->GetInputLayout()); @@ -93,6 +95,12 @@ void leap::graphics::DirectXMeshRenderer::LoadMesh(const std::string& filePath) const DirectXMeshLoader::DirectXMeshDefinition& mesh{ DirectXMeshLoader::GetInstance().LoadMesh(filePath, m_pDevice) }; + if (m_HasCustomMesh) + { + DirectXMeshLoader::GetInstance().RemoveCustomMesh(m_pVertexBuffer); + } + + m_HasCustomMesh = false; m_VertexSize = mesh.vertexSize; m_pVertexBuffer = mesh.vertexBuffer; m_pIndexBuffer = mesh.indexBuffer; @@ -103,12 +111,23 @@ void leap::graphics::DirectXMeshRenderer::LoadMesh(const CustomMesh& mesh) { const DirectXMeshLoader::DirectXMeshDefinition& directXMesh{ DirectXMeshLoader::GetInstance().LoadMesh(mesh, m_pDevice) }; + if (m_HasCustomMesh) + { + DirectXMeshLoader::GetInstance().RemoveCustomMesh(m_pVertexBuffer); + } + + m_HasCustomMesh = true; m_VertexSize = directXMesh.vertexSize; m_pVertexBuffer = directXMesh.vertexBuffer; m_pIndexBuffer = directXMesh.indexBuffer; m_NrIndices = directXMesh.nrIndices; } +void leap::graphics::DirectXMeshRenderer::SetIsLineRenderer(bool isLineRenderer) +{ + m_IsLineRenderer = isLineRenderer; +} + void leap::graphics::DirectXMeshRenderer::Reload(ID3D11Device* pDevice, ID3D11DeviceContext* pDeviceContext) { LoadMesh(m_FilePath); diff --git a/Graphics/DirectX/DirectXMeshRenderer.h b/Graphics/DirectX/DirectXMeshRenderer.h index 7ea0589..1817c43 100644 --- a/Graphics/DirectX/DirectXMeshRenderer.h +++ b/Graphics/DirectX/DirectXMeshRenderer.h @@ -38,6 +38,7 @@ namespace leap::graphics virtual void SetTransform(const glm::mat4x4& transform) override; virtual void LoadMesh(const std::string& filePath) override; virtual void LoadMesh(const CustomMesh& mesh) override; + virtual void SetIsLineRenderer(bool isLineRenderer) override; void Reload(ID3D11Device* pDevice, ID3D11DeviceContext* pDeviceContext); @@ -49,11 +50,14 @@ namespace leap::graphics ID3D11Device* m_pDevice{}; ID3D11DeviceContext* m_pDeviceContext{}; - glm::mat4x4 m_Transform{}; + glm::mat4x4 m_Transform{ 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f }; unsigned int m_VertexSize{}; ID3D11Buffer* m_pVertexBuffer{}; unsigned int m_NrIndices{}; ID3D11Buffer* m_pIndexBuffer{}; + + bool m_HasCustomMesh{}; + bool m_IsLineRenderer{}; }; } \ No newline at end of file diff --git a/Graphics/Interfaces/IMeshRenderer.h b/Graphics/Interfaces/IMeshRenderer.h index 62d2f90..139824c 100644 --- a/Graphics/Interfaces/IMeshRenderer.h +++ b/Graphics/Interfaces/IMeshRenderer.h @@ -21,5 +21,6 @@ namespace leap::graphics virtual void SetTransform(const glm::mat4x4& transform) = 0; virtual void LoadMesh(const std::string& filePath) = 0; virtual void LoadMesh(const CustomMesh& mesh) = 0; + virtual void SetIsLineRenderer(bool isLineRenderer) = 0; }; } \ No newline at end of file diff --git a/Graphics/Interfaces/IRenderer.h b/Graphics/Interfaces/IRenderer.h index a9b68c7..14eb0bf 100644 --- a/Graphics/Interfaces/IRenderer.h +++ b/Graphics/Interfaces/IRenderer.h @@ -5,6 +5,7 @@ #include #include +#include #include #include @@ -54,6 +55,9 @@ namespace leap::graphics virtual IMaterial* CloneMaterial(const std::string& original, const std::string& clone) = 0; virtual ITexture* CreateTexture(const std::string& path) = 0; virtual ITexture* CreateTexture(int width, int height) = 0; + + // Debug rendering + virtual void DrawLines(const std::vector>& lines) = 0; }; class DefaultRenderer final : public IRenderer @@ -74,20 +78,23 @@ namespace leap::graphics // Graphics space objects virtual void SetActiveCamera(Camera*) override {} virtual Camera* GetCamera() const override { return nullptr; } - virtual void SetDirectionLight(const glm::mat3x3&) override {}; + virtual void SetDirectionLight(const glm::mat3x3&) override {} // Meshes virtual IMeshRenderer* CreateMeshRenderer() override { return nullptr; } virtual void RemoveMeshRenderer(IMeshRenderer*) override {} // Sprites - virtual void AddSprite(Sprite*) override {}; - virtual void RemoveSprite(Sprite*) override {}; + virtual void AddSprite(Sprite*) override {} + virtual void RemoveSprite(Sprite*) override {} // Materials & Textures - virtual IMaterial* CreateMaterial(std::unique_ptr, const std::string&) override { return nullptr; }; + virtual IMaterial* CreateMaterial(std::unique_ptr, const std::string&) override { return nullptr; } virtual IMaterial* CloneMaterial(const std::string&, const std::string&) override { return nullptr; } - virtual ITexture* CreateTexture(const std::string&) override { return nullptr; }; + virtual ITexture* CreateTexture(const std::string&) override { return nullptr; } virtual ITexture* CreateTexture(int, int) override { return nullptr; } + + // Debug rendering + virtual void DrawLines(const std::vector>&) override {} }; } \ No newline at end of file diff --git a/LeapEngine/CMakeLists.txt b/LeapEngine/CMakeLists.txt index 5226b09..2056a77 100644 --- a/LeapEngine/CMakeLists.txt +++ b/LeapEngine/CMakeLists.txt @@ -24,6 +24,11 @@ add_library(LeapEngine STATIC "Components/Audio/AudioSource.cpp" "Components/Audio/AudioListener.cpp" "Components/RenderComponents/TerrainComponent.cpp" -) + "Components/Physics/BoxCollider.cpp" + "Utils/PhysicsSync.cpp" + "Components/Physics/Rigidbody.cpp" + "Components/Physics/SphereCollider.cpp" + "Components/Physics/Collider.cpp" + "Components/Physics/CapsuleCollider.cpp") set(LeapEngineIncludeDir "${CMAKE_CURRENT_SOURCE_DIR}" PARENT_SCOPE) \ No newline at end of file diff --git a/LeapEngine/Components/Component.h b/LeapEngine/Components/Component.h index 17435ca..777a8ce 100644 --- a/LeapEngine/Components/Component.h +++ b/LeapEngine/Components/Component.h @@ -4,6 +4,7 @@ namespace leap { class GameObject; class Transform; + class Collider; class Component { @@ -36,6 +37,31 @@ namespace leap virtual void OnGUI() {} virtual void OnDestroy() {} + /// + /// The first parameter is the collider linked to this component, the second parameter is the incoming collider. + /// + virtual void OnCollisionEnter(Collider* /*pCollider*/, Collider* /*pOther*/) {} + /// + /// The first parameter is the collider linked to this component, the second parameter is the incoming collider. + /// + virtual void OnCollisionStay(Collider* /*pCollider*/, Collider* /*pOther*/) {} + /// + /// The first parameter is the collider linked to this component, the second parameter is the incoming collider. + /// + virtual void OnCollisionExit(Collider* /*pCollider*/, Collider* /*pOther*/) {} + /// + /// The first parameter is the collider linked to this component, the second parameter is the incoming collider. + /// + virtual void OnTriggerEnter(Collider* /*pCollider*/, Collider* /*pOther*/) {} + /// + /// The first parameter is the collider linked to this component, the second parameter is the incoming collider. + /// + virtual void OnTriggerStay(Collider* /*pCollider*/, Collider* /*pOther*/) {} + /// + /// The first parameter is the collider linked to this component, the second parameter is the incoming collider. + /// + virtual void OnTriggerExit(Collider* /*pCollider*/, Collider* /*pOther*/) {} + private: friend GameObject; diff --git a/LeapEngine/Components/Physics/BoxCollider.cpp b/LeapEngine/Components/Physics/BoxCollider.cpp new file mode 100644 index 0000000..5b5db50 --- /dev/null +++ b/LeapEngine/Components/Physics/BoxCollider.cpp @@ -0,0 +1,43 @@ +#include "BoxCollider.h" + +#include "../../ServiceLocator/ServiceLocator.h" +#include "../../SceneGraph/GameObject.h" + +#include "../Transform/Transform.h" + +#include +#include +#include + +void leap::BoxCollider::SetupShape(physics::IPhysicsMaterial* pMaterial) +{ + physics::IPhysics& physics{ ServiceLocator::GetPhysics() }; + + // Create shape and apply the size + m_pShape = physics.CreateShape(this, physics::EShape::Box, pMaterial); + RescaleShape(); +} + +void leap::BoxCollider::RescaleShape() +{ + if (m_pShape) m_pShape->SetSize(m_Size * GetTransform()->GetWorldScale()); +} + +void leap::BoxCollider::SetSize(const glm::vec3& size) +{ + SetSize(size.x, size.y, size.z); +} + +void leap::BoxCollider::SetSize(float x, float y, float z) +{ + m_Size.x = x; + m_Size.y = y; + m_Size.z = z; + + if (m_pShape) m_pShape->SetSize(m_Size * GetTransform()->GetWorldScale()); +} + +void leap::BoxCollider::SetSize(float size) +{ + SetSize(size, size, size); +} \ No newline at end of file diff --git a/LeapEngine/Components/Physics/BoxCollider.h b/LeapEngine/Components/Physics/BoxCollider.h new file mode 100644 index 0000000..bf539a3 --- /dev/null +++ b/LeapEngine/Components/Physics/BoxCollider.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Collider.h" + +#include + +namespace leap +{ + class BoxCollider final : public Collider + { + public: + BoxCollider() = default; + virtual ~BoxCollider() = default; + + BoxCollider(const BoxCollider& other) = delete; + BoxCollider(BoxCollider&& other) = delete; + BoxCollider& operator=(const BoxCollider& other) = delete; + BoxCollider& operator=(BoxCollider&& other) = delete; + + void SetSize(const glm::vec3& size); + void SetSize(float x, float y, float z); + void SetSize(float size); + + private: + virtual void SetupShape(physics::IPhysicsMaterial* pMaterial) override; + virtual void RescaleShape() override; + + glm::vec3 m_Size{ 1.0f, 1.0f, 1.0f }; + }; +} \ No newline at end of file diff --git a/LeapEngine/Components/Physics/CapsuleCollider.cpp b/LeapEngine/Components/Physics/CapsuleCollider.cpp new file mode 100644 index 0000000..05a980a --- /dev/null +++ b/LeapEngine/Components/Physics/CapsuleCollider.cpp @@ -0,0 +1,37 @@ +#include "CapsuleCollider.h" + +#include "../../ServiceLocator/ServiceLocator.h" +#include + +#include "../Transform/Transform.h" + +void leap::CapsuleCollider::SetRadius(float radius) +{ + m_Radius = radius; +} + +void leap::CapsuleCollider::SetHeight(float height) +{ + m_Height = height; +} + +void leap::CapsuleCollider::SetupShape(physics::IPhysicsMaterial* pMaterial) +{ + physics::IPhysics& physics{ ServiceLocator::GetPhysics() }; + + // Create shape and apply the size + m_pShape = physics.CreateShape(this, physics::EShape::Capsule, pMaterial); + RescaleShape(); +} + +void leap::CapsuleCollider::RescaleShape() +{ + const auto& scale{ GetTransform()->GetWorldScale() }; + + // Apply radius + const float transformRadius{ std::max(scale.x, scale.z) }; + m_pShape->SetRadius(m_Radius * transformRadius); + + // Apply height + m_pShape->SetSize({ 1.0f, m_Height * scale.y, 1.0f }); +} diff --git a/LeapEngine/Components/Physics/CapsuleCollider.h b/LeapEngine/Components/Physics/CapsuleCollider.h new file mode 100644 index 0000000..b632ac7 --- /dev/null +++ b/LeapEngine/Components/Physics/CapsuleCollider.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Collider.h" + +namespace leap +{ + class CapsuleCollider final : public Collider + { + public: + CapsuleCollider() = default; + virtual ~CapsuleCollider() = default; + + CapsuleCollider(const CapsuleCollider& other) = delete; + CapsuleCollider(CapsuleCollider&& other) = delete; + CapsuleCollider operator=(const CapsuleCollider& other) = delete; + CapsuleCollider& operator=(CapsuleCollider&& other) = delete; + + void SetRadius(float radius); + void SetHeight(float height); + + private: + virtual void SetupShape(physics::IPhysicsMaterial* pMaterial) override; + virtual void RescaleShape() override; + + float m_Radius{ 0.5f }; + float m_Height{ 1.0f }; + }; +} \ No newline at end of file diff --git a/LeapEngine/Components/Physics/Collider.cpp b/LeapEngine/Components/Physics/Collider.cpp new file mode 100644 index 0000000..1b31195 --- /dev/null +++ b/LeapEngine/Components/Physics/Collider.cpp @@ -0,0 +1,97 @@ +#include "Collider.h" + +#include "../../ServiceLocator/ServiceLocator.h" +#include "../../SceneGraph/GameObject.h" + +#include "../Transform/Transform.h" +#include "Rigidbody.h" + +#include +#include + +void leap::Collider::BaseSetupShape() +{ + SetupShape(m_pMaterial.get()); + m_pShape->SetTrigger(m_IsTrigger); +} + +void leap::Collider::Awake() +{ + if (m_pOwningObject) return; + + BaseSetupShape(); + + physics::IPhysics& physics{ ServiceLocator::GetPhysics() }; + + // Try getting a rigidbody + Rigidbody* pRigidbody{ GetGameObject()->GetComponent() }; + if (!pRigidbody) pRigidbody = GetGameObject()->GetComponentInParent(); + + // Get the physics object associated with the owning gameobject or the owning gameobject of the closest rigidbody + m_pOwningObject = pRigidbody == nullptr ? GetGameObject() : pRigidbody->GetGameObject(); + physics::IPhysicsObject* pObject{ physics.Get(m_pOwningObject) }; + + // Apply the shape + pObject->AddShape(m_pShape.get()); + + // Set the transform of the physics object if there is no rigidbody (if there is, it is the responsibility of the rigidbody) + if (!pRigidbody) pObject->SetTransform(GetTransform()->GetWorldPosition(), GetTransform()->GetWorldRotation()); + else + { + const glm::vec3 relativePosition{ GetTransform()->GetWorldPosition() - pRigidbody->GetTransform()->GetWorldPosition() }; + const glm::quat relativeRotation{ GetTransform()->GetWorldRotation() * glm::conjugate(pRigidbody->GetTransform()->GetWorldRotation()) }; + + m_pShape->SetRelativeTransform(relativePosition, relativeRotation); + } + + GetTransform()->OnScaleChanged.AddListener(this); +} + +void leap::Collider::OnDestroy() +{ + ServiceLocator::GetPhysics().Get(m_pOwningObject)->RemoveShape(m_pShape.get()); + GetTransform()->OnScaleChanged.RemoveListener(this); +} + +void leap::Collider::Notify() +{ + RescaleShape(); +} + +void leap::Collider::Move(const Rigidbody* pRigidbody) +{ + // If the rigidbody and collider already share the same physics object, do nothing + if (pRigidbody->GetGameObject() == m_pOwningObject) return; + + physics::IPhysics& physics{ ServiceLocator::GetPhysics() }; + + // Remove the shape from the previous owner + if (m_pOwningObject) physics.Get(m_pOwningObject)->RemoveShape(m_pShape.get()); + else BaseSetupShape(); + + const glm::vec3 relativePosition{ (GetTransform()->GetWorldPosition() - pRigidbody->GetTransform()->GetWorldPosition()) * pRigidbody->GetTransform()->GetWorldRotation() }; + const glm::quat relativeRotation{ glm::conjugate(pRigidbody->GetTransform()->GetWorldRotation()) * GetTransform()->GetWorldRotation() }; + + m_pShape->SetRelativeTransform(relativePosition, relativeRotation); + + // Apply the shape to the rigidbody + m_pOwningObject = pRigidbody->GetGameObject(); + physics.Get(m_pOwningObject)->AddShape(m_pShape.get()); +} + +void leap::Collider::SetMaterial(const std::shared_ptr& pMaterial) +{ + m_pMaterial = pMaterial; +} + +void leap::Collider::SetTrigger(bool isTrigger) +{ + m_IsTrigger = isTrigger; + + if (m_pShape) m_pShape->SetTrigger(isTrigger); +} + +leap::Rigidbody* leap::Collider::GetRigidbody() const +{ + return m_pOwningObject->GetComponent(); +} \ No newline at end of file diff --git a/LeapEngine/Components/Physics/Collider.h b/LeapEngine/Components/Physics/Collider.h new file mode 100644 index 0000000..788e786 --- /dev/null +++ b/LeapEngine/Components/Physics/Collider.h @@ -0,0 +1,68 @@ +#pragma once + +#include "../Component.h" + +#include +#include +#include + +#include + +namespace leap +{ + class Rigidbody; + class GameObject; + class PhysicsSync; + + namespace physics + { + class IPhysicsMaterial; + } + + class Collider : public Component, public Observer + { + public: + struct CollisionCallback final + { + Collider* pCollider{}; + Collider* pOther{}; + }; + + Collider() = default; + virtual ~Collider() = default; + + Collider(const Collider& other) = delete; + Collider(Collider&& other) = delete; + Collider& operator=(const Collider& other) = delete; + Collider& operator=(Collider&& other) = delete; + + void SetMaterial(const std::shared_ptr& pMaterial); + void SetTrigger(bool isTrigger); + + Rigidbody* GetRigidbody() const; + + protected: + virtual void SetupShape(physics::IPhysicsMaterial* pMaterial) = 0; + virtual void RescaleShape() = 0; + + std::unique_ptr m_pShape{}; + + private: + void BaseSetupShape(); + + friend PhysicsSync; + + virtual void Awake() override; + virtual void OnDestroy() override; + + virtual void Notify() override; + + void Move(const Rigidbody* pRigidbody); + + GameObject* m_pOwningObject{}; + std::shared_ptr m_pMaterial{}; + bool m_IsTrigger{}; + + friend Rigidbody; + }; +} \ No newline at end of file diff --git a/LeapEngine/Components/Physics/Rigidbody.cpp b/LeapEngine/Components/Physics/Rigidbody.cpp new file mode 100644 index 0000000..f0c537c --- /dev/null +++ b/LeapEngine/Components/Physics/Rigidbody.cpp @@ -0,0 +1,210 @@ +#include "Rigidbody.h" + +#include "../../ServiceLocator/ServiceLocator.h" +#include "../../SceneGraph/GameObject.h" +#include "../Transform/Transform.h" +#include "Collider.h" + +#include + +#include +#include + +#include + +void leap::Rigidbody::SetKinematic(bool isKinematic) +{ + CheckExistence(); + m_pRigidbody->SetIsKinematic(isKinematic); +} + +void leap::Rigidbody::SetVelocity(const glm::vec3& velocity) +{ + CheckExistence(); + m_pRigidbody->SetVelocity(velocity); +} + +void leap::Rigidbody::SetVelocity(float x, float y, float z) +{ + SetVelocity(glm::vec3{ x,y,z }); +} + +void leap::Rigidbody::SetAngularVelocity(const glm::vec3& velocity) +{ + CheckExistence(); + m_pRigidbody->SetAngularVelocity(velocity); +} + +void leap::Rigidbody::SetAngularVelocity(float x, float y, float z) +{ + SetAngularVelocity(glm::vec3{x, y, z}); +} + +void leap::Rigidbody::SetMass(float mass) +{ + CheckExistence(); + m_pRigidbody->SetMass(mass); +} + +void leap::Rigidbody::SetConstraint(physics::Rigidbody::Constraint::Flag flag, bool enabled) +{ + CheckExistence(); + m_pRigidbody->SetConstraint(flag, enabled); +} + +void leap::Rigidbody::Translate(const glm::vec3& displacement) +{ + CheckExistence(); + m_pRigidbody->Translate(displacement); +} + +void leap::Rigidbody::Translate(float x, float y, float z) +{ + Translate({ x,y,z }); +} + +void leap::Rigidbody::SetPosition(const glm::vec3& position) +{ + CheckExistence(); + m_pRigidbody->SetPosition(position); +} + +void leap::Rigidbody::SetPosition(float x, float y, float z) +{ + SetPosition({ x, y, z }); +} + +void leap::Rigidbody::Rotate(const glm::quat& rotationEpsilon) +{ + CheckExistence(); + m_pRigidbody->Rotate(rotationEpsilon); +} + +void leap::Rigidbody::Rotate(const glm::vec3& rotationEpsilon, bool degrees) +{ + Rotate(Quaternion::FromEuler(rotationEpsilon, degrees)); +} + +void leap::Rigidbody::Rotate(float x, float y, float z, bool degrees) +{ + Rotate(Quaternion::FromEuler(x, y, z, degrees)); +} + +void leap::Rigidbody::SetRotation(const glm::quat& rotation) +{ + CheckExistence(); + m_pRigidbody->SetRotation(rotation); +} + +void leap::Rigidbody::SetRotation(const glm::vec3& rotation, bool degrees) +{ + SetRotation(Quaternion::FromEuler(rotation, degrees)); +} + +void leap::Rigidbody::SetRotation(float x, float y, float z, bool degrees) +{ + SetRotation(Quaternion::FromEuler(x, y, z, degrees)); +} + +void leap::Rigidbody::AddForce(const glm::vec3& force, physics::ForceMode mode) +{ + CheckExistence(); + m_pRigidbody->AddForce(force, mode); +} + +void leap::Rigidbody::AddForce(float x, float y, float z, physics::ForceMode mode) +{ + AddForce({ x,y,z }, mode); +} + +void leap::Rigidbody::AddTorque(const glm::vec3& torque, physics::ForceMode mode) +{ + CheckExistence(); + m_pRigidbody->AddTorque(torque, mode); +} + +void leap::Rigidbody::AddTorque(float x, float y, float z, physics::ForceMode mode) +{ + AddTorque({ x,y,z }, mode); +} + +const glm::vec3& leap::Rigidbody::GetVelocity() const +{ + if (!m_pRigidbody) return m_EmptyVector; + + return m_pRigidbody->GetVelocityFromEngine(); +} + +const glm::vec3& leap::Rigidbody::GetAngularVelocity() const +{ + if (!m_pRigidbody) return m_EmptyVector; + + return m_pRigidbody->GetAngularVelocityFromEngine(); +} + +bool leap::Rigidbody::IsConstraint(physics::Rigidbody::Constraint::Flag flag, bool enabled) const +{ + if (!m_pRigidbody) return !enabled; + + const auto& constraints{ m_pRigidbody->GetConstraints() }; + const auto iterator{ std::find_if(begin(constraints), end(constraints), [flag](const auto& constraint) { return constraint.flag == flag; }) }; + + if (iterator == end(constraints)) return !enabled; + + return iterator->enabled == enabled; +} + +void leap::Rigidbody::Awake() +{ + // Get the physics object for this gameobject + physics::IPhysicsObject* pObject{ ServiceLocator::GetPhysics().Get(GetGameObject()) }; + + // Create a rigidbody + physics::Rigidbody* pNewRigidbody{ pObject->SetRigidbody(true) }; + + // If settings were set before awake, apply the settings and destroy the temp rigidbody + if (m_pRigidbody) + { + *pNewRigidbody = std::move(*m_pRigidbody); + delete m_pRigidbody; + } + // Cache the rigidbody + m_pRigidbody = pNewRigidbody; + + // Set the current transform to the physics object + ServiceLocator::GetPhysics().Get(GetGameObject())->SetTransform(GetTransform()->GetWorldPosition(), GetTransform()->GetWorldRotation()); + + ApplyShapes(GetGameObject()); +} + +void leap::Rigidbody::OnDestroy() +{ + // Remove the rigidbody + ServiceLocator::GetPhysics().Get(GetGameObject())->SetRigidbody(false); +} + +void leap::Rigidbody::CheckExistence() +{ + // If no rigidbody exists (this function is called before awake), create a temporary rigidbody + if (!m_pRigidbody) m_pRigidbody = new leap::physics::Rigidbody{}; +} + +void leap::Rigidbody::ApplyShapes(GameObject* pParent) const +{ + const auto pCollidersOnParent{ pParent->GetComponents() }; + + // Move all the colliders on the gameobject to this rigidbody + for (auto pCollider : pCollidersOnParent) + { + pCollider->Move(this); + } + + // Move all the colliders on the children to this rigidbody + for (int i{}; i < pParent->GetChildCount(); ++i) + { + GameObject* pChild{ pParent->GetChild(i) }; + if (pChild->GetComponent()) continue; + + ApplyShapes(pChild); + } +} \ No newline at end of file diff --git a/LeapEngine/Components/Physics/Rigidbody.h b/LeapEngine/Components/Physics/Rigidbody.h new file mode 100644 index 0000000..31e1d5d --- /dev/null +++ b/LeapEngine/Components/Physics/Rigidbody.h @@ -0,0 +1,69 @@ +#pragma once + +#include "../Component.h" + +#include + +#include +#pragma warning(disable: 4201) +#include "gtc/quaternion.hpp" +#pragma warning(default: 4201) + +#include + +namespace leap +{ + class Rigidbody final : public Component + { + public: + Rigidbody() = default; + virtual ~Rigidbody() = default; + + Rigidbody(const Rigidbody& other) = delete; + Rigidbody(Rigidbody&& other) = delete; + Rigidbody& operator=(const Rigidbody& other) = delete; + Rigidbody& operator=(Rigidbody&& other) = delete; + + void SetKinematic(bool isKinematic); + void SetVelocity(const glm::vec3& velocity); + void SetVelocity(float x, float y, float z); + void SetAngularVelocity(const glm::vec3& velocity); + void SetAngularVelocity(float x, float y, float z); + void SetMass(float mass); + void SetConstraint(physics::Rigidbody::Constraint::Flag flag, bool enabled); + + void Translate(const glm::vec3& displacement); + void Translate(float x, float y, float z); + void SetPosition(const glm::vec3& position); + void SetPosition(float x, float y, float z); + void Rotate(const glm::quat& rotationEpsilon); + void Rotate(const glm::vec3& rotationEpsilon, bool degrees = true); + void Rotate(float x, float y, float z, bool degrees = true); + void SetRotation(const glm::quat& rotation); + void SetRotation(const glm::vec3& rotation, bool degrees = true); + void SetRotation(float x, float y, float z, bool degrees = true); + + void AddForce(const glm::vec3& force, physics::ForceMode mode = physics::ForceMode::Force); + void AddForce(float x, float y, float z, physics::ForceMode mode = physics::ForceMode::Force); + + void AddTorque(const glm::vec3& torque, physics::ForceMode mode = physics::ForceMode::Force); + void AddTorque(float x, float y, float z, physics::ForceMode mode = physics::ForceMode::Force); + + bool IsKinematic() const { return m_pRigidbody->IsKinematic(); } + const glm::vec3& GetVelocity() const; + const glm::vec3& GetAngularVelocity() const; + float GetMass() const { return m_pRigidbody->GetMass(); } + bool IsConstraint(physics::Rigidbody::Constraint::Flag flag, bool enabled) const; + + private: + virtual void Awake() override; + virtual void OnDestroy() override; + + void CheckExistence(); + void ApplyShapes(GameObject* pParent) const; + + physics::Rigidbody* m_pRigidbody{}; + + inline static glm::vec3 m_EmptyVector{}; + }; +} \ No newline at end of file diff --git a/LeapEngine/Components/Physics/SphereCollider.cpp b/LeapEngine/Components/Physics/SphereCollider.cpp new file mode 100644 index 0000000..6052c0d --- /dev/null +++ b/LeapEngine/Components/Physics/SphereCollider.cpp @@ -0,0 +1,32 @@ +#include "SphereCollider.h" + +#include "../../ServiceLocator/ServiceLocator.h" +#include "../Transform/Transform.h" + +#include +#include +#include + +void leap::SphereCollider::SetRadius(float radius) +{ + m_Radius = radius; + + if (m_pShape) RescaleShape(); +} + +void leap::SphereCollider::SetupShape(physics::IPhysicsMaterial* pMaterial) +{ + physics::IPhysics& physics{ ServiceLocator::GetPhysics() }; + + // Create shape + m_pShape = physics.CreateShape(this, physics::EShape::Sphere, pMaterial); + RescaleShape(); +} + +void leap::SphereCollider::RescaleShape() +{ + // Apply radius + const auto& scale{ GetTransform()->GetWorldScale() }; + const float transformSize{ std::max(scale.x, std::max(scale.y, scale.z)) }; + m_pShape->SetRadius(m_Radius * transformSize); +} \ No newline at end of file diff --git a/LeapEngine/Components/Physics/SphereCollider.h b/LeapEngine/Components/Physics/SphereCollider.h new file mode 100644 index 0000000..5e01048 --- /dev/null +++ b/LeapEngine/Components/Physics/SphereCollider.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Collider.h" + +namespace leap +{ + class SphereCollider final : public Collider + { + public: + SphereCollider() = default; + virtual ~SphereCollider() = default; + + SphereCollider(const SphereCollider& other) = delete; + SphereCollider(SphereCollider&& other) = delete; + SphereCollider& operator=(const SphereCollider& other) = delete; + SphereCollider& operator=(SphereCollider&& other) = delete; + + void SetRadius(float radius); + + private: + virtual void SetupShape(physics::IPhysicsMaterial* pMaterial) override; + virtual void RescaleShape() override; + + float m_Radius{ 0.5f }; + }; +} \ No newline at end of file diff --git a/LeapEngine/Components/RenderComponents/CameraComponent.h b/LeapEngine/Components/RenderComponents/CameraComponent.h index a71861a..14902c5 100644 --- a/LeapEngine/Components/RenderComponents/CameraComponent.h +++ b/LeapEngine/Components/RenderComponents/CameraComponent.h @@ -13,7 +13,7 @@ namespace leap class Camera; } - class CameraComponent final : public Component, Observer + class CameraComponent final : public Component, TObserver { public: CameraComponent(); diff --git a/LeapEngine/Components/RenderComponents/UIComponents/Button.h b/LeapEngine/Components/RenderComponents/UIComponents/Button.h index 9ca7bb3..d70e7d1 100644 --- a/LeapEngine/Components/RenderComponents/UIComponents/Button.h +++ b/LeapEngine/Components/RenderComponents/UIComponents/Button.h @@ -23,7 +23,7 @@ namespace leap Button& operator=(const Button& other) = delete; Button& operator=(Button&& other) = delete; - Subject