diff --git a/Engine/lib/CMakeLists.txt b/Engine/lib/CMakeLists.txt index 13c0cc25e..801a8ee94 100644 --- a/Engine/lib/CMakeLists.txt +++ b/Engine/lib/CMakeLists.txt @@ -286,6 +286,16 @@ if(TORQUE_TESTING) endif() #endif() +set(JOLT_DEBUG OFF) + +if(WIN32) + set(JOLT_DEBUG ON) +endif() +advanced_option(DEBUG_RENDERER_IN_DEBUG_AND_RELEASE "Debug Renderer currently windows only" ${JOLT_DEBUG}) +advanced_option(USE_STATIC_MSVC_RUNTIME_LIBRARY "Static MSVC Runtimes" OFF) +advanced_option(USE_STATIC_CRT "Static MSVC Runtimes MTd" OFF) +add_subdirectory(JoltPhysics/Build ${TORQUE_LIB_TARG_DIRECTORY}/JoltPhysics EXCLUDE_FROM_ALL) + #misc randoms mark_as_advanced(WINDRES) mark_as_advanced(AUDIOUNIT_INCLUDE_DIR) diff --git a/Engine/lib/JoltPhysics/.clang-format b/Engine/lib/JoltPhysics/.clang-format new file mode 100644 index 000000000..e3845288a --- /dev/null +++ b/Engine/lib/JoltPhysics/.clang-format @@ -0,0 +1 @@ +DisableFormat: true diff --git a/Engine/lib/JoltPhysics/.editorconfig b/Engine/lib/JoltPhysics/.editorconfig new file mode 100644 index 000000000..49f8ef26b --- /dev/null +++ b/Engine/lib/JoltPhysics/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*.{cpp,h,inl,cmake,sh,bat,hlsl}] +indent_style = tab +indent_size = 4 +tab_width = 4 +trim_trailing_whitespace = true +insert_final_newline = true + +[CMakeLists.txt] +indent_style = tab +indent_size = 4 +tab_width = 4 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/Engine/lib/JoltPhysics/.gitattributes b/Engine/lib/JoltPhysics/.gitattributes new file mode 100644 index 000000000..c5482ed7c --- /dev/null +++ b/Engine/lib/JoltPhysics/.gitattributes @@ -0,0 +1,18 @@ +# Convert LF to CRLF on windows on checkout and convert back before submitting to the repository +* text=auto + +# Explicitly declare text files to always be normalized and converted to native line endings on checkout +*.cpp text +*.inl text +*.h text +*.tof text +*.bat text + +# Force shell files to use LF only +*.sh text eol=lf +gradlew text eol=lf + +# Declare binary file types +*.tga binary +*.bof binary +*.bin binary \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/.github/dependabot.yml b/Engine/lib/JoltPhysics/.github/dependabot.yml new file mode 100644 index 000000000..2c431b0bf --- /dev/null +++ b/Engine/lib/JoltPhysics/.github/dependabot.yml @@ -0,0 +1,9 @@ +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/Engine/lib/JoltPhysics/.github/workflows/build.yml b/Engine/lib/JoltPhysics/.github/workflows/build.yml new file mode 100644 index 000000000..db15123b7 --- /dev/null +++ b/Engine/lib/JoltPhysics/.github/workflows/build.yml @@ -0,0 +1,435 @@ +name: Build + +on: + push: + branches: [ master ] + paths-ignore: + - 'Docs/**' + - '**.md' + pull_request: + branches: [ master ] + paths-ignore: + - 'Docs/**' + - '**.md' + +env: + EMSCRIPTEN_VERSION: 3.1.64 + UBUNTU_CLANG_VERSION: clang++-18 + UBUNTU_GCC_VERSION: g++-14 + +jobs: + linux-clang: + runs-on: ubuntu-latest + name: Linux Clang + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release, Distribution] + double_precision: [No, Yes] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Install Vulkan + run: ${{github.workspace}}/Build/ubuntu24_install_vulkan_sdk.sh + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DDOUBLE_PRECISION=${{matrix.double_precision}} + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc) + - name: Test + working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} + run: ctest --output-on-failure --verbose + + linux_clang_tsan: + runs-on: ubuntu-24.04 + name: Linux Clang Sanitizers + strategy: + fail-fast: false + matrix: + build_type: [ReleaseASAN, ReleaseUBSAN, ReleaseTSAN] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc) + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} + run: ctest --output-on-failure --verbose + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} + run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh + - name: Test Ragdoll + working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} + run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll + + linux-clang-so: + runs-on: ubuntu-24.04 + name: Linux Clang Shared Library + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release, Distribution] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DBUILD_SHARED_LIBS=YES + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc) + - name: Test + working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} + run: ctest --output-on-failure --verbose + + linux-clang-32-bit: + runs-on: ubuntu-24.04 + name: Linux Clang 32-bit + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release, Distribution] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Update APT + run: sudo apt update + - name: Install G++-Multilib + run: sudo apt -y install g++-multilib + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DCMAKE_CXX_FLAGS=-m32 -DUSE_SSE4_1=OFF -DUSE_SSE4_2=OFF -DUSE_AVX=OFF -DUSE_AVX2=OFF -DUSE_AVX512=OFF -DUSE_LZCNT=OFF -DUSE_TZCNT=OFF -DUSE_F16C=OFF -DUSE_FMADD=OFF + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc) + - name: Test + working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} + run: ctest --output-on-failure --verbose + + linux-clang-use-std-vector: + runs-on: ubuntu-24.04 + name: Linux Clang using std::vector + strategy: + fail-fast: false + matrix: + build_type: [Debug, ReleaseASAN] + double_precision: [Yes] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DDOUBLE_PRECISION=${{matrix.double_precision}} -DUSE_STD_VECTOR=ON + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc) + - name: Test + working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} + run: ctest --output-on-failure --verbose + + linux-gcc: + runs-on: ubuntu-24.04 + name: Linux GCC + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release, Distribution] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Install Vulkan + run: ${{github.workspace}}/Build/ubuntu24_install_vulkan_sdk.sh + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_GCC_VERSION}} + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc) + - name: Test + working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} + run: ctest --output-on-failure --verbose + + linux-gcc-so: + runs-on: ubuntu-24.04 + name: Linux GCC Shared Library + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release, Distribution] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_GCC_VERSION}} -DBUILD_SHARED_LIBS=Yes + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc) + - name: Test + working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}} + run: ctest --output-on-failure --verbose + + msys2_mingw_gcc: + runs-on: windows-latest + defaults: + run: + shell: msys2 {0} + name: MSYS2 MinGW GCC + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release] + shared_lib: [No, Yes] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Setup MSYS2 + uses: msys2/setup-msys2@v2 + with: + msystem: mingw64 + install: mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake + update: true + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_mingw.sh ${{matrix.build_type}} -DBUILD_SHARED_LIBS=${{matrix.shared_lib}} + - name: Build + run: cmake --build Build/MinGW_${{matrix.build_type}} -j $(nproc) + - name: Test + working-directory: Build/MinGW_${{matrix.build_type}} + run: ctest --output-on-failure --verbose + + msvc_cl: + runs-on: windows-latest + name: Visual Studio CL + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release, Distribution] + double_precision: [No, Yes] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + - name: Configure CMake + run: cmake -B ${{github.workspace}}/Build/VS2022_CL -G "Visual Studio 17 2022" -A x64 Build -DDOUBLE_PRECISION=${{matrix.double_precision}} + - name: Build + run: msbuild Build\VS2022_CL\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m + - name: Test + working-directory: ${{github.workspace}}/Build/VS2022_CL/${{matrix.build_type}} + run: ./UnitTests.exe + + msvc_cl_no_object_stream: + runs-on: windows-latest + name: Visual Studio CL - No Object Stream + strategy: + fail-fast: false + matrix: + build_type: [Debug, Distribution] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + - name: Configure CMake + run: cmake -B ${{github.workspace}}/Build/VS2022_CL -G "Visual Studio 17 2022" -A x64 Build -DENABLE_OBJECT_STREAM=NO + - name: Build + run: msbuild Build\VS2022_CL\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m + - name: Test + working-directory: ${{github.workspace}}/Build/VS2022_CL/${{matrix.build_type}} + run: ./UnitTests.exe + + msvc_cl_dll: + runs-on: windows-latest + name: Visual Studio CL Shared Library + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release, Distribution] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + - name: Configure CMake + run: cmake -B ${{github.workspace}}/Build/VS2022_CL -G "Visual Studio 17 2022" -A x64 Build -DBUILD_SHARED_LIBS=Yes + - name: Build + run: msbuild Build\VS2022_CL\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m + - name: Test + working-directory: ${{github.workspace}}/Build/VS2022_CL/${{matrix.build_type}} + run: ./UnitTests.exe + + msvc_cl_32_bit: + runs-on: windows-latest + name: Visual Studio CL 32-bit + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + - name: Configure CMake + run: cmake -B ${{github.workspace}}/Build/VS2022_CL_32_BIT -G "Visual Studio 17 2022" -A Win32 -DUSE_SSE4_1=OFF -DUSE_SSE4_2=OFF -DUSE_AVX=OFF -DUSE_AVX2=OFF -DUSE_AVX512=OFF -DUSE_LZCNT=OFF -DUSE_TZCNT=OFF -DUSE_F16C=OFF -DUSE_FMADD=OFF Build + - name: Build + run: msbuild Build\VS2022_CL_32_BIT\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m + - name: Test + working-directory: ${{github.workspace}}/Build/VS2022_CL_32_BIT/${{matrix.build_type}} + run: ./UnitTests.exe + + msvc_cl_arm: + runs-on: windows-latest + name: Visual Studio CL ARM + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + - name: Configure CMake + run: cmake -B ${{github.workspace}}/Build/VS2022_CL_ARM -G "Visual Studio 17 2022" -A ARM64 Build + - name: Build + run: msbuild Build\VS2022_CL_ARM\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m + + msvc_cl_arm_32_bit: + runs-on: windows-latest + name: Visual Studio CL ARM 32-bit + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + - name: Install Windows 11 SDK (10.0.22621.0) + # Alternative: Start-Process -wait -FilePath "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList "modify", "--installPath", """C:\Program Files\Microsoft Visual Studio\2022\Enterprise""", "--quiet", "--norestart", "--nocache", "--add", "Microsoft.VisualStudio.Component.Windows11SDK.22621" -Verb RunAs + run: choco install windows-sdk-11-version-22H2-all -y + - name: Configure CMake + # Windows 11 SDK 10.0.22621.0 is the last SDK to support 32-bit ARM + run: cmake -B ${{github.workspace}}/Build/VS2022_CL_ARM_32_BIT -G "Visual Studio 17 2022" -A ARM -DCMAKE_SYSTEM_VERSION="10.0.22621.0" -DCMAKE_CXX_COMPILER_WORKS=1 Build + - name: Build + run: msbuild Build\VS2022_CL_ARM_32_BIT\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m + + msvc_clang: + runs-on: windows-latest + name: Visual Studio Clang + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release, Distribution] + double_precision: [No, Yes] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + - name: Configure CMake + run: cmake -B ${{github.workspace}}/Build/VS2022_Clang -G "Visual Studio 17 2022" -A x64 -T ClangCL Build -DDOUBLE_PRECISION=${{matrix.double_precision}} + - name: Build + run: msbuild Build\VS2022_Clang\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m + - name: Test + working-directory: ${{github.workspace}}/Build/VS2022_Clang/${{matrix.build_type}} + run: ./UnitTests.exe + + macos: + runs-on: macos-latest + name: macOS + env: + VULKAN_SDK_INSTALL: ${{github.workspace}}/vulkan_sdk + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release, Distribution] + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Install Vulkan + run: ${{github.workspace}}/Build/macos_install_vulkan_sdk.sh ${VULKAN_SDK_INSTALL} + - name: Configure CMake + run: | + source ${VULKAN_SDK_INSTALL}/setup-env.sh + cmake -B ${{github.workspace}}/Build/MacOS_${{matrix.build_type}} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=clang++ Build + - name: Build + run: cmake --build ${{github.workspace}}/Build/MacOS_${{matrix.build_type}} -j $(nproc) + - name: Test + working-directory: ${{github.workspace}}/Build/MacOS_${{matrix.build_type}} + run: ctest --output-on-failure --verbose + + android: + runs-on: ubuntu-latest + name: Android + strategy: + fail-fast: false + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Setup Java + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: '17' + - name: Gradle Build + working-directory: ${{github.workspace}}/Build/Android + run: ./gradlew build --no-daemon + + ios: + runs-on: macos-latest + name: iOS + strategy: + fail-fast: false + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Configure CMake + run: cmake -B ${{github.workspace}}/Build/XCode_iOS -DTARGET_HELLO_WORLD=OFF -DTARGET_PERFORMANCE_TEST=OFF -DCMAKE_SYSTEM_NAME=iOS -GXcode Build + - name: Build + run: cmake --build ${{github.workspace}}/Build/XCode_iOS -- -sdk iphonesimulator -arch x86_64 + + emscripten: + runs-on: ubuntu-latest + name: Emscripten + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Setup emsdk + uses: mymindstorm/setup-emsdk@v14 + with: + version: ${{env.EMSCRIPTEN_VERSION}} + - name: Verify emsdk + run: emcc -v + - name: Setup Node.js 18.x + uses: actions/setup-node@v6 + with: + node-version: 18.x + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_emscripten.sh Distribution -DTARGET_HELLO_WORLD=OFF -DTARGET_PERFORMANCE_TEST=OFF + - name: Build + run: cmake --build ${{github.workspace}}/Build/WASM_Distribution -j $(nproc) + - name: Test + working-directory: ${{github.workspace}}/Build/WASM_Distribution + run: node UnitTests.js diff --git a/Engine/lib/JoltPhysics/.github/workflows/determinism_check.yml b/Engine/lib/JoltPhysics/.github/workflows/determinism_check.yml new file mode 100644 index 000000000..b8241ca22 --- /dev/null +++ b/Engine/lib/JoltPhysics/.github/workflows/determinism_check.yml @@ -0,0 +1,430 @@ +name: Determinism Check + +env: + CONVEX_VS_MESH_HASH: '0xa7348cad585544bf' + RAGDOLL_HASH: '0xc392d8f867b0be5b' + PYRAMID_HASH: '0xafd93b295e75e3f6' + CHARACTER_VIRTUAL_HASH: '0x19c55223035a8f1a' + EMSCRIPTEN_VERSION: 4.0.2 + NODE_VERSION: 23.x + UBUNTU_CLANG_VERSION: clang++-18 + UBUNTU_GCC_VERSION: g++-14 + UBUNTU_GCC_AARCH64_VERSION: aarch64-linux-gnu-g++-14 + UBUNTU_GCC_RISCV_VERSION: riscv64-linux-gnu-g++-14 + UBUNTU_GCC_POWERPC_VERSION: powerpc64le-linux-gnu-g++-14 + UBUNTU_GCC_LOONGARCH_VERSION: loongarch64-linux-gnu-g++-14 + +on: + push: + branches: [ master ] + paths-ignore: + - 'Docs/**' + - '**.md' + pull_request: + branches: [ master ] + paths-ignore: + - 'Docs/**' + - '**.md' + +jobs: + linux_clang: + runs-on: ubuntu-latest + name: Linux Clang Determinism Check + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_CLANG_VERSION}} -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ctest --output-on-failure --verbose + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} + - name: Test Ragdoll + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} + - name: Test Pyramid + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} + - name: Test CharacterVirtual + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH} + + linux_gcc: + runs-on: ubuntu-latest + name: Linux GCC Determinism Check + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_VERSION}} -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ctest --output-on-failure --verbose + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} + - name: Test Ragdoll + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} + - name: Test Pyramid + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} + - name: Test CharacterVirtual + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH} + + msvc_cl: + runs-on: windows-latest + name: Visual Studio CL Determinism Check + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_vs2022_cl.bat -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON + - name: Build + run: msbuild Build\VS2022_CL\JoltPhysics.sln /property:Configuration=Distribution + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution + run: ./UnitTests.exe + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh "-validate_hash=$env:CONVEX_VS_MESH_HASH" + - name: Test Ragdoll + working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll "-validate_hash=$env:RAGDOLL_HASH" + - name: Test Pyramid + working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid "-validate_hash=$env:PYRAMID_HASH" + - name: Test CharacterVirtual + working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution + run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual "-validate_hash=$env:CHARACTER_VIRTUAL_HASH" + + msvc_cl_32: + runs-on: windows-latest + name: Visual Studio CL 32-bit Determinism Check + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_vs2022_cl_32bit.bat -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON + - name: Build + run: msbuild Build\VS2022_CL_32BIT\JoltPhysics.sln /property:Configuration=Distribution + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution + run: ./UnitTests.exe + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh "-validate_hash=$env:CONVEX_VS_MESH_HASH" + - name: Test Ragdoll + working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll "-validate_hash=$env:RAGDOLL_HASH" + - name: Test Pyramid + working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid "-validate_hash=$env:PYRAMID_HASH" + - name: Test CharacterVirtual + working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution + run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual "-validate_hash=$env:CHARACTER_VIRTUAL_HASH" + + macos: + runs-on: macos-latest + name: macOS Determinism Check + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh Distribution clang++ -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ctest --output-on-failure --verbose + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} + - name: Test Ragdoll + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} + - name: Test Pyramid + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} + - name: Test CharacterVirtual + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH} + + arm_clang: + runs-on: ubuntu-latest + name: ARM Clang Determinism Check + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Update index + run: sudo apt-get update + - name: Install Cross Compiler + run: sudo apt-get install gcc-14-aarch64-linux-gnu gcc-14-multilib g++-14-multilib libstdc++-14-dev-arm64-cross qemu-user -y + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_CLANG_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./UnitTests + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} + - name: Test Ragdoll + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} + - name: Test Pyramid + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} + - name: Test CharacterVirtual + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH} + + arm_clang_32: + runs-on: ubuntu-latest + name: ARM Clang 32-bit Determinism Check + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Update index + run: sudo apt-get update + - name: Install Cross Compiler + run: sudo apt-get install g++-14-arm-linux-gnueabihf qemu-user -y + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_CLANG_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_COMPILE_ARM_TARGET="arm-linux-gnueabihf" -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./UnitTests + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} + - name: Test Ragdoll + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} + - name: Test Pyramid + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} + - name: Test CharacterVirtual + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH} + + arm_gcc: + runs-on: ubuntu-latest + name: ARM GCC Determinism Check + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Update index + run: sudo apt-get update + - name: Install Cross Compiler + run: sudo apt-get install g++-14-aarch64-linux-gnu gcc-14-multilib g++-14-multilib libstdc++-14-dev-arm64-cross qemu-user -y + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_AARCH64_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./UnitTests + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} + - name: Test Ragdoll + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} + - name: Test Pyramid + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} + - name: Test CharacterVirtual + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH} + + riscv_gcc: + runs-on: ubuntu-latest + name: RISC-V GCC Determinism Check + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Update index + run: sudo apt-get update + - name: Install Cross Compiler + run: sudo apt-get install g++-14-riscv64-linux-gnu gcc-14-multilib g++-14-multilib qemu-user -y + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_RISCV_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DCROSS_COMPILE_ARM_TARGET="" -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./UnitTests + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} + - name: Test Ragdoll + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} + - name: Test Pyramid + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} + - name: Test CharacterVirtual + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH} + + powerpcle_gcc: + runs-on: ubuntu-latest + name: PowerPC Little Endian GCC Determinism Check + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Update index + run: sudo apt-get update + - name: Install Cross Compiler + run: sudo apt-get install g++-14-powerpc64le-linux-gnu gcc-14-multilib g++-14-multilib qemu-user -y + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_POWERPC_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DCROSS_COMPILE_ARM_TARGET="" -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-ppc64le -L /usr/powerpc64le-linux-gnu/ ./UnitTests + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-ppc64le -L /usr/powerpc64le-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} +# This is really slow so disabled for the moment +# - name: Test Ragdoll +# working-directory: ${{github.workspace}}/Build/Linux_Distribution +# run: qemu-ppc64le -L /usr/powerpc64le-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} +# - name: Test Pyramid +# working-directory: ${{github.workspace}}/Build/Linux_Distribution +# run: qemu-ppc64le -L /usr/powerpc64le-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} + + loongarch_gcc: + runs-on: ubuntu-latest + name: LoongArch GCC Determinism Check + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Update index + run: sudo apt-get update + - name: Install Cross Compiler + run: sudo apt-get install g++-14-loongarch64-linux-gnu gcc-14-multilib g++-14-multilib qemu-user -y + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_LOONGARCH_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DCROSS_COMPILE_ARM_TARGET="" -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON + - name: Build + run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc) + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-loongarch64 -L /usr/loongarch64-linux-gnu/ ./UnitTests + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-loongarch64 -L /usr/loongarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} + - name: Test Ragdoll + working-directory: ${{github.workspace}}/Build/Linux_Distribution + run: qemu-loongarch64 -L /usr/loongarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} +# This is slow so disabled for the moment +# - name: Test Pyramid +# working-directory: ${{github.workspace}}/Build/Linux_Distribution +# run: qemu-loongarch64 -L /usr/loongarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} + + emscripten: + runs-on: ubuntu-latest + name: Emscripten WASM32 Determinism Check + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Setup emsdk + uses: mymindstorm/setup-emsdk@v14 + with: + version: ${{env.EMSCRIPTEN_VERSION}} + - name: Verify emsdk + run: emcc -v + - name: Setup Node.js ${{env.NODE_VERSION}} + uses: actions/setup-node@v6 + with: + node-version: ${{env.NODE_VERSION}} + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_emscripten.sh Distribution -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON + - name: Build + run: cmake --build ${{github.workspace}}/Build/WASM_Distribution -j $(nproc) + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/WASM_Distribution + run: node UnitTests.js + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/WASM_Distribution + run: node PerformanceTest.js -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} + - name: Test Ragdoll + working-directory: ${{github.workspace}}/Build/WASM_Distribution + run: node PerformanceTest.js -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} + - name: Test Pyramid + working-directory: ${{github.workspace}}/Build/WASM_Distribution + run: node PerformanceTest.js -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} + - name: Test CharacterVirtual + working-directory: ${{github.workspace}}/Build/WASM_Distribution + run: node PerformanceTest.js -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH} + + emscripten64: + runs-on: ubuntu-latest + name: Emscripten WASM64 Determinism Check + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + - name: Setup emsdk + uses: mymindstorm/setup-emsdk@v14 + with: + version: ${{env.EMSCRIPTEN_VERSION}} + - name: Verify emsdk + run: emcc -v + - name: Setup Node.js ${{env.NODE_VERSION}} + uses: actions/setup-node@v6 + with: + node-version: ${{env.NODE_VERSION}} + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_emscripten.sh Distribution -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON -DJPH_USE_WASM64=ON + - name: Build + run: cmake --build ${{github.workspace}}/Build/WASM_Distribution -j $(nproc) + - name: Unit Tests + working-directory: ${{github.workspace}}/Build/WASM_Distribution + run: node --experimental-wasm-memory64 UnitTests.js + - name: Test ConvexVsMesh + working-directory: ${{github.workspace}}/Build/WASM_Distribution + run: node --experimental-wasm-memory64 PerformanceTest.js -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH} + - name: Test Ragdoll + working-directory: ${{github.workspace}}/Build/WASM_Distribution + run: node --experimental-wasm-memory64 PerformanceTest.js -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH} + - name: Test Pyramid + working-directory: ${{github.workspace}}/Build/WASM_Distribution + run: node --experimental-wasm-memory64 PerformanceTest.js -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH} + - name: Test CharacterVirtual + working-directory: ${{github.workspace}}/Build/WASM_Distribution + run: node --experimental-wasm-memory64 PerformanceTest.js -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH} diff --git a/Engine/lib/JoltPhysics/.github/workflows/doxygen.yml b/Engine/lib/JoltPhysics/.github/workflows/doxygen.yml new file mode 100644 index 000000000..a73b574f1 --- /dev/null +++ b/Engine/lib/JoltPhysics/.github/workflows/doxygen.yml @@ -0,0 +1,26 @@ +name: Doxygen Action + +on: + push: + branches: [ master ] + +# Builds and deploys doxygen documentation +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v6 + + - name: Doxygen Action + uses: mattnotmitt/doxygen-action@v1.12.0 + with: + doxyfile-path: "./Doxyfile" + working-directory: "." + + - name: Deploy + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./Build/Doxygen + force_orphan: true diff --git a/Engine/lib/JoltPhysics/.github/workflows/sonar-cloud.yml b/Engine/lib/JoltPhysics/.github/workflows/sonar-cloud.yml new file mode 100644 index 000000000..50365a140 --- /dev/null +++ b/Engine/lib/JoltPhysics/.github/workflows/sonar-cloud.yml @@ -0,0 +1,58 @@ +name: Sonar Cloud + +on: + push: + branches: [ master ] + paths-ignore: + - 'Docs/**' + - '**.md' + pull_request: + branches: [ master ] + paths-ignore: + - 'Docs/**' + - '**.md' + +jobs: + check-secret: + runs-on: ubuntu-latest + outputs: + sonar-token: ${{ steps.sonar-token.outputs.defined }} + steps: + - id: sonar-token + if: ${{ env.SONAR_TOKEN != '' }} + run: echo "defined=true" >> $GITHUB_OUTPUT + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + + build: + name: Build + needs: [check-secret] + if: needs.check-secret.outputs.sonar-token == 'true' + runs-on: ubuntu-latest + env: + BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed + CLANG_VERSION: 18 + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + - name: Install build-wrapper + uses: SonarSource/sonarqube-scan-action/install-build-wrapper@v7 + - name: Configure CMake + working-directory: ${{github.workspace}}/Build + run: ./cmake_linux_clang_gcc.sh ReleaseCoverage clang++-${{ env.CLANG_VERSION }} + - name: Run build-wrapper + run: build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build ${{github.workspace}}/Build/Linux_ReleaseCoverage -j $(nproc) + - name: Run unit tests and create coverage report + working-directory: ${{github.workspace}}/Build/Linux_ReleaseCoverage + run: | + cmake --build . --target test -j $(nproc) + llvm-profdata-${{ env.CLANG_VERSION }} merge -sparse default.profraw -o default.profdata + llvm-cov-${{ env.CLANG_VERSION }} show -format=text UnitTests -instr-profile=default.profdata > coverage.txt + - name: Run sonar-scanner + uses: SonarSource/sonarqube-scan-action@v7 + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + args: > + --define sonar.cfamily.compile-commands=${{ env.BUILD_WRAPPER_OUT_DIR }}/compile_commands.json --define sonar.cfamily.llvm-cov.reportPath=${{github.workspace}}/Build/Linux_ReleaseCoverage/coverage.txt diff --git a/Engine/lib/JoltPhysics/.gitignore b/Engine/lib/JoltPhysics/.gitignore new file mode 100644 index 000000000..b2dcd7e25 --- /dev/null +++ b/Engine/lib/JoltPhysics/.gitignore @@ -0,0 +1,14 @@ +.cache/ +.clangd/ +.fleet/ +.idea/ +.vs +.vscode +.DS_Store +/profile_chart_*.html +/stats*.html +/snapshot.bin +/*.jor +/detlog.txt +/Assets/Shaders/VK/*.spv +/Assets/Shaders/MTL/*.metallib diff --git a/Engine/lib/JoltPhysics/Assets/Fonts/Roboto-Regular.ttf b/Engine/lib/JoltPhysics/Assets/Fonts/Roboto-Regular.ttf new file mode 100644 index 000000000..7d9a6c4c3 Binary files /dev/null and b/Engine/lib/JoltPhysics/Assets/Fonts/Roboto-Regular.ttf differ diff --git a/Engine/lib/JoltPhysics/Assets/Human.tof b/Engine/lib/JoltPhysics/Assets/Human.tof new file mode 100644 index 000000000..1be318ed5 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Human.tof @@ -0,0 +1,1654 @@ +TOS 1.00 + +declare RagdollSettings 2 + mSkeleton instance Skeleton + mParts array instance RagdollSettings::Part + +declare Skeleton 1 + mJoints array instance Skeleton::Joint + +declare RagdollSettings::Part 19 + mPosition vec3 + mRotation quat + mShape instance ShapeSettings + mCollisionGroup instance CollisionGroup + mObjectLayer uint32 + mMotionType uint32 + mAllowDynamicOrKinematic bool + mMotionQuality uint32 + mAllowSleeping bool + mFriction float + mRestitution float + mLinearDamping float + mAngularDamping float + mMaxLinearVelocity float + mMaxAngularVelocity float + mGravityFactor float + mOverrideMassProperties uint32 + mMassPropertiesOverride instance MassProperties + mToParent instance TwoBodyConstraintSettings + +declare Skeleton::Joint 2 + mName string + mParentName string + +declare ShapeSettings 1 + mUserData uint32 + +declare CollisionGroup 3 + mGroupFilter instance GroupFilter + mGroupID uint32 + mSubGroupID uint32 + +declare MassProperties 2 + mMass float + mInertia mat44 + +declare TwoBodyConstraintSettings 1 + mDrawConstraintSize float + +declare GroupFilter 0 + +object RagdollSettings 00000001 + 00000002 + 23 + 0 0.931122005 -0.0230349991 + 0 1 0 0 + 00000003 + 00000004 + 0 + 0 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000000 + 0.104854003 0.930898011 -0.0231149998 + 0.000290353579 -0.0122133596 0.999642909 -0.0237674899 + 00000005 + 00000004 + 0 + 1 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000006 + 0.126794994 0.469749004 -0.0343980007 + -0.00113988295 0.0479386896 0.998567462 -0.0237417668 + 00000007 + 00000004 + 0 + 2 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000008 + 0.145157993 0.0837970003 0.00278700003 + 0 -0.506379366 0.862310827 0 + 00000009 + 00000004 + 0 + 3 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0000000A + -0.104854003 0.930896997 -0.0231149998 + 0.0237674899 0.999642909 0.0122133596 0.000290353579 + 0000000B + 00000004 + 0 + 4 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0000000C + -0.126794994 0.469749004 -0.0343980007 + 0.0237417668 0.998567462 -0.0479386896 -0.00113988295 + 0000000D + 00000004 + 0 + 5 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0000000E + -0.145156994 0.0837979987 0.00278700003 + 0 0.862310827 0.506379366 0 + 0000000F + 00000004 + 0 + 6 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000010 + 0 0.986563981 -0.0230349991 + 0 1 0 0 + 00000011 + 00000004 + 0 + 7 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000012 + 0 1.03556395 -0.0230349991 + 0 1 0 0 + 00000013 + 00000004 + 0 + 8 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000014 + 0 1.08456397 -0.0230349991 + 0 1 0 0 + 00000015 + 00000004 + 0 + 9 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000016 + 0 1.18256497 -0.0230349991 + 0 1 0 0 + 00000017 + 00000004 + 0 + 10 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000018 + -0.00729899993 1.39142203 -0.0537119992 + -0.144681364 0.131127819 -0.761695445 0.617812991 + 00000019 + 00000004 + 0 + 11 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0000001A + -0.154914007 1.35279202 0.0128229996 + 0.0160888918 -0.00676369248 -0.387456775 0.921722651 + 0000001B + 00000004 + 0 + 12 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0000001C + -0.341015011 1.17054999 0.00372699997 + 0.186154276 -0.0782527998 -0.379532725 0.902872145 + 0000001D + 00000004 + 0 + 13 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0000001E + -0.499992013 1.01485896 -0.0921010002 + 0.186154276 -0.0782527998 -0.379532725 0.902872145 + 0000001F + 00000004 + 0 + 14 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000020 + 0.00729899993 1.39142203 -0.0537119992 + 0.617812574 0.761695743 0.131128147 0.144681096 + 00000021 + 00000004 + 0 + 15 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000022 + 0.154914007 1.35279 0.0128229996 + 0.921722353 0.38745746 -0.00676369481 -0.0160888974 + 00000023 + 00000004 + 0 + 16 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000024 + 0.341015011 1.17054605 0.00372699997 + 0.902871907 0.379533201 -0.0782528147 -0.18615438 + 00000025 + 00000004 + 0 + 17 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000026 + 0.499992996 1.01486397 -0.0921010002 + 0.902871907 0.379533201 -0.0782528147 -0.18615438 + 00000027 + 00000004 + 0 + 18 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000028 + 0 1.38891399 0.0150830001 + 0 0.976295888 -0.216440096 0 + 00000029 + 00000004 + 0 + 19 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0000002A + 0 1.43785501 -0.00773900002 + 0 1 0 0 + 0000002B + 00000004 + 0 + 20 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0000002C + 0 1.49185598 -0.00773900002 + 0 1 0 0 + 0000002D + 00000004 + 0 + 21 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0000002E + 0 1.545856 -0.00773900002 + 0 1 0 0 + 0000002F + 00000004 + 0 + 22 + 4 + 2 + false + 0 + true + 1 + 0.150000006 + 0.0500000007 + 0.0500000007 + 500 + 47.1238899 + 1 + 0 + 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 00000030 + +object Skeleton 00000002 + 23 + "hipsBone" + "" + "R_Leg_sjnt_0" + "hipsBone" + "R_Leg_sjnt_1" + "R_Leg_sjnt_0" + "R_Foot_sjnt_0" + "R_Leg_sjnt_1" + "L_Leg_sjnt_0" + "hipsBone" + "L_Leg_sjnt_1" + "L_Leg_sjnt_0" + "L_Foot_sjnt_0" + "L_Leg_sjnt_1" + "C_Spine_sjnt_0" + "hipsBone" + "C_Spine_sjnt_1" + "C_Spine_sjnt_0" + "C_Spine_sjnt_2" + "C_Spine_sjnt_1" + "C_Spine_sjnt_4" + "C_Spine_sjnt_2" + "L_Clavicle_sjnt_0" + "C_Spine_sjnt_4" + "L_Arm_sjnt_0" + "L_Clavicle_sjnt_0" + "L_Arm_sjnt_1" + "L_Arm_sjnt_0" + "L_Wrist_sjnt_0" + "L_Arm_sjnt_1" + "R_Clavicle_sjnt_0" + "C_Spine_sjnt_4" + "R_Arm_sjnt_0" + "R_Clavicle_sjnt_0" + "R_Arm_sjnt_1" + "R_Arm_sjnt_0" + "R_Wrist_sjnt_0" + "R_Arm_sjnt_1" + "C_Neck_sjnt_0" + "C_Spine_sjnt_4" + "C_Neck_sjnt_1" + "C_Neck_sjnt_0" + "C_Neck_sjnt_2" + "C_Neck_sjnt_1" + "C_Head_sjnt_0" + "C_Neck_sjnt_2" + +declare StaticCompoundShapeSettings 2 + mUserData uint32 + mSubShapes array instance CompoundShapeSettings::SubShapeSettings + +declare CompoundShapeSettings::SubShapeSettings 4 + mShape instance ShapeSettings + mPosition vec3 + mRotation quat + mUserData uint32 + +object StaticCompoundShapeSettings 00000003 + 0 + 1 + 00000031 + 9.89999971e-05 -0.0391060002 1.80000006e-05 + 0.503439724 0.499906629 -0.498577178 0.498058915 + 0 + +declare GroupFilterTable 2 + mNumSubGroups uint32 + mTable array uint8 + +object GroupFilterTable 00000004 + 23 + 32 + 154 + 191 + 207 + 255 + 247 + 239 + 191 + 255 + 253 + 223 + 255 + 251 + 255 + 254 + 231 + 255 + 127 + 255 + 255 + 254 + 255 + 251 + 159 + 251 + 255 + 220 + 253 + 255 + 191 + 255 + 255 + 231 + +object StaticCompoundShapeSettings 00000005 + 0 + 1 + 00000032 + 0.00401599985 0.249686003 -0.0112770004 + 0.99988085 0.00937711447 0.000316537742 -0.0122607099 + 0 + +declare SwingTwistConstraintSettings 14 + mDrawConstraintSize float + mPosition1 vec3 + mTwistAxis1 vec3 + mPlaneAxis1 vec3 + mPosition2 vec3 + mTwistAxis2 vec3 + mPlaneAxis2 vec3 + mNormalHalfConeAngle float + mPlaneHalfConeAngle float + mTwistMinAngle float + mTwistMaxAngle float + mMaxFrictionTorque float + mSwingMotorSettings instance MotorSettings + mTwistMotorSettings instance MotorSettings + +declare MotorSettings 6 + mFrequency float + mDamping float + mMinForceLimit float + mMaxForceLimit float + mMinTorqueLimit float + mMaxTorqueLimit float + +object SwingTwistConstraintSettings 00000006 + 0.100000001 + 0.104854003 0.930898011 -0.0231149998 + 0.228872508 -0.936023414 -0.267353028 + -0.97338593 -0.216752678 -0.0744198412 + 0.104854003 0.930898011 -0.0231149998 + 0.0758192614 -0.996863306 -0.0227017533 + -0.995388806 -0.0743260905 -0.0606405661 + 0.785398006 + 0.595446467 + -0.578072011 + 0.578072011 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +object StaticCompoundShapeSettings 00000007 + 0 + 1 + 00000033 + -0.000671999995 0.193944007 0.00204199995 + 0.999895334 -0.000285029731 0.000180768882 0.0144680059 + 0 + +object SwingTwistConstraintSettings 00000008 + 0.100000001 + 0.126794919 0.469749451 -0.0343977995 + 0.0052347132 -0.518037319 0.85534209 + -0.999879241 -0.0152359791 -0.00310837477 + 0.126794994 0.469749004 -0.0343980007 + 0.0144062117 -0.995301723 0.095745571 + -0.99988842 -0.0147217829 -0.002590355 + 1.04719996 + 0.27414149 + -0.174532995 + 0.174532995 + 2.5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + +object StaticCompoundShapeSettings 00000009 + 0 + 1 + 00000034 + -0.000341000006 0.0795179978 0.00706599979 + 0.515692592 -3.67657522e-05 -0.000328265945 0.856773615 + 0 + +object SwingTwistConstraintSettings 0000000A + 0.100000001 + 0.145157948 0.0837986767 0.00278661028 + 0.0377257243 -0.542519033 -0.839195669 + -0.998523057 -0.0533199608 -0.0104182065 + 0.145157993 0.0837970003 0.00278700003 + 0.0118515138 -0.486690015 -0.873494208 + -0.9991166 -0.0409819633 0.00927796029 + 1.03831005 + 0.498153508 + -0.350461006 + 0.350461006 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +object StaticCompoundShapeSettings 0000000B + 0 + 1 + 00000035 + -0.00433799997 -0.249614999 0.0112300003 + 0.0122669889 -9.97621828e-05 0.00963442121 0.999878347 + 0 + +object SwingTwistConstraintSettings 0000000C + 0.100000001 + -0.104854003 0.930896997 -0.0231149998 + -0.276837289 -0.923905373 -0.264120668 + -0.960916519 0.266360998 0.0754395574 + -0.104854003 0.930896997 -0.0231149998 + -0.126640797 -0.991754949 -0.0196007676 + -0.990183711 0.125212267 0.0621150807 + 0.785398006 + 0.593013525 + -0.578072011 + 0.578072011 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +object StaticCompoundShapeSettings 0000000D + 0 + 1 + 00000036 + 0.000577999977 -0.193875998 -0.00208500004 + -0.014465007 3.40035476e-05 -2.30024016e-05 0.999895394 + 0 + +object SwingTwistConstraintSettings 0000000E + 0.100000001 + -0.126794875 0.46974951 -0.0343977734 + -0.00985482056 -0.517950952 0.855353653 + -0.999714077 0.0237438455 0.00285971398 + -0.126794994 0.469749004 -0.0343980007 + -0.0229026247 -0.995140314 0.0957655832 + -0.999727368 0.0232333038 0.00233921455 + 1.04719996 + 0.243131503 + -0.174532995 + 0.174532995 + 2.5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + +object StaticCompoundShapeSettings 0000000F + 0 + 1 + 00000037 + 0.00325600011 -0.0925799981 -0.0138490004 + 0.871728599 0 0 -0.489989072 + 0 + +object SwingTwistConstraintSettings 00000010 + 0.100000001 + -0.14515689 0.08379969 0.00278650969 + -0.0107628927 -0.543768108 -0.83916676 + -0.999097705 0.0403309204 -0.0133193471 + -0.145156994 0.0837979987 0.00278700003 + 0.0151939169 -0.487636805 -0.872914493 + -0.999063849 0.0279592033 -0.0330082364 + 1.03831005 + 0.476549506 + -0.313739002 + 0.313739002 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +object StaticCompoundShapeSettings 00000011 + 0 + 1 + 00000038 + -0 0.0190730002 0.00825699978 + 0.5 0.5 -0.5 0.5 + 0 + +object SwingTwistConstraintSettings 00000012 + 0.100000001 + 0 0.986563981 -0.0230349991 + 0.00122399244 0.999999285 1.79180237e-09 + -0.999999285 0.00122399244 -2.92779873e-06 + 0 0.986563981 -0.0230349991 + 0.00122399593 0.999996424 -0.00239199842 + -0.999999285 0.00122399244 -2.92779873e-06 + 0.516243994 + 0.418725014 + -0.443857014 + 0.443857014 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +object StaticCompoundShapeSettings 00000013 + 0 + 1 + 00000039 + -0 0.0677639991 0.0116400002 + 0.5 0.5 -0.5 0.5 + 0 + +object SwingTwistConstraintSettings 00000014 + 0.100000001 + 0 1.03556395 -0.0230349991 + -0.0170466602 0.999854624 -0.000102737526 + -0.999854624 -0.0170466602 0.000242655806 + 0 1.03556395 -0.0230349991 + -0.0170036666 0.99985534 -9.5737596e-05 + -0.99985534 -0.0170036666 0.000192655934 + 0.629583001 + 0.448353499 + -0.373118013 + 0.373118013 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +object StaticCompoundShapeSettings 00000015 + 0 + 1 + 0000003A + -0 0.124006003 0.0164899994 + 0.5 0.5 -0.5 0.5 + 0 + +object SwingTwistConstraintSettings 00000016 + 0.100000001 + 0 1.08456397 -0.0230349991 + 0.005554453 0.999984562 3.68993263e-08 + -0.999984562 0.005554453 -1.32862906e-05 + 0 1.08456397 -0.0230349991 + 0.00555446884 0.999981701 -0.00239196327 + -0.999984562 0.005554453 -1.32862906e-05 + 0.583182991 + 0.422738492 + -0.423810005 + 0.423810005 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +object StaticCompoundShapeSettings 00000017 + 0 + 1 + 0000003B + 0 0.100479998 -0.00150599994 + 0.5 0.5 -0.5 0.5 + 0 + +object SwingTwistConstraintSettings 00000018 + 0.100000001 + 0 1.18256402 -0.0230349991 + -0.00044950709 0.999999702 2.41660497e-10 + -0.999999702 -0.00044950709 1.07522419e-06 + 0 1.18256497 -0.0230349991 + -0.00044950837 0.999996841 -0.00239199959 + -0.999999702 -0.00044950709 1.07522419e-06 + 0.466737002 + 0.361206502 + -0.426357001 + 0.426357001 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +object StaticCompoundShapeSettings 00000019 + 0 + 1 + 0000003C + 0.02348 -0.103221998 0.0195889995 + -0.0207751915 0.785383642 -0.618652523 -0.00316055887 + 0 + +object SwingTwistConstraintSettings 0000001A + 0.100000001 + -0.00729800016 1.39142096 -0.0537109971 + -0.898493886 -0.109122984 0.425206929 + -0.414041013 -0.111203998 -0.903439999 + -0.00729899993 1.39142203 -0.0537119992 + -0.827898681 -0.1581029 0.538133204 + -0.54195267 -0.0216289852 -0.840130627 + 0.785398006 + 0.610864997 + -0.349065989 + 0.349065989 + 2.5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + +object StaticCompoundShapeSettings 0000001B + 0 + 1 + 0000003D + 0.00292499992 -0.120290004 0.00187000004 + 0.999328971 0.0345016569 -0.000774269341 -0.0122714825 + 0 + +object SwingTwistConstraintSettings 0000001C + 0.100000001 + -0.154913723 1.35279238 0.0128222816 + -0.819559813 -0.545983851 0.173848867 + -0.209418848 0.00299960375 -0.97782141 + -0.154914007 1.35279202 0.0128229996 + -0.712775946 -0.698031902 0.0685697496 + -0.0496755503 -0.0472769961 -0.997645676 + 1.11110997 + 0.890465975 + -1.37300003 + 1.37300003 + 2.5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + +object StaticCompoundShapeSettings 0000001D + 0 + 1 + 0000003E + 0.005382 -0.131909996 0.00233300007 + 0.0106607033 -0.000188512466 0.00426478311 0.999934077 + 0 + +object SwingTwistConstraintSettings 0000001E + 0.100000001 + -0.341012955 1.17055202 0.00372701138 + -0.18491815 -0.181086376 -0.965925932 + 0.700336695 -0.71381259 -0.000252231723 + -0.341015011 1.17054999 0.00372699997 + -0.656364143 -0.642424464 -0.395571738 + 0.69514966 -0.718732536 0.0138015067 + 1.15708005 + 0.436331987 + -0.392699003 + 0.392699003 + 2.5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + +object StaticCompoundShapeSettings 0000001F + 0 + 1 + 0000003F + 0.0277379993 -0.0670339987 0 + 0 0 0.117515303 0.993071079 + 0 + +object SwingTwistConstraintSettings 00000020 + 0.100000001 + -0.499991 1.01485944 -0.0920999721 + -0.656863928 -0.64203316 -0.395376891 + 0.446287364 0.0916005597 -0.890189111 + -0.499992013 1.01485896 -0.0921010002 + -0.656693518 -0.642100096 -0.395551473 + 0.453417242 0.0829586834 -0.887429178 + 1.09455001 + 0.659080029 + -0.920177996 + 0.920177996 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +object StaticCompoundShapeSettings 00000021 + 0 + 1 + 00000040 + -0.0250979997 0.100487001 -0.0217920002 + -0.0207751915 0.785383642 -0.618652523 -0.00316055887 + 0 + +object SwingTwistConstraintSettings 00000022 + 0.100000001 + 0.00729800016 1.39142096 -0.0537109971 + 0.887680888 -0.181781992 0.423057944 + -0.414462924 0.0848429799 0.906102777 + 0.00729899993 1.39142203 -0.0537119992 + 0.82955873 -0.159525871 0.535148382 + -0.536151767 0.0403930396 0.84315455 + 0.785398006 + 0.610864997 + -0.349065989 + 0.349065989 + 2.5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + +object StaticCompoundShapeSettings 00000023 + 0 + 1 + 00000041 + -0.00255899993 0.120980002 -0.001666 + 0.0125852004 0.00044055449 0.0349786803 0.999308705 + 0 + +object SwingTwistConstraintSettings 00000024 + 0.100000001 + 0.154913425 1.3527894 0.0128220581 + 0.917809129 -0.357491851 -0.172701865 + 0.107674032 -0.194559038 0.97496295 + 0.154914007 1.35279 0.0128229996 + 0.707821548 -0.692629874 -0.13875258 + 0.0966861993 -0.0995812863 0.990320802 + 1.11110997 + 0.890465975 + -1.37300003 + 1.37300003 + 2.5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + +object StaticCompoundShapeSettings 00000025 + 0 + 1 + 00000042 + -0.00529700005 0.132655993 -0.00221200008 + 0.999927938 0.00482584862 0.000318023056 -0.0109857954 + 0 + +object SwingTwistConstraintSettings 00000026 + 0.100000001 + 0.341013938 1.1705482 0.00372693874 + 0.118063569 -0.186914414 -0.975255847 + 0.705077827 0.707349956 -0.0502125323 + 0.341015011 1.17054605 0.00372699997 + 0.656227231 -0.64257741 -0.395550787 + 0.668211818 0.738391399 -0.0909467712 + 1.14461005 + 0.436331987 + -0.392699003 + 0.392699003 + 2.5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -500 + 500 + +object StaticCompoundShapeSettings 00000027 + 0 + 1 + 00000043 + -0.0236859992 0.0719750002 -0.00162500003 + 0.993005037 0.118071899 0.000114551302 -0.00034189166 + 0 + +object SwingTwistConstraintSettings 00000028 + 0.100000001 + 0.499991298 1.0148654 -0.0921003968 + 0.65732044 -0.642059684 -0.394574851 + 0.445664227 -0.0910333097 0.890559733 + 0.499992996 1.01486397 -0.0921010002 + 0.657148719 -0.64212811 -0.394749463 + 0.45279476 -0.0823907033 0.887799919 + 1.09455001 + 0.659080029 + -0.920177996 + 0.920177996 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +object StaticCompoundShapeSettings 00000029 + 0 + 1 + 00000044 + 0 0.0190360006 0.00591100007 + -0.823387563 0 0 0.567479491 + 0 + +object SwingTwistConstraintSettings 0000002A + 0.100000001 + 0 1.38891292 0.0150830019 + -0.0614751019 0.93085885 -0.360169828 + -0.998099923 -0.0558407158 0.0260390211 + 0 1.38891399 0.0150830001 + -0.0616134368 0.904585302 -0.42181617 + -0.998099923 -0.0558407158 0.0260390211 + 0.602330983 + 0.47467351 + -0.5 + 0.5 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +object StaticCompoundShapeSettings 0000002B + 0 + 2 + 00000045 + -0.0285969991 0.0289249998 -0.00178199995 + 0.76383245 0 0 0.645414591 + 0 + 00000046 + 0.0288059991 0.028926 -0.00178199995 + 0.76383245 0 0 0.645414591 + 0 + +object SwingTwistConstraintSettings 0000002C + 0.100000001 + 0 1.43785453 -0.00773843564 + -0.0748678446 0.997159719 0.00818838924 + -0.997193158 -0.0748703554 0 + 0 1.43785501 -0.00773900002 + -0.0748703554 0.997193158 0 + -0.997193158 -0.0748703554 0 + 0.524141014 + 0.421988487 + -0.501203001 + 0.501203001 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +object StaticCompoundShapeSettings 0000002D + 0 + 2 + 00000047 + -0.0221040007 0.0260649994 0.0262419991 + -0.600778699 0 0 0.79941541 + 0 + 00000048 + 0.0236319993 0.0260649994 0.0262419991 + -0.600778699 0 0 0.79941541 + 0 + +object SwingTwistConstraintSettings 0000002E + 0.100000001 + 0 1.49185503 -0.00773900002 + 0.0192970913 0.999753535 -0.0109725529 + -0.999813676 0.0192977451 -4.61603486e-05 + 0 1.49185598 -0.00773900002 + 0.019297801 0.999810815 -0.00239155442 + -0.999813676 0.0192977451 -4.61603486e-05 + 0.601015985 + 0.499635011 + -0.408565998 + 0.408565998 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +object StaticCompoundShapeSettings 0000002F + 0 + 1 + 00000049 + -0 0.0480049998 0.0185359996 + 0.89858973 0 0 0.438789845 + 0 + +object SwingTwistConstraintSettings 00000030 + 0.100000001 + 0 1.545856 -0.00773900002 + -0.0299134608 0.958364487 -0.283977121 + -0.999513268 -0.031197831 0 + 0 1.545856 -0.00773900002 + -0.040179193 0.999192536 0 + -0.999192536 -0.040179193 0 + 0.793327987 + 0.66770196 + -0.5 + 0.5 + 5 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + 20 + 2 + -3.40282347e+38 + 3.40282347e+38 + -1000 + 1000 + +declare CapsuleShapeSettings 5 + mUserData uint32 + mDensity float + mMaterial instance PhysicsMaterial + mRadius float + mHalfHeightOfCylinder float + +declare PhysicsMaterial 0 + +object CapsuleShapeSettings 00000031 + 0 + 1000 + 00000000 + 0.105885997 + 0.0730924979 + +declare TaperedCapsuleShapeSettings 6 + mUserData uint32 + mDensity float + mMaterial instance PhysicsMaterial + mHalfHeightOfTaperedCylinder float + mTopRadius float + mBottomRadius float + +object TaperedCapsuleShapeSettings 00000032 + 0 + 1000 + 00000000 + 0.146803498 + 0.0799999982 + 0.0599999987 + +object TaperedCapsuleShapeSettings 00000033 + 0 + 1000 + 00000000 + 0.161571503 + 0.0599999987 + 0.0399999991 + +declare BoxShapeSettings 5 + mUserData uint32 + mDensity float + mMaterial instance PhysicsMaterial + mHalfExtent vec3 + mConvexRadius float + +object BoxShapeSettings 00000034 + 0 + 1000 + 00000000 + 0.0444360003 0.0361290015 0.112469502 + 0.00361290015 + +object TaperedCapsuleShapeSettings 00000035 + 0 + 1000 + 00000000 + 0.146895498 + 0.0799999982 + 0.0599999987 + +object TaperedCapsuleShapeSettings 00000036 + 0 + 1000 + 00000000 + 0.161571503 + 0.0599999987 + 0.0399999991 + +object BoxShapeSettings 00000037 + 0 + 1000 + 00000000 + 0.0444360003 0.0361290015 0.112469502 + 0.00361290015 + +object CapsuleShapeSettings 00000038 + 0 + 1000 + 00000000 + 0.0688254014 + 0.0751734972 + +object CapsuleShapeSettings 00000039 + 0 + 1000 + 00000000 + 0.0601567999 + 0.0696785003 + +object CapsuleShapeSettings 0000003A + 0 + 1000 + 00000000 + 0.0976348966 + 0.0449381992 + +object CapsuleShapeSettings 0000003B + 0 + 1000 + 00000000 + 0.0970778018 + 0.0229662005 + +object CapsuleShapeSettings 0000003C + 0 + 1000 + 00000000 + 0.0527785011 + 0.0154518504 + +object TaperedCapsuleShapeSettings 0000003D + 0 + 1000 + 00000000 + 0.117732003 + 0.0455139019 + 0.0500000007 + +object TaperedCapsuleShapeSettings 0000003E + 0 + 1000 + 00000000 + 0.108483002 + 0.0399999991 + 0.0295928996 + +object CapsuleShapeSettings 0000003F + 0 + 1000 + 00000000 + 0.0302533992 + 0.0436993986 + +object CapsuleShapeSettings 00000040 + 0 + 1000 + 00000000 + 0.0527775995 + 0.0154472999 + +object TaperedCapsuleShapeSettings 00000041 + 0 + 1000 + 00000000 + 0.117731497 + 0.0455139019 + 0.0500000007 + +object TaperedCapsuleShapeSettings 00000042 + 0 + 1000 + 00000000 + 0.108475499 + 0.0399999991 + 0.0295928996 + +object CapsuleShapeSettings 00000043 + 0 + 1000 + 00000000 + 0.0302533992 + 0.0436993986 + +object CapsuleShapeSettings 00000044 + 0 + 1000 + 00000000 + 0.0548548996 + 0.0267487504 + +object CapsuleShapeSettings 00000045 + 0 + 1000 + 00000000 + 0.0304937996 + 0.0251529999 + +object CapsuleShapeSettings 00000046 + 0 + 1000 + 00000000 + 0.0304937996 + 0.0251529999 + +object CapsuleShapeSettings 00000047 + 0 + 1000 + 00000000 + 0.0268144999 + 0.0475768 + +object CapsuleShapeSettings 00000048 + 0 + 1000 + 00000000 + 0.0268144999 + 0.0475768 + +object CapsuleShapeSettings 00000049 + 0 + 1000 + 00000000 + 0.0832396001 + 0.0183336493 \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Human/dead_pose1.tof b/Engine/lib/JoltPhysics/Assets/Human/dead_pose1.tof new file mode 100644 index 000000000..902afecc6 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Human/dead_pose1.tof @@ -0,0 +1,131 @@ +TOS 1.00 + +declare SkeletalAnimation 1 + mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint + +declare SkeletalAnimation::AnimatedJoint 2 + mJointName string + mKeyframes array instance SkeletalAnimation::Keyframe + +declare SkeletalAnimation::Keyframe 3 + mRotation quat + mTranslation vec3 + mTime float + +object SkeletalAnimation 00000001 + 23 + "hipsBone" + 1 + -0.580907 0.662465 0.472926 -0.005293 + -0.511629 0.123338 0.102563 + 0.000000 + "R_Leg_sjnt_0" + 1 + 0.994683 0.029515 -0.098649 -0.001901 + -0.104854 -0.000224 0.000080 + 0.000000 + "R_Leg_sjnt_1" + 1 + 0.558236 0.082819 0.102170 0.819191 + -0.000000 0.461809 0.000000 + 0.000000 + "R_Foot_sjnt_0" + 1 + -0.415795 -0.025903 -0.285547 0.863080 + 0.000000 0.388174 0.000000 + 0.000000 + "L_Leg_sjnt_0" + 1 + -0.096847 0.200302 0.053881 0.973446 + 0.104854 -0.000225 0.000080 + 0.000000 + "L_Leg_sjnt_1" + 1 + 0.625317 0.040626 -0.068376 0.776307 + 0.000000 -0.461808 0.000000 + 0.000000 + "L_Foot_sjnt_0" + 1 + 0.448028 0.016552 0.068711 -0.891222 + -0.000001 -0.388173 -0.000000 + 0.000000 + "C_Spine_sjnt_0" + 1 + 0.031433 -0.000518 -0.001091 0.999505 + -0.000000 0.055442 -0.000000 + 0.000000 + "C_Spine_sjnt_1" + 1 + 0.062272 0.003369 -0.006740 0.998031 + -0.000000 0.049000 0.000000 + 0.000000 + "C_Spine_sjnt_2" + 1 + 0.093196 0.002904 -0.011009 0.995583 + 0.000000 0.049000 -0.000000 + 0.000000 + "C_Spine_sjnt_4" + 1 + 0.092643 0.004648 -0.011669 0.995620 + 0.000000 0.098001 0.000000 + 0.000000 + "L_Clavicle_sjnt_0" + 1 + 0.856473 -0.498143 0.097625 0.093688 + 0.007299 0.208857 0.030677 + 0.000000 + "L_Arm_sjnt_0" + 1 + 0.051326 0.583453 0.540585 0.603918 + 0.070455 -0.150703 0.005819 + 0.000000 + "L_Arm_sjnt_1" + 1 + 0.749181 -0.055037 -0.190752 0.631912 + -0.000001 -0.260631 0.000000 + 0.000000 + "L_Wrist_sjnt_0" + 1 + 0.000688 -0.106898 0.049180 -0.993053 + 0.000007 -0.242273 0.000003 + 0.000000 + "R_Clavicle_sjnt_0" + 1 + -0.076883 -0.107965 0.509223 0.850367 + -0.007299 0.208857 0.030677 + 0.000000 + "R_Arm_sjnt_0" + 1 + 0.622778 -0.313061 0.547977 0.462453 + -0.070458 0.150703 -0.005820 + 0.000000 + "R_Arm_sjnt_1" + 1 + 0.570264 -0.066970 -0.307114 0.758944 + -0.000001 0.260632 -0.000000 + 0.000000 + "R_Wrist_sjnt_0" + 1 + -0.107633 -0.182094 -0.068157 -0.974993 + 0.000000 0.242268 -0.000000 + 0.000000 + "C_Neck_sjnt_0" + 1 + 0.148132 0.042497 -0.052729 0.986646 + 0.000000 0.206349 -0.038118 + 0.000000 + "C_Neck_sjnt_1" + 1 + -0.272572 0.021316 -0.048793 0.960661 + -0.000000 0.054000 0.000000 + 0.000000 + "C_Neck_sjnt_2" + 1 + -0.054183 -0.008292 -0.029041 0.998074 + 0.000000 0.054001 0.000000 + 0.000000 + "C_Head_sjnt_0" + 1 + 0.029305 0.088480 -0.137100 0.986162 + 0.000000 0.054000 -0.000000 + 0.000000 \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Human/dead_pose2.tof b/Engine/lib/JoltPhysics/Assets/Human/dead_pose2.tof new file mode 100644 index 000000000..2ee5413bc --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Human/dead_pose2.tof @@ -0,0 +1,131 @@ +TOS 1.00 + +declare SkeletalAnimation 1 + mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint + +declare SkeletalAnimation::AnimatedJoint 2 + mJointName string + mKeyframes array instance SkeletalAnimation::Keyframe + +declare SkeletalAnimation::Keyframe 3 + mRotation quat + mTranslation vec3 + mTime float + +object SkeletalAnimation 00000001 + 23 + "hipsBone" + 1 + 0.580969 0.662434 0.472893 0.005230 + 0.778002 0.123338 0.121363 + 0.000000 + "R_Leg_sjnt_0" + 1 + -0.979544 0.029720 -0.196361 -0.032433 + -0.104854 -0.000224 0.000080 + 0.000000 + "R_Leg_sjnt_1" + 1 + 0.607629 0.107933 -0.014707 0.786715 + -0.000000 0.461809 0.000000 + 0.000000 + "R_Foot_sjnt_0" + 1 + -0.601232 0.033798 -0.038697 0.797421 + 0.000000 0.388174 0.000000 + 0.000000 + "L_Leg_sjnt_0" + 1 + 0.047909 -0.102469 -0.016701 0.993441 + 0.104854 -0.000225 0.000080 + 0.000000 + "L_Leg_sjnt_1" + 1 + -0.491497 -0.068754 -0.078845 -0.864573 + 0.000000 -0.461808 0.000000 + 0.000000 + "L_Foot_sjnt_0" + 1 + 0.390997 -0.045090 0.421830 -0.816791 + -0.000001 -0.388173 -0.000000 + 0.000000 + "C_Spine_sjnt_0" + 1 + 0.031433 0.000503 0.001038 0.999505 + -0.000000 0.055442 0.000000 + 0.000000 + "C_Spine_sjnt_1" + 1 + 0.062272 -0.003358 0.006714 0.998031 + -0.000000 0.049000 0.000000 + 0.000000 + "C_Spine_sjnt_2" + 1 + 0.093197 -0.002900 0.010957 0.995583 + 0.000000 0.049000 -0.000000 + 0.000000 + "C_Spine_sjnt_4" + 1 + -0.092643 0.004635 -0.011603 -0.995621 + 0.000000 0.098001 -0.000000 + 0.000000 + "L_Clavicle_sjnt_0" + 1 + -0.850361 0.509199 0.108046 -0.077000 + 0.007299 0.208857 0.030677 + 0.000000 + "L_Arm_sjnt_0" + 1 + 0.622797 -0.313095 0.547896 0.462500 + 0.070455 -0.150703 0.005820 + 0.000000 + "L_Arm_sjnt_1" + 1 + -0.570276 0.066909 0.307092 -0.758948 + -0.000001 -0.260631 -0.000000 + 0.000000 + "L_Wrist_sjnt_0" + 1 + 0.107622 0.182086 0.068178 0.974994 + 0.000007 -0.242273 0.000002 + 0.000000 + "R_Clavicle_sjnt_0" + 1 + -0.093524 0.097713 0.498124 0.856492 + -0.007299 0.208857 0.030677 + 0.000000 + "R_Arm_sjnt_0" + 1 + 0.051326 0.583528 0.540453 0.603963 + -0.070458 0.150703 -0.005820 + 0.000000 + "R_Arm_sjnt_1" + 1 + -0.749170 0.055080 0.190723 -0.631930 + -0.000001 0.260632 0.000000 + 0.000000 + "R_Wrist_sjnt_0" + 1 + -0.000687 0.106883 -0.049184 0.993054 + 0.000000 0.242268 -0.000000 + 0.000000 + "C_Neck_sjnt_0" + 1 + 0.148136 -0.042494 0.052637 0.986651 + -0.000000 0.206349 -0.038118 + 0.000000 + "C_Neck_sjnt_1" + 1 + -0.272569 -0.021317 0.048735 0.960665 + 0.000000 0.054001 0.000000 + 0.000000 + "C_Neck_sjnt_2" + 1 + -0.054186 0.008273 0.028994 0.998076 + 0.000000 0.054001 0.000000 + 0.000000 + "C_Head_sjnt_0" + 1 + 0.029319 -0.088467 0.137075 0.986167 + 0.000000 0.054000 -0.000000 + 0.000000 \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Human/dead_pose3.tof b/Engine/lib/JoltPhysics/Assets/Human/dead_pose3.tof new file mode 100644 index 000000000..3e67b3c45 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Human/dead_pose3.tof @@ -0,0 +1,131 @@ +TOS 1.00 + +declare SkeletalAnimation 1 + mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint + +declare SkeletalAnimation::AnimatedJoint 2 + mJointName string + mKeyframes array instance SkeletalAnimation::Keyframe + +declare SkeletalAnimation::Keyframe 3 + mRotation quat + mTranslation vec3 + mTime float + +object SkeletalAnimation 00000001 + 23 + "hipsBone" + 1 + -0.253414 0.715602 -0.639670 0.120488 + -0.113085 0.196785 -0.745374 + 0.000000 + "R_Leg_sjnt_0" + 1 + -0.940855 0.027320 -0.183670 -0.283391 + -0.104854 -0.000224 0.000080 + 0.000000 + "R_Leg_sjnt_1" + 1 + 0.732582 0.147108 -0.159629 0.645136 + 0.000000 0.461808 0.000000 + 0.000000 + "R_Foot_sjnt_0" + 1 + -0.543008 -0.043463 0.072346 0.835476 + 0.000000 0.388174 0.000000 + 0.000000 + "L_Leg_sjnt_0" + 1 + 0.068071 -0.118484 0.183975 0.973386 + 0.104854 -0.000225 0.000080 + 0.000000 + "L_Leg_sjnt_1" + 1 + 0.258573 0.111198 0.041401 0.958677 + 0.000000 -0.461808 0.000000 + 0.000000 + "L_Foot_sjnt_0" + 1 + -0.388386 -0.112771 -0.101140 0.908961 + -0.000001 -0.388173 -0.000000 + 0.000000 + "C_Spine_sjnt_0" + 1 + 0.055573 0.116937 0.111430 0.985302 + 0.000000 0.055442 0.000000 + 0.000000 + "C_Spine_sjnt_1" + 1 + 0.037873 -0.006875 0.039870 0.998463 + 0.000000 0.049000 0.000000 + 0.000000 + "C_Spine_sjnt_2" + 1 + 0.057513 -0.003345 0.060246 0.996520 + -0.000000 0.049000 -0.000000 + 0.000000 + "C_Spine_sjnt_4" + 1 + 0.058450 0.004523 0.059058 0.996532 + 0.000000 0.098001 0.000000 + 0.000000 + "L_Clavicle_sjnt_0" + 1 + -0.788890 0.552170 0.262911 0.060331 + 0.007299 0.208857 0.030677 + 0.000000 + "L_Arm_sjnt_0" + 1 + -0.242065 -0.166972 -0.682243 -0.669381 + 0.070455 -0.150703 0.005819 + 0.000000 + "L_Arm_sjnt_1" + 1 + 0.293529 -0.405618 0.091549 0.860775 + -0.000001 -0.260631 0.000000 + 0.000000 + "L_Wrist_sjnt_0" + 1 + -0.018010 -0.348798 0.050741 0.935650 + 0.000007 -0.242273 0.000002 + 0.000000 + "R_Clavicle_sjnt_0" + 1 + 0.006775 0.017839 0.047960 0.998667 + -0.007299 0.208857 0.030677 + 0.000000 + "R_Arm_sjnt_0" + 1 + -0.057684 0.616002 0.098229 0.779464 + -0.070458 0.150703 -0.005820 + 0.000000 + "R_Arm_sjnt_1" + 1 + 0.360633 -0.148932 -0.172766 0.904387 + -0.000001 0.260632 -0.000000 + 0.000000 + "R_Wrist_sjnt_0" + 1 + -0.073581 -0.376053 0.364024 -0.848915 + 0.000000 0.242268 -0.000000 + 0.000000 + "C_Neck_sjnt_0" + 1 + 0.208406 0.070974 -0.020180 0.975255 + -0.000000 0.206349 -0.038118 + 0.000000 + "C_Neck_sjnt_1" + 1 + -0.214167 0.070851 -0.015228 0.974105 + -0.000000 0.054000 0.000000 + 0.000000 + "C_Neck_sjnt_2" + 1 + 0.013069 0.069734 0.004440 0.997470 + 0.000000 0.054001 0.000000 + 0.000000 + "C_Head_sjnt_0" + 1 + -0.011944 -0.296295 0.045126 0.953955 + 0.000000 0.054000 0.000000 + 0.000000 \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Human/dead_pose4.tof b/Engine/lib/JoltPhysics/Assets/Human/dead_pose4.tof new file mode 100644 index 000000000..58133b1ef --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Human/dead_pose4.tof @@ -0,0 +1,131 @@ +TOS 1.00 + +declare SkeletalAnimation 1 + mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint + +declare SkeletalAnimation::AnimatedJoint 2 + mJointName string + mKeyframes array instance SkeletalAnimation::Keyframe + +declare SkeletalAnimation::Keyframe 3 + mRotation quat + mTranslation vec3 + mTime float + +object SkeletalAnimation 00000001 + 23 + "hipsBone" + 1 + -0.006100 0.596243 0.801570 0.044078 + 0.158819 0.119626 0.352148 + 0.000000 + "R_Leg_sjnt_0" + 1 + 0.987181 -0.088292 0.091403 0.096563 + -0.104854 -0.000224 0.000080 + 0.000000 + "R_Leg_sjnt_1" + 1 + 0.518738 0.091591 -0.028278 0.849542 + -0.000000 0.461809 -0.000000 + 0.000000 + "R_Foot_sjnt_0" + 1 + -0.446222 -0.027605 0.081585 0.890768 + 0.000000 0.388174 0.000000 + 0.000000 + "L_Leg_sjnt_0" + 1 + -0.004252 0.099688 0.099358 0.990036 + 0.104854 -0.000225 0.000080 + 0.000000 + "L_Leg_sjnt_1" + 1 + 0.332849 0.214890 0.078034 0.914847 + 0.000000 -0.461808 0.000000 + 0.000000 + "L_Foot_sjnt_0" + 1 + -0.353947 -0.242590 0.059009 0.901326 + -0.000001 -0.388173 -0.000000 + 0.000000 + "C_Spine_sjnt_0" + 1 + 0.040410 -0.000191 -0.035615 0.998548 + 0.000000 0.055442 -0.000000 + 0.000000 + "C_Spine_sjnt_1" + 1 + 0.078135 -0.005104 -0.037889 0.996210 + 0.000000 0.049000 0.000000 + 0.000000 + "C_Spine_sjnt_2" + 1 + 0.117588 0.001930 -0.056543 0.991450 + -0.000000 0.049000 0.000000 + 0.000000 + "C_Spine_sjnt_4" + 1 + 0.116613 0.022537 -0.060157 0.991098 + 0.000000 0.098001 -0.000000 + 0.000000 + "L_Clavicle_sjnt_0" + 1 + 0.820798 -0.461866 -0.218872 0.255080 + 0.007299 0.208857 0.030677 + 0.000000 + "L_Arm_sjnt_0" + 1 + -0.018640 0.550280 0.313113 0.773825 + 0.070455 -0.150703 0.005819 + 0.000000 + "L_Arm_sjnt_1" + 1 + 0.502820 -0.083351 -0.423467 0.748933 + -0.000001 -0.260631 0.000000 + 0.000000 + "L_Wrist_sjnt_0" + 1 + -0.127266 -0.436122 0.115708 -0.883296 + 0.000007 -0.242273 0.000002 + 0.000000 + "R_Clavicle_sjnt_0" + 1 + -0.254409 -0.049344 0.561585 0.785789 + -0.007299 0.208857 0.030677 + 0.000000 + "R_Arm_sjnt_0" + 1 + -0.297704 0.588370 -0.433881 -0.613954 + -0.070457 0.150703 -0.005820 + 0.000000 + "R_Arm_sjnt_1" + 1 + 0.300035 -0.109892 -0.134453 0.937990 + -0.000001 0.260632 -0.000000 + 0.000000 + "R_Wrist_sjnt_0" + 1 + -0.074182 0.083861 -0.170265 0.979017 + 0.000000 0.242268 -0.000000 + 0.000000 + "C_Neck_sjnt_0" + 1 + 0.095959 0.024101 0.021582 0.994859 + 0.000000 0.206349 -0.038118 + 0.000000 + "C_Neck_sjnt_1" + 1 + -0.330366 0.030108 0.013511 0.943276 + 0.000000 0.054001 0.000000 + 0.000000 + "C_Neck_sjnt_2" + 1 + -0.116595 0.020825 0.025026 0.992646 + 0.000000 0.054001 0.000000 + 0.000000 + "C_Head_sjnt_0" + 1 + -0.225003 0.005643 -0.043020 0.973392 + -0.000000 0.054000 0.000000 + 0.000000 \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Human/jog_hd.tof b/Engine/lib/JoltPhysics/Assets/Human/jog_hd.tof new file mode 100644 index 000000000..a271b7e79 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Human/jog_hd.tof @@ -0,0 +1,12514 @@ +TOS 1.00 + +declare SkeletalAnimation 2 + mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint + mIsLooping bool + +declare SkeletalAnimation::AnimatedJoint 2 + mJointName string + mKeyframes array instance SkeletalAnimation::Keyframe + +declare SkeletalAnimation::Keyframe 3 + mRotation quat + mTranslation vec3 + mTime float + +object SkeletalAnimation 00000001 + 71 + "rootBone" + 58 + 0.707106829 -3.09086197e-08 3.09086303e-08 -0.707106769 + 2.71050537e-22 -3.55271368e-15 -5.24520907e-08 + 0 + 0.707106829 -3.0910126e-08 3.09164143e-08 -0.707106769 + 2.83585709e-13 0 -0.136665851 + 0.0333333351 + 0.707106829 -3.09145278e-08 3.09392227e-08 -0.707106769 + 1.11014821e-12 -1.49011612e-08 -0.273331702 + 0.0666666701 + 0.707106829 -3.09216723e-08 3.097621e-08 -0.707106769 + 2.45021711e-12 -2.98023224e-08 -0.409997493 + 0.100000001 + 0.707106829 -3.09313961e-08 3.10265484e-08 -0.707106769 + 4.2765947e-12 -2.98023224e-08 -0.546663284 + 0.13333334 + 0.707106829 -3.09435322e-08 3.10894031e-08 -0.707106769 + 6.5524218e-12 2.98023224e-08 -0.683329105 + 0.166666672 + 0.707106829 -3.09579278e-08 3.11639354e-08 -0.707106769 + 9.2510704e-12 -5.96046448e-08 -0.819994807 + 0.200000003 + 0.707106829 -3.09744159e-08 3.12493142e-08 -0.707106769 + 1.23504575e-11 0 -0.956660628 + 0.233333334 + 0.707106829 -3.09928438e-08 3.13447082e-08 -0.707106769 + 1.58034939e-11 -5.96046448e-08 -1.09332645 + 0.266666681 + 0.707106829 -3.10130375e-08 3.14492787e-08 -0.707106769 + 1.9588095e-11 -5.96046448e-08 -1.22999215 + 0.300000012 + 0.707106829 -3.1034844e-08 3.15621911e-08 -0.707106769 + 2.36799087e-11 -1.78813934e-07 -1.36665797 + 0.333333343 + 0.707106829 -3.10581001e-08 3.16826139e-08 -0.707106769 + 2.80409359e-11 -5.96046448e-08 -1.50332403 + 0.366666675 + 0.707106829 -3.10826458e-08 3.18097086e-08 -0.707106769 + 3.26468227e-11 -1.1920929e-07 -1.63998961 + 0.400000006 + 0.707106829 -3.11083248e-08 3.19426476e-08 -0.707106769 + 3.74595736e-11 0 -1.77665544 + 0.433333337 + 0.707106829 -3.11349631e-08 3.20805889e-08 -0.707106769 + 4.24684732e-11 0 -1.91332102 + 0.466666669 + 0.707106829 -3.11624113e-08 3.22227081e-08 -0.707106769 + 4.76082437e-11 -2.38418579e-07 -2.04998708 + 0.5 + 0.707106829 -3.11905026e-08 3.23681597e-08 -0.707106769 + 5.28727201e-11 0 -2.18665314 + 0.533333361 + 0.707106829 -3.12190807e-08 3.2516116e-08 -0.707106769 + 5.82375398e-11 0 -2.32331848 + 0.566666722 + 0.707106829 -3.12479678e-08 3.26657386e-08 -0.707106769 + 6.36510844e-11 -1.1920929e-07 -2.4599843 + 0.600000083 + 0.707106829 -3.1277029e-08 3.2816196e-08 -0.707106769 + 6.91071506e-11 -2.38418579e-07 -2.59665036 + 0.633333445 + 0.707106829 -3.12852499e-08 3.28587504e-08 -0.707106769 + -1.70174047e-07 1.1920929e-07 -2.73334837 + 0.666666806 + 0.707106829 -3.12907282e-08 3.28871153e-08 -0.707106769 + 2.04234425e-07 1.1920929e-07 -2.87004423 + 0.700000167 + 0.707106829 -3.12937907e-08 3.29029675e-08 -0.707106769 + 7.22309296e-11 -1.1920929e-07 -3.00674248 + 0.733333528 + 0.707106829 -3.1294757e-08 3.29079732e-08 -0.707106769 + 1.36477695e-07 -2.38418579e-07 -3.14343929 + 0.766666889 + 0.707106829 -3.12939505e-08 3.29038023e-08 -0.707106769 + 7.22914645e-11 0 -3.28013635 + 0.80000025 + 0.707106829 -3.1291691e-08 3.2892121e-08 -0.707106769 + 7.18685597e-11 -3.57627869e-07 -3.41683388 + 0.833333611 + 0.707106829 -3.12883124e-08 3.28746026e-08 -0.707106769 + -1.36723202e-07 -3.57627869e-07 -3.55353165 + 0.866666973 + 0.707106829 -3.12841202e-08 3.28529097e-08 -0.707106769 + 7.04506314e-11 0 -3.69022846 + 0.900000334 + 0.707106829 -3.12794484e-08 3.28287122e-08 -0.707106769 + 6.95621893e-11 -3.57627869e-07 -3.82692528 + 0.933333695 + 0.707106829 -3.12746131e-08 3.28036798e-08 -0.707106769 + 6.86864871e-11 0 -3.96362257 + 0.966667056 + 0.707106829 -3.12699413e-08 3.27794822e-08 -0.707106769 + 6.77979964e-11 -2.38418579e-07 -4.10032034 + 1.00000036 + 0.707106829 -3.12657491e-08 3.27577929e-08 -0.707106769 + -1.36299889e-07 -2.38418579e-07 -4.23701811 + 1.03333366 + 0.707106829 -3.12623669e-08 3.27402709e-08 -0.707106769 + 1.36239436e-07 0 -4.37371349 + 1.06666696 + 0.707106829 -3.12601109e-08 3.27285896e-08 -0.707106769 + -1.35906475e-07 -2.38418579e-07 -4.51041222 + 1.10000026 + 0.707106829 -3.1259308e-08 3.27244187e-08 -0.707106769 + 6.57916499e-11 -2.38418579e-07 -4.64710903 + 1.13333356 + 0.707106829 -3.12602744e-08 3.27294245e-08 -0.707106769 + 6.80340122e-08 0 -4.78380537 + 1.16666687 + 0.707106829 -3.12633333e-08 3.27452803e-08 -0.707106769 + 1.021358e-07 -2.38418579e-07 -4.92050266 + 1.20000017 + 0.707106829 -3.12688151e-08 3.27736451e-08 -0.707106769 + -5.102671e-08 -2.38418579e-07 -5.05720043 + 1.23333347 + 0.707106829 -3.1277029e-08 3.2816196e-08 -0.707106769 + 6.91253443e-11 2.38418579e-07 -5.1938982 + 1.26666677 + 0.707106829 -3.13060866e-08 3.2966657e-08 -0.707106769 + 7.45723275e-11 2.38418579e-07 -5.33056355 + 1.30000007 + 0.707106829 -3.13349879e-08 3.31162795e-08 -0.707106769 + 7.99949412e-11 2.38418579e-07 -5.46722984 + 1.33333337 + 0.707106829 -3.13635589e-08 3.32642358e-08 -0.707106769 + 8.5350664e-11 2.38418579e-07 -5.60389519 + 1.36666667 + 0.707106829 -3.13916502e-08 3.34096875e-08 -0.707106769 + 9.06151543e-11 -4.76837158e-07 -5.74056101 + 1.39999998 + 0.707106829 -3.14190984e-08 3.35518031e-08 -0.707106769 + 9.57458279e-11 -2.38418579e-07 -5.87722683 + 1.43333328 + 0.707106829 -3.14457367e-08 3.36897443e-08 -0.707106769 + 1.00754724e-10 -4.76837158e-07 -6.01389313 + 1.46666658 + 0.707106829 -3.14714121e-08 3.38226798e-08 -0.707106769 + 1.0556292e-10 -2.38418579e-07 -6.15055943 + 1.49999988 + 0.707106829 -3.14959578e-08 3.39497781e-08 -0.707106769 + 1.10164267e-10 -4.76837158e-07 -6.28722525 + 1.53333318 + 0.707106829 -3.15192175e-08 3.40702044e-08 -0.707106769 + 1.14552576e-10 4.76837158e-07 -6.42389011 + 1.56666648 + 0.707106829 -3.1541024e-08 3.41831168e-08 -0.707106769 + 1.18648952e-10 0 -6.56055593 + 1.59999979 + 0.707106829 -3.15612212e-08 3.42876838e-08 -0.707106769 + 1.22428984e-10 2.38418579e-07 -6.69722223 + 1.63333309 + 0.707106829 -3.1579642e-08 3.43830742e-08 -0.707106769 + 1.25868399e-10 -7.15255737e-07 -6.83388758 + 1.66666639 + 0.707106829 -3.15961302e-08 3.44684601e-08 -0.707106769 + 1.28960953e-10 -4.76837158e-07 -6.97055387 + 1.69999969 + 0.707106829 -3.16105258e-08 3.45429889e-08 -0.707106769 + 1.31664152e-10 -7.15255737e-07 -7.1072197 + 1.73333299 + 0.707106829 -3.16226618e-08 3.46058435e-08 -0.707106769 + 1.33935418e-10 -7.15255737e-07 -7.24388599 + 1.76666629 + 0.707106829 -3.16323856e-08 3.46561819e-08 -0.707106769 + 1.35786826e-10 0 -7.38055038 + 1.79999959 + 0.707106829 -3.16395301e-08 3.46931692e-08 -0.707106769 + 1.37103023e-10 0 -7.51721668 + 1.8333329 + 0.707106829 -3.16439355e-08 3.47159776e-08 -0.707106769 + 1.37950595e-10 -7.15255737e-07 -7.65388298 + 1.8666662 + 0.707106829 -3.16454383e-08 3.47237616e-08 -0.707106769 + 1.38214301e-10 4.76837158e-07 -7.79054785 + 1.8999995 + "L_Index_sjnt_0" + 58 + -0.201210007 0.863231003 -0.154551953 -0.436417818 + 0.00134612003 -0.0782155693 -0.0280411374 + 0 + -0.181262344 0.868236542 -0.136068895 -0.441355407 + 0.00134612026 -0.0782155693 -0.0280411374 + 0.0333333351 + -0.170516551 0.871354163 -0.119480312 -0.444286555 + 0.00134612026 -0.0782155693 -0.0280411374 + 0.0666666701 + -0.162147596 0.873898149 -0.103657782 -0.446391404 + 0.00134612026 -0.0782155693 -0.0280411374 + 0.100000001 + -0.151510879 0.876538694 -0.0883622691 -0.448237151 + 0.00134612003 -0.0782155693 -0.0280411374 + 0.13333334 + -0.140029207 0.878893375 -0.0758491904 -0.449650079 + 0.00134612026 -0.0782155693 -0.0280411374 + 0.166666672 + -0.127688617 0.880850255 -0.0676321089 -0.450804204 + 0.00134612026 -0.0782155693 -0.0280411374 + 0.200000003 + -0.113797098 0.882250011 -0.0667883083 -0.451912075 + 0.00134612026 -0.0782155693 -0.0280411374 + 0.233333334 + -0.0987111777 0.882879972 -0.0737341121 -0.453147262 + 0.00134612038 -0.0782155693 -0.0280411374 + 0.266666681 + -0.0844242796 0.882658303 -0.0849992111 -0.454491019 + 0.00134611991 -0.0782155693 -0.0280411374 + 0.300000012 + -0.075315997 0.881762147 -0.0963396206 -0.455567539 + 0.00134612026 -0.0782155693 -0.0280411374 + 0.333333343 + -0.0677880794 0.880857348 -0.102892883 -0.457064718 + 0.0013461198 -0.0782155693 -0.0280411374 + 0.366666675 + -0.0608445443 0.879787445 -0.105644844 -0.459468424 + 0.00134612003 -0.0782155693 -0.0280411374 + 0.400000006 + -0.0655750483 0.877745032 -0.11180345 -0.461263061 + 0.00134612026 -0.0782155693 -0.0280411374 + 0.433333337 + -0.0982802212 0.873342395 -0.12858583 -0.459434181 + 0.00134612003 -0.0782155693 -0.0280411374 + 0.466666669 + -0.153617159 0.864635766 -0.154122368 -0.452827811 + 0.00134612026 -0.0782155693 -0.0280411374 + 0.5 + -0.205161691 0.853631914 -0.177409917 -0.444687545 + 0.00134611991 -0.0782155693 -0.0280411374 + 0.533333361 + -0.238134935 0.844913602 -0.192453578 -0.43860513 + 0.00134612003 -0.0782155693 -0.0280411374 + 0.566666722 + -0.255226314 0.840014994 -0.200632289 -0.434719503 + 0.00134612084 -0.0782155693 -0.0280411374 + 0.600000083 + -0.25543946 0.840341985 -0.201780424 -0.433429062 + 0.00134612026 -0.0782155693 -0.0280411374 + 0.633333445 + -0.242090419 0.845192373 -0.197629675 -0.433571965 + 0.00134612003 -0.0782155618 -0.0280411374 + 0.666666806 + -0.217670009 0.854356408 -0.189624175 -0.432131439 + 0.00134612026 -0.0782155767 -0.0280411411 + 0.700000167 + -0.169205323 0.869252443 -0.172895685 -0.431134433 + 0.00134612026 -0.0782155693 -0.0280411374 + 0.733333528 + -0.11068394 0.883402526 -0.153471947 -0.428713679 + 0.00134612026 -0.0782155693 -0.0280411355 + 0.766666889 + -0.0526030287 0.893498302 -0.134992108 -0.425053895 + 0.00134612003 -0.0782155693 -0.0280411374 + 0.80000025 + -0.00599005679 0.898923993 -0.120266847 -0.42123121 + 0.00134612003 -0.0782155693 -0.0280411374 + 0.833333611 + 0.0181568097 0.900987506 -0.111604922 -0.418851197 + 0.00134612003 -0.0782155693 -0.0280411374 + 0.866666973 + 0.00575481495 0.900757194 -0.110510617 -0.41998893 + 0.00134612084 -0.0782155693 -0.0280411374 + 0.900000334 + -0.0429542772 0.896702051 -0.116681233 -0.424812794 + 0.00134612026 -0.0782155693 -0.0280411374 + 0.933333695 + -0.11030671 0.886244953 -0.128958732 -0.431012839 + 0.00134612026 -0.0782155693 -0.0280411374 + 0.966667056 + -0.172202423 0.871731997 -0.144564614 -0.435351282 + 0.00134611991 -0.0782155693 -0.0280411374 + 1.00000036 + -0.216090918 0.858332872 -0.161181167 -0.436566144 + 0.00134612003 -0.0782155693 -0.0280411374 + 1.03333366 + -0.249058664 0.845977366 -0.180167019 -0.435697109 + 0.00134612026 -0.0782155693 -0.0280411374 + 1.06666696 + -0.279777199 0.832560718 -0.202246368 -0.433201611 + 0.00134612003 -0.0782155693 -0.0280411374 + 1.10000026 + -0.304126561 0.820798576 -0.224150404 -0.428431183 + 0.00134612026 -0.0782155693 -0.0280411374 + 1.13333356 + -0.31966272 0.81308955 -0.243005827 -0.421484679 + 0.00134611991 -0.0782155693 -0.0280411374 + 1.16666687 + -0.324171394 0.811701179 -0.256129771 -0.41285798 + 0.00134612003 -0.0782155693 -0.0280411374 + 1.20000017 + -0.314967662 0.818662286 -0.261238694 -0.402916729 + 0.00134612084 -0.0782155693 -0.0280411374 + 1.23333347 + -0.282701612 0.838182211 -0.257245332 -0.389043987 + 0.00134612003 -0.0782155693 -0.0280411374 + 1.26666677 + -0.226701543 0.865935028 -0.248598605 -0.370083392 + 0.00134612026 -0.0782155693 -0.0280411374 + 1.30000007 + -0.157677755 0.891959965 -0.240532905 -0.348839611 + 0.00134612026 -0.0782155693 -0.0280411374 + 1.33333337 + -0.0874358788 0.91036731 -0.235419035 -0.32888341 + 0.00134612026 -0.0782155693 -0.0280411374 + 1.36666667 + -0.0283353534 0.920126855 -0.232398033 -0.313934505 + 0.00134612003 -0.0782155693 -0.0280411374 + 1.39999998 + 0.00698319124 0.923730969 -0.228506118 -0.307339072 + 0.00134612003 -0.0782155693 -0.0280411374 + 1.43333328 + 0.0130009921 0.924461126 -0.220297813 -0.310920388 + 0.00134612003 -0.0782155693 -0.0280411374 + 1.46666658 + -0.00418867543 0.923201025 -0.207454875 -0.323488563 + 0.00134612026 -0.0782155693 -0.0280411374 + 1.49999988 + -0.0379972458 0.918537199 -0.192393914 -0.343264014 + 0.00134612049 -0.0782155693 -0.0280411374 + 1.53333318 + -0.0826238319 0.908783555 -0.178047121 -0.368218631 + 0.00134612026 -0.0782155693 -0.0280411374 + 1.56666648 + -0.131467551 0.893585026 -0.166491851 -0.395603925 + 0.00134612003 -0.0782155693 -0.0280411374 + 1.59999979 + -0.178882018 0.874118209 -0.157913134 -0.423062772 + 0.0013461198 -0.0782155693 -0.0280411374 + 1.63333309 + -0.204395607 0.861592233 -0.154150113 -0.438313901 + 0.00134612026 -0.0782155693 -0.0280411374 + 1.66666639 + -0.201210007 0.863231003 -0.154551953 -0.436417818 + 0.00134612003 -0.0782155693 -0.0280411374 + 1.69999969 + -0.201210007 0.863231003 -0.154551953 -0.436417818 + 0.00134611991 -0.0782155767 -0.0280411411 + 1.73333299 + -0.201210007 0.863231003 -0.154551953 -0.436417818 + 0.00134612026 -0.0782155767 -0.0280411374 + 1.76666629 + -0.201210007 0.863231003 -0.154551953 -0.436417818 + 0.00134612026 -0.0782155693 -0.0280411374 + 1.79999959 + -0.201210007 0.863231003 -0.154551953 -0.436417818 + 0.00134612026 -0.0782155693 -0.0280411374 + 1.8333329 + -0.201210007 0.863231003 -0.154551953 -0.436417818 + 0.00134612084 -0.0782155693 -0.0280411374 + 1.8666662 + -0.201210007 0.863231003 -0.154551953 -0.436417818 + 0.00134612003 -0.0782155693 -0.0280411374 + 1.8999995 + "L_Wrist_sjnt_0" + 58 + -0.0798091814 -0.264825732 0.00164545781 0.960986614 + 6.57227793e-06 -0.242271721 2.52936456e-06 + 0 + -0.0452072509 -0.273644269 -0.0402808003 0.959923267 + 6.57223381e-06 -0.242271721 2.52945438e-06 + 0.0333333351 + -0.0149201024 -0.287682325 -0.0859197006 0.953747392 + 6.57226883e-06 -0.242271721 2.52950622e-06 + 0.0666666701 + 0.0135659613 -0.306013077 -0.128235221 0.943253815 + 6.57227156e-06 -0.242271721 2.52947734e-06 + 0.100000001 + 0.0412326343 -0.323755056 -0.179885507 0.927967548 + 6.57219243e-06 -0.242271721 2.5293923e-06 + 0.13333334 + 0.0670744106 -0.338571548 -0.233215928 0.909109831 + 6.57230157e-06 -0.242271721 2.5293723e-06 + 0.166666672 + 0.0940291509 -0.351507008 -0.236807644 0.900846004 + 6.57225792e-06 -0.242271721 2.52940458e-06 + 0.200000003 + 0.126325935 -0.349359721 -0.284121633 0.883891642 + 6.57223836e-06 -0.242271721 2.52940799e-06 + 0.233333334 + 0.128356025 -0.346091628 -0.282883257 0.885280967 + 6.57228111e-06 -0.242271721 2.529418e-06 + 0.266666681 + 0.146659017 -0.325325161 -0.281216353 0.890826643 + 6.57227565e-06 -0.242271721 2.5293914e-06 + 0.300000012 + 0.155718192 -0.297517061 -0.254448801 0.906913042 + 6.57230521e-06 -0.242271721 2.52953873e-06 + 0.333333343 + 0.122910477 -0.276440978 -0.230645254 0.924811482 + 6.57229748e-06 -0.242271706 2.5294039e-06 + 0.366666675 + 0.0478019714 -0.25660637 -0.208516568 0.942543983 + 6.572247e-06 -0.242271721 2.52961354e-06 + 0.400000006 + -0.0700494498 -0.233770698 -0.179190874 0.953066111 + 6.57226747e-06 -0.242271721 2.52954533e-06 + 0.433333337 + -0.184685573 -0.207944408 -0.144308776 0.949644864 + 6.57228838e-06 -0.242271721 2.52926952e-06 + 0.466666669 + -0.25292629 -0.187150463 -0.116820887 0.94199574 + 6.57226747e-06 -0.242271721 2.52963309e-06 + 0.5 + -0.254206479 -0.169791102 -0.11709518 0.944901526 + 6.57219243e-06 -0.242271721 2.52976338e-06 + 0.533333361 + -0.230451822 -0.157727063 -0.136530697 0.950459659 + 6.57224973e-06 -0.242271721 2.52918835e-06 + 0.566666722 + -0.200530216 -0.175335705 -0.119071178 0.956486881 + 6.57232385e-06 -0.242271721 2.52952941e-06 + 0.600000083 + -0.170300946 -0.231158838 -0.0812731907 0.95444113 + 6.57230839e-06 -0.242271721 2.52940345e-06 + 0.633333445 + -0.153672516 -0.301223963 -0.0448767096 0.940018594 + 6.57213377e-06 -0.242271721 2.52948098e-06 + 0.666666806 + -0.138560787 -0.335738182 -0.0340549052 0.931086004 + 6.57227974e-06 -0.242271736 2.52944233e-06 + 0.700000167 + -0.122904681 -0.31283164 -0.0657157749 0.93952769 + 6.57229202e-06 -0.242271721 2.52938935e-06 + 0.733333528 + -0.0958621353 -0.25522247 -0.136951566 0.952321529 + 6.57219971e-06 -0.242271721 2.52952645e-06 + 0.766666889 + -0.0563666634 -0.188026637 -0.218907893 0.955797136 + 6.57227702e-06 -0.242271721 2.52945188e-06 + 0.80000025 + -0.0209006928 -0.141750425 -0.242846012 0.959424734 + 6.57232522e-06 -0.242271721 2.5293582e-06 + 0.833333611 + 0.0169566274 -0.1107115 -0.285328567 0.951862931 + 6.57222927e-06 -0.242271721 2.5294878e-06 + 0.866666973 + -0.0240040123 -0.132018596 -0.258820444 0.956559896 + 6.57234614e-06 -0.242271721 2.52915743e-06 + 0.900000334 + -0.0705616251 -0.172933638 -0.207651272 0.960206211 + 6.57222927e-06 -0.242271721 2.52936502e-06 + 0.933333695 + -0.107887723 -0.221059635 -0.133969843 0.959971368 + 6.57224473e-06 -0.242271721 2.52951577e-06 + 0.966667056 + -0.130100906 -0.24640891 -0.0987100005 0.955307662 + 6.57234796e-06 -0.242271706 2.52949076e-06 + 1.00000036 + -0.109889567 -0.235506356 -0.119778775 0.958182752 + 6.57229066e-06 -0.242271721 2.52957693e-06 + 1.03333366 + -0.0727990195 -0.207449228 -0.169363379 0.960719109 + 6.5722611e-06 -0.242271721 2.52953578e-06 + 1.06666696 + -0.0268254466 -0.174953505 -0.222477704 0.95873636 + 6.57232704e-06 -0.242271721 2.52934865e-06 + 1.10000026 + 0.0149709471 -0.146248817 -0.266377062 0.952591479 + 6.57223427e-06 -0.242271721 2.52955624e-06 + 1.13333356 + 0.0487108193 -0.112483658 -0.319493204 0.939626992 + 6.57221017e-06 -0.242271721 2.52971313e-06 + 1.16666687 + 0.0673708841 -0.0742105618 -0.388850123 0.915832698 + 6.57222336e-06 -0.242271721 2.52918653e-06 + 1.20000017 + 0.0807090998 -0.0432474725 -0.421023279 0.902416289 + 6.57232067e-06 -0.242271721 2.52949303e-06 + 1.23333347 + 0.0946975723 -0.026226664 -0.432302773 0.896358669 + 6.5723043e-06 -0.242271721 2.52942073e-06 + 1.26666677 + 0.0888470262 -0.0289522838 -0.436738521 0.894722044 + 6.57223427e-06 -0.242271721 2.52943391e-06 + 1.30000007 + 0.0778852776 -0.0342870802 -0.44092977 0.893498302 + 6.57226428e-06 -0.242271721 2.52950963e-06 + 1.33333337 + 0.102977537 -0.0650047511 -0.39511022 0.910526216 + 6.57226155e-06 -0.242271721 2.52944187e-06 + 1.36666667 + 0.180646777 -0.110160425 -0.298024237 0.930813074 + 6.57216879e-06 -0.242271721 2.52941732e-06 + 1.39999998 + 0.262970954 -0.13933152 -0.198590651 0.933806658 + 6.57226974e-06 -0.242271721 2.52943573e-06 + 1.43333328 + 0.28536135 -0.153345674 -0.0977202058 0.941012621 + 6.57227883e-06 -0.242271721 2.52938003e-06 + 1.46666658 + 0.224962085 -0.197057456 -0.0990071669 0.949082732 + 6.57228384e-06 -0.242271721 2.5295426e-06 + 1.49999988 + 0.0649317503 -0.250422746 -0.0847747475 0.96222949 + 6.57232567e-06 -0.242271721 2.52912582e-06 + 1.53333318 + -0.0490235873 -0.278885394 -0.0748297051 0.956148624 + 6.57225883e-06 -0.242271721 2.52947848e-06 + 1.56666648 + -0.0992990509 -0.288717687 -0.0412424393 0.951357365 + 6.57227611e-06 -0.242271721 2.5293225e-06 + 1.59999979 + -0.136942416 -0.289159 -0.00877750944 0.947394729 + 6.57222517e-06 -0.242271706 2.52952259e-06 + 1.63333309 + -0.147478774 -0.284545571 0.0201578699 0.947036207 + 6.57228566e-06 -0.242271721 2.52946074e-06 + 1.66666639 + -0.15301837 -0.277910024 0.046658881 0.947192907 + 6.5722943e-06 -0.242271721 2.52942118e-06 + 1.69999969 + -0.152907684 -0.272067934 0.0710194036 0.947393596 + 6.57231021e-06 -0.242271721 2.52931454e-06 + 1.73333299 + -0.14731656 -0.27060473 0.0853856727 0.947512627 + 6.57214832e-06 -0.242271721 2.52952941e-06 + 1.76666629 + -0.12892729 -0.270943731 0.0741736591 0.95103395 + 6.57225428e-06 -0.242271721 2.52958171e-06 + 1.79999959 + -0.113063298 -0.266790837 0.0390545949 0.956302285 + 6.57222699e-06 -0.242271721 2.52937753e-06 + 1.8333329 + -0.0947123021 -0.267173141 0.0240921266 0.958680153 + 6.57226565e-06 -0.242271721 2.52940754e-06 + 1.8666662 + -0.0798091814 -0.264825732 0.00164545781 0.960986614 + 6.57225428e-06 -0.242271721 2.52951349e-06 + 1.8999995 + "C_Spine_sjnt_2" + 58 + 0.0329639688 -0.0137423147 -0.0213515311 0.999133945 + -3.41948683e-16 0.0489999987 -5.68434176e-16 + 0 + 0.0294733606 -0.0209512617 -0.011675477 0.999277771 + -1.10134125e-15 0.0489999987 1.35003118e-15 + 0.0333333351 + 0.0239386242 -0.0243015625 -0.00407248782 0.999409735 + -1.42108544e-16 0.0489999987 3.55271347e-16 + 0.0666666701 + 0.0196165796 -0.0258939173 0.00240243995 0.99946934 + 1.33226755e-16 0.0489999987 2.84217088e-16 + 0.100000001 + 0.018751394 -0.0241830386 0.00747400941 0.999503732 + 9.76996283e-16 0.0489999987 1.42108544e-16 + 0.13333334 + 0.0205883253 -0.0186457168 0.0101284953 0.999562919 + -7.63833401e-16 0.0489999987 -1.42108544e-16 + 0.166666672 + 0.0248540211 -0.0100415358 0.012291925 0.999565125 + -1.86517462e-16 0.0489999987 -7.1054272e-17 + 0.200000003 + 0.0304578356 0.00194491283 0.015501312 0.999413967 + 8.88178367e-17 0.0489999987 -9.23705523e-16 + 0.233333334 + 0.0339495055 0.0139565459 0.0182981398 0.999158561 + 3.55271347e-16 0.0489999987 4.97379917e-16 + 0.266666681 + 0.0318150409 0.0225289539 0.0162421335 0.999107838 + -7.63833401e-16 0.0489999987 -7.1054272e-17 + 0.300000012 + 0.0252165943 0.0285501406 0.00815764815 0.999240935 + 5.3290702e-16 0.0489999987 4.26325632e-16 + 0.333333343 + 0.018273076 0.0326613262 -0.00171051023 0.999297976 + -4.75175425e-16 0.0489999987 -1.42108544e-16 + 0.366666675 + 0.0130777946 0.0342107788 -0.00863972306 0.999291778 + -7.99360543e-17 0.0489999987 -2.84217088e-16 + 0.400000006 + 0.0118328966 0.0328668915 -0.0128737139 0.999306798 + -1.24344979e-16 0.0489999987 -1.70530253e-15 + 0.433333337 + 0.0144093083 0.0280524399 -0.0148139987 0.999392807 + 1.4566126e-15 0.0490000062 1.98951967e-15 + 0.466666669 + 0.0192993768 0.0207000952 -0.0165686626 0.999462128 + -1.31450408e-15 0.0489999987 8.52651264e-16 + 0.5 + 0.0254275966 0.0106369425 -0.0205949079 0.999407887 + 0 0.0489999987 -1.98951967e-15 + 0.533333361 + 0.0306677613 0.000861532986 -0.0237764679 0.999246418 + 2.13162816e-16 0.0489999987 5.68434176e-16 + 0.566666722 + 0.03447688 -0.00756505178 -0.0254617706 0.999052465 + 2.48689959e-16 0.0489999987 2.84217088e-16 + 0.600000083 + 0.0334539488 -0.0146238916 -0.0209344476 0.999113977 + -3.5527136e-17 0.0489999987 -1.42108539e-15 + 0.633333445 + 0.0294082481 -0.0208592042 -0.0123129981 0.999273956 + -2.57571734e-16 0.0489999987 1.70530253e-15 + 0.666666806 + 0.0239260383 -0.0242409799 -0.00403251965 0.999411643 + -5.15143469e-16 0.0489999987 0 + 0.700000167 + 0.0196435228 -0.025884591 0.00258589908 0.999468565 + -4.26325632e-16 0.0489999987 1.13686835e-15 + 0.733333528 + 0.0187599417 -0.0241959505 0.00749624008 0.999503076 + 1.4921397e-15 0.0489999987 0 + 0.766666889 + 0.0205798447 -0.0186523534 0.0100787682 0.999563396 + -2.84217088e-16 0.0489999987 5.68434176e-16 + 0.80000025 + 0.0248501562 -0.0100405822 0.0122731188 0.999565423 + -7.81597005e-16 0.0489999987 -1.13686835e-15 + 0.833333611 + 0.0304588675 0.00194733986 0.0155112986 0.999413729 + 0 0.0489999987 0 + 0.866666973 + 0.0339506231 0.013957452 0.0183072463 0.999158323 + 9.94759834e-16 0.0489999987 1.13686835e-15 + 0.900000334 + 0.0318151824 0.0225290842 0.0162414853 0.999107838 + -7.10542693e-16 0.0489999987 -5.68434176e-16 + 0.933333695 + 0.0252163615 0.0285496544 0.0081510013 0.999240994 + 3.90798503e-16 0.0489999987 1.13686835e-15 + 0.966667056 + 0.018273076 0.0326595642 -0.00171474472 0.999298036 + -3.86357615e-16 0.0489999987 -5.68434176e-16 + 1.00000036 + 0.0130771287 0.0342095308 -0.00863121357 0.999291897 + 2.48689959e-16 0.0489999987 -1.13686835e-15 + 1.03333366 + 0.0118309362 0.0328698382 -0.0128589785 0.999306917 + -3.55271347e-16 0.0489999987 -1.70530253e-15 + 1.06666696 + 0.0144102173 0.0280573815 -0.0148220025 0.999392569 + 9.23705523e-16 0.0490000062 2.84217077e-15 + 1.10000026 + 0.0193042252 0.0206958465 -0.0166016985 0.999461591 + -8.52651264e-16 0.0489999987 0 + 1.13333356 + 0.0254286267 0.0106265005 -0.0205968153 0.999407947 + 0 0.0489999987 -2.2737367e-15 + 1.16666687 + 0.0306660049 0.000864802045 -0.0237297788 0.999247611 + 4.26325632e-16 0.0489999987 5.68434176e-16 + 1.20000017 + 0.0344819091 -0.007562174 -0.0254582167 0.999052465 + 3.55271347e-16 0.0489999987 -5.68434176e-16 + 1.23333347 + 0.0334539488 -0.0146238916 -0.0209344476 0.999113977 + 4.97379917e-16 0.0489999987 -1.70530253e-15 + 1.26666677 + 0.0294046309 -0.0208540931 -0.0123484172 0.999273777 + -2.93098864e-16 0.0489999987 1.70530253e-15 + 1.30000007 + 0.0239245594 -0.0242338534 -0.0040278174 0.999411881 + -8.8817842e-16 0.0489999987 5.68434176e-16 + 1.33333337 + 0.0196485762 -0.025882842 0.00262029748 0.999468446 + -2.13162816e-16 0.0489999987 5.68434176e-16 + 1.36666667 + 0.0187622216 -0.0241993945 0.00750216888 0.999502957 + 9.94759834e-16 0.0489999987 -5.68434176e-16 + 1.39999998 + 0.0205768179 -0.0186547209 0.0100610098 0.999563634 + 1.42108544e-16 0.0489999987 0 + 1.43333328 + 0.024848368 -0.0100401444 0.0122644389 0.999565601 + -4.26325632e-16 0.0489999987 1.13686835e-15 + 1.46666658 + 0.0304594729 0.00194875547 0.015517124 0.999413669 + 1.42108544e-16 0.0489999987 -5.68434176e-16 + 1.49999988 + 0.0339514464 0.0139581133 0.0183138698 0.999158204 + 1.42108539e-15 0.0489999987 0 + 1.53333318 + 0.031815324 0.0225292053 0.0162409004 0.999107838 + -4.26325632e-16 0.0489999987 0 + 1.56666648 + 0.025216097 0.0285491161 0.00814361405 0.999241114 + 1.77635684e-15 0.0489999987 5.68434176e-16 + 1.59999979 + 0.0182730649 0.032657139 -0.00172056782 0.999298096 + -1.42108539e-15 0.0489999987 0 + 1.63333309 + 0.0130759925 0.0342074037 -0.00861662626 0.999292076 + 8.52651264e-16 0.0489999987 0 + 1.66666639 + 0.0118266996 0.0328762233 -0.0128270527 0.999307156 + 0 0.0489999987 -1.13686835e-15 + 1.69999969 + 0.0144127524 0.0280712284 -0.0148444166 0.999391794 + 2.84217088e-16 0.0490000062 -1.13686835e-15 + 1.73333299 + 0.0193224084 0.0206799135 -0.0167255737 0.999459505 + -1.27897687e-15 0.0489999987 1.13686835e-15 + 1.76666629 + 0.0254341252 0.0105708018 -0.0206069984 0.999408185 + -1.42108544e-16 0.0489999987 -1.13686835e-15 + 1.79999959 + 0.0306510869 0.000892580429 -0.0233328957 0.999257386 + 1.13686835e-15 0.0489999987 -1.13686835e-15 + 1.8333329 + 0.0345722847 -0.00751036406 -0.0253942348 0.999051332 + -4.26325632e-16 0.0489999987 1.13686835e-15 + 1.8666662 + 0.0329639688 -0.0137423137 -0.0213515311 0.999133945 + -6.39488435e-16 0.0489999987 0 + 1.8999995 + "R_Thumb_sjnt_3" + 58 + -7.11660277e-08 -2.81920336e-07 -2.91830361e-07 1 + -1.46481507e-10 0.0181292463 -4.35800424e-10 + 0 + -7.04021375e-08 -2.81665393e-07 -2.90708215e-07 1 + 4.85826483e-11 0.0181292463 -3.26204896e-10 + 0.0333333351 + -7.15406259e-08 -2.82045477e-07 -2.9239618e-07 1 + 1.22696228e-10 0.0181292463 -7.57315599e-11 + 0.0666666701 + -6.98827307e-08 -2.80798247e-07 -2.92241396e-07 1 + 1.8842683e-10 0.0181292463 -2.25544666e-10 + 0.100000001 + -6.99711364e-08 -2.81285566e-07 -2.91407986e-07 1 + 2.31700728e-10 0.0181292463 -1.63312128e-10 + 0.13333334 + -6.98506e-08 -2.80374024e-07 -2.91353842e-07 1 + 1.91657523e-10 0.0181292463 -2.22127094e-10 + 0.166666672 + -7.06184551e-08 -2.82941755e-07 -2.91467586e-07 1 + 1.58220242e-10 0.0181292463 -2.1014486e-10 + 0.200000003 + -7.1984644e-08 -2.8041768e-07 -2.91245385e-07 1 + 1.18173485e-10 0.0181292463 -1.34325828e-10 + 0.233333334 + -6.94536482e-08 -2.81398911e-07 -2.9062943e-07 1 + 1.02892805e-09 0.0181292444 4.99467634e-10 + 0.266666681 + -7.07512413e-08 -2.83565555e-07 -2.91413699e-07 1 + -3.94768163e-10 0.0181292463 -6.81672663e-10 + 0.300000012 + -7.02236775e-08 -2.80813197e-07 -2.91476084e-07 1 + 9.08984485e-11 0.0181292463 -2.71174444e-10 + 0.333333343 + -7.14533286e-08 -2.81735538e-07 -2.90206231e-07 1 + -2.51694415e-10 0.0181292463 9.47651541e-11 + 0.366666675 + -7.25547125e-08 -2.81623244e-07 -2.90108801e-07 1 + 2.67718014e-10 0.0181292463 -2.42306435e-11 + 0.400000006 + -6.95137317e-08 -2.81916925e-07 -2.91394031e-07 1 + 1.37068315e-10 0.0181292463 -2.51328486e-10 + 0.433333337 + -7.0017478e-08 -2.83271248e-07 -2.92354457e-07 1 + 5.80404835e-10 0.0181292463 -7.62194641e-10 + 0.466666669 + -6.82072852e-08 -2.8465513e-07 -2.92683268e-07 1 + 2.92806127e-11 0.0181292463 -3.84060006e-10 + 0.5 + -7.05944814e-08 -2.81076382e-07 -2.91388233e-07 1 + -2.59764321e-10 0.0181292463 -5.8001548e-10 + 0.533333361 + -7.10893318e-08 -2.82501844e-07 -2.91047002e-07 1 + 9.29770705e-11 0.0181292463 -2.32239186e-10 + 0.566666722 + -6.90486246e-08 -2.83025656e-07 -2.92251343e-07 1 + -3.35802497e-10 0.0181292463 -7.09109271e-10 + 0.600000083 + -7.08443366e-08 -2.81740398e-07 -2.91323829e-07 1 + -1.16893939e-10 0.0181292463 -4.51543386e-10 + 0.633333445 + -7.04861094e-08 -2.82910662e-07 -2.91744641e-07 1 + 1.2948362e-11 0.0181292463 -3.17773308e-10 + 0.666666806 + -7.13821748e-08 -2.80373825e-07 -2.91303991e-07 1 + 6.10578477e-10 0.0181292463 -7.2298012e-10 + 0.700000167 + -7.04874594e-08 -2.82241444e-07 -2.91172086e-07 1 + 9.96922683e-11 0.0181292463 -2.52780546e-10 + 0.733333528 + -7.03459193e-08 -2.82506733e-07 -2.91069853e-07 1 + 2.02059869e-10 0.0181292463 -1.57234642e-10 + 0.766666889 + -7.0313078e-08 -2.82510541e-07 -2.91281111e-07 1 + 1.03218843e-10 0.0181292463 -2.5866484e-10 + 0.80000025 + -7.0706534e-08 -2.81047988e-07 -2.89558159e-07 1 + 3.23063881e-10 0.0181292463 -1.47549598e-10 + 0.833333611 + -6.91388351e-08 -2.82488543e-07 -2.92918628e-07 1 + 3.09184983e-10 0.0181292463 -7.24462546e-10 + 0.866666973 + -6.98856013e-08 -2.81569498e-07 -2.90997207e-07 1 + 1.38038891e-09 0.0181292444 8.98340569e-10 + 0.900000334 + 4.15987924e-05 0.000429833366 -0.000230178994 0.999999881 + -1.11380583e-09 0.0181292463 -1.20198351e-09 + 0.933333695 + -0.000223642011 -0.0023428686 0.00125288661 0.999996483 + -1.01208278e-10 0.0181292463 -4.52032356e-10 + 0.966667056 + -0.00104706502 -0.0115542496 0.00619877875 0.999913514 + -1.76824805e-10 0.0181292463 1.18122331e-10 + 1.00000036 + -0.00185554929 -0.0217683036 0.0117165865 0.999692678 + 5.78461341e-11 0.0181292444 -2.33056879e-10 + 1.03333366 + -0.00213515805 -0.0256706048 0.0138338618 0.999572456 + 2.19035595e-10 0.0181292463 -1.60251826e-10 + 1.06666696 + -0.00210158667 -0.0251898579 0.0135727469 0.999588311 + 5.12411169e-10 0.0181292463 -9.31526634e-10 + 1.10000026 + -0.00210293778 -0.0252091233 0.0135832094 0.999587715 + 8.28138946e-11 0.0181292463 -2.96991515e-10 + 1.13333356 + -0.00209478359 -0.0250927955 0.0135200415 0.999591529 + -9.87901635e-11 0.0181292463 -4.69497052e-10 + 1.16666687 + -0.00200907257 -0.0238826536 0.0128631648 0.999630034 + -3.57440494e-10 0.0181292463 -7.00016434e-10 + 1.20000017 + -0.0018281145 -0.0213968996 0.0115153957 0.999703109 + -2.28702668e-10 0.0181292463 -6.14196805e-10 + 1.23333347 + -0.00162268034 -0.0186783932 0.0100437747 0.9997738 + -2.939032e-11 0.0181292463 -3.91812222e-10 + 1.26666677 + -0.00138477876 -0.0156523529 0.00840857998 0.999841213 + 7.5415299e-11 0.0181292463 -3.23245791e-10 + 1.30000007 + -0.00107840903 -0.0119247241 0.00639849668 0.999907851 + -1.82262729e-11 0.0181292463 -1.54773264e-10 + 1.33333337 + -0.000739711046 -0.00799664669 0.00428540725 0.999958575 + 9.62864996e-11 0.0181292463 -2.51491189e-10 + 1.36666667 + -0.000413244707 -0.00437679375 0.00234277616 0.999987602 + 3.18130439e-10 0.0181292463 -2.4279756e-10 + 1.39999998 + -0.000151110129 -0.00157463131 0.000842050125 0.999998391 + 3.381814e-10 0.0181292463 -3.60500962e-10 + 1.43333328 + -1.86413763e-05 -0.000190848805 0.000101947444 1 + 2.13532303e-10 0.0181292463 -3.39695688e-10 + 1.46666658 + 3.97918802e-06 4.33482055e-05 -2.325073e-05 1 + 2.86675572e-10 0.0181292463 -2.85592688e-10 + 1.49999988 + -2.41801843e-07 -3.23196417e-07 8.8491575e-08 1 + 9.6053443e-10 0.0181292463 4.48807214e-10 + 1.53333318 + -2.4177109e-07 -3.23548363e-07 8.86194726e-08 1 + -1.52718027e-09 0.0181292463 -1.86615168e-09 + 1.56666648 + -2.4257173e-07 -3.25067219e-07 8.68699175e-08 1 + -5.96685375e-12 0.0181292463 -2.89643087e-10 + 1.59999979 + -2.42396283e-07 -3.25339784e-07 8.72626629e-08 1 + -9.37905031e-11 0.0181292463 3.09020864e-10 + 1.63333309 + -2.43604916e-07 -3.2234226e-07 8.83916371e-08 1 + 2.76395157e-10 0.0181292463 -7.34127065e-11 + 1.66666639 + -2.43189248e-07 -3.24463713e-07 8.69845138e-08 1 + -2.37847068e-12 0.0181292463 -2.72498246e-10 + 1.69999969 + -2.38927214e-07 -3.28398301e-07 8.76003341e-08 1 + 7.04303282e-10 0.0181292463 -8.3475582e-10 + 1.73333299 + -2.43630808e-07 -3.23565985e-07 8.76754171e-08 1 + 2.33933262e-10 0.0181292463 -7.72217845e-11 + 1.76666629 + -2.42308886e-07 -3.24529651e-07 8.74295623e-08 1 + -2.24085282e-11 0.0181292463 -3.6978634e-10 + 1.79999959 + -2.43137492e-07 -3.22747098e-07 8.8758398e-08 1 + -7.054069e-10 0.0181292463 -1.04212861e-09 + 1.8333329 + -2.42437835e-07 -3.24349344e-07 8.77376323e-08 1 + 5.23021404e-10 0.0181292463 1.37682712e-10 + 1.8666662 + -2.44472062e-07 -3.24928152e-07 8.7637595e-08 1 + -3.76417127e-12 0.0181292463 -2.73987555e-10 + 1.8999995 + "L_Index_sjnt_1" + 58 + 0.163919002 0.0144880405 -0.0465792008 0.985266984 + 7.62228808e-07 -0.041899953 -1.70648462e-07 + 0 + 0.136527523 0.0145520987 -0.0388052464 0.989768982 + 7.62197487e-07 -0.041899953 -1.70628908e-07 + 0.0333333351 + 0.118976198 0.0145866824 -0.0338239968 0.992213607 + 7.62334082e-07 -0.041899953 -1.70643062e-07 + 0.0666666701 + 0.104161881 0.0146119725 -0.0296195224 0.994011819 + 7.62179241e-07 -0.041899953 -1.70617696e-07 + 0.100000001 + 0.0874698237 0.0146362213 -0.024882108 0.995748818 + 7.62165257e-07 -0.041899953 -1.70532076e-07 + 0.13333334 + 0.0711824223 0.0146555696 -0.0202595219 0.997149885 + 7.62156446e-07 -0.041899953 -1.70598469e-07 + 0.166666672 + 0.0558624975 0.0146763064 -0.0159111172 0.998203814 + 7.62175773e-07 -0.041899953 -1.7060438e-07 + 0.200000003 + 0.0420694202 0.014632415 -0.0119989635 0.998935461 + 7.62202831e-07 -0.041899953 -1.70594731e-07 + 0.233333334 + 0.0303607453 0.0145085538 -0.00867951196 0.999396026 + 7.62302079e-07 -0.041899953 -1.70699707e-07 + 0.266666681 + 0.0213071872 0.0144143514 -0.00611046562 0.999650419 + 7.62193281e-07 -0.041899953 -1.70615294e-07 + 0.300000012 + 0.0173641667 0.0145084905 -0.00498844869 0.999731541 + 7.62089542e-07 -0.041899953 -1.70578431e-07 + 0.333333343 + 0.0129747977 0.0149308853 -0.00373589899 0.999797344 + 7.62004163e-07 -0.041899953 -1.70606384e-07 + 0.366666675 + 0.00774839101 0.0157159586 -0.00224734866 0.999843955 + 7.6238598e-07 -0.041899953 -1.70613433e-07 + 0.400000006 + 0.0153872911 0.0167736113 -0.00438935449 0.999731302 + 7.6227542e-07 -0.041899953 -1.70636056e-07 + 0.433333337 + 0.0541676469 0.0179769564 -0.015244687 0.998253644 + 7.62104207e-07 -0.0418999568 -1.7060529e-07 + 0.466666669 + 0.117768295 0.019160321 -0.0329316705 0.992309928 + 7.62262061e-07 -0.041899953 -1.70622414e-07 + 0.5 + 0.176340029 0.0202223826 -0.0490539819 0.982898235 + 7.62285481e-07 -0.041899953 -1.70624617e-07 + 0.533333361 + 0.213807032 0.021151023 -0.0592146702 0.974850178 + 7.62106026e-07 -0.041899953 -1.70614868e-07 + 0.566666722 + 0.233671188 0.0218924358 -0.0644967109 0.969927192 + 7.62236368e-07 -0.041899953 -1.70644782e-07 + 0.600000083 + 0.235529885 0.0223884303 -0.0648844242 0.969440281 + 7.62171226e-07 -0.041899953 -1.70625185e-07 + 0.633333445 + 0.224253938 0.0225236714 -0.0617698804 0.972310364 + 7.62383024e-07 -0.041899953 -1.7065716e-07 + 0.666666806 + 0.203189105 0.0220488328 -0.056106925 0.977281988 + 7.62153149e-07 -0.041899953 -1.70611358e-07 + 0.700000167 + 0.160607517 0.0209992286 -0.044570215 0.985787868 + 7.62214256e-07 -0.041899953 -1.70617071e-07 + 0.733333528 + 0.109237254 0.0195179172 -0.0305111241 0.993355632 + 7.62346872e-07 -0.041899953 -1.70678376e-07 + 0.766666889 + 0.0582575649 0.0178351868 -0.0163846035 0.998007774 + 7.62188904e-07 -0.041899953 -1.70591093e-07 + 0.80000025 + 0.0169566274 0.0162297916 -0.00479798997 0.999713004 + 7.62066009e-07 -0.041899953 -1.70595555e-07 + 0.833333611 + 6.74203011e-06 0.0150135476 -8.33274407e-06 0.999887288 + 7.62253308e-07 -0.041899953 -1.7067191e-07 + 0.866666973 + 0.00163860084 0.0143963322 -0.000467696751 0.999894917 + 7.62099262e-07 -0.041899953 -1.70607123e-07 + 0.900000334 + 0.0373771749 0.014272376 -0.0106269205 0.999142826 + 7.62139109e-07 -0.041899953 -1.70535969e-07 + 0.933333695 + 0.0887964889 0.0143786278 -0.0252283737 0.99562645 + 7.62280365e-07 -0.041899953 -1.70628837e-07 + 0.966667056 + 0.138810351 0.0144784665 -0.0394083038 0.989428639 + 7.62147977e-07 -0.041899953 -1.70638913e-07 + 1.00000036 + 0.177278042 0.0144534968 -0.0503147431 0.982767522 + 7.62217724e-07 -0.041899953 -1.70649798e-07 + 1.03333366 + 0.207567766 0.0143501088 -0.0589133427 0.976339519 + 7.62325499e-07 -0.041899953 -1.70613546e-07 + 1.06666696 + 0.236359462 0.014246447 -0.0670848936 0.969242394 + 7.62101479e-07 -0.0418999568 -1.70627047e-07 + 1.10000026 + 0.262577683 0.0141394837 -0.0745260492 0.961924553 + 7.62154571e-07 -0.041899953 -1.7061916e-07 + 1.13333356 + 0.285911769 0.0140339881 -0.0811486617 0.954710662 + 7.62291165e-07 -0.041899953 -1.70617639e-07 + 1.16666687 + 0.30605796 0.0139349261 -0.0868664607 0.947939157 + 7.62156162e-07 -0.041899953 -1.7061538e-07 + 1.20000017 + 0.322804868 0.0138468277 -0.0916195139 0.94191885 + 7.62237448e-07 -0.041899953 -1.70640945e-07 + 1.23333347 + 0.337438822 0.0137654897 -0.0957728699 0.93636167 + 7.62143713e-07 -0.041899953 -1.70666581e-07 + 1.26666677 + 0.350504726 0.0136893652 -0.0994811878 0.93116194 + 7.62195612e-07 -0.041899953 -1.70610448e-07 + 1.30000007 + 0.360689133 0.013627708 -0.102371685 0.926950753 + 7.62321633e-07 -0.041899953 -1.70655639e-07 + 1.33333337 + 0.366750449 0.0135900313 -0.10409198 0.924377799 + 7.62181116e-07 -0.041899953 -1.70607038e-07 + 1.36666667 + 0.367444128 0.0135856764 -0.104288861 0.924080133 + 7.62175887e-07 -0.041899953 -1.70538826e-07 + 1.39999998 + 0.361553371 0.0136223836 -0.102616973 0.926586986 + 7.6224751e-07 -0.041899953 -1.7056125e-07 + 1.43333328 + 0.346906662 0.0137106609 -0.0984599963 0.932616413 + 7.62151899e-07 -0.041899953 -1.70619003e-07 + 1.46666658 + 0.323202819 0.0138446679 -0.0917324647 0.941771388 + 7.62216871e-07 -0.041899953 -1.706712e-07 + 1.49999988 + 0.292406559 0.0140028708 -0.0829919875 0.952583194 + 7.61917477e-07 -0.041899953 -1.70490821e-07 + 1.53333318 + 0.257155776 0.014162601 -0.0729872361 0.963505745 + 7.62142065e-07 -0.041899953 -1.706304e-07 + 1.56666648 + 0.22014074 0.0143065983 -0.0624817573 0.973359883 + 7.62090167e-07 -0.041899953 -1.70581217e-07 + 1.59999979 + 0.182674855 0.0144283269 -0.0518483147 0.981699288 + 7.62327659e-07 -0.041899953 -1.70624332e-07 + 1.63333309 + 0.161285356 0.0144872274 -0.0457776226 0.985739112 + 7.62156333e-07 -0.041899953 -1.70624674e-07 + 1.66666639 + 0.163933218 0.0144803487 -0.0465291254 0.985267103 + 7.62112904e-07 -0.041899953 -1.70630571e-07 + 1.69999969 + 0.163933218 0.0144803487 -0.0465291254 0.985267103 + 7.61996716e-07 -0.0418999568 -1.70614058e-07 + 1.73333299 + 0.163933218 0.0144803477 -0.0465291254 0.985267103 + 7.62348748e-07 -0.041899953 -1.70591321e-07 + 1.76666629 + 0.163933218 0.0144803487 -0.0465291254 0.985267103 + 7.62242678e-07 -0.041899953 -1.70621476e-07 + 1.79999959 + 0.163933218 0.0144803487 -0.0465291254 0.985267103 + 7.62167872e-07 -0.041899953 -1.70601751e-07 + 1.8333329 + 0.163933218 0.0144803487 -0.0465291254 0.985267103 + 7.6214809e-07 -0.041899953 -1.70555992e-07 + 1.8666662 + 0.163933218 0.0144803496 -0.0465291254 0.985267103 + 7.62298782e-07 -0.041899953 -1.70652342e-07 + 1.8999995 + "L_Pinky_sjnt_3" + 58 + 0.159664094 1.40161201e-05 0.00642312178 0.98715055 + 3.66094298e-07 -0.0121525498 -7.50571189e-07 + 0 + 0.120823279 1.23650698e-05 0.0048566577 0.992662191 + 3.66121753e-07 -0.0121525498 -7.50555898e-07 + 0.0333333351 + 0.0959206969 1.12931775e-05 0.00385234272 0.995381534 + 3.66141848e-07 -0.0121525498 -7.50592221e-07 + 0.0666666701 + 0.0748988166 1.03882185e-05 0.00300454022 0.997186661 + 3.66112232e-07 -0.0121525498 -7.50564141e-07 + 0.100000001 + 0.0512151346 9.36638935e-06 0.00204939977 0.998685598 + 3.66134685e-07 -0.0121525498 -7.50583922e-07 + 0.13333334 + 0.0281140599 8.36474828e-06 0.00111776299 0.999604106 + 3.66100778e-07 -0.0121525498 -7.5054021e-07 + 0.166666672 + 0.00639778096 7.41832537e-06 0.000241983143 0.999979556 + 3.6612974e-07 -0.0121525498 -7.50573065e-07 + 0.200000003 + -0.0131385736 6.56511929e-06 -0.000545879127 0.999913573 + 3.66159099e-07 -0.0121525498 -7.50569313e-07 + 0.233333334 + -0.029706182 5.8382916e-06 -0.00121401472 0.999557972 + 3.66313941e-07 -0.0121525498 -7.50552772e-07 + 0.266666681 + -0.04251213 5.27552129e-06 -0.00173044484 0.999094486 + 3.66193291e-07 -0.0121525498 -7.50533331e-07 + 0.300000012 + -0.0481059439 -1.335866e-05 -0.00195513852 0.998840332 + 3.65909472e-07 -0.0121525498 -7.50717049e-07 + 0.333333343 + -0.0543996841 8.71369339e-05 -0.00221432419 0.998516798 + 3.65919334e-07 -0.0121525498 -7.50776564e-07 + 0.366666675 + -0.0617164709 0.000566705829 -0.00254724501 0.998090327 + 3.66283786e-07 -0.0121525498 -7.50321931e-07 + 0.400000006 + -0.0506037213 0.00148690271 -0.00216116873 0.998715401 + 3.66239647e-07 -0.0121525498 -7.5014583e-07 + 0.433333337 + 0.00426374236 0.00269666826 0.00010990796 0.999987304 + 3.66053484e-07 -0.0121525507 -7.51006667e-07 + 0.466666669 + 0.0930279046 0.00404420309 0.00402766513 0.995647132 + 3.65927605e-07 -0.0121525498 -7.50176014e-07 + 0.5 + 0.172947094 0.00536439801 0.00779479789 0.984885693 + 3.66159867e-07 -0.0121525498 -7.505393e-07 + 0.533333361 + 0.221870035 0.00654539 0.0103016226 0.974999905 + 3.66180444e-07 -0.0121525498 -7.50476715e-07 + 0.566666722 + 0.24530749 0.00749147823 0.0116429627 0.969346464 + 3.66156769e-07 -0.0121525498 -7.50518268e-07 + 0.600000083 + 0.242127031 0.00810856931 0.0116371866 0.970140934 + 3.6609157e-07 -0.0121525498 -7.50588185e-07 + 0.633333445 + 0.220118165 0.00826567132 0.0105912108 0.975380719 + 3.66130593e-07 -0.0121525498 -7.50522304e-07 + 0.666666806 + 0.181764439 0.00765591441 0.00860026013 0.983274758 + 3.66158304e-07 -0.0121525498 -7.5054885e-07 + 0.700000167 + 0.107221328 0.00629388494 0.004870506 0.994203389 + 3.66141194e-07 -0.0121525498 -7.50571644e-07 + 0.733333528 + 0.0182227958 0.00446265703 0.000715805858 0.999823749 + 3.66156712e-07 -0.0121525498 -7.50554932e-07 + 0.766666889 + -0.0687620789 0.00255108322 -0.00301425462 0.997625291 + 3.66133776e-07 -0.0121525498 -7.50582956e-07 + 0.80000025 + -0.137343735 0.000967376865 -0.00570425298 0.990506589 + 3.66111777e-07 -0.0121525498 -7.50630818e-07 + 0.833333611 + -0.172154069 0.000132504501 -0.0069856327 0.985045254 + 3.66175726e-07 -0.0121525498 -7.50520257e-07 + 0.866666973 + -0.153074905 -3.02805311e-05 -0.00618822081 0.98819524 + 3.66137954e-07 -0.0121525498 -7.50516222e-07 + 0.900000334 + -0.0799231455 3.21393145e-06 -0.00324297464 0.996795774 + 3.65954577e-07 -0.0121525498 -7.50824313e-07 + 0.933333695 + 0.0218788646 8.07579545e-06 0.000862429908 0.99976027 + 3.6619798e-07 -0.0121525498 -7.5041919e-07 + 0.966667056 + 0.115988947 1.25054748e-05 0.00465782965 0.993239582 + 3.65842936e-07 -0.0121525498 -7.50391564e-07 + 1.00000036 + 0.181146234 1.55338348e-05 0.00728568062 0.983429253 + 3.6620898e-07 -0.0121525498 -7.50676463e-07 + 1.03333366 + 0.225614339 1.75810637e-05 0.00907917507 0.97417438 + 3.66065791e-07 -0.0121525498 -7.50261393e-07 + 1.06666696 + 0.264017224 1.93402429e-05 0.0106280772 0.964459419 + 3.66059652e-07 -0.0121525507 -7.5076764e-07 + 1.10000026 + 0.293852776 2.06977638e-05 0.0118314577 0.955777526 + 3.66193035e-07 -0.0121525498 -7.50768208e-07 + 1.13333356 + 0.314322889 2.16236804e-05 0.0126571041 0.949231744 + 3.66144008e-07 -0.0121525498 -7.50551919e-07 + 1.16666687 + 0.324652702 2.20884885e-05 0.0130737536 0.945742965 + 3.66056184e-07 -0.0121525498 -7.50490642e-07 + 1.20000017 + 0.32367304 2.20456895e-05 0.0130342394 0.946079254 + 3.66111664e-07 -0.0121525498 -7.50567096e-07 + 1.23333347 + 0.304178208 2.11619699e-05 0.012247921 0.952536464 + 3.66236634e-07 -0.0121525498 -7.50578749e-07 + 1.26666677 + 0.265287101 1.93967535e-05 0.0106792971 0.964110374 + 3.66155319e-07 -0.0121525498 -7.50564197e-07 + 1.30000007 + 0.215310484 1.71092925e-05 0.00866359659 0.976507246 + 3.65982856e-07 -0.0121525498 -7.50561583e-07 + 1.33333337 + 0.162705883 1.46951425e-05 0.00654195528 0.98665297 + 3.66135055e-07 -0.0121525498 -7.5056181e-07 + 1.36666667 + 0.116338976 1.25318666e-05 0.00467194011 0.993198574 + 3.66350378e-07 -0.0121525498 -7.50729498e-07 + 1.39999998 + 0.08584328 1.10995343e-05 0.00344205322 0.996302724 + 3.66291999e-07 -0.0121525498 -7.50728077e-07 + 1.43333328 + 0.0750112832 1.05893105e-05 0.00300520449 0.997178137 + 3.66212078e-07 -0.0121525498 -7.50627578e-07 + 1.46666658 + 0.0786760598 1.07552078e-05 0.00315300119 0.996895254 + 3.66172372e-07 -0.0121525498 -7.50571928e-07 + 1.49999988 + 0.0918988287 1.13732485e-05 0.00368626905 0.995761573 + 3.66082332e-07 -0.0121525498 -7.50555444e-07 + 1.53333318 + 0.110896744 1.22662268e-05 0.00445245858 0.993821979 + 3.65998915e-07 -0.0121525498 -7.5052759e-07 + 1.56666648 + 0.131779283 1.32433443e-05 0.00529465592 0.991264999 + 3.66336138e-07 -0.0121525498 -7.50620245e-07 + 1.59999979 + 0.15108639 1.41383398e-05 0.00607333006 0.988501906 + 3.66028729e-07 -0.0121525498 -7.50474385e-07 + 1.63333309 + 0.160902217 1.4593772e-05 0.00646921294 0.986949146 + 3.66178938e-07 -0.0121525498 -7.50610752e-07 + 1.66666639 + 0.159664229 1.45393788e-05 0.00641928148 0.98715055 + 3.6623689e-07 -0.0121525498 -7.50664981e-07 + 1.69999969 + 0.159664229 1.45413824e-05 0.00641928241 0.98715055 + 3.66176806e-07 -0.0121525507 -7.50679362e-07 + 1.73333299 + 0.159664243 1.45368431e-05 0.0064192852 0.98715055 + 3.66005537e-07 -0.0121525498 -7.50442609e-07 + 1.76666629 + 0.159664243 1.45374324e-05 0.00641928427 0.98715055 + 3.66135026e-07 -0.0121525498 -7.50564709e-07 + 1.79999959 + 0.159664243 1.45306522e-05 0.00641928706 0.98715055 + 3.65970209e-07 -0.0121525498 -7.50612571e-07 + 1.8333329 + 0.159664243 1.45396734e-05 0.00641928241 0.98715055 + 3.66204148e-07 -0.0121525498 -7.50553795e-07 + 1.8666662 + 0.159664243 1.45269369e-05 0.00641928613 0.98715055 + 3.66151966e-07 -0.0121525498 -7.50552601e-07 + 1.8999995 + "R_Wrist_sjnt_0" + 58 + 0.171963662 0.0120192096 -0.240873709 0.955125093 + 3.14513207e-11 0.24226594 2.94203759e-11 + 0 + 0.0511580519 0.0103290286 -0.218121201 0.974525213 + -2.20603622e-11 0.24226594 5.74338077e-11 + 0.0333333351 + -0.0959808603 -0.00465327315 -0.177134022 0.979484379 + -4.750653e-11 0.24226594 -5.7723e-11 + 0.0666666701 + -0.228045553 -0.0265189875 -0.124864347 0.965246558 + -1.17410075e-12 0.24226594 -1.47274189e-11 + 0.100000001 + -0.303465366 -0.0355879292 -0.0973372832 0.947189391 + 6.40062586e-11 0.24226594 -1.09236002e-10 + 0.13333334 + -0.317588896 -0.0227826741 -0.104305379 0.942198873 + -2.94603786e-11 0.24226594 -1.02035359e-11 + 0.166666672 + -0.277997106 0.00256905798 -0.126971394 0.952149868 + 6.67961311e-11 0.24226594 -4.09492891e-11 + 0.200000003 + -0.220268369 0.034827657 -0.164266959 0.960877359 + 5.26327419e-11 0.24226594 2.57716695e-11 + 0.233333334 + -0.169154331 0.046965491 -0.175934359 0.96862179 + 4.88995511e-11 0.24226594 -6.96674315e-11 + 0.266666681 + -0.102648929 0.0474798568 -0.169455856 0.979026914 + 1.51456452e-11 0.24226594 4.82188491e-11 + 0.300000012 + -0.0601522066 0.0283717923 -0.153697684 0.985877156 + 4.61157848e-11 0.24226594 1.27838712e-11 + 0.333333343 + -0.0443311632 -0.0253977627 -0.132141322 0.989913285 + -7.15857582e-12 0.24226594 -5.32439509e-11 + 0.366666675 + -0.0295721665 -0.107427634 -0.0998427495 0.988744795 + 5.67639789e-11 0.24226594 2.61518099e-11 + 0.400000006 + -0.00620199367 -0.187502861 -0.079111509 0.979053438 + 1.02885166e-11 0.24226594 1.3413369e-10 + 0.433333337 + 0.0359212719 -0.238634631 -0.0757591203 0.967483222 + 2.73354308e-11 0.24226594 -2.20836821e-10 + 0.466666669 + 0.102869786 -0.247989088 -0.0799215659 0.959964514 + -2.69372424e-11 0.24226594 1.58724867e-10 + 0.5 + 0.184319139 -0.230466306 -0.0819391385 0.951944232 + -9.38473466e-11 0.24226594 3.07151915e-10 + 0.533333361 + 0.24001421 -0.209123477 -0.0850095153 0.944157839 + 5.41848511e-11 0.24226594 1.0703047e-11 + 0.566666722 + 0.229815274 -0.21100226 -0.0715806112 0.94738549 + 3.16617826e-13 0.24226594 7.98223727e-12 + 0.600000083 + 0.112213463 -0.259981483 -0.045151975 0.958007872 + 3.24598647e-11 0.24226594 -2.7918644e-12 + 0.633333445 + -0.0687191337 -0.325578928 0.0209855791 0.942780852 + 3.57744043e-11 0.24226594 4.36443763e-12 + 0.666666806 + -0.216753453 -0.359514415 0.0997319371 0.902120233 + -3.11239021e-11 0.24226597 7.85178086e-12 + 0.700000167 + -0.301437199 -0.36221388 0.165338248 0.866371751 + -2.78583909e-11 0.24226594 3.68169141e-11 + 0.733333528 + -0.361941934 -0.347747654 0.205615222 0.840114295 + 1.41913859e-11 0.24226594 -9.17242463e-11 + 0.766666889 + -0.399175704 -0.319582701 0.214334965 0.832217634 + -1.47610986e-11 0.24226594 2.46393479e-11 + 0.80000025 + -0.396187574 -0.286342502 0.192326084 0.850913703 + 8.19500162e-11 0.24226594 -1.62426655e-10 + 0.833333611 + -0.355752438 -0.217867523 0.117625326 0.901187181 + -3.41157137e-11 0.24226594 1.05835909e-10 + 0.866666973 + -0.277303755 -0.141714692 0.0293552019 0.949819922 + 9.6736695e-11 0.24226594 -2.15651705e-10 + 0.900000334 + -0.157132566 -0.0835531726 -0.0508442409 0.982722342 + 7.3416398e-11 0.24226594 8.35638017e-11 + 0.933333695 + -0.0651290715 -0.0609759018 -0.0936870798 0.991596162 + -1.11901946e-11 0.24226594 1.0088811e-10 + 0.966667056 + -0.0253584329 -0.0799809247 -0.0963624343 0.991803527 + -4.86053836e-11 0.24226594 -5.65994161e-11 + 1.00000036 + -0.00424767938 -0.12579149 -0.0720122457 0.989430487 + 2.82082621e-11 0.24226594 7.02405564e-11 + 1.03333366 + 0.0166493375 -0.177415624 -0.0539486408 0.982515216 + 2.1448442e-11 0.24226594 1.28233067e-11 + 1.06666696 + 0.0573889054 -0.21653749 -0.0602531023 0.972721756 + 2.60601488e-11 0.24226594 -1.94565919e-10 + 1.10000026 + 0.118089907 -0.247973979 -0.0857062116 0.957715034 + -1.5917578e-11 0.24226594 1.33407521e-10 + 1.13333356 + 0.185635582 -0.279327363 -0.120476998 0.934345245 + -7.94983593e-11 0.24226594 2.33775527e-10 + 1.16666687 + 0.233380482 -0.3007963 -0.165136471 0.909826934 + 2.142201e-11 0.24226594 1.51208462e-10 + 1.20000017 + 0.239704296 -0.304383337 -0.189106792 0.902292252 + 1.89049835e-11 0.24226594 -6.08054058e-12 + 1.23333347 + 0.188656688 -0.264985204 -0.2012752 0.92394793 + -4.93912463e-12 0.24226594 -6.13005133e-11 + 1.26666677 + 0.0979390591 -0.187239259 -0.205735371 0.95552212 + 3.01866969e-11 0.24226594 -6.13567877e-11 + 1.30000007 + 0.00112472079 -0.124028251 -0.208978951 0.9700225 + -2.04929042e-11 0.24226594 9.17611889e-11 + 1.33333337 + -0.0887731537 -0.113224767 -0.19656536 0.969877064 + 1.62825135e-11 0.24226594 3.61910675e-11 + 1.36666667 + -0.167786419 -0.122054912 -0.183773309 0.96082145 + 1.02329516e-11 0.24226594 -1.11217563e-10 + 1.39999998 + -0.204273924 -0.125326097 -0.184192464 0.953225434 + -5.67055708e-11 0.24226594 -5.59191443e-11 + 1.43333328 + -0.195949495 -0.11994072 -0.192018434 0.954121053 + 2.02913953e-11 0.24226594 -7.43881415e-11 + 1.46666658 + -0.19870995 -0.113105245 -0.204787657 0.951726675 + -4.59277755e-11 0.24226594 -4.74699377e-11 + 1.49999988 + -0.216530845 -0.121017866 -0.191667244 0.949596167 + 3.64201447e-11 0.24226594 -6.06195233e-11 + 1.53333318 + -0.213511169 -0.127963319 -0.174928293 0.952595711 + -1.07752952e-10 0.24226594 2.26714716e-10 + 1.56666648 + -0.213687241 -0.133339167 -0.162501082 0.954018772 + 6.93572144e-11 0.24226594 4.89949054e-11 + 1.59999979 + -0.216339886 -0.134832993 -0.159740627 0.953677118 + 8.49988135e-11 0.24226594 -9.35730729e-11 + 1.63333309 + -0.141414195 -0.152169019 -0.131578967 0.969295442 + 3.31016291e-11 0.24226594 -1.89652374e-11 + 1.66666639 + 0.0113357548 -0.158040345 -0.0826270431 0.983904243 + 1.33667296e-12 0.24226594 -7.10923542e-11 + 1.69999969 + 0.134297356 -0.135632247 -0.0558020547 0.980027676 + 7.07407813e-11 0.24226597 -3.35792838e-10 + 1.73333299 + 0.172245011 -0.107761629 -0.0642937869 0.977028847 + -7.04744683e-12 0.24226594 5.22817345e-11 + 1.76666629 + 0.173364729 -0.0790739432 -0.0896712914 0.97757405 + -2.70665625e-11 0.24226594 1.26209446e-10 + 1.79999959 + 0.160877794 -0.0493073203 -0.139578685 0.975809932 + -4.99130667e-11 0.24226594 2.03494319e-10 + 1.8333329 + 0.151766494 -0.0195181891 -0.190119684 0.9697631 + 3.67236901e-11 0.24226594 9.67872865e-11 + 1.8666662 + 0.171963662 0.0120192096 -0.240873709 0.955125093 + -3.23882414e-11 0.24226594 -9.33709967e-12 + 1.8999995 + "R_Ring_sjnt_1" + 58 + 0.343785673 0.00455161557 -0.0248589236 0.938708007 + 9.22976903e-11 0.0443951264 7.48201501e-12 + 0 + 0.316345543 0.0045964215 -0.0228801537 0.948356986 + 7.85524146e-11 0.0443951264 5.56270412e-11 + 0.0333333351 + 0.286164135 0.00464076176 -0.020703638 0.957945704 + -4.39845833e-11 0.0443951264 1.1825306e-10 + 0.0666666701 + 0.25938943 0.00467588333 -0.0187727381 0.965579033 + -2.66416576e-11 0.0443951264 -2.23320099e-10 + 0.100000001 + 0.242705911 0.00469580898 -0.0175695494 0.969929457 + -4.68597244e-11 0.0443951264 -1.99646868e-10 + 0.13333334 + 0.239477903 0.00469949283 -0.0173367504 0.970735669 + 1.23590383e-11 0.0443951264 -8.38819153e-11 + 0.166666672 + 0.246798322 0.00469105877 -0.0178646874 0.968890846 + 2.28091309e-12 0.0443951264 -1.6470672e-10 + 0.200000003 + 0.261426687 0.00467334827 -0.0189196579 0.965026617 + 2.03490905e-11 0.0443951264 -1.14387432e-11 + 0.233333334 + 0.280455679 0.00464857742 -0.0202919655 0.959641218 + 6.00924449e-11 0.0443951264 1.14816448e-10 + 0.266666681 + 0.300979346 0.00461963424 -0.0217720345 0.953370929 + -2.16347461e-11 0.0443951264 -3.11391087e-11 + 0.300000012 + 0.320152193 0.00459046382 -0.0231546629 0.947072029 + 4.7686511e-11 0.0443951264 -4.18617675e-11 + 0.333333343 + 0.335202038 0.00456609903 -0.0242399462 0.941823304 + -1.48641058e-10 0.0443951264 3.6922642e-11 + 0.366666675 + 0.343392015 0.00455228752 -0.0248305369 0.938852847 + -3.22954441e-11 0.0443951264 -1.86210228e-10 + 0.400000006 + 0.341974467 0.00455470756 -0.0247283187 0.939372838 + 4.87996484e-11 0.0443951264 8.69042061e-11 + 0.433333337 + 0.329724789 0.00457511749 -0.0238449704 0.943764865 + -1.31084907e-10 0.0443951301 -6.25118429e-11 + 0.466666669 + 0.309093773 0.00460754195 -0.0223572012 0.950757563 + 7.70751241e-11 0.0443951264 7.54363308e-11 + 0.5 + 0.283676505 0.00464418996 -0.0205242392 0.958689153 + 2.11256859e-10 0.0443951264 4.4456952e-11 + 0.533333361 + 0.257019222 0.00467880489 -0.0186018012 0.966215968 + -9.6202081e-11 0.0443951264 -1.54093977e-11 + 0.566666722 + 0.232783854 0.00470695691 -0.0168539807 0.972371101 + 9.04289213e-11 0.0443951264 -3.49660925e-11 + 0.600000083 + 0.214716822 0.00472592376 -0.0155509869 0.976541162 + 5.14924631e-11 0.0443951264 -1.32962426e-11 + 0.633333445 + 0.206620485 0.00473387074 -0.0149670709 0.978295267 + -5.47672107e-12 0.0443951264 -1.1696386e-11 + 0.666666806 + 0.212004036 0.00472862413 -0.0153553365 0.977136731 + 8.33253442e-13 0.0443951264 3.14145151e-12 + 0.700000167 + 0.22824885 0.00471187895 -0.016526917 0.973451197 + 1.41414354e-11 0.0443951264 4.38262762e-13 + 0.733333528 + 0.250170976 0.0046870783 -0.0181079209 0.968021035 + -2.03145591e-11 0.0443951264 7.17008657e-12 + 0.766666889 + 0.272518843 0.00465914933 -0.0197195914 0.96193701 + 1.47403513e-11 0.0443951264 -9.13189554e-13 + 0.80000025 + 0.290365756 0.00463489164 -0.0210066382 0.95667398 + -1.06860368e-10 0.0443951264 -7.18389931e-11 + 0.833333611 + 0.295495123 0.00462759845 -0.0213765409 0.95509392 + 9.66008384e-11 0.0443951264 5.69553987e-11 + 0.866666973 + 0.291537017 0.0046332404 -0.0210911036 0.956315815 + -3.6533266e-11 0.0443951264 -1.15466031e-11 + 0.900000334 + 0.294948965 0.00462837983 -0.021337159 0.955263555 + -2.51474147e-10 0.0443951264 -2.88508765e-11 + 0.933333695 + 0.331197292 0.00457271095 -0.0239511579 0.943246424 + 1.32368852e-10 0.0443951264 5.14444286e-11 + 0.966667056 + 0.400696903 0.0044444357 -0.0289627388 0.91574204 + -1.18704616e-10 0.0443951264 1.6009323e-10 + 1.00000036 + 0.462437689 0.00430491939 -0.033414498 0.886011481 + 4.96031306e-11 0.0443951264 -8.5000236e-11 + 1.03333366 + 0.484182298 0.00424958998 -0.0349822901 0.874257207 + -5.09001556e-11 0.0443951264 -1.71547741e-11 + 1.06666696 + 0.481466323 0.00425668713 -0.0347864665 0.875763655 + -1.05311808e-10 0.0443951301 1.68091097e-10 + 1.10000026 + 0.482003778 0.00425528409 -0.034825217 0.875466466 + 4.81833219e-11 0.0443951264 2.56312662e-11 + 1.13333356 + 0.478652239 0.00426398078 -0.0345835723 0.877312899 + 1.23009436e-10 0.0443951264 5.67229111e-11 + 1.16666687 + 0.44510442 0.00434665009 -0.0321647301 0.894890308 + 8.11233719e-11 0.0443951264 1.63106507e-11 + 1.20000017 + 0.384109527 0.00447771233 -0.0277666654 0.922859073 + 9.47199957e-11 0.0443951264 -2.60513377e-12 + 1.23333347 + 0.339023173 0.00455970317 -0.0245154947 0.940447509 + 5.16141088e-11 0.0443951264 4.39928267e-11 + 1.26666677 + 0.324293345 0.00458388915 -0.0234532934 0.94565469 + -3.76508061e-11 0.0443951264 -2.95295871e-11 + 1.30000007 + 0.321685225 0.00458804285 -0.0232652146 0.946549714 + 1.21781904e-10 0.0443951264 1.37702044e-10 + 1.33333337 + 0.32724759 0.00457914034 -0.0236663315 0.9446311 + 2.73172405e-11 0.0443951264 2.25685425e-11 + 1.36666667 + 0.337040097 0.00456303358 -0.024372492 0.941163778 + -7.29596661e-11 0.0443951264 -2.18455795e-10 + 1.39999998 + 0.347119808 0.0045458721 -0.025099352 0.937473893 + -1.45178088e-11 0.0443951264 -2.44718579e-10 + 1.43333328 + 0.353205532 0.00453522243 -0.0255381986 0.935186148 + -2.2256471e-11 0.0443951264 -3.09415792e-11 + 1.46666658 + 0.354722261 0.00453253416 -0.0256475732 0.934608936 + 1.44950718e-12 0.0443951264 8.55010299e-11 + 1.49999988 + 0.354584157 0.00453278003 -0.0256376136 0.934661567 + -3.43493393e-11 0.0443951264 -2.37429278e-11 + 1.53333318 + 0.354117095 0.00453360844 -0.0256039333 0.934839547 + 1.0906831e-10 0.0443951264 9.84084619e-11 + 1.56666648 + 0.353251964 0.00453514094 -0.0255415458 0.935168505 + -6.4458161e-11 0.0443951264 -1.47917945e-11 + 1.59999979 + 0.352079242 0.00453721127 -0.0254569836 0.935612977 + -1.72977369e-10 0.0443951264 -1.15289818e-11 + 1.63333309 + 0.350689948 0.0045396518 -0.0253568012 0.936137259 + -1.01555032e-11 0.0443951264 -2.59751682e-11 + 1.66666639 + 0.349174678 0.00454230141 -0.0252475329 0.936706483 + 3.42532738e-11 0.0443951264 -1.10885592e-10 + 1.69999969 + 0.347624511 0.00454499898 -0.0251357518 0.937285841 + -3.94837801e-10 0.0443951301 3.92767541e-10 + 1.73333299 + 0.346130878 0.00454758387 -0.0250280388 0.937841356 + 1.15699089e-10 0.0443951264 -1.22019506e-10 + 1.76666629 + 0.344776124 0.00454991683 -0.0249303468 0.93834281 + 7.17710683e-11 0.0443951264 1.07866069e-11 + 1.79999959 + 0.343734801 0.00455170358 -0.0248552579 0.938726723 + 1.10708102e-10 0.0443951264 3.80441616e-11 + 1.8333329 + 0.343785673 0.0045516151 -0.0248589236 0.938708007 + -3.93526964e-12 0.0443951264 -1.79352349e-11 + 1.8666662 + 0.343785673 0.00455161463 -0.0248589236 0.938708007 + 5.56877912e-11 0.0443951264 3.30260255e-12 + 1.8999995 + "L_Leg_sjnt_1" + 58 + 0.400797129 -0.0311135165 -0.0140303727 0.91553086 + 2.61005425e-07 -0.461806506 -3.93130151e-08 + 0 + 0.332733721 -0.0339333378 -0.0128793223 0.942322135 + 2.61005539e-07 -0.461806506 -3.93129582e-08 + 0.0333333351 + 0.242728785 -0.0323539227 -0.00928024296 0.969510138 + 2.61005539e-07 -0.461806506 -3.93128943e-08 + 0.0666666701 + 0.273834884 -0.0273700859 -0.0094898995 0.961340368 + 2.61005539e-07 -0.461806506 -3.93128623e-08 + 0.100000001 + 0.431744456 -0.020195717 -0.010907161 0.901703954 + 2.61005482e-07 -0.461806506 -3.93128836e-08 + 0.13333334 + 0.60934037 -0.0112610441 -0.00874597952 0.792780638 + 2.61005482e-07 -0.461806506 -3.93126562e-08 + 0.166666672 + 0.757622361 -0.00367293949 -0.00448153447 0.652667522 + 2.61005539e-07 -0.461806506 -3.93129156e-08 + 0.200000003 + 0.861377835 0.001971283 0.0020429038 0.507956922 + 2.61005539e-07 -0.461806506 -3.9313008e-08 + 0.233333334 + 0.90915817 0.00313771632 0.00637570024 0.41639033 + 2.61005454e-07 -0.461806506 -3.93128339e-08 + 0.266666681 + 0.902320862 -4.88293954e-05 -0.000897981925 0.431064159 + 2.61005482e-07 -0.461806506 -3.93128801e-08 + 0.300000012 + 0.837658823 -0.00426995708 -0.00571335526 0.546147346 + 2.61005482e-07 -0.461806506 -3.93129795e-08 + 0.333333343 + 0.718352556 -0.0103938868 -0.00941044744 0.695538044 + 2.61005539e-07 -0.461806476 -3.93128126e-08 + 0.366666675 + 0.558225811 -0.0174534712 -0.0102913398 0.829441667 + 2.61005539e-07 -0.461806506 -3.9312738e-08 + 0.400000006 + 0.369825333 -0.0245237947 -0.00803910196 0.928742826 + 2.61005596e-07 -0.461806506 -3.93130222e-08 + 0.433333337 + 0.210297316 -0.0293236244 -0.00532336207 0.977183163 + 2.61005425e-07 -0.461806506 -3.93128978e-08 + 0.466666669 + 0.213796407 -0.0359206498 -0.00924030039 0.976173937 + 2.61005653e-07 -0.461806506 -3.93128801e-08 + 0.5 + 0.294512361 -0.0350912139 -0.013496235 0.954907835 + 2.61005681e-07 -0.461806506 -3.9312944e-08 + 0.533333361 + 0.385280192 -0.0272876807 -0.0118321516 0.922320247 + 2.61005454e-07 -0.461806506 -3.93126989e-08 + 0.566666722 + 0.421931744 -0.0281086098 -0.0120421238 0.906111836 + 2.61005482e-07 -0.461806506 -3.93128801e-08 + 0.600000083 + 0.404716641 -0.0308570117 -0.0125170676 0.913835645 + 2.61005425e-07 -0.461806506 -3.93129405e-08 + 0.633333445 + 0.341762275 -0.0337100551 -0.0117686633 0.939107955 + 2.61005511e-07 -0.461806506 -3.93130755e-08 + 0.666666806 + 0.262211233 -0.0317766108 -0.00865243655 0.964448392 + 2.61005539e-07 -0.461806566 -3.93128801e-08 + 0.700000167 + 0.292818666 -0.0264422931 -0.00861257687 0.955763519 + 2.61005567e-07 -0.461806506 -3.9312873e-08 + 0.733333528 + 0.44341135 -0.0192525648 -0.00952644087 0.896060824 + 2.61005482e-07 -0.461806506 -3.93129476e-08 + 0.766666889 + 0.616321146 -0.0106655639 -0.00731968926 0.787388623 + 2.61005511e-07 -0.461806506 -3.93127522e-08 + 0.80000025 + 0.761666 -0.00361789344 -0.00349822524 0.647950351 + 2.61005539e-07 -0.461806506 -3.93127451e-08 + 0.833333611 + 0.86331147 0.00198845239 0.00289609726 0.504659295 + 2.61005596e-07 -0.461806506 -3.93129227e-08 + 0.866666973 + 0.909935474 0.00313881366 0.00693965517 0.414680004 + 2.61005397e-07 -0.461806506 -3.93129405e-08 + 0.900000334 + 0.902518034 -5.66396629e-05 -0.00075258658 0.430651367 + 2.61005596e-07 -0.461806506 -3.93129866e-08 + 0.933333695 + 0.837508857 -0.00425143447 -0.00580069423 0.546376526 + 2.61005567e-07 -0.461806506 -3.9313008e-08 + 0.966667056 + 0.718187094 -0.0103321327 -0.00959986448 0.695707202 + 2.61005482e-07 -0.461806476 -3.9312738e-08 + 1.00000036 + 0.558630466 -0.0173835047 -0.0105815167 0.829167008 + 2.61005539e-07 -0.461806506 -3.93128445e-08 + 1.03333366 + 0.371686041 -0.0244884901 -0.00844184961 0.927997053 + 2.61005596e-07 -0.461806506 -3.93130897e-08 + 1.06666696 + 0.214817777 -0.0293886252 -0.0057956269 0.97619468 + 2.61005454e-07 -0.461806506 -3.93130755e-08 + 1.10000026 + 0.218001306 -0.0359304324 -0.00970969629 0.975238502 + 2.61005624e-07 -0.461806506 -3.93127628e-08 + 1.13333356 + 0.296685904 -0.0350232869 -0.0138894124 0.95423162 + 2.61005596e-07 -0.461806506 -3.93127699e-08 + 1.16666687 + 0.385929137 -0.0273172613 -0.0120553728 0.922045171 + 2.61005511e-07 -0.461806506 -3.93127877e-08 + 1.20000017 + 0.42194134 -0.0281204786 -0.0121336747 0.906105697 + 2.61005511e-07 -0.461806506 -3.93130257e-08 + 1.23333347 + 0.40471673 -0.0308570117 -0.0125170685 0.913835645 + 2.61005397e-07 -0.461806506 -3.93128445e-08 + 1.26666677 + 0.342234582 -0.0336956568 -0.0117051248 0.938937187 + 2.61005482e-07 -0.461806506 -3.93129795e-08 + 1.30000007 + 0.264341861 -0.0316982158 -0.00857025292 0.96386987 + 2.61005567e-07 -0.461806506 -3.93129262e-08 + 1.33333337 + 0.296157032 -0.0262538828 -0.00843695551 0.95474112 + 2.61005539e-07 -0.461806506 -3.93129085e-08 + 1.36666667 + 0.446415693 -0.0189908762 -0.00915068947 0.894577384 + 2.61005482e-07 -0.461806506 -3.93129582e-08 + 1.39999998 + 0.618767142 -0.0104477769 -0.00680560293 0.785475492 + 2.61005511e-07 -0.461806506 -3.93127699e-08 + 1.43333328 + 0.76350975 -0.00359177659 -0.00304341177 0.645779133 + 2.61005539e-07 -0.461806506 -3.93127486e-08 + 1.46666658 + 0.864428699 0.00199924433 0.00339505868 0.502739966 + 2.61005596e-07 -0.461806506 -3.93128623e-08 + 1.49999988 + 0.910496473 0.00313987513 0.00735028973 0.413439721 + 2.61005482e-07 -0.461806506 -3.93130257e-08 + 1.53333318 + 0.902695358 -6.36622135e-05 -0.00062171655 0.430279911 + 2.61005567e-07 -0.461806506 -3.93129156e-08 + 1.56666648 + 0.837341547 -0.00423094491 -0.00589786284 0.546631992 + 2.61005482e-07 -0.461806506 -3.93131039e-08 + 1.59999979 + 0.717953324 -0.0102483714 -0.00986132398 0.695945919 + 2.61005539e-07 -0.461806506 -3.93128659e-08 + 1.63333309 + 0.55930078 -0.0172670856 -0.0110806869 0.828710914 + 2.61005539e-07 -0.461806506 -3.93127273e-08 + 1.66666639 + 0.375618607 -0.0244201645 -0.0093152374 0.926405728 + 2.61005482e-07 -0.461806506 -3.93127984e-08 + 1.69999969 + 0.226821467 -0.0295819715 -0.00710189063 0.973461151 + 2.61005454e-07 -0.461806506 -3.93130257e-08 + 1.73333299 + 0.232858479 -0.0359925441 -0.0114367958 0.971777081 + 2.61005681e-07 -0.461806506 -3.93127451e-08 + 1.76666629 + 0.307793438 -0.0346849523 -0.0159704108 0.950686693 + 2.61005482e-07 -0.461806506 -3.93128765e-08 + 1.79999959 + 0.391152054 -0.027598165 -0.0139546786 0.919806361 + 2.61005596e-07 -0.461806506 -3.93127984e-08 + 1.8333329 + 0.421843916 -0.0283449795 -0.0137770316 0.906120598 + 2.61005596e-07 -0.461806506 -3.93130755e-08 + 1.8666662 + 0.400797486 -0.0311134271 -0.0140303252 0.915530741 + 2.61005511e-07 -0.461806506 -3.93129014e-08 + 1.8999995 + "R_Middle_sjnt_2" + 58 + 0.318740517 0.00486590387 -0.0579521656 0.946056247 + 2.40110501e-11 0.0248499978 5.58092244e-12 + 0 + 0.285657525 0.00492731482 -0.0520527959 0.956904411 + 6.8427819e-11 0.0248499978 3.8026346e-11 + 0.0333333351 + 0.249232888 0.00498839887 -0.0455600172 0.96735847 + -8.36045885e-11 0.0248499978 2.67890588e-11 + 0.0666666701 + 0.21690169 0.00503830379 -0.0397987291 0.975368857 + 3.31958462e-12 0.0248499978 -1.86404767e-10 + 0.100000001 + 0.196767509 0.00505556818 -0.0362142697 0.979768097 + -1.0506227e-11 0.0248499978 -1.75578607e-10 + 0.13333334 + 0.192713663 0.00505921757 -0.0354925208 0.98059988 + 2.502837e-11 0.0248499978 -5.865642e-11 + 0.166666672 + 0.201104194 0.00505373348 -0.0369859375 0.978858352 + 2.4058408e-11 0.0248499978 -4.41100663e-11 + 0.200000003 + 0.218144044 0.00503297476 -0.0400208868 0.975082636 + 1.56759935e-12 0.0248499978 -3.14656743e-12 + 0.233333334 + 0.240497917 0.00499745645 -0.0440045409 0.969638884 + 1.25743471e-10 0.0248499978 1.01452569e-10 + 0.266666681 + 0.264817506 0.00495694112 -0.0483394414 0.963073492 + -8.61470548e-11 0.0248499978 -4.45143644e-11 + 0.300000012 + 0.287822455 0.00491607888 -0.0524410792 0.956234336 + 1.14626877e-10 0.0248499978 4.56225249e-12 + 0.333333343 + 0.306322932 0.0048883222 -0.055738043 0.950281918 + -1.28867292e-10 0.0248499978 2.95213437e-11 + 0.366666675 + 0.317160457 0.00487540662 -0.0576681346 0.946604431 + 1.49850188e-10 0.0248499978 -1.45759307e-10 + 0.400000006 + 0.317353964 0.00487681292 -0.057702031 0.946537495 + -7.68949314e-12 0.0248499978 6.66324218e-11 + 0.433333337 + 0.305906981 0.00489625288 -0.0556614809 0.95042032 + -7.11256123e-11 0.0248500016 -3.12641649e-11 + 0.466666669 + 0.285663217 0.00494107185 -0.0520486943 0.956902802 + 4.71405311e-11 0.0248499978 2.13466935e-11 + 0.5 + 0.260319114 0.0049910401 -0.0475236997 0.964339495 + 1.39168038e-10 0.0248499978 2.73621473e-11 + 0.533333361 + 0.233541608 0.00504141534 -0.0427423604 0.971393883 + -9.06277345e-11 0.0248499978 2.26259532e-11 + 0.566666722 + 0.209109873 0.00508702407 -0.0383787528 0.977125466 + 5.15427701e-11 0.0248499978 -2.318103e-11 + 0.600000083 + 0.19088456 0.00512414519 -0.0351206623 0.980970621 + 3.47779409e-11 0.0248499978 -1.46999912e-11 + 0.633333445 + 0.182785645 0.0051499824 -0.0336657576 0.982562721 + -6.84309467e-12 0.0248499978 -2.26577871e-12 + 0.666666806 + 0.188269019 0.00516146282 -0.0346289389 0.981493235 + -1.57982069e-12 0.0248499978 -8.04348602e-12 + 0.700000167 + 0.204588473 0.00516919885 -0.037519861 0.978115082 + 8.31136028e-12 0.0248499978 -1.06157921e-11 + 0.733333528 + 0.226566494 0.00517083472 -0.0414187573 0.973100901 + -1.0785115e-11 0.0248499978 1.92351018e-12 + 0.766666889 + 0.248959422 0.00516578322 -0.0453946553 0.967435718 + 1.09211841e-11 0.0248499978 -1.16500581e-12 + 0.80000025 + 0.266789913 0.00515599921 -0.0485644452 0.962516546 + -3.1837144e-11 0.0248499978 -1.21976734e-11 + 0.833333611 + 0.272366077 0.00514612487 -0.0495630763 0.960902631 + 3.18235022e-11 0.0248499978 1.08839509e-11 + 0.866666973 + 0.269178301 0.00513966009 -0.0490103103 0.961828828 + -1.77894314e-11 0.0248499978 5.89182002e-12 + 0.900000334 + 0.272388846 0.00506664254 -0.0496228747 0.960893452 + -1.39610767e-10 0.0248499978 1.59741369e-11 + 0.933333695 + 0.305088192 0.0047805449 -0.0555922203 0.950688124 + 8.81968283e-12 0.0248499978 7.74434683e-12 + 0.966667056 + 0.367822558 0.00427581184 -0.0670650825 0.927464604 + -1.88768459e-10 0.0248499978 7.76896047e-11 + 1.00000036 + 0.423769653 0.0038356795 -0.0773513839 0.902453005 + 8.8613207e-11 0.0248499978 -5.73947972e-11 + 1.03333366 + 0.443543077 0.00368477753 -0.081003271 0.89257741 + -2.32569155e-11 0.0248499978 -2.62770066e-11 + 1.06666696 + 0.441067487 0.00371131813 -0.0805624425 0.893843114 + -1.56968549e-10 0.0248500016 2.19742446e-10 + 1.10000026 + 0.441652507 0.00370544591 -0.0806651115 0.893544972 + 1.71257852e-11 0.0248499978 -3.21165317e-12 + 1.13333356 + 0.438013047 0.00370299979 -0.0799900517 0.89539516 + 5.83565904e-11 0.0248499978 1.5110118e-11 + 1.16666687 + 0.401536137 0.003715239 -0.073387444 0.912890673 + 5.26722485e-11 0.0248499978 -7.6590817e-12 + 1.20000017 + 0.335109442 0.00374356285 -0.0613386147 0.94017303 + 9.64649818e-11 0.0248499978 -3.88718016e-11 + 1.23333347 + 0.285614252 0.00378762651 -0.0522987247 0.95690912 + 6.49593782e-11 0.0248499978 -7.69659857e-12 + 1.26666677 + 0.268240094 0.00384808308 -0.0489902496 0.962097943 + -3.72594386e-11 0.0248499978 -1.41631056e-11 + 1.30000007 + 0.263271987 0.00392180867 -0.0478614531 0.963525712 + 8.60359214e-11 0.0248499978 8.78765116e-11 + 1.33333337 + 0.266913801 0.00399947027 -0.048258923 0.962503016 + 2.13202598e-11 0.0248499978 1.78619064e-11 + 1.36666667 + 0.275385618 0.00407344056 -0.049532976 0.960048258 + -2.6724364e-11 0.0248499978 -1.39232265e-10 + 1.39999998 + 0.284885734 0.00414090091 -0.0510313064 0.957193255 + 9.31441937e-11 0.0248499978 -1.15095128e-10 + 1.43333328 + 0.291265279 0.0042043007 -0.0520436428 0.955216408 + 2.45159969e-11 0.0248499978 -3.42510013e-11 + 1.46666658 + 0.294004887 0.00426681107 -0.0524852388 0.954352319 + 8.69096045e-11 0.0248499978 5.90176796e-11 + 1.49999988 + 0.295917809 0.00432835799 -0.0528377071 0.953741133 + 5.67467818e-12 0.0248499978 -2.26594923e-11 + 1.53333318 + 0.298188686 0.00438882411 -0.0532970428 0.953007698 + 1.23944799e-10 0.0248499978 6.17501397e-11 + 1.56666648 + 0.300620705 0.00444903364 -0.0538206883 0.952213645 + -9.76476122e-11 0.0248499978 -2.16459728e-12 + 1.59999979 + 0.303176105 0.00450814376 -0.0543940812 0.95137018 + -1.7978706e-10 0.0248499978 1.58479445e-11 + 1.63333309 + 0.305817425 0.00456745969 -0.0550019704 0.950489163 + 3.18300386e-11 0.0248499978 -1.44052591e-11 + 1.66666639 + 0.308507234 0.00462858565 -0.0556290373 0.949582696 + 7.25299265e-11 0.0248499978 -1.07037289e-10 + 1.69999969 + 0.311208159 0.00468789693 -0.05626164 0.948663354 + -3.74193398e-10 0.0248500016 3.85676907e-10 + 1.73333299 + 0.31388253 0.0047356342 -0.0568882041 0.947744191 + 1.17490795e-10 0.0248499978 -1.27881206e-10 + 1.76666629 + 0.316520274 0.00478053093 -0.0574969798 0.946829557 + 3.57897531e-11 0.0248499978 2.92402539e-12 + 1.79999959 + 0.318844855 0.00481686275 -0.0580218285 0.946017027 + -2.45222505e-12 0.0248499978 1.20735418e-11 + 1.8333329 + 0.31873253 0.0048150802 -0.0579964221 0.946056485 + 1.03412391e-11 0.0248499978 2.56136432e-12 + 1.8666662 + 0.31873253 0.00481508067 -0.0579964258 0.946056485 + -1.31262822e-11 0.0248499978 -2.98996369e-13 + 1.8999995 + "L_Foot_sjnt_0" + 58 + -0.723687291 -0.0531343892 0.000497720961 0.688079298 + -9.25210543e-07 -0.388170779 2.78095591e-08 + 0 + -0.696200788 -0.0444227271 -0.0155693125 0.716302097 + -9.25209861e-07 -0.388170779 2.78089249e-08 + 0.0333333351 + -0.585604787 -0.0345057696 -0.00309644477 0.809856057 + -9.25209974e-07 -0.388170779 2.78087207e-08 + 0.0666666701 + -0.520281434 -0.017319927 0.013222632 0.85371685 + -9.2520952e-07 -0.388170779 2.78088397e-08 + 0.100000001 + -0.534567058 -0.0436760858 0.00610271469 0.84397471 + -9.25209122e-07 -0.388170779 2.78085874e-08 + 0.13333334 + -0.565636754 -0.0381154306 0.020454485 0.82351923 + -9.25210657e-07 -0.388170779 2.78056742e-08 + 0.166666672 + -0.593199193 -0.0206704549 0.0470527783 0.803413689 + -9.25208667e-07 -0.388170779 2.78091168e-08 + 0.200000003 + -0.619452059 -0.027013557 0.0603783987 0.782242894 + -9.25209122e-07 -0.388170779 2.78095804e-08 + 0.233333334 + -0.664699852 -0.0465784781 0.0781941041 0.741545916 + -9.25208724e-07 -0.388170779 2.78088841e-08 + 0.266666681 + -0.713818252 -0.0450685956 0.086428903 0.693514466 + -9.25209747e-07 -0.388170779 2.78089214e-08 + 0.300000012 + -0.723205626 -0.0296700317 0.105518103 0.681879163 + -9.25210372e-07 -0.388170779 2.7809044e-08 + 0.333333343 + -0.688834965 0.00368593843 0.119054645 0.715065539 + -9.25208781e-07 -0.388170779 2.78084205e-08 + 0.366666675 + -0.638307333 0.0228595827 0.0939436331 0.763685644 + -9.25208838e-07 -0.388170779 2.78068608e-08 + 0.400000006 + -0.600812733 -0.00454091188 0.0267897714 0.798927844 + -9.25208838e-07 -0.388170779 2.78088006e-08 + 0.433333337 + -0.589309335 -0.0236307885 -0.0423431471 0.806451023 + -9.25211282e-07 -0.388170779 2.78098735e-08 + 0.466666669 + -0.60427475 -0.0123231644 -0.0124949627 0.796582699 + -9.25207814e-07 -0.388170779 2.78088077e-08 + 0.5 + -0.584548593 -0.0570062809 0.0255821459 0.808949232 + -9.25208781e-07 -0.388170779 2.7808353e-08 + 0.533333361 + -0.614737153 -0.0545618683 0.0281179454 0.786340058 + -9.25210827e-07 -0.388170779 2.78089054e-08 + 0.566666722 + -0.688553572 -0.0628610179 0.0181259904 0.722228527 + -9.25209974e-07 -0.388170779 2.78086407e-08 + 0.600000083 + -0.720563173 -0.0553547032 0.00689818058 0.691141784 + -9.25210543e-07 -0.388170779 2.78089871e-08 + 0.633333445 + -0.696304023 -0.0477123931 -0.00766678015 0.716118336 + -9.25210088e-07 -0.388170779 2.78087722e-08 + 0.666666806 + -0.590755463 -0.038569089 0.00505754771 0.805912495 + -9.25209633e-07 -0.388170779 2.78090706e-08 + 0.700000167 + -0.52578342 -0.0208206996 0.0201387405 0.850125194 + -9.25209065e-07 -0.388170779 2.78090884e-08 + 0.733333528 + -0.537157595 -0.0458249375 0.0111771198 0.842162073 + -9.25209577e-07 -0.388170779 2.78090297e-08 + 0.766666889 + -0.567050576 -0.0389134102 0.0233488735 0.822431922 + -9.25210145e-07 -0.388170779 2.7806923e-08 + 0.80000025 + -0.594110489 -0.0206648484 0.0480361469 0.802681863 + -9.2520753e-07 -0.388170779 2.78066441e-08 + 0.833333611 + -0.619734108 -0.0268219225 0.0611255355 0.781967938 + -9.25209804e-07 -0.388170779 2.78089711e-08 + 0.866666973 + -0.664458573 -0.0463741757 0.0786719769 0.741724372 + -9.25208724e-07 -0.388170779 2.78086976e-08 + 0.900000334 + -0.713609397 -0.0450112484 0.0865706056 0.693715513 + -9.25210486e-07 -0.388170779 2.78093353e-08 + 0.933333695 + -0.723453939 -0.0296922624 0.105411872 0.681631207 + -9.25209065e-07 -0.388170779 2.7809083e-08 + 0.966667056 + -0.689605892 0.00370769179 0.118804298 0.714363694 + -9.25208951e-07 -0.388170779 2.78072232e-08 + 1.00000036 + -0.639618814 0.0229746345 0.0936287269 0.762622893 + -9.2520952e-07 -0.388170779 2.7807836e-08 + 1.03333366 + -0.602801085 -0.00441435585 0.0265638772 0.797437012 + -9.25208269e-07 -0.388170779 2.78086887e-08 + 1.06666696 + -0.592358291 -0.0236321799 -0.0424071364 0.804210722 + -9.25211168e-07 -0.388170779 2.78076637e-08 + 1.10000026 + -0.607064128 -0.0122754704 -0.0126235001 0.794457734 + -9.25208496e-07 -0.388170779 2.78100032e-08 + 1.13333356 + -0.58632201 -0.0570829883 0.0257857423 0.807652891 + -9.25209577e-07 -0.388170779 2.78095644e-08 + 1.16666687 + -0.615566432 -0.054444667 0.0278134309 0.785710037 + -9.25209861e-07 -0.388170779 2.78080243e-08 + 1.20000017 + -0.688805878 -0.0627871007 0.0179017242 0.721999824 + -9.25210088e-07 -0.388170779 2.78088503e-08 + 1.23333347 + -0.720563173 -0.0553547107 0.00689819641 0.691141844 + -9.25211339e-07 -0.388170779 2.78093886e-08 + 1.26666677 + -0.696296215 -0.0478930511 -0.00722846529 0.716118455 + -9.25210486e-07 -0.388170779 2.7808996e-08 + 1.30000007 + -0.591285408 -0.0390367247 0.00601401413 0.805494606 + -9.25209008e-07 -0.388170779 2.78090138e-08 + 1.33333337 + -0.526705861 -0.0214645881 0.0214353763 0.849506199 + -9.25209235e-07 -0.388170779 2.7808678e-08 + 1.36666667 + -0.537791312 -0.0463894159 0.0125316251 0.841707528 + -9.2520952e-07 -0.388170779 2.78089978e-08 + 1.39999998 + -0.567525744 -0.0391942523 0.0243842397 0.822060764 + -9.25210827e-07 -0.388170779 2.78069514e-08 + 1.43333328 + -0.594513416 -0.0206614882 0.0484901927 0.802356362 + -9.25207644e-07 -0.388170779 2.78066405e-08 + 1.46666658 + -0.6198861 -0.0267094094 0.0615621209 0.781817079 + -9.25210372e-07 -0.388170779 2.78082197e-08 + 1.49999988 + -0.664275467 -0.0462254882 0.0790200606 0.741860569 + -9.2520952e-07 -0.388170779 2.78091292e-08 + 1.53333318 + -0.713420033 -0.0449597128 0.0866982862 0.693897545 + -9.25210657e-07 -0.388170779 2.78089409e-08 + 1.56666648 + -0.723729134 -0.0297170784 0.105293848 0.681356251 + -9.2521168e-07 -0.388170779 2.78094507e-08 + 1.59999979 + -0.690660119 0.00373647758 0.118459992 0.713401616 + -9.25208326e-07 -0.388170779 2.78087757e-08 + 1.63333309 + -0.6418522 0.0231688004 0.0930884182 0.760804594 + -9.25210088e-07 -0.388170779 2.78066548e-08 + 1.66666639 + -0.607058406 -0.00414514495 0.0260717068 0.7942186 + -9.25210145e-07 -0.388170779 2.78088361e-08 + 1.69999969 + -0.600581586 -0.0236271564 -0.0426130258 0.798077464 + -9.25211339e-07 -0.388170809 2.78077312e-08 + 1.73333299 + -0.617091 -0.0120889656 -0.0131454449 0.786689162 + -9.25207473e-07 -0.388170779 2.78095378e-08 + 1.76666629 + -0.595542848 -0.0574865676 0.0268400256 0.80081445 + -9.252106e-07 -0.388170779 2.78094525e-08 + 1.79999959 + -0.622466445 -0.0534578525 0.0252058413 0.78041172 + -9.25209008e-07 -0.388170779 2.78081025e-08 + 1.8333329 + -0.693211317 -0.0614543483 0.0138498414 0.717976034 + -9.25208951e-07 -0.388170779 2.78088432e-08 + 1.8666662 + -0.723687112 -0.0531343743 0.000497796631 0.688079536 + -9.25209974e-07 -0.388170779 2.78091736e-08 + 1.8999995 + "R_Arm_sjnt_1" + 58 + 0.677217364 0.000470421102 -0.0778079331 0.731657326 + -1.27258197e-12 0.260629684 1.00527583e-12 + 0 + 0.6909796 0.00403597998 -0.0736977309 0.719096363 + -2.38671306e-13 0.260629684 4.22772928e-13 + 0.0333333351 + 0.70662266 0.00716447411 -0.0705547556 0.704027832 + 1.59097616e-12 0.260629684 -6.13198348e-13 + 0.0666666701 + 0.72248894 0.00668244576 -0.0729468837 0.687491 + 3.58539858e-13 0.260629684 -6.41762197e-13 + 0.100000001 + 0.728608251 -0.00548299169 -0.0953661799 0.678236902 + -1.2242651e-13 0.260629684 9.59516863e-13 + 0.13333334 + 0.721763432 -0.00753823994 -0.0980738178 0.685114861 + 6.72315502e-13 0.260629684 7.67386155e-13 + 0.166666672 + 0.701454282 -0.00881579798 -0.0964816809 0.706098855 + -5.33262291e-13 0.260629684 4.55599967e-13 + 0.200000003 + 0.656175971 -0.0224859826 -0.10675364 0.74668014 + -1.88578035e-13 0.260629684 -5.1691984e-13 + 0.233333334 + 0.626743138 -0.0231424998 -0.0998071507 0.772460938 + -9.99023049e-14 0.260629684 7.76907401e-13 + 0.266666681 + 0.656848669 -0.0206220932 -0.101678424 0.746850848 + -1.04876103e-13 0.260629684 -8.22524232e-13 + 0.300000012 + 0.711639524 -0.0129347909 -0.100351393 0.69522047 + 1.08570928e-13 0.260629684 1.10063065e-12 + 0.333333343 + 0.777220726 0.013336272 -0.0614282638 0.626080453 + -4.17372788e-13 0.260629654 -1.14113157e-12 + 0.366666675 + 0.827336073 0.0273201168 -0.0318871699 0.560135603 + -1.50919275e-13 0.260629684 8.70272712e-13 + 0.400000006 + 0.862976491 0.0258263592 -0.031532377 0.503597379 + -1.51203485e-12 0.260629684 1.06297187e-13 + 0.433333337 + 0.880681753 0.02210325 -0.041013319 0.471411705 + 4.1154634e-13 0.260629684 -8.87041525e-13 + 0.466666669 + 0.870771587 0.0153286159 -0.0658273026 0.487020224 + -6.61088968e-13 0.260629684 1.98099309e-13 + 0.5 + 0.825627267 0.00219142833 -0.0975315571 0.555718005 + -1.26476602e-13 0.260629684 -9.39621644e-13 + 0.533333361 + 0.746661544 -0.021690242 -0.127970621 0.652418315 + -1.50691905e-12 0.260629684 -1.01437077e-12 + 0.566666722 + 0.685384274 -0.0253321063 -0.119951844 0.717787087 + -1.74509292e-13 0.260629684 5.81366064e-13 + 0.600000083 + 0.677217364 0.000470421102 -0.0778079331 0.731657326 + -7.35269593e-13 0.260629684 1.03042911e-12 + 0.633333445 + 0.6909796 0.00403597998 -0.0736977309 0.719096363 + -4.59436905e-13 0.260629654 5.57491824e-13 + 0.666666806 + 0.70662266 0.00716447411 -0.0705547556 0.704027832 + 3.95914394e-13 0.260629714 -2.48689958e-13 + 0.700000167 + 0.72248894 0.00668244576 -0.0729468837 0.687491 + -2.58211231e-13 0.260629684 -3.84119386e-13 + 0.733333528 + 0.728608251 -0.00548299169 -0.0953661799 0.678236902 + -4.69242429e-13 0.260629684 9.02105051e-13 + 0.766666889 + 0.721763432 -0.00753823994 -0.0980738178 0.685114861 + 1.56035178e-13 0.260629684 4.46220819e-14 + 0.80000025 + 0.701454282 -0.00881579798 -0.0964816809 0.706098855 + 2.11741737e-14 0.260629684 2.49769975e-12 + 0.833333611 + 0.656175971 -0.0224859826 -0.10675364 0.74668014 + -7.90691948e-13 0.260629684 -1.53647754e-12 + 0.866666973 + 0.626743138 -0.0231424998 -0.0998071507 0.772460938 + 1.10020435e-12 0.260629684 9.46442902e-13 + 0.900000334 + 0.656848669 -0.0206220932 -0.101678424 0.746850848 + -2.18278724e-13 0.260629684 -1.43472788e-12 + 0.933333695 + 0.711639524 -0.0129347909 -0.100351393 0.69522047 + -9.45306008e-13 0.260629684 -8.29913869e-14 + 0.966667056 + 0.777220726 0.013336272 -0.0614282638 0.626080453 + -4.53610484e-13 0.260629654 -6.72457641e-13 + 1.00000036 + 0.827336073 0.0273201168 -0.0318871699 0.560135603 + -6.0623506e-13 0.260629684 6.16182669e-13 + 1.03333366 + 0.862976491 0.0258263592 -0.031532377 0.503597379 + -7.51185789e-13 0.260629684 -1.63140606e-13 + 1.06666696 + 0.880681753 0.02210325 -0.041013319 0.471411705 + -5.69002636e-13 0.260629684 -5.7582384e-13 + 1.10000026 + 0.870771587 0.0153286159 -0.0658273026 0.487020224 + -4.9510618e-13 0.260629684 -9.86801678e-13 + 1.13333356 + 0.825627267 0.00219142833 -0.0975315571 0.555718005 + 1.18234307e-13 0.260629684 -6.19593285e-14 + 1.16666687 + 0.746661544 -0.021690242 -0.127970621 0.652418315 + -1.74054542e-12 0.260629684 -1.87355903e-12 + 1.20000017 + 0.685384274 -0.0253321063 -0.119951844 0.717787087 + -1.60298437e-13 0.260629684 2.90469851e-13 + 1.23333347 + 0.677217364 0.000470421102 -0.0778079331 0.731657326 + 2.19415591e-13 0.260629684 1.75106143e-12 + 1.26666677 + 0.6909796 0.00403597998 -0.0736977309 0.719096363 + 5.28643799e-14 0.260629684 1.0732037e-12 + 1.30000007 + 0.70662266 0.00716447411 -0.0705547556 0.704027832 + -6.36077833e-13 0.260629684 -2.78390646e-13 + 1.33333337 + 0.72248894 0.00668244576 -0.0729468837 0.687491 + -5.21254155e-13 0.260629684 -7.98650019e-14 + 1.36666667 + 0.728608251 -0.00548299169 -0.0953661799 0.678236902 + 5.42854641e-14 0.260629684 1.11967326e-12 + 1.39999998 + 0.721763432 -0.00753823994 -0.0980738178 0.685114861 + 9.31379431e-13 0.260629684 3.94777527e-13 + 1.43333328 + 0.701454282 -0.00881579798 -0.0964816809 0.706098855 + -5.34896563e-13 0.260629684 1.34264149e-12 + 1.46666658 + 0.656175971 -0.0224859826 -0.10675364 0.74668014 + 3.63229439e-13 0.260629684 4.36557447e-13 + 1.49999988 + 0.626743138 -0.0231424998 -0.0998071507 0.772460938 + 2.85353962e-13 0.260629684 8.18545196e-14 + 1.53333318 + 0.656848669 -0.0206220932 -0.101678424 0.746850848 + -1.59388941e-12 0.260629684 -2.27487365e-12 + 1.56666648 + 0.711639524 -0.0129347909 -0.100351393 0.69522047 + 1.94972917e-13 0.260629684 -1.50293992e-12 + 1.59999979 + 0.777220726 0.013336272 -0.0614282638 0.626080453 + 6.21866978e-13 0.260629654 -1.88720155e-12 + 1.63333309 + 0.827336073 0.0273201168 -0.0318871699 0.560135603 + 1.27897692e-13 0.260629684 -6.79847292e-13 + 1.66666639 + 0.862976491 0.0258263592 -0.031532377 0.503597379 + 7.95807867e-15 0.260629684 -1.17438502e-12 + 1.69999969 + 0.880681753 0.02210325 -0.041013319 0.471411705 + -2.00088833e-13 0.260629684 -2.67164058e-13 + 1.73333299 + 0.870771587 0.0153286159 -0.0658273026 0.487020224 + -4.95674628e-13 0.260629684 -3.7437076e-12 + 1.76666629 + 0.825627267 0.00219142833 -0.0975315571 0.555718005 + -3.24007483e-14 0.260629684 1.11413103e-13 + 1.79999959 + 0.746661544 -0.021690242 -0.127970621 0.652418315 + -1.21417535e-12 0.260629684 -2.1464074e-12 + 1.8333329 + 0.685384274 -0.0253321063 -0.119951844 0.717787087 + -3.33102415e-13 0.260629684 -8.13429294e-13 + 1.8666662 + 0.677217364 0.000470421102 -0.0778079331 0.731657326 + 1.70530253e-15 0.260629684 6.16182669e-13 + 1.8999995 + "C_Neck_sjnt_2" + 58 + -0.025758123 -0.00901230145 -0.0033778036 0.999621928 + -3.7259082e-15 0.0540000014 -1.77635684e-15 + 0 + -0.0237247441 0.0066069006 -0.00541047193 0.999682069 + -5.24469333e-15 0.0540000014 8.8817842e-15 + 0.0333333351 + -0.0186472666 0.0201024245 -0.00804580096 0.999591649 + 4.92938998e-15 0.0540000014 -6.46593866e-15 + 0.0666666701 + -0.0152590731 0.0303937141 -0.0107683856 0.999363542 + 1.0835777e-15 0.0540000014 -2.2026825e-15 + 0.100000001 + -0.0134947207 0.0358374417 -0.0140076391 0.999168336 + 9.57456313e-15 0.0540000014 -6.32383025e-15 + 0.13333334 + -0.0143684698 0.0348099172 -0.0177407078 0.99913317 + -1.54187762e-14 0.0540000014 -1.66266994e-14 + 0.166666672 + -0.0158960037 0.0288673677 -0.0197658297 0.999261379 + -2.09610098e-15 0.0540000014 1.84741105e-15 + 0.200000003 + -0.019225318 0.0211413819 -0.0214056522 0.999362409 + 5.31130697e-15 0.0540000014 2.13162808e-15 + 0.233333334 + -0.0247295164 0.0135980472 -0.0229389798 0.999338508 + -3.41060506e-15 0.0540000014 1.56319401e-15 + 0.266666681 + -0.0272315722 0.00453507993 -0.0220447797 0.999375761 + -8.96616054e-15 0.0540000014 8.52651264e-16 + 0.300000012 + -0.0248460118 -0.00816621259 -0.0195546299 0.999466658 + -2.2737367e-15 0.0540000014 -1.22213344e-14 + 0.333333343 + -0.021204669 -0.0222799201 -0.0205428693 0.999315739 + -1.04094496e-14 0.0540000014 6.6791017e-15 + 0.366666675 + -0.0169819538 -0.0327327773 -0.0176258478 0.999164402 + -9.94759813e-15 0.0540000014 2.41584533e-15 + 0.400000006 + -0.0129230917 -0.0392183661 -0.0153355133 0.999029398 + -1.63424822e-15 0.0540000014 -7.38964418e-15 + 0.433333337 + -0.0110782748 -0.0412405133 -0.0131680751 0.999001086 + 8.06465998e-15 0.0540000051 1.19371176e-14 + 0.466666669 + -0.0111280568 -0.0385208912 -0.00948212482 0.999150872 + -1.00897074e-14 0.0540000014 -1.42108547e-14 + 0.5 + -0.0133627402 -0.0328805 -0.00591686182 0.999352455 + 8.17124129e-15 0.0540000014 -1.36424202e-14 + 0.533333361 + -0.0172304027 -0.0259580109 -0.00344382483 0.999508619 + 1.72306608e-15 0.0540000014 9.09494681e-15 + 0.566666722 + -0.0244276896 -0.0193266254 -0.00254097697 0.99951154 + -1.33049123e-14 0.0540000014 -2.2737367e-15 + 0.600000083 + -0.0250207875 -0.00871286355 -0.00365129509 0.999642313 + -3.5527136e-17 0.0540000014 -4.54747341e-15 + 0.633333445 + -0.0235106014 0.00633572601 -0.00508979056 0.999690533 + 1.01607607e-14 0.0540000014 1.47792884e-14 + 0.666666806 + -0.0191053096 0.0200076494 -0.00810793322 0.999584377 + -5.68434176e-16 0.0540000051 -5.68434176e-16 + 0.700000167 + -0.0153234042 0.030458698 -0.0108585646 0.999359608 + -8.02913288e-15 0.0540000014 -9.66338131e-15 + 0.733333528 + -0.0133661991 0.0358747467 -0.014003329 0.999168754 + 1.57740489e-14 0.0540000014 6.25277604e-15 + 0.766666889 + -0.0143247163 0.0348013267 -0.0177124701 0.9991346 + -7.673861e-15 0.0540000014 -2.84217077e-15 + 0.80000025 + -0.015924694 0.0288540218 -0.0197618268 0.999261379 + -1.04449784e-14 0.0540000014 -1.36424202e-14 + 0.833333611 + -0.0192447379 0.0211395863 -0.021412801 0.999361932 + 4.05009354e-15 0.0540000014 2.2737367e-15 + 0.866666973 + -0.0247254334 0.0136017334 -0.0229416136 0.999338448 + 9.48574495e-15 0.0540000014 0 + 0.900000334 + -0.0272226017 0.00453734864 -0.0220426917 0.999376059 + -1.04138906e-14 0.0540000014 6.82121011e-15 + 0.933333695 + -0.0248442553 -0.00816752762 -0.0195528511 0.999466717 + -7.28306287e-15 0.0540000014 -1.13686835e-15 + 0.966667056 + -0.0212130919 -0.0222832207 -0.0205445606 0.9993155 + -5.89750459e-15 0.0540000014 -2.2737367e-15 + 1.00000036 + -0.0169903915 -0.0327318497 -0.0176281724 0.999164224 + -2.2737367e-15 0.0540000014 -7.38964418e-15 + 1.03333366 + -0.0129122343 -0.0392105579 -0.0153322751 0.999029875 + -7.24753577e-15 0.0540000014 1.70530253e-15 + 1.06666696 + -0.0110537559 -0.0412386917 -0.0131621901 0.999001443 + 3.97903934e-15 0.0540000014 4.54747341e-15 + 1.10000026 + -0.0111340275 -0.0385358408 -0.00948443078 0.999150217 + -4.4764192e-15 0.0540000014 -5.68434155e-15 + 1.13333356 + -0.0134107787 -0.0328897275 -0.00592774013 0.999351442 + 7.6028068e-15 0.0540000014 -1.36424202e-14 + 1.16666687 + -0.0172413196 -0.025939595 -0.0034506286 0.999508858 + 2.48689953e-15 0.0540000014 1.13686831e-14 + 1.20000017 + -0.0243694372 -0.0193174537 -0.00253315899 0.999513149 + -1.08002486e-14 0.0540000014 0 + 1.23333347 + -0.0250207875 -0.00871286355 -0.00365129509 0.999642313 + 7.10542736e-15 0.0540000014 -1.25055521e-14 + 1.26666677 + -0.0234986898 0.00632063812 -0.00507198507 0.99969101 + 7.673861e-15 0.0540000014 8.52651232e-15 + 1.30000007 + -0.0191591997 0.0199964978 -0.00811524317 0.999583542 + -6.6791017e-15 0.0540000014 9.66338131e-15 + 1.33333337 + -0.0153354639 0.0304708742 -0.0108754765 0.999358833 + -3.12638802e-15 0.0540000014 0 + 1.36666667 + -0.0133319292 0.0358847007 -0.0140021797 0.999168932 + 8.2422955e-15 0.0540000014 -2.2737367e-15 + 1.39999998 + -0.0143090878 0.0347982496 -0.0177023839 0.999135077 + -5.25801631e-15 0.0540000014 -8.52651232e-15 + 1.43333328 + -0.01593793 0.0288478602 -0.0197599828 0.999261379 + -1.05160326e-14 0.0540000014 -6.82121011e-15 + 1.46666658 + -0.0192560628 0.0211385358 -0.0214169696 0.999361634 + 6.82121011e-15 0.0540000014 -8.52651232e-15 + 1.49999988 + -0.0247224644 0.0136044137 -0.0229435284 0.999338448 + 1.10844663e-14 0.0540000014 5.68434176e-16 + 1.53333318 + -0.0272145327 0.00453939149 -0.0220408086 0.999376297 + 5.24025244e-16 0.0540000014 3.97903934e-15 + 1.56666648 + -0.0248423051 -0.00816898886 -0.0195508767 0.999466836 + 1.76925142e-14 0.0540000014 0 + 1.59999979 + -0.0212246627 -0.0222877599 -0.0205468833 0.999315083 + -3.14059895e-14 0.0540000014 3.01270104e-14 + 1.63333309 + -0.0170048587 -0.0327302478 -0.0176321603 0.999163985 + 4.12114775e-15 0.0540000014 3.41060506e-15 + 1.66666639 + -0.0128887221 -0.0391936414 -0.0153252585 0.999031007 + 1.42108539e-15 0.0540000014 5.68434155e-15 + 1.69999969 + -0.0109850997 -0.0412336178 -0.0131457224 0.999002695 + -7.95807867e-15 0.0540000014 3.41060506e-15 + 1.73333299 + -0.0111564267 -0.0385918953 -0.00949308835 0.999147713 + -1.0231815e-14 0.0540000014 1.0231815e-14 + 1.76666629 + -0.0136669707 -0.0329389684 -0.0059857606 0.999346018 + 9.66338131e-15 0.0540000014 -4.54747341e-15 + 1.79999959 + -0.0173341222 -0.0257831346 -0.00350852893 0.999511123 + 6.89226432e-15 0.0540000014 5.68434155e-15 + 1.8333329 + -0.023320714 -0.0191527791 -0.00239246828 0.9995417 + -1.6839862e-14 0.0540000014 3.41060506e-15 + 1.8666662 + -0.025758123 -0.00901230052 -0.00337780477 0.999621928 + -6.32383025e-15 0.0540000014 -9.09494681e-15 + 1.8999995 + "L_Pinky_sjnt_2" + 58 + 0.308749735 -0.000327128044 0.0124932732 0.951061189 + -1.85533608e-07 -0.0186209753 6.46724743e-07 + 0 + 0.271210223 -0.000334620796 0.010962178 0.962457657 + -1.85532954e-07 -0.0186209753 6.46740773e-07 + 0.0333333351 + 0.247017354 -0.000339137012 0.00997552369 0.96895963 + -1.85464643e-07 -0.0186209753 6.46726335e-07 + 0.0666666701 + 0.2265196 -0.000342775718 0.00913961232 0.973963678 + -1.85555237e-07 -0.0186209753 6.46722583e-07 + 0.100000001 + 0.203344643 -0.000346683868 0.00819457695 0.979072869 + -1.85559472e-07 -0.0186209753 6.46711271e-07 + 0.13333334 + 0.180656672 -0.000350304152 0.00726945186 0.983519316 + -1.8556527e-07 -0.0186209753 6.4675794e-07 + 0.166666672 + 0.159254044 -0.000347066874 0.00639783172 0.98721683 + -1.8553159e-07 -0.0186209753 6.46719741e-07 + 0.200000003 + 0.139938414 -0.000403274695 0.00560260238 0.990144253 + -1.85505414e-07 -0.0186209753 6.4673128e-07 + 0.233333334 + 0.123510703 -0.000535376603 0.00491743721 0.992330909 + -1.85371292e-07 -0.0186209753 6.46739181e-07 + 0.266666681 + 0.110787198 -0.000635217293 0.00439005205 0.993834257 + -1.85481582e-07 -0.0186209753 6.46759872e-07 + 0.300000012 + 0.105235115 -0.000544457871 0.00417496683 0.994438469 + -1.85711357e-07 -0.0186209753 6.46607702e-07 + 0.333333343 + 0.0989980921 -0.000126388622 0.00396363111 0.995079756 + -1.85715152e-07 -0.0186209753 6.46553758e-07 + 0.366666675 + 0.091636993 0.000653805211 0.00373383216 0.995785296 + -1.85379903e-07 -0.0186209753 6.46941487e-07 + 0.400000006 + 0.10256578 0.00170689321 0.00429935241 0.994715452 + -1.85411821e-07 -0.0186209753 6.47072568e-07 + 0.433333337 + 0.157121003 0.00291149551 0.00682286592 0.98755151 + -1.85618546e-07 -0.0186209772 6.4631945e-07 + 0.466666669 + 0.245019227 0.00412474619 0.0109894015 0.969447136 + -1.8568501e-07 -0.0186209753 6.47120032e-07 + 0.5 + 0.323602676 0.00522967288 0.0149372378 0.946060717 + -1.85473908e-07 -0.0186209753 6.46789772e-07 + 0.533333361 + 0.371327251 0.00617901888 0.0175600275 0.928315461 + -1.85458248e-07 -0.0186209753 6.4680512e-07 + 0.566666722 + 0.393836737 0.00692320149 0.0189676117 0.918958604 + -1.85460621e-07 -0.0186209753 6.46789204e-07 + 0.600000083 + 0.389797509 0.00741746742 0.0189675335 0.920675337 + -1.85573356e-07 -0.0186209753 6.46708543e-07 + 0.633333445 + 0.365930438 0.0075592394 0.0178191736 0.930440903 + -1.85442303e-07 -0.0186209753 6.46734009e-07 + 0.666666806 + 0.32392469 0.00710866274 0.0155629469 0.945928156 + -1.85512434e-07 -0.0186209772 6.46743331e-07 + 0.700000167 + 0.241681248 0.00606012577 0.011286784 0.97027117 + -1.85506835e-07 -0.0186209753 6.46742023e-07 + 0.733333528 + 0.142281488 0.00453784643 0.00638079783 0.989795268 + -1.85472288e-07 -0.0186209753 6.46771355e-07 + 0.766666889 + 0.0440906696 0.00280078826 0.00185400189 0.999021888 + -1.85524158e-07 -0.0186209753 6.46715648e-07 + 0.80000025 + -0.0337656029 0.00116678094 -0.00147616141 0.999428034 + -1.85536038e-07 -0.0186209753 6.46696549e-07 + 0.833333611 + -0.0730419904 -5.08427656e-05 -0.0030372662 0.997324228 + -1.85475471e-07 -0.0186209753 6.46772662e-07 + 0.866666973 + -0.0496442877 -0.000667130167 -0.00204544212 0.998764634 + -1.85541396e-07 -0.0186209753 6.46782041e-07 + 0.900000334 + 0.0365091674 -0.000779827533 0.00143630663 0.999332011 + -1.85677521e-07 -0.0186209753 6.46510273e-07 + 0.933333695 + 0.154343814 -0.000614694902 0.00621498143 0.987997472 + -1.85451967e-07 -0.0186209753 6.46866454e-07 + 0.966667056 + 0.260674804 -0.000414997572 0.0105718542 0.965368748 + -1.85760655e-07 -0.0186209753 6.4694575e-07 + 1.00000036 + 0.331926107 -0.000335363351 0.0134959593 0.943208754 + -1.85461786e-07 -0.0186209753 6.46627655e-07 + 1.03333366 + 0.378773302 -0.000336971716 0.0154024167 0.925361276 + -1.85491189e-07 -0.0186209753 6.47015838e-07 + 1.06666696 + 0.418106914 -0.000329427276 0.0170060378 0.90823859 + -1.85653477e-07 -0.0186209772 6.46573369e-07 + 1.10000026 + 0.447191775 -0.000323349319 0.0181918684 0.894253075 + -1.85561802e-07 -0.0186209753 6.46565013e-07 + 1.13333356 + 0.465214819 -0.000319368497 0.0189267118 0.884995401 + -1.85483685e-07 -0.0186209753 6.46759304e-07 + 1.16666687 + 0.471325099 -0.000317979109 0.0191758499 0.88175106 + -1.85507048e-07 -0.0186209753 6.46792671e-07 + 1.20000017 + 0.464028478 -0.000319637329 0.0188783444 0.885619044 + -1.85522424e-07 -0.0186209753 6.46730314e-07 + 1.23333347 + 0.433365703 -0.000326300651 0.0176281519 0.90104574 + -1.853562e-07 -0.0186209753 6.46735941e-07 + 1.26666677 + 0.377384096 -0.000337221485 0.0153457802 0.925929606 + -1.85503268e-07 -0.0186209753 6.46740148e-07 + 1.30000007 + 0.306848228 -0.000348882284 0.0124702379 0.951676726 + -1.85592071e-07 -0.0186209753 6.46747253e-07 + 1.33333337 + 0.233465537 -0.000358707795 0.00947885867 0.972318828 + -1.85530752e-07 -0.0186209753 6.46736339e-07 + 1.36666667 + 0.170109019 -0.000365414802 0.0068963645 0.985401034 + -1.85382333e-07 -0.0186209753 6.46602359e-07 + 1.39999998 + 0.13088502 -0.00036876541 0.00529762357 0.991383314 + -1.85396303e-07 -0.0186209753 6.4659406e-07 + 1.43333328 + 0.122151747 -0.000369431335 0.00494166976 0.992499053 + -1.85464188e-07 -0.0186209753 6.46677563e-07 + 1.46666658 + 0.136941329 -0.000368289126 0.00554447109 0.990563571 + -1.85475741e-07 -0.0186209753 6.46728722e-07 + 1.49999988 + 0.167507082 -0.000365655229 0.00679031154 0.985847414 + -1.85623549e-07 -0.0186209753 6.46716785e-07 + 1.53333318 + 0.207391888 -0.000361665152 0.00841604732 0.978221714 + -1.8562487e-07 -0.0186209753 6.46783406e-07 + 1.56666648 + 0.250059694 -0.00035668604 0.0101552857 0.96817714 + -1.85394512e-07 -0.0186209753 6.46610829e-07 + 1.59999979 + 0.290266216 -0.000351307739 0.0117942672 0.956873238 + -1.85566861e-07 -0.0186209753 6.46826777e-07 + 1.63333309 + 0.311383188 -0.000348205183 0.0126551073 0.95020014 + -1.854945e-07 -0.0186209753 6.46705871e-07 + 1.66666639 + 0.30874753 -0.000348600937 0.0125476606 0.951061189 + -1.85454837e-07 -0.0186209753 6.46655394e-07 + 1.69999969 + 0.30874753 -0.000348599948 0.0125476616 0.951061189 + -1.85547862e-07 -0.0186209772 6.46641354e-07 + 1.73333299 + 0.30874753 -0.000348602043 0.0125476634 0.951061189 + -1.85587325e-07 -0.0186209753 6.46829903e-07 + 1.76666629 + 0.30874753 -0.000348601316 0.0125476616 0.951061189 + -1.85509478e-07 -0.0186209753 6.46742933e-07 + 1.79999959 + 0.30874753 -0.000348601927 0.0125476634 0.951061189 + -1.8567269e-07 -0.0186209753 6.46743104e-07 + 1.8333329 + 0.30874753 -0.000348600937 0.0125476616 0.951061189 + -1.85489682e-07 -0.0186209753 6.46741e-07 + 1.8666662 + 0.30874753 -0.000348604866 0.0125476643 0.951061189 + -1.8547091e-07 -0.0186209753 6.46726221e-07 + 1.8999995 + "R_Pinky_sjnt_0" + 58 + 0.18901071 -0.54141438 0.444589913 0.688102663 + 0.00242519076 0.0733913928 -0.0260387883 + 0 + 0.158221796 -0.560527742 0.431542724 0.688872635 + 0.00242519076 0.0733913928 -0.0260387883 + 0.0333333351 + 0.123701267 -0.579160333 0.418106347 0.688809395 + 0.00242519076 0.0733913928 -0.0260387883 + 0.0666666701 + 0.0926145986 -0.593616307 0.406991571 0.688040793 + 0.00242519076 0.0733913928 -0.0260387883 + 0.100000001 + 0.0730778798 -0.601684391 0.400472373 0.687209845 + 0.00242519076 0.0733913928 -0.0260387883 + 0.13333334 + 0.0691913962 -0.602770805 0.398995012 0.687519372 + 0.00242519076 0.0733913928 -0.0260387883 + 0.166666672 + 0.0775238052 -0.598284185 0.401110142 0.689316154 + 0.00242519076 0.0733913928 -0.0260387883 + 0.200000003 + 0.0942587927 -0.589520514 0.405994415 0.691917181 + 0.00242519076 0.0733913928 -0.0260387883 + 0.233333334 + 0.115965649 -0.577671051 0.413067698 0.69442296 + 0.00242519076 0.0733913928 -0.0260387883 + 0.266666681 + 0.139250219 -0.564287305 0.421523124 0.696065784 + 0.00242519099 0.0733913928 -0.0260387883 + 0.300000012 + 0.160913318 -0.551497519 0.430265784 0.696296453 + 0.00242519099 0.0733913928 -0.0260387883 + 0.333333343 + 0.178016394 -0.541978359 0.437954575 0.694813311 + 0.00242519053 0.0733913928 -0.0260387883 + 0.366666675 + 0.187806755 -0.538639784 0.443101257 0.691561401 + 0.00242519099 0.0733913928 -0.0260387883 + 0.400000006 + 0.187491298 -0.545066893 0.444703966 0.685556412 + 0.00242519076 0.0733913928 -0.0260387883 + 0.433333337 + 0.175664842 -0.563631654 0.443376541 0.674446821 + 0.00242519099 0.0733914003 -0.026038792 + 0.466666669 + 0.154701814 -0.590677559 0.441132247 0.65770036 + 0.00242519076 0.0733913928 -0.0260387883 + 0.5 + 0.128380686 -0.619744658 0.439419746 0.637452245 + 0.00242519076 0.0733913928 -0.0260387883 + 0.533333361 + 0.100700073 -0.645904183 0.43893218 0.616446078 + 0.00242519053 0.0733913928 -0.0260387883 + 0.566666722 + 0.0759160891 -0.665899456 0.439277887 0.598205268 + 0.00242519053 0.0733913928 -0.0260387883 + 0.600000083 + 0.0582915172 -0.677965522 0.43910706 0.586642861 + 0.00242519076 0.0733913928 -0.0260387883 + 0.633333445 + 0.0519852899 -0.680977106 0.436758429 0.585499585 + 0.00242519053 0.0733913854 -0.0260387883 + 0.666666806 + 0.0627915263 -0.669301331 0.428252548 0.603897989 + 0.00242519099 0.0733914003 -0.0260387883 + 0.700000167 + 0.0886875466 -0.641361654 0.415195972 0.639063478 + 0.00242519076 0.0733913928 -0.0260387883 + 0.733333528 + 0.121775068 -0.602604926 0.403910995 0.677417219 + 0.00242519076 0.0733913928 -0.0260387883 + 0.766666889 + 0.152745783 -0.564012945 0.39823103 0.707085729 + 0.00242519076 0.0733913928 -0.0260387883 + 0.80000025 + 0.172118843 -0.541212201 0.39826867 0.720310092 + 0.00242519099 0.0733913928 -0.0260387883 + 0.833333611 + 0.170965001 -0.558478832 0.409730792 0.700708926 + 0.00242519076 0.0733913928 -0.0260387883 + 0.866666973 + 0.154651836 -0.606472135 0.431783229 0.649490237 + 0.00242519076 0.0733913928 -0.0260387883 + 0.900000334 + 0.137114853 -0.646097064 0.449196011 0.601648569 + 0.00242519099 0.0733913928 -0.0260387883 + 0.933333695 + 0.1232564 -0.649045706 0.436844379 0.610503614 + 0.00242519076 0.0733913928 -0.0260387883 + 0.966667056 + 0.114069521 -0.616070926 0.389939755 0.674827218 + 0.00242519053 0.0733913928 -0.0260387883 + 1.00000036 + 0.112573311 -0.576120019 0.340656877 0.734415352 + 0.00242519076 0.0733913928 -0.0260387883 + 1.03333366 + 0.113813967 -0.559769154 0.321824998 0.755071938 + 0.00242519076 0.0733913928 -0.0260387883 + 1.06666696 + 0.113638885 -0.561804235 0.324180007 0.752575278 + 0.00242519053 0.0733914003 -0.026038792 + 1.10000026 + 0.113979742 -0.561710298 0.324443758 0.752480149 + 0.00242519076 0.0733913928 -0.0260387883 + 1.13333356 + 0.111825921 -0.56231606 0.322775066 0.753068328 + 0.00242519076 0.0733913928 -0.0260387883 + 1.16666687 + 0.0908411667 -0.567562938 0.306630492 0.758681655 + 0.00242519099 0.0733913928 -0.0260387883 + 1.20000017 + 0.055990912 -0.573275089 0.280152351 0.767942369 + 0.00242519053 0.0733913928 -0.0260387883 + 1.23333347 + 0.0384204797 -0.571352065 0.266868383 0.775152862 + 0.00242519076 0.0733913928 -0.0260387883 + 1.26666677 + 0.0490176752 -0.559481323 0.274877697 0.780397415 + 0.00242519076 0.0733913928 -0.0260387883 + 1.30000007 + 0.0733486339 -0.539994657 0.294469893 0.785056174 + 0.00242519076 0.0733913928 -0.0260387883 + 1.33333337 + 0.10456831 -0.514954567 0.322188258 0.787452936 + 0.00242519076 0.0733913928 -0.0260387883 + 1.36666667 + 0.136410981 -0.487440825 0.353831649 0.786509156 + 0.00242519076 0.0733913928 -0.0260387883 + 1.39999998 + 0.16370894 -0.461955875 0.384329975 0.782359719 + 0.00242519076 0.0733913928 -0.0260387883 + 1.43333328 + 0.182137668 -0.444598854 0.407597572 0.776544869 + 0.00242519076 0.0733913928 -0.0260387883 + 1.46666658 + 0.19209969 -0.437502593 0.422095329 0.770405531 + 0.00242519076 0.0733913928 -0.0260387883 + 1.49999988 + 0.197572544 -0.437443852 0.431374431 0.763887525 + 0.00242519076 0.0733913928 -0.0260387883 + 1.53333318 + 0.200555593 -0.442180663 0.437513709 0.756858945 + 0.00242519076 0.0733913928 -0.0260387883 + 1.56666648 + 0.201438591 -0.45092988 0.440987259 0.749409795 + 0.00242519099 0.0733913928 -0.0260387883 + 1.59999979 + 0.200694978 -0.462686062 0.442481726 0.741520822 + 0.00242519053 0.0733913928 -0.0260387883 + 1.63333309 + 0.198773727 -0.476437271 0.442676187 0.73316735 + 0.00242519076 0.0733913928 -0.0260387883 + 1.66666639 + 0.196138307 -0.491195589 0.442218065 0.724361718 + 0.00242519076 0.0733913928 -0.0260387883 + 1.69999969 + 0.193289891 -0.506019294 0.441705734 0.715178072 + 0.00242519099 0.0733914003 -0.026038792 + 1.73333299 + 0.19077462 -0.520026803 0.441677928 0.705760479 + 0.00242519099 0.0733913928 -0.0260387883 + 1.76666629 + 0.189196825 -0.532479227 0.442656904 0.696222126 + 0.00242519076 0.0733913928 -0.0260387883 + 1.79999959 + 0.188998193 -0.541870177 0.444684505 0.687686026 + 0.00242519099 0.0733913928 -0.0260387883 + 1.8333329 + 0.18901071 -0.54141438 0.444589913 0.688102663 + 0.00242519053 0.0733913928 -0.0260387883 + 1.8666662 + 0.18901071 -0.54141438 0.444589913 0.688102663 + 0.00242519076 0.0733913928 -0.0260387883 + 1.8999995 + "L_Clavicle_sjnt_0" + 58 + 0.790799141 -0.553457737 -0.109616257 0.237288028 + 0.00729848957 0.208856419 0.0306760129 + 0 + 0.802568436 -0.535304844 -0.110773861 0.238876104 + 0.00729848957 0.208856419 0.0306760129 + 0.0333333351 + 0.812832415 -0.519888222 -0.11423669 0.236579329 + 0.00729848957 0.208856419 0.0306760129 + 0.0666666701 + 0.81885165 -0.508501232 -0.121204458 0.237103477 + 0.00729848957 0.208856419 0.0306760129 + 0.100000001 + 0.823826253 -0.500870824 -0.116243578 0.238592088 + 0.00729848957 0.208856419 0.0306760129 + 0.13333334 + 0.821312785 -0.50589335 -0.105310492 0.241716832 + 0.00729848957 0.208856419 0.0306760129 + 0.166666672 + 0.814854324 -0.517159462 -0.102308124 0.241022125 + 0.00729848957 0.208856419 0.0306760129 + 0.200000003 + 0.80140543 -0.536874771 -0.10990607 0.239657193 + 0.00729848957 0.208856419 0.0306760129 + 0.233333334 + 0.780654848 -0.560843468 -0.130866602 0.24270688 + 0.00729848957 0.208856419 0.0306760129 + 0.266666681 + 0.769580603 -0.568560302 -0.150903374 0.248421296 + 0.00729848957 0.208856419 0.0306760129 + 0.300000012 + 0.773746192 -0.561995208 -0.152504697 0.249440506 + 0.00729848957 0.208856419 0.0306760129 + 0.333333343 + 0.785604835 -0.550877869 -0.142526403 0.242991611 + 0.0072984891 0.208856419 0.0306760129 + 0.366666675 + 0.798742771 -0.539088547 -0.129413649 0.233764201 + 0.00729848957 0.208856419 0.0306760129 + 0.400000006 + 0.801286459 -0.536165416 -0.123873375 0.234781027 + 0.00729848957 0.208856419 0.0306760129 + 0.433333337 + 0.797411919 -0.540261209 -0.116836667 0.242076844 + 0.00729848957 0.208856449 0.0306760129 + 0.466666669 + 0.792859852 -0.544678211 -0.113689691 0.248542845 + 0.00729848957 0.208856419 0.0306760129 + 0.5 + 0.785580873 -0.553335547 -0.116509922 0.251212984 + 0.00729848957 0.208856419 0.0306760129 + 0.533333361 + 0.776900828 -0.564735949 -0.124327019 0.249080822 + 0.00729848957 0.208856419 0.0306760129 + 0.566666722 + 0.778719008 -0.566462636 -0.119767278 0.241604388 + 0.00729848957 0.208856419 0.0306760129 + 0.600000083 + 0.790799081 -0.553457737 -0.10961625 0.237288028 + 0.00729848957 0.208856419 0.0306760129 + 0.633333445 + 0.802568436 -0.535304844 -0.110773861 0.238876104 + 0.00729848957 0.208856419 0.0306760129 + 0.666666806 + 0.812832415 -0.519888222 -0.114236675 0.236579329 + 0.00729849003 0.208856419 0.0306760166 + 0.700000167 + 0.81885165 -0.508501232 -0.121204458 0.237103477 + 0.00729848957 0.208856419 0.0306760129 + 0.733333528 + 0.823826253 -0.500870824 -0.116243578 0.238592088 + 0.00729848957 0.208856419 0.0306760129 + 0.766666889 + 0.821312785 -0.50589335 -0.105310485 0.241716832 + 0.00729848957 0.208856419 0.0306760129 + 0.80000025 + 0.814854324 -0.517159462 -0.102308124 0.241022125 + 0.00729848957 0.208856419 0.0306760129 + 0.833333611 + 0.80140537 -0.536874771 -0.10990607 0.239657193 + 0.00729848957 0.208856419 0.0306760129 + 0.866666973 + 0.780654848 -0.560843468 -0.130866617 0.24270688 + 0.00729848957 0.208856419 0.0306760129 + 0.900000334 + 0.769580603 -0.568560302 -0.150903359 0.248421296 + 0.00729848957 0.208856419 0.0306760129 + 0.933333695 + 0.773746192 -0.561995208 -0.152504697 0.249440506 + 0.00729848957 0.208856419 0.0306760129 + 0.966667056 + 0.785604835 -0.550877869 -0.142526403 0.242991611 + 0.0072984891 0.208856419 0.0306760129 + 1.00000036 + 0.798742771 -0.539088547 -0.129413649 0.233764201 + 0.00729848957 0.208856419 0.0306760129 + 1.03333366 + 0.801286459 -0.536165416 -0.123873375 0.234781027 + 0.00729848957 0.208856419 0.0306760129 + 1.06666696 + 0.797411919 -0.540261209 -0.116836667 0.242076844 + 0.00729848957 0.208856449 0.0306760129 + 1.10000026 + 0.792859852 -0.544678211 -0.113689691 0.248542845 + 0.00729848957 0.208856419 0.0306760129 + 1.13333356 + 0.785580873 -0.553335547 -0.116509922 0.251212984 + 0.00729848957 0.208856419 0.0306760129 + 1.16666687 + 0.776900828 -0.564735949 -0.124327019 0.249080822 + 0.00729848957 0.208856419 0.0306760129 + 1.20000017 + 0.778719008 -0.566462636 -0.119767278 0.241604388 + 0.00729848957 0.208856419 0.0306760129 + 1.23333347 + 0.790799081 -0.553457737 -0.10961625 0.237288028 + 0.00729848957 0.208856419 0.0306760129 + 1.26666677 + 0.802568436 -0.535304844 -0.110773861 0.238876104 + 0.00729848957 0.208856419 0.0306760129 + 1.30000007 + 0.812832415 -0.519888222 -0.114236675 0.236579329 + 0.00729848957 0.208856419 0.0306760129 + 1.33333337 + 0.81885165 -0.508501232 -0.121204458 0.237103477 + 0.00729848957 0.208856419 0.0306760129 + 1.36666667 + 0.823826253 -0.500870824 -0.116243578 0.238592088 + 0.00729848957 0.208856419 0.0306760129 + 1.39999998 + 0.821312785 -0.50589335 -0.105310485 0.241716832 + 0.00729848957 0.208856419 0.0306760129 + 1.43333328 + 0.814854324 -0.517159462 -0.102308124 0.241022125 + 0.00729848957 0.208856419 0.0306760129 + 1.46666658 + 0.80140537 -0.536874771 -0.109906062 0.239657193 + 0.00729848957 0.208856419 0.0306760129 + 1.49999988 + 0.780654848 -0.560843468 -0.130866602 0.24270688 + 0.00729848957 0.208856419 0.0306760129 + 1.53333318 + 0.769580603 -0.568560302 -0.150903359 0.248421296 + 0.00729848957 0.208856419 0.0306760129 + 1.56666648 + 0.773746192 -0.561995208 -0.152504697 0.249440506 + 0.00729848957 0.208856419 0.0306760129 + 1.59999979 + 0.785604835 -0.550877869 -0.142526403 0.242991626 + 0.0072984891 0.208856419 0.0306760129 + 1.63333309 + 0.798742771 -0.539088547 -0.129413649 0.233764187 + 0.00729848957 0.208856419 0.0306760129 + 1.66666639 + 0.801286459 -0.536165416 -0.123873375 0.234781027 + 0.00729848957 0.208856419 0.0306760129 + 1.69999969 + 0.797411919 -0.540261209 -0.116836667 0.242076844 + 0.00729848957 0.208856449 0.0306760166 + 1.73333299 + 0.792859852 -0.544678211 -0.113689691 0.248542845 + 0.00729848957 0.208856419 0.0306760129 + 1.76666629 + 0.785580873 -0.553335547 -0.116509914 0.251212955 + 0.00729848957 0.208856419 0.0306760129 + 1.79999959 + 0.776900828 -0.564735949 -0.124327019 0.249080822 + 0.00729848957 0.208856419 0.0306760129 + 1.8333329 + 0.778719008 -0.566462636 -0.119767271 0.241604388 + 0.00729848957 0.208856419 0.0306760129 + 1.8666662 + 0.790799081 -0.553457737 -0.109616257 0.237288028 + 0.00729848957 0.208856419 0.0306760129 + 1.8999995 + "R_Pinky_sjnt_1" + 58 + 0.367851496 0.022540085 0.0213963091 0.929365039 + 6.0000574e-11 0.0372027382 5.18202365e-12 + 0 + 0.334846109 0.0223978665 0.0201668981 0.9417907 + 6.56396881e-11 0.0372027382 1.18355103e-10 + 0.0333333351 + 0.298435509 0.0222976375 0.0188229159 0.953983665 + -9.55068524e-11 0.0372027382 4.6426718e-10 + 0.0666666701 + 0.266056091 0.0222573299 0.0176354889 0.963539183 + 1.99355549e-11 0.0372027382 -1.65473815e-10 + 0.100000001 + 0.245866835 0.0222557224 0.0168987978 0.96890074 + 1.07725385e-12 0.0372027382 -1.55687088e-10 + 0.13333334 + 0.241771951 0.0222569965 0.0167386178 0.969933331 + 3.53626468e-11 0.0372027382 -9.67157743e-11 + 0.166666672 + 0.250112981 0.0222641323 0.0170148555 0.967811108 + 3.60601861e-11 0.0372027382 -2.17133325e-10 + 0.200000003 + 0.267091036 0.02228483 0.017596798 0.963252902 + 8.14480948e-12 0.0372027382 -4.13527337e-11 + 0.233333334 + 0.289375156 0.0223244615 0.0183742344 0.956779063 + 6.2351263e-11 0.0372027382 2.36481251e-10 + 0.266666681 + 0.313627034 0.0223896094 0.0192382801 0.949087322 + -2.56451926e-11 0.0372027382 -6.6761173e-11 + 0.300000012 + 0.33659029 0.0224687438 0.0200799312 0.941168904 + 6.84016732e-11 0.0372027382 8.16640939e-12 + 0.333333343 + 0.355113775 0.0225374233 0.0207911376 0.934320092 + -1.27555064e-10 0.0372027382 -1.8266633e-11 + 0.366666675 + 0.366087437 0.022564305 0.0212626662 0.930063903 + 6.10114598e-11 0.0372027382 -6.8956181e-11 + 0.400000006 + 0.366599292 0.0225047562 0.0213929657 0.929860711 + 1.29062984e-11 0.0372027382 5.8691399e-11 + 0.433333337 + 0.355712533 0.0223294739 0.0211573672 0.934089065 + -9.27428759e-11 0.0372027382 -5.3209135e-11 + 0.466666669 + 0.336226493 0.0220921356 0.020666372 0.941295147 + 4.54706134e-11 0.0372027382 5.42729577e-11 + 0.5 + 0.311732024 0.021846585 0.0200362615 0.949707627 + 1.48176152e-10 0.0372027382 6.82626941e-11 + 0.533333361 + 0.285805136 0.0216524731 0.0193845853 0.957846999 + -5.32367032e-11 0.0372027382 -2.65850987e-11 + 0.566666722 + 0.262148172 0.021553861 0.0188256912 0.964603245 + 6.51960985e-11 0.0372027382 1.30910387e-12 + 0.600000083 + 0.244560286 0.0215607658 0.0184680745 0.969218433 + 3.05468012e-11 0.0372027382 -1.00556011e-12 + 0.633333445 + 0.236906081 0.0216728114 0.0184227247 0.971116066 + 6.21014362e-13 0.0372027345 -6.37470502e-12 + 0.666666806 + 0.242663935 0.0219788551 0.0188659541 0.969677925 + 8.23796153e-12 0.0372027382 -6.87151638e-12 + 0.700000167 + 0.259130567 0.0224746056 0.0197380595 0.965379059 + 1.45899993e-11 0.0372027382 1.46386007e-12 + 0.733333528 + 0.281103224 0.0230306368 0.020805914 0.959175527 + -2.21314165e-11 0.0372027382 -6.73594481e-13 + 0.766666889 + 0.303328753 0.0235092435 0.0218095314 0.952346265 + 1.18983217e-11 0.0372027382 4.73193013e-12 + 0.80000025 + 0.320644349 0.0237008221 0.0224669389 0.946636558 + -6.92315857e-11 0.0372027382 -5.02204493e-11 + 0.833333611 + 0.327629238 0.0241399575 0.022467168 0.944230676 + 6.6515897e-11 0.0372027382 4.23904106e-11 + 0.866666973 + 0.32717979 0.0246914104 0.0219120476 0.94438535 + -1.55873179e-11 0.0372027382 -2.36312289e-11 + 0.900000334 + 0.328987449 0.0239132661 0.0212645829 0.943791986 + -1.86058738e-10 0.0372027382 -1.16301628e-10 + 0.933333695 + 0.345922559 0.0188371781 0.0207748171 0.937843919 + 6.26042135e-11 0.0372027382 2.9292551e-11 + 0.966667056 + 0.378401726 0.00928586721 0.0199050214 0.925380886 + -1.51362228e-10 0.0372027382 4.51058219e-11 + 1.00000036 + 0.407509685 0.000665200118 0.0185943544 0.913011253 + 7.21453799e-11 0.0372027382 -3.88985198e-11 + 1.03333366 + 0.417876303 -0.00240298221 0.0179986339 0.908322453 + -4.10398104e-11 0.0372027382 -9.06936765e-12 + 1.06666696 + 0.416575462 -0.0020179539 0.0180758368 0.908919215 + -1.32577893e-10 0.0372027382 1.2665452e-10 + 1.10000026 + 0.417123914 -0.00200869446 0.0180891547 0.908667386 + 3.1645582e-11 0.0372027382 2.70841839e-11 + 1.13333356 + 0.413703173 -0.00202483893 0.0179148782 0.910233319 + 8.67271394e-11 0.0372027382 5.49397298e-11 + 1.16666687 + 0.379609495 -0.0022525331 0.0163353886 0.924999893 + 6.20067886e-11 0.0372027382 2.41675482e-11 + 1.20000017 + 0.318420112 -0.00265868288 0.013561639 0.947848916 + 8.54487314e-11 0.0372027382 1.72553881e-11 + 1.23333347 + 0.274774998 -0.00292205159 0.0116284369 0.961433768 + 2.88508765e-11 0.0372027382 3.51593581e-11 + 1.26666677 + 0.263015717 -0.00309216604 0.0111136297 0.964722633 + -3.07579726e-11 0.0372027382 -4.31799665e-11 + 1.30000007 + 0.264192969 -0.00334603689 0.011166024 0.964399397 + 1.00170608e-10 0.0372027382 1.08417032e-10 + 1.33333337 + 0.274140269 -0.00354862539 0.0116070034 0.961613119 + 2.34399514e-11 0.0372027382 -8.3013485e-11 + 1.36666667 + 0.288727611 -0.00356350676 0.0122681698 0.957326114 + -3.83954535e-11 0.0372027382 -1.40207485e-10 + 1.39999998 + 0.303835213 -0.00325579802 0.0129948668 0.95263046 + 3.75075596e-11 0.0372027382 -4.17152229e-10 + 1.43333328 + 0.31500566 -0.00247944635 0.013625253 0.948988736 + -2.36241235e-11 0.0372027382 3.49883345e-10 + 1.46666658 + 0.321670502 -0.00119345449 0.0141466754 0.946745217 + -6.89851735e-12 0.0372027382 4.58639265e-10 + 1.49999988 + 0.326867729 0.00049909245 0.0146816652 0.944955945 + -1.77317362e-11 0.0372027382 3.7170763e-11 + 1.53333318 + 0.33194235 0.00250690174 0.0152818989 0.943172574 + 8.23354163e-11 0.0372027382 1.5481702e-10 + 1.56666648 + 0.336779833 0.00477288011 0.015936153 0.94143647 + -6.43791478e-11 0.0372027382 -7.37651329e-11 + 1.59999979 + 0.34143284 0.00723650539 0.016639227 0.939731002 + -1.43775186e-10 0.0372027382 -7.9433557e-11 + 1.63333309 + 0.345953405 0.00983739272 0.0173849519 0.938039005 + 4.88554943e-12 0.0372027382 -1.23884548e-11 + 1.66666639 + 0.350393444 0.0125152608 0.0181664117 0.936342776 + 4.0693067e-11 0.0372027382 -4.83987607e-11 + 1.69999969 + 0.354804516 0.0152099216 0.0189760402 0.934624195 + -3.83157617e-10 0.0372027382 1.94324903e-10 + 1.73333299 + 0.35923779 0.0178612899 0.0198057126 0.932864904 + 1.14939662e-10 0.0372027382 -6.1135097e-11 + 1.76666629 + 0.363797426 0.0204336308 0.0206556041 0.931024849 + 5.34006971e-11 0.0372027382 2.09263353e-11 + 1.79999959 + 0.368056327 0.0226471554 0.0214343909 0.929280519 + 5.82215873e-11 0.0372027382 2.92550324e-11 + 1.8333329 + 0.367851496 0.0225400813 0.0213963091 0.929365039 + 1.23606013e-11 0.0372027382 -1.08423132e-11 + 1.8666662 + 0.367851496 0.022540085 0.0213963129 0.929365039 + 2.41766416e-11 0.0372027382 -2.07995756e-11 + 1.8999995 + "L_Ring_sjnt_3" + 58 + -0.00159794069 3.47525292e-06 8.9891997e-05 0.999998748 + 4.95706161e-07 -0.0159507934 1.3632733e-07 + 0 + -0.0407668278 1.71856061e-06 0.00264781108 0.999165177 + 4.95817801e-07 -0.0159507934 1.36346955e-07 + 0.0333333351 + -0.065748632 5.84904626e-07 0.00427925913 0.997827053 + 4.95768688e-07 -0.0159507934 1.36310618e-07 + 0.0666666701 + -0.086758405 -3.66933563e-07 0.00565131661 0.996213377 + 4.95782388e-07 -0.0159507934 1.36327117e-07 + 0.100000001 + -0.110342331 -1.43433067e-06 0.00719148945 0.993867636 + 4.95790118e-07 -0.0159507934 1.3625197e-07 + 0.13333334 + -0.133258581 -2.47468711e-06 0.00868806522 0.99104327 + 4.95772383e-07 -0.0159507934 1.36311797e-07 + 0.166666672 + -0.154722482 -3.45301896e-06 0.0100898035 0.987906456 + 4.9579927e-07 -0.0159507934 1.36324985e-07 + 0.200000003 + -0.173966855 -4.32990282e-06 0.0113465963 0.984686196 + 4.95839174e-07 -0.0159507934 1.3631697e-07 + 0.233333334 + -0.190238535 -5.07388722e-06 0.012409254 0.981659532 + 4.95999245e-07 -0.0159507934 1.36277421e-07 + 0.266666681 + -0.202785403 -5.64721449e-06 0.0132286614 0.979133844 + 4.95878453e-07 -0.0159507934 1.36341029e-07 + 0.300000012 + -0.208257467 -2.38806388e-05 0.0135898786 0.97797966 + 4.95538302e-07 -0.0159507934 1.36253206e-07 + 0.333333343 + -0.214410037 7.44439385e-05 0.0139700668 0.97664386 + 4.95529093e-07 -0.0159507934 1.36185974e-07 + 0.366666675 + -0.22156176 0.000541630026 0.0143221375 0.975041032 + 4.96009307e-07 -0.0159507934 1.36496013e-07 + 0.400000006 + -0.210725859 0.00143980968 0.0134044671 0.977452278 + 4.95933648e-07 -0.0159507934 1.36542397e-07 + 0.433333337 + -0.156860113 0.00264325133 0.00974914897 0.987569153 + 4.95702238e-07 -0.0159507934 1.36088772e-07 + 0.466666669 + -0.0686546192 0.00402785232 0.0041055046 0.99762392 + 4.95501922e-07 -0.0159507934 1.36365557e-07 + 0.5 + 0.0118890684 0.00541873835 -0.000829879777 0.999914289 + 4.9586032e-07 -0.0159507934 1.36346387e-07 + 0.533333361 + 0.061742276 0.0066705402 -0.00374888955 0.998062789 + 4.95916936e-07 -0.0159507934 1.3642881e-07 + 0.566666722 + 0.0857837275 0.00766822835 -0.00508048944 0.996271372 + 4.95843778e-07 -0.0159507934 1.36367362e-07 + 0.600000083 + 0.0825273693 0.00829698984 -0.00484677684 0.996542454 + 4.95745041e-07 -0.0159507934 1.36314412e-07 + 0.633333445 + 0.0599736348 0.0084263999 -0.00355613907 0.998158097 + 4.95672282e-07 -0.0159507934 1.36368158e-07 + 0.666666806 + 0.0208613575 0.00775281293 -0.00134265877 0.999751449 + 4.95885786e-07 -0.0159507934 1.36341569e-07 + 0.700000167 + -0.0544287935 0.00629159948 0.00307883113 0.998493135 + 4.9578972e-07 -0.0159507934 1.36332758e-07 + 0.733333528 + -0.143089995 0.00439274171 0.008605293 0.989662528 + 4.95840254e-07 -0.0159507934 1.36390454e-07 + 0.766666889 + -0.228470981 0.00246998994 0.0142699769 0.973443031 + 4.95791539e-07 -0.0159507934 1.36295156e-07 + 0.80000025 + -0.29489401 0.000918919919 0.0189381018 0.955341876 + 4.95714232e-07 -0.0159507934 1.36251913e-07 + 0.833333611 + -0.328301996 0.00011457393 0.0213756058 0.944330931 + 4.95894938e-07 -0.0159507934 1.36328538e-07 + 0.866666973 + -0.310000241 -4.14965798e-05 0.0202344842 0.950521171 + 4.95845029e-07 -0.0159507934 1.36363795e-07 + 0.900000334 + -0.239287928 -8.99139377e-06 0.0156067666 0.970823228 + 4.95565473e-07 -0.0159507934 1.36165511e-07 + 0.933333695 + -0.139429659 -3.83209135e-06 0.00908513926 0.990190327 + 4.95884137e-07 -0.0159507934 1.36480821e-07 + 0.966667056 + -0.0456250869 9.83056793e-07 0.00295906933 0.998954296 + 4.95462814e-07 -0.0159507934 1.36443361e-07 + 1.00000036 + 0.0201734807 4.34464027e-06 -0.00133791775 0.999795616 + 4.95931033e-07 -0.0159507934 1.36228309e-07 + 1.03333366 + 0.0654913932 6.64706567e-06 -0.00429735379 0.997843862 + 4.95687402e-07 -0.0159507934 1.36619192e-07 + 1.06666696 + 0.104905523 8.64977392e-06 -0.00687122019 0.994458497 + 4.95720087e-07 -0.0159507934 1.36160537e-07 + 1.10000026 + 0.135709435 1.02091944e-05 -0.00888278894 0.990708947 + 4.95893403e-07 -0.0159507934 1.36157965e-07 + 1.13333356 + 0.156938791 1.12801063e-05 -0.0102691036 0.987554967 + 4.95829909e-07 -0.0159507934 1.36345051e-07 + 1.16666687 + 0.16768156 1.18199705e-05 -0.0109706214 0.98578018 + 4.95707184e-07 -0.0159507934 1.36409781e-07 + 1.20000017 + 0.166661859 1.17704831e-05 -0.0109040337 0.985953808 + 4.95777442e-07 -0.0159507934 1.36329149e-07 + 1.23333347 + 0.146408007 1.07455917e-05 -0.00958142616 0.989177942 + 4.95953714e-07 -0.0159507934 1.36289415e-07 + 1.26666677 + 0.106213294 8.71388875e-06 -0.00695662014 0.994319081 + 4.95841959e-07 -0.0159507934 1.36326506e-07 + 1.30000007 + 0.0549602509 6.11275982e-06 -0.00360963051 0.998482049 + 4.95582015e-07 -0.0159507934 1.36407024e-07 + 1.33333337 + 0.00147959602 3.6166573e-06 -0.000117155891 0.999998927 + 4.95814106e-07 -0.0159507934 1.36329092e-07 + 1.36666667 + -0.0452734865 9.97731718e-07 0.00293610152 0.99897033 + 4.96014422e-07 -0.0159507934 1.35967454e-07 + 1.39999998 + -0.0758297965 -5.61464731e-07 0.00493161753 0.997108579 + 4.959482e-07 -0.0159507934 1.360102e-07 + 1.43333328 + -0.0866467506 -1.11608347e-06 0.00563803595 0.996223152 + 4.95884706e-07 -0.0159507934 1.3618147e-07 + 1.46666658 + -0.0829891935 -9.3187316e-07 0.00539917313 0.996535838 + 4.95852987e-07 -0.0159507934 1.36295597e-07 + 1.49999988 + -0.0697743371 -2.54787352e-07 0.00453615747 0.997552514 + 4.9578648e-07 -0.0159507934 1.36364463e-07 + 1.53333318 + -0.0507377163 7.20465835e-07 0.00329295197 0.998706579 + 4.95674158e-07 -0.0159507934 1.36436157e-07 + 1.56666648 + -0.0297441948 1.80125789e-06 0.00192195165 0.999555707 + 4.96087921e-07 -0.0159507934 1.36216997e-07 + 1.59999979 + -0.0102702575 2.78821176e-06 0.000650206581 0.999947071 + 4.95570532e-07 -0.0159507934 1.36492375e-07 + 1.63333309 + -0.000345769949 3.29451154e-06 2.08628285e-06 0.99999994 + 4.95907955e-07 -0.0159507934 1.36253021e-07 + 1.66666639 + -0.00159833604 3.2350988e-06 8.38821288e-05 0.999998748 + 4.96010614e-07 -0.0159507934 1.36183971e-07 + 1.69999969 + -0.00159833697 3.23994732e-06 8.38821579e-05 0.999998748 + 4.9599754e-07 -0.0159507934 1.36116498e-07 + 1.73333299 + -0.00159832952 3.23157406e-06 8.3887353e-05 0.999998748 + 4.95519032e-07 -0.0159507934 1.36512938e-07 + 1.76666629 + -0.00159833278 3.23343284e-06 8.38849737e-05 0.999998748 + 4.95811435e-07 -0.0159507934 1.36333114e-07 + 1.79999959 + -0.00159833324 3.21026573e-06 8.38886845e-05 0.999998748 + 4.95592417e-07 -0.0159507934 1.36295185e-07 + 1.8333329 + -0.00159833301 3.23578683e-06 8.38836277e-05 0.999998748 + 4.95947234e-07 -0.0159507934 1.36333213e-07 + 1.8666662 + -0.00159833278 3.22092296e-06 8.38851483e-05 0.999998748 + 4.95781137e-07 -0.0159507934 1.36341257e-07 + 1.8999995 + "L_Middle_sjnt_2" + 58 + 0.29750818 0.00424730405 -0.0532224439 0.953225255 + -6.02401997e-07 -0.0248495787 6.76785703e-08 + 0 + 0.260443479 0.00429383805 -0.0466047823 0.964354098 + -6.02393015e-07 -0.0248495787 6.76993182e-08 + 0.0333333351 + 0.23656261 0.00432009529 -0.0423409082 0.970683634 + -6.02267221e-07 -0.0248495787 6.76707543e-08 + 0.0666666701 + 0.216332659 0.00434010569 -0.0387288556 0.975541592 + -6.0244264e-07 -0.0248495787 6.76775116e-08 + 0.100000001 + 0.193464383 0.00436029956 -0.0346456766 0.980485737 + -6.02489024e-07 -0.0248495787 6.76517828e-08 + 0.13333334 + 0.171080515 0.00437760726 -0.0306489356 0.984770536 + -6.02466116e-07 -0.0248495787 6.76877931e-08 + 0.166666672 + 0.14996849 0.00439815177 -0.0268782265 0.988315582 + -6.02402224e-07 -0.0248495787 6.76750602e-08 + 0.200000003 + 0.130916223 0.00435574632 -0.0234836768 0.991105795 + -6.02365105e-07 -0.0248495787 6.76770924e-08 + 0.233333334 + 0.11471279 0.00423417892 -0.020605009 0.993175983 + -6.02215209e-07 -0.0248495787 6.76032741e-08 + 0.266666681 + 0.102165058 0.00414184388 -0.0183724742 0.99458921 + -6.02355897e-07 -0.0248495787 6.76782719e-08 + 0.300000012 + 0.0966930911 0.00423598755 -0.0173845794 0.995153427 + -6.02613966e-07 -0.0248495787 6.765206e-08 + 0.333333343 + 0.0905525088 0.00465764059 -0.0162475649 0.995748281 + -6.0265279e-07 -0.0248495787 6.75800962e-08 + 0.366666675 + 0.0833094269 0.00544178672 -0.0148885716 0.996397674 + -6.02192927e-07 -0.0248495787 6.78112784e-08 + 0.400000006 + 0.0941087455 0.00649097282 -0.0167028066 0.995400608 + -6.02260684e-07 -0.0248495787 6.77948222e-08 + 0.433333337 + 0.147971034 0.00766446441 -0.0260253325 0.988619506 + -6.02516764e-07 -0.0248495806 6.75858587e-08 + 0.466666669 + 0.234821394 0.00879665185 -0.0409502648 0.971135795 + -6.0247902e-07 -0.0248495787 6.77694132e-08 + 0.5 + 0.312566489 0.00979605131 -0.0540850908 0.948304296 + -6.02311843e-07 -0.0248495787 6.77086902e-08 + 0.533333361 + 0.359854937 0.0106658628 -0.061848484 0.930894971 + -6.02324121e-07 -0.0248495787 6.76916159e-08 + 0.566666722 + 0.382202089 0.0113689573 -0.0653469563 0.921695292 + -6.02299735e-07 -0.0248495787 6.7705507e-08 + 0.600000083 + 0.378245413 0.0118724648 -0.0644770935 0.923380852 + -6.02448779e-07 -0.0248495787 6.76855976e-08 + 0.633333445 + 0.354624689 0.0120614171 -0.0604376867 0.932975471 + -6.02335263e-07 -0.0248495787 6.76575027e-08 + 0.666666806 + 0.31300965 0.0116006033 -0.053582903 0.948166251 + -6.02382613e-07 -0.0248495787 6.76880276e-08 + 0.700000167 + 0.231606141 0.0104690138 -0.0400168337 0.971929908 + -6.02353623e-07 -0.0248495787 6.76964902e-08 + 0.733333528 + 0.133355469 0.0088167768 -0.0233297292 0.990754426 + -6.02188777e-07 -0.0248495787 6.77533123e-08 + 0.766666889 + 0.0364471935 0.00698480383 -0.00650062086 0.999290049 + -6.02438092e-07 -0.0248495787 6.76898821e-08 + 0.80000025 + -0.0402853787 0.00540303672 0.00710110692 0.999148369 + -6.02508806e-07 -0.0248495787 6.76598617e-08 + 0.833333611 + -0.0789579526 0.00455076201 0.0140481247 0.996768594 + -6.02336911e-07 -0.0248495787 6.76618228e-08 + 0.866666973 + -0.0559122711 0.00439268164 0.0099454876 0.998376548 + -6.02409273e-07 -0.0248495787 6.77101042e-08 + 0.900000334 + 0.0289628636 0.00442956714 -0.0052128844 0.999557078 + -6.02540979e-07 -0.0248495787 6.76197374e-08 + 0.933333695 + 0.145135075 0.00438493676 -0.0259579029 0.989061594 + -6.02271257e-07 -0.0248495787 6.77573695e-08 + 0.966667056 + 0.2500633 0.00428970531 -0.0446945652 0.967187881 + -6.02525006e-07 -0.0248495787 6.78408796e-08 + 1.00000036 + 0.320368677 0.0041949749 -0.0572484583 0.94555223 + -6.02356522e-07 -0.0248495787 6.75904914e-08 + 1.03333366 + 0.366426468 0.0041185189 -0.0654725209 0.928131461 + -6.02276828e-07 -0.0248495787 6.78670773e-08 + 1.06666696 + 0.404949874 0.00404528715 -0.0723511577 0.911462784 + -6.02526029e-07 -0.0248495806 6.76629739e-08 + 1.10000026 + 0.43340838 0.00398546131 -0.0774325728 0.897856057 + -6.02470834e-07 -0.0248495787 6.75990179e-08 + 1.13333356 + 0.451141983 0.00394559233 -0.0805989727 0.888796508 + -6.02323553e-07 -0.0248495787 6.77045691e-08 + 1.16666687 + 0.457452416 0.00393091422 -0.0817257315 0.885461926 + -6.02334069e-07 -0.0248495787 6.77300562e-08 + 1.20000017 + 0.451031446 0.00394584239 -0.0805792436 0.888854384 + -6.02380965e-07 -0.0248495787 6.76793093e-08 + 1.23333347 + 0.42245847 0.00400905637 -0.0754774213 0.903225303 + -6.02168654e-07 -0.0248495787 6.76220822e-08 + 1.26666677 + 0.369860023 0.00411234749 -0.0660856068 0.92672509 + -6.02368516e-07 -0.0248495787 6.76851144e-08 + 1.30000007 + 0.303450525 0.00422013877 -0.0542275347 0.951293528 + -6.02385171e-07 -0.0248495787 6.77470027e-08 + 1.33333337 + 0.234252959 0.00430750102 -0.0418714099 0.971264064 + -6.0241382e-07 -0.0248495787 6.76872247e-08 + 1.36666667 + 0.174347609 0.00436378364 -0.03117433 0.984180927 + -6.02405237e-07 -0.0248495787 6.73833682e-08 + 1.39999998 + 0.136993468 0.00439011399 -0.0245040692 0.990259111 + -6.02336399e-07 -0.0248495787 6.73887897e-08 + 1.43333328 + 0.128112569 0.0043954025 -0.0229182113 0.991485059 + -6.02372495e-07 -0.0248495787 6.755171e-08 + 1.46666658 + 0.141114011 0.00438753143 -0.0252398681 0.989661872 + -6.02333898e-07 -0.0248495787 6.76553782e-08 + 1.49999988 + 0.168768212 0.00436813617 -0.0301780347 0.985184014 + -6.0259481e-07 -0.0248495787 6.77132377e-08 + 1.53333318 + 0.205095977 0.0043370896 -0.0366649702 0.978045285 + -6.02440934e-07 -0.0248495787 6.77278464e-08 + 1.56666648 + 0.24404119 0.00429663807 -0.0436192341 0.968773901 + -6.02394039e-07 -0.0248495787 6.75331648e-08 + 1.59999979 + 0.280701101 0.0042515872 -0.0501653515 0.958473921 + -6.02368175e-07 -0.0248495787 6.78488519e-08 + 1.63333309 + 0.299918503 0.00422519865 -0.0535968542 0.952448666 + -6.02377384e-07 -0.0248495787 6.76246685e-08 + 1.66666639 + 0.297517866 0.00422860449 -0.0531681962 0.953225255 + -6.02365958e-07 -0.0248495787 6.75478447e-08 + 1.69999969 + 0.297517866 0.00422860449 -0.0531681925 0.953225255 + -6.02460545e-07 -0.0248495806 6.75396592e-08 + 1.73333299 + 0.297517866 0.00422860123 -0.0531681925 0.953225255 + -6.02407965e-07 -0.0248495787 6.78478997e-08 + 1.76666629 + 0.297517866 0.00422860309 -0.0531681925 0.953225255 + -6.02362888e-07 -0.0248495787 6.76943301e-08 + 1.79999959 + 0.297517866 0.00422860309 -0.0531681925 0.953225255 + -6.02492207e-07 -0.0248495787 6.77630112e-08 + 1.8333329 + 0.297517866 0.00422860403 -0.0531681925 0.953225255 + -6.02375337e-07 -0.0248495787 6.76771563e-08 + 1.8666662 + 0.297517866 0.00422861241 -0.0531681851 0.953225255 + -6.02343675e-07 -0.0248495787 6.76675e-08 + 1.8999995 + "R_Foot_sjnt_1" + 58 + -0.191294312 -0.0238175392 -0.0517863631 0.97987622 + -2.18792974e-12 0.133286357 -0.00287180441 + 0 + -0.214262858 -0.0246746819 -0.0493594073 0.975216031 + -9.71378468e-13 0.133286357 -0.00287180441 + 0.0333333351 + -0.284289479 -0.023614021 -0.0461126007 0.957337677 + 1.26538781e-13 0.133286357 -0.00287180441 + 0.0666666701 + -0.353470623 -0.0227461252 -0.0419313498 0.934228539 + -7.77156117e-13 0.133286357 -0.00287180441 + 0.100000001 + -0.380776286 -0.0216556285 -0.0433334075 0.923397362 + -3.46665361e-12 0.133286357 -0.00287180441 + 0.13333334 + -0.366511106 -0.0177115817 -0.038795013 0.92943579 + 5.56532596e-14 0.133286357 -0.00287180441 + 0.166666672 + -0.352131039 -0.0200588051 -0.0418908782 0.934797585 + -1.19277027e-12 0.133286357 -0.00287180441 + 0.200000003 + -0.279785991 -0.0158987194 -0.0387494005 0.959148347 + -1.01966428e-12 0.133286357 -0.00287180441 + 0.233333334 + -0.269191206 -0.0206745826 -0.0504059084 0.961544514 + 7.45190585e-13 0.133286357 -0.00287180441 + 0.266666681 + -0.306266636 -0.026490299 -0.0589237511 0.949751079 + -1.24997788e-12 0.133286357 -0.00287180441 + 0.300000012 + -0.379852712 -0.0319083333 -0.0679887757 0.921993136 + -1.60808248e-12 0.133286357 -0.00287180441 + 0.333333343 + -0.468054026 -0.0513059944 -0.0729855299 0.879185021 + 1.35746525e-12 0.133286342 -0.0028718072 + 0.366666675 + -0.415308058 -0.0528003611 -0.0772590339 0.904854894 + 1.17452716e-12 0.133286357 -0.00287180441 + 0.400000006 + -0.251203746 -0.0148774488 -0.0411965698 0.966942668 + -8.90310029e-14 0.133286357 -0.00287180441 + 0.433333337 + -0.270034611 -0.0140135754 -0.0404798128 0.961897254 + -4.6829385e-12 0.133286372 -0.00287180487 + 0.466666669 + -0.26661399 -0.00952995289 -0.0310717393 0.963255286 + -2.68435925e-12 0.133286357 -0.00287180441 + 0.5 + -0.267789453 -0.0111863175 -0.0365425162 0.962719262 + -6.3967321e-12 0.133286357 -0.00287180441 + 0.533333361 + -0.254732728 -0.0168203004 -0.0500115417 0.965570986 + -5.71347386e-13 0.133286357 -0.00287180441 + 0.566666722 + -0.217126518 -0.0240682848 -0.0640494227 0.973742485 + 1.45263359e-12 0.133286357 -0.00287180441 + 0.600000083 + -0.191294134 -0.0238175094 -0.0517863967 0.97987628 + -2.67203143e-12 0.133286357 -0.00287180441 + 0.633333445 + -0.214262947 -0.0246746689 -0.0493594222 0.975216031 + -1.77752919e-12 0.133286357 -0.00287180441 + 0.666666806 + -0.284289598 -0.0236140229 -0.046112597 0.957337737 + -7.6922469e-13 0.133286372 -0.00287180487 + 0.700000167 + -0.353470504 -0.0227461196 -0.0419312976 0.934228539 + -3.15836224e-14 0.133286357 -0.00287180441 + 0.733333528 + -0.380776435 -0.021655634 -0.0433334038 0.923397303 + -2.56577854e-12 0.133286357 -0.00287180441 + 0.766666889 + -0.366511166 -0.0177115761 -0.0387950353 0.92943573 + 2.85247385e-13 0.133286357 -0.00287180441 + 0.80000025 + -0.352131099 -0.0200588107 -0.0418908633 0.934797585 + -3.75347756e-12 0.133286357 -0.00287180441 + 0.833333611 + -0.27978611 -0.015898725 -0.0387494117 0.959148347 + 3.03188572e-13 0.133286357 -0.00287180441 + 0.866666973 + -0.269191325 -0.0206745882 -0.0504059121 0.961544514 + -3.48771663e-12 0.133286357 -0.00287180441 + 0.900000334 + -0.306266695 -0.0264903028 -0.0589237474 0.949751019 + -9.3303143e-13 0.133286357 -0.00287180441 + 0.933333695 + -0.379852742 -0.0319083333 -0.0679887757 0.921993136 + 1.50196294e-12 0.133286357 -0.00287180441 + 0.966667056 + -0.468054205 -0.0513060056 -0.0729855299 0.879184902 + -8.48663316e-13 0.133286342 -0.0028718072 + 1.00000036 + -0.415308148 -0.0528003611 -0.0772590414 0.904854894 + 5.61328734e-14 0.133286357 -0.00287180441 + 1.03333366 + -0.251203924 -0.0148774544 -0.0411965661 0.966942668 + 7.98152614e-13 0.133286357 -0.00287180441 + 1.06666696 + -0.27003479 -0.014013594 -0.0404797904 0.961897194 + -5.47785818e-12 0.133286372 -0.00287180813 + 1.10000026 + -0.26661405 -0.00952996127 -0.0310717281 0.963255286 + -2.79719347e-12 0.133286357 -0.00287180441 + 1.13333356 + -0.267789513 -0.0111863231 -0.0365425125 0.962719202 + -4.55756309e-12 0.133286357 -0.00287180441 + 1.16666687 + -0.254732758 -0.016820306 -0.0500115268 0.965570986 + -2.23366204e-12 0.133286357 -0.00287180441 + 1.20000017 + -0.217126548 -0.0240682866 -0.0640494227 0.973742485 + 1.85011121e-12 0.133286357 -0.00287180441 + 1.23333347 + -0.191294134 -0.0238175094 -0.0517863967 0.97987628 + -3.02065924e-12 0.133286357 -0.00287180441 + 1.26666677 + -0.214262947 -0.0246746689 -0.0493594222 0.975216031 + -1.91221258e-12 0.133286357 -0.00287180441 + 1.30000007 + -0.284289598 -0.023614021 -0.0461125933 0.957337737 + -5.7249317e-13 0.133286357 -0.00287180441 + 1.33333337 + -0.353470504 -0.0227461196 -0.0419312902 0.934228539 + 3.31823463e-13 0.133286357 -0.00287180441 + 1.36666667 + -0.380776435 -0.0216556359 -0.0433334038 0.923397303 + -1.62508223e-12 0.133286357 -0.00287180441 + 1.39999998 + -0.366511226 -0.0177115761 -0.0387950465 0.92943573 + 1.48908435e-12 0.133286357 -0.00287180441 + 1.43333328 + -0.352131128 -0.0200588144 -0.0418908633 0.934797585 + -3.61694659e-12 0.133286357 -0.00287180441 + 1.46666658 + -0.27978617 -0.0158987287 -0.0387494117 0.959148288 + 2.43264957e-12 0.133286357 -0.00287180441 + 1.49999988 + -0.269191414 -0.0206745919 -0.0504059196 0.961544454 + -2.86028959e-13 0.133286357 -0.00287180441 + 1.53333318 + -0.306266844 -0.0264903065 -0.0589237511 0.94975096 + 2.54065215e-12 0.133286357 -0.00287180441 + 1.56666648 + -0.379852802 -0.0319083333 -0.0679887757 0.921993077 + 2.24140707e-13 0.133286357 -0.00287180441 + 1.59999979 + -0.468054384 -0.0513060205 -0.0729855299 0.879184783 + 1.07034379e-12 0.133286342 -0.0028718072 + 1.63333309 + -0.415308237 -0.0528003648 -0.0772590414 0.904854834 + -1.16216368e-12 0.133286357 -0.00287180441 + 1.66666639 + -0.251204163 -0.0148774656 -0.0411965437 0.966942608 + -7.76907401e-13 0.133286357 -0.00287180441 + 1.69999969 + -0.270035177 -0.0140136462 -0.0404797345 0.961897135 + -3.01184858e-12 0.133286372 -0.00287180487 + 1.73333299 + -0.266614228 -0.00952999108 -0.0310716741 0.963255227 + -2.46259892e-12 0.133286357 -0.00287180441 + 1.76666629 + -0.267789781 -0.011186352 -0.0365424678 0.962719142 + -3.5539926e-12 0.133286357 -0.00287180441 + 1.79999959 + -0.254733056 -0.0168203544 -0.0500114299 0.965570807 + -3.98074455e-12 0.133286357 -0.00287180441 + 1.8333329 + -0.217126861 -0.0240682978 -0.0640494227 0.973742485 + 1.50293992e-12 0.133286357 -0.00287180441 + 1.8666662 + -0.191294253 -0.0238175355 -0.0517863594 0.97987622 + 3.70761202e-13 0.133286357 -0.00287180441 + 1.8999995 + "L_Thumb_sjnt_3" + 58 + -2.49208938e-07 -3.21174269e-07 1.00952519e-07 1 + -7.59183138e-07 -0.0181290414 5.47389618e-07 + 0 + -2.48784858e-07 -3.19973168e-07 1.00705876e-07 1 + -7.58745443e-07 -0.0181290414 5.47835555e-07 + 0.0333333351 + -2.47798027e-07 -3.2193114e-07 1.01133367e-07 1 + -7.58762951e-07 -0.0181290414 5.47871366e-07 + 0.0666666701 + -2.48221141e-07 -3.20534269e-07 1.00368844e-07 1 + -7.58993622e-07 -0.0181290414 5.47568732e-07 + 0.100000001 + -2.50154102e-07 -3.20393781e-07 9.91428379e-08 1 + -7.58863507e-07 -0.0181290414 5.47514446e-07 + 0.13333334 + -2.49236564e-07 -3.20255793e-07 9.92970186e-08 1 + -7.58559679e-07 -0.0181290414 5.47826858e-07 + 0.166666672 + -2.4810538e-07 -3.21181716e-07 1.00510775e-07 1 + -7.59152726e-07 -0.0181290414 5.47467948e-07 + 0.200000003 + -2.47726632e-07 -3.21783489e-07 1.00437589e-07 1 + -7.58892099e-07 -0.0181290414 5.47710556e-07 + 0.233333334 + -2.4918134e-07 -3.20541773e-07 1.0171636e-07 1 + -7.59400052e-07 -0.0181290414 5.47220907e-07 + 0.266666681 + -2.49292469e-07 -3.20131363e-07 1.00984408e-07 1 + -7.58462534e-07 -0.0181290414 5.4807191e-07 + 0.300000012 + -2.46474826e-07 -3.2156035e-07 1.00271635e-07 1 + -7.58864928e-07 -0.0181290414 5.47845445e-07 + 0.333333343 + -2.47127019e-07 -3.20329633e-07 1.00665446e-07 1 + -7.57924965e-07 -0.0181290396 5.47018715e-07 + 0.366666675 + -2.48503682e-07 -3.21080847e-07 9.95137555e-08 1 + -7.58967587e-07 -0.0181290414 5.47545767e-07 + 0.400000006 + -2.46350965e-07 -3.2142799e-07 1.01275781e-07 1 + -7.5907684e-07 -0.0181290414 5.4768833e-07 + 0.433333337 + -2.5177826e-07 -3.20561782e-07 9.99678491e-08 1 + -7.58657393e-07 -0.0181290414 5.47695606e-07 + 0.466666669 + -2.44745962e-07 -3.18064963e-07 1.02892635e-07 1 + -7.59182058e-07 -0.0181290414 5.47817081e-07 + 0.5 + -2.47911316e-07 -3.22335154e-07 9.98214205e-08 1 + -7.58814451e-07 -0.0181290414 5.47775926e-07 + 0.533333361 + -2.50250508e-07 -3.2066626e-07 9.88772726e-08 1 + -7.58516535e-07 -0.0181290414 5.47814921e-07 + 0.566666722 + -2.48923584e-07 -3.20817577e-07 9.98450105e-08 1 + -7.61321644e-07 -0.0181290414 5.45350076e-07 + 0.600000083 + -2.4860185e-07 -3.20686695e-07 1.01071748e-07 1 + -7.59219517e-07 -0.0181290414 5.47400191e-07 + 0.633333445 + -2.49212803e-07 -3.20515198e-07 1.01284137e-07 1 + -7.59118677e-07 -0.0181290414 5.47452657e-07 + 0.666666806 + -2.49209307e-07 -3.19635916e-07 1.00805508e-07 1 + -7.59214061e-07 -0.0181290414 5.48348396e-07 + 0.700000167 + -2.47960912e-07 -3.21273887e-07 1.00854621e-07 1 + -7.58868111e-07 -0.0181290414 5.47748755e-07 + 0.733333528 + -2.47719214e-07 -3.20494905e-07 1.03518559e-07 1 + -7.59267607e-07 -0.0181290414 5.47564355e-07 + 0.766666889 + -2.49429633e-07 -3.19244066e-07 1.01281465e-07 1 + -7.5879052e-07 -0.0181290414 5.47746424e-07 + 0.80000025 + -2.46261237e-07 -3.23809047e-07 9.76969119e-08 1 + -7.5876136e-07 -0.0181290414 5.47802813e-07 + 0.833333611 + -2.50122696e-07 -3.1722962e-07 1.03786228e-07 1 + -7.59743614e-07 -0.0181290414 5.47620289e-07 + 0.866666973 + -2.4928795e-07 -3.20112235e-07 1.0141035e-07 1 + -7.59830982e-07 -0.0181290414 5.46800038e-07 + 0.900000334 + -2.47260516e-07 -3.2075198e-07 1.00860056e-07 1 + -7.58641193e-07 -0.0181290414 5.48033256e-07 + 0.933333695 + -2.46332945e-07 -3.22426786e-07 1.00184977e-07 1 + -7.59006298e-07 -0.0181290414 5.47708623e-07 + 0.966667056 + -2.39838641e-07 -3.15043138e-07 1.07423155e-07 1 + -7.58515853e-07 -0.0181290396 5.47295542e-07 + 1.00000036 + -2.51288014e-07 -3.21439131e-07 9.87508955e-08 1 + -7.588946e-07 -0.0181290414 5.47411616e-07 + 1.03333366 + -2.46690092e-07 -3.21288297e-07 1.01161014e-07 1 + -7.59021702e-07 -0.0181290414 5.47743298e-07 + 1.06666696 + -2.4679872e-07 -3.20757209e-07 1.01394924e-07 1 + -7.58877775e-07 -0.0181290414 5.47877505e-07 + 1.10000026 + -2.48378996e-07 -3.19616362e-07 1.0118405e-07 1 + -7.58893407e-07 -0.0181290414 5.47755235e-07 + 1.13333356 + -2.48369133e-07 -3.2152974e-07 1.00141428e-07 1 + -7.58761132e-07 -0.0181290414 5.47814238e-07 + 1.16666687 + -2.48776018e-07 -3.19968308e-07 1.01282929e-07 1 + -7.5849664e-07 -0.0181290414 5.48002276e-07 + 1.20000017 + -2.48285204e-07 -3.20889654e-07 1.00839827e-07 1 + -7.61174306e-07 -0.0181290414 5.45552496e-07 + 1.23333347 + -2.46755945e-07 -3.2253206e-07 9.90859377e-08 1 + -7.59135276e-07 -0.0181290414 5.47449076e-07 + 1.26666677 + -2.48666765e-07 -3.19684631e-07 1.01061964e-07 1 + -7.58788588e-07 -0.0181290414 5.47785646e-07 + 1.30000007 + -2.46969307e-07 -3.21169637e-07 1.00753368e-07 1 + -7.59149486e-07 -0.0181290414 5.47544403e-07 + 1.33333337 + -2.43657439e-07 -3.24146129e-07 9.59972795e-08 1 + -7.58823944e-07 -0.0181290414 5.47719253e-07 + 1.36666667 + -2.53542879e-07 -3.1738108e-07 1.03702646e-07 1 + -7.58813883e-07 -0.0181290414 5.47517061e-07 + 1.39999998 + -2.47016771e-07 -3.24423809e-07 9.77826673e-08 1 + -7.58824285e-07 -0.0181290414 5.47696629e-07 + 1.43333328 + -2.46689524e-07 -3.24098096e-07 9.82715136e-08 1 + -7.59099464e-07 -0.0181290414 5.47514105e-07 + 1.46666658 + -2.48190275e-07 -3.20532223e-07 1.01171111e-07 1 + -7.59404145e-07 -0.0181290414 5.47254501e-07 + 1.49999988 + -2.47578555e-07 -3.18980653e-07 1.0067037e-07 1 + -7.60628836e-07 -0.0181290414 5.46132696e-07 + 1.53333318 + -2.5025912e-07 -3.2193816e-07 1.03378284e-07 1 + -7.59121463e-07 -0.0181290414 5.47578225e-07 + 1.56666648 + -2.5039904e-07 -3.19302501e-07 8.90602649e-08 1 + -7.5807003e-07 -0.0181290414 5.47685318e-07 + 1.59999979 + -2.30348292e-07 -3.19308697e-07 1.03546085e-07 1 + -7.5829405e-07 -0.0181290396 5.47862555e-07 + 1.63333309 + -2.54268059e-07 -3.21719142e-07 1.01207995e-07 1 + -7.58850774e-07 -0.0181290414 5.47419404e-07 + 1.66666639 + -2.57094229e-07 -3.2451274e-07 9.91819604e-08 1 + -7.58783699e-07 -0.0181290414 5.47196009e-07 + 1.69999969 + -2.65078171e-07 -3.2037434e-07 9.9120868e-08 1 + -7.5798863e-07 -0.0181290414 5.46121555e-07 + 1.73333299 + -2.37456192e-07 -3.18537246e-07 1.05297715e-07 1 + -7.59075249e-07 -0.0181290414 5.48439971e-07 + 1.76666629 + -2.48292508e-07 -3.21003625e-07 1.00884805e-07 1 + -7.58944338e-07 -0.0181290414 5.47682362e-07 + 1.79999959 + -2.47499315e-07 -3.21989035e-07 1.0493185e-07 1 + -7.58805982e-07 -0.0181290414 5.48046785e-07 + 1.8333329 + -2.47553572e-07 -3.20815673e-07 9.95948994e-08 1 + -7.59743955e-07 -0.0181290414 5.46910826e-07 + 1.8666662 + -2.49075129e-07 -3.21862927e-07 1.00564939e-07 1 + -7.5922884e-07 -0.0181290414 5.47324134e-07 + 1.8999995 + "R_Prop_fjnt_0" + 58 + -6.59194855e-17 7.89631204e-33 -1.66533454e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0 + -6.61815032e-17 6.37338203e-20 -1.66462647e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.0333333351 + -6.69488423e-17 2.50382893e-19 -1.6625527e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.0666666701 + -6.81934248e-17 5.53118512e-19 -1.65918878e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.100000001 + -6.98871665e-17 9.65112153e-19 -1.6546111e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.13333334 + -7.20020224e-17 1.47953526e-18 -1.64889535e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.166666672 + -7.45099017e-17 2.08955894e-18 -1.64211723e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.200000003 + -7.73827198e-17 2.78835471e-18 -1.63435298e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.233333334 + -8.05924321e-17 3.56909368e-18 -1.62567791e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.266666681 + -8.41109408e-17 4.42494809e-18 -1.61616851e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.300000012 + -8.79101879e-17 5.34908875e-18 -1.60590022e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.333333343 + -9.19620892e-17 6.33468603e-18 -1.59494914e-16 1 + -0.0276775789 0.0656346902 0.000327039947 + 0.366666675 + -9.62385798e-17 7.37491404e-18 -1.58339111e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.400000006 + -1.00711589e-16 8.46294192e-18 -1.57130184e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.433333337 + -1.05353025e-16 9.59194006e-18 -1.55875741e-16 1 + -0.0276775826 0.0656346902 0.000327039947 + 0.466666669 + -1.10134837e-16 1.07550817e-17 -1.54583367e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.5 + -1.15028927e-16 1.19455402e-17 -1.53260633e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.533333361 + -1.20007244e-16 1.31564822e-17 -1.51915134e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.566666722 + -1.25041704e-16 1.43810825e-17 -1.50554482e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.600000083 + -1.30104261e-16 1.56125096e-17 -1.49186219e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.633333445 + -1.31535985e-16 1.59607692e-17 -1.48799257e-16 1 + -0.0276775807 0.0656346828 0.000327039947 + 0.666666806 + -1.32490472e-16 1.61929423e-17 -1.48541296e-16 1 + -0.0276775826 0.0656346902 0.000327039947 + 0.700000167 + -1.33023877e-16 1.63226889e-17 -1.48397128e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.733333528 + -1.33192318e-16 1.63636591e-17 -1.483516e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.766666889 + -1.33051949e-16 1.63295147e-17 -1.48389545e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.80000025 + -1.32658925e-16 1.62339158e-17 -1.48495768e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.833333611 + -1.32069377e-16 1.60905125e-17 -1.48655103e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.866666973 + -1.31339486e-16 1.59129698e-17 -1.48852382e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.900000334 + -1.30525355e-16 1.57149394e-17 -1.49072399e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.933333695 + -1.29683153e-16 1.55100815e-17 -1.49300039e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 0.966667056 + -1.28869022e-16 1.53120495e-17 -1.49520056e-16 1 + -0.0276775789 0.0656346902 0.000327039947 + 1.00000036 + -1.28139131e-16 1.51345068e-17 -1.49717335e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.03333366 + -1.27549583e-16 1.49911051e-17 -1.4987667e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.06666696 + -1.2715656e-16 1.48955045e-17 -1.49982893e-16 1 + -0.0276775826 0.0656346902 0.000327039947 + 1.10000026 + -1.27016217e-16 1.48613618e-17 -1.50020838e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.13333356 + -1.27184644e-16 1.49023337e-17 -1.4997531e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.16666687 + -1.27718023e-16 1.5032077e-17 -1.49831155e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.20000017 + -1.2867251e-16 1.52642517e-17 -1.49573181e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.23333347 + -1.30104261e-16 1.56125096e-17 -1.49186219e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.26666677 + -1.35166791e-16 1.68439384e-17 -1.47817956e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.30000007 + -1.40201251e-16 1.80685379e-17 -1.46457304e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.33333337 + -1.45179594e-16 1.92794823e-17 -1.45111805e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.36666667 + -1.50073684e-16 2.04699392e-17 -1.43789071e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.39999998 + -1.5485549e-16 2.16330792e-17 -1.42496697e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.43333328 + -1.59496939e-16 2.27620798e-17 -1.41242254e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.46666658 + -1.63969935e-16 2.38501069e-17 -1.40033326e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.49999988 + -1.68246419e-16 2.48903345e-17 -1.38877524e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.53333318 + -1.72298333e-16 2.58759318e-17 -1.37782403e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.56666648 + -1.76097581e-16 2.68000728e-17 -1.36755587e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.59999979 + -1.79616089e-16 2.76559252e-17 -1.35804634e-16 1 + -0.0276775789 0.0656346902 0.000327039947 + 1.63333309 + -1.82825788e-16 2.84366662e-17 -1.3493714e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.66666639 + -1.8569862e-16 2.91354618e-17 -1.34160715e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.69999969 + -1.88206486e-16 2.97454843e-17 -1.33482903e-16 1 + -0.0276775826 0.0656346902 0.000327039947 + 1.73333299 + -1.90321328e-16 3.02599079e-17 -1.32911328e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.76666629 + -1.92015103e-16 3.06719001e-17 -1.3245356e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.79999959 + -1.93259673e-16 3.09746383e-17 -1.32117182e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.8333329 + -1.94027031e-16 3.11612866e-17 -1.31909791e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.8666662 + -1.94289016e-16 3.12250193e-17 -1.31838971e-16 1 + -0.0276775807 0.0656346902 0.000327039947 + 1.8999995 + "R_Ring_sjnt_0" + 58 + 0.194513142 -0.693358243 0.356375396 0.595328212 + 0.00625085598 0.0797746703 -0.00940056238 + 0 + 0.165627554 -0.700132847 0.345483065 0.602513909 + 0.00625085598 0.0797746703 -0.00940056238 + 0.0333333351 + 0.133881614 -0.706211209 0.333525658 0.610001743 + 0.00625085598 0.0797746703 -0.00940056238 + 0.0666666701 + 0.105762981 -0.710428536 0.322931051 0.616296232 + 0.00625085598 0.0797746703 -0.00940056238 + 0.100000001 + 0.0882945731 -0.712574244 0.316322714 0.619985521 + 0.00625085598 0.0797746703 -0.00940056238 + 0.13333334 + 0.0846769884 -0.712253928 0.315146118 0.62145555 + 0.00625085598 0.0797746703 -0.00940056238 + 0.166666672 + 0.0916466862 -0.709464669 0.318360895 0.622018635 + 0.00625085598 0.0797746703 -0.00940056238 + 0.200000003 + 0.105957858 -0.70482105 0.32471171 0.621741593 + 0.00625085598 0.0797746703 -0.00940056238 + 0.233333334 + 0.124819674 -0.699103594 0.333001792 0.620309651 + 0.00625085598 0.0797746703 -0.00940056238 + 0.266666681 + 0.145467177 -0.693249881 0.341916561 0.617524922 + 0.00625085598 0.0797746703 -0.00940056238 + 0.300000012 + 0.165245265 -0.688500941 0.350019962 0.613307893 + 0.00625085598 0.0797746703 -0.00940056238 + 0.333333343 + 0.181610033 -0.686393619 0.355804086 0.607688248 + 0.00625085598 0.0797746703 -0.00940056238 + 0.366666675 + 0.192011937 -0.68852216 0.357813001 0.600864768 + 0.00625085598 0.0797746703 -0.00940056238 + 0.400000006 + 0.194069162 -0.69750011 0.354507744 0.591738939 + 0.00625085598 0.0797746703 -0.00940056238 + 0.433333337 + 0.186930716 -0.715963185 0.345225364 0.577298045 + 0.00625085644 0.0797746703 -0.00940056331 + 0.466666669 + 0.172392145 -0.741599381 0.332194656 0.556738794 + 0.00625085598 0.0797746703 -0.00940056238 + 0.5 + 0.152908862 -0.76899004 0.318636805 0.53267616 + 0.00625085598 0.0797746629 -0.00940056238 + 0.533333361 + 0.131461158 -0.793947756 0.306780577 0.508183718 + 0.00625085598 0.0797746703 -0.00940056238 + 0.566666722 + -0.111532308 0.813464582 -0.297717005 -0.487032443 + 0.00625085598 0.0797746703 -0.00940056238 + 0.600000083 + -0.0968408287 0.825559437 -0.291552633 -0.473360956 + 0.00625085598 0.0797746703 -0.00940056238 + 0.633333445 + -0.0911168978 0.828686416 -0.288046718 -0.471174777 + 0.00625085598 0.0797746629 -0.00940056145 + 0.666666806 + -0.0985542461 0.816830754 -0.287262499 -0.490464061 + 0.00625085644 0.0797746703 -0.00940056331 + 0.700000167 + 0.11683993 -0.78890729 0.290486723 0.52876389 + 0.00625085598 0.0797746703 -0.00940056238 + 0.733333528 + 0.139675021 -0.751077294 0.29900375 0.571813464 + 0.00625085598 0.0797746703 -0.00940056238 + 0.766666889 + 0.160663307 -0.714065552 0.310807168 0.606379986 + 0.00625085598 0.0797746703 -0.00940056238 + 0.80000025 + 0.174262345 -0.69226712 0.320195347 0.622795165 + 0.00625085598 0.0797746703 -0.00940056238 + 0.833333611 + 0.180004418 -0.709089279 0.3203578 0.601798773 + 0.00625085598 0.0797746629 -0.00940056145 + 0.866666973 + 0.179426819 -0.75526154 0.313918859 0.546663582 + 0.00625085598 0.0797746703 -0.00940056238 + 0.900000334 + -0.171725169 0.792217195 -0.309481353 -0.497115493 + 0.00625085598 0.0797746703 -0.00940056238 + 0.933333695 + 0.148317963 -0.789143622 0.310531646 0.508747756 + 0.00625085598 0.0797746703 -0.00940056238 + 0.966667056 + 0.107980117 -0.743701816 0.311854035 0.581373394 + 0.00625085505 0.0797746703 -0.00940056238 + 1.00000036 + 0.0722086206 -0.689412117 0.308974713 0.651176929 + 0.00625085598 0.0797746703 -0.00940056238 + 1.03333366 + 0.0597306378 -0.667088628 0.306982785 0.676155746 + 0.00625085598 0.0797746703 -0.00940056238 + 1.06666696 + 0.0612905808 -0.669898629 0.307261497 0.673104584 + 0.00625085644 0.0797746703 -0.00940056238 + 1.10000026 + 0.061521817 -0.669773281 0.307560861 0.673071384 + 0.00625085598 0.0797746703 -0.00940056238 + 1.13333356 + 0.0600316077 -0.67056191 0.30567354 0.673280537 + 0.00625085598 0.0797746629 -0.00940056238 + 1.16666687 + 0.0458115265 -0.678080022 0.287381917 0.674922585 + 0.00625085598 0.0797746703 -0.00940056238 + 1.20000017 + 0.0241364352 -0.690141141 0.257141352 0.676018476 + 0.00625085598 0.0797746703 -0.00940056238 + 1.23333347 + 0.0201330017 -0.697014928 0.240654215 0.675167024 + 0.00625085598 0.0797746703 -0.00940056238 + 1.26666677 + 0.045183178 -0.695232153 0.246165231 0.673805177 + 0.00625085598 0.0797746703 -0.00940056238 + 1.30000007 + 0.0872995034 -0.686936617 0.262940049 0.67183286 + 0.00625085598 0.0797746703 -0.00940056238 + 1.33333337 + 0.137978494 -0.672212243 0.287195355 0.668289959 + 0.00625085598 0.0797746703 -0.00940056238 + 1.36666667 + 0.188908905 -0.652839422 0.314703673 0.662627876 + 0.00625085598 0.0797746703 -0.00940056238 + 1.39999998 + 0.232600465 -0.632830024 0.340613753 0.655290425 + 0.00625085598 0.0797746703 -0.00940056238 + 1.43333328 + 0.262062758 -0.6184268 0.359207243 0.647951901 + 0.00625085598 0.0797746703 -0.00940056238 + 1.46666658 + 0.27693069 -0.612452269 0.369186908 0.641804278 + 0.00625085598 0.0797746703 -0.00940056238 + 1.49999988 + 0.282761604 -0.612374127 0.374112695 0.636461794 + 0.00625085598 0.0797746703 -0.00940056238 + 1.53333318 + 0.282695442 -0.616279364 0.376064092 0.631552696 + 0.00625085598 0.0797746703 -0.00940056238 + 1.56666648 + 0.277606159 -0.623504043 0.375547081 0.627010286 + 0.00625085598 0.0797746703 -0.00940056238 + 1.59999979 + 0.268546402 -0.633116782 0.373257905 0.6226753 + 0.00625085598 0.0797746703 -0.00940056238 + 1.63333309 + 0.25657171 -0.644174218 0.369872093 0.618389189 + 0.00625085598 0.0797746703 -0.00940056238 + 1.66666639 + 0.242782682 -0.655789196 0.36602217 0.614023626 + 0.00625085598 0.0797746703 -0.00940056238 + 1.69999969 + 0.228345826 -0.667177677 0.362280458 0.609495819 + 0.00625085644 0.0797746703 -0.00940056331 + 1.73333299 + 0.214496076 -0.677684546 0.359149992 0.604769647 + 0.00625085598 0.0797746703 -0.00940056331 + 1.76666629 + 0.202473357 -0.686844885 0.357071161 0.599790633 + 0.00625085598 0.0797746629 -0.00940056238 + 1.79999959 + 0.194099054 -0.693687677 0.356339961 0.59510076 + 0.00625085598 0.0797746703 -0.00940056238 + 1.8333329 + 0.194513142 -0.693358243 0.356375396 0.595328212 + 0.00625085598 0.0797746703 -0.00940056238 + 1.8666662 + 0.194513142 -0.693358243 0.356375396 0.595328212 + 0.00625085598 0.0797746703 -0.00940056238 + 1.8999995 + "R_Leg_sjnt_0" + 58 + 0.945205092 -0.0357932076 0.0712017268 0.316601455 + -0.104853801 -0.000224408359 7.95794331e-05 + 0 + 0.914676189 0.0168901831 0.0825690851 0.3953031 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.0333333351 + 0.894564271 0.0663838312 0.0520628877 0.438904852 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.0666666701 + 0.888479888 0.0786972865 0.00231945538 0.452111512 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.100000001 + 0.901181221 0.0556794889 -0.0348706357 0.42843473 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.13333334 + 0.92215699 0.0348187797 -0.0534968749 0.381513119 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.166666672 + 0.92758131 0.0556994565 -0.0389248691 0.367390037 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.200000003 + 0.935494304 0.0988584906 -0.0131065026 0.338977337 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.233333334 + 0.951561093 0.126683235 -0.00535163516 0.280096859 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.266666681 + 0.970651269 0.123947933 -0.00554455305 0.206015274 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.300000012 + 0.988871336 0.0902494267 0.000261187583 0.118272759 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.333333343 + 0.998530805 0.0520173684 0.00321312388 0.0148355952 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.366666675 + 0.997528434 0.0399041437 -0.00929606706 -0.0570818223 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.400000006 + 0.995766342 0.0630016997 -0.0439965688 -0.0504428707 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.433333337 + 0.99300319 0.0983576179 -0.0569216721 -0.032100413 + -0.104853801 -0.000224408359 7.95794476e-05 + 0.466666669 + 0.99353081 0.108063444 -0.0319989622 -0.0139628537 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.5 + 0.996472239 0.0786125362 0.0151042696 0.0251998268 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.533333361 + 0.993258417 0.0273842774 0.0499396808 0.100964688 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.566666722 + 0.975215197 -0.01616171 0.0560292862 0.213436022 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.600000083 + 0.944284379 -0.0212330576 0.0602503717 0.322871596 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.633333445 + 0.913980365 0.0228154268 0.0682021603 0.399334282 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.666666806 + 0.893713713 0.0691066831 0.0459064804 0.440899879 + -0.104853801 -0.000224408373 7.95794331e-05 + 0.700000167 + 0.887852192 0.0798441693 0.00160414306 0.453145534 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.733333528 + 0.901190877 0.0558668524 -0.0343161039 0.428434759 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.766666889 + 0.922750533 0.0343644097 -0.0535472743 0.380109638 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.80000025 + 0.927530408 0.0555870347 -0.0390678905 0.367520362 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.833333611 + 0.935495019 0.0988904685 -0.0131010115 0.33896637 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.866666973 + 0.951582253 0.12644805 -0.00534600345 0.280131489 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.900000334 + 0.970678627 0.123571582 -0.00559486076 0.206111014 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.933333695 + 0.988871098 0.0902218819 0.0002311055 0.118296206 + -0.104853801 -0.000224408359 7.95794331e-05 + 0.966667056 + 0.998531342 0.0520003811 0.00317776273 0.0148681439 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.00000036 + 0.99763155 0.0400121249 -0.00921865273 -0.0551855899 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.03333366 + 0.995887995 0.0631791651 -0.0439401679 -0.0477989726 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.06666696 + 0.993059576 0.0983095989 -0.0568714887 -0.030553693 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.10000026 + 0.993602872 0.107529238 -0.0317164809 -0.0135951638 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.13333356 + 0.99654448 0.0777126476 0.0157192238 0.0247546732 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.16666687 + 0.993311524 0.0265220851 0.0507418364 0.100270338 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.20000017 + 0.97529006 -0.0168502461 0.0565994754 0.212889299 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.23333347 + 0.94428432 -0.0212330595 0.0602503754 0.322871804 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.26666677 + 0.913936615 0.0231432058 0.067402184 0.399551272 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.30000007 + 0.893611252 0.0694255829 0.0451817364 0.441132247 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.33333337 + 0.887735307 0.0800579414 0.00146996032 0.453337222 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.36666667 + 0.90119946 0.0559160858 -0.0341688879 0.428421944 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.39999998 + 0.922983766 0.034198422 -0.0535666533 0.379555225 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.43333328 + 0.927508831 0.0555346906 -0.0391341411 0.367575467 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.46666658 + 0.935495377 0.0989091322 -0.0130978003 0.338960081 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.49999988 + 0.951597691 0.126276985 -0.00534197455 0.280156195 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.53333318 + 0.970703125 0.123232886 -0.00564013375 0.206197158 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.56666648 + 0.98887074 0.0901912749 0.000197717658 0.118322536 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.59999979 + 0.998532057 0.0519770272 0.00312913768 0.0149127534 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.63333309 + 0.997797251 0.0401958525 -0.00908746757 -0.0519843362 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.66666639 + 0.996124685 0.0635560378 -0.0438210629 -0.0421431698 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.69999969 + 0.993204713 0.0981694162 -0.0567343906 -0.0262378026 + -0.104853801 -0.000224408373 7.95794331e-05 + 1.73333299 + 0.993869066 0.105522811 -0.0306603722 -0.0122171128 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.76666629 + 0.996906459 0.0729113147 0.0189978052 0.0223731678 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.79999959 + 0.993690908 0.0191858318 0.0575352162 0.0943398178 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.8333329 + 0.976453245 -0.0293227304 0.0667701289 0.203029662 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.8666662 + 0.945205152 -0.0357931964 0.0712017268 0.316601366 + -0.104853801 -0.000224408359 7.95794331e-05 + 1.8999995 + "R_Foot_sjnt_0" + 58 + -0.656952262 -0.0808357224 0.0931657329 0.743773758 + 5.11941563e-13 0.38817063 -5.6559202e-14 + 0 + -0.664525211 -0.0457556397 0.0778712854 0.741787553 + 1.92446055e-14 0.38817063 -3.44968493e-13 + 0.0333333351 + -0.630399823 0.0192110334 0.0795636028 0.77194345 + -2.69655392e-13 0.38817063 1.28544278e-12 + 0.0666666701 + -0.595992625 0.0525934026 0.058545813 0.799124002 + 1.46664893e-13 0.38817063 1.71453956e-13 + 0.100000001 + -0.588284194 0.0484918207 0.0080015976 0.807159305 + -1.91747052e-12 0.38817063 -4.2916781e-14 + 0.13333334 + -0.587880254 0.0601386689 0.0254727006 0.806307197 + -2.60520501e-13 0.38817063 -9.87085956e-13 + 0.166666672 + -0.571771264 0.0338588618 0.0571388863 0.817720234 + -1.4228618e-13 0.38817063 1.33695713e-12 + 0.200000003 + -0.609610379 0.00307323993 0.0391006283 0.791730344 + -6.19619915e-13 0.38817063 6.91784412e-13 + 0.233333334 + -0.683955848 -0.00985726248 0.0386869162 0.728430212 + -7.03161975e-13 0.38817063 5.03632672e-13 + 0.266666681 + -0.71070838 -0.0178230181 0.029907506 0.702624798 + -1.97264419e-13 0.38817063 -1.22213342e-13 + 0.300000012 + -0.677600563 -0.0290612802 0.0101571735 0.734785557 + -1.74432018e-12 0.38817063 -1.85025321e-13 + 0.333333343 + -0.568821728 -0.0322730541 0.00884920917 0.821779847 + 3.6484593e-13 0.38817063 -1.04122928e-12 + 0.366666675 + -0.431731522 -0.0277265254 0.0234999377 0.901269674 + 3.86553013e-13 0.38817063 3.77298182e-13 + 0.400000006 + -0.410536587 -0.00250672945 0.015075705 0.911716044 + -3.02833306e-13 0.38817063 5.17061925e-13 + 0.433333337 + -0.456480175 -0.00654301886 0.0141024394 0.889597774 + 1.00413894e-12 0.38817066 -4.08917339e-13 + 0.466666669 + -0.476070881 -0.00876795035 0.0244139545 0.879024267 + -1.09775296e-12 0.38817063 2.60683922e-12 + 0.5 + -0.502164483 -0.00118100189 0.0735063478 0.861641645 + -1.96993095e-12 0.38817063 1.45206514e-12 + 0.533333361 + -0.537203908 -0.00160198775 0.112025678 0.835978329 + 3.80078185e-13 0.38817063 9.49285071e-14 + 0.566666722 + -0.599297941 -0.0407124609 0.110199101 0.791858971 + 9.70032973e-13 0.38817063 4.35136356e-13 + 0.600000083 + -0.657893598 -0.0660268441 0.0755557269 0.746396482 + 6.06910084e-13 0.38817063 -2.71285219e-13 + 0.633333445 + -0.665322244 -0.0352576822 0.0676190406 0.742651284 + -1.8395951e-12 0.38817063 -1.38882677e-12 + 0.666666806 + -0.629359901 0.0249071606 0.0764952302 0.772938728 + -6.30455649e-13 0.38817063 5.66444678e-13 + 0.700000167 + -0.593360245 0.0546235032 0.0586293228 0.800938547 + 2.47055712e-13 0.38817063 -5.75255392e-13 + 0.733333528 + -0.583826065 0.0488937348 0.0082789408 0.810362875 + -9.2587266e-13 0.38817063 -1.0521717e-12 + 0.766666889 + -0.582161367 0.0601434372 0.0257325284 0.810437381 + -4.86082257e-13 0.38817063 -1.4097168e-13 + 0.80000025 + -0.569930434 0.033882387 0.0571803525 0.819000423 + -1.80904174e-13 0.38817063 -1.20280673e-12 + 0.833333611 + -0.609603941 0.00309490412 0.039121177 0.791734159 + -4.34425824e-13 0.38817063 6.95194987e-13 + 0.866666973 + -0.683954 -0.00976278726 0.0384725109 0.728444517 + -2.82113872e-12 0.38817063 2.27942096e-13 + 0.900000334 + -0.710727751 -0.017680224 0.0295878071 0.702622294 + 4.48352455e-13 0.38817063 3.46744863e-14 + 0.933333695 + -0.677617252 -0.029053174 0.0101582259 0.734770477 + -8.99014153e-13 0.38817063 -3.46744863e-14 + 0.966667056 + -0.568856716 -0.0322454385 0.00885776058 0.821756542 + 8.53823685e-13 0.38817063 -9.61790651e-13 + 1.00000036 + -0.43279922 -0.0276951045 0.0235664509 0.900756598 + 4.08757473e-13 0.38817063 6.73878705e-13 + 1.03333366 + -0.411727667 -0.00249694637 0.0150167355 0.911179841 + -1.92130749e-13 0.38817063 1.62003742e-14 + 1.06666696 + -0.457019538 -0.00677126739 0.0139930248 0.889320791 + 1.54258821e-13 0.38817066 -7.41451334e-13 + 1.10000026 + -0.476261079 -0.00945603382 0.0245355479 0.87891072 + -1.27464261e-12 0.38817063 2.01282545e-12 + 1.13333356 + -0.502165377 -0.00225318852 0.0741141364 0.861586928 + -1.31239019e-12 0.38817063 1.61179512e-12 + 1.16666687 + -0.537085712 -0.00265778066 0.112991504 0.835921586 + -1.72359902e-13 0.38817063 -2.22257759e-13 + 1.20000017 + -0.599286437 -0.041346591 0.110977992 0.791726053 + 1.40069282e-12 0.38817063 5.57065482e-14 + 1.23333347 + -0.657893538 -0.0660268441 0.0755557269 0.746396661 + 8.445511e-13 0.38817063 6.1390888e-14 + 1.26666677 + -0.665358663 -0.0346748643 0.0670472309 0.742697954 + -1.2540368e-12 0.38817063 -9.24842451e-13 + 1.30000007 + -0.629233897 0.0255770124 0.0761332735 0.773055196 + -3.39888111e-13 0.38817063 1.97246668e-12 + 1.33333337 + -0.592864752 0.0550039858 0.0586444438 0.801278234 + 4.46220819e-14 0.38817063 -1.51203485e-13 + 1.36666667 + -0.582623303 0.0490007028 0.0083524771 0.811220884 + -7.37685466e-13 0.38817063 -2.54658518e-13 + 1.39999998 + -0.580059826 0.0601433404 0.0258274563 0.811939895 + -1.91349161e-13 0.38817063 1.09025679e-12 + 1.43333328 + -0.569075227 0.0338930301 0.057199534 0.819593191 + -3.9861445e-14 0.38817063 -8.19682104e-13 + 1.46666658 + -0.609600008 0.00310753426 0.0391331725 0.791736543 + 4.34408043e-13 0.38817063 2.68300925e-13 + 1.49999988 + -0.683952808 -0.00969407242 0.0383165628 0.728454828 + -2.11425539e-12 0.38817063 1.59161573e-14 + 1.53333318 + -0.71074456 -0.017551735 0.029300075 0.702620625 + 4.22630816e-13 0.38817063 3.66071621e-13 + 1.56666648 + -0.677635849 -0.0290441774 0.0101594152 0.734753609 + -2.23266739e-12 0.38817063 -2.55226938e-13 + 1.59999979 + -0.568904877 -0.0322074778 0.00886951387 0.821724534 + 1.55061738e-12 0.38817063 6.99174063e-13 + 1.63333309 + -0.434571803 -0.027640827 0.0236774664 0.899901569 + -3.31326058e-13 0.38817063 1.03113958e-12 + 1.66666639 + -0.414210886 -0.00247696578 0.0148853343 0.910055876 + -2.64748211e-13 0.38817063 -2.37037061e-13 + 1.69999969 + -0.458497018 -0.0074121342 0.0136859529 0.888559699 + 1.2532552e-12 0.38817066 -8.31334987e-14 + 1.73333299 + -0.476968914 -0.0120373862 0.0249942243 0.878482223 + -2.1926638e-12 0.38817063 -6.37498951e-13 + 1.76666629 + -0.502153873 -0.00797236245 0.0773430318 0.861275852 + 3.67554863e-13 0.38817063 1.3648105e-12 + 1.79999959 + -0.536005497 -0.0116512198 0.121147774 0.835395455 + -1.88812507e-12 0.38817063 -6.19024797e-13 + 1.8333329 + -0.598845363 -0.0528235324 0.12489631 0.789300203 + 4.72226696e-13 0.38817063 -4.14956941e-13 + 1.8666662 + -0.6569525 -0.0808357373 0.0931657478 0.743773639 + -2.33626459e-13 0.38817063 2.63753456e-13 + 1.8999995 + "L_Middle_sjnt_0" + 58 + 0.258092433 -0.696633637 0.33088401 0.581898332 + -0.00616830075 -0.0818345174 -0.0097129494 + 0 + 0.230463669 -0.709721029 0.307696253 0.590343714 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.0333333351 + 0.213684067 -0.719924331 0.291920513 0.592309415 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.0666666701 + 0.199687153 -0.7291134 0.278396249 0.592464566 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.100000001 + 0.182961747 -0.737836599 0.263792932 0.59374702 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.13333334 + 0.165812001 -0.744765818 0.250063777 0.596069157 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.166666672 + 0.148723334 -0.749149263 0.237725005 0.600119591 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.200000003 + 0.1318921 -0.749472201 0.22745268 0.607586384 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.233333334 + 0.116092302 -0.74550879 0.219490349 0.618516982 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.266666681 + 0.102810912 -0.739039481 0.213725612 0.630533099 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.300000012 + 0.0958063528 -0.73259747 0.211756632 0.639750898 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.333333343 + 0.0894378498 -0.728405297 0.208481014 0.646499991 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.366666675 + 0.0835039094 -0.725717783 0.203276724 0.651950479 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.400000006 + 0.0930773541 -0.72204262 0.208262056 0.653160036 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.433333337 + 0.137761548 -0.714119732 0.23948352 0.64319706 + -0.00616830168 -0.0818345174 -0.0097129494 + 0.466666669 + 0.208681643 -0.698092043 0.290529698 0.620251596 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.5 + 0.271562129 -0.678414762 0.335700423 0.594401121 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.533333361 + 0.309270501 -0.663759887 0.363068491 0.57615608 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.566666722 + 0.326135159 -0.656477869 0.376768947 0.566319525 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.600000083 + 0.320806473 -0.65876919 0.3766433 0.566785872 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.633333445 + 0.29807061 -0.668221712 0.366941541 0.574445486 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.666666806 + 0.256749719 -0.683997214 0.351161867 0.585587502 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.700000167 + 0.17820549 -0.706841767 0.317207694 0.606627464 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.733333528 + 0.0830637291 -0.723158479 0.275869042 0.627724886 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.766666889 + -0.0106506664 -0.727814794 0.234606102 0.644307613 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.80000025 + -0.0842379555 -0.723903656 0.201360181 0.654462814 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.833333611 + -0.120544687 -0.720004678 0.184085265 0.658160269 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.866666973 + -0.0963136852 -0.725235701 0.192646965 0.653945029 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.900000334 + -0.0104419691 -0.734103501 0.226045296 0.640223861 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.933333695 + 0.107000217 -0.730143309 0.271059662 0.618035913 + -0.00616830075 -0.0818345174 -0.0097129494 + 0.966667056 + 0.211789265 -0.710720778 0.311729491 0.594008446 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.00000036 + 0.279969931 -0.688207746 0.340918779 0.575987279 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.03333366 + 0.322944552 -0.667005181 0.36407721 0.564144194 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.06666696 + 0.357498974 -0.644567132 0.387020737 0.554024041 + -0.00616830168 -0.0818345174 -0.0097129494 + 1.10000026 + 0.380576938 -0.625878513 0.406695694 0.54592675 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.13333356 + 0.391488194 -0.614851117 0.420649111 0.540138304 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.16666687 + 0.38955906 -0.614816606 0.426448613 0.537015676 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.20000017 + 0.372914851 -0.628606081 0.421706885 0.536611915 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.23333347 + 0.327536672 -0.663545489 0.401270151 0.539823472 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.26666677 + 0.247741237 -0.711783171 0.368602842 0.544169962 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.30000007 + 0.146474615 -0.75444299 0.333818674 0.545826077 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.33333337 + 0.0416619144 -0.780537486 0.304036707 0.544598281 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.36666667 + -0.0460668206 -0.789729893 0.282511294 0.542579055 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.39999998 + -0.0961367711 -0.789996982 0.270015091 0.541991115 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.43333328 + -0.0995186269 -0.789740503 0.265151888 0.544151127 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.46666658 + -0.0656535625 -0.789612949 0.265788227 0.549142778 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.49999988 + -0.00573888747 -0.785171747 0.271755099 0.556436419 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.53333318 + 0.0697628632 -0.771772206 0.283513546 0.564907908 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.56666648 + 0.149345815 -0.747801006 0.300367922 0.572947323 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.59999979 + 0.223935097 -0.715224087 0.320305198 0.579406798 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.63333309 + 0.262889415 -0.693825483 0.332467884 0.58220315 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.66666639 + 0.258092433 -0.696633637 0.33088401 0.581898332 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.69999969 + 0.258092433 -0.696633637 0.33088401 0.581898332 + -0.00616830168 -0.0818345249 -0.00971295126 + 1.73333299 + 0.258092433 -0.696633637 0.33088401 0.581898272 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.76666629 + 0.258092433 -0.696633637 0.33088401 0.581898332 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.79999959 + 0.258092433 -0.696633637 0.33088401 0.581898332 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.8333329 + 0.258092433 -0.696633637 0.33088401 0.581898332 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.8666662 + 0.258092433 -0.696633637 0.33088401 0.581898332 + -0.00616830075 -0.0818345174 -0.0097129494 + 1.8999995 + "R_Middle_sjnt_3" + 58 + -0.157868341 0.000739390089 0.0247554705 0.987149537 + -8.21075083e-11 0.0180759132 1.31825566e-11 + 0 + -0.179332152 0.000796268694 0.0285159964 0.983374894 + 6.44962486e-11 0.0180759132 5.70625491e-11 + 0.0333333351 + -0.20260258 0.000859748514 0.0325887203 0.978718281 + -1.72031778e-10 0.0180759132 -3.30798132e-11 + 0.0666666701 + -0.222966224 0.000916748832 0.0361489207 0.974155247 + 7.85121274e-11 0.0180759132 -2.33036562e-10 + 0.100000001 + -0.235535607 0.000952749746 0.0383454077 0.971108496 + 6.16917351e-11 0.0180759132 -2.19841201e-10 + 0.13333334 + -0.237874225 0.000958791294 0.038750682 0.970522225 + 6.06387093e-11 0.0180759132 -9.56557819e-11 + 0.166666672 + -0.232145131 0.000942670682 0.0377503 0.971947849 + 7.22550908e-11 0.0180759132 1.41376329e-11 + 0.200000003 + -0.220781416 0.000911095645 0.0357664376 0.974666893 + -2.75917952e-11 0.0180759132 -4.8879299e-12 + 0.233333334 + -0.205982149 0.00086977036 0.0331780314 0.977992773 + 2.10196444e-10 0.0180759132 1.58611471e-10 + 0.266666681 + -0.189983025 0.000825956347 0.0303784125 0.981316984 + -1.48692572e-10 0.0180759132 -5.79211679e-11 + 0.300000012 + -0.175050661 0.000785622571 0.0277631488 0.984167635 + 2.00383071e-10 0.0180759132 8.60524065e-12 + 0.333333343 + -0.163475782 0.000755275076 0.0257383473 0.9862113 + -8.77727752e-11 0.0180759132 1.72607883e-11 + 0.366666675 + -0.157608524 0.000739469193 0.0247108787 0.987192154 + 4.5400339e-10 0.0180759132 -2.04042006e-10 + 0.400000006 + -0.159545496 0.00074349239 0.0250499453 0.986872435 + -6.56814325e-11 0.0180759132 8.08867626e-11 + 0.433333337 + -0.169717312 0.000770380022 0.0268402398 0.985126972 + -2.19296213e-11 0.0180759151 -3.69880133e-11 + 0.466666669 + -0.186005458 0.00081483653 0.029703958 0.982099295 + 1.76603974e-11 0.0180759132 1.58286179e-11 + 0.5 + -0.206012845 0.000870899123 0.0332168601 0.977985024 + 6.5536479e-11 0.0180759132 2.28070011e-11 + 0.533333361 + -0.227412716 0.000931946735 0.0369674936 0.973096073 + -3.95533536e-11 0.0180759132 2.48354583e-11 + 0.566666722 + -0.247913867 0.000990497065 0.0405522697 0.967932463 + 1.34716058e-11 0.0180759132 -1.55776538e-11 + 0.600000083 + -0.265271991 0.00103834167 0.0435773693 0.963187754 + 2.05270106e-11 0.0180759132 -7.52407858e-12 + 0.633333445 + -0.27718696 0.00106479903 0.0456336662 0.959731162 + 3.50894422e-12 0.0180759132 2.63696617e-12 + 0.666666806 + -0.284886926 0.00107439712 0.0469445661 0.957410336 + 2.30215847e-14 0.0180759151 -1.6191137e-11 + 0.700000167 + -0.290429085 0.00104873313 0.0478574187 0.95569849 + 1.4457306e-11 0.0180759132 -9.89615508e-12 + 0.733333528 + -0.292819977 0.00101288268 0.0482131951 0.95495075 + -1.88580176e-11 0.0180759132 -5.14688726e-12 + 0.766666889 + -0.290897727 0.000982235651 0.0478248522 0.955557644 + 1.26422614e-11 0.0180759132 -2.97006858e-13 + 0.80000025 + -0.282403141 0.000975805975 0.0463171564 0.958176553 + 6.230607e-11 0.0180759132 -1.55065995e-11 + 0.833333611 + -0.278199703 0.000960106612 0.0455444492 0.959442437 + -4.87369763e-11 0.0180759132 7.3143271e-12 + 0.866666973 + -0.274166405 0.000931871065 0.0448003002 0.960637748 + -3.74345173e-11 0.0180759132 1.77236351e-11 + 0.900000334 + -0.240936249 0.000890337105 0.0390971303 0.969752789 + 7.14493326e-11 0.0180759132 3.25428573e-12 + 0.933333695 + -0.111307912 0.0007361967 0.016960755 0.993640959 + -1.52187596e-10 0.0180759132 2.55204208e-11 + 0.966667056 + 0.124744862 0.000255725405 -0.0235656891 0.991908967 + -1.80306187e-10 0.0180759132 6.41870168e-11 + 1.00000036 + 0.333170474 -0.000327803806 -0.0596605837 0.940977097 + 9.33752589e-11 0.0180759132 -6.1628494e-11 + 1.03333366 + 0.404593498 -0.000549060525 -0.0721096173 0.911649108 + 1.01732657e-10 0.0180759132 -4.0593591e-11 + 1.06666696 + 0.39573288 -0.00052129518 -0.0705637485 0.915650606 + -2.95422076e-10 0.0180759151 2.64093386e-10 + 1.10000026 + 0.395871967 -0.000521227194 -0.0705976039 0.915587842 + 4.77371025e-11 0.0180759132 -4.43208144e-12 + 1.13333356 + 0.395043135 -0.000522481569 -0.0704356655 0.915958285 + 2.69102431e-11 0.0180759132 1.51237599e-11 + 1.16666687 + 0.386091739 -0.000535714265 -0.068791151 0.919891715 + -3.8102143e-12 0.0180759132 -3.2133584e-12 + 1.20000017 + 0.365950972 -0.000552412006 -0.0651070401 0.928353786 + 4.13609771e-11 0.0180759132 -2.36707355e-11 + 1.23333347 + 0.339859903 -0.000548793236 -0.060369581 0.938536346 + 2.81160338e-11 0.0180759132 -1.00493476e-11 + 1.26666677 + 0.308528453 -0.000524758478 -0.0547009595 0.94964081 + -3.14221878e-11 0.0180759132 -2.06546238e-11 + 1.30000007 + 0.270949781 -0.000481601106 -0.0479010865 0.961400807 + 9.85835372e-12 0.0180759132 1.22927307e-10 + 1.33333337 + 0.229531229 -0.000409649307 -0.040425729 0.972461283 + 1.80915543e-11 0.0180759132 2.61232459e-11 + 1.36666667 + 0.186842576 -0.000307184848 -0.0327593908 0.981843472 + 5.18349426e-11 0.0180759132 -1.77136028e-10 + 1.39999998 + 0.145565018 -0.000180969218 -0.0254046004 0.989022434 + 2.92321833e-10 0.0180759132 1.05038096e-11 + 1.43333328 + 0.108700231 -4.52725653e-05 -0.018920064 0.993894517 + 1.06692821e-10 0.0180759132 1.08248341e-11 + 1.46666658 + 0.0769058466 8.73341487e-05 -0.0134268943 0.996947944 + 2.01632128e-10 0.0180759132 1.29783184e-10 + 1.49999988 + 0.0482820272 0.000212518498 -0.00856801495 0.998796999 + 6.4172806e-11 0.0180759132 -8.96534409e-12 + 1.53333318 + 0.021702962 0.000327464659 -0.00412756577 0.999755919 + 1.45386134e-10 0.0180759132 7.55301238e-11 + 1.56666648 + -0.00311558228 0.00042911942 -4.52170425e-05 0.999995053 + -1.21707436e-10 0.0180759132 -1.28716239e-11 + 1.59999979 + -0.0265627205 0.000516019703 0.00375837227 0.999639988 + -1.87882626e-10 0.0180759132 1.08957461e-11 + 1.63333309 + -0.0490325317 0.000587660936 0.00736315828 0.998769879 + 9.32149635e-11 0.0180759132 -1.87287685e-11 + 1.66666639 + -0.0709212646 0.000644235348 0.0108492076 0.997422755 + 6.95433711e-11 0.0180759132 -1.36020611e-10 + 1.69999969 + -0.0926251337 0.000686427578 0.0142963305 0.995598197 + -3.33646999e-10 0.0180759151 5.62045521e-10 + 1.73333299 + -0.114538163 0.000715348695 0.0177837424 0.99325943 + 9.20124393e-11 0.0180759132 -1.71903589e-10 + 1.76666629 + -0.137325868 0.000732692541 0.0214348249 0.990293741 + 1.09997697e-11 0.0180759132 5.10965489e-12 + 1.79999959 + -0.15890424 0.000739444338 0.0249227453 0.986979127 + -1.39697809e-10 0.0180759132 5.19548857e-12 + 1.8333329 + -0.157868341 0.000739389274 0.0247554705 0.987149537 + 6.98241812e-11 0.0180759132 9.06823054e-12 + 1.8666662 + -0.157868341 0.000739389856 0.0247554723 0.987149537 + -1.26583466e-10 0.0180759132 -3.57488258e-12 + 1.8999995 + "C_Spine_sjnt_4" + 58 + 0.0190438628 -0.0129278302 -0.00793012138 0.999703646 + -5.68434176e-16 0.0489999987 -3.55271347e-16 + 0 + 0.0161382649 -0.0201022252 0.00309418561 0.999662876 + -4.79616313e-16 0.0489999987 1.13686835e-15 + 0.0333333351 + 0.0115866689 -0.0234553125 0.0141240824 0.999557972 + -1.95399251e-16 0.0489999987 -1.27897687e-15 + 0.0666666701 + 0.00872896519 -0.0251325313 0.0218251608 0.999407709 + -2.6645351e-16 0.0489999987 -1.77635684e-15 + 0.100000001 + 0.00671840273 -0.0235301312 0.0270444993 0.999334693 + 1.36779473e-15 0.0489999987 -1.20792266e-15 + 0.13333334 + 0.0094921533 -0.0182563141 0.0274741985 0.999410748 + -3.78363985e-15 0.0489999987 -1.13686835e-15 + 0.166666672 + 0.0146330167 -0.00999775156 0.0275005102 0.999464691 + -8.52651264e-16 0.0489999987 -1.42108544e-16 + 0.200000003 + 0.0184667967 0.00152591814 0.026465971 0.999477983 + 5.3290702e-16 0.0489999987 7.81597005e-16 + 0.233333334 + 0.0233230032 0.0127859646 0.0222800095 0.999397933 + -4.61852761e-16 0.0489999987 1.20792266e-15 + 0.266666681 + 0.0205903091 0.0213493221 0.018982321 0.999379814 + -8.70414815e-16 0.0489999987 3.55271347e-16 + 0.300000012 + 0.0118510723 0.0279138088 0.0115947397 0.999472857 + 5.77315952e-16 0.0489999987 -1.13686835e-15 + 0.333333343 + 0.0080052251 0.0325397924 0.00423398521 0.999429405 + -1.61648466e-15 0.0489999987 1.42108539e-15 + 0.366666675 + 0.00636874326 0.0344200805 -0.00163500663 0.999385834 + -3.55271347e-16 0.0489999987 4.26325632e-16 + 0.400000006 + 0.00655181799 0.0332421772 -0.00648182398 0.999404848 + -2.84217088e-16 0.0489999987 5.68434176e-16 + 0.433333337 + 0.0067812684 0.0283707976 -0.00946515426 0.99952966 + 1.06581404e-15 0.0489999987 2.41584533e-15 + 0.466666669 + 0.00955186691 0.0210736804 -0.0101014813 0.999681294 + -1.56319401e-15 0.0489999987 -1.13686835e-15 + 0.5 + 0.0133540593 0.0111074727 -0.0129455831 0.999765337 + 2.2026825e-15 0.0489999987 -2.84217088e-16 + 0.533333361 + 0.018141821 0.00153515779 -0.01345676 0.9997437 + -7.1054272e-17 0.0489999987 1.13686835e-15 + 0.566666722 + 0.0207707062 -0.00676244264 -0.0119518666 0.999689937 + -1.42108539e-15 0.0489999987 -1.13686835e-15 + 0.600000083 + 0.0196057335 -0.0137595376 -0.00750135165 0.999684989 + -1.06581408e-16 0.0489999987 8.52651264e-16 + 0.633333445 + 0.0160134546 -0.0200330131 0.0024627042 0.999668062 + 1.50990325e-15 0.0489999987 -8.52651264e-16 + 0.666666806 + 0.0115785496 -0.0233941209 0.0141643109 0.999558926 + -7.46069849e-16 0.0489999987 -1.13686835e-15 + 0.700000167 + 0.00877633039 -0.0251246262 0.0220044591 0.999403596 + -1.56319401e-15 0.0489999987 -5.68434176e-16 + 0.733333528 + 0.00672882423 -0.0235436112 0.0270655528 0.999333739 + 2.55795374e-15 0.0489999987 -2.84217088e-16 + 0.766666889 + 0.00947855599 -0.0182624795 0.0274255779 0.99941206 + -2.70006236e-15 0.0489999987 0 + 0.80000025 + 0.0146280006 -0.00999682117 0.0274819806 0.999465287 + -2.13162808e-15 0.0489999987 -1.70530253e-15 + 0.833333611 + 0.0184681434 0.00152860035 0.0264758505 0.999477684 + 0 0.0489999987 8.52651264e-16 + 0.866666973 + 0.023323955 0.0127872014 0.0222890936 0.999397695 + 1.20792266e-15 0.0489999987 1.42108539e-15 + 0.900000334 + 0.0205905046 0.0213494208 0.0189816803 0.999379814 + -1.13686835e-15 0.0489999987 2.2737367e-15 + 0.933333695 + 0.0118514514 0.0279132351 0.0115881059 0.999472916 + 1.7763568e-17 0.0489999987 5.68434176e-16 + 0.966667056 + 0.00800570287 0.0325380266 0.00422978075 0.999429524 + -9.94759834e-16 0.0489999987 -5.68434176e-16 + 1.00000036 + 0.00636702543 0.0344187357 -0.00162666407 0.999385953 + 8.52651264e-16 0.0489999987 -5.68434176e-16 + 1.03333366 + 0.00654795533 0.0332447961 -0.00646740478 0.999404848 + -1.42108539e-15 0.0489999987 5.68434176e-16 + 1.06666696 + 0.00678291358 0.0283758566 -0.00947296806 0.999529421 + 8.52651264e-16 0.0489999987 2.2737367e-15 + 1.10000026 + 0.00955958944 0.0210694652 -0.0101339715 0.999680936 + -7.10542693e-16 0.0489999987 -5.68434176e-16 + 1.13333356 + 0.0133556863 0.0110970549 -0.0129471971 0.999765396 + 2.2737367e-15 0.0489999987 0 + 1.16666687 + 0.018139597 0.00154025177 -0.0134102413 0.999744356 + 4.26325632e-16 0.0489999987 1.70530253e-15 + 1.20000017 + 0.0207756013 -0.00675903633 -0.0119486116 0.999689937 + -1.42108539e-15 0.0489999987 -5.68434176e-16 + 1.23333347 + 0.0196057335 -0.0137595376 -0.00750135165 0.999684989 + 9.23705523e-16 0.0489999987 5.68434176e-16 + 1.26666677 + 0.0160065219 -0.0200291704 0.00242762221 0.9996683 + 1.1546319e-15 0.0489999987 -2.2737367e-15 + 1.30000007 + 0.0115775941 -0.0233869255 0.0141690448 0.999559045 + -1.4921397e-15 0.0489999987 1.13686835e-15 + 1.33333337 + 0.00878521241 -0.0251231436 0.0220380779 0.999402821 + -8.52651264e-16 0.0489999987 -5.68434176e-16 + 1.36666667 + 0.00673160376 -0.0235472042 0.0270711668 0.999333501 + 1.13686835e-15 0.0489999987 -5.68434176e-16 + 1.39999998 + 0.00947370008 -0.0182646811 0.0274082124 0.999412537 + -1.70530253e-15 0.0489999987 0 + 1.43333328 + 0.0146256844 -0.00999639183 0.0274734329 0.999465585 + -1.98951967e-15 0.0489999987 -5.68434176e-16 + 1.46666658 + 0.0184689239 0.00153016462 0.0264816135 0.999477506 + 2.84217088e-16 0.0489999987 1.70530253e-15 + 1.49999988 + 0.0233246516 0.012788102 0.0222957022 0.999397516 + 1.42108539e-15 0.0489999987 2.84217077e-15 + 1.53333318 + 0.020590689 0.0213495065 0.0189811029 0.999379814 + 3.55271347e-16 0.0489999987 0 + 1.56666648 + 0.0118518723 0.0279126018 0.0115807336 0.999473035 + 3.206324e-15 0.0489999987 2.2737367e-15 + 1.59999979 + 0.00800634921 0.0325355977 0.00422399631 0.999429643 + -4.405365e-15 0.0489999987 0 + 1.63333309 + 0.00636408385 0.0344164185 -0.00161236082 0.999386013 + 1.56319401e-15 0.0489999987 2.2737367e-15 + 1.66666639 + 0.00653959485 0.0332504511 -0.00643616123 0.999404967 + -5.68434176e-16 0.0489999987 0 + 1.69999969 + 0.00678751478 0.0283900257 -0.00949485041 0.999528825 + -1.13686835e-15 0.0490000062 2.2737367e-15 + 1.73333299 + 0.00958853867 0.0210536588 -0.0102558117 0.999679744 + -1.70530253e-15 0.0489999987 0 + 1.76666629 + 0.0133643672 0.0110414969 -0.0129558109 0.999765813 + 2.55795374e-15 0.0489999987 0 + 1.79999959 + 0.0181207322 0.00158354559 -0.0130148353 0.999749839 + 1.13686835e-15 0.0489999987 1.13686835e-15 + 1.8333329 + 0.0208636578 -0.00669772271 -0.0118900202 0.999689162 + -1.70530253e-15 0.0489999987 -3.41060506e-15 + 1.8666662 + 0.0190438628 -0.0129278293 -0.00793012138 0.999703646 + -1.20792266e-15 0.0489999987 2.2737367e-15 + 1.8999995 + "L_Thumb_sjnt_2" + 58 + -0.0474145748 -0.00653416105 0.0668957233 0.996611357 + 5.15258876e-07 -0.0251661409 -5.85315888e-07 + 0 + -0.0474145748 -0.00653415918 0.0668957233 0.996611357 + 5.15632905e-07 -0.0251661409 -5.84923839e-07 + 0.0333333351 + -0.0474145748 -0.00653416105 0.0668957233 0.996611357 + 5.15642057e-07 -0.0251661409 -5.84897748e-07 + 0.0666666701 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15431395e-07 -0.0251661409 -5.85137059e-07 + 0.100000001 + -0.0474145785 -0.00653416011 0.0668957233 0.996611357 + 5.15523254e-07 -0.0251661409 -5.851482e-07 + 0.13333334 + -0.0474145785 -0.00653416011 0.0668957233 0.996611357 + 5.15839588e-07 -0.0251661409 -5.84847044e-07 + 0.166666672 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15284341e-07 -0.0251661409 -5.85247221e-07 + 0.200000003 + -0.0474145748 -0.00653416105 0.0668957233 0.996611357 + 5.1560113e-07 -0.0251661409 -5.84952659e-07 + 0.233333334 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15063618e-07 -0.0251661409 -5.85474709e-07 + 0.266666681 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15705324e-07 -0.0251661409 -5.84881832e-07 + 0.300000012 + -0.047414571 -0.00653416011 0.0668957233 0.996611357 + 5.15600391e-07 -0.0251661409 -5.84867735e-07 + 0.333333343 + -0.047414571 -0.00653416011 0.0668957233 0.996611357 + 5.16111015e-07 -0.0251661409 -5.85413545e-07 + 0.366666675 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15406668e-07 -0.0251661409 -5.85160592e-07 + 0.400000006 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15420368e-07 -0.0251661409 -5.84910254e-07 + 0.433333337 + -0.0474145748 -0.00653416105 0.0668957233 0.996611357 + 5.15709758e-07 -0.0251661409 -5.85080272e-07 + 0.466666669 + -0.047414571 -0.00653415825 0.0668957233 0.996611357 + 5.15434124e-07 -0.0251661409 -5.84939528e-07 + 0.5 + -0.0474145748 -0.00653416105 0.0668957233 0.996611357 + 5.15507281e-07 -0.0251661409 -5.8503116e-07 + 0.533333361 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15766487e-07 -0.0251661409 -5.85018142e-07 + 0.566666722 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.13592397e-07 -0.0251661409 -5.86893748e-07 + 0.600000083 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15274053e-07 -0.0251661409 -5.85254213e-07 + 0.633333445 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.14596422e-07 -0.0251661409 -5.8463479e-07 + 0.666666806 + -0.0474145748 -0.00653415918 0.0668957233 0.996611357 + 5.16300076e-07 -0.0251661409 -5.85622161e-07 + 0.700000167 + -0.0474145748 -0.00653416105 0.0668957233 0.996611357 + 5.15578733e-07 -0.0251661409 -5.84967495e-07 + 0.733333528 + -0.047414571 -0.00653415918 0.0668957233 0.996611357 + 5.15188503e-07 -0.0251661409 -5.85234091e-07 + 0.766666889 + -0.0474145748 -0.00653415918 0.0668957233 0.996611357 + 5.15567251e-07 -0.0251661409 -5.85013254e-07 + 0.80000025 + -0.0474145748 -0.00653416198 0.0668957233 0.996611357 + 5.15806221e-07 -0.0251661409 -5.847632e-07 + 0.833333611 + -0.0474145748 -0.00653415732 0.0668957233 0.996611357 + 5.14635303e-07 -0.0251661409 -5.84876489e-07 + 0.866666973 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.14720227e-07 -0.0251661409 -5.85795647e-07 + 0.900000334 + -0.047414571 -0.00653416105 0.0668957233 0.996611357 + 5.15720728e-07 -0.0251661409 -5.84870975e-07 + 0.933333695 + -0.0474145785 -0.00653416011 0.0668957233 0.996611357 + 5.15426848e-07 -0.0251661409 -5.84818963e-07 + 0.966667056 + -0.047414571 -0.00653415732 0.0668957382 0.996611357 + 5.1582191e-07 -0.0251661409 -5.85180146e-07 + 1.00000036 + -0.0474145748 -0.00653416105 0.0668957233 0.996611357 + 5.15382169e-07 -0.0251661409 -5.85394389e-07 + 1.03333366 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15414513e-07 -0.0251661409 -5.84898203e-07 + 1.06666696 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15600675e-07 -0.0251661409 -5.84826921e-07 + 1.10000026 + -0.0474145748 -0.00653415918 0.0668957233 0.996611357 + 5.15538375e-07 -0.0251661409 -5.84991142e-07 + 1.13333356 + -0.0474145748 -0.00653416105 0.0668957233 0.996611357 + 5.15509726e-07 -0.0251661409 -5.85047644e-07 + 1.16666687 + -0.0474145748 -0.00653415918 0.0668957233 0.996611357 + 5.15830322e-07 -0.0251661409 -5.84792986e-07 + 1.20000017 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.13646171e-07 -0.0251661409 -5.8679791e-07 + 1.23333347 + -0.0474145748 -0.00653416198 0.0668957233 0.996611357 + 5.15272404e-07 -0.0251661409 -5.85266321e-07 + 1.26666677 + -0.0474145748 -0.00653415918 0.0668957233 0.996611357 + 5.15639556e-07 -0.0251661409 -5.84925658e-07 + 1.30000007 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15273143e-07 -0.0251661409 -5.85236819e-07 + 1.33333337 + -0.0474145673 -0.00653416384 0.0668957233 0.996611357 + 5.15545935e-07 -0.0251661409 -5.85036503e-07 + 1.36666667 + -0.0474145859 -0.00653415034 0.0668957382 0.996611297 + 5.15552983e-07 -0.0251661409 -5.85139276e-07 + 1.39999998 + -0.0474145748 -0.00653416198 0.0668957233 0.996611357 + 5.1552729e-07 -0.0251661409 -5.85041903e-07 + 1.43333328 + -0.0474145748 -0.00653416198 0.0668957233 0.996611357 + 5.15380748e-07 -0.0251661409 -5.85134956e-07 + 1.46666658 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15036675e-07 -0.0251661409 -5.85454416e-07 + 1.49999988 + -0.047414571 -0.00653415918 0.0668957233 0.996611357 + 5.14146734e-07 -0.0251661409 -5.86260342e-07 + 1.53333318 + -0.0474145785 -0.00653416011 0.0668957233 0.996611357 + 5.15272177e-07 -0.0251661409 -5.85094142e-07 + 1.56666648 + -0.0474145599 -0.00653416151 0.0668957382 0.996611357 + 5.16866123e-07 -0.0251661409 -5.85800535e-07 + 1.59999979 + -0.0474145599 -0.00653415686 0.0668957382 0.996611357 + 5.15961062e-07 -0.0251661409 -5.84808618e-07 + 1.63333309 + -0.0474145785 -0.00653416151 0.0668957233 0.996611357 + 5.15427132e-07 -0.0251661409 -5.85247051e-07 + 1.66666639 + -0.0474145859 -0.00653416477 0.0668957233 0.996611357 + 5.15511488e-07 -0.0251661409 -5.85196062e-07 + 1.69999969 + -0.0474145897 -0.00653416198 0.0668957233 0.996611297 + 5.16376076e-07 -0.0251661409 -5.86173201e-07 + 1.73333299 + -0.0474145785 -0.00653415918 0.0668957382 0.996611297 + 5.15474369e-07 -0.0251661409 -5.83934025e-07 + 1.76666629 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15477154e-07 -0.0251661409 -5.85010753e-07 + 1.79999959 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.15524334e-07 -0.0251661409 -5.84691747e-07 + 1.8333329 + -0.0474145748 -0.00653416011 0.0668957233 0.996611357 + 5.14727049e-07 -0.0251661409 -5.85772909e-07 + 1.8666662 + -0.0474145748 -0.00653416105 0.0668957233 0.996611357 + 5.15199247e-07 -0.0251661409 -5.85397288e-07 + 1.8999995 + "R_Pinky_sjnt_3" + 58 + -0.153699651 0.0212309677 -0.0198130403 0.987690806 + -3.10023986e-11 0.0121525582 2.75008445e-12 + 0 + -0.175505668 0.0214687996 -0.0201859996 0.98403728 + 5.4419011e-11 0.0121525582 2.01316797e-10 + 0.0333333351 + -0.199149355 0.021764623 -0.0206082016 0.979510725 + -1.43752663e-10 0.0121525582 4.36879311e-10 + 0.0666666701 + -0.219841391 0.0220557768 -0.0209940299 0.975060344 + 7.49869472e-11 0.0121525582 -1.22827679e-10 + 0.100000001 + -0.232614443 0.0222503748 -0.0212402176 0.972082496 + 6.74359735e-11 0.0121525582 -1.0763699e-10 + 0.13333334 + -0.234990448 0.0222890917 -0.0212874245 0.97150892 + 6.85644597e-11 0.0121525582 -1.01768899e-10 + 0.166666672 + -0.22916843 0.022201553 -0.0211758558 0.972903132 + 6.01409061e-11 0.0121525582 -1.68494899e-10 + 0.200000003 + -0.217621058 0.0220329091 -0.0209571943 0.975559592 + -5.79041155e-11 0.0121525582 6.9599293e-10 + 0.233333334 + -0.202582777 0.0218259171 -0.0206790157 0.978803515 + 1.5045401e-10 0.0121525582 4.97215658e-10 + 0.266666681 + -0.186326429 0.0216183774 -0.0203864239 0.982038438 + -8.05587749e-11 0.0121525582 -9.8512698e-11 + 0.300000012 + -0.171154976 0.021439109 -0.0201202407 0.984805286 + 8.48808662e-11 0.0121525582 4.78928529e-11 + 0.333333343 + -0.159396112 0.0213075206 -0.0199172962 0.986783803 + -6.27812802e-11 0.0121525582 -2.12074264e-11 + 0.366666675 + -0.153435647 0.0212381501 -0.019814726 0.987731695 + 2.27953906e-10 0.0121525582 1.1626468e-11 + 0.400000006 + -0.15540418 0.0212398488 -0.0198305491 0.98742348 + -7.91264623e-11 0.0121525582 3.24087077e-11 + 0.433333337 + -0.165743217 0.0213109944 -0.0199392755 0.985737026 + 5.50336643e-12 0.0121525591 -2.60880016e-11 + 0.466666669 + -0.182300597 0.0214477517 -0.0201109741 0.982803166 + -2.37905338e-11 0.0121525582 1.94870613e-11 + 0.5 + -0.20263876 0.021654075 -0.0203515962 0.978802562 + 2.10304309e-11 0.0121525582 1.48895653e-11 + 0.533333361 + -0.224391282 0.0219208449 -0.0206618737 0.974033475 + -1.29876908e-11 0.0121525582 8.6629369e-13 + 0.566666722 + -0.245226905 0.0222219788 -0.0210381877 0.968982637 + 4.72467551e-11 0.0121525582 9.78417347e-12 + 0.600000083 + -0.262861609 0.0225154795 -0.0214712825 0.964331806 + 1.04542148e-11 0.0121525582 1.35571554e-11 + 0.633333445 + -0.274953127 0.0227476414 -0.0219407808 0.960938036 + -6.84394728e-12 0.0121525582 -7.00310903e-13 + 0.666666806 + -0.282737821 0.0229430366 -0.022653129 0.958655238 + 1.39587534e-11 0.0121525582 -1.64798297e-11 + 0.700000167 + -0.288304031 0.0231284071 -0.0236450601 0.956967533 + 1.27882054e-11 0.0121525582 -3.05092843e-12 + 0.733333528 + -0.290659845 0.0232642666 -0.0246499758 0.956225932 + -5.33461253e-12 0.0121525582 -6.59923635e-12 + 0.766666889 + -0.288644284 0.0233176127 -0.0253849812 0.956815779 + 4.27789358e-12 0.0121525582 3.27588607e-12 + 0.80000025 + -0.279989004 0.0232339185 -0.0254480112 0.959384561 + -3.86602035e-11 0.0121525582 3.6536961e-11 + 0.833333611 + -0.27567485 0.0232416652 -0.0258688349 0.960621715 + 4.90825852e-11 0.0121525582 -4.80054017e-11 + 0.866666973 + -0.271528602 0.0232635997 -0.0263578128 0.961788058 + 2.44958186e-11 0.0121525582 5.99356979e-12 + 0.900000334 + -0.237880781 0.0226983 -0.0241353624 0.970729113 + -1.74433121e-10 0.0121525582 -1.44302126e-10 + 0.933333695 + -0.106819078 0.0195780881 -0.0137090627 0.993991137 + -7.6973948e-11 0.0121525582 -3.18601673e-11 + 0.966667056 + 0.131845102 0.0116044348 0.00280517712 0.99119848 + -1.441154e-10 0.0121525582 -3.13650599e-11 + 1.00000036 + 0.342622727 0.00284490548 0.0138214668 0.939367115 + 6.98122463e-11 0.0121525582 -1.73525899e-11 + 1.03333366 + 0.414858907 -0.000407329819 0.0166988857 0.909732461 + 2.61940157e-11 0.0121525582 2.73001882e-11 + 1.06666696 + 0.405897468 2.36710761e-07 0.0163705517 0.913772047 + -2.83407631e-10 0.0121525591 1.36561762e-10 + 1.10000026 + 0.406527847 1.81729433e-07 0.0163959842 0.913491309 + 1.55634429e-11 0.0121525582 2.16931542e-11 + 1.13333356 + 0.402623922 1.59253247e-07 0.0162385516 0.915221453 + 9.15235856e-12 0.0121525582 1.67040062e-11 + 1.16666687 + 0.363171309 1.25961506e-07 0.0146473385 0.931607246 + -4.17372788e-13 0.0121525582 -3.49928073e-12 + 1.20000017 + 0.289135247 8.90247449e-08 0.0116612883 0.957217276 + 7.43199252e-11 0.0121525582 1.34764378e-11 + 1.23333347 + 0.227619871 6.12141591e-08 0.00918023661 0.973706782 + 2.24144956e-11 0.0121525582 1.08309446e-11 + 1.26666677 + 0.194230825 4.84804445e-08 0.00783360563 0.980924606 + -2.3208031e-11 0.0121525582 -4.68153849e-11 + 1.30000007 + 0.170171365 4.32987868e-08 0.00686326018 0.985390604 + -1.82342318e-11 0.0121525582 2.72883854e-10 + 1.33333337 + 0.152393907 3.72816196e-08 0.00614628661 0.988300741 + 1.34559742e-11 0.0121525582 -9.8085165e-11 + 1.36666667 + 0.137850806 3.25290053e-08 0.0055597648 0.990437448 + 4.9493562e-11 0.0121525582 -2.45701681e-10 + 1.39999998 + 0.123426937 2.70701612e-08 0.00497804536 0.992341161 + 1.82453733e-10 0.0121525582 -7.80570109e-10 + 1.43333328 + 0.105663285 -3.37279125e-05 0.00427238224 0.994392812 + 3.32511241e-11 0.0121525582 5.58692481e-10 + 1.46666658 + 0.0840527564 0.000207249672 0.00331887626 0.996455789 + 9.85482945e-11 0.0121525582 6.96221969e-10 + 1.49999988 + 0.0609499477 0.00108746358 0.00205651857 0.99813813 + 3.10785703e-11 0.0121525582 4.51025502e-11 + 1.53333318 + 0.0374571159 0.00261512725 0.000473990309 0.999294698 + 1.14497432e-10 0.0121525582 1.69055173e-10 + 1.56666648 + 0.0135515388 0.00462953746 -0.00141851231 0.999896467 + -1.50085375e-10 0.0121525582 -1.13361688e-10 + 1.59999979 + -0.0106586535 0.00699381251 -0.00360121066 0.999912262 + -1.83522378e-10 0.0121525582 -7.80369172e-11 + 1.63333309 + -0.0350648575 0.00957444683 -0.00604202133 0.999320984 + 2.31813145e-11 0.0121525582 1.41642427e-11 + 1.66666639 + -0.0595590174 0.0122423479 -0.0086962264 0.998111844 + 1.07580722e-10 0.0121525582 -6.16921583e-11 + 1.69999969 + -0.0840346441 0.0148738548 -0.0115064587 0.996285379 + -3.85160764e-10 0.0121525591 2.55159865e-10 + 1.73333299 + -0.108387545 0.0173516795 -0.0144029399 0.993852913 + 1.18558885e-10 0.0121525582 -6.70581785e-11 + 1.76666629 + -0.132777929 0.0195826292 -0.0173320509 0.990800798 + 6.32226693e-12 0.0121525582 3.60046216e-12 + 1.79999959 + -0.154758334 0.0213136915 -0.0199412536 0.987521112 + -5.54447842e-11 0.0121525582 -3.11763393e-11 + 1.8333329 + -0.153699651 0.0212309659 -0.0198130421 0.987690806 + 1.87424121e-11 0.0121525582 4.45197655e-12 + 1.8666662 + -0.153699651 0.0212309677 -0.0198130384 0.987690806 + -7.29210095e-11 0.0121525582 -4.89495736e-11 + 1.8999995 + "R_Thumb_sjnt_2" + 58 + 0.0259883702 -0.00373378885 -0.00634290278 0.99963516 + -5.2694149e-10 0.0251665488 2.63074534e-10 + 0 + 0.0259883702 -0.00373378838 -0.00634290231 0.99963516 + -3.56583596e-10 0.0251665488 3.77501835e-10 + 0.0333333351 + 0.0259883702 -0.00373378885 -0.00634290278 0.99963516 + -3.18894688e-10 0.0251665488 5.5523125e-10 + 0.0666666701 + 0.0259883702 -0.00373378792 -0.00634290278 0.99963516 + -3.31118161e-10 0.0251665488 3.75774994e-10 + 0.100000001 + 0.0259883702 -0.00373378838 -0.00634290231 0.99963516 + -3.38334305e-10 0.0251665488 3.83725052e-10 + 0.13333334 + 0.0259883702 -0.00373378792 -0.00634290185 0.99963516 + -3.25202615e-10 0.0251665488 3.77399445e-10 + 0.166666672 + 0.0259883702 -0.00373378932 -0.00634290231 0.99963516 + -3.56642132e-10 0.0251665488 3.87978788e-10 + 0.200000003 + 0.0259883702 -0.00373378745 -0.00634290278 0.99963516 + -4.35397995e-10 0.0251665488 4.05320139e-10 + 0.233333334 + 0.0259883702 -0.00373378838 -0.00634290185 0.99963516 + 2.29366026e-10 0.0251665488 8.60012617e-10 + 0.266666681 + 0.0259883702 -0.00373378955 -0.00634290231 0.99963516 + -6.41269371e-10 0.0251665488 1.50417345e-10 + 0.300000012 + 0.0259883702 -0.00373378792 -0.00634290278 0.99963516 + -4.16377904e-10 0.0251665488 3.5067621e-10 + 0.333333343 + 0.0259883702 -0.00373378862 -0.00634290185 0.99963516 + -3.66846942e-10 0.0251665488 2.81720949e-11 + 0.366666675 + 0.0259883702 -0.00373378838 -0.00634290185 0.99963516 + -2.76718592e-10 0.0251665488 5.48693591e-10 + 0.400000006 + 0.0259883702 -0.00373378862 -0.00634290231 0.99963516 + -3.7395459e-10 0.0251665488 3.6004108e-10 + 0.433333337 + 0.0259883702 -0.00373378932 -0.00634290231 0.99963516 + 5.92479232e-10 0.0251665507 -6.56513066e-10 + 0.466666669 + 0.025988372 -0.00373379025 -0.00634290371 0.99963516 + -4.38588749e-10 0.0251665488 2.71427048e-10 + 0.5 + 0.0259883702 -0.00373378792 -0.00634290278 0.99963516 + -7.50842e-10 0.0251665488 3.57482585e-11 + 0.533333361 + 0.0259883702 -0.00373378908 -0.00634290185 0.99963516 + -4.3866008e-10 0.0251665488 3.52735008e-10 + 0.566666722 + 0.0259883702 -0.00373378932 -0.00634290278 0.99963516 + -6.18364859e-10 0.0251665488 1.11189558e-10 + 0.600000083 + 0.0259883702 -0.00373378838 -0.00634290278 0.99963516 + -4.00697781e-10 0.0251665488 3.53558738e-10 + 0.633333445 + 0.0259883702 -0.00373378932 -0.00634290278 0.99963516 + -3.85431354e-10 0.0251665488 3.90146387e-10 + 0.666666806 + 0.0259883702 -0.00373378792 -0.00634290278 0.99963516 + -9.91127513e-10 0.0251665488 1.12061505e-09 + 0.700000167 + 0.0259883702 -0.00373378885 -0.00634290231 0.99963516 + -4.66993666e-10 0.0251665488 2.92783048e-10 + 0.733333528 + 0.0259883702 -0.00373378885 -0.00634290231 0.99963516 + -3.63903324e-10 0.0251665488 3.91763705e-10 + 0.766666889 + 0.0259883702 -0.00373378908 -0.00634290231 0.99963516 + -3.57167101e-10 0.0251665488 3.91656985e-10 + 0.80000025 + 0.0259883702 -0.00373378815 -0.00634290138 0.99963516 + -1.04376452e-10 0.0251665488 5.66171499e-10 + 0.833333611 + 0.0259883702 -0.00373378862 -0.00634290418 0.99963516 + -2.38571814e-12 0.0251665488 -2.35988729e-10 + 0.866666973 + 0.0259883702 -0.00373378815 -0.00634290185 0.99963516 + 6.42580156e-10 0.0251665488 1.29543076e-09 + 0.900000334 + 0.024942847 -0.00390431751 -0.00525027653 0.999667466 + -1.29039956e-09 0.0251665488 -3.11367071e-10 + 0.933333695 + 0.0316913314 -0.002799446 -0.0122887939 0.999418259 + -5.99605421e-10 0.0251665488 1.44026652e-10 + 0.966667056 + 0.0542527065 0.00096283562 -0.0355796814 0.997892678 + -2.27815919e-10 0.0251665488 1.16015433e-10 + 1.00000036 + 0.079508692 0.00528899441 -0.061215125 0.994938731 + -4.0506476e-10 0.0251665488 3.99663802e-10 + 1.03333366 + 0.0892192721 0.006981513 -0.0709489435 0.993457317 + -3.05645925e-10 0.0251665488 4.25681601e-10 + 1.06666696 + 0.0880212039 0.00677186856 -0.0697516948 0.993650436 + -5.61592051e-10 0.0251665488 1.75230067e-10 + 1.10000026 + 0.0880098715 0.00677360501 -0.0697917938 0.993648589 + -3.27075173e-10 0.0251665488 4.00653427e-10 + 1.13333356 + 0.0880803764 0.00676352391 -0.069551982 0.993659258 + -6.66308619e-10 0.0251665488 8.383267e-11 + 1.16666687 + 0.0887802169 0.00665558921 -0.0670201778 0.993771672 + -9.1765856e-10 0.0251665488 -1.41961318e-10 + 1.20000017 + 0.0900306627 0.00641955715 -0.061613176 0.994010687 + -6.24727325e-10 0.0251665488 1.0494261e-10 + 1.23333347 + 0.0909658894 0.0061212522 -0.0552191138 0.994303048 + -2.62879774e-10 0.0251665488 4.58432792e-10 + 1.26666677 + 0.0917578712 0.00579947373 -0.0478807762 0.994612634 + -3.33302524e-10 0.0251665488 3.94496741e-10 + 1.30000007 + 0.0928562209 0.00549441809 -0.039041765 0.994898677 + -4.73203809e-10 0.0251665488 4.65882943e-10 + 1.33333337 + 0.0938586742 0.00523361005 -0.0295633338 0.995132744 + -4.7125126e-10 0.0251665488 2.94456848e-10 + 1.36666667 + 0.0943621546 0.00501868501 -0.0203186646 0.995317936 + -2.49349347e-10 0.0251665488 3.09755138e-10 + 1.39999998 + 0.093968682 0.00482241856 -0.0121809598 0.995489001 + -1.74272818e-10 0.0251665488 2.45676118e-10 + 1.43333328 + 0.0922464132 0.0045880843 -0.00610380527 0.995706975 + -2.53194216e-10 0.0251665488 3.31031064e-10 + 1.46666658 + 0.0890777484 0.00426300848 -0.00229434017 0.996012926 + -2.42268927e-10 0.0251665488 3.3583944e-10 + 1.49999988 + 0.0847627968 0.00383485691 -9.50680551e-05 0.9963938 + 1.68052447e-10 0.0251665488 8.08538791e-10 + 1.53333318 + 0.079556495 0.00330262422 0.000950479764 0.996824443 + -1.51409374e-09 0.0251665488 -7.51626039e-10 + 1.56666648 + 0.0736115202 0.00266381586 0.00103993469 0.997282922 + -5.53407598e-10 0.0251665488 2.61079824e-10 + 1.59999979 + 0.0670920089 0.00192236633 0.000398743054 0.997744858 + -7.94234678e-10 0.0251665488 9.94378357e-10 + 1.63333309 + 0.0601634048 0.00108737359 -0.000748822175 0.998187721 + -2.40186038e-10 0.0251665488 5.21661991e-10 + 1.66666639 + 0.0529929362 0.000172786749 -0.00217995304 0.998592496 + -5.07346665e-10 0.0251665488 3.12820686e-10 + 1.69999969 + 0.045749817 -0.000802813447 -0.00367353577 0.998945892 + -3.00746872e-10 0.0251665488 3.38509359e-10 + 1.73333299 + 0.0386051796 -0.00181634841 -0.00501030032 0.999240339 + -2.72405321e-10 0.0251665488 5.08903197e-10 + 1.76666629 + 0.0316669606 -0.00285025104 -0.00596900051 0.999476612 + -5.86791171e-10 0.0251665488 1.80904181e-10 + 1.79999959 + 0.025699256 -0.00377962342 -0.0063632247 0.999642372 + -1.037464e-09 0.0251665488 -2.84238133e-10 + 1.8333329 + 0.0259883702 -0.00373378838 -0.00634290092 0.99963516 + -1.12493688e-10 0.0251665488 6.30989594e-10 + 1.8666662 + 0.0259883702 -0.00373378885 -0.00634290092 0.99963516 + -3.25181854e-10 0.0251665488 4.72505812e-10 + 1.8999995 + "R_Index_sjnt_3" + 58 + -0.154927209 2.40341279e-07 0.0389826223 0.98715651 + 1.85483616e-12 0.019439999 1.39493044e-11 + 0 + -0.176059395 2.35818092e-07 0.0442998968 0.983382225 + 7.56221752e-11 0.019439999 3.86983605e-11 + 0.0333333351 + -0.198969588 2.30754793e-07 0.05006456 0.978726029 + -1.15374571e-10 0.019439999 -1.17158193e-11 + 0.0666666701 + -0.219017401 2.2562142e-07 0.055108998 0.974163473 + 1.73110588e-11 0.019439999 -1.21299235e-10 + 0.100000001 + -0.231391624 2.22013611e-07 0.0582225919 0.9711169 + 2.56967776e-12 0.019439999 -1.12823237e-10 + 0.13333334 + -0.233693331 2.15910305e-07 0.058801759 0.970530689 + 3.7527776e-11 0.019439999 -6.05602677e-12 + 0.166666672 + -0.228053346 2.26612869e-07 0.0573826097 0.971956253 + 3.5007091e-11 0.019439999 -1.53806915e-11 + 0.200000003 + -0.216866374 2.23591954e-07 0.0545677505 0.974675 + 4.21891862e-12 0.019439999 3.1161562e-12 + 0.233333334 + -0.202296495 2.29021424e-07 0.0509016775 0.978000641 + 1.66797062e-10 0.019439999 7.75045791e-11 + 0.266666681 + -0.186545134 2.3536353e-07 0.046938315 0.981324434 + -1.53024968e-10 0.019439999 -3.11655389e-11 + 0.300000012 + -0.171843618 2.3539161e-07 0.0432391316 0.984174907 + 1.90476607e-10 0.019439999 -2.72297029e-11 + 0.333333343 + -0.160448104 2.37972969e-07 0.0403717831 0.986218274 + -1.52357418e-10 0.019439999 6.79494863e-11 + 0.366666675 + -0.15467155 2.36321441e-07 0.038918294 0.987199128 + 2.70758693e-10 0.019439999 -2.77503881e-10 + 0.400000006 + -0.156578556 2.39465038e-07 0.0393981338 0.986879408 + -3.46437878e-11 0.019439999 9.45237846e-11 + 0.433333337 + -0.16659458 2.37289498e-07 0.0419183671 0.985134065 + -5.3456687e-11 0.0194400009 -3.54691554e-11 + 0.466666669 + -0.182632804 2.34701943e-07 0.0459538922 0.982106686 + 4.45393757e-11 0.019439999 1.29273302e-11 + 0.5 + -0.202332333 2.28547123e-07 0.0509106964 0.977992713 + 1.5456833e-10 0.019439999 1.604036e-11 + 0.533333361 + -0.223401845 2.24909954e-07 0.056212198 0.973104298 + -1.30878849e-10 0.019439999 5.04593346e-11 + 0.566666722 + -0.243585035 2.19855565e-07 0.0612907 0.967941046 + 7.30926777e-11 0.019439999 -2.99934279e-11 + 0.600000083 + -0.260672331 2.12719755e-07 0.0655901954 0.963196695 + 4.1938078e-11 0.019439999 -1.30290804e-11 + 0.633333445 + -0.272398055 2.13485848e-07 0.0685406253 0.959740341 + -1.70895468e-11 0.019439999 -4.88796547e-12 + 0.666666806 + -0.279972613 2.12057785e-07 0.0704465359 0.957419753 + -2.82625464e-12 0.0194400009 -2.65515604e-12 + 0.700000167 + -0.285419375 2.11463089e-07 0.0718170553 0.955708206 + -2.80948604e-13 0.019439999 -1.17050536e-11 + 0.733333528 + -0.287762672 2.11628617e-07 0.0724066794 0.954960704 + -3.94592779e-12 0.0194400009 3.50567557e-12 + 0.766666889 + -0.285861492 2.12468819e-07 0.0719283 0.955567718 + 1.040938e-11 0.019439999 -3.08105538e-12 + 0.80000025 + -0.277494907 2.08000259e-07 0.0698231012 0.958186507 + -1.18657792e-11 0.019439999 -8.52956768e-12 + 0.833333611 + -0.273350358 2.22286047e-07 0.0687802434 0.959452391 + 2.17086436e-11 0.019439999 7.6839507e-12 + 0.866666973 + -0.269373059 2.18131547e-07 0.067779474 0.960647762 + -4.43520763e-13 0.019439999 2.14834019e-11 + 0.900000334 + -0.236676157 2.21843678e-07 0.0595522821 0.969761789 + -1.81389223e-10 0.019439999 6.26471314e-12 + 0.933333695 + -0.1091474 2.49081637e-07 0.0274635088 0.993646145 + -1.48278889e-11 0.019439999 7.40215007e-12 + 0.966667056 + 0.123115763 2.84727406e-07 -0.0309785288 0.991908729 + -9.86392426e-11 0.019439999 6.26334887e-11 + 1.00000036 + 0.32824555 2.9296379e-07 -0.0825932622 0.940974593 + 3.46443568e-11 0.019439999 -2.9738486e-11 + 1.03333366 + 0.398552179 3.02388571e-07 -0.100283794 0.911646485 + 9.47704831e-11 0.019439999 -1.507314e-10 + 1.06666696 + 0.389829874 3.03101359e-07 -0.0980890989 0.915647984 + 4.21505296e-11 0.0194400009 -1.24239813e-10 + 1.10000026 + 0.389968425 3.05156505e-07 -0.0981239453 0.915585279 + 6.02676659e-11 0.019439999 -4.86710394e-11 + 1.13333356 + 0.389149487 3.05033097e-07 -0.0979178995 0.915955663 + 5.96861588e-11 0.019439999 -1.28343907e-11 + 1.16666687 + 0.380323261 2.99678987e-07 -0.0956970528 0.919889331 + 1.92193275e-11 0.019439999 -2.2127437e-11 + 1.20000017 + 0.360466778 3.00960011e-07 -0.0907007605 0.928351879 + 7.6931881e-12 0.019439999 -3.10643594e-11 + 1.23333347 + 0.334750146 3.01663903e-07 -0.0842299536 0.938534856 + 6.44723719e-11 0.019439999 -4.04679658e-11 + 1.26666677 + 0.303871989 2.99117005e-07 -0.0764603838 0.949639738 + -3.22808794e-11 0.019439999 1.46428648e-12 + 1.30000007 + 0.266836792 2.99332896e-07 -0.0671415851 0.961400151 + 1.01653942e-10 0.019439999 4.36460798e-11 + 1.33333337 + 0.226020515 2.94491713e-07 -0.0568714105 0.972460985 + 1.92648033e-11 0.019439999 9.34278436e-12 + 1.36666667 + 0.183959305 2.89306229e-07 -0.0462879799 0.981843412 + -3.40298796e-11 0.019439999 -9.37376357e-11 + 1.39999998 + 0.143298581 2.84616647e-07 -0.0360569283 0.989022493 + 7.65362496e-11 0.019439999 -1.47670667e-10 + 1.43333328 + 0.106999256 2.81113131e-07 -0.0269232914 0.993894517 + 1.99071332e-11 0.019439999 -6.76487824e-11 + 1.46666658 + 0.0757098198 2.77157682e-07 -0.0190502461 0.996947885 + 9.11745679e-11 0.019439999 -1.64720858e-11 + 1.49999988 + 0.0475555658 2.73876424e-07 -0.0119660785 0.99879694 + 6.7311135e-12 0.019439999 -4.36421038e-11 + 1.53333318 + 0.0214248318 2.70517006e-07 -0.00539106643 0.999755919 + 1.01069299e-10 0.019439999 2.23928966e-11 + 1.56666648 + -0.00296404329 2.65974705e-07 0.000745659985 0.999995351 + -5.39927929e-11 0.019439999 1.80853024e-11 + 1.59999979 + -0.0259961281 2.62807447e-07 0.00654099043 0.999640644 + -1.45136597e-10 0.019439999 4.02349092e-11 + 1.63333309 + -0.0480613112 2.57623554e-07 0.0120930308 0.998771191 + 4.55105467e-11 0.019439999 -3.57636039e-11 + 1.66666639 + -0.0695515871 2.56249763e-07 0.0175004117 0.997424901 + 7.87247212e-11 0.019439999 -8.83142101e-11 + 1.69999969 + -0.0908588096 2.51515701e-07 0.0228617322 0.995601356 + -3.92356009e-10 0.0194400009 2.37741909e-10 + 1.73333299 + -0.112372734 2.4812266e-07 0.0282750651 0.993263781 + 1.31113884e-10 0.019439999 -1.49628934e-10 + 1.76666629 + -0.13474977 2.44045594e-07 0.0339055695 0.990299404 + 2.62480159e-11 0.019439999 -1.28352439e-12 + 1.79999959 + -0.155944675 2.39203246e-07 0.0392386355 0.98698616 + -6.67381497e-11 0.019439999 2.47632661e-11 + 1.8333329 + -0.154927209 2.39633692e-07 0.0389826186 0.98715651 + 1.70600235e-11 0.019439999 -2.23508321e-12 + 1.8666662 + -0.154927209 2.38690262e-07 0.0389826261 0.98715651 + -4.75250776e-11 0.019439999 7.11565919e-12 + 1.8999995 + "L_Leg_sjnt_0" + 58 + -0.18803373 0.101797968 -0.0310137328 0.976380408 + 0.104854003 -0.000224642019 7.96136592e-05 + 0 + -0.0911503136 0.0986240134 0.00961132068 0.990894854 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.0333333351 + -0.000348909263 0.102296554 0.0336422697 0.994184911 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.0666666701 + 0.0279089045 0.0890657082 0.031387113 0.995139837 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.100000001 + 0.0091951983 0.0600473881 0.00178094348 0.9981516 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.13333334 + -0.00900929142 0.0629631355 -0.0233446732 0.997702122 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.166666672 + -0.0257535968 0.101197489 -0.0142461807 0.994430959 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.200000003 + -0.0657451823 0.146622136 0.0203156453 0.98679626 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.233333334 + -0.149444982 0.173209205 0.045073159 0.972436786 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.266666681 + -0.261212707 0.151710644 0.0513121635 0.951902807 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.300000012 + -0.365591139 0.106293894 0.0297199525 0.924208581 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.333333343 + -0.430597633 0.059016712 0.000947562221 0.900611997 + 0.104854003 -0.000224642004 7.96136592e-05 + 0.366666675 + -0.459238827 0.0216476023 -0.0147642447 0.88792634 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.400000006 + -0.451933354 0.00121637236 -0.00831641257 0.892012119 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.433333337 + -0.415171266 0.0111335004 0.00147619133 0.909673989 + 0.10485401 -0.000224642019 7.96136592e-05 + 0.466666669 + -0.395569235 0.0342664905 -0.00630855374 0.917775035 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.5 + -0.371792048 0.0649381131 -0.0264933594 0.925662935 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.533333361 + -0.338081598 0.0759980753 -0.0483476855 0.936796427 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.566666722 + -0.274737835 0.0974592865 -0.0558143668 0.954937518 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.600000083 + -0.194873095 0.0992702767 -0.0370479152 0.975088358 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.633333445 + -0.100304626 0.101876654 0.000846592709 0.989726961 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.666666806 + -0.0142103536 0.104156218 0.0279381406 0.994066894 + 0.104854003 -0.000224642034 7.96136592e-05 + 0.700000167 + 0.0144412462 0.0908814818 0.0270413253 0.99538976 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.733333528 + -0.000579869724 0.0623113774 -0.00209827302 0.998054385 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.766666889 + -0.0160721298 0.0648335516 -0.025698116 0.997435689 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.80000025 + -0.0308461953 0.101838157 -0.0148479408 0.994211793 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.833333611 + -0.0692515895 0.147204503 0.0199181996 0.986477733 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.866666973 + -0.151669219 0.173596695 0.0447969586 0.972035944 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.900000334 + -0.261950254 0.151779667 0.0512163267 0.951694191 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.933333695 + -0.365007609 0.106309317 0.0297614057 0.924436092 + 0.104854003 -0.000224642019 7.96136592e-05 + 0.966667056 + -0.429457128 0.0590558276 0.00107011804 0.901153624 + 0.104854003 -0.000224642004 7.96136592e-05 + 1.00000036 + -0.4581981 0.0216583237 -0.0145466439 0.888467193 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.03333366 + -0.451507658 0.00122358906 -0.00801893417 0.892230392 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.06666696 + -0.415911347 0.0112022106 0.00175209064 0.909334481 + 0.10485401 -0.000224642019 7.96136592e-05 + 1.10000026 + -0.396286428 0.034374319 -0.00607739529 0.917463124 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.13333356 + -0.371833414 0.064927049 -0.0261846706 0.925655842 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.16666687 + -0.337784916 0.0758565292 -0.0475913808 0.936953723 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.20000017 + -0.274408966 0.0974036157 -0.0554642603 0.955058157 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.23333347 + -0.194873214 0.0992702767 -0.0370479301 0.975088358 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.26666677 + -0.100800291 0.102058396 0.000357975397 0.989658177 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.30000007 + -0.0157708414 0.104375862 0.0272556543 0.994039297 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.33333337 + 0.0120104672 0.0912218392 0.0262111053 0.995413184 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.36666667 + -0.00314625469 0.0629165471 -0.00314217177 0.998008847 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.39999998 + -0.0185839627 0.0655047894 -0.0265444871 0.997326016 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.43333328 + -0.0331982486 0.102135338 -0.015127616 0.994101346 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.46666658 + -0.07130301 0.147546127 0.0196842868 0.986285269 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.49999988 + -0.153291076 0.173879474 0.0445949137 0.971740246 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.53333318 + -0.262615442 0.151841879 0.0511299968 0.951505601 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.56666648 + -0.364359021 0.106326371 0.0298073962 0.924688458 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.59999979 + -0.427885443 0.0591093451 0.00123863074 0.901897192 + 0.104854003 -0.000224642004 7.96136592e-05 + 1.63333309 + -0.456399798 0.0216765106 -0.0141730234 0.88939786 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.66666639 + -0.450537175 0.00123914948 -0.00737349782 0.892726421 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.69999969 + -0.417701483 0.0113950893 0.00252011116 0.908509314 + 0.10485401 -0.000224642034 7.96136592e-05 + 1.73333299 + -0.398577631 0.034776058 -0.00522714341 0.916460156 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.76666629 + -0.37182793 0.0648610964 -0.0245516002 0.925707459 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.79999959 + -0.335112602 0.0746482387 -0.0411580168 0.938314021 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.8333329 + -0.268350393 0.0963897184 -0.0491722412 0.957224727 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.8666662 + -0.188033879 0.101797961 -0.031013744 0.976380348 + 0.104854003 -0.000224642019 7.96136592e-05 + 1.8999995 + "L_Foot_sjnt_2" + 58 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.0333333351 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.0666666701 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.100000001 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.13333334 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.166666672 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.200000003 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.233333334 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.266666681 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.300000012 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.333333343 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.366666675 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.400000006 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.433333337 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.466666669 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.5 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.533333361 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.566666722 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.600000083 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.633333445 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.666666806 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.700000167 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.733333528 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.766666889 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.80000025 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.833333611 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.866666973 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.900000334 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.933333695 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 0.966667056 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.00000036 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.03333366 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.06666696 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.10000026 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.13333356 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.16666687 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.20000017 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.23333347 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.26666677 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.30000007 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.33333337 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.36666667 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.39999998 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.43333328 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.46666658 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.49999988 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.53333318 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.56666648 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.59999979 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.63333309 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.66666639 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.69999969 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.73333299 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.76666629 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.79999959 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.8333329 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.8666662 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.44089183e-17 + 1.8999995 + "R_Ring_sjnt_3" + 58 + -0.149294794 -4.24984449e-07 0.00974830799 0.988744736 + -9.73528758e-11 0.0159499999 -1.2913403e-12 + 0 + -0.171076909 -4.30415412e-07 0.0111706257 0.985194325 + 5.62111399e-11 0.0159499999 8.53609058e-11 + 0.0333333351 + -0.194697484 -4.34785505e-07 0.0127129899 0.980780959 + -1.94095462e-10 0.0159499999 9.18866719e-11 + 0.0666666701 + -0.215371877 -4.3839168e-07 0.0140629774 0.976430833 + 1.22009347e-10 0.0159499999 -2.8400976e-10 + 0.100000001 + -0.228135288 -4.40661182e-07 0.0148963947 0.973515511 + 1.02339387e-10 0.0159499999 -2.12170614e-10 + 0.13333334 + -0.230509579 -4.40915613e-07 0.0150514329 0.972953618 + 8.38748099e-11 0.0159499999 -1.53816862e-10 + 0.166666672 + -0.224691853 -4.39939129e-07 0.0146715455 0.974319458 + 9.01636057e-11 0.0159499999 -1.4237031e-10 + 0.200000003 + -0.213153452 -4.3864901e-07 0.0139181186 0.976919651 + -5.08701692e-11 0.0159499999 -3.62776476e-11 + 0.233333334 + -0.198128015 -4.35685536e-07 0.0129369944 0.980090797 + 2.06209591e-10 0.0159499999 2.4404237e-10 + 0.266666681 + -0.181887016 -4.32747527e-07 0.0118764946 0.983247757 + -1.20883636e-10 0.0159499999 -8.47104747e-11 + 0.300000012 + -0.166731089 -4.29439467e-07 0.0108868536 0.985942364 + 1.62362415e-10 0.0159499999 4.16855508e-11 + 0.333333343 + -0.154984981 -4.2783762e-07 0.0101198629 0.987865031 + -6.00449829e-11 0.0159499999 5.07213802e-12 + 0.366666675 + -0.149030879 -4.27616328e-07 0.00973107666 0.988784671 + 4.31630121e-10 0.0159499999 -1.08050242e-10 + 0.400000006 + -0.150998801 -4.24154024e-07 0.00985957682 0.9884848 + -8.36034506e-11 0.0159499999 7.65953689e-11 + 0.433333337 + -0.161336049 -4.28457582e-07 0.0105345715 0.986843348 + 4.2348346e-13 0.0159500018 -4.59874604e-11 + 0.466666669 + -0.177893624 -4.31123539e-07 0.0116157383 0.983981192 + -1.43904793e-11 0.0159499999 3.49774584e-11 + 0.5 + -0.198230535 -4.3474455e-07 0.0129436897 0.980069935 + 1.71488067e-11 0.0159499999 2.66578582e-11 + 0.533333361 + -0.219977155 -4.4076495e-07 0.0143636875 0.975399315 + 8.6467361e-12 0.0159499999 1.22426513e-11 + 0.566666722 + -0.24079828 -4.41694255e-07 0.0157232564 0.970447898 + 2.08710549e-11 0.0159499999 -1.60156333e-11 + 0.600000083 + -0.258404911 -4.47635671e-07 0.0168729275 0.965889394 + 1.34220812e-11 0.0159499999 3.91082701e-13 + 0.633333445 + -0.270449638 -4.48210756e-07 0.0176594164 0.962572217 + 4.08284951e-12 0.0159499999 1.38264508e-12 + 0.666666806 + -0.278133959 -4.50450443e-07 0.0181611888 0.96037066 + 9.39209561e-12 0.0159500018 -1.13651311e-11 + 0.700000167 + -0.28354609 -4.4949789e-07 0.018514581 0.958779871 + 2.15593585e-11 0.0159499999 -6.72201834e-12 + 0.733333528 + -0.285736978 -4.49318435e-07 0.0186576359 0.958126485 + -1.86466311e-11 0.0159499999 -5.06702232e-12 + 0.766666889 + -0.283589363 -4.49503915e-07 0.0185174048 0.958766997 + 9.9186076e-12 0.0159499999 -5.16138239e-13 + 0.80000025 + -0.274896294 -4.49043171e-07 0.0179497767 0.961306334 + 4.59179708e-11 0.0159499999 -3.20756026e-11 + 0.833333611 + -0.270496845 -4.46281831e-07 0.0176624898 0.962558806 + -3.4089849e-11 0.0159499999 2.63619872e-11 + 0.866666973 + -0.266254187 -4.45973683e-07 0.0173854604 0.963746071 + -2.7658301e-11 0.0159499999 2.95232623e-11 + 0.900000334 + -0.2328953 -4.44526648e-07 0.0152072096 0.972382903 + 5.99716526e-11 0.0159499999 -2.78330952e-11 + 0.933333695 + -0.103542298 -4.15722155e-07 0.00676078442 0.994602084 + -1.53098187e-10 0.0159499999 -1.08457236e-11 + 0.966667056 + 0.131463066 -3.47325653e-07 -0.00858445745 0.991283894 + -1.7475428e-10 0.0159499999 2.48178366e-12 + 1.00000036 + 0.338844419 -2.92343373e-07 -0.0221259184 0.940582216 + 9.06074105e-11 0.0159499999 -2.44307317e-11 + 1.03333366 + 0.409951299 -2.55376733e-07 -0.0267690085 0.911714554 + 4.50233982e-11 0.0159499999 1.90721033e-11 + 1.06666696 + 0.401127458 -2.25291842e-07 -0.0261928216 0.915647745 + -3.57785551e-10 0.0159500018 1.96069438e-10 + 1.10000026 + 0.401756376 -2.46217269e-07 -0.0262338948 0.915370762 + 2.52344985e-11 0.0159499999 1.73196214e-11 + 1.13333356 + 0.397861034 -2.53375418e-07 -0.025979545 0.91707778 + 1.51709392e-11 0.0159499999 1.4366037e-11 + 1.16666687 + 0.358511031 -2.73439412e-07 -0.0234100986 0.93323195 + -1.24771298e-12 0.0159499999 -3.26338067e-12 + 1.20000017 + 0.284752935 -3.005064e-07 -0.0185938869 0.958420634 + 7.67460401e-11 0.0159499999 3.37479372e-12 + 1.23333347 + 0.223646328 -3.22884517e-07 -0.0146037871 0.974560976 + 3.26568286e-11 0.0159499999 5.39159819e-12 + 1.26666677 + 0.190753758 -3.34340399e-07 -0.0124559877 0.981558919 + -2.7046667e-11 0.0159499999 -3.65008648e-11 + 1.30000007 + 0.167279214 -3.40856275e-07 -0.010923164 0.985849023 + -1.78948766e-11 0.0159499999 1.86621482e-10 + 1.33333337 + 0.150140867 -3.47850801e-07 -0.00980407558 0.988616049 + 1.66267e-11 0.0159499999 4.18957299e-11 + 1.36666667 + 0.136259153 -3.52842022e-07 -0.00889763329 0.990633309 + 7.71478853e-11 0.0159499999 -3.93352767e-10 + 1.39999998 + 0.122488722 -3.56657949e-07 -0.00799845532 0.99243772 + 3.04854669e-10 0.0159499999 -1.94101943e-10 + 1.43333328 + 0.105339371 -3.61451896e-07 -0.00687864888 0.994412541 + 1.10685502e-10 0.0159499999 2.94141933e-11 + 1.46666658 + 0.0842944682 -3.67658629e-07 -0.00550447218 0.996425748 + 1.90440233e-10 0.0159499999 1.89914001e-10 + 1.49999988 + 0.0617226586 -3.75722266e-07 -0.00403059274 0.998085201 + 6.52221402e-11 0.0159499999 -3.59818837e-12 + 1.53333318 + 0.0387331322 -3.80535624e-07 -0.00252943533 0.999246418 + 1.31970518e-10 0.0159499999 9.58709709e-11 + 1.56666648 + 0.0153023312 -3.87296552e-07 -0.000999465585 0.9998824 + -1.23429794e-10 0.0159499999 -2.99183976e-11 + 1.59999979 + -0.00846137572 -3.93416542e-07 0.000552242913 0.999964058 + -1.78743562e-10 0.0159499999 -9.85664848e-12 + 1.63333309 + -0.0324484073 -4.01201106e-07 0.00211853557 0.999471188 + 8.42761902e-11 0.0159499999 -2.26236803e-12 + 1.66666639 + -0.0565484762 -4.04115838e-07 0.00369220972 0.998393059 + 7.26618071e-11 0.0159499999 -1.3234e-10 + 1.69999969 + -0.0806511566 -4.12499304e-07 0.00526604941 0.99672848 + -3.30716149e-10 0.0159500018 5.47590806e-10 + 1.73333299 + -0.1046464 -4.15712123e-07 0.00683288136 0.994486034 + 9.49159987e-11 0.0159499999 -1.53478369e-10 + 1.76666629 + -0.128682077 -4.21508702e-07 0.0084023485 0.991650343 + 5.12955e-12 0.0159499999 4.18879124e-12 + 1.79999959 + -0.150338218 -4.26112535e-07 0.00981644075 0.988585889 + -1.37311953e-10 0.0159499999 -8.12121898e-12 + 1.8333329 + -0.149294794 -4.26632823e-07 0.00974830706 0.988744736 + 7.01652417e-11 0.0159499999 1.37316642e-11 + 1.8666662 + -0.149294794 -4.25337674e-07 0.00974830985 0.988744736 + -1.40555012e-10 0.0159499999 -3.01093907e-11 + 1.8999995 + "R_Middle_sjnt_1" + 58 + 0.364186645 0.00870458409 -0.0696817786 0.928674757 + 1.12574429e-10 0.048108764 8.52082836e-13 + 0 + 0.331749588 0.00878302846 -0.063498266 0.941187084 + 8.26052837e-11 0.048108764 3.03563043e-11 + 0.0333333351 + 0.295963198 0.00886561722 -0.056677375 0.953475177 + -2.70616949e-11 0.048108764 5.8553766e-11 + 0.0666666701 + 0.264136314 0.00893565826 -0.0506124385 0.963115036 + -5.98304323e-11 0.048108764 -1.57454563e-10 + 0.100000001 + 0.244287863 0.00897843298 -0.0468305349 0.968529701 + -8.43942138e-11 0.048108764 -1.52016358e-10 + 0.13333334 + 0.240288511 0.0089840088 -0.0460703522 0.969566047 + 2.64591907e-12 0.048108764 -2.94155464e-11 + 0.166666672 + 0.24856396 0.00896696746 -0.0476498157 0.967401206 + -1.64945384e-11 0.048108764 -9.0824126e-11 + 0.200000003 + 0.265359044 0.00893291458 -0.0508534908 0.96276623 + 2.25173838e-11 0.048108764 -2.14059517e-11 + 0.233333334 + 0.287368029 0.00888428465 -0.0550518483 0.956195593 + 4.56243758e-11 0.048108764 6.04811132e-11 + 0.266666681 + 0.311281234 0.00883045606 -0.0596125424 0.948405206 + -3.62618377e-12 0.048108764 -3.68572707e-12 + 0.300000012 + 0.333871365 0.00877638813 -0.063920036 0.940407991 + 9.03497676e-12 0.048108764 -7.7764635e-11 + 0.333333343 + 0.352016926 0.00874091033 -0.0673737079 0.933524787 + -1.32361178e-10 0.048108764 8.54532764e-11 + 0.366666675 + 0.362640768 0.00872494839 -0.0693880767 0.929301322 + -1.32298936e-10 0.048108764 -2.2990207e-10 + 0.400000006 + 0.362819016 0.00872416515 -0.0694092885 0.929230154 + 7.67954589e-11 0.048108764 7.63301922e-11 + 0.433333337 + 0.351529986 0.00873869285 -0.0672421157 0.933717787 + -1.56031202e-10 0.0481087677 -4.16152078e-11 + 0.466666669 + 0.331540138 0.00876696128 -0.0634121224 0.941266835 + 1.07851859e-10 0.048108764 6.16645901e-11 + 0.5 + 0.306506187 0.00881936774 -0.0586119257 0.950021505 + 2.33352754e-10 0.048108764 8.95937491e-12 + 0.533333361 + 0.280065775 0.0088756755 -0.0535421856 0.95844543 + -1.19719346e-10 0.048108764 2.61593416e-12 + 0.566666722 + 0.255990565 0.00893221237 -0.0489230976 0.965399206 + 8.18380363e-11 0.048108764 -5.10297568e-11 + 0.600000083 + 0.238152549 0.00898377132 -0.0454942323 0.970120132 + 4.84398285e-11 0.048108764 -2.37525902e-11 + 0.633333445 + 0.230485961 0.00902465358 -0.0440066122 0.97203815 + -1.00042986e-11 0.048108764 -1.04259353e-11 + 0.666666806 + 0.236681804 0.00906377193 -0.0451541208 0.970495105 + 1.54685151e-12 0.048108764 7.59513286e-12 + 0.700000167 + 0.254008442 0.00910523813 -0.0484119132 0.965946734 + 1.32101257e-11 0.048108764 1.60412124e-12 + 0.733333528 + 0.276982993 0.00913795736 -0.0527438 0.959382594 + -1.78804523e-11 0.048108764 7.76878995e-12 + 0.766666889 + 0.300065726 0.00914478581 -0.0571087897 0.952163637 + 1.45680447e-11 0.048108764 -3.81191953e-12 + 0.80000025 + 0.317886621 0.00914472435 -0.0604884811 0.946153104 + -1.36894718e-10 0.048108764 -5.77526291e-11 + 0.833333611 + 0.324038863 0.00915612467 -0.0616920553 0.94398576 + 1.19384114e-10 0.048108764 4.18060586e-11 + 0.866666973 + 0.321683049 0.00919173192 -0.0613107905 0.944815576 + -4.24884641e-11 0.048108764 -6.7478822e-12 + 0.900000334 + 0.322638631 0.00905641634 -0.0615974776 0.944472373 + -2.84969964e-10 0.048108764 2.6287807e-11 + 0.933333695 + 0.343077123 0.0083244564 -0.065705575 0.93696934 + 1.57937871e-10 0.048108764 3.45642091e-11 + 0.966667056 + 0.383394003 0.00698076235 -0.0738212243 0.920603454 + -1.00808389e-10 0.048108764 2.31098626e-10 + 1.00000036 + 0.41961509 0.00578239653 -0.0812122151 0.904043317 + 3.16222777e-11 0.048108764 -1.15539363e-10 + 1.03333366 + 0.432505488 0.00535965152 -0.0838670358 0.89770627 + -7.13396286e-11 0.048108764 -1.91117521e-11 + 1.06666696 + 0.430891544 0.00541081 -0.0835310295 0.898513079 + -8.64633851e-11 0.0481087677 1.59346591e-10 + 1.10000026 + 0.431492299 0.00540169515 -0.0836346671 0.898215175 + 5.41564293e-11 0.048108764 1.85337249e-11 + 1.13333356 + 0.427765697 0.0054007424 -0.0829014778 0.900063694 + 1.45128062e-10 0.048108764 4.60556732e-11 + 1.16666687 + 0.390406847 0.00544173969 -0.0757196695 0.917507112 + 9.26138402e-11 0.048108764 -4.12938997e-12 + 1.20000017 + 0.322337449 0.00551594328 -0.0626083165 0.94453609 + 1.0650382e-10 0.048108764 -5.03848699e-11 + 1.23333347 + 0.271481186 0.00559636345 -0.0527524464 0.960980713 + 7.6518597e-11 0.048108764 1.86287253e-11 + 1.26666677 + 0.252898157 0.00567751424 -0.0490258783 0.966233313 + -4.16920873e-11 0.048108764 -1.39414166e-11 + 1.30000007 + 0.246358275 0.00576245086 -0.0475550108 0.967994332 + 1.37582667e-10 0.048108764 6.75447615e-11 + 1.33333337 + 0.248503998 0.00585293304 -0.0477240682 0.96743679 + 2.99178286e-11 0.048108764 1.08377656e-11 + 1.36666667 + 0.255998284 0.00595112145 -0.0489217974 0.965420127 + -7.83580839e-11 0.048108764 -1.00617972e-10 + 1.39999998 + 0.265470028 0.0060628932 -0.0505312309 0.962774932 + -2.61763944e-11 0.048108764 -1.25610314e-10 + 1.43333328 + 0.273227692 0.00619978132 -0.0518782698 0.960529506 + -2.7146143e-11 0.048108764 -3.90053857e-11 + 1.46666658 + 0.27887097 0.00636717817 -0.0528936386 0.958849669 + -6.20673261e-12 0.048108764 4.32430619e-11 + 1.49999988 + 0.284887284 0.0065582362 -0.054029908 0.95701462 + -3.5948345e-11 0.048108764 -2.53589857e-11 + 1.53333318 + 0.292180955 0.00676732091 -0.0554434769 0.95473063 + 1.17324248e-10 0.048108764 7.81381002e-11 + 1.56666648 + 0.300383955 0.00699201226 -0.0570569523 0.952084661 + -7.4187767e-11 0.048108764 -3.50723877e-12 + 1.59999979 + 0.309276909 0.00722944317 -0.0588205233 0.949123621 + -1.72633602e-10 0.048108764 1.89982075e-11 + 1.63333309 + 0.318642169 0.00747656031 -0.0606850013 0.945900977 + -3.00377674e-11 0.048108764 -3.35097644e-11 + 1.66666639 + 0.328263819 0.00773004349 -0.0626018941 0.942477643 + 9.95385111e-12 0.048108764 -1.11462548e-10 + 1.69999969 + 0.337928772 0.00798625872 -0.0645236671 0.938923359 + -3.56487811e-10 0.0481087677 3.32598227e-10 + 1.73333299 + 0.347427011 0.00824127533 -0.0664037466 0.935316622 + 1.00667419e-10 0.048108764 -1.16318677e-10 + 1.76666629 + 0.356638759 0.00849336293 -0.0682134181 0.931710064 + 7.93710306e-11 0.048108764 7.74207358e-13 + 1.79999959 + 0.364570022 0.00871532597 -0.0697562993 0.928518593 + 1.57809266e-10 0.048108764 3.09785253e-11 + 1.8333329 + 0.364186645 0.00870458316 -0.0696817786 0.928674757 + -1.86528831e-11 0.048108764 -1.82751592e-11 + 1.8666662 + 0.364186645 0.00870458316 -0.0696817786 0.928674757 + 7.93130492e-11 0.048108764 7.79664354e-12 + 1.8999995 + "R_Thumb_sjnt_0" + 58 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0 + -0.195797414 0.935967445 0.207884669 0.205942467 + -0.0208326261 0.0239606146 0.0221159924 + 0.0333333351 + -0.195797414 0.935967445 0.207884669 0.205942467 + -0.0208326261 0.0239606146 0.0221159924 + 0.0666666701 + -0.195797414 0.935967445 0.207884669 0.205942467 + -0.0208326261 0.0239606146 0.0221159924 + 0.100000001 + -0.195797414 0.935967445 0.207884669 0.205942467 + -0.0208326261 0.0239606146 0.0221159924 + 0.13333334 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.166666672 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.200000003 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.233333334 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.266666681 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.300000012 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.333333343 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.366666675 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.400000006 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.433333337 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.020832628 0.0239606146 0.0221159961 + 0.466666669 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.5 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.533333361 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.566666722 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.600000083 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.633333445 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.666666806 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.700000167 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.733333528 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.766666889 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.80000025 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.833333611 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.866666973 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 0.900000334 + -0.221325636 0.95004493 0.185204059 0.118866116 + -0.0208326261 0.0239606146 0.0221159924 + 0.933333695 + -0.219829693 0.950068593 0.19161959 0.111025184 + -0.0208326261 0.0239606146 0.0221159924 + 0.966667056 + -0.214855194 0.949434817 0.212694198 0.0846874714 + -0.0208326261 0.0239606146 0.0221159924 + 1.00000036 + -0.209342062 0.947437823 0.235612735 0.054991968 + -0.0208326261 0.0239606146 0.0221159924 + 1.03333366 + -0.207239881 0.946311593 0.244237855 0.0435189568 + -0.0208326261 0.0239606146 0.0221159924 + 1.06666696 + -0.207498685 0.94646126 0.243179291 0.0449360684 + -0.0208326261 0.0239606146 0.0221159924 + 1.10000026 + -0.207512677 0.946458995 0.243196979 0.0448246002 + -0.0208326261 0.0239606146 0.0221159924 + 1.13333356 + -0.207427889 0.946472466 0.24309212 0.0454945974 + -0.0208326261 0.0239606146 0.0221159924 + 1.16666687 + -0.206560016 0.946587384 0.241966411 0.0525123179 + -0.0208326261 0.0239606146 0.0221159924 + 1.20000017 + -0.204862148 0.946665645 0.239460036 0.0671903938 + -0.0208326261 0.0239606146 0.0221159924 + 1.23333347 + -0.203174397 0.946498692 0.236280754 0.0838557258 + -0.0208326261 0.0239606146 0.0221159924 + 1.26666677 + -0.201467276 0.945952773 0.232501 0.102604061 + -0.0208326261 0.0239606146 0.0221159924 + 1.30000007 + -0.199502394 0.944739342 0.227950782 0.125319064 + -0.0208326261 0.0239606146 0.0221159924 + 1.33333337 + -0.197656766 0.942817032 0.222960681 0.14938651 + -0.0208326261 0.0239606146 0.0221159924 + 1.36666667 + -0.196239337 0.94040817 0.217889652 0.172182009 + -0.0208326261 0.0239606146 0.0221159924 + 1.39999998 + -0.195482582 0.937998414 0.213115454 0.191121459 + -0.0208326261 0.0239606146 0.0221159924 + 1.43333328 + -0.195580006 0.936302066 0.209059492 0.203423455 + -0.0208326261 0.0239606146 0.0221159924 + 1.46666658 + -0.19650726 0.935712039 0.20581606 0.20848909 + -0.0208326261 0.0239606146 0.0221159924 + 1.49999988 + -0.198030606 0.93603009 0.203109875 0.208273694 + -0.0208326261 0.0239606146 0.0221159924 + 1.53333318 + -0.19998844 0.937022686 0.200759932 0.204177901 + -0.0208326261 0.0239606146 0.0221159924 + 1.56666648 + -0.202297896 0.938532889 0.198697776 0.196852192 + -0.0208326261 0.0239606146 0.0221159924 + 1.59999979 + -0.204877004 0.940372229 0.196842611 0.187025487 + -0.0208326261 0.0239606146 0.0221159924 + 1.63333309 + -0.207646281 0.9423576 0.19511582 0.175428092 + -0.0208326261 0.0239606146 0.0221159924 + 1.66666639 + -0.21052441 0.944329143 0.19344236 0.162794366 + -0.0208326261 0.0239606146 0.0221159924 + 1.69999969 + -0.21342589 0.946161509 0.191751853 0.149863869 + -0.0208326261 0.0239606146 0.0221159924 + 1.73333299 + -0.216260314 0.947768986 0.189979196 0.137380376 + -0.0208326261 0.0239606146 0.0221159924 + 1.76666629 + -0.218956009 0.949115217 0.188039467 0.126014754 + -0.0208326261 0.0239606146 0.0221159924 + 1.79999959 + -0.221202269 0.950101137 0.186108112 0.117222823 + -0.0208326261 0.0239606146 0.0221159924 + 1.8333329 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 1.8666662 + -0.22109364 0.950055063 0.186201409 0.117652491 + -0.0208326261 0.0239606146 0.0221159924 + 1.8999995 + "L_Thumb_sjnt_0" + 58 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 0 + -0.23745133 0.939348996 0.150293261 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 0.0333333351 + -0.23745133 0.939348996 0.150293261 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 0.0666666701 + -0.23745133 0.939348996 0.150293246 0.196601912 + 0.020829184 -0.0239574499 -0.0221176092 + 0.100000001 + -0.23745133 0.939348996 0.150293246 0.196601957 + 0.020829184 -0.0239574499 -0.0221176092 + 0.13333334 + -0.23745133 0.939348996 0.150293231 0.196601972 + 0.020829184 -0.0239574499 -0.0221176092 + 0.166666672 + -0.23745133 0.939348996 0.150293216 0.196601987 + 0.020829184 -0.0239574499 -0.0221176092 + 0.200000003 + -0.23745133 0.939348996 0.150293201 0.196601987 + 0.020829184 -0.0239574499 -0.0221176092 + 0.233333334 + -0.23745136 0.939348996 0.150293201 0.196602032 + 0.020829184 -0.0239574499 -0.0221176092 + 0.266666681 + -0.23745136 0.939348996 0.150293201 0.196602032 + 0.020829184 -0.0239574499 -0.0221176092 + 0.300000012 + -0.23745136 0.939348996 0.150293171 0.196602046 + 0.020829184 -0.0239574499 -0.0221176092 + 0.333333343 + -0.23745136 0.939348996 0.150293171 0.196602061 + 0.020829184 -0.0239574499 -0.0221176092 + 0.366666675 + -0.23745136 0.939348996 0.150293157 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.400000006 + -0.23745136 0.939348996 0.150293142 0.196602091 + 0.020829184 -0.0239574499 -0.0221176092 + 0.433333337 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.466666669 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.5 + -0.23745136 0.939348996 0.150293142 0.196602091 + 0.020829184 -0.0239574499 -0.0221176092 + 0.533333361 + -0.23745136 0.939348996 0.150293157 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.566666722 + -0.23745136 0.939348996 0.150293157 0.196602061 + 0.020829184 -0.0239574499 -0.0221176092 + 0.600000083 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.633333445 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.666666806 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.700000167 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.733333528 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.766666889 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.80000025 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.833333611 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.866666973 + -0.23745136 0.939348996 0.150293157 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.900000334 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 0.933333695 + -0.23745136 0.939348996 0.150293142 0.196602091 + 0.020829184 -0.0239574499 -0.0221176092 + 0.966667056 + -0.23745136 0.939348996 0.150293142 0.196602091 + 0.020829184 -0.0239574499 -0.0221176092 + 1.00000036 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 1.03333366 + -0.23745136 0.939348996 0.150293142 0.196602091 + 0.020829184 -0.0239574499 -0.0221176092 + 1.06666696 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 1.10000026 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 1.13333356 + -0.23745136 0.939348996 0.150293142 0.196602091 + 0.020829184 -0.0239574499 -0.0221176092 + 1.16666687 + -0.23745136 0.939348996 0.150293157 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 1.20000017 + -0.23745136 0.939348996 0.150293157 0.196602061 + 0.020829184 -0.0239574499 -0.0221176092 + 1.23333347 + -0.237451345 0.939348936 0.150293142 0.196602076 + 0.020829184 -0.0239574499 -0.0221176092 + 1.26666677 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.30000007 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.33333337 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.36666667 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.39999998 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.43333328 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.46666658 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.49999988 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.53333318 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.56666648 + -0.237451345 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.59999979 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.63333309 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.66666639 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.69999969 + -0.23745133 0.939348996 0.150293291 0.196601883 + 0.020829184 -0.0239574518 -0.022117611 + 1.73333299 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.76666629 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.79999959 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.8333329 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.8666662 + -0.23745133 0.939348996 0.150293276 0.196601883 + 0.020829184 -0.0239574499 -0.0221176092 + 1.8999995 + "C_Spine_sjnt_3" + 58 + -0.00259351614 -0.0134359291 -0.0138750523 0.9998101 + -1.09245947e-15 0.0489999987 1.06581404e-15 + 0 + -0.00473817624 -0.0206579175 -0.00608557835 0.999756873 + -9.05941971e-16 0.0489999987 -4.26325632e-16 + 0.0333333351 + -0.00852638949 -0.0241143592 0.000195229833 0.99967283 + -3.5527136e-17 0.0489999987 -8.8817842e-16 + 0.0666666701 + -0.0108419983 -0.0258280616 0.00530614331 0.999593556 + 4.4408921e-16 0.0489999987 1.13686835e-15 + 0.100000001 + -0.0113248499 -0.0242396705 0.00917606615 0.999599874 + 8.88178367e-17 0.0489999987 -1.27897687e-15 + 0.13333334 + -0.00996103324 -0.0188337471 0.0103300903 0.999719679 + -2.54019019e-15 0.0489999987 -1.98951967e-15 + 0.166666672 + -0.00656444207 -0.0103702247 0.0109922197 0.99986428 + 6.21724883e-16 0.0489999987 -7.10542693e-16 + 0.200000003 + -0.00296505122 0.00143064908 0.0119093806 0.999923646 + -1.06581408e-16 0.0489999987 6.39488435e-16 + 0.233333334 + -0.000162451426 0.013151003 0.0119481096 0.999842167 + -7.46069849e-16 0.0489999987 -1.13686835e-15 + 0.266666681 + -0.00170425314 0.0217084121 0.0101143308 0.999711752 + -1.03028694e-15 0.0489999987 -9.94759834e-16 + 0.300000012 + -0.00715898443 0.0279805027 0.00440553762 0.999573112 + -4.61852761e-16 0.0489999987 -1.13686835e-15 + 0.333333343 + -0.0122419782 0.0323678404 -0.00284392782 0.999397039 + -2.93098864e-16 0.0489999987 8.52651264e-16 + 0.366666675 + -0.0153976791 0.0341393985 -0.00773131335 0.999268532 + -7.1054272e-17 0.0489999987 -5.68434176e-16 + 0.400000006 + -0.0156466812 0.0329469107 -0.0108073419 0.999276161 + -2.48689959e-16 0.0489999987 -1.13686835e-15 + 0.433333337 + -0.0143572846 0.0281417016 -0.0122199664 0.999426186 + 1.20792266e-15 0.0490000062 1.56319401e-15 + 0.466666669 + -0.0113183716 0.0208315644 -0.0127949687 0.999637067 + -1.06581404e-15 0.0489999987 -1.42108539e-15 + 0.5 + -0.0071967151 0.0108272554 -0.0153627768 0.999797463 + 1.98951967e-15 0.0489999987 -8.52651264e-16 + 0.533333361 + -0.00378110865 0.00114579604 -0.0166318137 0.999853909 + -4.26325632e-16 0.0489999987 -5.68434176e-16 + 0.566666722 + -0.00149786926 -0.0072632283 -0.017034933 0.999827385 + -1.35003118e-15 0.0489999987 -1.98951967e-15 + 0.600000083 + -0.00206105667 -0.0142866336 -0.0134456353 0.99980545 + -7.10542693e-16 0.0489999987 1.42108539e-15 + 0.633333445 + -0.0048340694 -0.0205820818 -0.0067213513 0.999753892 + 5.595524e-16 0.0489999987 0 + 0.666666806 + -0.00853732321 -0.0240533203 0.000235005515 0.999674201 + -5.68434176e-16 0.0489999987 -5.68434176e-16 + 0.700000167 + -0.0108047677 -0.0258179996 0.00548775541 0.999593198 + -3.55271347e-16 0.0489999987 1.70530253e-15 + 0.733333528 + -0.0113151921 -0.0242526326 0.00919781718 0.999599516 + 7.81597005e-16 0.0489999987 5.68434176e-16 + 0.766666889 + -0.00997205637 -0.0188405607 0.0102808904 0.999719918 + -1.4921397e-15 0.0489999987 8.52651264e-16 + 0.80000025 + -0.00656890171 -0.0103694266 0.0109735355 0.999864459 + -4.97379917e-16 0.0489999987 -1.42108539e-15 + 0.833333611 + -0.00296387309 0.00143327471 0.0119193001 0.999923527 + -2.84217088e-16 0.0489999987 0 + 0.866666973 + -0.000161419026 0.0131521272 0.0119572068 0.999841988 + 4.26325632e-16 0.0489999987 -2.55795374e-15 + 0.900000334 + -0.00170408015 0.0217085276 0.0101136854 0.999711752 + -9.94759834e-16 0.0489999987 -1.13686835e-15 + 0.933333695 + -0.00715891132 0.0279799327 0.00439889263 0.999573171 + -7.28306298e-16 0.0489999987 -1.13686835e-15 + 0.966667056 + -0.0122417361 0.0323660597 -0.00284814532 0.999397099 + -7.1054272e-17 0.0489999987 5.68434176e-16 + 1.00000036 + -0.0153988693 0.0341381282 -0.00772286719 0.999268651 + 6.39488435e-16 0.0489999987 -5.68434176e-16 + 1.03333366 + -0.0156496074 0.0329497345 -0.0107927425 0.999276221 + -9.94759834e-16 0.0489999987 -1.13686835e-15 + 1.06666696 + -0.0143560134 0.028146673 -0.0122279059 0.999425948 + 8.52651264e-16 0.0490000062 1.13686835e-15 + 1.10000026 + -0.0113120619 0.020827176 -0.0128277401 0.999636829 + -2.84217088e-16 0.0489999987 -1.13686835e-15 + 1.13333356 + -0.00719534745 0.0108168144 -0.0153644783 0.999797523 + 1.98951967e-15 0.0489999987 0 + 1.16666687 + -0.00378311216 0.00115026382 -0.0165852234 0.999854684 + -1.42108544e-16 0.0489999987 -5.68434176e-16 + 1.20000017 + -0.00149292452 -0.00726002594 -0.0170315504 0.999827504 + -1.13686835e-15 0.0489999987 -2.2737367e-15 + 1.23333347 + -0.00206105667 -0.0142866336 -0.0134456353 0.99980545 + 1.42108544e-16 0.0489999987 1.13686835e-15 + 1.26666677 + -0.0048393989 -0.0205778684 -0.0067566717 0.999753714 + 3.73034925e-16 0.0489999987 0 + 1.30000007 + -0.00853861123 -0.0240461398 0.000239685309 0.99967438 + -1.13686835e-15 0.0489999987 5.68434176e-16 + 1.33333337 + -0.0107977865 -0.025816109 0.00552180735 0.999593139 + 2.84217088e-16 0.0489999987 1.13686835e-15 + 1.36666667 + -0.0113126161 -0.024256086 0.00920361932 0.999599457 + 2.84217088e-16 0.0489999987 -5.68434176e-16 + 1.39999998 + -0.00997599028 -0.0188429933 0.0102633163 0.999720037 + -1.13686835e-15 0.0489999987 5.68434176e-16 + 1.43333328 + -0.00657096272 -0.0103690578 0.0109649124 0.999864578 + 1.42108544e-16 0.0489999987 5.68434176e-16 + 1.46666658 + -0.0029631881 0.00143480569 0.0119250882 0.999923468 + -1.42108544e-16 0.0489999987 -5.68434176e-16 + 1.49999988 + -0.000160662312 0.0131529449 0.011963821 0.999841928 + 7.10542693e-16 0.0489999987 -5.68434176e-16 + 1.53333318 + -0.00170391705 0.0217086244 0.0101131033 0.999711752 + 0 0.0489999987 -2.84217077e-15 + 1.56666648 + -0.00715883123 0.0279792957 0.00439150957 0.999573231 + 1.4921397e-15 0.0489999987 1.13686835e-15 + 1.59999979 + -0.0122414092 0.0323635973 -0.00285394513 0.999397099 + -2.06057387e-15 0.0489999987 2.2737367e-15 + 1.63333309 + -0.0154009098 0.0341359563 -0.00770838652 0.99926883 + 1.27897687e-15 0.0489999987 -1.13686835e-15 + 1.66666639 + -0.0156559348 0.0329558365 -0.0107611073 0.999276221 + -7.10542693e-16 0.0489999987 0 + 1.69999969 + -0.0143524595 0.0281605888 -0.0122501403 0.999425352 + -2.84217088e-16 0.0490000062 0 + 1.73333299 + -0.0112884091 0.020810714 -0.0129506346 0.999635816 + -1.13686835e-15 0.0489999987 -1.13686835e-15 + 1.76666629 + -0.00718804868 0.0107611334 -0.015373555 0.999798059 + 1.70530253e-15 0.0489999987 -1.13686835e-15 + 1.79999959 + -0.00380012416 0.00118823221 -0.0161892008 0.999861062 + 4.26325632e-16 0.0489999987 -1.13686835e-15 + 1.8333329 + -0.00140397379 -0.00720238732 -0.0169706382 0.999829113 + -1.56319401e-15 0.0489999987 -2.2737367e-15 + 1.8666662 + -0.00259351637 -0.0134359291 -0.0138750523 0.9998101 + -1.06581404e-15 0.0489999987 0 + 1.8999995 + "L_Middle_sjnt_3" + 58 + -0.00157946558 3.28241981e-06 0.000260098779 0.999998748 + 5.85230282e-07 -0.0180757623 3.17049228e-07 + 0 + -0.0402503312 1.57424529e-06 0.00699131889 0.999165177 + 5.8530793e-07 -0.0180757623 3.17073358e-07 + 0.0333333351 + -0.0649144873 4.81200686e-07 0.0112844864 0.997827053 + 5.8535079e-07 -0.0180757623 3.17044709e-07 + 0.0666666701 + -0.0856571272 -4.39619157e-07 0.0148950564 0.996213377 + 5.85257908e-07 -0.0180757623 3.17046243e-07 + 0.100000001 + -0.108941175 -1.47436117e-06 0.0189480092 0.993867636 + 5.852134e-07 -0.0180757623 3.16933949e-07 + 0.13333334 + -0.131566033 -2.48161746e-06 0.0228862241 0.99104321 + 5.85215957e-07 -0.0180757623 3.17014667e-07 + 0.166666672 + -0.152757049 -3.42986391e-06 0.0265748687 0.987906456 + 5.85302701e-07 -0.0180757623 3.17050791e-07 + 0.200000003 + -0.171756685 -4.27906525e-06 0.0298820697 0.984686077 + 5.85351017e-07 -0.0180757623 3.1704181e-07 + 0.233333334 + -0.187821507 -4.99953148e-06 0.0326784253 0.981659472 + 5.85544115e-07 -0.0180757623 3.16962684e-07 + 0.266666681 + -0.200208843 -5.55554561e-06 0.0348346494 0.979133785 + 5.85374949e-07 -0.0180757623 3.17054202e-07 + 0.300000012 + -0.205610856 -2.37866007e-05 0.0357788689 0.9779796 + 5.84994609e-07 -0.0180757623 3.17008841e-07 + 0.333333343 + -0.211687565 7.45394209e-05 0.0368147232 0.976643801 + 5.84968632e-07 -0.0180757623 3.16921614e-07 + 0.366666675 + -0.218760625 0.000541733578 0.0379294381 0.975040972 + 5.8553718e-07 -0.0180757623 3.17217484e-07 + 0.400000006 + -0.208084926 0.00143989106 0.0358584374 0.977452159 + 5.85454359e-07 -0.0180757623 3.17209327e-07 + 0.433333337 + -0.154918835 0.00264324574 0.0264647081 0.987569153 + 5.85169403e-07 -0.0180757623 3.16907233e-07 + 0.466666669 + -0.0678223893 0.00402771588 0.0114224106 0.99762392 + 5.8505077e-07 -0.0180757623 3.17132276e-07 + 0.5 + 0.0117318844 0.00541848782 -0.00209648209 0.999914289 + 5.85371538e-07 -0.0180757623 3.17081458e-07 + 0.533333361 + 0.0609872043 0.00667022448 -0.0103291208 0.998062849 + 5.85467205e-07 -0.0180757623 3.17157031e-07 + 0.566666722 + 0.0847484693 0.00766787538 -0.0142236305 0.996271372 + 5.85389841e-07 -0.0180757623 3.17093537e-07 + 0.600000083 + 0.0815357566 0.00829664525 -0.0136430971 0.996542513 + 5.85228008e-07 -0.0180757623 3.17044339e-07 + 0.633333445 + 0.059249308 0.00842609163 -0.00994840823 0.998158097 + 5.85225735e-07 -0.0180757605 3.17054912e-07 + 0.666666806 + 0.0205979124 0.00775257125 -0.00356570771 0.999751449 + 5.85371708e-07 -0.0180757623 3.17053946e-07 + 0.700000167 + -0.0537878983 0.00629148539 0.00888051558 0.998493075 + 5.85321743e-07 -0.0180757623 3.17065087e-07 + 0.733333528 + -0.141349971 0.00439277757 0.0238550082 0.989662528 + 5.85501198e-07 -0.0180757623 3.17144327e-07 + 0.766666889 + -0.225635797 0.00247017294 0.0386162028 0.973442912 + 5.85243299e-07 -0.0180757623 3.170573e-07 + 0.80000025 + -0.291178972 0.000919220038 0.0503595509 0.955341816 + 5.85143027e-07 -0.0180757623 3.17021119e-07 + 0.833333611 + -0.324134797 0.000114882372 0.0563551039 0.944330812 + 5.85347948e-07 -0.0180757623 3.17024785e-07 + 0.866666973 + -0.306059986 -4.11761903e-05 0.0532636829 0.950521111 + 5.85328792e-07 -0.0180757623 3.17088848e-07 + 0.900000334 + -0.236247808 -8.77674847e-06 0.0411018841 0.970823169 + 5.85109262e-07 -0.0180757623 3.16953248e-07 + 0.933333695 + -0.137659326 -3.74808837e-06 0.0239407402 0.990190268 + 5.85436794e-07 -0.0180757623 3.17162289e-07 + 0.966667056 + -0.0450474657 9.42378051e-07 0.00782014523 0.998954237 + 5.85012856e-07 -0.0180757623 3.17267478e-07 + 1.00000036 + 0.0199144725 4.22135099e-06 -0.00348742842 0.999795616 + 5.85403882e-07 -0.0180757623 3.16956999e-07 + 1.03333366 + 0.0646561608 6.46328635e-06 -0.0112753147 0.997843921 + 5.85289399e-07 -0.0180757623 3.17306217e-07 + 1.06666696 + 0.10356918 8.41561632e-06 -0.0180486068 0.994458497 + 5.8514928e-07 -0.0180757623 3.16894642e-07 + 1.10000026 + 0.133981407 9.93546018e-06 -0.0233422089 0.990708947 + 5.85311909e-07 -0.0180757623 3.16891516e-07 + 1.13333356 + 0.154940844 1.09793291e-05 -0.026990436 0.987555027 + 5.85342775e-07 -0.0180757623 3.17070572e-07 + 1.16666687 + 0.165546998 1.15076109e-05 -0.0288365539 0.985780239 + 5.8528218e-07 -0.0180757623 3.17147283e-07 + 1.20000017 + 0.164540321 1.14583536e-05 -0.0286613293 0.985953867 + 5.85276439e-07 -0.0180757623 3.1705622e-07 + 1.23333347 + 0.144543961 1.0461019e-05 -0.0251807496 0.989177942 + 5.85577538e-07 -0.0180757623 3.16998722e-07 + 1.26666677 + 0.104860321 8.47955198e-06 -0.018273348 0.994319081 + 5.85346584e-07 -0.0180757623 3.17051388e-07 + 1.30000007 + 0.0542589463 5.95903293e-06 -0.00946554448 0.998482049 + 5.85132284e-07 -0.0180757623 3.17155809e-07 + 1.33333337 + 0.00145830098 3.24232178e-06 -0.000274877442 0.999998927 + 5.85293662e-07 -0.0180757623 3.17059204e-07 + 1.36666667 + -0.0447003432 9.63601451e-07 0.00775971962 0.99897033 + 5.85411328e-07 -0.0180757623 3.16629809e-07 + 1.39999998 + -0.0748681203 -5.60355602e-07 0.0130108921 0.997108579 + 5.85424289e-07 -0.0180757623 3.16654535e-07 + 1.43333328 + -0.0855475441 -1.10149119e-06 0.0148698166 0.996223152 + 5.85368923e-07 -0.0180757623 3.16892255e-07 + 1.46666658 + -0.081936501 -9.21476271e-07 0.0142412568 0.996535838 + 5.85366593e-07 -0.0180757623 3.17018277e-07 + 1.49999988 + -0.0688896701 -2.61060023e-07 0.0119702499 0.997552454 + 5.85159114e-07 -0.0180757623 3.17079582e-07 + 1.53333318 + -0.0500951 6.88249884e-07 0.00869876239 0.998706579 + 5.85194584e-07 -0.0180757623 3.17168457e-07 + 1.56666648 + -0.0293685142 1.73709907e-06 0.00509098358 0.999555707 + 5.85480336e-07 -0.0180757623 3.16828562e-07 + 1.59999979 + -0.0101421755 2.70243254e-06 0.0017443602 0.999947071 + 5.85162013e-07 -0.0180757623 3.17233486e-07 + 1.63333309 + -0.000343876047 3.19447486e-06 3.8824317e-05 0.99999994 + 5.85381827e-07 -0.0180757623 3.16987922e-07 + 1.66666639 + -0.00158051564 3.13932924e-06 0.000254076062 0.999998748 + 5.8546766e-07 -0.0180757623 3.16915646e-07 + 1.69999969 + -0.00158051646 3.13942473e-06 0.000254076527 0.999998748 + 5.85414057e-07 -0.0180757623 3.16867755e-07 + 1.73333299 + -0.0015805111 3.13489727e-06 0.00025407967 0.999998748 + 5.85086639e-07 -0.0180757623 3.17230985e-07 + 1.76666629 + -0.00158051332 3.136739e-06 0.000254078244 0.999998748 + 5.85316229e-07 -0.0180757623 3.17064661e-07 + 1.79999959 + -0.00158051285 3.13746409e-06 0.00025408002 0.999998748 + 5.85099258e-07 -0.0180757623 3.17110647e-07 + 1.8333329 + -0.00158051355 3.13876899e-06 0.000254077226 0.999998748 + 5.85414057e-07 -0.0180757623 3.17045703e-07 + 1.8666662 + -0.0015805125 3.12127531e-06 0.000254083745 0.999998748 + 5.85305031e-07 -0.0180757623 3.17031976e-07 + 1.8999995 + "R_Index_sjnt_0" + 58 + -0.0649042204 0.861415267 -0.157689884 -0.478419334 + -0.00134941039 0.0782186612 0.028039448 + 0 + -0.0542974211 0.867707551 -0.127514422 -0.47736302 + -0.00134941039 0.0782186612 0.028039448 + 0.0333333351 + -0.0420071855 0.874146521 -0.0945871919 -0.474506706 + -0.00134941039 0.0782186612 0.028039448 + 0.0666666701 + -0.0305831991 0.879409373 -0.06564904 -0.470525235 + -0.00134941039 0.0782186612 0.028039448 + 0.100000001 + -0.0231701043 0.88249594 -0.0478159115 -0.467309028 + -0.00134941039 0.0782186612 0.028039448 + 0.13333334 + -0.0223207939 0.882742524 -0.0438316055 -0.467275381 + -0.00134941039 0.0782186612 0.028039448 + 0.166666672 + -0.0273016915 0.880488098 -0.0501110666 -0.470621079 + -0.00134941039 0.0782186612 0.028039448 + 0.200000003 + -0.0360799357 0.876424909 -0.0637193024 -0.475938559 + -0.00134941039 0.0782186612 0.028039448 + 0.233333334 + -0.0465189852 0.871309459 -0.0822701827 -0.481546879 + -0.00134941004 0.0782186612 0.028039448 + 0.266666681 + -0.0566395894 0.86599791 -0.103213288 -0.485990435 + -0.00134941039 0.0782186612 0.028039448 + 0.300000012 + -0.064693287 0.861479163 -0.123896673 -0.488178253 + -0.00134941039 0.0782186612 0.028039448 + 0.333333343 + -0.069163695 0.858828783 -0.141637906 -0.487409741 + -0.00134941039 0.0782186612 0.0280394461 + 0.366666675 + -0.0687412098 0.859056652 -0.153719336 -0.483390868 + -0.00134941039 0.0782186612 0.028039448 + 0.400000006 + -0.0613443181 0.863649487 -0.158355117 -0.474626333 + -0.00134941039 0.0782186612 0.028039448 + 0.433333337 + -0.0446774252 0.873814464 -0.15665932 -0.458159506 + -0.00134941074 0.0782186612 0.028039448 + 0.466666669 + -0.0199559983 0.887599349 -0.152049661 -0.434338808 + -0.00134941039 0.0782186612 0.028039448 + 0.5 + 0.00911287218 0.901531518 -0.146687135 -0.406989902 + -0.00134941039 0.0782186612 0.028039448 + 0.533333361 + 0.0388691649 0.913257062 -0.141886532 -0.379893452 + -0.00134941004 0.0782186612 0.028039448 + 0.566666722 + 0.0654758289 0.921513557 -0.137861669 -0.357099354 + -0.00134941004 0.0782186612 0.028039448 + 0.600000083 + 0.0850293711 0.925925314 -0.133925617 -0.342777252 + -0.00134941039 0.0782186612 0.028039448 + 0.633333445 + 0.0935534835 0.926444769 -0.129143894 -0.34098357 + -0.00134941039 0.0782186612 0.028039448 + 0.666666806 + 0.0869188011 0.92019397 -0.120630965 -0.362127632 + -0.00134941051 0.0782186687 0.0280394498 + 0.700000167 + 0.0668658167 0.905606508 -0.109379277 -0.404279709 + -0.00134941039 0.0782186612 0.028039448 + 0.733333528 + 0.0385331213 0.884776771 -0.100198187 -0.453481704 + -0.00134941039 0.0782186612 0.028039448 + 0.766666889 + 0.00841498654 0.863345623 -0.0956042111 -0.495402306 + -0.00134941039 0.0782186612 0.028039448 + 0.80000025 + 0.0167383347 -0.850714087 0.0950973928 0.516683578 + -0.00134941039 0.0782186612 0.028039448 + 0.833333611 + 0.0258797035 -0.859898984 0.0913347229 0.501559436 + -0.00134941039 0.0782186612 0.028039448 + 0.866666973 + -0.0231430773 0.886737049 -0.085401617 -0.453727305 + -0.00134941004 0.0782186612 0.028039448 + 0.900000334 + -0.0309573542 0.912225962 -0.0883134827 -0.398856103 + -0.00134941004 0.0782186612 0.028039448 + 0.933333695 + -0.0881658196 0.923395991 -0.114824757 -0.355502367 + -0.00134941039 0.0782186612 0.028039448 + 0.966667056 + -0.197525024 0.913866282 -0.162003383 -0.315574527 + -0.00134941039 0.0782186612 0.0280394461 + 1.00000036 + -0.295398772 0.891416013 -0.201028258 -0.278755754 + -0.00134941039 0.0782186612 0.028039448 + 1.03333366 + -0.329792142 0.880425394 -0.214155301 -0.265001625 + -0.00134941039 0.0782186612 0.028039448 + 1.06666696 + -0.325486839 0.881862581 -0.212562248 -0.266822308 + -0.00134941004 0.0782186612 0.028039448 + 1.10000026 + -0.325907439 0.88171494 -0.21308741 -0.266377419 + -0.00134941039 0.0782186612 0.028039448 + 1.13333356 + -0.323274434 0.882639706 -0.209785834 -0.269129604 + -0.00134941039 0.0782186612 0.028039448 + 1.16666687 + -0.297241181 0.890723526 -0.176513016 -0.295131326 + -0.00134941074 0.0782186612 0.028039448 + 1.20000017 + -0.252034754 0.900108814 -0.115816578 -0.335959852 + -0.00134941004 0.0782186612 0.028039448 + 1.23333347 + -0.223364264 0.901124179 -0.0751062334 -0.363926917 + -0.00134941039 0.0782186612 0.028039448 + 1.26666677 + -0.223448634 0.894729018 -0.073676832 -0.379608333 + -0.00134941039 0.0782186612 0.028039448 + 1.30000007 + -0.236911297 0.884151161 -0.0911172703 -0.392233908 + -0.00134941039 0.0782186612 0.028039448 + 1.33333337 + -0.256802946 0.870955944 -0.120650895 -0.401162654 + -0.00134941039 0.0782186612 0.028039448 + 1.36666667 + -0.276811093 0.856950104 -0.155069634 -0.406159699 + -0.00134941039 0.0782186612 0.028039448 + 1.39999998 + -0.291519493 0.844466448 -0.186978713 -0.408572972 + -0.00134941051 0.0782186612 0.028039448 + 1.43333328 + -0.295922488 0.836389184 -0.208463341 -0.41161406 + -0.00134941039 0.0782186612 0.028039448 + 1.46666658 + -0.289797395 0.83341676 -0.218207747 -0.416916609 + -0.00134941039 0.0782186612 0.028039448 + 1.49999988 + -0.277189314 0.833680987 -0.221417457 -0.423221439 + -0.00134941039 0.0782186612 0.028039448 + 1.53333318 + -0.260353357 0.835907638 -0.220874161 -0.429754883 + -0.00134941039 0.0782186612 0.028039448 + 1.56666648 + -0.239907622 0.839545965 -0.217001989 -0.436482728 + -0.00134941051 0.0782186612 0.028039448 + 1.59999979 + -0.216618195 0.843984604 -0.210509568 -0.443229467 + -0.00134941039 0.0782186612 0.0280394461 + 1.63333309 + -0.191256925 0.848660111 -0.202117026 -0.449828327 + -0.00134941039 0.0782186612 0.028039448 + 1.66666639 + -0.164621964 0.853078067 -0.192551523 -0.456159353 + -0.00134941039 0.0782186612 0.028039448 + 1.69999969 + -0.137546748 0.856828332 -0.182541117 -0.462173998 + -0.00134941027 0.0782186612 0.028039448 + 1.73333299 + -0.110900223 0.859594166 -0.172808856 -0.467906177 + -0.00134941039 0.0782186612 0.028039448 + 1.76666629 + -0.0853541866 0.861148357 -0.164017409 -0.473536193 + -0.00134941039 0.0782186612 0.028039448 + 1.79999959 + -0.0638613552 0.861418426 -0.157360047 -0.47866255 + -0.00134941074 0.0782186612 0.028039448 + 1.8333329 + -0.0649042204 0.861415267 -0.157689884 -0.478419334 + -0.00134941074 0.0782186612 0.028039448 + 1.8666662 + -0.0649042204 0.861415267 -0.157689884 -0.478419334 + -0.00134941039 0.0782186612 0.028039448 + 1.8999995 + "C_Neck_sjnt_1" + 58 + -0.244530216 -0.00741068879 0.0203208085 0.969400406 + -4.70512487e-15 0.0540000014 -2.15122919e-10 + 0 + -0.235091567 0.00693078199 0.0103093069 0.971893847 + 1.1191048e-15 0.0540000014 -2.15122781e-10 + 0.0333333351 + -0.224379107 0.0193394069 -0.000325031171 0.974309981 + 3.01092472e-15 0.0540000014 -2.1512235e-10 + 0.0666666701 + -0.218417048 0.028872909 -0.0100321956 0.975376725 + 1.56319401e-15 0.0540000014 -2.15122919e-10 + 0.100000001 + -0.217328355 0.0336008444 -0.0187010821 0.975340784 + -7.46069849e-16 0.0540000014 -2.15124488e-10 + 0.13333334 + -0.220886618 0.0317963883 -0.0257446133 0.974441051 + -6.78568301e-15 0.0540000014 -2.15124488e-10 + 0.166666672 + -0.226078823 0.0253969114 -0.0295267645 0.97333014 + -4.08562065e-15 0.0540000014 -2.15123128e-10 + 0.200000003 + -0.233391583 0.0172950327 -0.031909842 0.971705198 + 2.70006236e-15 0.0540000014 -2.15122781e-10 + 0.233333334 + -0.240707546 0.0095232036 -0.0326659903 0.970001161 + -3.62376788e-15 0.0540000014 -2.15122781e-10 + 0.266666681 + -0.240157381 0.000980660319 -0.0279300883 0.970331609 + -3.0198065e-15 0.0540000014 -2.15122781e-10 + 0.300000012 + -0.231353775 -0.0106664123 -0.0180184562 0.972644329 + -2.67341703e-15 0.0540000014 -2.15123197e-10 + 0.333333343 + -0.222756132 -0.024601303 -0.00994700193 0.974512994 + -3.90798513e-15 0.0540000014 1.01769104e-09 + 0.366666675 + -0.218473449 -0.0341330394 0.000726421131 0.975245476 + -2.77111657e-15 0.0540000014 -2.15121504e-10 + 0.400000006 + -0.218106955 -0.0399702266 0.00862504821 0.975067854 + 4.26325632e-16 0.0540000014 -2.15123197e-10 + 0.433333337 + -0.220721275 -0.0414069146 0.0140077621 0.974356949 + -2.2737367e-15 0.0540000014 1.94568406e-09 + 0.466666669 + -0.224855825 -0.0377822183 0.019459229 0.973464787 + 1.13686835e-15 0.0540000014 -2.15123919e-10 + 0.5 + -0.231378958 -0.0312510915 0.0243113041 0.9720577 + 1.22923886e-14 0.0540000014 -2.15123058e-10 + 0.533333361 + -0.239486277 -0.0236847345 0.0270908177 0.970232725 + -1.13686835e-15 0.0540000014 -2.15122212e-10 + 0.566666722 + -0.24783431 -0.0170160234 0.0262512714 0.968297243 + -5.25801631e-15 0.0540000014 -2.15123058e-10 + 0.600000083 + -0.244403407 -0.00718305912 0.0201200414 0.969438255 + -3.71258564e-15 0.0540000014 -2.1512335e-10 + 0.633333445 + -0.23541531 0.00675590523 0.0107428776 0.97181201 + 5.64881444e-15 0.0540000014 -2.15122073e-10 + 0.666666806 + -0.224655896 0.0192354694 -0.000339413586 0.97424823 + -1.42108544e-16 0.0540000014 -2.1512335e-10 + 0.700000167 + -0.21829766 0.0289231148 -0.0101592783 0.975400627 + -3.41060506e-15 0.0540000014 -2.15122073e-10 + 0.733333528 + -0.2172153 0.0336378999 -0.0187208168 0.975364327 + 3.69482209e-15 0.0540000014 -2.15121643e-10 + 0.766666889 + -0.220900521 0.0317900442 -0.0257107876 0.974438965 + -3.12638802e-15 0.0540000014 -2.1512335e-10 + 0.80000025 + -0.226116866 0.025384035 -0.0295135975 0.973322034 + -9.37916364e-15 0.0540000014 -2.15124196e-10 + 0.833333611 + -0.233396202 0.017292887 -0.0319166295 0.971703947 + 5.25801631e-15 0.0540000014 -2.15121643e-10 + 0.866666973 + -0.240696281 0.00952674169 -0.0326717347 0.970003724 + -4.33431079e-15 0.0540000014 -2.15122489e-10 + 0.900000334 + -0.240152031 0.000983071048 -0.0279290881 0.970332921 + -3.65929499e-15 0.0540000014 -2.15122489e-10 + 0.933333695 + -0.231358752 -0.0106675914 -0.0180145167 0.972643197 + 0 0.0540000014 -2.15124196e-10 + 0.966667056 + -0.22276473 -0.0246048309 -0.00994621962 0.974510908 + -3.62376788e-15 0.0540000014 1.0176906e-09 + 1.00000036 + -0.218470529 -0.0341325253 0.000720677257 0.975246251 + -4.26325632e-16 0.0540000014 -2.1512192e-10 + 1.03333366 + -0.218088359 -0.0399622619 0.00862066541 0.975072384 + -2.2737367e-15 0.0540000014 -2.15123919e-10 + 1.06666696 + -0.220715076 -0.0414035954 0.0140167642 0.97435838 + -1.27897687e-15 0.0540000014 3.17849658e-09 + 1.10000026 + -0.224887103 -0.0377957895 0.0194735341 0.9734568 + 2.55795374e-15 0.0540000014 -2.15122212e-10 + 1.13333356 + -0.231407002 -0.0312629081 0.0243032612 0.972050846 + 9.52127205e-15 0.0540000014 -2.15122781e-10 + 1.16666687 + -0.239455119 -0.023671655 0.0270635318 0.970241427 + 8.52651264e-16 0.0540000014 -2.15123058e-10 + 1.20000017 + -0.247806832 -0.0170043483 0.0262584016 0.968304217 + -4.4764192e-15 0.0540000014 -2.15123058e-10 + 1.23333347 + -0.244403407 -0.00718305912 0.0201200414 0.969438255 + -7.63833401e-16 0.0540000014 -2.15124488e-10 + 1.26666677 + -0.235433266 0.00674616406 0.0107669607 0.97180748 + 4.19220195e-15 0.0540000014 -2.15122212e-10 + 1.30000007 + -0.22468847 0.0192232355 -0.000341104547 0.974240959 + -2.41584533e-15 0.0540000014 -2.15121643e-10 + 1.33333337 + -0.218275264 0.0289325174 -0.0101831062 0.975405097 + -5.68434176e-16 0.0540000014 -2.15123919e-10 + 1.36666667 + -0.217185184 0.0336477757 -0.0187260788 0.975370646 + 2.84217088e-16 0.0540000014 -2.15124488e-10 + 1.39999998 + -0.220905513 0.0317877792 -0.0256987084 0.97443825 + -1.42108539e-15 0.0540000014 -2.15123627e-10 + 1.43333328 + -0.226134434 0.0253780931 -0.0295075178 0.973318279 + -6.53699286e-15 0.0540000014 -2.1512335e-10 + 1.46666658 + -0.23339887 0.0172916371 -0.0319205895 0.971703172 + 5.25801631e-15 0.0540000014 -2.15123919e-10 + 1.49999988 + -0.24068813 0.00952931587 -0.0326759219 0.970005512 + -7.10542693e-16 0.0540000014 -2.15124765e-10 + 1.53333318 + -0.240147203 0.000985239632 -0.0279281903 0.970334113 + 5.25801631e-15 0.0540000014 -2.15122212e-10 + 1.56666648 + -0.23136425 -0.0106689027 -0.0180101395 0.972642004 + 5.79092328e-15 0.0540000014 -2.1512192e-10 + 1.59999979 + -0.222776547 -0.0246096905 -0.00994514301 0.974508107 + -1.15107924e-14 0.0540000014 1.01769326e-09 + 1.63333309 + -0.218465552 -0.0341316462 0.000710828579 0.975247383 + 2.2737367e-15 0.0540000014 -2.15122781e-10 + 1.66666639 + -0.218048051 -0.0399449915 0.00861116685 0.975082219 + -1.13686835e-15 0.0540000014 -2.15122212e-10 + 1.69999969 + -0.220697716 -0.0413943231 0.0140419714 0.974362314 + -6.53699286e-15 0.0540000051 -6.95189323e-11 + 1.73333299 + -0.225004211 -0.0378466807 0.0195271708 0.97342664 + 2.84217088e-16 0.0540000014 -2.1512335e-10 + 1.76666629 + -0.23155652 -0.0313259512 0.0242603663 0.972014308 + 6.82121011e-15 0.0540000014 -2.15124488e-10 + 1.79999959 + -0.239190191 -0.0235605612 0.0268315375 0.970315993 + 5.40012472e-15 0.0540000014 -2.15123919e-10 + 1.8333329 + -0.247312188 -0.0167946145 0.0263868608 0.968430936 + -4.68958182e-15 0.0540000014 -2.1512335e-10 + 1.8666662 + -0.244530216 -0.00741068879 0.0203208085 0.969400406 + -2.52242664e-15 0.0540000014 -2.15122781e-10 + 1.8999995 + "L_Index_sjnt_3" + 58 + -0.00156367733 -9.18600946e-08 0.000344704255 0.999998748 + -2.36545938e-09 -0.0194404367 -1.39797308e-07 + 0 + -0.0295156483 -1.50278811e-06 0.0073785428 0.99953711 + -2.4198572e-09 -0.0194404367 -1.3975847e-07 + 0.0333333351 + -0.0473526977 -2.40256281e-06 0.011867079 0.998807728 + -2.19223684e-09 -0.0194404367 -1.39740038e-07 + 0.0666666701 + -0.0623639449 -3.15900547e-06 0.0156445429 0.997930884 + -2.44642639e-09 -0.0194404367 -1.39766811e-07 + 0.100000001 + -0.0792296678 -4.0098812e-06 0.0198886842 0.996658027 + -2.45166865e-09 -0.0194404367 -1.39655924e-07 + 0.13333334 + -0.0956375077 -4.83430722e-06 0.0240176134 0.995126486 + -2.46241028e-09 -0.0194404367 -1.39739157e-07 + 0.166666672 + -0.111026824 -5.61460138e-06 0.0278902557 0.993426025 + -2.39916687e-09 -0.0194404367 -1.39771331e-07 + 0.200000003 + -0.124845229 -6.31075864e-06 0.0313675962 0.991680264 + -2.35034769e-09 -0.0194404367 -1.39772183e-07 + 0.233333334 + -0.136547282 -6.90327352e-06 0.0343123712 0.99003917 + -2.16661311e-09 -0.0194404367 -1.39942742e-07 + 0.266666681 + -0.145580694 -7.35957701e-06 0.0365855992 0.988669753 + -2.36073916e-09 -0.0194404367 -1.39816493e-07 + 0.300000012 + -0.14951615 -2.57296797e-05 0.0375788696 0.988044918 + -2.64913025e-09 -0.0194404367 -1.3965608e-07 + 0.333333343 + -0.153906301 7.37190785e-05 0.0386672057 0.987328589 + -2.71743406e-09 -0.0194404367 -1.39747414e-07 + 0.366666675 + -0.15910235 0.000548182812 0.0398929194 0.986455619 + -2.15592766e-09 -0.0194404367 -1.39719063e-07 + 0.400000006 + -0.151484638 0.00145956525 0.0378321558 0.987734318 + -2.29839081e-09 -0.0194404367 -1.39758583e-07 + 0.433333337 + -0.112851992 0.00266441866 0.0280194748 0.993213117 + -2.49483789e-09 -0.0194404386 -1.39789279e-07 + 0.466666669 + -0.0491368957 0.00403340952 0.0120695336 0.99871099 + -2.40789677e-09 -0.0194404367 -1.39705335e-07 + 0.5 + 0.00997176766 0.00541469734 -0.00256703561 0.999932349 + -2.35256792e-09 -0.0194404367 -1.39774869e-07 + 0.533333361 + 0.0480503775 0.00666838139 -0.0118891187 0.998751938 + -2.3644775e-09 -0.0194404367 -1.39799781e-07 + 0.566666722 + 0.0684441626 0.00766996946 -0.0168180373 0.99748373 + -2.33072872e-09 -0.0194404367 -1.39774684e-07 + 0.600000083 + 0.070794329 0.00829693116 -0.0173533242 0.997305453 + -2.43105136e-09 -0.0194404367 -1.39759536e-07 + 0.633333445 + 0.0603956766 0.00842132606 -0.0148239639 0.998028934 + -2.40016984e-09 -0.0194404367 -1.39774286e-07 + 0.666666806 + 0.0409546383 0.00774717564 -0.0101291593 0.999079704 + -2.40859577e-09 -0.0194404386 -1.39789947e-07 + 0.700000167 + 0.00155261031 0.00630655885 -0.000511933293 0.999978781 + -2.34294983e-09 -0.0194404367 -1.39720228e-07 + 0.733333528 + -0.0457301177 0.00444483478 0.0111979963 0.998881161 + -2.1194706e-09 -0.0194404367 -1.39686009e-07 + 0.766666889 + -0.0924009606 0.00253987941 0.0229476653 0.995454192 + -2.43282927e-09 -0.0194404367 -1.39729082e-07 + 0.80000025 + -0.130136192 0.000965905667 0.0325905345 0.990959942 + -2.56374877e-09 -0.0194404367 -1.39715695e-07 + 0.833333611 + -0.150795877 0.00013202065 0.0379122235 0.987837672 + -2.29313524e-09 -0.0194404367 -1.39881237e-07 + 0.866666973 + -0.145383924 -3.20200779e-05 0.0365768038 0.988699019 + -2.37796849e-09 -0.0194404367 -1.39796555e-07 + 0.900000334 + -0.11468669 -1.62198785e-06 0.0288474355 0.992982805 + -2.50510523e-09 -0.0194404367 -1.39683081e-07 + 0.933333695 + -0.0696400702 -9.90574108e-07 0.0175118763 0.997418463 + -2.26746311e-09 -0.0194404367 -1.39761354e-07 + 0.966667056 + -0.0248918235 -3.64783887e-07 0.00625143107 0.999670625 + -2.43528731e-09 -0.0194404367 -1.39712256e-07 + 1.00000036 + 0.0117330728 1.48649619e-07 -0.00296483631 0.999926805 + -2.41078357e-09 -0.0194404367 -1.39821253e-07 + 1.03333366 + 0.0448932387 6.22762116e-07 -0.0113092232 0.998927772 + -2.27327113e-09 -0.0194404367 -1.39672565e-07 + 1.06666696 + 0.0796527267 1.07038875e-06 -0.020056054 0.996620893 + -2.47366017e-09 -0.0194404386 -1.39750384e-07 + 1.10000026 + 0.111897111 1.53670214e-06 -0.028169971 0.993320465 + -2.46183163e-09 -0.0194404367 -1.39808918e-07 + 1.13333356 + 0.138492525 1.92898415e-06 -0.0348623693 0.98974973 + -2.34111974e-09 -0.0194404367 -1.39757603e-07 + 1.16666687 + 0.156380594 2.18625519e-06 -0.0393636748 0.986912191 + -2.35391795e-09 -0.0194404367 -1.39747925e-07 + 1.20000017 + 0.162372515 2.2719039e-06 -0.04087146 0.985882699 + -2.39170705e-09 -0.0194404367 -1.39771004e-07 + 1.23333347 + 0.150468826 2.09524001e-06 -0.0378760584 0.987888932 + -2.20782259e-09 -0.0194404367 -1.39857065e-07 + 1.26666677 + 0.122074641 1.69803752e-06 -0.0307310149 0.992045045 + -2.3752369e-09 -0.0194404367 -1.39772794e-07 + 1.30000007 + 0.084981069 1.18945127e-06 -0.0213968661 0.996152818 + -2.41568499e-09 -0.0194404367 -1.39656365e-07 + 1.33333337 + 0.0469175391 6.3759677e-07 -0.0118186241 0.998828888 + -2.40677123e-09 -0.0194404367 -1.3979232e-07 + 1.36666667 + 0.0157198198 2.04826947e-07 -0.00396805955 0.999868572 + -2.45009968e-09 -0.0194404367 -1.40068025e-07 + 1.39999998 + 0.000318665989 -9.12214571e-09 -9.25216809e-05 0.99999994 + -2.41511078e-09 -0.0194404367 -1.39805366e-07 + 1.43333328 + -0.0019716348 -3.98152906e-08 0.000483809796 0.999997973 + -2.47378806e-09 -0.0194404367 -1.39745126e-07 + 1.46666658 + -0.00155505154 -3.70475775e-08 0.000378978206 0.999998748 + -2.40972331e-09 -0.0194404367 -1.39716335e-07 + 1.49999988 + -0.00155505096 -3.62238559e-08 0.000378977478 0.999998748 + -2.54958876e-09 -0.0194404367 -1.39666938e-07 + 1.53333318 + -0.00155505282 -3.66266804e-08 0.000378978526 0.999998748 + -2.43815412e-09 -0.0194404367 -1.39714146e-07 + 1.56666648 + -0.00155505247 -3.64151909e-08 0.00037897838 0.999998748 + -2.48549825e-09 -0.0194404367 -1.39830476e-07 + 1.59999979 + -0.00155505131 -3.75986744e-08 0.000378977915 0.999998748 + -2.30564456e-09 -0.0194404367 -1.39679827e-07 + 1.63333309 + -0.00155505247 -2.85324777e-08 0.000378980796 0.999998748 + -2.42761278e-09 -0.0194404367 -1.39813679e-07 + 1.66666639 + -0.00155505375 -3.60874317e-08 0.00037897873 0.999998748 + -2.45978304e-09 -0.0194404367 -1.39861996e-07 + 1.69999969 + -0.00155505398 -3.51741285e-08 0.000378978672 0.999998748 + -2.51674637e-09 -0.0194404386 -1.39849547e-07 + 1.73333299 + -0.00155505131 -3.86710823e-08 0.000378977769 0.999998748 + -2.30991781e-09 -0.0194404367 -1.39666611e-07 + 1.76666629 + -0.00155505235 -3.61302632e-08 0.000378978468 0.999998748 + -2.37234743e-09 -0.0194404367 -1.39765376e-07 + 1.79999959 + -0.00155505317 -3.48200224e-08 0.000378978177 0.999998748 + -2.39653297e-09 -0.0194404367 -1.39736784e-07 + 1.8333329 + -0.00155505189 -3.56062522e-08 0.00037897873 0.999998748 + -2.4220117e-09 -0.0194404367 -1.39743562e-07 + 1.8666662 + -0.00155505189 -3.20936095e-08 0.00037897969 0.999998748 + -2.34479036e-09 -0.0194404367 -1.39797152e-07 + 1.8999995 + "L_Foot_sjnt_1" + 58 + -0.298482507 -0.0191555992 -0.044909399 0.953165472 + -1.58174808e-12 -0.133285969 0.00287161185 + 0 + -0.364931792 -0.0186689626 -0.0378347486 0.930077851 + 4.04671847e-13 -0.133285969 0.00287161185 + 0.0333333351 + -0.465877801 -0.00375067443 -0.0319862701 0.8842628 + 1.76266109e-12 -0.133285969 0.00287161185 + 0.0666666701 + -0.281830251 -0.00187923212 -0.0154475188 0.959338129 + 7.35074219e-13 -0.133285969 0.00287161185 + 0.100000001 + -0.264253438 -0.007134913 -0.0189788397 0.964240193 + -2.20526267e-12 -0.133285969 0.00287161185 + 0.13333334 + -0.25718528 -0.00926463492 -0.0204379335 0.966101587 + -1.79720681e-12 -0.133285969 0.00287161185 + 0.166666672 + -0.243537769 -0.0105505316 -0.0194511097 0.969639003 + 1.0100731e-12 -0.133285969 0.00287161185 + 0.200000003 + -0.232165635 -0.0174892396 -0.0273874346 0.972133338 + 2.9752199e-13 -0.133285969 0.00287161185 + 0.233333334 + -0.209568396 -0.0233705565 -0.0420058817 0.976611733 + -2.44753545e-12 -0.133285969 0.00287161185 + 0.266666681 + -0.180671513 -0.0267582815 -0.0558699779 0.981590748 + -9.76783108e-13 -0.133285969 0.00287161185 + 0.300000012 + -0.178719267 -0.0196699928 -0.051705014 0.982343733 + -1.36139982e-12 -0.133285969 0.00287161185 + 0.333333343 + -0.233359218 -0.0160328429 -0.0423560031 0.971335411 + 3.57136548e-13 -0.133285955 0.00287161488 + 0.366666675 + -0.322780311 -0.00986477919 -0.0251890309 0.946087241 + 1.15785604e-12 -0.133285969 0.00287161185 + 0.400000006 + -0.391953498 -0.00844802707 -0.0227994695 0.919663727 + 2.00021336e-12 -0.133285969 0.00287161185 + 0.433333337 + -0.403665453 -0.00253840303 -0.02125879 0.914656162 + -1.58458132e-12 -0.133285984 0.00287161255 + 0.466666669 + -0.37634328 -0.00419723615 -0.0165072884 0.926323712 + 4.40189205e-12 -0.133285969 0.00287161185 + 0.5 + -0.318993717 -0.00750555005 -0.0234130025 0.947437882 + 8.55378008e-12 -0.133285969 0.00287161185 + 0.533333361 + -0.266677499 -0.010080385 -0.0277325269 0.963334024 + -2.68968832e-12 -0.133285969 0.00287161185 + 0.566666722 + -0.272764325 -0.015590542 -0.0390076227 0.961163342 + -3.5146996e-12 -0.133285969 0.00287161185 + 0.600000083 + -0.298482656 -0.0191555936 -0.04490944 0.953165472 + -5.1329249e-12 -0.133285969 0.00287161185 + 0.633333445 + -0.364931881 -0.0186689645 -0.0378347859 0.930077851 + 1.92162735e-12 -0.133285969 0.00287161185 + 0.666666806 + -0.46587801 -0.00375067745 -0.0319863111 0.884262741 + -4.18420832e-13 -0.133285984 0.00287161255 + 0.700000167 + -0.28183046 -0.00187922968 -0.0154475654 0.959338009 + 1.22513555e-12 -0.133285969 0.00287161185 + 0.733333528 + -0.264253616 -0.00713491719 -0.0189788807 0.964240134 + -2.72047272e-12 -0.133285969 0.00287161185 + 0.766666889 + -0.257185459 -0.00926465821 -0.0204379652 0.966101527 + -1.17913231e-12 -0.133285969 0.00287161185 + 0.80000025 + -0.243537918 -0.0105505306 -0.0194511414 0.969638944 + 1.90363285e-12 -0.133285969 0.00287161185 + 0.833333611 + -0.232165664 -0.0174892247 -0.0273874775 0.972133338 + 1.19701579e-12 -0.133285969 0.00287161185 + 0.866666973 + -0.209568709 -0.0233705565 -0.0420059152 0.976611674 + -4.58516775e-12 -0.133285969 0.00287161185 + 0.900000334 + -0.180671647 -0.0267582741 -0.0558700189 0.981590748 + 2.42761367e-12 -0.133285969 0.00287161185 + 0.933333695 + -0.178719386 -0.0196699854 -0.05170504 0.982343674 + 5.58593157e-13 -0.133285969 0.00287161185 + 0.966667056 + -0.233359441 -0.0160328355 -0.0423560254 0.971335351 + -1.51914031e-13 -0.133285955 0.00287161488 + 1.00000036 + -0.32278043 -0.00986478012 -0.0251890477 0.946087182 + -3.41131556e-13 -0.133285969 0.00287161185 + 1.03333366 + -0.391953558 -0.0084480308 -0.0227994714 0.919663727 + 1.1549339e-12 -0.133285969 0.00287161185 + 1.06666696 + -0.403665513 -0.00253840094 -0.0212588143 0.914656162 + -2.34948064e-12 -0.133285969 0.00287161511 + 1.10000026 + -0.37634331 -0.00419723615 -0.0165073015 0.926323712 + 5.90529405e-12 -0.133285969 0.00287161185 + 1.13333356 + -0.318993717 -0.00750554912 -0.0234130174 0.947437882 + 4.95674595e-12 -0.133285969 0.00287161185 + 1.16666687 + -0.266677499 -0.010080385 -0.0277325287 0.963334024 + -1.75461414e-12 -0.133285969 0.00287161185 + 1.20000017 + -0.272764385 -0.0155905411 -0.0390076302 0.961163342 + -4.25401928e-13 -0.133285969 0.00287161185 + 1.23333347 + -0.298482656 -0.0191555936 -0.04490944 0.953165472 + -3.10123476e-12 -0.133285969 0.00287161185 + 1.26666677 + -0.364931881 -0.0186689645 -0.0378347859 0.930077851 + 2.54338759e-12 -0.133285969 0.00287161185 + 1.30000007 + -0.465878069 -0.00375067652 -0.0319863148 0.884262741 + 4.67821311e-13 -0.133285969 0.00287161185 + 1.33333337 + -0.281830519 -0.00187922921 -0.0154475737 0.959338009 + 1.19534601e-12 -0.133285969 0.00287161185 + 1.36666667 + -0.264253646 -0.00713491812 -0.0189788938 0.964240074 + -2.82525999e-12 -0.133285969 0.00287161185 + 1.39999998 + -0.257185549 -0.00926466566 -0.0204379745 0.966101468 + -4.07789362e-13 -0.133285969 0.00287161185 + 1.43333328 + -0.243537948 -0.0105505288 -0.0194511581 0.969638884 + 2.05590211e-12 -0.133285969 0.00287161185 + 1.46666658 + -0.232165664 -0.0174892172 -0.0273874998 0.972133338 + 1.605116e-12 -0.133285969 0.00287161185 + 1.49999988 + -0.209568948 -0.0233705584 -0.0420059413 0.976611614 + -1.91636919e-12 -0.133285969 0.00287161185 + 1.53333318 + -0.180671766 -0.0267582666 -0.0558700487 0.981590688 + 1.31805677e-12 -0.133285969 0.00287161185 + 1.56666648 + -0.178719535 -0.0196699835 -0.0517050773 0.982343674 + -7.53033161e-13 -0.133285969 0.00287161185 + 1.59999979 + -0.233359754 -0.0160328243 -0.0423560552 0.971335232 + -5.11271039e-13 -0.133285969 0.00287161511 + 1.63333309 + -0.322780639 -0.00986477826 -0.0251890775 0.946087122 + 1.25524482e-12 -0.133285969 0.00287161185 + 1.66666639 + -0.391953707 -0.00844804291 -0.022799477 0.919663608 + 8.07354184e-13 -0.133285969 0.00287161185 + 1.69999969 + -0.403665721 -0.00253839674 -0.0212588832 0.914656103 + -3.01199061e-12 -0.133285969 0.00287161185 + 1.73333299 + -0.376343548 -0.00419724081 -0.0165073499 0.926323652 + 5.86608062e-12 -0.133285969 0.00287161185 + 1.76666629 + -0.318994015 -0.00750554353 -0.0234131012 0.947437823 + 1.48247636e-12 -0.133285969 0.00287161185 + 1.79999959 + -0.266677618 -0.0100803813 -0.027732553 0.963334024 + 2.6775381e-12 -0.133285969 0.00287161185 + 1.8333329 + -0.272764474 -0.015590529 -0.0390077047 0.961163282 + 8.98410198e-13 -0.133285969 0.00287161185 + 1.8666662 + -0.298483014 -0.0191555917 -0.0449095033 0.953165352 + 1.32601482e-12 -0.133285969 0.00287161185 + 1.8999995 + "L_Pinky_sjnt_0" + 58 + 0.24387747 -0.469805926 0.426624596 0.73334682 + -0.00242854096 -0.0733879432 0.0260373093 + 0 + 0.217964366 -0.485337406 0.40452376 0.743841171 + -0.00242854096 -0.0733879432 0.0260373093 + 0.0333333351 + 0.197711378 -0.498752475 0.392756164 0.746926188 + -0.00242854096 -0.0733879432 0.0260373093 + 0.0666666701 + 0.179026932 -0.51094681 0.383919418 0.747989714 + -0.00242854096 -0.0733879432 0.0260373093 + 0.100000001 + 0.159411952 -0.521762848 0.372828424 0.750566661 + -0.00242854096 -0.0733879432 0.0260373093 + 0.13333334 + 0.141716272 -0.529710352 0.360809952 0.754413486 + -0.00242854096 -0.0733879432 0.0260373093 + 0.166666672 + 0.127474099 -0.533963084 0.347515851 0.760175407 + -0.00242854096 -0.0733879432 0.0260373093 + 0.200000003 + 0.119514197 -0.532566965 0.331598788 0.769500494 + -0.00242854096 -0.0733879432 0.0260373093 + 0.233333334 + 0.118790098 -0.525494039 0.313296258 0.782042444 + -0.00242854119 -0.0733879432 0.0260373093 + 0.266666681 + 0.123131283 -0.515439689 0.295410126 0.794917345 + -0.00242854096 -0.0733879432 0.0260373093 + 0.300000012 + 0.13016881 -0.506016374 0.283812135 0.804023802 + -0.00242854096 -0.0733879432 0.0260373093 + 0.333333343 + 0.133767083 -0.499966234 0.274071455 0.810570836 + -0.00242854049 -0.0733879432 0.0260373093 + 0.366666675 + 0.135943472 -0.495901018 0.264300764 0.815932989 + -0.00242854096 -0.0733879432 0.0260373093 + 0.400000006 + 0.148841381 -0.489878297 0.267679662 0.816218853 + -0.00242854096 -0.0733879432 0.0260373093 + 0.433333337 + 0.184219986 -0.477972806 0.303518057 0.803418875 + -0.00242854073 -0.0733879507 0.0260373112 + 0.466666669 + 0.234715968 -0.458544016 0.363686651 0.77613008 + -0.00242854096 -0.0733879432 0.0260373093 + 0.5 + 0.277337819 -0.438286632 0.417149007 0.746307731 + -0.00242854073 -0.0733879432 0.0260373093 + 0.533333361 + 0.301618248 -0.424936324 0.449771196 0.725369871 + -0.00242854096 -0.0733879432 0.0260373093 + 0.566666722 + 0.310617387 -0.419975102 0.466685146 0.713682592 + -0.00242854119 -0.0733879432 0.0260373093 + 0.600000083 + 0.303451657 -0.425038099 0.467956126 0.712935269 + -0.00242854096 -0.0733879432 0.0260373093 + 0.633333445 + 0.28294149 -0.437869787 0.45929715 0.719208121 + -0.00242854096 -0.0733879432 0.0260373093 + 0.666666806 + 0.242996722 -0.460824102 0.446402401 0.727542937 + -0.00242854119 -0.0733879507 0.0260373093 + 0.700000167 + 0.169591382 -0.493607551 0.416781962 0.74423331 + -0.00242854096 -0.0733879432 0.0260373093 + 0.733333528 + 0.0786291882 -0.52046454 0.381103635 0.760061979 + -0.00242854073 -0.0733879432 0.0260373093 + 0.766666889 + -0.0126038268 -0.533828437 0.346078575 0.771425962 + -0.00242854096 -0.0733879432 0.0260373093 + 0.80000025 + -0.0850487947 -0.535436153 0.318323493 0.777653575 + -0.00242854096 -0.0733879432 0.0260373093 + 0.833333611 + -0.120939255 -0.533571482 0.303913981 0.779943287 + -0.00242854096 -0.0733879432 0.0260373093 + 0.866666973 + -0.096867837 -0.536193252 0.310180187 0.779038966 + -0.00242854166 -0.0733879432 0.0260373093 + 0.900000334 + -0.012344351 -0.536955357 0.336857855 0.773339152 + -0.00242854096 -0.0733879432 0.0260373093 + 0.933333695 + 0.101447754 -0.520686984 0.374468654 0.760504186 + -0.00242854096 -0.0733879432 0.0260373093 + 0.966667056 + 0.200802311 -0.489212006 0.409736782 0.743280411 + -0.00242854049 -0.0733879432 0.0260373093 + 1.00000036 + 0.263940036 -0.459205061 0.435371459 0.727954745 + -0.00242854096 -0.0733879432 0.0260373093 + 1.03333366 + 0.302626967 -0.435034484 0.454949796 0.715669394 + -0.00242854096 -0.0733879432 0.0260373093 + 1.06666696 + 0.333028644 -0.411747783 0.473521858 0.703798771 + -0.00242854073 -0.0733879432 0.0260373093 + 1.10000026 + 0.353348464 -0.393752903 0.489427179 0.693227649 + -0.00242854096 -0.0733879432 0.0260373093 + 1.13333356 + 0.363643229 -0.384117812 0.501574337 0.684573114 + -0.00242854073 -0.0733879432 0.0260373093 + 1.16666687 + 0.363809764 -0.385377437 0.508879721 0.678356946 + -0.00242854096 -0.0733879432 0.0260373093 + 1.20000017 + 0.352722943 -0.399816185 0.510238826 0.674825847 + -0.00242854119 -0.0733879432 0.0260373093 + 1.23333347 + 0.319723397 -0.435986847 0.503189862 0.67416054 + -0.00242854096 -0.0733879432 0.0260373093 + 1.26666677 + 0.259847552 -0.488911867 0.48920697 0.673884988 + -0.00242854096 -0.0733879432 0.0260373093 + 1.30000007 + 0.182018548 -0.541007817 0.473142833 0.671055615 + -0.00242854096 -0.0733879432 0.0260373093 + 1.33333337 + 0.0992942378 -0.580239594 0.458772838 0.665575087 + -0.00242854096 -0.0733879432 0.0260373093 + 1.36666667 + 0.0279778857 -0.602529705 0.44786039 0.659997225 + -0.00242854096 -0.0733879432 0.0260373093 + 1.39999998 + -0.0143337455 -0.610493898 0.440360606 0.658159852 + -0.00242854096 -0.0733879432 0.0260373093 + 1.43333328 + -0.0193972904 -0.609213054 0.434606373 0.663023829 + -0.00242854096 -0.0733879432 0.0260373093 + 1.46666658 + 0.00505050272 -0.601135075 0.42941767 0.673952222 + -0.00242854096 -0.0733879432 0.0260373093 + 1.49999988 + 0.0495669134 -0.585308313 0.425401807 0.688469768 + -0.00242854166 -0.0733879432 0.0260373093 + 1.53333318 + 0.105611332 -0.560480833 0.423512995 0.703806996 + -0.00242854073 -0.0733879432 0.0260373093 + 1.56666648 + 0.164313421 -0.527642846 0.423889488 0.717573643 + -0.00242854119 -0.0733879432 0.0260373093 + 1.59999979 + 0.218945697 -0.489765853 0.425580204 0.728748083 + -0.00242854049 -0.0733879432 0.0260373093 + 1.63333309 + 0.247386947 -0.466864258 0.426811248 0.733941197 + -0.00242854096 -0.0733879432 0.0260373093 + 1.66666639 + 0.24387747 -0.469805956 0.426624626 0.733346879 + -0.00242854096 -0.0733879432 0.0260373093 + 1.69999969 + 0.24387747 -0.469805956 0.426624626 0.733346879 + -0.00242854096 -0.0733879432 0.0260373093 + 1.73333299 + 0.24387747 -0.469805926 0.426624596 0.73334682 + -0.00242854096 -0.0733879432 0.0260373093 + 1.76666629 + 0.24387747 -0.469805926 0.426624596 0.73334682 + -0.00242854073 -0.0733879432 0.0260373093 + 1.79999959 + 0.24387747 -0.469805956 0.426624626 0.733346879 + -0.00242854073 -0.0733879432 0.0260373093 + 1.8333329 + 0.24387747 -0.469805926 0.426624596 0.73334682 + -0.00242854166 -0.0733879432 0.0260373093 + 1.8666662 + 0.24387747 -0.469805926 0.426624596 0.73334682 + -0.00242854096 -0.0733879432 0.0260373093 + 1.8999995 + "L_Index_sjnt_2" + 58 + 0.152978912 0.00764089683 -0.0397736728 0.98739922 + 8.54202256e-08 -0.0204997063 3.77447975e-07 + 0 + 0.125368252 0.00767226284 -0.0325998031 0.991544902 + 8.53666791e-08 -0.0204997063 3.77476283e-07 + 0.0333333351 + 0.107681833 0.0076889582 -0.0280044675 0.993761182 + 8.55159641e-08 -0.0204997063 3.77470997e-07 + 0.0666666701 + 0.0927567035 0.00770099973 -0.0241265669 0.995366752 + 8.53536122e-08 -0.0204997063 3.77480433e-07 + 0.100000001 + 0.0759432614 0.00771232881 -0.0197580326 0.996886551 + 8.53492423e-08 -0.0204997063 3.77549128e-07 + 0.13333334 + 0.0595409647 0.00772111304 -0.0154963164 0.998075724 + 8.53409929e-08 -0.0204997063 3.77489215e-07 + 0.166666672 + 0.0441161729 0.00773384515 -0.0114882635 0.998930454 + 8.53732587e-08 -0.0204997063 3.77477505e-07 + 0.200000003 + 0.0302315634 0.00768389227 -0.0078825308 0.999482334 + 8.5401588e-08 -0.0204997063 3.77480262e-07 + 0.233333334 + 0.0184474308 0.00755548524 -0.00482268818 0.999789655 + 8.55104076e-08 -0.0204997063 3.77376836e-07 + 0.266666681 + 0.00933669973 0.00745812058 -0.00245473231 0.999925613 + 8.53937649e-08 -0.0204997063 3.77456416e-07 + 0.300000012 + 0.00536861597 0.00755070569 -0.00142201793 0.999956071 + 8.52407354e-08 -0.0204997063 3.77536708e-07 + 0.333333343 + 0.000950500835 0.00797194149 -0.00027277763 0.999967754 + 8.51870254e-08 -0.0204997063 3.77488703e-07 + 0.366666675 + -0.00431255857 0.00875603408 0.00108180323 0.99995178 + 8.55407336e-08 -0.0204997063 3.7749632e-07 + 0.400000006 + 0.00336398883 0.00981490687 -0.000923403655 0.99994576 + 8.54466862e-08 -0.0204997063 3.77473867e-07 + 0.433333337 + 0.0423826389 0.0110340649 -0.0109490361 0.998980582 + 8.53102975e-08 -0.0204997081 3.77469519e-07 + 0.466666669 + 0.106424987 0.0122695491 -0.0272448882 0.993871689 + 8.54053255e-08 -0.0204997063 3.77496747e-07 + 0.5 + 0.165449858 0.0134074735 -0.0420889631 0.985228419 + 8.54227267e-08 -0.0204997063 3.77468695e-07 + 0.533333361 + 0.203227475 0.0143995825 -0.051439926 0.977673352 + 8.53550688e-08 -0.0204997063 3.77467529e-07 + 0.566666722 + 0.223260701 0.0151805766 -0.0562992282 0.973013222 + 8.54201829e-08 -0.0204997063 3.77465284e-07 + 0.600000083 + 0.225132197 0.0156813711 -0.0566508174 0.972553492 + 8.53636237e-08 -0.0204997063 3.77474123e-07 + 0.633333445 + 0.213755444 0.015794754 -0.0537806079 0.975277841 + 8.54874713e-08 -0.0204997063 3.77446526e-07 + 0.666666806 + 0.192512214 0.0152807049 -0.0485694744 0.97997278 + 8.53449365e-08 -0.0204997063 3.77464659e-07 + 0.700000167 + 0.149584234 0.0141649218 -0.0379607528 0.987918496 + 8.54185416e-08 -0.0204997063 3.77490522e-07 + 0.733333528 + 0.0978292376 0.0126211606 -0.0250151921 0.994808733 + 8.55532534e-08 -0.0204997063 3.77463977e-07 + 0.766666889 + 0.0464992598 0.0108979 -0.011999663 0.998786807 + 8.53627071e-08 -0.0204997063 3.77502914e-07 + 0.80000025 + 0.00493780337 0.00927546714 -0.00131429569 0.999943972 + 8.52724966e-08 -0.0204997063 3.77502005e-07 + 0.833333611 + -0.0175863765 0.00805580709 0.00453589344 0.999802589 + 8.54421174e-08 -0.0204997063 3.77411254e-07 + 0.866666973 + -0.0104679503 0.00743930414 0.00269568549 0.999913931 + 8.53588347e-08 -0.0204997063 3.77465312e-07 + 0.900000334 + 0.025495341 0.00732352212 -0.00666293362 0.999625921 + 8.53160671e-08 -0.0204997063 3.77539067e-07 + 0.933333695 + 0.0772660002 0.00745865423 -0.0201240387 0.996779501 + 8.54657145e-08 -0.0204997063 3.77474066e-07 + 0.966667056 + 0.127546012 0.00760633312 -0.0331757888 0.991248488 + 8.53521342e-08 -0.0204997063 3.77488931e-07 + 1.00000036 + 0.166945845 0.00763050793 -0.0434025563 0.984980762 + 8.53721929e-08 -0.0204997063 3.77450419e-07 + 1.03333366 + 0.200339362 0.00756993983 -0.0520807542 0.978312016 + 8.54919975e-08 -0.0204997063 3.77505899e-07 + 1.06666696 + 0.2339347 0.0075090332 -0.0608095676 0.970319748 + 8.53147952e-08 -0.0204997081 3.77476539e-07 + 1.10000026 + 0.264290661 0.00744523806 -0.0686966926 0.961964548 + 8.53222275e-08 -0.0204997063 3.77462527e-07 + 1.13333356 + 0.28902933 0.00738694286 -0.0751242936 0.954339504 + 8.54324753e-08 -0.0204997063 3.77478614e-07 + 1.16666687 + 0.305859268 0.00734396745 -0.0794970244 0.948723614 + 8.54041531e-08 -0.0204997063 3.77480177e-07 + 1.20000017 + 0.312439561 0.00732642412 -0.081206724 0.946431935 + 8.54044444e-08 -0.0204997063 3.77466677e-07 + 1.23333347 + 0.305120856 0.00734591438 -0.079305172 0.948977411 + 8.54254907e-08 -0.0204997063 3.77413954e-07 + 1.26666677 + 0.285140902 0.00739648798 -0.0741139948 0.955587327 + 8.53841158e-08 -0.0204997063 3.77473469e-07 + 1.30000007 + 0.257332057 0.00746060442 -0.0668887049 0.963976443 + 8.54553832e-08 -0.0204997063 3.77539237e-07 + 1.33333337 + 0.22652249 0.00752333552 -0.0588837191 0.972195327 + 8.53659969e-08 -0.0204997063 3.77464261e-07 + 1.36666667 + 0.197711319 0.00757428026 -0.0513979308 0.97888267 + 8.5331628e-08 -0.0204997063 3.77352535e-07 + 1.39999998 + 0.176422596 0.00760721788 -0.045866631 0.983215868 + 8.53895443e-08 -0.0204997063 3.7746554e-07 + 1.43333328 + 0.16426152 0.00762426527 -0.0427068919 0.985462427 + 8.53368434e-08 -0.0204997063 3.77465369e-07 + 1.46666658 + 0.157954872 0.00763260061 -0.0410682783 0.986562431 + 8.53860271e-08 -0.0204997063 3.7747995e-07 + 1.49999988 + 0.155206352 0.00763612846 -0.0403541476 0.987028062 + 8.52038653e-08 -0.0204997063 3.77552936e-07 + 1.53333318 + 0.154656187 0.00763682602 -0.0402112044 0.987120152 + 8.53490931e-08 -0.0204997063 3.77492e-07 + 1.56666648 + 0.154839054 0.00763659459 -0.0402587131 0.987089574 + 8.52927045e-08 -0.0204997063 3.77484383e-07 + 1.59999979 + 0.154022127 0.00763762649 -0.0400464498 0.987226009 + 8.54865689e-08 -0.0204997063 3.77495667e-07 + 1.63333309 + 0.152850077 0.0076391031 -0.0397419296 0.98742044 + 8.53456896e-08 -0.0204997063 3.77455876e-07 + 1.66666639 + 0.152978495 0.00763894012 -0.039775297 0.98739922 + 8.53107167e-08 -0.0204997063 3.77442177e-07 + 1.69999969 + 0.152978495 0.00763894059 -0.039775297 0.98739922 + 8.52373745e-08 -0.0204997081 3.77455933e-07 + 1.73333299 + 0.152978495 0.00763893779 -0.0397753008 0.98739922 + 8.54965947e-08 -0.0204997063 3.77512748e-07 + 1.76666629 + 0.152978495 0.00763893966 -0.039775297 0.98739922 + 8.54053894e-08 -0.0204997063 3.77472986e-07 + 1.79999959 + 0.152978495 0.00763894012 -0.039775297 0.98739922 + 8.5377728e-08 -0.0204997063 3.77486742e-07 + 1.8333329 + 0.152978495 0.00763894012 -0.039775297 0.98739922 + 8.53400763e-08 -0.0204997063 3.77508428e-07 + 1.8666662 + 0.152978495 0.00763894105 -0.039775297 0.98739922 + 8.54482352e-08 -0.0204997063 3.77441012e-07 + 1.8999995 + "R_Index_sjnt_2" + 58 + 0.346175581 0.0072741136 -0.0899386108 0.933820426 + 8.13228929e-11 0.0204999987 -2.27075238e-12 + 0 + 0.318998784 0.00735355169 -0.0828795284 0.944095731 + 5.67738183e-11 0.0204999987 2.20884283e-11 + 0.0333333351 + 0.289085627 0.00743256463 -0.075109683 0.954323232 + -2.42057034e-11 0.0204999987 8.57070838e-12 + 0.0666666701 + 0.262531847 0.00749552716 -0.0682123825 0.962480128 + -3.90367183e-11 0.0204999987 -7.60500968e-11 + 0.100000001 + 0.245980248 0.00753143989 -0.0639131293 0.967136085 + -4.58759766e-11 0.0204999987 -6.34052116e-11 + 0.13333334 + 0.242758647 0.00753813563 -0.0630763248 0.968004584 + 1.33972833e-11 0.0204999987 1.01869086e-11 + 0.166666672 + 0.249970287 0.00752301421 -0.0649495348 0.966043413 + -1.52085983e-11 0.0204999987 -3.23959158e-11 + 0.200000003 + 0.264410228 0.00749129243 -0.0687002912 0.961931109 + 9.23904529e-12 0.0204999987 -2.02828674e-11 + 0.233333334 + 0.28320995 0.00744707091 -0.0735834762 0.956201971 + 5.51528927e-11 0.0204999987 4.72209633e-11 + 0.266666681 + 0.303502828 0.0073955683 -0.0788545012 0.949533224 + -3.05911373e-11 0.0204999987 -1.64732225e-12 + 0.300000012 + 0.322486162 0.00734377 -0.0837853551 0.942830205 + 2.03334589e-11 0.0204999987 -3.83147368e-11 + 0.333333343 + 0.337433845 0.00730047701 -0.0876679718 0.937229693 + -9.9670952e-11 0.0204999987 6.37118067e-11 + 0.366666675 + 0.345659643 0.00727568706 -0.0898045972 0.934024453 + -1.04032831e-10 0.0204999987 -1.55180258e-10 + 0.400000006 + 0.344460547 0.0072793453 -0.0894931406 0.934497178 + 3.17649552e-11 0.0204999987 5.70139491e-11 + 0.433333337 + 0.332618266 0.0073146685 -0.086417146 0.939065397 + -7.82645754e-11 0.0205000006 -2.55016633e-11 + 0.466666669 + 0.312539339 0.00737135252 -0.0812017024 0.946399093 + 5.87004889e-11 0.0204999987 3.46092564e-11 + 0.5 + 0.287774473 0.00743583031 -0.0747690946 0.954746127 + 1.41830006e-10 0.0204999987 -1.50741641e-11 + 0.533333361 + 0.261830062 0.00749710063 -0.0680300966 0.962684155 + -1.07443152e-10 0.0204999987 2.06151173e-11 + 0.566666722 + 0.238333195 0.00754718157 -0.0619268194 0.969177723 + 6.20985902e-11 0.0204999987 -3.7115911e-11 + 0.600000083 + 0.220999092 0.00758088939 -0.0574243031 0.973552465 + 3.47023382e-11 0.0204999987 -1.54460611e-11 + 0.633333445 + 0.213593245 0.00759446481 -0.0555006415 0.975315332 + -1.75487003e-11 0.0204999987 -5.41376709e-12 + 0.666666806 + 0.219840586 0.00758304447 -0.0571233854 0.973832428 + -6.10924614e-13 0.0204999987 5.03490565e-12 + 0.700000167 + 0.237168267 0.00754953222 -0.0616242327 0.96948272 + -1.27982954e-12 0.0204999987 -3.37308848e-12 + 0.733333528 + 0.260112345 0.00750093674 -0.0675839186 0.963181078 + 1.85018212e-12 0.0204999987 6.22549104e-12 + 0.766666889 + 0.283141255 0.00744723901 -0.0735656321 0.956223667 + 5.15079515e-12 0.0204999987 -5.14830843e-12 + 0.80000025 + 0.300869584 0.0074024722 -0.0781705156 0.950427353 + -9.00291716e-11 0.0204999987 -4.30421185e-11 + 0.833333611 + 0.307072967 0.00738609629 -0.0797818229 0.948307216 + 8.53665888e-11 0.0204999987 3.07602485e-11 + 0.866666973 + 0.304849625 0.00739200925 -0.0792043209 0.949072599 + 1.1942944e-11 0.0204999987 1.9315962e-11 + 0.900000334 + 0.305568129 0.00739010144 -0.0793909505 0.948825955 + -2.67082523e-10 0.0204999987 1.63174717e-11 + 0.933333695 + 0.324528903 0.00733798603 -0.0843159556 0.942081749 + 1.1339011e-10 0.0204999987 -4.26780399e-12 + 0.966667056 + 0.362145573 0.00722393487 -0.0940867513 0.927332819 + -6.13954373e-11 0.0204999987 4.10921054e-11 + 1.00000036 + 0.396018445 0.00710870326 -0.102885224 0.91243279 + 3.43027273e-11 0.0204999987 -8.02458534e-12 + 1.03333366 + 0.408094794 0.00706476625 -0.106022373 0.906734824 + -2.3575239e-11 0.0204999987 -8.12244091e-11 + 1.06666696 + 0.406581551 0.00707055489 -0.105629697 0.907460153 + 1.95035446e-11 0.0205000006 -6.88345344e-12 + 1.10000026 + 0.407386601 0.00706774695 -0.105839193 0.907074571 + 2.42653189e-11 0.0204999987 -3.33795908e-11 + 1.13333356 + 0.402363032 0.00708641298 -0.10453473 0.909464896 + 6.52750007e-11 0.0204999987 -1.20479616e-11 + 1.16666687 + 0.351977468 0.00725699496 -0.0914477631 0.931502342 + 4.66252453e-11 0.0204999987 -1.19391068e-11 + 1.20000017 + 0.260166734 0.00750152441 -0.0676006675 0.963165224 + 4.95100488e-11 0.0204999987 -3.59335652e-11 + 1.23333347 + 0.192655236 0.00763080176 -0.0500650965 0.979958773 + 6.0061324e-11 0.0204999987 -2.34859944e-11 + 1.26666677 + 0.170524195 0.00766436709 -0.0443169884 0.984326601 + -2.38257764e-11 0.0204999987 1.66778592e-12 + 1.30000007 + 0.165884107 0.00767091569 -0.0431121439 0.98517257 + 7.99337818e-11 0.0204999987 1.44632388e-11 + 1.33333337 + 0.173612311 0.00766010024 -0.0451199636 0.983750165 + 1.66627944e-11 0.0204999987 3.31965553e-12 + 1.36666667 + 0.188628465 0.00763747049 -0.0490204692 0.980794549 + -4.0738541e-11 0.0204999987 -3.39900885e-11 + 1.39999998 + 0.205823734 0.00760910381 -0.0534869172 0.977096677 + -5.67183626e-12 0.0204999987 -5.88755711e-11 + 1.43333328 + 0.219630733 0.00758442236 -0.0570732616 0.973882735 + -1.52101613e-11 0.0204999987 -2.61138663e-11 + 1.46666658 + 0.229411095 0.00756590115 -0.0596136898 0.971472859 + 9.33567893e-12 0.0204999987 4.54519972e-12 + 1.49999988 + 0.238926008 0.00754705397 -0.0620851628 0.969021618 + -2.20853735e-11 0.0204999987 -1.7215597e-11 + 1.53333318 + 0.249642044 0.00752483634 -0.064868629 0.966133714 + 7.33329855e-11 0.0204999987 1.91619168e-11 + 1.56666648 + 0.261144042 0.00749980938 -0.0678562373 0.962882698 + -5.87444052e-11 0.0204999987 2.17153222e-11 + 1.59999979 + 0.27323544 0.00747217564 -0.0709969401 0.959294498 + -1.11118927e-10 0.0204999987 4.09727356e-11 + 1.63333309 + 0.285721362 0.00744219357 -0.0742401034 0.955403805 + -2.35462483e-11 0.0204999987 -1.8143282e-11 + 1.66666639 + 0.298409104 0.00741020916 -0.0775357038 0.951254606 + 3.47029072e-11 0.0204999987 -7.20274326e-11 + 1.69999969 + 0.311108887 0.00737663591 -0.0808344185 0.946901619 + -2.37029091e-10 0.0205000006 1.60672461e-10 + 1.73333299 + 0.323634088 0.00734198047 -0.0840877742 0.942409813 + 7.8063063e-11 0.0204999987 -7.60462596e-11 + 1.76666629 + 0.335924089 0.00730646029 -0.0872800425 0.937807977 + 3.67447218e-11 0.0204999987 -4.19333882e-12 + 1.79999959 + 0.346694142 0.00727408472 -0.090077512 0.933614612 + 8.66157285e-11 0.0204999987 -2.43517207e-12 + 1.8333329 + 0.346174568 0.00727567216 -0.0899425447 0.933820426 + -3.56854372e-11 0.0204999987 -4.19504411e-13 + 1.8666662 + 0.346174568 0.00727567123 -0.0899425521 0.933820426 + 5.71361604e-11 0.0204999987 -2.399929e-12 + 1.8999995 + "R_Ring_sjnt_2" + 58 + 0.390499383 0.000843035814 -0.0258753952 0.920239091 + 1.58696511e-11 0.0234420039 1.04918743e-12 + 0 + 0.363566071 0.000854119076 -0.0240883939 0.931256592 + 6.99069205e-11 0.0234420039 6.62031124e-11 + 0.0333333351 + 0.333890826 0.000865362468 -0.0221195091 0.942351818 + -1.0394146e-10 0.0234420039 1.14740363e-10 + 0.0666666701 + 0.307521462 0.000874526391 -0.0203699805 0.951322734 + 4.08033433e-11 0.0234420039 -2.44474913e-10 + 0.100000001 + 0.291070104 0.000879859901 -0.0192784965 0.956507087 + 2.76460799e-11 0.0234420039 -2.00912564e-10 + 0.13333334 + 0.287885308 0.000880859268 -0.0190672018 0.957474709 + 4.57023204e-11 0.0234420039 -1.2574089e-10 + 0.166666672 + 0.295106947 0.000878578168 -0.0195463244 0.955263913 + 3.87215954e-11 0.0234420039 -1.55516669e-10 + 0.200000003 + 0.309529305 0.000873855141 -0.0205031913 0.950668454 + -1.06592773e-11 0.0234420039 -1.57105266e-11 + 0.233333334 + 0.328272194 0.000867378199 -0.0217467248 0.944332421 + 1.38067405e-10 0.0234420039 1.78600593e-10 + 0.266666681 + 0.348464191 0.000859966385 -0.02308641 0.937037408 + -8.56489601e-11 0.0234420039 -6.26360491e-11 + 0.300000012 + 0.36730507 0.000852630707 -0.024336474 0.929781675 + 1.19066215e-10 0.0234420039 2.50835793e-11 + 0.333333343 + 0.382079124 0.00084659172 -0.025316719 0.923782408 + -1.32968692e-10 0.0234420039 9.99307321e-12 + 0.366666675 + 0.390118569 0.000843199319 -0.0258501209 0.920401275 + 1.94834079e-10 0.0234420039 -1.07777391e-10 + 0.400000006 + 0.388698757 0.000843796472 -0.0257559307 0.921004474 + -3.58350849e-11 0.0234420039 7.29326599e-11 + 0.433333337 + 0.376516372 0.000848897442 -0.0249476302 0.92607367 + -5.0767994e-11 0.0234420057 -4.52706657e-11 + 0.466666669 + 0.355954409 0.00085709925 -0.0235833712 0.934205294 + 1.57376681e-11 0.0234420039 3.89380264e-11 + 0.5 + 0.330636978 0.000866534829 -0.021903621 0.943503499 + 1.14515043e-10 0.0234420039 3.51462852e-11 + 0.533333361 + 0.304148823 0.000875642581 -0.0201462172 0.952411115 + -6.43058246e-11 0.0234420039 7.04119402e-12 + 0.566666722 + 0.280214101 0.00088322279 -0.0185582489 0.959757745 + 6.85872678e-11 0.0234420039 -2.16124358e-11 + 0.600000083 + 0.262660444 0.000888394716 -0.0173936486 0.964731157 + 3.94855711e-11 0.0234420039 -8.69363262e-12 + 0.633333445 + 0.255366892 0.000890449213 -0.0169097614 0.966695964 + -8.40486795e-12 0.0234420039 -4.29452003e-12 + 0.666666806 + 0.262395054 0.000888469396 -0.0173760429 0.964803696 + 2.23991485e-12 0.0234420039 -1.21846708e-11 + 0.700000167 + 0.28111732 0.000882947177 -0.0186181758 0.959492385 + 1.19973007e-11 0.0234420039 -1.37065108e-11 + 0.733333528 + 0.305614233 0.000875160098 -0.0202434398 0.951939821 + -9.76626766e-12 0.0234420039 1.00065735e-12 + 0.766666889 + 0.329906374 0.000866796356 -0.0218551457 0.943760276 + 9.89999142e-12 0.0234420039 1.95967686e-13 + 0.80000025 + 0.348105341 0.000860099331 -0.0230626073 0.93717134 + -3.33953663e-11 0.0234420039 -1.35801769e-11 + 0.833333611 + 0.35463205 0.000857611652 -0.023495635 0.934710324 + 3.69044517e-11 0.0234420039 1.47971947e-11 + 0.866666973 + 0.352454692 0.000858447165 -0.023351172 0.9355371 + -2.17397649e-12 0.0234420039 1.55421266e-11 + 0.900000334 + 0.351043642 0.000858983723 -0.0232575536 0.936069846 + -1.68919448e-10 0.0234420039 -2.47672455e-11 + 0.933333695 + 0.36124596 0.00085503445 -0.023934463 0.932162941 + 8.18669568e-13 0.0234420039 2.11969114e-12 + 0.966667056 + 0.383237958 0.000846737355 -0.0253933407 0.923300207 + -1.91219554e-10 0.0234420039 2.17232812e-11 + 1.00000036 + 0.403224349 0.000839513843 -0.0267187972 0.914710641 + 9.58911492e-11 0.0234420039 -2.78458853e-11 + 1.03333366 + 0.410402 0.000837682688 -0.0271943957 0.911498785 + -2.12006055e-11 0.0234420039 1.40431659e-11 + 1.06666696 + 0.409502268 0.000839480083 -0.0271340758 0.91190511 + -2.67501715e-10 0.0234420057 1.71493181e-10 + 1.10000026 + 0.410083234 0.000840604247 -0.0271719936 0.911642849 + 1.08406079e-11 0.0234420039 1.70575724e-11 + 1.13333356 + 0.406461388 0.000843632792 -0.0269310847 0.913270593 + 4.17790594e-11 0.0234420039 2.00668631e-11 + 1.16666687 + 0.370268613 0.000860556262 -0.0245294496 0.928600371 + 4.25296777e-11 0.0234420039 4.43378651e-13 + 1.20000017 + 0.304741532 0.000886246504 -0.0201820694 0.952220857 + 1.0674947e-10 0.0234420039 -2.80806476e-12 + 1.23333347 + 0.256495327 0.000902565836 -0.0169813111 0.966395915 + 5.10740963e-11 0.0234420039 9.15861137e-12 + 1.26666677 + 0.239834487 0.00090860721 -0.0158758089 0.970683575 + -3.47671406e-11 0.0234420039 -2.96608953e-11 + 1.30000007 + 0.23500903 0.000911359035 -0.0155553818 0.971868277 + 5.2574476e-11 0.0234420039 1.56443317e-10 + 1.33333337 + 0.238768846 0.000911848852 -0.0158043969 0.970947385 + 1.97974259e-11 0.0234420039 3.29580981e-11 + 1.36666667 + 0.247895971 0.000910859089 -0.0164093878 0.968647242 + 3.85625733e-12 0.0234420039 -3.1056735e-10 + 1.39999998 + 0.259144485 0.000909168273 -0.0171550512 0.965685785 + 1.52352866e-10 0.0234420039 -2.40082648e-10 + 1.43333328 + 0.268962979 0.000907763373 -0.0178058464 0.962985516 + 4.79087707e-11 0.0234420039 -1.25913854e-11 + 1.46666658 + 0.276981324 0.000906800968 -0.0183372218 0.960699916 + 1.122612e-10 0.0234420039 1.22899455e-10 + 1.49999988 + 0.285586029 0.000905575813 -0.0189074669 0.958166182 + 1.81529462e-11 0.0234420039 -1.73173472e-11 + 1.53333318 + 0.295610338 0.000903798093 -0.0195718314 0.955107689 + 1.27294578e-10 0.0234420039 8.35609637e-11 + 1.56666648 + 0.306656599 0.000901551393 -0.020303946 0.951603234 + -1.08465202e-10 0.0234420039 -1.94222589e-11 + 1.59999979 + 0.318471491 0.00089888525 -0.021087002 0.947697461 + -1.92272864e-10 0.0234420039 -4.68276069e-12 + 1.63333309 + 0.33080402 0.000895295991 -0.0219045524 0.943444848 + 4.52783401e-11 0.0234420039 -6.04472895e-12 + 1.66666639 + 0.343406349 0.000890551601 -0.0227402952 0.93891114 + 9.04225306e-11 0.0234420039 -1.15942381e-10 + 1.69999969 + 0.356034905 0.000885608082 -0.0235777888 0.934174716 + -4.19528301e-10 0.0234420057 4.55559063e-10 + 1.73333299 + 0.368450463 0.000880565145 -0.02440116 0.929326653 + 1.33205724e-10 0.0234420039 -1.33553613e-10 + 1.76666629 + 0.380535722 0.000875478028 -0.0252026338 0.924422383 + 3.02009077e-11 0.0234420039 5.98902265e-12 + 1.79999959 + 0.391005635 0.000870926888 -0.0258969925 0.920023501 + -1.83719342e-11 0.0234420039 8.90167887e-12 + 1.8333329 + 0.390500158 0.000871149416 -0.0258634612 0.920239091 + 1.10657082e-11 0.0234420039 9.03582938e-12 + 1.8666662 + 0.390500158 0.000871149939 -0.0258634668 0.920239091 + -2.45620399e-11 0.0234420039 -1.66608064e-11 + 1.8999995 + "C_Spine_sjnt_1" + 58 + 0.0534108505 -0.0127410227 -0.0395376272 0.997708201 + -3.37507795e-16 0.0489999987 -2.2026825e-15 + 0 + 0.046852313 -0.0205574781 -0.0253769364 0.998367786 + -1.19348967e-16 0.0489999987 -1.42108544e-16 + 0.0333333351 + 0.0371952243 -0.0241684653 -0.0141691845 0.998915255 + 1.77635673e-16 0.0489999987 1.17239545e-15 + 0.0666666701 + 0.0280021839 -0.0259642024 -0.00419507548 0.999261796 + 9.76996256e-17 0.0489999987 -6.39488435e-16 + 0.100000001 + 0.0260980055 -0.0243362375 0.00402066018 0.999355078 + -6.21724896e-17 0.0489999987 -1.13686835e-15 + 0.13333334 + 0.0290577114 -0.0187501274 0.0104453117 0.999347329 + -6.57252039e-16 0.0489999987 -1.70530253e-15 + 0.166666672 + 0.0353791863 -0.0101050176 0.0165584311 0.999185681 + 3.46389571e-16 0.0489999987 -9.94759834e-16 + 0.200000003 + 0.0455836579 0.00182580168 0.0257380474 0.998627245 + -5.3290704e-17 0.0489999987 -1.27897687e-15 + 0.233333334 + 0.0509083681 0.0138667868 0.0351297893 0.997988939 + -8.88178367e-17 0.0489999987 -2.84217088e-16 + 0.266666681 + 0.0473068431 0.0226094872 0.0327804051 0.998086333 + 7.1054272e-17 0.0489999987 -5.68434176e-16 + 0.300000012 + 0.0377002917 0.0288348421 0.0193392746 0.998685777 + -1.95399251e-16 0.0489999987 0 + 0.333333343 + 0.0264258031 0.0330682322 0.00328463037 0.999098301 + -6.21724896e-17 0.0489999987 -1.42108544e-16 + 0.366666675 + 0.0163506661 0.0345886089 -0.0085369423 0.999231398 + 5.37347908e-16 0.0489999987 7.10542693e-16 + 0.400000006 + 0.0127091585 0.0331557505 -0.0156433638 0.999246955 + -5.24025244e-16 0.0489999987 1.27897687e-15 + 0.433333337 + 0.0182754286 0.0284277406 -0.019438589 0.999239743 + 9.23705523e-16 0.0490000062 -2.84217088e-16 + 0.466666669 + 0.0275054369 0.0211678967 -0.0246042404 0.999094605 + 4.97379917e-16 0.0489999987 0 + 0.5 + 0.038501583 0.0113336155 -0.032738518 0.998657763 + 3.5527136e-17 0.0489999987 1.98951967e-15 + 0.533333361 + 0.0482805111 0.00179072551 -0.0408989228 0.997994542 + -1.59872109e-16 0.0489999987 5.68434176e-16 + 0.566666722 + 0.05583217 -0.00627961196 -0.0456971861 0.997374117 + -1.26121332e-15 0.0489999987 -5.68434176e-16 + 0.600000083 + 0.0538346097 -0.0136837019 -0.0391869731 0.997686803 + -2.75335312e-16 0.0489999987 -2.84217077e-15 + 0.633333445 + 0.0468206406 -0.0204161964 -0.0260078516 0.998355985 + 2.26485493e-16 0.0489999987 1.42108539e-15 + 0.666666806 + 0.0371817537 -0.0241100527 -0.0141263912 0.998917758 + 8.88178367e-17 0.0489999987 0 + 0.700000167 + 0.0280188322 -0.0259630755 -0.00401016278 0.999262154 + -1.7763568e-17 0.0489999987 -1.98951967e-15 + 0.733333528 + 0.0261053834 -0.0243500043 0.00404280052 0.999354422 + 0 0.0489999987 -8.52651264e-16 + 0.766666889 + 0.0290517658 -0.0187545568 0.0103949755 0.999347925 + -4.97379917e-16 0.0489999987 -1.98951967e-15 + 0.80000025 + 0.0353758931 -0.0101031167 0.0165395904 0.999186158 + 2.84217088e-16 0.0489999987 -5.68434176e-16 + 0.833333611 + 0.0455845371 0.00182754407 0.0257481877 0.998626947 + -1.42108544e-16 0.0489999987 5.68434176e-16 + 0.866666973 + 0.0509095863 0.0138670318 0.0351389237 0.997988582 + 2.84217088e-16 0.0489999987 0 + 0.900000334 + 0.047306966 0.0226096753 0.0327797644 0.998086393 + 0 0.0489999987 -1.13686835e-15 + 0.933333695 + 0.0376997478 0.0288347341 0.0193326324 0.998685956 + -1.42108544e-16 0.0489999987 -1.13686835e-15 + 0.966667056 + 0.0264255628 0.0330666639 0.00328032882 0.999098361 + 0 0.0489999987 -1.13686835e-15 + 1.00000036 + 0.0163505282 0.034587115 -0.0085284505 0.999231577 + 5.77315952e-16 0.0489999987 0 + 1.03333366 + 0.012708189 0.0331583992 -0.0156284757 0.999247074 + -6.03961332e-16 0.0489999987 1.13686835e-15 + 1.06666696 + 0.018276019 0.0284329243 -0.0194464698 0.999239385 + 7.10542693e-16 0.0490000062 -5.68434176e-16 + 1.10000026 + 0.0275087953 0.0211650748 -0.024637606 0.999093771 + 4.97379917e-16 0.0489999987 -1.70530253e-15 + 1.13333356 + 0.0385020934 0.0113232788 -0.032741107 0.998657882 + 1.42108544e-16 0.0489999987 2.84217077e-15 + 1.16666687 + 0.0482789651 0.00179038988 -0.0408521406 0.997996569 + -7.1054272e-17 0.0489999987 1.13686835e-15 + 1.20000017 + 0.055837322 -0.00627742847 -0.0456933379 0.997373998 + -1.10134125e-15 0.0489999987 -5.68434176e-16 + 1.23333347 + 0.0538346097 -0.0136837019 -0.0391869731 0.997686803 + -3.5527136e-17 0.0489999987 -4.54747341e-15 + 1.26666677 + 0.0468188785 -0.0204083472 -0.0260429028 0.998355329 + 2.48689959e-16 0.0489999987 1.13686835e-15 + 1.30000007 + 0.0371801704 -0.0241031796 -0.0141213564 0.998917997 + -7.1054272e-17 0.0489999987 5.68434176e-16 + 1.33333337 + 0.028021954 -0.0259628613 -0.00397549197 0.999262214 + 1.42108544e-16 0.0489999987 0 + 1.36666667 + 0.0261073485 -0.02435367 0.00404870417 0.999354243 + -1.42108544e-16 0.0489999987 -5.68434176e-16 + 1.39999998 + 0.0290496442 -0.01875614 0.0103769992 0.999348164 + -1.42108544e-16 0.0489999987 -1.70530253e-15 + 1.43333328 + 0.0353743657 -0.0101022394 0.0165308937 0.999186337 + 2.84217088e-16 0.0489999987 -5.68434176e-16 + 1.46666658 + 0.0455850437 0.00182856002 0.0257541016 0.998626769 + -2.84217088e-16 0.0489999987 1.13686835e-15 + 1.49999988 + 0.0509104766 0.0138672106 0.0351455659 0.997988284 + 0 0.0489999987 -1.13686835e-15 + 1.53333318 + 0.0473070815 0.0226098429 0.0327791907 0.998086393 + 0 0.0489999987 1.13686835e-15 + 1.56666648 + 0.0376991369 0.0288346075 0.019325247 0.998686075 + 1.42108544e-16 0.0489999987 0 + 1.59999979 + 0.0264252275 0.0330645032 0.00327441376 0.99909848 + -2.13162816e-16 0.0489999987 0 + 1.63333309 + 0.0163502954 0.0345845558 -0.00851389207 0.999231756 + 6.57252039e-16 0.0489999987 0 + 1.66666639 + 0.0127060935 0.0331641287 -0.0155962128 0.999247432 + -3.19744217e-16 0.0489999987 1.13686835e-15 + 1.69999969 + 0.0182776656 0.0284474343 -0.0194685366 0.999238551 + 2.84217088e-16 0.0490000062 0 + 1.73333299 + 0.0275213867 0.0211544875 -0.0247627143 0.999090493 + 5.68434176e-16 0.0489999987 -3.41060506e-15 + 1.76666629 + 0.0385047793 0.0112681482 -0.0327548832 0.998657942 + 4.26325632e-16 0.0489999987 2.2737367e-15 + 1.79999959 + 0.0482658409 0.00178752793 -0.0404544696 0.998013377 + -7.1054272e-17 0.0489999987 0 + 1.8333329 + 0.0559300184 -0.00623812946 -0.0456239991 0.99737221 + -1.06581404e-15 0.0489999987 -3.41060506e-15 + 1.8666662 + 0.0534108505 -0.0127410227 -0.0395376272 0.997708201 + -2.13162816e-16 0.0489999987 0 + 1.8999995 + "R_Pinky_sjnt_2" + 58 + 0.150936618 0.0240188483 -0.000415931834 0.988251507 + -9.48148244e-13 0.0186204202 9.76711984e-13 + 0 + 0.115984611 0.0240094084 -0.00160613237 0.992959499 + 5.77906438e-11 0.0186204202 1.50196439e-10 + 0.0333333351 + 0.0777661428 0.024052605 -0.00291899638 0.99667716 + -1.26172489e-10 0.0186204202 4.14353191e-10 + 0.0666666701 + 0.0440676585 0.0241359286 -0.00408908026 0.998728573 + 5.94573973e-11 0.0186204202 -1.19985438e-10 + 0.100000001 + 0.0231897235 0.0242085792 -0.00481993891 0.999426305 + 4.74251749e-11 0.0186204202 -1.07439807e-10 + 0.13333334 + 0.0189674105 0.0242233668 -0.00497880299 0.999514222 + 5.59784025e-11 0.0186204202 -9.39031214e-11 + 0.166666672 + 0.0275721364 0.0241854023 -0.00470556226 0.999316156 + 5.30918955e-11 0.0186204202 -1.64071493e-10 + 0.200000003 + 0.0451404378 0.0241206232 -0.00413199607 0.99868089 + -4.04476452e-11 0.0186204202 2.14037371e-10 + 0.233333334 + 0.0683093816 0.0240563005 -0.00336875697 0.997368455 + 1.24373678e-10 0.0186204202 3.49560242e-10 + 0.266666681 + 0.0936690718 0.0240124334 -0.00252561411 0.995310605 + -6.58471333e-11 0.0186204202 -8.14175394e-11 + 0.300000012 + 0.117823809 0.0239962358 -0.00170795911 0.992743075 + 8.39682421e-11 0.0186204202 3.8095891e-11 + 0.333333343 + 0.137411818 0.024001617 -0.00101723545 0.990222692 + -8.63374788e-11 0.0186204202 -1.73827168e-11 + 0.366666675 + 0.14905116 0.0240149666 -0.000555601029 0.988537729 + 1.81935383e-10 0.0186204202 -1.06626886e-11 + 0.400000006 + 0.149649069 0.024014486 -0.00040636136 0.988447428 + -5.37012552e-11 0.0186204202 3.54327748e-11 + 0.433333337 + 0.138385743 0.0239826348 -0.000571164885 0.990087867 + -2.17502804e-11 0.0186204221 -2.94653538e-11 + 0.466666669 + 0.118314438 0.0239425302 -0.000956806005 0.992687047 + -6.05638196e-12 0.0186204202 2.23076314e-11 + 0.5 + 0.0931196064 0.0239412896 -0.00147923408 0.995365918 + 5.48853046e-11 0.0186204202 2.5453346e-11 + 0.533333361 + 0.0664250776 0.0240075681 -0.00205495162 0.99750042 + -1.99384675e-11 0.0186204202 -3.75166564e-12 + 0.566666722 + 0.0418935232 0.0241477713 -0.00259834691 0.998826861 + 4.72826396e-11 0.0186204202 5.66473084e-12 + 0.600000083 + 0.0232036058 0.0243475605 -0.00301933382 0.999429703 + 1.3299228e-11 0.0186204202 7.75685245e-12 + 0.633333445 + 0.0140790474 0.0245784074 -0.00322059821 0.999593616 + -3.59761981e-12 0.0186204184 -2.13532295e-12 + 0.666666806 + 0.0170258582 0.0249255411 -0.00314486772 0.999539375 + 1.3035119e-11 0.0186204221 -1.20496677e-11 + 0.700000167 + 0.0293195117 0.0254113954 -0.00285315933 0.999242961 + 1.46864916e-11 0.0186204202 -1.10730977e-12 + 0.733333528 + 0.0470051095 0.0259231906 -0.00242211763 0.998555303 + -1.02092198e-11 0.0186204202 -6.02682314e-12 + 0.766666889 + 0.066070959 0.0263320096 -0.00194242725 0.997465551 + 6.52860882e-12 0.0186204202 3.84346764e-12 + 0.80000025 + 0.0830075219 0.0264389925 -0.00145460211 0.996197104 + -4.20291718e-11 0.0186204202 1.7755325e-11 + 0.833333611 + 0.087667346 0.0266619697 -0.00181289506 0.995791316 + 4.81841754e-11 0.0186204202 -2.46015465e-11 + 0.866666973 + 0.0841405317 0.0268712491 -0.00277690752 0.99608773 + 1.02258462e-11 0.0186204202 1.21531225e-12 + 0.900000334 + 0.0945801884 0.0258914456 -0.00238508848 0.995177686 + -1.65789507e-10 0.0186204202 -1.21580676e-10 + 0.933333695 + 0.158099726 0.0210255869 0.00253332802 0.987196028 + -3.41972839e-11 0.0186204202 -1.73974966e-11 + 0.966667056 + 0.276307315 0.0115038631 0.0104807671 0.960943341 + -1.63244779e-10 0.0186204202 -1.63038298e-11 + 1.00000036 + 0.380957663 0.00249744672 0.0156259369 0.924457073 + 8.38565467e-11 0.0186204202 -1.64305895e-11 + 1.03333366 + 0.417576015 -0.000750681269 0.0169584006 0.908483446 + -2.4479618e-11 0.0186204202 1.73457689e-11 + 1.06666696 + 0.413007408 -0.0003432745 0.0168067459 0.910572529 + -2.24704297e-10 0.0186204221 1.19393911e-10 + 1.10000026 + 0.413580388 -0.00033813811 0.0168274548 0.910312057 + 3.52116556e-12 0.0186204202 2.02231825e-11 + 1.13333356 + 0.410015404 -0.000362108869 0.0166806374 0.911925972 + 2.66643947e-11 0.0186204202 2.28800433e-11 + 1.16666687 + 0.374296367 -0.000580992084 0.0151798083 0.927184701 + 3.22187069e-11 0.0186204202 4.38035372e-12 + 1.20000017 + 0.309037179 -0.000961549988 0.0124837263 0.95096755 + 9.49312087e-11 0.0186204202 1.23770846e-11 + 1.23333347 + 0.259361327 -0.00120273372 0.0104706893 0.965722859 + 3.23524298e-11 0.0186204202 1.17427136e-11 + 1.26666677 + 0.240148142 -0.0013640878 0.00973426737 0.970686495 + -2.96807891e-11 0.0186204202 -4.1916335e-11 + 1.30000007 + 0.232740372 -0.00161047024 0.00951406173 0.972491026 + 4.80986258e-11 0.0186204202 1.76759871e-10 + 1.33333337 + 0.233196199 -0.00180846825 0.00961431116 0.972380519 + 1.57638173e-11 0.0186204202 -8.83582582e-11 + 1.36666667 + 0.237591133 -0.00182250049 0.00984256994 0.971313715 + 1.12004269e-11 0.0186204202 -1.86248308e-10 + 1.39999998 + 0.241973281 -0.001515568 0.0100118136 0.970230103 + 1.1969177e-10 0.0186204202 -5.78075365e-10 + 1.43333328 + 0.242009968 -0.000738186238 0.0099155996 0.970222831 + 6.38010521e-12 0.0186204202 3.86562227e-10 + 1.46666658 + 0.237068832 0.000549878576 0.00950798392 0.971446157 + 6.5441555e-11 0.0186204202 6.01897587e-10 + 1.49999988 + 0.230088055 0.00224259053 0.00891576428 0.973126352 + 1.42165394e-11 0.0186204202 5.1256846e-11 + 1.53333318 + 0.222453788 0.00424738741 0.00820403732 0.974899471 + 1.04856783e-10 0.0186204202 1.4768943e-10 + 1.56666648 + 0.214153364 0.00650549494 0.00737261958 0.976750553 + -1.24311436e-10 0.0186204202 -9.20323331e-11 + 1.59999979 + 0.205335543 0.00895481836 0.0064313449 0.978629529 + -1.71802975e-10 0.0186204202 -6.65295388e-11 + 1.63333309 + 0.196149841 0.011533672 0.00539304642 0.980491281 + 1.85320908e-11 0.0186204202 8.66862138e-12 + 1.66666639 + 0.186746672 0.0141810114 0.00427406933 0.982296467 + 9.20354626e-11 0.0186204202 -5.68559227e-11 + 1.69999969 + 0.177277252 0.0168366265 0.00309457816 0.984012067 + -3.88524768e-10 0.0186204221 2.23906227e-10 + 1.73333299 + 0.167893246 0.0194413196 0.00187868625 0.985611677 + 1.20726887e-10 0.0186204202 -6.14897994e-11 + 1.76666629 + 0.158655226 0.021960808 0.000642234052 0.987089634 + 1.99960933e-11 0.0186204202 8.32301329e-12 + 1.79999959 + 0.150544256 0.0241232887 -0.000470629631 0.988308847 + -2.3032385e-11 0.0186204202 -5.92081028e-12 + 1.8333329 + 0.150936633 0.0240188483 -0.000415931601 0.988251507 + 1.35088381e-11 0.0186204202 1.7587353e-12 + 1.8666662 + 0.150936633 0.0240188483 -0.000415931252 0.988251507 + -4.04156708e-11 0.0186204202 -3.65918129e-11 + 1.8999995 + "L_Ring_sjnt_1" + 58 + 0.419087231 0.00443104515 -0.0302247014 0.90743202 + 3.12656795e-07 -0.0443952158 -5.95938332e-07 + 0 + 0.383236021 0.00450729486 -0.0276402328 0.92322582 + 3.12669272e-07 -0.0443952158 -5.9591224e-07 + 0.0333333351 + 0.360031039 0.00455235597 -0.0259674061 0.932567775 + 3.12799642e-07 -0.0443952158 -5.95934807e-07 + 0.0666666701 + 0.340310216 0.00458809081 -0.0245457459 0.939981639 + 3.12612741e-07 -0.0443952158 -5.95924462e-07 + 0.100000001 + 0.31794852 0.00462583872 -0.0229336917 0.947819293 + 3.12543932e-07 -0.0443952158 -5.95915026e-07 + 0.13333334 + 0.295990705 0.00466010394 -0.0213507488 0.954940856 + 3.12579346e-07 -0.0443952158 -5.95912638e-07 + 0.166666672 + 0.275217801 0.00469617266 -0.0198514555 0.961165488 + 3.12626014e-07 -0.0443952158 -5.95930089e-07 + 0.200000003 + 0.256420493 0.00466948748 -0.0185102616 0.966376841 + 3.12653924e-07 -0.0443952158 -5.95923098e-07 + 0.233333334 + 0.240395799 0.00456344429 -0.0173855536 0.970508516 + 3.12788501e-07 -0.0443952158 -5.95974313e-07 + 0.266666681 + 0.227962255 0.00448305206 -0.0165091921 0.973519683 + 3.12660148e-07 -0.0443952158 -5.95927929e-07 + 0.300000012 + 0.22253336 0.0045799776 -0.0160953887 0.974781454 + 3.12494137e-07 -0.0443952158 -5.95976246e-07 + 0.333333343 + 0.216436327 0.00499824109 -0.015562946 0.97615993 + 3.12430018e-07 -0.0443952158 -5.96032635e-07 + 0.366666675 + 0.20923835 0.00577526586 -0.0148887224 0.977734268 + 3.12861886e-07 -0.0443952158 -5.95798952e-07 + 0.400000006 + 0.219963655 0.00679962756 -0.015439352 0.975362182 + 3.12804985e-07 -0.0443952158 -5.95798213e-07 + 0.433333337 + 0.27322495 0.00789547246 -0.0188588817 0.961732924 + 3.12501356e-07 -0.0443952233 -5.96055031e-07 + 0.466666669 + 0.3582654 0.00888489652 -0.024266718 0.93326205 + 3.12658102e-07 -0.0443952158 -5.95859433e-07 + 0.5 + 0.433463484 0.00972094573 -0.0288081188 0.900658131 + 3.12780202e-07 -0.0443952158 -5.95887172e-07 + 0.533333361 + 0.478738487 0.0104576889 -0.031278789 0.877337873 + 3.12616919e-07 -0.0443952158 -5.95922131e-07 + 0.566666722 + 0.499996781 0.011073919 -0.0322329849 0.865356386 + 3.12742941e-07 -0.0443952158 -5.95911445e-07 + 0.600000083 + 0.496220291 0.0115547059 -0.0317355208 0.867539525 + 3.12608961e-07 -0.0443952158 -5.95934921e-07 + 0.633333445 + 0.473707944 0.0117806476 -0.0302681867 0.880082846 + 3.12789723e-07 -0.0443952158 -5.95936683e-07 + 0.666666806 + 0.433851898 0.0115038455 -0.027989462 0.900475919 + 3.12637695e-07 -0.0443952158 -5.95928213e-07 + 0.700000167 + 0.355120122 0.0107532283 -0.0233685654 0.93446666 + 3.12678225e-07 -0.0443952158 -5.95919857e-07 + 0.733333528 + 0.258815676 0.00950347632 -0.0174582116 0.965722203 + 3.12830849e-07 -0.0443952158 -5.95850622e-07 + 0.766666889 + 0.16252026 0.00794584118 -0.011242656 0.986609161 + 3.1263167e-07 -0.0443952158 -5.95934296e-07 + 0.80000025 + 0.0853720605 0.0063893795 -0.00603022333 0.996310413 + 3.12558939e-07 -0.0443952158 -5.95981874e-07 + 0.833333611 + 0.0461882465 0.00518762786 -0.00331083662 0.998913825 + 3.12712189e-07 -0.0443952158 -5.95923382e-07 + 0.866666973 + 0.0695485696 0.00456509739 -0.00503061013 0.997555435 + 3.1255837e-07 -0.0443952158 -5.95927645e-07 + 0.900000334 + 0.155000553 0.00440956699 -0.0112343691 0.987840652 + 3.12494592e-07 -0.0443952158 -5.96000064e-07 + 0.933333695 + 0.27044037 0.00444873795 -0.0195617899 0.962527752 + 3.12772301e-07 -0.0443952158 -5.95840504e-07 + 0.966667056 + 0.373243123 0.00446418812 -0.0269276462 0.927331924 + 3.12585172e-07 -0.0443952158 -5.95842664e-07 + 1.00000036 + 0.440660089 0.00438505737 -0.031759657 0.897101343 + 3.12692578e-07 -0.0443952158 -5.96007737e-07 + 1.03333366 + 0.482428402 0.00427002879 -0.0347750969 0.875234485 + 3.1282454e-07 -0.0443952158 -5.95748929e-07 + 1.06666696 + 0.515415907 0.00417696266 -0.037153285 0.856124222 + 3.12536457e-07 -0.0443952233 -5.95975905e-07 + 1.10000026 + 0.539261937 0.00410442194 -0.0388724357 0.841230452 + 3.12575906e-07 -0.0443952158 -5.9600228e-07 + 1.13333356 + 0.555059373 0.00405380409 -0.0400113352 0.830838025 + 3.12764996e-07 -0.0443952158 -5.95891606e-07 + 1.16666687 + 0.563780129 0.00402494939 -0.0406400524 0.824914694 + 3.12659438e-07 -0.0443952158 -5.95889276e-07 + 1.20000017 + 0.565987527 0.00401754351 -0.0407991819 0.823393881 + 3.12697694e-07 -0.0443952158 -5.95936569e-07 + 1.23333347 + 0.557074606 0.00404719682 -0.0401566215 0.829481184 + 3.12725888e-07 -0.0443952158 -5.95973916e-07 + 1.26666677 + 0.535335302 0.0041166814 -0.0385893509 0.843747556 + 3.12662706e-07 -0.0443952158 -5.95922813e-07 + 1.30000007 + 0.505623758 0.00420544669 -0.036447335 0.861973703 + 3.12771959e-07 -0.0443952158 -5.95863298e-07 + 1.33333337 + 0.472885251 0.00429544365 -0.0340870991 0.880453944 + 3.12628316e-07 -0.0443952158 -5.95920255e-07 + 1.36666667 + 0.442500204 0.00437207194 -0.031896539 0.896190345 + 3.12579061e-07 -0.0443952158 -5.96058271e-07 + 1.39999998 + 0.420625806 0.00442331983 -0.0303195436 0.906716645 + 3.12683795e-07 -0.0443952158 -5.96087261e-07 + 1.43333328 + 0.409444988 0.00444829417 -0.029513482 0.911846519 + 3.12630419e-07 -0.0443952158 -5.96064922e-07 + 1.46666658 + 0.405592561 0.00445670867 -0.0292357504 0.913575411 + 3.12719948e-07 -0.0443952158 -5.95975848e-07 + 1.49999988 + 0.406372279 0.0044550146 -0.0292919595 0.913227141 + 3.12357116e-07 -0.0443952158 -5.95918721e-07 + 1.53333318 + 0.409987628 0.00444709975 -0.0295526031 0.911601365 + 3.12662195e-07 -0.0443952158 -5.9591008e-07 + 1.56666648 + 0.414539337 0.00443701632 -0.0298807509 0.909529865 + 3.12530204e-07 -0.0443952158 -5.96015411e-07 + 1.59999979 + 0.418030918 0.00442918763 -0.0301324707 0.907922149 + 3.12752377e-07 -0.0443952158 -5.95775759e-07 + 1.63333309 + 0.419257343 0.0044264216 -0.0302208848 0.90735352 + 3.12646279e-07 -0.0443952158 -5.95985966e-07 + 1.66666639 + 0.419088393 0.00442680391 -0.030208705 0.90743202 + 3.12624621e-07 -0.0443952158 -5.96053098e-07 + 1.69999969 + 0.419088393 0.00442680344 -0.030208705 0.90743202 + 3.12491238e-07 -0.0443952233 -5.96068787e-07 + 1.73333299 + 0.419088393 0.00442680065 -0.030208705 0.90743202 + 3.12723415e-07 -0.0443952158 -5.95763311e-07 + 1.76666629 + 0.419088393 0.00442680204 -0.030208705 0.90743202 + 3.12707726e-07 -0.0443952158 -5.95911786e-07 + 1.79999959 + 0.419088393 0.00442680204 -0.030208705 0.90743202 + 3.12589293e-07 -0.0443952158 -5.95882625e-07 + 1.8333329 + 0.419088393 0.00442680251 -0.030208705 0.90743202 + 3.1261996e-07 -0.0443952158 -5.95925314e-07 + 1.8666662 + 0.419088393 0.00442680344 -0.030208705 0.90743202 + 3.12737484e-07 -0.0443952158 -5.95937706e-07 + 1.8999995 + "R_Leg_sjnt_1" + 58 + 0.907434046 -0.0293703675 -0.0661383867 0.4139162 + -5.8992809e-14 0.461806893 1.29958259e-13 + 0 + 0.832033396 -0.0339307636 -0.0502009392 0.551406443 + -3.25828232e-14 0.461806893 1.06012977e-13 + 0.0333333351 + 0.698698878 -0.0322298743 -0.0274561476 0.714161992 + 3.06488165e-14 0.461806893 -8.02913305e-14 + 0.0666666701 + 0.51927793 -0.026040256 -0.00994627085 0.854150712 + -1.27720058e-14 0.461806893 -3.95061757e-14 + 0.100000001 + 0.32402879 -0.0167259667 0.000974675699 0.94589889 + -1.19655398e-13 0.461806893 5.99698039e-14 + 0.13333334 + 0.197303966 -0.01440302 0.00312309666 0.980231583 + -2.57571729e-15 0.461806893 2.643219e-14 + 0.166666672 + 0.271715522 -0.0211579576 -8.23909941e-05 0.96214503 + -3.33599793e-14 0.461806893 1.75504048e-13 + 0.200000003 + 0.379026473 -0.0236685723 -0.00412359973 0.925073981 + -4.61408662e-14 0.461806893 -1.63424826e-14 + 0.233333334 + 0.426832169 -0.0243559089 -0.00534742605 0.90398699 + -3.85558251e-14 0.461806893 -1.4722445e-13 + 0.266666681 + 0.415417999 -0.0242902879 -0.00500241248 0.909292519 + -2.84572374e-14 0.461806893 4.88853376e-14 + 0.300000012 + 0.356693804 -0.0223155171 -0.00272412784 0.933950841 + -1.16191494e-13 0.461806893 -3.92219589e-14 + 0.333333343 + 0.254093289 -0.019246256 0.000211798048 0.966988146 + 3.74278381e-14 0.461806864 4.19220221e-14 + 0.366666675 + 0.197809279 -0.0193246081 0.000889731396 0.98004961 + 2.7142732e-14 0.461806893 3.26849643e-15 + 0.400000006 + 0.324229389 -0.0191686098 0.000303391425 0.945784271 + 1.42819089e-14 0.461806893 -2.34479099e-14 + 0.433333337 + 0.511322379 -0.0207468607 -0.00347170886 0.859131575 + -1.07540638e-13 0.461806893 -2.16004989e-14 + 0.466666669 + 0.680583417 -0.0209064409 -0.00889944844 0.732318223 + 9.2548192e-15 0.461806893 -1.78488328e-13 + 0.5 + 0.814257622 -0.019427659 -0.0141496481 0.580006003 + -8.67395009e-14 0.461806893 -1.38413722e-13 + 0.533333361 + 0.897362709 -0.0178945269 -0.0195884127 0.440495551 + -1.95488072e-14 0.461806893 -2.75690573e-14 + 0.566666722 + 0.929076135 -0.0212853029 -0.0393073 0.367177725 + 3.18767229e-14 0.461806893 -8.1286086e-14 + 0.600000083 + 0.909396172 -0.027857488 -0.0559810288 0.41120398 + -7.40030257e-14 0.461806893 8.98125975e-14 + 0.633333445 + 0.83340776 -0.0319976918 -0.0432336815 0.550035119 + -4.72510892e-14 0.461806893 2.26236808e-13 + 0.666666806 + 0.698951662 -0.0315080173 -0.0245205704 0.714053631 + -1.71951331e-14 0.461806923 -2.72848404e-14 + 0.700000167 + 0.517544806 -0.0268517621 -0.00927880686 0.855184436 + -3.28625998e-15 0.461806893 9.89075494e-14 + 0.733333528 + 0.31886065 -0.0176266469 0.00109913561 0.947637081 + -6.72883922e-14 0.461806893 -1.6541434e-13 + 0.766666889 + 0.18887715 -0.0145924268 0.00305435201 0.981887579 + -1.21502802e-14 0.461806893 5.68434189e-14 + 0.80000025 + 0.269681156 -0.0211871043 -0.0001000134 0.962716579 + -8.5975667e-14 0.461806893 -1.09707802e-13 + 0.833333611 + 0.379009187 -0.0236824006 -0.00414310582 0.925080597 + -1.58806294e-14 0.461806893 -9.49285071e-14 + 0.866666973 + 0.426836282 -0.0244033393 -0.00538331782 0.903983593 + -2.01438855e-13 0.461806893 3.524292e-14 + 0.900000334 + 0.415485591 -0.024334589 -0.00503571052 0.909260273 + 2.85638178e-14 0.461806893 2.21689325e-14 + 0.933333695 + 0.356730133 -0.0223028734 -0.00272945943 0.933937252 + -4.6824764e-14 0.461806893 3.18323147e-14 + 0.966667056 + 0.254160762 -0.0192367993 0.000206904835 0.966970623 + 3.63087314e-14 0.461806864 4.09272598e-14 + 1.00000036 + 0.200837627 -0.0193120316 0.000896948157 0.979433775 + 1.19015896e-14 0.461806893 3.63797873e-14 + 1.03333366 + 0.327964187 -0.0190504529 0.000296785875 0.944498062 + 3.54205529e-14 0.461806893 -6.30961957e-14 + 1.06666696 + 0.513164103 -0.0205100682 -0.00349565712 0.858038306 + -1.07789327e-13 0.461806893 1.08002486e-14 + 1.10000026 + 0.681027949 -0.0206807964 -0.00896311551 0.731910467 + 4.97379907e-15 0.461806893 -1.31876728e-13 + 1.13333356 + 0.814024925 -0.0192804541 -0.0143014649 0.580333769 + -7.01305672e-14 0.461806893 -1.75646159e-13 + 1.16666687 + 0.897032678 -0.0178101268 -0.0198102482 0.441160619 + -4.05098183e-14 0.461806893 4.54747324e-14 + 1.20000017 + 0.928926349 -0.0212737564 -0.0395740159 0.367528498 + 2.04991579e-14 0.461806893 9.9475983e-14 + 1.23333347 + 0.909396172 -0.0278574824 -0.0559810326 0.411203891 + -9.08428877e-14 0.461806893 -5.79802862e-14 + 1.26666677 + 0.833481848 -0.0318915434 -0.0428483672 0.549959064 + -4.46220819e-14 0.461806893 1.55182535e-13 + 1.30000007 + 0.698980153 -0.0314237364 -0.0241757818 0.714041293 + 7.81597026e-15 0.461806893 -7.84439178e-14 + 1.33333337 + 0.517216504 -0.0270043034 -0.0091538094 0.855379522 + -3.42836861e-15 0.461806893 7.10542736e-14 + 1.36666667 + 0.317454636 -0.0178668536 0.00113224518 0.948104441 + -5.16919813e-14 0.461806893 -7.38964418e-14 + 1.39999998 + 0.185744807 -0.0146593219 0.00303042447 0.982484043 + 1.33582034e-14 0.461806893 1.45519149e-13 + 1.43333328 + 0.268731087 -0.0212006196 -0.0001081503 0.96298188 + -6.87982996e-14 0.461806893 -1.78488328e-13 + 1.46666658 + 0.378998935 -0.0236904677 -0.00415448379 0.925084531 + 3.57402977e-14 0.461806893 -1.21644909e-13 + 1.49999988 + 0.426838726 -0.0244378354 -0.00540941395 0.903981328 + -1.35145232e-13 0.461806893 1.43245414e-13 + 1.53333318 + 0.415545613 -0.0243744981 -0.00506568095 0.909231603 + 6.26698671e-14 0.461806893 -1.65982774e-13 + 1.56666648 + 0.356770873 -0.0222888291 -0.00273538847 0.933921993 + -1.21076475e-13 0.461806893 5.57065482e-14 + 1.59999979 + 0.254253358 -0.0192238074 0.00020017584 0.966946602 + 7.99360578e-14 0.461806893 2.61479721e-13 + 1.63333309 + 0.205914319 -0.0192915928 0.000909994124 0.978379488 + -3.03579387e-14 0.461806893 4.43378651e-14 + 1.66666639 + 0.335870594 -0.0187964235 0.000281686313 0.941720545 + -6.60804749e-15 0.461806893 1.13686835e-15 + 1.69999969 + 0.518264413 -0.0198489334 -0.00356337451 0.854982674 + -5.42854641e-14 0.461806923 -1.36424202e-14 + 1.73333299 + 0.68268919 -0.0198340584 -0.00920124818 0.730381668 + 2.88480347e-14 0.461806893 4.20641305e-14 + 1.76666629 + 0.81277734 -0.0185008161 -0.015118571 0.582084298 + -9.58166855e-14 0.461806893 -1.02318151e-13 + 1.79999959 + 0.89419353 -0.0171191245 -0.0217478815 0.446824342 + -2.40873978e-14 0.461806893 4.66116031e-14 + 1.8333329 + 0.926164865 -0.0211255848 -0.0445165932 0.37388581 + 3.61666229e-14 0.461806893 6.36646294e-14 + 1.8666662 + 0.907434046 -0.0293703694 -0.0661383942 0.41391623 + 1.88293815e-14 0.461806893 2.84217094e-14 + 1.8999995 + "L_Pinky_sjnt_1" + 58 + 0.39850089 -0.00203252537 0.0172980521 0.917002559 + 3.7061136e-07 -0.0372028351 1.38076786e-07 + 0 + 0.36223191 -0.00206680363 0.015722068 0.931953073 + 3.70620512e-07 -0.0372028351 1.38083905e-07 + 0.0333333351 + 0.338777095 -0.00208702916 0.0147029059 0.940749466 + 3.70717089e-07 -0.0372028351 1.38086264e-07 + 0.0666666701 + 0.318856239 -0.00210304628 0.0138373105 0.947699785 + 3.70575748e-07 -0.0372028351 1.38072465e-07 + 0.100000001 + 0.29628095 -0.00211993977 0.0128563866 0.955011964 + 3.70528142e-07 -0.0372028351 1.38075393e-07 + 0.13333334 + 0.274126768 -0.00213524862 0.0118937697 0.961617708 + 3.70556847e-07 -0.0372028351 1.38088453e-07 + 0.166666672 + 0.253179908 -0.00214230083 0.0109852683 0.967354476 + 3.70584701e-07 -0.0372028351 1.38065658e-07 + 0.200000003 + 0.234236717 -0.00220574159 0.0101494296 0.972124159 + 3.70606671e-07 -0.0372028351 1.38074341e-07 + 0.233333334 + 0.218097001 -0.00234189769 0.00942045357 0.975878835 + 3.70718595e-07 -0.0372028351 1.38080424e-07 + 0.266666681 + 0.205578312 -0.0024446263 0.00885858387 0.978597522 + 3.70621706e-07 -0.0372028351 1.38075606e-07 + 0.300000012 + 0.200110033 -0.00235685683 0.00864106975 0.979732513 + 3.70481956e-07 -0.0372028351 1.37959333e-07 + 0.333333343 + 0.193962097 -0.00194667105 0.00845693983 0.980970681 + 3.70440716e-07 -0.0372028351 1.37902077e-07 + 0.366666675 + 0.186700344 -0.00117753411 0.00827842765 0.982381284 + 3.70762706e-07 -0.0372028351 1.38280896e-07 + 0.400000006 + 0.197471112 -0.000132328598 0.00894430652 0.980267942 + 3.70741105e-07 -0.0372028351 1.38355915e-07 + 0.433333337 + 0.251076281 0.0010670342 0.0116653685 0.967896461 + 3.70482411e-07 -0.0372028388 1.37675926e-07 + 0.466666669 + 0.336815804 0.0022711379 0.0160854012 0.94143039 + 3.70562361e-07 -0.0372028351 1.38453004e-07 + 0.5 + 0.412777543 0.00335549191 0.0202403311 0.910600781 + 3.70709188e-07 -0.0372028351 1.38140678e-07 + 0.533333361 + 0.458568275 0.00427408423 0.0230015758 0.888351202 + 3.70599338e-07 -0.0372028351 1.38136315e-07 + 0.566666722 + 0.48006928 0.00498784753 0.0244971942 0.876874268 + 3.70684717e-07 -0.0372028351 1.38119944e-07 + 0.600000083 + 0.47621128 0.00545861805 0.0245434474 0.878971338 + 3.7056742e-07 -0.0372028351 1.38058667e-07 + 0.633333445 + 0.453393459 0.00559313688 0.0233930666 0.890985966 + 3.70731385e-07 -0.0372028351 1.38100134e-07 + 0.666666806 + 0.413075089 0.00516024698 0.0210570283 0.910438895 + 3.70605079e-07 -0.0372028388 1.38074753e-07 + 0.700000167 + 0.333562851 0.00414863508 0.0165712889 0.942573071 + 3.70623326e-07 -0.0372028351 1.38079443e-07 + 0.733333528 + 0.236514583 0.00265909871 0.0113573577 0.971557915 + 3.70695119e-07 -0.0372028351 1.38159521e-07 + 0.766666889 + 0.139681816 0.000942523242 0.00646378985 0.99017489 + 3.7060704e-07 -0.0372028351 1.38061722e-07 + 0.80000025 + 0.0622400306 -0.000685840729 0.00278776023 0.998057127 + 3.70582484e-07 -0.0372028351 1.3802466e-07 + 0.833333611 + 0.022952674 -0.00190582022 0.00100384164 0.999734223 + 3.70646518e-07 -0.0372028351 1.38110678e-07 + 0.866666973 + 0.046380315 -0.00252074166 0.00200055633 0.998918712 + 3.70528596e-07 -0.0372028351 1.38066568e-07 + 0.900000334 + 0.132181153 -0.00261336798 0.00568772573 0.991205812 + 3.70481388e-07 -0.0372028351 1.37893295e-07 + 0.933333695 + 0.248370677 -0.00240148953 0.0107267648 0.968602717 + 3.70688241e-07 -0.0372028351 1.38193712e-07 + 0.966667056 + 0.352143973 -0.00214115903 0.0152759384 0.935818732 + 3.70494178e-07 -0.0372028351 1.38248396e-07 + 1.00000036 + 0.420280278 -0.00200898293 0.01826239 0.907208323 + 3.70661041e-07 -0.0372028351 1.37951602e-07 + 1.03333366 + 0.462279618 -0.00197146228 0.0200828239 0.886504591 + 3.70734995e-07 -0.0372028351 1.38410897e-07 + 1.06666696 + 0.495230466 -0.00193094625 0.021514371 0.868493021 + 3.70494291e-07 -0.0372028388 1.37892158e-07 + 1.10000026 + 0.519012153 -0.00189941656 0.0225475617 0.854467332 + 3.70540874e-07 -0.0372028351 1.37930186e-07 + 1.13333356 + 0.534943342 -0.00187716866 0.0232396889 0.844566226 + 3.70698899e-07 -0.0372028351 1.38118807e-07 + 1.16666687 + 0.544222414 -0.00186377973 0.0236428175 0.838605702 + 3.70614657e-07 -0.0372028351 1.38130645e-07 + 1.20000017 + 0.547665238 -0.00185872905 0.0237923916 0.836357176 + 3.70647172e-07 -0.0372028351 1.38069097e-07 + 1.23333347 + 0.541181862 -0.00186820084 0.0235107206 0.840574741 + 3.70681448e-07 -0.0372028351 1.38089504e-07 + 1.26666677 + 0.523048341 -0.00189386797 0.0227229111 0.851997912 + 3.70619745e-07 -0.0372028351 1.3808129e-07 + 1.30000007 + 0.497566193 -0.00192793889 0.0216158424 0.867154539 + 3.70671472e-07 -0.0372028351 1.38123113e-07 + 1.33333337 + 0.46904099 -0.00196344149 0.0203765705 0.88293916 + 3.70592971e-07 -0.0372028351 1.38077297e-07 + 1.36666667 + 0.44209069 -0.00199455069 0.019205723 0.89676255 + 3.70605903e-07 -0.0372028351 1.37960328e-07 + 1.39999998 + 0.421986639 -0.00201628823 0.0183323044 0.906414449 + 3.70661752e-07 -0.0372028351 1.37947026e-07 + 1.43333328 + 0.410372943 -0.00202829135 0.0178277511 0.911741316 + 3.70611161e-07 -0.0372028351 1.38000829e-07 + 1.46666658 + 0.404230565 -0.00203447882 0.0175608955 0.914486289 + 3.70667067e-07 -0.0372028351 1.38069211e-07 + 1.49999988 + 0.401420414 -0.00203727232 0.0174388122 0.915725648 + 3.70414597e-07 -0.0372028351 1.38025172e-07 + 1.53333318 + 0.40067488 -0.0020380104 0.0174064189 0.916052759 + 3.70581404e-07 -0.0372028351 1.38099523e-07 + 1.56666648 + 0.400618225 -0.00203806418 0.0174039602 0.916077435 + 3.70585752e-07 -0.0372028351 1.37937448e-07 + 1.59999979 + 0.399609298 -0.00203906186 0.0173601266 0.916518927 + 3.70649019e-07 -0.0372028351 1.38252304e-07 + 1.63333309 + 0.398361802 -0.00204028678 0.0173059292 0.917062879 + 3.70615766e-07 -0.0372028351 1.38016958e-07 + 1.66666639 + 0.398500323 -0.00204015058 0.0173119474 0.917002559 + 3.70616789e-07 -0.0372028351 1.37937874e-07 + 1.69999969 + 0.398500323 -0.00204015034 0.0173119474 0.917002559 + 3.70498043e-07 -0.0372028388 1.37915876e-07 + 1.73333299 + 0.398500323 -0.00204015197 0.0173119474 0.917002559 + 3.70634353e-07 -0.0372028351 1.38253469e-07 + 1.76666629 + 0.398500323 -0.00204015151 0.0173119474 0.917002559 + 3.70650127e-07 -0.0372028351 1.38096439e-07 + 1.79999959 + 0.398500323 -0.00204015197 0.0173119474 0.917002559 + 3.70517228e-07 -0.0372028351 1.38099765e-07 + 1.8333329 + 0.398500323 -0.00204015058 0.0173119474 0.917002559 + 3.70594307e-07 -0.0372028351 1.38049018e-07 + 1.8666662 + 0.398500323 -0.00204015081 0.0173119474 0.917002559 + 3.70687417e-07 -0.0372028351 1.38095587e-07 + 1.8999995 + "L_Thumb_sjnt_1" + 58 + 0.153316423 0.00535320817 0.0191356689 0.987977386 + -5.24668906e-07 -0.0301787555 -2.92195779e-07 + 0 + 0.153316617 0.00535284635 0.0191354379 0.987977326 + -5.24637755e-07 -0.0301787555 -2.92144108e-07 + 0.0333333351 + 0.153316632 0.00535283843 0.0191354342 0.987977326 + -5.24694599e-07 -0.0301787555 -2.92185092e-07 + 0.0666666701 + 0.153316617 0.00535284309 0.0191354379 0.987977326 + -5.24631105e-07 -0.0301787555 -2.92151185e-07 + 0.100000001 + 0.153316617 0.0053528361 0.0191354379 0.987977326 + -5.24584948e-07 -0.0301787555 -2.92158546e-07 + 0.13333334 + 0.153316617 0.00535284169 0.0191354379 0.987977326 + -5.2458978e-07 -0.0301787555 -2.92158688e-07 + 0.166666672 + 0.153316617 0.00535284122 0.0191354416 0.987977326 + -5.24651568e-07 -0.0301787555 -2.92155079e-07 + 0.200000003 + 0.153316617 0.00535284495 0.0191354379 0.987977326 + -5.24223026e-07 -0.0301787555 -2.91765616e-07 + 0.233333334 + 0.153316617 0.00535284728 0.0191354416 0.987977326 + -5.25153496e-07 -0.0301787555 -2.92623866e-07 + 0.266666681 + 0.153316632 0.00535283983 0.019135436 0.987977326 + -5.24662028e-07 -0.0301787555 -2.92178754e-07 + 0.300000012 + 0.153316632 0.00535284355 0.019135436 0.987977326 + -5.24585062e-07 -0.0301787555 -2.92042017e-07 + 0.333333343 + 0.153316617 0.00535284029 0.0191354379 0.987977326 + -5.23919766e-07 -0.0301787555 -2.92483179e-07 + 0.366666675 + 0.153316617 0.00535284448 0.0191354379 0.987977326 + -5.24647078e-07 -0.0301787555 -2.92174718e-07 + 0.400000006 + 0.153316632 0.00535284262 0.0191354379 0.987977326 + -5.24704546e-07 -0.0301787555 -2.92085446e-07 + 0.433333337 + 0.153316617 0.00535284169 0.0191354379 0.987977326 + -5.24591201e-07 -0.0301787555 -2.9223267e-07 + 0.466666669 + 0.153316632 0.00535284542 0.0191354379 0.987977326 + -5.24713471e-07 -0.0301787555 -2.92092722e-07 + 0.5 + 0.153316632 0.00535284076 0.0191354305 0.987977326 + -5.24650886e-07 -0.0301787555 -2.92150617e-07 + 0.533333361 + 0.153316617 0.0053528389 0.0191354398 0.987977326 + -5.24552831e-07 -0.0301787555 -2.92196859e-07 + 0.566666722 + 0.153316602 0.00535286637 0.0191354584 0.987977326 + -5.25934126e-07 -0.0301787555 -2.9335834e-07 + 0.600000083 + 0.153316617 0.00535283936 0.0191354323 0.987977326 + -5.24655718e-07 -0.0301787555 -2.92158006e-07 + 0.633333445 + 0.153316617 0.00535284588 0.0191354398 0.987977326 + -5.25756832e-07 -0.0301787555 -2.91796766e-07 + 0.666666806 + 0.153316617 0.00535284355 0.0191354379 0.987977326 + -5.23990536e-07 -0.0301787555 -2.92960721e-07 + 0.700000167 + 0.153316617 0.0053528389 0.0191354379 0.987977326 + -5.24670099e-07 -0.0301787555 -2.92169801e-07 + 0.733333528 + 0.153316423 0.0053532077 0.0191356689 0.987977386 + -5.24764289e-07 -0.0301787555 -2.92199985e-07 + 0.766666889 + 0.153316423 0.00535320863 0.0191356689 0.987977386 + -5.24617462e-07 -0.0301787555 -2.92144392e-07 + 0.80000025 + 0.153316423 0.0053532077 0.0191356689 0.987977386 + -5.2460706e-07 -0.0301787555 -2.9212552e-07 + 0.833333611 + 0.153316423 0.0053532091 0.0191356689 0.987977386 + -5.25590906e-07 -0.0301787555 -2.91986424e-07 + 0.866666973 + 0.153316423 0.00535320817 0.0191356689 0.987977386 + -5.25099495e-07 -0.0301787555 -2.92578903e-07 + 0.900000334 + 0.153316423 0.00535320863 0.0191356689 0.987977386 + -5.24568406e-07 -0.0301787555 -2.92084508e-07 + 0.933333695 + 0.153316438 0.0053532077 0.0191356689 0.987977386 + -5.24713869e-07 -0.0301787555 -2.9202721e-07 + 0.966667056 + 0.153316438 0.00535321236 0.0191356726 0.987977386 + -5.24135942e-07 -0.0301787555 -2.92389984e-07 + 1.00000036 + 0.153316408 0.0053532077 0.0191356689 0.987977386 + -5.24588415e-07 -0.0301787555 -2.92238326e-07 + 1.03333366 + 0.153316438 0.0053532077 0.0191356689 0.987977386 + -5.24705058e-07 -0.0301787555 -2.92079051e-07 + 1.06666696 + 0.153316423 0.00535320863 0.0191356689 0.987977386 + -5.2447831e-07 -0.0301787555 -2.91925687e-07 + 1.10000026 + 0.153316423 0.00535320863 0.0191356689 0.987977386 + -5.2463065e-07 -0.0301787555 -2.9211725e-07 + 1.13333356 + 0.153316423 0.00535320817 0.0191356689 0.987977386 + -5.24647419e-07 -0.0301787555 -2.92157978e-07 + 1.16666687 + 0.153316423 0.00535320817 0.0191356689 0.987977386 + -5.24651114e-07 -0.0301787555 -2.92192624e-07 + 1.20000017 + 0.153316423 0.00535320817 0.0191356689 0.987977386 + -5.25959479e-07 -0.0301787555 -2.93356493e-07 + 1.23333347 + 0.153316423 0.00535320817 0.0191356689 0.987977386 + -5.24602001e-07 -0.0301787555 -2.92129442e-07 + 1.26666677 + 0.153316423 0.00535320817 0.0191356689 0.987977386 + -5.2463605e-07 -0.0301787555 -2.92148485e-07 + 1.30000007 + 0.153316423 0.0053532077 0.0191356689 0.987977386 + -5.24714892e-07 -0.0301787555 -2.92190435e-07 + 1.33333337 + 0.153316423 0.00535320956 0.0191356689 0.987977386 + -5.24628319e-07 -0.0301787555 -2.92152322e-07 + 1.36666667 + 0.153316423 0.00535321003 0.0191356689 0.987977386 + -5.24571703e-07 -0.0301787555 -2.92174462e-07 + 1.39999998 + 0.153316438 0.0053532063 0.0191356651 0.987977386 + -5.24641848e-07 -0.0301787555 -2.92165993e-07 + 1.43333328 + 0.153316438 0.0053532063 0.0191356651 0.987977386 + -5.24661402e-07 -0.0301787555 -2.92163463e-07 + 1.46666658 + 0.153316423 0.00535320817 0.0191356689 0.987977386 + -5.25104724e-07 -0.0301787555 -2.92560088e-07 + 1.49999988 + 0.153316438 0.00535320863 0.0191356689 0.987977386 + -5.25426174e-07 -0.0301787555 -2.92829952e-07 + 1.53333318 + 0.153316423 0.00535320677 0.0191356726 0.987977386 + -5.24759457e-07 -0.0301787555 -2.92196916e-07 + 1.56666648 + 0.153316408 0.00535320584 0.0191356614 0.987977386 + -5.23650556e-07 -0.0301787555 -2.92209904e-07 + 1.59999979 + 0.153316438 0.00535320956 0.0191356689 0.987977386 + -5.24009977e-07 -0.0301787555 -2.92198763e-07 + 1.63333309 + 0.153316408 0.0053532077 0.0191356689 0.987977386 + -5.24629058e-07 -0.0301787555 -2.92213883e-07 + 1.66666639 + 0.153316408 0.00535320677 0.0191356689 0.987977386 + -5.2463048e-07 -0.0301787555 -2.92244437e-07 + 1.69999969 + 0.153316408 0.00535320817 0.0191356689 0.987977386 + -5.23519304e-07 -0.0301787555 -2.92862609e-07 + 1.73333299 + 0.153316438 0.00535321096 0.0191356726 0.987977386 + -5.24734787e-07 -0.0301787555 -2.91566181e-07 + 1.76666629 + 0.153316423 0.00535320817 0.0191356689 0.987977386 + -5.24671407e-07 -0.0301787555 -2.92134843e-07 + 1.79999959 + 0.153316438 0.00535320817 0.0191356726 0.987977386 + -5.24794018e-07 -0.0301787555 -2.92147092e-07 + 1.8333329 + 0.153316423 0.00535320863 0.0191356689 0.987977386 + -5.25034238e-07 -0.0301787555 -2.92496424e-07 + 1.8666662 + 0.153316423 0.0053532077 0.0191356689 0.987977386 + -5.24644975e-07 -0.0301787555 -2.92184865e-07 + 1.8999995 + "L_Arm_sjnt_1" + 58 + 0.697243571 -0.0669483244 -0.0474016331 0.712125301 + -1.14686895e-06 -0.260628074 -4.16457695e-08 + 0 + 0.732794225 -0.0655714124 -0.0520156547 0.675283253 + -1.14687066e-06 -0.260628074 -4.16445936e-08 + 0.0333333351 + 0.772769213 -0.0590910017 -0.0504025407 0.629917085 + -1.14687009e-06 -0.260628074 -4.16463521e-08 + 0.0666666701 + 0.808525026 -0.0664385408 -0.0670216233 0.580845416 + -1.14686998e-06 -0.260628074 -4.16463557e-08 + 0.100000001 + 0.835989475 -0.075800702 -0.0886715651 0.53620261 + -1.14686782e-06 -0.260628074 -4.16471408e-08 + 0.13333334 + 0.844748259 -0.0703792572 -0.0813222453 0.524245977 + -1.14686986e-06 -0.260628074 -4.16464694e-08 + 0.166666672 + 0.824701846 -0.0727764666 -0.0798652917 0.555150449 + -1.14686895e-06 -0.260628074 -4.16461035e-08 + 0.200000003 + 0.765781641 -0.0841674656 -0.0815757662 0.632328749 + -1.14686895e-06 -0.260628074 -4.16457837e-08 + 0.233333334 + 0.709516466 -0.0739800707 -0.055970598 0.698556125 + -1.14686986e-06 -0.260628074 -4.1645599e-08 + 0.266666681 + 0.701144755 -0.0422800221 -0.0177655071 0.711542547 + -1.14686998e-06 -0.260628074 -4.16456736e-08 + 0.300000012 + 0.716494977 -0.0409275666 -0.0162127558 0.696201861 + -1.14687077e-06 -0.260628074 -4.164648e-08 + 0.333333343 + 0.734085143 -0.038527526 -0.0177387502 0.677731574 + -1.14686964e-06 -0.260628074 -4.16470058e-08 + 0.366666675 + 0.7470631 -0.0464079492 -0.0296575911 0.662467718 + -1.14687043e-06 -0.260628074 -4.16459933e-08 + 0.400000006 + 0.758744657 -0.0511307977 -0.0381567851 0.648256302 + -1.14687009e-06 -0.260628074 -4.1645869e-08 + 0.433333337 + 0.761816382 -0.0543609038 -0.0439649671 0.644009113 + -1.14686918e-06 -0.260628074 -4.16449666e-08 + 0.466666669 + 0.75529635 -0.0449585505 -0.0306588281 0.653120339 + -1.14687066e-06 -0.260628074 -4.16477945e-08 + 0.5 + 0.731314123 -0.0432940573 -0.0264611002 0.680150807 + -1.14687043e-06 -0.260628074 -4.16495283e-08 + 0.533333361 + 0.694478095 -0.0438575633 -0.0228348672 0.717812896 + -1.14686804e-06 -0.260628074 -4.16441139e-08 + 0.566666722 + 0.678633213 -0.0567358956 -0.0342869572 0.731479645 + -1.14687066e-06 -0.260628074 -4.16465475e-08 + 0.600000083 + 0.697243571 -0.0669483244 -0.0474016331 0.712125301 + -1.14686918e-06 -0.260628074 -4.16463557e-08 + 0.633333445 + 0.732794225 -0.0655714124 -0.0520156547 0.675283253 + -1.14686998e-06 -0.260628045 -4.16445651e-08 + 0.666666806 + 0.772769213 -0.0590910017 -0.0504025407 0.629917085 + -1.14686975e-06 -0.260628074 -4.164621e-08 + 0.700000167 + 0.808525026 -0.0664385408 -0.0670216233 0.580845416 + -1.14686918e-06 -0.260628074 -4.16460431e-08 + 0.733333528 + 0.835989475 -0.075800702 -0.0886715651 0.53620261 + -1.14686907e-06 -0.260628074 -4.16469028e-08 + 0.766666889 + 0.844748259 -0.0703792572 -0.0813222453 0.524245977 + -1.14687009e-06 -0.260628074 -4.16459116e-08 + 0.80000025 + 0.824701846 -0.0727764666 -0.0798652917 0.555150449 + -1.14686884e-06 -0.260628074 -4.1647116e-08 + 0.833333611 + 0.765781641 -0.0841674656 -0.0815757662 0.632328749 + -1.14686964e-06 -0.260628074 -4.16461994e-08 + 0.866666973 + 0.709516466 -0.0739800707 -0.055970598 0.698556125 + -1.14686816e-06 -0.260628074 -4.16443058e-08 + 0.900000334 + 0.701144755 -0.0422800221 -0.0177655071 0.711542547 + -1.14686941e-06 -0.260628074 -4.16454959e-08 + 0.933333695 + 0.716494977 -0.0409275666 -0.0162127558 0.696201861 + -1.14686975e-06 -0.260628074 -4.16467678e-08 + 0.966667056 + 0.734085143 -0.038527526 -0.0177387502 0.677731574 + -1.14687043e-06 -0.260628074 -4.16470947e-08 + 1.00000036 + 0.7470631 -0.0464079492 -0.0296575911 0.662467718 + -1.14687066e-06 -0.260628074 -4.1645869e-08 + 1.03333366 + 0.758744657 -0.0511307977 -0.0381567851 0.648256302 + -1.14686986e-06 -0.260628074 -4.16460253e-08 + 1.06666696 + 0.761816382 -0.0543609038 -0.0439649671 0.644009113 + -1.14686964e-06 -0.260628074 -4.1645734e-08 + 1.10000026 + 0.75529635 -0.0449585505 -0.0306588281 0.653120339 + -1.14686998e-06 -0.260628074 -4.16473043e-08 + 1.13333356 + 0.731314123 -0.0432940573 -0.0264611002 0.680150807 + -1.14687066e-06 -0.260628074 -4.16488994e-08 + 1.16666687 + 0.694478095 -0.0438575633 -0.0228348672 0.717812896 + -1.14686804e-06 -0.260628074 -4.16442987e-08 + 1.20000017 + 0.678633213 -0.0567358956 -0.0342869572 0.731479645 + -1.14687055e-06 -0.260628074 -4.16460431e-08 + 1.23333347 + 0.697243571 -0.0669483244 -0.0474016331 0.712125301 + -1.14686884e-06 -0.260628074 -4.16475672e-08 + 1.26666677 + 0.732794225 -0.0655714124 -0.0520156547 0.675283253 + -1.14686975e-06 -0.260628074 -4.16455102e-08 + 1.30000007 + 0.772769213 -0.0590910017 -0.0504025407 0.629917085 + -1.14687043e-06 -0.260628074 -4.16452686e-08 + 1.33333337 + 0.808525026 -0.0664385408 -0.0670216233 0.580845416 + -1.14686952e-06 -0.260628074 -4.16461248e-08 + 1.36666667 + 0.835989475 -0.075800702 -0.0886715651 0.53620261 + -1.14686816e-06 -0.260628074 -4.16470769e-08 + 1.39999998 + 0.844748259 -0.0703792572 -0.0813222453 0.524245977 + -1.14687009e-06 -0.260628074 -4.16465014e-08 + 1.43333328 + 0.824701846 -0.0727764666 -0.0798652917 0.555150449 + -1.14686895e-06 -0.260628074 -4.1646242e-08 + 1.46666658 + 0.765781641 -0.0841674656 -0.0815757662 0.632328749 + -1.14687009e-06 -0.260628074 -4.16477697e-08 + 1.49999988 + 0.709516466 -0.0739800707 -0.055970598 0.698556125 + -1.14686793e-06 -0.260628074 -4.16447108e-08 + 1.53333318 + 0.701144755 -0.0422800221 -0.0177655071 0.711542547 + -1.14686907e-06 -0.260628074 -4.16471302e-08 + 1.56666648 + 0.716494977 -0.0409275666 -0.0162127558 0.696201861 + -1.1468685e-06 -0.260628074 -4.16455705e-08 + 1.59999979 + 0.734085143 -0.038527526 -0.0177387502 0.677731574 + -1.14686918e-06 -0.260628074 -4.16475388e-08 + 1.63333309 + 0.7470631 -0.0464079492 -0.0296575911 0.662467718 + -1.14686941e-06 -0.260628074 -4.16459294e-08 + 1.66666639 + 0.758744657 -0.0511307977 -0.0381567851 0.648256302 + -1.14686964e-06 -0.260628074 -4.16453574e-08 + 1.69999969 + 0.761816382 -0.0543609038 -0.0439649671 0.644009113 + -1.1468702e-06 -0.260628074 -4.16460146e-08 + 1.73333299 + 0.75529635 -0.0449585505 -0.0306588281 0.653120339 + -1.1468685e-06 -0.260628074 -4.16473469e-08 + 1.76666629 + 0.731314123 -0.0432940573 -0.0264611002 0.680150807 + -1.14686998e-06 -0.260628074 -4.16475494e-08 + 1.79999959 + 0.694478095 -0.0438575633 -0.0228348672 0.717812896 + -1.14686873e-06 -0.260628074 -4.16459578e-08 + 1.8333329 + 0.678633213 -0.0567358956 -0.0342869572 0.731479645 + -1.14687077e-06 -0.260628074 -4.16447072e-08 + 1.8666662 + 0.697243571 -0.0669483244 -0.0474016331 0.712125301 + -1.14686998e-06 -0.260628074 -4.16468176e-08 + 1.8999995 + "L_Ring_sjnt_2" + 58 + 0.322484225 0.00098843954 -0.0214528888 0.946331263 + 1.65915832e-08 -0.0234416053 4.04085313e-07 + 0 + 0.285169959 0.000997264055 -0.0189814195 0.958288491 + 1.66411205e-08 -0.0234416053 4.0411436e-07 + 0.0333333351 + 0.26110971 0.00100209343 -0.017387744 0.965152025 + 1.66965322e-08 -0.0234416053 4.04088041e-07 + 0.0666666701 + 0.24071674 0.00100567099 -0.0160369333 0.970462382 + 1.65914606e-08 -0.0234416053 4.04090429e-07 + 0.100000001 + 0.217652112 0.00100916135 -0.0145091014 0.975918055 + 1.65661849e-08 -0.0234416053 4.04021733e-07 + 0.13333334 + 0.195063844 0.00101201318 -0.0130127771 0.980703712 + 1.65808558e-08 -0.0234416053 4.04085426e-07 + 0.166666672 + 0.173747987 0.00102061033 -0.0115995593 0.984721303 + 1.66240977e-08 -0.0234416053 4.04087359e-07 + 0.200000003 + 0.154503629 0.000968960172 -0.0103331553 0.987937748 + 1.66610601e-08 -0.0234416053 4.04089064e-07 + 0.233333334 + 0.138130918 0.000840685214 -0.00926579535 0.990370274 + 1.68097518e-08 -0.0234416053 4.04045664e-07 + 0.266666681 + 0.125447541 0.00074367132 -0.00843560975 0.992064118 + 1.66847371e-08 -0.0234416053 4.04108903e-07 + 0.300000012 + 0.119913921 0.000835540181 -0.00805631932 0.992751241 + 1.6406565e-08 -0.0234416053 4.04045267e-07 + 0.333333343 + 0.113700658 0.00125413714 -0.00759542827 0.993485212 + 1.63847851e-08 -0.0234416053 4.0398632e-07 + 0.366666675 + 0.106369168 0.00203444064 -0.00702766189 0.994299829 + 1.68303398e-08 -0.0234416053 4.04235038e-07 + 0.400000006 + 0.117279723 0.00308414572 -0.00761464192 0.993065 + 1.6767288e-08 -0.0234416053 4.04265137e-07 + 0.433333337 + 0.171680897 0.00427360414 -0.0109010283 0.985083103 + 1.65142211e-08 -0.0234416071 4.03920581e-07 + 0.466666669 + 0.259242982 0.00545182684 -0.01610028 0.965662539 + 1.64519331e-08 -0.0234416053 4.04168873e-07 + 0.5 + 0.337442219 0.00651210127 -0.0205196626 0.941100061 + 1.67143153e-08 -0.0234416053 4.0414514e-07 + 0.533333361 + 0.384904861 0.0074260137 -0.0229720864 0.922640443 + 1.67319367e-08 -0.0234416053 4.0414983e-07 + 0.566666722 + 0.407294601 0.00814949907 -0.0239538811 0.912946284 + 1.67207066e-08 -0.0234416053 4.04138518e-07 + 0.600000083 + 0.403304994 0.00864361599 -0.0235174075 0.914722562 + 1.65703291e-08 -0.0234416053 4.0408591e-07 + 0.633333445 + 0.379600227 0.00880382955 -0.0221194718 0.924844265 + 1.66383423e-08 -0.0234416053 4.0407258e-07 + 0.666666806 + 0.337827146 0.0083041545 -0.01993162 0.940960467 + 1.66739831e-08 -0.0234416053 4.04105776e-07 + 0.700000167 + 0.25596568 0.00711352238 -0.0154914465 0.966535568 + 1.66529457e-08 -0.0234416053 4.04111404e-07 + 0.733333528 + 0.156910211 0.0054170005 -0.00981202722 0.987549305 + 1.67450018e-08 -0.0234416053 4.04180156e-07 + 0.766666889 + 0.0589460842 0.00356767629 -0.00383152091 0.998247445 + 1.66178449e-08 -0.0234416053 4.04073063e-07 + 0.80000025 + -0.0188050885 0.00198980188 0.0011862152 0.999820471 + 1.65680358e-08 -0.0234416053 4.04053424e-07 + 0.833333611 + -0.058052104 0.00114541221 0.00380871748 0.998305678 + 1.67172463e-08 -0.0234416053 4.04098245e-07 + 0.866666973 + -0.0346650854 0.000981344027 0.00226795743 0.999395967 + 1.66373617e-08 -0.0234416053 4.04136301e-07 + 0.900000334 + 0.0513690934 0.00101342553 -0.00343399146 0.99867332 + 1.6433134e-08 -0.0234416053 4.03969608e-07 + 0.933333695 + 0.168860614 0.00100364292 -0.0112189865 0.985575557 + 1.67372161e-08 -0.0234416053 4.04211562e-07 + 0.966667056 + 0.274705052 0.000982243335 -0.0182318669 0.96135515 + 1.64027689e-08 -0.0234416053 4.04276562e-07 + 1.00000036 + 0.345485896 0.000960830192 -0.022921348 0.938143551 + 1.67109864e-08 -0.0234416053 4.04008631e-07 + 1.03333366 + 0.391836494 0.00094348006 -0.0259921402 0.919667125 + 1.66795395e-08 -0.0234416053 4.0432667e-07 + 1.06666696 + 0.430603862 0.000926823763 -0.0285604633 0.902088583 + 1.64956973e-08 -0.0234416071 4.04014486e-07 + 1.10000026 + 0.459224105 0.000913197815 -0.0304565132 0.887797713 + 1.65966174e-08 -0.0234416053 4.03984103e-07 + 1.13333356 + 0.47701928 0.000904117071 -0.0316353962 0.878322899 + 1.6693857e-08 -0.0234416053 4.04126126e-07 + 1.16666687 + 0.483266115 0.000900819432 -0.0320492312 0.874886274 + 1.66588148e-08 -0.0234416053 4.04154235e-07 + 1.20000017 + 0.476613581 0.000904327782 -0.0316085219 0.878544033 + 1.66352425e-08 -0.0234416053 4.04096227e-07 + 1.23333347 + 0.447491407 0.000918911828 -0.0296792462 0.893795133 + 1.68665455e-08 -0.0234416053 4.04053083e-07 + 1.26666677 + 0.393949062 0.000942628365 -0.0261320956 0.91876024 + 1.66661334e-08 -0.0234416053 4.04101428e-07 + 1.30000007 + 0.326283425 0.000967240427 -0.0216491334 0.945023596 + 1.65526828e-08 -0.0234416053 4.04164695e-07 + 1.33333337 + 0.255693316 0.000986864557 -0.0169722866 0.966608465 + 1.66252345e-08 -0.0234416053 4.0409995e-07 + 1.36666667 + 0.194539964 0.000999574549 -0.0129204467 0.980808973 + 1.67285901e-08 -0.0234416053 4.03802346e-07 + 1.39999998 + 0.156444713 0.00100535934 -0.0103963269 0.9876315 + 1.67417618e-08 -0.0234416053 4.03828977e-07 + 1.43333328 + 0.147546366 0.00100648822 -0.00980673358 0.989006042 + 1.66883787e-08 -0.0234416053 4.03971114e-07 + 1.46666658 + 0.161125049 0.00100472989 -0.0107064405 0.986875415 + 1.66951093e-08 -0.0234416053 4.04071272e-07 + 1.49999988 + 0.18974866 0.00100038736 -0.0126029858 0.981751323 + 1.65101692e-08 -0.0234416053 4.04117799e-07 + 1.53333318 + 0.227249876 0.000993362395 -0.0150876986 0.97371912 + 1.6562165e-08 -0.0234416053 4.04181549e-07 + 1.56666648 + 0.267394662 0.000984125189 -0.0177475233 0.963423133 + 1.67458492e-08 -0.0234416053 4.03930443e-07 + 1.59999979 + 0.305162966 0.000973752409 -0.0202498324 0.952084363 + 1.65555516e-08 -0.0234416053 4.0424635e-07 + 1.63333309 + 0.324959755 0.000967647531 -0.0215614364 0.945481539 + 1.66902812e-08 -0.0234416053 4.04050837e-07 + 1.66666639 + 0.322487891 0.000968443172 -0.0213976707 0.946331203 + 1.67413212e-08 -0.0234416053 4.03991351e-07 + 1.69999969 + 0.322487891 0.000968444394 -0.0213976707 0.946331203 + 1.66616978e-08 -0.0234416071 4.0395031e-07 + 1.73333299 + 0.322487921 0.000968439272 -0.021397667 0.946331203 + 1.65081122e-08 -0.0234416053 4.04234726e-07 + 1.76666629 + 0.322487891 0.000968440727 -0.0213976689 0.946331203 + 1.66584471e-08 -0.0234416053 4.04110096e-07 + 1.79999959 + 0.322487891 0.000968441716 -0.0213976633 0.946331203 + 1.64775251e-08 -0.0234416053 4.04146078e-07 + 1.8333329 + 0.322487891 0.000968442939 -0.0213976689 0.946331203 + 1.67017689e-08 -0.0234416053 4.04102451e-07 + 1.8666662 + 0.322487891 0.000968419539 -0.0213976707 0.946331203 + 1.66616339e-08 -0.0234416053 4.04075536e-07 + 1.8999995 + "C_Neck_sjnt_0" + 58 + 0.18614687 0.0152194463 0.0514480732 0.981056035 + -2.29150026e-15 0.206347629 -0.0381180719 + 0 + 0.203588605 0.0316298753 0.0440845974 0.977551997 + -2.52242664e-15 0.206347629 -0.0381180719 + 0.0333333351 + 0.217511669 0.0429784469 0.0355956629 0.974461138 + 1.24344979e-16 0.206347629 -0.0381180719 + 0.0666666701 + 0.223063439 0.0489237607 0.026997013 0.973201096 + -2.04281032e-15 0.206347629 -0.0381180719 + 0.100000001 + 0.222149 0.0488261171 0.0183828995 0.973615944 + 9.02389261e-15 0.206347629 -0.0381180719 + 0.13333334 + 0.216799513 0.0429545268 0.0102343401 0.975217044 + -1.92912347e-14 0.206347629 -0.0381180719 + 0.166666672 + 0.209533066 0.0339219011 0.00245206826 0.977209926 + 1.17239545e-15 0.206347629 -0.0381180719 + 0.200000003 + 0.199383408 0.0237644576 -0.0076793381 0.979603291 + 5.79092328e-15 0.206347629 -0.0381180719 + 0.233333334 + 0.191041619 0.0141994115 -0.0168065056 0.981335342 + -3.0553336e-15 0.206347629 -0.0381180719 + 0.266666681 + 0.195447028 0.00561115425 -0.0159106106 0.980569184 + -8.73967579e-15 0.206347629 -0.0381180719 + 0.300000012 + 0.211634308 -0.0030340713 -0.00347481994 0.977338016 + -8.08242332e-16 0.206347629 -0.0381180719 + 0.333333343 + 0.225926563 -0.0117504504 0.0103372252 0.974018633 + -1.14752653e-14 0.206347629 -0.0381180719 + 0.366666675 + 0.230079532 -0.0160618573 0.025145432 0.972714365 + -8.38440391e-15 0.206347629 -0.0381180719 + 0.400000006 + 0.22537297 -0.0186113436 0.0329279266 0.973538101 + 1.42108544e-16 0.206347629 -0.0381180719 + 0.433333337 + 0.21642594 -0.0189146549 0.0356070213 0.975466192 + 5.47117893e-15 0.206347644 -0.0381180719 + 0.466666669 + 0.206541464 -0.015091666 0.0397176594 0.977514923 + -8.2422955e-15 0.206347629 -0.0381180719 + 0.5 + 0.194822282 -0.00873874221 0.0465460122 0.979694545 + 6.60804749e-15 0.206347629 -0.0381180719 + 0.533333361 + 0.183026299 -0.00176936528 0.0533753112 0.981656492 + 1.35003118e-15 0.206347629 -0.0381180719 + 0.566666722 + 0.17561239 0.00448617432 0.0561551601 0.98284626 + -1.12976289e-14 0.206347629 -0.0381180719 + 0.600000083 + 0.185655415 0.0155914575 0.0521684289 0.981105208 + 6.03961332e-16 0.206347629 -0.0381180719 + 0.633333445 + 0.202682421 0.0310784671 0.0445255749 0.977737963 + 1.25055521e-14 0.206347629 -0.0381180719 + 0.666666806 + 0.217583135 0.0429868698 0.0354285687 0.974450946 + -1.91846525e-15 0.206347629 -0.0381180756 + 0.700000167 + 0.223368719 0.0490851998 0.0268441867 0.973127127 + -1.10844663e-14 0.206347629 -0.0381180719 + 0.733333528 + 0.222193748 0.0488465428 0.0183982309 0.973604441 + 1.59161573e-14 0.206347629 -0.0381180719 + 0.766666889 + 0.216716498 0.0429094061 0.0102846576 0.975236893 + -1.00897074e-14 0.206347629 -0.0381180719 + 0.80000025 + 0.209498599 0.0339053497 0.00245886878 0.977217853 + -8.10018709e-15 0.206347629 -0.0381180719 + 0.833333611 + 0.199400395 0.0237736665 -0.00769354729 0.979599476 + 2.13162808e-15 0.206347629 -0.0381180719 + 0.866666973 + 0.191058099 0.0142076062 -0.0168121308 0.981331885 + 1.03739234e-14 0.206347629 -0.0381180719 + 0.900000334 + 0.195445359 0.00561033422 -0.0159063879 0.980569601 + -9.94759813e-15 0.206347629 -0.0381180719 + 0.933333695 + 0.211621791 -0.00303979428 -0.00346969534 0.977340758 + -8.43769499e-15 0.206347629 -0.0381180719 + 0.966667056 + 0.225920841 -0.0117533337 0.0103350533 0.974019945 + -4.90274486e-15 0.206347629 -0.0381180719 + 1.00000036 + 0.230097711 -0.0160540845 0.0251358859 0.972710431 + 1.13686835e-15 0.206347629 -0.0381180719 + 1.03333366 + 0.225396186 -0.0186000131 0.0329271257 0.973532915 + -6.53699286e-15 0.206347629 -0.0381180719 + 1.06666696 + 0.216403291 -0.0189231467 0.0356261432 0.975470304 + 3.41060506e-15 0.206347629 -0.0381180719 + 1.10000026 + 0.206484273 -0.0151185794 0.0397303849 0.977526069 + -5.11590748e-15 0.206347629 -0.0381180719 + 1.13333356 + 0.194832504 -0.00873823836 0.046519611 0.97969377 + 7.24753577e-15 0.206347629 -0.0381180719 + 1.16666687 + 0.183107913 -0.00173445244 0.0533462465 0.981642842 + 1.56319401e-15 0.206347629 -0.0381180719 + 1.20000017 + 0.175590649 0.00448618643 0.0561890863 0.982848167 + -9.66338131e-15 0.206347629 -0.0381180719 + 1.23333347 + 0.185655415 0.0155914575 0.0521684289 0.981105208 + 6.92779142e-15 0.206347629 -0.0381180719 + 1.26666677 + 0.202632084 0.0310478006 0.0445500612 0.977748215 + 9.5923271e-15 0.206347629 -0.0381180719 + 1.30000007 + 0.217591539 0.042987857 0.0354089104 0.974449694 + -5.25801631e-15 0.206347629 -0.0381180719 + 1.33333337 + 0.22342594 0.0491154604 0.0268155299 0.973113298 + -2.84217077e-15 0.206347629 -0.0381180719 + 1.36666667 + 0.222205684 0.0488519818 0.0184023194 0.973601282 + 5.40012472e-15 0.206347629 -0.0381180719 + 1.39999998 + 0.216686845 0.0428932868 0.0103026275 0.975243986 + -7.673861e-15 0.206347629 -0.0381180719 + 1.43333328 + 0.209482715 0.0338977128 0.00246200664 0.977221489 + -6.82121011e-15 0.206347629 -0.0381180719 + 1.46666658 + 0.199410319 0.0237790439 -0.00770183699 0.97959727 + 4.26325616e-15 0.206347629 -0.0381180719 + 1.49999988 + 0.19107011 0.0142135676 -0.0168162268 0.981329441 + 1.08002486e-14 0.206347629 -0.0381180719 + 1.53333318 + 0.195443854 0.00560959522 -0.0159025844 0.980569899 + -2.91322519e-15 0.206347629 -0.0381180719 + 1.56666648 + 0.211607873 -0.00304615172 -0.0034640003 0.977343798 + 1.48503426e-14 0.206347629 -0.0381180719 + 1.59999979 + 0.225913003 -0.0117572984 0.0103320694 0.974021733 + -3.2969182e-14 0.206347629 -0.0381180719 + 1.63333309 + 0.230128825 -0.0160407536 0.0251195189 0.972703695 + 3.69482209e-15 0.206347629 -0.0381180719 + 1.66666639 + 0.225446507 -0.0185754728 0.0329254046 0.973521829 + 1.13686835e-15 0.206347629 -0.0381180719 + 1.69999969 + 0.216339886 -0.0189469177 0.0356796682 0.975481987 + -7.95807867e-15 0.206347629 -0.0381180719 + 1.73333299 + 0.206269756 -0.0152195012 0.039778091 0.977567792 + -1.50635052e-14 0.206347629 -0.0381180719 + 1.76666629 + 0.194887072 -0.00873555802 0.04637881 0.979689598 + 9.94759813e-15 0.206347629 -0.0381180719 + 1.79999959 + 0.183801457 -0.00143779803 0.0530991368 0.98152709 + 6.25277604e-15 0.206347629 -0.0381180719 + 1.8333329 + 0.175200075 0.00448602159 0.056799937 0.982882857 + -1.50635052e-14 0.206347629 -0.0381180719 + 1.8666662 + 0.18614687 0.0152194463 0.0514480732 0.981056035 + -5.96855879e-15 0.206347629 -0.0381180719 + 1.8999995 + "L_Prop_fjnt_0" + 58 + 2.77555756e-17 -3.46944675e-18 -2.25514052e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0 + 2.76422717e-17 -3.50396933e-18 -2.25195389e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.0333333351 + 2.73104515e-17 -3.60507066e-18 -2.24262131e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.0666666701 + 2.67722547e-17 -3.7690526e-18 -2.22748473e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.100000001 + 2.6039821e-17 -3.992216e-18 -2.20688495e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.13333334 + 2.51252918e-17 -4.2708613e-18 -2.18116394e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.166666672 + 2.40408034e-17 -4.60129142e-18 -2.15066264e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.200000003 + 2.27985006e-17 -4.97980554e-18 -2.11572287e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.233333334 + 2.14105196e-17 -5.40270618e-18 -2.0766859e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.266666681 + 1.98890003e-17 -5.86629418e-18 -2.03389303e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.300000012 + 1.8246084e-17 -6.36686997e-18 -1.98768606e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.333333343 + 1.64939103e-17 -6.90073524e-18 -1.93840628e-17 1 + 0.0276746843 -0.0656316727 -0.000328583526 + 0.366666675 + 1.46446173e-17 -7.46419164e-18 -1.88639482e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.400000006 + 1.27103448e-17 -8.05354129e-18 -1.8319933e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.433333337 + 1.07032365e-17 -8.66508088e-18 -1.77554368e-17 1 + 0.027674688 -0.0656316727 -0.000328583556 + 0.466666669 + 8.63542728e-18 -9.29511705e-18 -1.71738643e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.5 + 6.51906004e-18 -9.93994735e-18 -1.65786351e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.533333361 + 4.36627204e-18 -1.05958751e-17 -1.59731637e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.566666722 + 2.18920546e-18 -1.12591995e-17 -1.53608631e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.600000083 + -1.84793921e-24 -1.19262247e-17 -1.47451512e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.633333445 + -6.19129541e-19 -1.21148641e-17 -1.45710198e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.666666806 + -1.0318801e-18 -1.22406245e-17 -1.44549332e-17 1 + 0.027674688 -0.0656316802 -0.000328583526 + 0.700000167 + -1.26253869e-18 -1.23109026e-17 -1.43900624e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.733333528 + -1.3353766e-18 -1.23330958e-17 -1.43695748e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.766666889 + -1.27467602e-18 -1.23146017e-17 -1.43866462e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.80000025 + -1.10471997e-18 -1.22628202e-17 -1.44344473e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.833333611 + -8.4978384e-19 -1.21851422e-17 -1.45061473e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.866666973 + -5.34149554e-19 -1.20889725e-17 -1.45949203e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.900000334 + -1.82097621e-19 -1.1981707e-17 -1.46939355e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.933333695 + 1.82096742e-19 -1.18707416e-17 -1.47963636e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 0.966667056 + 5.34149813e-19 -1.17634745e-17 -1.48953804e-17 1 + 0.0276746843 -0.0656316727 -0.000328583526 + 1.00000036 + 8.4978384e-19 -1.16673056e-17 -1.49841518e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.03333366 + 1.10471863e-18 -1.158963e-17 -1.50558518e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.06666696 + 1.27467633e-18 -1.15378461e-17 -1.51036529e-17 1 + 0.027674688 -0.0656316727 -0.000328583556 + 1.10000026 + 1.33537422e-18 -1.1519352e-17 -1.51207243e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.13333356 + 1.26253673e-18 -1.15415452e-17 -1.51002383e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.16666687 + 1.03188083e-18 -1.16118216e-17 -1.50353659e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.20000017 + 6.19127008e-19 -1.17375837e-17 -1.49192793e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.23333347 + -1.84793921e-24 -1.19262247e-17 -1.47451512e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.26666677 + -2.18920732e-18 -1.25932475e-17 -1.41294343e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.30000007 + -4.36627204e-18 -1.32565727e-17 -1.35171346e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.33333337 + -6.51906211e-18 -1.39124996e-17 -1.2911664e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.36666667 + -8.63542893e-18 -1.45573299e-17 -1.23164356e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.39999998 + -1.07032365e-17 -1.51873653e-17 -1.17348639e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.43333328 + -1.27103456e-17 -1.57989082e-17 -1.11703645e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.46666658 + -1.46446173e-17 -1.63882545e-17 -1.06263509e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.49999988 + -1.64939086e-17 -1.69517117e-17 -1.01062371e-17 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.53333318 + -1.8246084e-17 -1.74855774e-17 -9.61343849e-18 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.56666648 + -1.9889002e-17 -1.7986154e-17 -9.15136712e-18 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.59999979 + -2.14105213e-17 -1.84497408e-17 -8.72344095e-18 1 + 0.0276746843 -0.0656316727 -0.000328583526 + 1.63333309 + -2.27985006e-17 -1.88726418e-17 -8.33307126e-18 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.66666639 + -2.40408034e-17 -1.92511547e-17 -7.98367348e-18 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.69999969 + -2.51252935e-17 -1.95815869e-17 -7.67866138e-18 1 + 0.027674688 -0.0656316727 -0.000328583556 + 1.73333299 + -2.60398194e-17 -1.9860231e-17 -7.42144957e-18 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.76666629 + -2.67722547e-17 -2.00833944e-17 -7.21545347e-18 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.79999959 + -2.73104515e-17 -2.02473763e-17 -7.06408438e-18 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.8333329 + -2.76422717e-17 -2.03484793e-17 -6.97076104e-18 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.8666662 + -2.77555756e-17 -2.03830008e-17 -6.93889349e-18 1 + 0.0276746862 -0.0656316727 -0.000328583526 + 1.8999995 + "C_Head_sjnt_0" + 58 + -0.138976112 0.00385834323 0.0372004546 0.989589274 + -7.54507557e-15 0.0540000014 -3.19744223e-15 + 0 + -0.144145057 0.0161603708 0.0167152435 0.989283442 + -1.67199577e-14 0.0540000014 1.96820336e-14 + 0.0333333351 + -0.134486645 0.0262956414 0.000692848524 0.990566194 + 1.6475709e-14 0.0540000014 -2.21689325e-14 + 0.0666666701 + -0.120076686 0.0337971337 -0.0140142413 0.992090225 + 2.9842794e-15 0.0540000014 -9.73443551e-15 + 0.100000001 + -0.114633232 0.0375128016 -0.0236627404 0.992417276 + 2.94342323e-14 0.0540000014 -1.43529631e-14 + 0.13333334 + -0.112955257 0.0347112156 -0.0263112113 0.992644906 + -3.56337172e-14 0.0540000014 -5.10169672e-14 + 0.166666672 + -0.116531394 0.026338961 -0.027561456 0.992455065 + -5.42676984e-15 0.0540000014 8.38440391e-15 + 0.200000003 + -0.12488728 0.0166034903 -0.0241907835 0.991737008 + 1.78257406e-14 0.0540000014 1.32871492e-14 + 0.233333334 + -0.134979799 0.00906065945 -0.0180439092 0.990642607 + -1.00919266e-14 0.0540000014 3.33955085e-15 + 0.266666681 + -0.150306404 0.00110975478 -0.0116815586 0.988569856 + -2.6396662e-14 0.0540000014 1.70530253e-15 + 0.300000012 + -0.164364934 -0.00900288112 -0.00231874315 0.986355841 + -5.08038037e-15 0.0540000014 -3.32533988e-14 + 0.333333343 + -0.161874965 -0.0188573319 0.0159326885 0.986502409 + -2.88480347e-14 0.053999994 1.74793516e-14 + 0.366666675 + -0.143392518 -0.0265090354 0.0243227389 0.989011765 + -2.61834994e-14 0.0540000014 3.8369305e-15 + 0.400000006 + -0.125457272 -0.030757986 0.0345120244 0.991021395 + -8.81072999e-15 0.0540000014 -2.37321268e-14 + 0.433333337 + -0.112602085 -0.0322699323 0.045140624 0.99208957 + 3.10507167e-14 0.0540000051 3.32533988e-14 + 0.466666669 + -0.105743341 -0.0290237535 0.0492106713 0.992750883 + -3.72324377e-14 0.0540000014 -3.46744863e-14 + 0.5 + -0.104498491 -0.0216330793 0.0494507253 0.993059278 + 1.22746246e-14 0.0540000014 -3.83693084e-14 + 0.533333361 + -0.111457214 -0.0129943546 0.0498112403 0.992435038 + 1.01008086e-14 0.0540000014 1.73372432e-14 + 0.566666722 + -0.120291024 -0.00713266665 0.0472074561 0.991589963 + -3.70725653e-14 0.0540000014 -7.38964418e-15 + 0.600000083 + -0.138624504 0.00349258864 0.0367766023 0.989655793 + 2.94875229e-15 0.0540000014 -1.13686831e-14 + 0.633333445 + -0.143643185 0.0165598579 0.0170881096 0.989343464 + 2.57927004e-14 0.0540000014 3.41060493e-14 + 0.666666806 + -0.134709224 0.0262655523 0.000642189523 0.990536869 + 4.97379917e-16 0.0540000051 -6.25277604e-15 + 0.700000167 + -0.120223679 0.0336926058 -0.014116887 0.99207449 + -1.92557084e-14 0.0540000014 -3.38218325e-14 + 0.733333528 + -0.11459367 0.0375020914 -0.0236642193 0.992422283 + 4.09983157e-14 0.0540000014 2.16004989e-14 + 0.766666889 + -0.112905852 0.0347437672 -0.0262803454 0.99265027 + -2.04636299e-14 0.0540000014 -1.5347722e-14 + 0.80000025 + -0.116531603 0.0263496153 -0.0275554676 0.992455006 + -2.32347473e-14 0.0540000014 -3.26849652e-14 + 0.833333611 + -0.124901399 0.0165952966 -0.0241981056 0.99173522 + 1.20081718e-14 0.0540000014 1.0231815e-14 + 0.866666973 + -0.134983644 0.00905484427 -0.0180471204 0.990642071 + 2.90878432e-14 0.0540000014 7.38964418e-15 + 0.900000334 + -0.150302142 0.00111143477 -0.0116795506 0.988570511 + -3.0535575e-14 0.0540000014 1.25055521e-14 + 0.933333695 + -0.164360076 -0.00899833906 -0.00231677433 0.986356676 + -2.10675915e-14 0.0540000014 -3.97903934e-15 + 0.966667056 + -0.161876455 -0.0188564304 0.0159310997 0.98650223 + -1.84741105e-14 0.053999994 -9.66338131e-15 + 1.00000036 + -0.143401861 -0.0265153218 0.0243209396 0.989010274 + -8.2422955e-15 0.0540000014 -2.61479715e-14 + 1.03333366 + -0.125460759 -0.0307633113 0.0345158763 0.99102062 + -2.03925757e-14 0.0540000014 1.13686835e-15 + 1.06666696 + -0.112584718 -0.0322618149 0.0451449864 0.992091656 + 1.55608863e-14 0.0540000014 9.09494681e-15 + 1.10000026 + -0.105725728 -0.0290102884 0.0492060632 0.992753386 + -1.71951331e-14 0.0540000014 -1.30739857e-14 + 1.13333356 + -0.104521997 -0.0216392316 0.049441766 0.993057072 + 1.16173737e-14 0.0540000014 -3.97903925e-14 + 1.16666687 + -0.111492388 -0.0130142095 0.049807474 0.992431045 + 1.19326766e-14 0.0540000014 2.78532741e-14 + 1.20000017 + -0.120258413 -0.00712674577 0.047212109 0.991593778 + -2.96296326e-14 0.0540000014 -1.70530253e-15 + 1.23333347 + -0.138624504 0.00349258864 0.0367766023 0.989655793 + 2.24531494e-14 0.0540000014 -3.18323147e-14 + 1.26666677 + -0.143615291 0.0165820289 0.0171088129 0.989346743 + 2.01794131e-14 0.0540000014 1.30739857e-14 + 1.30000007 + -0.134735391 0.0262620058 0.000636229059 0.990533352 + -1.93978168e-14 0.0540000014 2.21689325e-14 + 1.33333337 + -0.120251231 0.0336729996 -0.0141361374 0.992071509 + -9.09494681e-15 0.0540000014 -5.11590748e-15 + 1.36666667 + -0.114583127 0.0374992304 -0.0236646105 0.992423594 + 2.4158452e-14 0.0540000014 -9.09494681e-15 + 1.39999998 + -0.11288821 0.0347553901 -0.026269326 0.992652178 + -1.19371176e-14 0.0540000014 -2.95585767e-14 + 1.43333328 + -0.116531685 0.0263545327 -0.0275527053 0.992454886 + -2.52242668e-14 0.0540000014 -1.30739857e-14 + 1.46666658 + -0.12490961 0.0165905152 -0.024202371 0.991734147 + 2.2311041e-14 0.0540000014 -1.87583273e-14 + 1.49999988 + -0.134986445 0.00905061699 -0.018049458 0.990641713 + 3.17390564e-14 0.0540000014 6.82121011e-15 + 1.53333318 + -0.150298312 0.00111294584 -0.0116777401 0.988571107 + -4.83169065e-15 0.0540000014 4.54747341e-15 + 1.56666648 + -0.164354652 -0.0089932913 -0.00231458503 0.98635757 + 5.01643167e-14 0.0540000014 9.09494681e-15 + 1.59999979 + -0.161878482 -0.0188551899 0.0159289129 0.986501992 + -8.24229533e-14 0.053999994 7.9580785e-14 + 1.63333309 + -0.14341788 -0.0265260898 0.0243178513 0.989007771 + 1.3926637e-14 0.0540000014 2.2737367e-15 + 1.66666639 + -0.125468343 -0.0307748541 0.0345242172 0.991019011 + 8.2422955e-15 0.0540000014 1.81898936e-14 + 1.69999969 + -0.112536095 -0.0322390795 0.0451571941 0.992097318 + -1.60582658e-14 0.0540000014 1.70530246e-14 + 1.73333299 + -0.105659656 -0.0289597791 0.0491887778 0.992762744 + -2.61479715e-14 0.0540000014 3.63797873e-14 + 1.76666629 + -0.104647398 -0.0216720812 0.0493940189 0.993045568 + 2.13873363e-14 0.0540000014 -2.50111042e-14 + 1.79999959 + -0.111791514 -0.0131830452 0.0497754179 0.992396772 + 2.14850348e-14 0.0540000014 1.13686831e-14 + 1.8333329 + -0.119671069 -0.00702055544 0.0472958051 0.991661549 + -4.67892394e-14 0.0540000014 6.82121011e-15 + 1.8666662 + -0.138976112 0.00385834393 0.0372004546 0.989589274 + -1.72661873e-14 0.0540000014 -1.70530246e-14 + 1.8999995 + "R_Middle_sjnt_0" + 58 + 0.189091444 -0.779627442 0.322238833 0.50258106 + 0.00616463134 0.0818372741 0.00971200317 + 0 + 0.163883299 -0.784236908 0.29944092 0.518121541 + 0.00616463134 0.0818372741 0.00971200317 + 0.0333333351 + 0.13623184 -0.788426399 0.273848653 0.533696234 + 0.00616463134 0.0818372741 0.00971200317 + 0.0666666701 + 0.11177282 -0.791392624 0.250737995 0.546200633 + 0.00616463134 0.0818372741 0.00971200317 + 0.100000001 + 0.0965671092 -0.792953789 0.236185014 0.553277314 + 0.00616463134 0.0818372741 0.00971200317 + 0.13333334 + 0.0936413482 -0.792577624 0.233109027 0.555618763 + 0.00616463134 0.0818372741 0.00971200317 + 0.166666672 + 0.100320928 -0.790124118 0.238863856 0.55550307 + 0.00616463134 0.0818372741 0.00971200317 + 0.200000003 + 0.113580666 -0.786175847 0.25082022 0.553277791 + 0.00616463134 0.0818372741 0.00971200317 + 0.233333334 + 0.130723342 -0.7815063 0.266666353 0.548678756 + 0.00616463134 0.0818372741 0.00971200317 + 0.266666681 + 0.149142161 -0.776977777 0.28399089 0.541674614 + 0.00616463134 0.0818372741 0.00971200317 + 0.300000012 + 0.166386962 -0.773625553 0.300375789 0.532534719 + 0.00616463134 0.0818372741 0.00971200317 + 0.333333343 + 0.180140913 -0.772638023 0.313479006 0.521833956 + 0.00616463134 0.0818372741 0.00971200317 + 0.366666675 + 0.188102648 -0.775168538 0.321086317 0.510524094 + 0.00616463134 0.0818372741 0.00971200317 + 0.400000006 + -0.187851176 0.783274412 -0.321372062 -0.497908801 + 0.00616463134 0.0818372741 0.00971200317 + 0.433333337 + -0.178084806 0.799115241 -0.314382792 -0.480483234 + 0.00616463134 0.0818372741 0.00971200317 + 0.466666669 + -0.160492033 0.820608318 -0.303213835 -0.457061976 + 0.00616463134 0.0818372741 0.00971200317 + 0.5 + -0.137922078 0.843087673 -0.291107476 -0.430624187 + 0.00616463134 0.0818372741 0.00971200317 + 0.533333361 + -0.113627426 0.863125324 -0.280300528 -0.404394805 + 0.00616463134 0.0818372741 0.00971200317 + 0.566666722 + -0.0913189575 0.878463686 -0.271851033 -0.382177114 + 0.00616463134 0.0818372741 0.00971200317 + 0.600000083 + -0.0749354064 0.88782829 -0.265824586 -0.368080169 + 0.00616463134 0.0818372741 0.00971200317 + 0.633333445 + -0.0684894845 0.890313089 -0.261953294 -0.366104186 + 0.00616463134 0.0818372741 0.00971200317 + 0.666666806 + -0.0754832849 0.881591201 -0.260482281 -0.386326551 + 0.00616463134 0.0818372741 0.00971200317 + 0.700000167 + -0.0934308618 0.860447884 -0.262469828 -0.426625937 + 0.00616463134 0.0818372741 0.00971200317 + 0.733333528 + -0.117181934 0.830757678 -0.26884225 -0.473110974 + 0.00616463134 0.0818372741 0.00971200317 + 0.766666889 + 0.141487405 -0.800224602 0.277730316 0.512335598 + 0.00616463134 0.0818372741 0.00971200317 + 0.80000025 + 0.161489025 -0.780309737 0.283826083 0.533367336 + 0.00616463134 0.0818372741 0.00971200317 + 0.833333611 + 0.178362295 -0.78799051 0.278578997 0.519279718 + 0.00616463134 0.0818372741 0.00971200317 + 0.866666973 + -0.19290857 0.817822933 -0.262393326 -0.47444886 + 0.00616463134 0.0818372741 0.00971200317 + 0.900000334 + -0.200902537 0.844308138 -0.246367395 -0.431375772 + 0.00616463134 0.0818372741 0.00971200317 + 0.933333695 + -0.196108401 0.847652793 -0.241853595 -0.429573208 + 0.00616463134 0.0818372741 0.00971200317 + 0.966667056 + -0.178549379 0.828345299 -0.247960895 -0.469552577 + 0.00616463134 0.0818372741 0.00971200317 + 1.00000036 + 0.16024971 -0.804823637 0.254676104 0.511584878 + 0.00616463134 0.0818372741 0.00971200317 + 1.03333366 + 0.153284386 -0.795108318 0.257128894 0.527438641 + 0.00616463134 0.0818372741 0.00971200317 + 1.06666696 + 0.154148966 -0.796318114 0.256843686 0.5254969 + 0.00616463134 0.0818372741 0.00971200317 + 1.10000026 + 0.154397428 -0.796244085 0.257192671 0.525365412 + 0.00616463134 0.0818372741 0.00971200317 + 1.13333356 + 0.152812466 -0.796723187 0.254989266 0.526175797 + 0.00616463134 0.0818372741 0.00971200317 + 1.16666687 + 0.137563333 -0.801029325 0.233464196 0.533781707 + 0.00616463134 0.0818372741 0.00971200317 + 1.20000017 + 0.11347837 -0.80641067 0.197274134 0.545808971 + 0.00616463134 0.0818372741 0.00971200317 + 1.23333347 + 0.105427548 -0.805547476 0.177780047 0.555313051 + 0.00616463134 0.0818372741 0.00971200317 + 1.26666677 + 0.123511493 -0.795266986 0.186580792 0.563456357 + 0.00616463134 0.0818372741 0.00971200317 + 1.30000007 + 0.155658036 -0.777710259 0.210670531 0.571450233 + 0.00616463134 0.0818372741 0.00971200317 + 1.33333337 + 0.193917707 -0.754884243 0.244811177 0.576726317 + 0.00616463134 0.0818372741 0.00971200317 + 1.36666667 + 0.231171474 -0.72991246 0.282937735 0.577696979 + 0.00616463134 0.0818372741 0.00971200317 + 1.39999998 + 0.26170218 -0.707123637 0.31826812 0.574624717 + 0.00616463134 0.0818372741 0.00971200317 + 1.43333328 + 0.280701965 -0.691980004 0.343204826 0.569719791 + 0.00616463134 0.0818372741 0.00971200317 + 1.46666658 + 0.288463742 -0.686226785 0.356154442 0.56483227 + 0.00616463134 0.0818372741 0.00971200317 + 1.49999988 + 0.289415568 -0.686920226 0.361863345 0.559852004 + 0.00616463134 0.0818372741 0.00971200317 + 1.53333318 + 0.28594318 -0.691976249 0.363153636 0.554549277 + 0.00616463134 0.0818372741 0.00971200317 + 1.56666648 + 0.278659225 -0.700552762 0.360811502 0.548989892 + 0.00616463134 0.0818372741 0.00971200317 + 1.59999979 + 0.268292159 -0.711629391 0.355864048 0.543105662 + 0.00616463134 0.0818372741 0.00971200317 + 1.63333309 + 0.255582899 -0.724207044 0.349308401 0.536828876 + 0.00616463134 0.0818372741 0.00971200317 + 1.66666639 + 0.241335288 -0.737348855 0.342082381 0.53014487 + 0.00616463134 0.0818372741 0.00971200317 + 1.69999969 + 0.226441681 -0.750211775 0.335041404 0.523119211 + 0.00616463181 0.0818372741 0.00971200317 + 1.73333299 + 0.211886123 -0.762065589 0.328943312 0.515903711 + 0.00616463134 0.0818372741 0.00971200317 + 1.76666629 + 0.198648602 -0.772365153 0.324443221 0.508652568 + 0.00616463134 0.0818372741 0.00971200317 + 1.79999959 + 0.188597709 -0.779993355 0.32212764 0.502269983 + 0.00616463134 0.0818372741 0.00971200317 + 1.8333329 + 0.189091444 -0.779627442 0.322238833 0.50258106 + 0.00616463134 0.0818372741 0.00971200317 + 1.8666662 + 0.189091444 -0.779627442 0.322238833 0.50258106 + 0.00616463134 0.0818372741 0.00971200317 + 1.8999995 + "R_Index_sjnt_1" + 58 + 0.289563119 0.0139689092 -0.0822078809 0.953519762 + 1.23537583e-10 0.0419000015 -4.34553695e-12 + 0 + 0.262007296 0.0140940687 -0.0743860826 0.962091625 + 6.96422295e-11 0.0419000015 2.23545262e-11 + 0.0333333351 + 0.231739402 0.0142160067 -0.0657944307 0.970446229 + -2.12697416e-12 0.0419000015 2.15338494e-11 + 0.0666666701 + 0.204923898 0.0143107735 -0.0581827313 0.976942301 + -6.97679761e-11 0.0419000015 -5.96399735e-11 + 0.100000001 + 0.188233927 0.0143635785 -0.0534452088 0.98056376 + -9.05100717e-11 0.0419000015 -5.43793968e-11 + 0.13333334 + 0.184987545 0.0143733034 -0.0525237136 0.981231034 + 8.22005571e-12 0.0419000015 1.86645369e-11 + 0.166666672 + 0.192255601 0.0143512851 -0.0545867831 0.979720473 + -3.84365248e-11 0.0419000015 -5.23162659e-11 + 0.200000003 + 0.206819177 0.0143044777 -0.0587207153 0.976510704 + 1.04736124e-11 0.0419000015 -5.81138679e-11 + 0.233333334 + 0.225801498 0.0142380539 -0.0641089305 0.971957266 + 7.10116384e-12 0.0419000015 5.28947892e-11 + 0.266666681 + 0.246319532 0.0141592734 -0.0699330494 0.966558635 + 2.81988825e-11 0.0419000015 3.08682489e-11 + 0.300000012 + 0.265540212 0.0140787829 -0.0753889084 0.96104461 + -5.28818586e-11 0.0419000015 -1.12426617e-10 + 0.333333343 + 0.280693412 0.0140106892 -0.0796901882 0.956380904 + -7.86372564e-11 0.0419000015 1.44841722e-10 + 0.366666675 + 0.28903684 0.0139714293 -0.0820584893 0.953692317 + -2.23150068e-10 0.0419000015 -1.61455349e-10 + 0.400000006 + 0.287834495 0.0139771663 -0.0817172006 0.954085112 + 8.20327278e-11 0.0419000015 1.17266552e-11 + 0.433333337 + 0.275902003 0.0140326675 -0.0783301294 0.95788604 + -1.42317727e-10 0.0419000052 -6.61586324e-12 + 0.466666669 + 0.255704135 0.0141207865 -0.0725969076 0.963922024 + 1.03882757e-10 0.0419000015 2.33661979e-11 + 0.5 + 0.23080796 0.0142195048 -0.0655300245 0.970686018 + 2.00390385e-10 0.0419000015 -4.69928783e-11 + 0.533333361 + 0.204721034 0.0143114422 -0.0581251495 0.976988256 + -1.00499158e-10 0.0419000015 2.61029236e-11 + 0.566666722 + 0.181046963 0.0143848807 -0.0514051579 0.982024729 + 6.62299729e-11 0.0419000015 -5.08958917e-11 + 0.600000083 + 0.16345565 0.014433369 -0.0464117788 0.985352695 + 4.00677894e-11 0.0419000015 -2.89497835e-11 + 0.633333445 + 0.15566273 0.0144532183 -0.0441997238 0.986715078 + -1.5261889e-11 0.0419000015 -1.85474379e-11 + 0.666666806 + 0.161118045 0.0144394292 -0.0457482412 0.985768557 + 6.04643419e-12 0.0419000015 1.17972828e-11 + 0.700000167 + 0.177257806 0.0143957585 -0.0503295884 0.982771277 + 1.19848662e-11 0.0419000015 5.97225351e-12 + 0.733333528 + 0.19898276 0.0143301105 -0.0564963184 0.978268206 + -8.57767156e-12 0.0419000015 8.2849283e-12 + 0.766666889 + 0.221114129 0.0142550319 -0.0627783909 0.973120868 + 9.62145901e-12 0.0419000015 -5.8162186e-12 + 0.80000025 + 0.238719061 0.0141893076 -0.067775622 0.968616724 + -1.48743018e-10 0.0419000015 -1.68864749e-11 + 0.833333611 + 0.244267195 0.0141674848 -0.069350481 0.967121184 + 1.32024669e-10 0.0419000015 1.36486733e-11 + 0.866666973 + 0.241179153 0.0141796982 -0.0684739277 0.967958093 + -2.80041944e-11 0.0419000015 3.46676646e-11 + 0.900000334 + 0.244241968 0.0141675835 -0.069343321 0.967128098 + -2.98047587e-10 0.0419000015 -7.05608696e-11 + 0.933333695 + 0.275902748 0.0140326647 -0.078330338 0.957885802 + 1.76792553e-10 0.0419000015 -1.5961632e-12 + 0.966667056 + 0.336790621 0.013721941 -0.0956135094 0.93661195 + -1.76302705e-11 0.0419000015 2.16414539e-10 + 1.00000036 + 0.391222805 0.0133837918 -0.111064173 0.91347158 + 1.97883307e-11 0.0419000015 -7.91231941e-11 + 1.03333366 + 0.410495192 0.0132495686 -0.116534658 0.90428859 + -4.03286987e-11 0.0419000015 -4.65718132e-12 + 1.06666696 + 0.408084214 0.0132667907 -0.115850307 0.905466795 + -8.92998731e-11 0.0419000052 3.77747243e-11 + 1.10000026 + 0.408871055 0.0132611832 -0.116073646 0.905083179 + 5.64921269e-11 0.0419000015 2.52171613e-12 + 1.13333356 + 0.40396148 0.0132959513 -0.114680044 0.907461762 + 1.27442945e-10 0.0419000015 8.75175453e-12 + 1.16666687 + 0.35472697 0.0136170238 -0.100704789 0.929431021 + 6.7685163e-11 0.0419000015 -2.57686841e-11 + 1.20000017 + 0.265051037 0.0140809286 -0.0752500594 0.961190462 + 6.90698679e-11 0.0419000015 -8.12437409e-11 + 1.23333347 + 0.199216366 0.0143293589 -0.0565626249 0.978216827 + 6.90289423e-11 0.0419000015 -6.92750718e-12 + 1.26666677 + 0.1783012 0.0143927857 -0.0506257601 0.98256737 + -2.94866701e-11 0.0419000015 3.37024614e-12 + 1.30000007 + 0.175108701 0.0144018242 -0.0497195572 0.983187437 + 9.3826738e-11 0.0419000015 -1.22099657e-11 + 1.33333337 + 0.184112951 0.0143758981 -0.0522754565 0.981408715 + 2.42133067e-11 0.0419000015 -2.16914486e-12 + 1.36666667 + 0.199825957 0.0143274013 -0.0567356609 0.978082538 + -5.38068409e-11 0.0419000015 -8.75957033e-12 + 1.39999998 + 0.216746151 0.0142705115 -0.0615385287 0.97418201 + -3.42811265e-11 0.0419000015 -1.77362829e-11 + 1.43333328 + 0.228893355 0.0142266508 -0.0649865568 0.97117573 + -2.8786076e-11 0.0419000015 -8.42305739e-12 + 1.46666658 + 0.235518843 0.0142016551 -0.0668672398 0.969462752 + -3.11047195e-11 0.0419000015 2.74474124e-11 + 1.49999988 + 0.24068436 0.01418164 -0.0683334842 0.96809113 + -3.76070355e-11 0.0419000015 -6.06746641e-12 + 1.53333318 + 0.246128768 0.0141600389 -0.0698788911 0.966611147 + 9.29114216e-11 0.0419000015 3.34750873e-11 + 1.56666648 + 0.251613051 0.0141377551 -0.0714356229 0.965084434 + -7.87190035e-11 0.0419000015 -2.85780288e-11 + 1.59999979 + 0.257125705 0.0141148251 -0.0730004236 0.963513434 + -1.31980746e-10 0.0419000015 3.29453097e-11 + 1.63333309 + 0.262655437 0.0140912803 -0.0745700523 0.961900651 + -6.09713877e-11 0.0419000015 -3.40946819e-11 + 1.66666639 + 0.268190891 0.0140671683 -0.0761412978 0.960249126 + -1.32945382e-11 0.0419000015 -6.02740566e-11 + 1.69999969 + 0.273720711 0.0140425367 -0.0777109712 0.958561838 + -2.73438439e-10 0.0419000052 8.72648759e-11 + 1.73333299 + 0.279233932 0.0140174273 -0.0792759135 0.956842363 + 6.98173602e-11 0.0419000015 -3.96973114e-11 + 1.76666629 + 0.28477931 0.0139916223 -0.0808499753 0.955075026 + 6.76459375e-11 0.0419000015 -1.89996283e-11 + 1.79999959 + 0.289805382 0.0139677441 -0.0822766498 0.953440249 + 1.83241297e-10 0.0419000015 2.97001174e-11 + 1.8333329 + 0.289563119 0.013968912 -0.0822078809 0.953519762 + -4.40451946e-11 0.0419000015 -2.82057034e-11 + 1.8666662 + 0.289563119 0.0139689082 -0.0822078809 0.953519762 + 1.0320491e-10 0.0419000015 1.36083137e-12 + 1.8999995 + "L_Middle_sjnt_1" + 58 + 0.276966095 0.00624252623 -0.0525698848 0.959420323 + -2.44899041e-07 -0.0481087901 -7.74901594e-07 + 0 + 0.239751741 0.00630983198 -0.0455062352 0.96974659 + -2.44897223e-07 -0.0481087901 -7.74878401e-07 + 0.0333333351 + 0.215791956 0.0063477275 -0.0409584343 0.975559294 + -2.44747639e-07 -0.0481087901 -7.74903526e-07 + 0.0666666701 + 0.195505723 0.00637655193 -0.0371079072 0.979979515 + -2.44948495e-07 -0.0481087901 -7.7487897e-07 + 0.100000001 + 0.172585204 0.00640557287 -0.0327573605 0.984428942 + -2.45010142e-07 -0.0481087901 -7.74836053e-07 + 0.13333334 + 0.150161773 0.0064303712 -0.0285011753 0.988229632 + -2.44982658e-07 -0.0481087901 -7.74871978e-07 + 0.166666672 + 0.129022747 0.00645682588 -0.0244879313 0.991318226 + -2.44939997e-07 -0.0481087901 -7.74883119e-07 + 0.200000003 + 0.109954856 0.00641932245 -0.0208748672 0.99369663 + -2.44910353e-07 -0.0481087901 -7.7487897e-07 + 0.233333334 + 0.0937446728 0.00630201539 -0.0178097636 0.995417058 + -2.44780097e-07 -0.0481087901 -7.74948717e-07 + 0.266666681 + 0.0811957195 0.00621331111 -0.0154336607 0.996559322 + -2.44909643e-07 -0.0481087901 -7.74889713e-07 + 0.300000012 + 0.0757239535 0.00630989624 -0.0143861398 0.997005105 + -2.45065934e-07 -0.0481087901 -7.74925581e-07 + 0.333333343 + 0.0695833489 0.00673406105 -0.013189015 0.997466266 + -2.45145969e-07 -0.0481087901 -7.74980265e-07 + 0.366666675 + 0.0623388477 0.00752142025 -0.0117732696 0.997957289 + -2.44690341e-07 -0.0481087901 -7.74781256e-07 + 0.400000006 + 0.073127687 0.00857371185 -0.0137526514 0.997190952 + -2.44769012e-07 -0.0481087901 -7.74805642e-07 + 0.433333337 + 0.127005979 0.0097473627 -0.0237311739 0.991570175 + -2.45056327e-07 -0.0481087975 -7.74958608e-07 + 0.466666669 + 0.214029148 0.0108659277 -0.039691817 0.975960076 + -2.4487133e-07 -0.0481087901 -7.74820649e-07 + 0.5 + 0.292082995 0.011839862 -0.0537727475 0.954806745 + -2.44781774e-07 -0.0481087901 -7.74872944e-07 + 0.533333361 + 0.339634478 0.0126898168 -0.0621294044 0.938417494 + -2.44972142e-07 -0.0481087901 -7.74889884e-07 + 0.566666722 + 0.362126708 0.0133848144 -0.0659191683 0.929698765 + -2.44828868e-07 -0.0481087901 -7.74889884e-07 + 0.600000083 + 0.358143836 0.0138933994 -0.0650077462 0.931297004 + -2.44953185e-07 -0.0481087901 -7.74891078e-07 + 0.633333445 + 0.334372997 0.0140931532 -0.0606771111 0.940379977 + -2.44753039e-07 -0.0481087901 -7.74906141e-07 + 0.666666806 + 0.292533726 0.0137274349 -0.0532767624 0.954671264 + -2.44938548e-07 -0.0481087901 -7.74894204e-07 + 0.700000167 + 0.21081394 0.012810708 -0.0386883058 0.976676345 + -2.4488736e-07 -0.0481087901 -7.74884143e-07 + 0.733333528 + 0.11238575 0.0113824867 -0.0208332613 0.993381023 + -2.44714016e-07 -0.0481087901 -7.74854186e-07 + 0.766666889 + 0.0155092198 0.00967773423 -0.00292706559 0.999828637 + -2.44940452e-07 -0.0481087901 -7.74881244e-07 + 0.80000025 + -2.87515031e-05 0.00803152472 -0.000190326697 0.999967754 + -2.45039445e-07 -0.0481087901 -7.74929504e-07 + 0.833333611 + -3.31644765e-06 0.0068191709 -5.78398103e-05 0.999976754 + -2.44860018e-07 -0.0481087901 -7.74895966e-07 + 0.866666973 + 1.76391241e-05 0.00621271133 5.25126379e-05 0.999980688 + -2.45021795e-07 -0.0481087901 -7.74881926e-07 + 0.900000334 + 0.00804357976 0.00609679567 -0.00151574076 0.999947906 + -2.45046266e-07 -0.0481087901 -7.74921261e-07 + 0.933333695 + 0.124171019 0.00620353967 -0.0235869065 0.991961062 + -2.44794904e-07 -0.0481087901 -7.74826049e-07 + 0.966667056 + 0.22947681 0.00626572361 -0.0435570143 0.972318828 + -2.44958756e-07 -0.0481087901 -7.74823548e-07 + 1.00000036 + 0.299226195 0.00620662235 -0.0567779243 0.952471256 + -2.44879232e-07 -0.0481087901 -7.74960029e-07 + 1.03333366 + 0.341686815 0.00609949557 -0.0648404062 0.937554598 + -2.44732576e-07 -0.0481087901 -7.74768012e-07 + 1.06666696 + 0.374381363 0.00601414545 -0.0710461959 0.924529552 + -2.45025745e-07 -0.0481087975 -7.74912451e-07 + 1.10000026 + 0.39788875 0.00594716053 -0.0755081698 0.914301813 + -2.44986296e-07 -0.0481087901 -7.74946557e-07 + 1.13333356 + 0.414216667 0.0058977725 -0.0786073953 0.906758368 + -2.44791181e-07 -0.0481087901 -7.74866976e-07 + 1.16666687 + 0.425278187 0.00586294895 -0.0807070136 0.901437998 + -2.44915299e-07 -0.0481087901 -7.74848672e-07 + 1.20000017 + 0.432684422 0.00583900232 -0.0821128041 0.897779286 + -2.44864026e-07 -0.0481087901 -7.74904265e-07 + 1.23333347 + 0.43394354 0.00583488308 -0.0823517963 0.897149503 + -2.44880084e-07 -0.0481087901 -7.74946727e-07 + 1.26666677 + 0.427134097 0.00585699501 -0.081059292 0.900528491 + -2.44906886e-07 -0.0481087901 -7.74886246e-07 + 1.30000007 + 0.414707422 0.00589625025 -0.0787005499 0.90652591 + -2.4475861e-07 -0.0481087901 -7.74844011e-07 + 1.33333337 + 0.39898935 0.00594390603 -0.0757170767 0.91380477 + -2.44934483e-07 -0.0481087901 -7.7487573e-07 + 1.36666667 + 0.38236168 0.00599194411 -0.0725609437 0.921139836 + -2.45030606e-07 -0.0481087901 -7.74935359e-07 + 1.39999998 + 0.367536336 0.00603275793 -0.0697469264 0.927370489 + -2.44939628e-07 -0.0481087901 -7.74998455e-07 + 1.43333328 + 0.354601383 0.00606684899 -0.0672917292 0.932573318 + -2.44985756e-07 -0.0481087901 -7.7500448e-07 + 1.46666658 + 0.34155938 0.00609981176 -0.0648162216 0.937602758 + -2.44869028e-07 -0.0481087901 -7.74951559e-07 + 1.49999988 + 0.327891886 0.006132863 -0.0622219928 0.94264406 + -2.45221202e-07 -0.0481087901 -7.7486402e-07 + 1.53333318 + 0.313872635 0.00616519991 -0.0595609881 0.947575092 + -2.4491635e-07 -0.0481087901 -7.74887383e-07 + 1.56666648 + 0.299688011 0.00619633496 -0.0568685979 0.952320695 + -2.45058146e-07 -0.0481087901 -7.74932516e-07 + 1.59999979 + 0.284790009 0.00622734195 -0.0540408194 0.957045197 + -2.44783195e-07 -0.0481087901 -7.74769944e-07 + 1.63333309 + 0.275875688 0.00624507992 -0.0523487963 0.95974648 + -2.44933744e-07 -0.0481087901 -7.74943771e-07 + 1.66666639 + 0.276968628 0.00624293787 -0.052556254 0.959420323 + -2.44969982e-07 -0.0481087901 -7.74997034e-07 + 1.69999969 + 0.276968628 0.00624293834 -0.052556254 0.959420323 + -2.45104474e-07 -0.0481087975 -7.74992372e-07 + 1.73333299 + 0.276968628 0.00624293601 -0.052556254 0.959420323 + -2.44799253e-07 -0.0481087901 -7.74742375e-07 + 1.76666629 + 0.276968628 0.00624293648 -0.052556254 0.959420323 + -2.44853169e-07 -0.0481087901 -7.748813e-07 + 1.79999959 + 0.276968628 0.00624293648 -0.0525562577 0.959420323 + -2.44960376e-07 -0.0481087901 -7.74841283e-07 + 1.8333329 + 0.276968628 0.00624293787 -0.052556254 0.959420323 + -2.44957107e-07 -0.0481087901 -7.7487914e-07 + 1.8666662 + 0.276968628 0.00624293787 -0.0525562577 0.959420323 + -2.44815055e-07 -0.0481087901 -7.74910916e-07 + 1.8999995 + "R_Arm_sjnt_0" + 58 + 0.153867215 -0.362121761 0.584930062 0.709259927 + -0.0704575405 0.150702029 -0.00581940822 + 0 + 0.11835774 -0.429513454 0.555084407 0.702418029 + -0.0704575405 0.150702029 -0.00581940822 + 0.0333333351 + 0.0740975067 -0.469093829 0.539164901 0.695529819 + -0.0704575405 0.150702029 -0.00581940822 + 0.0666666701 + 0.0526559986 -0.471414477 0.528364718 0.704149544 + -0.0704575405 0.150702029 -0.00581940822 + 0.100000001 + 0.0635777116 -0.445497513 0.527549624 0.720542312 + -0.0704575405 0.150702029 -0.00581940822 + 0.13333334 + 0.10362117 -0.400977641 0.536182761 0.735518694 + -0.0704575405 0.150702029 -0.00581940822 + 0.166666672 + 0.181112215 -0.333780348 0.533402503 0.755824625 + -0.0704575405 0.150702029 -0.00581940822 + 0.200000003 + 0.284263402 -0.240379333 0.515020251 0.772118092 + -0.0704575405 0.150702029 -0.00581940822 + 0.233333334 + 0.379116565 -0.142007858 0.502842188 0.763710737 + -0.0704575405 0.150702029 -0.00581940822 + 0.266666681 + 0.4207111 -0.0501236357 0.518937349 0.742424369 + -0.0704575405 0.150702029 -0.00581940822 + 0.300000012 + 0.418478042 0.0252408832 0.547457457 0.724243999 + -0.0704575405 0.150702029 -0.00581940822 + 0.333333343 + 0.39187932 0.0773258507 0.572993934 0.715632081 + -0.0704575405 0.150702029 -0.00581940822 + 0.366666675 + 0.371040583 0.116677478 0.584041476 0.712468088 + -0.0704575405 0.150702029 -0.00581940822 + 0.400000006 + 0.34015426 0.133335248 0.596444368 0.7146824 + -0.0704575405 0.150702029 -0.00581940822 + 0.433333337 + 0.298848987 0.10137289 0.597288191 0.737332821 + -0.0704575479 0.150702044 -0.00581940869 + 0.466666669 + 0.270327151 0.0092231771 0.589625955 0.761038363 + -0.0704575405 0.150702029 -0.00581940822 + 0.5 + 0.253285229 -0.106212802 0.583362401 0.764364958 + -0.0704575405 0.150702029 -0.00581940822 + 0.533333361 + 0.234508634 -0.204391241 0.584488928 0.74940145 + -0.0704575405 0.150702029 -0.00581940822 + 0.566666722 + 0.194161117 -0.28294307 0.596661925 0.725423515 + -0.0704575405 0.150702029 -0.00581940822 + 0.600000083 + 0.153853834 -0.362146914 0.584921837 0.709256649 + -0.0704575405 0.150702029 -0.00581940822 + 0.633333445 + 0.118361361 -0.429497093 0.555054665 0.702450812 + -0.0704575405 0.150702029 -0.00581940776 + 0.666666806 + 0.0740980431 -0.469094664 0.539168537 0.695526481 + -0.0704575479 0.150702044 -0.00581940869 + 0.700000167 + 0.05265522 -0.471420646 0.52837342 0.704138875 + -0.0704575405 0.150702029 -0.00581940822 + 0.733333528 + 0.063577354 -0.445498437 0.52755028 0.720541298 + -0.0704575405 0.150702029 -0.00581940822 + 0.766666889 + 0.103621669 -0.400976181 0.536180019 0.735521376 + -0.0704575405 0.150702029 -0.00581940822 + 0.80000025 + 0.181112498 -0.333779871 0.53340143 0.755825579 + -0.0704575405 0.150702029 -0.00581940822 + 0.833333611 + 0.284263253 -0.240379393 0.515020907 0.772117615 + -0.0704575405 0.150702029 -0.00581941195 + 0.866666973 + 0.379116446 -0.142007843 0.502842844 0.76371038 + -0.0704575405 0.150702029 -0.00581940822 + 0.900000334 + 0.4207111 -0.0501236841 0.51893729 0.742424428 + -0.0704575405 0.150702029 -0.00581940822 + 0.933333695 + 0.418478251 0.0252407752 0.547457039 0.724244297 + -0.0704575405 0.150702029 -0.00581940822 + 0.966667056 + 0.39187941 0.0773257613 0.572993636 0.715632319 + -0.0704575405 0.150702029 -0.00581940822 + 1.00000036 + 0.371040374 0.116677657 0.584042013 0.71246779 + -0.0704575405 0.150702029 -0.00581940822 + 1.03333366 + 0.340153724 0.13333559 0.596445262 0.714681804 + -0.0704575405 0.150702029 -0.00581940822 + 1.06666696 + 0.298849225 0.101372808 0.597287774 0.737333059 + -0.0704575405 0.150702029 -0.00581941614 + 1.10000026 + 0.270328104 0.00922266208 0.589623809 0.761039734 + -0.0704575405 0.150702029 -0.00581940822 + 1.13333356 + 0.253285378 -0.106212877 0.583362043 0.764365196 + -0.0704575405 0.150702029 -0.00581940822 + 1.16666687 + 0.234507948 -0.20439142 0.584491909 0.749399304 + -0.0704575405 0.150702029 -0.00581940822 + 1.20000017 + 0.194160923 -0.282943457 0.596662045 0.725423276 + -0.0704575405 0.150702029 -0.00581940822 + 1.23333347 + 0.153853834 -0.362146914 0.584921837 0.709256649 + -0.0704575405 0.150702029 -0.00581940822 + 1.26666677 + 0.118361577 -0.429496229 0.555053055 0.70245266 + -0.0704575405 0.150702029 -0.00581940822 + 1.30000007 + 0.0740980878 -0.469094753 0.539168954 0.695526063 + -0.0704575405 0.150702029 -0.00581940822 + 1.33333337 + 0.0526550636 -0.471421838 0.52837503 0.704136908 + -0.0704575405 0.150702029 -0.00581940822 + 1.36666667 + 0.0635772645 -0.445498675 0.527550519 0.72054106 + -0.0704575405 0.150702029 -0.00581940822 + 1.39999998 + 0.10362184 -0.400975645 0.536179006 0.735522389 + -0.0704575405 0.150702029 -0.00581940822 + 1.43333328 + 0.181112617 -0.333779663 0.533400953 0.755825937 + -0.0704575405 0.150702029 -0.00581940822 + 1.46666658 + 0.284263194 -0.240379438 0.515021384 0.772117317 + -0.0704575405 0.150702029 -0.00581940822 + 1.49999988 + 0.379116327 -0.142007828 0.50284332 0.763710201 + -0.0704575405 0.150702029 -0.00581940822 + 1.53333318 + 0.4207111 -0.0501236729 0.51893729 0.742424428 + -0.0704575405 0.150702029 -0.00581940822 + 1.56666648 + 0.418478429 0.0252406634 0.547456563 0.724244535 + -0.0704575405 0.150702029 -0.00581940822 + 1.59999979 + 0.391879588 0.0773256123 0.572993219 0.715632498 + -0.0704575405 0.150702029 -0.00581941195 + 1.63333309 + 0.371039897 0.11667794 0.584042847 0.712467253 + -0.0704575405 0.150702029 -0.00581940822 + 1.66666639 + 0.340152562 0.13333635 0.596447349 0.714680552 + -0.0704575405 0.150702029 -0.00581940822 + 1.69999969 + 0.298849881 0.101372533 0.597286582 0.737333834 + -0.0704575405 0.150702029 -0.00581941241 + 1.73333299 + 0.270331621 0.00922071002 0.589615583 0.761044919 + -0.0704575405 0.150702029 -0.00581940822 + 1.76666629 + 0.253285855 -0.106213354 0.583360076 0.764366448 + -0.0704575405 0.150702029 -0.00581940822 + 1.79999959 + 0.234502316 -0.204393163 0.584517241 0.749380887 + -0.0704575405 0.150702029 -0.00581940822 + 1.8333329 + 0.194157273 -0.282950878 0.596665144 0.725418866 + -0.0704575405 0.150702029 -0.00581940822 + 1.8666662 + 0.153867215 -0.362121761 0.584930062 0.709259927 + -0.0704575405 0.150702029 -0.00581940822 + 1.8999995 + "R_Thumb_sjnt_1" + 58 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.45672341e-10 0.0301780477 2.16206428e-10 + 0 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.12598575e-10 0.0301780477 2.15520712e-10 + 0.0333333351 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.49693624e-10 0.0301780477 2.64783168e-10 + 0.0666666701 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -4.98741715e-10 0.0301780477 2.07104514e-10 + 0.100000001 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.02417719e-10 0.0301780477 2.14120346e-10 + 0.13333334 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -4.95312957e-10 0.0301780477 2.17595469e-10 + 0.166666672 + 0.195516601 -0.0236044526 0.0624515004 0.978425264 + -5.09464249e-10 0.0301780477 2.10501547e-10 + 0.200000003 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.55791746e-10 0.0301780477 2.25564484e-10 + 0.233333334 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.22447849e-11 0.0301780477 5.88231741e-10 + 0.266666681 + 0.195516601 -0.0236044526 0.0624515004 0.978425264 + -4.92832997e-10 0.0301780477 2.69984063e-10 + 0.300000012 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.38448397e-10 0.0301780477 1.94742347e-10 + 0.333333343 + 0.195516601 -0.0236044526 0.0624515004 0.978425264 + -5.10642917e-10 0.0301780459 -1.44748921e-10 + 0.366666675 + 0.195516601 -0.0236044526 0.0624515004 0.978425264 + -4.63648731e-10 0.0301780477 2.78755852e-10 + 0.400000006 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.20473387e-10 0.0301780477 2.1935477e-10 + 0.433333337 + 0.195516601 -0.0236044526 0.0624515004 0.978425264 + 5.4365501e-10 0.0301780477 -4.16836482e-10 + 0.466666669 + 0.195516601 -0.0236044526 0.0624515004 0.978425264 + -4.99593256e-10 0.0301780477 2.24527799e-10 + 0.5 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.46212076e-10 0.0301780477 2.08127057e-10 + 0.533333361 + 0.195516601 -0.0236044526 0.0624515004 0.978425264 + -4.99138342e-10 0.0301780477 2.45336751e-10 + 0.566666722 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.41954814e-10 0.0301780477 1.73563136e-10 + 0.600000083 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.40334222e-10 0.0301780477 1.95593694e-10 + 0.633333445 + 0.195516601 -0.0236044526 0.0624515004 0.978425264 + -5.16922116e-10 0.0301780477 2.03618095e-10 + 0.666666806 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -1.13760423e-09 0.0301780477 1.05438103e-09 + 0.700000167 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.11087117e-10 0.0301780477 2.23124338e-10 + 0.733333528 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.16732268e-10 0.0301780477 2.25338956e-10 + 0.766666889 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.12335119e-10 0.0301780477 2.23893432e-10 + 0.80000025 + 0.195516601 -0.0236044526 0.0624515004 0.978425264 + -4.92173635e-10 0.0301780477 2.04236406e-10 + 0.833333611 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + -5.82849671e-11 0.0301780477 -3.65660335e-10 + 0.866666973 + 0.195516601 -0.0236044507 0.0624515004 0.978425264 + 3.66154024e-10 0.0301780477 1.01667896e-09 + 0.900000334 + 0.196183413 -0.0241616424 0.0647455677 0.97812897 + -9.72578351e-10 0.0301780477 -9.28377375e-11 + 0.933333695 + 0.191908494 -0.0204732865 0.0499380939 0.979927659 + -5.30258115e-10 0.0301780477 2.06087522e-10 + 0.966667056 + 0.178112358 -0.00659932382 0.000493648578 0.983987927 + -4.97839769e-10 0.0301780459 -1.42002243e-10 + 1.00000036 + 0.163544595 0.01162499 -0.0545422062 0.98495847 + -5.34460587e-10 0.0301780477 2.18349214e-10 + 1.03333366 + 0.158180192 0.0193521176 -0.0755554438 0.984325111 + -4.86915896e-10 0.0301780477 2.33894737e-10 + 1.06666696 + 0.158835113 0.0183777921 -0.072968334 0.984433532 + -7.75237652e-10 0.0301780477 2.85490381e-11 + 1.10000026 + 0.158820823 0.0183818005 -0.0730004758 0.984433353 + -4.98456498e-10 0.0301780477 2.27154823e-10 + 1.13333356 + 0.158905819 0.0183593165 -0.0728110671 0.984434068 + -5.05464615e-10 0.0301780477 2.26133917e-10 + 1.16666687 + 0.159808949 0.0180991609 -0.0707647502 0.984441936 + -9.54798574e-10 0.0301780477 -1.79606441e-10 + 1.20000017 + 0.161768809 0.017421687 -0.0661383867 0.984455705 + -5.35479217e-10 0.0301780477 1.88504143e-10 + 1.23333347 + 0.164160162 0.0163483061 -0.0600930788 0.984465837 + -5.17749177e-10 0.0301780477 2.07836304e-10 + 1.26666677 + 0.166938305 0.0150024612 -0.052856952 0.984435201 + -5.0017146e-10 0.0301780477 2.31480612e-10 + 1.30000007 + 0.170249656 0.0135150468 -0.0442967303 0.984312057 + -5.82935478e-10 0.0301780477 2.55676286e-10 + 1.33333337 + 0.173813537 0.0118949478 -0.0349310525 0.98408699 + -5.15171905e-10 0.0301780477 2.25533078e-10 + 1.36666667 + 0.177353278 0.0101398733 -0.0252868626 0.983770072 + -4.39703718e-10 0.0301780477 1.78148413e-10 + 1.39999998 + 0.180599764 0.00823502894 -0.0158942714 0.983393729 + -3.83076321e-10 0.0301780477 1.31909136e-10 + 1.43333328 + 0.183263779 0.00615072204 -0.00733733131 0.983017147 + -4.45775167e-10 0.0301780477 1.96525879e-10 + 1.46666658 + 0.18529588 0.00385597488 0.000278442021 0.982675254 + -4.41623321e-10 0.0301780477 1.92392796e-10 + 1.49999988 + 0.186909199 0.00136218243 0.00734620262 0.9823488 + -2.21160677e-11 0.0301780477 6.35391628e-10 + 1.53333318 + 0.188242301 -0.00129533617 0.0140853776 0.982020795 + -9.28231436e-10 0.0301780477 -1.91477834e-10 + 1.56666648 + 0.189347953 -0.00408021547 0.0205402933 0.981686711 + -5.59099933e-10 0.0301780477 2.09630563e-10 + 1.59999979 + 0.190286577 -0.00695529394 0.0267753862 0.981338739 + -5.7133831e-10 0.0301780459 -1.70316525e-10 + 1.63333309 + 0.191117361 -0.00988236163 0.0328551047 0.980967462 + -5.06771292e-10 0.0301780477 2.35075959e-10 + 1.66666639 + 0.191898406 -0.012822099 0.0388436727 0.980561972 + -5.35042788e-10 0.0301780477 2.22590862e-10 + 1.69999969 + 0.192686841 -0.0157340355 0.0448050201 0.980110586 + -4.80172124e-10 0.0301780477 2.29159691e-10 + 1.73333299 + 0.193538949 -0.0185765103 0.0508025587 0.97960031 + -5.27127064e-10 0.0301780477 2.20677518e-10 + 1.76666629 + 0.19452472 -0.0213339608 0.0569709986 0.97900939 + -5.18650733e-10 0.0301780477 2.21638166e-10 + 1.79999959 + 0.195566967 -0.0237188544 0.062728554 0.978394687 + -9.63120805e-10 0.0301780477 -2.0042705e-10 + 1.8333329 + 0.195516601 -0.0236044526 0.0624515004 0.978425264 + -6.31996469e-11 0.0301780477 6.39713005e-10 + 1.8666662 + 0.195516601 -0.0236044526 0.0624515004 0.978425264 + -5.54140345e-10 0.0301780477 2.21369159e-10 + 1.8999995 + "L_Ring_sjnt_0" + 58 + 0.293766171 -0.620714903 0.36376667 0.62935549 + -0.006254646 -0.0797718689 0.0093988115 + 0 + 0.267523468 -0.634612024 0.340401918 0.640176058 + -0.006254646 -0.0797718689 0.0093988115 + 0.0333333351 + 0.250655413 -0.645075083 0.325349778 0.644358218 + -0.006254646 -0.0797718689 0.0093988115 + 0.0666666701 + 0.236247718 -0.654348612 0.312722325 0.646699131 + -0.006254646 -0.0797718689 0.0093988115 + 0.100000001 + 0.219611794 -0.663277149 0.298578888 0.650142133 + -0.006254646 -0.0797718689 0.0093988115 + 0.13333334 + 0.203047976 -0.670537114 0.284781873 0.654255927 + -0.006254646 -0.0797718689 0.0093988115 + 0.166666672 + 0.187202498 -0.675469577 0.27167806 0.659459829 + -0.006254646 -0.0797718689 0.0093988115 + 0.200000003 + 0.172751248 -0.676789701 0.259500474 0.666912496 + -0.006254646 -0.0797718689 0.0093988115 + 0.233333334 + 0.160456017 -0.674341798 0.248582751 0.676552773 + -0.006254646 -0.0797718689 0.0093988115 + 0.266666681 + 0.151044667 -0.669634521 0.23959744 0.686562657 + -0.006254646 -0.0797718689 0.0093988115 + 0.300000012 + 0.146977618 -0.664577603 0.235241026 0.693827033 + -0.006254646 -0.0797718689 0.0093988115 + 0.333333343 + 0.142740071 -0.661346495 0.230348229 0.699418247 + -0.006254646 -0.0797718614 0.0093988115 + 0.366666675 + 0.138617814 -0.659135044 0.223913953 0.704406679 + -0.006254646 -0.0797718689 0.0093988115 + 0.400000006 + 0.148682415 -0.654582202 0.228647321 0.705078781 + -0.006254646 -0.0797718689 0.0093988115 + 0.433333337 + 0.190282106 -0.643278658 0.261887163 0.693830252 + -0.006254646 -0.0797718763 0.00939881243 + 0.466666669 + 0.254725575 -0.622514606 0.316684574 0.668805897 + -0.006254646 -0.0797718689 0.0093988115 + 0.5 + 0.310990453 -0.599234343 0.365309983 0.640899181 + -0.006254646 -0.0797718689 0.0093988115 + 0.533333361 + 0.344223142 -0.582852483 0.394888461 0.621173561 + -0.006254646 -0.0797718689 0.0093988115 + 0.566666722 + 0.358574599 -0.575352013 0.409859926 0.610253334 + -0.006254646 -0.0797718689 0.0093988115 + 0.600000083 + 0.352957457 -0.578948379 0.410065353 0.609988749 + -0.006254646 -0.0797718689 0.0093988115 + 0.633333445 + 0.331461817 -0.591113269 0.400194466 0.616897643 + -0.006254646 -0.0797718614 0.0093988115 + 0.666666806 + 0.291612476 -0.612180173 0.384513974 0.626375735 + -0.00625464646 -0.0797718763 0.00939881243 + 0.700000167 + 0.215794951 -0.643470168 0.350798279 0.645228088 + -0.006254646 -0.0797718689 0.0093988115 + 0.733333528 + 0.122517318 -0.669159591 0.31057778 0.663894892 + -0.006254646 -0.0797718689 0.0093988115 + 0.766666889 + 0.0294112004 -0.682140946 0.271247208 0.678412676 + -0.006254646 -0.0797718689 0.0093988115 + 0.80000025 + -0.0443610176 -0.684075534 0.24003005 0.687356055 + -0.006254646 -0.0797718689 0.0093988115 + 0.833333611 + -0.080868952 -0.682689905 0.22379297 0.690877378 + -0.006254646 -0.0797718689 0.0093988115 + 0.866666973 + -0.0561567619 -0.685465217 0.231064871 0.688180923 + -0.006254646 -0.0797718689 0.0093988115 + 0.900000334 + 0.0303919427 -0.686260104 0.261459559 0.678057849 + -0.006254646 -0.0797718689 0.0093988115 + 0.933333695 + 0.147101402 -0.670418859 0.304165512 0.660592973 + -0.006254646 -0.0797718689 0.0093988115 + 0.966667056 + 0.249357119 -0.63970542 0.344383806 0.640310764 + -0.006254646 -0.0797718614 0.0093988115 + 1.00000036 + 0.314384699 -0.610299885 0.373908937 0.623609185 + -0.006254646 -0.0797718689 0.0093988115 + 1.03333366 + 0.353853852 -0.586500883 0.396971583 0.610915482 + -0.006254646 -0.0797718689 0.0093988115 + 1.06666696 + 0.384525806 -0.563638628 0.419255346 0.598895967 + -0.006254646 -0.0797718689 0.0093988115 + 1.10000026 + 0.404653996 -0.546030998 0.43809098 0.588372052 + -0.006254646 -0.0797718689 0.0093988115 + 1.13333356 + 0.414418906 -0.536589384 0.451576829 0.580006182 + -0.006254646 -0.0797718689 0.0093988115 + 1.16666687 + 0.413858265 -0.537647307 0.457906872 0.574437201 + -0.006254646 -0.0797718689 0.0093988115 + 1.20000017 + 0.401962519 -0.551283419 0.455284268 0.572039425 + -0.006254646 -0.0797718689 0.0093988115 + 1.23333347 + 0.367613971 -0.585482419 0.439376831 0.573601186 + -0.006254646 -0.0797718689 0.0093988115 + 1.26666677 + 0.305526167 -0.63525176 0.41270709 0.576872528 + -0.006254646 -0.0797718689 0.0093988115 + 1.30000007 + 0.225106269 -0.683834016 0.383424222 0.578518987 + -0.006254646 -0.0797718689 0.0093988115 + 1.33333337 + 0.139965102 -0.720055044 0.35753262 0.578014731 + -0.006254646 -0.0797718689 0.0093988115 + 1.36666667 + 0.0668631643 -0.740496039 0.338123143 0.576946914 + -0.006254646 -0.0797718689 0.0093988115 + 1.39999998 + 0.0237624329 -0.748032331 0.326239824 0.577451766 + -0.006254646 -0.0797718689 0.0093988115 + 1.43333328 + 0.0191153586 -0.747646928 0.320711553 0.58120805 + -0.006254646 -0.0797718689 0.0093988115 + 1.46666658 + 0.045007579 -0.741446733 0.319596529 0.588293493 + -0.006254646 -0.0797718689 0.0093988115 + 1.49999988 + 0.0916837677 -0.728099644 0.322765827 0.597735047 + -0.006254646 -0.0797718689 0.0093988115 + 1.53333318 + 0.150231972 -0.705958128 0.330592811 0.608080566 + -0.006254646 -0.0797718689 0.0093988115 + 1.56666648 + 0.211357713 -0.675621867 0.342407376 0.617754102 + -0.006254646 -0.0797718689 0.0093988115 + 1.59999979 + 0.268018007 -0.639823258 0.356409252 0.625911415 + -0.00625464553 -0.0797718614 0.0093988115 + 1.63333309 + 0.297381401 -0.617885113 0.364874125 0.629800916 + -0.006254646 -0.0797718689 0.0093988115 + 1.66666639 + 0.293766111 -0.620714903 0.363766611 0.62935555 + -0.006254646 -0.0797718689 0.0093988115 + 1.69999969 + 0.293766111 -0.620714903 0.363766611 0.62935555 + -0.006254646 -0.0797718689 0.0093988115 + 1.73333299 + 0.293766111 -0.620714903 0.363766611 0.62935555 + -0.006254646 -0.0797718689 0.0093988115 + 1.76666629 + 0.293766111 -0.620714903 0.363766611 0.62935555 + -0.006254646 -0.0797718689 0.0093988115 + 1.79999959 + 0.293766111 -0.620714903 0.363766611 0.62935555 + -0.006254646 -0.0797718689 0.0093988115 + 1.8333329 + 0.293766111 -0.620714903 0.363766611 0.62935555 + -0.006254646 -0.0797718689 0.0093988115 + 1.8666662 + 0.293766111 -0.620714903 0.363766611 0.62935555 + -0.006254646 -0.0797718689 0.0093988115 + 1.8999995 + "L_Arm_sjnt_0" + 58 + 0.424737036 -0.0664080605 0.573467135 0.697369218 + 0.0704552606 -0.150702849 0.00581921404 + 0 + 0.448640972 -0.0032692391 0.597716451 0.66441381 + 0.0704552606 -0.150702849 0.00581921404 + 0.0333333351 + 0.465897053 0.0405859649 0.6055668 0.643880129 + 0.0704552606 -0.150702849 0.00581921404 + 0.0666666701 + 0.478477091 0.0643907636 0.604498148 0.633636773 + 0.0704552606 -0.150702849 0.00581921404 + 0.100000001 + 0.472861081 0.0492664203 0.608327091 0.635541856 + 0.0704552606 -0.150702849 0.00581921404 + 0.13333334 + 0.462411553 -0.0208689645 0.611184061 0.642023504 + 0.0704552606 -0.150702849 0.00581921404 + 0.166666672 + 0.437200338 -0.115039945 0.617339909 0.643826902 + 0.0704552606 -0.150702849 0.00581921404 + 0.200000003 + 0.400267959 -0.20847854 0.61563915 0.645995975 + 0.0704552606 -0.150702849 0.00581921404 + 0.233333334 + 0.334362119 -0.288864285 0.605144203 0.662238538 + 0.0704552606 -0.150702849 0.00581921404 + 0.266666681 + 0.257802933 -0.362723202 0.576847851 0.684993565 + 0.0704552606 -0.150702849 0.00581921404 + 0.300000012 + 0.175519183 -0.417841285 0.551845133 0.700048983 + 0.0704552606 -0.150702849 0.00581921404 + 0.333333343 + 0.108004734 -0.453131527 0.53633374 0.703813255 + 0.0704552606 -0.150702849 0.0058192173 + 0.366666675 + 0.0587215237 -0.469603121 0.529911995 0.703717232 + 0.0704552606 -0.150702849 0.00581921404 + 0.400000006 + 0.0531244278 -0.469540834 0.516736746 0.713927448 + 0.0704552606 -0.150702849 0.00581921404 + 0.433333337 + 0.0790703148 -0.450428218 0.511714339 0.727331221 + 0.0704552606 -0.150702849 0.0058192187 + 0.466666669 + 0.128031611 -0.409709573 0.51910162 0.739107192 + 0.0704552606 -0.150702849 0.00581921404 + 0.5 + 0.20006749 -0.344377667 0.527180791 0.750638068 + 0.0704552606 -0.150702849 0.00581921404 + 0.533333361 + 0.298005432 -0.253771126 0.529237807 0.752794981 + 0.0704552606 -0.150702849 0.00581921404 + 0.566666722 + 0.383347392 -0.150491834 0.541770041 0.732722521 + 0.0704552606 -0.150702849 0.00581921404 + 0.600000083 + 0.424729079 -0.0664367229 0.573466778 0.697371721 + 0.0704552606 -0.150702849 0.00581921404 + 0.633333445 + 0.448625356 -0.00325530721 0.59775269 0.664391756 + 0.0704552606 -0.150702849 0.00581921311 + 0.666666806 + 0.465899259 0.0405856706 0.605562925 0.643882275 + 0.070455268 -0.150702864 0.00581921497 + 0.700000167 + 0.478482932 0.064385213 0.60448724 0.63364327 + 0.0704552606 -0.150702849 0.00581921404 + 0.733333528 + 0.472861558 0.0492654555 0.608326077 0.635542512 + 0.0704552606 -0.150702849 0.00581921404 + 0.766666889 + 0.462410122 -0.0208675396 0.61118716 0.642021596 + 0.0704552606 -0.150702849 0.00581921404 + 0.80000025 + 0.43719995 -0.115039423 0.617341101 0.643826127 + 0.0704552606 -0.150702849 0.00581921404 + 0.833333611 + 0.400268137 -0.2084786 0.615638494 0.645996451 + 0.0704552606 -0.150702849 0.0058192173 + 0.866666973 + 0.334362268 -0.288864315 0.605143666 0.662239015 + 0.0704552606 -0.150702849 0.00581921404 + 0.900000334 + 0.257802933 -0.362723231 0.576847851 0.684993565 + 0.0704552606 -0.150702849 0.00581921404 + 0.933333695 + 0.175519124 -0.417841464 0.551845491 0.700048625 + 0.0704552606 -0.150702849 0.00581921404 + 0.966667056 + 0.108004712 -0.453131646 0.536333919 0.703812957 + 0.0704552606 -0.150702849 0.0058192173 + 1.00000036 + 0.0587215684 -0.469602823 0.529911637 0.703717709 + 0.0704552606 -0.150702849 0.00581921404 + 1.03333366 + 0.0531245321 -0.469540179 0.51673615 0.713928342 + 0.0704552606 -0.150702849 0.00581921404 + 1.06666696 + 0.0790702701 -0.450428456 0.511714697 0.727330863 + 0.0704552606 -0.150702849 0.0058192173 + 1.10000026 + 0.128031269 -0.409710765 0.519103348 0.739105403 + 0.0704552606 -0.150702849 0.00581921404 + 1.13333356 + 0.200067416 -0.344377816 0.527181089 0.750637829 + 0.0704552606 -0.150702849 0.00581921404 + 1.16666687 + 0.298006117 -0.253770769 0.529234767 0.752797067 + 0.0704552606 -0.150702849 0.00581921404 + 1.20000017 + 0.383347332 -0.150492206 0.541769743 0.7327227 + 0.0704552606 -0.150702849 0.00581921404 + 1.23333347 + 0.424729079 -0.0664367229 0.573466778 0.697371721 + 0.0704552606 -0.150702849 0.00581921404 + 1.26666677 + 0.448624462 -0.00325452816 0.597754776 0.664390564 + 0.0704552606 -0.150702849 0.00581921404 + 1.30000007 + 0.465899467 0.0405856296 0.605562389 0.643882573 + 0.0704552606 -0.150702849 0.00581921404 + 1.33333337 + 0.478484094 0.0643841699 0.604485214 0.633644521 + 0.0704552606 -0.150702849 0.00581921404 + 1.36666667 + 0.472861677 0.0492651872 0.608325839 0.635542631 + 0.0704552606 -0.150702849 0.00581921404 + 1.39999998 + 0.462409645 -0.020867005 0.611188293 0.642020881 + 0.0704552606 -0.150702849 0.00581921404 + 1.43333328 + 0.437199831 -0.115039214 0.617341638 0.643825829 + 0.0704552606 -0.150702849 0.00581921404 + 1.46666658 + 0.400268197 -0.208478674 0.615638077 0.64599669 + 0.0704552606 -0.150702849 0.00581921404 + 1.49999988 + 0.334362328 -0.288864285 0.605143249 0.662239313 + 0.0704552606 -0.150702849 0.00581921404 + 1.53333318 + 0.257802933 -0.362723261 0.576847911 0.684993505 + 0.0704552606 -0.150702849 0.00581921404 + 1.56666648 + 0.175519064 -0.417841673 0.551845908 0.700048208 + 0.0704552606 -0.150702849 0.00581921404 + 1.59999979 + 0.108004659 -0.453131914 0.536334217 0.703812599 + 0.0704552606 -0.150702849 0.00581921311 + 1.63333309 + 0.0587216429 -0.469602346 0.529910982 0.703718543 + 0.0704552606 -0.150702849 0.00581921404 + 1.66666639 + 0.0531247407 -0.469538778 0.516734719 0.713930249 + 0.0704552606 -0.150702849 0.00581921404 + 1.69999969 + 0.0790701732 -0.450429142 0.511715591 0.72732985 + 0.070455268 -0.150702864 0.00581921032 + 1.73333299 + 0.128029972 -0.409715116 0.519109905 0.739098668 + 0.0704552606 -0.150702849 0.00581921404 + 1.76666629 + 0.200066969 -0.344378769 0.527182639 0.750636399 + 0.0704552606 -0.150702849 0.00581921404 + 1.79999959 + 0.298011601 -0.253766984 0.529208779 0.752814412 + 0.0704552606 -0.150702849 0.00581921404 + 1.8333329 + 0.383346587 -0.150499269 0.541763842 0.732726038 + 0.0704552606 -0.150702849 0.00581921404 + 1.8666662 + 0.424737036 -0.0664080828 0.573467135 0.697369218 + 0.0704552606 -0.150702849 0.00581921404 + 1.8999995 + "R_Foot_sjnt_2" + 58 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.0333333351 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.0666666701 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.100000001 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.13333334 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.166666672 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.200000003 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.233333334 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.266666681 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.300000012 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.333333343 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.366666675 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.400000006 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.433333337 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.466666669 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.5 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.533333361 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.566666722 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.600000083 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.633333445 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.666666806 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.700000167 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.733333528 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.766666889 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.80000025 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.833333611 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.866666973 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.900000334 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.933333695 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 0.966667056 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.00000036 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.03333366 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.06666696 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.10000026 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.13333356 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.16666687 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.20000017 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.23333347 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.26666677 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.30000007 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.33333337 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.36666667 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.39999998 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.43333328 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.46666658 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.49999988 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.53333318 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.56666648 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.59999979 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.63333309 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.66666639 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.69999969 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.73333299 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.76666629 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.79999959 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.8333329 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.8666662 + 0 0 0 1 + 1.7763568e-17 0.0488717034 -3.99680272e-17 + 1.8999995 + "hipsBone" + 58 + 0.000272292178 0.760241807 0.64795953 -0.0466999002 + 0.013243543 -0.0308213159 0.851245046 + 0 + -0.0163031425 0.766182244 0.641981244 -0.023645876 + 0.0176583696 -0.0287263021 0.868834138 + 0.0333333351 + -0.018313447 0.776000202 0.630433917 0.00643241219 + 0.0201304648 -0.0207075402 0.890376568 + 0.0666666701 + -0.00759785576 0.78695035 0.616381168 0.0269405432 + 0.0175487809 -0.0170229077 0.906702459 + 0.100000001 + 0.00820448622 0.792588711 0.608974576 0.0297643077 + 0.00999190286 -0.0185480062 0.909280539 + 0.13333334 + 0.0172645543 0.788479686 0.614061296 0.0305044595 + 0.00144937017 -0.0175728202 0.895519793 + 0.166666672 + 0.0153472628 0.777892828 0.626134455 0.051018931 + -0.0035362835 -0.0206144527 0.872095108 + 0.200000003 + 0.00450530834 0.766782999 0.635545075 0.0900330245 + -0.00299753621 -0.0294774435 0.850233614 + 0.233333334 + -0.00818071421 0.763149738 0.63463068 0.121570908 + 0.00129141682 -0.0407942869 0.838667452 + 0.266666681 + -0.0114193782 0.76998806 0.625456989 0.125664815 + 0.00533422222 -0.0510200821 0.841033697 + 0.300000012 + -0.00544863986 0.781605184 0.615096807 0.103536107 + 0.00701163569 -0.0511259921 0.857015312 + 0.333333343 + -0.00292821764 0.791362464 0.607589841 0.067612879 + 0.00798334926 -0.0372428708 0.881763518 + 0.366666675 + -0.0108198281 0.798027694 0.601407707 0.0366535895 + 0.0113386596 -0.0228118077 0.905003846 + 0.400000006 + -0.026201142 0.799274206 0.599921823 0.02383646 + 0.0178007707 -0.0151842711 0.915369689 + 0.433333337 + -0.0404792354 0.791549921 0.609398663 0.0210572928 + 0.024590645 -0.00816137344 0.90775764 + 0.466666669 + -0.0456856675 0.778165638 0.626321614 0.00960867386 + 0.0279092155 -0.00218384224 0.886674583 + 0.5 + -0.0378260911 0.765471935 0.642158806 -0.0159356166 + 0.0259267632 -0.00390708447 0.86305511 + 0.533333361 + -0.0185023192 0.757285118 0.651265264 -0.0450612567 + 0.0201454181 -0.0107881762 0.847186267 + 0.566666722 + -0.00269381772 0.755205095 0.652847588 -0.0587199852 + 0.0147998501 -0.0229049698 0.843435526 + 0.600000083 + -0.00243845792 0.758998096 0.64919138 -0.0496643819 + 0.0138111366 -0.0307618324 0.851313055 + 0.633333445 + -0.0137083931 0.766252875 0.641940296 -0.0241083149 + 0.0171250328 -0.028669836 0.868579865 + 0.666666806 + -0.0183808133 0.776038349 0.630382061 0.00671466719 + 0.0200359989 -0.0206542183 0.890176833 + 0.700000167 + -0.00829298329 0.786939681 0.616372585 0.0272414926 + 0.0177031029 -0.0169725195 0.906821132 + 0.733333528 + 0.00809734873 0.792577982 0.608990669 0.0297497958 + 0.0100508248 -0.0185012091 0.909362495 + 0.766666889 + 0.0174478926 0.788478851 0.614062011 0.030407019 + 0.00141567714 -0.0175289549 0.895497859 + 0.80000025 + 0.0154217966 0.777896404 0.626130044 0.0509953238 + -0.00356214191 -0.0205734801 0.872063398 + 0.833333611 + 0.00446963543 0.766781449 0.635544062 0.0900553688 + -0.00299403002 -0.029439602 0.850231707 + 0.866666973 + -0.00821503904 0.763146281 0.634631574 0.121585861 + 0.00130112853 -0.0407596491 0.838678181 + 0.900000334 + -0.011416683 0.769987762 0.625457406 0.125664577 + 0.00533647882 -0.0509881899 0.841039181 + 0.933333695 + -0.00542369531 0.781607628 0.615095615 0.103525594 + 0.00700573251 -0.0510977656 0.857009053 + 0.966667056 + -0.00291454792 0.791364074 0.607589126 0.0676002577 + 0.00797636434 -0.037217848 0.881751239 + 1.00000036 + -0.010853868 0.798025727 0.601409256 0.0366620459 + 0.0113444002 -0.0227896832 0.90500778 + 1.03333366 + -0.0262524858 0.799271166 0.59992218 0.0238708127 + 0.0178191755 -0.0151655041 0.915398598 + 1.06666696 + -0.0404414907 0.791552603 0.60939759 0.0210631415 + 0.0245905258 -0.00814550277 0.907768369 + 1.10000026 + -0.0455654711 0.778172791 0.626322567 0.00954253878 + 0.0278731268 -0.00217132573 0.886625051 + 1.13333356 + -0.037832804 0.765470028 0.6421597 -0.0159777589 + 0.0259083416 -0.00389777706 0.86301136 + 1.16666687 + -0.0186782535 0.757279575 0.65127182 -0.0449870974 + 0.0201897956 -0.0107817734 0.847237706 + 1.20000017 + -0.00270398124 0.755191386 0.652864635 -0.0587064587 + 0.0148222456 -0.0229017772 0.843472421 + 1.23333347 + -0.00243845792 0.758998096 0.64919138 -0.0496643819 + 0.0138111366 -0.0307621378 0.851313055 + 1.26666677 + -0.0135642383 0.76625669 0.641937912 -0.0241340045 + 0.0170954037 -0.0286661722 0.868565738 + 1.30000007 + -0.0183887407 0.776042879 0.630375981 0.0067478749 + 0.0200248826 -0.020647807 0.890153229 + 1.33333337 + -0.00842331909 0.786937654 0.616370916 0.0272979215 + 0.0177320391 -0.0169630591 0.906843305 + 1.36666667 + 0.00806877855 0.792575181 0.608994901 0.0297459271 + 0.0100665372 -0.0184880886 0.90938431 + 1.39999998 + 0.0175133683 0.788478494 0.61406225 0.0303722192 + 0.0014036441 -0.0175133906 0.895489991 + 1.43333328 + 0.0154562024 0.777898073 0.626128078 0.0509844311 + -0.00357407657 -0.0205545593 0.872048855 + 1.46666658 + 0.00444882782 0.766780496 0.635543525 0.0900683925 + -0.00299198506 -0.0294179339 0.850230515 + 1.49999988 + -0.00823999569 0.763143778 0.63463217 0.121596739 + 0.00130819133 -0.0407343172 0.838686049 + 1.53333318 + -0.0114142569 0.769987464 0.625457823 0.125664338 + 0.0053385091 -0.0509601161 0.841044128 + 1.56666648 + -0.00539598474 0.78161037 0.615094304 0.103513896 + 0.00699917227 -0.0510663241 0.85700202 + 1.59999979 + -0.00289575243 0.791366458 0.607588172 0.0675829202 + 0.00796676055 -0.0371833593 0.881734371 + 1.63333309 + -0.0109122219 0.79802227 0.601411879 0.0366765372 + 0.0113542443 -0.0227518436 0.905014336 + 1.66666639 + -0.0263637286 0.79926461 0.599923074 0.0239452403 + 0.0178590529 -0.0151249189 0.915461183 + 1.69999969 + -0.0403357968 0.791560054 0.609394372 0.0210795123 + 0.0245901886 -0.00810155179 0.907798767 + 1.73333299 + -0.0451146848 0.778199494 0.626325667 0.00929451641 + 0.0277377963 -0.00212431257 0.886439502 + 1.76666629 + -0.0378685892 0.765459716 0.64216423 -0.0162025094 + 0.0258100759 -0.00384742487 0.862778008 + 1.79999959 + -0.0201736949 0.757231355 0.651326537 -0.0443566963 + 0.0205669906 -0.0107281134 0.847674608 + 1.8333329 + -0.00288697868 0.754944623 0.653170943 -0.0584630445 + 0.0152253686 -0.022845814 0.84413749 + 1.8666662 + 0.000272288511 0.760241807 0.64795953 -0.0466998965 + 0.0132435439 -0.0308212321 0.851245046 + 1.8999995 + "C_Spine_sjnt_0" + 58 + 0.130010828 -0.0071532568 0.00836320408 0.991451502 + 6.05737655e-15 0.0554419272 -6.75015591e-16 + 0 + 0.125643551 -0.0175427962 0.00838094112 0.991884947 + -5.45785637e-15 0.0554419272 8.34887712e-16 + 0.0333333351 + 0.119852081 -0.0224581938 0.00805038586 0.992505074 + 8.52651264e-16 0.0554419272 1.13686831e-14 + 0.0666666701 + 0.112968571 -0.0246803947 0.00234812149 0.993289173 + 2.30926381e-16 0.0554419272 -4.65405472e-15 + 0.100000001 + 0.11035499 -0.0345693827 -0.0120767755 0.993217468 + -9.14823747e-16 0.0554419272 -8.77520289e-15 + 0.13333334 + 0.111270383 -0.0408963226 -0.0174895804 0.992794335 + 7.46069849e-16 0.0554419272 1.84741105e-15 + 0.166666672 + 0.115202099 -0.0274940059 -0.00742905028 0.99293375 + -3.3217873e-15 0.0554419272 -1.13686835e-15 + 0.200000003 + 0.122709401 -0.007354022 0.0129127353 0.992331386 + 6.3415938e-15 0.0554419272 1.23634437e-14 + 0.233333334 + 0.126175687 0.00383343198 0.0318423361 0.991489351 + -5.24025276e-15 0.0554419272 1.70530253e-15 + 0.266666681 + 0.124585055 0.0138688823 0.0381182246 0.991379499 + -6.43041156e-15 0.0554419272 -1.03739234e-14 + 0.300000012 + 0.120223977 0.0241841581 0.0391423143 0.991680026 + 3.5527136e-17 0.0554419272 2.2737367e-15 + 0.333333343 + 0.114608012 0.0275104661 0.0428653322 0.992104232 + 3.30402375e-15 0.0554419234 4.54747341e-15 + 0.366666675 + 0.108103834 0.0281225555 0.0440389775 0.992765486 + -2.87769809e-15 0.0554419272 -1.25055521e-14 + 0.400000006 + 0.104525983 0.0338144302 0.0532320775 0.99252063 + -6.12843076e-15 0.0554419272 -5.11590748e-15 + 0.433333337 + 0.107629307 0.0439876728 0.0628613383 0.991226256 + 4.97379907e-15 0.0554419309 -7.10542736e-15 + 0.466666669 + 0.112888344 0.041158542 0.0620269328 0.990815282 + -5.25801631e-15 0.0554419272 -2.84217088e-16 + 0.5 + 0.119414173 0.0273347292 0.0531343557 0.991044879 + -4.61852761e-15 0.0554419272 3.97903934e-15 + 0.533333361 + 0.126395166 0.00932272244 0.0280570146 0.991539299 + 3.8369305e-15 0.0554419272 -8.52651264e-16 + 0.566666722 + 0.13132301 0.00177012885 0.0133008538 0.991248906 + -2.64677171e-15 0.0554419272 -4.54747341e-15 + 0.600000083 + 0.130010828 -0.0071532568 0.00836320408 0.991451502 + 5.91526814e-15 0.0554419272 7.673861e-15 + 0.633333445 + 0.125643551 -0.0175427962 0.00838094112 0.991884947 + -5.63105089e-15 0.0554419272 -8.52651264e-16 + 0.666666806 + 0.119852081 -0.0224581938 0.00805038493 0.992505074 + 6.03961332e-16 0.0554419309 8.52651232e-15 + 0.700000167 + 0.112968571 -0.0246803947 0.00234812102 0.993289173 + 1.33226755e-16 0.0554419272 -2.2737367e-15 + 0.733333528 + 0.11035499 -0.0345693827 -0.0120767774 0.993217468 + -6.57252039e-16 0.0554419272 -1.42108547e-14 + 0.766666889 + 0.111270383 -0.0408963226 -0.0174895804 0.992794335 + 1.56319401e-15 0.0554419272 7.38964418e-15 + 0.80000025 + 0.115202099 -0.0274940059 -0.00742905121 0.99293375 + -3.8014034e-15 0.0554419272 2.2737367e-15 + 0.833333611 + 0.122709401 -0.007354022 0.0129127353 0.992331386 + 6.89226432e-15 0.0554419272 1.42108547e-14 + 0.866666973 + 0.126175687 0.00383343175 0.0318423361 0.991489351 + -5.54223314e-15 0.0554419272 3.97903934e-15 + 0.900000334 + 0.124585055 0.0138688833 0.0381182171 0.991379499 + -5.40012472e-15 0.0554419272 -2.2737367e-15 + 0.933333695 + 0.120223977 0.0241841581 0.0391423143 0.991680026 + -8.52651264e-16 0.0554419272 8.52651232e-15 + 0.966667056 + 0.114608012 0.0275104661 0.0428653322 0.992104232 + 3.0553336e-15 0.0554419234 1.5347722e-14 + 1.00000036 + 0.108103834 0.0281225555 0.0440389775 0.992765486 + -2.77111657e-15 0.0554419272 -1.36424202e-14 + 1.03333366 + 0.104525983 0.0338144302 0.0532320775 0.99252063 + -5.95079524e-15 0.0554419272 3.41060506e-15 + 1.06666696 + 0.107629307 0.0439876728 0.0628613383 0.991226256 + 4.65405472e-15 0.0554419272 -5.68434176e-16 + 1.10000026 + 0.112888344 0.041158542 0.0620269328 0.990815282 + -4.61852761e-15 0.0554419272 5.68434176e-16 + 1.13333356 + 0.119414173 0.0273347292 0.0531343557 0.991044879 + -4.405365e-15 0.0554419272 1.25055521e-14 + 1.16666687 + 0.126395166 0.00932272244 0.0280570146 0.991539299 + 4.05009354e-15 0.0554419272 1.19371176e-14 + 1.20000017 + 0.13132301 0.00177012885 0.0133008538 0.991248906 + -3.26849643e-15 0.0554419272 4.54747341e-15 + 1.23333347 + 0.130010828 -0.0071532568 0.00836320408 0.991451502 + 6.78568301e-15 0.0554419272 2.21689325e-14 + 1.26666677 + 0.125643551 -0.0175427962 0.00838094112 0.991884947 + -4.405365e-15 0.0554419272 -8.52651232e-15 + 1.30000007 + 0.119852081 -0.0224581938 0.00805038493 0.992505074 + 6.57252039e-16 0.0554419272 1.70530246e-14 + 1.33333337 + 0.112968571 -0.0246803947 0.00234812102 0.993289173 + 4.70734537e-16 0.0554419272 1.93267626e-14 + 1.36666667 + 0.11035499 -0.0345693827 -0.0120767774 0.993217468 + -2.13162816e-16 0.0554419272 4.54747341e-15 + 1.39999998 + 0.111270383 -0.0408963226 -0.0174895804 0.992794335 + 1.20792266e-15 0.0554419272 -6.82121011e-15 + 1.43333328 + 0.115202099 -0.0274940059 -0.00742905121 0.99293375 + -2.84217077e-15 0.0554419272 -1.13686835e-15 + 1.46666658 + 0.122709401 -0.007354022 0.0129127353 0.992331386 + 7.95807867e-15 0.0554419272 5.57065482e-14 + 1.49999988 + 0.126175687 0.00383343175 0.0318423361 0.991489351 + -7.38964418e-15 0.0554419272 -5.68434155e-15 + 1.53333318 + 0.124585055 0.0138688833 0.0381182171 0.991379499 + -5.11590748e-15 0.0554419272 -1.13686835e-15 + 1.56666648 + 0.120223977 0.0241841581 0.0391423143 0.991680026 + -1.06581404e-15 0.0554419272 1.13686831e-14 + 1.59999979 + 0.114608012 0.0275104661 0.0428653322 0.992104232 + 3.41060506e-15 0.0554419272 2.16004989e-14 + 1.63333309 + 0.108103834 0.0281225555 0.0440389775 0.992765486 + -2.75335302e-15 0.0554419272 -3.18323147e-14 + 1.66666639 + 0.104525983 0.0338144302 0.0532320775 0.99252063 + -5.79092328e-15 0.0554419272 -7.95807867e-15 + 1.69999969 + 0.107629307 0.0439876728 0.0628613383 0.991226256 + 4.19220195e-15 0.0554419272 -5.68434155e-15 + 1.73333299 + 0.112888344 0.041158542 0.0620269328 0.990815282 + -5.11590748e-15 0.0554419272 1.47792884e-14 + 1.76666629 + 0.119414173 0.0273347292 0.0531343557 0.991044879 + -2.41584533e-15 0.0554419272 0 + 1.79999959 + 0.126395166 0.00932272244 0.0280570146 0.991539299 + -8.52651264e-16 0.0554419272 0 + 1.8333329 + 0.13132301 0.00177012861 0.0133008538 0.991248906 + -3.19744223e-15 0.0554419272 3.86535252e-14 + 1.8666662 + 0.130010828 -0.0071532568 0.00836320408 0.991451502 + 6.96331852e-15 0.0554419272 -3.524292e-14 + 1.8999995 + "R_Clavicle_sjnt_0" + 58 + -0.22361064 -0.13097991 0.594681561 0.761049569 + -0.00729848538 0.20885624 0.0306759924 + 0 + -0.220891818 -0.133733302 0.599326849 0.757713377 + -0.00729848538 0.20885624 0.0306759924 + 0.0333333351 + -0.211086586 -0.129971951 0.601281404 0.759612083 + -0.00729848538 0.20885624 0.0306759924 + 0.0666666701 + -0.202840969 -0.128254831 0.605855048 0.758515656 + -0.00729848538 0.20885624 0.0306759924 + 0.100000001 + -0.201585829 -0.122579135 0.612428367 0.754499197 + -0.00729848538 0.20885624 0.0306759924 + 0.13333334 + -0.208742529 -0.116696097 0.616138756 0.750454307 + -0.00729848538 0.20885624 0.0306759924 + 0.166666672 + -0.214411482 -0.123287156 0.619639874 0.744898975 + -0.00729848538 0.20885624 0.0306759924 + 0.200000003 + -0.214462012 -0.131945103 0.62411499 0.739646614 + -0.00729848538 0.20885624 0.0306759924 + 0.233333334 + -0.209681153 -0.130979642 0.618575752 0.745816469 + -0.00729848538 0.20885624 0.0306759924 + 0.266666681 + -0.206353277 -0.126806736 0.604959309 0.758526623 + -0.00729848538 0.20885624 0.0306759924 + 0.300000012 + -0.209215239 -0.129629135 0.593831718 0.766021729 + -0.00729848538 0.20885624 0.0306759924 + 0.333333343 + -0.210440964 -0.131583795 0.582484901 0.774023116 + -0.00729848538 0.20885624 0.0306759924 + 0.366666675 + -0.213776946 -0.140323669 0.575685143 0.776656568 + -0.00729848538 0.20885624 0.0306759924 + 0.400000006 + -0.218163997 -0.135190398 0.560951591 0.787058711 + -0.00729848538 0.20885624 0.0306759924 + 0.433333337 + -0.221402049 -0.116729975 0.552743077 0.794877589 + -0.00729848584 0.208856255 0.0306759924 + 0.466666669 + -0.222483382 -0.104098715 0.554898322 0.794828594 + -0.00729848538 0.20885624 0.0306759924 + 0.5 + -0.221587732 -0.101046339 0.564189553 0.788909853 + -0.00729848538 0.20885624 0.0306759924 + 0.533333361 + -0.218594536 -0.10874673 0.581099451 0.776346624 + -0.00729848538 0.20885624 0.0306759924 + 0.566666722 + -0.220661119 -0.121960156 0.58877337 0.767971635 + -0.00729848538 0.20885624 0.0306759924 + 0.600000083 + -0.22361064 -0.13097991 0.594681561 0.761049569 + -0.00729848538 0.20885624 0.0306759924 + 0.633333445 + -0.220891818 -0.133733302 0.599326849 0.757713377 + -0.00729848538 0.20885624 0.0306759924 + 0.666666806 + -0.211086586 -0.129971951 0.601281404 0.759612083 + -0.00729848584 0.20885624 0.0306759942 + 0.700000167 + -0.202840969 -0.128254831 0.605855048 0.758515656 + -0.00729848538 0.20885624 0.0306759924 + 0.733333528 + -0.201585829 -0.122579135 0.612428367 0.754499197 + -0.00729848538 0.20885624 0.0306759924 + 0.766666889 + -0.208742529 -0.116696097 0.616138756 0.750454307 + -0.00729848538 0.20885624 0.0306759924 + 0.80000025 + -0.214411482 -0.123287156 0.619639874 0.744898975 + -0.00729848538 0.20885624 0.0306759924 + 0.833333611 + -0.214462012 -0.131945103 0.62411499 0.739646614 + -0.00729848538 0.20885624 0.0306759924 + 0.866666973 + -0.209681153 -0.130979642 0.618575752 0.745816469 + -0.00729848538 0.20885624 0.0306759924 + 0.900000334 + -0.206353277 -0.126806736 0.604959309 0.758526623 + -0.00729848538 0.20885624 0.0306759924 + 0.933333695 + -0.209215239 -0.129629135 0.593831718 0.766021729 + -0.00729848538 0.20885624 0.0306759924 + 0.966667056 + -0.210440964 -0.131583795 0.582484901 0.774023116 + -0.00729848538 0.20885624 0.0306759924 + 1.00000036 + -0.213776946 -0.140323669 0.575685143 0.776656568 + -0.00729848538 0.20885624 0.0306759924 + 1.03333366 + -0.218163997 -0.135190398 0.560951591 0.787058711 + -0.00729848538 0.20885624 0.0306759924 + 1.06666696 + -0.221402049 -0.116729975 0.552743077 0.794877589 + -0.00729848584 0.208856255 0.0306759924 + 1.10000026 + -0.222483382 -0.104098715 0.554898322 0.794828594 + -0.00729848538 0.20885624 0.0306759924 + 1.13333356 + -0.221587732 -0.101046339 0.564189553 0.788909853 + -0.00729848538 0.20885624 0.0306759924 + 1.16666687 + -0.218594536 -0.10874673 0.581099451 0.776346624 + -0.00729848538 0.20885624 0.0306759924 + 1.20000017 + -0.220661119 -0.121960156 0.58877337 0.767971635 + -0.00729848538 0.20885624 0.0306759924 + 1.23333347 + -0.22361064 -0.13097991 0.594681561 0.761049569 + -0.00729848538 0.20885624 0.0306759924 + 1.26666677 + -0.220891818 -0.133733302 0.599326849 0.757713377 + -0.00729848538 0.20885624 0.0306759924 + 1.30000007 + -0.211086586 -0.129971951 0.601281404 0.759612083 + -0.00729848538 0.20885624 0.0306759924 + 1.33333337 + -0.202840969 -0.128254831 0.605855048 0.758515656 + -0.00729848538 0.20885624 0.0306759924 + 1.36666667 + -0.201585829 -0.122579135 0.612428367 0.754499197 + -0.00729848538 0.20885624 0.0306759924 + 1.39999998 + -0.208742529 -0.116696097 0.616138756 0.750454307 + -0.00729848538 0.20885624 0.0306759924 + 1.43333328 + -0.214411482 -0.123287156 0.619639874 0.744898975 + -0.00729848538 0.20885624 0.0306759924 + 1.46666658 + -0.214462012 -0.131945103 0.62411499 0.739646614 + -0.00729848538 0.20885624 0.0306759924 + 1.49999988 + -0.209681153 -0.130979642 0.618575752 0.745816469 + -0.00729848538 0.20885624 0.0306759924 + 1.53333318 + -0.206353277 -0.126806736 0.604959309 0.758526623 + -0.00729848538 0.20885624 0.0306759924 + 1.56666648 + -0.209215239 -0.129629135 0.593831718 0.766021729 + -0.00729848538 0.20885624 0.0306759924 + 1.59999979 + -0.210440964 -0.131583795 0.582484901 0.774023116 + -0.00729848538 0.20885624 0.0306759924 + 1.63333309 + -0.213776946 -0.140323669 0.575685143 0.776656568 + -0.00729848538 0.20885624 0.0306759924 + 1.66666639 + -0.218163997 -0.135190398 0.560951591 0.787058711 + -0.00729848538 0.20885624 0.0306759924 + 1.69999969 + -0.221402049 -0.116729975 0.552743077 0.794877589 + -0.00729848584 0.208856255 0.0306759942 + 1.73333299 + -0.222483382 -0.104098715 0.554898322 0.794828594 + -0.00729848538 0.20885624 0.0306759924 + 1.76666629 + -0.221587732 -0.101046339 0.564189553 0.788909853 + -0.00729848538 0.20885624 0.0306759924 + 1.79999959 + -0.218594536 -0.10874673 0.581099451 0.776346624 + -0.00729848538 0.20885624 0.0306759924 + 1.8333329 + -0.220661119 -0.121960156 0.58877337 0.767971635 + -0.00729848538 0.20885624 0.0306759924 + 1.8666662 + -0.22361064 -0.13097991 0.594681561 0.761049569 + -0.00729848538 0.20885624 0.0306759924 + 1.8999995 + true \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Human/neutral.tof b/Engine/lib/JoltPhysics/Assets/Human/neutral.tof new file mode 100644 index 000000000..c551edb13 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Human/neutral.tof @@ -0,0 +1,131 @@ +TOS 1.00 + +declare SkeletalAnimation 1 + mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint + +declare SkeletalAnimation::AnimatedJoint 2 + mJointName string + mKeyframes array instance SkeletalAnimation::Keyframe + +declare SkeletalAnimation::Keyframe 3 + mRotation quat + mTranslation vec3 + mTime float + +object SkeletalAnimation 00000001 + 23 + "hipsBone" + 1 + 0.000000 1.000000 0.000000 0.000000 + 0.000000 0.931122 -0.023035 + 0.000000 + "R_Leg_sjnt_0" + 1 + 0.999643 -0.023767 -0.000290 0.012213 + -0.104854 -0.000224 0.000080 + 0.000000 + "R_Leg_sjnt_1" + 1 + 0.060151 0.000000 -0.000000 0.998189 + -0.000000 0.461809 -0.000000 + 0.000000 + "R_Foot_sjnt_0" + 1 + -0.546992 0.011039 -0.021050 0.836800 + 0.000000 0.388174 0.000000 + 0.000000 + "L_Leg_sjnt_0" + 1 + -0.012213 -0.000290 0.023767 0.999643 + 0.104854 -0.000225 0.000080 + 0.000000 + "L_Leg_sjnt_1" + 1 + 0.060151 0.000000 -0.000000 0.998189 + 0.000000 -0.461807 0.000000 + 0.000000 + "L_Foot_sjnt_0" + 1 + -0.546992 0.011039 -0.021050 0.836800 + -0.000001 -0.388173 -0.000000 + 0.000000 + "C_Spine_sjnt_0" + 1 + 0.000000 0.000000 0.000000 1.000000 + 0.000000 0.055442 -0.000000 + 0.000000 + "C_Spine_sjnt_1" + 1 + 0.000000 0.000000 0.000000 1.000000 + 0.000000 0.049000 0.000000 + 0.000000 + "C_Spine_sjnt_2" + 1 + 0.000000 0.000000 0.000000 1.000000 + 0.000000 0.049000 -0.000000 + 0.000000 + "C_Spine_sjnt_4" + 1 + 0.000000 0.000000 0.000000 1.000000 + 0.000000 0.098001 0.000000 + 0.000000 + "L_Clavicle_sjnt_0" + 1 + 0.761695 -0.617813 -0.144681 0.131128 + 0.007299 0.208857 0.030677 + 0.000000 + "L_Arm_sjnt_0" + 1 + 0.199254 -0.056730 0.463827 0.861362 + 0.070456 -0.150703 0.005820 + 0.000000 + "L_Arm_sjnt_1" + 1 + 0.184809 -0.000000 -0.000000 0.982774 + -0.000001 -0.260631 0.000000 + 0.000000 + "L_Wrist_sjnt_0" + 1 + -0.000000 0.000000 0.000000 1.000000 + 0.000007 -0.242273 0.000002 + 0.000000 + "R_Clavicle_sjnt_0" + 1 + -0.131128 -0.144681 0.617813 0.761696 + -0.007299 0.208857 0.030677 + 0.000000 + "R_Arm_sjnt_0" + 1 + 0.199254 -0.056730 0.463827 0.861362 + -0.070458 0.150703 -0.005820 + 0.000000 + "R_Arm_sjnt_1" + 1 + 0.184809 0.000000 0.000000 0.982774 + -0.000001 0.260632 -0.000000 + 0.000000 + "R_Wrist_sjnt_0" + 1 + -0.000000 0.000000 -0.000000 1.000000 + 0.000000 0.242268 -0.000000 + 0.000000 + "C_Neck_sjnt_0" + 1 + 0.216440 0.000000 0.000000 0.976296 + 0.000000 0.206349 -0.038118 + 0.000000 + "C_Neck_sjnt_1" + 1 + -0.216440 0.000000 0.000000 0.976296 + 0.000000 0.054001 0.000000 + 0.000000 + "C_Neck_sjnt_2" + 1 + 0.000000 0.000000 0.000000 1.000000 + 0.000000 0.054001 0.000000 + 0.000000 + "C_Head_sjnt_0" + 1 + 0.000000 0.000000 0.000000 1.000000 + 0.000000 0.054000 -0.000000 + 0.000000 \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Human/neutral_hd.tof b/Engine/lib/JoltPhysics/Assets/Human/neutral_hd.tof new file mode 100644 index 000000000..8a20317d5 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Human/neutral_hd.tof @@ -0,0 +1,373 @@ +TOS 1.00 + +declare SkeletalAnimation 2 + mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint + mIsLooping bool + +declare SkeletalAnimation::AnimatedJoint 2 + mJointName string + mKeyframes array instance SkeletalAnimation::Keyframe + +declare SkeletalAnimation::Keyframe 3 + mRotation quat + mTranslation vec3 + mTime float + +object SkeletalAnimation 00000001 + 71 + "rootBone" + 1 + -0.707106829 0 0 0.707106769 + 0 0 0 + 0 + "C_Neck_sjnt_2" + 1 + 0 0 0 1 + 6.31036857e-18 0.0540000014 0 + 0 + "R_Clavicle_sjnt_0" + 1 + -0.131128147 -0.144681439 0.617813051 0.761695385 + -0.00729848538 0.20885624 0.0306759924 + 0 + "R_Leg_sjnt_0" + 1 + 0.999642909 -0.0237673745 -0.000290388998 0.0122136045 + -0.104853801 -0.000224408359 7.95794331e-05 + 0 + "C_Spine_sjnt_4" + 1 + 0 0 0 1 + 4.77984621e-18 0.0489999987 3.10862448e-17 + 0 + "L_Middle_sjnt_3" + 1 + 0 0 0 1 + 5.85307589e-07 -0.0180757623 3.17060227e-07 + 0 + "C_Neck_sjnt_0" + 1 + 0.21643962 0 0 0.976296008 + -6.33361028e-18 0.206347629 -0.0381180719 + 0 + "C_Head_sjnt_0" + 1 + 0 0 0 1 + 6.31036857e-18 0.0540000014 2.8532731e-16 + 0 + "C_Spine_sjnt_1" + 1 + 0 0 0 1 + 4.77984621e-18 0.0489999987 0 + 0 + "L_Ring_sjnt_0" + 1 + 0.119370371 -0.698211312 0.204397932 0.675628006 + -0.006254646 -0.0797718689 0.0093988115 + 0 + "R_Index_sjnt_2" + 1 + 0.175203487 0 0 0.984532237 + 3.01980666e-16 0.0204999987 0 + 0 + "R_Ring_sjnt_0" + 1 + 0.119370371 -0.698211312 0.204397932 0.675628006 + 0.00625085598 0.0797746703 -0.00940056238 + 0 + "R_Index_sjnt_0" + 1 + -0.19517909 0.755869865 -0.161748767 -0.603658199 + -0.00134941039 0.0782186612 0.028039448 + 0 + "R_Pinky_sjnt_1" + 1 + 0.22303848 0 0 0.974809647 + -3.55271347e-16 0.0372027382 0 + 0 + "L_Pinky_sjnt_1" + 1 + 0.22303848 0 0 0.974809647 + 3.70620683e-07 -0.0372028351 1.38079258e-07 + 0 + "R_Middle_sjnt_0" + 1 + 0.156041026 -0.732423544 0.191366434 0.63449657 + 0.00616463134 0.0818372741 0.0097120041 + 0 + "R_Arm_sjnt_1" + 1 + 0.184809059 0 0 0.982774496 + -1.42108544e-16 0.260629684 4.440892e-18 + 0 + "L_Foot_sjnt_2" + 1 + 0 0 0 1 + -1.7763568e-17 -0.0488719977 4.88498128e-17 + 0 + "L_Pinky_sjnt_2" + 1 + 0.0992502794 0 0 0.99506253 + -1.85520605e-07 -0.0186209753 6.46735657e-07 + 0 + "L_Ring_sjnt_3" + 1 + 0 0 0 1 + 4.95807114e-07 -0.0159507934 1.36332858e-07 + 0 + "L_Clavicle_sjnt_0" + 1 + 0.761695385 -0.617813051 -0.144681439 0.131128147 + 0.00729848957 0.208856419 0.0306760129 + 0 + "L_Pinky_sjnt_3" + 1 + 0 0 0 1 + 3.66131957e-07 -0.0121525498 -7.50564652e-07 + 0 + "R_Thumb_sjnt_3" + 1 + 0 0 0 1 + 7.1054272e-17 0.0181292463 -2.62012622e-16 + 0 + "R_Foot_sjnt_2" + 1 + 0 0 0 1 + 3.5527136e-17 0.0488717034 -3.99680272e-17 + 0 + "L_Leg_sjnt_0" + 1 + -0.0122135505 -0.000290387718 0.0237673745 0.999642909 + 0.104854003 -0.000224642019 7.96136592e-05 + 0 + "L_Middle_sjnt_1" + 1 + 0.184680417 0 0 0.982798636 + -2.44896114e-07 -0.0481087901 -7.74885621e-07 + 0 + "L_Pinky_sjnt_0" + 1 + 0.105012663 -0.656231523 0.23035267 0.710823596 + -0.00242854073 -0.0733879432 0.0260373093 + 0 + "L_Wrist_sjnt_0" + 1 + 0 0 0 1 + 6.57227065e-06 -0.242271721 2.52947029e-06 + 0 + "R_Ring_sjnt_1" + 1 + 0.251216322 0 0 0.967930973 + -5.3290704e-17 0.0443951264 -5.68434176e-16 + 0 + "R_Pinky_sjnt_2" + 1 + 0.0992502794 0 0 0.99506253 + -1.06581408e-16 0.0186204202 -7.1054272e-17 + 0 + "L_Prop_fjnt_0" + 1 + 0 1 0 -4.37113883e-08 + 0.0276746862 -0.0656316727 -0.000328583526 + 0 + "L_Middle_sjnt_2" + 1 + 0.157416984 0 0 0.987532258 + -6.02384603e-07 -0.0248495787 6.76881555e-08 + 0 + "R_Middle_sjnt_1" + 1 + 0.184680417 0 0 0.982798636 + -6.39488435e-16 0.048108764 1.42108544e-16 + 0 + "L_Leg_sjnt_1" + 1 + 0.060151346 0 0 0.99818927 + 2.61005539e-07 -0.461806506 -3.93129014e-08 + 0 + "L_Thumb_sjnt_2" + 1 + -0.0012165627 0 0 0.999999285 + 5.15941792e-07 -0.0251661409 -5.85450152e-07 + 0 + "L_Ring_sjnt_1" + 1 + 0.251216322 0 0 0.967930973 + 3.12667623e-07 -0.0443952158 -5.95922245e-07 + 0 + "R_Foot_sjnt_1" + 1 + -0.251680881 0 0 0.967810273 + -8.88178367e-17 0.133286357 -0.00287180441 + 0 + "C_Neck_sjnt_1" + 1 + -0.21643962 0 0 0.976296008 + 5.18627479e-18 0.0540000014 0 + 0 + "R_Ring_sjnt_3" + 1 + 0 0 0 1 + -5.3290704e-17 0.0159499999 -7.1054272e-17 + 0 + "L_Index_sjnt_0" + 1 + -0.19517909 0.755869865 -0.161748767 -0.603658199 + 0.00134612026 -0.0782155693 -0.0280411374 + 0 + "L_Index_sjnt_1" + 1 + 0.229845911 0 0 0.973227024 + 7.62208856e-07 -0.041899953 -1.70619145e-07 + 0 + "R_Thumb_sjnt_1" + 1 + 0.0813905671 0 0 0.996682286 + -2.13162816e-16 0.0301780477 1.42108544e-16 + 0 + "L_Thumb_sjnt_3" + 1 + 0 0 0 1 + -7.5862016e-07 -0.0181290414 5.47535365e-07 + 0 + "R_Index_sjnt_3" + 1 + 0 0 0 1 + 3.10862442e-16 0.019439999 5.3290704e-17 + 0 + "R_Middle_sjnt_2" + 1 + 0.157416984 0 0 0.987532258 + -1.7763568e-17 0.0248499978 7.1054272e-17 + 0 + "hipsBone" + 1 + 3.09086232e-08 0.707106829 0.707106829 3.09086232e-08 + 0 0.0230353847 0.931121647 + 0 + "R_Pinky_sjnt_3" + 1 + 0 0 0 1 + 7.1054272e-17 0.0121525582 3.5527136e-17 + 0 + "L_Foot_sjnt_0" + 1 + -0.546992362 0.0110395309 -0.0210499652 0.836800098 + -9.25209633e-07 -0.388170779 2.78088415e-08 + 0 + "L_Index_sjnt_2" + 1 + 0.175203487 0 0 0.984532237 + 8.53871498e-08 -0.0204997063 3.77475885e-07 + 0 + "C_Spine_sjnt_3" + 1 + 0 0 0 1 + 4.77984621e-18 0.0489999987 1.7763568e-17 + 0 + "R_Foot_sjnt_0" + 1 + -0.546992362 0.0110395309 -0.0210499652 0.836800098 + 0 0.38817063 0 + 0 + "R_Ring_sjnt_2" + 1 + 0.121089756 0 0 0.992641568 + -5.3290704e-17 0.0234420039 1.42108544e-16 + 0 + "R_Wrist_sjnt_0" + 1 + 0 0 0 1 + 4.26325632e-16 0.24226594 -3.90798503e-16 + 0 + "L_Middle_sjnt_0" + 1 + 0.156041026 -0.732423544 0.191366434 0.63449657 + -0.00616830075 -0.0818345174 -0.0097129494 + 0 + "L_Ring_sjnt_2" + 1 + 0.121089756 0 0 0.992641568 + 1.66412786e-08 -0.0234416053 4.04103446e-07 + 0 + "L_Index_sjnt_3" + 1 + 0 0 0 1 + -2.39056641e-09 -0.0194404367 -1.39765135e-07 + 0 + "C_Spine_sjnt_0" + 1 + 0 0 0 1 + 3.76215184e-18 0.0554419272 8.881784e-18 + 0 + "L_Arm_sjnt_1" + 1 + 0.184809059 0 0 0.982774496 + -1.14686986e-06 -0.260628074 -4.16461354e-08 + 0 + "R_Leg_sjnt_1" + 1 + 0.060151346 0 0 0.99818927 + 3.5527136e-17 0.461806893 8.881784e-18 + 0 + "R_Thumb_sjnt_2" + 1 + -0.0012165627 0 0 0.999999285 + 4.26325632e-16 0.0251665488 5.10702581e-16 + 0 + "L_Foot_sjnt_1" + 1 + -0.251680881 0 0 0.967810273 + 5.3290704e-17 -0.133285969 0.00287160906 + 0 + "R_Pinky_sjnt_0" + 1 + 0.105012663 -0.656231523 0.23035267 0.710823596 + 0.00242519076 0.0733913928 -0.0260387883 + 0 + "R_Middle_sjnt_3" + 1 + 0 0 0 1 + 2.48689959e-16 0.0180759132 -7.1054272e-17 + 0 + "L_Thumb_sjnt_1" + 1 + 0.0813905671 0 0 0.996682286 + -5.24074721e-07 -0.0301787555 -2.92531354e-07 + 0 + "C_Spine_sjnt_2" + 1 + 0 0 0 1 + 4.7798458e-18 0.0489999987 -2.22044592e-17 + 0 + "R_Prop_fjnt_0" + 1 + 0 0 0 1 + -0.0276775807 0.0656346902 0.000327039947 + 0 + "L_Thumb_sjnt_0" + 1 + 0.416852266 -0.817598581 -0.284677148 -0.27699402 + 0.020829184 -0.0239574499 -0.0221176092 + 0 + "R_Thumb_sjnt_0" + 1 + 0.416852266 -0.817598581 -0.284677148 -0.27699402 + -0.0208326261 0.0239606146 0.0221159924 + 0 + "L_Arm_sjnt_0" + 1 + 0.199253842 -0.0567296185 0.463827372 0.861361623 + 0.0704552606 -0.150702849 0.00581921311 + 0 + "R_Arm_sjnt_0" + 1 + 0.199253842 -0.0567296185 0.463827372 0.861361623 + -0.0704575405 0.150702029 -0.00581940683 + 0 + "R_Index_sjnt_1" + 1 + 0.229845911 0 0 0.973227024 + -5.3290704e-17 0.0419000015 1.42108544e-16 + 0 + true \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Human/skeleton_hd.tof b/Engine/lib/JoltPhysics/Assets/Human/skeleton_hd.tof new file mode 100644 index 000000000..1ff3ce5e0 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Human/skeleton_hd.tof @@ -0,0 +1,153 @@ +TOS 1.00 + +declare Skeleton 1 + mJoints array instance Skeleton::Joint + +declare Skeleton::Joint 2 + mName string + mParentName string + +object Skeleton 00000001 + 71 + "rootBone" + "" + "hipsBone" + "rootBone" + "C_Spine_sjnt_0" + "hipsBone" + "C_Spine_sjnt_1" + "C_Spine_sjnt_0" + "C_Spine_sjnt_2" + "C_Spine_sjnt_1" + "C_Spine_sjnt_3" + "C_Spine_sjnt_2" + "C_Spine_sjnt_4" + "C_Spine_sjnt_3" + "R_Clavicle_sjnt_0" + "C_Spine_sjnt_4" + "R_Arm_sjnt_0" + "R_Clavicle_sjnt_0" + "R_Arm_sjnt_1" + "R_Arm_sjnt_0" + "R_Wrist_sjnt_0" + "R_Arm_sjnt_1" + "R_Thumb_sjnt_0" + "R_Wrist_sjnt_0" + "R_Thumb_sjnt_1" + "R_Thumb_sjnt_0" + "R_Thumb_sjnt_2" + "R_Thumb_sjnt_1" + "R_Thumb_sjnt_3" + "R_Thumb_sjnt_2" + "R_Index_sjnt_0" + "R_Wrist_sjnt_0" + "R_Index_sjnt_1" + "R_Index_sjnt_0" + "R_Index_sjnt_2" + "R_Index_sjnt_1" + "R_Index_sjnt_3" + "R_Index_sjnt_2" + "R_Middle_sjnt_0" + "R_Wrist_sjnt_0" + "R_Middle_sjnt_1" + "R_Middle_sjnt_0" + "R_Middle_sjnt_2" + "R_Middle_sjnt_1" + "R_Middle_sjnt_3" + "R_Middle_sjnt_2" + "R_Ring_sjnt_0" + "R_Wrist_sjnt_0" + "R_Ring_sjnt_1" + "R_Ring_sjnt_0" + "R_Ring_sjnt_2" + "R_Ring_sjnt_1" + "R_Ring_sjnt_3" + "R_Ring_sjnt_2" + "R_Pinky_sjnt_0" + "R_Wrist_sjnt_0" + "R_Pinky_sjnt_1" + "R_Pinky_sjnt_0" + "R_Pinky_sjnt_2" + "R_Pinky_sjnt_1" + "R_Pinky_sjnt_3" + "R_Pinky_sjnt_2" + "R_Prop_fjnt_0" + "R_Wrist_sjnt_0" + "C_Neck_sjnt_0" + "C_Spine_sjnt_4" + "C_Neck_sjnt_1" + "C_Neck_sjnt_0" + "C_Neck_sjnt_2" + "C_Neck_sjnt_1" + "C_Head_sjnt_0" + "C_Neck_sjnt_2" + "L_Clavicle_sjnt_0" + "C_Spine_sjnt_4" + "L_Arm_sjnt_0" + "L_Clavicle_sjnt_0" + "L_Arm_sjnt_1" + "L_Arm_sjnt_0" + "L_Wrist_sjnt_0" + "L_Arm_sjnt_1" + "L_Thumb_sjnt_0" + "L_Wrist_sjnt_0" + "L_Thumb_sjnt_1" + "L_Thumb_sjnt_0" + "L_Thumb_sjnt_2" + "L_Thumb_sjnt_1" + "L_Thumb_sjnt_3" + "L_Thumb_sjnt_2" + "L_Index_sjnt_0" + "L_Wrist_sjnt_0" + "L_Index_sjnt_1" + "L_Index_sjnt_0" + "L_Index_sjnt_2" + "L_Index_sjnt_1" + "L_Index_sjnt_3" + "L_Index_sjnt_2" + "L_Middle_sjnt_0" + "L_Wrist_sjnt_0" + "L_Middle_sjnt_1" + "L_Middle_sjnt_0" + "L_Middle_sjnt_2" + "L_Middle_sjnt_1" + "L_Middle_sjnt_3" + "L_Middle_sjnt_2" + "L_Ring_sjnt_0" + "L_Wrist_sjnt_0" + "L_Ring_sjnt_1" + "L_Ring_sjnt_0" + "L_Ring_sjnt_2" + "L_Ring_sjnt_1" + "L_Ring_sjnt_3" + "L_Ring_sjnt_2" + "L_Pinky_sjnt_0" + "L_Wrist_sjnt_0" + "L_Pinky_sjnt_1" + "L_Pinky_sjnt_0" + "L_Pinky_sjnt_2" + "L_Pinky_sjnt_1" + "L_Pinky_sjnt_3" + "L_Pinky_sjnt_2" + "L_Prop_fjnt_0" + "L_Wrist_sjnt_0" + "R_Leg_sjnt_0" + "hipsBone" + "R_Leg_sjnt_1" + "R_Leg_sjnt_0" + "R_Foot_sjnt_0" + "R_Leg_sjnt_1" + "R_Foot_sjnt_1" + "R_Foot_sjnt_0" + "R_Foot_sjnt_2" + "R_Foot_sjnt_1" + "L_Leg_sjnt_0" + "hipsBone" + "L_Leg_sjnt_1" + "L_Leg_sjnt_0" + "L_Foot_sjnt_0" + "L_Leg_sjnt_1" + "L_Foot_sjnt_1" + "L_Foot_sjnt_0" + "L_Foot_sjnt_2" + "L_Foot_sjnt_1" diff --git a/Engine/lib/JoltPhysics/Assets/Human/sprint.tof b/Engine/lib/JoltPhysics/Assets/Human/sprint.tof new file mode 100644 index 000000000..93ea38f6d --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Human/sprint.tof @@ -0,0 +1,3443 @@ +TOS 1.00 + +declare SkeletalAnimation 1 + mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint + +declare SkeletalAnimation::AnimatedJoint 2 + mJointName string + mKeyframes array instance SkeletalAnimation::Keyframe + +declare SkeletalAnimation::Keyframe 3 + mRotation quat + mTranslation vec3 + mTime float + +object SkeletalAnimation 00000001 + 23 + "hipsBone" + 49 + 0.076756 0.971015 -0.198088 -0.109541 + 0.006216 0.755616 0.082018 + 0.000000 + 0.075293 0.965522 -0.205198 -0.141396 + 0.010054 0.754882 -0.102516 + 0.033333 + 0.031435 0.969573 -0.215463 -0.111877 + 0.011457 0.761961 -0.297186 + 0.066667 + -0.018036 0.969179 -0.239930 -0.052921 + 0.002153 0.777095 -0.497473 + 0.100000 + -0.029957 0.966926 -0.253041 0.011306 + -0.017702 0.791988 -0.692753 + 0.133333 + -0.019257 0.969927 -0.236362 0.054816 + -0.035148 0.802004 -0.879850 + 0.166667 + -0.013737 0.973288 -0.207094 0.098153 + -0.044904 0.797372 -1.061694 + 0.200000 + -0.024877 0.971291 -0.189041 0.142264 + -0.045386 0.770026 -1.274826 + 0.233333 + -0.032306 0.963387 -0.189080 0.187327 + -0.044646 0.746584 -1.481218 + 0.266667 + -0.019274 0.958233 -0.183928 0.218147 + -0.044394 0.733642 -1.691272 + 0.300000 + 0.009389 0.968092 -0.163919 0.189317 + -0.043175 0.722412 -1.929407 + 0.333333 + 0.053510 0.972922 -0.190155 0.120001 + -0.034635 0.738034 -2.162788 + 0.366667 + 0.062064 0.973231 -0.213942 0.056551 + -0.017801 0.760006 -2.383472 + 0.400000 + 0.040314 0.978976 -0.199314 0.015975 + -0.004141 0.777593 -2.599022 + 0.433333 + 0.038850 0.982356 -0.181805 -0.020369 + 0.003405 0.779307 -2.809443 + 0.466667 + 0.061903 0.979939 -0.179044 -0.061890 + 0.004118 0.763678 -3.011809 + 0.500000 + 0.076843 0.971018 -0.198090 -0.109454 + 0.006216 0.755616 -3.197294 + 0.533333 + 0.075206 0.965456 -0.205478 -0.141482 + 0.010054 0.754882 -3.381834 + 0.566667 + 0.031521 0.969547 -0.215610 -0.111791 + 0.011457 0.761961 -3.576509 + 0.600000 + -0.017864 0.969181 -0.239933 -0.052921 + 0.002153 0.777095 -3.776801 + 0.633333 + -0.029870 0.966964 -0.252907 0.011220 + -0.017702 0.791988 -3.972086 + 0.666667 + -0.019257 0.969976 -0.236238 0.054471 + -0.035148 0.802004 -4.159187 + 0.700000 + -0.013391 0.973394 -0.207027 0.097289 + -0.044904 0.797372 -4.341038 + 0.733334 + -0.024446 0.971542 -0.188775 0.140970 + -0.045386 0.770026 -4.554170 + 0.766667 + -0.032047 0.963632 -0.188981 0.186205 + -0.044646 0.746583 -4.760562 + 0.800000 + -0.019361 0.958221 -0.184087 0.218060 + -0.044394 0.733642 -4.970616 + 0.833334 + 0.009303 0.968132 -0.163787 0.189230 + -0.043175 0.722412 -5.208751 + 0.866667 + 0.053338 0.972948 -0.190181 0.119827 + -0.034635 0.738034 -5.442133 + 0.900000 + 0.061804 0.973218 -0.214101 0.056464 + -0.017801 0.760006 -5.662817 + 0.933334 + 0.040140 0.978982 -0.199320 0.015974 + -0.004141 0.777593 -5.878366 + 0.966667 + 0.038763 0.982360 -0.181809 -0.020283 + 0.003405 0.779306 -6.088788 + 1.000000 + 0.061730 0.979949 -0.179053 -0.061890 + 0.004118 0.763678 -6.291152 + 1.033334 + 0.076756 0.971002 -0.198247 -0.109368 + 0.006216 0.755616 -6.477829 + 1.066667 + 0.075206 0.965456 -0.205478 -0.141482 + 0.010054 0.754882 -6.662371 + 1.100000 + 0.031521 0.969578 -0.215469 -0.111791 + 0.011457 0.761961 -6.857046 + 1.133334 + -0.017951 0.969176 -0.239928 -0.053006 + 0.002153 0.777095 -7.057342 + 1.166667 + -0.029870 0.966929 -0.253044 0.011220 + -0.017702 0.791988 -7.252628 + 1.200000 + -0.019257 0.969942 -0.236377 0.054471 + -0.035148 0.802004 -7.439733 + 1.233333 + -0.013564 0.973361 -0.207167 0.097289 + -0.044904 0.797372 -7.621584 + 1.266667 + -0.024619 0.971510 -0.188916 0.140970 + -0.045386 0.770026 -7.834717 + 1.300000 + -0.032133 0.963644 -0.188993 0.186118 + -0.044646 0.746584 -8.041104 + 1.333333 + -0.019361 0.958248 -0.183943 0.218061 + -0.044394 0.733642 -8.251154 + 1.366667 + 0.009389 0.968117 -0.163772 0.189317 + -0.043175 0.722412 -8.489285 + 1.400000 + 0.053424 0.972935 -0.190168 0.119915 + -0.034635 0.738033 -8.722664 + 1.433333 + 0.061976 0.973200 -0.214084 0.056638 + -0.017801 0.760006 -8.943342 + 1.466667 + 0.040313 0.978971 -0.199309 0.016321 + -0.004141 0.777593 -9.158888 + 1.500000 + 0.038849 0.982400 -0.181677 -0.019333 + 0.003405 0.779306 -9.369305 + 1.533333 + 0.061817 0.980021 -0.178952 -0.060940 + 0.004118 0.763679 -9.571669 + 1.566666 + 0.076756 0.971015 -0.198088 -0.109541 + 0.006216 0.755616 -9.757915 + 1.600000 + "R_Leg_sjnt_0" + 49 + 0.948340 0.016562 0.212514 0.234978 + -0.104854 -0.000224 0.000080 + 0.000000 + 0.880623 0.019500 0.182715 0.436736 + -0.104854 -0.000224 0.000080 + 0.033333 + 0.776781 0.027092 0.085500 0.623351 + -0.104854 -0.000224 0.000080 + 0.066667 + 0.707114 0.052259 0.018089 0.704934 + -0.104854 -0.000224 0.000080 + 0.100000 + 0.716569 0.062521 -0.006823 0.694675 + -0.104854 -0.000224 0.000080 + 0.133333 + 0.786543 0.076924 0.012233 0.612603 + -0.104854 -0.000224 0.000080 + 0.166667 + 0.823779 0.104020 0.060602 0.553981 + -0.104854 -0.000224 0.000080 + 0.200000 + 0.844437 0.111344 0.065978 0.519784 + -0.104854 -0.000224 0.000080 + 0.233333 + 0.886754 0.084738 0.008816 0.454323 + -0.104854 -0.000224 0.000080 + 0.266667 + 0.943851 0.014905 -0.028815 0.328774 + -0.104854 -0.000224 0.000080 + 0.300000 + -0.989273 0.086933 0.005876 -0.117245 + -0.104854 -0.000224 0.000080 + 0.333333 + -0.990507 0.123814 -0.023916 0.054714 + -0.104854 -0.000224 0.000080 + 0.366667 + -0.984363 0.049315 0.064490 0.156326 + -0.104854 -0.000224 0.000080 + 0.400000 + -0.991180 -0.005126 -0.011731 0.131901 + -0.104854 -0.000224 0.000080 + 0.433333 + -0.993050 -0.009258 -0.105039 0.052272 + -0.104854 -0.000224 0.000080 + 0.466667 + -0.984026 -0.005582 -0.166591 -0.062530 + -0.104854 -0.000224 0.000080 + 0.500000 + 0.948072 0.021935 0.211050 0.236932 + -0.104854 -0.000224 0.000080 + 0.533333 + 0.880848 0.024873 0.179785 0.437225 + -0.104854 -0.000224 0.000080 + 0.566667 + 0.779198 0.022213 0.061562 0.623351 + -0.104854 -0.000224 0.000080 + 0.600000 + 0.707493 0.040056 -0.015132 0.705422 + -0.104854 -0.000224 0.000080 + 0.633333 + 0.716474 0.053733 -0.022946 0.695163 + -0.104854 -0.000224 0.000080 + 0.666667 + 0.786560 0.076680 0.012722 0.612603 + -0.104854 -0.000224 0.000080 + 0.700000 + 0.824133 0.103531 0.061091 0.553492 + -0.104854 -0.000224 0.000081 + 0.733334 + 0.844828 0.110367 0.066466 0.519296 + -0.104854 -0.000223 0.000080 + 0.766667 + 0.886597 0.083761 0.008815 0.454811 + -0.104854 -0.000224 0.000080 + 0.800000 + 0.943310 0.014904 -0.029792 0.330237 + -0.104854 -0.000224 0.000080 + 0.833334 + -0.989012 0.087177 0.006853 -0.119198 + -0.104854 -0.000224 0.000080 + 0.866667 + -0.990706 0.125034 -0.021961 0.048852 + -0.104854 -0.000225 0.000081 + 0.900000 + -0.988276 0.048825 0.067420 0.127992 + -0.104854 -0.000224 0.000079 + 0.933334 + -0.993177 -0.002196 -0.008800 0.116267 + -0.104854 -0.000224 0.000080 + 0.966667 + -0.993700 -0.005839 -0.101619 0.046897 + -0.104854 -0.000223 0.000080 + 1.000000 + -0.984486 -0.002164 -0.163171 -0.064486 + -0.104854 -0.000224 0.000080 + 1.033334 + 0.947967 0.017540 0.208606 0.239865 + -0.104854 -0.000223 0.000080 + 1.066667 + 0.879305 0.018524 0.177340 0.441623 + -0.104854 -0.000224 0.000080 + 1.100000 + 0.778392 0.014643 0.059117 0.624817 + -0.104854 -0.000224 0.000079 + 1.133334 + 0.710182 0.034196 -0.017088 0.702980 + -0.104854 -0.000224 0.000081 + 1.166667 + 0.721914 0.048849 -0.025389 0.689789 + -0.104854 -0.000224 0.000080 + 1.200000 + 0.796674 0.073262 0.007836 0.599902 + -0.104854 -0.000224 0.000081 + 1.233333 + 0.822398 0.106951 0.056206 0.555935 + -0.104854 -0.000224 0.000080 + 1.266667 + 0.841985 0.115252 0.063536 0.523204 + -0.104854 -0.000224 0.000080 + 1.300000 + 0.887177 0.085716 0.006862 0.453346 + -0.104854 -0.000224 0.000080 + 1.333333 + 0.943103 0.015150 -0.030769 0.330728 + -0.104854 -0.000224 0.000080 + 1.366667 + -0.989012 0.087176 0.006853 -0.119200 + -0.104854 -0.000224 0.000080 + 1.400000 + -0.990696 0.125767 -0.022450 0.046897 + -0.104854 -0.000224 0.000080 + 1.433333 + -0.988211 0.049559 0.065955 0.128969 + -0.104854 -0.000224 0.000080 + 1.466667 + -0.992564 -0.001218 -0.011729 0.121153 + -0.104854 -0.000225 0.000080 + 1.500000 + -0.993109 -0.003641 -0.106014 0.049830 + -0.104854 -0.000224 0.000079 + 1.533333 + -0.983990 -0.000454 -0.167078 -0.062041 + -0.104854 -0.000224 0.000080 + 1.566666 + 0.948341 0.016562 0.212514 0.234976 + -0.104854 -0.000224 0.000081 + 1.600000 + "R_Leg_sjnt_1" + 49 + -0.926504 -0.020038 -0.051270 -0.372237 + -0.000000 0.461809 -0.000000 + 0.000000 + -0.950921 -0.018328 -0.058108 -0.303376 + -0.000000 0.461808 -0.000000 + 0.033333 + -0.913563 -0.022235 -0.047363 -0.403318 + -0.000000 0.461809 -0.000000 + 0.066667 + -0.789036 -0.023944 -0.028313 -0.613227 + -0.000000 0.461809 -0.000000 + 0.100000 + -0.570016 -0.006608 -0.002819 -0.821602 + -0.000000 0.461809 0.000000 + 0.133333 + 0.331218 0.000978 -0.001583 0.943552 + -0.000000 0.461809 -0.000000 + 0.166667 + 0.346478 -0.002889 -0.002743 0.938050 + -0.000000 0.461809 -0.000000 + 0.200000 + -0.523990 0.009871 0.007715 -0.851632 + -0.000000 0.461809 -0.000000 + 0.233333 + -0.624101 0.015359 0.014549 -0.781057 + -0.000000 0.461809 0.000000 + 0.266667 + -0.626421 0.029273 0.025416 -0.778520 + -0.000000 0.461809 -0.000000 + 0.300000 + 0.520695 -0.040995 -0.026398 0.852349 + -0.000000 0.461809 0.000000 + 0.333333 + 0.302528 -0.012076 -0.004790 0.953052 + -0.000000 0.461808 -0.000000 + 0.366667 + 0.180807 0.045412 0.007793 0.982439 + -0.000000 0.461808 -0.000000 + 0.400000 + 0.373456 0.084964 0.033684 0.923134 + -0.000000 0.461809 -0.000000 + 0.433333 + 0.636428 0.059091 0.049310 0.767487 + -0.000000 0.461809 -0.000000 + 0.466667 + 0.830300 0.026873 0.041011 0.555155 + -0.000000 0.461808 0.000000 + 0.500000 + -0.928824 -0.014425 -0.038085 -0.368277 + -0.000000 0.461808 -0.000000 + 0.533333 + -0.953729 -0.010155 -0.032715 -0.298709 + -0.000000 0.461808 0.000000 + 0.566667 + -0.915639 -0.009058 -0.017819 -0.401505 + -0.000000 0.461809 0.000000 + 0.600000 + -0.790867 -0.012106 -0.013296 -0.611723 + -0.000000 0.461808 -0.000000 + 0.633333 + -0.569771 -0.009171 -0.004559 -0.821739 + -0.000000 0.461809 0.000000 + 0.666667 + 0.331339 0.030280 0.008647 0.942986 + -0.000000 0.461809 0.000000 + 0.700000 + 0.344158 0.029792 0.009135 0.938394 + -0.000000 0.461809 0.000001 + 0.733334 + -0.520205 -0.023450 -0.012678 -0.853625 + -0.000000 0.461808 0.000000 + 0.766667 + -0.622146 -0.022476 -0.015611 -0.782423 + -0.000000 0.461809 0.000000 + 0.800000 + -0.626174 -0.014177 -0.009383 -0.779498 + -0.000000 0.461808 0.000000 + 0.833334 + 0.522645 0.004287 0.001184 0.852539 + 0.000000 0.461809 0.000000 + 0.866667 + 0.316445 -0.003806 -0.002347 0.948600 + -0.000000 0.461809 0.000000 + 0.900000 + 0.246980 -0.000893 -0.000944 0.969020 + -0.000000 0.461809 -0.000001 + 0.933334 + 0.409108 0.058111 0.025378 0.910280 + -0.000000 0.461808 -0.000001 + 0.966667 + 0.650105 0.036146 0.030507 0.758371 + -0.000000 0.461808 0.000000 + 1.000000 + 0.836650 0.011985 0.017815 0.547316 + -0.000000 0.461810 0.000001 + 1.033334 + -0.931998 -0.013938 -0.035156 -0.360485 + -0.000000 0.461810 0.000001 + 1.066667 + -0.954706 -0.014059 -0.043947 -0.293953 + -0.000000 0.461808 0.000000 + 1.100000 + -0.913807 -0.009913 -0.017819 -0.405636 + 0.000000 0.461808 0.000000 + 1.133334 + -0.781711 -0.007835 -0.006275 -0.623560 + 0.000000 0.461809 -0.000001 + 1.166667 + -0.547917 -0.010757 -0.004497 -0.836451 + -0.000000 0.461808 0.000000 + 1.200000 + 0.288365 0.025885 0.005776 0.957153 + -0.000000 0.461809 -0.000001 + 1.233333 + 0.336345 0.013802 0.003059 0.941633 + 0.000000 0.461808 -0.000001 + 1.266667 + -0.519594 -0.016127 -0.008038 -0.854223 + -0.000000 0.461808 0.000000 + 1.300000 + -0.616408 -0.012834 -0.007674 -0.787285 + -0.000000 0.461808 0.000001 + 1.333333 + -0.624222 -0.002216 0.000305 -0.781244 + -0.000001 0.461809 0.000000 + 1.366667 + 0.522037 -0.003036 -0.003380 0.852911 + -0.000000 0.461807 -0.000001 + 1.400000 + 0.321940 0.001031 -0.000805 0.946759 + 0.000000 0.461808 -0.000001 + 1.433333 + 0.244415 0.007574 0.001209 0.969640 + -0.000000 0.461808 -0.000001 + 1.466667 + 0.397508 0.023446 0.009501 0.917250 + -0.000000 0.461808 0.000000 + 1.500000 + 0.641921 0.028090 0.023669 0.765890 + 0.000000 0.461808 -0.000001 + 1.533333 + 0.830299 0.021015 0.031732 0.556016 + 0.000000 0.461810 0.000001 + 1.566666 + -0.926503 -0.020038 -0.051270 -0.372239 + -0.000000 0.461808 0.000000 + 1.600000 + "R_Foot_sjnt_0" + 49 + -0.638990 0.081067 0.074265 0.761318 + 0.000000 0.388174 0.000000 + 0.000000 + -0.710314 0.073238 0.108457 0.691612 + 0.000000 0.388174 0.000000 + 0.033333 + 0.713732 -0.087910 -0.032739 -0.694108 + 0.000000 0.388174 0.000000 + 0.066667 + 0.643386 -0.103547 -0.033723 -0.757756 + 0.000000 0.388174 0.000000 + 0.100000 + 0.587205 -0.079131 -0.004409 -0.805549 + 0.000000 0.388174 0.000000 + 0.133333 + -0.500732 0.019063 -0.062528 0.863131 + 0.000000 0.388174 0.000000 + 0.166667 + -0.500241 -0.040543 -0.032740 0.864317 + 0.000000 0.388174 0.000000 + 0.200000 + 0.646799 0.063531 -0.056159 -0.757932 + 0.000000 0.388174 0.000000 + 0.233333 + 0.753784 0.043012 -0.011703 -0.655608 + 0.000000 0.388174 0.000000 + 0.266667 + 0.797260 0.056684 0.035200 -0.599936 + 0.000000 0.388173 0.000000 + 0.300000 + 0.786999 0.075235 0.090406 -0.605639 + 0.000000 0.388174 0.000000 + 0.333333 + 0.608203 0.015134 0.092339 -0.788247 + 0.000000 0.388174 0.000000 + 0.366667 + -0.374210 0.103089 -0.032217 0.921033 + 0.000000 0.388174 0.000000 + 0.400000 + -0.423053 -0.071309 -0.058147 0.901421 + 0.000000 0.388174 0.000000 + 0.433333 + -0.499752 -0.040539 -0.050327 0.863754 + 0.000000 0.388174 0.000000 + 0.466667 + -0.588668 0.060573 -0.020021 0.805853 + 0.000000 0.388174 0.000000 + 0.500000 + -0.656087 0.072278 0.050814 0.749496 + 0.000000 0.388174 0.000000 + 0.533333 + -0.729365 0.048816 0.085979 0.676943 + 0.000000 0.388174 0.000000 + 0.566667 + 0.729363 -0.060069 -0.007330 -0.681445 + 0.000000 0.388174 0.000000 + 0.600000 + 0.653155 -0.093295 0.000965 -0.751454 + 0.000000 0.388174 0.000000 + 0.633333 + 0.588669 -0.057143 -0.024433 -0.805981 + 0.000000 0.388174 0.000000 + 0.666667 + -0.505129 0.024434 -0.051291 0.861172 + 0.000000 0.388174 0.000000 + 0.700000 + -0.507082 -0.033217 -0.022968 0.860951 + 0.000000 0.388174 0.000000 + 0.733334 + 0.654128 0.040082 -0.051278 -0.753578 + 0.000000 0.388174 0.000000 + 0.766667 + 0.757694 0.003925 0.013204 -0.652465 + 0.000000 0.388175 0.000000 + 0.800000 + 0.797261 0.007335 0.073783 -0.599063 + 0.000000 0.388175 0.000000 + 0.833334 + 0.783580 0.023445 0.123614 -0.608418 + 0.000000 0.388175 0.000000 + 0.866667 + 0.616996 0.008300 0.067423 -0.784029 + 0.000000 0.388174 0.000000 + 0.900000 + -0.395216 0.079146 -0.018544 0.914984 + 0.000000 0.388173 0.000000 + 0.933334 + -0.407421 -0.086457 -0.039097 0.908298 + 0.000000 0.388175 0.000000 + 0.966667 + -0.482166 -0.070833 -0.013693 0.873104 + 0.000000 0.388174 0.000000 + 1.000000 + -0.585738 0.023433 0.038105 0.809265 + 0.000000 0.388175 0.000000 + 1.033334 + -0.665859 0.071779 0.095268 0.736480 + 0.000000 0.388173 0.000000 + 1.066667 + -0.751350 0.091317 0.078170 0.648863 + 0.000000 0.388174 0.000000 + 1.100000 + 0.754767 -0.098173 -0.000986 -0.648604 + 0.000000 0.388174 0.000000 + 1.133334 + 0.677094 -0.115762 -0.013206 -0.726614 + 0.000000 0.388173 0.000001 + 1.166667 + 0.603327 -0.133851 0.026357 -0.785739 + 0.000000 0.388175 0.000001 + 1.200000 + -0.499758 0.105049 -0.094263 0.854588 + 0.000000 0.388174 0.000002 + 1.233333 + -0.518319 -0.000001 -0.011726 0.855107 + 0.000000 0.388174 0.000000 + 1.266667 + 0.665364 0.026407 -0.064471 -0.743261 + 0.000000 0.388174 0.000000 + 1.300000 + 0.771861 -0.009266 0.023460 -0.635291 + -0.000000 0.388174 0.000001 + 1.333333 + 0.801170 -0.000972 0.084528 -0.592437 + -0.000000 0.388175 0.000001 + 1.366667 + 0.786023 0.021490 0.126545 -0.604725 + 0.000000 0.388172 0.000000 + 1.400000 + 0.604786 -0.009294 0.100639 -0.789949 + 0.000000 0.388172 0.000000 + 1.433333 + -0.358089 0.122152 -0.079599 0.922234 + 0.000000 0.388172 0.000000 + 1.466667 + -0.361498 -0.072758 -0.114325 0.922472 + 0.000000 0.388177 0.000000 + 1.500000 + -0.430869 -0.051279 -0.065960 0.898538 + -0.000000 0.388175 -0.000000 + 1.533333 + -0.551051 0.054710 -0.010739 0.832607 + 0.000000 0.388172 0.000000 + 1.566666 + -0.638989 0.081067 0.074265 0.761318 + 0.000000 0.388174 0.000001 + 1.600000 + "L_Leg_sjnt_0" + 49 + -0.414794 0.060835 -0.122488 0.899579 + 0.104854 -0.000225 0.000080 + 0.000000 + -0.305351 0.026124 -0.070255 0.949285 + 0.104854 -0.000225 0.000080 + 0.033333 + -0.146068 0.047099 0.023499 0.987873 + 0.104854 -0.000225 0.000080 + 0.066667 + 0.030787 0.043181 0.058622 0.996871 + 0.104854 -0.000225 0.000080 + 0.100000 + 0.137756 -0.024708 -0.000046 0.990158 + 0.104854 -0.000225 0.000080 + 0.133333 + 0.115752 -0.012968 -0.072338 0.990556 + 0.104854 -0.000225 0.000080 + 0.166667 + 0.050286 0.106723 -0.086949 0.989202 + 0.104854 -0.000225 0.000080 + 0.200000 + -0.028364 0.202964 -0.081043 0.975414 + 0.104854 -0.000225 0.000080 + 0.233333 + -0.172480 0.253779 -0.088807 0.947608 + 0.104854 -0.000225 0.000080 + 0.266667 + -0.373749 0.214711 -0.085827 0.898245 + 0.104854 -0.000225 0.000080 + 0.300000 + -0.554002 0.093083 -0.053071 0.825591 + 0.104854 -0.000225 0.000080 + 0.333333 + -0.675153 -0.000200 -0.049149 0.736038 + 0.104854 -0.000225 0.000080 + 0.366667 + -0.691765 -0.012407 -0.057940 0.719687 + 0.104854 -0.000225 0.000080 + 0.400000 + -0.635592 0.033505 -0.078953 0.767246 + 0.104854 -0.000225 0.000080 + 0.433333 + -0.559881 0.096518 -0.109737 0.815583 + 0.104854 -0.000225 0.000080 + 0.466667 + -0.482213 0.103838 -0.132230 0.859769 + 0.104854 -0.000225 0.000080 + 0.500000 + -0.414794 0.060835 -0.122488 0.899579 + 0.104854 -0.000225 0.000080 + 0.533333 + -0.305840 0.026124 -0.070255 0.949128 + 0.104854 -0.000225 0.000080 + 0.566667 + -0.146067 0.047099 0.023011 0.987885 + 0.104854 -0.000225 0.000080 + 0.600000 + 0.030787 0.043181 0.058621 0.996871 + 0.104854 -0.000225 0.000080 + 0.633333 + 0.137756 -0.024708 -0.000047 0.990158 + 0.104854 -0.000225 0.000080 + 0.666667 + 0.115752 -0.013456 -0.072338 0.990549 + 0.104854 -0.000225 0.000079 + 0.700000 + 0.050286 0.106235 -0.086949 0.989255 + 0.104854 -0.000225 0.000080 + 0.733334 + -0.028365 0.201499 -0.081532 0.975677 + 0.104854 -0.000225 0.000080 + 0.766667 + -0.172481 0.252802 -0.088807 0.947869 + 0.104854 -0.000225 0.000080 + 0.800000 + -0.373750 0.214710 -0.085827 0.898245 + 0.104854 -0.000225 0.000080 + 0.833334 + -0.554003 0.092593 -0.053071 0.825645 + 0.104854 -0.000226 0.000080 + 0.866667 + -0.675154 -0.000200 -0.049149 0.736038 + 0.104854 -0.000225 0.000081 + 0.900000 + -0.691765 -0.012895 -0.057452 0.719718 + 0.104854 -0.000225 0.000079 + 0.933334 + -0.635591 0.033506 -0.078953 0.767247 + 0.104854 -0.000225 0.000080 + 0.966667 + -0.559880 0.096518 -0.109249 0.815649 + 0.104854 -0.000224 0.000080 + 1.000000 + -0.482212 0.103838 -0.132230 0.859770 + 0.104854 -0.000225 0.000081 + 1.033334 + -0.414794 0.060834 -0.122488 0.899579 + 0.104854 -0.000225 0.000079 + 1.066667 + -0.305839 0.026125 -0.070255 0.949128 + 0.104854 -0.000226 0.000081 + 1.100000 + -0.146067 0.047099 0.023500 0.987873 + 0.104854 -0.000226 0.000080 + 1.133334 + 0.030787 0.042692 0.058621 0.996892 + 0.104854 -0.000224 0.000081 + 1.166667 + 0.137756 -0.025197 -0.000047 0.990146 + 0.104854 -0.000224 0.000080 + 1.200000 + 0.115752 -0.013456 -0.072338 0.990549 + 0.104854 -0.000225 0.000081 + 1.233333 + 0.049797 0.106234 -0.086949 0.989280 + 0.104854 -0.000225 0.000080 + 1.266667 + -0.028853 0.201498 -0.081043 0.975704 + 0.104854 -0.000225 0.000080 + 1.300000 + -0.172480 0.252802 -0.088807 0.947869 + 0.104854 -0.000225 0.000080 + 1.333333 + -0.373748 0.214711 -0.085827 0.898246 + 0.104854 -0.000226 0.000079 + 1.366667 + -0.554002 0.093083 -0.053072 0.825591 + 0.104854 -0.000226 0.000081 + 1.400000 + -0.675153 -0.000200 -0.049149 0.736039 + 0.104854 -0.000226 0.000080 + 1.433333 + -0.691765 -0.012407 -0.057940 0.719687 + 0.104854 -0.000226 0.000079 + 1.466667 + -0.635592 0.033994 -0.078952 0.767224 + 0.104854 -0.000226 0.000081 + 1.500000 + -0.559881 0.097494 -0.109248 0.815532 + 0.104854 -0.000225 0.000079 + 1.533333 + -0.481725 0.104815 -0.132230 0.859925 + 0.104854 -0.000225 0.000079 + 1.566666 + -0.414795 0.060835 -0.122488 0.899578 + 0.104854 -0.000224 0.000081 + 1.600000 + "L_Leg_sjnt_1" + 49 + 0.629310 0.012204 0.010389 0.776989 + 0.000000 -0.461808 0.000000 + 0.000000 + 0.605132 0.006346 0.005519 0.796081 + 0.000000 -0.461807 0.000000 + 0.033333 + 0.478877 -0.001709 -0.000621 0.877880 + 0.000000 -0.461808 0.000000 + 0.066667 + 0.249328 -0.003052 -0.001116 0.968414 + 0.000000 -0.461808 0.000000 + 0.100000 + 0.125031 0.000671 0.000108 0.992153 + 0.000000 -0.461808 0.000000 + 0.133333 + 0.322102 0.000518 0.001712 0.946703 + 0.000000 -0.461808 0.000000 + 0.166667 + 0.595362 -0.001344 0.003081 0.803451 + 0.000000 -0.461807 0.000000 + 0.200000 + 0.797559 -0.004151 0.001316 0.603225 + 0.000000 -0.461807 -0.000000 + 0.233333 + 0.908185 -0.001284 0.007296 0.418503 + 0.000000 -0.461808 0.000000 + 0.266667 + 0.936026 0.000760 0.011675 0.351735 + 0.000000 -0.461808 0.000000 + 0.300000 + 0.899392 0.000517 0.004372 0.437120 + 0.000000 -0.461808 0.000000 + 0.333333 + 0.779976 0.000793 0.000137 0.625809 + 0.000000 -0.461808 0.000000 + 0.366667 + 0.599026 0.005858 0.003081 0.800703 + 0.000000 -0.461808 0.000000 + 0.400000 + 0.482055 0.012205 0.006323 0.876033 + 0.000000 -0.461808 0.000000 + 0.433333 + 0.506232 0.011717 0.007530 0.862285 + 0.000000 -0.461807 0.000000 + 0.466667 + 0.583644 0.011228 0.008950 0.811883 + 0.000000 -0.461807 0.000000 + 0.500000 + 0.629310 0.012204 0.010389 0.776989 + 0.000000 -0.461808 0.000000 + 0.533333 + 0.605132 0.006346 0.005519 0.796081 + 0.000000 -0.461807 0.000000 + 0.566667 + 0.478876 -0.001709 -0.000621 0.877881 + 0.000000 -0.461807 -0.000000 + 0.600000 + 0.249328 -0.003052 -0.001116 0.968414 + 0.000000 -0.461808 0.000000 + 0.633333 + 0.124788 0.000671 0.000108 0.992183 + 0.000000 -0.461807 0.000000 + 0.666667 + 0.322103 0.000518 0.001712 0.946703 + 0.000000 -0.461807 0.000000 + 0.700000 + 0.595607 -0.001283 0.003081 0.803269 + 0.000000 -0.461808 0.000000 + 0.733334 + 0.797560 -0.004151 0.001378 0.603224 + 0.000000 -0.461807 -0.000000 + 0.766667 + 0.908185 -0.001223 0.007296 0.418503 + 0.000000 -0.461807 0.000000 + 0.800000 + 0.936026 0.000760 0.012163 0.351719 + 0.000000 -0.461807 -0.000000 + 0.833334 + 0.899392 0.000517 0.004372 0.437122 + 0.000000 -0.461807 -0.000000 + 0.866667 + 0.780219 0.000793 0.000137 0.625506 + 0.000000 -0.461807 0.000000 + 0.900000 + 0.599024 0.005858 0.003081 0.800704 + 0.000000 -0.461808 0.000000 + 0.933334 + 0.482056 0.012205 0.006323 0.876033 + 0.000000 -0.461809 0.000000 + 0.966667 + 0.506233 0.011717 0.007530 0.862284 + 0.000000 -0.461807 0.000000 + 1.000000 + 0.583645 0.011228 0.008950 0.811882 + 0.000000 -0.461809 0.000000 + 1.033334 + 0.629310 0.012204 0.010389 0.776989 + 0.000000 -0.461808 -0.000000 + 1.066667 + 0.605131 0.006346 0.005519 0.796082 + 0.000000 -0.461808 0.000000 + 1.100000 + 0.478876 -0.001709 -0.000621 0.877881 + 0.000000 -0.461807 0.000001 + 1.133334 + 0.249328 -0.003052 -0.001116 0.968414 + 0.000000 -0.461808 0.000000 + 1.166667 + 0.124788 0.000671 0.000108 0.992183 + 0.000000 -0.461807 0.000000 + 1.200000 + 0.322102 0.000518 0.001712 0.946703 + 0.000000 -0.461808 0.000000 + 1.233333 + 0.595607 -0.001283 0.003081 0.803269 + -0.000000 -0.461807 0.000000 + 1.266667 + 0.797559 -0.004151 0.001377 0.603225 + 0.000000 -0.461807 0.000001 + 1.300000 + 0.908185 -0.001223 0.007296 0.418503 + 0.000000 -0.461807 0.000000 + 1.333333 + 0.936026 0.000760 0.011675 0.351735 + 0.000000 -0.461806 0.000000 + 1.366667 + 0.899393 0.000517 0.004372 0.437120 + -0.000000 -0.461809 0.000001 + 1.400000 + 0.779977 0.000793 0.000137 0.625808 + -0.000000 -0.461805 0.000000 + 1.433333 + 0.599026 0.005858 0.003081 0.800702 + 0.000000 -0.461804 -0.000000 + 1.466667 + 0.482300 0.012205 0.006323 0.875898 + 0.000000 -0.461813 0.000002 + 1.500000 + 0.506476 0.011717 0.007530 0.862142 + 0.000000 -0.461807 0.000000 + 1.533333 + 0.583888 0.011228 0.008950 0.811707 + 0.000000 -0.461808 0.000001 + 1.566666 + 0.629310 0.012204 0.010389 0.776989 + 0.000000 -0.461807 -0.000001 + 1.600000 + "L_Foot_sjnt_0" + 49 + -0.726425 -0.034266 -0.036536 0.685418 + -0.000001 -0.388173 -0.000000 + 0.000000 + -0.711790 -0.060139 -0.103476 0.692121 + -0.000001 -0.388173 -0.000000 + 0.033333 + -0.678092 -0.081612 -0.144048 0.716087 + -0.000001 -0.388173 -0.000000 + 0.066667 + -0.509073 -0.008760 -0.123620 0.851754 + -0.000001 -0.388173 -0.000000 + 0.100000 + -0.267239 0.028436 -0.060231 0.961326 + -0.000001 -0.388173 -0.000000 + 0.133333 + -0.303902 -0.012594 -0.146199 0.941334 + -0.000001 -0.388173 -0.000000 + 0.166667 + -0.354697 -0.051205 -0.143251 0.922522 + -0.000001 -0.388173 -0.000000 + 0.200000 + -0.506140 0.067439 -0.068403 0.857085 + -0.000001 -0.388173 -0.000000 + 0.233333 + -0.631652 0.053695 0.018624 0.773166 + -0.000001 -0.388173 -0.000000 + 0.266667 + -0.723982 0.068309 0.031877 0.685688 + -0.000001 -0.388173 -0.000000 + 0.300000 + -0.729353 0.062444 0.034322 0.680416 + -0.000001 -0.388173 -0.000000 + 0.333333 + -0.674168 0.081038 0.000093 0.734118 + -0.000001 -0.388173 -0.000000 + 0.366667 + -0.603834 0.031252 -0.064935 0.793846 + -0.000001 -0.388173 -0.000000 + 0.400000 + -0.567693 0.016128 -0.100132 0.816969 + -0.000001 -0.388172 -0.000001 + 0.433333 + -0.596499 0.004875 -0.065922 0.799887 + -0.000001 -0.388172 0.000000 + 0.466667 + -0.695144 -0.028888 0.004479 0.718276 + -0.000001 -0.388173 -0.000001 + 0.500000 + -0.726425 -0.034266 -0.036536 0.685418 + -0.000001 -0.388172 -0.000000 + 0.533333 + -0.711790 -0.060139 -0.103476 0.692121 + -0.000001 -0.388173 -0.000000 + 0.566667 + -0.678092 -0.081612 -0.144048 0.716087 + -0.000001 -0.388173 -0.000000 + 0.600000 + -0.509073 -0.008760 -0.123619 0.851755 + -0.000001 -0.388173 -0.000000 + 0.633333 + -0.267239 0.028436 -0.060232 0.961326 + -0.000001 -0.388173 -0.000000 + 0.666667 + -0.303902 -0.012595 -0.146199 0.941334 + -0.000001 -0.388172 -0.000000 + 0.700000 + -0.354698 -0.051204 -0.143251 0.922522 + -0.000001 -0.388173 -0.000000 + 0.733334 + -0.506141 0.067439 -0.068403 0.857085 + -0.000001 -0.388173 -0.000000 + 0.766667 + -0.631653 0.053695 0.018624 0.773166 + -0.000001 -0.388173 -0.000000 + 0.800000 + -0.723982 0.068309 0.031878 0.685688 + -0.000001 -0.388173 -0.000000 + 0.833334 + -0.729353 0.062444 0.034322 0.680417 + -0.000001 -0.388173 -0.000000 + 0.866667 + -0.674168 0.081038 0.000093 0.734119 + -0.000001 -0.388173 -0.000000 + 0.900000 + -0.603833 0.031251 -0.064935 0.793846 + -0.000001 -0.388174 0.000000 + 0.933334 + -0.567694 0.016128 -0.100132 0.816968 + -0.000001 -0.388173 0.000000 + 0.966667 + -0.596500 0.004874 -0.065921 0.799886 + -0.000001 -0.388173 -0.000000 + 1.000000 + -0.695145 -0.028888 0.004479 0.718275 + -0.000001 -0.388173 0.000000 + 1.033334 + -0.726425 -0.034267 -0.036537 0.685418 + -0.000001 -0.388172 -0.000001 + 1.066667 + -0.711789 -0.060139 -0.103477 0.692121 + -0.000001 -0.388174 -0.000000 + 1.100000 + -0.678092 -0.081612 -0.144048 0.716087 + -0.000001 -0.388173 -0.000001 + 1.133334 + -0.509073 -0.008760 -0.123619 0.851755 + -0.000001 -0.388172 -0.000000 + 1.166667 + -0.267239 0.028436 -0.060232 0.961326 + -0.000001 -0.388173 -0.000001 + 1.200000 + -0.303902 -0.012594 -0.146199 0.941335 + -0.000001 -0.388174 -0.000000 + 1.233333 + -0.354697 -0.051205 -0.143251 0.922522 + -0.000001 -0.388173 -0.000000 + 1.266667 + -0.506140 0.067439 -0.068403 0.857085 + -0.000001 -0.388173 0.000000 + 1.300000 + -0.631652 0.053695 0.018624 0.773166 + -0.000001 -0.388173 -0.000000 + 1.333333 + -0.723982 0.068309 0.031877 0.685688 + -0.000001 -0.388173 -0.000000 + 1.366667 + -0.729353 0.062444 0.034322 0.680416 + -0.000001 -0.388173 -0.000000 + 1.400000 + -0.674169 0.081038 0.000093 0.734118 + -0.000001 -0.388172 0.000000 + 1.433333 + -0.603834 0.031252 -0.064935 0.793846 + -0.000001 -0.388173 -0.000001 + 1.466667 + -0.567693 0.016128 -0.100132 0.816969 + -0.000001 -0.388172 -0.000001 + 1.500000 + -0.596499 0.004875 -0.065922 0.799887 + -0.000001 -0.388173 0.000000 + 1.533333 + -0.695144 -0.028887 0.004479 0.718276 + -0.000001 -0.388173 0.000000 + 1.566666 + -0.726425 -0.034266 -0.036536 0.685418 + -0.000001 -0.388172 -0.000001 + 1.600000 + "C_Spine_sjnt_0" + 49 + 0.182129 -0.000897 0.003998 0.983266 + 0.000000 0.055442 0.000000 + 0.000000 + 0.182861 -0.018556 0.006771 0.982940 + 0.000000 0.055442 -0.000000 + 0.033333 + 0.176758 -0.034915 0.014397 0.983530 + 0.000000 0.055442 0.000000 + 0.066667 + 0.166016 -0.044195 0.023794 0.984845 + -0.000000 0.055442 0.000000 + 0.100000 + 0.162353 -0.041510 0.027701 0.985470 + -0.000000 0.055442 -0.000000 + 0.133333 + 0.169678 -0.035651 0.028435 0.984444 + 0.000000 0.055442 0.000000 + 0.166667 + 0.180664 -0.028815 0.027826 0.982729 + -0.000000 0.055442 0.000000 + 0.200000 + 0.187500 -0.021002 0.028804 0.981618 + -0.000000 0.055442 0.000000 + 0.233333 + 0.190430 -0.008307 0.026854 0.981298 + -0.000000 0.055442 -0.000000 + 0.266667 + 0.195557 0.007046 0.018190 0.980498 + 0.000000 0.055442 0.000000 + 0.300000 + 0.199219 0.018186 0.011234 0.979722 + -0.000000 0.055442 0.000000 + 0.333333 + 0.189209 0.029541 -0.001153 0.981492 + 0.000000 0.055442 -0.000000 + 0.366667 + 0.186523 0.029908 -0.003869 0.981988 + 0.000000 0.055442 0.000000 + 0.400000 + 0.195801 0.023070 0.004735 0.980361 + 0.000000 0.055442 0.000000 + 0.433333 + 0.202637 0.011534 0.008120 0.979152 + 0.000000 0.055442 0.000000 + 0.466667 + 0.204590 0.004057 0.007539 0.978810 + 0.000000 0.055442 0.000000 + 0.500000 + 0.204590 -0.006410 0.006560 0.978805 + -0.000000 0.055442 0.000000 + 0.533333 + 0.206299 -0.023928 0.009944 0.978146 + 0.000000 0.055442 0.000000 + 0.566667 + 0.201660 -0.039799 0.018302 0.978476 + 0.000000 0.055442 0.000000 + 0.600000 + 0.192139 -0.048590 0.028310 0.979755 + 0.000000 0.055442 0.000000 + 0.633333 + 0.189453 -0.045173 0.032461 0.980313 + 0.000000 0.055442 0.000000 + 0.666667 + 0.197021 -0.038581 0.033195 0.979077 + 0.000000 0.055441 -0.000000 + 0.700000 + 0.208008 -0.031013 0.032464 0.977096 + 0.000000 0.055442 0.000000 + 0.733334 + 0.214600 -0.022346 0.033442 0.975874 + 0.000000 0.055442 0.000000 + 0.766667 + 0.217041 -0.008674 0.031248 0.975624 + 0.000000 0.055442 0.000000 + 0.800000 + 0.221680 0.007442 0.022340 0.974835 + -0.000000 0.055442 -0.000000 + 0.833334 + 0.224609 0.019406 0.015202 0.974137 + 0.000000 0.055442 0.000000 + 0.866667 + 0.214355 0.031249 0.002662 0.976252 + -0.000000 0.055442 0.000000 + 0.900000 + 0.211670 0.032226 0.000066 0.976810 + -0.000000 0.055442 -0.000001 + 0.933334 + 0.220703 0.026365 0.009039 0.974943 + 0.000000 0.055441 0.000000 + 0.966667 + 0.228027 0.015256 0.012882 0.973450 + 0.000000 0.055442 -0.000000 + 1.000000 + 0.229980 0.007993 0.012575 0.973081 + 0.000000 0.055443 0.000000 + 1.033334 + 0.229004 -0.002352 0.011779 0.973351 + 0.000000 0.055442 0.000000 + 1.066667 + 0.228760 -0.019657 0.015316 0.973164 + -0.000000 0.055442 0.000000 + 1.100000 + 0.221436 -0.035405 0.023430 0.974250 + 0.000000 0.055442 -0.000001 + 1.133334 + 0.207764 -0.043952 0.032705 0.976644 + -0.000000 0.055443 0.000000 + 1.166667 + 0.198730 -0.040779 0.035392 0.978566 + -0.000000 0.055442 -0.000001 + 1.200000 + 0.198975 -0.034431 0.034416 0.978795 + 0.000000 0.055442 0.000000 + 1.233333 + 0.201904 -0.027106 0.032221 0.978500 + 0.000000 0.055442 -0.000000 + 1.266667 + 0.199951 -0.018806 0.031490 0.979119 + 0.000000 0.055442 -0.000001 + 1.300000 + 0.194092 -0.005591 0.028075 0.980566 + -0.000000 0.055443 -0.000000 + 1.333333 + 0.190918 0.010433 0.018191 0.981382 + 0.000000 0.055442 -0.000001 + 1.366667 + 0.187256 0.022337 0.010442 0.982002 + 0.000000 0.055441 0.000000 + 1.400000 + 0.172119 0.034180 -0.002419 0.984480 + 0.000000 0.055442 0.000000 + 1.433333 + 0.166504 0.035157 -0.005425 0.985399 + 0.000000 0.055442 -0.000001 + 1.466667 + 0.174560 0.028686 0.003027 0.984224 + 0.000000 0.055441 0.000001 + 1.500000 + 0.181152 0.017089 0.006168 0.983287 + 0.000000 0.055443 -0.000001 + 1.533333 + 0.182861 0.009642 0.005373 0.983077 + 0.000000 0.055442 0.000000 + 1.566666 + 0.182129 -0.000897 0.003998 0.983266 + 0.000000 0.055443 0.000001 + 1.600000 + "C_Spine_sjnt_1" + 49 + 0.069092 -0.013238 -0.032718 0.996986 + 0.000000 0.049000 -0.000000 + 0.000000 + 0.064697 -0.030756 -0.025153 0.997114 + -0.000000 0.049000 0.000000 + 0.033333 + 0.054321 -0.032469 -0.008674 0.997958 + -0.000000 0.049000 0.000000 + 0.066667 + 0.038086 -0.029422 0.014459 0.998737 + 0.000000 0.049000 0.000000 + 0.100000 + 0.029907 -0.027838 0.027826 0.998778 + 0.000000 0.049000 -0.000000 + 0.133333 + 0.035278 -0.026984 0.028193 0.998615 + 0.000000 0.049000 0.000000 + 0.166667 + 0.045776 -0.023321 0.026118 0.998338 + 0.000000 0.049000 0.000000 + 0.200000 + 0.051514 -0.012945 0.026364 0.998240 + 0.000000 0.049000 0.000000 + 0.233333 + 0.049194 0.002604 0.023316 0.998514 + -0.000000 0.049000 0.000000 + 0.266667 + 0.048462 0.018796 0.012150 0.998574 + 0.000000 0.049000 -0.000000 + 0.300000 + 0.046265 0.023437 0.000124 0.998654 + -0.000000 0.049000 -0.000000 + 0.333333 + 0.026306 0.026128 -0.020991 0.999092 + -0.000000 0.049000 -0.000000 + 0.366667 + 0.018677 0.023810 -0.031489 0.999046 + 0.000000 0.049000 0.000000 + 0.400000 + 0.030273 0.021368 -0.026729 0.998956 + -0.000000 0.049000 0.000000 + 0.433333 + 0.043701 0.014594 -0.030026 0.998487 + -0.000000 0.049000 0.000000 + 0.466667 + 0.049805 -0.001351 -0.034424 0.998165 + 0.000000 0.049000 0.000000 + 0.500000 + 0.046509 -0.019890 -0.032963 0.998176 + 0.000000 0.049000 -0.000000 + 0.533333 + 0.043457 -0.037348 -0.026375 0.998009 + 0.000000 0.049000 0.000000 + 0.566667 + 0.034058 -0.039549 -0.009774 0.998589 + -0.000000 0.049000 0.000000 + 0.600000 + 0.020508 -0.036136 0.013664 0.999043 + 0.000000 0.049000 0.000000 + 0.633333 + 0.015442 -0.033697 0.027459 0.998936 + -0.000000 0.049000 0.000000 + 0.666667 + 0.024170 -0.031256 0.027703 0.998835 + 0.000000 0.049000 -0.000000 + 0.700000 + 0.038330 -0.025396 0.025263 0.998623 + 0.000000 0.049000 0.000000 + 0.733334 + 0.047974 -0.012762 0.024778 0.998460 + 0.000000 0.049000 0.000000 + 0.766667 + 0.049683 0.003871 0.020753 0.998542 + -0.000000 0.049000 -0.000000 + 0.800000 + 0.053223 0.018919 0.008854 0.998364 + 0.000000 0.049000 0.000000 + 0.833334 + 0.054443 0.024171 -0.004023 0.998216 + 0.000000 0.049000 -0.000000 + 0.866667 + 0.038208 0.026983 -0.026239 0.998561 + 0.000000 0.049001 0.000000 + 0.900000 + 0.034058 0.024910 -0.037104 0.998420 + 0.000000 0.049000 0.000000 + 0.933334 + 0.048218 0.022956 -0.031978 0.998061 + -0.000000 0.049000 0.000000 + 0.966667 + 0.063721 0.016242 -0.033932 0.997259 + -0.000000 0.049000 0.000000 + 1.000000 + 0.071045 0.000049 -0.036621 0.996801 + 0.000000 0.049000 -0.000000 + 1.033334 + 0.068604 -0.017937 -0.033695 0.996913 + 0.000000 0.049000 0.000000 + 1.066667 + 0.065430 -0.033930 -0.025032 0.996966 + -0.000000 0.049000 0.000001 + 1.100000 + 0.055298 -0.034666 -0.008125 0.997835 + -0.000000 0.049000 0.000000 + 1.133334 + 0.040649 -0.029422 0.014886 0.998629 + 0.000000 0.049000 0.000000 + 1.166667 + 0.034546 -0.026373 0.028315 0.998654 + 0.000000 0.049000 -0.000000 + 1.200000 + 0.041992 -0.024420 0.028193 0.998422 + 0.000000 0.049001 0.000000 + 1.233333 + 0.054565 -0.019170 0.025264 0.998007 + -0.000000 0.049001 0.000000 + 1.266667 + 0.062378 -0.007055 0.024657 0.997723 + -0.000000 0.048999 0.000000 + 1.300000 + 0.062134 0.009090 0.021120 0.997803 + 0.000000 0.049000 -0.000000 + 1.333333 + 0.063721 0.023923 0.010625 0.997624 + 0.000000 0.049000 0.000000 + 1.366667 + 0.063232 0.029175 -0.001192 0.997572 + 0.000000 0.049000 0.000000 + 1.400000 + 0.045654 0.032476 -0.022576 0.998174 + -0.000000 0.049000 -0.000000 + 1.433333 + 0.039917 0.030525 -0.032952 0.998193 + -0.000000 0.049000 0.000000 + 1.466667 + 0.052246 0.027838 -0.027094 0.997878 + 0.000000 0.049000 0.000000 + 1.500000 + 0.065918 0.020026 -0.028560 0.997215 + 0.000000 0.049000 0.000000 + 1.533333 + 0.072266 0.003623 -0.032470 0.996850 + 0.000000 0.049000 0.000000 + 1.566666 + 0.069092 -0.013238 -0.032718 0.996986 + 0.000000 0.048999 -0.000000 + 1.600000 + "C_Spine_sjnt_2" + 49 + 0.035789 -0.015533 -0.028747 0.998825 + 0.000000 0.049000 0.000000 + 0.000000 + 0.027380 -0.032538 -0.016494 0.998959 + 0.000000 0.049000 0.000000 + 0.033333 + 0.019393 -0.033672 -0.003008 0.999240 + 0.000000 0.049000 0.000000 + 0.066667 + 0.011588 -0.029728 0.016004 0.999363 + 0.000000 0.049000 -0.000000 + 0.100000 + 0.006875 -0.027882 0.027094 0.999220 + -0.000000 0.049000 -0.000000 + 0.133333 + 0.007410 -0.026669 0.026110 0.999276 + -0.000000 0.049000 -0.000000 + 0.166667 + 0.011427 -0.022740 0.022529 0.999422 + 0.000000 0.049000 0.000000 + 0.200000 + 0.014521 -0.012320 0.019318 0.999632 + -0.000000 0.049000 0.000000 + 0.233333 + 0.011843 0.003017 0.013422 0.999835 + 0.000000 0.049000 0.000000 + 0.266667 + 0.007436 0.018759 0.003603 0.999790 + -0.000000 0.049000 0.000000 + 0.300000 + 0.003769 0.022557 -0.006834 0.999715 + -0.000000 0.049000 0.000000 + 0.333333 + -0.007571 0.024687 -0.021751 0.999430 + 0.000000 0.049000 0.000000 + 0.366667 + -0.013310 0.022334 -0.028844 0.999246 + 0.000000 0.049000 0.000000 + 0.400000 + -0.008725 0.019645 -0.026991 0.999405 + 0.000000 0.049000 0.000000 + 0.433333 + -0.000692 0.012255 -0.029452 0.999491 + 0.000000 0.049000 0.000000 + 0.466667 + 0.004826 -0.003827 -0.031849 0.999474 + 0.000000 0.049000 0.000000 + 0.500000 + 0.001234 -0.022318 -0.027846 0.999362 + 0.000000 0.049000 -0.000000 + 0.533333 + -0.005082 -0.039301 -0.017376 0.999063 + 0.000000 0.049000 -0.000000 + 0.566667 + -0.011402 -0.040963 -0.003415 0.999090 + -0.000000 0.049000 0.000000 + 0.600000 + -0.015505 -0.036334 0.016210 0.999088 + 0.000000 0.049000 0.000000 + 0.633333 + -0.015557 -0.033536 0.027460 0.998939 + 0.000000 0.049000 -0.000000 + 0.666667 + -0.009926 -0.030845 0.025914 0.999139 + 0.000000 0.049000 -0.000000 + 0.700000 + -0.000420 -0.024700 0.021567 0.999462 + 0.000000 0.049000 -0.000000 + 0.733334 + 0.009048 -0.012053 0.016839 0.999745 + 0.000000 0.049000 0.000000 + 0.766667 + 0.012691 0.004171 0.009291 0.999868 + -0.000000 0.049000 -0.000000 + 0.800000 + 0.014570 0.018595 -0.001705 0.999720 + 0.000000 0.049000 -0.000000 + 0.833334 + 0.016473 0.023148 -0.013912 0.999500 + -0.000000 0.048999 -0.000000 + 0.866667 + 0.010874 0.025503 -0.030836 0.999140 + 0.000000 0.049000 0.000000 + 0.900000 + 0.010532 0.023126 -0.038700 0.998928 + 0.000000 0.049000 0.000000 + 0.933334 + 0.018890 0.020707 -0.036848 0.998928 + 0.000000 0.049000 -0.000000 + 0.966667 + 0.029662 0.013677 -0.038215 0.998736 + 0.000000 0.049000 0.000000 + 1.000000 + 0.037441 -0.002451 -0.037596 0.998588 + -0.000000 0.049000 0.000000 + 1.033334 + 0.035051 -0.020153 -0.029876 0.998736 + -0.000000 0.049000 0.000000 + 1.066667 + 0.028429 -0.035475 -0.016134 0.998836 + 0.000000 0.049000 0.000000 + 1.100000 + 0.020660 -0.035635 -0.002323 0.999149 + 0.000000 0.049000 0.000000 + 1.133334 + 0.015441 -0.029481 0.016084 0.999317 + 0.000000 0.049000 0.000000 + 1.166667 + 0.013987 -0.026406 0.026998 0.999189 + 0.000000 0.049000 0.000000 + 1.200000 + 0.017652 -0.024205 0.025464 0.999227 + -0.000000 0.049000 0.000000 + 1.233333 + 0.024932 -0.018542 0.020576 0.999305 + -0.000000 0.049001 -0.000000 + 1.266667 + 0.031402 -0.006744 0.015583 0.999363 + -0.000000 0.049000 -0.000000 + 1.300000 + 0.032080 0.008981 0.008646 0.999408 + 0.000000 0.049000 0.000000 + 1.333333 + 0.030832 0.023242 -0.000592 0.999254 + -0.000000 0.049000 -0.000000 + 1.366667 + 0.030322 0.028004 -0.011101 0.999086 + 0.000000 0.049001 -0.000001 + 1.400000 + 0.022413 0.030805 -0.026099 0.998933 + 0.000000 0.049001 0.000000 + 1.433333 + 0.019415 0.028668 -0.033409 0.998842 + 0.000000 0.049000 0.000000 + 1.466667 + 0.025160 0.025750 -0.030545 0.998885 + 0.000000 0.048999 -0.000001 + 1.500000 + 0.033407 0.017719 -0.030660 0.998814 + 0.000000 0.048999 0.000000 + 1.533333 + 0.039390 0.001272 -0.031482 0.998727 + 0.000000 0.048999 0.000000 + 1.566666 + 0.035787 -0.015533 -0.028748 0.998825 + 0.000000 0.049001 0.000000 + 1.600000 + "C_Spine_sjnt_4" + 49 + 0.015028 -0.033854 -0.028118 0.998918 + 0.000000 0.098001 0.000000 + 0.000000 + 0.003492 -0.066901 -0.006297 0.997734 + 0.000000 0.098001 -0.000000 + 0.033333 + -0.002257 -0.068253 0.010302 0.997612 + 0.000000 0.098001 0.000000 + 0.066667 + 0.001837 -0.060032 0.029695 0.997753 + -0.000000 0.098001 0.000000 + 0.100000 + 0.002944 -0.056257 0.038646 0.997664 + 0.000000 0.098001 0.000000 + 0.133333 + 0.000202 -0.053353 0.036380 0.997913 + 0.000000 0.098001 0.000000 + 0.166667 + 0.000486 -0.045610 0.030206 0.998502 + -0.000000 0.098001 0.000000 + 0.200000 + 0.002928 -0.025194 0.021368 0.999450 + 0.000000 0.098001 0.000000 + 0.233333 + 0.000399 0.005013 0.010756 0.999930 + 0.000000 0.098001 0.000000 + 0.266667 + -0.010889 0.036126 -0.000532 0.999288 + 0.000000 0.098001 0.000000 + 0.300000 + -0.012050 0.043806 -0.013999 0.998869 + 0.000000 0.098001 0.000000 + 0.333333 + -0.010475 0.048394 -0.017766 0.998615 + 0.000000 0.098001 0.000000 + 0.366667 + -0.012805 0.043506 -0.019075 0.998789 + 0.000000 0.098001 -0.000000 + 0.400000 + -0.015585 0.037295 -0.027623 0.998801 + 0.000000 0.098001 0.000000 + 0.433333 + -0.015651 0.022397 -0.031386 0.999134 + 0.000000 0.098001 0.000000 + 0.466667 + -0.013967 -0.010011 -0.033876 0.999278 + 0.000000 0.098001 -0.000000 + 0.500000 + -0.019973 -0.046828 -0.025332 0.998382 + -0.000000 0.098001 0.000000 + 0.533333 + -0.029651 -0.080990 -0.005561 0.996258 + -0.000000 0.098001 0.000000 + 0.566667 + -0.033232 -0.082759 0.012109 0.995942 + 0.000000 0.098001 -0.000000 + 0.600000 + -0.025482 -0.073288 0.032287 0.996462 + 0.000000 0.098001 -0.000000 + 0.633333 + -0.019845 -0.067832 0.040707 0.996668 + 0.000000 0.098001 -0.000000 + 0.666667 + -0.017529 -0.061560 0.037250 0.997254 + 0.000000 0.098001 -0.000000 + 0.700000 + -0.011507 -0.048985 0.029899 0.998286 + 0.000000 0.098001 -0.000000 + 0.733334 + -0.002799 -0.024470 0.019385 0.999509 + -0.000000 0.098001 0.000000 + 0.766667 + 0.001132 0.007356 0.006704 0.999950 + 0.000000 0.098001 -0.000000 + 0.800000 + -0.003562 0.035840 -0.006135 0.999332 + 0.000000 0.098001 0.000000 + 0.833334 + 0.000993 0.044246 -0.021856 0.998781 + 0.000000 0.098001 0.000000 + 0.866667 + 0.008845 0.048756 -0.027698 0.998387 + 0.000000 0.098001 0.000000 + 0.900000 + 0.011756 0.044800 -0.029892 0.998479 + 0.000000 0.098001 -0.000000 + 0.933334 + 0.012568 0.038673 -0.039049 0.998410 + -0.000000 0.098001 0.000000 + 0.966667 + 0.014846 0.023709 -0.042502 0.998705 + 0.000000 0.098001 -0.000000 + 1.000000 + 0.018669 -0.007964 -0.041902 0.998916 + 0.000000 0.098001 0.000000 + 1.033334 + 0.014269 -0.042404 -0.029134 0.998574 + 0.000000 0.098001 0.000000 + 1.066667 + 0.004286 -0.072749 -0.006038 0.997323 + 0.000000 0.098001 0.000000 + 1.100000 + -0.000991 -0.071178 0.010768 0.997405 + 0.000000 0.098001 0.000000 + 1.133334 + 0.005574 -0.059566 0.029115 0.997784 + 0.000000 0.098001 0.000000 + 1.166667 + 0.009700 -0.053372 0.037695 0.997816 + 0.000000 0.098001 0.000000 + 1.200000 + 0.010218 -0.048531 0.034826 0.998162 + 0.000000 0.098001 0.000000 + 1.233333 + 0.014121 -0.037874 0.027411 0.998807 + 0.000000 0.098001 0.000000 + 1.266667 + 0.019937 -0.014959 0.017028 0.999544 + -0.000000 0.098001 0.000000 + 1.300000 + 0.021373 0.015654 0.005036 0.999636 + -0.000000 0.098001 0.000000 + 1.333333 + 0.013295 0.044138 -0.005928 0.998919 + 0.000000 0.098001 0.000000 + 1.366667 + 0.015420 0.053066 -0.019630 0.998279 + 0.000000 0.098001 0.000000 + 1.400000 + 0.020488 0.058795 -0.023303 0.997788 + 0.000000 0.098001 0.000000 + 1.433333 + 0.021038 0.055323 -0.025003 0.997934 + 0.000000 0.098001 0.000001 + 1.466667 + 0.019070 0.048255 -0.033121 0.998104 + 0.000000 0.098001 -0.000000 + 1.500000 + 0.019530 0.031706 -0.035550 0.998674 + 0.000000 0.098002 -0.000000 + 1.533333 + 0.021353 -0.000439 -0.035886 0.999128 + -0.000000 0.098001 0.000000 + 1.566666 + 0.015030 -0.033854 -0.028117 0.998918 + 0.000000 0.098001 0.000000 + 1.600000 + "L_Clavicle_sjnt_0" + 49 + 0.764010 -0.631175 -0.051299 0.123593 + 0.007299 0.208857 0.030677 + 0.000000 + 0.795554 -0.596008 -0.022972 0.106489 + 0.007299 0.208857 0.030677 + 0.033333 + 0.824675 -0.554484 -0.033462 0.106485 + 0.007299 0.208857 0.030677 + 0.066667 + -0.834852 0.530540 0.064463 -0.131886 + 0.007299 0.208857 0.030677 + 0.100000 + -0.839426 0.523212 0.066903 -0.130908 + 0.007299 0.208857 0.030677 + 0.133333 + -0.838380 0.529077 0.054697 -0.119184 + 0.007299 0.208857 0.030677 + 0.166667 + -0.833335 0.538360 0.049328 -0.115277 + 0.007299 0.208857 0.030677 + 0.200000 + -0.818684 0.558387 0.052994 -0.123095 + 0.007299 0.208857 0.030677 + 0.233333 + -0.802608 0.582326 0.045186 -0.121144 + 0.007299 0.208857 0.030677 + 0.266667 + -0.793801 0.590628 0.054709 -0.134336 + 0.007299 0.208857 0.030677 + 0.300000 + -0.802328 0.576459 0.061298 -0.142151 + 0.007299 0.208857 0.030677 + 0.333333 + -0.831839 0.544714 0.028455 -0.102575 + 0.007299 0.208857 0.030677 + 0.366667 + 0.829182 -0.551068 -0.016128 0.092316 + 0.007299 0.208857 0.030677 + 0.400000 + 0.800467 -0.588190 -0.029684 0.111374 + 0.007299 0.208857 0.030677 + 0.433333 + 0.767741 -0.622379 -0.063016 0.138737 + 0.007299 0.208857 0.030677 + 0.466667 + 0.757913 -0.634592 -0.065460 0.136296 + 0.007299 0.208857 0.030677 + 0.500000 + 0.764078 -0.630687 -0.049102 0.126524 + 0.007299 0.208857 0.030677 + 0.533333 + 0.795456 -0.596497 -0.024803 0.104047 + 0.007299 0.208857 0.030677 + 0.566667 + 0.824718 -0.554484 -0.033950 0.105996 + 0.007299 0.208857 0.030677 + 0.600000 + -0.834812 0.530540 0.063974 -0.132374 + 0.007299 0.208858 0.030677 + 0.633333 + -0.839389 0.523212 0.066414 -0.131397 + 0.007299 0.208857 0.030677 + 0.666667 + -0.838380 0.529077 0.054697 -0.119184 + 0.007299 0.208857 0.030677 + 0.700000 + -0.833320 0.538360 0.049572 -0.115277 + 0.007299 0.208857 0.030678 + 0.733334 + -0.818684 0.558387 0.052994 -0.123095 + 0.007299 0.208857 0.030677 + 0.766667 + -0.802534 0.582326 0.045186 -0.121633 + 0.007299 0.208858 0.030677 + 0.800000 + -0.793801 0.590628 0.054709 -0.134336 + 0.007299 0.208857 0.030677 + 0.833334 + -0.802329 0.576459 0.061298 -0.142150 + 0.007299 0.208857 0.030677 + 0.866667 + 0.831838 -0.544714 -0.028455 0.102575 + 0.007299 0.208857 0.030677 + 0.900000 + 0.829182 -0.551068 -0.016128 0.092317 + 0.007299 0.208857 0.030677 + 0.933334 + 0.800466 -0.588191 -0.029685 0.111374 + 0.007299 0.208857 0.030677 + 0.966667 + 0.767741 -0.622379 -0.063016 0.138737 + 0.007299 0.208857 0.030677 + 1.000000 + 0.757913 -0.634592 -0.065460 0.136296 + 0.007299 0.208857 0.030677 + 1.033334 + 0.764078 -0.630687 -0.049102 0.126524 + 0.007299 0.208857 0.030677 + 1.066667 + 0.795457 -0.596496 -0.024804 0.104047 + 0.007299 0.208857 0.030677 + 1.100000 + 0.824719 -0.554483 -0.033950 0.105996 + 0.007299 0.208857 0.030677 + 1.133334 + -0.834812 0.530540 0.063974 -0.132375 + 0.007299 0.208857 0.030677 + 1.166667 + -0.839389 0.523212 0.066414 -0.131397 + 0.007299 0.208857 0.030677 + 1.200000 + -0.838380 0.529077 0.054697 -0.119184 + 0.007299 0.208858 0.030677 + 1.233333 + -0.833320 0.538360 0.049572 -0.115277 + 0.007299 0.208857 0.030677 + 1.266667 + -0.818684 0.558387 0.052994 -0.123096 + 0.007299 0.208857 0.030677 + 1.300000 + -0.802534 0.582325 0.045186 -0.121633 + 0.007299 0.208857 0.030677 + 1.333333 + -0.793801 0.590628 0.054709 -0.134336 + 0.007299 0.208857 0.030677 + 1.366667 + -0.802328 0.576459 0.061298 -0.142150 + 0.007299 0.208857 0.030677 + 1.400000 + 0.831890 -0.544714 -0.028700 0.102087 + 0.007299 0.208857 0.030677 + 1.433333 + 0.828904 -0.551556 -0.016494 0.091828 + 0.007299 0.208857 0.030677 + 1.466667 + 0.800771 -0.587702 -0.029318 0.111862 + 0.007299 0.208856 0.030676 + 1.500000 + 0.767574 -0.622379 -0.061795 0.140202 + 0.007299 0.208857 0.030678 + 1.533333 + 0.757913 -0.634592 -0.065460 0.136296 + 0.007299 0.208857 0.030677 + 1.566666 + 0.764010 -0.631175 -0.051300 0.123593 + 0.007299 0.208857 0.030677 + 1.600000 + "L_Arm_sjnt_0" + 49 + 0.307215 0.008955 0.607429 0.732509 + 0.070455 -0.150703 0.005820 + 0.000000 + 0.331157 0.164789 0.589233 0.718321 + 0.070455 -0.150704 0.005819 + 0.033333 + 0.314079 0.271773 0.536599 0.734545 + 0.070455 -0.150704 0.005819 + 0.066667 + -0.268178 -0.341143 -0.487743 -0.757502 + 0.070455 -0.150703 0.005819 + 0.100000 + -0.143618 -0.303047 -0.474765 -0.813717 + 0.070455 -0.150704 0.005820 + 0.133333 + -0.054695 -0.160408 -0.522606 -0.835560 + 0.070455 -0.150704 0.005819 + 0.166667 + -0.064922 0.017412 -0.599785 -0.797333 + 0.070455 -0.150704 0.005820 + 0.200000 + -0.156743 0.205012 -0.625959 -0.735920 + 0.070455 -0.150704 0.005820 + 0.233333 + -0.208028 0.379916 -0.611832 -0.661854 + 0.070455 -0.150704 0.005819 + 0.266667 + -0.181636 0.535280 -0.593529 -0.572894 + 0.070456 -0.150703 0.005820 + 0.300000 + -0.062436 0.627618 -0.570551 -0.525994 + 0.070456 -0.150703 0.005819 + 0.333333 + 0.059686 0.621752 -0.555007 -0.549390 + 0.070456 -0.150703 0.005819 + 0.366667 + -0.128549 -0.559700 0.535932 0.618860 + 0.070456 -0.150703 0.005819 + 0.400000 + -0.097272 -0.481527 0.537274 0.685571 + 0.070455 -0.150704 0.005820 + 0.433333 + 0.040492 -0.386258 0.560624 0.731346 + 0.070455 -0.150704 0.005819 + 0.466667 + 0.178740 -0.215271 0.592514 0.755406 + 0.070455 -0.150703 0.005819 + 0.500000 + 0.269117 -0.020841 0.596798 0.755629 + 0.070455 -0.150704 0.005819 + 0.533333 + 0.271557 0.116431 0.603502 0.740599 + 0.070455 -0.150703 0.005819 + 0.566667 + 0.268154 0.224392 0.559784 0.751255 + 0.070455 -0.150703 0.005820 + 0.600000 + -0.241798 -0.304996 -0.494696 -0.777037 + 0.070455 -0.150703 0.005819 + 0.633333 + -0.119196 -0.273738 -0.469509 -0.830916 + 0.070456 -0.150703 0.005820 + 0.666667 + -0.031736 -0.140868 -0.519427 -0.842226 + 0.070455 -0.150704 0.005819 + 0.700000 + -0.054175 0.019367 -0.600026 -0.797909 + 0.070456 -0.150704 0.005820 + 0.733334 + -0.160164 0.192311 -0.624371 -0.739949 + 0.070455 -0.150704 0.005820 + 0.766667 + -0.222687 0.356466 -0.607560 -0.673953 + 0.070455 -0.150703 0.005820 + 0.800000 + -0.203622 0.501081 -0.595607 -0.593893 + 0.070456 -0.150704 0.005819 + 0.833334 + -0.095657 0.587065 -0.579346 -0.557281 + 0.070456 -0.150703 0.005819 + 0.866667 + -0.026464 -0.568984 0.572103 0.590132 + 0.070456 -0.150704 0.005819 + 0.900000 + -0.090442 -0.491787 0.557178 0.662962 + 0.070456 -0.150702 0.005819 + 0.933334 + -0.045974 -0.405310 0.554861 0.725079 + 0.070456 -0.150704 0.005820 + 0.966667 + 0.106936 -0.305158 0.566496 0.757975 + 0.070455 -0.150704 0.005819 + 1.000000 + 0.251047 -0.127825 0.581785 0.762996 + 0.070455 -0.150703 0.005820 + 1.033334 + 0.338982 0.068066 0.572150 0.743709 + 0.070456 -0.150704 0.005820 + 1.066667 + 0.334094 0.205336 0.571894 0.720525 + 0.070456 -0.150704 0.005819 + 1.100000 + 0.314080 0.315249 0.528538 0.722925 + 0.070456 -0.150703 0.005820 + 1.133334 + -0.271600 -0.394387 -0.472114 -0.740136 + 0.070456 -0.150703 0.005819 + 1.166667 + -0.144597 -0.358735 -0.462186 -0.797988 + 0.070455 -0.150703 0.005819 + 1.200000 + -0.062999 -0.214632 -0.520651 -0.823946 + 0.070456 -0.150702 0.005820 + 1.233333 + -0.090813 -0.036813 -0.599544 -0.794321 + 0.070456 -0.150702 0.005819 + 1.266667 + -0.195829 0.155671 -0.618152 -0.745188 + 0.070455 -0.150704 0.005820 + 1.300000 + -0.252491 0.338390 -0.597313 -0.681879 + 0.070456 -0.150703 0.005819 + 1.333333 + -0.225123 0.498149 -0.584504 -0.599603 + 0.070455 -0.150702 0.005819 + 1.366667 + -0.107876 0.593905 -0.565921 -0.561581 + 0.070456 -0.150702 0.005820 + 1.400000 + -0.017178 -0.584619 0.558922 0.587820 + 0.070455 -0.150702 0.005819 + 1.433333 + -0.081161 -0.519637 0.550836 0.648052 + 0.070455 -0.150704 0.005819 + 1.466667 + -0.043045 -0.433648 0.550470 0.712095 + 0.070455 -0.150704 0.005819 + 1.500000 + 0.094238 -0.326168 0.549157 0.763649 + 0.070454 -0.150704 0.005819 + 1.533333 + 0.228578 -0.171306 0.568474 0.771521 + 0.070456 -0.150704 0.005819 + 1.566666 + 0.307214 0.008954 0.607429 0.732509 + 0.070455 -0.150704 0.005819 + 1.600000 + "L_Arm_sjnt_1" + 49 + 0.521735 0.051347 -0.008184 0.851521 + -0.000001 -0.260631 -0.000000 + 0.000000 + 0.607730 0.017648 -0.032058 0.793300 + -0.000001 -0.260631 -0.000000 + 0.033333 + 0.677096 0.025478 -0.027141 0.734952 + -0.000001 -0.260631 -0.000000 + 0.066667 + 0.732769 0.055296 0.005536 0.678204 + -0.000001 -0.260631 -0.000000 + 0.100000 + 0.762073 0.063121 0.018307 0.644146 + -0.000001 -0.260631 -0.000000 + 0.133333 + 0.773812 0.041133 -0.006889 0.632041 + -0.000001 -0.260631 -0.000000 + 0.166667 + 0.704942 0.024994 -0.027858 0.708276 + -0.000001 -0.260631 -0.000000 + 0.200000 + 0.510519 0.001021 -0.037474 0.859049 + -0.000001 -0.260631 -0.000000 + 0.233333 + 0.307765 0.041541 -0.009750 0.950505 + -0.000001 -0.260631 -0.000000 + 0.266667 + 0.281875 0.034209 -0.011103 0.958777 + -0.000001 -0.260631 0.000000 + 0.300000 + 0.339027 0.053760 -0.006320 0.939218 + -0.000001 -0.260631 0.000000 + 0.333333 + 0.385427 0.085036 0.005901 0.918793 + -0.000001 -0.260631 0.000000 + 0.366667 + 0.424480 0.160285 0.043988 0.890051 + -0.000001 -0.260631 0.000000 + 0.400000 + 0.436682 0.187648 0.059612 0.877806 + -0.000001 -0.260631 0.000000 + 0.433333 + 0.423498 0.176407 0.050820 0.887100 + -0.000001 -0.260631 -0.000000 + 0.466667 + 0.441110 0.105078 0.017398 0.891110 + -0.000001 -0.260631 -0.000000 + 0.500000 + 0.521735 0.051347 -0.008185 0.851522 + -0.000001 -0.260631 -0.000000 + 0.533333 + 0.607730 0.017648 -0.032058 0.793300 + -0.000001 -0.260631 -0.000000 + 0.566667 + 0.677096 0.025478 -0.027141 0.734952 + -0.000001 -0.260631 -0.000000 + 0.600000 + 0.732769 0.055296 0.005536 0.678204 + -0.000001 -0.260631 -0.000000 + 0.633333 + 0.762073 0.063121 0.018306 0.644146 + -0.000001 -0.260631 -0.000001 + 0.666667 + 0.773812 0.041133 -0.006889 0.632041 + -0.000001 -0.260632 -0.000001 + 0.700000 + 0.704941 0.024994 -0.027858 0.708277 + -0.000001 -0.260631 0.000000 + 0.733334 + 0.510518 0.001021 -0.037474 0.859049 + -0.000002 -0.260631 -0.000000 + 0.766667 + 0.307765 0.041541 -0.009750 0.950505 + -0.000001 -0.260631 -0.000000 + 0.800000 + 0.281876 0.034209 -0.011103 0.958776 + -0.000001 -0.260631 0.000000 + 0.833334 + 0.339028 0.053760 -0.006320 0.939218 + -0.000001 -0.260631 0.000000 + 0.866667 + 0.385427 0.085037 0.005901 0.918793 + -0.000001 -0.260632 0.000000 + 0.900000 + 0.424481 0.160285 0.043988 0.890050 + -0.000001 -0.260631 0.000000 + 0.933334 + 0.436682 0.187648 0.059612 0.877806 + -0.000001 -0.260630 0.000000 + 0.966667 + 0.423498 0.176407 0.050819 0.887100 + -0.000001 -0.260631 0.000000 + 1.000000 + 0.441110 0.105077 0.017397 0.891110 + -0.000001 -0.260632 -0.000000 + 1.033334 + 0.521735 0.051347 -0.008185 0.851521 + -0.000001 -0.260631 -0.000000 + 1.066667 + 0.607730 0.017648 -0.032058 0.793300 + -0.000001 -0.260631 -0.000001 + 1.100000 + 0.677096 0.025478 -0.027141 0.734952 + -0.000001 -0.260631 -0.000001 + 1.133334 + 0.732769 0.055296 0.005536 0.678204 + -0.000001 -0.260631 0.000001 + 1.166667 + 0.762073 0.063121 0.018306 0.644146 + -0.000001 -0.260633 0.000000 + 1.200000 + 0.773812 0.041133 -0.006889 0.632041 + -0.000002 -0.260630 -0.000000 + 1.233333 + 0.704942 0.024994 -0.027858 0.708276 + -0.000001 -0.260630 0.000000 + 1.266667 + 0.510519 0.001021 -0.037474 0.859049 + -0.000001 -0.260632 -0.000000 + 1.300000 + 0.307765 0.041541 -0.009750 0.950505 + 0.000000 -0.260631 0.000000 + 1.333333 + 0.281876 0.034209 -0.011103 0.958776 + -0.000001 -0.260632 -0.000000 + 1.366667 + 0.339027 0.053760 -0.006320 0.939218 + -0.000001 -0.260632 0.000000 + 1.400000 + 0.385426 0.085036 0.005901 0.918793 + -0.000001 -0.260631 0.000000 + 1.433333 + 0.424480 0.160284 0.043988 0.890051 + -0.000001 -0.260632 0.000000 + 1.466667 + 0.436682 0.187648 0.059612 0.877806 + -0.000001 -0.260631 0.000000 + 1.500000 + 0.423498 0.176408 0.050820 0.887100 + -0.000001 -0.260632 0.000000 + 1.533333 + 0.441110 0.105078 0.017398 0.891110 + -0.000001 -0.260631 -0.000000 + 1.566666 + 0.521734 0.051348 -0.008184 0.851522 + -0.000001 -0.260631 -0.000001 + 1.600000 + "L_Wrist_sjnt_0" + 49 + 0.029405 -0.287262 -0.079056 0.954131 + 0.000007 -0.242273 0.000002 + 0.000000 + 0.033308 -0.287259 -0.073192 0.954471 + 0.000007 -0.242273 0.000002 + 0.033333 + 0.016710 -0.288243 -0.080526 0.954019 + 0.000007 -0.242273 0.000002 + 0.066667 + -0.003318 -0.290685 -0.057085 0.955109 + 0.000007 -0.242273 0.000002 + 0.100000 + 0.021104 -0.288241 -0.078570 0.954096 + 0.000007 -0.242273 0.000003 + 0.133333 + 0.020608 -0.289213 -0.059518 0.955191 + 0.000007 -0.242273 0.000002 + 0.166667 + 0.024504 -0.289206 -0.034602 0.956327 + 0.000007 -0.242274 0.000002 + 0.200000 + -0.014245 0.289694 0.022393 -0.956751 + 0.000007 -0.242273 0.000002 + 0.233333 + -0.024344 -0.289695 0.015208 0.956689 + 0.000006 -0.242274 0.000002 + 0.266667 + 0.034251 -0.289680 0.011812 0.956438 + 0.000007 -0.242274 0.000002 + 0.300000 + 0.020088 -0.289194 0.018645 0.956878 + 0.000007 -0.242273 0.000002 + 0.333333 + 0.033278 -0.289194 0.003018 0.956687 + 0.000007 -0.242273 0.000002 + 0.366667 + 0.009862 -0.289702 -0.048286 0.955847 + 0.000007 -0.242274 0.000002 + 0.400000 + 0.004136 -0.288734 -0.077111 0.954290 + 0.000007 -0.242273 0.000002 + 0.433333 + 0.037219 -0.285796 -0.086381 0.953663 + 0.000007 -0.242273 0.000002 + 0.466667 + 0.004638 -0.285812 -0.114728 0.951382 + 0.000007 -0.242273 0.000002 + 0.500000 + 0.029405 -0.287262 -0.079056 0.954131 + 0.000007 -0.242274 0.000002 + 0.533333 + 0.033308 -0.287260 -0.073192 0.954471 + 0.000006 -0.242273 0.000002 + 0.566667 + 0.016710 -0.288243 -0.080526 0.954019 + 0.000007 -0.242272 0.000002 + 0.600000 + -0.003318 -0.290685 -0.057085 0.955109 + 0.000007 -0.242273 0.000002 + 0.633333 + 0.021104 -0.288241 -0.078570 0.954096 + 0.000007 -0.242273 0.000002 + 0.666667 + 0.020608 -0.289213 -0.059518 0.955191 + 0.000007 -0.242273 0.000002 + 0.700000 + 0.024504 -0.289206 -0.034602 0.956327 + 0.000007 -0.242273 0.000002 + 0.733334 + -0.014245 0.289694 0.022393 -0.956751 + 0.000007 -0.242273 0.000002 + 0.766667 + -0.024343 -0.289695 0.015208 0.956689 + 0.000007 -0.242273 0.000002 + 0.800000 + 0.034251 -0.289680 0.011812 0.956438 + 0.000006 -0.242273 0.000002 + 0.833334 + 0.020088 -0.289194 0.018645 0.956878 + 0.000007 -0.242274 0.000002 + 0.866667 + 0.033278 -0.289194 0.003017 0.956687 + 0.000007 -0.242273 0.000003 + 0.900000 + 0.009861 -0.289702 -0.048286 0.955847 + 0.000006 -0.242273 0.000002 + 0.933334 + 0.004136 -0.288734 -0.077111 0.954290 + 0.000006 -0.242273 0.000002 + 0.966667 + 0.037219 -0.285796 -0.086381 0.953663 + 0.000007 -0.242273 0.000003 + 1.000000 + 0.004638 -0.285812 -0.114728 0.951382 + 0.000007 -0.242274 0.000002 + 1.033334 + 0.029404 -0.287262 -0.079056 0.954131 + 0.000007 -0.242275 0.000002 + 1.066667 + 0.033308 -0.287260 -0.073192 0.954471 + 0.000007 -0.242273 0.000002 + 1.100000 + 0.016710 -0.288243 -0.080526 0.954019 + 0.000007 -0.242273 0.000002 + 1.133334 + -0.003318 -0.290685 -0.057085 0.955109 + 0.000007 -0.242274 0.000002 + 1.166667 + 0.021104 -0.288241 -0.078570 0.954096 + 0.000007 -0.242275 0.000003 + 1.200000 + 0.020608 -0.289213 -0.059518 0.955191 + 0.000007 -0.242272 0.000002 + 1.233333 + 0.024504 -0.289206 -0.034602 0.956327 + 0.000006 -0.242272 0.000003 + 1.266667 + -0.014246 0.289694 0.022393 -0.956751 + 0.000006 -0.242273 0.000001 + 1.300000 + -0.024344 -0.289695 0.015208 0.956689 + 0.000006 -0.242273 0.000003 + 1.333333 + 0.034251 -0.289680 0.011812 0.956438 + 0.000006 -0.242272 0.000003 + 1.366667 + 0.020088 -0.289194 0.018645 0.956878 + 0.000006 -0.242273 0.000003 + 1.400000 + 0.033278 -0.289194 0.003018 0.956687 + 0.000007 -0.242273 0.000002 + 1.433333 + 0.009862 -0.289702 -0.048286 0.955847 + 0.000007 -0.242273 0.000002 + 1.466667 + 0.004136 -0.288734 -0.077111 0.954290 + 0.000006 -0.242273 0.000002 + 1.500000 + 0.037219 -0.285796 -0.086381 0.953663 + 0.000006 -0.242272 0.000003 + 1.533333 + 0.004638 -0.285812 -0.114728 0.951382 + 0.000006 -0.242274 0.000002 + 1.566666 + 0.029404 -0.287262 -0.079056 0.954131 + 0.000006 -0.242272 0.000002 + 1.600000 + "R_Clavicle_sjnt_0" + 49 + -0.176742 -0.108321 0.559369 0.802581 + -0.007299 0.208857 0.030677 + 0.000000 + -0.188948 -0.117108 0.552039 0.803640 + -0.007299 0.208857 0.030677 + 0.033333 + -0.176249 -0.104899 0.540806 0.815758 + -0.007299 0.208857 0.030677 + 0.066667 + -0.148413 -0.084391 0.534462 0.827770 + -0.007299 0.208857 0.030677 + 0.100000 + -0.134745 -0.076582 0.554982 0.817297 + -0.007299 0.208857 0.030677 + 0.133333 + -0.147939 -0.095632 0.588684 0.788936 + -0.007299 0.208857 0.030677 + 0.166667 + -0.158201 -0.108821 0.620434 0.760390 + -0.007299 0.208857 0.030677 + 0.200000 + -0.165530 -0.112730 0.634110 0.746858 + -0.007299 0.208857 0.030677 + 0.233333 + -0.161620 -0.098080 0.623854 0.758331 + -0.007299 0.208857 0.030677 + 0.266667 + -0.141101 -0.069264 0.588688 0.792931 + -0.007299 0.208857 0.030677 + 0.300000 + -0.143534 -0.072188 0.555470 0.815868 + -0.007299 0.208857 0.030677 + 0.333333 + -0.168925 -0.095623 0.547159 0.814210 + -0.007299 0.208857 0.030677 + 0.366667 + -0.186504 -0.115153 0.542758 0.810784 + -0.007299 0.208857 0.030677 + 0.400000 + -0.177715 -0.104900 0.546180 0.811851 + -0.007299 0.208857 0.030677 + 0.433333 + -0.151835 -0.077558 0.552537 0.815864 + -0.007299 0.208857 0.030677 + 0.466667 + -0.156231 -0.082930 0.555955 0.812175 + -0.007299 0.208857 0.030677 + 0.500000 + -0.178695 -0.106367 0.558880 0.802750 + -0.007299 0.208857 0.030677 + 0.533333 + -0.188949 -0.117597 0.552527 0.803233 + -0.007299 0.208857 0.030677 + 0.566667 + -0.175761 -0.105387 0.540806 0.815800 + -0.007299 0.208857 0.030677 + 0.600000 + -0.148413 -0.084879 0.534462 0.827720 + -0.007299 0.208857 0.030677 + 0.633333 + -0.134745 -0.076094 0.554982 0.817342 + -0.007299 0.208857 0.030677 + 0.666667 + -0.147938 -0.095632 0.588196 0.789300 + -0.007299 0.208857 0.030677 + 0.700000 + -0.158202 -0.108821 0.620434 0.760390 + -0.007298 0.208857 0.030677 + 0.733334 + -0.165530 -0.112730 0.634110 0.746858 + -0.007299 0.208857 0.030677 + 0.766667 + -0.161619 -0.098079 0.623854 0.758331 + -0.007299 0.208857 0.030677 + 0.800000 + -0.141101 -0.069264 0.588688 0.792931 + -0.007299 0.208857 0.030677 + 0.833334 + -0.143534 -0.072188 0.555470 0.815868 + -0.007299 0.208858 0.030677 + 0.866667 + -0.168926 -0.095623 0.547159 0.814210 + -0.007299 0.208858 0.030677 + 0.900000 + -0.186505 -0.115153 0.542758 0.810784 + -0.007299 0.208857 0.030677 + 0.933334 + -0.177715 -0.104900 0.546180 0.811851 + -0.007299 0.208857 0.030677 + 0.966667 + -0.151835 -0.077558 0.552537 0.815864 + -0.007299 0.208857 0.030677 + 1.000000 + -0.156231 -0.082930 0.555955 0.812175 + -0.007299 0.208857 0.030677 + 1.033334 + -0.178695 -0.106367 0.558880 0.802750 + -0.007299 0.208857 0.030677 + 1.066667 + -0.188948 -0.117596 0.552527 0.803233 + -0.007299 0.208858 0.030677 + 1.100000 + -0.175761 -0.105387 0.540806 0.815800 + -0.007299 0.208858 0.030677 + 1.133334 + -0.148413 -0.084879 0.534462 0.827719 + -0.007299 0.208857 0.030677 + 1.166667 + -0.134745 -0.076094 0.554982 0.817343 + -0.007299 0.208858 0.030677 + 1.200000 + -0.147938 -0.095631 0.588196 0.789300 + -0.007299 0.208858 0.030677 + 1.233333 + -0.158201 -0.108821 0.620434 0.760389 + -0.007299 0.208858 0.030677 + 1.266667 + -0.165530 -0.112730 0.634110 0.746857 + -0.007300 0.208857 0.030677 + 1.300000 + -0.161620 -0.098080 0.623854 0.758331 + -0.007299 0.208858 0.030677 + 1.333333 + -0.141101 -0.069264 0.588688 0.792931 + -0.007299 0.208858 0.030677 + 1.366667 + -0.143534 -0.072188 0.555470 0.815868 + -0.007299 0.208857 0.030677 + 1.400000 + -0.168925 -0.095623 0.547159 0.814210 + -0.007299 0.208858 0.030677 + 1.433333 + -0.186505 -0.115642 0.542758 0.810714 + -0.007299 0.208857 0.030677 + 1.466667 + -0.177715 -0.104900 0.546180 0.811851 + -0.007299 0.208857 0.030677 + 1.500000 + -0.152324 -0.077070 0.552537 0.815819 + -0.007299 0.208857 0.030677 + 1.533333 + -0.156719 -0.082441 0.555955 0.812131 + -0.007299 0.208858 0.030676 + 1.566666 + -0.176742 -0.108320 0.559369 0.802581 + -0.007299 0.208858 0.030678 + 1.600000 + "R_Arm_sjnt_0" + 49 + 0.021884 -0.265057 0.636070 0.724349 + -0.070458 0.150703 -0.005820 + 0.000000 + -0.079253 -0.373020 0.633132 0.673587 + -0.070458 0.150703 -0.005820 + 0.033333 + -0.198452 -0.396958 0.616975 0.649911 + -0.070458 0.150703 -0.005820 + 0.066667 + -0.292230 -0.359344 0.583222 0.667327 + -0.070457 0.150703 -0.005820 + 0.100000 + -0.317606 -0.306101 0.540206 0.716663 + -0.070457 0.150703 -0.005820 + 0.133333 + -0.236987 -0.294379 0.530460 0.758809 + -0.070458 0.150703 -0.005820 + 0.166667 + -0.074318 -0.301218 0.557388 0.770106 + -0.070458 0.150703 -0.005820 + 0.200000 + 0.131825 -0.267514 0.586768 0.752836 + -0.070458 0.150703 -0.005820 + 0.233333 + 0.293036 -0.158582 0.590221 0.735269 + -0.070457 0.150703 -0.005820 + 0.266667 + -0.331146 0.031080 -0.591181 -0.734766 + -0.070458 0.150703 -0.005820 + 0.300000 + -0.289641 -0.071508 -0.567690 -0.767282 + -0.070457 0.150703 -0.005820 + 0.333333 + -0.189548 -0.167735 -0.475294 -0.842634 + -0.070458 0.150703 -0.005820 + 0.366667 + 0.089936 0.137922 0.381953 0.909396 + -0.070457 0.150703 -0.005820 + 0.400000 + 0.015678 -0.027193 0.379522 0.924650 + -0.070458 0.150703 -0.005820 + 0.433333 + 0.004392 -0.166893 0.467978 0.867827 + -0.070458 0.150703 -0.005820 + 0.466667 + 0.042936 -0.246020 0.553508 0.794519 + -0.070457 0.150703 -0.005820 + 0.500000 + 0.023363 -0.328573 0.596027 0.732288 + -0.070458 0.150703 -0.005820 + 0.533333 + -0.068493 -0.416506 0.597972 0.681367 + -0.070458 0.150703 -0.005820 + 0.566667 + -0.192575 -0.448262 0.573510 0.658074 + -0.070457 0.150703 -0.005820 + 0.600000 + -0.283910 -0.401366 0.542687 0.681022 + -0.070457 0.150703 -0.005820 + 0.633333 + -0.304403 -0.334441 0.511883 0.730386 + -0.070457 0.150702 -0.005819 + 0.666667 + -0.224767 -0.313435 0.514836 0.765625 + -0.070457 0.150703 -0.005820 + 0.700000 + -0.066500 -0.309036 0.553974 0.770187 + -0.070457 0.150702 -0.005819 + 0.733334 + 0.139151 -0.258719 0.592142 0.750379 + -0.070457 0.150703 -0.005820 + 0.766667 + 0.302317 -0.130246 0.596080 0.732345 + -0.070456 0.150703 -0.005820 + 0.800000 + -0.345314 -0.012399 -0.590199 -0.729568 + -0.070458 0.150703 -0.005820 + 0.833334 + -0.293549 -0.132085 -0.568165 -0.757344 + -0.070457 0.150703 -0.005820 + 0.866667 + -0.176842 -0.240525 -0.484066 -0.822529 + -0.070457 0.150703 -0.005820 + 0.900000 + 0.063057 0.218532 0.406351 0.884956 + -0.070457 0.150703 -0.005820 + 0.933334 + -0.007297 0.061236 0.419064 0.905860 + -0.070457 0.150703 -0.005820 + 0.966667 + -0.002948 -0.067714 0.509966 0.857520 + -0.070457 0.150702 -0.005820 + 1.000000 + 0.049762 -0.140979 0.597452 0.787845 + -0.070458 0.150703 -0.005820 + 1.033334 + 0.042887 -0.226950 0.649747 0.724212 + -0.070457 0.150702 -0.005819 + 1.066667 + -0.042624 -0.325628 0.662933 0.672807 + -0.070457 0.150703 -0.005820 + 1.100000 + -0.170128 -0.368618 0.645313 0.647108 + -0.070457 0.150703 -0.005820 + 1.133334 + -0.271723 -0.327584 0.613510 0.665177 + -0.070458 0.150703 -0.005820 + 1.166667 + -0.299053 -0.265547 0.574400 0.714225 + -0.070457 0.150702 -0.005819 + 1.200000 + -0.218436 -0.250893 0.566607 0.753854 + -0.070459 0.150704 -0.005820 + 1.233333 + -0.057719 -0.252360 0.590114 0.764689 + -0.070457 0.150703 -0.005819 + 1.266667 + 0.143542 -0.210352 0.612162 0.748603 + -0.070457 0.150702 -0.005819 + 1.300000 + 0.296454 -0.094583 0.603397 0.734221 + -0.070457 0.150702 -0.005819 + 1.333333 + -0.330660 -0.031939 -0.591166 -0.734960 + -0.070458 0.150703 -0.005820 + 1.366667 + -0.274988 -0.135993 -0.567670 -0.763962 + -0.070457 0.150703 -0.005820 + 1.400000 + -0.160724 -0.231732 -0.480155 -0.830614 + -0.070457 0.150702 -0.005819 + 1.433333 + 0.052803 0.198014 0.397559 0.894399 + -0.070456 0.150703 -0.005820 + 1.466667 + -0.016572 0.030459 0.403434 0.914351 + -0.070459 0.150703 -0.005820 + 1.500000 + -0.020528 -0.103378 0.489448 0.865640 + -0.070457 0.150702 -0.005820 + 1.533333 + 0.030715 -0.164917 0.582794 0.795116 + -0.070457 0.150702 -0.005819 + 1.566666 + 0.021884 -0.265056 0.636069 0.724349 + -0.070458 0.150703 -0.005820 + 1.600000 + "R_Arm_sjnt_1" + 49 + 0.179870 -0.389391 -0.094624 0.898370 + -0.000001 0.260632 -0.000000 + 0.000000 + 0.241437 -0.388908 -0.128793 0.879699 + -0.000001 0.260632 0.000000 + 0.033333 + 0.288829 -0.366926 -0.147834 0.871830 + -0.000001 0.260632 0.000000 + 0.066667 + 0.318138 -0.341032 -0.152230 0.871385 + -0.000001 0.260632 0.000000 + 0.100000 + 0.344014 -0.277514 -0.136128 0.886628 + -0.000001 0.260632 -0.000000 + 0.133333 + 0.386473 -0.127999 -0.084396 0.909468 + -0.000001 0.260632 -0.000000 + 0.166667 + 0.434817 -0.061055 -0.062420 0.896276 + -0.000001 0.260632 -0.000000 + 0.200000 + -0.477311 0.031245 0.053132 -0.876570 + -0.000001 0.260632 -0.000000 + 0.233333 + -0.553978 -0.050370 0.007699 -0.830971 + -0.000001 0.260632 -0.000000 + 0.266667 + 0.666334 0.054788 -0.000805 0.743637 + -0.000001 0.260632 -0.000001 + 0.300000 + 0.776760 0.016686 -0.036880 0.628495 + -0.000001 0.260633 -0.000000 + 0.333333 + 0.835380 0.020118 -0.032452 0.548346 + -0.000001 0.260632 -0.000000 + 0.366667 + -0.829039 -0.006430 0.051013 -0.556823 + -0.000001 0.260633 -0.000000 + 0.400000 + -0.737214 0.024376 0.082315 -0.670183 + -0.000000 0.260632 0.000000 + 0.433333 + -0.524239 0.101117 0.102418 -0.839321 + -0.000000 0.260633 -0.000000 + 0.466667 + 0.221397 -0.368385 -0.109271 0.896290 + -0.000001 0.260633 -0.000000 + 0.500000 + 0.179870 -0.389391 -0.094624 0.898370 + -0.000000 0.260632 -0.000000 + 0.533333 + 0.241438 -0.388908 -0.128793 0.879699 + -0.000001 0.260633 0.000000 + 0.566667 + 0.288829 -0.366926 -0.147834 0.871830 + -0.000001 0.260632 0.000000 + 0.600000 + 0.318138 -0.341032 -0.152230 0.871385 + -0.000001 0.260633 0.000000 + 0.633333 + 0.344014 -0.277514 -0.136128 0.886628 + -0.000001 0.260632 -0.000000 + 0.666667 + 0.386473 -0.127999 -0.084396 0.909468 + -0.000001 0.260633 -0.000000 + 0.700000 + 0.434818 -0.061055 -0.062420 0.896275 + -0.000001 0.260633 -0.000000 + 0.733334 + -0.477311 0.031244 0.053132 -0.876570 + -0.000001 0.260633 -0.000000 + 0.766667 + -0.553978 -0.050370 0.007699 -0.830970 + -0.000001 0.260633 -0.000000 + 0.800000 + 0.666335 0.054788 -0.000805 0.743637 + -0.000001 0.260632 -0.000000 + 0.833334 + 0.776760 0.016686 -0.036880 0.628494 + -0.000001 0.260632 0.000000 + 0.866667 + 0.835380 0.020118 -0.032452 0.548346 + -0.000001 0.260633 0.000000 + 0.900000 + -0.829038 -0.006430 0.051013 -0.556824 + -0.000000 0.260632 -0.000001 + 0.933334 + -0.737212 0.024377 0.082315 -0.670185 + 0.000000 0.260633 0.000000 + 0.966667 + -0.524236 0.101120 0.102418 -0.839322 + -0.000001 0.260632 -0.000000 + 1.000000 + 0.221397 -0.368385 -0.109271 0.896290 + 0.000000 0.260633 0.000000 + 1.033334 + 0.179870 -0.389391 -0.094624 0.898369 + -0.000001 0.260633 0.000000 + 1.066667 + 0.241438 -0.388908 -0.128793 0.879699 + -0.000000 0.260632 -0.000000 + 1.100000 + 0.288829 -0.366926 -0.147834 0.871830 + -0.000001 0.260632 0.000000 + 1.133334 + 0.318138 -0.341032 -0.152230 0.871385 + -0.000001 0.260633 -0.000000 + 1.166667 + 0.344014 -0.277514 -0.136128 0.886628 + -0.000001 0.260632 -0.000000 + 1.200000 + 0.386473 -0.127999 -0.084396 0.909468 + -0.000001 0.260632 -0.000000 + 1.233333 + 0.434817 -0.061055 -0.062420 0.896276 + -0.000001 0.260632 -0.000000 + 1.266667 + -0.477310 0.031245 0.053132 -0.876570 + -0.000001 0.260632 -0.000001 + 1.300000 + -0.553978 -0.050370 0.007699 -0.830971 + -0.000001 0.260633 -0.000001 + 1.333333 + 0.666333 0.054788 -0.000805 0.743638 + -0.000001 0.260633 -0.000001 + 1.366667 + 0.776759 0.016686 -0.036880 0.628495 + -0.000001 0.260632 0.000000 + 1.400000 + 0.835379 0.020118 -0.032452 0.548346 + -0.000000 0.260632 0.000001 + 1.433333 + -0.829039 -0.006430 0.051013 -0.556823 + -0.000001 0.260633 0.000000 + 1.466667 + -0.737215 0.024376 0.082315 -0.670182 + -0.000001 0.260633 -0.000000 + 1.500000 + -0.524241 0.101117 0.102418 -0.839320 + 0.000000 0.260632 0.000000 + 1.533333 + 0.221400 -0.368383 -0.109271 0.896290 + -0.000001 0.260632 0.000000 + 1.566666 + 0.179870 -0.389391 -0.094624 0.898370 + 0.000000 0.260632 0.000000 + 1.600000 + "R_Wrist_sjnt_0" + 49 + -0.008907 -0.087873 0.045934 0.995032 + 0.000000 0.242268 -0.000000 + 0.000000 + 0.063483 -0.091762 0.042057 0.992865 + 0.000000 0.242268 -0.000000 + 0.033333 + 0.084958 -0.094675 0.068434 0.989513 + 0.000000 0.242268 0.000000 + 0.066667 + 0.057144 -0.090797 0.020570 0.994016 + 0.000000 0.242268 -0.000000 + 0.100000 + 0.084016 -0.087881 -0.025563 0.992252 + 0.000000 0.242268 0.000000 + 0.133333 + 0.029337 -0.087415 -0.045848 0.994684 + 0.000000 0.242268 -0.000000 + 0.166667 + 0.083049 -0.084963 -0.052176 0.991545 + 0.000000 0.242268 -0.000001 + 0.200000 + 0.032782 -0.080611 -0.120069 0.988944 + 0.000000 0.242268 -0.000001 + 0.233333 + -0.008104 -0.084048 -0.138638 0.986737 + 0.000000 0.242268 -0.000001 + 0.266667 + 0.009971 -0.080147 -0.162070 0.983469 + 0.000000 0.242268 -0.000000 + 0.300000 + -0.012240 -0.083576 -0.173796 0.981152 + 0.000000 0.242268 -0.000000 + 0.333333 + -0.009794 -0.083581 -0.185514 0.979032 + 0.000000 0.242269 -0.000000 + 0.366667 + -0.020178 -0.087480 -0.164032 0.982361 + 0.000000 0.242268 -0.000000 + 0.400000 + -0.016789 -0.090374 -0.085904 0.992054 + 0.000000 0.242269 -0.000000 + 0.433333 + 0.040498 0.092791 0.016576 -0.994724 + 0.000000 0.242268 -0.000000 + 0.466667 + 0.005748 -0.089341 0.029094 0.995560 + 0.000000 0.242268 -0.000000 + 0.500000 + -0.008907 -0.087873 0.045934 0.995032 + -0.000000 0.242269 -0.000000 + 0.533333 + 0.063483 -0.091762 0.042058 0.992865 + -0.000000 0.242269 -0.000000 + 0.566667 + 0.084958 -0.094675 0.068434 0.989513 + 0.000000 0.242267 -0.000000 + 0.600000 + 0.057144 -0.090797 0.020570 0.994016 + 0.000000 0.242268 -0.000001 + 0.633333 + 0.084016 -0.087881 -0.025563 0.992252 + 0.000000 0.242268 -0.000000 + 0.666667 + 0.029337 -0.087415 -0.045848 0.994684 + 0.000000 0.242268 -0.000000 + 0.700000 + 0.083049 -0.084963 -0.052176 0.991545 + 0.000000 0.242269 -0.000000 + 0.733334 + 0.032782 -0.080611 -0.120069 0.988944 + 0.000000 0.242268 -0.000001 + 0.766667 + -0.008103 -0.084048 -0.138638 0.986737 + 0.000000 0.242268 -0.000000 + 0.800000 + 0.009971 -0.080147 -0.162070 0.983469 + 0.000000 0.242268 -0.000000 + 0.833334 + -0.012240 -0.083576 -0.173796 0.981152 + 0.000000 0.242269 -0.000000 + 0.866667 + -0.009794 -0.083581 -0.185514 0.979032 + -0.000000 0.242269 -0.000000 + 0.900000 + -0.020178 -0.087480 -0.164031 0.982361 + 0.000000 0.242269 -0.000000 + 0.933334 + -0.016790 -0.090374 -0.085903 0.992054 + 0.000000 0.242268 -0.000001 + 0.966667 + 0.040497 0.092791 0.016576 -0.994724 + 0.000000 0.242269 -0.000000 + 1.000000 + 0.005748 -0.089341 0.029095 0.995559 + 0.000000 0.242269 -0.000001 + 1.033334 + -0.008906 -0.087873 0.045934 0.995032 + 0.000001 0.242268 -0.000000 + 1.066667 + 0.063483 -0.091762 0.042058 0.992865 + 0.000000 0.242269 -0.000000 + 1.100000 + 0.084958 -0.094675 0.068434 0.989513 + 0.000000 0.242268 -0.000000 + 1.133334 + 0.057144 -0.090797 0.020570 0.994016 + -0.000000 0.242269 -0.000000 + 1.166667 + 0.084016 -0.087881 -0.025563 0.992252 + 0.000000 0.242268 -0.000000 + 1.200000 + 0.029337 -0.087415 -0.045848 0.994684 + 0.000000 0.242269 -0.000000 + 1.233333 + 0.083050 -0.084963 -0.052176 0.991545 + 0.000000 0.242267 -0.000000 + 1.266667 + 0.032782 -0.080611 -0.120069 0.988944 + 0.000000 0.242269 -0.000001 + 1.300000 + -0.008104 -0.084048 -0.138638 0.986737 + 0.000000 0.242270 -0.000001 + 1.333333 + 0.009971 -0.080147 -0.162070 0.983469 + 0.000000 0.242269 -0.000000 + 1.366667 + -0.012240 -0.083576 -0.173796 0.981152 + 0.000000 0.242269 -0.000000 + 1.400000 + -0.009794 -0.083581 -0.185514 0.979032 + 0.000000 0.242268 -0.000000 + 1.433333 + -0.020178 -0.087480 -0.164032 0.982361 + 0.000000 0.242269 -0.000000 + 1.466667 + -0.016790 -0.090374 -0.085905 0.992054 + 0.000000 0.242268 0.000000 + 1.500000 + 0.040497 0.092791 0.016577 -0.994724 + 0.000000 0.242269 -0.000001 + 1.533333 + 0.005748 -0.089341 0.029094 0.995560 + 0.000000 0.242269 -0.000001 + 1.566666 + -0.008907 -0.087872 0.045934 0.995032 + 0.000001 0.242267 -0.000000 + 1.600000 + "C_Neck_sjnt_0" + 49 + 0.153323 -0.043470 0.052720 0.985811 + 0.000000 0.206349 -0.038118 + 0.000000 + 0.157717 -0.026379 0.047350 0.985996 + -0.000000 0.206349 -0.038118 + 0.033333 + 0.184083 -0.010258 0.015111 0.982741 + 0.000000 0.206349 -0.038118 + 0.066667 + 0.188965 -0.004266 -0.032762 0.981428 + -0.000000 0.206349 -0.038118 + 0.100000 + 0.213379 -0.002548 -0.070866 0.974393 + -0.000000 0.206349 -0.038118 + 0.133333 + 0.229004 0.004349 -0.073307 0.970652 + 0.000000 0.206349 -0.038118 + 0.166667 + 0.218261 0.013077 -0.072817 0.973082 + 0.000000 0.206349 -0.038118 + 0.200000 + 0.203613 0.012592 -0.089915 0.974833 + 0.000000 0.206349 -0.038118 + 0.233333 + 0.201172 0.007162 -0.102129 0.974191 + 0.000000 0.206349 -0.038118 + 0.266667 + 0.183594 -0.010111 -0.102133 0.977630 + 0.000000 0.206349 -0.038118 + 0.300000 + 0.186036 -0.024156 -0.070871 0.979686 + -0.000000 0.206349 -0.038118 + 0.333333 + 0.204103 -0.039058 -0.022022 0.977922 + 0.000000 0.206349 -0.038118 + 0.366667 + 0.202639 -0.046876 0.004845 0.978119 + 0.000000 0.206349 -0.038118 + 0.400000 + 0.198244 -0.048832 0.014615 0.978826 + 0.000000 0.206349 -0.038118 + 0.433333 + 0.196779 -0.042976 0.033180 0.978943 + -0.000000 0.206349 -0.038118 + 0.466667 + 0.195803 -0.038584 0.043928 0.978899 + 0.000000 0.206349 -0.038118 + 0.500000 + 0.178713 -0.035168 0.047349 0.982132 + 0.000000 0.206349 -0.038118 + 0.533333 + 0.183107 -0.018077 0.042955 0.981988 + 0.000000 0.206349 -0.038118 + 0.566667 + 0.208497 -0.002413 0.009251 0.977976 + -0.000000 0.206349 -0.038118 + 0.600000 + 0.211426 0.002023 -0.040089 0.976569 + 0.000000 0.206349 -0.038118 + 0.633333 + 0.232910 0.001787 -0.078193 0.969348 + 0.000000 0.206349 -0.038118 + 0.666667 + 0.246582 0.005755 -0.079169 0.965866 + 0.000000 0.206349 -0.038118 + 0.700000 + 0.232910 0.011125 -0.077214 0.969364 + 0.000000 0.206349 -0.038118 + 0.733334 + 0.215332 0.007405 -0.092848 0.972089 + 0.000000 0.206349 -0.038118 + 0.766667 + 0.209472 -0.000150 -0.104085 0.972259 + -0.000000 0.206349 -0.038118 + 0.800000 + 0.188965 -0.016092 -0.103600 0.976371 + -0.000000 0.206348 -0.038118 + 0.833334 + 0.187989 -0.029771 -0.068918 0.979298 + 0.000000 0.206349 -0.038118 + 0.866667 + 0.202638 -0.041989 -0.017137 0.978203 + 0.000000 0.206349 -0.038118 + 0.900000 + 0.196779 -0.049320 0.011684 0.979137 + 0.000000 0.206349 -0.038118 + 0.933334 + 0.188967 -0.050787 0.021942 0.980424 + 0.000000 0.206349 -0.038118 + 0.966667 + 0.184084 -0.044443 0.040507 0.981069 + 0.000000 0.206349 -0.038118 + 1.000000 + 0.180178 -0.040051 0.050767 0.981506 + 0.000000 0.206349 -0.038118 + 1.033334 + 0.160158 -0.037122 0.053699 0.984930 + 0.000000 0.206348 -0.038118 + 1.066667 + 0.162599 -0.021985 0.048328 0.985263 + -0.000000 0.206350 -0.038118 + 1.100000 + 0.187013 -0.008305 0.014623 0.982213 + -0.000000 0.206349 -0.038118 + 1.133334 + 0.189454 -0.005487 -0.034228 0.981278 + -0.000000 0.206349 -0.038118 + 1.166667 + 0.210938 -0.006088 -0.071844 0.974837 + 0.000000 0.206349 -0.038118 + 1.200000 + 0.225098 -0.000778 -0.073309 0.971574 + 0.000000 0.206349 -0.038118 + 1.233333 + 0.212402 0.006180 -0.071842 0.974518 + 0.000000 0.206349 -0.038118 + 1.266667 + 0.196289 0.003833 -0.086986 0.976673 + 0.000000 0.206350 -0.038118 + 1.300000 + 0.192871 -0.002207 -0.098712 0.976244 + 0.000000 0.206349 -0.038118 + 1.333333 + 0.173340 -0.017802 -0.098715 0.979741 + 0.000000 0.206349 -0.038118 + 1.366667 + 0.172853 -0.031237 -0.065987 0.982238 + -0.000000 0.206349 -0.038118 + 1.400000 + 0.187502 -0.045896 -0.016650 0.981050 + 0.000000 0.206349 -0.038117 + 1.433333 + 0.183108 -0.054202 0.010217 0.981544 + 0.000000 0.206349 -0.038118 + 1.466667 + 0.176272 -0.056158 0.019987 0.982535 + 0.000000 0.206348 -0.038118 + 1.500000 + 0.173342 -0.049814 0.037575 0.982883 + 0.000000 0.206348 -0.038118 + 1.533333 + 0.170901 -0.045422 0.047835 0.983078 + 0.000000 0.206349 -0.038119 + 1.566666 + 0.153323 -0.043470 0.052720 0.985811 + 0.000000 0.206348 -0.038118 + 1.600000 + "C_Neck_sjnt_1" + 49 + -0.241209 -0.035169 0.050280 0.968532 + 0.000000 0.054001 0.000000 + 0.000000 + -0.238280 -0.021250 0.034161 0.970363 + -0.000000 0.054001 0.000000 + 0.033333 + -0.227539 -0.006046 0.009739 0.973701 + 0.000000 0.054001 0.000001 + 0.066667 + -0.222658 0.009770 -0.024454 0.974541 + -0.000000 0.054001 0.000000 + 0.100000 + -0.213869 0.021251 -0.047412 0.975480 + 0.000000 0.054001 0.000000 + 0.133333 + -0.208499 0.029064 -0.051807 0.976217 + -0.000000 0.054001 0.000000 + 0.166667 + -0.211917 0.034192 -0.054249 0.975182 + 0.000000 0.054001 0.000000 + 0.200000 + -0.217288 0.034681 -0.060600 0.973607 + 0.000000 0.054001 0.000000 + 0.233333 + -0.218265 0.032728 -0.061577 0.973395 + 0.000000 0.054000 0.000000 + 0.266667 + -0.217775 0.017590 -0.054252 0.974331 + 0.000000 0.054000 0.000000 + 0.300000 + -0.219727 -0.000398 -0.030807 0.975075 + -0.000000 0.054000 0.000000 + 0.333333 + -0.215819 -0.023680 -0.005409 0.976131 + -0.000000 0.054001 0.000001 + 0.366667 + -0.216794 -0.036623 0.009732 0.975482 + 0.000000 0.054000 0.000000 + 0.400000 + -0.216306 -0.040044 0.024387 0.975199 + 0.000000 0.054001 0.000000 + 0.433333 + -0.215818 -0.036629 0.038066 0.975004 + 0.000000 0.054000 0.000000 + 0.466667 + -0.213865 -0.032724 0.045395 0.975259 + -0.000000 0.054000 0.000000 + 0.500000 + -0.216795 -0.028330 0.044419 0.974795 + 0.000000 0.054001 0.000000 + 0.533333 + -0.213378 -0.014532 0.029278 0.976423 + 0.000000 0.054001 0.000000 + 0.566667 + -0.203126 0.001099 0.003878 0.979144 + 0.000000 0.054000 0.000000 + 0.600000 + -0.200197 0.016610 -0.030315 0.979146 + -0.000000 0.054001 0.000000 + 0.633333 + -0.194339 0.026625 -0.053762 0.979098 + -0.000000 0.054001 0.000000 + 0.666667 + -0.190921 0.031265 -0.057181 0.979440 + -0.000000 0.054001 0.000000 + 0.700000 + -0.197269 0.032241 -0.058157 0.978092 + 0.000000 0.054000 0.000000 + 0.733334 + -0.205081 0.030044 -0.063043 0.976250 + -0.000000 0.054000 0.000000 + 0.766667 + -0.208987 0.025405 -0.064021 0.975490 + -0.000000 0.054000 0.000001 + 0.800000 + -0.212404 0.011365 -0.055719 0.975526 + 0.000000 0.054001 0.000000 + 0.833334 + -0.217285 -0.006464 -0.028854 0.975660 + -0.000000 0.054000 0.000000 + 0.866667 + -0.217772 -0.027344 -0.000036 0.975617 + 0.000000 0.054000 0.000000 + 0.900000 + -0.222165 -0.039067 0.017060 0.974077 + 0.000000 0.054001 0.000000 + 0.933334 + -0.225095 -0.041512 0.033180 0.972887 + -0.000000 0.054000 0.000000 + 0.966667 + -0.228025 -0.037120 0.046860 0.971818 + 0.000000 0.054000 0.000001 + 1.000000 + -0.229002 -0.033216 0.054188 0.971349 + 0.000000 0.054000 0.000000 + 1.033334 + -0.234862 -0.029066 0.052235 0.970189 + -0.000000 0.054000 0.000001 + 1.066667 + -0.233398 -0.016855 0.035628 0.971582 + -0.000000 0.054001 0.000000 + 1.100000 + -0.224610 -0.004153 0.009250 0.974396 + -0.000000 0.054001 0.000000 + 1.133334 + -0.222169 0.008062 -0.025432 0.974643 + 0.000000 0.054001 0.000000 + 1.166667 + -0.215822 0.016612 -0.048390 0.975092 + -0.000000 0.054000 0.000000 + 1.200000 + -0.212405 0.022961 -0.051809 0.975537 + 0.000000 0.054001 0.000000 + 1.233333 + -0.217288 0.025890 -0.053762 0.974282 + -0.000000 0.054000 0.000000 + 1.266667 + -0.223635 0.024670 -0.058159 0.972623 + 0.000000 0.054000 0.000000 + 1.300000 + -0.225588 0.021740 -0.059137 0.972183 + -0.000000 0.054001 0.000000 + 1.333333 + -0.227540 0.008433 -0.051812 0.972353 + 0.000000 0.054000 0.000000 + 1.366667 + -0.231933 -0.009029 -0.026413 0.972331 + 0.000000 0.054001 0.000000 + 1.400000 + -0.231443 -0.031251 -0.000037 0.972346 + 0.000000 0.053999 0.000000 + 1.433333 + -0.235348 -0.043950 0.016081 0.970784 + 0.000000 0.054001 0.000000 + 1.466667 + -0.237301 -0.046884 0.030736 0.969817 + -0.000000 0.054001 0.000000 + 1.500000 + -0.238278 -0.042492 0.042950 0.969316 + 0.000000 0.054002 0.000000 + 1.533333 + -0.237790 -0.038099 0.050279 0.969266 + -0.000000 0.054000 0.000000 + 1.566666 + -0.241209 -0.035169 0.050280 0.968532 + 0.000000 0.054000 0.000000 + 1.600000 + "C_Neck_sjnt_2" + 49 + 0.007816 -0.039067 0.026359 0.998858 + 0.000000 0.054001 0.000000 + 0.000000 + 0.008425 -0.022220 0.019527 0.999527 + 0.000000 0.054001 0.000000 + 0.033333 + 0.008301 -0.003451 0.014648 0.999852 + 0.000000 0.054001 0.000000 + 0.066667 + 0.014646 0.016602 0.006352 0.999735 + 0.000000 0.054001 0.000000 + 0.100000 + 0.012325 0.031007 -0.000237 0.999443 + -0.000000 0.054001 -0.000000 + 0.133333 + 0.011348 0.040041 -0.004874 0.999122 + 0.000000 0.054001 0.000000 + 0.166667 + 0.015620 0.045902 -0.009267 0.998781 + 0.000000 0.054001 0.000000 + 0.200000 + 0.016840 0.047856 -0.009755 0.998665 + 0.000000 0.054001 0.000000 + 0.233333 + 0.016108 0.045902 -0.008779 0.998778 + -0.000000 0.054001 -0.000000 + 0.266667 + 0.023190 0.029789 -0.004632 0.999276 + 0.000000 0.054001 0.000000 + 0.300000 + 0.025634 0.008670 -0.000272 0.999634 + 0.000000 0.054001 0.000000 + 0.333333 + 0.027834 -0.018308 0.004635 0.999434 + 0.000000 0.054001 0.000000 + 0.366667 + 0.029301 -0.033690 0.008294 0.998968 + 0.000000 0.054000 0.000000 + 0.400000 + 0.031010 -0.040038 0.013176 0.998630 + 0.000000 0.054001 0.000000 + 0.433333 + 0.030278 -0.039551 0.017570 0.998604 + -0.000000 0.054001 0.000000 + 0.466667 + 0.030033 -0.037110 0.020501 0.998649 + 0.000000 0.054001 0.000000 + 0.500000 + 0.033206 -0.032227 0.020502 0.998718 + -0.000000 0.054001 0.000000 + 0.533333 + 0.033693 -0.016113 0.015134 0.999188 + 0.000000 0.054001 0.000000 + 0.566667 + 0.033691 0.003572 0.011232 0.999363 + -0.000000 0.054001 -0.000000 + 0.600000 + 0.037595 0.024174 0.003058 0.998996 + -0.000000 0.054001 -0.000000 + 0.633333 + 0.032710 0.037602 -0.003897 0.998750 + -0.000000 0.054001 -0.000000 + 0.666667 + 0.029536 0.042974 -0.008291 0.998605 + 0.000000 0.054001 -0.000000 + 0.700000 + 0.031245 0.045416 -0.012197 0.998405 + -0.000000 0.054001 0.000000 + 0.733334 + 0.029780 0.043463 -0.013174 0.998524 + 0.000000 0.054001 0.000000 + 0.766667 + 0.026119 0.038580 -0.011710 0.998845 + 0.000000 0.054001 0.000000 + 0.800000 + 0.029294 0.023442 -0.007318 0.999269 + 0.000000 0.054001 0.000000 + 0.833334 + 0.028076 0.001956 -0.000087 0.999604 + 0.000000 0.054001 0.000000 + 0.866667 + 0.026126 -0.023192 0.009273 0.999347 + 0.000000 0.054002 -0.000000 + 0.900000 + 0.023686 -0.037598 0.015618 0.998890 + 0.000000 0.054001 -0.000000 + 0.933334 + 0.021977 -0.042971 0.022452 0.998582 + 0.000000 0.054001 -0.000000 + 0.966667 + 0.017826 -0.041019 0.027335 0.998625 + 0.000000 0.054001 -0.000000 + 1.000000 + 0.014652 -0.038091 0.030266 0.998708 + 0.000000 0.054001 -0.000000 + 1.033334 + 0.015140 -0.033696 0.030267 0.998859 + -0.000000 0.054001 0.000000 + 1.066667 + 0.013307 -0.018802 0.022457 0.999483 + -0.000000 0.054001 -0.000000 + 1.100000 + 0.011352 -0.001818 0.015137 0.999819 + 0.000000 0.054001 0.000000 + 1.133334 + 0.015013 0.015015 0.004886 0.999763 + 0.000000 0.054001 0.000000 + 1.166667 + 0.010617 0.026613 -0.002435 0.999587 + 0.000000 0.054001 0.000000 + 1.200000 + 0.007809 0.033694 -0.006829 0.999378 + 0.000000 0.054001 -0.000000 + 1.233333 + 0.010616 0.037601 -0.010734 0.999179 + 0.000000 0.054000 0.000000 + 1.266667 + 0.010982 0.037113 -0.010734 0.999193 + 0.000000 0.054002 0.000000 + 1.300000 + 0.009029 0.034183 -0.009270 0.999332 + 0.000000 0.054001 0.000000 + 1.333333 + 0.013670 0.019778 -0.004878 0.999699 + 0.000000 0.054002 0.000000 + 1.366667 + 0.013428 -0.000876 0.001282 0.999909 + -0.000000 0.054002 -0.000000 + 1.400000 + 0.011966 -0.026612 0.008784 0.999536 + 0.000000 0.054001 0.000000 + 1.433333 + 0.010381 -0.041994 0.013663 0.998971 + 0.000000 0.054000 0.000000 + 1.466667 + 0.009771 -0.047366 0.018545 0.998658 + 0.000000 0.054000 -0.000000 + 1.500000 + 0.007604 -0.044438 0.021475 0.998752 + 0.000000 0.054000 0.000000 + 1.533333 + 0.005436 -0.041508 0.024405 0.998825 + -0.000000 0.054001 0.000001 + 1.566666 + 0.007816 -0.039067 0.026359 0.998858 + 0.000000 0.054000 0.000000 + 1.600000 + "C_Head_sjnt_0" + 49 + -0.166016 -0.013952 0.076165 0.983078 + 0.000000 0.054000 0.000000 + 0.000000 + -0.178713 0.002834 0.062008 0.981941 + 0.000000 0.054000 0.000000 + 0.033333 + -0.199222 0.018032 0.048338 0.978595 + -0.000000 0.054000 0.000000 + 0.066667 + -0.176762 0.028782 0.027834 0.983439 + -0.000000 0.054000 0.000000 + 0.100000 + -0.204106 0.038059 0.012332 0.978131 + -0.000000 0.054000 -0.000000 + 0.133333 + -0.222661 0.041968 -0.012692 0.973909 + -0.000000 0.054000 -0.000000 + 0.166667 + -0.201177 0.047833 -0.025630 0.978051 + 0.000000 0.054000 0.000000 + 0.200000 + -0.182623 0.050764 -0.020502 0.981658 + -0.000000 0.054000 0.000000 + 0.233333 + -0.185552 0.047833 -0.016352 0.981333 + 0.000000 0.054000 -0.000000 + 0.266667 + -0.166997 0.036110 0.012821 0.985213 + -0.000000 0.054000 0.000000 + 0.300000 + -0.160159 0.020484 0.023193 0.986606 + 0.000000 0.054000 0.000000 + 0.333333 + -0.157228 -0.000245 0.041988 0.986669 + 0.000000 0.054000 0.000000 + 0.366667 + -0.151367 -0.011748 0.054681 0.986894 + -0.000000 0.054000 0.000000 + 0.400000 + -0.156250 -0.014680 0.062004 0.985660 + 0.000000 0.054000 0.000000 + 0.433333 + -0.161133 -0.013460 0.062493 0.984860 + 0.000000 0.054000 0.000000 + 0.466667 + -0.158204 -0.011019 0.066400 0.985110 + 0.000000 0.054000 0.000000 + 0.500000 + -0.141602 -0.008821 0.070307 0.987384 + -0.000000 0.054000 -0.000000 + 0.533333 + -0.153323 0.007538 0.058103 0.986438 + -0.000000 0.054000 0.000000 + 0.566667 + -0.173832 0.023895 0.046387 0.983392 + -0.000000 0.054000 -0.000000 + 0.600000 + -0.153325 0.035132 0.027103 0.987179 + 0.000000 0.054000 0.000000 + 0.633333 + -0.184576 0.043921 0.011357 0.981771 + 0.000000 0.054000 0.000000 + 0.666667 + -0.205083 0.044900 -0.014156 0.977612 + -0.000000 0.054000 -0.000000 + 0.700000 + -0.185552 0.046859 -0.027827 0.981122 + 0.000000 0.054000 0.000000 + 0.733334 + -0.169927 0.045883 -0.023432 0.984109 + -0.000000 0.054000 0.000000 + 0.766667 + -0.175786 0.040999 -0.019771 0.983376 + 0.000000 0.054000 -0.000000 + 0.800000 + -0.162113 0.029764 0.009402 0.986278 + 0.000000 0.054000 -0.000000 + 0.833334 + -0.159182 0.013404 0.022460 0.986903 + -0.000000 0.053999 -0.000000 + 0.866667 + -0.159180 -0.005766 0.045893 0.986166 + 0.000000 0.053999 0.000000 + 0.900000 + -0.158203 -0.016145 0.062492 0.985295 + -0.000000 0.053999 0.000000 + 0.933334 + -0.166016 -0.018101 0.071281 0.983377 + 0.000000 0.053999 -0.000000 + 0.966667 + -0.173828 -0.015173 0.072258 0.982004 + -0.000000 0.054000 -0.000000 + 1.000000 + -0.173829 -0.011512 0.077141 0.981682 + -0.000000 0.054001 -0.000000 + 1.033334 + -0.159181 -0.009069 0.081048 0.983875 + 0.000000 0.054000 0.000000 + 1.066667 + -0.173831 0.005947 0.065426 0.982582 + 0.000000 0.053999 0.000000 + 1.100000 + -0.196293 0.019497 0.048827 0.979135 + 0.000000 0.054000 -0.000000 + 1.133334 + -0.176762 0.026829 0.026124 0.983541 + -0.000000 0.054000 0.000000 + 1.166667 + -0.206059 0.033177 0.009035 0.977935 + -0.000000 0.054000 0.000000 + 1.200000 + -0.226566 0.036109 -0.016356 0.973189 + -0.000000 0.053999 0.000000 + 1.233333 + -0.206059 0.040021 -0.029050 0.977289 + 0.000000 0.054001 0.000000 + 1.266667 + -0.188481 0.040022 -0.023678 0.980975 + 0.000000 0.054000 0.000001 + 1.300000 + -0.193363 0.037090 -0.019528 0.980231 + 0.000000 0.054000 0.000000 + 1.333333 + -0.176761 0.026832 0.010011 0.983837 + 0.000000 0.054001 0.000000 + 1.366667 + -0.172854 0.011205 0.022703 0.984622 + 0.000000 0.054001 -0.000000 + 1.400000 + -0.172852 -0.008331 0.044915 0.983888 + 0.000000 0.054001 0.000000 + 1.433333 + -0.170898 -0.019564 0.059562 0.983292 + 0.000000 0.054000 -0.000000 + 1.466667 + -0.176757 -0.021031 0.066397 0.981787 + 0.000000 0.053999 0.000000 + 1.500000 + -0.183593 -0.017126 0.066398 0.980608 + -0.000000 0.054001 0.000001 + 1.533333 + -0.182617 -0.014197 0.070305 0.980565 + 0.000000 0.054001 0.000000 + 1.566666 + -0.166016 -0.013952 0.076164 0.983078 + -0.000000 0.054002 -0.000000 + 1.600000 \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Human/walk.tof b/Engine/lib/JoltPhysics/Assets/Human/walk.tof new file mode 100644 index 000000000..4fe42a669 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Human/walk.tof @@ -0,0 +1,5927 @@ +TOS 1.00 + +declare SkeletalAnimation 1 + mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint + +declare SkeletalAnimation::AnimatedJoint 2 + mJointName string + mKeyframes array instance SkeletalAnimation::Keyframe + +declare SkeletalAnimation::Keyframe 3 + mRotation quat + mTranslation vec3 + mTime float + +object SkeletalAnimation 00000001 + 23 + "hipsBone" + 85 + 0.028851 0.997984 -0.028764 0.048669 + -0.020494 0.875553 0.050907 + 0.000000 + 0.023715 0.998435 -0.035948 0.035676 + -0.017689 0.881168 0.001381 + 0.033333 + 0.027169 0.998487 -0.043596 0.019622 + -0.015189 0.881899 -0.048877 + 0.066667 + 0.033407 0.998265 -0.048380 0.003199 + -0.012444 0.877991 -0.100572 + 0.100000 + 0.039450 0.997667 -0.053480 -0.015618 + -0.009517 0.868466 -0.153610 + 0.133333 + 0.041436 0.996865 -0.056821 -0.036248 + -0.004973 0.854058 -0.212063 + 0.166667 + 0.033668 0.996505 -0.052663 -0.055413 + 0.001019 0.838919 -0.275641 + 0.200000 + 0.009325 0.996643 -0.049003 -0.064912 + 0.008902 0.827686 -0.342333 + 0.233333 + -0.012859 0.996817 -0.043825 -0.065348 + 0.015977 0.821826 -0.408657 + 0.266667 + -0.026282 0.997204 -0.033163 -0.061595 + 0.021347 0.821584 -0.471807 + 0.300000 + -0.038324 0.997219 -0.024892 -0.058878 + 0.025129 0.826225 -0.532333 + 0.333333 + -0.053463 0.996459 -0.022579 -0.060834 + 0.027567 0.833795 -0.589686 + 0.366667 + -0.058964 0.996209 -0.023537 -0.059477 + 0.028299 0.843074 -0.644721 + 0.400000 + -0.051076 0.996978 -0.025859 -0.052517 + 0.025982 0.853819 -0.698474 + 0.433333 + -0.039002 0.997998 -0.029296 -0.040246 + 0.022080 0.863831 -0.750153 + 0.466667 + -0.030665 0.998599 -0.035075 -0.025103 + 0.018300 0.870912 -0.797803 + 0.500000 + -0.031852 0.998578 -0.041615 -0.009759 + 0.015617 0.872864 -0.845881 + 0.533333 + -0.037119 0.998142 -0.048085 0.004828 + 0.012811 0.869688 -0.895302 + 0.566667 + -0.040486 0.997402 -0.056149 0.019933 + 0.008907 0.860896 -0.946676 + 0.600000 + -0.041695 0.996489 -0.062142 0.037543 + 0.003798 0.848929 -1.001833 + 0.633333 + -0.037726 0.995910 -0.061736 0.054118 + -0.001356 0.836963 -1.061750 + 0.666667 + -0.026591 0.996038 -0.053404 0.065945 + -0.006585 0.828174 -1.126670 + 0.700000 + -0.010017 0.996394 -0.042022 0.073027 + -0.012318 0.825001 -1.193971 + 0.733334 + 0.005781 0.996707 -0.034220 0.073288 + -0.017931 0.827689 -1.259074 + 0.766667 + 0.020541 0.997007 -0.029686 0.068370 + -0.021591 0.834038 -1.319845 + 0.800000 + 0.033663 0.996971 -0.025162 0.065438 + -0.024152 0.842586 -1.377930 + 0.833334 + 0.038108 0.996985 -0.024313 0.063065 + -0.024762 0.853331 -1.431744 + 0.866667 + 0.035519 0.997361 -0.024862 0.058230 + -0.023176 0.865541 -1.484154 + 0.900000 + 0.028851 0.997984 -0.028764 0.048669 + -0.020494 0.875553 -1.534612 + 0.933334 + 0.023694 0.998435 -0.035948 0.035698 + -0.017689 0.881168 -1.584155 + 0.966667 + 0.027115 0.998487 -0.043597 0.019675 + -0.015189 0.881899 -1.634430 + 1.000000 + 0.033320 0.998268 -0.048383 0.003113 + -0.012444 0.877991 -1.686120 + 1.033334 + 0.039450 0.997667 -0.053480 -0.015618 + -0.009517 0.868466 -1.739153 + 1.066667 + 0.041436 0.996865 -0.056821 -0.036248 + -0.004973 0.854058 -1.797605 + 1.100000 + 0.033668 0.996505 -0.052663 -0.055413 + 0.001019 0.838919 -1.861182 + 1.133334 + 0.009325 0.996643 -0.049003 -0.064912 + 0.008902 0.827686 -1.927872 + 1.166667 + -0.012859 0.996817 -0.043825 -0.065348 + 0.015977 0.821826 -1.994195 + 1.200000 + -0.026282 0.997204 -0.033163 -0.061595 + 0.021347 0.821584 -2.057344 + 1.233333 + -0.038324 0.997219 -0.024892 -0.058878 + 0.025129 0.826225 -2.117868 + 1.266667 + -0.053463 0.996459 -0.022579 -0.060834 + 0.027567 0.833795 -2.175220 + 1.300000 + -0.058964 0.996209 -0.023537 -0.059476 + 0.028299 0.843074 -2.230253 + 1.333333 + -0.051076 0.996978 -0.025859 -0.052517 + 0.025982 0.853819 -2.284006 + 1.366667 + -0.039002 0.997998 -0.029296 -0.040246 + 0.022080 0.863831 -2.335683 + 1.400000 + -0.030665 0.998599 -0.035075 -0.025103 + 0.018300 0.870912 -2.383332 + 1.433333 + -0.031852 0.998578 -0.041615 -0.009759 + 0.015617 0.872864 -2.431409 + 1.466667 + -0.037119 0.998142 -0.048085 0.004828 + 0.012811 0.869688 -2.480828 + 1.500000 + -0.040486 0.997402 -0.056149 0.019933 + 0.008907 0.860896 -2.532200 + 1.533333 + -0.041695 0.996489 -0.062142 0.037543 + 0.003798 0.848929 -2.587357 + 1.566666 + -0.037726 0.995910 -0.061736 0.054118 + -0.001355 0.836963 -2.647272 + 1.600000 + -0.026591 0.996038 -0.053405 0.065946 + -0.006585 0.828174 -2.712191 + 1.633333 + -0.010017 0.996394 -0.042022 0.073027 + -0.012318 0.825001 -2.779490 + 1.666666 + 0.005780 0.996707 -0.034220 0.073289 + -0.017931 0.827689 -2.844592 + 1.700000 + 0.020541 0.997007 -0.029686 0.068370 + -0.021591 0.834038 -2.905361 + 1.733333 + 0.033662 0.996971 -0.025162 0.065438 + -0.024152 0.842586 -2.963445 + 1.766666 + 0.038108 0.996985 -0.024313 0.063065 + -0.024762 0.853331 -3.017258 + 1.800000 + 0.035519 0.997361 -0.024862 0.058230 + -0.023177 0.865541 -3.069667 + 1.833333 + 0.028851 0.997984 -0.028764 0.048669 + -0.020494 0.875552 -3.120123 + 1.866666 + 0.023694 0.998435 -0.035948 0.035698 + -0.017689 0.881168 -3.169665 + 1.899999 + 0.027115 0.998487 -0.043596 0.019676 + -0.015189 0.881899 -3.219939 + 1.933333 + 0.033320 0.998268 -0.048383 0.003113 + -0.012444 0.877991 -3.271636 + 1.966666 + 0.039449 0.997667 -0.053479 -0.015617 + -0.009517 0.868467 -3.324677 + 1.999999 + 0.041436 0.996865 -0.056821 -0.036248 + -0.004973 0.854058 -3.383129 + 2.033333 + 0.033668 0.996505 -0.052663 -0.055413 + 0.001019 0.838919 -3.446706 + 2.066666 + 0.009327 0.996643 -0.049003 -0.064912 + 0.008901 0.827686 -3.513396 + 2.099999 + -0.012858 0.996817 -0.043825 -0.065348 + 0.015977 0.821826 -3.579720 + 2.133333 + -0.026282 0.997204 -0.033164 -0.061595 + 0.021346 0.821584 -3.642869 + 2.166666 + -0.038324 0.997219 -0.024892 -0.058878 + 0.025129 0.826224 -3.703394 + 2.199999 + -0.053463 0.996459 -0.022579 -0.060834 + 0.027567 0.833795 -3.760746 + 2.233333 + -0.058964 0.996209 -0.023537 -0.059476 + 0.028299 0.843074 -3.815779 + 2.266666 + -0.051076 0.996978 -0.025859 -0.052517 + 0.025982 0.853818 -3.869532 + 2.299999 + -0.039003 0.997998 -0.029296 -0.040247 + 0.022080 0.863830 -3.921209 + 2.333333 + -0.030664 0.998599 -0.035075 -0.025104 + 0.018300 0.870911 -3.968858 + 2.366666 + -0.031853 0.998578 -0.041615 -0.009760 + 0.015617 0.872864 -4.016935 + 2.399999 + -0.037118 0.998142 -0.048084 0.004827 + 0.012811 0.869689 -4.066355 + 2.433332 + -0.040486 0.997402 -0.056149 0.019933 + 0.008907 0.860896 -4.117727 + 2.466666 + -0.041695 0.996489 -0.062142 0.037543 + 0.003798 0.848929 -4.172884 + 2.499999 + -0.037725 0.995910 -0.061736 0.054117 + -0.001355 0.836964 -4.232800 + 2.533332 + -0.026591 0.996038 -0.053405 0.065946 + -0.006585 0.828174 -4.297718 + 2.566666 + -0.010018 0.996394 -0.042022 0.073026 + -0.012318 0.825001 -4.365017 + 2.599999 + 0.005780 0.996707 -0.034220 0.073289 + -0.017930 0.827689 -4.430120 + 2.633332 + 0.020541 0.997007 -0.029686 0.068371 + -0.021591 0.834038 -4.490890 + 2.666666 + 0.033576 0.996980 -0.025170 0.065352 + -0.024152 0.842586 -4.548974 + 2.699999 + 0.038151 0.996986 -0.024314 0.063022 + -0.024762 0.853330 -4.602787 + 2.733332 + 0.035606 0.997363 -0.024864 0.058144 + -0.023177 0.865540 -4.655195 + 2.766665 + 0.028851 0.997984 -0.028764 0.048669 + -0.020494 0.875552 -4.705652 + 2.799999 + "R_Leg_sjnt_0" + 85 + 0.967486 -0.025403 0.007812 0.251526 + -0.104854 -0.000224 0.000080 + 0.000000 + 0.955380 -0.009772 0.016604 0.294749 + -0.104854 -0.000224 0.000080 + 0.033333 + 0.945617 -0.006841 0.016605 0.324786 + -0.104854 -0.000224 0.000080 + 0.066667 + 0.940265 -0.011724 0.006960 0.340171 + -0.104854 -0.000224 0.000080 + 0.100000 + 0.935783 -0.024422 -0.007569 0.351648 + -0.104854 -0.000224 0.000080 + 0.133333 + 0.926527 -0.036633 -0.015628 0.374115 + -0.104854 -0.000224 0.000080 + 0.166667 + 0.918519 -0.035657 -0.009525 0.393651 + -0.104854 -0.000224 0.000080 + 0.200000 + 0.915591 -0.010746 0.003298 0.401953 + -0.104854 -0.000224 0.000080 + 0.233333 + 0.921249 0.016122 0.009529 0.388522 + -0.104854 -0.000224 0.000080 + 0.266667 + 0.929610 0.037617 0.007459 0.366544 + -0.104854 -0.000224 0.000080 + 0.300000 + 0.939543 0.057646 0.006364 0.337484 + -0.104854 -0.000224 0.000080 + 0.333333 + 0.949678 0.078163 0.012717 0.303052 + -0.104854 -0.000224 0.000080 + 0.366667 + 0.959563 0.088909 0.014916 0.266666 + -0.104854 -0.000224 0.000080 + 0.400000 + 0.969875 0.085002 0.009788 0.228082 + -0.104854 -0.000224 0.000080 + 0.433333 + 0.978994 0.075233 0.001058 0.189499 + -0.104854 -0.000224 0.000080 + 0.466667 + 0.985686 0.067419 -0.007671 0.154334 + -0.104854 -0.000224 0.000080 + 0.500000 + 0.990064 0.067908 -0.013897 0.122344 + -0.104854 -0.000224 0.000080 + 0.533333 + 0.993202 0.070351 -0.016093 0.091330 + -0.104854 -0.000224 0.000080 + 0.566667 + 0.995342 0.067908 -0.014385 0.066910 + -0.104854 -0.000224 0.000080 + 0.600000 + -0.997308 -0.059603 0.012678 -0.040781 + -0.104854 -0.000224 0.000080 + 0.633333 + -0.998889 -0.044459 0.012925 -0.008791 + -0.104854 -0.000224 0.000080 + 0.666667 + -0.999476 -0.021009 0.012442 0.021246 + -0.104854 -0.000224 0.000080 + 0.700000 + -0.999324 0.008790 0.012448 0.033455 + -0.104854 -0.000224 0.000080 + 0.733334 + -0.999348 0.033217 0.009768 0.010256 + -0.104854 -0.000224 0.000080 + 0.766667 + 0.998053 -0.049827 -0.005499 0.037119 + -0.104854 -0.000224 0.000080 + 0.800000 + 0.994096 -0.060574 -0.005257 0.089866 + -0.104854 -0.000224 0.000080 + 0.833334 + 0.987318 -0.059597 -0.006355 0.147009 + -0.104854 -0.000224 0.000080 + 0.866667 + 0.978664 -0.044942 -0.001531 0.200489 + -0.104854 -0.000224 0.000080 + 0.900000 + 0.967485 -0.025403 0.007812 0.251527 + -0.104854 -0.000224 0.000080 + 0.933334 + 0.955389 -0.009772 0.016116 0.294750 + -0.104854 -0.000224 0.000080 + 0.966667 + 0.945612 -0.006352 0.017093 0.324786 + -0.104854 -0.000224 0.000080 + 1.000000 + 0.940265 -0.011724 0.006960 0.340171 + -0.104854 -0.000224 0.000080 + 1.033334 + 0.935782 -0.024422 -0.007691 0.351648 + -0.104854 -0.000224 0.000080 + 1.066667 + 0.926527 -0.036633 -0.015628 0.374115 + -0.104854 -0.000224 0.000080 + 1.100000 + 0.918519 -0.035657 -0.009525 0.393651 + -0.104854 -0.000224 0.000080 + 1.133334 + 0.915591 -0.010745 0.003298 0.401953 + -0.104854 -0.000224 0.000080 + 1.166667 + 0.921249 0.016122 0.009529 0.388522 + -0.104854 -0.000224 0.000080 + 1.200000 + 0.929610 0.037617 0.007459 0.366544 + -0.104854 -0.000224 0.000080 + 1.233333 + 0.939543 0.057646 0.006364 0.337484 + -0.104854 -0.000224 0.000080 + 1.266667 + 0.949678 0.078163 0.012717 0.303052 + -0.104854 -0.000224 0.000080 + 1.300000 + 0.959563 0.088909 0.014916 0.266666 + -0.104854 -0.000224 0.000080 + 1.333333 + 0.969875 0.085002 0.009789 0.228083 + -0.104854 -0.000224 0.000080 + 1.366667 + 0.978994 0.075233 0.001058 0.189499 + -0.104854 -0.000224 0.000080 + 1.400000 + 0.985686 0.067419 -0.007671 0.154334 + -0.104854 -0.000224 0.000080 + 1.433333 + 0.990064 0.067908 -0.013897 0.122344 + -0.104854 -0.000224 0.000080 + 1.466667 + 0.993202 0.070351 -0.016093 0.091330 + -0.104854 -0.000224 0.000080 + 1.500000 + 0.995342 0.067908 -0.014385 0.066910 + -0.104854 -0.000224 0.000080 + 1.533333 + -0.997308 -0.059603 0.012678 -0.040781 + -0.104854 -0.000224 0.000080 + 1.566666 + -0.998889 -0.044459 0.012925 -0.008791 + -0.104854 -0.000224 0.000080 + 1.600000 + -0.999476 -0.021010 0.012442 0.021245 + -0.104854 -0.000224 0.000080 + 1.633333 + -0.999324 0.008790 0.012448 0.033455 + -0.104854 -0.000224 0.000080 + 1.666666 + -0.999348 0.033216 0.009768 0.010257 + -0.104854 -0.000224 0.000080 + 1.700000 + 0.998053 -0.049827 -0.005499 0.037118 + -0.104854 -0.000224 0.000080 + 1.733333 + 0.994096 -0.060574 -0.005257 0.089865 + -0.104854 -0.000224 0.000080 + 1.766666 + 0.987318 -0.059597 -0.006355 0.147008 + -0.104854 -0.000224 0.000080 + 1.800000 + 0.978664 -0.044942 -0.001531 0.200488 + -0.104854 -0.000224 0.000080 + 1.833333 + 0.967486 -0.025403 0.007812 0.251525 + -0.104854 -0.000224 0.000080 + 1.866666 + 0.955389 -0.009772 0.016116 0.294749 + -0.104854 -0.000223 0.000079 + 1.899999 + 0.945612 -0.006352 0.017093 0.324786 + -0.104854 -0.000224 0.000080 + 1.933333 + 0.940265 -0.011724 0.006960 0.340171 + -0.104854 -0.000225 0.000081 + 1.966666 + 0.935782 -0.024422 -0.007691 0.351648 + -0.104854 -0.000224 0.000080 + 1.999999 + 0.926527 -0.036633 -0.015628 0.374114 + -0.104854 -0.000224 0.000080 + 2.033333 + 0.918519 -0.035657 -0.009525 0.393650 + -0.104854 -0.000224 0.000079 + 2.066666 + 0.915591 -0.010746 0.003298 0.401953 + -0.104854 -0.000224 0.000080 + 2.099999 + 0.921249 0.016121 0.009529 0.388523 + -0.104854 -0.000224 0.000080 + 2.133333 + 0.929610 0.037616 0.007459 0.366545 + -0.104854 -0.000224 0.000080 + 2.166666 + 0.939543 0.057646 0.006365 0.337485 + -0.104854 -0.000224 0.000080 + 2.199999 + 0.949678 0.078162 0.012716 0.303053 + -0.104854 -0.000224 0.000080 + 2.233333 + 0.959563 0.088909 0.014916 0.266667 + -0.104854 -0.000224 0.000080 + 2.266666 + 0.969875 0.085002 0.009789 0.228084 + -0.104854 -0.000224 0.000081 + 2.299999 + 0.978994 0.075234 0.001059 0.189500 + -0.104854 -0.000224 0.000080 + 2.333333 + 0.985686 0.067419 -0.007671 0.154335 + -0.104854 -0.000224 0.000080 + 2.366666 + 0.990064 0.067908 -0.013896 0.122345 + -0.104854 -0.000224 0.000080 + 2.399999 + 0.993202 0.070351 -0.016093 0.091331 + -0.104854 -0.000224 0.000080 + 2.433332 + 0.995341 0.067908 -0.014385 0.066911 + -0.104854 -0.000224 0.000080 + 2.466666 + -0.997308 -0.059603 0.012678 -0.040782 + -0.104854 -0.000224 0.000080 + 2.499999 + -0.998889 -0.044459 0.012925 -0.008792 + -0.104854 -0.000224 0.000080 + 2.533332 + -0.999476 -0.021010 0.012442 0.021245 + -0.104854 -0.000224 0.000080 + 2.566666 + -0.999324 0.008789 0.012448 0.033455 + -0.104854 -0.000224 0.000080 + 2.599999 + -0.999348 0.033216 0.009768 0.010257 + -0.104854 -0.000223 0.000081 + 2.633332 + 0.998053 -0.049826 -0.005499 0.037117 + -0.104854 -0.000224 0.000081 + 2.666666 + 0.994096 -0.060574 -0.005257 0.089864 + -0.104854 -0.000224 0.000080 + 2.699999 + 0.987319 -0.059597 -0.006233 0.147007 + -0.104854 -0.000224 0.000080 + 2.733332 + 0.978664 -0.044942 -0.001561 0.200486 + -0.104854 -0.000224 0.000080 + 2.766665 + 0.967486 -0.025404 0.007811 0.251524 + -0.104854 -0.000224 0.000081 + 2.799999 + "R_Leg_sjnt_1" + 85 + -0.616024 0.002423 0.001241 -0.787723 + -0.000000 0.461809 -0.000000 + 0.000000 + -0.558867 0.002425 0.000876 -0.829253 + -0.000000 0.461809 -0.000000 + 0.033333 + -0.479727 0.000475 -0.000648 -0.877417 + -0.000000 0.461809 -0.000000 + 0.066667 + -0.377626 0.000188 -0.001073 -0.925958 + -0.000000 0.461809 -0.000000 + 0.100000 + 0.277968 -0.001824 0.000704 0.960588 + -0.000000 0.461809 -0.000000 + 0.133333 + 0.231070 0.000860 0.001193 0.972936 + -0.000000 0.461808 -0.000000 + 0.166667 + 0.251100 0.000922 0.000705 0.967960 + -0.000000 0.461809 -0.000000 + 0.200000 + 0.300440 0.004890 0.001317 0.953787 + -0.000000 0.461809 -0.000000 + 0.233333 + 0.334148 0.003915 0.000646 0.942512 + -0.000000 0.461809 -0.000000 + 0.266667 + -0.371275 -0.003672 -0.000402 -0.928515 + -0.000000 0.461809 0.000000 + 0.300000 + -0.399609 -0.005870 -0.001441 -0.916666 + -0.000000 0.461809 -0.000000 + 0.333333 + -0.404006 -0.006847 -0.001929 -0.914729 + -0.000000 0.461809 -0.000000 + 0.366667 + -0.396678 -0.005870 -0.001929 -0.917937 + -0.000000 0.461809 -0.000000 + 0.400000 + -0.382511 -0.004893 -0.001807 -0.923936 + -0.000000 0.461809 -0.000000 + 0.433333 + -0.361505 -0.004892 -0.001684 -0.932356 + -0.000000 0.461809 0.000000 + 0.466667 + -0.338056 -0.004892 -0.001561 -0.941112 + -0.000000 0.461809 -0.000000 + 0.500000 + -0.317050 -0.004403 -0.001439 -0.948397 + -0.000000 0.461809 -0.000000 + 0.533333 + -0.300928 -0.003914 -0.001438 -0.953638 + -0.000000 0.461809 -0.000000 + 0.566667 + -0.298486 -0.002693 -0.001194 -0.954409 + -0.000000 0.461809 -0.000000 + 0.600000 + 0.300928 0.002937 0.001316 0.953641 + -0.000000 0.461809 0.000000 + 0.633333 + 0.306791 0.003182 0.001194 0.951771 + -0.000000 0.461808 -0.000000 + 0.666667 + 0.330240 0.001962 0.000645 0.943895 + -0.000000 0.461808 -0.000000 + 0.700000 + 0.381046 -0.001454 -0.000941 0.924554 + -0.000000 0.461809 -0.000000 + 0.733334 + 0.465560 -0.002672 -0.001977 0.885010 + -0.000000 0.461808 0.000000 + 0.766667 + -0.550563 0.001082 0.001609 -0.834792 + -0.000000 0.461808 0.000000 + 0.800000 + -0.614558 -0.000751 0.000218 -0.788871 + -0.000000 0.461809 -0.000000 + 0.833334 + -0.648266 0.004862 0.004414 -0.761385 + -0.000000 0.461809 0.000000 + 0.866667 + -0.646800 0.004374 0.003681 -0.762638 + -0.000000 0.461809 -0.000000 + 0.900000 + -0.616023 0.000653 -0.000011 -0.787728 + -0.000000 0.461809 -0.000000 + 0.933334 + -0.558866 0.001570 0.000296 -0.829256 + -0.000000 0.461809 -0.000000 + 0.966667 + -0.479726 0.001817 -0.000007 -0.877416 + -0.000000 0.461808 0.000000 + 1.000000 + -0.377625 0.000600 -0.000890 -0.925958 + -0.000000 0.461809 -0.000000 + 1.033334 + 0.277968 -0.001458 0.000827 0.960589 + -0.000000 0.461808 -0.000000 + 1.066667 + 0.231070 0.001104 0.001193 0.972936 + -0.000000 0.461809 -0.000000 + 1.100000 + 0.251100 0.000800 0.000644 0.967961 + 0.000000 0.461808 -0.000000 + 1.133334 + 0.300440 0.004890 0.001317 0.953787 + -0.000000 0.461809 -0.000000 + 1.166667 + 0.334148 0.003915 0.000646 0.942512 + -0.000000 0.461809 0.000000 + 1.200000 + -0.371275 -0.003672 -0.000433 -0.928515 + -0.000000 0.461809 0.000000 + 1.233333 + -0.399609 -0.005870 -0.001441 -0.916666 + -0.000000 0.461809 0.000000 + 1.266667 + -0.404006 -0.006847 -0.001929 -0.914729 + -0.000000 0.461809 0.000000 + 1.300000 + -0.396678 -0.005870 -0.001929 -0.917937 + -0.000000 0.461809 -0.000000 + 1.333333 + -0.382511 -0.004893 -0.001807 -0.923936 + -0.000000 0.461809 -0.000000 + 1.366667 + -0.361505 -0.004892 -0.001684 -0.932356 + -0.000000 0.461809 -0.000000 + 1.400000 + -0.338056 -0.004892 -0.001561 -0.941112 + -0.000000 0.461808 -0.000000 + 1.433333 + -0.317050 -0.004403 -0.001439 -0.948397 + -0.000000 0.461809 0.000000 + 1.466667 + -0.300928 -0.003914 -0.001438 -0.953638 + -0.000000 0.461808 0.000000 + 1.500000 + -0.298486 -0.002693 -0.001194 -0.954409 + -0.000000 0.461809 0.000000 + 1.533333 + 0.300928 0.002937 0.001316 0.953641 + -0.000000 0.461808 -0.000000 + 1.566666 + 0.306791 0.003182 0.001194 0.951771 + -0.000000 0.461809 -0.000000 + 1.600000 + 0.330239 0.001962 0.000645 0.943895 + -0.000000 0.461809 0.000000 + 1.633333 + 0.381045 -0.001454 -0.000941 0.924555 + -0.000000 0.461808 -0.000000 + 1.666666 + 0.465559 -0.002672 -0.001977 0.885011 + -0.000000 0.461809 0.000000 + 1.700000 + -0.550561 0.001082 0.001609 -0.834792 + -0.000000 0.461808 0.000000 + 1.733333 + -0.614557 -0.000751 0.000218 -0.788872 + -0.000000 0.461809 0.000000 + 1.766666 + -0.648266 0.004862 0.004414 -0.761386 + -0.000000 0.461808 0.000000 + 1.800000 + -0.646801 0.004374 0.003681 -0.762637 + -0.000000 0.461808 -0.000000 + 1.833333 + -0.616024 0.000653 -0.000011 -0.787727 + -0.000000 0.461808 0.000000 + 1.866666 + -0.558868 0.001570 0.000296 -0.829255 + -0.000000 0.461809 0.000000 + 1.899999 + -0.479728 0.001817 -0.000007 -0.877415 + -0.000000 0.461809 0.000000 + 1.933333 + -0.377628 0.000600 -0.000890 -0.925957 + -0.000000 0.461808 -0.000000 + 1.966666 + 0.277971 -0.001458 0.000827 0.960588 + -0.000000 0.461808 -0.000000 + 1.999999 + 0.231071 0.001104 0.001193 0.972935 + -0.000000 0.461808 0.000000 + 2.033333 + 0.251099 0.000800 0.000644 0.967961 + -0.000000 0.461809 -0.000000 + 2.066666 + 0.300439 0.004890 0.001317 0.953788 + -0.000000 0.461808 -0.000000 + 2.099999 + 0.334147 0.003915 0.000646 0.942513 + -0.000000 0.461808 -0.000000 + 2.133333 + -0.371275 -0.003672 -0.000433 -0.928516 + 0.000000 0.461809 -0.000000 + 2.166666 + -0.399609 -0.005870 -0.001441 -0.916666 + 0.000000 0.461808 0.000000 + 2.199999 + -0.404006 -0.006847 -0.001929 -0.914729 + 0.000000 0.461808 0.000001 + 2.233333 + -0.396678 -0.005870 -0.001929 -0.917937 + -0.000000 0.461808 -0.000001 + 2.266666 + -0.382512 -0.004893 -0.001807 -0.923936 + -0.000000 0.461808 0.000000 + 2.299999 + -0.361506 -0.004892 -0.001684 -0.932355 + -0.000000 0.461809 0.000000 + 2.333333 + -0.338057 -0.004892 -0.001561 -0.941112 + -0.000000 0.461808 0.000000 + 2.366666 + -0.317050 -0.004403 -0.001439 -0.948397 + -0.000000 0.461808 -0.000001 + 2.399999 + -0.300929 -0.003914 -0.001439 -0.953637 + -0.000000 0.461809 -0.000000 + 2.433332 + -0.298486 -0.002693 -0.001194 -0.954409 + -0.000000 0.461808 0.000000 + 2.466666 + 0.300928 0.002937 0.001316 0.953641 + -0.000000 0.461808 -0.000000 + 2.499999 + 0.306790 0.003182 0.001194 0.951771 + -0.000000 0.461809 0.000000 + 2.533332 + 0.330239 0.001962 0.000645 0.943895 + -0.000000 0.461808 -0.000000 + 2.566666 + 0.381044 -0.001454 -0.001002 0.924555 + -0.000000 0.461808 0.000000 + 2.599999 + 0.465557 -0.002428 -0.001977 0.885012 + -0.000000 0.461808 0.000000 + 2.633332 + -0.550559 0.000960 0.001487 -0.834794 + -0.000000 0.461809 0.000000 + 2.666666 + -0.614556 -0.000324 0.000508 -0.788873 + -0.000000 0.461808 -0.000001 + 2.699999 + -0.648265 0.005350 0.004902 -0.761380 + -0.000000 0.461809 0.000000 + 2.733332 + -0.646801 0.002910 0.002461 -0.762650 + -0.000000 0.461809 0.000000 + 2.766665 + -0.616025 0.002423 0.001241 -0.787722 + -0.000000 0.461809 -0.000001 + 2.799999 + "R_Foot_sjnt_0" + 85 + 0.548533 -0.005112 -0.045408 -0.834879 + 0.000000 0.388174 0.000000 + 0.000000 + 0.557744 -0.040998 -0.056646 -0.827062 + 0.000000 0.388174 0.000000 + 0.033333 + 0.558660 -0.060040 -0.059091 -0.825107 + 0.000000 0.388174 0.000000 + 0.066667 + 0.557357 -0.061505 -0.056162 -0.826085 + 0.000000 0.388174 0.000000 + 0.100000 + -0.565417 0.059067 0.040536 0.821688 + 0.000000 0.388174 0.000000 + 0.133333 + -0.598318 0.046367 0.051763 0.798239 + 0.000000 0.388174 0.000001 + 0.166667 + -0.629789 0.047831 0.047855 0.773814 + 0.000000 0.388174 0.000000 + 0.200000 + -0.585815 0.054669 0.050300 0.807033 + 0.000000 0.388174 0.000000 + 0.233333 + -0.526802 0.057114 0.049815 0.846603 + 0.000000 0.388174 0.000000 + 0.266667 + 0.540073 -0.055648 -0.049814 -0.838298 + 0.000000 0.388174 0.000000 + 0.300000 + 0.584968 -0.055157 -0.051765 -0.807521 + 0.000000 0.388174 0.000000 + 0.333333 + 0.616498 -0.054666 -0.054205 -0.783584 + 0.000000 0.388174 0.000000 + 0.366667 + 0.641176 -0.052711 -0.055668 -0.763554 + 0.000000 0.388174 0.000000 + 0.400000 + 0.660793 -0.048804 -0.055178 -0.746945 + 0.000000 0.388174 0.000000 + 0.433333 + 0.675540 -0.042456 -0.052247 -0.734244 + 0.000000 0.388174 0.000000 + 0.466667 + 0.686791 -0.034155 -0.047850 -0.724473 + 0.000000 0.388174 0.000000 + 0.500000 + 0.695647 -0.025122 -0.042965 -0.716657 + 0.000000 0.388174 0.000000 + 0.533333 + 0.706760 -0.013648 -0.036126 -0.706399 + 0.000000 0.388174 0.000000 + 0.566667 + 0.721688 0.000238 -0.025624 -0.691744 + 0.000000 0.388174 0.000000 + 0.600000 + 0.734780 0.013936 -0.011460 -0.678066 + 0.000000 0.388174 0.000000 + 0.633333 + 0.740406 0.021989 0.010636 -0.671716 + 0.000000 0.388174 0.000000 + 0.666667 + 0.722551 0.027844 0.025651 -0.690280 + 0.000000 0.388174 0.000000 + 0.700000 + 0.672949 0.029793 0.025649 -0.738643 + 0.000000 0.388174 0.000000 + 0.733334 + 0.580328 0.018802 0.021737 -0.813875 + 0.000000 0.388173 0.000000 + 0.766667 + -0.475004 -0.016358 -0.003513 0.879825 + 0.000000 0.388174 0.000000 + 0.800000 + -0.453288 -0.022950 0.003841 0.891060 + 0.000000 0.388174 0.000000 + 0.833334 + -0.502686 -0.036136 0.004081 0.863704 + 0.000000 0.388173 0.000000 + 0.866667 + 0.531706 0.035655 -0.030508 -0.845628 + 0.000000 0.388173 0.000000 + 0.900000 + 0.548666 -0.003312 -0.043943 -0.834880 + 0.000000 0.388174 0.000000 + 0.933334 + 0.557829 -0.040509 -0.056158 -0.827062 + 0.000000 0.388174 0.000000 + 0.966667 + 0.558503 -0.060528 -0.060068 -0.825107 + 0.000000 0.388173 0.000000 + 1.000000 + 0.557254 -0.061994 -0.056650 -0.826084 + 0.000000 0.388174 0.000000 + 1.033334 + -0.565468 0.058578 0.040536 0.821688 + 0.000000 0.388174 -0.000000 + 1.066667 + -0.598398 0.045879 0.051274 0.798239 + 0.000000 0.388174 0.000000 + 1.100000 + -0.629789 0.047831 0.047855 0.773814 + 0.000000 0.388174 0.000000 + 1.133334 + -0.585815 0.054669 0.050300 0.807033 + 0.000000 0.388174 0.000001 + 1.166667 + -0.526802 0.057114 0.049815 0.846602 + 0.000000 0.388174 0.000000 + 1.200000 + 0.540073 -0.055648 -0.049814 -0.838298 + 0.000000 0.388174 0.000000 + 1.233333 + 0.584968 -0.055157 -0.051765 -0.807521 + 0.000000 0.388174 0.000000 + 1.266667 + 0.616498 -0.054666 -0.054205 -0.783584 + 0.000000 0.388174 0.000000 + 1.300000 + 0.641176 -0.052711 -0.055668 -0.763554 + 0.000000 0.388174 0.000000 + 1.333333 + 0.660793 -0.048804 -0.055178 -0.746945 + 0.000000 0.388174 0.000000 + 1.366667 + 0.675540 -0.042456 -0.052247 -0.734244 + 0.000000 0.388174 0.000000 + 1.400000 + 0.686791 -0.034155 -0.047850 -0.724473 + 0.000000 0.388173 0.000000 + 1.433333 + 0.695647 -0.025122 -0.042965 -0.716657 + 0.000000 0.388174 0.000000 + 1.466667 + 0.706760 -0.013648 -0.036126 -0.706399 + 0.000000 0.388174 0.000000 + 1.500000 + 0.721688 0.000238 -0.025624 -0.691744 + 0.000000 0.388174 0.000000 + 1.533333 + 0.734779 0.013936 -0.011461 -0.678066 + 0.000000 0.388174 0.000000 + 1.566666 + 0.740406 0.021989 0.010636 -0.671715 + 0.000000 0.388174 0.000000 + 1.600000 + 0.722552 0.027844 0.025651 -0.690279 + 0.000000 0.388173 0.000000 + 1.633333 + 0.672950 0.029793 0.025649 -0.738643 + 0.000000 0.388174 0.000000 + 1.666666 + 0.580330 0.018802 0.021737 -0.813874 + 0.000000 0.388174 0.000000 + 1.700000 + -0.475006 -0.016358 -0.003513 0.879824 + 0.000000 0.388174 0.000000 + 1.733333 + -0.453288 -0.022950 0.003841 0.891060 + 0.000000 0.388174 0.000000 + 1.766666 + -0.502685 -0.036136 0.004081 0.863704 + 0.000000 0.388174 0.000000 + 1.800000 + 0.531705 0.035655 -0.030507 -0.845629 + 0.000000 0.388174 0.000000 + 1.833333 + 0.548665 -0.003311 -0.043943 -0.834880 + 0.000000 0.388174 0.000000 + 1.866666 + 0.557829 -0.040509 -0.056157 -0.827062 + 0.000000 0.388173 0.000000 + 1.899999 + 0.558503 -0.060528 -0.060068 -0.825108 + 0.000000 0.388173 0.000000 + 1.933333 + 0.557254 -0.061994 -0.056650 -0.826085 + 0.000000 0.388175 0.000000 + 1.966666 + -0.565468 0.058579 0.040536 0.821688 + 0.000000 0.388174 0.000001 + 1.999999 + -0.598397 0.045879 0.051274 0.798240 + 0.000000 0.388174 0.000000 + 2.033333 + -0.629789 0.047831 0.047855 0.773814 + 0.000000 0.388174 0.000001 + 2.066666 + -0.585816 0.054669 0.050300 0.807032 + 0.000000 0.388173 0.000000 + 2.099999 + -0.526803 0.057114 0.049815 0.846602 + 0.000000 0.388174 0.000001 + 2.133333 + 0.540072 -0.055649 -0.049814 -0.838298 + 0.000000 0.388174 0.000000 + 2.166666 + 0.584967 -0.055157 -0.051765 -0.807522 + 0.000000 0.388174 0.000000 + 2.199999 + 0.616497 -0.054666 -0.054205 -0.783584 + 0.000000 0.388174 -0.000000 + 2.233333 + 0.641176 -0.052711 -0.055668 -0.763555 + 0.000000 0.388174 0.000000 + 2.266666 + 0.660792 -0.048804 -0.055178 -0.746945 + 0.000000 0.388174 0.000000 + 2.299999 + 0.675540 -0.042456 -0.052247 -0.734244 + 0.000000 0.388174 0.000000 + 2.333333 + 0.686791 -0.034155 -0.047850 -0.724474 + 0.000000 0.388174 0.000000 + 2.366666 + 0.695647 -0.025122 -0.042965 -0.716658 + 0.000000 0.388174 0.000000 + 2.399999 + 0.706759 -0.013649 -0.036126 -0.706399 + 0.000000 0.388174 0.000000 + 2.433332 + 0.721688 0.000243 -0.025624 -0.691744 + 0.000000 0.388174 0.000000 + 2.466666 + 0.734779 0.013936 -0.011461 -0.678066 + 0.000000 0.388174 0.000000 + 2.499999 + 0.740406 0.021989 0.010635 -0.671716 + 0.000000 0.388174 0.000000 + 2.533332 + 0.722552 0.027844 0.025651 -0.690279 + 0.000000 0.388174 0.000001 + 2.566666 + 0.672951 0.029793 0.025649 -0.738641 + 0.000000 0.388174 0.000001 + 2.599999 + 0.580323 0.018802 0.021981 -0.813872 + 0.000000 0.388174 0.000000 + 2.633332 + -0.474999 -0.016602 -0.003605 0.879822 + 0.000000 0.388174 0.000000 + 2.666666 + -0.453311 -0.022461 0.004085 0.891060 + 0.000000 0.388174 0.000000 + 2.699999 + -0.502715 -0.035648 0.004508 0.863705 + 0.000000 0.388175 0.000000 + 2.733332 + 0.531659 0.037120 -0.029530 -0.845629 + 0.000000 0.388175 0.000000 + 2.766665 + 0.548532 -0.005110 -0.045408 -0.834880 + 0.000000 0.388174 0.000000 + 2.799999 + "L_Leg_sjnt_0" + 85 + -0.172471 0.007179 -0.059550 0.983187 + 0.104854 -0.000225 0.000080 + 0.000000 + -0.139739 -0.000819 -0.055653 0.988623 + 0.104854 -0.000225 0.000080 + 0.033333 + -0.109452 -0.009425 -0.059572 0.992161 + 0.104854 -0.000225 0.000080 + 0.066667 + -0.079165 -0.015406 -0.064467 0.994656 + 0.104854 -0.000225 0.000080 + 0.100000 + -0.053274 -0.020533 -0.066430 0.996156 + 0.104854 -0.000225 0.000080 + 0.133333 + -0.024939 -0.025174 -0.060576 0.997534 + 0.104854 -0.000225 0.000080 + 0.166667 + 0.012195 -0.028108 -0.040070 0.998727 + 0.104854 -0.000225 0.000080 + 0.200000 + 0.038586 -0.023478 -0.001972 0.998977 + 0.104854 -0.000225 0.000080 + 0.233333 + 0.034687 -0.019579 0.031738 0.998702 + 0.104854 -0.000225 0.000080 + 0.266667 + 0.006847 -0.024954 0.052263 0.998298 + 0.104854 -0.000225 0.000080 + 0.300000 + -0.036139 -0.035455 0.064974 0.996602 + 0.104854 -0.000225 0.000080 + 0.333333 + -0.095246 -0.049128 0.077201 0.991239 + 0.104854 -0.000225 0.000080 + 0.366667 + -0.156799 -0.054009 0.077217 0.983125 + 0.104854 -0.000225 0.000080 + 0.400000 + -0.215427 -0.047166 0.060137 0.973525 + 0.104854 -0.000225 0.000080 + 0.433333 + -0.267704 -0.033975 0.040126 0.962066 + 0.104854 -0.000225 0.000080 + 0.466667 + -0.312651 -0.022006 0.027928 0.949202 + 0.104854 -0.000225 0.000080 + 0.500000 + -0.345381 -0.017364 0.029893 0.937826 + 0.104854 -0.000225 0.000080 + 0.533333 + -0.365408 -0.021026 0.038691 0.929805 + 0.104854 -0.000225 0.000080 + 0.566667 + -0.382991 -0.027130 0.051885 0.921895 + 0.104854 -0.000225 0.000080 + 0.600000 + -0.399110 -0.025909 0.058729 0.914653 + 0.104854 -0.000225 0.000080 + 0.633333 + -0.406928 -0.015653 0.053848 0.911737 + 0.104854 -0.000225 0.000080 + 0.666667 + -0.408887 -0.005579 0.036264 0.911847 + 0.104854 -0.000225 0.000080 + 0.700000 + -0.390330 -0.002525 0.013788 0.920568 + 0.104854 -0.000225 0.000080 + 0.733334 + -0.364933 -0.008199 -0.009670 0.930947 + 0.104854 -0.000225 0.000080 + 0.766667 + -0.334163 -0.012835 -0.033128 0.941845 + 0.104854 -0.000225 0.000080 + 0.800000 + -0.296064 -0.007707 -0.053656 0.953629 + 0.104854 -0.000225 0.000080 + 0.833334 + -0.255520 0.001020 -0.063436 0.964720 + 0.104854 -0.000225 0.000080 + 0.866667 + -0.212042 0.006999 -0.063936 0.975142 + 0.104854 -0.000225 0.000080 + 0.900000 + -0.172471 0.006019 -0.059550 0.983194 + 0.104854 -0.000225 0.000080 + 0.933334 + -0.139739 -0.000390 -0.055653 0.988623 + 0.104854 -0.000225 0.000080 + 0.966667 + -0.109452 -0.009181 -0.059572 0.992163 + 0.104854 -0.000225 0.000080 + 1.000000 + -0.079165 -0.015528 -0.064467 0.994654 + 0.104854 -0.000225 0.000080 + 1.033334 + -0.053274 -0.020777 -0.066430 0.996151 + 0.104854 -0.000225 0.000080 + 1.066667 + -0.024938 -0.025174 -0.060576 0.997534 + 0.104854 -0.000225 0.000080 + 1.100000 + 0.012195 -0.028108 -0.040070 0.998727 + 0.104854 -0.000225 0.000080 + 1.133334 + 0.038586 -0.023478 -0.001972 0.998977 + 0.104854 -0.000225 0.000080 + 1.166667 + 0.034687 -0.019579 0.031738 0.998702 + 0.104854 -0.000225 0.000080 + 1.200000 + 0.006847 -0.024954 0.052263 0.998298 + 0.104854 -0.000225 0.000080 + 1.233333 + -0.036139 -0.035455 0.064974 0.996602 + 0.104854 -0.000225 0.000080 + 1.266667 + -0.095246 -0.049128 0.077201 0.991239 + 0.104854 -0.000225 0.000080 + 1.300000 + -0.156800 -0.054009 0.077217 0.983125 + 0.104854 -0.000225 0.000080 + 1.333333 + -0.215426 -0.047166 0.060138 0.973525 + 0.104854 -0.000225 0.000080 + 1.366667 + -0.267704 -0.033975 0.040126 0.962066 + 0.104854 -0.000225 0.000080 + 1.400000 + -0.312651 -0.022006 0.027929 0.949202 + 0.104854 -0.000225 0.000080 + 1.433333 + -0.345381 -0.017364 0.029893 0.937826 + 0.104854 -0.000225 0.000080 + 1.466667 + -0.365408 -0.021026 0.038691 0.929805 + 0.104854 -0.000225 0.000080 + 1.500000 + -0.382991 -0.027130 0.051885 0.921895 + 0.104854 -0.000225 0.000080 + 1.533333 + -0.399110 -0.025909 0.058729 0.914653 + 0.104854 -0.000225 0.000080 + 1.566666 + -0.406928 -0.015653 0.053848 0.911737 + 0.104854 -0.000225 0.000080 + 1.600000 + -0.408887 -0.005579 0.036265 0.911847 + 0.104854 -0.000225 0.000080 + 1.633333 + -0.390330 -0.002525 0.013788 0.920568 + 0.104854 -0.000225 0.000080 + 1.666666 + -0.364934 -0.008198 -0.009669 0.930947 + 0.104854 -0.000225 0.000080 + 1.700000 + -0.334164 -0.012835 -0.033128 0.941845 + 0.104854 -0.000225 0.000080 + 1.733333 + -0.296065 -0.007707 -0.053656 0.953628 + 0.104854 -0.000225 0.000080 + 1.766666 + -0.255521 0.001020 -0.063436 0.964720 + 0.104854 -0.000225 0.000080 + 1.800000 + -0.212043 0.006999 -0.063936 0.975142 + 0.104854 -0.000225 0.000080 + 1.833333 + -0.172472 0.006019 -0.059550 0.983194 + 0.104854 -0.000225 0.000080 + 1.866666 + -0.139740 -0.000390 -0.055653 0.988623 + 0.104854 -0.000224 0.000080 + 1.899999 + -0.109453 -0.009181 -0.059572 0.992163 + 0.104854 -0.000225 0.000081 + 1.933333 + -0.079166 -0.015528 -0.064467 0.994654 + 0.104854 -0.000226 0.000081 + 1.966666 + -0.053275 -0.020777 -0.066430 0.996151 + 0.104854 -0.000225 0.000080 + 1.999999 + -0.024939 -0.025173 -0.060577 0.997534 + 0.104854 -0.000225 0.000080 + 2.033333 + 0.012194 -0.028108 -0.040070 0.998727 + 0.104854 -0.000225 0.000080 + 2.066666 + 0.038585 -0.023478 -0.001973 0.998978 + 0.104854 -0.000225 0.000080 + 2.099999 + 0.034687 -0.019579 0.031737 0.998702 + 0.104854 -0.000225 0.000080 + 2.133333 + 0.006848 -0.024954 0.052262 0.998298 + 0.104854 -0.000225 0.000080 + 2.166666 + -0.036138 -0.035455 0.064974 0.996602 + 0.104854 -0.000225 0.000080 + 2.199999 + -0.095245 -0.049128 0.077201 0.991239 + 0.104854 -0.000225 0.000080 + 2.233333 + -0.156798 -0.054009 0.077217 0.983125 + 0.104854 -0.000225 0.000080 + 2.266666 + -0.215425 -0.047166 0.060138 0.973525 + 0.104854 -0.000225 0.000080 + 2.299999 + -0.267702 -0.033975 0.040127 0.962066 + 0.104854 -0.000225 0.000080 + 2.333333 + -0.312650 -0.022006 0.027929 0.949203 + 0.104854 -0.000226 0.000080 + 2.366666 + -0.345380 -0.017365 0.029893 0.937826 + 0.104854 -0.000225 0.000080 + 2.399999 + -0.365408 -0.021026 0.038691 0.929805 + 0.104854 -0.000225 0.000080 + 2.433332 + -0.382990 -0.027130 0.051885 0.921895 + 0.104854 -0.000226 0.000080 + 2.466666 + -0.399110 -0.025909 0.058729 0.914653 + 0.104854 -0.000225 0.000079 + 2.499999 + -0.406927 -0.015532 0.053849 0.911740 + 0.104854 -0.000225 0.000080 + 2.533332 + -0.408887 -0.005640 0.036265 0.911847 + 0.104854 -0.000225 0.000080 + 2.566666 + -0.390330 -0.002555 0.013789 0.920568 + 0.104854 -0.000225 0.000080 + 2.599999 + -0.364934 -0.008198 -0.009669 0.930947 + 0.104854 -0.000225 0.000080 + 2.633332 + -0.334165 -0.012591 -0.033127 0.941848 + 0.104854 -0.000225 0.000081 + 2.666666 + -0.296066 -0.007585 -0.053655 0.953629 + 0.104854 -0.000225 0.000080 + 2.699999 + -0.255522 0.000677 -0.063436 0.964720 + 0.104854 -0.000225 0.000080 + 2.733332 + -0.212044 0.006388 -0.064424 0.975113 + 0.104854 -0.000225 0.000081 + 2.766665 + -0.172473 0.007179 -0.059550 0.983186 + 0.104854 -0.000225 0.000081 + 2.799999 + "L_Leg_sjnt_1" + 85 + 0.335620 0.033689 0.011539 0.941324 + 0.000000 -0.461807 0.000000 + 0.000000 + 0.314125 0.034177 0.011063 0.948702 + 0.000000 -0.461808 0.000000 + 0.033333 + 0.295561 0.034665 0.010585 0.954636 + 0.000000 -0.461808 0.000000 + 0.066667 + 0.284325 0.035154 0.010592 0.958025 + 0.000000 -0.461808 0.000000 + 0.100000 + 0.283837 0.036619 0.010592 0.958115 + 0.000000 -0.461808 0.000000 + 0.133333 + 0.292630 0.036618 0.011075 0.955460 + 0.000000 -0.461808 0.000000 + 0.166667 + 0.301423 0.035154 0.010582 0.952784 + 0.000000 -0.461808 0.000000 + 0.200000 + 0.326827 0.034665 0.011544 0.944378 + 0.000000 -0.461807 0.000000 + 0.233333 + 0.393755 0.030759 0.012481 0.918616 + 0.000000 -0.461807 0.000000 + 0.266667 + 0.485107 0.020993 0.010474 0.874140 + 0.000000 -0.461808 0.000000 + 0.300000 + 0.567179 0.019528 0.012379 0.823270 + 0.000000 -0.461808 0.000000 + 0.333333 + 0.628243 0.014645 0.011367 0.777796 + 0.000000 -0.461807 0.000000 + 0.366667 + 0.657555 0.014645 0.012815 0.753155 + 0.000000 -0.461807 0.000000 + 0.400000 + 0.655114 0.016842 0.015258 0.755188 + 0.000000 -0.461808 0.000000 + 0.433333 + 0.623849 0.018307 0.015276 0.781181 + 0.000000 -0.461808 0.000000 + 0.466667 + 0.564737 0.018063 0.013357 0.824965 + 0.000000 -0.461808 0.000000 + 0.500000 + 0.484620 0.022946 0.013404 0.874321 + 0.000000 -0.461808 0.000000 + 0.533333 + 0.386427 0.027829 0.012485 0.921816 + 0.000000 -0.461808 0.000000 + 0.566667 + 0.301422 0.024900 0.009115 0.953122 + 0.000000 -0.461808 0.000000 + 0.600000 + 0.254036 0.029295 0.008654 0.966712 + 0.000000 -0.461808 0.000000 + 0.633333 + 0.257455 0.029051 0.008164 0.965819 + 0.000000 -0.461807 0.000000 + 0.666667 + 0.312171 0.033201 0.010575 0.949387 + 0.000000 -0.461808 0.000000 + 0.700000 + 0.354183 0.029050 0.010062 0.934671 + 0.000000 -0.461808 0.000000 + 0.733334 + 0.384960 0.027341 0.010044 0.922474 + 0.000000 -0.461807 0.000000 + 0.766667 + 0.398151 0.028806 0.011013 0.916801 + 0.000000 -0.461807 0.000000 + 0.800000 + 0.397174 0.031003 0.011991 0.917141 + 0.000000 -0.461807 0.000000 + 0.833334 + 0.383984 0.031247 0.011999 0.922733 + 0.000000 -0.461807 0.000000 + 0.866667 + 0.360535 0.032224 0.011524 0.932118 + 0.000000 -0.461808 0.000000 + 0.900000 + 0.335620 0.033200 0.011050 0.941347 + 0.000000 -0.461807 -0.000000 + 0.933334 + 0.314125 0.034177 0.011063 0.948702 + 0.000000 -0.461808 0.000000 + 0.966667 + 0.296049 0.034665 0.010585 0.954485 + 0.000000 -0.461807 0.000000 + 1.000000 + 0.284325 0.035154 0.010592 0.958025 + 0.000000 -0.461808 0.000000 + 1.033334 + 0.283837 0.036619 0.010592 0.958115 + 0.000000 -0.461807 0.000000 + 1.066667 + 0.292630 0.036618 0.011075 0.955460 + 0.000000 -0.461808 0.000000 + 1.100000 + 0.301423 0.035154 0.010582 0.952784 + 0.000000 -0.461808 0.000000 + 1.133334 + 0.326827 0.034665 0.011544 0.944378 + 0.000000 -0.461808 0.000000 + 1.166667 + 0.393755 0.030759 0.012481 0.918616 + 0.000000 -0.461807 0.000000 + 1.200000 + 0.485107 0.020993 0.010474 0.874140 + 0.000000 -0.461807 0.000000 + 1.233333 + 0.567179 0.019528 0.012379 0.823270 + 0.000000 -0.461808 0.000000 + 1.266667 + 0.628243 0.014645 0.011367 0.777796 + 0.000000 -0.461807 0.000000 + 1.300000 + 0.657555 0.014645 0.012815 0.753155 + 0.000000 -0.461808 0.000000 + 1.333333 + 0.655114 0.016842 0.015258 0.755188 + 0.000000 -0.461808 0.000000 + 1.366667 + 0.623849 0.018307 0.015276 0.781181 + 0.000000 -0.461807 0.000000 + 1.400000 + 0.564737 0.018063 0.013357 0.824965 + 0.000000 -0.461808 0.000000 + 1.433333 + 0.484620 0.022946 0.013404 0.874321 + 0.000000 -0.461807 0.000000 + 1.466667 + 0.386427 0.027829 0.012485 0.921815 + 0.000000 -0.461808 0.000000 + 1.500000 + 0.301423 0.024900 0.009115 0.953122 + 0.000000 -0.461807 0.000000 + 1.533333 + 0.254036 0.029295 0.008654 0.966712 + 0.000000 -0.461807 0.000000 + 1.566666 + 0.257455 0.029051 0.008164 0.965819 + 0.000000 -0.461808 0.000000 + 1.600000 + 0.312170 0.033200 0.010575 0.949387 + 0.000000 -0.461808 0.000000 + 1.633333 + 0.354183 0.029050 0.010062 0.934671 + 0.000000 -0.461808 0.000000 + 1.666666 + 0.384959 0.027341 0.010044 0.922474 + 0.000000 -0.461808 0.000000 + 1.700000 + 0.398150 0.028806 0.011013 0.916802 + 0.000000 -0.461808 0.000000 + 1.733333 + 0.397174 0.031003 0.011991 0.917141 + 0.000000 -0.461808 -0.000000 + 1.766666 + 0.383984 0.031247 0.011999 0.922733 + 0.000000 -0.461807 0.000000 + 1.800000 + 0.360535 0.032224 0.011524 0.932118 + 0.000000 -0.461807 0.000000 + 1.833333 + 0.335620 0.033200 0.011050 0.941347 + 0.000000 -0.461808 0.000000 + 1.866666 + 0.314126 0.034177 0.011063 0.948702 + 0.000000 -0.461808 0.000000 + 1.899999 + 0.296050 0.034665 0.010585 0.954485 + 0.000000 -0.461808 0.000000 + 1.933333 + 0.284325 0.035154 0.010592 0.958025 + 0.000000 -0.461807 0.000000 + 1.966666 + 0.283837 0.036619 0.010592 0.958115 + 0.000000 -0.461807 0.000000 + 1.999999 + 0.292630 0.036618 0.011075 0.955460 + 0.000000 -0.461808 0.000000 + 2.033333 + 0.301423 0.035154 0.010582 0.952784 + 0.000000 -0.461807 0.000000 + 2.066666 + 0.326826 0.034665 0.011544 0.944378 + 0.000000 -0.461807 0.000000 + 2.099999 + 0.393753 0.030759 0.012481 0.918617 + 0.000000 -0.461808 0.000000 + 2.133333 + 0.485105 0.020994 0.010474 0.874141 + 0.000000 -0.461808 0.000000 + 2.166666 + 0.567177 0.019528 0.012379 0.823271 + 0.000000 -0.461807 0.000000 + 2.199999 + 0.628242 0.014646 0.011367 0.777797 + 0.000000 -0.461808 0.000000 + 2.233333 + 0.657555 0.014645 0.012815 0.753155 + 0.000000 -0.461808 0.000000 + 2.266666 + 0.655114 0.016842 0.015258 0.755188 + 0.000000 -0.461807 0.000000 + 2.299999 + 0.623850 0.018307 0.015276 0.781181 + 0.000000 -0.461808 0.000000 + 2.333333 + 0.564739 0.018063 0.013357 0.824964 + 0.000000 -0.461807 0.000000 + 2.366666 + 0.484622 0.022946 0.013404 0.874320 + 0.000000 -0.461807 0.000000 + 2.399999 + 0.386430 0.027829 0.012485 0.921814 + 0.000000 -0.461807 0.000000 + 2.433332 + 0.301425 0.024900 0.009115 0.953121 + 0.000000 -0.461808 0.000000 + 2.466666 + 0.254037 0.029295 0.008655 0.966712 + 0.000000 -0.461807 0.000000 + 2.499999 + 0.257455 0.029051 0.008164 0.965819 + 0.000000 -0.461807 0.000000 + 2.533332 + 0.312169 0.033200 0.010575 0.949387 + 0.000000 -0.461808 0.000001 + 2.566666 + 0.354181 0.029050 0.010062 0.934671 + 0.000000 -0.461807 0.000000 + 2.599999 + 0.384959 0.027341 0.010044 0.922474 + 0.000000 -0.461808 0.000000 + 2.633332 + 0.398150 0.028806 0.011013 0.916802 + 0.000000 -0.461809 0.000000 + 2.666666 + 0.397174 0.031003 0.011991 0.917141 + 0.000000 -0.461807 0.000000 + 2.699999 + 0.383985 0.031247 0.011999 0.922733 + 0.000000 -0.461807 -0.000001 + 2.733332 + 0.360536 0.032224 0.011524 0.932117 + 0.000000 -0.461808 0.000000 + 2.766665 + 0.335621 0.033689 0.011539 0.941324 + 0.000000 -0.461807 0.000000 + 2.799999 + "L_Foot_sjnt_0" + 85 + -0.664857 -0.002130 0.017891 0.746753 + -0.000001 -0.388173 -0.000000 + 0.000000 + -0.674139 -0.006467 0.016187 0.738399 + -0.000001 -0.388173 -0.000000 + 0.033333 + -0.681466 -0.011048 0.014482 0.731623 + -0.000001 -0.388173 -0.000000 + 0.066667 + -0.689282 -0.017642 0.010701 0.724199 + -0.000001 -0.388173 -0.000000 + 0.100000 + -0.702473 -0.027900 0.003750 0.711154 + -0.000001 -0.388173 -0.000000 + 0.133333 + -0.716640 -0.043529 -0.005948 0.696058 + -0.000001 -0.388173 -0.000000 + 0.166667 + -0.722501 -0.061596 -0.015530 0.688445 + -0.000001 -0.388173 -0.000000 + 0.200000 + -0.706382 -0.073306 -0.028483 0.703448 + -0.000001 -0.388173 -0.000000 + 0.233333 + -0.636533 -0.071319 -0.051721 0.766201 + -0.000001 -0.388173 -0.000000 + 0.266667 + -0.521253 -0.061504 -0.076201 0.847765 + -0.000001 -0.388173 -0.000000 + 0.300000 + -0.438698 -0.052196 -0.083081 0.893262 + -0.000001 -0.388173 -0.000000 + 0.333333 + -0.440642 -0.062454 -0.065504 0.893109 + -0.000001 -0.388173 -0.000000 + 0.366667 + -0.481183 -0.058078 -0.046438 0.873460 + -0.000001 -0.388173 -0.000000 + 0.400000 + -0.519283 -0.035147 -0.019557 0.853655 + -0.000001 -0.388173 -0.000000 + 0.433333 + -0.545664 -0.000095 0.002682 0.838000 + -0.000001 -0.388173 -0.000000 + 0.466667 + -0.548594 0.026112 0.022953 0.835366 + -0.000001 -0.388173 -0.000000 + 0.500000 + -0.536381 0.040519 0.031250 0.842423 + -0.000001 -0.388173 -0.000000 + 0.533333 + -0.527584 0.032221 0.034661 0.848184 + -0.000001 -0.388173 -0.000000 + 0.566667 + -0.548594 0.020010 0.017336 0.835669 + -0.000001 -0.388173 -0.000000 + 0.600000 + -0.572539 0.022202 0.000604 0.819576 + -0.000001 -0.388173 -0.000000 + 0.633333 + -0.598437 0.029762 -0.008023 0.800577 + -0.000001 -0.388173 -0.000000 + 0.666667 + -0.577421 0.031230 0.013694 0.815734 + -0.000001 -0.388173 -0.000000 + 0.700000 + -0.550551 0.033681 0.018561 0.833915 + -0.000001 -0.388173 -0.000000 + 0.733334 + -0.567650 0.034651 0.018816 0.822325 + -0.000001 -0.388173 -0.000000 + 0.766667 + -0.593053 0.033176 0.019319 0.804248 + -0.000001 -0.388173 -0.000000 + 0.800000 + -0.617966 0.028771 0.021530 0.785383 + -0.000001 -0.388173 -0.000000 + 0.833334 + -0.639458 0.019729 0.023006 0.768229 + -0.000001 -0.388173 -0.000000 + 0.866667 + -0.654111 0.008737 0.021304 0.756048 + -0.000001 -0.388173 -0.000000 + 0.900000 + -0.664857 -0.000956 0.018379 0.746744 + -0.000001 -0.388173 -0.000000 + 0.933334 + -0.674139 -0.006895 0.015943 0.738400 + -0.000001 -0.388173 -0.000000 + 0.966667 + -0.681466 -0.011292 0.014237 0.731624 + -0.000001 -0.388173 -0.000000 + 1.000000 + -0.689282 -0.017642 0.010701 0.724199 + -0.000001 -0.388173 -0.000000 + 1.033334 + -0.702473 -0.027900 0.003811 0.711153 + -0.000001 -0.388173 -0.000000 + 1.066667 + -0.716640 -0.043529 -0.005948 0.696058 + -0.000001 -0.388173 -0.000000 + 1.100000 + -0.722501 -0.061596 -0.015774 0.688439 + -0.000001 -0.388173 -0.000000 + 1.133334 + -0.706382 -0.073306 -0.028483 0.703448 + -0.000001 -0.388173 -0.000000 + 1.166667 + -0.636532 -0.071319 -0.051721 0.766202 + -0.000001 -0.388173 -0.000000 + 1.200000 + -0.521253 -0.061504 -0.076201 0.847765 + -0.000001 -0.388173 -0.000000 + 1.233333 + -0.438698 -0.052196 -0.083081 0.893262 + -0.000001 -0.388173 -0.000000 + 1.266667 + -0.440642 -0.062454 -0.065504 0.893109 + -0.000001 -0.388172 -0.000000 + 1.300000 + -0.481183 -0.058078 -0.046438 0.873460 + -0.000001 -0.388173 -0.000000 + 1.333333 + -0.519283 -0.035147 -0.019557 0.853655 + -0.000001 -0.388173 -0.000000 + 1.366667 + -0.545664 -0.000095 0.002682 0.838000 + -0.000001 -0.388173 -0.000000 + 1.400000 + -0.548593 0.026112 0.022953 0.835366 + -0.000001 -0.388173 -0.000001 + 1.433333 + -0.536381 0.040519 0.031250 0.842423 + -0.000001 -0.388173 0.000000 + 1.466667 + -0.527584 0.032221 0.034661 0.848184 + -0.000001 -0.388173 -0.000000 + 1.500000 + -0.548594 0.020010 0.017336 0.835669 + -0.000001 -0.388172 -0.000000 + 1.533333 + -0.572539 0.022202 0.000604 0.819576 + -0.000001 -0.388173 -0.000000 + 1.566666 + -0.598436 0.029762 -0.008023 0.800577 + -0.000001 -0.388173 -0.000000 + 1.600000 + -0.577422 0.031230 0.013693 0.815733 + -0.000001 -0.388173 0.000000 + 1.633333 + -0.550552 0.033681 0.018561 0.833915 + -0.000001 -0.388172 -0.000001 + 1.666666 + -0.567650 0.034651 0.018816 0.822325 + -0.000001 -0.388173 0.000000 + 1.700000 + -0.593052 0.033176 0.019319 0.804248 + -0.000001 -0.388173 -0.000000 + 1.733333 + -0.617965 0.028771 0.021530 0.785384 + -0.000001 -0.388172 -0.000000 + 1.766666 + -0.639457 0.019730 0.023006 0.768229 + -0.000001 -0.388173 -0.000000 + 1.800000 + -0.654111 0.008738 0.021304 0.756048 + -0.000001 -0.388173 -0.000001 + 1.833333 + -0.664857 -0.000955 0.018379 0.746744 + -0.000001 -0.388172 0.000000 + 1.866666 + -0.674138 -0.006894 0.015943 0.738401 + -0.000001 -0.388173 0.000000 + 1.899999 + -0.681466 -0.011292 0.014237 0.731624 + -0.000001 -0.388173 0.000000 + 1.933333 + -0.689282 -0.017642 0.010701 0.724199 + -0.000001 -0.388173 -0.000001 + 1.966666 + -0.702472 -0.027900 0.003811 0.711154 + -0.000001 -0.388173 0.000000 + 1.999999 + -0.716639 -0.043529 -0.005948 0.696059 + -0.000001 -0.388173 -0.000000 + 2.033333 + -0.722501 -0.061596 -0.015774 0.688439 + -0.000001 -0.388173 -0.000000 + 2.066666 + -0.706382 -0.073305 -0.028482 0.703448 + -0.000001 -0.388173 -0.000001 + 2.099999 + -0.636534 -0.071319 -0.051720 0.766200 + -0.000001 -0.388173 -0.000000 + 2.133333 + -0.521256 -0.061504 -0.076201 0.847763 + -0.000001 -0.388172 -0.000001 + 2.166666 + -0.438700 -0.052196 -0.083081 0.893261 + -0.000001 -0.388173 -0.000000 + 2.199999 + -0.440642 -0.062454 -0.065504 0.893109 + -0.000001 -0.388173 -0.000001 + 2.233333 + -0.481182 -0.058078 -0.046439 0.873461 + -0.000001 -0.388173 -0.000000 + 2.266666 + -0.519282 -0.035148 -0.019558 0.853656 + -0.000001 -0.388173 -0.000000 + 2.299999 + -0.545663 -0.000096 0.002681 0.838000 + -0.000001 -0.388173 -0.000000 + 2.333333 + -0.548594 0.026111 0.022952 0.835366 + -0.000001 -0.388173 -0.000000 + 2.366666 + -0.536381 0.040519 0.031250 0.842423 + -0.000001 -0.388173 -0.000000 + 2.399999 + -0.527584 0.032221 0.034661 0.848183 + -0.000001 -0.388172 -0.000000 + 2.433332 + -0.548594 0.020010 0.017337 0.835670 + -0.000001 -0.388174 0.000000 + 2.466666 + -0.572538 0.022202 0.000597 0.819577 + -0.000001 -0.388173 0.000000 + 2.499999 + -0.598436 0.029762 -0.008022 0.800577 + -0.000001 -0.388172 0.000000 + 2.533332 + -0.577423 0.031230 0.013693 0.815733 + -0.000001 -0.388173 0.000000 + 2.566666 + -0.550552 0.033681 0.018805 0.833909 + -0.000001 -0.388173 -0.000001 + 2.599999 + -0.567649 0.034651 0.018816 0.822326 + -0.000001 -0.388172 -0.000000 + 2.633332 + -0.593052 0.032688 0.019319 0.804269 + -0.000001 -0.388173 -0.000000 + 2.666666 + -0.617964 0.028772 0.021530 0.785384 + -0.000001 -0.388173 -0.000000 + 2.699999 + -0.639457 0.019974 0.023006 0.768223 + -0.000001 -0.388173 0.000000 + 2.733332 + -0.654111 0.009348 0.021549 0.756034 + -0.000001 -0.388173 0.000000 + 2.766665 + -0.664857 -0.002130 0.017891 0.746753 + -0.000001 -0.388173 0.000000 + 2.799999 + "C_Spine_sjnt_0" + 85 + 0.028320 -0.056879 -0.028828 0.997563 + 0.000000 0.055442 -0.000000 + 0.000000 + 0.027100 -0.057366 -0.033956 0.997407 + 0.000000 0.055442 0.000000 + 0.033333 + 0.025879 -0.056876 -0.042747 0.997130 + -0.000000 0.055442 0.000000 + 0.066667 + 0.024902 -0.055897 -0.053248 0.996705 + -0.000000 0.055442 0.000000 + 0.100000 + 0.024658 -0.055651 -0.062283 0.996201 + 0.000000 0.055442 0.000000 + 0.133333 + 0.024902 -0.056382 -0.065702 0.995934 + 0.000000 0.055442 0.000000 + 0.166667 + 0.025147 -0.058336 -0.062039 0.996050 + 0.000000 0.055442 0.000000 + 0.200000 + 0.025146 -0.060291 -0.052760 0.996468 + -0.000000 0.055442 -0.000000 + 0.233333 + 0.025391 -0.060782 -0.042260 0.996933 + 0.000000 0.055442 0.000000 + 0.266667 + 0.025635 -0.059807 -0.032980 0.997336 + 0.000000 0.055442 -0.000000 + 0.300000 + 0.025879 -0.057368 -0.025165 0.997700 + 0.000000 0.055442 0.000000 + 0.333333 + 0.026367 -0.054195 -0.017594 0.998027 + 0.000000 0.055442 0.000000 + 0.366667 + 0.026611 -0.051023 -0.011000 0.998282 + 0.000000 0.055442 0.000000 + 0.400000 + 0.027100 -0.048094 -0.005871 0.998458 + -0.000000 0.055442 0.000000 + 0.433333 + 0.027832 -0.045898 -0.002208 0.998556 + 0.000000 0.055442 0.000000 + 0.466667 + 0.028809 -0.044434 0.002433 0.998594 + 0.000000 0.055442 0.000000 + 0.500000 + 0.029785 -0.044436 0.010003 0.998518 + 0.000000 0.055442 0.000000 + 0.533333 + 0.030274 -0.044438 0.020503 0.998343 + 0.000000 0.055442 -0.000000 + 0.566667 + 0.030029 -0.043464 0.030760 0.998130 + -0.000000 0.055442 0.000000 + 0.600000 + 0.029541 -0.041268 0.036377 0.998049 + -0.000000 0.055442 -0.000000 + 0.633333 + 0.029053 -0.038582 0.034912 0.998223 + 0.000000 0.055442 0.000000 + 0.666667 + 0.029053 -0.037115 0.027342 0.998514 + -0.000000 0.055442 0.000000 + 0.700000 + 0.029053 -0.038090 0.016842 0.998710 + -0.000000 0.055442 0.000000 + 0.733334 + 0.029297 -0.041261 0.006340 0.998699 + 0.000000 0.055442 0.000000 + 0.766667 + 0.029053 -0.045654 -0.002940 0.998530 + -0.000000 0.055442 -0.000000 + 0.800000 + 0.029053 -0.050046 -0.011732 0.998255 + 0.000000 0.055442 0.000000 + 0.833334 + 0.028809 -0.053219 -0.018815 0.997990 + 0.000000 0.055442 -0.000000 + 0.866667 + 0.028809 -0.055659 -0.024432 0.997735 + 0.000000 0.055442 0.000000 + 0.900000 + 0.028076 -0.056879 -0.028828 0.997570 + 0.000000 0.055442 0.000000 + 0.933334 + 0.027100 -0.057366 -0.034200 0.997399 + 0.000000 0.055442 0.000000 + 0.966667 + 0.025879 -0.056876 -0.042503 0.997140 + 0.000000 0.055442 0.000000 + 1.000000 + 0.024902 -0.055897 -0.053003 0.996718 + 0.000000 0.055442 0.000000 + 1.033334 + 0.024658 -0.055651 -0.062283 0.996201 + 0.000000 0.055442 0.000000 + 1.066667 + 0.024658 -0.056382 -0.065946 0.995924 + 0.000000 0.055442 0.000000 + 1.100000 + 0.025147 -0.058336 -0.062039 0.996050 + 0.000000 0.055442 0.000000 + 1.133334 + 0.025146 -0.060291 -0.052760 0.996468 + 0.000000 0.055442 0.000000 + 1.166667 + 0.025391 -0.060782 -0.042260 0.996933 + 0.000000 0.055442 -0.000000 + 1.200000 + 0.025635 -0.059807 -0.032980 0.997336 + -0.000000 0.055442 0.000000 + 1.233333 + 0.025879 -0.057368 -0.025165 0.997700 + 0.000000 0.055442 0.000000 + 1.266667 + 0.026367 -0.054195 -0.017838 0.998023 + 0.000000 0.055442 0.000000 + 1.300000 + 0.026611 -0.051023 -0.011000 0.998282 + 0.000000 0.055442 0.000000 + 1.333333 + 0.027100 -0.048094 -0.005871 0.998458 + 0.000000 0.055442 0.000000 + 1.366667 + 0.027832 -0.045898 -0.002208 0.998556 + 0.000000 0.055442 0.000000 + 1.400000 + 0.028809 -0.044434 0.002432 0.998594 + 0.000000 0.055442 -0.000000 + 1.433333 + 0.029785 -0.044436 0.010003 0.998518 + 0.000000 0.055442 0.000000 + 1.466667 + 0.030274 -0.044438 0.020503 0.998343 + -0.000000 0.055442 0.000000 + 1.500000 + 0.030029 -0.043464 0.030760 0.998130 + 0.000000 0.055442 0.000000 + 1.533333 + 0.029541 -0.041268 0.036377 0.998049 + -0.000000 0.055442 -0.000000 + 1.566666 + 0.029053 -0.038582 0.034912 0.998223 + -0.000000 0.055442 0.000000 + 1.600000 + 0.029053 -0.037115 0.027343 0.998514 + 0.000000 0.055442 -0.000000 + 1.633333 + 0.029053 -0.038090 0.016842 0.998710 + 0.000000 0.055442 -0.000000 + 1.666666 + 0.029297 -0.041261 0.006341 0.998699 + 0.000000 0.055442 0.000000 + 1.700000 + 0.029053 -0.045654 -0.002940 0.998530 + -0.000000 0.055442 0.000000 + 1.733333 + 0.029053 -0.050046 -0.011732 0.998255 + -0.000000 0.055442 -0.000000 + 1.766666 + 0.028809 -0.053219 -0.018815 0.997990 + 0.000000 0.055442 0.000000 + 1.800000 + 0.028809 -0.055659 -0.024432 0.997735 + -0.000000 0.055442 -0.000000 + 1.833333 + 0.028076 -0.056879 -0.028828 0.997570 + 0.000000 0.055442 -0.000000 + 1.866666 + 0.027100 -0.057366 -0.034200 0.997399 + 0.000000 0.055443 -0.000000 + 1.899999 + 0.025879 -0.056876 -0.042503 0.997140 + 0.000000 0.055442 0.000000 + 1.933333 + 0.024902 -0.055897 -0.053003 0.996718 + 0.000000 0.055441 0.000000 + 1.966666 + 0.024658 -0.055651 -0.062283 0.996201 + -0.000000 0.055442 0.000000 + 1.999999 + 0.024658 -0.056382 -0.065946 0.995924 + 0.000000 0.055442 0.000000 + 2.033333 + 0.025147 -0.058336 -0.062039 0.996050 + 0.000000 0.055442 0.000000 + 2.066666 + 0.025147 -0.060291 -0.052760 0.996468 + 0.000000 0.055442 -0.000000 + 2.099999 + 0.025391 -0.060782 -0.042260 0.996933 + 0.000000 0.055442 0.000000 + 2.133333 + 0.025635 -0.059807 -0.032980 0.997336 + 0.000000 0.055442 0.000000 + 2.166666 + 0.025879 -0.057368 -0.025165 0.997700 + 0.000000 0.055442 -0.000000 + 2.199999 + 0.026367 -0.054195 -0.017838 0.998023 + -0.000000 0.055442 0.000000 + 2.233333 + 0.026611 -0.051023 -0.011000 0.998282 + 0.000000 0.055442 0.000000 + 2.266666 + 0.027100 -0.048095 -0.005871 0.998458 + 0.000000 0.055441 0.000000 + 2.299999 + 0.027832 -0.045898 -0.002208 0.998556 + 0.000000 0.055442 0.000000 + 2.333333 + 0.028809 -0.044434 0.002432 0.998594 + 0.000000 0.055442 0.000000 + 2.366666 + 0.029785 -0.044436 0.010002 0.998518 + 0.000000 0.055442 0.000000 + 2.399999 + 0.030273 -0.044438 0.020503 0.998343 + 0.000000 0.055442 -0.000000 + 2.433332 + 0.030029 -0.043464 0.030760 0.998130 + 0.000000 0.055442 0.000000 + 2.466666 + 0.029541 -0.041268 0.036377 0.998049 + -0.000000 0.055442 -0.000000 + 2.499999 + 0.029053 -0.038582 0.034912 0.998223 + -0.000000 0.055442 -0.000000 + 2.533332 + 0.029053 -0.037115 0.027343 0.998514 + -0.000000 0.055442 -0.000000 + 2.566666 + 0.029053 -0.038090 0.016842 0.998710 + 0.000000 0.055442 0.000000 + 2.599999 + 0.029297 -0.041261 0.006341 0.998699 + 0.000000 0.055442 0.000000 + 2.633332 + 0.029053 -0.045898 -0.002940 0.998519 + 0.000000 0.055442 0.000000 + 2.666666 + 0.029053 -0.050046 -0.011488 0.998258 + -0.000000 0.055442 -0.000000 + 2.699999 + 0.028809 -0.053219 -0.018814 0.997990 + -0.000000 0.055442 0.000000 + 2.733332 + 0.028564 -0.055415 -0.024920 0.997744 + 0.000000 0.055441 0.000000 + 2.766665 + 0.028320 -0.056879 -0.028828 0.997563 + -0.000000 0.055442 0.000000 + 2.799999 + "C_Spine_sjnt_1" + 85 + 0.049805 -0.049314 -0.011973 0.997469 + -0.000000 0.049000 0.000000 + 0.000000 + 0.048584 -0.050780 -0.007457 0.997500 + -0.000000 0.049000 0.000000 + 0.033333 + 0.047119 -0.053221 -0.006237 0.997451 + 0.000000 0.049000 -0.000000 + 0.066667 + 0.046631 -0.055418 -0.006787 0.997351 + -0.000000 0.049000 -0.000000 + 0.100000 + 0.046753 -0.058226 -0.007733 0.997178 + 0.000000 0.049000 0.000000 + 0.133333 + 0.046875 -0.061033 -0.008680 0.996997 + 0.000000 0.049000 0.000000 + 0.166667 + 0.048584 -0.062987 -0.006971 0.996807 + 0.000000 0.049000 0.000000 + 0.200000 + 0.049561 -0.062012 -0.000692 0.996844 + 0.000000 0.049000 0.000000 + 0.233333 + 0.050049 -0.059327 0.006091 0.996965 + 0.000000 0.049000 -0.000000 + 0.266667 + 0.051637 -0.055790 0.011463 0.997041 + 0.000000 0.049000 -0.000000 + 0.300000 + 0.053223 -0.052250 0.016835 0.997073 + -0.000000 0.049000 0.000000 + 0.333333 + 0.053467 -0.049565 0.021962 0.997097 + -0.000000 0.049000 0.000000 + 0.366667 + 0.052979 -0.046636 0.022451 0.997253 + 0.000000 0.049000 -0.000000 + 0.400000 + 0.052490 -0.043705 0.018057 0.997501 + -0.000000 0.049000 0.000000 + 0.433333 + 0.052002 -0.041262 0.011832 0.997724 + 0.000000 0.049000 0.000000 + 0.466667 + 0.051758 -0.039064 0.007011 0.997871 + 0.000000 0.049000 0.000000 + 0.500000 + 0.051270 -0.037110 0.005119 0.997982 + 0.000000 0.049000 0.000000 + 0.533333 + 0.050781 -0.035645 0.004448 0.998064 + -0.000000 0.049000 0.000000 + 0.566667 + 0.049316 -0.034303 0.003441 0.998188 + 0.000000 0.049000 0.000000 + 0.600000 + 0.047852 -0.032960 0.002434 0.998308 + 0.000000 0.049000 0.000000 + 0.633333 + 0.047607 -0.031983 0.000489 0.998354 + 0.000000 0.049000 0.000000 + 0.666667 + 0.048584 -0.031982 -0.003150 0.998302 + 0.000000 0.049000 0.000000 + 0.700000 + 0.049805 -0.032957 -0.008796 0.998176 + 0.000000 0.049000 0.000000 + 0.733334 + 0.050049 -0.035153 -0.014656 0.998020 + -0.000000 0.049000 0.000000 + 0.766667 + 0.049316 -0.038570 -0.019784 0.997842 + 0.000000 0.049000 0.000000 + 0.800000 + 0.049072 -0.041987 -0.023202 0.997643 + 0.000000 0.049000 0.000000 + 0.833334 + 0.049316 -0.044673 -0.022226 0.997536 + 0.000000 0.049000 0.000000 + 0.866667 + 0.049805 -0.047115 -0.018076 0.997483 + -0.000000 0.049000 -0.000000 + 0.900000 + 0.049561 -0.049314 -0.012218 0.997478 + 0.000000 0.049000 0.000000 + 0.933334 + 0.048584 -0.051024 -0.007396 0.997488 + 0.000000 0.049000 0.000000 + 0.966667 + 0.047119 -0.053221 -0.005993 0.997452 + -0.000000 0.049000 0.000000 + 1.000000 + 0.046875 -0.055663 -0.007031 0.997324 + -0.000000 0.049000 -0.000000 + 1.033334 + 0.046631 -0.058104 -0.008069 0.997188 + -0.000000 0.049000 -0.000000 + 1.066667 + 0.046875 -0.061033 -0.008680 0.996997 + -0.000000 0.049000 0.000000 + 1.100000 + 0.048584 -0.062987 -0.006971 0.996807 + 0.000000 0.049000 0.000000 + 1.133334 + 0.049561 -0.062012 -0.000669 0.996844 + -0.000000 0.049000 -0.000000 + 1.166667 + 0.050049 -0.059327 0.006091 0.996965 + 0.000000 0.049000 0.000000 + 1.200000 + 0.051637 -0.055790 0.011463 0.997041 + -0.000000 0.049000 0.000000 + 1.233333 + 0.053223 -0.052250 0.016835 0.997073 + 0.000000 0.049000 0.000000 + 1.266667 + 0.053467 -0.049565 0.021962 0.997097 + 0.000000 0.049000 -0.000000 + 1.300000 + 0.052979 -0.046636 0.022451 0.997253 + 0.000000 0.049000 -0.000000 + 1.333333 + 0.052490 -0.043705 0.018057 0.997501 + 0.000000 0.049000 0.000000 + 1.366667 + 0.052002 -0.041262 0.011832 0.997724 + 0.000000 0.049000 -0.000000 + 1.400000 + 0.051758 -0.039064 0.007011 0.997871 + 0.000000 0.049000 0.000000 + 1.433333 + 0.051270 -0.037110 0.005119 0.997982 + 0.000000 0.049000 -0.000000 + 1.466667 + 0.050781 -0.035645 0.004448 0.998064 + 0.000000 0.049000 -0.000000 + 1.500000 + 0.049317 -0.034303 0.003441 0.998188 + -0.000000 0.049000 0.000000 + 1.533333 + 0.047851 -0.032960 0.002434 0.998308 + 0.000000 0.049000 0.000000 + 1.566666 + 0.047607 -0.031983 0.000489 0.998354 + 0.000000 0.049000 0.000000 + 1.600000 + 0.048584 -0.031982 -0.003150 0.998302 + -0.000000 0.049000 -0.000000 + 1.633333 + 0.049805 -0.032957 -0.008796 0.998176 + -0.000000 0.049000 -0.000000 + 1.666666 + 0.050049 -0.035153 -0.014656 0.998020 + 0.000000 0.049000 0.000000 + 1.700000 + 0.049316 -0.038570 -0.019784 0.997842 + 0.000000 0.049000 0.000000 + 1.733333 + 0.049072 -0.041987 -0.023202 0.997643 + -0.000000 0.049000 -0.000000 + 1.766666 + 0.049316 -0.044673 -0.022226 0.997536 + 0.000000 0.049000 -0.000000 + 1.800000 + 0.049805 -0.047115 -0.018077 0.997483 + -0.000000 0.049000 0.000000 + 1.833333 + 0.049561 -0.049314 -0.012218 0.997478 + 0.000000 0.049000 -0.000000 + 1.866666 + 0.048584 -0.051024 -0.007396 0.997488 + 0.000000 0.049000 0.000000 + 1.899999 + 0.047119 -0.053221 -0.005993 0.997452 + -0.000000 0.049000 -0.000000 + 1.933333 + 0.046875 -0.055663 -0.007031 0.997324 + 0.000000 0.049000 0.000000 + 1.966666 + 0.046631 -0.058104 -0.008069 0.997188 + -0.000000 0.049000 -0.000000 + 1.999999 + 0.046875 -0.061033 -0.008680 0.996997 + 0.000000 0.049000 0.000000 + 2.033333 + 0.048584 -0.062987 -0.006971 0.996807 + 0.000000 0.049000 -0.000000 + 2.066666 + 0.049561 -0.062012 -0.000670 0.996844 + -0.000000 0.049000 0.000000 + 2.099999 + 0.050049 -0.059328 0.006091 0.996965 + -0.000000 0.049000 -0.000000 + 2.133333 + 0.051637 -0.055790 0.011463 0.997041 + -0.000000 0.049000 -0.000000 + 2.166666 + 0.053223 -0.052250 0.016834 0.997073 + 0.000000 0.049000 -0.000000 + 2.199999 + 0.053467 -0.049565 0.021962 0.997097 + 0.000000 0.049000 -0.000000 + 2.233333 + 0.052978 -0.046636 0.022451 0.997253 + 0.000000 0.049000 0.000000 + 2.266666 + 0.052490 -0.043705 0.018057 0.997501 + -0.000000 0.049000 0.000000 + 2.299999 + 0.052002 -0.041262 0.011832 0.997724 + -0.000000 0.049000 0.000000 + 2.333333 + 0.051758 -0.039064 0.007011 0.997871 + 0.000000 0.049000 0.000000 + 2.366666 + 0.051270 -0.037111 0.005119 0.997982 + 0.000000 0.049000 0.000000 + 2.399999 + 0.050781 -0.035646 0.004448 0.998064 + 0.000000 0.049000 0.000000 + 2.433332 + 0.049317 -0.034303 0.003441 0.998188 + 0.000000 0.049000 -0.000000 + 2.466666 + 0.047851 -0.032960 0.002434 0.998308 + -0.000000 0.048999 0.000000 + 2.499999 + 0.047607 -0.031983 0.000497 0.998354 + -0.000000 0.049000 -0.000000 + 2.533332 + 0.048584 -0.031982 -0.003181 0.998302 + 0.000000 0.049000 0.000000 + 2.566666 + 0.049805 -0.032957 -0.008796 0.998176 + -0.000000 0.049000 -0.000000 + 2.599999 + 0.050049 -0.035153 -0.014656 0.998020 + 0.000000 0.049000 0.000000 + 2.633332 + 0.049316 -0.038570 -0.019783 0.997842 + 0.000000 0.049000 -0.000000 + 2.666666 + 0.049072 -0.041987 -0.023202 0.997643 + 0.000000 0.049000 0.000000 + 2.699999 + 0.049072 -0.044429 -0.022226 0.997559 + -0.000000 0.049000 0.000000 + 2.733332 + 0.049561 -0.047115 -0.018321 0.997491 + 0.000000 0.049000 -0.000000 + 2.766665 + 0.049805 -0.049314 -0.011974 0.997469 + 0.000000 0.049000 -0.000000 + 2.799999 + "C_Spine_sjnt_2" + 85 + 0.054125 -0.048828 -0.004743 0.997328 + -0.000000 0.049000 0.000000 + 0.000000 + 0.053305 -0.050554 -0.000884 0.997297 + -0.000000 0.049000 -0.000000 + 0.033333 + 0.051989 -0.052780 0.001335 0.997251 + 0.000000 0.049000 0.000000 + 0.066667 + 0.052026 -0.055317 0.001915 0.997111 + -0.000000 0.049000 0.000000 + 0.100000 + 0.052059 -0.057854 0.002494 0.996964 + 0.000000 0.049000 -0.000000 + 0.133333 + 0.052088 -0.060391 0.003074 0.996810 + -0.000000 0.049000 -0.000000 + 0.166667 + 0.054473 -0.062355 0.004484 0.996556 + 0.000000 0.049000 0.000000 + 0.200000 + 0.056230 -0.061420 0.010160 0.996475 + 0.000000 0.049000 0.000000 + 0.233333 + 0.056853 -0.058998 0.014774 0.996528 + 0.000000 0.049000 0.000000 + 0.266667 + 0.058931 -0.055818 0.017104 0.996554 + 0.000000 0.049000 0.000000 + 0.300000 + 0.061011 -0.052635 0.019425 0.996559 + 0.000000 0.049000 -0.000000 + 0.333333 + 0.061654 -0.049735 0.023534 0.996580 + 0.000000 0.049000 0.000000 + 0.366667 + 0.060946 -0.046811 0.024178 0.996750 + -0.000000 0.049000 -0.000000 + 0.400000 + 0.059243 -0.043844 0.019514 0.997089 + 0.000000 0.049000 0.000000 + 0.433333 + 0.057766 -0.041375 0.013884 0.997376 + -0.000000 0.049000 -0.000000 + 0.466667 + 0.056272 -0.039139 0.009237 0.997605 + 0.000000 0.049000 0.000000 + 0.500000 + 0.055594 -0.037413 0.007542 0.997724 + 0.000000 0.049000 -0.000000 + 0.533333 + 0.054910 -0.035687 0.005849 0.997836 + 0.000000 0.049000 0.000000 + 0.566667 + 0.053731 -0.034328 0.004256 0.997956 + 0.000000 0.049000 0.000000 + 0.600000 + 0.052547 -0.032970 0.002664 0.998071 + 0.000000 0.049000 0.000000 + 0.633333 + 0.052582 -0.031982 0.000834 0.998104 + 0.000000 0.049000 0.000000 + 0.666667 + 0.053984 -0.032202 -0.002376 0.998020 + 0.000000 0.049000 0.000000 + 0.700000 + 0.055389 -0.032920 -0.006620 0.997900 + 0.000000 0.049000 0.000000 + 0.733334 + 0.054958 -0.034862 -0.010018 0.997830 + 0.000000 0.049000 0.000000 + 0.766667 + 0.054518 -0.038155 -0.012228 0.997709 + 0.000000 0.049000 0.000000 + 0.800000 + 0.054082 -0.041447 -0.014438 0.997571 + -0.000000 0.049000 -0.000000 + 0.833334 + 0.053578 -0.044384 -0.013071 0.997491 + -0.000000 0.049000 0.000000 + 0.866667 + 0.054104 -0.046609 -0.009549 0.997401 + -0.000000 0.049000 0.000000 + 0.900000 + 0.053887 -0.048584 -0.005113 0.997351 + 0.000000 0.049000 0.000000 + 0.933334 + 0.053276 -0.050566 -0.000513 0.997299 + 0.000000 0.049000 0.000000 + 0.966667 + 0.052122 -0.053019 0.001311 0.997231 + 0.000000 0.049000 0.000000 + 1.000000 + 0.051939 -0.055482 0.002008 0.997106 + 0.000000 0.049000 0.000000 + 1.033334 + 0.052015 -0.057937 0.002533 0.996961 + 0.000000 0.049000 0.000000 + 1.066667 + 0.052088 -0.060391 0.003059 0.996810 + -0.000000 0.049000 -0.000000 + 1.100000 + 0.054473 -0.062355 0.004484 0.996556 + 0.000000 0.049000 -0.000000 + 1.133334 + 0.056230 -0.061420 0.010160 0.996475 + -0.000000 0.049000 0.000000 + 1.166667 + 0.056853 -0.058998 0.014774 0.996528 + -0.000000 0.049000 -0.000000 + 1.200000 + 0.058930 -0.055818 0.017104 0.996554 + 0.000000 0.049000 0.000000 + 1.233333 + 0.061011 -0.052635 0.019425 0.996559 + 0.000000 0.049000 0.000000 + 1.266667 + 0.061654 -0.049735 0.023534 0.996580 + 0.000000 0.049000 0.000000 + 1.300000 + 0.060946 -0.046811 0.024178 0.996750 + -0.000000 0.049000 0.000000 + 1.333333 + 0.059243 -0.043844 0.019514 0.997089 + -0.000000 0.049000 0.000000 + 1.366667 + 0.057766 -0.041375 0.013884 0.997376 + 0.000000 0.049000 0.000000 + 1.400000 + 0.056272 -0.039139 0.009237 0.997605 + -0.000000 0.049000 -0.000000 + 1.433333 + 0.055594 -0.037413 0.007542 0.997724 + 0.000000 0.049000 0.000000 + 1.466667 + 0.054910 -0.035687 0.005849 0.997836 + 0.000000 0.049000 0.000000 + 1.500000 + 0.053731 -0.034328 0.004256 0.997956 + 0.000000 0.049000 0.000000 + 1.533333 + 0.052548 -0.032970 0.002664 0.998070 + 0.000000 0.049000 -0.000000 + 1.566666 + 0.052583 -0.031982 0.000834 0.998104 + 0.000000 0.049000 0.000000 + 1.600000 + 0.053984 -0.032202 -0.002376 0.998020 + 0.000000 0.049000 0.000000 + 1.633333 + 0.055388 -0.032920 -0.006620 0.997900 + 0.000000 0.049000 -0.000000 + 1.666666 + 0.054959 -0.034862 -0.010018 0.997830 + 0.000000 0.049000 0.000000 + 1.700000 + 0.054518 -0.038155 -0.012228 0.997709 + 0.000000 0.049000 0.000000 + 1.733333 + 0.054082 -0.041447 -0.014438 0.997571 + -0.000000 0.049000 0.000000 + 1.766666 + 0.053579 -0.044384 -0.013071 0.997491 + 0.000000 0.049001 0.000000 + 1.800000 + 0.054104 -0.046609 -0.009549 0.997401 + -0.000000 0.049000 0.000000 + 1.833333 + 0.053887 -0.048584 -0.005113 0.997351 + -0.000000 0.049000 0.000000 + 1.866666 + 0.053275 -0.050566 -0.000513 0.997299 + -0.000000 0.049000 0.000000 + 1.899999 + 0.052121 -0.053019 0.001311 0.997231 + 0.000000 0.049000 0.000000 + 1.933333 + 0.051938 -0.055482 0.002008 0.997106 + 0.000000 0.049000 0.000000 + 1.966666 + 0.052015 -0.057937 0.002533 0.996961 + 0.000000 0.049000 0.000000 + 1.999999 + 0.052088 -0.060391 0.003059 0.996810 + -0.000000 0.049000 -0.000000 + 2.033333 + 0.054472 -0.062355 0.004484 0.996556 + -0.000000 0.049000 0.000000 + 2.066666 + 0.056230 -0.061420 0.010160 0.996475 + -0.000000 0.049000 -0.000000 + 2.099999 + 0.056853 -0.058998 0.014774 0.996528 + -0.000000 0.049000 -0.000000 + 2.133333 + 0.058932 -0.055818 0.017104 0.996554 + -0.000000 0.049000 -0.000000 + 2.166666 + 0.061011 -0.052635 0.019425 0.996559 + -0.000000 0.049000 0.000000 + 2.199999 + 0.061654 -0.049735 0.023533 0.996580 + 0.000000 0.049000 0.000000 + 2.233333 + 0.060945 -0.046811 0.024178 0.996750 + 0.000000 0.049000 -0.000000 + 2.266666 + 0.059243 -0.043844 0.019515 0.997089 + -0.000000 0.049000 -0.000000 + 2.299999 + 0.057766 -0.041375 0.013884 0.997376 + 0.000000 0.049000 0.000000 + 2.333333 + 0.056273 -0.039139 0.009237 0.997605 + -0.000000 0.049000 0.000000 + 2.366666 + 0.055594 -0.037413 0.007542 0.997724 + 0.000000 0.049000 0.000000 + 2.399999 + 0.054911 -0.035687 0.005849 0.997836 + 0.000000 0.049000 0.000000 + 2.433332 + 0.053731 -0.034328 0.004256 0.997956 + 0.000000 0.049000 0.000000 + 2.466666 + 0.052547 -0.032971 0.002664 0.998070 + 0.000000 0.049000 0.000000 + 2.499999 + 0.052582 -0.031981 0.000819 0.998104 + -0.000000 0.049000 -0.000000 + 2.533332 + 0.053986 -0.032202 -0.002381 0.998020 + -0.000000 0.049000 0.000000 + 2.566666 + 0.055387 -0.032920 -0.006619 0.997900 + 0.000000 0.049000 0.000000 + 2.599999 + 0.054959 -0.035106 -0.010015 0.997821 + 0.000000 0.049000 -0.000001 + 2.633332 + 0.054517 -0.038277 -0.012226 0.997704 + 0.000000 0.049000 0.000000 + 2.666666 + 0.054080 -0.041447 -0.014438 0.997572 + -0.000000 0.049000 -0.000001 + 2.699999 + 0.053579 -0.044142 -0.013317 0.997499 + 0.000000 0.049000 0.000000 + 2.733332 + 0.054101 -0.046611 -0.009518 0.997402 + 0.000000 0.049000 -0.000000 + 2.766665 + 0.054124 -0.048828 -0.004743 0.997328 + 0.000000 0.049000 0.000000 + 2.799999 + "C_Spine_sjnt_4" + 85 + 0.045865 -0.097519 -0.003639 0.994170 + 0.000000 0.098001 0.000000 + 0.000000 + 0.045526 -0.101279 0.000129 0.993816 + -0.000000 0.098001 -0.000000 + 0.033333 + 0.045179 -0.105035 0.003897 0.993434 + 0.000000 0.098001 0.000000 + 0.066667 + 0.045116 -0.109419 0.007106 0.992946 + -0.000000 0.098001 -0.000000 + 0.100000 + 0.045997 -0.114043 0.010673 0.992353 + -0.000000 0.098001 0.000000 + 0.133333 + 0.046863 -0.118663 0.014244 0.991726 + -0.000000 0.098001 -0.000000 + 0.166667 + 0.049916 -0.123274 0.016425 0.990980 + -0.000000 0.098001 -0.000000 + 0.200000 + 0.053007 -0.121530 0.021015 0.990949 + 0.000000 0.098001 0.000000 + 0.233333 + 0.053768 -0.117125 0.023256 0.991388 + -0.000000 0.098001 0.000000 + 0.266667 + 0.055925 -0.111526 0.022959 0.991921 + 0.000000 0.098001 0.000000 + 0.300000 + 0.058077 -0.105921 0.022655 0.992419 + 0.000000 0.098001 -0.000000 + 0.333333 + 0.058781 -0.100299 0.026230 0.992873 + 0.000000 0.098001 0.000000 + 0.366667 + 0.057111 -0.094223 0.026788 0.993551 + -0.000000 0.098001 -0.000000 + 0.400000 + 0.053621 -0.088759 0.022782 0.994348 + -0.000000 0.098001 0.000000 + 0.433333 + 0.050198 -0.083514 0.017076 0.995095 + 0.000000 0.098001 -0.000000 + 0.466667 + 0.046756 -0.078262 0.011380 0.995771 + -0.000000 0.098001 -0.000000 + 0.500000 + 0.046142 -0.074966 0.007474 0.996090 + 0.000000 0.098001 0.000000 + 0.533333 + 0.046957 -0.071916 0.004281 0.996296 + 0.000000 0.098001 -0.000000 + 0.566667 + 0.047764 -0.069474 0.001153 0.996439 + -0.000000 0.098001 0.000000 + 0.600000 + 0.048772 -0.067044 -0.000795 0.996557 + 0.000000 0.098001 -0.000000 + 0.633333 + 0.050021 -0.064858 -0.002745 0.996636 + 0.000000 0.098001 -0.000000 + 0.666667 + 0.051143 -0.065735 -0.005382 0.996511 + 0.000000 0.098001 0.000000 + 0.700000 + 0.052265 -0.066611 -0.008019 0.996377 + 0.000000 0.098001 0.000000 + 0.733334 + 0.051035 -0.070051 -0.008947 0.996197 + 0.000000 0.098001 -0.000000 + 0.766667 + 0.049753 -0.076161 -0.008896 0.995814 + -0.000000 0.098001 0.000000 + 0.800000 + 0.048465 -0.082267 -0.008851 0.995392 + 0.000000 0.098001 0.000000 + 0.833334 + 0.047083 -0.087853 -0.008034 0.994988 + -0.000000 0.098001 0.000000 + 0.866667 + 0.046959 -0.092566 -0.005846 0.994581 + -0.000000 0.098001 -0.000000 + 0.900000 + 0.046836 -0.097278 -0.003661 0.994148 + 0.000000 0.098001 0.000000 + 0.933334 + 0.045792 -0.101145 0.000250 0.993817 + 0.000000 0.098001 0.000000 + 0.966667 + 0.044825 -0.105159 0.003423 0.993439 + -0.000000 0.098001 0.000000 + 1.000000 + 0.045366 -0.109334 0.007159 0.992943 + 0.000000 0.098001 0.000000 + 1.033334 + 0.046123 -0.114001 0.010700 0.992352 + 0.000000 0.098001 0.000000 + 1.066667 + 0.046864 -0.118663 0.014244 0.991726 + 0.000000 0.098001 0.000000 + 1.100000 + 0.049916 -0.123274 0.016425 0.990980 + 0.000000 0.098001 -0.000000 + 1.133334 + 0.053008 -0.121530 0.021015 0.990949 + 0.000000 0.098001 0.000000 + 1.166667 + 0.053768 -0.117125 0.023256 0.991388 + 0.000000 0.098001 -0.000000 + 1.200000 + 0.055926 -0.111526 0.022958 0.991921 + -0.000000 0.098001 -0.000000 + 1.233333 + 0.058077 -0.105921 0.022655 0.992419 + 0.000000 0.098001 0.000000 + 1.266667 + 0.058781 -0.100299 0.026230 0.992873 + 0.000000 0.098001 0.000000 + 1.300000 + 0.057112 -0.094223 0.026788 0.993551 + -0.000000 0.098001 0.000000 + 1.333333 + 0.053621 -0.088759 0.022782 0.994348 + 0.000000 0.098001 0.000000 + 1.366667 + 0.050197 -0.083514 0.017077 0.995095 + 0.000000 0.098001 -0.000000 + 1.400000 + 0.046757 -0.078262 0.011380 0.995771 + 0.000000 0.098001 0.000000 + 1.433333 + 0.046141 -0.074966 0.007474 0.996090 + -0.000000 0.098001 -0.000000 + 1.466667 + 0.046957 -0.071916 0.004281 0.996296 + -0.000000 0.098001 -0.000000 + 1.500000 + 0.047764 -0.069474 0.001154 0.996439 + 0.000000 0.098001 0.000000 + 1.533333 + 0.048771 -0.067044 -0.000795 0.996557 + 0.000000 0.098001 -0.000000 + 1.566666 + 0.050020 -0.064858 -0.002744 0.996636 + 0.000000 0.098001 0.000000 + 1.600000 + 0.051143 -0.065735 -0.005382 0.996511 + 0.000000 0.098001 -0.000000 + 1.633333 + 0.052265 -0.066611 -0.008019 0.996377 + -0.000000 0.098001 0.000000 + 1.666666 + 0.051035 -0.070051 -0.008947 0.996197 + 0.000000 0.098001 -0.000000 + 1.700000 + 0.049753 -0.076161 -0.008896 0.995814 + -0.000000 0.098001 0.000000 + 1.733333 + 0.048465 -0.082267 -0.008851 0.995392 + -0.000000 0.098001 0.000000 + 1.766666 + 0.047083 -0.087853 -0.008034 0.994988 + 0.000000 0.098001 0.000000 + 1.800000 + 0.046960 -0.092566 -0.005847 0.994581 + 0.000000 0.098001 0.000000 + 1.833333 + 0.046836 -0.097277 -0.003661 0.994148 + 0.000000 0.098001 -0.000000 + 1.866666 + 0.045793 -0.101144 0.000249 0.993817 + 0.000000 0.098001 0.000000 + 1.899999 + 0.044825 -0.105159 0.003423 0.993439 + 0.000000 0.098001 -0.000000 + 1.933333 + 0.045366 -0.109334 0.007159 0.992943 + 0.000000 0.098001 0.000000 + 1.966666 + 0.046123 -0.114000 0.010700 0.992352 + -0.000000 0.098001 0.000000 + 1.999999 + 0.046863 -0.118663 0.014244 0.991726 + -0.000000 0.098001 -0.000000 + 2.033333 + 0.049917 -0.123274 0.016424 0.990980 + 0.000000 0.098001 0.000000 + 2.066666 + 0.053007 -0.121530 0.021015 0.990949 + -0.000000 0.098001 0.000000 + 2.099999 + 0.053769 -0.117125 0.023256 0.991388 + 0.000000 0.098001 -0.000000 + 2.133333 + 0.055925 -0.111526 0.022959 0.991921 + 0.000000 0.098001 0.000000 + 2.166666 + 0.058077 -0.105921 0.022655 0.992419 + 0.000000 0.098001 -0.000000 + 2.199999 + 0.058781 -0.100300 0.026230 0.992873 + 0.000000 0.098001 -0.000000 + 2.233333 + 0.057112 -0.094223 0.026788 0.993551 + -0.000000 0.098001 0.000000 + 2.266666 + 0.053621 -0.088759 0.022782 0.994348 + 0.000000 0.098001 0.000000 + 2.299999 + 0.050197 -0.083515 0.017077 0.995095 + 0.000000 0.098001 0.000000 + 2.333333 + 0.046756 -0.078262 0.011380 0.995771 + 0.000000 0.098001 -0.000000 + 2.366666 + 0.046141 -0.074966 0.007474 0.996090 + 0.000000 0.098001 0.000000 + 2.399999 + 0.046956 -0.071916 0.004281 0.996296 + 0.000000 0.098001 0.000000 + 2.433332 + 0.047764 -0.069474 0.001154 0.996439 + 0.000000 0.098001 0.000000 + 2.466666 + 0.048773 -0.067044 -0.000826 0.996557 + 0.000000 0.098001 0.000000 + 2.499999 + 0.050022 -0.064858 -0.002813 0.996636 + -0.000000 0.098001 -0.000000 + 2.533332 + 0.051142 -0.065734 -0.005416 0.996511 + 0.000000 0.098001 0.000000 + 2.566666 + 0.052266 -0.066611 -0.008020 0.996377 + 0.000000 0.098001 -0.000000 + 2.599999 + 0.051036 -0.070051 -0.008948 0.996197 + 0.000000 0.098001 -0.000000 + 2.633332 + 0.049917 -0.076161 -0.008890 0.995806 + 0.000000 0.098001 -0.000000 + 2.666666 + 0.048792 -0.082268 -0.008838 0.995376 + 0.000000 0.098001 0.000000 + 2.699999 + 0.047570 -0.087854 -0.008012 0.994965 + 0.000000 0.098001 0.000000 + 2.733332 + 0.047216 -0.092684 -0.006044 0.994557 + 0.000000 0.098001 0.000000 + 2.766665 + 0.045866 -0.097519 -0.003639 0.994170 + 0.000000 0.098001 0.000000 + 2.799999 + "L_Clavicle_sjnt_0" + 85 + -0.769035 0.591585 0.167503 -0.174803 + 0.007299 0.208857 0.030677 + 0.000000 + -0.774198 0.587189 0.162131 -0.171872 + 0.007299 0.208857 0.030677 + 0.033333 + -0.781557 0.578885 0.158711 -0.169918 + 0.007299 0.208857 0.030677 + 0.066667 + -0.787588 0.571069 0.157733 -0.169429 + 0.007299 0.208857 0.030677 + 0.100000 + -0.791456 0.565696 0.157732 -0.169428 + 0.007299 0.208857 0.030677 + 0.133333 + -0.793294 0.563253 0.157243 -0.169428 + 0.007299 0.208857 0.030677 + 0.166667 + -0.793340 0.563742 0.155778 -0.168939 + 0.007299 0.208857 0.030677 + 0.200000 + -0.791360 0.566673 0.156267 -0.167963 + 0.007299 0.208857 0.030677 + 0.233333 + -0.787908 0.571069 0.158221 -0.167475 + 0.007299 0.208857 0.030677 + 0.266667 + -0.783880 0.576443 0.158222 -0.167964 + 0.007299 0.208857 0.030677 + 0.300000 + -0.780552 0.581328 0.156270 -0.168453 + 0.007299 0.208857 0.030677 + 0.333333 + -0.777724 0.585236 0.155783 -0.168454 + 0.007299 0.208857 0.030677 + 0.366667 + -0.775597 0.587679 0.158224 -0.167478 + 0.007299 0.208857 0.030677 + 0.400000 + 0.774521 -0.588166 -0.161643 0.167478 + 0.007299 0.208857 0.030677 + 0.433333 + 0.774326 -0.587193 -0.164817 0.168700 + 0.007299 0.208857 0.030677 + 0.466667 + 0.774121 -0.586211 -0.167990 0.169919 + 0.007299 0.208857 0.030677 + 0.500000 + 0.771082 -0.588653 -0.171897 0.171385 + 0.007299 0.208857 0.030677 + 0.533333 + 0.766477 -0.593066 -0.175565 0.173099 + 0.007299 0.208857 0.030677 + 0.566667 + 0.761828 -0.597445 -0.179223 0.174804 + 0.007299 0.208857 0.030677 + 0.600000 + 0.758991 -0.599887 -0.181176 0.176758 + 0.007299 0.208857 0.030677 + 0.633333 + 0.757836 -0.599886 -0.182641 0.180176 + 0.007299 0.208857 0.030677 + 0.666667 + 0.758057 -0.598420 -0.183129 0.183594 + 0.007299 0.208857 0.030677 + 0.700000 + -0.760854 0.595001 0.180687 -0.185546 + 0.007299 0.208857 0.030677 + 0.733334 + -0.765009 0.591354 0.176052 -0.184574 + 0.007299 0.208857 0.030677 + 0.766667 + -0.769124 0.587675 0.171408 -0.183592 + 0.007299 0.208857 0.030677 + 0.800000 + -0.769938 0.587187 0.169943 -0.183103 + 0.007299 0.208857 0.030677 + 0.833334 + -0.768343 0.589141 0.170920 -0.182615 + 0.007299 0.208857 0.030677 + 0.866667 + -0.767265 0.591584 0.170432 -0.179686 + 0.007299 0.208857 0.030677 + 0.900000 + -0.768813 0.591584 0.167503 -0.175779 + 0.007299 0.208857 0.030677 + 0.933334 + -0.774096 0.587189 0.162619 -0.171872 + 0.007299 0.208857 0.030677 + 0.966667 + -0.781557 0.578885 0.158711 -0.169918 + 0.007299 0.208857 0.030677 + 1.000000 + -0.787588 0.571069 0.157733 -0.169429 + 0.007299 0.208857 0.030677 + 1.033334 + -0.791457 0.565695 0.157732 -0.169428 + 0.007299 0.208857 0.030677 + 1.066667 + -0.793294 0.563253 0.157243 -0.169428 + 0.007299 0.208857 0.030677 + 1.100000 + -0.793340 0.563742 0.155778 -0.168939 + 0.007299 0.208857 0.030677 + 1.133334 + -0.791360 0.566673 0.156267 -0.167963 + 0.007299 0.208857 0.030677 + 1.166667 + -0.787908 0.571069 0.158221 -0.167475 + 0.007299 0.208857 0.030677 + 1.200000 + -0.783880 0.576443 0.158222 -0.167964 + 0.007299 0.208857 0.030677 + 1.233333 + -0.780552 0.581328 0.156270 -0.168453 + 0.007299 0.208857 0.030677 + 1.266667 + -0.777724 0.585236 0.155783 -0.168454 + 0.007299 0.208857 0.030677 + 1.300000 + -0.775597 0.587678 0.158224 -0.167477 + 0.007299 0.208857 0.030677 + 1.333333 + 0.774521 -0.588166 -0.161643 0.167478 + 0.007299 0.208857 0.030677 + 1.366667 + 0.774326 -0.587192 -0.164817 0.168700 + 0.007299 0.208857 0.030677 + 1.400000 + 0.774121 -0.586211 -0.167990 0.169919 + 0.007299 0.208857 0.030677 + 1.433333 + 0.771082 -0.588653 -0.171897 0.171384 + 0.007299 0.208858 0.030677 + 1.466667 + 0.766477 -0.593066 -0.175565 0.173099 + 0.007299 0.208857 0.030677 + 1.500000 + 0.761828 -0.597445 -0.179223 0.174804 + 0.007299 0.208857 0.030677 + 1.533333 + 0.758991 -0.599887 -0.181176 0.176758 + 0.007299 0.208857 0.030677 + 1.566666 + 0.757836 -0.599886 -0.182641 0.180176 + 0.007299 0.208857 0.030677 + 1.600000 + 0.758057 -0.598421 -0.183129 0.183594 + 0.007299 0.208857 0.030677 + 1.633333 + -0.760854 0.595001 0.180687 -0.185546 + 0.007299 0.208857 0.030677 + 1.666666 + -0.765009 0.591354 0.176052 -0.184574 + 0.007299 0.208857 0.030677 + 1.700000 + -0.769124 0.587675 0.171408 -0.183592 + 0.007299 0.208857 0.030677 + 1.733333 + -0.769938 0.587187 0.169943 -0.183103 + 0.007299 0.208857 0.030677 + 1.766666 + -0.768343 0.589141 0.170920 -0.182615 + 0.007299 0.208857 0.030677 + 1.800000 + -0.767265 0.591584 0.170432 -0.179686 + 0.007299 0.208857 0.030677 + 1.833333 + -0.768812 0.591585 0.167503 -0.175779 + 0.007299 0.208857 0.030677 + 1.866666 + -0.774096 0.587189 0.162619 -0.171872 + 0.007299 0.208857 0.030677 + 1.899999 + -0.781557 0.578885 0.158711 -0.169918 + 0.007299 0.208857 0.030677 + 1.933333 + -0.787588 0.571069 0.157733 -0.169429 + 0.007299 0.208857 0.030677 + 1.966666 + -0.791456 0.565696 0.157732 -0.169428 + 0.007299 0.208857 0.030677 + 1.999999 + -0.793294 0.563253 0.157243 -0.169428 + 0.007299 0.208857 0.030677 + 2.033333 + -0.793340 0.563742 0.155778 -0.168939 + 0.007299 0.208857 0.030677 + 2.066666 + -0.791360 0.566673 0.156267 -0.167963 + 0.007299 0.208857 0.030677 + 2.099999 + -0.787908 0.571069 0.158221 -0.167475 + 0.007299 0.208857 0.030677 + 2.133333 + -0.783880 0.576443 0.158222 -0.167964 + 0.007299 0.208857 0.030677 + 2.166666 + -0.780552 0.581328 0.156270 -0.168453 + 0.007299 0.208858 0.030677 + 2.199999 + -0.777724 0.585236 0.155783 -0.168454 + 0.007299 0.208857 0.030677 + 2.233333 + -0.775597 0.587678 0.158224 -0.167478 + 0.007299 0.208857 0.030677 + 2.266666 + 0.774522 -0.588166 -0.161643 0.167478 + 0.007299 0.208857 0.030677 + 2.299999 + 0.774326 -0.587193 -0.164817 0.168699 + 0.007299 0.208857 0.030677 + 2.333333 + 0.774121 -0.586211 -0.167990 0.169919 + 0.007299 0.208857 0.030677 + 2.366666 + 0.771082 -0.588653 -0.171897 0.171385 + 0.007299 0.208857 0.030677 + 2.399999 + 0.766477 -0.593066 -0.175565 0.173099 + 0.007299 0.208857 0.030677 + 2.433332 + 0.761828 -0.597445 -0.179223 0.174804 + 0.007299 0.208857 0.030677 + 2.466666 + 0.758991 -0.599887 -0.181176 0.176758 + 0.007299 0.208857 0.030677 + 2.499999 + 0.757952 -0.599887 -0.182641 0.179687 + 0.007299 0.208857 0.030677 + 2.533332 + 0.758057 -0.598420 -0.183129 0.183593 + 0.007299 0.208857 0.030677 + 2.566666 + -0.760854 0.595001 0.180687 -0.185546 + 0.007299 0.208857 0.030677 + 2.599999 + -0.765151 0.591094 0.175804 -0.185057 + 0.007299 0.208857 0.030677 + 2.633332 + -0.768750 0.588164 0.171408 -0.183592 + 0.007299 0.208857 0.030676 + 2.666666 + -0.769565 0.587675 0.169943 -0.183103 + 0.007299 0.208857 0.030677 + 2.699999 + -0.768452 0.589141 0.170432 -0.182615 + 0.007299 0.208858 0.030677 + 2.733332 + -0.767527 0.591095 0.170432 -0.180174 + 0.007299 0.208857 0.030677 + 2.766665 + -0.769035 0.591584 0.167503 -0.174803 + 0.007299 0.208857 0.030677 + 2.799999 + "L_Arm_sjnt_0" + 85 + -0.131821 0.222491 -0.641938 -0.721829 + 0.070455 -0.150704 0.005819 + 0.000000 + -0.143059 0.208818 -0.639497 -0.725929 + 0.070455 -0.150703 0.005819 + 0.033333 + -0.158692 0.196123 -0.638035 -0.727505 + 0.070455 -0.150704 0.005819 + 0.066667 + -0.179701 0.185870 -0.631201 -0.731263 + 0.070455 -0.150704 0.005819 + 0.100000 + -0.203155 0.176593 -0.619971 -0.737007 + 0.070455 -0.150704 0.005819 + 0.133333 + -0.219280 0.166827 -0.611182 -0.741985 + 0.070455 -0.150703 0.005819 + 0.166667 + -0.223677 0.157550 -0.611182 -0.742700 + 0.070455 -0.150703 0.005820 + 0.200000 + -0.219766 0.152179 -0.618508 -0.738913 + 0.070455 -0.150703 0.005820 + 0.233333 + -0.212434 0.152667 -0.628765 -0.732270 + 0.070455 -0.150703 0.005819 + 0.266667 + -0.204612 0.159503 -0.640489 -0.722819 + 0.070455 -0.150703 0.005819 + 0.300000 + -0.199234 0.169269 -0.649770 -0.713760 + 0.070456 -0.150703 0.005820 + 0.333333 + -0.198742 0.178547 -0.655145 -0.706688 + 0.070455 -0.150704 0.005819 + 0.366667 + -0.198251 0.184895 -0.659542 -0.701081 + 0.070455 -0.150704 0.005819 + 0.400000 + 0.188478 -0.188802 0.665891 0.696721 + 0.070455 -0.150704 0.005819 + 0.433333 + 0.166981 -0.194172 0.673701 0.693211 + 0.070455 -0.150704 0.005819 + 0.466667 + 0.138155 -0.202961 0.680044 0.690840 + 0.070455 -0.150703 0.005820 + 0.500000 + 0.108354 -0.213702 0.682967 0.690034 + 0.070455 -0.150704 0.005819 + 0.533333 + 0.083441 -0.224444 0.681495 0.691540 + 0.070455 -0.150704 0.005819 + 0.566667 + 0.064390 -0.232256 0.677581 0.694835 + 0.070455 -0.150703 0.005820 + 0.600000 + 0.052178 -0.236651 0.675135 0.696755 + 0.070455 -0.150703 0.005819 + 0.633333 + 0.046316 -0.236162 0.674645 0.697809 + 0.070455 -0.150703 0.005820 + 0.666667 + 0.044361 -0.230303 0.676598 0.698003 + 0.070455 -0.150704 0.005819 + 0.700000 + -0.042409 0.219092 -0.683253 -0.695245 + 0.070455 -0.150703 0.005819 + 0.733334 + -0.040449 0.207841 -0.689785 -0.692361 + 0.070455 -0.150703 0.005819 + 0.766667 + -0.048753 0.206377 -0.690276 -0.691774 + 0.070455 -0.150704 0.005819 + 0.800000 + -0.070252 0.216143 -0.681001 -0.696122 + 0.070455 -0.150704 0.005819 + 0.833334 + -0.097126 0.227374 -0.664889 -0.704834 + 0.070455 -0.150704 0.005819 + 0.866667 + -0.118628 0.230303 -0.649751 -0.714641 + 0.070456 -0.150703 0.005820 + 0.900000 + -0.132310 0.222490 -0.641449 -0.722174 + 0.070455 -0.150703 0.005820 + 0.933334 + -0.143059 0.208818 -0.639497 -0.725929 + 0.070455 -0.150703 0.005819 + 0.966667 + -0.157715 0.196123 -0.638523 -0.727290 + 0.070455 -0.150704 0.005819 + 1.000000 + -0.179701 0.185870 -0.631689 -0.730841 + 0.070455 -0.150703 0.005820 + 1.033334 + -0.203155 0.176593 -0.619971 -0.737007 + 0.070455 -0.150704 0.005820 + 1.066667 + -0.219280 0.166827 -0.611182 -0.741985 + 0.070455 -0.150704 0.005819 + 1.100000 + -0.223188 0.157550 -0.611182 -0.742847 + 0.070455 -0.150704 0.005819 + 1.133334 + -0.219766 0.152179 -0.618508 -0.738913 + 0.070455 -0.150703 0.005820 + 1.166667 + -0.212433 0.152667 -0.628766 -0.732270 + 0.070455 -0.150704 0.005819 + 1.200000 + -0.204612 0.159503 -0.640489 -0.722819 + 0.070455 -0.150703 0.005819 + 1.233333 + -0.199234 0.169269 -0.649770 -0.713760 + 0.070455 -0.150703 0.005819 + 1.266667 + -0.198742 0.178547 -0.655145 -0.706688 + 0.070455 -0.150703 0.005820 + 1.300000 + -0.198252 0.184895 -0.659542 -0.701081 + 0.070455 -0.150703 0.005819 + 1.333333 + 0.188478 -0.188802 0.665891 0.696721 + 0.070455 -0.150704 0.005819 + 1.366667 + 0.166981 -0.194172 0.673701 0.693211 + 0.070455 -0.150703 0.005819 + 1.400000 + 0.138155 -0.202961 0.680044 0.690840 + 0.070455 -0.150704 0.005820 + 1.433333 + 0.108355 -0.213702 0.682967 0.690034 + 0.070456 -0.150704 0.005820 + 1.466667 + 0.083441 -0.224444 0.681494 0.691540 + 0.070456 -0.150704 0.005819 + 1.500000 + 0.064390 -0.232256 0.677581 0.694835 + 0.070456 -0.150703 0.005820 + 1.533333 + 0.052178 -0.236651 0.675135 0.696755 + 0.070455 -0.150704 0.005820 + 1.566666 + 0.046316 -0.236162 0.674645 0.697809 + 0.070456 -0.150704 0.005820 + 1.600000 + 0.044361 -0.230303 0.676597 0.698003 + 0.070456 -0.150703 0.005819 + 1.633333 + -0.042409 0.219092 -0.683253 -0.695245 + 0.070455 -0.150703 0.005819 + 1.666666 + -0.040449 0.207842 -0.689785 -0.692361 + 0.070455 -0.150703 0.005819 + 1.700000 + -0.048753 0.206377 -0.690276 -0.691774 + 0.070456 -0.150704 0.005820 + 1.733333 + -0.070251 0.216143 -0.681001 -0.696121 + 0.070455 -0.150704 0.005819 + 1.766666 + -0.097126 0.227373 -0.664889 -0.704834 + 0.070455 -0.150703 0.005819 + 1.800000 + -0.118627 0.230303 -0.649751 -0.714641 + 0.070456 -0.150703 0.005819 + 1.833333 + -0.132310 0.222491 -0.641449 -0.722174 + 0.070456 -0.150703 0.005820 + 1.866666 + -0.143058 0.208819 -0.639497 -0.725929 + 0.070455 -0.150703 0.005819 + 1.899999 + -0.157715 0.196123 -0.638523 -0.727290 + 0.070455 -0.150703 0.005820 + 1.933333 + -0.179701 0.185870 -0.631690 -0.730841 + 0.070455 -0.150703 0.005819 + 1.966666 + -0.203154 0.176593 -0.619971 -0.737007 + 0.070456 -0.150704 0.005819 + 1.999999 + -0.219279 0.166827 -0.611182 -0.741986 + 0.070456 -0.150704 0.005819 + 2.033333 + -0.223188 0.157550 -0.611182 -0.742847 + 0.070455 -0.150703 0.005820 + 2.066666 + -0.219766 0.152179 -0.618508 -0.738913 + 0.070456 -0.150704 0.005819 + 2.099999 + -0.212434 0.152667 -0.628765 -0.732270 + 0.070456 -0.150703 0.005820 + 2.133333 + -0.204612 0.159503 -0.640488 -0.722819 + 0.070455 -0.150704 0.005819 + 2.166666 + -0.199234 0.169269 -0.649770 -0.713760 + 0.070455 -0.150704 0.005819 + 2.199999 + -0.198742 0.178547 -0.655145 -0.706688 + 0.070456 -0.150704 0.005819 + 2.233333 + -0.198252 0.184895 -0.659542 -0.701081 + 0.070456 -0.150704 0.005820 + 2.266666 + 0.188479 -0.188801 0.665891 0.696721 + 0.070455 -0.150703 0.005819 + 2.299999 + 0.166981 -0.194172 0.673701 0.693211 + 0.070456 -0.150703 0.005820 + 2.333333 + 0.138156 -0.202960 0.680044 0.690841 + 0.070456 -0.150703 0.005819 + 2.366666 + 0.108355 -0.213702 0.682967 0.690034 + 0.070456 -0.150703 0.005820 + 2.399999 + 0.082953 -0.224444 0.681495 0.691599 + 0.070455 -0.150704 0.005820 + 2.433332 + 0.064390 -0.232256 0.677581 0.694835 + 0.070455 -0.150704 0.005819 + 2.466666 + 0.052178 -0.236651 0.675135 0.696755 + 0.070455 -0.150703 0.005820 + 2.499999 + 0.046316 -0.236162 0.674156 0.698281 + 0.070455 -0.150704 0.005819 + 2.533332 + 0.044362 -0.230303 0.676597 0.698003 + 0.070455 -0.150704 0.005819 + 2.566666 + -0.041428 0.218584 -0.682946 -0.695765 + 0.070456 -0.150703 0.005819 + 2.599999 + -0.039960 0.207842 -0.689784 -0.692389 + 0.070456 -0.150703 0.005819 + 2.633332 + -0.048753 0.206377 -0.690276 -0.691774 + 0.070455 -0.150703 0.005819 + 2.666666 + -0.070251 0.216142 -0.680513 -0.696599 + 0.070456 -0.150703 0.005820 + 2.699999 + -0.096637 0.226885 -0.664889 -0.705059 + 0.070455 -0.150703 0.005819 + 2.733332 + -0.119115 0.230303 -0.650240 -0.714115 + 0.070455 -0.150703 0.005819 + 2.766665 + -0.131820 0.222491 -0.641938 -0.721829 + 0.070456 -0.150704 0.005819 + 2.799999 + "L_Arm_sjnt_1" + 85 + 0.295580 -0.012448 -0.055640 0.953615 + -0.000001 -0.260631 -0.000000 + 0.000000 + 0.327818 0.016122 -0.054900 0.943007 + -0.000001 -0.260631 -0.000000 + 0.033333 + 0.356640 0.020033 -0.056108 0.932340 + -0.000001 -0.260631 -0.000000 + 0.066667 + 0.383023 0.013323 -0.059024 0.921755 + -0.000001 -0.260631 -0.000000 + 0.100000 + 0.406475 0.003987 -0.062428 0.911518 + -0.000001 -0.260631 -0.000001 + 0.133333 + 0.426995 -0.002236 -0.065346 0.901887 + -0.000001 -0.260631 -0.000000 + 0.166667 + 0.442629 -0.005957 -0.067779 0.894120 + -0.000001 -0.260631 -0.000000 + 0.200000 + 0.449958 -0.008275 -0.069240 0.890323 + -0.000001 -0.260631 -0.000000 + 0.233333 + 0.446049 -0.007544 -0.068754 0.892332 + -0.000001 -0.260631 -0.000001 + 0.266667 + 0.429926 -0.003273 -0.065833 0.900455 + -0.000001 -0.260631 -0.000000 + 0.300000 + 0.403056 0.000050 -0.062429 0.913043 + -0.000001 -0.260631 -0.000000 + 0.333333 + 0.369836 -0.002946 -0.060002 0.927153 + -0.000001 -0.260631 -0.000000 + 0.366667 + 0.337105 -0.010855 -0.058551 0.939582 + -0.000001 -0.260631 -0.000001 + 0.400000 + 0.313657 -0.016596 -0.057584 0.947643 + -0.000001 -0.260631 -0.000000 + 0.433333 + 0.305352 -0.016353 -0.056611 0.950415 + -0.000001 -0.260631 -0.000000 + 0.466667 + 0.312679 -0.012933 -0.056365 0.948097 + -0.000001 -0.260631 -0.000000 + 0.500000 + 0.328311 -0.010612 -0.057090 0.942783 + -0.000001 -0.260631 -0.000000 + 0.533333 + 0.340525 -0.009267 -0.058550 0.938365 + -0.000001 -0.260631 -0.000000 + 0.566667 + 0.341502 -0.007436 -0.059282 0.937980 + -0.000001 -0.260631 -0.000000 + 0.600000 + 0.326845 -0.005058 -0.058069 0.943279 + -0.000001 -0.260631 -0.000000 + 0.633333 + 0.296067 -0.004147 -0.055398 0.953550 + -0.000001 -0.260631 -0.000000 + 0.666667 + 0.255030 -0.007265 -0.051754 0.965520 + -0.000001 -0.260631 -0.000000 + 0.700000 + 0.214483 -0.016853 -0.048352 0.975385 + -0.000001 -0.260631 -0.000000 + 0.733334 + 0.187616 -0.032726 -0.045431 0.980645 + -0.000001 -0.260631 -0.000000 + 0.766667 + 0.182244 -0.049328 -0.044452 0.981009 + -0.000001 -0.260631 -0.000000 + 0.800000 + 0.198368 -0.057138 -0.046396 0.977360 + -0.000001 -0.260631 -0.000000 + 0.833334 + 0.228168 -0.050787 -0.050291 0.970995 + -0.000001 -0.260631 -0.000001 + 0.866667 + 0.262363 -0.031007 -0.053698 0.962975 + -0.000001 -0.260631 -0.000000 + 0.900000 + 0.296068 -0.005245 -0.054910 0.953573 + -0.000001 -0.260631 -0.000000 + 0.933334 + 0.327819 0.014413 -0.055144 0.943020 + -0.000001 -0.260631 -0.000000 + 0.966667 + 0.356641 0.020033 -0.056108 0.932340 + -0.000001 -0.260631 -0.000000 + 1.000000 + 0.383023 0.013689 -0.059024 0.921749 + -0.000001 -0.260631 -0.000000 + 1.033334 + 0.406475 0.004109 -0.062428 0.911517 + -0.000001 -0.260631 -0.000000 + 1.066667 + 0.426995 -0.002358 -0.065346 0.901887 + -0.000001 -0.260631 -0.000000 + 1.100000 + 0.442629 -0.006079 -0.067779 0.894119 + -0.000001 -0.260631 -0.000000 + 1.133334 + 0.449958 -0.008276 -0.069240 0.890323 + -0.000001 -0.260631 -0.000000 + 1.166667 + 0.446049 -0.007544 -0.068754 0.892332 + -0.000001 -0.260631 -0.000000 + 1.200000 + 0.429926 -0.003242 -0.065833 0.900455 + -0.000001 -0.260631 -0.000000 + 1.233333 + 0.403056 0.000050 -0.062429 0.913043 + -0.000001 -0.260631 -0.000000 + 1.266667 + 0.369836 -0.002946 -0.060002 0.927153 + -0.000001 -0.260631 -0.000001 + 1.300000 + 0.337105 -0.010855 -0.058551 0.939582 + -0.000001 -0.260631 -0.000000 + 1.333333 + 0.313657 -0.016596 -0.057584 0.947643 + -0.000001 -0.260631 -0.000000 + 1.366667 + 0.305352 -0.016353 -0.056611 0.950415 + -0.000001 -0.260631 -0.000000 + 1.400000 + 0.312679 -0.012933 -0.056365 0.948097 + -0.000001 -0.260631 -0.000000 + 1.433333 + 0.328311 -0.010612 -0.057090 0.942783 + -0.000001 -0.260631 -0.000000 + 1.466667 + 0.340525 -0.009267 -0.058550 0.938365 + -0.000001 -0.260631 -0.000001 + 1.500000 + 0.341502 -0.007436 -0.059282 0.937980 + -0.000001 -0.260631 -0.000000 + 1.533333 + 0.326846 -0.005058 -0.058069 0.943278 + -0.000001 -0.260631 -0.000000 + 1.566666 + 0.296068 -0.004147 -0.055398 0.953550 + -0.000001 -0.260631 -0.000000 + 1.600000 + 0.255031 -0.007265 -0.051754 0.965520 + -0.000001 -0.260631 0.000000 + 1.633333 + 0.214484 -0.016853 -0.048352 0.975384 + -0.000001 -0.260631 -0.000001 + 1.666666 + 0.187616 -0.032726 -0.045431 0.980645 + -0.000001 -0.260631 0.000000 + 1.700000 + 0.182244 -0.049328 -0.044452 0.981009 + -0.000001 -0.260631 -0.000001 + 1.733333 + 0.198367 -0.057138 -0.046396 0.977360 + -0.000001 -0.260631 -0.000000 + 1.766666 + 0.228168 -0.050787 -0.050291 0.970995 + -0.000001 -0.260631 -0.000000 + 1.800000 + 0.262362 -0.031007 -0.053698 0.962975 + -0.000001 -0.260631 -0.000000 + 1.833333 + 0.296067 -0.005246 -0.054910 0.953573 + -0.000001 -0.260631 -0.000000 + 1.866666 + 0.327818 0.014413 -0.055144 0.943020 + -0.000001 -0.260631 -0.000000 + 1.899999 + 0.356640 0.020033 -0.056108 0.932340 + -0.000001 -0.260631 -0.000000 + 1.933333 + 0.383022 0.013689 -0.059024 0.921750 + -0.000001 -0.260631 -0.000000 + 1.966666 + 0.406474 0.004109 -0.062428 0.911518 + -0.000001 -0.260631 -0.000000 + 1.999999 + 0.426994 -0.002358 -0.065346 0.901887 + -0.000001 -0.260631 -0.000001 + 2.033333 + 0.442629 -0.006079 -0.067779 0.894119 + -0.000001 -0.260631 -0.000000 + 2.066666 + 0.449958 -0.008275 -0.069240 0.890323 + -0.000001 -0.260631 -0.000000 + 2.099999 + 0.446049 -0.007544 -0.068754 0.892332 + -0.000001 -0.260631 -0.000001 + 2.133333 + 0.429927 -0.003243 -0.065833 0.900455 + -0.000002 -0.260631 0.000000 + 2.166666 + 0.403056 0.000050 -0.062429 0.913043 + -0.000001 -0.260631 0.000000 + 2.199999 + 0.369836 -0.002946 -0.060002 0.927153 + -0.000001 -0.260631 -0.000000 + 2.233333 + 0.337106 -0.010855 -0.058551 0.939581 + -0.000001 -0.260631 -0.000001 + 2.266666 + 0.313658 -0.016595 -0.057584 0.947643 + -0.000001 -0.260631 0.000000 + 2.299999 + 0.305352 -0.016353 -0.056611 0.950415 + -0.000001 -0.260631 -0.000001 + 2.333333 + 0.312679 -0.012933 -0.056365 0.948097 + -0.000001 -0.260631 -0.000001 + 2.366666 + 0.328311 -0.010490 -0.057090 0.942784 + -0.000001 -0.260631 -0.000000 + 2.399999 + 0.340524 -0.009267 -0.058550 0.938365 + -0.000001 -0.260631 -0.000001 + 2.433332 + 0.341502 -0.007497 -0.059282 0.937980 + -0.000001 -0.260631 -0.000001 + 2.466666 + 0.326846 -0.005119 -0.058313 0.943263 + -0.000001 -0.260631 -0.000000 + 2.499999 + 0.296069 -0.004086 -0.055398 0.953550 + -0.000001 -0.260631 -0.000000 + 2.533332 + 0.255032 -0.007082 -0.051754 0.965521 + -0.000001 -0.260631 -0.000000 + 2.566666 + 0.214485 -0.017097 -0.048352 0.975380 + -0.000001 -0.260631 -0.000000 + 2.599999 + 0.187129 -0.033214 -0.045431 0.980722 + -0.000001 -0.260631 -0.000000 + 2.633332 + 0.182245 -0.049816 -0.044452 0.980984 + -0.000001 -0.260631 -0.000001 + 2.666666 + 0.198367 -0.056162 -0.046396 0.977417 + -0.000001 -0.260632 -0.000000 + 2.699999 + 0.228167 -0.049323 -0.050291 0.971070 + -0.000001 -0.260631 0.000000 + 2.733332 + 0.261873 -0.032717 -0.053698 0.963052 + -0.000001 -0.260631 0.000000 + 2.766665 + 0.295579 -0.012449 -0.055640 0.953615 + -0.000001 -0.260631 -0.000000 + 2.799999 + "L_Wrist_sjnt_0" + 85 + -0.005086 0.125501 -0.185093 0.974661 + 0.000007 -0.242273 0.000002 + 0.000000 + 0.010416 0.128437 -0.184110 0.974422 + 0.000007 -0.242273 0.000002 + 0.033333 + 0.000879 0.126481 -0.182649 0.975008 + 0.000007 -0.242273 0.000002 + 0.066667 + -0.003924 0.125012 -0.188510 0.974074 + 0.000007 -0.242273 0.000002 + 0.100000 + 0.002639 0.125990 -0.194367 0.972801 + 0.000007 -0.242273 0.000002 + 0.133333 + 0.025189 0.130881 -0.191429 0.972415 + 0.000007 -0.242273 0.000002 + 0.166667 + 0.046428 0.134795 -0.192398 0.970906 + 0.000007 -0.242273 0.000002 + 0.200000 + 0.036670 0.132834 -0.208027 0.968367 + 0.000007 -0.242273 0.000002 + 0.233333 + 0.034721 0.132342 -0.219746 0.965915 + 0.000007 -0.242273 0.000002 + 0.266667 + 0.020807 0.129667 -0.215381 0.967659 + 0.000007 -0.242273 0.000002 + 0.300000 + 0.006887 0.126963 -0.210967 0.969188 + 0.000007 -0.242273 0.000002 + 0.333333 + 0.007860 0.127454 -0.202178 0.970988 + 0.000007 -0.242273 0.000002 + 0.366667 + -0.003590 0.125990 -0.186557 0.974326 + 0.000007 -0.242273 0.000002 + 0.400000 + -0.009972 0.125014 -0.176305 0.976314 + 0.000007 -0.242273 0.000002 + 0.433333 + -0.011803 0.124525 -0.175818 0.976444 + 0.000007 -0.242274 0.000002 + 0.466667 + -0.022668 0.122569 -0.171427 0.977280 + 0.000007 -0.242273 0.000002 + 0.500000 + -0.019250 0.123546 -0.173379 0.976886 + 0.000006 -0.242273 0.000002 + 0.533333 + -0.010978 0.124775 -0.178512 0.975932 + 0.000007 -0.242273 0.000002 + 0.566667 + -0.002706 0.125991 -0.183627 0.974885 + 0.000007 -0.242273 0.000002 + 0.600000 + -0.002552 0.125990 -0.186068 0.974422 + 0.000007 -0.242273 0.000002 + 0.633333 + -0.002523 0.125991 -0.182650 0.975069 + 0.000007 -0.242273 0.000002 + 0.666667 + -0.018757 0.123055 -0.185097 0.974805 + 0.000007 -0.242273 0.000002 + 0.700000 + -0.048298 0.117674 -0.182666 0.974912 + 0.000007 -0.242273 0.000002 + 0.733334 + -0.066366 0.114740 -0.176814 0.975278 + 0.000007 -0.242273 0.000002 + 0.766667 + -0.067344 0.115229 -0.172908 0.975854 + 0.000007 -0.242273 0.000002 + 0.800000 + -0.069300 0.115719 -0.164120 0.977175 + 0.000006 -0.242273 0.000002 + 0.833334 + -0.066372 0.116698 -0.161189 0.977750 + 0.000007 -0.242273 0.000002 + 0.866667 + -0.042932 0.119633 -0.169970 0.977218 + 0.000007 -0.242273 0.000002 + 0.900000 + -0.005085 0.125501 -0.185093 0.974661 + 0.000007 -0.242273 0.000002 + 0.933334 + 0.010416 0.128437 -0.184111 0.974422 + 0.000006 -0.242274 0.000002 + 0.966667 + 0.000879 0.126481 -0.182649 0.975008 + 0.000007 -0.242273 0.000002 + 1.000000 + -0.003924 0.125012 -0.188510 0.974074 + 0.000007 -0.242274 0.000002 + 1.033334 + 0.002639 0.125990 -0.194367 0.972801 + 0.000006 -0.242273 0.000002 + 1.066667 + 0.025189 0.130882 -0.191429 0.972415 + 0.000006 -0.242273 0.000002 + 1.100000 + 0.046428 0.134795 -0.192398 0.970906 + 0.000006 -0.242273 0.000002 + 1.133334 + 0.036670 0.132834 -0.208027 0.968367 + 0.000007 -0.242273 0.000002 + 1.166667 + 0.034721 0.132342 -0.219746 0.965915 + 0.000007 -0.242273 0.000002 + 1.200000 + 0.020807 0.129667 -0.215381 0.967659 + 0.000007 -0.242273 0.000002 + 1.233333 + 0.006887 0.126963 -0.210967 0.969188 + 0.000007 -0.242273 0.000002 + 1.266667 + 0.007860 0.127454 -0.202178 0.970988 + 0.000007 -0.242273 0.000002 + 1.300000 + -0.003590 0.125990 -0.186557 0.974326 + 0.000006 -0.242274 0.000002 + 1.333333 + -0.009972 0.125014 -0.176305 0.976314 + 0.000006 -0.242274 0.000002 + 1.366667 + -0.011803 0.124525 -0.175818 0.976444 + 0.000006 -0.242273 0.000002 + 1.400000 + -0.022668 0.122569 -0.171427 0.977280 + 0.000006 -0.242273 0.000002 + 1.433333 + -0.019250 0.123546 -0.173379 0.976886 + 0.000007 -0.242273 0.000002 + 1.466667 + -0.010979 0.124775 -0.178512 0.975932 + 0.000007 -0.242274 0.000002 + 1.500000 + -0.002706 0.125991 -0.183627 0.974885 + 0.000006 -0.242273 0.000002 + 1.533333 + -0.002552 0.125990 -0.186068 0.974422 + 0.000007 -0.242273 0.000002 + 1.566666 + -0.002523 0.125991 -0.182650 0.975069 + 0.000006 -0.242273 0.000002 + 1.600000 + -0.018757 0.123055 -0.185097 0.974805 + 0.000007 -0.242273 0.000002 + 1.633333 + -0.048297 0.117674 -0.182666 0.974912 + 0.000006 -0.242273 0.000003 + 1.666666 + -0.066365 0.114740 -0.176814 0.975278 + 0.000007 -0.242274 0.000002 + 1.700000 + -0.067344 0.115229 -0.172908 0.975854 + 0.000006 -0.242273 0.000002 + 1.733333 + -0.069300 0.115719 -0.164120 0.977175 + 0.000006 -0.242274 0.000002 + 1.766666 + -0.066372 0.116698 -0.161189 0.977750 + 0.000006 -0.242273 0.000002 + 1.800000 + -0.042932 0.119633 -0.169969 0.977218 + 0.000007 -0.242273 0.000002 + 1.833333 + -0.005086 0.125501 -0.185092 0.974661 + 0.000007 -0.242273 0.000002 + 1.866666 + 0.010416 0.128437 -0.184110 0.974422 + 0.000007 -0.242274 0.000002 + 1.899999 + 0.000879 0.126481 -0.182649 0.975008 + 0.000006 -0.242273 0.000002 + 1.933333 + -0.003924 0.125012 -0.188510 0.974074 + 0.000006 -0.242273 0.000002 + 1.966666 + 0.002639 0.125990 -0.194367 0.972801 + 0.000007 -0.242273 0.000002 + 1.999999 + 0.025188 0.130881 -0.191429 0.972415 + 0.000006 -0.242274 0.000003 + 2.033333 + 0.046428 0.134795 -0.192398 0.970906 + 0.000006 -0.242274 0.000002 + 2.066666 + 0.036670 0.132834 -0.208026 0.968368 + 0.000007 -0.242274 0.000002 + 2.099999 + 0.034721 0.132342 -0.219746 0.965915 + 0.000006 -0.242273 0.000002 + 2.133333 + 0.020807 0.129667 -0.215381 0.967659 + 0.000007 -0.242273 0.000002 + 2.166666 + 0.006888 0.126964 -0.210967 0.969188 + 0.000006 -0.242273 0.000002 + 2.199999 + 0.007860 0.127455 -0.202178 0.970988 + 0.000007 -0.242273 0.000002 + 2.233333 + -0.003589 0.125990 -0.186557 0.974326 + 0.000007 -0.242273 0.000003 + 2.266666 + -0.009972 0.125014 -0.176306 0.976314 + 0.000006 -0.242273 0.000003 + 2.299999 + -0.011803 0.124525 -0.175818 0.976444 + 0.000006 -0.242273 0.000002 + 2.333333 + -0.022668 0.122569 -0.171427 0.977280 + 0.000007 -0.242273 0.000002 + 2.366666 + -0.019250 0.123546 -0.173379 0.976886 + 0.000007 -0.242273 0.000002 + 2.399999 + -0.010979 0.124775 -0.178511 0.975933 + 0.000007 -0.242273 0.000002 + 2.433332 + -0.002706 0.125991 -0.183627 0.974885 + 0.000007 -0.242273 0.000003 + 2.466666 + -0.002552 0.125990 -0.186068 0.974422 + 0.000007 -0.242273 0.000002 + 2.499999 + -0.002523 0.125991 -0.182650 0.975069 + 0.000007 -0.242274 0.000003 + 2.533332 + -0.018756 0.123055 -0.185097 0.974805 + 0.000007 -0.242273 0.000002 + 2.566666 + -0.048296 0.117674 -0.182667 0.974912 + 0.000006 -0.242274 0.000003 + 2.599999 + -0.066365 0.114740 -0.176814 0.975278 + 0.000007 -0.242273 0.000002 + 2.633332 + -0.067344 0.115229 -0.172908 0.975854 + 0.000006 -0.242273 0.000002 + 2.666666 + -0.069300 0.115719 -0.164120 0.977175 + 0.000007 -0.242274 0.000002 + 2.699999 + -0.066372 0.116698 -0.161189 0.977750 + 0.000007 -0.242273 0.000003 + 2.733332 + -0.042933 0.119633 -0.169969 0.977218 + 0.000007 -0.242273 0.000002 + 2.766665 + -0.005087 0.125501 -0.185092 0.974661 + 0.000006 -0.242273 0.000002 + 2.799999 + "R_Clavicle_sjnt_0" + 85 + -0.144520 -0.139575 0.571095 0.795917 + -0.007299 0.208857 0.030677 + 0.000000 + -0.144033 -0.143482 0.575003 0.792489 + -0.007299 0.208857 0.030677 + 0.033333 + -0.143058 -0.148366 0.582818 0.786031 + -0.007299 0.208857 0.030677 + 0.066667 + -0.142084 -0.153739 0.591611 0.778571 + -0.007299 0.208857 0.030677 + 0.100000 + -0.142087 -0.159112 0.599426 0.771481 + -0.007299 0.208857 0.030677 + 0.133333 + -0.143553 -0.164483 0.601380 0.768557 + -0.007299 0.208857 0.030677 + 0.166667 + -0.146971 -0.170343 0.599424 0.768162 + -0.007299 0.208857 0.030677 + 0.200000 + -0.148436 -0.174737 0.597958 0.768037 + -0.007299 0.208857 0.030677 + 0.233333 + -0.147948 -0.175714 0.599424 0.766764 + -0.007299 0.208857 0.030677 + 0.266667 + -0.147948 -0.173273 0.601378 0.765789 + -0.007299 0.208857 0.030677 + 0.300000 + -0.148924 -0.168877 0.598447 0.768872 + -0.007299 0.208857 0.030677 + 0.333333 + -0.149410 -0.165458 0.592586 0.774043 + -0.007299 0.208857 0.030677 + 0.366667 + -0.148432 -0.163992 0.588189 0.777887 + -0.007299 0.208857 0.030677 + 0.400000 + -0.146235 -0.162040 0.587949 0.778893 + -0.007299 0.208857 0.030677 + 0.433333 + -0.144037 -0.160086 0.587702 0.779893 + -0.007299 0.208857 0.030677 + 0.466667 + -0.144036 -0.157155 0.582329 0.784506 + -0.007299 0.208857 0.030677 + 0.500000 + -0.144779 -0.153505 0.572123 0.792560 + -0.007299 0.208857 0.030677 + 0.533333 + -0.145495 -0.149827 0.561812 0.800469 + -0.007299 0.208857 0.030677 + 0.566667 + -0.145493 -0.145431 0.556439 0.805020 + -0.007299 0.208857 0.030677 + 0.600000 + -0.145004 -0.140060 0.553998 0.807740 + -0.007299 0.208857 0.030677 + 0.633333 + -0.145492 -0.136642 0.553998 0.808237 + -0.007299 0.208857 0.030677 + 0.666667 + -0.147205 -0.135668 0.558403 0.805053 + -0.007299 0.208857 0.030677 + 0.700000 + -0.148912 -0.134690 0.562790 0.801842 + -0.007299 0.208857 0.030677 + 0.733334 + -0.148912 -0.133714 0.564256 0.800975 + -0.007299 0.208857 0.030677 + 0.766667 + -0.148424 -0.132737 0.562791 0.802258 + -0.007299 0.208857 0.030677 + 0.800000 + -0.148912 -0.132736 0.561325 0.803194 + -0.007299 0.208857 0.030677 + 0.833334 + -0.148912 -0.134690 0.563767 0.801156 + -0.007299 0.208857 0.030677 + 0.866667 + -0.146962 -0.137134 0.567440 0.798504 + -0.007299 0.208857 0.030677 + 0.900000 + -0.145008 -0.139575 0.571095 0.795828 + -0.007299 0.208857 0.030677 + 0.933334 + -0.143545 -0.143482 0.575491 0.792224 + -0.007299 0.208857 0.030677 + 0.966667 + -0.143058 -0.148366 0.582330 0.786393 + -0.007299 0.208857 0.030677 + 1.000000 + -0.142084 -0.153739 0.591611 0.778571 + -0.007299 0.208857 0.030677 + 1.033334 + -0.142087 -0.159112 0.599427 0.771481 + -0.007299 0.208857 0.030677 + 1.066667 + -0.143553 -0.164484 0.601380 0.768557 + -0.007299 0.208857 0.030677 + 1.100000 + -0.146971 -0.170342 0.599425 0.768162 + -0.007299 0.208857 0.030677 + 1.133334 + -0.148436 -0.174737 0.597958 0.768036 + -0.007299 0.208857 0.030677 + 1.166667 + -0.147948 -0.175714 0.599424 0.766764 + -0.007299 0.208857 0.030677 + 1.200000 + -0.147948 -0.173273 0.601378 0.765789 + -0.007299 0.208857 0.030677 + 1.233333 + -0.148924 -0.168877 0.598447 0.768872 + -0.007299 0.208857 0.030677 + 1.266667 + -0.149410 -0.165458 0.592586 0.774043 + -0.007299 0.208857 0.030677 + 1.300000 + -0.148432 -0.163992 0.588189 0.777887 + -0.007299 0.208857 0.030677 + 1.333333 + -0.146235 -0.162040 0.587949 0.778893 + -0.007299 0.208857 0.030677 + 1.366667 + -0.144037 -0.160086 0.587702 0.779893 + -0.007299 0.208857 0.030677 + 1.400000 + -0.144036 -0.157155 0.582329 0.784506 + -0.007299 0.208857 0.030677 + 1.433333 + -0.144779 -0.153505 0.572123 0.792560 + -0.007299 0.208857 0.030677 + 1.466667 + -0.145495 -0.149827 0.561812 0.800469 + -0.007299 0.208857 0.030677 + 1.500000 + -0.145493 -0.145431 0.556439 0.805020 + -0.007299 0.208857 0.030677 + 1.533333 + -0.145004 -0.140060 0.553998 0.807740 + -0.007299 0.208857 0.030677 + 1.566666 + -0.145492 -0.136642 0.553998 0.808237 + -0.007299 0.208857 0.030677 + 1.600000 + -0.147205 -0.135668 0.558403 0.805054 + -0.007299 0.208857 0.030677 + 1.633333 + -0.148912 -0.134690 0.562790 0.801842 + -0.007299 0.208857 0.030677 + 1.666666 + -0.148912 -0.133714 0.564256 0.800975 + -0.007299 0.208857 0.030677 + 1.700000 + -0.148424 -0.132737 0.562791 0.802258 + -0.007299 0.208857 0.030677 + 1.733333 + -0.148912 -0.132736 0.561325 0.803194 + -0.007299 0.208857 0.030677 + 1.766666 + -0.148912 -0.134690 0.563767 0.801156 + -0.007299 0.208857 0.030677 + 1.800000 + -0.146963 -0.137134 0.567440 0.798504 + -0.007299 0.208857 0.030677 + 1.833333 + -0.145008 -0.139575 0.571095 0.795828 + -0.007299 0.208858 0.030677 + 1.866666 + -0.143545 -0.143482 0.575491 0.792224 + -0.007299 0.208857 0.030677 + 1.899999 + -0.143058 -0.148366 0.582330 0.786393 + -0.007299 0.208857 0.030677 + 1.933333 + -0.142084 -0.153739 0.591611 0.778571 + -0.007299 0.208857 0.030677 + 1.966666 + -0.142087 -0.159112 0.599426 0.771481 + -0.007299 0.208857 0.030677 + 1.999999 + -0.143553 -0.164483 0.601379 0.768558 + -0.007299 0.208857 0.030677 + 2.033333 + -0.146971 -0.170342 0.599425 0.768162 + -0.007299 0.208857 0.030677 + 2.066666 + -0.148436 -0.174737 0.597958 0.768037 + -0.007299 0.208857 0.030677 + 2.099999 + -0.147948 -0.175714 0.599424 0.766764 + -0.007299 0.208857 0.030677 + 2.133333 + -0.147948 -0.173273 0.601378 0.765789 + -0.007299 0.208858 0.030676 + 2.166666 + -0.148923 -0.168877 0.598447 0.768871 + -0.007299 0.208857 0.030677 + 2.199999 + -0.149410 -0.165458 0.592586 0.774043 + -0.007299 0.208857 0.030677 + 2.233333 + -0.148432 -0.163992 0.588190 0.777887 + -0.007299 0.208857 0.030677 + 2.266666 + -0.146235 -0.162040 0.587949 0.778893 + -0.007299 0.208857 0.030677 + 2.299999 + -0.144037 -0.160086 0.587702 0.779893 + -0.007299 0.208857 0.030677 + 2.333333 + -0.144036 -0.157155 0.582329 0.784506 + -0.007299 0.208857 0.030678 + 2.366666 + -0.144779 -0.153505 0.572123 0.792560 + -0.007299 0.208857 0.030677 + 2.399999 + -0.145495 -0.149827 0.561813 0.800469 + -0.007299 0.208858 0.030677 + 2.433332 + -0.145493 -0.145431 0.556440 0.805020 + -0.007299 0.208857 0.030677 + 2.466666 + -0.145004 -0.140060 0.553998 0.807740 + -0.007299 0.208858 0.030677 + 2.499999 + -0.145492 -0.136642 0.553998 0.808237 + -0.007299 0.208857 0.030677 + 2.533332 + -0.147446 -0.135177 0.557905 0.805437 + -0.007299 0.208857 0.030677 + 2.566666 + -0.148912 -0.134690 0.562790 0.801843 + -0.007299 0.208857 0.030677 + 2.599999 + -0.148913 -0.133714 0.564744 0.800631 + -0.007299 0.208857 0.030677 + 2.633332 + -0.148424 -0.132737 0.562791 0.802258 + -0.007299 0.208857 0.030677 + 2.666666 + -0.148912 -0.132736 0.561325 0.803194 + -0.007299 0.208857 0.030677 + 2.699999 + -0.148912 -0.134690 0.563767 0.801156 + -0.007299 0.208857 0.030678 + 2.733332 + -0.147449 -0.137132 0.568164 0.797900 + -0.007299 0.208857 0.030677 + 2.766665 + -0.144520 -0.139574 0.571095 0.795917 + -0.007299 0.208857 0.030677 + 2.799999 + "R_Arm_sjnt_0" + 85 + -0.430304 0.240672 -0.559139 -0.666542 + -0.070457 0.150703 -0.005819 + 0.000000 + 0.416144 -0.257283 0.545462 0.680515 + -0.070457 0.150703 -0.005820 + 0.033333 + 0.395146 -0.271940 0.532025 0.697752 + -0.070458 0.150703 -0.005820 + 0.066667 + 0.370238 -0.281221 0.522249 0.714909 + -0.070457 0.150703 -0.005820 + 0.100000 + 0.348258 -0.283663 0.517845 0.728071 + -0.070457 0.150703 -0.005820 + 0.133333 + 0.338978 -0.279265 0.519061 0.733267 + -0.070458 0.150703 -0.005820 + 0.166667 + 0.339464 -0.270959 0.525164 0.731811 + -0.070458 0.150703 -0.005820 + 0.200000 + 0.341904 -0.259722 0.532000 0.729809 + -0.070458 0.150703 -0.005819 + 0.233333 + 0.342880 -0.250928 0.534929 0.730287 + -0.070457 0.150703 -0.005820 + 0.266667 + 0.345324 -0.246043 0.534440 0.731156 + -0.070457 0.150703 -0.005820 + 0.300000 + 0.353139 -0.243112 0.535663 0.727498 + -0.070458 0.150703 -0.005820 + 0.333333 + 0.364861 -0.235784 0.539574 0.721209 + -0.070457 0.150703 -0.005820 + 0.366667 + -0.376584 0.223572 -0.542262 -0.717044 + -0.070457 0.150703 -0.005820 + 0.400000 + -0.387821 0.208428 -0.542262 -0.715615 + -0.070458 0.150703 -0.005820 + 0.433333 + -0.400522 0.192307 -0.543484 -0.712198 + -0.070458 0.150703 -0.005820 + 0.466667 + -0.416640 0.175209 -0.549103 -0.702993 + -0.070458 0.150703 -0.005820 + 0.500000 + -0.435199 0.157623 -0.555700 -0.690619 + -0.070458 0.150703 -0.005820 + 0.533333 + -0.452296 0.140526 -0.557900 -0.681490 + -0.070458 0.150703 -0.005820 + 0.566667 + -0.464509 0.124894 -0.555948 -0.677904 + -0.070458 0.150703 -0.005820 + 0.600000 + -0.470861 0.113659 -0.554727 -0.676499 + -0.070457 0.150703 -0.005820 + 0.633333 + -0.472326 0.109262 -0.556191 -0.674997 + -0.070458 0.150703 -0.005819 + 0.666667 + -0.469393 0.114635 -0.558145 -0.674539 + -0.070457 0.150703 -0.005820 + 0.700000 + -0.462552 0.128801 -0.561077 -0.674276 + -0.070458 0.150703 -0.005820 + 0.733334 + -0.453267 0.147852 -0.567183 -0.671560 + -0.070458 0.150703 -0.005820 + 0.766667 + -0.447400 0.169345 -0.574269 -0.664358 + -0.070457 0.150703 -0.005820 + 0.800000 + -0.446419 0.190352 -0.577204 -0.656743 + -0.070458 0.150703 -0.005819 + 0.833334 + -0.445930 0.209405 -0.574523 -0.653620 + -0.070457 0.150703 -0.005820 + 0.866667 + -0.441536 0.225527 -0.567931 -0.656991 + -0.070458 0.150703 -0.005820 + 0.900000 + -0.431282 0.240672 -0.558162 -0.666729 + -0.070458 0.150703 -0.005820 + 0.933334 + 0.416633 -0.257283 0.545462 0.680216 + -0.070457 0.150703 -0.005820 + 0.966667 + 0.395634 -0.272428 0.532270 0.697098 + -0.070457 0.150703 -0.005819 + 1.000000 + 0.369749 -0.281710 0.522249 0.714969 + -0.070457 0.150703 -0.005820 + 1.033334 + 0.348258 -0.283663 0.517845 0.728071 + -0.070457 0.150703 -0.005820 + 1.066667 + 0.338977 -0.279265 0.519305 0.733094 + -0.070458 0.150703 -0.005819 + 1.100000 + 0.339464 -0.270959 0.525164 0.731811 + -0.070457 0.150703 -0.005820 + 1.133334 + 0.341904 -0.259722 0.532000 0.729810 + -0.070457 0.150703 -0.005820 + 1.166667 + 0.342881 -0.250928 0.534685 0.730466 + -0.070457 0.150703 -0.005820 + 1.200000 + 0.345324 -0.246043 0.534440 0.731156 + -0.070457 0.150703 -0.005820 + 1.233333 + 0.353139 -0.243112 0.535663 0.727498 + -0.070457 0.150703 -0.005820 + 1.266667 + 0.364861 -0.235784 0.539574 0.721209 + -0.070458 0.150703 -0.005820 + 1.300000 + -0.376584 0.223572 -0.542262 -0.717044 + -0.070457 0.150703 -0.005820 + 1.333333 + -0.387821 0.208428 -0.542262 -0.715615 + -0.070457 0.150703 -0.005820 + 1.366667 + -0.400522 0.192307 -0.543484 -0.712198 + -0.070457 0.150703 -0.005820 + 1.400000 + -0.416640 0.175209 -0.549103 -0.702993 + -0.070457 0.150703 -0.005820 + 1.433333 + -0.435199 0.157623 -0.555700 -0.690619 + -0.070458 0.150703 -0.005820 + 1.466667 + -0.452295 0.140526 -0.557901 -0.681490 + -0.070457 0.150703 -0.005820 + 1.500000 + -0.464509 0.124894 -0.555948 -0.677904 + -0.070457 0.150703 -0.005820 + 1.533333 + -0.470861 0.113659 -0.554727 -0.676499 + -0.070457 0.150703 -0.005820 + 1.566666 + -0.472326 0.109262 -0.556191 -0.674997 + -0.070457 0.150703 -0.005820 + 1.600000 + -0.469393 0.114635 -0.558145 -0.674539 + -0.070458 0.150703 -0.005820 + 1.633333 + -0.462553 0.128801 -0.561077 -0.674276 + -0.070458 0.150703 -0.005820 + 1.666666 + -0.453267 0.147852 -0.567183 -0.671560 + -0.070457 0.150703 -0.005819 + 1.700000 + -0.447400 0.169345 -0.574268 -0.664358 + -0.070457 0.150703 -0.005820 + 1.733333 + -0.446419 0.190351 -0.577204 -0.656743 + -0.070457 0.150703 -0.005819 + 1.766666 + -0.445930 0.209404 -0.574523 -0.653620 + -0.070457 0.150703 -0.005820 + 1.800000 + -0.441536 0.225527 -0.567932 -0.656991 + -0.070457 0.150703 -0.005820 + 1.833333 + -0.431282 0.240672 -0.558163 -0.666729 + -0.070457 0.150703 -0.005820 + 1.866666 + 0.416633 -0.257283 0.545462 0.680216 + -0.070457 0.150703 -0.005820 + 1.899999 + 0.395634 -0.272428 0.532270 0.697098 + -0.070457 0.150703 -0.005820 + 1.933333 + 0.369750 -0.281710 0.522249 0.714969 + -0.070457 0.150703 -0.005820 + 1.966666 + 0.348259 -0.283663 0.517845 0.728071 + -0.070458 0.150703 -0.005820 + 1.999999 + 0.338977 -0.279266 0.519305 0.733094 + -0.070458 0.150703 -0.005819 + 2.033333 + 0.339464 -0.270959 0.525164 0.731811 + -0.070458 0.150702 -0.005820 + 2.066666 + 0.341904 -0.259722 0.532000 0.729809 + -0.070458 0.150703 -0.005819 + 2.099999 + 0.342881 -0.250928 0.534685 0.730466 + -0.070458 0.150703 -0.005820 + 2.133333 + 0.345324 -0.246043 0.534440 0.731156 + -0.070457 0.150702 -0.005819 + 2.166666 + 0.353139 -0.243112 0.535663 0.727499 + -0.070457 0.150703 -0.005820 + 2.199999 + 0.364861 -0.235784 0.539574 0.721209 + -0.070457 0.150703 -0.005820 + 2.233333 + -0.376584 0.223572 -0.542262 -0.717044 + -0.070458 0.150702 -0.005820 + 2.266666 + -0.387820 0.208428 -0.542262 -0.715615 + -0.070457 0.150703 -0.005820 + 2.299999 + -0.400521 0.192308 -0.543484 -0.712198 + -0.070457 0.150702 -0.005820 + 2.333333 + -0.416639 0.175210 -0.549103 -0.702993 + -0.070458 0.150703 -0.005820 + 2.366666 + -0.435199 0.157623 -0.555700 -0.690619 + -0.070458 0.150703 -0.005820 + 2.399999 + -0.452295 0.140526 -0.557900 -0.681490 + -0.070458 0.150702 -0.005820 + 2.433332 + -0.464997 0.124895 -0.555948 -0.677570 + -0.070457 0.150702 -0.005820 + 2.466666 + -0.470861 0.113659 -0.554727 -0.676499 + -0.070458 0.150703 -0.005820 + 2.499999 + -0.472326 0.109262 -0.556191 -0.674997 + -0.070457 0.150702 -0.005820 + 2.533332 + -0.469394 0.114635 -0.558145 -0.674539 + -0.070457 0.150703 -0.005820 + 2.566666 + -0.462553 0.128801 -0.561077 -0.674276 + -0.070458 0.150703 -0.005820 + 2.599999 + -0.453267 0.147851 -0.567183 -0.671560 + -0.070457 0.150702 -0.005820 + 2.633332 + -0.447400 0.169345 -0.574268 -0.664358 + -0.070457 0.150703 -0.005820 + 2.666666 + -0.445931 0.190351 -0.577448 -0.656861 + -0.070457 0.150703 -0.005820 + 2.699999 + -0.445930 0.208916 -0.574278 -0.653991 + -0.070457 0.150703 -0.005820 + 2.733332 + -0.441536 0.225526 -0.567443 -0.657413 + -0.070458 0.150703 -0.005820 + 2.766665 + -0.430305 0.240671 -0.559139 -0.666542 + -0.070457 0.150702 -0.005819 + 2.799999 + "R_Arm_sjnt_1" + 85 + 0.277522 -0.019081 -0.097148 0.955604 + -0.000001 0.260632 -0.000000 + 0.000000 + -0.281427 0.003935 0.093736 -0.954985 + -0.000001 0.260632 -0.000000 + 0.033333 + -0.293147 -0.016098 0.089345 -0.951747 + -0.000001 0.260632 -0.000000 + 0.066667 + -0.303893 -0.023428 0.088366 -0.948310 + -0.000001 0.260632 -0.000000 + 0.100000 + -0.305359 -0.022451 0.088365 -0.947863 + -0.000001 0.260632 -0.000000 + 0.133333 + -0.288748 -0.025380 0.086421 -0.953159 + -0.000001 0.260632 -0.000000 + 0.166667 + -0.257480 -0.032705 0.083020 -0.962155 + -0.000001 0.260632 -0.000000 + 0.200000 + -0.223771 -0.034655 0.080595 -0.970685 + -0.000001 0.260632 -0.000000 + 0.233333 + -0.202277 -0.029767 0.080602 -0.975552 + -0.000001 0.260632 -0.000000 + 0.266667 + -0.196904 -0.023415 0.081090 -0.976783 + -0.000001 0.260632 -0.000000 + 0.300000 + -0.201302 -0.019507 0.082063 -0.975891 + -0.000001 0.260632 -0.000000 + 0.333333 + -0.210584 -0.019508 0.083035 -0.973848 + -0.000001 0.260632 -0.000000 + 0.366667 + 0.225727 0.025373 -0.082543 0.970356 + -0.000001 0.260632 -0.000000 + 0.400000 + 0.247708 0.038078 -0.081074 0.964685 + -0.000001 0.260632 -0.000000 + 0.433333 + 0.274085 0.050784 -0.079115 0.957099 + -0.000001 0.260632 -0.000000 + 0.466667 + 0.300953 0.055185 -0.079104 0.948749 + -0.000001 0.260632 -0.000000 + 0.500000 + 0.330266 0.051769 -0.081043 0.938976 + -0.000001 0.260632 -0.000000 + 0.533333 + 0.362021 0.049330 -0.083469 0.927114 + -0.000001 0.260632 -0.000000 + 0.566667 + 0.392309 0.050800 -0.083943 0.914585 + -0.000001 0.260632 -0.000000 + 0.600000 + 0.415270 0.053246 -0.084422 0.904206 + -0.000001 0.260632 -0.000000 + 0.633333 + 0.426994 0.054225 -0.084417 0.898671 + -0.000001 0.260633 -0.000000 + 0.666667 + 0.428459 0.057157 -0.083441 0.897883 + -0.000001 0.260632 -0.000000 + 0.700000 + 0.420152 0.063019 -0.080030 0.901719 + -0.000001 0.260632 -0.000000 + 0.733334 + 0.400120 0.068391 -0.077112 0.910648 + -0.000001 0.260632 -0.000000 + 0.766667 + 0.370320 0.069852 -0.076150 0.923139 + -0.000001 0.260632 -0.000000 + 0.800000 + 0.335637 0.061053 -0.078115 0.936759 + -0.000001 0.260632 -0.000000 + 0.833334 + 0.304378 0.037596 -0.083978 0.948097 + -0.000001 0.260633 -0.000001 + 0.866667 + 0.283867 0.005836 -0.091297 0.954490 + -0.000001 0.260632 -0.000000 + 0.900000 + 0.276544 -0.013219 -0.095687 0.956134 + -0.000001 0.260632 -0.000000 + 0.933334 + -0.280939 0.005889 0.094223 -0.955071 + -0.000001 0.260633 -0.000000 + 0.966667 + -0.292659 -0.013655 0.089832 -0.951890 + -0.000001 0.260632 -0.000001 + 1.000000 + -0.304381 -0.023916 0.087878 -0.948187 + -0.000001 0.260632 -0.000000 + 1.033334 + -0.305358 -0.023428 0.088366 -0.947839 + -0.000001 0.260633 -0.000000 + 1.066667 + -0.288747 -0.025380 0.086421 -0.953159 + -0.000001 0.260632 -0.000000 + 1.100000 + -0.256992 -0.032216 0.083020 -0.962302 + -0.000001 0.260633 -0.000000 + 1.133334 + -0.223771 -0.034655 0.080595 -0.970685 + -0.000001 0.260632 -0.000000 + 1.166667 + -0.202277 -0.029767 0.080602 -0.975552 + -0.000001 0.260632 -0.000000 + 1.200000 + -0.196904 -0.023415 0.081090 -0.976783 + -0.000001 0.260632 -0.000000 + 1.233333 + -0.201302 -0.019507 0.082063 -0.975891 + -0.000001 0.260632 -0.000001 + 1.266667 + -0.210584 -0.019508 0.083035 -0.973848 + -0.000001 0.260633 -0.000000 + 1.300000 + 0.225727 0.025373 -0.082543 0.970356 + -0.000001 0.260632 -0.000000 + 1.333333 + 0.247708 0.038078 -0.081074 0.964685 + -0.000001 0.260633 -0.000000 + 1.366667 + 0.274085 0.050784 -0.079115 0.957099 + -0.000001 0.260633 -0.000000 + 1.400000 + 0.300953 0.055185 -0.079104 0.948749 + -0.000001 0.260632 -0.000000 + 1.433333 + 0.330266 0.051769 -0.081043 0.938976 + -0.000000 0.260632 -0.000000 + 1.466667 + 0.362021 0.049330 -0.083468 0.927114 + -0.000001 0.260632 -0.000001 + 1.500000 + 0.392309 0.050800 -0.083943 0.914585 + -0.000001 0.260632 0.000000 + 1.533333 + 0.415269 0.053246 -0.084422 0.904206 + -0.000001 0.260632 -0.000000 + 1.566666 + 0.426994 0.054225 -0.084417 0.898671 + -0.000001 0.260632 -0.000001 + 1.600000 + 0.428459 0.057157 -0.083441 0.897883 + -0.000001 0.260632 0.000000 + 1.633333 + 0.420152 0.063019 -0.080030 0.901719 + -0.000001 0.260632 0.000000 + 1.666666 + 0.400121 0.068391 -0.077112 0.910648 + -0.000001 0.260632 -0.000000 + 1.700000 + 0.370321 0.069852 -0.076149 0.923138 + -0.000001 0.260633 -0.000001 + 1.733333 + 0.335638 0.061053 -0.078115 0.936759 + -0.000001 0.260633 -0.000000 + 1.766666 + 0.304378 0.037597 -0.083978 0.948097 + -0.000001 0.260632 -0.000000 + 1.800000 + 0.283868 0.005837 -0.091297 0.954489 + -0.000001 0.260632 -0.000000 + 1.833333 + 0.276544 -0.013218 -0.095687 0.956134 + -0.000001 0.260632 -0.000000 + 1.866666 + -0.280939 0.005890 0.094223 -0.955071 + -0.000001 0.260632 -0.000000 + 1.899999 + -0.292659 -0.013654 0.089832 -0.951890 + -0.000001 0.260632 -0.000000 + 1.933333 + -0.304381 -0.023916 0.087878 -0.948187 + -0.000001 0.260632 -0.000000 + 1.966666 + -0.305358 -0.023428 0.088366 -0.947839 + -0.000001 0.260632 -0.000000 + 1.999999 + -0.288748 -0.025380 0.086421 -0.953159 + -0.000001 0.260632 -0.000000 + 2.033333 + -0.256992 -0.032216 0.083020 -0.962302 + -0.000001 0.260631 0.000000 + 2.066666 + -0.223772 -0.034655 0.080595 -0.970685 + -0.000001 0.260632 0.000000 + 2.099999 + -0.202277 -0.029767 0.080602 -0.975552 + -0.000001 0.260632 -0.000000 + 2.133333 + -0.196904 -0.023415 0.081090 -0.976783 + -0.000001 0.260633 -0.000000 + 2.166666 + -0.201302 -0.019507 0.082063 -0.975891 + -0.000001 0.260632 -0.000000 + 2.199999 + -0.210584 -0.019508 0.083035 -0.973848 + -0.000001 0.260632 -0.000000 + 2.233333 + 0.225727 0.025372 -0.082543 0.970356 + -0.000001 0.260632 -0.000000 + 2.266666 + 0.247707 0.038078 -0.081074 0.964686 + -0.000001 0.260632 -0.000001 + 2.299999 + 0.274085 0.050784 -0.079115 0.957099 + -0.000001 0.260632 -0.000000 + 2.333333 + 0.300953 0.055185 -0.079104 0.948749 + -0.000000 0.260632 0.000000 + 2.366666 + 0.330265 0.051769 -0.081043 0.938977 + -0.000000 0.260632 0.000000 + 2.399999 + 0.362020 0.049330 -0.083468 0.927114 + -0.000000 0.260632 -0.000000 + 2.433332 + 0.392308 0.050800 -0.083943 0.914586 + -0.000001 0.260633 -0.000000 + 2.466666 + 0.415269 0.053246 -0.084422 0.904206 + -0.000001 0.260632 0.000000 + 2.499999 + 0.426993 0.054225 -0.084417 0.898671 + -0.000001 0.260633 0.000000 + 2.533332 + 0.428459 0.057156 -0.083441 0.897883 + -0.000001 0.260633 -0.000000 + 2.566666 + 0.420152 0.063019 -0.080030 0.901718 + -0.000000 0.260633 0.000000 + 2.599999 + 0.400121 0.068391 -0.077112 0.910648 + -0.000001 0.260633 -0.000000 + 2.633332 + 0.369833 0.068875 -0.076149 0.923407 + -0.000001 0.260633 -0.000000 + 2.666666 + 0.335150 0.060076 -0.078603 0.936956 + -0.000001 0.260633 0.000000 + 2.699999 + 0.304867 0.039552 -0.083490 0.947904 + -0.000001 0.260632 -0.000000 + 2.733332 + 0.283867 0.010235 -0.090322 0.954545 + -0.000001 0.260633 -0.000001 + 2.766665 + 0.277523 -0.019080 -0.097148 0.955604 + -0.000001 0.260633 0.000000 + 2.799999 + "R_Wrist_sjnt_0" + 85 + 0.000456 0.025368 -0.050792 0.998387 + 0.000000 0.242268 -0.000001 + 0.000000 + 0.004038 0.026350 -0.040293 0.998832 + 0.000000 0.242268 -0.000001 + 0.033333 + 0.002266 0.026352 -0.035411 0.999023 + 0.000000 0.242268 -0.000001 + 0.066667 + -0.000340 0.025859 -0.043713 0.998709 + 0.000000 0.242268 -0.000001 + 0.100000 + -0.003524 0.024876 -0.056897 0.998064 + 0.000000 0.242268 -0.000001 + 0.133333 + 0.006124 0.024873 -0.069345 0.997264 + 0.000000 0.242268 -0.000001 + 0.166667 + -0.002540 0.023892 -0.075695 0.996842 + 0.000000 0.242268 -0.000001 + 0.200000 + -0.006077 0.022911 -0.083509 0.996225 + 0.000000 0.242268 -0.000001 + 0.233333 + -0.019507 0.022423 -0.075213 0.996724 + 0.000000 0.242268 -0.000000 + 0.266667 + -0.041976 0.022425 -0.056911 0.997244 + 0.000000 0.242268 -0.000001 + 0.300000 + -0.046864 0.023407 -0.043242 0.997690 + 0.000000 0.242268 -0.000000 + 0.333333 + -0.040029 0.023898 -0.041042 0.998069 + 0.000000 0.242268 -0.000000 + 0.366667 + -0.027822 0.023900 -0.048977 0.998126 + 0.000000 0.242268 -0.000001 + 0.400000 + -0.015609 0.023897 -0.056901 0.997972 + 0.000000 0.242268 -0.000001 + 0.433333 + -0.009993 0.024385 -0.059097 0.997904 + 0.000000 0.242268 -0.000001 + 0.466667 + -0.003213 0.024382 -0.070813 0.997186 + 0.000000 0.242268 -0.000001 + 0.500000 + 0.006740 0.024379 -0.082039 0.996308 + 0.000000 0.242268 -0.000000 + 0.533333 + -0.000783 0.023890 -0.080577 0.996462 + 0.000000 0.242268 -0.000000 + 0.566667 + -0.008523 0.023403 -0.072279 0.997073 + 0.000000 0.242268 -0.000000 + 0.600000 + 0.006736 0.024872 -0.072762 0.997016 + 0.000000 0.242268 -0.000000 + 0.633333 + 0.030789 0.026336 -0.087402 0.995349 + 0.000000 0.242268 -0.000000 + 0.666667 + 0.038118 0.026820 -0.100583 0.993836 + 0.000000 0.242268 -0.000000 + 0.700000 + 0.022984 0.025350 -0.104494 0.993937 + 0.000000 0.242268 -0.000001 + 0.733334 + 0.021032 0.024860 -0.107425 0.993680 + 0.000000 0.242268 -0.000000 + 0.766667 + 0.022497 0.024860 -0.108401 0.993542 + 0.000000 0.242268 -0.000000 + 0.800000 + 0.015411 0.024865 -0.094243 0.995119 + 0.000000 0.242268 -0.000001 + 0.833334 + 0.011745 0.024868 -0.083502 0.996128 + 0.000000 0.242268 -0.000001 + 0.866667 + 0.008322 0.024873 -0.070808 0.997145 + 0.000000 0.242268 -0.000000 + 0.900000 + 0.000456 0.025368 -0.050792 0.998387 + 0.000000 0.242268 -0.000000 + 0.933334 + 0.004037 0.026350 -0.040293 0.998832 + 0.000000 0.242268 -0.000001 + 0.966667 + 0.002265 0.026352 -0.035411 0.999023 + 0.000000 0.242268 -0.000001 + 1.000000 + -0.000340 0.025859 -0.043713 0.998709 + 0.000000 0.242268 -0.000001 + 1.033334 + -0.003524 0.024876 -0.056897 0.998064 + 0.000000 0.242268 -0.000000 + 1.066667 + 0.006124 0.024873 -0.069345 0.997264 + 0.000000 0.242268 -0.000000 + 1.100000 + -0.002540 0.023892 -0.075695 0.996842 + 0.000000 0.242268 -0.000000 + 1.133334 + -0.006077 0.022911 -0.083509 0.996225 + 0.000000 0.242268 -0.000001 + 1.166667 + -0.019508 0.022423 -0.075213 0.996724 + 0.000000 0.242268 -0.000001 + 1.200000 + -0.041976 0.022425 -0.056911 0.997244 + 0.000000 0.242268 -0.000000 + 1.233333 + -0.046864 0.023407 -0.043242 0.997690 + 0.000000 0.242268 -0.000000 + 1.266667 + -0.040029 0.023898 -0.041042 0.998069 + 0.000000 0.242268 -0.000000 + 1.300000 + -0.027822 0.023900 -0.048977 0.998126 + 0.000000 0.242268 -0.000001 + 1.333333 + -0.015609 0.023897 -0.056901 0.997972 + 0.000000 0.242268 -0.000001 + 1.366667 + -0.009993 0.024385 -0.059097 0.997904 + 0.000000 0.242268 -0.000000 + 1.400000 + -0.003213 0.024382 -0.070813 0.997186 + 0.000000 0.242268 -0.000000 + 1.433333 + 0.006740 0.024379 -0.082039 0.996308 + 0.000000 0.242268 -0.000000 + 1.466667 + -0.000783 0.023890 -0.080577 0.996462 + 0.000000 0.242268 -0.000000 + 1.500000 + -0.008523 0.023403 -0.072279 0.997073 + 0.000000 0.242268 -0.000001 + 1.533333 + 0.006736 0.024872 -0.072762 0.997016 + 0.000000 0.242268 -0.000000 + 1.566666 + 0.030789 0.026336 -0.087402 0.995349 + 0.000000 0.242268 -0.000000 + 1.600000 + 0.038118 0.026821 -0.100583 0.993836 + 0.000000 0.242268 -0.000001 + 1.633333 + 0.022984 0.025350 -0.104494 0.993937 + 0.000000 0.242268 -0.000000 + 1.666666 + 0.021032 0.024860 -0.107425 0.993680 + 0.000000 0.242268 -0.000000 + 1.700000 + 0.022497 0.024860 -0.108401 0.993542 + 0.000000 0.242268 -0.000000 + 1.733333 + 0.015411 0.024865 -0.094244 0.995119 + 0.000000 0.242268 0.000000 + 1.766666 + 0.011745 0.024868 -0.083503 0.996128 + 0.000000 0.242268 -0.000000 + 1.800000 + 0.008322 0.024873 -0.070809 0.997145 + 0.000000 0.242268 -0.000000 + 1.833333 + 0.000456 0.025368 -0.050793 0.998387 + 0.000000 0.242268 -0.000001 + 1.866666 + 0.004037 0.026350 -0.040294 0.998832 + 0.000000 0.242269 -0.000001 + 1.899999 + 0.002265 0.026352 -0.035411 0.999023 + 0.000000 0.242268 -0.000000 + 1.933333 + -0.000340 0.025860 -0.043713 0.998709 + 0.000000 0.242269 -0.000000 + 1.966666 + -0.003524 0.024876 -0.056897 0.998064 + 0.000000 0.242268 -0.000000 + 1.999999 + 0.006124 0.024873 -0.069344 0.997264 + 0.000000 0.242269 -0.000001 + 2.033333 + -0.002540 0.023892 -0.075695 0.996842 + 0.000000 0.242269 -0.000000 + 2.066666 + -0.006077 0.022911 -0.083508 0.996225 + 0.000000 0.242268 -0.000000 + 2.099999 + -0.019507 0.022423 -0.075213 0.996725 + 0.000000 0.242268 -0.000000 + 2.133333 + -0.041975 0.022425 -0.056912 0.997244 + 0.000000 0.242268 -0.000000 + 2.166666 + -0.046864 0.023407 -0.043242 0.997690 + 0.000000 0.242268 0.000000 + 2.199999 + -0.040029 0.023898 -0.041042 0.998069 + 0.000000 0.242268 -0.000000 + 2.233333 + -0.027822 0.023900 -0.048977 0.998126 + 0.000000 0.242268 -0.000000 + 2.266666 + -0.015609 0.023897 -0.056901 0.997972 + 0.000000 0.242268 -0.000001 + 2.299999 + -0.009993 0.024385 -0.059097 0.997904 + 0.000000 0.242268 -0.000001 + 2.333333 + -0.003214 0.024382 -0.070812 0.997186 + 0.000000 0.242269 -0.000000 + 2.366666 + 0.006739 0.024379 -0.082039 0.996308 + 0.000000 0.242269 -0.000001 + 2.399999 + -0.000783 0.023890 -0.080577 0.996462 + 0.000000 0.242268 -0.000001 + 2.433332 + -0.008522 0.023403 -0.072280 0.997073 + -0.000000 0.242269 -0.000001 + 2.466666 + 0.006736 0.024872 -0.072762 0.997016 + 0.000000 0.242269 -0.000001 + 2.499999 + 0.030788 0.026336 -0.087401 0.995349 + 0.000000 0.242268 -0.000000 + 2.533332 + 0.038118 0.026821 -0.100582 0.993836 + 0.000000 0.242268 -0.000000 + 2.566666 + 0.022984 0.025350 -0.104494 0.993937 + 0.000000 0.242269 0.000000 + 2.599999 + 0.021032 0.024860 -0.107425 0.993680 + 0.000000 0.242268 -0.000000 + 2.633332 + 0.022497 0.024860 -0.108401 0.993542 + 0.000000 0.242268 0.000000 + 2.666666 + 0.015412 0.024865 -0.094244 0.995119 + 0.000000 0.242268 0.000000 + 2.699999 + 0.011745 0.024868 -0.083503 0.996128 + 0.000000 0.242268 -0.000000 + 2.733332 + 0.008322 0.024873 -0.070809 0.997145 + 0.000000 0.242269 -0.000000 + 2.766665 + 0.000456 0.025368 -0.050793 0.998387 + 0.000000 0.242269 0.000000 + 2.799999 + "C_Neck_sjnt_0" + 85 + 0.184079 0.118660 -0.039556 0.974921 + -0.000000 0.206349 -0.038118 + 0.000000 + 0.182859 0.118171 -0.036870 0.975315 + 0.000000 0.206349 -0.038118 + 0.033333 + 0.181637 0.117682 -0.034185 0.975700 + -0.000000 0.206349 -0.038118 + 0.066667 + 0.181637 0.116217 -0.031744 0.975958 + 0.000000 0.206349 -0.038118 + 0.100000 + 0.182615 0.115240 -0.028204 0.976000 + 0.000000 0.206349 -0.038118 + 0.133333 + 0.183591 0.114262 -0.024664 0.976028 + -0.000000 0.206349 -0.038118 + 0.166667 + 0.182615 0.112797 -0.023810 0.976402 + -0.000000 0.206349 -0.038118 + 0.200000 + 0.181638 0.111332 -0.022956 0.976773 + 0.000000 0.206349 -0.038118 + 0.233333 + 0.183103 0.109379 -0.022712 0.976726 + 0.000000 0.206349 -0.038118 + 0.266667 + 0.184083 0.105231 -0.026864 0.976892 + 0.000000 0.206349 -0.038118 + 0.300000 + 0.185056 0.101080 -0.031015 0.977024 + 0.000000 0.206349 -0.038118 + 0.333333 + 0.187744 0.097420 -0.033091 0.976815 + -0.000000 0.206349 -0.038118 + 0.366667 + 0.190427 0.093757 -0.035167 0.976581 + 0.000000 0.206349 -0.038118 + 0.400000 + 0.193845 0.091804 -0.035655 0.976076 + -0.000000 0.206349 -0.038118 + 0.433333 + 0.193845 0.090828 -0.037120 0.976113 + 0.000000 0.206349 -0.038118 + 0.466667 + 0.191894 0.091480 -0.038911 0.976368 + -0.000000 0.206349 -0.038118 + 0.500000 + 0.189940 0.092131 -0.040701 0.976616 + 0.000000 0.206349 -0.038118 + 0.533333 + 0.187986 0.092782 -0.042491 0.976856 + 0.000000 0.206349 -0.038118 + 0.566667 + 0.185544 0.093271 -0.045909 0.977121 + 0.000000 0.206349 -0.038118 + 0.600000 + 0.184568 0.093760 -0.049327 0.977093 + 0.000000 0.206349 -0.038118 + 0.633333 + 0.183103 0.095713 -0.050791 0.977104 + 0.000000 0.206349 -0.038118 + 0.666667 + 0.180418 0.098155 -0.049814 0.977412 + -0.000000 0.206349 -0.038118 + 0.700000 + 0.177732 0.100595 -0.048837 0.977705 + -0.000000 0.206349 -0.038118 + 0.733334 + 0.177490 0.103648 -0.048105 0.977466 + 0.000000 0.206349 -0.038118 + 0.766667 + 0.177247 0.106701 -0.047372 0.977218 + 0.000000 0.206349 -0.038118 + 0.800000 + 0.177002 0.109752 -0.046638 0.976959 + -0.000000 0.206349 -0.038118 + 0.833334 + 0.176755 0.112802 -0.045905 0.976691 + 0.000000 0.206349 -0.038118 + 0.866667 + 0.179442 0.115244 -0.043219 0.976039 + 0.000000 0.206349 -0.038118 + 0.900000 + 0.182126 0.117683 -0.040533 0.975366 + 0.000000 0.206349 -0.038118 + 0.933334 + 0.181882 0.117683 -0.037603 0.975528 + -0.000000 0.206349 -0.038118 + 0.966667 + 0.181637 0.117682 -0.034673 0.975683 + 0.000000 0.206349 -0.038118 + 1.000000 + 0.182126 0.116217 -0.031744 0.975867 + -0.000000 0.206349 -0.038118 + 1.033334 + 0.183102 0.115727 -0.027349 0.975875 + 0.000000 0.206349 -0.038118 + 1.066667 + 0.183591 0.114262 -0.024664 0.976028 + 0.000000 0.206349 -0.038118 + 1.100000 + 0.182615 0.112797 -0.023810 0.976402 + -0.000000 0.206349 -0.038118 + 1.133334 + 0.181638 0.111332 -0.022956 0.976773 + 0.000000 0.206349 -0.038118 + 1.166667 + 0.183103 0.109379 -0.022712 0.976726 + 0.000000 0.206349 -0.038118 + 1.200000 + 0.184083 0.105231 -0.026864 0.976892 + 0.000000 0.206349 -0.038118 + 1.233333 + 0.185056 0.101080 -0.031015 0.977024 + 0.000000 0.206349 -0.038118 + 1.266667 + 0.187744 0.097420 -0.033091 0.976815 + 0.000000 0.206349 -0.038118 + 1.300000 + 0.190427 0.093757 -0.035167 0.976581 + 0.000000 0.206349 -0.038118 + 1.333333 + 0.193845 0.091804 -0.035655 0.976076 + -0.000000 0.206349 -0.038118 + 1.366667 + 0.193845 0.090828 -0.037120 0.976113 + 0.000000 0.206349 -0.038118 + 1.400000 + 0.191894 0.091480 -0.038911 0.976368 + 0.000000 0.206349 -0.038118 + 1.433333 + 0.189940 0.092131 -0.040701 0.976616 + 0.000000 0.206349 -0.038118 + 1.466667 + 0.187986 0.092782 -0.042491 0.976856 + -0.000000 0.206349 -0.038118 + 1.500000 + 0.185545 0.093271 -0.045909 0.977121 + 0.000000 0.206349 -0.038118 + 1.533333 + 0.184568 0.093760 -0.049327 0.977093 + -0.000000 0.206349 -0.038118 + 1.566666 + 0.183103 0.095713 -0.050791 0.977104 + 0.000000 0.206349 -0.038118 + 1.600000 + 0.180419 0.098155 -0.049814 0.977412 + -0.000000 0.206349 -0.038118 + 1.633333 + 0.177732 0.100595 -0.048837 0.977705 + 0.000000 0.206349 -0.038118 + 1.666666 + 0.177490 0.103648 -0.048105 0.977466 + 0.000000 0.206349 -0.038118 + 1.700000 + 0.177247 0.106700 -0.047372 0.977218 + 0.000000 0.206349 -0.038118 + 1.733333 + 0.177002 0.109752 -0.046638 0.976959 + 0.000000 0.206349 -0.038118 + 1.766666 + 0.176755 0.112802 -0.045905 0.976691 + 0.000000 0.206349 -0.038118 + 1.800000 + 0.179442 0.115244 -0.043219 0.976039 + 0.000000 0.206349 -0.038118 + 1.833333 + 0.182126 0.117683 -0.040533 0.975366 + -0.000000 0.206349 -0.038118 + 1.866666 + 0.181882 0.117683 -0.037603 0.975528 + 0.000000 0.206349 -0.038118 + 1.899999 + 0.181637 0.117682 -0.034673 0.975683 + 0.000000 0.206349 -0.038118 + 1.933333 + 0.182126 0.116217 -0.031744 0.975867 + 0.000000 0.206349 -0.038118 + 1.966666 + 0.183102 0.115727 -0.027349 0.975875 + -0.000000 0.206349 -0.038118 + 1.999999 + 0.183591 0.114262 -0.024664 0.976028 + 0.000000 0.206349 -0.038118 + 2.033333 + 0.182615 0.112797 -0.023810 0.976402 + 0.000000 0.206349 -0.038118 + 2.066666 + 0.181638 0.111332 -0.022956 0.976773 + 0.000000 0.206349 -0.038118 + 2.099999 + 0.183103 0.109379 -0.022712 0.976726 + 0.000000 0.206349 -0.038118 + 2.133333 + 0.184083 0.105231 -0.026864 0.976892 + 0.000000 0.206349 -0.038118 + 2.166666 + 0.185056 0.101080 -0.031015 0.977024 + 0.000000 0.206349 -0.038118 + 2.199999 + 0.187744 0.097420 -0.033091 0.976815 + -0.000000 0.206349 -0.038118 + 2.233333 + 0.190427 0.093757 -0.035167 0.976581 + 0.000000 0.206349 -0.038118 + 2.266666 + 0.193845 0.091804 -0.035655 0.976076 + 0.000000 0.206349 -0.038118 + 2.299999 + 0.193845 0.090828 -0.037120 0.976113 + 0.000000 0.206349 -0.038118 + 2.333333 + 0.191894 0.091480 -0.038911 0.976368 + -0.000000 0.206349 -0.038118 + 2.366666 + 0.189940 0.092131 -0.040701 0.976616 + 0.000000 0.206349 -0.038118 + 2.399999 + 0.187986 0.092782 -0.042491 0.976856 + 0.000000 0.206350 -0.038118 + 2.433332 + 0.186278 0.093271 -0.045909 0.976982 + 0.000000 0.206349 -0.038118 + 2.466666 + 0.184568 0.093760 -0.049327 0.977093 + 0.000000 0.206349 -0.038118 + 2.499999 + 0.183103 0.095713 -0.050791 0.977104 + 0.000000 0.206349 -0.038118 + 2.533332 + 0.180419 0.098155 -0.049814 0.977411 + 0.000000 0.206349 -0.038118 + 2.566666 + 0.177732 0.100595 -0.048837 0.977705 + -0.000000 0.206349 -0.038118 + 2.599999 + 0.177368 0.103648 -0.048227 0.977482 + 0.000000 0.206349 -0.038118 + 2.633332 + 0.177002 0.106700 -0.047616 0.977250 + 0.000000 0.206349 -0.038118 + 2.666666 + 0.176635 0.109752 -0.047005 0.977008 + 0.000000 0.206349 -0.038118 + 2.699999 + 0.176266 0.112802 -0.046393 0.976757 + 0.000000 0.206349 -0.038118 + 2.733332 + 0.180176 0.115733 -0.042975 0.975856 + -0.000000 0.206349 -0.038118 + 2.766665 + 0.184079 0.118660 -0.039556 0.974921 + 0.000000 0.206349 -0.038118 + 2.799999 + "C_Neck_sjnt_1" + 85 + -0.210451 0.017581 -0.011746 0.977376 + 0.000000 0.054001 0.000000 + 0.000000 + -0.210777 0.016116 -0.011420 0.977335 + -0.000000 0.054001 0.000000 + 0.033333 + -0.211103 0.014651 -0.011095 0.977291 + 0.000000 0.054001 0.000000 + 0.066667 + -0.211428 0.013186 -0.010770 0.977245 + -0.000000 0.054001 0.000000 + 0.100000 + -0.211428 0.011477 -0.009305 0.977282 + -0.000000 0.054001 0.000000 + 0.133333 + -0.211427 0.009768 -0.007841 0.977314 + 0.000000 0.054001 0.000000 + 0.166667 + -0.213380 0.007571 -0.008818 0.976900 + -0.000000 0.054001 0.000000 + 0.200000 + -0.214845 0.006594 -0.007842 0.976595 + -0.000000 0.054001 0.000000 + 0.233333 + -0.213868 0.005861 -0.006865 0.976821 + 0.000000 0.054001 0.000000 + 0.266667 + -0.213057 0.002973 -0.008982 0.976994 + 0.000000 0.054001 0.000001 + 0.300000 + -0.212243 0.000084 -0.011098 0.977154 + -0.000000 0.054001 0.000000 + 0.333333 + -0.211426 -0.002804 -0.013215 0.977301 + 0.000000 0.054000 0.000000 + 0.366667 + -0.208254 -0.005307 -0.012727 0.977978 + -0.000000 0.054001 0.000000 + 0.400000 + -0.205078 -0.007809 -0.012239 0.978638 + -0.000000 0.054001 0.000000 + 0.433333 + -0.204590 -0.009274 -0.012240 0.978727 + 0.000000 0.054001 0.000000 + 0.466667 + -0.206055 -0.008541 -0.011751 0.978433 + -0.000000 0.054001 0.000000 + 0.500000 + -0.207519 -0.007809 -0.011263 0.978135 + 0.000000 0.054001 0.000000 + 0.533333 + -0.211183 -0.006223 -0.011507 0.977359 + 0.000000 0.054000 0.000000 + 0.566667 + -0.214844 -0.004636 -0.011750 0.976567 + 0.000000 0.054000 0.000000 + 0.600000 + -0.217286 -0.002897 -0.012482 0.976024 + -0.000000 0.054001 0.000000 + 0.633333 + -0.219727 -0.001157 -0.013214 0.975471 + -0.000000 0.054001 0.000000 + 0.666667 + -0.222657 0.000826 -0.012726 0.974814 + -0.000000 0.054001 0.000000 + 0.700000 + -0.223145 0.002932 -0.012237 0.974704 + 0.000000 0.054000 0.000001 + 0.733334 + -0.221193 0.005129 -0.012481 0.975137 + -0.000000 0.054000 0.000000 + 0.766667 + -0.219239 0.007327 -0.012724 0.975561 + 0.000000 0.054000 0.000000 + 0.800000 + -0.218264 0.010013 -0.013700 0.975742 + 0.000000 0.054001 0.000000 + 0.833334 + -0.217287 0.012698 -0.014676 0.975915 + 0.000000 0.054001 0.000000 + 0.866667 + -0.214359 0.014652 -0.013211 0.976556 + 0.000000 0.054000 0.000001 + 0.900000 + -0.211428 0.016604 -0.011746 0.977182 + 0.000000 0.054000 0.000000 + 0.933334 + -0.211428 0.015872 -0.011258 0.977200 + -0.000000 0.054000 0.000000 + 0.966667 + -0.211428 0.015139 -0.010769 0.977217 + 0.000000 0.054000 0.000000 + 1.000000 + -0.211428 0.013186 -0.010770 0.977245 + -0.000000 0.054001 0.000000 + 1.033334 + -0.211428 0.011477 -0.009305 0.977282 + 0.000000 0.054001 0.000000 + 1.066667 + -0.211427 0.009768 -0.007841 0.977314 + -0.000000 0.054001 0.000000 + 1.100000 + -0.213380 0.007571 -0.008818 0.976900 + -0.000000 0.054000 0.000000 + 1.133334 + -0.214845 0.006594 -0.007842 0.976594 + 0.000000 0.054000 0.000000 + 1.166667 + -0.213868 0.005861 -0.006865 0.976821 + -0.000000 0.054001 0.000000 + 1.200000 + -0.213057 0.002973 -0.008982 0.976994 + -0.000000 0.054000 0.000000 + 1.233333 + -0.212243 0.000084 -0.011098 0.977154 + -0.000000 0.054000 0.000000 + 1.266667 + -0.211426 -0.002804 -0.013215 0.977301 + -0.000000 0.054000 0.000000 + 1.300000 + -0.208254 -0.005307 -0.012727 0.977978 + -0.000000 0.054000 0.000000 + 1.333333 + -0.205078 -0.007809 -0.012239 0.978638 + -0.000000 0.054001 0.000000 + 1.366667 + -0.204590 -0.009274 -0.012240 0.978727 + -0.000000 0.054000 0.000000 + 1.400000 + -0.206055 -0.008541 -0.011751 0.978433 + -0.000000 0.054000 0.000000 + 1.433333 + -0.207519 -0.007809 -0.011263 0.978135 + -0.000000 0.054001 0.000000 + 1.466667 + -0.211183 -0.006223 -0.011507 0.977359 + 0.000000 0.054000 0.000000 + 1.500000 + -0.214844 -0.004636 -0.011750 0.976567 + -0.000000 0.054001 0.000000 + 1.533333 + -0.217286 -0.002897 -0.012482 0.976024 + 0.000000 0.054001 0.000001 + 1.566666 + -0.219727 -0.001157 -0.013214 0.975471 + 0.000000 0.054001 0.000000 + 1.600000 + -0.222657 0.000826 -0.012726 0.974814 + -0.000000 0.054001 0.000000 + 1.633333 + -0.223145 0.002932 -0.012237 0.974704 + 0.000000 0.054000 0.000001 + 1.666666 + -0.221193 0.005129 -0.012481 0.975137 + 0.000000 0.054001 0.000000 + 1.700000 + -0.219240 0.007327 -0.012724 0.975561 + 0.000000 0.054000 0.000000 + 1.733333 + -0.218264 0.010013 -0.013700 0.975742 + -0.000000 0.054000 0.000001 + 1.766666 + -0.217287 0.012698 -0.014676 0.975915 + 0.000000 0.054000 0.000000 + 1.800000 + -0.214359 0.014652 -0.013211 0.976556 + -0.000000 0.054000 0.000000 + 1.833333 + -0.211428 0.016604 -0.011746 0.977182 + 0.000000 0.054000 0.000001 + 1.866666 + -0.211428 0.015872 -0.011258 0.977200 + 0.000000 0.054001 0.000000 + 1.899999 + -0.211428 0.015139 -0.010769 0.977217 + 0.000000 0.054001 0.000001 + 1.933333 + -0.211428 0.013186 -0.010770 0.977245 + 0.000000 0.054001 0.000000 + 1.966666 + -0.211428 0.011477 -0.009305 0.977282 + 0.000000 0.054001 0.000000 + 1.999999 + -0.211427 0.009768 -0.007841 0.977314 + 0.000000 0.054001 0.000000 + 2.033333 + -0.213380 0.007571 -0.008818 0.976900 + -0.000000 0.054000 0.000000 + 2.066666 + -0.214845 0.006594 -0.007842 0.976594 + 0.000000 0.054000 0.000000 + 2.099999 + -0.213868 0.005861 -0.006865 0.976821 + -0.000000 0.054001 0.000000 + 2.133333 + -0.213057 0.002973 -0.008982 0.976994 + -0.000000 0.054000 0.000000 + 2.166666 + -0.212243 0.000084 -0.011098 0.977154 + 0.000000 0.054000 0.000000 + 2.199999 + -0.211426 -0.002804 -0.013215 0.977301 + 0.000000 0.054000 0.000000 + 2.233333 + -0.208254 -0.005307 -0.012727 0.977978 + 0.000000 0.054001 0.000000 + 2.266666 + -0.205078 -0.007809 -0.012239 0.978638 + 0.000000 0.054001 0.000000 + 2.299999 + -0.204590 -0.009274 -0.012240 0.978727 + 0.000000 0.054001 0.000000 + 2.333333 + -0.206055 -0.008541 -0.011751 0.978433 + -0.000000 0.054001 0.000000 + 2.366666 + -0.207519 -0.007809 -0.011263 0.978135 + 0.000000 0.054000 0.000000 + 2.399999 + -0.211183 -0.006223 -0.011507 0.977359 + 0.000000 0.054000 0.000000 + 2.433332 + -0.214844 -0.004636 -0.011750 0.976567 + -0.000000 0.054000 0.000000 + 2.466666 + -0.217286 -0.002927 -0.012482 0.976024 + 0.000000 0.054001 0.000000 + 2.499999 + -0.219727 -0.001218 -0.013214 0.975471 + 0.000000 0.054001 0.000001 + 2.533332 + -0.222657 0.000826 -0.012726 0.974813 + 0.000000 0.054000 0.000000 + 2.566666 + -0.223145 0.002932 -0.012237 0.974704 + -0.000000 0.054000 0.000001 + 2.599999 + -0.221193 0.005129 -0.012481 0.975137 + -0.000000 0.054001 0.000000 + 2.633332 + -0.219240 0.007327 -0.012724 0.975561 + -0.000000 0.054000 0.000000 + 2.666666 + -0.218264 0.010012 -0.013700 0.975742 + -0.000000 0.054000 0.000000 + 2.699999 + -0.217287 0.012698 -0.014676 0.975915 + 0.000000 0.054001 0.000000 + 2.733332 + -0.213871 0.015140 -0.013211 0.976655 + 0.000000 0.054000 0.000000 + 2.766665 + -0.210451 0.017581 -0.011746 0.977376 + 0.000000 0.054001 0.000000 + 2.799999 + "C_Neck_sjnt_2" + 85 + -0.018559 0.042971 -0.020499 0.998694 + 0.000000 0.054001 0.000000 + 0.000000 + -0.018722 0.041506 -0.020499 0.998752 + -0.000000 0.054001 0.000000 + 0.033333 + -0.018884 0.040041 -0.020500 0.998809 + 0.000000 0.054001 0.000000 + 0.066667 + -0.019047 0.038576 -0.020500 0.998864 + 0.000000 0.054001 -0.000000 + 0.100000 + -0.018314 0.036623 -0.019524 0.998971 + -0.000000 0.054001 0.000000 + 0.133333 + -0.017582 0.034670 -0.018548 0.999072 + 0.000000 0.054001 0.000000 + 0.166667 + -0.019046 0.032717 -0.020501 0.999073 + -0.000000 0.054001 0.000000 + 0.200000 + -0.020023 0.031252 -0.019525 0.999120 + -0.000000 0.054001 0.000000 + 0.233333 + -0.019046 0.030519 -0.018060 0.999189 + -0.000000 0.054001 -0.000000 + 0.266667 + -0.018720 0.027997 -0.020177 0.999229 + -0.000000 0.054001 -0.000000 + 0.300000 + -0.018394 0.025475 -0.022293 0.999258 + -0.000000 0.054001 0.000000 + 0.333333 + -0.018069 0.022952 -0.024410 0.999275 + -0.000000 0.054001 -0.000000 + 0.366667 + -0.016726 0.020267 -0.024410 0.999357 + -0.000000 0.054001 0.000000 + 0.400000 + -0.015382 0.017582 -0.024411 0.999429 + -0.000000 0.054001 -0.000000 + 0.433333 + -0.015993 0.016971 -0.025143 0.999412 + 0.000000 0.054001 0.000000 + 0.466667 + -0.016603 0.016361 -0.025876 0.999393 + 0.000000 0.054001 0.000000 + 0.500000 + -0.018556 0.017826 -0.025062 0.999355 + 0.000000 0.054001 0.000000 + 0.533333 + -0.020510 0.019290 -0.024248 0.999309 + -0.000000 0.054001 -0.000000 + 0.566667 + -0.022463 0.020754 -0.023434 0.999258 + 0.000000 0.054001 0.000000 + 0.600000 + -0.023440 0.022626 -0.023108 0.999202 + 0.000000 0.054001 0.000000 + 0.633333 + -0.024417 0.024498 -0.022782 0.999142 + -0.000000 0.054001 -0.000000 + 0.666667 + -0.025393 0.026369 -0.022456 0.999077 + 0.000000 0.054001 -0.000000 + 0.700000 + -0.025393 0.028078 -0.021479 0.999052 + 0.000000 0.054001 -0.000000 + 0.733334 + -0.023196 0.030397 -0.021234 0.999043 + -0.000000 0.054001 -0.000000 + 0.766667 + -0.020999 0.032717 -0.020990 0.999024 + -0.000000 0.054001 0.000000 + 0.800000 + -0.021244 0.035647 -0.021722 0.998902 + 0.000000 0.054001 0.000000 + 0.833334 + -0.021488 0.038576 -0.022453 0.998772 + 0.000000 0.054001 0.000000 + 0.866667 + -0.019780 0.040530 -0.020988 0.998762 + 0.000000 0.054001 0.000000 + 0.900000 + -0.018071 0.042483 -0.019523 0.998743 + 0.000000 0.054001 -0.000000 + 0.933334 + -0.018559 0.041750 -0.019767 0.998760 + 0.000000 0.054001 0.000000 + 0.966667 + -0.019047 0.041018 -0.020011 0.998776 + 0.000000 0.054001 0.000000 + 1.000000 + -0.019047 0.038576 -0.020500 0.998864 + 0.000000 0.054001 -0.000000 + 1.033334 + -0.018314 0.036623 -0.019524 0.998971 + 0.000000 0.054001 0.000000 + 1.066667 + -0.017582 0.034670 -0.018548 0.999072 + -0.000000 0.054001 -0.000000 + 1.100000 + -0.019046 0.032717 -0.020501 0.999073 + -0.000000 0.054001 0.000000 + 1.133334 + -0.020023 0.031252 -0.019525 0.999120 + 0.000000 0.054001 0.000000 + 1.166667 + -0.019046 0.030519 -0.018060 0.999189 + -0.000000 0.054001 -0.000000 + 1.200000 + -0.018720 0.027997 -0.020177 0.999229 + 0.000000 0.054001 -0.000000 + 1.233333 + -0.018394 0.025475 -0.022293 0.999258 + 0.000000 0.054001 -0.000000 + 1.266667 + -0.018069 0.022952 -0.024410 0.999275 + 0.000000 0.054001 0.000000 + 1.300000 + -0.016726 0.020267 -0.024410 0.999357 + 0.000000 0.054001 0.000000 + 1.333333 + -0.015382 0.017582 -0.024411 0.999429 + 0.000000 0.054001 -0.000000 + 1.366667 + -0.015993 0.016971 -0.025143 0.999412 + 0.000000 0.054001 0.000000 + 1.400000 + -0.016603 0.016361 -0.025876 0.999393 + 0.000000 0.054001 -0.000000 + 1.433333 + -0.018556 0.017826 -0.025062 0.999355 + -0.000000 0.054001 0.000000 + 1.466667 + -0.020510 0.019290 -0.024248 0.999309 + -0.000000 0.054001 0.000000 + 1.500000 + -0.022463 0.020754 -0.023434 0.999258 + 0.000000 0.054001 0.000000 + 1.533333 + -0.023440 0.022626 -0.023108 0.999202 + 0.000000 0.054001 0.000000 + 1.566666 + -0.024417 0.024498 -0.022782 0.999142 + 0.000000 0.054001 -0.000000 + 1.600000 + -0.025393 0.026369 -0.022456 0.999077 + 0.000000 0.054001 0.000000 + 1.633333 + -0.025393 0.028078 -0.021479 0.999052 + 0.000000 0.054001 -0.000000 + 1.666666 + -0.023196 0.030397 -0.021234 0.999043 + 0.000000 0.054001 0.000000 + 1.700000 + -0.020999 0.032717 -0.020990 0.999024 + 0.000000 0.054001 0.000000 + 1.733333 + -0.021244 0.035647 -0.021722 0.998902 + 0.000000 0.054001 0.000000 + 1.766666 + -0.021488 0.038576 -0.022453 0.998772 + 0.000000 0.054001 -0.000000 + 1.800000 + -0.019780 0.040530 -0.020988 0.998762 + -0.000000 0.054001 -0.000000 + 1.833333 + -0.018071 0.042482 -0.019523 0.998743 + 0.000000 0.054001 0.000000 + 1.866666 + -0.018559 0.041750 -0.019767 0.998760 + 0.000000 0.054001 -0.000000 + 1.899999 + -0.019047 0.041018 -0.020011 0.998776 + 0.000000 0.054001 0.000000 + 1.933333 + -0.019047 0.038576 -0.020500 0.998864 + 0.000000 0.054001 0.000000 + 1.966666 + -0.018314 0.036623 -0.019524 0.998971 + -0.000000 0.054001 -0.000000 + 1.999999 + -0.017582 0.034670 -0.018548 0.999072 + -0.000000 0.054001 -0.000000 + 2.033333 + -0.019046 0.032717 -0.020501 0.999073 + 0.000000 0.054001 0.000000 + 2.066666 + -0.020023 0.031252 -0.019525 0.999120 + 0.000000 0.054001 0.000000 + 2.099999 + -0.019046 0.030519 -0.018060 0.999190 + 0.000000 0.054001 0.000000 + 2.133333 + -0.018721 0.027997 -0.020177 0.999229 + 0.000000 0.054001 0.000000 + 2.166666 + -0.018395 0.025475 -0.022293 0.999258 + 0.000000 0.054001 -0.000000 + 2.199999 + -0.018069 0.022952 -0.024410 0.999275 + -0.000000 0.054001 0.000000 + 2.233333 + -0.016725 0.020267 -0.024410 0.999357 + 0.000000 0.054001 -0.000000 + 2.266666 + -0.015382 0.017582 -0.024411 0.999429 + 0.000000 0.054001 -0.000000 + 2.299999 + -0.015992 0.016971 -0.025143 0.999412 + 0.000000 0.054001 0.000000 + 2.333333 + -0.016603 0.016361 -0.025876 0.999393 + 0.000000 0.054001 0.000000 + 2.366666 + -0.018556 0.017825 -0.025062 0.999355 + 0.000000 0.054001 0.000001 + 2.399999 + -0.020509 0.019290 -0.024248 0.999309 + 0.000000 0.054001 0.000000 + 2.433332 + -0.022463 0.020754 -0.023434 0.999258 + 0.000000 0.054001 -0.000000 + 2.466666 + -0.023196 0.022585 -0.022945 0.999212 + 0.000000 0.054001 0.000000 + 2.499999 + -0.023928 0.024416 -0.022457 0.999163 + 0.000000 0.054001 0.000000 + 2.533332 + -0.024661 0.026247 -0.021968 0.999110 + 0.000000 0.054001 0.000000 + 2.566666 + -0.025393 0.028078 -0.021479 0.999052 + 0.000000 0.054001 0.000000 + 2.599999 + -0.023197 0.030397 -0.021234 0.999043 + -0.000000 0.054001 0.000000 + 2.633332 + -0.021000 0.032717 -0.020990 0.999023 + 0.000000 0.054001 0.000000 + 2.666666 + -0.021000 0.035647 -0.021477 0.998913 + 0.000000 0.054001 0.000000 + 2.699999 + -0.021000 0.038576 -0.021965 0.998794 + -0.000000 0.054001 -0.000000 + 2.733332 + -0.019780 0.040774 -0.021232 0.998747 + 0.000000 0.054001 -0.000001 + 2.766665 + -0.018559 0.042971 -0.020499 0.998694 + 0.000000 0.054001 0.000000 + 2.799999 + "C_Head_sjnt_0" + 85 + -0.103524 0.074208 -0.008288 0.991820 + 0.000000 0.054000 0.000000 + 0.000000 + -0.095712 0.073233 -0.010729 0.992654 + 0.000000 0.054000 0.000000 + 0.033333 + -0.089852 0.072256 -0.006579 0.993309 + 0.000000 0.054000 -0.000000 + 0.066667 + -0.090829 0.071278 0.000211 0.993312 + -0.000000 0.054000 -0.000000 + 0.100000 + -0.100594 0.069324 -0.000400 0.992509 + -0.000000 0.054000 -0.000000 + 0.133333 + -0.107430 0.068346 0.003308 0.991855 + -0.000000 0.054000 0.000000 + 0.166667 + -0.107430 0.066391 0.010265 0.991940 + -0.000000 0.054000 0.000000 + 0.200000 + -0.105477 0.064439 0.007579 0.992303 + -0.000000 0.054000 -0.000000 + 0.233333 + -0.107429 0.063464 -0.000264 0.992185 + -0.000000 0.054000 0.000000 + 0.266667 + -0.106453 0.061998 0.002818 0.992379 + 0.000000 0.054000 0.000000 + 0.300000 + -0.102547 0.060045 0.007334 0.992887 + -0.000000 0.054000 -0.000000 + 0.333333 + -0.100106 0.056383 0.008799 0.993339 + 0.000000 0.054000 0.000000 + 0.366667 + -0.097663 0.052721 0.010263 0.993769 + 0.000000 0.054000 0.000000 + 0.400000 + -0.099616 0.050767 0.010262 0.993677 + -0.000000 0.054000 -0.000000 + 0.433333 + -0.094247 0.051012 0.013925 0.994144 + 0.000000 0.054000 0.000000 + 0.466667 + -0.088874 0.051255 0.017587 0.994568 + 0.000000 0.054000 0.000000 + 0.500000 + -0.090827 0.052721 0.013681 0.994376 + 0.000000 0.054000 0.000000 + 0.533333 + -0.096687 0.054674 0.010263 0.993759 + 0.000000 0.054000 -0.000000 + 0.566667 + -0.102546 0.056138 0.010751 0.993085 + -0.000000 0.054000 0.000000 + 0.600000 + -0.112312 0.057601 0.011728 0.991933 + -0.000000 0.054000 -0.000000 + 0.633333 + -0.116218 0.059554 0.011240 0.991373 + 0.000000 0.054000 0.000000 + 0.666667 + -0.112314 0.061508 0.012950 0.991683 + 0.000000 0.054000 0.000000 + 0.700000 + -0.108406 0.063461 0.014659 0.991971 + -0.000000 0.054000 -0.000000 + 0.733334 + -0.111336 0.066390 0.015636 0.991439 + -0.000000 0.054000 -0.000000 + 0.766667 + -0.109384 0.069319 0.018567 0.991406 + -0.000000 0.054000 -0.000000 + 0.800000 + -0.103525 0.072249 0.019544 0.991807 + 0.000000 0.054000 0.000000 + 0.833334 + -0.098642 0.075180 0.015638 0.992156 + -0.000000 0.054000 -0.000000 + 0.866667 + -0.100113 0.075675 0.004530 0.992084 + 0.000000 0.054000 -0.000000 + 0.900000 + -0.101571 0.076161 -0.006578 0.991887 + -0.000000 0.054000 0.000000 + 0.933334 + -0.095712 0.074210 -0.010241 0.992586 + 0.000000 0.054000 0.000000 + 0.966667 + -0.090829 0.072256 -0.006579 0.993220 + 0.000000 0.054000 0.000000 + 1.000000 + -0.091805 0.071278 0.000057 0.993223 + -0.000000 0.054000 0.000000 + 1.033334 + -0.100594 0.069324 -0.000461 0.992509 + 0.000000 0.054000 0.000000 + 1.066667 + -0.107430 0.067369 0.003308 0.991922 + 0.000000 0.054000 0.000000 + 1.100000 + -0.107430 0.066391 0.010265 0.991940 + 0.000000 0.054000 -0.000000 + 1.133334 + -0.105477 0.064439 0.007579 0.992303 + 0.000000 0.054000 0.000000 + 1.166667 + -0.107429 0.063464 -0.000279 0.992185 + 0.000000 0.054000 0.000000 + 1.200000 + -0.106453 0.061998 0.002818 0.992379 + -0.000000 0.054000 -0.000000 + 1.233333 + -0.102547 0.060045 0.007334 0.992887 + -0.000000 0.054000 0.000000 + 1.266667 + -0.100106 0.056383 0.008799 0.993339 + 0.000000 0.054000 0.000000 + 1.300000 + -0.097663 0.052721 0.010263 0.993769 + -0.000000 0.054000 -0.000000 + 1.333333 + -0.099616 0.050767 0.010262 0.993677 + -0.000000 0.054000 -0.000000 + 1.366667 + -0.094247 0.051012 0.013925 0.994144 + 0.000000 0.054000 -0.000000 + 1.400000 + -0.088874 0.051255 0.017587 0.994568 + 0.000000 0.054000 0.000000 + 1.433333 + -0.090827 0.052721 0.013681 0.994376 + -0.000000 0.054000 -0.000000 + 1.466667 + -0.096687 0.054674 0.010263 0.993759 + 0.000000 0.054000 0.000000 + 1.500000 + -0.102546 0.056138 0.010751 0.993085 + -0.000000 0.054000 0.000000 + 1.533333 + -0.112312 0.057601 0.011728 0.991933 + 0.000000 0.054000 0.000000 + 1.566666 + -0.116218 0.059554 0.011240 0.991373 + -0.000000 0.054000 0.000000 + 1.600000 + -0.112314 0.061508 0.012950 0.991683 + 0.000000 0.054000 0.000000 + 1.633333 + -0.108406 0.063460 0.014659 0.991971 + -0.000000 0.054000 -0.000000 + 1.666666 + -0.111336 0.066390 0.015636 0.991439 + 0.000000 0.054000 0.000000 + 1.700000 + -0.109384 0.069319 0.018567 0.991406 + 0.000000 0.054000 0.000000 + 1.733333 + -0.103525 0.072249 0.019544 0.991807 + 0.000000 0.054000 0.000000 + 1.766666 + -0.098642 0.075180 0.015639 0.992156 + 0.000000 0.054000 0.000000 + 1.800000 + -0.100113 0.075675 0.004531 0.992084 + 0.000000 0.054000 -0.000000 + 1.833333 + -0.101571 0.076161 -0.006578 0.991887 + 0.000000 0.054000 0.000000 + 1.866666 + -0.095712 0.074210 -0.010241 0.992586 + 0.000000 0.054000 0.000000 + 1.899999 + -0.090829 0.072256 -0.006579 0.993220 + 0.000000 0.054000 -0.000000 + 1.933333 + -0.091805 0.071278 0.000057 0.993223 + 0.000000 0.054000 0.000000 + 1.966666 + -0.100594 0.069324 -0.000461 0.992509 + 0.000000 0.054000 0.000000 + 1.999999 + -0.107430 0.067369 0.003307 0.991922 + -0.000000 0.054000 0.000000 + 2.033333 + -0.107430 0.066391 0.010265 0.991940 + -0.000000 0.054000 0.000000 + 2.066666 + -0.105477 0.064439 0.007579 0.992303 + -0.000000 0.054000 0.000000 + 2.099999 + -0.107429 0.063464 -0.000279 0.992185 + -0.000000 0.054000 -0.000000 + 2.133333 + -0.106453 0.061998 0.002818 0.992379 + 0.000000 0.054000 0.000000 + 2.166666 + -0.102547 0.060045 0.007334 0.992887 + 0.000000 0.054000 0.000000 + 2.199999 + -0.100106 0.056383 0.008799 0.993339 + 0.000000 0.054000 0.000000 + 2.233333 + -0.097663 0.052721 0.010263 0.993769 + 0.000000 0.054000 0.000000 + 2.266666 + -0.099616 0.050767 0.010262 0.993677 + -0.000000 0.054000 -0.000000 + 2.299999 + -0.094247 0.051012 0.013925 0.994144 + 0.000000 0.054000 0.000000 + 2.333333 + -0.088874 0.051255 0.017587 0.994568 + 0.000000 0.054000 0.000000 + 2.366666 + -0.090827 0.052721 0.013681 0.994376 + 0.000000 0.054000 -0.000000 + 2.399999 + -0.096686 0.054674 0.010263 0.993759 + 0.000000 0.053999 0.000000 + 2.433332 + -0.102546 0.056138 0.010751 0.993085 + 0.000000 0.054000 0.000000 + 2.466666 + -0.112312 0.057601 0.011728 0.991933 + 0.000000 0.054000 0.000000 + 2.499999 + -0.116218 0.059554 0.011240 0.991373 + 0.000000 0.054000 0.000000 + 2.533332 + -0.112802 0.061508 0.012706 0.991630 + 0.000000 0.053999 0.000000 + 2.566666 + -0.109383 0.063460 0.014171 0.991871 + 0.000000 0.054000 0.000000 + 2.599999 + -0.111336 0.066390 0.015636 0.991439 + 0.000000 0.054000 0.000000 + 2.633332 + -0.109384 0.069319 0.019543 0.991387 + 0.000000 0.054000 0.000000 + 2.666666 + -0.103525 0.072249 0.020520 0.991787 + 0.000000 0.054000 0.000000 + 2.699999 + -0.098642 0.074204 0.015638 0.992229 + -0.000000 0.054000 -0.000000 + 2.733332 + -0.101091 0.074211 0.003676 0.992099 + 0.000000 0.054000 0.000000 + 2.766665 + -0.103524 0.074208 -0.008287 0.991820 + -0.000000 0.054000 -0.000000 + 2.799999 \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/LICENSE b/Engine/lib/JoltPhysics/Assets/LICENSE new file mode 100644 index 000000000..7e11a72c6 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/LICENSE @@ -0,0 +1,8 @@ +The following assets were taken from Horizon Zero Dawn: + +terrain1.bof and terrain2.bof contain the 'Mothers Heart' scene +convex_hulls.bin contains point clouds used as the source for convex hulls +heightfield1.bin contains a single 'tile' of terrain data +Human.tof and Human/*.tof contain the Aloy ragdoll setup and a couple of sample animations mapped onto the ragdoll + +Permission was granted by Guerrilla Games to release this under the same MIT license as the rest of the project. \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Racetracks/LICENSE.txt b/Engine/lib/JoltPhysics/Assets/Racetracks/LICENSE.txt new file mode 100644 index 000000000..0a041280b --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Racetracks/LICENSE.txt @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/Engine/lib/JoltPhysics/Assets/Racetracks/README.md b/Engine/lib/JoltPhysics/Assets/Racetracks/README.md new file mode 100644 index 000000000..51f499271 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Racetracks/README.md @@ -0,0 +1,3 @@ +Race tracks taken from: https://github.com/TUMFTM/racetrack-database + +See LICENSE.txt for license for these race tracks. \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Racetracks/Zandvoort.csv b/Engine/lib/JoltPhysics/Assets/Racetracks/Zandvoort.csv new file mode 100644 index 000000000..922cf8803 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Racetracks/Zandvoort.csv @@ -0,0 +1,865 @@ +# x_m,y_m,w_tr_right_m,w_tr_left_m +-1.683339,-1.878198,5.074,5.271 +0.151452,2.772507,5.099,5.295 +1.986397,7.423128,5.125,5.319 +3.821455,12.073677,5.150,5.343 +5.656587,16.724166,5.175,5.367 +7.491752,21.374607,5.200,5.391 +9.326909,26.025014,5.226,5.415 +11.162019,30.675397,5.251,5.439 +12.997042,35.325770,5.276,5.462 +14.831936,39.976144,5.301,5.486 +16.666662,44.626532,5.327,5.510 +18.501180,49.276946,5.352,5.534 +20.335449,53.927398,5.377,5.558 +22.169429,58.577901,5.402,5.582 +24.003080,63.228467,5.428,5.606 +25.836362,67.879107,5.453,5.630 +27.669244,72.529833,5.478,5.654 +29.501738,77.180644,5.503,5.678 +31.333865,81.831537,5.529,5.702 +33.165645,86.482511,5.554,5.726 +34.997100,91.133563,5.579,5.750 +36.828251,95.784691,5.604,5.774 +38.659117,100.435894,5.630,5.798 +40.489721,105.087167,5.655,5.822 +42.320083,109.738510,5.680,5.845 +44.150224,114.389921,5.706,5.869 +45.980165,119.041396,5.731,5.893 +47.809927,123.692934,5.756,5.917 +49.639531,128.344532,5.781,5.941 +51.468997,132.996189,5.807,5.965 +53.298346,137.647901,5.832,5.989 +55.127600,142.299668,5.857,6.013 +56.956780,146.951486,5.882,6.037 +58.785905,151.603353,5.908,6.061 +60.614998,156.255268,5.933,6.085 +62.444078,160.907227,5.958,6.109 +64.273168,165.559229,5.983,6.133 +66.102287,170.211271,6.009,6.157 +67.931458,174.863352,6.034,6.181 +69.760699,179.515468,6.059,6.205 +71.590034,184.167619,6.084,6.229 +73.419481,188.819800,6.110,6.252 +75.249063,193.472011,6.135,6.276 +77.078801,198.124249,6.160,6.300 +78.908714,202.776512,6.185,6.324 +80.738825,207.428798,6.211,6.348 +82.569153,212.081104,6.236,6.372 +84.399720,216.733428,6.261,6.396 +86.230547,221.385768,6.286,6.420 +88.061655,226.038121,6.312,6.444 +89.893064,230.690486,6.337,6.468 +91.724795,235.342861,6.362,6.492 +93.556870,239.995242,6.388,6.516 +95.389309,244.647628,6.413,6.540 +97.222133,249.300016,6.438,6.564 +99.055363,253.952405,6.463,6.588 +100.889021,258.604792,6.489,6.612 +102.723126,263.257175,6.514,6.635 +104.557699,267.909552,6.539,6.659 +106.392763,272.561920,6.564,6.683 +108.228337,277.214277,6.590,6.707 +110.064442,281.866621,6.615,6.731 +111.901100,286.518949,6.640,6.755 +113.738331,291.171261,6.665,6.779 +115.576156,295.823552,6.691,6.803 +117.414596,300.475821,6.716,6.827 +119.253672,305.128067,6.741,6.851 +121.093405,309.780286,6.766,6.875 +122.933816,314.432476,6.792,6.899 +124.774925,319.084635,6.816,6.923 +126.651699,323.714334,6.669,7.006 +128.738887,328.209430,6.522,7.089 +131.246183,332.435357,6.522,6.226 +134.379060,336.257639,6.092,6.062 +138.182494,339.545392,5.677,6.289 +142.495039,342.172347,5.848,6.230 +147.141834,344.013044,6.038,6.065 +151.981474,345.037089,5.885,6.029 +156.945280,345.420747,6.132,5.821 +161.974127,345.367418,6.058,5.924 +167.008204,345.065211,5.807,6.178 +171.977944,344.482774,5.789,6.230 +176.806475,343.424482,5.869,6.193 +181.417183,341.694720,5.987,6.121 +185.749365,339.242190,5.914,6.218 +189.762356,336.197440,5.948,6.207 +193.416775,332.702620,6.070,6.105 +196.666967,328.885936,6.207,5.965 +199.423062,324.777280,5.742,6.233 +201.576184,320.364273,5.591,6.084 +203.023502,315.640256,5.646,5.825 +203.748491,310.681493,5.785,5.710 +203.798453,305.625580,5.801,5.643 +203.222189,300.611552,5.651,5.577 +202.092240,295.744077,5.363,5.608 +200.571389,290.997188,5.182,5.600 +198.843858,286.313886,5.142,5.539 +197.076965,281.642398,5.102,5.479 +195.319515,276.967602,5.062,5.418 +193.569611,272.290054,5.022,5.358 +191.825166,267.610371,4.982,5.297 +190.084090,262.929171,4.942,5.236 +188.344295,258.247069,4.903,5.176 +186.603693,253.564683,4.863,5.115 +184.860195,248.882630,4.823,5.055 +183.111713,244.201525,4.783,4.994 +181.356158,239.521985,4.743,4.934 +179.591443,234.844628,4.703,4.873 +177.815478,230.170070,4.664,4.813 +176.026175,225.498928,4.624,4.752 +174.221466,220.831812,4.584,4.692 +172.402865,216.168291,4.544,4.631 +170.579569,211.505702,4.504,4.571 +168.761766,206.841091,4.464,4.510 +166.959647,202.171505,4.424,4.450 +165.183399,197.493991,4.385,4.389 +163.443211,192.805596,4.345,4.329 +161.749274,188.103367,4.305,4.268 +160.111775,183.384351,4.190,4.272 +158.540904,178.645594,4.021,4.323 +157.046851,173.884144,4.128,4.318 +155.639803,169.097048,4.247,4.300 +154.329950,164.281352,4.406,4.212 +153.127482,159.434104,4.493,4.107 +152.040841,154.553794,4.555,3.996 +151.071739,149.644481,4.460,4.003 +150.220267,144.711567,4.332,4.045 +149.486513,139.760453,4.374,4.113 +148.870566,134.796540,4.291,4.230 +148.372516,129.825230,4.183,4.336 +147.992434,124.851911,4.140,4.294 +147.726990,119.879465,4.200,4.285 +147.565511,114.905358,4.313,4.294 +147.496360,109.926350,4.273,4.313 +147.507905,104.939200,4.175,4.335 +147.588509,99.940667,4.077,4.357 +147.726539,94.927512,4.132,4.316 +147.909661,89.896706,4.206,4.266 +148.099958,84.853004,4.281,4.217 +148.227166,79.811000,4.355,4.167 +148.218945,74.785923,4.352,4.137 +148.002954,69.792997,4.281,4.126 +147.506854,64.847451,4.275,4.132 +146.658303,59.964509,4.310,4.205 +145.388472,55.160670,4.205,4.498 +143.678977,50.470695,4.146,4.624 +141.549258,45.943039,4.172,4.747 +139.019670,41.626490,4.262,4.889 +136.110565,37.569834,4.418,4.983 +132.842300,33.821858,4.451,4.599 +129.235227,30.431348,4.451,4.398 +125.312766,27.436881,4.418,4.409 +121.120144,24.804331,4.355,4.278 +116.712056,22.468034,4.270,4.348 +112.143230,20.362198,4.184,4.427 +107.468396,18.421033,4.099,4.507 +102.742286,16.578745,4.048,4.545 +98.019629,14.769545,4.095,4.463 +93.342513,12.942394,4.142,4.381 +88.704216,11.103219,4.189,4.300 +84.086235,9.271696,4.236,4.218 +79.470070,7.467499,4.284,4.136 +74.837217,5.710302,4.331,4.055 +70.169176,4.019780,4.278,4.105 +65.447529,2.415476,4.160,4.240 +60.669630,0.892412,4.042,4.375 +55.866984,-0.607489,4.038,4.423 +51.075564,-2.149247,4.236,4.314 +46.331341,-3.797882,4.434,4.205 +41.670287,-5.618416,4.632,4.096 +37.128373,-7.675868,4.635,4.242 +32.743211,-10.035645,4.623,4.392 +28.612354,-12.777269,4.606,4.509 +24.909111,-15.998105,4.888,4.185 +21.811325,-19.796169,4.673,4.211 +19.439269,-24.181707,4.222,4.435 +17.789594,-28.976489,4.444,4.545 +16.842948,-33.977887,4.564,4.573 +16.579252,-39.007227,4.818,4.705 +16.975636,-43.977492,5.060,4.754 +18.008569,-48.823586,5.137,4.584 +19.654514,-53.480415,4.896,4.452 +21.889938,-57.882883,4.802,4.511 +24.691308,-61.965894,4.744,4.612 +28.034938,-65.664418,4.670,4.685 +31.872160,-68.924115,4.762,4.498 +36.101648,-71.713185,4.797,4.469 +40.615402,-74.002680,4.672,4.788 +45.309127,-75.747824,4.864,4.612 +50.128975,-76.688113,5.130,4.321 +55.040283,-76.579563,4.952,4.341 +59.946477,-75.810565,4.752,4.290 +64.789826,-74.708054,4.543,4.150 +69.577538,-73.344400,4.460,4.132 +74.320695,-71.776786,4.424,4.159 +79.030380,-70.062396,4.388,4.186 +83.717677,-68.258412,4.352,4.213 +88.393668,-66.422017,4.316,4.240 +93.068996,-64.607786,4.280,4.268 +97.748404,-62.835178,4.244,4.295 +102.432408,-61.098522,4.208,4.322 +107.121432,-59.391600,4.172,4.349 +111.815902,-57.708192,4.136,4.377 +116.516242,-56.042081,4.100,4.404 +121.222878,-54.387047,4.064,4.431 +125.936245,-52.737906,4.028,4.458 +130.656867,-51.096499,3.992,4.485 +135.385298,-49.467589,3.956,4.513 +140.122098,-47.855949,4.007,4.456 +144.867821,-46.266353,4.087,4.372 +149.623025,-44.703573,4.167,4.288 +154.388268,-43.172382,4.247,4.203 +159.164104,-41.677554,4.298,4.120 +163.951092,-40.223862,4.334,4.036 +168.749789,-38.816079,4.370,3.953 +173.560750,-37.458978,4.405,3.869 +178.384534,-36.157332,4.254,4.031 +183.221696,-34.915914,4.064,4.244 +188.072792,-33.739486,3.874,4.456 +192.938144,-32.630868,3.876,4.512 +197.817589,-31.588837,3.951,4.510 +202.710900,-30.611665,4.026,4.507 +207.617853,-29.697620,4.115,4.497 +212.538223,-28.844975,4.216,4.481 +217.471784,-28.052000,4.345,4.438 +222.418294,-27.317078,4.570,4.297 +227.376885,-26.642445,4.794,4.157 +232.345927,-26.035039,4.806,4.423 +237.323747,-25.502088,4.795,4.733 +242.308667,-25.050816,4.804,4.968 +247.299013,-24.688449,4.870,4.985 +252.293109,-24.422213,4.936,5.003 +257.289037,-24.259478,4.961,5.020 +262.283974,-24.208158,4.971,5.038 +267.274885,-24.276290,4.800,5.101 +272.258736,-24.471913,4.628,5.164 +277.232491,-24.803068,4.505,5.156 +282.193116,-25.277793,4.486,5.000 +287.137588,-25.904062,4.466,4.845 +292.064716,-26.679188,4.474,4.579 +296.977157,-27.578124,4.488,4.286 +301.878054,-28.573005,4.503,3.993 +306.770548,-29.635967,4.404,3.982 +311.657780,-30.739145,4.285,4.017 +316.542892,-31.854674,4.167,4.051 +321.428992,-32.955036,4.096,4.095 +326.318026,-34.024611,4.133,4.158 +331.210506,-35.062414,4.169,4.222 +336.106862,-36.068357,4.205,4.286 +341.007518,-37.042351,4.225,4.300 +345.912902,-37.984309,4.219,4.240 +350.823442,-38.894142,4.214,4.181 +355.739563,-39.771763,4.209,4.121 +360.661693,-40.617082,4.204,4.062 +365.590258,-41.430014,4.198,4.003 +370.525686,-42.210468,4.181,3.995 +375.468403,-42.958358,4.141,4.092 +380.418836,-43.673594,4.100,4.190 +385.377412,-44.356090,4.194,4.121 +390.344264,-45.001791,4.371,3.948 +395.317475,-45.579028,4.443,3.916 +400.294259,-46.044395,4.418,4.015 +405.271826,-46.354443,4.385,4.118 +410.247385,-46.465723,4.282,4.258 +415.218148,-46.334784,4.178,4.398 +420.181323,-45.918177,4.224,4.298 +425.133987,-45.197781,4.323,4.108 +430.072713,-44.251288,4.344,4.070 +434.993954,-43.179046,4.316,4.125 +439.894009,-42.078959,4.281,4.177 +444.763823,-40.963691,4.231,4.223 +449.587719,-39.740469,4.201,4.249 +454.349640,-38.310236,4.266,4.175 +459.038639,-36.617037,4.326,4.089 +463.654604,-34.696295,4.371,3.972 +468.198805,-32.595092,4.383,3.886 +472.673103,-30.359601,3.976,4.184 +477.087549,-28.023365,3.990,4.182 +481.458197,-25.610672,4.119,4.098 +485.800998,-23.145258,4.249,4.014 +490.123304,-20.638911,4.379,3.930 +494.421825,-18.088632,4.371,3.952 +498.692612,-15.490497,4.249,4.062 +502.931711,-12.840586,4.126,4.173 +507.135172,-10.134977,4.004,4.283 +511.299044,-7.369750,4.089,4.144 +515.423163,-4.546296,4.176,4.003 +519.521744,-1.686182,4.263,3.862 +523.612415,1.184239,4.166,3.903 +527.712803,4.038614,3.966,4.047 +531.840536,6.850589,3.819,4.161 +536.013241,9.593812,3.869,4.167 +540.248511,12.241964,4.004,4.106 +544.557752,14.774904,4.127,4.031 +548.939186,17.185655,4.102,4.026 +553.389343,19.468929,4.048,4.004 +557.904756,21.619437,3.997,4.001 +562.481955,23.631891,3.949,4.032 +567.117471,25.501002,3.951,4.119 +571.807805,27.221672,3.978,4.235 +576.548384,28.795486,4.095,4.320 +581.333297,30.232374,4.258,4.389 +586.156546,31.542788,4.369,4.434 +591.012137,32.737181,4.398,4.439 +595.894073,33.826004,4.428,4.443 +600.796359,34.819711,4.342,4.407 +605.713335,35.726460,4.185,4.346 +610.644123,36.522011,4.027,4.284 +615.591378,37.158137,4.053,4.379 +620.557840,37.586044,4.089,4.483 +625.544317,37.776802,4.175,4.408 +630.544207,37.777603,4.261,4.331 +635.549133,37.653867,4.305,4.272 +640.551532,37.465775,4.266,4.246 +645.549590,37.236469,4.228,4.220 +650.543968,36.973127,4.189,4.195 +655.535339,36.682867,4.151,4.169 +660.524373,36.372805,4.113,4.143 +665.511744,36.050057,4.205,4.209 +670.498122,35.721741,4.298,4.277 +675.484179,35.394973,4.392,4.344 +680.470588,35.076869,4.485,4.411 +685.458019,34.774546,4.578,4.478 +690.447146,34.495121,4.672,4.545 +695.438639,34.245711,4.765,4.612 +700.433170,34.033432,4.859,4.679 +705.431408,33.865362,4.912,4.711 +710.433423,33.741608,4.827,4.620 +715.437997,33.647216,4.743,4.530 +720.443740,33.565270,4.658,4.439 +725.449265,33.478855,4.574,4.348 +730.453184,33.371056,4.489,4.258 +735.454108,33.224956,4.405,4.167 +740.450587,33.023502,4.286,4.211 +745.438840,32.744590,4.134,4.392 +750.412147,32.359732,3.981,4.572 +755.363599,31.840032,3.878,4.650 +760.286286,31.156595,3.899,4.616 +765.173300,30.280525,4.058,4.459 +770.017731,29.182924,4.231,4.252 +774.811717,27.841028,4.260,4.180 +779.543702,26.255866,4.236,4.158 +784.201230,24.434244,4.119,4.268 +788.771846,22.382966,4.080,4.251 +793.243097,20.108838,4.203,3.975 +797.602526,17.618665,4.216,4.021 +801.837680,14.919252,4.222,4.103 +805.936103,12.017403,4.226,4.225 +809.885342,8.919924,4.235,4.237 +813.672940,5.633620,4.249,4.191 +817.286445,2.165295,4.283,4.160 +820.713399,-1.478244,4.332,4.094 +823.941350,-5.290194,4.351,4.032 +826.957948,-9.263686,3.868,4.384 +829.754717,-13.389548,3.924,4.341 +832.328095,-17.655687,4.092,4.272 +834.674835,-22.049819,4.085,4.457 +836.791692,-26.559662,4.044,4.341 +838.675419,-31.172934,3.951,4.294 +840.322770,-35.877353,3.873,4.297 +841.730499,-40.660635,3.942,4.140 +842.895359,-45.510499,4.032,4.063 +843.814104,-50.414663,4.113,4.038 +844.483488,-55.360842,4.079,4.147 +844.900265,-60.336757,4.221,4.148 +845.061188,-65.330123,4.272,4.158 +844.963011,-70.328658,4.222,4.184 +844.603481,-75.319993,4.123,4.224 +843.987444,-80.291123,4.229,4.096 +843.122839,-85.228773,4.214,4.084 +842.017620,-90.119662,4.126,4.175 +840.679739,-94.950513,4.017,4.390 +839.117149,-99.708047,4.070,4.387 +837.337803,-104.378985,4.045,4.431 +835.352725,-108.954255,4.002,4.435 +833.184895,-113.441146,3.951,4.377 +830.860195,-117.850926,3.900,4.319 +828.404511,-122.194866,3.849,4.261 +825.843726,-126.484231,3.798,4.204 +823.203724,-130.730292,3.811,4.173 +820.510358,-134.944303,3.852,4.154 +817.783350,-139.135229,3.894,4.135 +815.029104,-143.307047,3.935,4.115 +812.252270,-147.463082,3.976,4.096 +809.457503,-151.606658,4.018,4.077 +806.649452,-155.741097,4.043,4.067 +803.832772,-159.869725,4.035,4.073 +801.012113,-163.995864,4.028,4.078 +798.192128,-168.122838,4.021,4.084 +795.377469,-172.253972,4.014,4.090 +792.572788,-176.392589,4.006,4.096 +789.782738,-180.542012,4.016,4.084 +787.011970,-184.705566,4.062,4.035 +784.265137,-188.886574,4.108,3.985 +781.548155,-193.088638,4.154,3.936 +778.871892,-197.316448,4.187,3.912 +776.248431,-201.574960,4.213,3.905 +773.689850,-205.869131,4.226,3.963 +771.208232,-210.203916,4.218,4.136 +768.815657,-214.584272,4.326,4.338 +766.524154,-219.015133,4.587,4.577 +764.335653,-223.497073,4.847,4.816 +762.229923,-228.021102,5.174,5.141 +760.183793,-232.576960,5.514,5.484 +758.174091,-237.154385,5.854,5.826 +756.177647,-241.743118,6.194,6.169 +754.171288,-246.332898,6.534,6.512 +752.132210,-250.913573,6.875,6.854 +750.051474,-255.479086,6.929,6.928 +747.937913,-260.028628,6.935,6.955 +745.801525,-264.561735,6.941,6.983 +743.652310,-269.077941,6.947,7.011 +741.500266,-273.576782,6.953,7.038 +739.355392,-278.057794,6.959,7.062 +737.227192,-282.522008,6.957,6.995 +735.117889,-286.992512,6.954,6.927 +733.024156,-291.509202,6.952,6.860 +730.942527,-296.112395,6.949,6.793 +728.838033,-300.796250,6.947,6.725 +726.550918,-305.372085,6.816,6.838 +723.890534,-309.605955,6.657,7.124 +720.690584,-313.287789,6.919,7.008 +716.962948,-316.382204,6.936,6.563 +712.798664,-318.931422,6.330,7.057 +708.289129,-320.978019,6.497,7.072 +703.525739,-322.564569,6.586,7.140 +698.599890,-323.733646,6.635,7.236 +693.602980,-324.527826,7.056,6.882 +688.609823,-324.991490,7.328,6.647 +683.631014,-325.176014,7.024,6.932 +678.661600,-325.134471,6.721,7.218 +673.696625,-324.919930,6.832,7.143 +668.731136,-324.585464,6.953,7.059 +663.760179,-324.184143,7.018,7.031 +658.778821,-323.768904,6.947,7.138 +653.786008,-323.367672,6.875,7.244 +648.789087,-322.954242,6.929,7.170 +643.796500,-322.495333,7.011,7.054 +638.816689,-321.957669,7.093,6.939 +633.858098,-321.307969,7.122,6.893 +628.929168,-320.512955,7.079,6.942 +624.038261,-319.539882,7.030,6.996 +619.190736,-318.375604,6.783,7.274 +614.388155,-317.031783,6.537,7.552 +609.631833,-315.521672,6.759,7.267 +604.923088,-313.858527,7.030,6.923 +600.263236,-312.055602,7.123,6.884 +595.653594,-310.126153,7.190,6.891 +591.095298,-308.081827,7.140,6.938 +586.588781,-305.928036,7.021,7.008 +582.134305,-303.668679,6.893,7.134 +577.732134,-301.307655,6.749,7.356 +573.382530,-298.848864,6.804,7.293 +569.085755,-296.296203,6.932,7.126 +564.842074,-293.653573,7.060,6.958 +560.651748,-290.924873,7.039,6.927 +556.515040,-288.114002,6.945,6.961 +552.432213,-285.224858,6.856,6.995 +548.403530,-282.261342,6.963,7.018 +544.429254,-279.227351,7.071,7.042 +540.509648,-276.126786,7.045,7.143 +536.646058,-272.962511,6.921,7.301 +532.879958,-269.699105,6.796,7.459 +529.303798,-266.252512,6.800,7.424 +526.013321,-262.535532,6.982,7.125 +523.106293,-258.472868,7.046,6.955 +520.695052,-254.074915,6.962,6.947 +518.898317,-249.389602,6.882,7.008 +517.832775,-244.470660,6.727,7.126 +517.585351,-239.453276,6.760,7.127 +518.220595,-234.533878,6.960,6.976 +519.802514,-229.910386,6.644,7.012 +522.334949,-225.730525,6.697,7.030 +525.588832,-221.947703,6.723,7.076 +529.278745,-218.468315,6.755,7.116 +533.145068,-215.207132,7.006,6.938 +537.111602,-212.138479,7.135,6.844 +541.181603,-209.262478,6.882,7.016 +545.358650,-206.579354,6.630,7.189 +549.646318,-204.089333,6.583,7.245 +554.048185,-201.792641,6.776,7.166 +558.567826,-199.689504,6.962,7.066 +563.205028,-197.787576,7.142,6.952 +567.944951,-196.123167,7.104,6.998 +572.769226,-194.739502,6.943,7.135 +577.659441,-193.677704,6.782,7.272 +582.595565,-192.902588,6.832,7.157 +587.555526,-192.282824,6.891,7.032 +592.517155,-191.681168,6.950,6.907 +597.464671,-191.000804,7.008,6.782 +602.396071,-190.232186,7.067,6.656 +607.311150,-189.377138,7.078,6.584 +612.209702,-188.437485,6.754,6.880 +617.091520,-187.415051,6.736,6.909 +621.956399,-186.311660,6.885,6.792 +626.804133,-185.129135,6.995,6.731 +631.634516,-183.869300,7.081,6.705 +636.447341,-182.533981,7.031,6.778 +641.242404,-181.125000,6.926,6.889 +646.019497,-179.644181,6.822,7.001 +650.778415,-178.093350,6.911,6.915 +655.518952,-176.474329,7.032,6.797 +660.238753,-174.785985,7.152,6.679 +664.927143,-173.015721,7.144,6.677 +669.571431,-171.148166,6.832,6.948 +674.158924,-169.167949,6.519,7.220 +678.676932,-167.059698,6.652,7.059 +683.112764,-164.808044,7.010,6.679 +687.453615,-162.397497,7.367,6.300 +691.665455,-159.790647,7.318,6.459 +695.668265,-156.902579,7.235,6.631 +699.376004,-153.642165,7.092,6.768 +702.706093,-149.926475,6.881,6.943 +705.625359,-145.789734,6.597,7.155 +708.137497,-141.353584,6.711,7.081 +710.246759,-136.740516,6.913,6.949 +711.945681,-132.028298,7.275,6.712 +713.212100,-127.238602,7.271,6.600 +714.022926,-122.389546,7.233,6.584 +714.355066,-117.499248,7.183,6.721 +714.185428,-112.585823,7.151,6.829 +713.490920,-107.667391,7.131,6.916 +712.250145,-102.766987,6.929,6.984 +710.465448,-97.976495,6.713,7.023 +708.156646,-93.438475,7.013,6.892 +705.343960,-89.296659,7.275,6.739 +702.055119,-85.657540,7.465,6.546 +698.346209,-82.486891,7.379,6.678 +694.280014,-79.717258,6.996,7.159 +689.919273,-77.291912,7.046,7.064 +685.326428,-75.228159,7.189,6.846 +680.563791,-73.574557,7.133,6.834 +675.693600,-72.379388,7.037,6.865 +670.765309,-71.627906,7.088,6.839 +665.801465,-71.172685,7.209,6.787 +660.821215,-70.849523,7.175,6.820 +655.840166,-70.524248,6.962,6.952 +650.860639,-70.175383,6.793,6.998 +645.881844,-69.807882,6.707,6.881 +640.902988,-69.426694,6.621,6.763 +635.923278,-69.036773,6.535,6.646 +630.941924,-68.643070,6.449,6.528 +625.958135,-68.250537,6.363,6.411 +620.971472,-67.864144,6.277,6.293 +615.982233,-67.488901,6.192,6.175 +610.990811,-67.129823,6.093,6.032 +605.997598,-66.791923,5.973,5.842 +601.002986,-66.480216,5.852,5.652 +596.007369,-66.199717,5.791,5.575 +591.011138,-65.955440,5.734,5.551 +586.014686,-65.752400,5.650,5.580 +581.018405,-65.595610,5.565,5.609 +576.022688,-65.490086,5.481,5.638 +571.027927,-65.440841,5.534,5.590 +566.034515,-65.452890,5.705,5.477 +561.042844,-65.531248,5.876,5.364 +556.053237,-65.679211,5.782,5.483 +551.065759,-65.893563,5.623,5.659 +546.080411,-66.169548,6.015,6.094 +541.097195,-66.502409,6.506,6.577 +536.116113,-66.887389,6.677,6.700 +531.137167,-67.319731,6.553,6.493 +526.160360,-67.794679,6.430,6.286 +521.185692,-68.307476,6.306,6.079 +516.213166,-68.853365,6.182,5.872 +511.242784,-69.427590,6.058,5.664 +506.274548,-70.025392,5.935,5.457 +501.308460,-70.642017,5.896,5.416 +496.344521,-71.272706,6.002,5.654 +491.382740,-71.912804,6.107,5.892 +486.423329,-72.561174,6.212,6.130 +481.466756,-73.221067,6.318,6.368 +476.513507,-73.896006,6.381,6.522 +471.564064,-74.589515,6.270,6.332 +466.618913,-75.305119,6.158,6.142 +461.678537,-76.046340,6.047,5.952 +456.743421,-76.816702,5.936,5.762 +451.814048,-77.619730,5.824,5.571 +446.890904,-78.458948,5.713,5.381 +441.974472,-79.337878,5.621,5.239 +437.065236,-80.260046,5.595,5.267 +432.163681,-81.228974,5.570,5.295 +427.270291,-82.248187,5.544,5.323 +422.385725,-83.321083,5.518,5.351 +417.511874,-84.450176,5.515,5.365 +412.651163,-85.637598,5.517,5.377 +407.806015,-86.885480,5.518,5.389 +402.978857,-88.195952,5.519,5.401 +398.172113,-89.571147,5.520,5.432 +393.388210,-91.013195,5.520,5.463 +388.624995,-92.511917,5.520,5.495 +383.862725,-94.009802,5.520,5.526 +379.077425,-95.437961,5.521,5.557 +374.245857,-96.729642,5.517,5.554 +369.371439,-97.895329,5.513,5.549 +364.491077,-99.042554,5.509,5.545 +359.643725,-100.284782,5.510,5.531 +354.853551,-101.692947,5.546,5.452 +350.112834,-103.246245,5.582,5.374 +345.409702,-104.911934,5.649,5.341 +340.732282,-106.657272,6.154,5.936 +336.068704,-108.449520,6.658,6.530 +331.407095,-110.255934,7.163,7.125 +326.735781,-112.044283,7.177,7.169 +322.050266,-113.800844,6.985,6.979 +317.355113,-115.535242,6.792,6.790 +312.655461,-117.258596,6.599,6.601 +307.956451,-118.982024,6.406,6.412 +303.263223,-120.716643,6.214,6.223 +298.580917,-122.473571,6.021,6.034 +293.913754,-124.262073,5.828,5.844 +289.262383,-126.084219,5.816,5.779 +284.626590,-127.940337,6.002,5.849 +280.006160,-129.830753,6.188,5.920 +275.400879,-131.755795,6.375,5.990 +270.810530,-133.715789,6.561,6.061 +266.234900,-135.711061,6.747,6.131 +261.673772,-137.741939,6.916,6.212 +257.126933,-139.808750,6.896,6.400 +252.594167,-141.911820,6.877,6.588 +248.075260,-144.051476,6.857,6.776 +243.569995,-146.228045,6.837,6.964 +239.078159,-148.441854,6.817,7.152 +234.599579,-150.693176,6.982,7.327 +230.135655,-152.980290,7.413,7.481 +225.689788,-155.298942,7.844,7.636 +221.265508,-157.644713,8.276,7.791 +216.866345,-160.013182,8.296,7.724 +212.495831,-162.399931,8.123,7.553 +208.157494,-164.800540,7.950,7.382 +203.853512,-167.212860,7.777,7.211 +199.566372,-169.667776,7.604,7.039 +195.263682,-172.221124,7.431,6.868 +190.912688,-174.929357,7.258,6.697 +186.487983,-177.724071,7.078,6.551 +181.992983,-180.047120,6.789,6.764 +177.438175,-181.220304,6.203,6.945 +172.870986,-180.656336,6.339,7.243 +168.602825,-178.417542,6.636,6.911 +165.010059,-174.878403,7.071,6.883 +162.122071,-170.618791,7.181,6.805 +159.750492,-166.150514,7.152,6.715 +157.558157,-161.658507,7.123,6.624 +155.189121,-157.286255,7.093,6.533 +152.359584,-153.167518,7.064,6.443 +149.057687,-149.399398,6.723,6.016 +145.335628,-146.070364,6.197,5.369 +141.245605,-143.268882,5.813,5.483 +136.839819,-141.083420,5.615,5.650 +132.170467,-139.602446,5.607,5.556 +127.289888,-138.914002,5.642,5.330 +122.272466,-139.038412,5.431,5.067 +117.238594,-139.854676,5.131,4.831 +112.314429,-141.224096,4.822,4.830 +107.623328,-143.018285,4.742,4.689 +103.250890,-145.248063,4.859,4.429 +99.255600,-148.024195,4.934,4.321 +95.696653,-151.455576,4.649,4.520 +92.675502,-155.519437,4.528,4.649 +90.344115,-160.035622,4.667,4.596 +88.856582,-164.815027,4.703,4.596 +88.243937,-169.712396,4.812,4.552 +88.286263,-174.671888,4.788,4.429 +88.733063,-179.648558,4.874,4.484 +89.374668,-184.606576,4.960,4.568 +90.149191,-189.543100,4.955,4.566 +91.028177,-194.462751,4.950,4.564 +91.983170,-199.370149,4.945,4.563 +92.985716,-204.269917,4.940,4.561 +94.007360,-209.166676,4.934,4.559 +95.019718,-214.065034,4.929,4.558 +96.004832,-218.967894,4.924,4.556 +96.965993,-223.874674,4.919,4.555 +97.909081,-228.784371,4.914,4.553 +98.839976,-233.695981,4.909,4.551 +99.764556,-238.608499,4.904,4.550 +100.688701,-243.520920,4.898,4.548 +101.618197,-248.432257,4.893,4.546 +102.555794,-253.342056,4.888,4.545 +103.500606,-258.250500,4.883,4.543 +104.451536,-263.157814,4.878,4.542 +105.407485,-268.064218,4.873,4.540 +106.367355,-272.969935,4.868,4.538 +107.330048,-277.875186,4.862,4.537 +108.294464,-282.780196,4.857,4.535 +109.259505,-287.685184,4.852,4.534 +110.224074,-292.590374,4.847,4.532 +111.187071,-297.495988,4.842,4.530 +112.147399,-302.402248,4.837,4.529 +113.103958,-307.309376,4.832,4.527 +114.055651,-312.217594,4.826,4.525 +115.001615,-317.127073,4.821,4.524 +115.942575,-322.037631,4.816,4.522 +116.879915,-326.948942,4.811,4.521 +117.815019,-331.860680,4.806,4.519 +118.749270,-336.772517,4.801,4.517 +119.684054,-341.684127,4.795,4.516 +120.620755,-346.595184,4.790,4.514 +121.560757,-351.505360,4.785,4.512 +122.505444,-356.414329,4.780,4.511 +123.456202,-361.321764,4.775,4.509 +124.414414,-366.227339,4.770,4.508 +125.381466,-371.130726,4.765,4.506 +126.358740,-376.031599,4.759,4.504 +127.347598,-380.929639,4.754,4.503 +128.345619,-385.825549,4.749,4.501 +129.342556,-390.722158,4.744,4.499 +130.327190,-395.622556,4.739,4.498 +131.288302,-400.529834,4.734,4.496 +132.214673,-405.447083,4.729,4.495 +133.095083,-410.377394,4.683,4.590 +133.917404,-415.323672,4.623,4.720 +134.638923,-420.282615,4.457,4.923 +135.179778,-425.243373,4.219,5.176 +135.457865,-430.194646,4.345,5.035 +135.391083,-435.125129,4.520,4.798 +134.897330,-440.023522,4.740,4.485 +133.894503,-444.878522,4.971,4.557 +132.336811,-449.670650,5.116,4.317 +130.312854,-454.350171,4.238,4.713 +127.942320,-458.860348,4.493,4.717 +125.341900,-463.144788,4.832,4.446 +122.528502,-467.158487,4.407,5.135 +119.398290,-470.870226,4.540,5.028 +115.840666,-474.249571,4.692,4.847 +111.815858,-477.260106,4.796,4.742 +107.429983,-479.853095,4.993,4.883 +102.807143,-481.978282,5.144,4.671 +98.066603,-483.592601,4.997,4.496 +93.262909,-484.749189,4.346,5.074 +88.404440,-485.569807,4.216,5.375 +83.498594,-486.176411,4.600,5.017 +78.553298,-486.648841,4.913,4.723 +73.577110,-487.016376,4.873,4.744 +68.578624,-487.305298,4.832,4.766 +63.566436,-487.541894,4.792,4.787 +58.549142,-487.752447,4.752,4.809 +53.535335,-487.963242,4.712,4.830 +48.533082,-488.198747,4.671,4.852 +43.543349,-488.459106,4.631,4.874 +38.562040,-488.727119,4.591,4.895 +33.584950,-488.985207,4.550,4.917 +28.607876,-489.215796,4.510,4.938 +23.626611,-489.401309,4.494,4.943 +18.636952,-489.524170,4.592,4.871 +13.635726,-489.567169,4.690,4.799 +8.626745,-489.515580,4.791,4.707 +3.616713,-489.355702,4.905,4.545 +-1.387655,-489.073840,4.987,4.419 +-6.379646,-488.656298,4.833,4.555 +-11.352545,-488.089378,4.681,4.685 +-16.299639,-487.359387,4.536,4.799 +-21.214299,-486.455141,4.463,4.853 +-26.090210,-485.374739,4.576,4.755 +-30.921130,-484.118421,4.582,4.768 +-35.700815,-482.686423,4.522,4.848 +-40.423024,-481.078986,4.498,4.905 +-45.081514,-479.296347,4.487,4.948 +-49.670044,-477.338752,4.568,4.879 +-54.182501,-475.207651,4.658,4.797 +-58.613044,-472.906981,4.765,4.683 +-62.955864,-470.440990,4.830,4.597 +-67.205151,-467.813926,4.720,4.624 +-71.355097,-465.030037,4.629,4.657 +-75.399894,-462.093570,4.584,4.703 +-79.333732,-459.008773,4.692,4.591 +-83.150802,-455.779894,4.790,4.495 +-86.845296,-452.411181,4.700,4.618 +-90.411405,-448.906882,4.501,4.828 +-93.843320,-445.271244,4.212,5.105 +-97.135232,-441.508515,4.502,4.728 +-100.281332,-437.622943,4.692,4.503 +-103.276256,-433.619225,4.728,4.508 +-106.116287,-429.503720,4.668,4.614 +-108.798092,-425.283176,4.513,4.820 +-111.318336,-420.964340,4.574,4.784 +-113.673685,-416.553957,4.674,4.702 +-115.860805,-412.058774,4.708,4.695 +-117.876362,-407.485538,4.717,4.717 +-119.717022,-402.840995,4.673,4.745 +-121.379450,-398.131892,4.621,4.775 +-122.860313,-393.364976,4.599,4.922 +-124.156277,-388.546993,4.577,5.032 +-125.264006,-383.684690,4.597,5.061 +-126.180169,-378.784813,4.804,4.887 +-126.901541,-373.854095,4.655,4.719 +-127.428676,-368.898797,4.516,4.593 +-127.766739,-363.924608,4.611,4.602 +-127.921173,-358.937177,4.759,4.548 +-127.897419,-353.942159,4.812,4.530 +-127.700923,-348.945204,4.747,4.569 +-127.337126,-343.951966,4.658,4.569 +-126.811472,-338.968095,4.573,4.609 +-126.129405,-333.999244,4.504,4.716 +-125.296367,-329.051065,4.458,4.741 +-124.317801,-324.129210,4.449,4.630 +-123.199151,-319.239331,4.425,4.558 +-121.945861,-314.387080,4.321,4.705 +-120.563372,-309.578109,4.473,4.754 +-119.058509,-304.816715,4.680,4.769 +-117.447588,-300.097872,4.829,4.771 +-115.750915,-295.412637,4.896,4.761 +-113.988811,-290.752052,4.861,4.736 +-112.181595,-286.107159,4.826,4.711 +-110.349589,-281.469002,4.791,4.686 +-108.513113,-276.828622,4.777,4.683 +-106.688459,-272.178978,4.764,4.680 +-104.876827,-267.520207,4.750,4.677 +-103.075877,-262.854130,4.737,4.675 +-101.283269,-258.182568,4.724,4.672 +-99.496665,-253.507342,4.711,4.669 +-97.713725,-248.830270,4.697,4.667 +-95.932114,-244.153172,4.684,4.664 +-94.150161,-239.477307,4.671,4.662 +-92.367593,-234.802761,4.658,4.659 +-90.584313,-230.129473,4.645,4.656 +-88.800227,-225.457379,4.631,4.654 +-87.015237,-220.786419,4.618,4.651 +-85.229248,-216.116530,4.605,4.648 +-83.442165,-211.447649,4.592,4.646 +-81.653892,-206.779715,4.578,4.643 +-79.864331,-202.112665,4.565,4.640 +-78.073389,-197.446438,4.552,4.638 +-76.280968,-192.780971,4.539,4.635 +-74.486973,-188.116201,4.526,4.632 +-72.691308,-183.452068,4.512,4.630 +-70.893901,-178.788517,4.499,4.627 +-69.094771,-174.125528,4.486,4.624 +-67.293958,-169.463089,4.473,4.622 +-65.491502,-164.801187,4.459,4.619 +-63.687444,-160.139812,4.446,4.617 +-61.881823,-155.478949,4.433,4.614 +-60.074681,-150.818588,4.420,4.611 +-58.266057,-146.158715,4.407,4.609 +-56.455991,-141.499319,4.393,4.606 +-54.644524,-136.840387,4.380,4.603 +-52.831697,-132.181907,4.367,4.601 +-51.017548,-127.523866,4.392,4.625 +-49.202119,-122.866254,4.417,4.649 +-47.385450,-118.209056,4.443,4.672 +-45.567581,-113.552261,4.468,4.696 +-43.748552,-108.895857,4.493,4.720 +-41.928403,-104.239831,4.518,4.744 +-40.107175,-99.584172,4.544,4.768 +-38.284908,-94.928866,4.569,4.792 +-36.461642,-90.273902,4.594,4.816 +-34.637418,-85.619267,4.619,4.840 +-32.812275,-80.964950,4.645,4.864 +-30.986254,-76.310937,4.670,4.888 +-29.159396,-71.657217,4.695,4.912 +-27.331740,-67.003778,4.720,4.936 +-25.503326,-62.350606,4.746,4.960 +-23.674195,-57.697691,4.771,4.984 +-21.844388,-53.045019,4.796,5.008 +-20.013943,-48.392578,4.821,5.032 +-18.182903,-43.740356,4.847,5.055 +-16.351306,-39.088341,4.872,5.079 +-14.519193,-34.436521,4.897,5.103 +-12.686605,-29.784883,4.923,5.127 +-10.853581,-25.133415,4.948,5.151 +-9.020162,-20.482105,4.973,5.175 +-7.186388,-15.830941,4.998,5.199 +-5.352300,-11.179909,5.024,5.223 +-3.517937,-6.528999,5.049,5.247 diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/DX/FontPixelShader.hlsl b/Engine/lib/JoltPhysics/Assets/Shaders/DX/FontPixelShader.hlsl new file mode 100644 index 000000000..508753aa9 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/DX/FontPixelShader.hlsl @@ -0,0 +1,27 @@ +Texture2D ShaderTexture : register(t2); +SamplerState SampleType : register(s0); + +struct PS_INPUT +{ + float4 Position : SV_POSITION; + float2 Tex : TEXCOORD0; + float4 Color : COLOR0; +}; + +struct PS_OUTPUT +{ + float4 RGBColor : SV_TARGET; +}; + +PS_OUTPUT main(PS_INPUT In) +{ + PS_OUTPUT Output; + + float t = ShaderTexture.Sample(SampleType, In.Tex).r; + if (t < 0.5) + discard; + + Output.RGBColor = float4(In.Color.rgb, t); + + return Output; +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/DX/FontVertexShader.hlsl b/Engine/lib/JoltPhysics/Assets/Shaders/DX/FontVertexShader.hlsl new file mode 100644 index 000000000..94cc6823d --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/DX/FontVertexShader.hlsl @@ -0,0 +1,35 @@ +#include "VertexConstants.h" + +struct VS_INPUT +{ + float3 vPos : POSITION; + float2 vTex : TEXCOORD0; + float4 vCol : COLOR; +}; + +struct VS_OUTPUT +{ + float4 Position : SV_POSITION; + float2 Tex : TEXCOORD0; + float4 Color : COLOR0; +}; + +VS_OUTPUT main(VS_INPUT input) +{ + VS_OUTPUT Output; + + float4 pos = float4(input.vPos, 1.0f); + + // Transform the position from object space to homogeneous projection space + pos = mul(View, pos); + pos = mul(Projection, pos); + Output.Position = pos; + + // Output texture coordinates + Output.Tex = input.vTex; + + // Output color + Output.Color = input.vCol; + + return Output; +} \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/DX/LinePixelShader.hlsl b/Engine/lib/JoltPhysics/Assets/Shaders/DX/LinePixelShader.hlsl new file mode 100644 index 000000000..c8bcecaf0 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/DX/LinePixelShader.hlsl @@ -0,0 +1,19 @@ +struct PS_INPUT +{ + float4 Position : SV_POSITION; + float4 Color : COLOR0; +}; + +struct PS_OUTPUT +{ + float4 RGBColor : SV_TARGET; +}; + +PS_OUTPUT main(PS_INPUT In) +{ + PS_OUTPUT Output; + + Output.RGBColor = In.Color; + + return Output; +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/DX/LineVertexShader.hlsl b/Engine/lib/JoltPhysics/Assets/Shaders/DX/LineVertexShader.hlsl new file mode 100644 index 000000000..fe73386df --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/DX/LineVertexShader.hlsl @@ -0,0 +1,30 @@ +#include "VertexConstants.h" + +struct VS_INPUT +{ + float3 vPos : POSITION; + float3 vColor : COLOR; +}; + +struct VS_OUTPUT +{ + float4 Position : SV_POSITION; + float4 Color : COLOR0; +}; + +VS_OUTPUT main(VS_INPUT input) +{ + VS_OUTPUT Output; + + float4 pos = float4(input.vPos, 1.0f); + + // Transform the position from object space to homogeneous projection space + pos = mul(View, pos); + pos = mul(Projection, pos); + Output.Position = pos; + + // Output color + Output.Color = float4(input.vColor, 1.0f); + + return Output; +} \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/DX/TriangleDepthPixelShader.hlsl b/Engine/lib/JoltPhysics/Assets/Shaders/DX/TriangleDepthPixelShader.hlsl new file mode 100644 index 000000000..959cffdf8 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/DX/TriangleDepthPixelShader.hlsl @@ -0,0 +1,4 @@ +// We only write depth, so this shader does nothing +void main() +{ +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/DX/TriangleDepthVertexShader.hlsl b/Engine/lib/JoltPhysics/Assets/Shaders/DX/TriangleDepthVertexShader.hlsl new file mode 100644 index 000000000..44e706ff1 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/DX/TriangleDepthVertexShader.hlsl @@ -0,0 +1,43 @@ +#include "VertexConstants.h" + +struct VS_INPUT +{ + // Per vertex data + float3 vPos : POSITION; + float3 vNorm : NORMAL; + float2 vTex : TEXCOORD0; + float4 vCol : COLOR; + + // Per instance data + matrix iModel : INSTANCE_TRANSFORM; // model matrix + matrix iModelInvTrans : INSTANCE_INV_TRANSFORM; // (model matrix^-1)^T + float4 iCol : INSTANCE_COLOR; // color of the model +}; + +struct VS_OUTPUT +{ + float4 Position : SV_POSITION; +}; + +VS_OUTPUT main(VS_INPUT input) +{ + VS_OUTPUT output; + + // Check if the alpha = 0 + if (input.vCol.a * input.iCol.a == 0.0) + { + // Don't draw the triangle by moving it to an invalid location + output.Position = float4(0, 0, 0, 0); + } + else + { + // Transform the position from world space to homogeneous projection space for the light + float4 pos = float4(input.vPos, 1.0f); + pos = mul(input.iModel, pos); + pos = mul(LightView, pos); + pos = mul(LightProjection, pos); + output.Position = pos; + } + + return output; +} \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/DX/TrianglePixelShader.hlsl b/Engine/lib/JoltPhysics/Assets/Shaders/DX/TrianglePixelShader.hlsl new file mode 100644 index 000000000..51d4c9fdf --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/DX/TrianglePixelShader.hlsl @@ -0,0 +1,121 @@ +// Shader that uses a shadow map for rendering shadows, see: +// http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/ +// https://takinginitiative.wordpress.com/2011/05/25/directx10-tutorial-10-shadow-mapping-part-2/ + +Texture2D LightDepthTexture : register(t2); +SamplerComparisonState LightDepthSampler : register(s2); + +cbuffer PixelShaderConstantBuffer : register(b1) +{ + float3 CameraPos; + float3 LightPos; +}; + +struct PS_INPUT +{ + float4 Position : SV_POSITION; // interpolated vertex position + float3 Normal : TEXCOORD0; + float3 WorldPos : TEXCOORD1; + float2 Tex : TEXCOORD2; + float4 PositionL : TEXCOORD3; // interpolated vertex position in light space + float4 Color : COLOR0; +}; + +struct PS_OUTPUT +{ + float4 RGBColor : SV_TARGET; +}; + +PS_OUTPUT main(PS_INPUT input) +{ + // Constants + float AmbientFactor = 0.3; + float3 DiffuseColor = float3(input.Color.r, input.Color.g, input.Color.b); + float3 SpecularColor = float3(1, 1, 1); + float SpecularPower = 100.0; + float bias = 1.0e-7; + + // Homogenize position in light space + input.PositionL.xyz /= input.PositionL.w; + + // Calculate dot product between direction to light and surface normal and clamp between [0, 1] + float3 view_dir = normalize(CameraPos - input.WorldPos); + float3 world_to_light = LightPos - input.WorldPos; + float3 light_dir = normalize(world_to_light); + float3 normal = normalize(input.Normal); + if (dot(view_dir, normal) < 0) // If we're viewing the triangle from the back side, flip the normal to get the correct lighting + normal = -normal; + float normal_dot_light_dir = saturate(dot(normal, light_dir)); + + // Calculate texture coordinates in light depth texture + float2 tex_coord; + tex_coord.x = input.PositionL.x / 2.0 + 0.5; + tex_coord.y = -input.PositionL.y / 2.0 + 0.5; + + // Check that the texture coordinate is inside the depth texture, if not we don't know if it is lit or not so we assume lit + float shadow_factor = 1.0; + if (input.Color.a > 0 // Alpha = 0 means don't receive shadows + && tex_coord.x == saturate(tex_coord.x) && tex_coord.y == saturate(tex_coord.y)) + { + // Modify shadow bias according to the angle between the normal and the light dir + float modified_bias = bias * tan(acos(normal_dot_light_dir)); + modified_bias = min(modified_bias, 10.0 * bias); + + // Get texture size + float width, height, levels; + LightDepthTexture.GetDimensions(0, width, height, levels); + width = 1.0 / width; + height = 1.0 / height; + + // Samples to take + uint num_samples = 16; + float2 offsets[] = { + float2(-1.5 * width, -1.5 * height), + float2(-0.5 * width, -1.5 * height), + float2(0.5 * width, -1.5 * height), + float2(1.5 * width, -1.5 * height), + + float2(-1.5 * width, -0.5 * height), + float2(-0.5 * width, -0.5 * height), + float2(0.5 * width, -0.5 * height), + float2(1.5 * width, -0.5 * height), + + float2(-1.5 * width, 0.5 * height), + float2(-0.5 * width, 0.5 * height), + float2(0.5 * width, 0.5 * height), + float2(1.5 * width, 0.5 * height), + + float2(-1.5 * width, 1.5 * height), + float2(-0.5 * width, 1.5 * height), + float2(0.5 * width, 1.5 * height), + float2(1.5 * width, 1.5 * height), + }; + + // Calculate depth of this pixel relative to the light + float light_depth = input.PositionL.z + modified_bias; + + // Sample shadow factor + shadow_factor = 0.0; + [unroll] for (uint i = 0; i < num_samples; ++i) + shadow_factor += LightDepthTexture.SampleCmp(LightDepthSampler, tex_coord + offsets[i], light_depth); + shadow_factor /= num_samples; + } + + // Calculate diffuse and specular + float diffuse = normal_dot_light_dir; + float specular = diffuse > 0.0? pow(saturate(-dot(reflect(light_dir, normal), view_dir)), SpecularPower) : 0.0; + + // Apply procedural pattern based on the uv coordinates + bool2 less_half = input.Tex - floor(input.Tex) < float2(0.5, 0.5); + float darken_factor = less_half.r ^ less_half.g? 0.5 : 1.0; + + // Fade out checkerboard pattern when it tiles too often + float2 dx = ddx(input.Tex), dy = ddy(input.Tex); + float texel_distance = sqrt(dot(dx, dx) + dot(dy, dy)); + darken_factor = lerp(darken_factor, 0.75, clamp(5.0 * texel_distance - 1.5, 0.0, 1.0)); + + // Calculate color + PS_OUTPUT output; + output.RGBColor = float4(saturate((AmbientFactor + diffuse * shadow_factor) * darken_factor * DiffuseColor + SpecularColor * specular * shadow_factor), 1); + return output; +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/DX/TriangleVertexShader.hlsl b/Engine/lib/JoltPhysics/Assets/Shaders/DX/TriangleVertexShader.hlsl new file mode 100644 index 000000000..47922252f --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/DX/TriangleVertexShader.hlsl @@ -0,0 +1,59 @@ +#include "VertexConstants.h" + +struct VS_INPUT +{ + // Per vertex data + float3 vPos : POSITION; + float3 vNorm : NORMAL; + float2 vTex : TEXCOORD0; + float4 vCol : COLOR; + + // Per instance data + matrix iModel : INSTANCE_TRANSFORM; // model matrix + matrix iModelInvTrans : INSTANCE_INV_TRANSFORM; // (model matrix^-1)^T + float4 iCol : INSTANCE_COLOR; // color of the model +}; + +struct VS_OUTPUT +{ + float4 Position : SV_POSITION; + float3 Normal : TEXCOORD0; + float3 WorldPos : TEXCOORD1; + float2 Tex : TEXCOORD2; + float4 PositionL : TEXCOORD3; + float4 Color : COLOR0; +}; + +VS_OUTPUT main(VS_INPUT input) +{ + VS_OUTPUT output; + + // Get world position + float4 pos = float4(input.vPos, 1.0f); + float4 world_pos = mul(input.iModel, pos); + + // Transform the position from world space to homogeneous projection space + float4 proj_pos = mul(View, world_pos); + proj_pos = mul(Projection, proj_pos); + output.Position = proj_pos; + + // Transform the position from world space to projection space of the light + float4 proj_lpos = mul(LightView, world_pos); + proj_lpos = mul(LightProjection, proj_lpos); + output.PositionL = proj_lpos; + + // output normal + float4 norm = float4(input.vNorm, 0.0f); + output.Normal = normalize(mul(input.iModelInvTrans, norm).xyz); + + // output world position of the vertex + output.WorldPos = world_pos.xyz; + + // output texture coordinates + output.Tex = input.vTex; + + // output color + output.Color = input.vCol * input.iCol; + + return output; +} \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/DX/UIPixelShader.hlsl b/Engine/lib/JoltPhysics/Assets/Shaders/DX/UIPixelShader.hlsl new file mode 100644 index 000000000..1824fb003 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/DX/UIPixelShader.hlsl @@ -0,0 +1,23 @@ +Texture2D ShaderTexture : register(t2); +SamplerState SampleType : register(s1); + +struct PS_INPUT +{ + float4 Position : SV_POSITION; + float2 Tex : TEXCOORD0; + float4 Color : COLOR0; +}; + +struct PS_OUTPUT +{ + float4 RGBColor : SV_TARGET; +}; + +PS_OUTPUT main(PS_INPUT In) +{ + PS_OUTPUT Output; + + Output.RGBColor = In.Color * ShaderTexture.Sample(SampleType, In.Tex); + + return Output; +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/DX/UIPixelShaderUntextured.hlsl b/Engine/lib/JoltPhysics/Assets/Shaders/DX/UIPixelShaderUntextured.hlsl new file mode 100644 index 000000000..116fe3116 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/DX/UIPixelShaderUntextured.hlsl @@ -0,0 +1,20 @@ +struct PS_INPUT +{ + float4 Position : SV_POSITION; + float2 Tex : TEXCOORD0; + float4 Color : COLOR0; +}; + +struct PS_OUTPUT +{ + float4 RGBColor : SV_TARGET; +}; + +PS_OUTPUT main(PS_INPUT In) +{ + PS_OUTPUT Output; + + Output.RGBColor = In.Color; + + return Output; +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/DX/UIVertexShader.hlsl b/Engine/lib/JoltPhysics/Assets/Shaders/DX/UIVertexShader.hlsl new file mode 100644 index 000000000..f938d3654 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/DX/UIVertexShader.hlsl @@ -0,0 +1,34 @@ +#include "VertexConstants.h" + +struct VS_INPUT +{ + float3 vPos : POSITION; + float2 vTex : TEXCOORD0; + float4 vCol : COLOR; +}; + +struct VS_OUTPUT +{ + float4 Position : SV_POSITION; + float2 Tex : TEXCOORD0; + float4 Color : COLOR0; +}; + +VS_OUTPUT main(VS_INPUT input) +{ + VS_OUTPUT Output; + + float4 pos = float4(input.vPos, 1.0f); + + // Transform the position from object space to ortho space + pos = mul(Projection, pos); + Output.Position = pos; + + // Output texture coordinates + Output.Tex = input.vTex; + + // Output color + Output.Color = input.vCol; + + return Output; +} \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/DX/VertexConstants.h b/Engine/lib/JoltPhysics/Assets/Shaders/DX/VertexConstants.h new file mode 100644 index 000000000..c3ca73426 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/DX/VertexConstants.h @@ -0,0 +1,7 @@ +cbuffer VertexShaderConstantBuffer : register(b0) +{ + matrix View; // view matrix + matrix Projection; // projection matrix + matrix LightView; // view matrix of the light + matrix LightProjection; // projection matrix of the light +}; diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/MTL/FontShader.metal b/Engine/lib/JoltPhysics/Assets/Shaders/MTL/FontShader.metal new file mode 100644 index 000000000..b605d99ba --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/MTL/FontShader.metal @@ -0,0 +1,39 @@ +#include + +using namespace metal; + +#include "VertexConstants.h" + +constexpr sampler alphaTextureSampler(mag_filter::linear, min_filter::linear); + +struct FontVertex +{ + float3 vPos [[attribute(0)]]; + float2 vTex [[attribute(1)]]; + uchar4 vCol [[attribute(2)]]; +}; + +struct FontOut +{ + float4 oPosition [[position]]; + float2 oTex; + float4 oColor; +}; + +vertex FontOut FontVertexShader(FontVertex vert [[stage_in]], constant VertexShaderConstantBuffer *constants [[buffer(2)]]) +{ + FontOut out; + out.oPosition = constants->Projection * constants->View * float4(vert.vPos, 1.0); + out.oTex = vert.vTex; + out.oColor = float4(vert.vCol) / 255.0; + return out; +} + +fragment float4 FontPixelShader(FontOut in [[stage_in]], texture2d alphaTexture [[texture(0)]]) +{ + const float4 sample = alphaTexture.sample(alphaTextureSampler, in.oTex); + if (sample.x < 0.5) + discard_fragment(); + + return float4(in.oColor.xyz, sample.x); +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/MTL/LineShader.metal b/Engine/lib/JoltPhysics/Assets/Shaders/MTL/LineShader.metal new file mode 100644 index 000000000..d0326bc45 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/MTL/LineShader.metal @@ -0,0 +1,30 @@ +#include + +using namespace metal; + +#include "VertexConstants.h" + +struct LineVertex +{ + float3 iPosition [[attribute(0)]]; + uchar4 iColor [[attribute(1)]]; +}; + +struct LineOut +{ + float4 oPosition [[position]]; + float4 oColor; +}; + +vertex LineOut LineVertexShader(LineVertex vert [[stage_in]], constant VertexShaderConstantBuffer *constants [[buffer(2)]]) +{ + LineOut out; + out.oPosition = constants->Projection * constants->View * float4(vert.iPosition, 1.0); + out.oColor = float4(vert.iColor) / 255.0; + return out; +} + +fragment float4 LinePixelShader(LineOut in [[stage_in]]) +{ + return in.oColor; +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/MTL/TriangleShader.metal b/Engine/lib/JoltPhysics/Assets/Shaders/MTL/TriangleShader.metal new file mode 100644 index 000000000..f483e71d4 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/MTL/TriangleShader.metal @@ -0,0 +1,199 @@ +#include + +using namespace metal; + +#include "VertexConstants.h" + +constexpr sampler depthSampler(mag_filter::nearest, min_filter::nearest); + +struct Vertex +{ + float3 vPos [[attribute(0)]]; + float3 vNorm [[attribute(1)]]; + float2 vTex [[attribute(2)]]; + uchar4 vCol [[attribute(3)]]; + float4 iModel0 [[attribute(4)]]; + float4 iModel1 [[attribute(5)]]; + float4 iModel2 [[attribute(6)]]; + float4 iModel3 [[attribute(7)]]; + float4 iModelInvTrans0 [[attribute(8)]]; + float4 iModelInvTrans1 [[attribute(9)]]; + float4 iModelInvTrans2 [[attribute(10)]]; + float4 iModelInvTrans3 [[attribute(11)]]; + uchar4 iCol [[attribute(12)]]; +}; + +struct TriangleOut +{ + float4 oPosition [[position]]; + float3 oNormal; + float3 oWorldPos; + float2 oTex; + float4 oPositionL; + float4 oColor; +}; + +vertex TriangleOut TriangleVertexShader(Vertex vert [[stage_in]], constant VertexShaderConstantBuffer *constants [[buffer(2)]]) +{ + TriangleOut out; + + // Convert input matrices + float4x4 iModel(vert.iModel0, vert.iModel1, vert.iModel2, vert.iModel3); + float4x4 iModelInvTrans(vert.iModelInvTrans0, vert.iModelInvTrans1, vert.iModelInvTrans2, vert.iModelInvTrans3); + + // Get world position + float4 pos = float4(vert.vPos, 1.0f); + float4 world_pos = iModel * pos; + + // Transform the position from world space to homogeneous projection space + float4 proj_pos = constants->View * world_pos; + proj_pos = constants->Projection * proj_pos; + out.oPosition = proj_pos; + + // Transform the position from world space to projection space of the light + float4 proj_lpos = constants->LightView * world_pos; + proj_lpos = constants->LightProjection * proj_lpos; + out.oPositionL = proj_lpos; + + // output normal + float4 norm = float4(vert.vNorm, 0.0f); + out.oNormal = normalize(iModelInvTrans * norm).xyz; + + // output world position of the vertex + out.oWorldPos = world_pos.xyz; + + // output texture coordinates + out.oTex = vert.vTex; + + // output color + out.oColor = float4(vert.vCol) * float4(vert.iCol) / (255.0 * 255.0); + + return out; +} + +fragment float4 TrianglePixelShader(TriangleOut vert [[stage_in]], constant PixelShaderConstantBuffer *constants, texture2d depthTexture [[texture(0)]]) +{ + // Constants + float AmbientFactor = 0.3; + float3 DiffuseColor = float3(vert.oColor.r, vert.oColor.g, vert.oColor.b); + float3 SpecularColor = float3(1, 1, 1); + float SpecularPower = 100.0; + float bias = 1.0e-7; + + // Homogenize position in light space + float3 position_l = vert.oPositionL.xyz / vert.oPositionL.w; + + // Calculate dot product between direction to light and surface normal and clamp between [0, 1] + float3 view_dir = normalize(constants->CameraPos - vert.oWorldPos); + float3 world_to_light = constants->LightPos - vert.oWorldPos; + float3 light_dir = normalize(world_to_light); + float3 normal = normalize(vert.oNormal); + if (dot(view_dir, normal) < 0) // If we're viewing the triangle from the back side, flip the normal to get the correct lighting + normal = -normal; + float normal_dot_light_dir = clamp(dot(normal, light_dir), 0.0, 1.0); + + // Calculate texture coordinates in light depth texture + float2 tex_coord; + tex_coord.x = position_l.x / 2.0 + 0.5; + tex_coord.y = -position_l.y / 2.0 + 0.5; + + // Check that the texture coordinate is inside the depth texture, if not we don't know if it is lit or not so we assume lit + float shadow_factor = 1.0; + if (vert.oColor.a > 0 // Alpha = 0 means don't receive shadows + && tex_coord.x == clamp(tex_coord.x, 0.0, 1.0) && tex_coord.y == clamp(tex_coord.y, 0.0, 1.0)) + { + // Modify shadow bias according to the angle between the normal and the light dir + float modified_bias = bias * tan(acos(normal_dot_light_dir)); + modified_bias = min(modified_bias, 10.0 * bias); + + // Get texture size + float width = 1.0 / 4096; + float height = 1.0 / 4096; + + // Samples to take + uint num_samples = 16; + float2 offsets[] = { + float2(-1.5 * width, -1.5 * height), + float2(-0.5 * width, -1.5 * height), + float2(0.5 * width, -1.5 * height), + float2(1.5 * width, -1.5 * height), + + float2(-1.5 * width, -0.5 * height), + float2(-0.5 * width, -0.5 * height), + float2(0.5 * width, -0.5 * height), + float2(1.5 * width, -0.5 * height), + + float2(-1.5 * width, 0.5 * height), + float2(-0.5 * width, 0.5 * height), + float2(0.5 * width, 0.5 * height), + float2(1.5 * width, 0.5 * height), + + float2(-1.5 * width, 1.5 * height), + float2(-0.5 * width, 1.5 * height), + float2(0.5 * width, 1.5 * height), + float2(1.5 * width, 1.5 * height), + }; + + // Calculate depth of this pixel relative to the light + float light_depth = position_l.z + modified_bias; + + // Sample shadow factor + shadow_factor = 0.0; + for (uint i = 0; i < num_samples; ++i) + shadow_factor += depthTexture.sample(depthSampler, tex_coord + offsets[i]).x <= light_depth? 1.0 : 0.0; + shadow_factor /= num_samples; + } + + // Calculate diffuse and specular + float diffuse = normal_dot_light_dir; + float specular = diffuse > 0.0? pow(clamp(-dot(reflect(light_dir, normal), view_dir), 0.0, 1.0), SpecularPower) : 0.0; + + // Apply procedural pattern based on the uv coordinates + bool2 less_half = (vert.oTex - floor(vert.oTex)) < float2(0.5, 0.5); + float darken_factor = less_half.r ^ less_half.g? 0.5 : 1.0; + + // Fade out checkerboard pattern when it tiles too often + float2 dx = dfdx(vert.oTex), dy = dfdy(vert.oTex); + float texel_distance = sqrt(dot(dx, dx) + dot(dy, dy)); + darken_factor = mix(darken_factor, 0.75, clamp(5.0 * texel_distance - 1.5, 0.0, 1.0)); + + // Calculate color + return float4(clamp((AmbientFactor + diffuse * shadow_factor) * darken_factor * DiffuseColor + SpecularColor * specular * shadow_factor, 0, 1), 1); +} + +struct DepthOut +{ + float4 oPosition [[position]]; +}; + +vertex DepthOut TriangleDepthVertexShader(Vertex vert [[stage_in]], constant VertexShaderConstantBuffer *constants [[buffer(2)]]) +{ + DepthOut out; + + // Check if the alpha = 0 + if (vert.vCol.a * vert.iCol.a == 0.0) + { + // Don't draw the triangle by moving it to an invalid location + out.oPosition = float4(0, 0, 0, 0); + } + else + { + // Convert input matrix + float4x4 iModel(vert.iModel0, vert.iModel1, vert.iModel2, vert.iModel3); + + // Transform the position from world space to homogeneous projection space for the light + float4 pos = float4(vert.vPos, 1.0f); + pos = iModel * pos; + pos = constants->LightView * pos; + pos = constants->LightProjection * pos; + out.oPosition = pos; + } + + return out; +} + +fragment float4 TriangleDepthPixelShader(DepthOut in [[stage_in]]) +{ + // We only write depth, so this shader does nothing + return float4(0.0, 0.0, 0.0, 1.0); +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/MTL/UIShader.metal b/Engine/lib/JoltPhysics/Assets/Shaders/MTL/UIShader.metal new file mode 100644 index 000000000..35f65173e --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/MTL/UIShader.metal @@ -0,0 +1,41 @@ +#include + +using namespace metal; + +#include "VertexConstants.h" + +constexpr sampler uiTextureSampler(mag_filter::linear, min_filter::linear); + +struct UIVertex +{ + float3 vPos [[attribute(0)]]; + float2 vTex [[attribute(1)]]; + uchar4 vCol [[attribute(2)]]; +}; + +struct UIOut +{ + float4 oPosition [[position]]; + float2 oTex; + float4 oColor; +}; + +vertex UIOut UIVertexShader(UIVertex vert [[stage_in]], constant VertexShaderConstantBuffer *constants [[buffer(2)]]) +{ + UIOut out; + out.oPosition = constants->Projection * constants->View * float4(vert.vPos, 1.0); + out.oTex = vert.vTex; + out.oColor = float4(vert.vCol) / 255.0; + return out; +} + +fragment float4 UIPixelShader(UIOut in [[stage_in]], texture2d uiTexture [[texture(0)]]) +{ + const float4 sample = uiTexture.sample(uiTextureSampler, in.oTex); + return sample * in.oColor; +} + +fragment float4 UIPixelShaderUntextured(UIOut in [[stage_in]]) +{ + return in.oColor; +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/MTL/VertexConstants.h b/Engine/lib/JoltPhysics/Assets/Shaders/MTL/VertexConstants.h new file mode 100644 index 000000000..abe13a816 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/MTL/VertexConstants.h @@ -0,0 +1,13 @@ +struct VertexShaderConstantBuffer +{ + float4x4 View; // view matrix + float4x4 Projection; // projection matrix + float4x4 LightView; // view matrix of the light + float4x4 LightProjection; // projection matrix of the light +}; + +struct PixelShaderConstantBuffer +{ + float3 CameraPos; + float3 LightPos; +}; diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/VK/FontPixelShader.frag b/Engine/lib/JoltPhysics/Assets/Shaders/VK/FontPixelShader.frag new file mode 100644 index 000000000..f392fab6c --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/VK/FontPixelShader.frag @@ -0,0 +1,17 @@ +#version 450 + +layout(set = 1, binding = 0) uniform sampler2D texSampler; + +layout(location = 0) in vec2 iTex; +layout(location = 1) in vec4 iColor; + +layout(location = 0) out vec4 oColor; + +void main() +{ + float t = texture(texSampler, iTex).x; + if (t < 0.5) + discard; + + oColor = vec4(iColor.xyz, t); +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/VK/FontVertexShader.vert b/Engine/lib/JoltPhysics/Assets/Shaders/VK/FontVertexShader.vert new file mode 100644 index 000000000..636b5e071 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/VK/FontVertexShader.vert @@ -0,0 +1,17 @@ +#version 450 + +#include "VertexConstants.h" + +layout(location = 0) in vec3 vPos; +layout(location = 1) in vec2 vTex; +layout(location = 2) in vec4 vCol; + +layout(location = 0) out vec2 oTex; +layout(location = 1) out vec4 oColor; + +void main() +{ + gl_Position = c.Projection * c.View * vec4(vPos, 1.0f); + oTex = vTex; + oColor = vCol; +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/VK/LinePixelShader.frag b/Engine/lib/JoltPhysics/Assets/Shaders/VK/LinePixelShader.frag new file mode 100644 index 000000000..50bdb57cf --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/VK/LinePixelShader.frag @@ -0,0 +1,10 @@ +#version 450 + +layout(location = 0) in vec4 iColor; + +layout(location = 0) out vec4 oColor; + +void main() +{ + oColor = iColor; +} \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/VK/LineVertexShader.vert b/Engine/lib/JoltPhysics/Assets/Shaders/VK/LineVertexShader.vert new file mode 100644 index 000000000..5fde97de0 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/VK/LineVertexShader.vert @@ -0,0 +1,14 @@ +#version 450 + +#include "VertexConstants.h" + +layout(location = 0) in vec3 iPosition; +layout(location = 1) in vec4 iColor; + +layout(location = 0) out vec4 oColor; + +void main() +{ + gl_Position = c.Projection * c.View * vec4(iPosition, 1.0); + oColor = iColor; +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/VK/TriangleDepthPixelShader.frag b/Engine/lib/JoltPhysics/Assets/Shaders/VK/TriangleDepthPixelShader.frag new file mode 100644 index 000000000..d54188f66 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/VK/TriangleDepthPixelShader.frag @@ -0,0 +1,6 @@ +#version 450 + +// We only write depth, so this shader does nothing +void main() +{ +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/VK/TriangleDepthVertexShader.vert b/Engine/lib/JoltPhysics/Assets/Shaders/VK/TriangleDepthVertexShader.vert new file mode 100644 index 000000000..85dfe1f38 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/VK/TriangleDepthVertexShader.vert @@ -0,0 +1,31 @@ +#version 450 + +#include "VertexConstants.h" + +layout(location = 0) in vec3 vPos; +layout(location = 1) in vec3 vNorm; +layout(location = 2) in vec2 vTex; +layout(location = 3) in vec4 vCol; + +layout(location = 4) in mat4 iModel; +layout(location = 8) in mat4 iModelInvTrans; +layout(location = 12) in vec4 iCol; + +void main() +{ + // Check if the alpha = 0 + if (vCol.a * iCol.a == 0.0) + { + // Don't draw the triangle by moving it to an invalid location + gl_Position = vec4(0, 0, 0, 0); + } + else + { + // Transform the position from world space to homogeneous projection space for the light + vec4 pos = vec4(vPos, 1.0f); + pos = iModel * pos; + pos = c.LightView * pos; + pos = c.LightProjection * pos; + gl_Position = pos; + } +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/VK/TrianglePixelShader.frag b/Engine/lib/JoltPhysics/Assets/Shaders/VK/TrianglePixelShader.frag new file mode 100644 index 000000000..422a2ac86 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/VK/TrianglePixelShader.frag @@ -0,0 +1,107 @@ +#version 450 + +layout(binding = 1) uniform PixelShaderConstantBuffer +{ + vec3 CameraPos; + vec3 LightPos; +} c; + +layout(location = 0) in vec3 iNormal; +layout(location = 1) in vec3 iWorldPos; +layout(location = 2) in vec2 iTex; +layout(location = 3) in vec4 iPositionL; +layout(location = 4) in vec4 iColor; + +layout(location = 0) out vec4 oColor; + +layout(set = 1, binding = 0) uniform sampler2D LightDepthSampler; + +void main() +{ + // Constants + float AmbientFactor = 0.3; + vec3 DiffuseColor = vec3(iColor.r, iColor.g, iColor.b); + vec3 SpecularColor = vec3(1, 1, 1); + float SpecularPower = 100.0; + float bias = 1.0e-7; + + // Homogenize position in light space + vec3 position_l = iPositionL.xyz / iPositionL.w; + + // Calculate dot product between direction to light and surface normal and clamp between [0, 1] + vec3 view_dir = normalize(c.CameraPos - iWorldPos); + vec3 world_to_light = c.LightPos - iWorldPos; + vec3 light_dir = normalize(world_to_light); + vec3 normal = normalize(iNormal); + if (dot(view_dir, normal) < 0) // If we're viewing the triangle from the back side, flip the normal to get the correct lighting + normal = -normal; + float normal_dot_light_dir = clamp(dot(normal, light_dir), 0, 1); + + // Calculate texture coordinates in light depth texture + vec2 tex_coord; + tex_coord.x = position_l.x / 2.0 + 0.5; + tex_coord.y = position_l.y / 2.0 + 0.5; + + // Check that the texture coordinate is inside the depth texture, if not we don't know if it is lit or not so we assume lit + float shadow_factor = 1.0; + if (iColor.a > 0 // Alpha = 0 means don't receive shadows + && tex_coord.x == clamp(tex_coord.x, 0, 1) && tex_coord.y == clamp(tex_coord.y, 0, 1)) + { + // Modify shadow bias according to the angle between the normal and the light dir + float modified_bias = bias * tan(acos(normal_dot_light_dir)); + modified_bias = min(modified_bias, 10.0 * bias); + + // Get texture size + float width = 1.0 / 4096; + float height = 1.0 / 4096; + + // Samples to take + uint num_samples = 16; + vec2 offsets[] = { + vec2(-1.5 * width, -1.5 * height), + vec2(-0.5 * width, -1.5 * height), + vec2(0.5 * width, -1.5 * height), + vec2(1.5 * width, -1.5 * height), + + vec2(-1.5 * width, -0.5 * height), + vec2(-0.5 * width, -0.5 * height), + vec2(0.5 * width, -0.5 * height), + vec2(1.5 * width, -0.5 * height), + + vec2(-1.5 * width, 0.5 * height), + vec2(-0.5 * width, 0.5 * height), + vec2(0.5 * width, 0.5 * height), + vec2(1.5 * width, 0.5 * height), + + vec2(-1.5 * width, 1.5 * height), + vec2(-0.5 * width, 1.5 * height), + vec2(0.5 * width, 1.5 * height), + vec2(1.5 * width, 1.5 * height), + }; + + // Calculate depth of this pixel relative to the light + float light_depth = position_l.z + modified_bias; + + // Sample shadow factor + shadow_factor = 0.0; + for (uint i = 0; i < num_samples; ++i) + shadow_factor += texture(LightDepthSampler, tex_coord + offsets[i]).x <= light_depth? 1.0 : 0.0; + shadow_factor /= num_samples; + } + + // Calculate diffuse and specular + float diffuse = normal_dot_light_dir; + float specular = diffuse > 0.0? pow(clamp(-dot(reflect(light_dir, normal), view_dir), 0, 1), SpecularPower) : 0.0; + + // Apply procedural pattern based on the uv coordinates + bvec2 less_half = lessThan(iTex - floor(iTex), vec2(0.5, 0.5)); + float darken_factor = less_half.r ^^ less_half.g? 0.5 : 1.0; + + // Fade out checkerboard pattern when it tiles too often + vec2 dx = dFdx(iTex), dy = dFdy(iTex); + float texel_distance = sqrt(dot(dx, dx) + dot(dy, dy)); + darken_factor = mix(darken_factor, 0.75, clamp(5.0 * texel_distance - 1.5, 0.0, 1.0)); + + // Calculate color + oColor = vec4(clamp((AmbientFactor + diffuse * shadow_factor) * darken_factor * DiffuseColor + SpecularColor * specular * shadow_factor, 0, 1), 1); +} \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/VK/TriangleVertexShader.vert b/Engine/lib/JoltPhysics/Assets/Shaders/VK/TriangleVertexShader.vert new file mode 100644 index 000000000..44e2ce8cc --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/VK/TriangleVertexShader.vert @@ -0,0 +1,48 @@ +#version 450 + +#include "VertexConstants.h" + +layout(location = 0) in vec3 vPos; +layout(location = 1) in vec3 vNorm; +layout(location = 2) in vec2 vTex; +layout(location = 3) in vec4 vCol; + +layout(location = 4) in mat4 iModel; +layout(location = 8) in mat4 iModelInvTrans; +layout(location = 12) in vec4 iCol; + +layout(location = 0) out vec3 oNormal; +layout(location = 1) out vec3 oWorldPos; +layout(location = 2) out vec2 oTex; +layout(location = 3) out vec4 oPositionL; +layout(location = 4) out vec4 oColor; + +void main() +{ + // Get world position + vec4 pos = vec4(vPos, 1.0f); + vec4 world_pos = iModel * pos; + + // Transform the position from world space to homogeneous projection space + vec4 proj_pos = c.View * world_pos; + proj_pos = c.Projection * proj_pos; + gl_Position = proj_pos; + + // Transform the position from world space to projection space of the light + vec4 proj_lpos = c.LightView * world_pos; + proj_lpos = c.LightProjection * proj_lpos; + oPositionL = proj_lpos; + + // output normal + vec4 norm = vec4(vNorm, 0.0f); + oNormal = normalize(iModelInvTrans * norm).xyz; + + // output world position of the vertex + oWorldPos = world_pos.xyz; + + // output texture coordinates + oTex = vTex; + + // output color + oColor = vCol * iCol; +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/VK/UIPixelShader.frag b/Engine/lib/JoltPhysics/Assets/Shaders/VK/UIPixelShader.frag new file mode 100644 index 000000000..540066493 --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/VK/UIPixelShader.frag @@ -0,0 +1,13 @@ +#version 450 + +layout(set = 1, binding = 0) uniform sampler2D texSampler; + +layout(location = 0) in vec4 iColor; +layout(location = 1) in vec2 iTex; + +layout(location = 0) out vec4 oColor; + +void main() +{ + oColor = iColor * texture(texSampler, iTex); +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/VK/UIPixelShaderUntextured.frag b/Engine/lib/JoltPhysics/Assets/Shaders/VK/UIPixelShaderUntextured.frag new file mode 100644 index 000000000..8d161c3df --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/VK/UIPixelShaderUntextured.frag @@ -0,0 +1,10 @@ +#version 450 + +layout(location = 0) in vec4 iColor; + +layout(location = 0) out vec4 oColor; + +void main() +{ + oColor = iColor; +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/VK/UIVertexShader.vert b/Engine/lib/JoltPhysics/Assets/Shaders/VK/UIVertexShader.vert new file mode 100644 index 000000000..e3d6495dd --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/VK/UIVertexShader.vert @@ -0,0 +1,17 @@ +#version 450 + +#include "VertexConstants.h" + +layout(location = 0) in vec3 vPos; +layout(location = 1) in vec2 vTex; +layout(location = 2) in vec4 vCol; + +layout(location = 0) out vec4 oColor; +layout(location = 1) out vec2 oTex; + +void main() +{ + gl_Position = c.Projection * c.View * vec4(vPos, 1.0f); + oTex = vTex; + oColor = vCol; +} diff --git a/Engine/lib/JoltPhysics/Assets/Shaders/VK/VertexConstants.h b/Engine/lib/JoltPhysics/Assets/Shaders/VK/VertexConstants.h new file mode 100644 index 000000000..faffc239f --- /dev/null +++ b/Engine/lib/JoltPhysics/Assets/Shaders/VK/VertexConstants.h @@ -0,0 +1,7 @@ +layout(binding = 0) uniform VertexShaderConstantBuffer +{ + mat4 View; + mat4 Projection; + mat4 LightView; + mat4 LightProjection; +} c; diff --git a/Engine/lib/JoltPhysics/Assets/UI.tga b/Engine/lib/JoltPhysics/Assets/UI.tga new file mode 100644 index 000000000..18cb05fe5 Binary files /dev/null and b/Engine/lib/JoltPhysics/Assets/UI.tga differ diff --git a/Engine/lib/JoltPhysics/Assets/convex_hulls.bin b/Engine/lib/JoltPhysics/Assets/convex_hulls.bin new file mode 100644 index 000000000..4a8ae1c70 Binary files /dev/null and b/Engine/lib/JoltPhysics/Assets/convex_hulls.bin differ diff --git a/Engine/lib/JoltPhysics/Assets/heightfield1.bin b/Engine/lib/JoltPhysics/Assets/heightfield1.bin new file mode 100644 index 000000000..11102a9a0 Binary files /dev/null and b/Engine/lib/JoltPhysics/Assets/heightfield1.bin differ diff --git a/Engine/lib/JoltPhysics/Assets/terrain1.bof b/Engine/lib/JoltPhysics/Assets/terrain1.bof new file mode 100644 index 000000000..df7fb1437 Binary files /dev/null and b/Engine/lib/JoltPhysics/Assets/terrain1.bof differ diff --git a/Engine/lib/JoltPhysics/Assets/terrain2.bof b/Engine/lib/JoltPhysics/Assets/terrain2.bof new file mode 100644 index 000000000..a8ebc64bc Binary files /dev/null and b/Engine/lib/JoltPhysics/Assets/terrain2.bof differ diff --git a/Engine/lib/JoltPhysics/ContributorAgreement.md b/Engine/lib/JoltPhysics/ContributorAgreement.md new file mode 100644 index 000000000..37065f490 --- /dev/null +++ b/Engine/lib/JoltPhysics/ContributorAgreement.md @@ -0,0 +1,123 @@ +## Fiduciary License Agreement 2.0 + +based on the + +## Individual Contributor Exclusive License Agreement + +## (including the Traditional Patent License OPTION) + +Thank you for your interest in contributing to Jolt Physics ("We" or "Us"). + +The purpose of this contributor agreement ("Agreement") is to clarify and document the rights granted by contributors to Us. + +### 0\. Preamble + +Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy. + +Development of Free Software can follow many patterns. In some cases whole development is handled by a sole programmer or a small group of people. But usually, the creation and maintenance of software is a complex process that requires the contribution of many individuals. This also affects who owns the rights to the software. In the latter case, rights in software are owned jointly by a great number of individuals. + +To tackle this issue some projects require a full copyright assignment to be signed by all contributors. The problem with such assignments is that they often lack checks and balances that would protect the contributors from potential abuse of power from the new copyright holder. + +FSFE’s Fiduciary License Agreement (FLA) was created by the Free Software Foundation Europe e.V. with just that in mind – to concentrate all deciding power within one entity and prevent fragmentation of rights on one hand, while on the other preventing that single entity from abusing its power. The main aim is to ensure that the software covered under the FLA will forever remain Free Software. + +This process only serves for the transfer of economic rights. So-called moral rights (e.g. authors right to be identified as author) remain with the original author(s) and are inalienable. + +### How to use this FLA + +If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement or sign the Entity version of this document. If You do not own the Copyright in the entire work of authorship, any other author of the Contribution should also sign this – in any event, please contact Us at jorrit@jrouwe.nl + +### 1\. Definitions + +**"You"** means the individual Copyright owner who Submits a Contribution to Us. + +**"Legal Entity"** means an entity that is not a natural person. + +**"Affiliate"** means any other Legal Entity that controls, is controlled by, or under common control with that Legal Entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such Legal Entity, whether by contract or otherwise, (ii) ownership of fifty percent (50%) or more of the outstanding shares or securities that vote to elect the management or other persons who direct such Legal Entity or (iii) beneficial ownership of such entity. + +**"Contribution"** means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted by You to Us, in which You own the Copyright. + +**"Copyright"** means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence. + +**"Material"** means the software or documentation made available by Us to third parties. When this Agreement covers more than one software project, the Material means the software or documentation to which the Contribution was Submitted. After You Submit the Contribution, it may be included in the Material. + +**"Submit"** means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, Us, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution." + +**"Documentation"** means any non-software portion of a Contribution. + +### 2\. License grant + +#### 2.1 Copyright license to Us + +Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section 8.2) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to: + +* publish the Contribution, +* modify the Contribution, +* prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials, +* reproduce the Contribution in original or modified form, +* distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form. + +#### 2.2 Moral rights + +Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution. + +#### 2.3 Copyright license back to You + +Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to: + +* publish the Contribution, +* modify the Contribution, +* prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials, +* reproduce the Contribution in original or modified form, +* distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form. + +This license back is limited to the Contribution and does not provide any rights to the Material. + +### 3\. Patents + +#### 3.1 Patent license + +Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Section 3.2) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material. + +#### 3.2 Revocation of patent license + +You reserve the right to revoke the patent license stated in section 3.1 if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a "Defensive Purpose" if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees. + +### 4\. License obligations by Us + +We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses the Free Software Foundation classifies as Free Software License and which are approved by the Open Source Initiative as Open Source licenses. + +More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only under the terms of the following license(s) MIT (including any right to adopt any future version of a license if permitted). + +We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses.. + +### 5. Disclaimer + +THE CONTRIBUTION IS PROVIDED "AS IS". MORE PARTICULARLY, ALL EXPRESS OR IMPLIED WARRANTIES INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTY OF SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED BY YOU TO US AND BY US TO YOU. TO THE EXTENT THAT ANY SUCH WARRANTIES CANNOT BE DISCLAIMED, SUCH WARRANTY IS LIMITED IN DURATION AND EXTENT TO THE MINIMUM PERIOD AND EXTENT PERMITTED BY LAW. + +### 6. Consequential damage waiver + +TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL YOU OR WE BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF ANTICIPATED SAVINGS, LOSS OF DATA, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL AND EXEMPLARY DAMAGES ARISING OUT OF THIS AGREEMENT REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH THE CLAIM IS BASED. + +### 7. Approximation of disclaimer and damage waiver + +IF THE DISCLAIMER AND DAMAGE WAIVER MENTIONED IN SECTION 5. AND SECTION 6. CANNOT BE GIVEN LEGAL EFFECT UNDER APPLICABLE LOCAL LAW, REVIEWING COURTS SHALL APPLY LOCAL LAW THAT MOST CLOSELY APPROXIMATES AN ABSOLUTE WAIVER OF ALL CIVIL OR CONTRACTUAL LIABILITY IN CONNECTION WITH THE CONTRIBUTION. + +### 8. Term + +8.1 This Agreement shall come into effect upon Your acceptance of the terms and conditions. + +8.2 This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section 4. Such termination must be made in writing. + +8.3 In the event of a termination of this Agreement Sections 5., 6., 7., 8., and 9. shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement. + +### 9. Miscellaneous + +9.1 This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Netherlands excluding its private international law provisions. + +9.2 This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings. + +9.3 In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person. + +9.4 If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law. + +9.5 You agree to notify Us of any facts or circumstances of which you become aware that would make this Agreement inaccurate in any respect. diff --git a/Engine/lib/JoltPhysics/Docs/APIChanges.md b/Engine/lib/JoltPhysics/Docs/APIChanges.md new file mode 100644 index 000000000..017bc5a54 --- /dev/null +++ b/Engine/lib/JoltPhysics/Docs/APIChanges.md @@ -0,0 +1,153 @@ +# Breaking API Changes + +This document lists all breaking API changes by date and by release tag. Note that not all API changes are listed here, trivial changes (that cause a compile error and require an obvious fix) are not listed. + +Changes that make some state saved through SaveBinaryState from a prior version of the library unreadable by the new version is marked as *SBS*. See [Saving Shapes](https://jrouwe.github.io/JoltPhysics/#saving-shapes) for further information. + +## Changes between v5.4.0 and v5.5.0 + +* 20251206 - Renamed `JPH_CPU_ADDRESS_BITS` to `JPH_CPU_ARCH_BITS` because the size of a pointer can be different from the number of bits used by the architecture. (db654de2a6098fd1ad78cb9a3e70f6a8a61c00b5) +* 20251120 - Added BroadPhaseQuery::GetBounds, deprecated PhysicsSystem::GetBounds. (793b3a0dbd978552cc6bf68db1c473b32e8ba1ef) + +## Changes between v5.3.0 and v5.4.0 + +* 20240529 - *SBS* - Added `SoftBodyCreationSettings::mFacesDoubleSided` which treats the faces of the soft body as double sided. This changes the binary serialization format. (3ad037b9262ba81bf7ceda10687f2a07da38f091) +* 20240529 - *SBS* - WheelSettingsTV and WheelSettingsWV were not serializing their base class members. This changes the binary serialization format. (cfefdc669291bd25dd168af95fb32515cc05a78b) +* 20250523 - *SBS* - `SoftBodySharedSettings::mVertexRadius` was moved to `SoftBodyCreationSettings::mVertexRadius`, this also changes the serialization format of soft bodies. (f3d906f8c0a07a6993ecb2ff962c892a04843daa) +* 20250505 - The remap tables in `SoftBodySharedSettings::OptimizationResults` mapped from new to old index instead of from old to new as was documented. The maps now behave as documented. (1ee6eb2f059dab839b0bde02b3c455a7bd24e533) +* 20250505 - *SBS* - The `SoftBodySharedSettings` binary serialization format changed. (1ee6eb2f059dab839b0bde02b3c455a7bd24e533) + +## Changes between v5.2.0 and v5.3.0 + +* 20250131 - `PhysicsSettings::mManifoldToleranceSq` is no longer squared and now called `mManifoldTolerance`. `ManifoldBetweenTwoFaces` now takes `inMaxContactDistance` instead of `inMaxContactDistanceSq`. (7611a4cb33b15fcb9108794ecb6fc5090470a438) +* 20250108 - `CharacterVirtual::Contact::mHadCollision` is now true for sensor contacts (`mIsSensorB`). Make sure you ignore all discarded contacts (`mWasDiscarded`) when using `CharacterVirtual::GetActiveContacts`. (0ce60932501cdadcb8b209b3e03c143fac4cbcd6) +* 20250108 - `CharacterContactListener` now has `OnContactPersisted`, `OnContactRemoved`, `OnCharacterContactPersisted` and `OnCharacterContactRemoved` functions. If you relied on `OnContactAdded`/`OnCharacterContactAdded` callbacks, you may want to call those functions from `OnContactPersisted`/`OnCharacterContactPersisted` to keep the behavior the same. (0ce60932501cdadcb8b209b3e03c143fac4cbcd6) +* 20241221 - `BodyInterface::AddForce` applied a force per soft body vertex rather than to the whole body, this resulted in a soft body accelerating much more compared to a rigid body of the same mass. If you are applying forces to soft bodies, you need to multiply the force by the number of vertices of the soft body to get the same effect as before. (7850b05a97d2079fc52e538507c843026a555ef3) +* 20241125 - *SBS* - Changed the binary serialization format of `MeshShape` to allow for bigger meshes of up to 110M triangles. (c738b3490c72cf868bdd704db7d0191b41541751) +* 20241119 - Removed the use of `std::unordered_map` and `std::unordered_set` and replaced them with our own implementation: `UnorderedMap` and `UnorderedSet`. The public facing interface includes some instances of these, e.g. `Shape::ShapeToIDMap`. Since these are typedeffed and the interface remained the same, applications should not notice the change. (f1420822d39c440492602b670eac8ae2f5821401) + +## Changes between v5.1.0 and v5.2.0 + +* 20240927 - PhysicsStepListener::OnStep now takes a single PhysicsStepListenerContext parameter. The old parameters 'delta time' and 'physics system' are part of this context. The VehicleConstraint step callbacks use the same context. (8153cd854ce0547b2def425118e1e2f68a9e365c) +* 20240922 - SoftBodyManifold now has a separate interface to return collisions with sensors (GetNumSensorContacts/GetSensorContactBodyID), this means they can no longer be retrieved through GetContactBodyID. (4058e6a72edc6e11630b3ec6b67d97e2b9324473) +* 20240922 - The interface of Shape::CollideSoftBodyVertices changed. It no longer takes a list of SoftBodyVertex but instead uses CollideSoftBodyVertexIterator. Also the delta time and displacement due to gravity parameters have been removed. If you have custom shapes, you need to update the signature. (4058e6a72edc6e11630b3ec6b67d97e2b9324473) +* 20240825 - RayCastSettings::mBackFaceMode was split into mBackFaceModeTriangles and mBackFaceModeConvex. Replace `mBackFaceMode = ...` with `SetBackFaceMode(...)` (b3cd9f4846c52a84064b7e5e9a9a9fcbfdf286de) +* 20240823 - Added virtual function Shape::GetLeafShape. If you have custom shapes, you may need to override this function and provide an implementation. (d7f08b83670ea6d0842e231f50ad2a175f56f949) + +## Changes between v5.0.0 and v5.1.0 + +* 20240811 - Added cmake options to toggle exception-handling and RTTI. CPP_EXCEPTIONS_ENABLED enables exceptions, CPP_RTTI_ENABLED enables RTTI. Before this change RTTI was off for MSVC and on for other compilers. Exceptions were on for all builds. You may need to set these options if your build relies on these C++ features. (760974d733ed24ea268a3bb9a8ef391b8ac503c7) +* 20240803 - *SBS* - Removed the use of size_t when saving to binary. This means that the 32 and 64 bit versions of the lib can now read each others streams and that the 64 bit version has been adjusted to match the 32 bit version. (b54a0849e01f9f793fef3a219dfabdc7559f71ed) +* 20240714 - The Reallocate function now takes an additional parameter 'old size' (6a7251d095f4c7e7c1c351d00829a20fa770246e) +* 20240517 - *SBS* - Combined a number of allocations into 1 for HeightFieldShape. This changes the binary serialization format for this class. (bd32df12bb8ab77b37eeedc226f368268c32ae17) +* 20240514 - Added macro JPH_OBJECT_STREAM that controls if ObjectStream is compiled or not. By default this is turned on, so you should not see a change, but if you compile without cmake you may need to define JPH_OBJECT_STREAM. (dc3ea787223d45855987e32b8bef7f9a59f6fcd2) +* 20240504 - Replaced std::vector with a custom Array class. It can be turned off by enabling the JPH_USE_STD_VECTOR define (or the USE_STD_VECTOR cmake option). (bdc1695a643457db86b72119b1393ae69b9a182e) +* 20240504 - Added a Reallocate function that needs to be implemented when you override the memory allocators and a reallocate function that you need to implement if you have a custom array allocator. The behavior is the same as the C realloc function. It is used to reallocate a block of memory for simple types instead of always going through a alloc, copy, free cycle. (bdc1695a643457db86b72119b1393ae69b9a182e) +* 20240413 - *SBS* - Skinned constraints are now processed in parallel, this means that they are reordered when Optimize() is called (see SoftBodySharedSettings::OptimizationResults::mSkinnedRemap). This also caused a change to the binary serialization format of SoftBodySharedSettings. (744900a4becb4dc69ee2bd70d6b26ee46da3e64a) +* 20240407 - *SBS* - The binary format of SoftBodySharedSettings changed due to an optimization pass. Also the results of the Optimize() call are no longer serialized when using an ObjectStream. Finally the Optimize() call will reorder the constraints (see SoftBodySharedSettings::OptimizationResults). (22739d900b4d92905ecccf2d81f18dece4a42595) + +## Changes between v4.0.2 and v5.0.0 + +* 20240327 - *SBS* - SoftBodySharedSettings::CreateEdges was renamed to CreateConstraints and can now also create shear and bend constraints. This also breaks the serialization format for SoftBodySharedSettings. (8e4bf3fa03f59cff6af7394d69cdf62abaf7a1d2) +* 20240310 - *SBS* - Soft body skinned constraints now use a sphere as backstop instead of an infinite plane. This also breaks the serialization format for SoftBodySharedSettings. (17db6d3f245d2198319c3787f62498fe5935b7c8) +* 20240225 - *SBS* - Changes were made to SoftBodySharedSettings that break the binary serialization format of that class. (277b818ffefed4f15477ff1e6d0cc07065899903) +* 20240223 - Added ConvexShape::ESupportMode::Default. If you have custom convex shapes you need to handle this in ConvexShape::GetSupportFunction. (0f67cc2915c5e34a4a38480580dad73888a1952e) +* 20240216 - Restriction angular motion using EAllowedDOFs now works in world space rather than in local space. This change was made to be more in line with other physics engines and to fix some issues with constraints. If you need the old behavior then copy [this](https://github.com/jrouwe/JoltPhysics/blob/9631e217e54b8492ac36471f2aa966df40d6c2ad/Jolt/Physics/Body/MotionProperties.cpp#L33-L118) code into your own code base and call MotionProperties::SetInverseInertia(diagonal, rotation) where diagonal is called mInvInertiaDiagonal and rotation is called mInertiaRotation in the code snippet. (191536d51d71ee29147205aa09d1acab52789e5f) +* 20240210 - Fixed spelling error EPathRotationConstraintType::ConstaintToPath to EPathRotationConstraintType::ConstrainToPath (6c095bbf7906b01f427b52d43212f5ebf760fc81) +* 20240210 - Added extra parameter fraction hint to PathConstraintPath::GetClosestPoint. This can be used to speed up the search along the curve and to disambiguate fractions in case a path reaches the same point multiple times (i.e. a figure-8) (b91e729e6e2c34df16cc03f5ac3b3f6d3fa8b762) +* 20240203 - Longitudinal friction impulse for wheeled/tracked vehicles could become much higher than the calculated max because each iteration it was clamped to the max friction impulse which meant the total friction impulse could be PhysicsSettings::mNumVelocitySteps times too high. In case this breaks your vehicle, the new max tire impulse callback can be used to restore the old behavior, see [the vehicle constraint test](https://github.com/jrouwe/JoltPhysics/blob/a456b244aa2ad2ce0a8124d27823377ed0b1c4b4/Samples/Tests/Vehicle/VehicleConstraintTest.cpp#L156-L164). (a456b244aa2ad2ce0a8124d27823377ed0b1c4b4) +* 20240120 - *SBS* - Implemented enhanced internal edge removal algorithm. This breaks the binary serialization format for BodyCreationSettings. (94c1ad811b95c72f4d3bb6841c73c1c3461caa91) +* 20240113 - VehicleConstraint::CombineFunction now calculates both longitudinal and lateral friction in 1 call so there can be dependencies between the two. (d6ed5b3e7b22904af555088b6ae4770f8fb0e00f) +* 20240105 - CharacterVirtual will now receive an OnContactAdded callback when it collides with a sensor (but will have no further interaction). You may need to update the logic in your CharacterContactListener to ignore those contacts. (fb778c568d3ba14556559324671ffec172957f5c) +* 20240101 - Renamed SensorDetectsStatic to CollideKinematicVsNonDynamic and made it work for non-sensors. This means that kinematic bodies can now get collision callbacks when they collide with other static / kinematic objects. It can also affect the order in which bodies are passed in the ContactListener::OnContactValidate callback. (2d607c4161a65201d66558a2cc76d1265aea527e) +* 20231220 - *SBS* - Added ability to enable gyroscopic forces on BodyCreationSettings. This breaks the binary serialization format for this class. (9d7748eaa91341adc17554f32bf991bfed04e47e) +* 20231219 - *SBS* - Added a 'swing type' attribute to SixDOFConstraint and SwingTwistConstraint. This breaks the binary serialization format. (41016256e2cf1262ec05cff3cfa7645668ee0bf0) +* 20231208 - Changed the meaning of Constraint::mNumVelocity/PositionStepsOverride. Before the number of steps would be the maximum of all constraints and the default value, now an overridden value of 0 means that the constraint uses the default value, otherwise it will use the value as specified. This means that if all constraints in an island have a lower value than the default, we will now use the lower value instead of the default. (0771808a03b850d16f1c64156f0aee827ca3706b) +* 20231208 - *SBS* - Bodies can now also override the default number of solver iterations. This breaks the binary serialization format. (0771808a03b850d16f1c64156f0aee827ca3706b) +* 20231203 - VehicleConstraint::CombineFunction got two additional parameters to identify which wheel is requesting friction. (8d80155f93d0d0c3ffe3dd46550650b9c830d304) + +## Changes between v4.0.0 and v4.0.2 + +* No breaking changes. + +## Changes between v3.0.1 and v4.0.0 + +* 20231003 - *SBS* - Bug fix in serialization of SoftBodySharedSettings breaks binary serialization format. (ccb250747eee4dedebfa02d950775478fb52f786) +* 20230914 - Removed GetProcessorTicksPerSecond as it was not correctly implemented for all platforms. (d44f4bad0872075d5cef2779742c89203d4f4488) +* 20230819 - *SBS* - RagdollSettings got the ability to have constraints that do not follow the skeleton. This changes the binary serialization format for this class. (08fc49d2d7abfa1a69e21971785d37724c748bb6) +* 20230807 - Renamed ContactSettings::mRelativeSurfaceVelocity to mRelativeLinearSurfaceVelocity. (76b809ddb1abf96641acc587fffa70101323d323) +* 20230807 - *SBS* - PhysicsScene is now able to load/save soft bodies. This changes the binary serialization format. (779ba3673beebdc4021842516f4ff6aa7c1e09b4) +* 20230805 - Body::SaveState and MotionProperties::SaveState now only save the state that can be changed by the simulation. Configuration properties like friction, restitution etc. must be saved by the user if desired. (7ff50429abd53f1914fd25a9e80ff47f22bc9f0e) +* 20230801 - *SBS* - Constraint priority was added to all constraints which changes the binary serialization format. (e341bb3e959460fbe196032095c1ab0346d7e746) +* 20230704 - *SBS* - A new flag was added to BodyCreationSettings that changes the binary serialization format. (2dd3a033a41e422eb470484029324cc9bbaf0825) +* 20230629 - Fix for engine RPM being much higher than wheel RPM when measured at clutch. Before we were ignoring bake and wheel torques in engine RPM calculation. Now they're much closer but this unfortunately means that the simulation of the vehicle has changed and mainly the engine torque and clutch strength need to be re-tweaked. (b40090766c545a68dccfac76cde8c6345ca626a6) +* 20230623 - The parameter inIntegrationSubSteps was removed from PhysicsSystem::Update because more and more features didn't support it. If you were using it multiply inCollisionSteps with the value of inIntegrationSubSteps to get roughly the same behavior. (8fcc7a78ec051b215bf13b037b9f975baa803b6f) +* 20230618 - *SBS* - A new flag was added to BodyCreationSettings that changes the binary serialization format. (107b70c7585909f0757a62c318261a18d670ff97) +* 20230610 - A bug was fixed that causes the vehicle suspension to be weaker when driving over low mass objects. This also changes suspension behavior a bit when driving over static objects. (44b82e395697ea553574df3cd806ffe264bfa5c4) +* 20230609 - *SBS* - The MotorcycleController lean controller is now a full PID controller. This changes binary serialization format. (70e7bb3e5808dabc17ee38fb823fbfa7e9140a91) +* 20230609 - *SBS* - VehicleConstraint uses the new SpringSettings class as a member which contains the mFrequency and mDamping members. This requires minor code changes. (0da97d8f3345f14c5b4b0ee3571c05832c556f98) +* 20230609 - *SBS* - DistanceConstraintSettings, SliderConstraintSettings and MotorSettings now use the new SpringSettings class as a member which contains the mFrequency and mDamping members. This requires minor code changes. (3cabc057c1267fde288c1ab2a23076702c71eb79) +* 20230520 - A bug was fixed in CharacterVirtual that makes mPenetrationRecoverySpeed behave according to the documentation (1 = fully resolve collision in 1 update). With the bug the recovery was too little. If you want the penetration recovery to work as before with the bug multiply it by 1 / delta_time. (8dd93317d66a9a72d3afeff4ecb17c257a7e9d91) +* 20230420 - To support compiling Jolt as a shared library, the RTTI macros were changed to be able to specify if a symbol should be exported or not. If you're using Jolt's RTTI system in your own project you need to change e.g. JPH_DECLARE_RTTI_VIRTUAL(XXX) to JPH_DECLARE_RTTI_VIRTUAL(JPH_NO_EXPORT, XXX). (d2f1d97004d036c6f759203c42e264e401472037) + +## Changes between v2.0.1 and v3.0.0 + +* 20230331 - *SBS* - Vehicle wheels now support specifying the steering axis and wheel forward and up axis separately. This breaks the serialization format and requires setting extra properties on the wheels. (4269d8bbc77b889552a842c2e8476ba7ffc6b9a1) +* 20230328 - Vehicle now supports suspension under an angle. The behavior of the suspension, even if it is under 90 degrees with the vehicle body, changed so this may require tweaking the spring constants. (172a99c718bded5faa169ac440517286684fa2f0) +* 20230316 - The signature of ShapeFilter changed and the ShouldCollide function is no longer called for triangles inside a mesh/heightfield shape (you can use CollisionCollector::AddHit to filter per triangle). The previous implementation didn't pass in enough context for the application to fully determine which sub shapes were colliding. See [#473](https://github.com/jrouwe/JoltPhysics/discussions/473) for more information. (bc4fa997f15f2953dc87ee5c1ba51ecf2077c287) +* 20230313 - VehicleCollisionTester::Collide parameter outSuspensionLength was returning suspension length + wheel radius, now it returns the suspension length. If you have your own implementation of VehicleCollisionTester you need to update your code. (fcd9cb0f1677709e30951f2748aefd5f72ffdae1) +* 20230212 - Sensors are now able to detect other Sensors, make sure you put sensors in an ObjectLayer that doesn't collide with other sensors if you want to preserve the old behavior. (a76f5891ee429ae4fcde659c19f1eb769f9d8a21) +* 20230205 - *SBS* - Added 'IsSensor' and 'UseManifoldReduction' to BodyCreationSettings::SaveBinaryState. (8f6f210f53fc71e43760e20aeb2eae28ea168f4b) +* 20221231 - ObjectLayerPairFilter and ObjectVsBroadPhaseLayerFilter are now objects instead of function pointers. (4315ad53e354f094f753664fcf7a52870f6915e4) +* 20221208 - ContactListener::OnContactValidate is reporting collisions relative to inBaseOffset. Add this to the contact point if you want world space positions. (428611482825e369e60e0a5daf17c69a4d0f2a6f) +* 20221204 - Changes related to double precision support for positions (a2c1c22059fa031faf0208258e654bcff79a63e4) + * In many places in the public API Vec3 has been replaced by RVec3 (a Vec3 of Real values which can either be double or float depending on if JPH_DOUBLE_PRECISION is defined). In the same way RMat44 replaces Mat44. When compiling in single precision mode (the default) you should not notice a change. + * Shape::GetSubmergedVolume now takes a plane that's relative to inCenterOfMassTransform instead of one in world space + * Many of the NarrowPhaseQuery and TransformedShape collision queries now have a 'base offset' that you need to specify. Go to [Big Worlds](https://jrouwe.github.io/JoltPhysics/#big-worlds) for more info. + * The NarrowPhaseQuery/TransformedShape CastRay / CastShape functions now take a RRayCast / RShapeCast struct as input. When compiling in single precision mode this is the same as a RayCast or ShapeCast so only the type name needs to be updated. + * If you implement your own TempAllocator and want to compile in double precision, make sure you align to JPH_RVECTOR_ALIGNMENT bytes (instead of 16) + * The SkeletonPose got a 'root offset' member, this means that the ragdoll will now make the joint transform of the first body zero and put that offset in the 'root offset'. + * ContactManifold now stores the contacts relative to mBaseOffset, the arrays containing the contact points have been renamed from mWorldSpaceContactPointsOn1/2 to mRelativeContactPointsOn1/2 to reflect this. + * The DebugRenderer::DrawLine function now takes RVec3Arg parameters instead of Float3 parameters. + * The format of a recording recorded with DebugRendererRecorder has changed, this invalidates any prior recordings. +* 20221128 - MotionProperties::SetMotionQuality has been removed because changing it for an active body could cause crashes. Use BodyInterface::SetMotionQuality instead. (64802d163a7336e60916365ad9bce764cec4ca70) + +## Changes between v1.1.0 and v2.0.0 + +* 20221027 - *SBS* (vehicles only) - Rewrote engine model for wheeled vehicle. Before engine inertia was only used when the clutch was pressed, now it is always used, so you may want to use a lower value. The way torque is distributed over the wheels has also changed and may require tweaking the vehicle parameters. (5ac751cee9afcc097fd4f884308f5e4dc9fdaeaf) +* 20220903 - *SBS* - Added overrides for number of position/velocity solver iterations. Only affects serialization. (38ec33942ead4968a83409bd13d868f60e6397c4) +* 20220826 - *SBS* - Removed FixedConstraintSettings and SliderConstraintSettings SetPoint functions. If you were calling this function replace it by setting mAutoDetectPoint = true. (d16a0b05bfeed42b1618e3774a9c953e6922d22b) +* 20220614 - It is now possible to override the memory allocator, register the default using RegisterDefaultAllocator(). This means that the public API now takes STL containers that use a custom memory allocator so use Array instead of vector, UnorderedMap instead of unordered_map etc. If you're using placement new, add ```::``` in front of new. Define JPH_DISABLE_CUSTOM_ALLOCATOR to disable this new behavior (b68097f582148d6f66c18a6ff95c5ca9b40b48cc) +* 20220606 - *SBS* - The slider constraint now has frequency and damping for its limits (09d6d9d51c46fbd159bf98abfd43cc639f6c0403) +* 20220606 - *SBS* - The rack and pinion and gear constraints were added (09d6d9d51c46fbd159bf98abfd43cc639f6c0403) +* 20220517 - Note: Superseded by d16a0b05bfeed42b1618e3774a9c953e6922d22b. When constructing a FixedConstraint you now need to call FixedConstraintSettings::SetPoint to configure the point where the bodies attach (4f7c925c31f39eda1d8d68e4e72456b5def93d9b) +* 20220516 - Constraint::GetType was renamed to GetSubType, a new GetType function was introduced (3e2151a009e8f11ca724754b2bd25e14d2654fb6) +* 20220516 - *SBS* - Added possibility to save the current state of the physics world as a scene (3e2151a009e8f11ca724754b2bd25e14d2654fb6) +* 20220510 - Factory::sInstance must now be allocated by the application prior to calling RegisterTypes() and has changed to a pointer (3ca62973dae7cda7a9ceece698438a45b9ad1433) +* 20220503 - Unused function SerializableObject::OnLoaded was removed (388d47254a236c053a472e54c10b264765badc09) +* 20220502 - ContactConstraintManager::CombineFunction has additional parameters: the SubShapeIDs from both bodies (6b873563739dfd3d77263c2c50af2f3f418ec15b) +* 20220415 - Removed Body::GetDebugName / SetDebugName, keep this info in a lookaside table if you need it (6db4d3beac6760e55f65102db00f93dfbc56ac26) +* 20220406 - Renamed CollisionDispatch::sCastShapeVsShape to sCastShapeVsShapeLocalSpace (6ba21f50dcf17bd506080ec30759724a7f3097d8) +* 20220327 - Changed the default include path, ```#include ``` must be replaced by ```#include ``` (06e9d17d385814cd24d3b77d689c0a29d854e194) +* 20220318 - Added support for SSE2. If you want to use later versions of SSE make sure you have JPH_USE_SSE4_1 and JPH_USE_SSE4_2 defined (28f363856a007d03f657e46e8f6d90ccd7c6487a) +* 20220303 - Note: Partially superseded by d16a0b05bfeed42b1618e3774a9c953e6922d22b. When constructing a SliderConstraint you now need to call SliderConstraintSettings::SetPoint to configure the point where the bodies attach. Also replace mSliderAxis = x with SetSliderAxis(x) (5a327ec182d0436d435c62d0bccb4e76c6324659) +* 20220228 - PointConstraint::mCommonPoint is now mPoint1 / mPoint2. Replace mCommonPoint = x with mPoint1 = mPoint2 = x (066dfb8940ba3e7dbf8ed47e9a1eeb194730e04b) +* 20220226 - ObjectToBroadPhaseLayer and BroadPhaseLayerToString changed to BroadPhaseLayerInterface, this makes mapping a broadphase layer to an object layer more flexible (36dd3f8c8c31ef1aeb7585b2b615c23bc8b76f13) +* 20220222 - Shape and body user data changed from void * / uint32 to uint64 (14e062ac96abd571c6eff5e40b1df4d8b2333f55) + +## Changes between v1.0.0 and v1.1.0 + +* No breaking changes. + +## Changes between v0.0.0 and v1.0.0 + +* 20220107 - PhysicsSettings::mBodyPairCacheCosMaxDeltaRotation was renamed to mBodyPairCacheCosMaxDeltaRotationDiv2 +* 20211219 - *SBS* - Now storing 3 components for a Vec3 instead of 4 in SaveBinaryState (23c1b9d9029d74076c0549c8779b3b5ac2179ea3) +* 20211212 - Removed StatCollector (92a117e0f05a08de154e86d3cd0b354783aa5593) +* 20210711 - HeightFieldShapeSettings::mBlockSize is subdivided one more time at run-time, so this is effectively 2x the block size (2aa3b443bf71785616f3140c32e6a04c49516535) +* 20211106 - Mutex class now has its own implementation on Platform Blue, users must implement the JPH_PLATFORM_BLUE_MUTEX_* functions (a61dc67503a87ef0e190f7fb31d495ac51aa43de) +* 20211019 - ShapeCast::mShape no longer keeps a reference, the caller is responsible for keeping the reference now (e2bbdda9110b083b49ba323f8fd0d88c19847c2e) +* 20211004 - Removed RTTI from Shape class, use Shape::GetType / GetSubType now (6d5cafd53501c2c1e313f1b1f29d5161db074fd5) +* 20210930 - Changed RestoreMaterialState and RestoreSubShapeState to use pointers instead of vectors to allow loading shapes with fewer memory allocations (b8953791f35a91fcd12568c7dc4cc2f68f40fb3f) +* 20210918 - PhysicsSystem::Init takes an extra parameter to specify the amount of mutexes to use (ef371411af878023f062b9930db09f17411f01ba) +* 20210827 - BroadPhaseLayerPairFilter was changed to ObjectVsBroadPhaseLayerFilter to avoid testing too many layers during collision queries (33883574bbc6fe208a4b62054d00b582872da6f4) diff --git a/Engine/lib/JoltPhysics/Docs/Architecture.md b/Engine/lib/JoltPhysics/Docs/Architecture.md new file mode 100644 index 000000000..069b814b5 --- /dev/null +++ b/Engine/lib/JoltPhysics/Docs/Architecture.md @@ -0,0 +1,901 @@ +[TOC] + +# Architecture of Jolt Physics {#architecture-jolt-physics} + +# Getting Started {#getting-started} + +To get started, look at the [HelloWorld](https://github.com/jrouwe/JoltPhysics/blob/master/HelloWorld/HelloWorld.cpp) example. A [HelloWorld example using CMake FetchContent](https://github.com/jrouwe/JoltPhysicsHelloWorld) is also available to show how you can integrate Jolt Physics in a CMake project. + +Every feature in Jolt has its own sample. [Running the Samples application](Samples.md) and browsing through the [code](https://github.com/jrouwe/JoltPhysics/tree/master/Samples/Tests) is a great way to learn about the library! + +The rest of this document describes the concepts used in Jolt in more detail. + +# Bodies {#bodies} + +We use a pretty traditional physics engine setup, so \ref Body "bodies" in our simulation are objects which have attached collision \ref Shape "shapes" + +## Types {#body-types} + +Bodies can either be: +- [static](@ref EMotionType) (not moving or simulating) +- [dynamic](@ref EMotionType) (moved by forces) or +- [kinematic](@ref EMotionType) (moved by velocities only). + +Moving bodies have a [MotionProperties](@ref MotionProperties) object that contains information about the movement of the object. Static bodies do not have this to save space (but they can be configured to have it if a static body needs to become dynamic during its lifetime by setting [BodyCreationSettings::mAllowDynamicOrKinematic](@ref BodyCreationSettings::mAllowDynamicOrKinematic)). + +## Creating Bodies {#creating-bodies} + +Bodies are inserted into the [PhysicsSystem](@ref PhysicsSystem) and interacted with through the [BodyInterface](@ref BodyInterface). + +The general life cycle of a body is: + +- BodyInterface::CreateBody - Construct a Body object and initialize it. You cannot use `new` to create a Body. +- BodyInterface::AddBody - Add the body to the PhysicsSystem and make it participate in the simulation. +- BodyInterface::RemoveBody - Remove it from the PhysicsSystem. +- BodyInterface::DestroyBody - Deinitialize and destruct the Body. You cannot use `delete` to delete a Body. This function will not automatically remove the Body from the PhysicsSystem. + +If you need to add many bodies at the same time then use the batching functions: + +- BodyInterface::AddBodiesPrepare - Prepares bodies to be added to the PhysicsSystem. Doesn't affect simulation and can be done from a background thread. +- BodyInterface::AddBodiesFinalize - Finalize insertion. This atomically adds all bodies to the PhysicsSystem. +- BodyInterface::AddBodiesAbort - If you've called AddBodiesPrepare but changed your mind and no longer want to add the bodies to the PhysicsSystem. Useful when streaming in level sections and the player decides to go the other way. +- BodyInterface::RemoveBodies - Batch remove a lot of bodies from the PhysicsSystem. + +Always use the batch adding functions when possible! Adding many bodies, one at a time, results in a really inefficient broadphase (a trace will notify when this happens) and in extreme cases may lead to the broadphase running out of internal nodes (std::abort will be called in that case). If you cannot avoid adding many bodies one at a time, use PhysicsSystem::OptimizeBroadPhase to rebuild the tree. + +You can call AddBody, RemoveBody, AddBody, RemoveBody to temporarily remove and later reinsert a body into the simulation. + +## Multithreaded Access {#multi-threaded-access} + +Jolt is designed to be accessed from multiple threads so the body interface comes in two flavors: A locking and a non-locking variant. The locking variant uses a mutex array (a fixed size array of mutexes, bodies are associated with a mutex through hashing and multiple bodies use the same mutex, see [MutexArray](@ref MutexArray)) to prevent concurrent access to the same body. The non-locking variant doesn't use mutexes, so requires the user to be careful. + +In general, body ID's ([BodyID](@ref BodyID)) are used to refer to bodies. You can access a body through the following construct: + + JPH::BodyLockInterface lock_interface = physics_system.GetBodyLockInterface(); // Or GetBodyLockInterfaceNoLock + JPH::BodyID body_id = ...; // Obtain ID to body + + // Scoped lock + { + JPH::BodyLockRead lock(lock_interface, body_id); + if (lock.Succeeded()) // body_id may no longer be valid + { + const JPH::Body &body = lock.GetBody(); + + // Do something with body + ... + } + } + +When another thread has removed the body between the time the body ID was obtained and the lock, the lock will fail. While the lock is taken, other threads cannot modify the body, so it is safe to work with it. Each body ID contains a sequence number, so body ID's will only be reused after many add/remove cycles. To write to a body use [BodyLockWrite](@ref BodyLockWrite). + +You cannot use BodyLockRead to lock multiple bodies (if two threads lock the same bodies in opposite order you'll get a deadlock). Use [BodyLockMultiRead](@ref BodyLockMultiRead) or [BodyLockMultiWrite](@ref BodyLockMultiWrite) to lock them in a consistent order. + +Note that a lot of convenience functions are exposed through the BodyInterface, but not all functionality is available, so you may need to lock the body to get the pointer and then call the function directly on the body. + +## Single Threaded Access {#single-threaded-access} + +If you're only accessing the physics system from a single thread, you can use Body pointers instead of BodyID's. In this case you can also use the non-locking variant of the body interface. + +Note that there are still some restrictions: + +* You cannot read from / write to bodies or constraints while PhysicsSystem::Update is running. As soon as the Update starts, all body / constraint mutexes are locked. +* Collision callbacks (see ContactListener) are called from within the PhysicsSystem::Update call from multiple threads. You can only read the body data during a callback. +* Activation callbacks (see BodyActivationListener) are called in the same way. Again you should only read the body during the callback and not make any modifications. +* Step callbacks (see PhysicsStepListener) are also called from PhysicsSystem::Update from multiple threads. You're responsible for making sure that there are no race conditions. In a step listener you can read/write bodies or constraints but you cannot add/remove them. + +If you are accessing the physics system from multiple threads, you should probably use BodyID's and the locking variant of the body interface. It is however still possible to use Body pointers if you're really careful. E.g. if there is a clear owner of a Body and you ensure that this owner does not read/write state during PhysicsSystem::Update or while other threads are reading the Body there will not be any race conditions. + +## Shapes {#shapes} + +Each body has a shape attached that determines the collision volume. The following shapes are available (in order of computational complexity): + +* [SphereShape](@ref SphereShape) - A sphere centered around zero. +* [BoxShape](@ref BoxShape) - A box centered around zero. +* [CapsuleShape](@ref CapsuleShape) - A capsule centered around zero. +* [TaperedCapsuleShape](@ref TaperedCapsuleShape) - A capsule with different radii at the bottom and top. +* [CylinderShape](@ref CylinderShape) - A cylinder shape. Note that cylinders are the least stable of all shapes, so use another shape if possible. +* [TaperedCylinderShape](@ref TaperedCylinderShape) - A cylinder with different radii at the bottom and top. Note that cylinders are the least stable of all shapes, so use another shape if possible. +* [ConvexHullShape](@ref ConvexHullShape) - A convex hull defined by a set of points. +* [TriangleShape](@ref TriangleShape) - A single triangle. Use a MeshShape if you have multiple triangles. +* [PlaneShape](@ref PlaneShape) - An infinite plane. Negative half space is considered solid. +* [StaticCompoundShape](@ref StaticCompoundShape) - A shape containing other shapes. This shape is constructed once and cannot be changed afterwards. Child shapes are organized in a tree to speed up collision detection. +* [MutableCompoundShape](@ref MutableCompoundShape) - A shape containing other shapes. This shape can be constructed/changed at runtime and trades construction time for runtime performance. Child shapes are organized in a list to make modification easy. +* [MeshShape](@ref MeshShape) - A shape consisting of triangles. They are mostly used for static geometry. +* [HeightFieldShape](@ref HeightFieldShape) - A shape consisting of NxN points that define the height at each point, very suitable for representing hilly terrain. Any body that uses this shape needs to be static. +* [EmptyShape](@ref EmptyShape) - A shape that collides with nothing and that can be used as a placeholder or for dummy bodies. + +Next to this there are a number of decorator shapes that change the behavior of their children: + +* [ScaledShape](@ref ScaledShape) - This shape can scale a child shape. Note that if a shape is rotated first and then scaled, you can introduce shearing which is not supported by the library. +* [RotatedTranslatedShape](@ref RotatedTranslatedShape) - This shape can rotate and translate a child shape, it can e.g. be used to offset a sphere from the origin. +* [OffsetCenterOfMassShape](@ref OffsetCenterOfMassShape) - This shape does not change its child shape but it does shift the calculated center of mass for that shape. It allows you to e.g. shift the center of mass of a vehicle down to improve its handling. + +### Dynamic Mesh Shapes {#dynamic-mesh-shapes} + +Meshes are usually static, but they can be made kinematic or dynamic provided that they don't collide with other mesh- or heightfield shapes (an assert will trigger when this happens and the collision will be ignored). + +Mesh shapes also cannot calculate their mass and inertia, so when you want a dynamic mesh, you need to provide these yourself by setting BodyCreationSettings::mOverrideMassProperties = EOverrideMassProperties::MassAndInertiaProvided and supplying the mass and inertia in BodyCreationSettings::mMassPropertiesOverride. + +An example can be found [here](https://github.com/jrouwe/JoltPhysics/blob/master/Samples/Tests/General/DynamicMeshTest.cpp). + +Note that you should try to avoid dynamic mesh shapes as they are fairly expensive to simulate. Also, mesh shapes don't have a clear inside/outside so a mesh is only considered to be colliding when one of its triangles intersect with the other object. This can result in objects getting stuck inside the mesh without knowing which way is out. + +### Creating Shapes {#creating-shapes} + +Simple shapes like spheres and boxes can be constructed immediately by simply new-ing them. Other shapes need to be converted into an optimized format in order to be usable in the physics simulation. The uncooked data is usually stored in a [ShapeSettings](@ref ShapeSettings) object and then converted to cooked format by a [Create](@ref ShapeSettings::Create) function that returns a [Result](@ref Result) object that indicates success or failure and provides the cooked object. + +Creating a convex hull for example looks like: + + // Shapes are refcounted and can be shared between bodies + JPH::Ref shape; + + // The ShapeSettings object is only required for building the shape, all information is copied into the Shape class + { + // Create an array of vertices + JPH::Array vertices = { ... }; + + // Create the settings object for a convex hull + JPH::ConvexHullShapeSettings settings(vertices, JPH::cDefaultConvexRadius); + + // Create shape + JPH::Shape::ShapeResult result = settings.Create(); + if (result.IsValid()) + shape = result.Get(); + else + ... // Error handling + } + +Note that after you call Create, the shape is cached and ShapeSettings keeps a reference to your shape (see @ref memory-management). If you call Create again, the same shape will be returned regardless of what changed to the settings object (unless you call [ClearCachedResult](@ref ShapeSettings::ClearCachedResult) to clear the cache). + +### Saving Shapes {#saving-shapes} + +There are two ways of serializing data: + +* The uncooked data can be serialized using the [ObjectStream](@ref ObjectStream) system (either in [binary](@ref ObjectStreamBinaryOut) or in [text](@ref ObjectStreamTextOut) format), data stored in this way is likely to be compatible with future versions of the library (although there is no 100% guarantee of this). +* The cooked data can be serialized using the [SaveBinaryState](@ref Shape::SaveBinaryState) interface that various objects provide. Data stored in this way is optimized for simulation performance and loading speed but is very likely to change between versions of the library, so this should never be your primary data format. + +An example of saving a shape in binary format: + + // Create a sphere of radius 1 + JPH::Ref sphere = new JPH::SphereShape(1.0f); + + // For this example we'll be saving the shape in a STL string stream, but if you implement StreamOut you don't have to use STL. + // Note that this will be storing a binary string of bytes that can contain 0-bytes, it is not an ASCII string! + stringstream data; + JPH::StreamOutWrapper stream_out(data); + + // Save the shape (note this function handles CompoundShape too). + // The maps are there to avoid saving the same shape twice (it will assign an ID to each shape the first time it encounters them). + // If you don't want certain shapes to be saved, add them to the map and give them an ID. + // You can save many shapes to the same stream by repeatedly calling SaveWithChildren on different shapes. + JPH::Shape::ShapeToIDMap shape_to_id; + JPH::Shape::MaterialToIDMap material_to_id; + sphere->SaveWithChildren(stream_out, shape_to_id, material_to_id); + + // Wrap the STL stream in a StreamIn + JPH::StreamInWrapper stream_in(data); + + // Load the shape + // If you have assigned custom ID's on save, you need to ensure that the shapes exist in this map on restore too. + JPH::Shape::IDToShapeMap id_to_shape; + JPH::Shape::IDToMaterialMap id_to_material; + JPH::Shape::ShapeResult result = JPH::Shape::sRestoreWithChildren(stream_in, id_to_shape, id_to_material); + + JPH::Ref restored_shape; + if (result.IsValid()) + restored_shape = result.Get(); + else + ... // Error handling + +As the library does not offer an exporter from content creation packages and since most games will have their own content pipeline, we encourage you to store data in your own format, cook data while cooking the game data and store the result using the SaveBinaryState interface (and provide a way to force a re-cook when the library is updated). + +A possible pattern for serializing binary data in your own engine could be: + +* EngineBody at runtime creates a Body. Note that the prefix 'Engine' means that it's a class in your own engine. +* It links to an EngineShape, which wraps a Shape. +* EngineShape comes in different flavors, e.g. EngineMeshShape, EngineSphereShape etc. +* EngineMeshShape contains the uncompressed mesh data (in a format that's editable in your tools). +* When 'cooking' the game data: + * Create a MeshShape. + * Save it using Shape::SaveWithChildren in a binary blob that's associated with the EngineMeshShape (could be in an attribute that's an array of bytes). + * Throw away the uncompressed mesh data. +* When loading the EngineMeshShape using your own serialization system, also restore the MeshShape from the binary blob using Shape::sRestoreWithChildren. +* Your serialization system should take care that the pointer between EngineBody and EngineShape is restored. +* There are some tricks for sharing Shapes, e.g. an EngineCompoundShape links to multiple child EngineShapes: + * At cooking time create a StaticCompoundShape. + * Before writing the shape to the binary blob with Shape::SaveWithChildren it inserts all leaf shapes (the Shape associated with the child EngineShape) in the Shape::ShapeToIDMap so they won't be included in the binary blob. + * Before loading the binary blob with Shape::sRestoreWithChildren prepopulate the Shape::IDToShapeMap with the pointers to the restored Shape's from the child EngineShapes (this again assumes that your own serialization system is capable of restoring the pointers between EngineCompoundShape and the child EntityShapes). + +### Convex Radius {#convex-radius} + +In order to speed up the collision detection system, all convex shapes use a convex radius. The provided shape will first be shrunken by the convex radius and then inflated again by the same amount, resulting in a rounded off shape: + + + +### Center of Mass {#center-of-mass} + +__Beware: When a shape is created, it will automatically recenter itself around its center of mass.__ The center of mass can be obtained by calling [Shape::GetCenterOfMass](@ref Shape::GetCenterOfMass) and most functions operate in this Center of Mass (COM) space. Some functions work in the original space the shape was created in, they usually have World Space (WS) or Shape Space (SS) in their name (or documentation). + + + +As an example, say we create a box and then translate it: + + // Create box of 2x2x2 m (you specify half the side) + JPH::BoxShapeSettings box(JPH::Vec3(1, 1, 1)); + JPH::Ref box_shape = box.Create().Get(); + + // Offset it by 10 m + JPH::RotatedTranslatedShapeSettings translated_box(JPH::Vec3(10, 0, 0), JPH::Quat::sIdentity(), box_shape); + JPH::Ref translated_box_shape = translated_box.Create().Get(); + + // Cast a ray against the offset box (WRONG!) + JPH::RayCast ray; + ray.mOrigin = JPH::Vec3(10, 2, 0); + ray.mDirection = JPH::Vec3(0, -2, 0); + + // Cast ray + JPH::RayCastResult hit; + bool had_hit = translated_box_shape->CastRay(ray, JPH::SubShapeIDCreator(), hit); + JPH_ASSERT(!had_hit); // There's no hit because we did not correct for COM! + + // Convert the ray to center of mass space for the shape (CORRECT!) + ray.mOrigin -= translated_box_shape->GetCenterOfMass(); + + // Cast ray + had_hit = translated_box_shape->CastRay(ray, JPH::SubShapeIDCreator(), hit); + JPH_ASSERT(had_hit); // Ray was in COM space, now there's a hit! + +In the same way calling: + + translated_box_shape->GetLocalBounds(); + +will return a box of size 2x2x2 centered around the origin, so in order to get it back to the space in which it was originally created you need to offset the bounding box: + + JPH::AABox shape_bounds = translated_box_shape->GetLocalBounds(); + shape_bounds.Translate(translated_box_shape->GetCenterOfMass()); + JPH_ASSERT(shape_bounds == JPH::AABox(JPH::Vec3(9, -1, -1), JPH::Vec3(11, 1, 1))); // Now we have the box relative to how we created it + +Note that when you work with interface of [BroadPhaseQuery](@ref BroadPhaseQuery), [NarrowPhaseQuery](@ref NarrowPhaseQuery) or [TransformedShape](@ref TransformedShape) this transformation is done for you. + +### Scaling Shapes {#scaling-shapes} + +Shapes can be scaled using the [ScaledShape](@ref ScaledShape) class. You can scale a shape like: + + JPH::RefConst my_scaled_shape = new JPH::ScaledShape(my_non_scaled_shape, JPH::Vec3(x_scale, y_scale, z_scale)); + +Not all scales are valid for every shape. Use Shape::IsValidScale to check if a scale is valid for a particular shape (the documentation for this function also lists the rules for all shape types). + +A safer way of scaling shapes is provided by the Shape::ScaleShape function: + + JPH::Shape::ShapeResult my_scaled_shape = my_non_scaled_shape->ScaleShape(JPH::Vec3(x_scale, y_scale, z_scale)); + +This function will check if a scale is valid for a particular shape and if a scale is not valid, it will produce the closest scale that is valid. +For example, if you scale a CompoundShape that has rotated sub shapes, a non-uniform scale would cause shearing. In that case the Shape::ScaleShape function will create a new compound shape and scale the sub shapes (losing the shear) rather than creating a ScaledShape around the entire CompoundShape. + +Updating scaling after a body is created is also possible, but should be done with care. Imagine a sphere in a pipe, scaling the sphere so that it becomes bigger than the pipe creates an impossible situation as there is no way to resolve the collision anymore. +Please take a look at the [DynamicScaledShape](https://github.com/jrouwe/JoltPhysics/blob/master/Samples/Tests/ScaledShapes/DynamicScaledShape.cpp) demo. The reason that no ScaledShape::SetScale function exists is to ensure thread safety when collision queries are being executed while shapes are modified. + +Note that there are many functions that take a scale in Jolt (e.g. CollisionDispatch::sCollideShapeVsShape), usually the shape is scaled relative to its center of mass. The Shape::ScaleShape function scales the shape relative to the origin of the shape. + +### Creating Custom Shapes {#creating-custom-shapes} + +If the defined Shape classes are not sufficient, or if your application can make a more efficient implementation because it has specific domain knowledge, it is possible to create a custom collision shape: + +* Derive a new class from Shape (e.g. MyShape). If your shape is convex you can consider deriving from ConvexShape, if it contains multiple sub shapes you can derive from CompoundShape or if it wraps a single other shape it can be derived from DecoratedShape. +* Create a settings class that configures your shape (e.g. MyShapeSettings) and inherit it from the corresponding settings class (e.g. ShapeSettings, CompoundShapeSettings or DecoratedShapeSettings). +* Override the ```MyShapeSettings::Create``` function to construct an instance of MyShape. +* If you want to serialize the settings class, register it with the factory: ```Factory::sInstance->Register(RTTI_OF(MyShapeSettings))``` +* If you inherited from Shape you need to select a shape type, use e.g. ```EShapeType::User1``` +* In all cases you will need to specify a sub shape type, use e.g. ```EShapeSubType::User1``` +* If you inherited from ConvexShape you can also specify a convex sub shape type, e.g. ```EShapeSubType::UserConvex1```, in which case you don't need to implement or register the collision detection functions mentioned below. +* Implement the virtual functions that your selected base class exposes. Some functions could be implemented as a dummy if you don't care about the functionality, e.g. if you don't care about buoyancy then GetSubmergedVolume does not need to be implemented. +* Create a ```MyShape::sRegister()``` function to register all collision functions, make sure you call this function after calling ```RegisterTypes()```, see [MeshShape::sRegister](@ref MeshShape::sRegister) for an example. +* Now write collision detection functions to test collision with all other shape types that this shape could collide with and register them with [CollisionDispatch::sRegisterCollideShape](@ref CollisionDispatch::sRegisterCollideShape) and [CollisionDispatch::sRegisterCastShape](@ref CollisionDispatch::sRegisterCastShape). This can be a lot of work, but there are some helper functions that you can use to reduce the work: + * If you have implemented a collision test for type A vs B then you can register [CollisionDispatch::sReversedCastShape](@ref CollisionDispatch::sReversedCastShape) and [CollisionDispatch::sReversedCollideShape](@ref CollisionDispatch::sReversedCollideShape) for B vs A. + * If your shape is triangle based, you can forward the testing of a shape vs a single triangle to the [CollideConvexVsTriangles](@ref CollideConvexVsTriangles) and [CastConvexVsTriangles](@ref CastConvexVsTriangles) classes. + * If your shape contains sub shapes and you have determined that the shape intersects with one of the sub shapes you can forward the sub shape to the collision dispatch again through [CollisionDispatch::sCollideShapeVsShape](@ref CollisionDispatch::sCollideShapeVsShape) and [CollisionDispatch::sCastShapeVsShapeLocalSpace](@ref CollisionDispatch::sCastShapeVsShapeLocalSpace). + +## Sensors {#sensors} + +Sensors are normal rigid bodies that report contacts with other Dynamic or Kinematic bodies through the [ContactListener](@ref ContactListener) interface. Any detected penetrations will however not be resolved. Sensors can be used to implement triggers that detect when an object enters their area. + +The cheapest sensor has a Static motion type. This type of sensor will only detect active bodies entering their area. As soon as a body goes to sleep, the contact will be lost. Note that you can still move a Static sensor around using [BodyInterface::SetPosition](@ref BodyInterface::SetPosition). + +When you make a sensor Kinematic or Dynamic and activate it, it will also detect collisions with sleeping bodies, albeit with a higher run-time cost. + +To create a sensor, either set [BodyCreationSettings::mIsSensor](@ref BodyCreationSettings::mIsSensor) to true when constructing a body or set it after construction through [Body::SetIsSensor](@ref Body::SetIsSensor). A sensor can only use the discrete motion quality type at this moment. + +To make sensors detect collisions with static objects, set the [BodyCreationSettings::mCollideKinematicVsNonDynamic](@ref BodyCreationSettings::mCollideKinematicVsNonDynamic) to true or call [Body::SetCollideKinematicVsNonDynamic](@ref Body::SetCollideKinematicVsNonDynamic). Note that it can place a large burden on the collision detection system if you have a large sensor intersect with e.g. a large mesh terrain or a height field as you will get many contact callbacks and these contacts will take up a lot of space in the contact cache. Ensure that your sensor is in an object layer that collides with as few static bodies as possible. + +To temporarily disable a sensor, choose between: + +* Remove the sensor by calling BodyInterface::RemoveBody and re-add it later again with BodyInterface::AddBody. +* Change the collision layer using BodyInterface::SetObjectLayer to a layer that doesn't collide with anything (possibly also in a BroadPhaseLayer that doesn't collide with anything) + +## Sleeping {#sleeping-bodies} + +During the simulation step, bodies are divided in 'islands'. Each island consists of a set of dynamic bodies that are either in contact with each other, or that are connected through a constraint: + + + +At the end of each step, all the bodies in an island are checked to see if they have come to rest, if this is the case then the entire island is put to sleep. When a body is sleeping, it can still detect collisions with other objects that are not sleeping, but it will not move or otherwise participate in the simulation to conserve CPU cycles. Sleeping bodies wake up automatically when they're in contact with non-sleeping objects or they can be explicitly woken through an API call like BodyInterface::ActivateBody. Unlike some other physics engines, removing a Body from the world doesn't wake up any surrounding bodies. If you want this you can call BodyInterface::ActivateBodiesInAABox with the bounding box of the removed body (or the combined bounding box if you're removing multiple bodies). Also, things like setting the velocity through Body::SetLinearVelocity will not wake up the Body, use BodyInterface::SetLinearVelocity instead. You can configure the definition of a body 'at rest' through PhysicsSettings::mTimeBeforeSleep and PhysicsSettings::mPointVelocitySleepThreshold. + +## Soft Bodies {#soft-bodies} + +Soft bodies (also known as deformable bodies) can be used to create e.g. a soft ball or a piece of cloth. They are created in a very similar way to normal rigid bodies: + +* First allocate a new SoftBodySharedSettings object on the heap. This object will contain the initial positions of all particles and the constraints between the particles. This object can be shared between multiple soft bodies and should remain constant during its lifetime. +* Then create a SoftBodyCreationSettings object (e.g. on the stack) and fill in the desired properties of the soft body. +* Finally construct the body and add it to the world through BodyInterface::CreateAndAddSoftBody. + +Soft bodies use the Body class just like rigid bodies but can be identified by checking Body::IsSoftBody. To get to the soft body state, cast the result of Body::GetMotionProperties to SoftBodyMotionProperties and use its API. + +Soft bodies try to implement as much as possible of the normal Body interface, but this interface provides a simplified version of reality, e.g. Body::GetLinearVelocity will return the average particle speed and Body::GetPosition returns the average particle position. During simulation, a soft body will never update its rotation. Internally it stores particle velocities in local space, so if you rotate a soft body e.g. by calling BodyInterface::SetRotation, the body will rotate but its velocity will as well. + +### Soft Body Contact Listeners {#soft-body-contact-listener} + +Soft Bodies provide contacts with other bodies through the SoftBodyContactListener class. This contact listener works a little bit different from the normal contact listener as you will not receive a contact callback per colliding vertex. + +After the broad phase has detected an overlap and the normal layer / collision group filters have had a chance to reject the collision, you will receive a SoftBodyContactListener::OnSoftBodyContactValidate callback. This callback allows you to specify how the vertices of the soft body should interact with the other body. You can override the mass for both bodies and you can turn the contact into a sensor contact. + +The simulation will then proceed to do all collision detection and response and after that is finished, you will receive a SoftBodyContactListener::OnSoftBodyContactAdded callback that allows you to inspect all collisions that happened during the simulation step. In order to do this a SoftBodyManifold is provided which allows you to loop over the vertices and ask each vertex what it collided with. + +Note that at the time of the callback, multiple threads are operating at the same time. The soft body is stable and can be safely read. The other body that is collided with is not stable however, so you cannot safely read its position/orientation and velocity as it may be modified by another soft body collision at the same time. + +### Skinning Soft Bodies {#skinning-soft-bodies} + +Using the [skinning](@ref SoftBodySharedSettings::Skinned) constraints, a soft body can be (partially) skinned to joints. This can be used e.g. to partially drive cloth with a character animation. The [vertices](@ref SoftBodySharedSettings::Vertex::mPosition) of the soft body need to be placed in the neutral pose of the character and the joints for this pose need to be calculated in model space (relative to these vertices). The inverted matrices of this neutral pose need to be stored as the [inverse bind matrices](@ref SoftBodySharedSettings::InvBind) and the skinning constraints can then be [weighted](@ref SoftBodySharedSettings::SkinWeight) to these joints. SoftBodySharedSettings::CalculateSkinnedConstraintNormals must be called to gather information needed to calculate the face normals at run-time. + +At run-time, you need to provide the animated joints every simulation step through the SoftBodyMotionProperties::SkinVertices call. During simulation, each skinned vertex will calculate its position and this position will be used to limit the movement of its simulated counterpart. + + + +The adjacent faces of the soft body will be used to calculate the normal of each vertex (shown in red), the vertex is then free to move inside the sphere formed by the skinned vertex position with radius [MaxDistance](@ref SoftBodySharedSettings::Skinned::mMaxDistance) (green sphere). To prevent the vertex from intersecting with the character, it is possible to specify a [BackStopDistance](@ref SoftBodySharedSettings::Skinned::mBackStopDistance) and [BackStopRadius](@ref SoftBodySharedSettings::Skinned::mBackStopRadius), together these form the red sphere. The vertex is not allowed to move inside this sphere. + +### Soft Body Work In Progress {#soft-body-wip} + +Soft bodies are currently in development, please note the following: + +* Soft bodies can only collide with rigid bodies, collisions between soft bodies are not implemented yet. +* AddTorque/SetLinearVelocity/SetLinearVelocityClamped/SetAngularVelocity/SetAngularVelocityClamped/AddImpulse/AddAngularImpulse have no effect on soft bodies as the velocity is stored per particle rather than per body. +* Buoyancy calculations have not been implemented yet. +* Constraints cannot operate on soft bodies, set the inverse mass of a particle to zero and move it by setting a velocity to constrain a soft body to something else. +* When calculating friction / restitution an empty SubShapeID will be passed to the ContactConstraintManager::CombineFunction because this is called once per body pair rather than once per sub shape as is common for rigid bodies. + +# Constraints {#constraints} + +Bodies can be connected to each other using constraints ([Constraint](@ref Constraint)). + +The following constraints are available: + +* [FixedConstraint](@ref FixedConstraintSettings) - Will attach a body to another without any degrees of freedom. +* [DistanceConstraint](@ref DistanceConstraintSettings) - Will attach two bodies with a stick (removing 1 degree of freedom). +* [PointConstraint](@ref PointConstraintSettings) - Will attach two bodies in a single point (removing 3 degrees of freedom) +* [HingeConstraint](@ref HingeConstraintSettings) - Will attach two bodies through a hinge. +* [ConeConstraint](@ref ConeConstraintSettings) - Attaches two bodies in a point and will limit the rotation within a cone. +* [SliderConstraint](@ref SliderConstraintSettings) - Attaches two bodies and allows only movement in a single translation axis (also known as prismatic constraint). +* [SwingTwistConstraint](@ref SwingTwistConstraintSettings) - Attaches two bodies using a point constraint and a swing-twist constraint which approximates the shoulder joint of a human. +* [SixDOFConstraint](@ref SixDOFConstraintSettings) - The most configurable joint allows specifying per translation axis and rotation axis what the limits are. +* [PathConstraint](@ref PathConstraintSettings) - This constraint allows attaching two bodies connected through a Hermite spline path. +* [GearConstraint](@ref GearConstraintSettings) - This constraint connects to two hinge joints and constrains them to connect two gears. +* [RackAndPinionConstraint](@ref RackAndPinionConstraintSettings) - This constraint connects a hinge and a slider constraint to connect a rack and pinion. +* [PulleyConstraint](@ref PulleyConstraintSettings) - This constraint connects two bodies through two fixed points creating something that behaves like two bodies connected through a rope. +* [VehicleConstraint](@ref VehicleConstraintSettings) - This constraint adds virtual wheels or tracks to a body and allows it to behave as a vehicle. + +If you want to constrain a dynamic object to the unmovable 'world' you can use [Body::sFixedToWorld](@ref Body::sFixedToWorld) instead of creating a static body. + +Bodies do not keep track of the constraints that are connected to them. This means that you're responsible for removing any constraints attached to a body before removing the body from the PhysicsSystem. + +Adding and removing constraints can be done from multiple threads, but the constraints themselves do not have any protection against concurrent access. We assume that constraints are owned by some object (e.g. a Ragdoll) and that object ensures that it only modifies its own constraints and contains its own synchronization logic. Constraints can be freely modified except during the physics simulation step. + +Contact constraints (when bodies collide) are not handled through the [Constraint](@ref Constraint) class but through the [ContactConstraintManager](@ref ContactConstraintManager) which is considered an internal class. + +## Constraint Motors {#constraint-motors} + +Most of the constraints support motors (see [MotorSettings](@ref MotorSettings)) which allow you to apply forces/torques on two constrained bodies to drive them to a relative position/orientation. There are two types of motors: +* Linear motors: These motors drive the relative position between two bodies. A linear motor would, for example, slide a body along a straight line when you use a slider constraint. +* Angular motors: These motors drive the relative rotation between two bodies. An example is a hinge constraint. The motor drives the rotation along the hinge axis. + +Motors can have three states (see [EMotorState](@ref EMotorState) or e.g. SliderConstraint::SetMotorState): +* Off: The motor is not doing any work. +* Velocity: This type of motor drives the relative velocity between bodies. For a slider constraint, you would push the bodies towards/away from each other with constant velocity. For a hinge constraint, you would rotate the bodies relative to each other with constant velocity. Set the target velocity through e.g. SliderConstraint::SetTargetVelocity / HingeConstraint::SetTargetAngularVelocity. +* Position: This type of motor drives the relative position between bodies. For a slider constraint, you can specify the relative distance you want to achieve between the bodies. For a hinge constraint you can specify the relative angle you want to achieve between the bodies. Set the target position through e.g. SliderConstraint::SetTargetPosition / HingeConstraint::SetTargetAngle. + +Motors apply a force (when driving position) or torque (when driving angle) every simulation step to achieve the desired velocity or position. You can control the maximum force/torque that the motor can apply through MotorSettings::mMinForceLimit, MotorSettings::mMaxForceLimit, MotorSettings::mMinTorqueLimit and MotorSettings::mMaxTorqueLimit. Note that if a motor is driving to a position, the torque limits are not used. If a constraint is driving to an angle, the force limits are not used. + +Usually the limits are symmetric, so you would set -mMinForceLimit = mMaxForceLimit. This way the motor can push at an equal rate as it can pull. If you would set the range to e.g. [0, FLT_MAX] then the motor would only be able to push in the positive direction. The units for the force limits are Newtons and the values can get pretty big. If your motor doesn't seem to do anything, chances are that you have set the value too low. Since Force = Mass * Acceleration you can calculate the approximate force that a motor would need to supply in order to be effective. Usually the range is set to [-FLT_MAX, FLT_MAX] which lets the motor achieve its target as fast as possible. + +For an angular motor, the units are Newton Meters. The formula is Torque = Inertia * Angular Acceleration. Inertia of a solid sphere is 2/5 * Mass * Radius^2. You can use this to get a sense of the amount of torque needed to get the angular acceleration you want. Again, you'd usually set the range to [-FLT_MAX, FLT_MAX] to not limit the motor. + +When settings the force or torque limits to [-FLT_MAX, FLT_MAX] a velocity motor will accelerate the bodies to the desired relative velocity in a single time step (if no other forces act on those bodies). + +Position motors have two additional parameters: Frequency (MotorSettings::mSpringSettings.mFrequency, Hz) and damping (MotorSettings::mSpringSettings.mDamping, no units). They are implemented as described in [Soft Constraints: Reinventing The Spring - Erin Catto - GDC 2011](https://box2d.org/files/ErinCatto_SoftConstraints_GDC2011.pdf). + +You can see a position motor as a spring between the target position and the rigid body. The force applied to reach the target is linear with the distance between current position and target position. When there is no damping, the position motor will cause the rigid body to oscillate around its target. + + + +Valid frequencies are in the range (0, 0.5 * simulation frequency]. A frequency of 0 results in no force being applied, a frequency larger than half of the physics simulation frequency will result in instability. For a 60 Hz physics simulation, 20 is a good value for a stiff spring (without damping it will reach its target in 1/(4 * 20) = 0.0125 s), 2 is good for a soft spring (will reach its target in 1/(4 * 2) = 0.125 s). + +In order to prevent the motor from overshooting its target, we use damping. + + + +Sensible values for damping are [0, 1] but higher values are also possible. When the damping is below 1, the body will still oscillate around its target, but that oscillation will die out. When the damping is 1 (called critical damping) there is no oscillation at all but it will take longer for the motor to reach its target. When damping is bigger than 1, the system is over dampened. There will not be any oscillation, but it will take even longer for the motor to reach its target. + +Because Jolt Physics uses a Symplectic Euler integrator, there will still be a small amount of damping when damping is 0, so you cannot get infinite oscillation (allowing this would make it very likely for the system to become unstable). + +## Breakable Constraints {#breakable-constraints} + +Constraints can be turned on / off by calling Constraint::SetEnabled. After every simulation step, check the total 'lambda' applied on each constraint and disable the constraint if the value goes over a certain threshold. Use e.g. SliderConstraint::GetTotalLambdaPosition / HingeConstraint::GetTotalLambdaRotation. You can see 'lambda' as the linear/angular impulse applied at the constraint in the last physics step to keep the constraint together. + +# Collision Detection {#collision-detection} + +Collision detection can be performed through various interfaces: + +* Coarse collision detection against the world, using only the bounding box of each body is done through the BroadPhaseQuery interface (see PhysicsSystem::GetBroadPhaseQuery). +* Detailed collision detection against the world is done through NarrowPhaseQuery interface (see PhysicsSystem::GetNarrowPhaseQuery). +* Checking collisions with a single body is done through TransformedShape (see Body::GetTransformedShape) +* Checking collisions against a single shape is done through various interfaces on the Shape class (see e.g. Shape::CastRay) or through the CollisionDispatch interface. + +The most common collision tests are: + +* Casting a ray: BroadPhaseQuery::CastRay, NarrowPhaseQuery::CastRay, TransformedShape::CastRay, Shape::CastRay. +* Colliding a shape (e.g. a sphere) in a static position: NarrowPhaseQuery::CollideShape, TransformedShape::CollideShape, CollisionDispatch::sCollideShapeVsShape. +* Casting a shape (sweeping it from a start to an end position and finding collisions along the way): NarrowPhaseQuery::CastShape, TransformedShape::CastShape, CollisionDispatch::sCastShapeVsShapeWorldSpace. +* Checking if a shape contains a point: BroadPhaseQuery::CollidePoint, NarrowPhaseQuery::CollidePoint, TransformedShape::CollidePoint, Shape::CollidePoint. + +The following sections describe the collision detection system in more detail. + +## Broad Phase {#broad-phase} + +When bodies are added to the PhysicsSystem, they are inserted in the broad phase ([BroadPhaseQuadTree](@ref BroadPhaseQuadTree)). This provides quick coarse collision detection based on the axis aligned bounding box (AABB) of a body. + + + +Our broad phase is a quad tree, which means each node has 4 children. In the following image you see a random collection of spheres and triangles and a possible way to split the tree. + + + + At the highest level we split all objects in 4 mostly disjoint sets. Note that nodes are allowed to overlap, but for efficiency reasons we want the amount of overlap to be minimal. The example split here is indicated by a red, blue, green and yellow box and you can see them appear in the tree on the right. Three out of four nodes: blue, yellow and red, have 4 or less shapes in them, so the tree can directly point at the shapes rather than at a next node. One node: green, has more than 4 shapes in it so needs a further split. The three shapes can be added directly to the node and we need to create a new node, dotted green, to hold the last two shapes. The reason why we pick 4 children is that modern CPUs support doing 4 math operations in a single instruction, so when we walk the tree from top to bottom during a collision query, we can handle 4 children at the same time and quickly get to a minimal set of colliding objects. + +Since we want to access bodies concurrently the broad phase has special behavior. When a body moves, all nodes in the AABB tree from root to the node where the body resides will be expanded using a lock-free approach. This way multiple threads can move bodies at the same time without requiring a lock on the broad phase. Nodes that have been expanded are marked and during the next physics step a new tight-fitting tree will be built in the background while the physics step is running. This new tree will replace the old tree before the end of the simulation step. This is possible since no bodies can be added/removed during the physics step. For more information about this see the [GDC 2022 talk](https://jrouwe.nl/architectingjolt/ArchitectingJoltPhysics_Rouwe_Jorrit_Notes.pdf). + +The broad phase is divided in layers (BroadPhaseLayer), each broad phase layer has an AABB quad tree associated with it. A standard setup would be to have at least 2 broad phase layers: One for all static bodies (which is infrequently updated but is expensive to update since it usually contains most bodies) and one for all dynamic bodies (which is updated every simulation step but cheaper to update since it contains fewer objects). In general you should only have a few broad phase layers as there is overhead in querying and maintaining many different broad phase trees. + +When doing a query against the broad phase ([BroadPhaseQuery](@ref BroadPhaseQuery)), you generally will get a body ID for intersecting objects. If a collision query takes a long time to process the resulting bodies (e.g. across multiple simulation steps), you can safely keep using the body ID's as specified in the @ref bodies section. + +## Narrow Phase {#narrow-phase} + +A narrow phase query ([NarrowPhaseQuery](@ref NarrowPhaseQuery)) will first query the broad phase for intersecting bodies and will under the protection of a body lock construct a transformed shape ([TransformedShape](@ref TransformedShape)) object. This object contains the transform, a reference counted shape and a body ID. Since the shape will not be deleted until you destroy the TransformedShape object, it is a consistent snapshot of the collision information of the body. This ensures that the body is only locked for a short time frame and makes it possible to do the bulk of the collision detection work outside the protection of a lock. + +For very long running jobs (e.g. navigation mesh creation) it is possible to query all transformed shapes in an area and then do the processing work using a long running thread without requiring additional locks (see [NarrowPhaseQuery::CollectTransformedShapes](@ref NarrowPhaseQuery::CollectTransformedShapes)). + +The narrow phase queries are all handled through the [GJK](@ref GJKClosestPoint) and [EPA](@ref EPAPenetrationDepth) algorithms. + +## Collision Filtering {#collision-filtering} + +Each Body is in an [ObjectLayer](@ref ObjectLayer). If two object layers don't collide, the bodies inside those layers cannot collide. You can define object layers in any way you like, it could be a simple number from 0 to N or it could be a bitmask. Jolt supports 16 or 32 bit ObjectLayers through the JPH_OBJECT_LAYER_BITS define and you're free to define as many as you like as they don't incur any overhead in the system. + +When constructing the PhysicsSystem you need to provide a number of filtering interfaces: +* BroadPhaseLayerInterface: This class defines a mapping from ObjectLayer to BroadPhaseLayer through the BroadPhaseLayerInterface::GetBroadPhaseLayer function. Each Body can only be in 1 BroadPhaseLayer so an ObjectLayer maps to 1 BroadphaseLayer. In general there will be multiple ObjectLayers mapping to the same BroadPhaseLayer (because each broad phase layer comes at a cost). If there are multiple object layers in a single broad phase layer, they are stored in the same tree. When a query visits the tree it will visit all objects whose AABB overlaps with the query and only when the overlap is detected, the actual object layer will be checked. This means that you should carefully design which object layers end up in which broad phase layer, balancing the requirement of having few broad phase layers with the number of needless objects that are visited because multiple object layers share the same broad phase layer. You can define JPH_TRACK_BROADPHASE_STATS to let Jolt print out some statistics about the query patterns your application is using. In general it is wise to start with only 2 broad phase layers as listed in the \ref broad-phase section. +* ObjectVsBroadPhaseLayerFilter: This class defines a ObjectVsBroadPhaseLayerFilter::ShouldCollide function that checks if an ObjectLayer collides with objects that reside in a particular BroadPhaseLayer. ObjectLayers can collide with as many BroadPhaseLayers as needed, so it is possible for a collision query to visit multiple broad phase trees. +* ObjectLayerPairFilter: This class defines a ObjectLayerPairFilter::ShouldCollide function that checks if an ObjectLayer collides with another ObjectLayer. + +As an example we will use a simple enum as ObjectLayer: +* NON_MOVING - Layer for all static objects. +* MOVING - Layer for all regular dynamic bodies. +* DEBRIS - Layer for all debris dynamic bodies, we want to test these only against the static geometry because we want to save some simulation cost. +* BULLET - Layer for high detail collision bodies that we co-locate with regular dynamic bodies. These are bodies that are not used for simulation but are moved to follow the dynamic bodies and provide more precise geometry for ray tests to simulate shooting bullets. See [Level of Detail](@ref level-of-detail) for more information. +* WEAPON - This is a query layer so we don't create any bodies with this layer but we use it when doing ray cast querying for our weapon system. + +We define the following object layers to collide: +* MOVING vs NON_MOVING, MOVING vs MOVING - These are for our regular dynamic objects that need to collide with the static world and with each other. +* DEBRIS vs NON_MOVING - As said, we only want debris to collide with the static world and not with anything else. +* WEAPON vs BULLET, WEAPON vs NON_MOVING - We want our weapon ray cast to hit the high detail BULLET collision instead of the normal MOVING collision and we want bullets to be blocked by the static world (obviously the static world could also have a high detail version, but not in this example). + +This means that we need to implement a ObjectLayerPairFilter::ShouldCollide that returns true for the permutations listed above. Note that if ShouldCollide(A, B) returns true, ShouldCollide(B, A) should return true too. + +We define the following broad phase layers: +* BP_NON_MOVING - For everything static (contains object layer: NON_MOVING). +* BP_MOVING - The default layer for dynamic objects (contains object layers: MOVING, BULLET). +* BP_DEBRIS - An extra layer that contains only debris (contains object layers: DEBRIS). + +This means we now implement a BroadPhaseLayerInterface::GetBroadPhaseLayer that maps: NON_MOVING -> BP_NON_MOVING, MOVING -> BP_MOVING, BULLET -> BP_MOVING and DEBRIS -> BP_DEBRIS. We can map WEAPON to anything as we won't create any objects with this layer. + +We also need to implement a ObjectVsBroadPhaseLayerFilter::ShouldCollide that determines which object layer should collide with what broad phase layers, these can be deduced from the two lists above: +* NON_MOVING: BP_MOVING, BP_DEBRIS +* MOVING: BP_NON_MOVING, BP_MOVING +* DEBRIS: BP_NON_MOVING +* BULLET: None (these are not simulated so need no collision with other objects) +* WEAPON: BP_NON_MOVING, BP_MOVING + +So you can see now that when we simulate DEBRIS we only need to visit a single broad phase tree to check for collision, we did this because in our example we know that there are going to be 1000s of debris objects so it is important that their queries are as fast as possible. We could have moved the BULLET layer to its own broad phase layer too because now BP_MOVING contains a lot of bodies that WEAPON is not interested in, but in this example we didn't because we know that there are not enough of these objects for this to be a performance problem. + +For convenience two filtering implementations are provided: +* ObjectLayerPairFilterTable, ObjectVsBroadPhaseLayerFilterTable and BroadPhaseLayerInterfaceTable: These three implement collision layers as a simple table. You construct ObjectLayerPairFilterTable with a fixed number of object layers and then call ObjectLayerPairFilterTable::EnableCollision or ObjectLayerPairFilterTable::DisableCollision to selectively enable or disable collisions between layers. BroadPhaseLayerInterfaceTable is constructed with a number of broad phase layers. You can then map each object layer to a broad phase layer through BroadPhaseLayerInterfaceTable::MapObjectToBroadPhaseLayer. +* ObjectLayerPairFilterMask, ObjectVsBroadPhaseLayerFilterMask and BroadPhaseLayerInterfaceMask: These split an ObjectLayer in an equal amount of bits for group and mask. Two objects collide if (object1.group & object2.mask) != 0 && (object2.group & object1.mask) != 0. This behavior is similar to e.g. Bullet. In order to map groups to broad phase layers, you call BroadPhaseLayerInterfaceMask::ConfigureLayer for each broad phase layer. You determine which groups can be put in that layer and which group must be excluded from that layer. E.g. a broad phase layer could include everything that has the STATIC group but should exclude everything that has the SENSOR group, so that if an object has both STATIC and SENSOR bits set, this broad phase layer will not be used. The broad phase layers are checked one by one and the first one that meets the condition is the one that the body will be put in. If you use this implementation, consider setting the cmake option OBJECT_LAYER_BITS to 32 to get a 32-bit ObjectLayer instead of a 16-bit one. + +Now that we know about the basics, we list the order in which the collision detection pipeline goes through the various collision filters: + + + +* Broadphase layer: At this stage, the object layer is tested against the broad phase trees that are relevant by checking the [ObjectVsBroadPhaseLayerFilter](@ref ObjectVsBroadPhaseLayerFilter). +* Object layer: Once the broad phase layer test succeeds, we will test object layers vs object layers through [ObjectLayerPairFilter](@ref ObjectLayerPairFilter) (used for simulation) and [ObjectLayerFilter](@ref ObjectLayerFilter) (used for collision queries). The default implementation of ObjectLayerFilter is DefaultObjectLayerFilter and uses ObjectLayerPairFilter so the behavior is consistent between simulation and collision queries. +* [GroupFilter](@ref GroupFilter): Used only during simulation and runs after bounding boxes have found to be overlapping. Allows you fine tune collision e.g. by discarding collisions between bodies connected by a constraint. See e.g. [GroupFilterTable](@ref GroupFilterTable) which implements filtering for bodies within a ragdoll. +* [BodyFilter](@ref BodyFilter): This filter is used instead of the group filter if you do collision queries like CastRay. +* Shape filter: This filter is used both during queries ([ShapeFilter](@ref ShapeFilter)) and simulation ([SimShapeFilter](@ref SimShapeFilter)) and can be used to filter out individual shapes of a compound. To set the shape filter for the simulation use PhysicsSystem::SetSimShapeFilter. +* [ContactListener](@ref ContactListener): During simulation, after all collision detection work has been performed you can still choose to discard a contact point. This is a very expensive way of rejecting collisions as most of the work is already done. + +To avoid work, try to filter out collisions as early as possible. + +## Level of Detail {#level-of-detail} + +Bodies can only exist in a single layer. If you want a body with a low detail collision shape for simulation (in the example above: MOVING layer) and a high detail collision shape for collision detection (BULLET layer), you'll need to create 2 Bodies. +The low detail body should be dynamic. The high detail body should be kinematic, or if it doesn't interact with other dynamic objects it can also be static. +After calling PhysicsSystem::Update, you'll need to loop over these dynamic bodies and call BodyInterface::MoveKinematic in case the high detail body is kinematic, or BodyInterface::SetPositionAndRotation in case the high detail body is static. + +Alternatively, you can put a high detail and a low detail shape in a StaticCompoundShape and use PhysicsSystem::SetSimShapeFilter to filter out the high detail shape during simulation. +Another ShapeFilter would filter out the low detail shape during collision queries (e.g. through NarrowPhaseQuery). +You can use Shape::GetUserData to determine if a shape is a high or a low detail shape. + +## Continuous Collision Detection {#continuous-collision-detection} + +Each body has a motion quality setting ([EMotionQuality](@ref EMotionQuality)). By default the motion quality is [Discrete](@ref EMotionQuality::Discrete). This means that at the beginning of each simulation step we will perform collision detection and if no collision is found, the body is free to move according to its velocity. This usually works fine for big or slow moving objects. Fast and small objects can easily 'tunnel' through thin objects because they can completely move through them in a single time step. For these objects there is the motion quality [LinearCast](@ref EMotionQuality::LinearCast). Objects that have this motion quality setting will do the same collision detection at the beginning of the simulation step, but once their new position is known, they will do an additional CastShape to check for any collisions that may have been missed. If this is the case, the object is placed back to where the collision occurred and will remain there until the next time step. This is called 'time stealing' and has the disadvantage that an object may appear to move much slower for a single time step and then speed up again. The alternative, back stepping the entire simulation, is computationally heavy so was not implemented. + + + +Fast rotating long objects are also to be avoided, as the LinearCast motion quality will fully rotate the object at the beginning of the time step and from that orientation perform the CastShape, there is a chance that the object misses a collision because it rotated through it. + + + +## Ghost Collisions {#ghost-collisions} + +A ghost collision can occur when a body slides over another body and hits an internal edge of that body. The most common case is where a body hits an edge of a triangle in a mesh shape but it can also happen on 2 box shapes as shown below. + + + +There are a couple of ways to avoid ghost collisions in Jolt. MeshShape and HeightFieldShape keep track of active edges during construction. + + + +Whenever a body hits an inactive edge, the contact normal is the face normal. When it hits an active edge, it can be somewhere in between the connecting face normals so the movement of the body is impeded in the scenario below. + + + +By tweaking MeshShapeSettings::mActiveEdgeCosThresholdAngle or HeightFieldShapeSettings::mActiveEdgeCosThresholdAngle you can determine the angle at which an edge is considered an active edge. By default this is 5 degrees, making this bigger reduces the amount of ghost collisions but can create simulation artifacts if you hit the edge straight on. + +To further reduce ghost collisions, you can turn on BodyCreationSettings::mEnhancedInternalEdgeRemoval. When enabling this setting, additional checks will be made at run-time to detect if an edge is active or inactive based on all of the contact points between the two bodies. Beware that this algorithm only considers 2 bodies at a time, so if the two green boxes above belong to two different bodies, the ghost collision can still occur. Use a StaticCompoundShape to combine the boxes in a single body to allow the system to eliminate ghost collisions between the blue and the two green boxes. You can also use this functionality for your custom collision tests by making use of InternalEdgeRemovingCollector. + +# Character Controllers {#character-controllers} + +The [Character](@ref Character) and [CharacterVirtual](@ref CharacterVirtual) classes can be used to create a character controller. These are usually used to represent the player as a simple capsule or tall box and perform collision detection while the character navigates through the world. + +The Character class is the simplest controller and is essentially a rigid body that has been configured to only allow translation (and no rotation so it stays upright). It is simulated together with the other rigid bodies so it properly reacts to them. Because it is simulated, it is usually not the best solution for a player as the player usually requires a lot of behavior that is non-physical. This character controller is cheap so it is recommended for e.g. simple AI characters. After every PhysicsSystem::Update call you must call Character::PostSimulation to update the ground contacts. + +Characters are usually driven in a kinematic way (i.e. by calling Character::SetLinearVelocity or CharacterVirtual::SetLinearVelocity before their update). + +The CharacterVirtual class is much more advanced. It is implemented using collision detection functionality only (through NarrowPhaseQuery) and is simulated when CharacterVirtual::Update is called. Since the character is not 'added' to the world, it is not visible to rigid bodies and it only interacts with them during the CharacterVirtual::Update function by applying impulses. This does mean there can be some update order artifacts, like the character slightly hovering above an elevator going down, because the characters moves at a different time than the other rigid bodies. Separating it has the benefit that the update can happen at the appropriate moment in the game code. Multiple CharacterVirtuals can update concurrently, so it is not an issue if the game code is parallelized. + +CharacterVirtual has the following extra functionality: +* Sliding along walls +* Interaction with elevators and moving platforms +* Enhanced steep slope detection (standing in a funnel whose sides are too steep to stand on will not be considered as too steep) +* Stair stepping through the CharacterVirtual::ExtendedUpdate call +* Sticking to the ground when walking down a slope through the CharacterVirtual::ExtendedUpdate call +* Support for specifying a local coordinate system that allows e.g. [walking around in a flying space ship](https://github.com/jrouwe/JoltPhysics/blob/master/Samples/Tests/Character/CharacterSpaceShipTest.cpp) that is equipped with 'inertial dampers' (a sci-fi concept often used in games). + +CharacterVirtual should provide everything that Character provides. Since it is not a rigid body, it requires some extra consideration: +* Collision callbacks are passed through the CharacterContactListener instead of the ContactListener class +* CharacterVirtual vs sensor contacts are also passed through this listener, you will not receive them through the regular ContactListener +* CharacterVirtual vs CharacterVirtual collisions can be handled through the CharacterVsCharacterCollision interface +* Collision checks (e.g. CastRay) do not collide with CharacterVirtual. Use e.g. `NarrowPhaseQuery::CastRay(..., collector)` followed by `CharacterVirtual::GetTransformedShape().CastRay(..., collector)` to include the collision results. + +You can create a hybrid between these two by setting CharacterVirtualSettings::mInnerBodyShape. This will create an inner rigid body that follows the movement of the CharacterVirtual. This inner rigid body will be detected by sensors and regular collision tests. + +To get started take a look at the [Character](https://github.com/jrouwe/JoltPhysics/blob/master/Samples/Tests/Character/CharacterTest.cpp) and [CharacterVirtual](https://github.com/jrouwe/JoltPhysics/blob/master/Samples/Tests/Character/CharacterVirtualTest.cpp) examples. + +# The Simulation Step {#the-simulation-step} + +The simulation step [PhysicsSystem::Update](@ref PhysicsSystem::Update) uses jobs ([JobSystem](@ref JobSystem)) to perform the needed work. This allows spreading the workload across multiple CPU's. We use a Sequential Impulse solver with warm starting as described in [Modeling and Solving Constraints - Erin Catto](https://box2d.org/files/ErinCatto_ModelingAndSolvingConstraints_GDC2009.pdf) + +Each physics step can be divided into multiple collision steps. So if you run the simulation at 60 Hz with 2 collision steps we run: + +* Collision (1/120s) +* Integration (1/120s) +* Collision (1/120s) +* Integration (1/120s) + +In general, the system is stable when running at 60 Hz with 1 collision step. + +# Conventions and Limits {#conventions-and-limits} + +Jolt Physics uses a right handed coordinate system with Y-up. It is easy to use another axis as up axis by changing the gravity vector using [PhysicsSystem::SetGravity](@ref PhysicsSystem::SetGravity). Some shapes like the [HeightFieldShape](@ref HeightFieldShapeSettings) will need an additional [RotatedTranslatedShape](@ref RotatedTranslatedShapeSettings) to rotate it to the new up axis and vehicles ([VehicleConstraint](@ref VehicleConstraintSettings)) and characters ([CharacterBaseSettings](@ref CharacterBaseSettings)) will need their new up-axis specified too. + +We use column-major vectors and matrices, this means that to transform a point you need to multiply it on the right hand side: TransformedPoint = Matrix * Point. + +Note that the physics simulation works best if you use SI units (meters, radians, seconds, kg). In order for the simulation to be accurate, dynamic objects should be in the order [0.1, 10] meters long, have speeds in the order of [0, 500] m/s and have gravity in the order of [0, 10] m/s^2. Static object should be in the order [0.1, 2000] meter long. If you are using different units, consider scaling the objects before passing them on to the physics simulation. + +# Big Worlds {#big-worlds} + +By default the library compiles using floats. This means that the simulation gets less accurate the further you go from the origin. If all simulation takes place within roughly 5 km from the origin, floating point precision is accurate enough. + +If you have a bigger world, you may want to compile the library using the JPH_DOUBLE_PRECISION define. When you do this, all positions will be stored as doubles, which will make the simulation accurate even at thousands of kilometers away from the origin. + +Calculations with doubles are much slower than calculations with floats. A naive implementation that changes all calculations to doubles has been measured to run more than 2x slower than the same calculations using floats. Because of this, Jolt Physics will only use doubles where necessary and drop down to floats as soon as possible. In order to do this, many of the collision query functions will need a 'base offset'. All collision results will be returned as floats relative to this base offset. By choosing the base offset wisely (i.e. close to where collision results are expected) the results will be accurate. Make sure your base offset is not kilometers away from the collision result. + +Keep in mind that: + +* There are a lot of 'epsilons' in the code that have been tuned for objects of sizes/speeds as described in the @ref conventions-and-limits section. Try to keep the individual objects to the specified scale even if they're really far from the origin. +* When the collision results of a single query are kilometers apart, precision will suffer as they will be far away from the 'base offset'. +* The effectiveness of the broad phase (which works in floats) will become less at large distances from the origin, e.g. at 10000 km from the origin, the resolution of the broad phase is reduced to 1 m which means that everything that's closer than 1 m will be considered colliding. This will not impact the quality of the simulation but it will result in extra collision tests in the narrow phase so will hurt performance. + +Because of the minimal use of doubles, the simulation runs 5-10% slower in double precision mode compared to float precision mode. + +# Space Simulations {#space-simulations} + +There are a number of things that make Jolt not immediately suitable for space simulations: + +* The broadphase uses floats internally so will become less accurate at large distances from the origin. This limits its efficiency. +* Jolt stores velocities in floats, so the large velocities that are common in space will become inaccurate. This will especially be visible if you create an object with constraints (e.g. a ragdoll) and make it move at high speeds. The relative velocities between the bodies will be too low for a float to represent accurately, which means that the constraints will not be solved properly. +* Rotations (Quat) are tracked in floats. If you intend to rotate a planet and expect objects on the surface of the planet to stay on the surface, you'll run into accuracy issues. For this reason it is not possible to rotate a RVec3 by a Quat. + +It is possible to work around this limitations to create a space simulation with Jolt as [X4 Foundations](https://store.steampowered.com/app/392160/X4_Foundations/) has demonstrated. + +First of all, everything mentioned in the @ref big-worlds section is applicable. + +Secondly, split the universe into multiple PhysicsSystems and keep objects in each PhysicsSystem close to the origin and with low velocities. E.g.: +* A ship that is traveling near light speed can happen in a PhysicsSystem that is traveling at near light speed. The ship would be near static in this PhysicsSystem so that any constrained parts move at low velocities. Note that Jolt will be unaware of the speed of the PhysicsSystem. +* A planet exists in its own PhysicsSystem where it is static. Rotation of the planet around its axis or around its sun is not modeled in Jolt but applied as an additional matrix transform when rendering the world. This has the advantage that the objects on the planet are completely static so that there is no constant overhead of updating the transforms of bodies. +* Consider representing objects at different scales in different ways. E.g. a ship can be simplified to a simple shape when flying through an asteroid field, this means it can move at much higher speeds while still providing reasonably accurate collision than when it consists of multiple bodies connected with constraints. + +The consequence of this approach is that objects may need to be moved between PhysicsSystems as e.g. a ship enters the atmosphere of a planet. You can use Body::GetBodyCreationSettings to get the settings of a Body and create it in the other world in the normal way. For Constraints there is Constraint::GetConstraintSettings. + +# Deterministic Simulation {#deterministic-simulation} + +The physics simulation is deterministic provided that: + +* The APIs that modify the simulation are called in exactly the same order. For example, bodies and constraints need to be added/removed/modified in exactly the same order so that the state at the beginning of a simulation step is exactly the same for both simulations ([exceptions](@ref sloppy-determinism)). +* The same binary code is used to run the simulation. For example, when you run the simulation on Windows it doesn't matter if you have an AMD or Intel processor. + +If you want cross platform determinism then please turn on the CROSS_PLATFORM_DETERMINISTIC option in CMake. This will make the library approximately 8% slower but the simulation will be deterministic regardless of: + +* Compiler used to compile the library (tested MSVC2022, clang, gcc and emscripten) +* Configuration (Debug, Release or Distribution) +* OS (tested Windows, macOS, Linux) +* Architecture (x86 or ARM). + +Some caveats: + +* The same source code must be used to compile the library on all platforms. +* The source code must be compiled with the same defines, e.g. you can't have one platform using JPH_DOUBLE_PRECISION and another not. +* Broadphase queries (BroadPhaseQuery) are NOT deterministic because the broad phase can be modified from multiple threads. As bodies are modified, their bounding boxes get widened until the next maintenance update. This may be several calls to PhysicsSystem::Update later. If you want to do a broadphase query determinisically then create a custom CollisionCollector that in its AddHit function repeats the query against the actual bounding box of the body (Body::GetWorldSpaceBounds) and accept only hits that collide with this bounding box. Also ensure that you order the results consistently. +* Narrowphase queries (NarrowPhaseQuery) will return consistent results, but the order in which the results are received can change. This is again due the fact that the broadphase can be modified from multiple threads. + +It is quite difficult to verify cross platform determinism, so this feature is less tested than other features. With every build, the following architectures are verified to produce the same results: + +* Windows MSVC x86 64-bit with AVX2 +* Windows MSVC x86 32-bit with SSE2 +* macOS clang ARM 64-bit with NEON +* Linux clang x86 64-bit with AVX2 +* Linux clang ARM 64-bit with NEON +* Linux clang ARM 32-bit +* Linux gcc x86 64-bit with AVX2 +* Linux gcc ARM 64-bit with NEON +* Linux gcc RISC-V 64-bit +* Linux gcc PowerPC (Little Endian) 64-bit +* Linux gcc LoongArch 64-bit +* WASM32 emscripten running in nodejs +* WASM64 emscripten running in nodejs + +The most important things to look out for in your own application: + +* Compile your application mode in Precise mode (clang: -ffp-model=precise, MSVC: /fp:precise) +* Turn off floating point contract operations (clang: -ffp-contract=off) +* Make sure the FPU state is consistent across platforms / threads. Check the floating point rounding behavior (should be nearest). Check that the denormals are zero (DAZ) and flush to zero (FTZ) flags are set consistently. +* Do not use the standard trigonometry functions (`sin`, `cos` etc.) as they have different implementations on different platforms, use Jolt's functions ([Sin](@ref Sin), [Cos](@ref Cos) etc.). +* Do not use `std::sort` as it has a different implementation on different platforms, use [QuickSort](@ref QuickSort) instead. +* Do not use `std::push_heap` and `std::pop_heap` as it has a different implementation on different platforms when elements are equal, use [BinaryHeapPush](@ref BinaryHeapPush)/[BinaryHeapPop](@ref BinaryHeapPop) instead. +* Do not use `std::hash` as it is also platform dependent, use [Hash](@ref Hash) instead. + +When running the Samples Application you can press ESC, Physics Settings and check the 'Check Determinism' checkbox. Before every simulation step we will record the state using the [StateRecorder](@ref StateRecorder) interface, rewind the simulation and do the step again to validate that the simulation runs deterministically. Some of the tests (e.g. the MultiThreaded) test will explicitly disable the check because they randomly add/remove bodies from different threads. This violates the rule that the API calls must be done in the same order so will not result in a deterministic simulation. + +# Rolling Back a Simulation {#rolling-back-a-simulation} + +When synchronizing two simulations via a network, it is possible that a change that needed to be applied at frame N is received at frame N + M. This will require rolling back the simulation to the state of frame N and repeating the simulation with the new inputs. This can be implemented by saving the physics state using [SaveState](@ref PhysicsSystem::SaveState) at every frame. To roll back, call [RestoreState](@ref PhysicsSystem::RestoreState) with the state at frame N. SaveState only records the state that the physics engine modifies during its update step (positions, velocities etc.), so if you change anything else you need to restore this yourself. E.g. if you did a [SetFriction](@ref Body::SetFriction) on frame N + 2 then, when rewinding, you need to restore the friction to what is was on frame N and update it again on frame N + 2 when you replay. If you start adding/removing objects (e.g. bodies or constraints) during these frames, the RestoreState function will not work. If you added a body on frame N + 1, you'll need to remove it when rewinding and then add it back on frame N + 1 again (with the proper initial position/velocity etc. because it won't be contained in the snapshot at frame N). The [SaveState](@ref PhysicsSystem::SaveState) function comes with a StateRecorderFilter interface that you can use to selectively save state. E.g. [ShouldSaveBody](@ref StateRecorderFilter::ShouldSaveBody) could simply return false for all static or inactive bodies which can be used to limit the size of the snapshot. + +If you wish to share saved state between server and client, you need to ensure that all APIs that modify the state of the world are called in the exact same order. So if the client creates physics objects for player 1 then 2 and the server creates the objects for 2 then 1 you already have a problem (the body IDs will be different, which will render the save state snapshots incompatible). When rolling back a simulation, you'll also need to ensure that the BodyIDs are kept the same, so you need to remove/add the body from/to the physics system instead of destroy/re-create them or you need to create bodies with the same ID on both sides using [BodyInterface::CreateBodyWithID](@ref BodyInterface::CreateBodyWithID). + +# Being Sloppy While Still Being Deterministic {#sloppy-determinism} + +If you do things in the same order it is guaranteed to be deterministic, but if you know what you're doing you can take some liberties. +E.g. doing `BodyA.SetFriction(...); BodyB.SetFriction(...);` or `BodyB.SetFriction(...); BodyA.SetFriction(...);` doesn't matter for determinism, +the main thing you need to ensure is that when you do a PhysicsSystem::Update that the binary state is the same. +Also adding body A then B is the same as B then A as long as the BodyIDs of A and B are consistent. +For constraints, adding A then B or B then A is equivalent as long as ConstraintSettings::mConstraintPriority is unique per constraint so that it defines a consistent ordering (in this case all constraints in the system must have a unique number). +Note though that PhysicsSystem::SaveState relies on the ordering of constraints, so you'll have to skip serializing constraints by not setting EStateRecorderState::Constraints and call Constraint::SaveState / Constraint::RestoreState directly yourself. + +# Working With Multiple Physics Systems {#working-with-multiple-physics-systems} + +You can create, simulate and interact with multiple PhysicsSystems at the same time provided that you do not share any objects (bodies, constraints) between the systems. +When a Body is created it receives a BodyID that is unique for the PhysicsSystem that it was created for, so it cannot be shared. The only object that can be shared between PhysicsSystems is a Shape. +If you want to move a body from one PhysicsSystem to another, use Body::GetBodyCreationSettings to get the settings needed to create the body in the other PhysicsSystem. + +PhysicsSystems are not completely independent: + +* There is only 1 RTTI factory (Factory::sInstance). +* There is only 1 default material (PhysicsMaterial::sDefault). +* There is only 1 debug renderer (DebugRenderer::sInstance) although many functions take a custom DebugRenderer for drawing. +* Custom shapes and CollisionDispatch functions are shared. +* The custom memory allocation functions (e.g. Allocate), Trace and AssertFailed functions are shared. + +These functions / systems need to be registered in advance. + +# Debug Rendering {#debug-rendering} + +When the define JPH_DEBUG_RENDERER is defined (which by default is defined in Debug and Release but not Distribution), Jolt is able to render its internal state. To integrate this into your own application you must inherit from the DebugRenderer class and implement the pure virtual functions DebugRenderer::DrawLine, DebugRenderer::DrawTriangle, DebugRenderer::CreateTriangleBatch, DebugRenderer::DrawGeometry and DebugRenderer::DrawText3D. The CreateTriangleBatch is used to prepare a batch of triangles to be drawn by a single DrawGeometry call, which means that Jolt can render a complex scene much more efficiently than when each triangle in that scene would have been drawn through DrawTriangle. At run-time create an instance of your DebugRenderer which will internally assign itself to DebugRenderer::sInstance. Finally call for example PhysicsSystem::DrawBodies or PhysicsSystem::DrawConstraints to draw the state of the simulation. For an example implementation see [the DebugRenderer from the Samples application](https://github.com/jrouwe/JoltPhysics/blob/master/TestFramework/Renderer/DebugRendererImp.h) or to get started quickly take a look at DebugRendererSimple. + +# Memory Management {#memory-management} + +Jolt uses reference counting for a number of its classes (everything that inherits from RefTarget). The most important classes are: + +* ShapeSettings +* Shape +* ConstraintSettings +* Constraint +* PhysicsMaterial +* GroupFilter +* PhysicsScene +* SoftBodySharedSettings +* VehicleCollisionTester +* VehicleController +* WheelSettings +* CharacterBaseSettings +* CharacterBase +* RagdollSettings +* Ragdoll +* Skeleton +* SkeletalAnimation +* SkeletonMapper + +Reference counting objects start with a reference count of 0. If you want to keep ownership of the object, you need to call [object->AddRef()](@ref RefTarget::AddRef), this will increment the reference count. If you want to release ownership you call [object->ReleaseRef()](@ref RefTarget::Release), this will decrement the reference count and if the reference count reaches 0 the object will be destroyed. If, after newing, you pass a reference counted object on to another object (e.g. a ShapeSettings to a CompoundShapeSettings or a Shape to a Body) then that other object will take a reference, in that case it is not needed take a reference yourself beforehand so you can skip the calls to ```AddRef/Release```. Note that it is also possible to do ```auto x = new XXX``` followed by ```delete x``` for a reference counted object if no one ever took a reference. The safest way of working with reference counting objects is to use the Ref or RefConst classes, these automatically manage the reference count for you when assigning a new value or on destruction: + +``` +// Calls 'AddRef' to keep a reference the shape +JPH::Ref shape = new JPH::SphereShape(1.0f); + +// Calls 'Release' to release and delete the shape (note that this also happens if JPH::Ref goes out of scope) +shape = nullptr; +``` + +The Body class is a special case, it is destroyed through BodyInterface::DestroyBody (which internally destroys the Body). + +Jolt also supports routing all of its internal allocations through a custom allocation function. See: [Allocate](@ref Allocate), [Reallocate](@ref Reallocate), [Free](@ref Free), [AlignedAllocate](@ref AlignedAllocate) and [AlignedFree](@ref AlignedFree). + +# The Simulation Step in Detail {#the-simulation-step-in-detail} + +The job graph looks like this: + + + +Note that each job indicates if it reads/writes positions/velocities and if it deactivates/activates bodies. We do not allow jobs to read/write the same data concurrently. The arrows indicate the order in which jobs are executed. Yellow blocks mean that there are multiple jobs of this type. Dotted arrows have special meaning and are explained below. + +## Broad Phase Update Prepare {#broad-phase-update-prepare} + +This job will refit the AABBs of the broad phase. It does this by building a new tree while keeping the old one available as described in the @ref broad-phase section. + +## Broad Phase Update Finalize {#broad-phase-update-finalize} + +This job will simply swap the new tree with the old tree. The old tree will be discarded at the beginning of the next PhysicsSystem::Update call so that any broad phase query can continue to run. + +## Step Listeners {#step-listeners-update} + +You can register one or more step listeners (See [PhysicsSystem::AddStepListener](@ref PhysicsSystem::AddStepListener)). This job will call [PhysicsStepListener::OnStep](@ref PhysicsStepListener::OnStep) for every listener. This can be used to do work that needs to be done at the beginning of each step, e.g. set velocities on ragdoll bodies. + +## Apply Gravity {#apply-gravity-update} + +A number of these jobs run in parallel. Each job takes a batch of active bodies and applies gravity and damping (updating linear and angular velocity). + +## Determine Active Constraints {#determine-active-constraints} + +This job will go through all non-contact constraints and determine which constraints are active based on if the bodies that the constraint connects to are active. + +## Build Islands from Constraints {#build-islands-from-constraints} + +This job will go through all non-contact constraints and assign the involved bodies and constraint to the same island. Since we allow concurrent insertion/removal of bodies we do not want to keep island data across multiple simulation steps, so we recreate the islands from scratch every simulation step. The operation is lock-free and O(N) where N is the number of constraints. + +If a constraint connects an active and a non-active body, the non-active body is woken up. One find collisions job will not start until this job has finished in order to pick up any collision testing for newly activated bodies. + +## Find Collisions {#find-collisions} + +This job will do broad and narrow phase checks. Initially a number of jobs are started based on the amount of active bodies. The job will do the following: + +- Take a batch of active bodies and collide them against the broadphase. +- When a collision pair is found it is inserted in a lock free queue to be processed later. +- If the queue is full, it will be processed immediately (more Find Collisions jobs are spawned if not all CPU cores are occupied yet as the queue starts to fill up). +- If there are no more active bodies to process, the job will start to perform narrow phase collision detection and set up contact constraints if any collisions are found. +- As soon as a narrow phase pair is processed it will recheck if there are new active bodies to be processed (active bodies can be generated by an active body colliding with an inactive body) and if so process them. +- When there are no more active bodies to test and no more collision pairs to be processed the job terminates. + +Note that this job cannot start until apply gravity is done because the velocity needs to be known for elastic collisions to be calculated properly. + +The contact points between the two bodies will be determined by the [GJK](@ref GJKClosestPoint) and [EPA](@ref EPAPenetrationDepth) algorithms. For each contact point we will calculate the face that belongs to that contact point. The faces of both bodies are clipped against each other ([ManifoldBetweenTwoFaces](@ref ManifoldBetweenTwoFaces)) so that we have a polygon (or point / line) that represents the contact between the two bodies (contact manifold). + +Multiple contact manifolds with similar normals are merged together (PhysicsSystem::ProcessBodyPair::ReductionCollideShapeCollector). After this the contact constraints are created in the [ContactConstraintManager](@ref ContactConstraintManager) and their Jacobians / effective masses calculated. + +Contacting bodies are also linked together to form islands. This is the same operation as described in the @ref build-islands-from-constraints section. + +The narrow phase makes use of a lock free contact cache. We have 2 caches, one that is used for reading (which contains the contacts from the previous step) and one for writing new contact pairs. When a contact point is preserved from the last simulation step, it will be copied from the read cache to the write cache. + +## Setup Velocity Constraints {#setup-velocity-constraints} + +This job will go through all non-contact constraints and prepare them for execution. This involves calculating Jacobians and effective masses for each constraint part. + +## Finalize Islands {#finalize-islands} + +This job will finalize the building of the simulation islands. Each island contains bodies that interact with each other through a contact point or through a constraint. These islands will be simulated separately in different jobs later. The finalization of the islands is an O(N) operation where N is the amount of active bodies (see [IslandBuilder::Finalize](@ref IslandBuilder::Finalize)). + +## Set Body Island Idx {#set-body-island-idx} + +This job does some housekeeping work that can be executed concurrent to the solver: + +* It will assign the island ID to all bodies (which is mainly used for debugging purposes) + +## Solve Velocity Constraints {#solve-velocity-constraints} + +A number of these jobs will run in parallel. Each job takes the next unprocessed island and will run the iterative constraint solver for that island. It will first apply the impulses applied from the previous simulation step (which are stored in the contact cache) to warm start the solver. It will then repeatedly iterate over all contact and non-contact constraints until either the applied impulses are too small or a max iteration count is reached ([PhysicsSettings::mNumVelocitySteps](@ref PhysicsSettings::mNumVelocitySteps)). The result will be that the new velocities are known for all active bodies. The applied impulses are stored in the contact cache for the next step. + +When an island consists of more than LargeIslandSplitter::cLargeIslandTreshold contacts plus constraints it is considered a large island. In order to not do all work on a single thread, this island will be split up by the LargeIslandSplitter. This follows an algorithm described in High-Performance Physical Simulations on Next-Generation Architecture with Many Cores by Chen et al. This is basically a greedy algorithm that tries to group contacts and constraints into groups where no contact or constraint affects the same body. Within a group, the order of execution does not matter since every memory location is only read/written once, so we can parallelize the update. At the end of each group, we need to synchronize the CPU cores before starting on the next group. When the number of groups becomes too large, a final group is created that contains all other contacts and constraints and these are solved on a single thread. The groups are processed PhysicsSettings::mNumVelocitySteps times so the end result is almost the same as an island that was not split up (only the evaluation order changes in a consistent way). + +## Pre Integrate {#pre-integrate} + +This job prepares the CCD buffers. + +## Integrate & Clamp Velocities {#integrate-and-clamp-velocities} + +This job will integrate the velocity and update the position. It will clamp the velocity to the max velocity. + +Depending on the motion quality ([EMotionQuality](@ref EMotionQuality)) of the body, it will schedule a body for continuous collision detection (CCD) if its movement is bigger than some threshold based on the [inner radius](@ref Shape::GetInnerRadius)) of the shape. + +## Post Integrate {#post-integrate} + +Find CCD Contact jobs are created on the fly depending on how many CCD bodies were found. If there are no CCD bodies it will immediately start Resolve CCD Contacts. + +## Find CCD Contacts {#find-ccd-contacts} + +A number of jobs will run in parallel and pick up bodies that have been scheduled for CCD and will do a linear cast to detect the first collision. It always allows movement of the object by a fraction if its inner radius in order to prevent it from getting fully stuck. + +## Resolve CCD Contacts {#resolve-ccd-contacts} + +This job will take the collision results from the previous job and update position and velocity of the involved bodies. If an object hits another object, its time will be 'stolen' (it will move less far than it should according to its velocity). + +## Finalize Contact Cache, Contact Removed Callbacks {#finalize-contact-cache} + +This job will: + +* Swap the read/write contact cache and prepare the contact cache for the next step. +* It will detect all contacts that existed previous step and do not exist anymore to fire callbacks for them through the [ContactListener](@ref ContactListener) interface. + +## Solve Position Constraints, Update Bodies Broad Phase {#solve-position-constraints} + +A number of these jobs will run in parallel. Each job takes the next unprocessed island and run the position based constraint solver. This fixes numerical drift that may have caused constrained bodies to separate (remember that the constraints are solved in the velocity domain, so errors get introduced when doing a linear integration step). It will run until either the applied position corrections are too small or until the max amount of iterations is reached ([PhysicsSettings::mNumPositionSteps](@ref PhysicsSettings::mNumPositionSteps)). Here there is also support for large islands, the island splits that were calculated in the Solve Velocity Constraints job are reused to solve partial islands in the same way as before. + +It will also notify the broad phase of the new body positions / AABBs. + +When objects move too little the body will be put to sleep. This is detected by taking the biggest two axis of the local space bounding box of the shape together with the center of mass of the shape (all points in world space) and keep track of 3 bounding spheres for those points over time. If the bounding spheres become too big, the bounding spheres are reset and the timer restarted. When the timer reaches a certain time, the object has is considered non-moving and is put to sleep. + +## Soft Body Prepare {#soft-body-prepare} + +If there are any active soft bodies, this job will create the Soft Body Collide, Simulate and Finalize Jobs. It will also create a list of sorted SoftBodyUpdateContext objects that forms the context for those jobs. + +## Soft Body Collide {#soft-body-collide} + +These jobs will do broadphase checks for all of the soft bodies. A thread picks up a single soft body and uses the bounding box of the soft body to find intersecting rigid bodies. Once found, information will be collected about that rigid body so that Simulate can run in parallel. + +## Soft Body Simulate {#soft-body-simulate} + +These jobs will do the actual simulation of the soft bodies. They first collide batches of soft body vertices with the rigid bodies found during the Collide job (multiple threads can work on a single soft body) and then perform the simulation using XPBD (also partially distributing a single soft body on multiple threads). + +## Soft Body Finalize {#soft-body-finalize} + +This job writes back all the rigid body velocity changes and updates the positions and velocities of the soft bodies. It can activate/deactivate bodies as needed. diff --git a/Engine/lib/JoltPhysics/Docs/Images/ActiveEdge.jpg b/Engine/lib/JoltPhysics/Docs/Images/ActiveEdge.jpg new file mode 100644 index 000000000..8ec807314 Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/ActiveEdge.jpg differ diff --git a/Engine/lib/JoltPhysics/Docs/Images/ActiveVsInactiveContactNormal.jpg b/Engine/lib/JoltPhysics/Docs/Images/ActiveVsInactiveContactNormal.jpg new file mode 100644 index 000000000..434bc1420 Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/ActiveVsInactiveContactNormal.jpg differ diff --git a/Engine/lib/JoltPhysics/Docs/Images/CollisionFlow.jpg b/Engine/lib/JoltPhysics/Docs/Images/CollisionFlow.jpg new file mode 100644 index 000000000..43e9f9467 Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/CollisionFlow.jpg differ diff --git a/Engine/lib/JoltPhysics/Docs/Images/ConvexRadius.jpg b/Engine/lib/JoltPhysics/Docs/Images/ConvexRadius.jpg new file mode 100644 index 000000000..01d3c253d Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/ConvexRadius.jpg differ diff --git a/Engine/lib/JoltPhysics/Docs/Images/EllipsoidAABB.png b/Engine/lib/JoltPhysics/Docs/Images/EllipsoidAABB.png new file mode 100644 index 000000000..f4ad423f1 Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/EllipsoidAABB.png differ diff --git a/Engine/lib/JoltPhysics/Docs/Images/GhostCollision.jpg b/Engine/lib/JoltPhysics/Docs/Images/GhostCollision.jpg new file mode 100644 index 000000000..4458b08ed Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/GhostCollision.jpg differ diff --git a/Engine/lib/JoltPhysics/Docs/Images/LongAndThin.jpg b/Engine/lib/JoltPhysics/Docs/Images/LongAndThin.jpg new file mode 100644 index 000000000..7a38199b3 Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/LongAndThin.jpg differ diff --git a/Engine/lib/JoltPhysics/Docs/Images/MotionQuality.jpg b/Engine/lib/JoltPhysics/Docs/Images/MotionQuality.jpg new file mode 100644 index 000000000..a56a46bdc Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/MotionQuality.jpg differ diff --git a/Engine/lib/JoltPhysics/Docs/Images/MotorDamping.jpg b/Engine/lib/JoltPhysics/Docs/Images/MotorDamping.jpg new file mode 100644 index 000000000..9e3c1e5ed Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/MotorDamping.jpg differ diff --git a/Engine/lib/JoltPhysics/Docs/Images/MotorFrequency.jpg b/Engine/lib/JoltPhysics/Docs/Images/MotorFrequency.jpg new file mode 100644 index 000000000..4f66722e2 Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/MotorFrequency.jpg differ diff --git a/Engine/lib/JoltPhysics/Docs/Images/QuadTreeExample.png b/Engine/lib/JoltPhysics/Docs/Images/QuadTreeExample.png new file mode 100644 index 000000000..9e49489cf Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/QuadTreeExample.png differ diff --git a/Engine/lib/JoltPhysics/Docs/Images/ShapeCenterOfMass.jpg b/Engine/lib/JoltPhysics/Docs/Images/ShapeCenterOfMass.jpg new file mode 100644 index 000000000..7126964e9 Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/ShapeCenterOfMass.jpg differ diff --git a/Engine/lib/JoltPhysics/Docs/Images/SimulationIsland.jpg b/Engine/lib/JoltPhysics/Docs/Images/SimulationIsland.jpg new file mode 100644 index 000000000..ab80a988f Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/SimulationIsland.jpg differ diff --git a/Engine/lib/JoltPhysics/Docs/Images/SoftBodySkinnedConstraint.jpg b/Engine/lib/JoltPhysics/Docs/Images/SoftBodySkinnedConstraint.jpg new file mode 100644 index 000000000..c26dc7858 Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Images/SoftBodySkinnedConstraint.jpg differ diff --git a/Engine/lib/JoltPhysics/Docs/Logo.png b/Engine/lib/JoltPhysics/Docs/Logo.png new file mode 100644 index 000000000..e1b80cc97 Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/Logo.png differ diff --git a/Engine/lib/JoltPhysics/Docs/LogoDark.png b/Engine/lib/JoltPhysics/Docs/LogoDark.png new file mode 100644 index 000000000..9286f8d00 Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/LogoDark.png differ diff --git a/Engine/lib/JoltPhysics/Docs/LogoSmall.png b/Engine/lib/JoltPhysics/Docs/LogoSmall.png new file mode 100644 index 000000000..a3a2317c7 Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/LogoSmall.png differ diff --git a/Engine/lib/JoltPhysics/Docs/PerformanceTest.md b/Engine/lib/JoltPhysics/Docs/PerformanceTest.md new file mode 100644 index 000000000..19ec24c6f --- /dev/null +++ b/Engine/lib/JoltPhysics/Docs/PerformanceTest.md @@ -0,0 +1,37 @@ +# Performance Test + +The performance test application contains a couple of simple scenes to test performance of Jolt Physics. It will output the results to the TTY in CSV format. + +## Commandline options + +- -s=[scene]: This allows you to select a scene, [scene] can be; + - Ragdoll: A scene with 16 piles of 10 ragdolls (3680 bodies) with motors active dropping on a level section. + - RagdollSinglePile: A single pile of 160 ragdolls (3680 bodies) with motors active dropping on a level section. + - ConvexVsMesh: A simpler scene of 484 convex shapes (sphere, box, convex hull, capsule) falling on a 2000 triangle mesh. + - Pyramid: A pyramid of 1240 boxes stacked on top of each other to profile large island splitting. + - LargeMesh: Searches for the biggest MeshShape that can be created and then drops 4410 boxes on that mesh. +- -i=[iterations]: Number of physics steps before the test finishes. +- -q=[quality]: This limits the motion quality types that the test will run on. By default it will test both. [quality] can be: + - Discrete: Discrete collision detection + - LinearCast: Linear cast continous collision detection +- -t=[num]: This sets the amount of threads the test will run on. By default it will test 1 .. number of virtual processors. Can be 'max' to run on as many thread as the CPU has. +- -no_sleep: Disable sleeping. +- -p: Outputs a profile snapshot every 100 iterations +- -r: Outputs a performance_test_[tag].jor file that contains a recording to be played back with JoltViewer +- -f: Outputs the time taken per frame to per_frame_[tag].csv +- -h: Displays a help text +- -rs: Record the simulation state in state_[tag].bin. +- -vs: Validate the recorded simulation state from state_[tag].bin. This will after every simulation step check that the state is the same as the recorded state and trigger a breakpoint if this is not the case. This is used to validate cross platform determinism. +- -repeat=[num]: Repeats all tests num times. +- -validate_hash=[hash]: Will validate that the hash of the simulation matches the supplied hash. Program terminates with return code 1 if it doesn't. Can be used to automatically validate determinism. + +## Output + +- Motion Quality: Shows the motion quality for the test. +- Thread Count: The amount of threads used for the test. +- Steps / Second: Average amount of physics steps / second over the entire duration of the test. +- Hash: A hash of all positions and rotations of the bodies at the end of the test. Can be used to verify that the test was deterministic. + +## Results + +If you're interested in how Jolt scales with multiple CPUs and compares to other physics engines, take a look at [this document](https://jrouwe.nl/jolt/JoltPhysicsMulticoreScaling.pdf). diff --git a/Engine/lib/JoltPhysics/Docs/PhysicsSystemUpdate.drawio b/Engine/lib/JoltPhysics/Docs/PhysicsSystemUpdate.drawio new file mode 100644 index 000000000..4d5779bc5 --- /dev/null +++ b/Engine/lib/JoltPhysics/Docs/PhysicsSystemUpdate.drawio @@ -0,0 +1,537 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Engine/lib/JoltPhysics/Docs/PhysicsSystemUpdate.svg b/Engine/lib/JoltPhysics/Docs/PhysicsSystemUpdate.svg new file mode 100644 index 000000000..475dc5791 --- /dev/null +++ b/Engine/lib/JoltPhysics/Docs/PhysicsSystemUpdate.svg @@ -0,0 +1,4 @@ + + + +Apply Gravity (in batches)Apply Gravity...Setup Velocity ConstraintsSetup Velocity C...Pre IntegratePre IntegrateFinalize IslandsFinalize IslandsSolve Position Constraints, Update Bodies Broadphase (per island)Solve Position C...Set Body Island IdxSet Body Island IdxPPVVPPVVRead positionRead positionRead/write positionRead/write positionRead velocityRead velocityRead/write velocityRead/write velocityBroad Phase Update PrepareBroad Phase Upda...PPPPSolve Velocity Constraints (per island)Solve Velocity C...VVPPVVPPVVPPPPBroad Phase Update FinalizeBroad Phase Upda...Start Next StepStart Next StepRepeat CollisionStep TimesRepeat CollisionStep TimesAAAAReads active bodiesReads active bodiesDeactivates bodiesDeactivates bodiesBuild Islands from ConstraintsBuild Islands fr...PPAAAAFind Collisions (per batch of active bodies and per pair)Find Collisions...PPVVAAMultiple concurrent jobsMultiple concurrent jobsDetermine Active Constraints (in batches)Determine Active...AAActivates bodiesActivates bodiesAACan spawn more jobsCan spawn...Find CCD Contacts (per body)Find CCD Contact...Resolve CCD Contacts Resolve CCD Cont...VVPPAAPPFinalize Contact Cache, Contact Removed CallbacksFinalize Contact Cache,...VVNot Last StepNot...Last StepLast StepStep Listeners (in batches)Step Listeners...PPVVAAIntegrate & Clamp Velocities (in batches)Integrate & Clam...Post IntegratePost IntegrateIf no CCD bodiesIf no CCD bodiesStarts the final jobStarts the...Soft Body PrepareSoft Body PrepareSoft Body CollideSoft Body CollideSoft Body SimulateSoft Body Simula...Soft Body FinalizeSoft Body Finali...PPPPVVPPVVVVAAAAText is not SVG - cannot display \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Docs/ProjectsUsingJolt.md b/Engine/lib/JoltPhysics/Docs/ProjectsUsingJolt.md new file mode 100644 index 000000000..def55dc34 --- /dev/null +++ b/Engine/lib/JoltPhysics/Docs/ProjectsUsingJolt.md @@ -0,0 +1,27 @@ +# Projects Using Jolt + +* [Artillery Eco](https://github.com/OversizedSunCoreDev/ArtilleryEco) - Plugin for Unreal Engine 5 (UE5). +* [Dagor Engine](https://github.com/GaijinEntertainment/DagorEngine) - An open source engine used by [War Thunder](https://warthunder.com/). See [here](https://github.com/GaijinEntertainment/DagorEngine/tree/main/prog/engine/phys/physJolt). +* [Death Stranding 2: On the Beach](https://www.playstation.com/en-us/games/death-stranding-2-on-the-beach/) - A third person action adventure game set in a post-apocalyptic world ravaged by otherworldly creatures. +* [ezEngine](https://github.com/ezEngine/ezEngine) - An open source C++ game engine. +* [GDevelop](https://gdevelop.io/) - An open-source, no-code game engine. See [this](https://blog.blips.fm/articles/gdevelop-55-released-with-enhanced-3d-support) announcement. +* [Godot](https://github.com/godotengine/godot) - Godot Engine – Multi-platform 2D and 3D game engine. See [this](https://godotengine.org/releases/4.4/#jolt-physics-module) announcement. +* [Horizon Forbidden West](https://www.playstation.com/en-us/games/horizon-forbidden-west/) - An open world action RPG adventure. +* [HypeHype](https://www.hypehype.com/) - A mobile app to create, remix and play games. See [this](https://twitter.com/SebAaltonen/status/1726871354228482237) X post. +* [Light Tracer Render](https://lighttracer.org/) - A rendering tool, uses Jolt for object placement. See [this](https://lighttracer.org/blog/light-tracer-render-2-4-0/) announcement. +* [LĂ–VR](https://lovr.org) - A Lua VR framework. See [this](https://lovr.org/docs/v0.18.0) release announcement. +* [luxe engine](https://luxeengine.com) - A cross platform, rapid development game engine. +* [The Mirror](https://themirror.space/) - A game development platform designed to empower developers and artists with real-time, limitless creativity. See [this](https://twitter.com/themirrorgdp/status/1718019599361323023?s=20) X post. +* [Nazara Engine](https://github.com/NazaraEngine/NazaraEngine) - A cross-platform framework aimed at real-time applications (such as video games) requiring Audio, 2D/3D rendering and physics, network and more. +* [NeoAxis Engine](https://www.neoaxis.com/) - A 3D game engine. See [this](https://www.neoaxis.com/news/neoaxis_engine_2023_1_released) announcement. +* [Blood Line: A Rebel Moon Game](https://www.rebelmoongame.com/) - An online co-op action game set in the rebel moon universe. +* [Sceneri](https://www.sceneri.com/) - A mobile app for creating and sharing 3D games and experiences. See [this](https://www.sceneri.com/blog/2023-07-27-jolt-physics-bringing-sceneris-worlds-to-life) blog post. +* [Substrata](https://substrata.info/) - A metaverse platform. +* [Supernova Engine](https://www.supernovaengine.org/) - Game engine for 2D and 3D projects with entity component system (ECS) and data-oriented design. +* [Traktor Engine](https://github.com/apistol78/traktor/) - An open-source 3d game engine written in C++. +* [Unreal Jolt](https://github.com/Yadhu-S/UnrealJolt) - Plugin for Unreal Engine 5 (UE5). +* [VPhysics Jolt](https://github.com/Joshua-Ashton/VPhysics-Jolt), a replacement for Ipion Virtual Physics in the Source Engine. Can be used in e.g. [Garry's Mod](https://store.steampowered.com/app/4000/Garrys_Mod/). +* [Wicked Engine](https://wickedengine.net/) - 3D engine with modern graphics. See [X post](https://x.com/turanszkij/status/1805979390557528217) and [github](https://github.com/turanszkij/WickedEngine/blob/master/WickedEngine/wiPhysics_Jolt.cpp). +* [X4 Foundations](https://store.steampowered.com/app/392160/X4_Foundations/) - A space simulation game. See [this](https://forum.egosoft.com/viewtopic.php?t=451046) announcement. + +If your project is using Jolt, open a discussion or send a PR to add it to the list. diff --git a/Engine/lib/JoltPhysics/Docs/ReleaseNotes.md b/Engine/lib/JoltPhysics/Docs/ReleaseNotes.md new file mode 100644 index 000000000..fe55af24c --- /dev/null +++ b/Engine/lib/JoltPhysics/Docs/ReleaseNotes.md @@ -0,0 +1,438 @@ +# Release Notes + +For breaking API changes see [this document](https://github.com/jrouwe/JoltPhysics/blob/master/Docs/APIChanges.md). + +## v5.5.0 + +### New functionality + +* Added new define `JPH_TRACK_SIMULATION_STATS` which tracks simulation statistics on a per body basis. This can be used to figure out bodies are the most expensive to simulate. +* Added `RagdollSettings::CalculateConstraintPriorities` which calculates constraint priorities that boost the priority of joints towards the root of the ragdoll. +* BoxShape, CylinderShape and TaperedCylinderShape will now automatically reduce the convex radius if the specified value is too big for the shape (instead of erroring out). +* Added ability to configure the thickness of triangles when colliding with soft bodies through `CollideSoftBodyVerticesVsTriangles::sTriangleThickness`. +* Added `JPH_DEFAULT_ALLOCATE_ALIGNMENT` which allows defining the default `Allocate` alignment if your allocator's alignment is different from the alignment as defined by `__STDCPP_DEFAULT_NEW_ALIGNMENT__`. + +### Bug Fixes + +* Visual Studio 2026 support. +* A 6DOF constraint that constrains all rotation axis in combination with a body that has some of its rotation axis locked would not constrain the rotation in the unlocked axis. +* Added include `type_traits` for `std::is_trivial` to avoid compile error on macOS with clang 21. +* Fixed compilation error when using Jolt in conjunction with the `_CRTDBG_MAP_ALLOC` define on Windows. +* Fixed cast shape possibly not returning a hit when a shape cast starts touching (but not intersecting) another shape and requesting the deepest hit. +* Fixed division by zero when doing a really long (6 KM) sphere cast against a triangle. In this case the floating point accuracy became low enough so that the distance between the sphere center and the triangle (which should be 'radius') became zero instead. +* Fixed memory leak when providing invalid parameters to TaperedCylinderShapeSettings and creating the shape. +* Fixed collision between soft body and `TriangleShape`/`MeshShape`/`HeightFieldShape`. This would not find the closest collision point in case the shape was scaled. It would also make the triangles much thicker than intended causing collisions with back facing triangles that were very far away. + +## v5.4.0 + +### New functionality + +* Added Cosserat rods to soft bodies. This is a stick constraint with an orientation that can be used to attach geometry. Can be used e.g. to simulate vegetation in a cheap way. See the new `SoftBodyCosseratRodConstraintTest` demo. +* Added ability to drive hinge constraints with `Ragdoll::DriveToPoseUsingMotors`. This also adds `HingeConstraint::SetTargetOrientationBS` which sets the target angle in body space. +* Added `JPH_USE_EXTERNAL_PROFILE` cmake option that allows overriding the behavior of the profile macros. +* Added `SoftBodyCreationSettings::mFacesDoubleSided` which treats the faces of the soft body as double sided. This can be used to make e.g. flags double sided. +* Added functions to get the `CharacterSettings` from a `Character` and `CharacterVirtualSettings` from a `CharacterVirtual`. +* Added support for compound shapes as character shape in `CharacterVirtual`. +* Added `BodyInterface::SetIsSensor`/`IsSensor` functions. + +### Bug Fixes + +* Fixed bug in `ManifoldBetweenTwoFaces` which would not find the correct manifold in case face 1 had 3 or more vertices and face 2 only 2. E.g. for a box resting the long edge of a cylinder this would mean that only a single contact point was found instead of 2 (the other way around would work fine). +* Fixed bug in `ConvexHullShape::CollideSoftBodyVertices` where the wrong edge could be reported as the closest edge. +* Fixed bug in `PhysicsSystem::OptimizeBroadPhase`. When calling this function after removing all bodies from the `PhysicsSystem`, the internal nodes would not be freed until bodies are added again. This could lead to running out of internal nodes in rare cases. +* Fixed bug in `MeshShape` active edge calculation which could mark edges of non-manifold meshes as inactive instead of active. +* Fixed passing underestimate of penetration depth in `ContactListener::OnContactPersisted` when the contact comes from the contact cache. +* `QuadTree` will now fall back to the heap when running out of stack space during collision queries. Previously this would trigger an assert and some collisions would not be detected. +* Fixed `BodyInterface::MoveKinematic`, `SetLinearVelocity`, `SetAngularVelocity`, `SetLinearAndAngularVelocity`, `AddLinearVelocity`, `AddLinearAndAngularVelocity`, `SetPositionRotationAndVelocity` and `SetMotionType` when body not added to the physics system yet. +* Fixed UBSAN false positive error that detected a dirty trick in `SimShapeFilter`. +* WheelSettingsTV and WheelSettingsWV were not serializing their base class members. +* The remap tables in `SoftBodySharedSettings::OptimizationResults` mapped from new to old index instead of from old to new as was documented. The maps now behave as documented. +* Fixed an issue where soft body bend constraints could be created with identical vertices. This led to an assert triggering. +* Fixed infinite recursion when colliding a `TriangleShape` vs a `TriangleShape`. +* 32-bit MinGW g++ doesn't call the correct overload for the new operator when a type is 16 bytes aligned. This could cause unaligned read access violations. +* Fixed compiling in double precision and fixed issues with floating point contraction that caused unit test failures on LoongArch architecture. +* Added an epsilon to the `CastRay` / `CastShape` early out condition to avoid dividing by a very small number and overflowing to INF. This can cause a float overflow exception. +* Fixed Samples requiring Vulkan extension `VK_EXT_device_address_binding_report` without checking if it is available. +* Fixed Vulkan warning in Samples: VkSemaphore is being signaled by VkQueue but it may still be in use by VkSwapchainKHR. +* Fixed incorrect RTTI definition of `MotorcycleControllerSettings` which led to the members of `WheeledVehicleControllerSettings` not being serialized. +* Implemented missing `VehicleConstraint::GetConstraintSettings` function. +* Fixed colliding a compound shape vs a regular shape ignoring `CollideShapeSettings::mMaxSeparationDistance`. This potentially led to missed collisions. + +## v5.3.0 + +### New functionality + +#### Samples + +* The Samples and JoltViewer can run on Linux using Vulkan. Make sure to install the Vulkan SDK before compiling (see: `Build/ubuntu24_install_vulkan_sdk.sh`). +* The Samples and JoltViewer can run on macOS using Metal. + +#### MeshShape + +* `MeshShape`s of up to 110M triangles are possible now, but the actual maximum is very dependent on how the triangles in the mesh are connected. +* Optimized creation of `MeshShape`. Improves build speed by about 25% and reduces number of allocations by a factor of 1000. Allocations caused contention when building meshes from multiple threads. +* Added `MeshShapeSettings::mBuildQuality` which allows selecting between faster mesh creation or faster run time performance. + +#### Character + +* Added `OnContactPersisted`, `OnContactRemoved`, `OnCharacterContactPersisted` and `OnCharacterContactRemoved` functions on `CharacterContactListener` to better match the interface of `ContactListener`. +* Every `CharacterVirtual` now has a `CharacterID`. This ID can be used to identify the character after removal and is used to make the simulation deterministic in case a character collides with multiple other virtual characters. +* Added support for `CharacterVirtual` to override the inner rigid body ID. This can be used to make the simulation deterministic in e.g. client/server setups. + +#### Collision Detection + +* Added `PhysicsSystem::SetSimShapeFilter`. This allows filtering out collisions between sub shapes within a body and can for example be used to have a single body that contains a low detail simulation shape an a high detail collision query shape. An example of a body that's both a sensor and a rigid body can be found in `ContactListenerTest`. +* Added `PhysicsSystem::SetSimCollideBodyVsBody`. This allows overriding the collision detection between two bodies. It can be used to only store the 1st hit for sensor collisions. This makes sensors cheaper if you only need to know if there is an overlap or not. An example can be found in `SimCollideBodyVsBodyTest`. +* Added `ClosestHitPerBodyCollisionCollector` which will report the closest / deepest hit per body that the collision query collides with. +* Added overridable `CollisionCollector::OnBodyEnd` that is called after all hits for a body have been processed when collecting hits through `NarrowPhaseQuery`. + +#### New Platforms + +* Added support for RISC-V, LoongArch and PowerPC (Little Endian) CPUs. +* Added support for WASM64. + +#### Various + +* Removed the use of `std::unordered_map` and `std::unordered_set` and replaced them with our own implementation: `UnorderedMap` and `UnorderedSet`. +* Added `MotionProperties::ScaleToMass`. This lets you easily change the mass and inertia tensor of a body after creation. +* Split up `Body::ApplyBuoyancyImpulse` into `Body::GetSubmergedVolume` and `Body::ApplyBuoyancyImpulse`. This allows you to use the calculated submerged volume for other purposes. +* Added binary serialization to `SkeletalAnimation`. +* Added the ability to add a sub shape at a specified index in a `MutableCompoundShape` rather than at the end. +* Added `STLLocalAllocator` which is an allocator that can be used in e.g. the `Array` class. It keeps a fixed size buffer for N elements and only when it runs out of space falls back to the heap. +* Added the following constants on PhysicsSystem: `cMaxBodiesLimit`, `cMaxBodyPairsLimit` and `cMaxContactConstraintsLimit`. These constants are the max allowable values for `PhysicsSystem::Init`. Exceeding these will trigger an assert and the system will clamp the values. Note that on a 32 bit system, you'll run out of memory before you reach these values. + +### Bug fixes + +* Fixed bodies gaining more energy than intended due to restitution. E.g. A restitution of 1 could lead to bodies bouncing ever higher. +* `BodyInterface::AddForce` applied a force per soft body vertex rather than to the whole body, this resulted in a soft body accelerating much more compared to a rigid body of the same mass. +* `std::push_heap`/`pop_heap` behave differently on macOS vs Windows/Linux when elements compare equal, this made the cross platform deterministic build not deterministic in some cases. +* Removing a sub shape from a `MutableCompoundShape` would not update the bounding box if the last shape was removed, which can result in a small performance loss. +* An empty `MutableCompoundShape` now returns the same local bounding box as `EmptyShape` (a point at (0, 0, 0)). This prevents floating point overflow exceptions. +* VehicleConstraint would override `Body::SetAllowSleeping` every frame, making it impossible for client code to configure a vehicle that cannot go to sleep. +* Fixed `CharacterVirtual::Contact::mIsSensorB` not being persisted in `SaveState`. +* Fixed `CharacterVirtual::Contact::mHadContact` not being true for collisions with sensors. They will still be marked as `mWasDiscarded` to prevent any further interaction. +* Fixed `Character::SetShape` failing to switch when standing inside a sensor / `Character::PostSimulation` finding a sensor as ground collision. +* Fixed numerical inaccuracy in penetration depth calculation when `CollideShapeSettings::mMaxSeparationDistance` was set to a really high value (e.g. 1000). +* Bugfix in `Semaphore::Acquire` for non-windows platform. The count was updated before waiting, meaning that the counter would become -(number of waiting threads) and the semaphore would not wake up until at least the same amount of releases was done. In practice this meant that the main thread had to do the last (number of threads) jobs, slowing down the simulation a bit. +* Fixed a bug in `ManifoldBetweenTwoFaces` that led to incorrect `ContactManifold::mRelativeContactPointsOn2` when the contact normal and the face normal were not roughly parallel. Also it possibly led to jitter in the simulation in that case. +* Fixed `InternalEdgeRemovingCollector` not working when colliding with a very dense triangle grid because it ran out of internal space. Now falling back to memory allocations when this happens to avoid ghost collisions. +* Fixed running out of stack space when simulating a really high number of active rigid bodies. +* Moved the 'broad phase bit' to the highest bit in `BodyID` to avoid running out of `NodeID`s in `BroadPhaseQuadTree` when calling `PhysicsSystem::OptimizeBroadPhase` on a tree with a very high body count. +* `TempAllocatorImpl` uses 64 bit integers internally to allow for a higher max contact constraint count. +* When inserting lots of bodies without using batching, a broad phase tree of depth > 128 can be created. If the `PhysicsSystem` was destructed in this situation, a stack overflow would cause a crash. +* When calling `PhysicsSystem::Update` with a delta time of 0, contact remove callbacks were triggered by accident for all existing contacts. +* Fixed `HingeConstraint` not having limits if `LimitsMin` was set to `-JPH_PI` or `LimitsMax` was set to `JPH_PI`. It should only be turned off if both are. +* Fixed `CylinderShape::GetSupportingFace` returning the wrong face. When the height of a cylinder was small compared to its radius, it would sink more into the ground than needed during simulation. +* When there were no active bodies, the step listeners weren't called. This meant they couldn't wake up bodies. The step listeners are now only skipped if the physics system is updated with zero delta time. +* Fixed a race condition in soft body simulation that could break determinism. +* Added overloads for placement new in the `JPH_OVERRIDE_NEW_DELETE` macro, this means it is no longer needed to do `:: new (address) JPH::class_name(constructor_arguments)` but you can do `new (address) JPH::class_name(constructor_arguments)`. +* Fixed a GCC warning `-Wshadow=global`. + +## v5.2.0 + +### New functionality + +* Added PlaneShape. An infinite plane. Negative half space is considered solid. +* Added TaperedCylinderShape. A cylinder with different top and bottom radii. +* Added EmptyShape. A shape that collides with nothing and that can be used as a placeholder or for dummy bodies. +* Use MeshShapeSettings::mPerTriangleUserData at about 25% memory increase to get per triangle user data through MeshShape::GetTriangleUserData +* Added `Shape::GetLeafShape` to be able to get a leaf shape given a sub shape ID +* Added `HeightFieldShape::GetSubShapeCoordinates` to get the triangle coordinates of a particular sub shape ID +* Split back face mode between convex/triangles for ray casts. This allows you to e.g. have meshes that do give back face hits while convex shapes don't. +* SoftBodyManifold now returns sensor contacts separately. Before this change, there was a limit of a single colliding body per soft body vertex. If the closest body happened to be a sensor this effectively disabled the collision with the world and caused artifacts. We can now also detect multiple sensor contacts per soft body and they are returned through a new interface `SoftBodyManifold::GetSensorContactBodyID`. +* Added support for running Jolt with ThreadSanitizer. +* Added support for using ScaledShape inside CharacterVirtual. +* Added ability to save/restore a simulation in parts using `StateRecorder::SetIsLastPart`. Also added `StateRecorderFilter::ShouldRestoreContact` to allow selective restoring of contacts. +* Added `JPH_DEBUG_SYMBOL_FORMAT` cmake option. This allows switching from the default dwarf symbol format to e.g. the source-map format for emscripten, which speeds up compilation. + +### Bug fixes + +* Fixed an issue where enhanced internal edge removal would throw away valid contacts when a dynamic compound shape is colliding with another mesh / box shape. +* Fixed an issue where the bounding volume of a HeightFieldShape was not properly adjusted when calling SetHeights leading to missed collisions. +* Workaround for CMake error `CMake Error: No output files for WriteBuild!` when using the 'Ninja Multi-Config' generator. +* When a height field was created where SampleCount / BlockSize is not a power of 2 and a soft body touched the right or bottom border of the height field, the application would crash. +* Fixed a link error `ld: error: undefined symbol: pthread_create` on FreeBSD. +* Fixed missing files ConfigurationString.h and SoftBodyUpdateContext.h when running `cmake --install`. +* Fixed various missing header files when running `cmake --install` when `ENABLE_OBJECT_STREAM=OFF`. +* When using `cmake --install` to install a shared library on Windows, the dll is installed in the 'bin' folder now. +* Fixed cmake warning: `Policy CMP0177 is not set: install() DESTINATION paths are normalized.` +* Fixed `unresolved symbol '__emutls_v._ZN3JPH11PhysicsLock6sLocksE'` when compiling Jolt as a shared library with MinGW. +* Added workaround for issue where Firefox has problems with the `_mm_blendv_ps` intrinsic when compiling to WASM. + +## v5.1.0 + +### New functionality + +#### Soft Body + +* Added support for applying a global force to a soft body through Body::AddForce. +* Implemented better algorithm to split soft body constraints into parallel groups. This makes the soft body simulation 10-20% faster and also enables multithreading LRA, bend, volume and skinned constraints. +* Added approximate ACos function which speeds up dihedral bend constraints by approx. 10%. +* Improved sorting of LRA soft body constraints to improve convergence. +* Added ability to draw soft body constraint evaluation order. + +#### HeightField Shape + +* Sped up deserialization of HeightFieldShape/MeshShape classes by optimizing reading a vector of data in StreamIn, by switching std::vector out for a custom Array class and by combining a number of allocations into one. +* Added HeightFieldShape::GetMinHeightValue/GetMaxHeightValue that can be used to know which range of heights are accepted by SetHeights. +* Allowing negative stride when getting/setting height field shape heights or materials. This improves performance if your data happens to be layed out the wrong way around. +* Added HeightFieldShapeSettings::mMaterialsCapacity which can enlarge the internal materials array capacity to avoid resizing when HeightFieldShape::SetMaterials is called with materials that weren't in use by the height field yet. +* Added Clone function to HeightFieldShape. This allows creating a copy before modifying the shape. + +#### Character + +* Added CharacterBaseSettings::mEnhancedInternalEdgeRemoval (default false) that allows smoother movement for both the Character and CharacterVirtual class. +* Added ability for a CharacterVirtual to collide with another CharacterVirtual by using the new CharacterVsCharacterCollision interface. +* Added the option to add an inner rigid body to a CharacterVirtual. This allows it to interact with sensors through the regular ContactListener and to be found by normal collision checks. + +#### Vehicles + +* Added ability to override the gravity vector per vehicle. This allows creating vehicles that can e.g. stick to the surface of a track and drive upside down. See VehicleConstraint::OverrideGravity. + +#### Various + +* Replaced std::vector with a custom Array class. std::vector initializes memory to zero which causes an undesired performance overhead. +* Added macro JPH_OBJECT_STREAM that controls if ObjectStream and serialized attributes are compiled into the library or not. This can reduce the size of the library if you're not using this feature. +* Added option to get a callback when a JobSystemThreadPool thread starts/stops. This allows you to e.g. set application specific thread locals. +* Added cmake option USE_ASSERTS to turn on asserts in builds other than the Debug build. +* Switch from using _DEBUG to NDEBUG to detect debug mode. NDEBUG is defined in the standard while _DEBUG is Visual Studio specific. +* The OVERRIDE_CXX_FLAGS cmake flag will now also work for MSVC and allow you to specify your own CMAKE_CXX_FLAGS_DEBUG/CMAKE_CXX_FLAGS_RELEASE flags +* BodyInterface::AddForce/Torque functions now take an optional EActivation parameter that makes it optional to activate the body. This can be used e.g. to not let the body wake up if you're applying custom gravity to a body. +* Activating bodies now resets the sleep timer when the body is already active. This prevents the body from going to sleep in the next frame and can avoid quick 1 frame naps. +* Added Clone function to MutableCompoundShape. This allows creating a copy before modifying the shape. +* QuadTree / FixedSizeFreeList: Reorder variable layout to reduce false sharing & thread syncs to reduce simulation time by approximately 5%. +* Generate a CMake config file when the project is installed. Allows for other projects to import Jolt using the find_package() functionality. +* Added USE_WASM_SIMD cmake option. This will enable SIMD on the emscripten WASM build. +* Emscripten WASM build can now be compiled cross platform deterministic and deliver the same results as Windows, Linux etc. +* Added Shape::MakeScaleValid function. This function will take a scale vector and check it against the scaling rules for the shape. If it is not valid, it will return a scale that is close to the provided scale which is valid. +* Added cmake options to toggle exception-handling and RTTI. CPP_EXCEPTIONS_ENABLED enables exceptions, CPP_RTTI_ENABLED enables RTTI. By default they're both off as Jolt doesn't use these features. In the PerformanceTest this speeds up the simulation by about 5% for MSVC, no difference was measured for clang. + +### Bug fixes + +* Fix for new warning in MSVC 17.10 in immintrin.h: '__check_isa_support': unreferenced inline function has been removed. +* Fix error in gcc 14. Using always_inline in debug mode causes error: "inlining failed in call to 'always_inline' 'XXX': function not considered for inlining" +* Fixed clang-18 warning "LLVMgold.so: error loading plugin ... cannot open shared object file: No such file or directory", due to https://github.com/llvm/llvm-project/issues/84271 it currently doesn't support LTO. +* Suppress GCC warning: 'XXX' may be used uninitialized in this function [-Werror=maybe-uninitialized]. +* Fixed compile errors when compiling with GCC for the ARM platform. +* When calling CharacterVirtual::SetShape, a collision with a sensor would cause the function to abort as if the character was in collision. +* CharacterVirtual stick to floor / stair walk did not trigger a contact added callback on the CharacterContactListener. +* Fixed bug where the the skinned position of a soft body would update in the first sub-iteration, causing a large velocity spike and jittery behavior. +* Fixed bug where the velocity of soft body vertices would increase indefinitely when resting on the back stop of a skinned constraint. +* Fixed bug when SkinVertices for a soft body is not called every frame, the previous position of the skin was still used causing a replay of the motion of the previous frame. +* Fixed bug in cast ray vs soft body which caused missed collisions in case a back facing triangle was hit. +* Fixed handling of mass override from SoftBodyContactListener. Previously if the inverse mass of both of the soft body and the colliding body were set to 0, the soft body would still react. +* Fixed crash in Ragdoll::DriveToPoseUsingMotors when using constraints other than SwingTwistConstraint. +* Fixed -Wunused-parameter warning on GCC when building in Release mode with -Wextra. +* Fixed tolerance in assert in GetPenetrationDepthStepEPA. +* Due to a difference between the used instructions in NEON and SSE -Vec3::sZero() returned different binary results on ARM vs x86. When JPH_CROSS_PLATFORM_DETERMINISTIC is defined, we ensure that the calculation is the same now. +* Forgot to free a temporary allocation on an early out in HeightFieldShape::SetMaterials. +* Fix SSE not being enabled on x86 32-bits. +* Fixed a bug in the enhanced internal edge removal that could cause rigid bodies and characters to be affected by internal edges. +* Fixed a bug in MutableCompoundShape::AdjustCenterOfMass which would fail to update the bounding box of the shape. +* The 32 bit and 64 bit versions of the library now produce the same binary stream when serializing data to a StreamOut. Before some values would be stored as size_t which is platform dependent. + +## v5.0.0 + +### New Functionality + +#### Soft Body + +* Added soft body skinning constraints. This can be used to limit the movement of soft body vertices based on a skinned mesh. See [documentation](https://jrouwe.github.io/JoltPhysics/index.html#skinning-soft-bodies) for more info or watch this [movie](https://www.youtube.com/watch?v=NXw8yMczHJg). +* Added ability to turn on/off skinning constraints and to update the max distance for all constraints with a distance multiplier. +* Added dihedral bend constraints for soft bodies. See [movie](https://www.youtube.com/watch?v=A1iswelnGH4). +* Added long range attachment constraints (also called tethers) for soft bodies. +* Added SoftBodyContactListener which allows you to get callbacks for collisions between soft bodies and rigid bodies. See [movie](https://www.youtube.com/watch?v=DmS_8d2bdOw). +* Added support for a vertex radius for soft bodies. This keeps the vertices a fixed distance away from the surface which can be used to avoid z-fighting while rendering the soft body. +* Added SoftBodySharedSettings::CreateConstraints function that can automatically generate constraints based on the faces of the soft body. +* Added ability to update a soft body outside of the physics simulation step using SoftBodyMotionProperties::CustomUpdate. This is e.g. useful if the soft body is teleported and needs to 'settle'. + +#### Vehicles + +* Added support for less than 1 collision test per simulation step for vehicle wheels. This behavior can be configured differently when the vehicle is active / inactive. This can be used for LODding vehicles. +* Added wheel index to VehicleConstraint::CombineFunction friction callback and calculating longitudinal and lateral friction in the same call so you can have more differentiation between wheels. +* Added ability to override the max tire impulse calculations for wheeled vehicles. See WheeledVehicleController::SetTireMaxImpulseCallback. +* Added ability to disable the lean steering limit for the motorcycle, turning this off makes the motorcycle more unstable, but gives you more control over the final steering angle. + +#### Character + +* CharacterVirtual will now receive an OnContactAdded callback when it collides with a sensor (but will have no further interaction). +* Added user data to CharacterVirtual. + +#### Constraints + +* Swing limits do not need to be symmetrical anymore for SixDOFConstraints. This requires using the new pyramid shaped swing limits (ESwingType::Pyramid). SwingTwistConstraints still requires symmetrical limits but can use the pyramid swing limits too. These are cheaper to evaluate but are less smooth. +* Twist limits no longer need to be centered around zero for SixDOFConstraints and SwingTwistConstraints, any value between -PI and PI is supported now. +* Changed the meaning of Constraint::mNumVelocity/PositionStepsOverride. Before the number of steps would be the maximum of all constraints and the default value, now an overridden value of 0 means that the constraint uses the default value, otherwise it will use the value as specified. This means that if all constraints in an island have a lower value than the default, we will now use the lower value instead of the default. This allows simulating an island at a lower precision than the default. +* Bodies can now also override the default number of solver iterations. This value is used when the body collides with another body and a contact constraint is created (for constraints, the constraint override is always used). +* Added fraction hint to PathConstraintPath::GetClosestPoint. This can be used to speed up the search along the curve and to disambiguate fractions in case a path reaches the same point multiple times (i.e. a figure-8). +* Added Constraint::ResetWarmStart and Ragdoll::ResetWarmStart. Used to notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. +* Multithreading the SetupVelocityConstraints job. This was causing a bottleneck in the case that there are a lot of constraints but very few possible collisions. + +#### Collision Detection + +* Created an object layer filter implementation that is similar to Bullet's group & mask filtering, see ObjectLayerPairFilterMask. +* Created implementations of BroadPhaseLayerInterface, ObjectVsBroadPhaseLayerFilter and ObjectLayerPairFilter that use a bit table internally. These make it easier to define ObjectLayers and with which object layers they collide. +* Renamed SensorDetectsStatic to CollideKinematicVsNonDynamic and made it work for non-sensors. This means that kinematic bodies can now get collision callbacks when they collide with other static / kinematic objects. +* Added function to query the bounding box of all bodies in the physics system, see PhysicsSystem::GetBounds. + +#### Simulation + +* Implemented enhanced internal edge removal algorithm. This should help reduce ghost collisions. See BodyCreationSettings::mEnhancedInternalEdgeRemoval and [movie](https://www.youtube.com/watch?v=Wh5MIiiPVDE). +* Added BodyInterface::SetUseManifoldReduction which will clear the contact cache and ensure that you get consistent contact callbacks in case the body that you're changing already has contacts. + +#### Various + +* Ability to enable gyroscopic forces on bodies to create the [Dzhanibekov effect](https://en.wikipedia.org/wiki/Tennis_racket_theorem). +* Supporting SIMD for WASM build. Use -msimd128 -msse4.2 options with emscripten to enable this. +* Allowing WASM build to use a custom memory allocator. +* Added DebugRendererSimple which can be used to simplify the creation of your own DebugRenderer implementation. It only requires a DrawLine, DrawTriangle and DrawText3D function to be implemented (which can be left empty). +* Added ability to update the height field materials after creation. + +### Removed functionality +* Ability to restrict rotational degrees of freedom in local space, instead this is now done in world space. + +### Bug fixes + +* Fixed a bug in cast sphere vs triangle that could return a false positive hit against a degenerate triangle. +* Fixed bug in soft body vs tapered capsule. The calculations were slightly off causing a normal on the top or bottom sphere to be returned while the tapered part was actually closest. +* Fixed bug where colliding a cyclinder against a large triangle could return an incorrect contact point. +* Fixed bug where soft bodies would collide with sensors as if they were normal bodies. +* Sensors will no longer use speculative contacts, so will no longer report contacts before an actual contact is detected. +* Hinge limit constraint forces were clamped wrongly when the hinge was exactly at the minimum limit, making it harder to push the hinge towards the maximum limit. +* Fixed bug when a body with limited DOFs collides with static. If the resulting contact had an infinite effective mass, we would divide by zero and crash. +* Fixed unit tests failing when compiling for 32-bit Linux. The compiler defaults to using x87 instructions in this case which does not work well with the collision detection pipeline. Now defaulting to the SSE instructions. +* Fixed assert and improved interaction between a fast moving rigid body of quality LinearCast and a soft body. +* When creating a MeshShape with triangles that have near identical positions it was possible that the degenerate check decided that a triangle was not degenerate while the triangle in fact would be degenerate after vertex quantization. The simulation would crash when colliding with this triangle. +* A scaled compound shape with a center of mass of non zero would not apply the correct transform to its sub shapes when colliding with a soft body +* A soft body without any edges would hang the solver +* Fixed GCC 11.4 warning in JobSystemThreadPool.cpp: output may be truncated copying 15 bytes from a string of length 63 +* Longitudinal friction impulse for wheeled/tracked vehicles could become much higher than the calculated max because each iteration it was clamped to the max friction impulse which meant the total friction impulse could be PhysicsSettings::mNumVelocitySteps times too high. +* Properly initializing current engine RPM to min RPM for wheeled/tracked vehicles. When min RPM was lower than the default min RPM the engine would not start at min RPM. +* Fixed a possible division by zero in Body::GetBodyCreationSettings when the inverse inertia diagonal had 0's. +* When specifying a -1 for min/max distance of a distance constraint and the calculated distance is incompatible with the other limit, we'll clamp it to that value now instead of ending up with min > max. +* Fixed bug that contact cache was partially uninitialized when colliding two objects with inv mass override of 0. When the contact listener would report a non zero inv mass override the next simulation step this would mean that the simulation would read garbage and potentially crash due to NaNs. + +## v4.0.2 + +### New functionality +* Support for compiling with ninja on Windows. + +### Bug fixes +* Fixed bug in Indexify function that caused it to be really slow when passing 10K identical vertices. Also fixed a problem that could have led to some vertices not being welded. +* Fixed bug in SixDOFConstraint::RestoreState that would cause motors to not properly turn on. +* Fixed a determinism issue in CharacterVirtual. The order of the contacts returned by GetActiveContacts() was not deterministic. +* Fixed issue in sample application that mouse is very sensitive when viewing with Parsec. + +## v4.0.1 + +### New functionality +* Ability to stop overriding CMAKE_CXX_FLAGS_DEBUG/CMAKE_CXX_FLAGS_RELEASE which is important for Android as it uses a lot of extra flags. Set the OVERRIDE_CXX_FLAGS=NO cmake flag to enable this. +* Reduced size of a contact constraint which saves a bit of memory during simulation. +* Can now build a linux shared library using GCC. + +### Bug fixes +* Fixed mass scaling (as provided by the ContactListener) not applied correctly to CCD objects & during solve position constraints. This led to kinematic objects being pushed by dynamic objects. +* Workaround for MSVC 17.8, limits.h doesn't include corecrt.h and triggers an error that \_\_STDC_WANT_SECURE_LIB\_\_ is not defined. +* Fixed bug in MustIncludeC logic in GetClosestPointOnTriangle. +* Removed the need for specifying -Wno-comment when compiling with GCC. + +## v4.0.0 + +### New functionality +* Added support for soft bodies (feature still in development, see [announcement](https://x.com/jrouwe/status/1687051655898955776?s=20)). +* Support for limiting the degrees of freedom of a body to support 2D simulations (see [announcement](https://x.com/jrouwe/status/1676311800797622279?s=20)). +* Support for setting surface velocity of a body (see [announcement](https://x.com/jrouwe/status/1662727355553443844?s=20)). +* Added ability to update a height field after creation (see [announcement](https://x.com/jrouwe/status/1713670512801390829?s=20)). +* Support for non-power of 2 height fields. +* Expose a function to compare the JOLT_VERSION_ID with the version the library was compiled with to detect mismatches between library and client code. +* Added ability to specify extra ragdoll constraints that are not parent/child related. +* Ability to selectively save the state of a physics system to support replicating state over the network. +* Added constraint priority to control the order of evaluation of constraints (and thereby the most influential constraints). +* Sensors can now detect static objects. +* Ability to override mass and inertia of bodies from the ContactListener. +* Ability to specify stiffness/damping for springs instead of frequency/damping. +* Added option to disable the lean spring controller for motorcycles. +* Added vehicle callbacks at the beginning of the step listener and after wheel checks. +* Ability to override the position where the suspension and tire forces are applied. +* Support for building Jolt as a shared library on Windows. +* Optimized Indexify function from O(N^2) to O(N log(N)). + +### Removed functionality +* Removed support for integration sub steps for PhysicsSystem::Update. + +### New supported platforms +* 32-bit versions of Android on ARM and x86. + +### Bug fixes +* Motor frequency/stiffness of 0 should turn the motor off. +* RotatedTranslatedShape::GetPosition returned the wrong value. +* If a body is removed between the broad phase detecting an overlap and the narrow phase locking the body, callbacks could be called on a body that has already been removed. +* Fixed flipped normals in EPA penetration depth algorithm which could cause the normal to point in the wrong direction for collision tests. +* Respecting the IsSensor flag for CCD bodies. +* Fixed double locking issue that could cause a deadlock while updating the AABB of a body during simulation. +* Fixed a crash when fetching a body using an invalid BodyID. +* Windows 32 vs 64-bit versions produce the same deterministic results now. +* Heightfield vs convex was not filled in in collision dispatch table. This caused sensors to assert and not detect collisions with heightfields. +* The friction applied during continuous collision detection could be sqrt(2) times too large. +* The friction was clamped independently on both tangential axis which meant that the total friction could be larger than the amount of friction that should have been allowed. It also meant that an object would slow down quicker on one axis than on another causing a curved trajectory. +* When an object wasn't moving fast enough to trigger restitution for a speculative contact, the contact was enforced at the current position rather than at the distance of the speculative contact. +* Fixed CharacterVirtual jittering issue when moving down on elevator. +* CharacterVirtual was speeding up beyond the requested speed when sliding along a wall. +* CharacterVirtual reported to be on ground for one more frame after jumping against a wall. +* Added missing delta time term in CharacterVirtual::DetermineConstraints. +* CastShape had incorrect early out condition which could cause it to miss the deepest penetration. +* Pitch/roll limit constraint for vehicles didn't work when local vehicle up did not match world up. +* Wheel contact point did not return deepest point in certain cases. +* Fix for engine RPM being much higher than wheel RPM when measured at clutch. Before we were ignoring bake and wheel torques in engine RPM calculation. +* Don't allow the vehicle to sleep when the transmission is switching. +* Fixed bug that caused suspension to be weaker when driving a vehicle over dynamic bodies. + +## v3.0.0 + +* Support for double precision simulation for large worlds (see [announcement](https://twitter.com/jrouwe/status/1599366630273712128)) +* Performance optimization that allows solving large islands on multiple threads (see [announcement](https://twitter.com/jrouwe/status/1633229953775828994)) +* Vehicles now support suspensions that are at an angle with the vehicle body (instead of 90 degrees) +* Supporting cylinder based wheels for vehicles +* Experimental motor cycle physics (see [announcement](https://twitter.com/jrouwe/status/1642479907383959553)) +* CharacterVirtual can now move relative to a moving object (e.g. a space ship) +* Added 2D physics example +* Added functionality to estimate the collision impulse in the contact added callback +* Added a JobSystemWithBarrier class that makes it easier to integrate with your own job system +* Support for 32-bit object layers to allow easier integration with existing collision filtering systems + +## v2.0.1 + +* Adds ARM 32-bit support to support vcpkg-tool + +## v2.0.0 + +### Major new functionality +* Simulation is now deterministic between Windows, Linux and macOS. +* Support for custom memory allocators. +* A new character class that lives outside the main simulation update and is mainly used for player movement (CharacterVirtual). +* Implemented skeleton mapper that can convert an animated skeleton to a ragdoll skeleton and back. +* Rack and pinion, gear and pulley constraints have been added. +* Ability for sensors to detect collisions with sleeping bodies. +* Improved engine model for wheeled vehicles. +* Most constraints can now also be configured in local space. + +### New supported compilers +* MinGW +* GCC + +### New supported platforms +* All intel platforms supporting SSE2 and higher (was SSE4.2) +* 32-bit applications (was 64 bit only) +* Windows on ARM +* Windows UWP +* macOS +* iOS +* WebAssembly + +## v1.1.0 + +* Optimizations. + +## v1.0.0 + +* Initial stable release. diff --git a/Engine/lib/JoltPhysics/Docs/Samples.md b/Engine/lib/JoltPhysics/Docs/Samples.md new file mode 100644 index 000000000..e1e25c41b --- /dev/null +++ b/Engine/lib/JoltPhysics/Docs/Samples.md @@ -0,0 +1,172 @@ +# Jolt Physics Samples + +This document describes the demos in the [Samples](https://github.com/jrouwe/JoltPhysics/tree/master/Samples) application. When you run the samples application the application will initially start paused, press P to unpause it. The menu is accessible through pressing ESC, it has the following options: + +* Select Test - This allows you to select between the different types of physics tests +* Test Settings - Some tests will allow extra configuration, if not this setting will be greyed out +* Restart Test (R) - When selecting this, the test will go back to its initial state +* Run All Tests - This will run every tests for 10 seconds before proceeding to the next. This is a good way of visually inspecting the simulation before commiting a code change. +* Next Test (N) - When running all tests, this option can be used to quickly skip to the next test. +* Physics Settings - This menu contains all physics configuration. +* Drawing Options - This menu shows all the options for drawing the internal state of the physics simulation. +* Mouse Probe - This allows you to switch between various collision detection modes to test the different collision detection algorithms +* Shoot Object - A sample application is not complete without being able to shoot some balls at the simulation (B key). This menu allows additional settings. +* Help - A quick help text. + +## General Controls + +* Use the Mouse and WSAD keys to move around, hold Shift to speed up and Ctrl to slow down +* Hold the Space key to pick up an object in the center of the screen and move it around with the mouse and WSAD. +* P - Pause / unpause simulation. +* O - Single step the simulation. +* , - Step back (only when Physics Settings / Record State for Playback is on). +* . - Step forward (only when Physics Settings / Record State for Playback is on). +* Shift + , - Play reverse (only when Physics Settings / Record State for Playback is on). +* Shift + . - Replay forward (only when Physics Settings / Record State for Playback is on). +* T - Dump frame timing information to profile_*.html (when JPH_PROFILE_ENABLED defined). + +## The Tests + +Note that you can watch all movies below in [a single YouTube playlist](https://www.youtube.com/watch?v=pwyCW0yNKMA&list=PLYXVwtOr1CBxbA50jVg2dKUQvHW_5OOom). + +### Vehicles + +This categories shows vehicles created through the VehicleConstraint. These vehicles use ray- or shape casts to detect collision with the ground and simulate a vehicle with an engine, gearbox, differentials and suspension. + +|[](https://www.youtube.com/watch?v=A_gvLH4KKDA)| +|:-| +|*A wheeled vehicle.*| + +|[](https://www.youtube.com/watch?v=QwlPOKbxsqU)| +|:-| +|*Demonstrates a tracked vehicle with a turret constrained to the main body with hinge constraints.*| + +|[](https://www.youtube.com/watch?v=umI8FF0gVxs)| +|:-| +|*Demonstrates a motor cycle.*| + +|[](https://www.youtube.com/watch?v=AJPS31S6ZO8)| +|:-| +|*Applying a custom gravity override to a vehicle to create weird gameplay.*| + +### Rig (Ragdolls) + +This category demonstrates how ragdolls can be made and controlled using keyframing or motors. + +|[](https://www.youtube.com/watch?v=gvq6qdU3ZTs)| +|:-| +|*A ragdoll set to kinematic mode (infinite mass, simulated using velocities only) interacting with dynamic objects.*| + +|[](https://www.youtube.com/watch?v=lYHhe6HLbs4)| +|:-| +|*Demonstrating a humanoid ragdoll driven by motors which are trying to match a sprint animation in local space (green sticks).*| + +|[](https://www.youtube.com/watch?v=hrnmgNN-m-U)| +|:-| +|*An animation is played back on a high detail skeleton ('Animation') and then mapped onto a low detail ragdoll skeleton ('Reversed Mapped'). This animation is used to drive the motors of the ragdoll. The resulting pose is mapped back to the high detail skeleton ('Mapped'). Note that the skeletons are drawn offset to make them clearer..*| + +|[](https://www.youtube.com/watch?v=pwyCW0yNKMA)| +|:-| +|*160 Ragdolls being dropped on a scene from Horizon Zero Dawn.*| + +|[](https://www.youtube.com/watch?v=7ZMm7yObpqs)| +|:-| +|*160 Ragdolls dropping on a pile, simulated using the Jolt Physics engine. Yellow means the ragdoll is simulated, red means the simulation is sleeping.*| + +|[](https://www.youtube.com/watch?v=jhpsIqbsU4I)| +|:-| +|*A pile of ragdolls that are driven to a specific animated death pose. This gives the ragdolls 'stiffness'.*| + +### Soft Body + +|[](https://www.youtube.com/watch?v=vJX_3FNISkw)| +|:-| +|*Demonstrates Soft Body physics as simulated by Jolt Physics. Soft body physics can be used for things like cloth and soft balls.*| + +|[](https://www.youtube.com/watch?v=DmS_8d2bdOw)| +|:-| +|*Demonstrates the use of soft body contact listeners. You can use these to affect the collision response between a soft body and a rigid body by e.g. artificially making the mass of one of the two higher so that the other is less affected by the collision. Finally you can also turn a contact into a sensor contact which means you get the contact points but there will not be any collision response..*| + +|[](https://www.youtube.com/watch?v=A1iswelnGH4)| +|:-| +|*This video shows the effect of bend constraints on a wrinkled cloth. The left most patch has no constraints to preserve the wrinkles, the middle uses distance constrains ('sticks') to preserve the wrinkles and the last one uses dihedral angle constraints to preserve the angle between two triangles on their shared edge.*| + +|[](https://www.youtube.com/watch?v=NXw8yMczHJg)| +|:-| +|*This demo shows a soft body that is connected to a skinned mesh via distance constraints. Each simulated vertex can deviate from its skinned position by a fixed length. The green lines indicate the animated joints of the skinned mesh.*| + +### Character + +This category shows how you can simulate a (humanoid) character using a capsule. + +|[](https://www.youtube.com/watch?v=YjaJT9of7UE)| +|:-| +|*A demonstration of a game Character. Demonstrates moving, sliding against the environment, crouching and jumping.*| + +### Water + +This category shows how you can implement a water simulation in your game. + +|[](https://www.youtube.com/watch?v=CEr_LtQLGeg)| +|:-| +|*Water buoyancy and friction simulation. Demonstrates how various shapes and compound shapes behave in the water. The right most object has a lowered center of mass.*| + +### Constraints + +This category shows the various constraints that are supported. Constraints connect two or more bodies together and limit the relative movement. + +|[](https://www.youtube.com/watch?v=6xMKNMjD5pE)| +|:-| +|*Showing the path constraint in action.*| + +|[](https://www.youtube.com/watch?v=8aQ9x8SQSuM)| +|:-| +|*Demonstrates a chain of swing-twist constraints (usable for humanoid shoulders). The green cones show the swing limit and the pink pie shows the twist limit.*| + +|[](https://www.youtube.com/watch?v=3w5SgElroBw)| +|:-| +|*Demonstrates a gear constraint. Note that the gears can be placed at any relative angle of each other, so you could e.g. create a bevel or worm gear.*| + +|[](https://www.youtube.com/watch?v=e588KG-ZSxc)| +|:-| +|*Demonstrates a rack and pinion constraint.*| + +|[](https://www.youtube.com/watch?v=9P8OaahtU-4)| +|:-| +|*Shows two boxes connected through a pulley constraint. In this case the constraint is configured as a block and tackle with and advantage of 2: the right block moves 2x as slow as the left block.*| + +### General + +This category contains general simulation tests. It demonstrates things like friction, restitution, damping, modifying gravity and continuous collision detection. Some highlights: + +|[](https://www.youtube.com/watch?v=fTtjBLYBxco)| +|:-| +|*A YouTube video showing stability of a pile of boxes.*| + +|[](https://www.youtube.com/watch?v=EanFxlkZgcA)| +|:-| +|*Demonstrates objects sliding along a polygon mesh. Internal mesh edges are ignored and do not cause objects to bounce off.*| + +|[](https://www.youtube.com/watch?v=Y-UgylH992A)| +|:-| +|*1000 random shapes in a funnel.*| + +|[](https://www.youtube.com/watch?v=_Lv5xlWtCpM)| +|:-| +|*We will automatically split up the simulation in islands of non-interacting bodies and distribute the work across multiple threads. Each island has its own color.*| + +|[](https://www.youtube.com/watch?v=KGnlYSW3550)| +|:-| +|*Shows the difference between compiling Jolt Physics in single precision and double precision (define JPH_DOUBLE_PRECISION).*| + +|[](https://www.youtube.com/watch?v=p_H6egZzbZE)| +|:-| +|*A demo of setting the surface velocity of a body to create a conveyor belt. The boxes have decreasing friction from front to back (last one has zero friction so slowly slides down the ramp).*| + +### Shapes & Scaled Shapes + +These categories show off all of the supported shapes and how they can be scaled at run-time. + +|[](https://www.youtube.com/watch?v=u9cPBGUFurc)| +|:-| +|*A height field shape using various scales in Jolt Physics: Uniform, Non uniform, Mirrored, Inside out*| diff --git a/Engine/lib/JoltPhysics/Docs/SwingTwistConstraint.png b/Engine/lib/JoltPhysics/Docs/SwingTwistConstraint.png new file mode 100644 index 000000000..10c16bc20 Binary files /dev/null and b/Engine/lib/JoltPhysics/Docs/SwingTwistConstraint.png differ diff --git a/Engine/lib/JoltPhysics/Doxyfile b/Engine/lib/JoltPhysics/Doxyfile new file mode 100644 index 000000000..3e83d6896 --- /dev/null +++ b/Engine/lib/JoltPhysics/Doxyfile @@ -0,0 +1,2759 @@ +# Doxyfile 1.9.5 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "Jolt Physics" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "A multi core friendly Game Physics Engine" + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = ./Docs/LogoSmall.png + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = ./Build/Doxygen + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# numer of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:^^" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete +# function parameter documentation. If set to NO, doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# The default value is: NO. + +WARN_AS_ERROR = FAIL_ON_WARNINGS + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = ./Jolt \ + ./Docs/Architecture.md \ + ./Docs/Samples.md \ + ./Docs/PerformanceTest.md \ + ./Docs/ReleaseNotes.md \ + ./Docs/APIChanges.md \ + ./Build/README.md \ + ./Docs/ProjectsUsingJolt.md \ + ./Docs/PhysicsSystemUpdate.svg + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING) if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding +# "INPUT_ENCODING" for further information on supported encodings. + +INPUT_FILE_ENCODING = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, +# *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C +# comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, +# *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f \ + *.for \ + *.tcl \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# ANamespace::AClass, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = . + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = ./Docs/Architecture.md + +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS +# tag is set to YES then doxygen will add the directory of each input to the +# include path. +# The default value is: YES. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_ADD_INC_PATHS = YES + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = . + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. Default setting AUTO_LIGHT +# enables light output unless the user preference is dark output. Other options +# are DARK to always use dark mode, LIGHT to always use light mode, AUTO_DARK to +# default to dark mode unless the user prefers light mode, and TOGGLE to let the +# user toggle between dark and light mode via a button. +# Possible values are: LIGHT Always generate light output., DARK Always generate +# dark output., AUTO_LIGHT Automatically set the mode according to the user +# preference, use light mode if no preference is set (the default)., AUTO_DARK +# Automatically set the mode according to the user preference, use dark mode if +# no preference is set. and TOGGLE Allow to user to switch between light and +# dark mode via a button.. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = AUTO_LIGHT + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a color-wheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use gray-scales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline the HTML help workshop was already many years +# in maintenance mode). You can download the HTML help workshop from the web +# archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = JoltPhysics.chm + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = "C:\Program Files (x86)\HTML Help Workshop\hhc.exe" + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = YES + +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/ + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see +# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /, or both). Inside the search box use the to jump into the search results window, the results can be navigated +# using the . Press to select an item or to cancel +# the search. The filter options can be selected when the cursor is inside the +# search box by pressing +. Also here use the +# to select a filter and or to activate or cancel the filter +# option. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using JavaScript. There +# are two flavors of web server based searching depending on the EXTERNAL_SEARCH +# setting. When disabled, doxygen will generate a PHP script for searching and +# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing +# and searching needs to be provided by external tools. See the section +# "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain the +# search results. +# +# Doxygen ships with an example indexer (doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: +# https://xapian.org/). +# +# See the section "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will return the search results when EXTERNAL_SEARCH is enabled. +# +# Doxygen ships with an example indexer (doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: +# https://xapian.org/). See the section "External Indexing and Searching" for +# details. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. +# The default file is: searchdata.xml. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of +# to a relative location where the documentation can be found. The format is: +# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# Configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. +# The default value is: YES. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: latex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. +# +# Note that when not enabling USE_PDFLATEX the default is latex when enabling +# USE_PDFLATEX the default is pdflatex and when in the later case latex is +# chosen this is overwritten by pdflatex. For specific output languages the +# default can have been set differently, this depends on the implementation of +# the output language. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_CMD_NAME = + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate +# index for LaTeX. +# Note: This tag is used in the Makefile / make.bat. +# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file +# (.tex). +# The default file is: makeindex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +MAKEINDEX_CMD_NAME = makeindex + +# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to +# generate index for LaTeX. In case there is no backslash (\) as first character +# it will be automatically added in the LaTeX code. +# Note: This tag is used in the generated output file (.tex). +# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat. +# The default value is: makeindex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_MAKEINDEX_CMD = \makeindex + +# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX +# documents. This may be useful for small projects and may help to save some +# trees in general. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used by the +# printer. +# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x +# 14 inches) and executive (7.25 x 10.5 inches). +# The default value is: a4. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PAPER_TYPE = a4 + +# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names +# that should be included in the LaTeX output. The package can be specified just +# by its name or with the correct syntax as to be used with the LaTeX +# \usepackage command. To get the times font for instance you can specify : +# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times} +# To use the option intlimits with the amsmath package you can specify: +# EXTRA_PACKAGES=[intlimits]{amsmath} +# If left blank no extra packages will be included. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for +# the generated LaTeX document. The header should contain everything until the +# first chapter. If it is left blank doxygen will generate a standard header. It +# is highly recommended to start with a default header using +# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty +# and then modify the file new_header.tex. See also section "Doxygen usage" for +# information on how to generate the default header that doxygen normally uses. +# +# Note: Only use a user-defined header if you know what you are doing! +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. The following +# commands have a special meaning inside the header (and footer): For a +# description of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for +# the generated LaTeX document. The footer should contain everything after the +# last chapter. If it is left blank doxygen will generate a standard footer. See +# LATEX_HEADER for more information on how to generate a default footer and what +# special commands can be used inside the footer. See also section "Doxygen +# usage" for information on how to generate the default footer that doxygen +# normally uses. Note: Only use a user-defined footer if you know what you are +# doing! +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_FOOTER = + +# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# LaTeX style sheets that are included after the standard style sheets created +# by doxygen. Using this option one can overrule certain style aspects. Doxygen +# will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EXTRA_STYLESHEET = + +# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the LATEX_OUTPUT output +# directory. Note that the files will be copied as-is; there are no commands or +# markers available. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EXTRA_FILES = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is +# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will +# contain links (just like the HTML output) instead of page references. This +# makes the output suitable for online browsing using a PDF viewer. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as +# specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX +# files. Set this option to YES, to get a higher quality PDF documentation. +# +# See also section LATEX_CMD_NAME for selecting the engine. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode +# command to the generated LaTeX files. This will instruct LaTeX to keep running +# if errors occur, instead of asking the user for help. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BATCHMODE = NO + +# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the +# index chapters (such as File Index, Compound Index, etc.) in the output. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_HIDE_INDICES = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. See +# https://en.wikipedia.org/wiki/BibTeX and \cite for more info. +# The default value is: plain. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BIB_STYLE = plain + +# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute) +# path from which the emoji images will be read. If a relative path is entered, +# it will be relative to the LATEX_OUTPUT directory. If left blank the +# LATEX_OUTPUT directory will be used. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EMOJI_DIRECTORY = + +#--------------------------------------------------------------------------- +# Configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The +# RTF output is optimized for Word 97 and may not look too pretty with other RTF +# readers/editors. +# The default value is: NO. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: rtf. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF +# documents. This may be useful for small projects and may help to save some +# trees in general. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will +# contain hyperlink fields. The RTF file will contain links (just like the HTML +# output) instead of page references. This makes the output suitable for online +# browsing using Word or some other Word compatible readers that support those +# fields. +# +# Note: WordPad (write) and others do not support links. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# configuration file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. +# +# See also section "Doxygen usage" for information on how to generate the +# default style sheet that doxygen normally uses. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an RTF document. Syntax is +# similar to doxygen's configuration file. A template extensions file can be +# generated using doxygen -e rtf extensionFile. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for +# classes and files. +# The default value is: NO. + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. A directory man3 will be created inside the directory specified by +# MAN_OUTPUT. +# The default directory is: man. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to the generated +# man pages. In case the manual section does not start with a number, the number +# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is +# optional. +# The default value is: .3. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_EXTENSION = .3 + +# The MAN_SUBDIR tag determines the name of the directory created within +# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by +# MAN_EXTENSION with the initial . removed. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_SUBDIR = + +# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it +# will generate one additional man file for each entity documented in the real +# man page(s). These additional files only source the real man page, but without +# them the man command would be unable to find the correct page. +# The default value is: NO. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that +# captures the structure of the code including all documentation. +# The default value is: NO. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: xml. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_OUTPUT = xml + +# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program +# listings (including syntax highlighting and cross-referencing information) to +# the XML output. Note that enabling this will significantly increase the size +# of the XML output. +# The default value is: YES. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_PROGRAMLISTING = YES + +# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include +# namespace members in file scope as well, matching the HTML output. +# The default value is: NO. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_NS_MEMB_FILE_SCOPE = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- + +# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files +# that can be used to generate PDF. +# The default value is: NO. + +GENERATE_DOCBOOK = NO + +# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in +# front of it. +# The default directory is: docbook. +# This tag requires that the tag GENERATE_DOCBOOK is set to YES. + +DOCBOOK_OUTPUT = docbook + +#--------------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an +# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures +# the structure of the code including all documentation. Note that this feature +# is still experimental and incomplete at the moment. +# The default value is: NO. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module +# file that captures the structure of the code including all documentation. +# +# Note that this feature is still experimental and incomplete at the moment. +# The default value is: NO. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary +# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI +# output from the Perl module output. +# The default value is: NO. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely +# formatted so it can be parsed by a human reader. This is useful if you want to +# understand what is going on. On the other hand, if this tag is set to NO, the +# size of the Perl module output will be much smaller and Perl will parse it +# just the same. +# The default value is: YES. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file are +# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful +# so different doxyrules.make files included by the same Makefile don't +# overwrite each other's variables. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all +# C-preprocessor directives found in the sources and include files. +# The default value is: YES. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names +# in the source code. If set to NO, only conditional compilation will be +# performed. Macro expansion can be done in a controlled way by setting +# EXPAND_ONLY_PREDEF to YES. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then +# the macro expansion is limited to the macros specified with the PREDEFINED and +# EXPAND_AS_DEFINED tags. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES, the include files in the +# INCLUDE_PATH will be searched if a #include is found. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by the +# preprocessor. Note that the INCLUDE_PATH is not recursive, so the setting of +# RECURSIVE has no effect here. +# This tag requires that the tag SEARCH_INCLUDES is set to YES. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will be +# used. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that are +# defined before the preprocessor is started (similar to the -D option of e.g. +# gcc). The argument of the tag is a list of macros of the form: name or +# name=definition (no spaces). If the definition and the "=" are omitted, "=1" +# is assumed. To prevent a macro definition from being undefined via #undef or +# recursively expanded use the := operator instead of the = operator. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +PREDEFINED = _WIN32 \ + JPH_PROFILE_ENABLED \ + JPH_DEBUG_RENDERER \ + JPH_OBJECT_STREAM \ + JPH_PLATFORM_DOXYGEN + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this +# tag can be used to specify a list of macro names that should be expanded. The +# macro definition that is found in the sources will be used. Use the PREDEFINED +# tag if you want to use a different macro definition that overrules the +# definition found in the source code. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will +# remove all references to function-like macros that are alone on a line, have +# an all uppercase name, and do not end with a semicolon. Such function macros +# are typically used for boiler-plate code, and will confuse the parser if not +# removed. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tag files. For each tag +# file the location of the external documentation should be added. The format of +# a tag file without this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where loc1 and loc2 can be relative or absolute paths or URLs. See the +# section "Linking to external documentation" for more information about the use +# of tag files. +# Note: Each tag file must have a unique name (where the name does NOT include +# the path). If a tag file is not located in the directory in which doxygen is +# run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create a +# tag file that is based on the input files it reads. See section "Linking to +# external documentation" for more information about the usage of tag files. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES, all external class will be listed in +# the class index. If set to NO, only the inherited external classes will be +# listed. +# The default value is: NO. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will be +# listed. +# The default value is: YES. + +EXTERNAL_GROUPS = YES + +# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in +# the related pages index. If set to NO, only the current project's pages will +# be listed. +# The default value is: YES. + +EXTERNAL_PAGES = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# You can include diagrams made with dia in doxygen documentation. Doxygen will +# then run dia to produce the diagram and insert it in the documentation. The +# DIA_PATH tag allows you to specify the directory where the dia binary resides. +# If left empty dia is assumed to be found in the default search path. + +DIA_PATH = + +# If set to YES the inheritance and collaboration graphs will hide inheritance +# and usage relations if the target is undocumented or is not a class. +# The default value is: YES. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz (see: +# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent +# Bell Labs. The other options in this section have no effect if this option is +# set to NO +# The default value is: NO. + +HAVE_DOT = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed +# to run in parallel. When set to 0 doxygen will base this on the number of +# processors available in the system. You can set it explicitly to a value +# larger than 0 to get control over the balance between CPU load and processing +# speed. +# Minimum value: 0, maximum value: 32, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_NUM_THREADS = 0 + +# DOT_COMMON_ATTR is common attributes for nodes, edges and labels of +# subgraphs. When you want a differently looking font in the dot files that +# doxygen generates you can specify fontname, fontcolor and fontsize attributes. +# For details please see Node, +# Edge and Graph Attributes specification You need to make sure dot is able +# to find the font, which can be done by putting it in a standard location or by +# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. Default graphviz fontsize is 14. +# The default value is: fontname=Helvetica,fontsize=10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10" + +# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can +# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. Complete documentation about +# arrows shapes. +# The default value is: labelfontname=Helvetica,labelfontsize=10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10" + +# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes +# around nodes set 'shape=plain' or 'shape=plaintext' Shapes specification +# The default value is: shape=box,height=0.2,width=0.4. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" + +# You can set the path where dot can find font specified with fontname in +# DOT_COMMON_ATTR and others dot attributes. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTPATH = + +# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a +# graph for each documented class showing the direct and indirect inheritance +# relations. In case HAVE_DOT is set as well dot will be used to draw the graph, +# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set +# to TEXT the direct and indirect inheritance relations will be shown as texts / +# links. +# Possible values are: NO, YES, TEXT and GRAPH. +# The default value is: YES. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a +# graph for each documented class showing the direct and indirect implementation +# dependencies (inheritance, containment, and class references variables) of the +# class with other documented classes. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for +# groups, showing the direct groups dependencies. See also the chapter Grouping +# in the manual. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside the +# class node. If there are many fields or methods and many nodes the graph may +# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the +# number of items for each type to make the size more manageable. Set this to 0 +# for no limit. Note that the threshold may be exceeded by 50% before the limit +# is enforced. So when you set the threshold to 10, up to 15 fields may appear, +# but if the number exceeds 15, the total amount of fields shown is limited to +# 10. +# Minimum value: 0, maximum value: 100, default value: 10. +# This tag requires that the tag UML_LOOK is set to YES. + +UML_LIMIT_NUM_FIELDS = 10 + +# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and +# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS +# tag is set to YES, doxygen will add type and arguments for attributes and +# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen +# will not generate fields with class member information in the UML graphs. The +# class diagrams will look similar to the default class diagrams but using UML +# notation for the relationships. +# Possible values are: NO, YES and NONE. +# The default value is: NO. +# This tag requires that the tag UML_LOOK is set to YES. + +DOT_UML_DETAILS = NO + +# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters +# to display on a single line. If the actual line length exceeds this threshold +# significantly it will wrapped across multiple lines. Some heuristics are apply +# to avoid ugly line breaks. +# Minimum value: 0, maximum value: 1000, default value: 17. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_WRAP_THRESHOLD = 17 + +# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and +# collaboration graphs will show the relations between templates and their +# instances. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +TEMPLATE_RELATIONS = NO + +# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to +# YES then doxygen will generate a graph for each documented file showing the +# direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDE_GRAPH = YES + +# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are +# set to YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH tag is set to YES then doxygen will generate a call +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. Disabling a call graph can be +# accomplished by means of the command \hidecallgraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. Disabling a caller graph can be +# accomplished by means of the command \hidecallergraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# hierarchy of all classes instead of a textual one. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the +# dependencies a directory has on other directories in a graphical way. The +# dependency relations are determined by the #include relations between the +# files in the directories. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DIRECTORY_GRAPH = YES + +# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels +# of child directories generated in directory dependency graphs by dot. +# Minimum value: 1, maximum value: 25, default value: 1. +# This tag requires that the tag DIRECTORY_GRAPH is set to YES. + +DIR_GRAPH_MAX_DEPTH = 1 + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. For an explanation of the image formats see the section +# output formats in the documentation of the dot tool (Graphviz (see: +# http://www.graphviz.org/)). +# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order +# to make the SVG files visible in IE 9+ (other browsers do not have this +# requirement). +# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, +# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and +# png:gdiplus:gdiplus. +# The default value is: png. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# +# Note that this requires a modern browser other than Internet Explorer. Tested +# and working are Firefox, Chrome, Safari, and Opera. +# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make +# the SVG files visible. Older versions of IE do not have SVG support. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +INTERACTIVE_SVG = NO + +# The DOT_PATH tag can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the \dotfile +# command). +# This tag requires that the tag HAVE_DOT is set to YES. + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the \mscfile +# command). + +MSCFILE_DIRS = + +# The DIAFILE_DIRS tag can be used to specify one or more directories that +# contain dia files that are included in the documentation (see the \diafile +# command). + +DIAFILE_DIRS = + +# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the +# path where java can find the plantuml.jar file or to the filename of jar file +# to be used. If left blank, it is assumed PlantUML is not used or called during +# a preprocessing step. Doxygen will generate a warning when it encounters a +# \startuml command in this case and will not generate output for the diagram. + +PLANTUML_JAR_PATH = + +# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a +# configuration file for plantuml. + +PLANTUML_CFG_FILE = + +# When using plantuml, the specified paths are searched for files specified by +# the !include statement in a plantuml block. + +PLANTUML_INCLUDE_PATH = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes +# that will be shown in the graph. If the number of nodes in a graph becomes +# larger than this value, doxygen will truncate the graph, which is visualized +# by representing a node as a red box. Note that doxygen if the number of direct +# children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that +# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. +# Minimum value: 0, maximum value: 10000, default value: 50. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs +# generated by dot. A depth value of 3 means that only nodes reachable from the +# root by following a path via at most 3 edges will be shown. Nodes that lay +# further from the root node will be omitted. Note that setting this option to 1 +# or 2 may greatly reduce the computation time needed for large code bases. Also +# note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. +# Minimum value: 0, maximum value: 1000, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) support +# this, this feature is disabled by default. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# explaining the meaning of the various boxes and arrows in the dot generated +# graphs. +# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal +# graphical representation for inheritance and collaboration diagrams is used. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate +# files that are used to generate the various graphs. +# +# Note: This setting is not only used for dot files but also for msc temporary +# files. +# The default value is: YES. + +DOT_CLEANUP = YES diff --git a/Engine/lib/JoltPhysics/HelloWorld/HelloWorld.cmake b/Engine/lib/JoltPhysics/HelloWorld/HelloWorld.cmake new file mode 100644 index 000000000..0580dbbe2 --- /dev/null +++ b/Engine/lib/JoltPhysics/HelloWorld/HelloWorld.cmake @@ -0,0 +1,11 @@ +# Root +set(HELLO_WORLD_ROOT ${PHYSICS_REPO_ROOT}/HelloWorld) + +# Source files +set(HELLO_WORLD_SRC_FILES + ${HELLO_WORLD_ROOT}/HelloWorld.cpp + ${HELLO_WORLD_ROOT}/HelloWorld.cmake +) + +# Group source files +source_group(TREE ${HELLO_WORLD_ROOT} FILES ${HELLO_WORLD_SRC_FILES}) diff --git a/Engine/lib/JoltPhysics/HelloWorld/HelloWorld.cpp b/Engine/lib/JoltPhysics/HelloWorld/HelloWorld.cpp new file mode 100644 index 000000000..5836e6562 --- /dev/null +++ b/Engine/lib/JoltPhysics/HelloWorld/HelloWorld.cpp @@ -0,0 +1,369 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2025 Jorrit Rouwe +// SPDX-License-Identifier: CC0-1.0 +// This file is in the public domain. It serves as an example to start building your own application using Jolt Physics. Feel free to copy paste without attribution! + +// The Jolt headers don't include Jolt.h. Always include Jolt.h before including any other Jolt header. +// You can use Jolt.h in your precompiled header to speed up compilation. +#include + +// Jolt includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// STL includes +#include +#include +#include + +// Disable common warnings triggered by Jolt, you can use JPH_SUPPRESS_WARNING_PUSH / JPH_SUPPRESS_WARNING_POP to store and restore the warning state +JPH_SUPPRESS_WARNINGS + +// All Jolt symbols are in the JPH namespace +using namespace JPH; + +// If you want your code to compile using single or double precision write 0.0_r to get a Real value that compiles to double or float depending if JPH_DOUBLE_PRECISION is set or not. +using namespace JPH::literals; + +// We're also using STL classes in this example +using namespace std; + +// Callback for traces, connect this to your own trace function if you have one +static void TraceImpl(const char *inFMT, ...) +{ + // Format the message + va_list list; + va_start(list, inFMT); + char buffer[1024]; + vsnprintf(buffer, sizeof(buffer), inFMT, list); + va_end(list); + + // Print to the TTY + cout << buffer << endl; +} + +#ifdef JPH_ENABLE_ASSERTS + +// Callback for asserts, connect this to your own assert handler if you have one +static bool AssertFailedImpl(const char *inExpression, const char *inMessage, const char *inFile, uint inLine) +{ + // Print to the TTY + cout << inFile << ":" << inLine << ": (" << inExpression << ") " << (inMessage != nullptr? inMessage : "") << endl; + + // Breakpoint + return true; +}; + +#endif // JPH_ENABLE_ASSERTS + +// Layer that objects can be in, determines which other objects it can collide with +// Typically you at least want to have 1 layer for moving bodies and 1 layer for static bodies, but you can have more +// layers if you want. E.g. you could have a layer for high detail collision (which is not used by the physics simulation +// but only if you do collision testing). +namespace Layers +{ + static constexpr ObjectLayer NON_MOVING = 0; + static constexpr ObjectLayer MOVING = 1; + static constexpr ObjectLayer NUM_LAYERS = 2; +}; + +/// Class that determines if two object layers can collide +class ObjectLayerPairFilterImpl : public ObjectLayerPairFilter +{ +public: + virtual bool ShouldCollide(ObjectLayer inObject1, ObjectLayer inObject2) const override + { + switch (inObject1) + { + case Layers::NON_MOVING: + return inObject2 == Layers::MOVING; // Non moving only collides with moving + case Layers::MOVING: + return true; // Moving collides with everything + default: + JPH_ASSERT(false); + return false; + } + } +}; + +// Each broadphase layer results in a separate bounding volume tree in the broad phase. You at least want to have +// a layer for non-moving and moving objects to avoid having to update a tree full of static objects every frame. +// You can have a 1-on-1 mapping between object layers and broadphase layers (like in this case) but if you have +// many object layers you'll be creating many broad phase trees, which is not efficient. If you want to fine tune +// your broadphase layers define JPH_TRACK_BROADPHASE_STATS and look at the stats reported on the TTY. +namespace BroadPhaseLayers +{ + static constexpr BroadPhaseLayer NON_MOVING(0); + static constexpr BroadPhaseLayer MOVING(1); + static constexpr uint NUM_LAYERS(2); +}; + +// BroadPhaseLayerInterface implementation +// This defines a mapping between object and broadphase layers. +class BPLayerInterfaceImpl final : public BroadPhaseLayerInterface +{ +public: + BPLayerInterfaceImpl() + { + // Create a mapping table from object to broad phase layer + mObjectToBroadPhase[Layers::NON_MOVING] = BroadPhaseLayers::NON_MOVING; + mObjectToBroadPhase[Layers::MOVING] = BroadPhaseLayers::MOVING; + } + + virtual uint GetNumBroadPhaseLayers() const override + { + return BroadPhaseLayers::NUM_LAYERS; + } + + virtual BroadPhaseLayer GetBroadPhaseLayer(ObjectLayer inLayer) const override + { + JPH_ASSERT(inLayer < Layers::NUM_LAYERS); + return mObjectToBroadPhase[inLayer]; + } + +#if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED) + virtual const char * GetBroadPhaseLayerName(BroadPhaseLayer inLayer) const override + { + switch ((BroadPhaseLayer::Type)inLayer) + { + case (BroadPhaseLayer::Type)BroadPhaseLayers::NON_MOVING: return "NON_MOVING"; + case (BroadPhaseLayer::Type)BroadPhaseLayers::MOVING: return "MOVING"; + default: JPH_ASSERT(false); return "INVALID"; + } + } +#endif // JPH_EXTERNAL_PROFILE || JPH_PROFILE_ENABLED + +private: + BroadPhaseLayer mObjectToBroadPhase[Layers::NUM_LAYERS]; +}; + +/// Class that determines if an object layer can collide with a broadphase layer +class ObjectVsBroadPhaseLayerFilterImpl : public ObjectVsBroadPhaseLayerFilter +{ +public: + virtual bool ShouldCollide(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const override + { + switch (inLayer1) + { + case Layers::NON_MOVING: + return inLayer2 == BroadPhaseLayers::MOVING; + case Layers::MOVING: + return true; + default: + JPH_ASSERT(false); + return false; + } + } +}; + +// An example contact listener +class MyContactListener : public ContactListener +{ +public: + // See: ContactListener + virtual ValidateResult OnContactValidate(const Body &inBody1, const Body &inBody2, RVec3Arg inBaseOffset, const CollideShapeResult &inCollisionResult) override + { + cout << "Contact validate callback" << endl; + + // Allows you to ignore a contact before it is created (using layers to not make objects collide is cheaper!) + return ValidateResult::AcceptAllContactsForThisBodyPair; + } + + virtual void OnContactAdded(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &ioSettings) override + { + cout << "A contact was added" << endl; + } + + virtual void OnContactPersisted(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &ioSettings) override + { + cout << "A contact was persisted" << endl; + } + + virtual void OnContactRemoved(const SubShapeIDPair &inSubShapePair) override + { + cout << "A contact was removed" << endl; + } +}; + +// An example activation listener +class MyBodyActivationListener : public BodyActivationListener +{ +public: + virtual void OnBodyActivated(const BodyID &inBodyID, uint64 inBodyUserData) override + { + cout << "A body got activated" << endl; + } + + virtual void OnBodyDeactivated(const BodyID &inBodyID, uint64 inBodyUserData) override + { + cout << "A body went to sleep" << endl; + } +}; + +// Program entry point +int main(int argc, char** argv) +{ + // Register allocation hook. In this example we'll just let Jolt use malloc / free but you can override these if you want (see Memory.h). + // This needs to be done before any other Jolt function is called. + RegisterDefaultAllocator(); + + // Install trace and assert callbacks + Trace = TraceImpl; + JPH_IF_ENABLE_ASSERTS(AssertFailed = AssertFailedImpl;) + + // Create a factory, this class is responsible for creating instances of classes based on their name or hash and is mainly used for deserialization of saved data. + // It is not directly used in this example but still required. + Factory::sInstance = new Factory(); + + // Register all physics types with the factory and install their collision handlers with the CollisionDispatch class. + // If you have your own custom shape types you probably need to register their handlers with the CollisionDispatch before calling this function. + // If you implement your own default material (PhysicsMaterial::sDefault) make sure to initialize it before this function or else this function will create one for you. + RegisterTypes(); + + // We need a temp allocator for temporary allocations during the physics update. We're + // pre-allocating 10 MB to avoid having to do allocations during the physics update. + // B.t.w. 10 MB is way too much for this example but it is a typical value you can use. + // If you don't want to pre-allocate you can also use TempAllocatorMalloc to fall back to + // malloc / free. + TempAllocatorImpl temp_allocator(10 * 1024 * 1024); + + // We need a job system that will execute physics jobs on multiple threads. Typically + // you would implement the JobSystem interface yourself and let Jolt Physics run on top + // of your own job scheduler. JobSystemThreadPool is an example implementation. + JobSystemThreadPool job_system(cMaxPhysicsJobs, cMaxPhysicsBarriers, thread::hardware_concurrency() - 1); + + // This is the max amount of rigid bodies that you can add to the physics system. If you try to add more you'll get an error. + // Note: This value is low because this is a simple test. For a real project use something in the order of 65536. + const uint cMaxBodies = 1024; + + // This determines how many mutexes to allocate to protect rigid bodies from concurrent access. Set it to 0 for the default settings. + const uint cNumBodyMutexes = 0; + + // This is the max amount of body pairs that can be queued at any time (the broad phase will detect overlapping + // body pairs based on their bounding boxes and will insert them into a queue for the narrowphase). If you make this buffer + // too small the queue will fill up and the broad phase jobs will start to do narrow phase work. This is slightly less efficient. + // Note: This value is low because this is a simple test. For a real project use something in the order of 65536. + const uint cMaxBodyPairs = 1024; + + // This is the maximum size of the contact constraint buffer. If more contacts (collisions between bodies) are detected than this + // number then these contacts will be ignored and bodies will start interpenetrating / fall through the world. + // Note: This value is low because this is a simple test. For a real project use something in the order of 10240. + const uint cMaxContactConstraints = 1024; + + // Create mapping table from object layer to broadphase layer + // Note: As this is an interface, PhysicsSystem will take a reference to this so this instance needs to stay alive! + // Also have a look at BroadPhaseLayerInterfaceTable or BroadPhaseLayerInterfaceMask for a simpler interface. + BPLayerInterfaceImpl broad_phase_layer_interface; + + // Create class that filters object vs broadphase layers + // Note: As this is an interface, PhysicsSystem will take a reference to this so this instance needs to stay alive! + // Also have a look at ObjectVsBroadPhaseLayerFilterTable or ObjectVsBroadPhaseLayerFilterMask for a simpler interface. + ObjectVsBroadPhaseLayerFilterImpl object_vs_broadphase_layer_filter; + + // Create class that filters object vs object layers + // Note: As this is an interface, PhysicsSystem will take a reference to this so this instance needs to stay alive! + // Also have a look at ObjectLayerPairFilterTable or ObjectLayerPairFilterMask for a simpler interface. + ObjectLayerPairFilterImpl object_vs_object_layer_filter; + + // Now we can create the actual physics system. + PhysicsSystem physics_system; + physics_system.Init(cMaxBodies, cNumBodyMutexes, cMaxBodyPairs, cMaxContactConstraints, broad_phase_layer_interface, object_vs_broadphase_layer_filter, object_vs_object_layer_filter); + + // A body activation listener gets notified when bodies activate and go to sleep + // Note that this is called from a job so whatever you do here needs to be thread safe. + // Registering one is entirely optional. + MyBodyActivationListener body_activation_listener; + physics_system.SetBodyActivationListener(&body_activation_listener); + + // A contact listener gets notified when bodies (are about to) collide, and when they separate again. + // Note that this is called from a job so whatever you do here needs to be thread safe. + // Registering one is entirely optional. + MyContactListener contact_listener; + physics_system.SetContactListener(&contact_listener); + + // The main way to interact with the bodies in the physics system is through the body interface. There is a locking and a non-locking + // variant of this. We're going to use the locking version (even though we're not planning to access bodies from multiple threads) + BodyInterface &body_interface = physics_system.GetBodyInterface(); + + // Next we can create a rigid body to serve as the floor, we make a large box + // Create the settings for the collision volume (the shape). + // Note that for simple shapes (like boxes) you can also directly construct a BoxShape. + BoxShapeSettings floor_shape_settings(Vec3(100.0f, 1.0f, 100.0f)); + floor_shape_settings.SetEmbedded(); // A ref counted object on the stack (base class RefTarget) should be marked as such to prevent it from being freed when its reference count goes to 0. + + // Create the shape + ShapeSettings::ShapeResult floor_shape_result = floor_shape_settings.Create(); + ShapeRefC floor_shape = floor_shape_result.Get(); // We don't expect an error here, but you can check floor_shape_result for HasError() / GetError() + + // Create the settings for the body itself. Note that here you can also set other properties like the restitution / friction. + BodyCreationSettings floor_settings(floor_shape, RVec3(0.0_r, -1.0_r, 0.0_r), Quat::sIdentity(), EMotionType::Static, Layers::NON_MOVING); + + // Create the actual rigid body + Body *floor = body_interface.CreateBody(floor_settings); // Note that if we run out of bodies this can return nullptr + + // Add it to the world + body_interface.AddBody(floor->GetID(), EActivation::DontActivate); + + // Now create a dynamic body to bounce on the floor + // Note that this uses the shorthand version of creating and adding a body to the world + BodyCreationSettings sphere_settings(new SphereShape(0.5f), RVec3(0.0_r, 2.0_r, 0.0_r), Quat::sIdentity(), EMotionType::Dynamic, Layers::MOVING); + BodyID sphere_id = body_interface.CreateAndAddBody(sphere_settings, EActivation::Activate); + + // Now you can interact with the dynamic body, in this case we're going to give it a velocity. + // (note that if we had used CreateBody then we could have set the velocity straight on the body before adding it to the physics system) + body_interface.SetLinearVelocity(sphere_id, Vec3(0.0f, -5.0f, 0.0f)); + + // We simulate the physics world in discrete time steps. 60 Hz is a good rate to update the physics system. + const float cDeltaTime = 1.0f / 60.0f; + + // Optional step: Before starting the physics simulation you can optimize the broad phase. This improves collision detection performance (it's pointless here because we only have 2 bodies). + // You should definitely not call this every frame or when e.g. streaming in a new level section as it is an expensive operation. + // Instead insert all new objects in batches instead of 1 at a time to keep the broad phase efficient. + physics_system.OptimizeBroadPhase(); + + // Now we're ready to simulate the body, keep simulating until it goes to sleep + uint step = 0; + while (body_interface.IsActive(sphere_id)) + { + // Next step + ++step; + + // Output current position and velocity of the sphere + RVec3 position = body_interface.GetCenterOfMassPosition(sphere_id); + Vec3 velocity = body_interface.GetLinearVelocity(sphere_id); + cout << "Step " << step << ": Position = (" << position.GetX() << ", " << position.GetY() << ", " << position.GetZ() << "), Velocity = (" << velocity.GetX() << ", " << velocity.GetY() << ", " << velocity.GetZ() << ")" << endl; + + // If you take larger steps than 1 / 60th of a second you need to do multiple collision steps in order to keep the simulation stable. Do 1 collision step per 1 / 60th of a second (round up). + const int cCollisionSteps = 1; + + // Step the world + physics_system.Update(cDeltaTime, cCollisionSteps, &temp_allocator, &job_system); + } + + // Remove the sphere from the physics system. Note that the sphere itself keeps all of its state and can be re-added at any time. + body_interface.RemoveBody(sphere_id); + + // Destroy the sphere. After this the sphere ID is no longer valid. + body_interface.DestroyBody(sphere_id); + + // Remove and destroy the floor + body_interface.RemoveBody(floor->GetID()); + body_interface.DestroyBody(floor->GetID()); + + // Unregisters all types with the factory and cleans up the default material + UnregisterTypes(); + + // Destroy the factory + delete Factory::sInstance; + Factory::sInstance = nullptr; + + return 0; +} diff --git a/Engine/lib/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.cpp b/Engine/lib/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.cpp new file mode 100644 index 000000000..4024132a6 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.cpp @@ -0,0 +1,242 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#include + +#include + +JPH_NAMESPACE_BEGIN + +uint AABBTreeBuilder::Node::GetMinDepth(const Array &inNodes) const +{ + if (HasChildren()) + { + uint left = inNodes[mChild[0]].GetMinDepth(inNodes); + uint right = inNodes[mChild[1]].GetMinDepth(inNodes); + return min(left, right) + 1; + } + else + return 1; +} + +uint AABBTreeBuilder::Node::GetMaxDepth(const Array &inNodes) const +{ + if (HasChildren()) + { + uint left = inNodes[mChild[0]].GetMaxDepth(inNodes); + uint right = inNodes[mChild[1]].GetMaxDepth(inNodes); + return max(left, right) + 1; + } + else + return 1; +} + +uint AABBTreeBuilder::Node::GetNodeCount(const Array &inNodes) const +{ + if (HasChildren()) + return inNodes[mChild[0]].GetNodeCount(inNodes) + inNodes[mChild[1]].GetNodeCount(inNodes) + 1; + else + return 1; +} + +uint AABBTreeBuilder::Node::GetLeafNodeCount(const Array &inNodes) const +{ + if (HasChildren()) + return inNodes[mChild[0]].GetLeafNodeCount(inNodes) + inNodes[mChild[1]].GetLeafNodeCount(inNodes); + else + return 1; +} + +uint AABBTreeBuilder::Node::GetTriangleCountInTree(const Array &inNodes) const +{ + if (HasChildren()) + return inNodes[mChild[0]].GetTriangleCountInTree(inNodes) + inNodes[mChild[1]].GetTriangleCountInTree(inNodes); + else + return GetTriangleCount(); +} + +void AABBTreeBuilder::Node::GetTriangleCountPerNode(const Array &inNodes, float &outAverage, uint &outMin, uint &outMax) const +{ + outMin = INT_MAX; + outMax = 0; + outAverage = 0; + uint avg_divisor = 0; + GetTriangleCountPerNodeInternal(inNodes, outAverage, avg_divisor, outMin, outMax); + if (avg_divisor > 0) + outAverage /= avg_divisor; +} + +float AABBTreeBuilder::Node::CalculateSAHCost(const Array &inNodes, float inCostTraversal, float inCostLeaf) const +{ + float surface_area = mBounds.GetSurfaceArea(); + return surface_area > 0.0f? CalculateSAHCostInternal(inNodes, inCostTraversal / surface_area, inCostLeaf / surface_area) : 0.0f; +} + +void AABBTreeBuilder::Node::GetNChildren(const Array &inNodes, uint inN, Array &outChildren) const +{ + JPH_ASSERT(outChildren.empty()); + + // Check if there is anything to expand + if (!HasChildren()) + return; + + // Start with the children of this node + outChildren.push_back(&inNodes[mChild[0]]); + outChildren.push_back(&inNodes[mChild[1]]); + + size_t next = 0; + bool all_triangles = true; + while (outChildren.size() < inN) + { + // If we have looped over all nodes, start over with the first node again + if (next >= outChildren.size()) + { + // If there only triangle nodes left, we have to terminate + if (all_triangles) + return; + next = 0; + all_triangles = true; + } + + // Try to expand this node into its two children + const Node *to_expand = outChildren[next]; + if (to_expand->HasChildren()) + { + outChildren.erase(outChildren.begin() + next); + outChildren.push_back(&inNodes[to_expand->mChild[0]]); + outChildren.push_back(&inNodes[to_expand->mChild[1]]); + all_triangles = false; + } + else + { + ++next; + } + } +} + +float AABBTreeBuilder::Node::CalculateSAHCostInternal(const Array &inNodes, float inCostTraversalDivSurfaceArea, float inCostLeafDivSurfaceArea) const +{ + if (HasChildren()) + return inCostTraversalDivSurfaceArea * mBounds.GetSurfaceArea() + + inNodes[mChild[0]].CalculateSAHCostInternal(inNodes, inCostTraversalDivSurfaceArea, inCostLeafDivSurfaceArea) + + inNodes[mChild[1]].CalculateSAHCostInternal(inNodes, inCostTraversalDivSurfaceArea, inCostLeafDivSurfaceArea); + else + return inCostLeafDivSurfaceArea * mBounds.GetSurfaceArea() * GetTriangleCount(); +} + +void AABBTreeBuilder::Node::GetTriangleCountPerNodeInternal(const Array &inNodes, float &outAverage, uint &outAverageDivisor, uint &outMin, uint &outMax) const +{ + if (HasChildren()) + { + inNodes[mChild[0]].GetTriangleCountPerNodeInternal(inNodes, outAverage, outAverageDivisor, outMin, outMax); + inNodes[mChild[1]].GetTriangleCountPerNodeInternal(inNodes, outAverage, outAverageDivisor, outMin, outMax); + } + else + { + outAverage += GetTriangleCount(); + outAverageDivisor++; + outMin = min(outMin, GetTriangleCount()); + outMax = max(outMax, GetTriangleCount()); + } +} + +AABBTreeBuilder::AABBTreeBuilder(TriangleSplitter &inSplitter, uint inMaxTrianglesPerLeaf) : + mTriangleSplitter(inSplitter), + mMaxTrianglesPerLeaf(inMaxTrianglesPerLeaf) +{ +} + +AABBTreeBuilder::Node *AABBTreeBuilder::Build(AABBTreeBuilderStats &outStats) +{ + TriangleSplitter::Range initial = mTriangleSplitter.GetInitialRange(); + + // Worst case for number of nodes: 1 leaf node per triangle. At each level above, the number of nodes is half that of the level below. + // This means that at most we'll be allocating 2x the number of triangles in nodes. + mNodes.reserve(2 * initial.Count()); + mTriangles.reserve(initial.Count()); + + // Build the tree + Node &root = mNodes[BuildInternal(initial)]; + + // Collect stats + float avg_triangles_per_leaf; + uint min_triangles_per_leaf, max_triangles_per_leaf; + root.GetTriangleCountPerNode(mNodes, avg_triangles_per_leaf, min_triangles_per_leaf, max_triangles_per_leaf); + + mTriangleSplitter.GetStats(outStats.mSplitterStats); + + outStats.mSAHCost = root.CalculateSAHCost(mNodes, 1.0f, 1.0f); + outStats.mMinDepth = root.GetMinDepth(mNodes); + outStats.mMaxDepth = root.GetMaxDepth(mNodes); + outStats.mNodeCount = root.GetNodeCount(mNodes); + outStats.mLeafNodeCount = root.GetLeafNodeCount(mNodes); + outStats.mMaxTrianglesPerLeaf = mMaxTrianglesPerLeaf; + outStats.mTreeMinTrianglesPerLeaf = min_triangles_per_leaf; + outStats.mTreeMaxTrianglesPerLeaf = max_triangles_per_leaf; + outStats.mTreeAvgTrianglesPerLeaf = avg_triangles_per_leaf; + + return &root; +} + +uint AABBTreeBuilder::BuildInternal(const TriangleSplitter::Range &inTriangles) +{ + // Check if there are too many triangles left + if (inTriangles.Count() > mMaxTrianglesPerLeaf) + { + // Split triangles in two batches + TriangleSplitter::Range left, right; + if (!mTriangleSplitter.Split(inTriangles, left, right)) + { + // When the trace below triggers: + // + // This code builds a tree structure to accelerate collision detection. + // At top level it will start with all triangles in a mesh and then divides the triangles into two batches. + // This process repeats until until the batch size is smaller than mMaxTrianglePerLeaf. + // + // It uses a TriangleSplitter to find a good split. When this warning triggers, the splitter was not able + // to create a reasonable split for the triangles. This usually happens when the triangles in a batch are + // intersecting. They could also be overlapping when projected on the 3 coordinate axis. + // + // To solve this issue, you could try to pass your mesh through a mesh cleaning / optimization algorithm. + // You could also inspect the triangles that cause this issue and see if that part of the mesh can be fixed manually. + // + // When you do not fix this warning, the tree will be less efficient for collision detection, but it will still work. + JPH_IF_DEBUG(Trace("AABBTreeBuilder: Doing random split for %d triangles (max per node: %u)!", (int)inTriangles.Count(), mMaxTrianglesPerLeaf);) + int half = inTriangles.Count() / 2; + JPH_ASSERT(half > 0); + left = TriangleSplitter::Range(inTriangles.mBegin, inTriangles.mBegin + half); + right = TriangleSplitter::Range(inTriangles.mBegin + half, inTriangles.mEnd); + } + + // Recursively build + const uint node_index = (uint)mNodes.size(); + mNodes.push_back(Node()); + uint left_index = BuildInternal(left); + uint right_index = BuildInternal(right); + Node &node = mNodes[node_index]; + node.mChild[0] = left_index; + node.mChild[1] = right_index; + node.mBounds = mNodes[node.mChild[0]].mBounds; + node.mBounds.Encapsulate(mNodes[node.mChild[1]].mBounds); + return node_index; + } + + // Create leaf node + const uint node_index = (uint)mNodes.size(); + mNodes.push_back(Node()); + Node &node = mNodes.back(); + node.mTrianglesBegin = (uint)mTriangles.size(); + node.mNumTriangles = inTriangles.mEnd - inTriangles.mBegin; + const VertexList &v = mTriangleSplitter.GetVertices(); + for (uint i = inTriangles.mBegin; i < inTriangles.mEnd; ++i) + { + const IndexedTriangle &t = mTriangleSplitter.GetTriangle(i); + mTriangles.push_back(t); + node.mBounds.Encapsulate(v, t); + } + + return node_index; +} + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.h b/Engine/lib/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.h new file mode 100644 index 000000000..f27207868 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.h @@ -0,0 +1,121 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +#include +#include +#include + +JPH_NAMESPACE_BEGIN + +struct AABBTreeBuilderStats +{ + ///@name Splitter stats + TriangleSplitter::Stats mSplitterStats; ///< Stats returned by the triangle splitter algorithm + + ///@name Tree structure + float mSAHCost = 0.0f; ///< Surface Area Heuristic cost of this tree + int mMinDepth = 0; ///< Minimal depth of tree (number of nodes) + int mMaxDepth = 0; ///< Maximum depth of tree (number of nodes) + int mNodeCount = 0; ///< Number of nodes in the tree + int mLeafNodeCount = 0; ///< Number of leaf nodes (that contain triangles) + + ///@name Configured stats + int mMaxTrianglesPerLeaf = 0; ///< Configured max triangles per leaf + + ///@name Actual stats + int mTreeMinTrianglesPerLeaf = 0; ///< Minimal amount of triangles in a leaf + int mTreeMaxTrianglesPerLeaf = 0; ///< Maximal amount of triangles in a leaf + float mTreeAvgTrianglesPerLeaf = 0.0f; ///< Average amount of triangles in leaf nodes +}; + +/// Helper class to build an AABB tree +class JPH_EXPORT AABBTreeBuilder +{ +public: + /// A node in the tree, contains the AABox for the tree and any child nodes or triangles + class Node + { + public: + JPH_OVERRIDE_NEW_DELETE + + /// Indicates that there is no child + static constexpr uint cInvalidNodeIndex = ~uint(0); + + /// Get number of triangles in this node + inline uint GetTriangleCount() const { return mNumTriangles; } + + /// Check if this node has any children + inline bool HasChildren() const { return mChild[0] != cInvalidNodeIndex || mChild[1] != cInvalidNodeIndex; } + + /// Get child node + inline const Node * GetChild(uint inIdx, const Array &inNodes) const { return mChild[inIdx] != cInvalidNodeIndex? &inNodes[mChild[inIdx]] : nullptr; } + + /// Min depth of tree + uint GetMinDepth(const Array &inNodes) const; + + /// Max depth of tree + uint GetMaxDepth(const Array &inNodes) const; + + /// Number of nodes in tree + uint GetNodeCount(const Array &inNodes) const; + + /// Number of leaf nodes in tree + uint GetLeafNodeCount(const Array &inNodes) const; + + /// Get triangle count in tree + uint GetTriangleCountInTree(const Array &inNodes) const; + + /// Calculate min and max triangles per node + void GetTriangleCountPerNode(const Array &inNodes, float &outAverage, uint &outMin, uint &outMax) const; + + /// Calculate the total cost of the tree using the surface area heuristic + float CalculateSAHCost(const Array &inNodes, float inCostTraversal, float inCostLeaf) const; + + /// Recursively get children (breadth first) to get in total inN children (or less if there are no more) + void GetNChildren(const Array &inNodes, uint inN, Array &outChildren) const; + + /// Bounding box + AABox mBounds; + + /// Triangles (if no child nodes) + uint mTrianglesBegin; // Index into mTriangles + uint mNumTriangles = 0; + + /// Child node indices (if no triangles) + uint mChild[2] = { cInvalidNodeIndex, cInvalidNodeIndex }; + + private: + friend class AABBTreeBuilder; + + /// Recursive helper function to calculate cost of the tree + float CalculateSAHCostInternal(const Array &inNodes, float inCostTraversalDivSurfaceArea, float inCostLeafDivSurfaceArea) const; + + /// Recursive helper function to calculate min and max triangles per node + void GetTriangleCountPerNodeInternal(const Array &inNodes, float &outAverage, uint &outAverageDivisor, uint &outMin, uint &outMax) const; + }; + + /// Constructor + explicit AABBTreeBuilder(TriangleSplitter &inSplitter, uint inMaxTrianglesPerLeaf = 16); + + /// Recursively build tree, returns the root node of the tree + Node * Build(AABBTreeBuilderStats &outStats); + + /// Get all nodes + const Array & GetNodes() const { return mNodes; } + + /// Get all triangles + const Array &GetTriangles() const { return mTriangles; } + +private: + uint BuildInternal(const TriangleSplitter::Range &inTriangles); + + TriangleSplitter & mTriangleSplitter; + const uint mMaxTrianglesPerLeaf; + Array mNodes; + Array mTriangles; +}; + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/AABBTree/AABBTreeToBuffer.h b/Engine/lib/JoltPhysics/Jolt/AABBTree/AABBTreeToBuffer.h new file mode 100644 index 000000000..d50c75061 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/AABBTree/AABBTreeToBuffer.h @@ -0,0 +1,296 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +#include +#include +#include + +JPH_NAMESPACE_BEGIN + +/// Conversion algorithm that converts an AABB tree to an optimized binary buffer +template +class AABBTreeToBuffer +{ +public: + /// Header for the tree + using NodeHeader = typename NodeCodec::Header; + + /// Size in bytes of the header of the tree + static const int HeaderSize = NodeCodec::HeaderSize; + + /// Maximum number of children per node in the tree + static const int NumChildrenPerNode = NodeCodec::NumChildrenPerNode; + + /// Header for the triangles + using TriangleHeader = typename TriangleCodec::TriangleHeader; + + /// Size in bytes of the header for the triangles + static const int TriangleHeaderSize = TriangleCodec::TriangleHeaderSize; + + /// Convert AABB tree. Returns false if failed. + bool Convert(const Array &inTriangles, const Array &inNodes, const VertexList &inVertices, const AABBTreeBuilder::Node *inRoot, bool inStoreUserData, const char *&outError) + { + typename NodeCodec::EncodingContext node_ctx; + typename TriangleCodec::EncodingContext tri_ctx(inVertices); + + // Child nodes out of loop so we don't constantly realloc it + Array child_nodes; + child_nodes.reserve(NumChildrenPerNode); + + // First calculate how big the tree is going to be. + // Since the tree can be huge for very large meshes, we don't want + // to reallocate the buffer as it may cause out of memory situations. + // This loop mimics the construction loop below. + uint64 total_size = HeaderSize + TriangleHeaderSize; + size_t node_count = 1; // Start with root node + size_t to_process_max_size = 1; // Track size of queues so we can do a single reserve below + size_t to_process_triangles_max_size = 0; + { // A scope to free the memory associated with to_estimate and to_estimate_triangles + Array to_estimate; + Array to_estimate_triangles; + to_estimate.push_back(inRoot); + for (;;) + { + while (!to_estimate.empty()) + { + // Get the next node to process + const AABBTreeBuilder::Node *node = to_estimate.back(); + to_estimate.pop_back(); + + // Update total size + node_ctx.PrepareNodeAllocate(node, total_size); + + if (node->HasChildren()) + { + // Collect the first NumChildrenPerNode sub-nodes in the tree + child_nodes.clear(); // Won't free the memory + node->GetNChildren(inNodes, NumChildrenPerNode, child_nodes); + + // Increment the number of nodes we're going to store + node_count += child_nodes.size(); + + // Insert in reverse order so we estimate left child first when taking nodes from the back + for (int idx = int(child_nodes.size()) - 1; idx >= 0; --idx) + { + // Store triangles in separate list so we process them last + const AABBTreeBuilder::Node *child = child_nodes[idx]; + if (child->HasChildren()) + { + to_estimate.push_back(child); + to_process_max_size = max(to_estimate.size(), to_process_max_size); + } + else + { + to_estimate_triangles.push_back(child); + to_process_triangles_max_size = max(to_estimate_triangles.size(), to_process_triangles_max_size); + } + } + } + else + { + // Update total size + tri_ctx.PreparePack(&inTriangles[node->mTrianglesBegin], node->mNumTriangles, inStoreUserData, total_size); + } + } + + // If we've got triangles to estimate, loop again with just the triangles + if (to_estimate_triangles.empty()) + break; + else + to_estimate.swap(to_estimate_triangles); + } + } + + // Finalize the prepare stage for the triangle context + tri_ctx.FinalizePreparePack(total_size); + + // Reserve the buffer + if (size_t(total_size) != total_size) + { + outError = "AABBTreeToBuffer: Out of memory!"; + return false; + } + mTree.reserve(size_t(total_size)); + + // Add headers + NodeHeader *header = HeaderSize > 0? mTree.Allocate() : nullptr; + TriangleHeader *triangle_header = TriangleHeaderSize > 0? mTree.Allocate() : nullptr; + + struct NodeData + { + const AABBTreeBuilder::Node * mNode = nullptr; // Node that this entry belongs to + Vec3 mNodeBoundsMin; // Quantized node bounds + Vec3 mNodeBoundsMax; + size_t mNodeStart = size_t(-1); // Start of node in mTree + size_t mTriangleStart = size_t(-1); // Start of the triangle data in mTree + size_t mChildNodeStart[NumChildrenPerNode]; // Start of the children of the node in mTree + size_t mChildTrianglesStart[NumChildrenPerNode]; // Start of the triangle data in mTree + size_t * mParentChildNodeStart = nullptr; // Where to store mNodeStart (to patch mChildNodeStart of my parent) + size_t * mParentTrianglesStart = nullptr; // Where to store mTriangleStart (to patch mChildTrianglesStart of my parent) + uint mNumChildren = 0; // Number of children + }; + + Array to_process; + to_process.reserve(to_process_max_size); + Array to_process_triangles; + to_process_triangles.reserve(to_process_triangles_max_size); + Array node_list; + node_list.reserve(node_count); // Needed to ensure that array is not reallocated, so we can keep pointers in the array + + NodeData root; + root.mNode = inRoot; + root.mNodeBoundsMin = inRoot->mBounds.mMin; + root.mNodeBoundsMax = inRoot->mBounds.mMax; + node_list.push_back(root); + to_process.push_back(&node_list.back()); + + for (;;) + { + while (!to_process.empty()) + { + // Get the next node to process + NodeData *node_data = to_process.back(); + to_process.pop_back(); + + // Due to quantization box could have become bigger, not smaller + JPH_ASSERT(AABox(node_data->mNodeBoundsMin, node_data->mNodeBoundsMax).Contains(node_data->mNode->mBounds), "AABBTreeToBuffer: Bounding box became smaller!"); + + // Collect the first NumChildrenPerNode sub-nodes in the tree + child_nodes.clear(); // Won't free the memory + node_data->mNode->GetNChildren(inNodes, NumChildrenPerNode, child_nodes); + node_data->mNumChildren = (uint)child_nodes.size(); + + // Fill in default child bounds + Vec3 child_bounds_min[NumChildrenPerNode], child_bounds_max[NumChildrenPerNode]; + for (size_t i = 0; i < NumChildrenPerNode; ++i) + if (i < child_nodes.size()) + { + child_bounds_min[i] = child_nodes[i]->mBounds.mMin; + child_bounds_max[i] = child_nodes[i]->mBounds.mMax; + } + else + { + child_bounds_min[i] = Vec3::sZero(); + child_bounds_max[i] = Vec3::sZero(); + } + + // Start a new node + node_data->mNodeStart = node_ctx.NodeAllocate(node_data->mNode, node_data->mNodeBoundsMin, node_data->mNodeBoundsMax, child_nodes, child_bounds_min, child_bounds_max, mTree, outError); + if (node_data->mNodeStart == size_t(-1)) + return false; + + if (node_data->mNode->HasChildren()) + { + // Insert in reverse order so we process left child first when taking nodes from the back + for (int idx = int(child_nodes.size()) - 1; idx >= 0; --idx) + { + const AABBTreeBuilder::Node *child_node = child_nodes[idx]; + + // Due to quantization box could have become bigger, not smaller + JPH_ASSERT(AABox(child_bounds_min[idx], child_bounds_max[idx]).Contains(child_node->mBounds), "AABBTreeToBuffer: Bounding box became smaller!"); + + // Add child to list of nodes to be processed + NodeData child; + child.mNode = child_node; + child.mNodeBoundsMin = child_bounds_min[idx]; + child.mNodeBoundsMax = child_bounds_max[idx]; + child.mParentChildNodeStart = &node_data->mChildNodeStart[idx]; + child.mParentTrianglesStart = &node_data->mChildTrianglesStart[idx]; + node_list.push_back(child); + + // Store triangles in separate list so we process them last + if (child_node->HasChildren()) + to_process.push_back(&node_list.back()); + else + to_process_triangles.push_back(&node_list.back()); + } + } + else + { + // Add triangles + node_data->mTriangleStart = tri_ctx.Pack(&inTriangles[node_data->mNode->mTrianglesBegin], node_data->mNode->mNumTriangles, inStoreUserData, mTree, outError); + if (node_data->mTriangleStart == size_t(-1)) + return false; + } + + // Patch offset into parent + if (node_data->mParentChildNodeStart != nullptr) + { + *node_data->mParentChildNodeStart = node_data->mNodeStart; + *node_data->mParentTrianglesStart = node_data->mTriangleStart; + } + } + + // If we've got triangles to process, loop again with just the triangles + if (to_process_triangles.empty()) + break; + else + to_process.swap(to_process_triangles); + } + + // Assert that our reservation was correct (we don't know if we swapped the arrays or not) + JPH_ASSERT(to_process_max_size == to_process.capacity() || to_process_triangles_max_size == to_process.capacity()); + JPH_ASSERT(to_process_max_size == to_process_triangles.capacity() || to_process_triangles_max_size == to_process_triangles.capacity()); + + // Finalize all nodes + for (NodeData &n : node_list) + if (!node_ctx.NodeFinalize(n.mNode, n.mNodeStart, n.mNumChildren, n.mChildNodeStart, n.mChildTrianglesStart, mTree, outError)) + return false; + + // Finalize the triangles + tri_ctx.Finalize(inVertices, triangle_header, mTree); + + // Validate that our reservations were correct + if (node_count != node_list.size()) + { + outError = "Internal Error: Node memory estimate was incorrect, memory corruption!"; + return false; + } + if (total_size != mTree.size()) + { + outError = "Internal Error: Tree memory estimate was incorrect, memory corruption!"; + return false; + } + + // Finalize the nodes + return node_ctx.Finalize(header, inRoot, node_list[0].mNodeStart, node_list[0].mTriangleStart, outError); + } + + /// Get resulting data + inline const ByteBuffer & GetBuffer() const + { + return mTree; + } + + /// Get resulting data + inline ByteBuffer & GetBuffer() + { + return mTree; + } + + /// Get header for tree + inline const NodeHeader * GetNodeHeader() const + { + return mTree.Get(0); + } + + /// Get header for triangles + inline const TriangleHeader * GetTriangleHeader() const + { + return mTree.Get(HeaderSize); + } + + /// Get root of resulting tree + inline const void * GetRoot() const + { + return mTree.Get(HeaderSize + TriangleHeaderSize); + } + +private: + ByteBuffer mTree; ///< Resulting tree structure +}; + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h b/Engine/lib/JoltPhysics/Jolt/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h new file mode 100644 index 000000000..c0feea7fe --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h @@ -0,0 +1,323 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +#include +#include +#include + +JPH_NAMESPACE_BEGIN + +class NodeCodecQuadTreeHalfFloat +{ +public: + /// Number of child nodes of this node + static constexpr int NumChildrenPerNode = 4; + + /// Header for the tree + struct Header + { + Float3 mRootBoundsMin; + Float3 mRootBoundsMax; + uint32 mRootProperties; + uint8 mBlockIDBits; ///< Number of bits to address a triangle block + uint8 mPadding[3] = { 0 }; + }; + + /// Size of the header (an empty struct is always > 0 bytes so this needs a separate variable) + static constexpr int HeaderSize = sizeof(Header); + + /// Stack size to use during DecodingContext::sWalkTree + static constexpr int StackSize = 128; + + /// Node properties + enum : uint32 + { + TRIANGLE_COUNT_BITS = 4, + TRIANGLE_COUNT_SHIFT = 28, + TRIANGLE_COUNT_MASK = (1 << TRIANGLE_COUNT_BITS) - 1, + OFFSET_BITS = 28, + OFFSET_MASK = (1 << OFFSET_BITS) - 1, + OFFSET_NON_SIGNIFICANT_BITS = 2, + OFFSET_NON_SIGNIFICANT_MASK = (1 << OFFSET_NON_SIGNIFICANT_BITS) - 1, + }; + + /// Node structure + struct Node + { + HalfFloat mBoundsMinX[4]; ///< 4 child bounding boxes + HalfFloat mBoundsMinY[4]; + HalfFloat mBoundsMinZ[4]; + HalfFloat mBoundsMaxX[4]; + HalfFloat mBoundsMaxY[4]; + HalfFloat mBoundsMaxZ[4]; + uint32 mNodeProperties[4]; ///< 4 child node properties + }; + + static_assert(sizeof(Node) == 64, "Node should be 64 bytes"); + + /// This class encodes and compresses quad tree nodes + class EncodingContext + { + public: + /// Mimics the size a call to NodeAllocate() would add to the buffer + void PrepareNodeAllocate(const AABBTreeBuilder::Node *inNode, uint64 &ioBufferSize) const + { + // We don't emit nodes for leafs + if (!inNode->HasChildren()) + return; + + // Add size of node + ioBufferSize += sizeof(Node); + } + + /// Allocate a new node for inNode. + /// Algorithm can modify the order of ioChildren to indicate in which order children should be compressed + /// Algorithm can enlarge the bounding boxes of the children during compression and returns these in outChildBoundsMin, outChildBoundsMax + /// inNodeBoundsMin, inNodeBoundsMax is the bounding box if inNode possibly widened by compressing the parent node + /// Returns size_t(-1) on error and reports the error in outError + size_t NodeAllocate(const AABBTreeBuilder::Node *inNode, Vec3Arg inNodeBoundsMin, Vec3Arg inNodeBoundsMax, Array &ioChildren, Vec3 outChildBoundsMin[NumChildrenPerNode], Vec3 outChildBoundsMax[NumChildrenPerNode], ByteBuffer &ioBuffer, const char *&outError) const + { + // We don't emit nodes for leafs + if (!inNode->HasChildren()) + return ioBuffer.size(); + + // Remember the start of the node + size_t node_start = ioBuffer.size(); + + // Fill in bounds + Node *node = ioBuffer.Allocate(); + + for (size_t i = 0; i < 4; ++i) + { + if (i < ioChildren.size()) + { + const AABBTreeBuilder::Node *this_node = ioChildren[i]; + + // Copy bounding box + node->mBoundsMinX[i] = HalfFloatConversion::FromFloat(this_node->mBounds.mMin.GetX()); + node->mBoundsMinY[i] = HalfFloatConversion::FromFloat(this_node->mBounds.mMin.GetY()); + node->mBoundsMinZ[i] = HalfFloatConversion::FromFloat(this_node->mBounds.mMin.GetZ()); + node->mBoundsMaxX[i] = HalfFloatConversion::FromFloat(this_node->mBounds.mMax.GetX()); + node->mBoundsMaxY[i] = HalfFloatConversion::FromFloat(this_node->mBounds.mMax.GetY()); + node->mBoundsMaxZ[i] = HalfFloatConversion::FromFloat(this_node->mBounds.mMax.GetZ()); + + // Store triangle count + node->mNodeProperties[i] = this_node->GetTriangleCount() << TRIANGLE_COUNT_SHIFT; + if (this_node->GetTriangleCount() >= TRIANGLE_COUNT_MASK) + { + outError = "NodeCodecQuadTreeHalfFloat: Too many triangles"; + return size_t(-1); + } + } + else + { + // Make this an invalid triangle node + node->mNodeProperties[i] = uint32(TRIANGLE_COUNT_MASK) << TRIANGLE_COUNT_SHIFT; + + // Make bounding box invalid + node->mBoundsMinX[i] = HALF_FLT_MAX; + node->mBoundsMinY[i] = HALF_FLT_MAX; + node->mBoundsMinZ[i] = HALF_FLT_MAX; + node->mBoundsMaxX[i] = HALF_FLT_MAX; + node->mBoundsMaxY[i] = HALF_FLT_MAX; + node->mBoundsMaxZ[i] = HALF_FLT_MAX; + } + } + + // Since we don't keep track of the bounding box while descending the tree, we keep the root bounds at all levels for triangle compression + for (int i = 0; i < NumChildrenPerNode; ++i) + { + outChildBoundsMin[i] = inNodeBoundsMin; + outChildBoundsMax[i] = inNodeBoundsMax; + } + + return node_start; + } + + /// Once all nodes have been added, this call finalizes all nodes by patching in the offsets of the child nodes (that were added after the node itself was added) + bool NodeFinalize(const AABBTreeBuilder::Node *inNode, size_t inNodeStart, uint inNumChildren, const size_t *inChildrenNodeStart, const size_t *inChildrenTrianglesStart, ByteBuffer &ioBuffer, const char *&outError) + { + if (!inNode->HasChildren()) + return true; + + Node *node = ioBuffer.Get(inNodeStart); + for (uint i = 0; i < inNumChildren; ++i) + { + size_t offset; + if (node->mNodeProperties[i] != 0) + { + // This is a triangle block + offset = inChildrenTrianglesStart[i]; + + // Store highest block with triangles so we can count the number of bits we need + mHighestTriangleBlock = max(mHighestTriangleBlock, offset); + } + else + { + // This is a node block + offset = inChildrenNodeStart[i]; + } + + // Store offset of next node / triangles + if (offset & OFFSET_NON_SIGNIFICANT_MASK) + { + outError = "NodeCodecQuadTreeHalfFloat: Internal Error: Offset has non-significant bits set"; + return false; + } + offset >>= OFFSET_NON_SIGNIFICANT_BITS; + if (offset > OFFSET_MASK) + { + outError = "NodeCodecQuadTreeHalfFloat: Offset too large. Too much data."; + return false; + } + node->mNodeProperties[i] |= uint32(offset); + } + + return true; + } + + /// Once all nodes have been finalized, this will finalize the header of the nodes + bool Finalize(Header *outHeader, const AABBTreeBuilder::Node *inRoot, size_t inRootNodeStart, size_t inRootTrianglesStart, const char *&outError) const + { + // Check if we can address the root node + size_t offset = inRoot->HasChildren()? inRootNodeStart : inRootTrianglesStart; + if (offset & OFFSET_NON_SIGNIFICANT_MASK) + { + outError = "NodeCodecQuadTreeHalfFloat: Internal Error: Offset has non-significant bits set"; + return false; + } + offset >>= OFFSET_NON_SIGNIFICANT_BITS; + if (offset > OFFSET_MASK) + { + outError = "NodeCodecQuadTreeHalfFloat: Offset too large. Too much data."; + return false; + } + + // If the root has triangles, we need to take that offset instead since the mHighestTriangleBlock will be zero + size_t highest_triangle_block = inRootTrianglesStart != size_t(-1)? inRootTrianglesStart : mHighestTriangleBlock; + highest_triangle_block >>= OFFSET_NON_SIGNIFICANT_BITS; + + inRoot->mBounds.mMin.StoreFloat3(&outHeader->mRootBoundsMin); + inRoot->mBounds.mMax.StoreFloat3(&outHeader->mRootBoundsMax); + outHeader->mRootProperties = uint32(offset) + (inRoot->GetTriangleCount() << TRIANGLE_COUNT_SHIFT); + outHeader->mBlockIDBits = uint8(32 - CountLeadingZeros(uint32(highest_triangle_block))); + if (inRoot->GetTriangleCount() >= TRIANGLE_COUNT_MASK) + { + outError = "NodeCodecQuadTreeHalfFloat: Too many triangles"; + return false; + } + + return true; + } + + private: + size_t mHighestTriangleBlock = 0; + }; + + /// This class decodes and decompresses quad tree nodes + class DecodingContext + { + public: + /// Get the amount of bits needed to store an ID to a triangle block + inline static uint sTriangleBlockIDBits(const Header *inHeader) + { + return inHeader->mBlockIDBits; + } + + /// Convert a triangle block ID to the start of the triangle buffer + inline static const void * sGetTriangleBlockStart(const uint8 *inBufferStart, uint inTriangleBlockID) + { + return inBufferStart + (inTriangleBlockID << OFFSET_NON_SIGNIFICANT_BITS); + } + + /// Constructor + JPH_INLINE explicit DecodingContext(const Header *inHeader) + { + // Start with the root node on the stack + mNodeStack[0] = inHeader->mRootProperties; + } + + /// Walk the node tree calling the Visitor::VisitNodes for each node encountered and Visitor::VisitTriangles for each triangle encountered + template + JPH_INLINE void WalkTree(const uint8 *inBufferStart, const TriangleContext &inTriangleContext, Visitor &ioVisitor) + { + do + { + // Test if node contains triangles + uint32 node_properties = mNodeStack[mTop]; + uint32 tri_count = node_properties >> TRIANGLE_COUNT_SHIFT; + if (tri_count == 0) + { + const Node *node = reinterpret_cast(inBufferStart + (node_properties << OFFSET_NON_SIGNIFICANT_BITS)); + + // Unpack bounds + #ifdef JPH_CPU_BIG_ENDIAN + Vec4 bounds_minx = HalfFloatConversion::ToFloat(UVec4(node->mBoundsMinX[0] + (node->mBoundsMinX[1] << 16), node->mBoundsMinX[2] + (node->mBoundsMinX[3] << 16), 0, 0)); + Vec4 bounds_miny = HalfFloatConversion::ToFloat(UVec4(node->mBoundsMinY[0] + (node->mBoundsMinY[1] << 16), node->mBoundsMinY[2] + (node->mBoundsMinY[3] << 16), 0, 0)); + Vec4 bounds_minz = HalfFloatConversion::ToFloat(UVec4(node->mBoundsMinZ[0] + (node->mBoundsMinZ[1] << 16), node->mBoundsMinZ[2] + (node->mBoundsMinZ[3] << 16), 0, 0)); + + Vec4 bounds_maxx = HalfFloatConversion::ToFloat(UVec4(node->mBoundsMaxX[0] + (node->mBoundsMaxX[1] << 16), node->mBoundsMaxX[2] + (node->mBoundsMaxX[3] << 16), 0, 0)); + Vec4 bounds_maxy = HalfFloatConversion::ToFloat(UVec4(node->mBoundsMaxY[0] + (node->mBoundsMaxY[1] << 16), node->mBoundsMaxY[2] + (node->mBoundsMaxY[3] << 16), 0, 0)); + Vec4 bounds_maxz = HalfFloatConversion::ToFloat(UVec4(node->mBoundsMaxZ[0] + (node->mBoundsMaxZ[1] << 16), node->mBoundsMaxZ[2] + (node->mBoundsMaxZ[3] << 16), 0, 0)); + #else + UVec4 bounds_minxy = UVec4::sLoadInt4(reinterpret_cast(&node->mBoundsMinX[0])); + Vec4 bounds_minx = HalfFloatConversion::ToFloat(bounds_minxy); + Vec4 bounds_miny = HalfFloatConversion::ToFloat(bounds_minxy.Swizzle()); + + UVec4 bounds_minzmaxx = UVec4::sLoadInt4(reinterpret_cast(&node->mBoundsMinZ[0])); + Vec4 bounds_minz = HalfFloatConversion::ToFloat(bounds_minzmaxx); + Vec4 bounds_maxx = HalfFloatConversion::ToFloat(bounds_minzmaxx.Swizzle()); + + UVec4 bounds_maxyz = UVec4::sLoadInt4(reinterpret_cast(&node->mBoundsMaxY[0])); + Vec4 bounds_maxy = HalfFloatConversion::ToFloat(bounds_maxyz); + Vec4 bounds_maxz = HalfFloatConversion::ToFloat(bounds_maxyz.Swizzle()); + #endif + + // Load properties for 4 children + UVec4 properties = UVec4::sLoadInt4(&node->mNodeProperties[0]); + + // Check which sub nodes to visit + int num_results = ioVisitor.VisitNodes(bounds_minx, bounds_miny, bounds_minz, bounds_maxx, bounds_maxy, bounds_maxz, properties, mTop); + + // Push them onto the stack + JPH_ASSERT(mTop + 4 < StackSize); + properties.StoreInt4(&mNodeStack[mTop]); + mTop += num_results; + } + else if (tri_count != TRIANGLE_COUNT_MASK) // TRIANGLE_COUNT_MASK indicates a padding node, normally we shouldn't visit these nodes but when querying with a big enough box you could touch HALF_FLT_MAX (about 65K) + { + // Node contains triangles, do individual tests + uint32 triangle_block_id = node_properties & OFFSET_MASK; + const void *triangles = sGetTriangleBlockStart(inBufferStart, triangle_block_id); + + ioVisitor.VisitTriangles(inTriangleContext, triangles, tri_count, triangle_block_id); + } + + // Check if we're done + if (ioVisitor.ShouldAbort()) + break; + + // Fetch next node until we find one that the visitor wants to see + do + --mTop; + while (mTop >= 0 && !ioVisitor.ShouldVisitNode(mTop)); + } + while (mTop >= 0); + } + + /// This can be used to have the visitor early out (ioVisitor.ShouldAbort() returns true) and later continue again (call WalkTree() again) + bool IsDoneWalking() const + { + return mTop < 0; + } + + private: + uint32 mNodeStack[StackSize]; + int mTop = 0; + }; +}; + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h b/Engine/lib/JoltPhysics/Jolt/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h new file mode 100644 index 000000000..b3c33c515 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h @@ -0,0 +1,555 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +#include + +JPH_NAMESPACE_BEGIN + +/// Store vertices in 64 bits and indices in 8 bits + 8 bit of flags per triangle like this: +/// +/// TriangleBlockHeader, +/// TriangleBlock (4 triangles and their flags in 16 bytes), +/// TriangleBlock... +/// [Optional] UserData (4 bytes per triangle) +/// +/// Vertices are stored: +/// +/// VertexData (1 vertex in 64 bits), +/// VertexData... +/// +/// They're compressed relative to the bounding box as provided by the node codec. +class TriangleCodecIndexed8BitPackSOA4Flags +{ +public: + class TriangleHeader + { + public: + Float3 mOffset; ///< Offset of all vertices + Float3 mScale; ///< Scale of all vertices, vertex_position = mOffset + mScale * compressed_vertex_position + }; + + /// Size of the header (an empty struct is always > 0 bytes so this needs a separate variable) + static constexpr int TriangleHeaderSize = sizeof(TriangleHeader); + + /// If this codec could return a different offset than the current buffer size when calling Pack() + static constexpr bool ChangesOffsetOnPack = false; + + /// Amount of bits per component + enum EComponentData : uint32 + { + COMPONENT_BITS = 21, + COMPONENT_MASK = (1 << COMPONENT_BITS) - 1, + }; + + /// Packed X and Y coordinate + enum EVertexXY : uint32 + { + COMPONENT_X = 0, + COMPONENT_Y1 = COMPONENT_BITS, + COMPONENT_Y1_BITS = 32 - COMPONENT_BITS, + }; + + /// Packed Z and Y coordinate + enum EVertexZY : uint32 + { + COMPONENT_Z = 0, + COMPONENT_Y2 = COMPONENT_BITS, + COMPONENT_Y2_BITS = 31 - COMPONENT_BITS, + }; + + /// A single packed vertex + struct VertexData + { + uint32 mVertexXY; + uint32 mVertexZY; + }; + + static_assert(sizeof(VertexData) == 8, "Compiler added padding"); + + /// A block of 4 triangles + struct TriangleBlock + { + uint8 mIndices[3][4]; ///< 8 bit indices to triangle vertices for 4 triangles in the form mIndices[vertex][triangle] where vertex in [0, 2] and triangle in [0, 3] + uint8 mFlags[4]; ///< Triangle flags (could contain material and active edges) + }; + + static_assert(sizeof(TriangleBlock) == 16, "Compiler added padding"); + + enum ETriangleBlockHeaderFlags : uint32 + { + OFFSET_TO_VERTICES_BITS = 29, ///< Offset from current block to start of vertices in bytes + OFFSET_TO_VERTICES_MASK = (1 << OFFSET_TO_VERTICES_BITS) - 1, + OFFSET_NON_SIGNIFICANT_BITS = 2, ///< The offset from the current block to the start of the vertices must be a multiple of 4 bytes + OFFSET_NON_SIGNIFICANT_MASK = (1 << OFFSET_NON_SIGNIFICANT_BITS) - 1, + OFFSET_TO_USERDATA_BITS = 3, ///< When user data is stored, this is the number of blocks to skip to get to the user data (0 = no user data) + OFFSET_TO_USERDATA_MASK = (1 << OFFSET_TO_USERDATA_BITS) - 1, + }; + + /// A triangle header, will be followed by one or more TriangleBlocks + struct TriangleBlockHeader + { + const VertexData * GetVertexData() const { return reinterpret_cast(reinterpret_cast(this) + ((mFlags & OFFSET_TO_VERTICES_MASK) << OFFSET_NON_SIGNIFICANT_BITS)); } + const TriangleBlock * GetTriangleBlock() const { return reinterpret_cast(reinterpret_cast(this) + sizeof(TriangleBlockHeader)); } + const uint32 * GetUserData() const { uint32 offset = mFlags >> OFFSET_TO_VERTICES_BITS; return offset == 0? nullptr : reinterpret_cast(GetTriangleBlock() + offset); } + + uint32 mFlags; + }; + + static_assert(sizeof(TriangleBlockHeader) == 4, "Compiler added padding"); + + /// This class is used to validate that the triangle data will not be degenerate after compression + class ValidationContext + { + public: + /// Constructor + ValidationContext(const IndexedTriangleList &inTriangles, const VertexList &inVertices) : + mVertices(inVertices) + { + // Only used the referenced triangles, just like EncodingContext::Finalize does + for (const IndexedTriangle &i : inTriangles) + for (uint32 idx : i.mIdx) + mBounds.Encapsulate(Vec3(inVertices[idx])); + } + + /// Test if a triangle will be degenerate after quantization + bool IsDegenerate(const IndexedTriangle &inTriangle) const + { + // Quantize the triangle in the same way as EncodingContext::Finalize does + UVec4 quantized_vertex[3]; + Vec3 compress_scale = Vec3::sReplicate(COMPONENT_MASK) / Vec3::sMax(mBounds.GetSize(), Vec3::sReplicate(1.0e-20f)); + for (int i = 0; i < 3; ++i) + quantized_vertex[i] = ((Vec3(mVertices[inTriangle.mIdx[i]]) - mBounds.mMin) * compress_scale + Vec3::sReplicate(0.5f)).ToInt(); + return quantized_vertex[0] == quantized_vertex[1] || quantized_vertex[1] == quantized_vertex[2] || quantized_vertex[0] == quantized_vertex[2]; + } + + private: + const VertexList & mVertices; + AABox mBounds; + }; + + /// This class is used to encode and compress triangle data into a byte buffer + class EncodingContext + { + public: + /// Indicates a vertex hasn't been seen yet in the triangle list + static constexpr uint32 cNotFound = 0xffffffff; + + /// Construct the encoding context + explicit EncodingContext(const VertexList &inVertices) : + mVertexMap(inVertices.size(), cNotFound) + { + } + + /// Mimics the size a call to Pack() would add to the buffer + void PreparePack(const IndexedTriangle *inTriangles, uint inNumTriangles, bool inStoreUserData, uint64 &ioBufferSize) + { + // Add triangle block header + ioBufferSize += sizeof(TriangleBlockHeader); + + // Compute first vertex that this batch will use (ensuring there's enough room if none of the vertices are shared) + uint start_vertex = Clamp((int)mVertexCount - 256 + (int)inNumTriangles * 3, 0, (int)mVertexCount); + + // Pack vertices + uint padded_triangle_count = AlignUp(inNumTriangles, 4); + for (uint t = 0; t < padded_triangle_count; t += 4) + { + // Add triangle block header + ioBufferSize += sizeof(TriangleBlock); + + for (uint vertex_nr = 0; vertex_nr < 3; ++vertex_nr) + for (uint block_tri_idx = 0; block_tri_idx < 4; ++block_tri_idx) + { + // Fetch vertex index. Create degenerate triangles for padding triangles. + bool triangle_available = t + block_tri_idx < inNumTriangles; + uint32 src_vertex_index = triangle_available? inTriangles[t + block_tri_idx].mIdx[vertex_nr] : inTriangles[inNumTriangles - 1].mIdx[0]; + + // Check if we've seen this vertex before and if it is in the range that we can encode + uint32 &vertex_index = mVertexMap[src_vertex_index]; + if (vertex_index == cNotFound || vertex_index < start_vertex) + { + // Add vertex + vertex_index = mVertexCount; + mVertexCount++; + } + } + } + + // Add user data + if (inStoreUserData) + ioBufferSize += inNumTriangles * sizeof(uint32); + } + + /// Mimics the size the Finalize() call would add to ioBufferSize + void FinalizePreparePack(uint64 &ioBufferSize) + { + // Remember where the vertices are going to start in the output buffer + JPH_ASSERT(IsAligned(ioBufferSize, 4)); + mVerticesStartIdx = size_t(ioBufferSize); + + // Add vertices to buffer + ioBufferSize += uint64(mVertexCount) * sizeof(VertexData); + + // Reserve the amount of memory we need for the vertices + mVertices.reserve(mVertexCount); + + // Set vertex map back to 'not found' + for (uint32 &v : mVertexMap) + v = cNotFound; + } + + /// Pack the triangles in inContainer to ioBuffer. This stores the mMaterialIndex of a triangle in the 8 bit flags. + /// Returns size_t(-1) on error. + size_t Pack(const IndexedTriangle *inTriangles, uint inNumTriangles, bool inStoreUserData, ByteBuffer &ioBuffer, const char *&outError) + { + JPH_ASSERT(inNumTriangles > 0); + + // Determine position of triangles start + size_t triangle_block_start = ioBuffer.size(); + + // Allocate triangle block header + TriangleBlockHeader *header = ioBuffer.Allocate(); + + // Compute first vertex that this batch will use (ensuring there's enough room if none of the vertices are shared) + uint start_vertex = Clamp((int)mVertices.size() - 256 + (int)inNumTriangles * 3, 0, (int)mVertices.size()); + + // Store the start vertex offset relative to TriangleBlockHeader + size_t offset_to_vertices = mVerticesStartIdx - triangle_block_start + size_t(start_vertex) * sizeof(VertexData); + if (offset_to_vertices & OFFSET_NON_SIGNIFICANT_MASK) + { + outError = "TriangleCodecIndexed8BitPackSOA4Flags: Internal Error: Offset has non-significant bits set"; + return size_t(-1); + } + offset_to_vertices >>= OFFSET_NON_SIGNIFICANT_BITS; + if (offset_to_vertices > OFFSET_TO_VERTICES_MASK) + { + outError = "TriangleCodecIndexed8BitPackSOA4Flags: Offset to vertices doesn't fit. Too much data."; + return size_t(-1); + } + header->mFlags = uint32(offset_to_vertices); + + // When we store user data we need to store the offset to the user data in TriangleBlocks + uint padded_triangle_count = AlignUp(inNumTriangles, 4); + if (inStoreUserData) + { + uint32 num_blocks = padded_triangle_count >> 2; + JPH_ASSERT(num_blocks <= OFFSET_TO_USERDATA_MASK); + header->mFlags |= num_blocks << OFFSET_TO_VERTICES_BITS; + } + + // Pack vertices + for (uint t = 0; t < padded_triangle_count; t += 4) + { + TriangleBlock *block = ioBuffer.Allocate(); + for (uint vertex_nr = 0; vertex_nr < 3; ++vertex_nr) + for (uint block_tri_idx = 0; block_tri_idx < 4; ++block_tri_idx) + { + // Fetch vertex index. Create degenerate triangles for padding triangles. + bool triangle_available = t + block_tri_idx < inNumTriangles; + uint32 src_vertex_index = triangle_available? inTriangles[t + block_tri_idx].mIdx[vertex_nr] : inTriangles[inNumTriangles - 1].mIdx[0]; + + // Check if we've seen this vertex before and if it is in the range that we can encode + uint32 &vertex_index = mVertexMap[src_vertex_index]; + if (vertex_index == cNotFound || vertex_index < start_vertex) + { + // Add vertex + vertex_index = (uint32)mVertices.size(); + mVertices.push_back(src_vertex_index); + } + + // Store vertex index + uint32 vertex_offset = vertex_index - start_vertex; + if (vertex_offset > 0xff) + { + outError = "TriangleCodecIndexed8BitPackSOA4Flags: Offset doesn't fit in 8 bit"; + return size_t(-1); + } + block->mIndices[vertex_nr][block_tri_idx] = (uint8)vertex_offset; + + // Store flags + uint32 flags = triangle_available? inTriangles[t + block_tri_idx].mMaterialIndex : 0; + if (flags > 0xff) + { + outError = "TriangleCodecIndexed8BitPackSOA4Flags: Material index doesn't fit in 8 bit"; + return size_t(-1); + } + block->mFlags[block_tri_idx] = (uint8)flags; + } + } + + // Store user data + if (inStoreUserData) + { + uint32 *user_data = ioBuffer.Allocate(inNumTriangles); + for (uint t = 0; t < inNumTriangles; ++t) + user_data[t] = inTriangles[t].mUserData; + } + + return triangle_block_start; + } + + /// After all triangles have been packed, this finalizes the header and triangle buffer + void Finalize(const VertexList &inVertices, TriangleHeader *ioHeader, ByteBuffer &ioBuffer) const + { + // Assert that our reservations were correct + JPH_ASSERT(mVertices.size() == mVertexCount); + JPH_ASSERT(ioBuffer.size() == mVerticesStartIdx); + + // Check if anything to do + if (mVertices.empty()) + return; + + // Calculate bounding box + AABox bounds; + for (uint32 v : mVertices) + bounds.Encapsulate(Vec3(inVertices[v])); + + // Compress vertices + VertexData *vertices = ioBuffer.Allocate(mVertices.size()); + Vec3 compress_scale = Vec3::sReplicate(COMPONENT_MASK) / Vec3::sMax(bounds.GetSize(), Vec3::sReplicate(1.0e-20f)); + for (uint32 v : mVertices) + { + UVec4 c = ((Vec3(inVertices[v]) - bounds.mMin) * compress_scale + Vec3::sReplicate(0.5f)).ToInt(); + JPH_ASSERT(c.GetX() <= COMPONENT_MASK); + JPH_ASSERT(c.GetY() <= COMPONENT_MASK); + JPH_ASSERT(c.GetZ() <= COMPONENT_MASK); + vertices->mVertexXY = c.GetX() + (c.GetY() << COMPONENT_Y1); + vertices->mVertexZY = c.GetZ() + ((c.GetY() >> COMPONENT_Y1_BITS) << COMPONENT_Y2); + ++vertices; + } + + // Store decompression information + bounds.mMin.StoreFloat3(&ioHeader->mOffset); + (bounds.GetSize() / Vec3::sReplicate(COMPONENT_MASK)).StoreFloat3(&ioHeader->mScale); + } + + private: + using VertexMap = Array; + + uint32 mVertexCount = 0; ///< Number of vertices calculated during PreparePack + size_t mVerticesStartIdx = 0; ///< Start of the vertices in the output buffer, calculated during PreparePack + Array mVertices; ///< Output vertices as an index into the original vertex list (inVertices), sorted according to occurrence + VertexMap mVertexMap; ///< Maps from the original mesh vertex index (inVertices) to the index in our output vertices (mVertices) + }; + + /// This class is used to decode and decompress triangle data packed by the EncodingContext + class DecodingContext + { + private: + /// Private helper function to unpack the 1 vertex of 4 triangles (outX contains the x coordinate of triangle 0 .. 3 etc.) + JPH_INLINE void Unpack(const VertexData *inVertices, UVec4Arg inIndex, Vec4 &outX, Vec4 &outY, Vec4 &outZ) const + { + // Get compressed data + UVec4 c1 = UVec4::sGatherInt4<8>(&inVertices->mVertexXY, inIndex); + UVec4 c2 = UVec4::sGatherInt4<8>(&inVertices->mVertexZY, inIndex); + + // Unpack the x y and z component + UVec4 xc = UVec4::sAnd(c1, UVec4::sReplicate(COMPONENT_MASK)); + UVec4 yc = UVec4::sOr(c1.LogicalShiftRight(), c2.LogicalShiftRight().LogicalShiftLeft()); + UVec4 zc = UVec4::sAnd(c2, UVec4::sReplicate(COMPONENT_MASK)); + + // Convert to float + outX = Vec4::sFusedMultiplyAdd(xc.ToFloat(), mScaleX, mOffsetX); + outY = Vec4::sFusedMultiplyAdd(yc.ToFloat(), mScaleY, mOffsetY); + outZ = Vec4::sFusedMultiplyAdd(zc.ToFloat(), mScaleZ, mOffsetZ); + } + + /// Private helper function to unpack 4 triangles from a triangle block + JPH_INLINE void Unpack(const TriangleBlock *inBlock, const VertexData *inVertices, Vec4 &outX1, Vec4 &outY1, Vec4 &outZ1, Vec4 &outX2, Vec4 &outY2, Vec4 &outZ2, Vec4 &outX3, Vec4 &outY3, Vec4 &outZ3) const + { + // Get the indices for the three vertices (reads 4 bytes extra, but these are the flags so that's ok) + UVec4 indices = UVec4::sLoadInt4(reinterpret_cast(&inBlock->mIndices[0])); + UVec4 iv1 = indices.Expand4Byte0(); + UVec4 iv2 = indices.Expand4Byte4(); + UVec4 iv3 = indices.Expand4Byte8(); + + #ifdef JPH_CPU_BIG_ENDIAN + // On big endian systems we need to reverse the bytes + iv1 = iv1.Swizzle(); + iv2 = iv2.Swizzle(); + iv3 = iv3.Swizzle(); + #endif + + // Decompress the triangle data + Unpack(inVertices, iv1, outX1, outY1, outZ1); + Unpack(inVertices, iv2, outX2, outY2, outZ2); + Unpack(inVertices, iv3, outX3, outY3, outZ3); + } + + public: + JPH_INLINE explicit DecodingContext(const TriangleHeader *inHeader) : + mOffsetX(Vec4::sReplicate(inHeader->mOffset.x)), + mOffsetY(Vec4::sReplicate(inHeader->mOffset.y)), + mOffsetZ(Vec4::sReplicate(inHeader->mOffset.z)), + mScaleX(Vec4::sReplicate(inHeader->mScale.x)), + mScaleY(Vec4::sReplicate(inHeader->mScale.y)), + mScaleZ(Vec4::sReplicate(inHeader->mScale.z)) + { + } + + /// Unpacks triangles in the format t1v1,t1v2,t1v3, t2v1,t2v2,t2v3, ... + JPH_INLINE void Unpack(const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles) const + { + JPH_ASSERT(inNumTriangles > 0); + const TriangleBlockHeader *header = reinterpret_cast(inTriangleStart); + const VertexData *vertices = header->GetVertexData(); + const TriangleBlock *t = header->GetTriangleBlock(); + const TriangleBlock *end = t + ((inNumTriangles + 3) >> 2); + + int triangles_left = inNumTriangles; + + do + { + // Unpack the vertices for 4 triangles + Vec4 v1x, v1y, v1z, v2x, v2y, v2z, v3x, v3y, v3z; + Unpack(t, vertices, v1x, v1y, v1z, v2x, v2y, v2z, v3x, v3y, v3z); + + // Transpose it so we get normal vectors + Mat44 v1 = Mat44(v1x, v1y, v1z, Vec4::sZero()).Transposed(); + Mat44 v2 = Mat44(v2x, v2y, v2z, Vec4::sZero()).Transposed(); + Mat44 v3 = Mat44(v3x, v3y, v3z, Vec4::sZero()).Transposed(); + + // Store triangle data + for (int i = 0; i < 4 && triangles_left > 0; ++i, --triangles_left) + { + *outTriangles++ = v1.GetColumn3(i); + *outTriangles++ = v2.GetColumn3(i); + *outTriangles++ = v3.GetColumn3(i); + } + + ++t; + } + while (t < end); + } + + /// Tests a ray against the packed triangles + JPH_INLINE float TestRay(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, const void *inTriangleStart, uint32 inNumTriangles, float inClosest, uint32 &outClosestTriangleIndex) const + { + JPH_ASSERT(inNumTriangles > 0); + const TriangleBlockHeader *header = reinterpret_cast(inTriangleStart); + const VertexData *vertices = header->GetVertexData(); + const TriangleBlock *t = header->GetTriangleBlock(); + const TriangleBlock *end = t + ((inNumTriangles + 3) >> 2); + + Vec4 closest = Vec4::sReplicate(inClosest); + UVec4 closest_triangle_idx = UVec4::sZero(); + + UVec4 start_triangle_idx = UVec4::sZero(); + do + { + // Unpack the vertices for 4 triangles + Vec4 v1x, v1y, v1z, v2x, v2y, v2z, v3x, v3y, v3z; + Unpack(t, vertices, v1x, v1y, v1z, v2x, v2y, v2z, v3x, v3y, v3z); + + // Perform ray vs triangle test + Vec4 distance = RayTriangle4(inRayOrigin, inRayDirection, v1x, v1y, v1z, v2x, v2y, v2z, v3x, v3y, v3z); + + // Update closest with the smaller values + UVec4 smaller = Vec4::sLess(distance, closest); + closest = Vec4::sSelect(closest, distance, smaller); + + // Update triangle index with the smallest values + UVec4 triangle_idx = start_triangle_idx + UVec4(0, 1, 2, 3); + closest_triangle_idx = UVec4::sSelect(closest_triangle_idx, triangle_idx, smaller); + + // Next block + ++t; + start_triangle_idx += UVec4::sReplicate(4); + } + while (t < end); + + // Get the smallest component + Vec4::sSort4(closest, closest_triangle_idx); + outClosestTriangleIndex = closest_triangle_idx.GetX(); + return closest.GetX(); + } + + /// Decode a single triangle + inline void GetTriangle(const void *inTriangleStart, uint32 inTriangleIdx, Vec3 &outV1, Vec3 &outV2, Vec3 &outV3) const + { + const TriangleBlockHeader *header = reinterpret_cast(inTriangleStart); + const VertexData *vertices = header->GetVertexData(); + const TriangleBlock *block = header->GetTriangleBlock() + (inTriangleIdx >> 2); + uint32 block_triangle_idx = inTriangleIdx & 0b11; + + // Get the 3 vertices + const VertexData &v1 = vertices[block->mIndices[0][block_triangle_idx]]; + const VertexData &v2 = vertices[block->mIndices[1][block_triangle_idx]]; + const VertexData &v3 = vertices[block->mIndices[2][block_triangle_idx]]; + + // Pack the vertices + UVec4 c1(v1.mVertexXY, v2.mVertexXY, v3.mVertexXY, 0); + UVec4 c2(v1.mVertexZY, v2.mVertexZY, v3.mVertexZY, 0); + + // Unpack the x y and z component + UVec4 xc = UVec4::sAnd(c1, UVec4::sReplicate(COMPONENT_MASK)); + UVec4 yc = UVec4::sOr(c1.LogicalShiftRight(), c2.LogicalShiftRight().LogicalShiftLeft()); + UVec4 zc = UVec4::sAnd(c2, UVec4::sReplicate(COMPONENT_MASK)); + + // Convert to float + Vec4 vx = Vec4::sFusedMultiplyAdd(xc.ToFloat(), mScaleX, mOffsetX); + Vec4 vy = Vec4::sFusedMultiplyAdd(yc.ToFloat(), mScaleY, mOffsetY); + Vec4 vz = Vec4::sFusedMultiplyAdd(zc.ToFloat(), mScaleZ, mOffsetZ); + + // Transpose it so we get normal vectors + Mat44 trans = Mat44(vx, vy, vz, Vec4::sZero()).Transposed(); + outV1 = trans.GetAxisX(); + outV2 = trans.GetAxisY(); + outV3 = trans.GetAxisZ(); + } + + /// Get user data for a triangle + JPH_INLINE uint32 GetUserData(const void *inTriangleStart, uint32 inTriangleIdx) const + { + const TriangleBlockHeader *header = reinterpret_cast(inTriangleStart); + const uint32 *user_data = header->GetUserData(); + return user_data != nullptr? user_data[inTriangleIdx] : 0; + } + + /// Get flags for entire triangle block + JPH_INLINE static void sGetFlags(const void *inTriangleStart, uint32 inNumTriangles, uint8 *outTriangleFlags) + { + JPH_ASSERT(inNumTriangles > 0); + const TriangleBlockHeader *header = reinterpret_cast(inTriangleStart); + const TriangleBlock *t = header->GetTriangleBlock(); + const TriangleBlock *end = t + ((inNumTriangles + 3) >> 2); + + int triangles_left = inNumTriangles; + do + { + for (int i = 0; i < 4 && triangles_left > 0; ++i, --triangles_left) + *outTriangleFlags++ = t->mFlags[i]; + + ++t; + } + while (t < end); + } + + /// Get flags for a particular triangle + JPH_INLINE static uint8 sGetFlags(const void *inTriangleStart, int inTriangleIndex) + { + const TriangleBlockHeader *header = reinterpret_cast(inTriangleStart); + const TriangleBlock *first_block = header->GetTriangleBlock(); + return first_block[inTriangleIndex >> 2].mFlags[inTriangleIndex & 0b11]; + } + + /// Unpacks triangles and flags, convenience function + JPH_INLINE void Unpack(const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles, uint8 *outTriangleFlags) const + { + Unpack(inTriangleStart, inNumTriangles, outTriangles); + sGetFlags(inTriangleStart, inNumTriangles, outTriangleFlags); + } + + private: + Vec4 mOffsetX; + Vec4 mOffsetY; + Vec4 mOffsetZ; + Vec4 mScaleX; + Vec4 mScaleY; + Vec4 mScaleZ; + }; +}; + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/ConfigurationString.h b/Engine/lib/JoltPhysics/Jolt/ConfigurationString.h new file mode 100644 index 000000000..566f13a32 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/ConfigurationString.h @@ -0,0 +1,112 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2023 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +JPH_NAMESPACE_BEGIN + +/// Construct a string that lists the most important configuration settings +inline const char *GetConfigurationString() +{ + return JPH_IF_SINGLE_PRECISION_ELSE("Single", "Double") " precision " +#if defined(JPH_CPU_X86) + "x86 " +#elif defined(JPH_CPU_ARM) + "ARM " +#elif defined(JPH_CPU_RISCV) + "RISC-V " +#elif defined(JPH_CPU_PPC) + "PowerPC " + #ifdef JPH_CPU_BIG_ENDIAN + "(Big Endian) " + #else + "(Little Endian) " + #endif +#elif defined(JPH_CPU_LOONGARCH) + "LoongArch " +#elif defined(JPH_CPU_E2K) + "E2K " +#elif defined(JPH_CPU_WASM) + "WASM " +#else + #error Unknown CPU architecture +#endif +#if JPH_CPU_ARCH_BITS == 64 + "64-bit " +#elif JPH_CPU_ARCH_BITS == 32 + "32-bit " +#endif + "with instructions: " +#ifdef JPH_USE_NEON + "NEON " +#endif +#ifdef JPH_USE_SSE + "SSE2 " +#endif +#ifdef JPH_USE_SSE4_1 + "SSE4.1 " +#endif +#ifdef JPH_USE_SSE4_2 + "SSE4.2 " +#endif +#ifdef JPH_USE_AVX + "AVX " +#endif +#ifdef JPH_USE_AVX2 + "AVX2 " +#endif +#ifdef JPH_USE_AVX512 + "AVX512 " +#endif +#ifdef JPH_USE_F16C + "F16C " +#endif +#ifdef JPH_USE_LZCNT + "LZCNT " +#endif +#ifdef JPH_USE_TZCNT + "TZCNT " +#endif +#ifdef JPH_USE_FMADD + "FMADD " +#endif +#ifdef JPH_CROSS_PLATFORM_DETERMINISTIC + "(Cross Platform Deterministic) " +#endif +#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED + "(FP Exceptions) " +#endif +#ifdef JPH_DEBUG_RENDERER + "(Debug Renderer) " +#endif +#ifdef JPH_PROFILE_ENABLED + "(Profile) " +#endif +#ifdef JPH_EXTERNAL_PROFILE + "(External Profile) " +#endif +#if defined(JPH_OBJECT_LAYER_BITS) && JPH_OBJECT_LAYER_BITS == 32 + "(32-bit ObjectLayer) " +#else + "(16-bit ObjectLayer) " +#endif +#ifdef JPH_ENABLE_ASSERTS + "(Assertions) " +#endif +#ifdef JPH_OBJECT_STREAM + "(ObjectStream) " +#endif +#ifdef JPH_DEBUG + "(Debug) " +#endif +#if defined(__cpp_rtti) && __cpp_rtti + "(C++ RTTI) " +#endif +#if defined(__cpp_exceptions) && __cpp_exceptions + "(C++ Exceptions) " +#endif + ; +} + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/Core/ARMNeon.h b/Engine/lib/JoltPhysics/Jolt/Core/ARMNeon.h new file mode 100644 index 000000000..6273945dc --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/ARMNeon.h @@ -0,0 +1,94 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2022 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +#ifdef JPH_USE_NEON + +// Constructing NEON values +#ifdef JPH_COMPILER_MSVC + #define JPH_NEON_INT32x4(v1, v2, v3, v4) { int64_t(v1) + (int64_t(v2) << 32), int64_t(v3) + (int64_t(v4) << 32) } + #define JPH_NEON_UINT32x4(v1, v2, v3, v4) { uint64_t(v1) + (uint64_t(v2) << 32), uint64_t(v3) + (uint64_t(v4) << 32) } + #define JPH_NEON_INT8x16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) { int64_t(v1) + (int64_t(v2) << 8) + (int64_t(v3) << 16) + (int64_t(v4) << 24) + (int64_t(v5) << 32) + (int64_t(v6) << 40) + (int64_t(v7) << 48) + (int64_t(v8) << 56), int64_t(v9) + (int64_t(v10) << 8) + (int64_t(v11) << 16) + (int64_t(v12) << 24) + (int64_t(v13) << 32) + (int64_t(v14) << 40) + (int64_t(v15) << 48) + (int64_t(v16) << 56) } + #define JPH_NEON_UINT8x16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) { uint64_t(v1) + (uint64_t(v2) << 8) + (uint64_t(v3) << 16) + (uint64_t(v4) << 24) + (uint64_t(v5) << 32) + (uint64_t(v6) << 40) + (uint64_t(v7) << 48) + (uint64_t(v8) << 56), uint64_t(v9) + (uint64_t(v10) << 8) + (uint64_t(v11) << 16) + (uint64_t(v12) << 24) + (uint64_t(v13) << 32) + (uint64_t(v14) << 40) + (uint64_t(v15) << 48) + (uint64_t(v16) << 56) } +#else + #define JPH_NEON_INT32x4(v1, v2, v3, v4) { v1, v2, v3, v4 } + #define JPH_NEON_UINT32x4(v1, v2, v3, v4) { v1, v2, v3, v4 } + #define JPH_NEON_INT8x16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16 } + #define JPH_NEON_UINT8x16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16 } +#endif + +// MSVC and GCC prior to version 12 don't define __builtin_shufflevector +#if defined(JPH_COMPILER_MSVC) || (defined(JPH_COMPILER_GCC) && __GNUC__ < 12) + JPH_NAMESPACE_BEGIN + + // Generic shuffle vector template + template + JPH_INLINE float32x4_t NeonShuffleFloat32x4(float32x4_t inV1, float32x4_t inV2) + { + float32x4_t ret; + ret = vmovq_n_f32(vgetq_lane_f32(I1 >= 4? inV2 : inV1, I1 & 0b11)); + ret = vsetq_lane_f32(vgetq_lane_f32(I2 >= 4? inV2 : inV1, I2 & 0b11), ret, 1); + ret = vsetq_lane_f32(vgetq_lane_f32(I3 >= 4? inV2 : inV1, I3 & 0b11), ret, 2); + ret = vsetq_lane_f32(vgetq_lane_f32(I4 >= 4? inV2 : inV1, I4 & 0b11), ret, 3); + return ret; + } + + // Specializations + template <> + JPH_INLINE float32x4_t NeonShuffleFloat32x4<0, 1, 2, 2>(float32x4_t inV1, float32x4_t inV2) + { + return vcombine_f32(vget_low_f32(inV1), vdup_lane_f32(vget_high_f32(inV1), 0)); + } + + template <> + JPH_INLINE float32x4_t NeonShuffleFloat32x4<0, 1, 3, 3>(float32x4_t inV1, float32x4_t inV2) + { + return vcombine_f32(vget_low_f32(inV1), vdup_lane_f32(vget_high_f32(inV1), 1)); + } + + template <> + JPH_INLINE float32x4_t NeonShuffleFloat32x4<0, 1, 2, 3>(float32x4_t inV1, float32x4_t inV2) + { + return inV1; + } + + template <> + JPH_INLINE float32x4_t NeonShuffleFloat32x4<1, 0, 3, 2>(float32x4_t inV1, float32x4_t inV2) + { + return vcombine_f32(vrev64_f32(vget_low_f32(inV1)), vrev64_f32(vget_high_f32(inV1))); + } + + template <> + JPH_INLINE float32x4_t NeonShuffleFloat32x4<2, 2, 1, 0>(float32x4_t inV1, float32x4_t inV2) + { + return vcombine_f32(vdup_lane_f32(vget_high_f32(inV1), 0), vrev64_f32(vget_low_f32(inV1))); + } + + template <> + JPH_INLINE float32x4_t NeonShuffleFloat32x4<2, 3, 0, 1>(float32x4_t inV1, float32x4_t inV2) + { + return vcombine_f32(vget_high_f32(inV1), vget_low_f32(inV1)); + } + + // Used extensively by cross product + template <> + JPH_INLINE float32x4_t NeonShuffleFloat32x4<1, 2, 0, 0>(float32x4_t inV1, float32x4_t inV2) + { + static uint8x16_t table = JPH_NEON_UINT8x16(0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03); + return vreinterpretq_f32_u8(vqtbl1q_u8(vreinterpretq_u8_f32(inV1), table)); + } + + // Shuffle a vector + #define JPH_NEON_SHUFFLE_F32x4(vec1, vec2, index1, index2, index3, index4) NeonShuffleFloat32x4(vec1, vec2) + #define JPH_NEON_SHUFFLE_U32x4(vec1, vec2, index1, index2, index3, index4) vreinterpretq_u32_f32((NeonShuffleFloat32x4(vreinterpretq_f32_u32(vec1), vreinterpretq_f32_u32(vec2)))) + + JPH_NAMESPACE_END +#else + // Shuffle a vector + #define JPH_NEON_SHUFFLE_F32x4(vec1, vec2, index1, index2, index3, index4) __builtin_shufflevector(vec1, vec2, index1, index2, index3, index4) + #define JPH_NEON_SHUFFLE_U32x4(vec1, vec2, index1, index2, index3, index4) __builtin_shufflevector(vec1, vec2, index1, index2, index3, index4) +#endif + +#endif // JPH_USE_NEON diff --git a/Engine/lib/JoltPhysics/Jolt/Core/Array.h b/Engine/lib/JoltPhysics/Jolt/Core/Array.h new file mode 100644 index 000000000..c4a060ab5 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/Array.h @@ -0,0 +1,713 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2024 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +#include +#include + +#ifdef JPH_USE_STD_VECTOR + +JPH_SUPPRESS_WARNINGS_STD_BEGIN +#include +JPH_SUPPRESS_WARNINGS_STD_END + +JPH_NAMESPACE_BEGIN + +template > using Array = std::vector; + +JPH_NAMESPACE_END + +#else + +JPH_NAMESPACE_BEGIN + +/// Simple replacement for std::vector +/// +/// Major differences: +/// - Memory is not initialized to zero (this was causing a lot of page faults when deserializing large MeshShapes / HeightFieldShapes) +/// - Iterators are simple pointers (for now) +/// - No exception safety +/// - No specialization like std::vector has +/// - Not all functions have been implemented +template > +class [[nodiscard]] Array : private Allocator +{ +public: + using value_type = T; + using allocator_type = Allocator; + using size_type = size_t; + using difference_type = typename Allocator::difference_type; + using pointer = T *; + using const_pointer = const T *; + using reference = T &; + using const_reference = const T &; + + using const_iterator = const T *; + using iterator = T *; + + /// An iterator that traverses the array in reverse order + class rev_it + { + public: + /// Constructor + rev_it() = default; + explicit rev_it(T *inValue) : mValue(inValue) { } + + /// Copying + rev_it(const rev_it &) = default; + rev_it & operator = (const rev_it &) = default; + + /// Comparison + bool operator == (const rev_it &inRHS) const { return mValue == inRHS.mValue; } + bool operator != (const rev_it &inRHS) const { return mValue != inRHS.mValue; } + + /// Arithmetics + rev_it & operator ++ () { --mValue; return *this; } + rev_it operator ++ (int) { return rev_it(mValue--); } + rev_it & operator -- () { ++mValue; return *this; } + rev_it operator -- (int) { return rev_it(mValue++); } + + rev_it operator + (int inValue) const { return rev_it(mValue - inValue); } + rev_it operator - (int inValue) const { return rev_it(mValue + inValue); } + + rev_it & operator += (int inValue) { mValue -= inValue; return *this; } + rev_it & operator -= (int inValue) { mValue += inValue; return *this; } + + /// Access + T & operator * () const { return *mValue; } + T & operator -> () const { return *mValue; } + + private: + T * mValue; + }; + + /// A const iterator that traverses the array in reverse order + class crev_it + { + public: + /// Constructor + crev_it() = default; + explicit crev_it(const T *inValue) : mValue(inValue) { } + + /// Copying + crev_it(const crev_it &) = default; + explicit crev_it(const rev_it &inValue) : mValue(inValue.mValue) { } + crev_it & operator = (const crev_it &) = default; + crev_it & operator = (const rev_it &inRHS) { mValue = inRHS.mValue; return *this; } + + /// Comparison + bool operator == (const crev_it &inRHS) const { return mValue == inRHS.mValue; } + bool operator != (const crev_it &inRHS) const { return mValue != inRHS.mValue; } + + /// Arithmetics + crev_it & operator ++ () { --mValue; return *this; } + crev_it operator ++ (int) { return crev_it(mValue--); } + crev_it & operator -- () { ++mValue; return *this; } + crev_it operator -- (int) { return crev_it(mValue++); } + + crev_it operator + (int inValue) { return crev_it(mValue - inValue); } + crev_it operator - (int inValue) { return crev_it(mValue + inValue); } + + crev_it & operator += (int inValue) { mValue -= inValue; return *this; } + crev_it & operator -= (int inValue) { mValue += inValue; return *this; } + + /// Access + const T & operator * () const { return *mValue; } + const T & operator -> () const { return *mValue; } + + private: + const T * mValue; + }; + + using reverse_iterator = rev_it; + using const_reverse_iterator = crev_it; + +private: + /// Move elements from one location to another + inline void move(pointer inDestination, pointer inSource, size_type inCount) + { + if constexpr (std::is_trivially_copyable()) + memmove(inDestination, inSource, inCount * sizeof(T)); + else + { + if (inDestination < inSource) + { + for (T *destination_end = inDestination + inCount; inDestination < destination_end; ++inDestination, ++inSource) + { + new (inDestination) T(std::move(*inSource)); + inSource->~T(); + } + } + else + { + for (T *destination = inDestination + inCount - 1, *source = inSource + inCount - 1; destination >= inDestination; --destination, --source) + { + new (destination) T(std::move(*source)); + source->~T(); + } + } + } + } + + /// Reallocate the data block to inNewCapacity + inline void reallocate(size_type inNewCapacity) + { + JPH_ASSERT(inNewCapacity > 0 && inNewCapacity >= mSize); + + pointer ptr; + if constexpr (AllocatorHasReallocate::sValue) + { + // Reallocate data block + ptr = get_allocator().reallocate(mElements, mCapacity, inNewCapacity); + } + else + { + // Copy data to a new location + ptr = get_allocator().allocate(inNewCapacity); + if (mElements != nullptr) + { + move(ptr, mElements, mSize); + get_allocator().deallocate(mElements, mCapacity); + } + } + mElements = ptr; + mCapacity = inNewCapacity; + } + + /// Destruct elements [inStart, inEnd - 1] + inline void destruct(size_type inStart, size_type inEnd) + { + if constexpr (!std::is_trivially_destructible()) + if (inStart < inEnd) + for (T *element = mElements + inStart, *element_end = mElements + inEnd; element < element_end; ++element) + element->~T(); + } + +public: + /// Reserve array space + inline void reserve(size_type inNewSize) + { + if (mCapacity < inNewSize) + reallocate(inNewSize); + } + + /// Resize array to new length + inline void resize(size_type inNewSize) + { + destruct(inNewSize, mSize); + reserve(inNewSize); + + if constexpr (!std::is_trivially_constructible()) + for (T *element = mElements + mSize, *element_end = mElements + inNewSize; element < element_end; ++element) + new (element) T; + mSize = inNewSize; + } + + /// Resize array to new length and initialize all elements with inValue + inline void resize(size_type inNewSize, const T &inValue) + { + JPH_ASSERT(&inValue < mElements || &inValue >= mElements + mSize, "Can't pass an element from the array to resize"); + + destruct(inNewSize, mSize); + reserve(inNewSize); + + for (T *element = mElements + mSize, *element_end = mElements + inNewSize; element < element_end; ++element) + new (element) T(inValue); + mSize = inNewSize; + } + + /// Destruct all elements and set length to zero + inline void clear() + { + destruct(0, mSize); + mSize = 0; + } + +private: + /// Grow the array by at least inAmount elements + inline void grow(size_type inAmount = 1) + { + size_type min_size = mSize + inAmount; + if (min_size > mCapacity) + { + size_type new_capacity = max(min_size, mCapacity * 2); + reserve(new_capacity); + } + } + + /// Free memory + inline void deallocate() + { + get_allocator().deallocate(mElements, mCapacity); + mElements = nullptr; + mCapacity = 0; + } + + /// Destroy all elements and free memory + inline void destroy() + { + if (mElements != nullptr) + { + clear(); + deallocate(); + } + } + +public: + /// Replace the contents of this array with inBegin .. inEnd + template + inline void assign(Iterator inBegin, Iterator inEnd) + { + clear(); + reserve(size_type(std::distance(inBegin, inEnd))); + + for (Iterator element = inBegin; element != inEnd; ++element) + new (&mElements[mSize++]) T(*element); + } + + /// Replace the contents of this array with inList + inline void assign(std::initializer_list inList) + { + clear(); + reserve(size_type(inList.size())); + + for (const T &v : inList) + new (&mElements[mSize++]) T(v); + } + + /// Default constructor + Array() = default; + + /// Constructor with allocator + explicit inline Array(const Allocator &inAllocator) : + Allocator(inAllocator) + { + } + + /// Constructor with length + explicit inline Array(size_type inLength, const Allocator &inAllocator = { }) : + Allocator(inAllocator) + { + resize(inLength); + } + + /// Constructor with length and value + inline Array(size_type inLength, const T &inValue, const Allocator &inAllocator = { }) : + Allocator(inAllocator) + { + resize(inLength, inValue); + } + + /// Constructor from initializer list + inline Array(std::initializer_list inList, const Allocator &inAllocator = { }) : + Allocator(inAllocator) + { + assign(inList); + } + + /// Constructor from iterator + inline Array(const_iterator inBegin, const_iterator inEnd, const Allocator &inAllocator = { }) : + Allocator(inAllocator) + { + assign(inBegin, inEnd); + } + + /// Copy constructor + inline Array(const Array &inRHS) : + Allocator(inRHS.get_allocator()) + { + assign(inRHS.begin(), inRHS.end()); + } + + /// Move constructor + inline Array(Array &&inRHS) noexcept : + Allocator(std::move(inRHS.get_allocator())), + mSize(inRHS.mSize), + mCapacity(inRHS.mCapacity), + mElements(inRHS.mElements) + { + inRHS.mSize = 0; + inRHS.mCapacity = 0; + inRHS.mElements = nullptr; + } + + /// Destruct all elements + inline ~Array() + { + destroy(); + } + + /// Get the allocator + inline Allocator & get_allocator() + { + return *this; + } + + inline const Allocator &get_allocator() const + { + return *this; + } + + /// Add element to the back of the array + inline void push_back(const T &inValue) + { + JPH_ASSERT(&inValue < mElements || &inValue >= mElements + mSize, "Can't pass an element from the array to push_back"); + + grow(); + + T *element = mElements + mSize++; + new (element) T(inValue); + } + + inline void push_back(T &&inValue) + { + grow(); + + T *element = mElements + mSize++; + new (element) T(std::move(inValue)); + } + + /// Construct element at the back of the array + template + inline T & emplace_back(A &&... inValue) + { + grow(); + + T *element = mElements + mSize++; + new (element) T(std::forward(inValue)...); + return *element; + } + + /// Remove element from the back of the array + inline void pop_back() + { + JPH_ASSERT(mSize > 0); + mElements[--mSize].~T(); + } + + /// Returns true if there are no elements in the array + inline bool empty() const + { + return mSize == 0; + } + + /// Returns amount of elements in the array + inline size_type size() const + { + return mSize; + } + + /// Returns maximum amount of elements the array can hold + inline size_type capacity() const + { + return mCapacity; + } + + /// Reduce the capacity of the array to match its size + void shrink_to_fit() + { + if (mElements != nullptr) + { + if (mSize == 0) + deallocate(); + else if (mCapacity > mSize) + reallocate(mSize); + } + } + + /// Swap the contents of two arrays + void swap(Array &inRHS) noexcept + { + std::swap(get_allocator(), inRHS.get_allocator()); + std::swap(mSize, inRHS.mSize); + std::swap(mCapacity, inRHS.mCapacity); + std::swap(mElements, inRHS.mElements); + } + + template + void insert(const_iterator inPos, Iterator inBegin, Iterator inEnd) + { + size_type num_elements = size_type(std::distance(inBegin, inEnd)); + if (num_elements > 0) + { + // After grow() inPos may be invalid + size_type first_element = inPos - mElements; + + grow(num_elements); + + T *element_begin = mElements + first_element; + T *element_end = element_begin + num_elements; + move(element_end, element_begin, mSize - first_element); + + for (T *element = element_begin; element < element_end; ++element, ++inBegin) + new (element) T(*inBegin); + + mSize += num_elements; + } + } + + void insert(const_iterator inPos, const T &inValue) + { + JPH_ASSERT(&inValue < mElements || &inValue >= mElements + mSize, "Can't pass an element from the array to insert"); + + // After grow() inPos may be invalid + size_type first_element = inPos - mElements; + + grow(); + + T *element = mElements + first_element; + move(element + 1, element, mSize - first_element); + + new (element) T(inValue); + mSize++; + } + + /// Remove one element from the array + iterator erase(const_iterator inIter) + { + size_type p = size_type(inIter - begin()); + JPH_ASSERT(p < mSize); + mElements[p].~T(); + if (p + 1 < mSize) + move(mElements + p, mElements + p + 1, mSize - p - 1); + --mSize; + return const_cast(inIter); + } + + /// Remove multiple element from the array + iterator erase(const_iterator inBegin, const_iterator inEnd) + { + size_type p = size_type(inBegin - begin()); + size_type n = size_type(inEnd - inBegin); + JPH_ASSERT(inEnd <= end()); + destruct(p, p + n); + if (p + n < mSize) + move(mElements + p, mElements + p + n, mSize - p - n); + mSize -= n; + return const_cast(inBegin); + } + + /// Iterators + inline const_iterator begin() const + { + return mElements; + } + + inline const_iterator end() const + { + return mElements + mSize; + } + + inline crev_it rbegin() const + { + return crev_it(mElements + mSize - 1); + } + + inline crev_it rend() const + { + return crev_it(mElements - 1); + } + + inline const_iterator cbegin() const + { + return begin(); + } + + inline const_iterator cend() const + { + return end(); + } + + inline crev_it crbegin() const + { + return rbegin(); + } + + inline crev_it crend() const + { + return rend(); + } + + inline iterator begin() + { + return mElements; + } + + inline iterator end() + { + return mElements + mSize; + } + + inline rev_it rbegin() + { + return rev_it(mElements + mSize - 1); + } + + inline rev_it rend() + { + return rev_it(mElements - 1); + } + + inline const T * data() const + { + return mElements; + } + + inline T * data() + { + return mElements; + } + + /// Access element + inline T & operator [] (size_type inIdx) + { + JPH_ASSERT(inIdx < mSize); + return mElements[inIdx]; + } + + inline const T & operator [] (size_type inIdx) const + { + JPH_ASSERT(inIdx < mSize); + return mElements[inIdx]; + } + + /// Access element + inline T & at(size_type inIdx) + { + JPH_ASSERT(inIdx < mSize); + return mElements[inIdx]; + } + + inline const T & at(size_type inIdx) const + { + JPH_ASSERT(inIdx < mSize); + return mElements[inIdx]; + } + + /// First element in the array + inline const T & front() const + { + JPH_ASSERT(mSize > 0); + return mElements[0]; + } + + inline T & front() + { + JPH_ASSERT(mSize > 0); + return mElements[0]; + } + + /// Last element in the array + inline const T & back() const + { + JPH_ASSERT(mSize > 0); + return mElements[mSize - 1]; + } + + inline T & back() + { + JPH_ASSERT(mSize > 0); + return mElements[mSize - 1]; + } + + /// Assignment operator + Array & operator = (const Array &inRHS) + { + if (static_cast(this) != static_cast(&inRHS)) + assign(inRHS.begin(), inRHS.end()); + + return *this; + } + + /// Assignment move operator + Array & operator = (Array &&inRHS) noexcept + { + if (static_cast(this) != static_cast(&inRHS)) + { + destroy(); + + get_allocator() = std::move(inRHS.get_allocator()); + + mSize = inRHS.mSize; + mCapacity = inRHS.mCapacity; + mElements = inRHS.mElements; + + inRHS.mSize = 0; + inRHS.mCapacity = 0; + inRHS.mElements = nullptr; + } + + return *this; + } + + /// Assignment operator + Array & operator = (std::initializer_list inRHS) + { + assign(inRHS); + + return *this; + } + + /// Comparing arrays + bool operator == (const Array &inRHS) const + { + if (mSize != inRHS.mSize) + return false; + for (size_type i = 0; i < mSize; ++i) + if (!(mElements[i] == inRHS.mElements[i])) + return false; + return true; + } + + bool operator != (const Array &inRHS) const + { + if (mSize != inRHS.mSize) + return true; + for (size_type i = 0; i < mSize; ++i) + if (mElements[i] != inRHS.mElements[i]) + return true; + return false; + } + + /// Get hash for this array + uint64 GetHash() const + { + // Hash length first + uint64 ret = Hash { } (uint32(size())); + + // Then hash elements + for (const T *element = mElements, *element_end = mElements + mSize; element < element_end; ++element) + HashCombine(ret, *element); + + return ret; + } + +private: + size_type mSize = 0; + size_type mCapacity = 0; + T * mElements = nullptr; +}; + +JPH_NAMESPACE_END + +JPH_SUPPRESS_WARNING_PUSH +JPH_CLANG_SUPPRESS_WARNING("-Wc++98-compat") + +namespace std +{ + /// Declare std::hash for Array + template + struct hash> + { + size_t operator () (const JPH::Array &inRHS) const + { + return std::size_t(inRHS.GetHash()); + } + }; +} + +JPH_SUPPRESS_WARNING_POP + +#endif // JPH_USE_STD_VECTOR diff --git a/Engine/lib/JoltPhysics/Jolt/Core/Atomics.h b/Engine/lib/JoltPhysics/Jolt/Core/Atomics.h new file mode 100644 index 000000000..a53faa5c8 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/Atomics.h @@ -0,0 +1,44 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +JPH_SUPPRESS_WARNINGS_STD_BEGIN +#include +JPH_SUPPRESS_WARNINGS_STD_END + +JPH_NAMESPACE_BEGIN + +// Things we're using from STL +using std::atomic; +using std::memory_order; +using std::memory_order_relaxed; +using std::memory_order_acquire; +using std::memory_order_release; +using std::memory_order_acq_rel; +using std::memory_order_seq_cst; + +/// Atomically compute the min(ioAtomic, inValue) and store it in ioAtomic, returns true if value was updated +template +bool AtomicMin(atomic &ioAtomic, const T inValue, const memory_order inMemoryOrder = memory_order_seq_cst) +{ + T cur_value = ioAtomic.load(memory_order_relaxed); + while (cur_value > inValue) + if (ioAtomic.compare_exchange_weak(cur_value, inValue, inMemoryOrder)) + return true; + return false; +} + +/// Atomically compute the max(ioAtomic, inValue) and store it in ioAtomic, returns true if value was updated +template +bool AtomicMax(atomic &ioAtomic, const T inValue, const memory_order inMemoryOrder = memory_order_seq_cst) +{ + T cur_value = ioAtomic.load(memory_order_relaxed); + while (cur_value < inValue) + if (ioAtomic.compare_exchange_weak(cur_value, inValue, inMemoryOrder)) + return true; + return false; +} + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/Core/BinaryHeap.h b/Engine/lib/JoltPhysics/Jolt/Core/BinaryHeap.h new file mode 100644 index 000000000..3c542e7ea --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/BinaryHeap.h @@ -0,0 +1,96 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2024 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +JPH_NAMESPACE_BEGIN + +/// Push a new element into a binary max-heap. +/// [inBegin, inEnd - 1) must be a a valid heap. Element inEnd - 1 will be inserted into the heap. The heap will be [inBegin, inEnd) after this call. +/// inPred is a function that returns true if the first element is less or equal than the second element. +/// See: https://en.wikipedia.org/wiki/Binary_heap +template +void BinaryHeapPush(Iterator inBegin, Iterator inEnd, Pred inPred) +{ + using diff_t = typename std::iterator_traits::difference_type; + using elem_t = typename std::iterator_traits::value_type; + + // New heap size + diff_t count = std::distance(inBegin, inEnd); + + // Start from the last element + diff_t current = count - 1; + while (current > 0) + { + // Get current element + elem_t ¤t_elem = *(inBegin + current); + + // Get parent element + diff_t parent = (current - 1) >> 1; + elem_t &parent_elem = *(inBegin + parent); + + // Sort them so that the parent is larger than the child + if (inPred(parent_elem, current_elem)) + { + std::swap(parent_elem, current_elem); + current = parent; + } + else + { + // When there's no change, we're done + break; + } + } +} + +/// Pop an element from a binary max-heap. +/// [inBegin, inEnd) must be a valid heap. The largest element will be removed from the heap. The heap will be [inBegin, inEnd - 1) after this call. +/// inPred is a function that returns true if the first element is less or equal than the second element. +/// See: https://en.wikipedia.org/wiki/Binary_heap +template +void BinaryHeapPop(Iterator inBegin, Iterator inEnd, Pred inPred) +{ + using diff_t = typename std::iterator_traits::difference_type; + + // Begin by moving the highest element to the end, this is the popped element + std::swap(*(inEnd - 1), *inBegin); + + // New heap size + diff_t count = std::distance(inBegin, inEnd) - 1; + + // Start from the root + diff_t largest = 0; + for (;;) + { + // Get first child + diff_t child = (largest << 1) + 1; + + // Check if we're beyond the end of the heap, if so the 2nd child is also beyond the end + if (child >= count) + break; + + // Remember the largest element from the previous iteration + diff_t prev_largest = largest; + + // Check if first child is bigger, if so select it + if (inPred(*(inBegin + largest), *(inBegin + child))) + largest = child; + + // Switch to the second child + ++child; + + // Check if second child is bigger, if so select it + if (child < count && inPred(*(inBegin + largest), *(inBegin + child))) + largest = child; + + // If there was no change, we're done + if (prev_largest == largest) + break; + + // Swap element + std::swap(*(inBegin + prev_largest), *(inBegin + largest)); + } +} + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/Core/ByteBuffer.h b/Engine/lib/JoltPhysics/Jolt/Core/ByteBuffer.h new file mode 100644 index 000000000..610b15155 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/ByteBuffer.h @@ -0,0 +1,74 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +#include + +JPH_NAMESPACE_BEGIN + +/// Underlying data type for ByteBuffer +using ByteBufferVector = Array>; + +/// Simple byte buffer, aligned to a cache line +class ByteBuffer : public ByteBufferVector +{ +public: + /// Align the size to a multiple of inSize, returns the length after alignment + size_t Align(size_t inSize) + { + // Assert power of 2 + JPH_ASSERT(IsPowerOf2(inSize)); + + // Calculate new size and resize buffer + size_t s = AlignUp(size(), inSize); + resize(s, 0); + + return s; + } + + /// Allocate block of data of inSize elements and return the pointer + template + Type * Allocate(size_t inSize = 1) + { + // Reserve space + size_t s = size(); + resize(s + inSize * sizeof(Type)); + + // Get data pointer + Type *data = reinterpret_cast(&at(s)); + + // Construct elements + for (Type *d = data, *d_end = data + inSize; d < d_end; ++d) + new (d) Type; + + // Return pointer + return data; + } + + /// Append inData to the buffer + template + void AppendVector(const Array &inData) + { + size_t size = inData.size() * sizeof(Type); + uint8 *data = Allocate(size); + memcpy(data, &inData[0], size); + } + + /// Get object at inPosition (an offset in bytes) + template + const Type * Get(size_t inPosition) const + { + return reinterpret_cast(&at(inPosition)); + } + + /// Get object at inPosition (an offset in bytes) + template + Type * Get(size_t inPosition) + { + return reinterpret_cast(&at(inPosition)); + } +}; + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/Core/Color.cpp b/Engine/lib/JoltPhysics/Jolt/Core/Color.cpp new file mode 100644 index 000000000..93d3cabc7 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/Color.cpp @@ -0,0 +1,38 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#include + +#include + +JPH_NAMESPACE_BEGIN + +// Predefined colors +const Color Color::sBlack(0, 0, 0); +const Color Color::sDarkRed(128, 0, 0); +const Color Color::sRed(255, 0, 0); +const Color Color::sDarkGreen(0, 128, 0); +const Color Color::sGreen(0, 255, 0); +const Color Color::sDarkBlue(0, 0, 128); +const Color Color::sBlue(0, 0, 255); +const Color Color::sYellow(255, 255, 0); +const Color Color::sPurple(255, 0, 255); +const Color Color::sCyan(0, 255, 255); +const Color Color::sOrange(255, 128, 0); +const Color Color::sDarkOrange(128, 64, 0); +const Color Color::sGrey(128, 128, 128); +const Color Color::sLightGrey(192, 192, 192); +const Color Color::sWhite(255, 255, 255); + +// Generated by: http://phrogz.net/css/distinct-colors.html (this algo: https://en.wikipedia.org/wiki/Color_difference#CMC_l:c_.281984.29) +static constexpr Color sColors[] = { Color(255, 0, 0), Color(204, 143, 102), Color(226, 242, 0), Color(41, 166, 124), Color(0, 170, 255), Color(69, 38, 153), Color(153, 38, 130), Color(229, 57, 80), Color(204, 0, 0), Color(255, 170, 0), Color(85, 128, 0), Color(64, 255, 217), Color(0, 75, 140), Color(161, 115, 230), Color(242, 61, 157), Color(178, 101, 89), Color(140, 94, 0), Color(181, 217, 108), Color(64, 242, 255), Color(77, 117, 153), Color(157, 61, 242), Color(140, 0, 56), Color(127, 57, 32), Color(204, 173, 51), Color(64, 255, 64), Color(38, 145, 153), Color(0, 102, 255), Color(242, 0, 226), Color(153, 77, 107), Color(229, 92, 0), Color(140, 126, 70), Color(0, 179, 71), Color(0, 194, 242), Color(27, 0, 204), Color(230, 115, 222), Color(127, 0, 17) }; + +Color Color::sGetDistinctColor(int inIndex) +{ + JPH_ASSERT(inIndex >= 0); + + return sColors[inIndex % (sizeof(sColors) / sizeof(uint32))]; +} + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/Core/Color.h b/Engine/lib/JoltPhysics/Jolt/Core/Color.h new file mode 100644 index 000000000..4995701bc --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/Color.h @@ -0,0 +1,98 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +JPH_NAMESPACE_BEGIN + +class Color; + +/// Type to use for passing arguments to a function +using ColorArg = Color; + +/// Class that holds an RGBA color with 8-bits per component +class JPH_EXPORT_GCC_BUG_WORKAROUND [[nodiscard]] Color +{ +public: + /// Constructors + Color() = default; ///< Intentionally not initialized for performance reasons + Color(const Color &inRHS) = default; + Color & operator = (const Color &inRHS) = default; + explicit constexpr Color(uint32 inColor) : mU32(inColor) { } + constexpr Color(uint8 inRed, uint8 inGreen, uint8 inBlue, uint8 inAlpha = 255) : r(inRed), g(inGreen), b(inBlue), a(inAlpha) { } + constexpr Color(ColorArg inRHS, uint8 inAlpha) : r(inRHS.r), g(inRHS.g), b(inRHS.b), a(inAlpha) { } + + /// Comparison + inline bool operator == (ColorArg inRHS) const { return mU32 == inRHS.mU32; } + inline bool operator != (ColorArg inRHS) const { return mU32 != inRHS.mU32; } + + /// Convert to uint32 + uint32 GetUInt32() const { return mU32; } + + /// Element access, 0 = red, 1 = green, 2 = blue, 3 = alpha + inline uint8 operator () (uint inIdx) const { JPH_ASSERT(inIdx < 4); return (&r)[inIdx]; } + inline uint8 & operator () (uint inIdx) { JPH_ASSERT(inIdx < 4); return (&r)[inIdx]; } + + /// Multiply two colors + inline Color operator * (const Color &inRHS) const { return Color(uint8((uint32(r) * inRHS.r) >> 8), uint8((uint32(g) * inRHS.g) >> 8), uint8((uint32(b) * inRHS.b) >> 8), uint8((uint32(a) * inRHS.a) >> 8)); } + + /// Multiply color with intensity in the range [0, 1] + inline Color operator * (float inIntensity) const { return Color(uint8(r * inIntensity), uint8(g * inIntensity), uint8(b * inIntensity), a); } + + /// Convert to Vec4 with range [0, 1] + inline Vec4 ToVec4() const { return Vec4(r, g, b, a) / 255.0f; } + + /// Get grayscale intensity of color + inline uint8 GetIntensity() const { return uint8((uint32(r) * 54 + g * 183 + b * 19) >> 8); } + + /// Get a visually distinct color + static Color sGetDistinctColor(int inIndex); + + /// Get a color value on the gradient from green through yellow to red + /// @param inValue Value in the range [0, 1], 0 = green, 0.5 = yellow, 1 = red + static Color sGreenRedGradient(float inValue) + { + if (inValue < 0.0f) + return Color::sGreen; + else if (inValue < 0.5f) + return Color(uint8(510.0f * inValue), 255, 0); + else if (inValue < 1.0f) + return Color(255, uint8(510.0f * (1.0f - inValue)), 0); + else + return Color::sRed; + } + + /// Predefined colors + static const Color sBlack; + static const Color sDarkRed; + static const Color sRed; + static const Color sDarkGreen; + static const Color sGreen; + static const Color sDarkBlue; + static const Color sBlue; + static const Color sYellow; + static const Color sPurple; + static const Color sCyan; + static const Color sOrange; + static const Color sDarkOrange; + static const Color sGrey; + static const Color sLightGrey; + static const Color sWhite; + + union + { + uint32 mU32; ///< Combined value for red, green, blue and alpha + struct + { + uint8 r; ///< Red channel + uint8 g; ///< Green channel + uint8 b; ///< Blue channel + uint8 a; ///< Alpha channel + }; + }; +}; + +static_assert(std::is_trivial(), "Is supposed to be a trivial type!"); + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/Core/Core.h b/Engine/lib/JoltPhysics/Jolt/Core/Core.h new file mode 100644 index 000000000..687c1fd95 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/Core.h @@ -0,0 +1,652 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +// Jolt library version +#define JPH_VERSION_MAJOR 5 +#define JPH_VERSION_MINOR 5 +#define JPH_VERSION_PATCH 0 + +// Determine which features the library was compiled with +#ifdef JPH_DOUBLE_PRECISION + #define JPH_VERSION_FEATURE_BIT_1 1 +#else + #define JPH_VERSION_FEATURE_BIT_1 0 +#endif +#ifdef JPH_CROSS_PLATFORM_DETERMINISTIC + #define JPH_VERSION_FEATURE_BIT_2 1 +#else + #define JPH_VERSION_FEATURE_BIT_2 0 +#endif +#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED + #define JPH_VERSION_FEATURE_BIT_3 1 +#else + #define JPH_VERSION_FEATURE_BIT_3 0 +#endif +#ifdef JPH_PROFILE_ENABLED + #define JPH_VERSION_FEATURE_BIT_4 1 +#else + #define JPH_VERSION_FEATURE_BIT_4 0 +#endif +#ifdef JPH_EXTERNAL_PROFILE + #define JPH_VERSION_FEATURE_BIT_5 1 +#else + #define JPH_VERSION_FEATURE_BIT_5 0 +#endif +#ifdef JPH_DEBUG_RENDERER + #define JPH_VERSION_FEATURE_BIT_6 1 +#else + #define JPH_VERSION_FEATURE_BIT_6 0 +#endif +#ifdef JPH_DISABLE_TEMP_ALLOCATOR + #define JPH_VERSION_FEATURE_BIT_7 1 +#else + #define JPH_VERSION_FEATURE_BIT_7 0 +#endif +#ifdef JPH_DISABLE_CUSTOM_ALLOCATOR + #define JPH_VERSION_FEATURE_BIT_8 1 +#else + #define JPH_VERSION_FEATURE_BIT_8 0 +#endif +#if defined(JPH_OBJECT_LAYER_BITS) && JPH_OBJECT_LAYER_BITS == 32 + #define JPH_VERSION_FEATURE_BIT_9 1 +#else + #define JPH_VERSION_FEATURE_BIT_9 0 +#endif +#ifdef JPH_ENABLE_ASSERTS + #define JPH_VERSION_FEATURE_BIT_10 1 +#else + #define JPH_VERSION_FEATURE_BIT_10 0 +#endif +#ifdef JPH_OBJECT_STREAM + #define JPH_VERSION_FEATURE_BIT_11 1 +#else + #define JPH_VERSION_FEATURE_BIT_11 0 +#endif +#define JPH_VERSION_FEATURES (uint64(JPH_VERSION_FEATURE_BIT_1) | (JPH_VERSION_FEATURE_BIT_2 << 1) | (JPH_VERSION_FEATURE_BIT_3 << 2) | (JPH_VERSION_FEATURE_BIT_4 << 3) | (JPH_VERSION_FEATURE_BIT_5 << 4) | (JPH_VERSION_FEATURE_BIT_6 << 5) | (JPH_VERSION_FEATURE_BIT_7 << 6) | (JPH_VERSION_FEATURE_BIT_8 << 7) | (JPH_VERSION_FEATURE_BIT_9 << 8) | (JPH_VERSION_FEATURE_BIT_10 << 9) | (JPH_VERSION_FEATURE_BIT_11 << 10)) + +// Combine the version and features in a single ID +#define JPH_VERSION_ID ((JPH_VERSION_FEATURES << 24) | (JPH_VERSION_MAJOR << 16) | (JPH_VERSION_MINOR << 8) | JPH_VERSION_PATCH) + +// Determine platform +#if defined(JPH_PLATFORM_BLUE) + // Correct define already defined, this overrides everything else +#elif defined(_WIN32) || defined(_WIN64) + #include + #if WINAPI_FAMILY == WINAPI_FAMILY_APP + #define JPH_PLATFORM_WINDOWS_UWP // Building for Universal Windows Platform + #endif + #define JPH_PLATFORM_WINDOWS +#elif defined(__ANDROID__) // Android is linux too, so that's why we check it first + #define JPH_PLATFORM_ANDROID +#elif defined(__linux__) + #define JPH_PLATFORM_LINUX +#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) + #define JPH_PLATFORM_BSD +#elif defined(__APPLE__) + #include + #if defined(TARGET_OS_IPHONE) && !TARGET_OS_IPHONE + #define JPH_PLATFORM_MACOS + #else + #define JPH_PLATFORM_IOS + #endif +#elif defined(__EMSCRIPTEN__) + #define JPH_PLATFORM_WASM +#endif + +// Platform helper macros +#ifdef JPH_PLATFORM_ANDROID + #define JPH_IF_NOT_ANDROID(x) +#else + #define JPH_IF_NOT_ANDROID(x) x +#endif + +// Determine compiler +#if defined(__clang__) + #define JPH_COMPILER_CLANG +#elif defined(__GNUC__) + #define JPH_COMPILER_GCC +#elif defined(_MSC_VER) + #define JPH_COMPILER_MSVC +#endif + +#if defined(__MINGW64__) || defined (__MINGW32__) + #define JPH_COMPILER_MINGW +#endif + +// Detect CPU architecture +#if defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || defined(_M_IX86) + // X86 CPU architecture + #define JPH_CPU_X86 + #if defined(__x86_64__) || defined(_M_X64) + #define JPH_CPU_ARCH_BITS 64 + #else + #define JPH_CPU_ARCH_BITS 32 + #endif + #define JPH_USE_SSE + #define JPH_VECTOR_ALIGNMENT 16 + #define JPH_DVECTOR_ALIGNMENT 32 + + // Detect enabled instruction sets + #if defined(__AVX512F__) && defined(__AVX512VL__) && defined(__AVX512DQ__) && !defined(JPH_USE_AVX512) + #define JPH_USE_AVX512 + #endif + #if (defined(__AVX2__) || defined(JPH_USE_AVX512)) && !defined(JPH_USE_AVX2) + #define JPH_USE_AVX2 + #endif + #if (defined(__AVX__) || defined(JPH_USE_AVX2)) && !defined(JPH_USE_AVX) + #define JPH_USE_AVX + #endif + #if (defined(__SSE4_2__) || defined(JPH_USE_AVX)) && !defined(JPH_USE_SSE4_2) + #define JPH_USE_SSE4_2 + #endif + #if (defined(__SSE4_1__) || defined(JPH_USE_SSE4_2)) && !defined(JPH_USE_SSE4_1) + #define JPH_USE_SSE4_1 + #endif + #if (defined(__F16C__) || defined(JPH_USE_AVX2)) && !defined(JPH_USE_F16C) + #define JPH_USE_F16C + #endif + #if (defined(__LZCNT__) || defined(JPH_USE_AVX2)) && !defined(JPH_USE_LZCNT) + #define JPH_USE_LZCNT + #endif + #if (defined(__BMI__) || defined(JPH_USE_AVX2)) && !defined(JPH_USE_TZCNT) + #define JPH_USE_TZCNT + #endif + #ifndef JPH_CROSS_PLATFORM_DETERMINISTIC // FMA is not compatible with cross platform determinism + #if defined(JPH_COMPILER_CLANG) || defined(JPH_COMPILER_GCC) + #if defined(__FMA__) && !defined(JPH_USE_FMADD) + #define JPH_USE_FMADD + #endif + #elif defined(JPH_COMPILER_MSVC) + #if defined(__AVX2__) && !defined(JPH_USE_FMADD) // AVX2 also enables fused multiply add + #define JPH_USE_FMADD + #endif + #else + #error Undefined compiler + #endif + #endif +#elif defined(__aarch64__) || defined(_M_ARM64) || defined(__arm__) || defined(_M_ARM) + // ARM CPU architecture + #define JPH_CPU_ARM + #if defined(__aarch64__) || defined(_M_ARM64) + #define JPH_CPU_ARCH_BITS 64 + #define JPH_USE_NEON + #define JPH_VECTOR_ALIGNMENT 16 + #define JPH_DVECTOR_ALIGNMENT 32 + #else + #define JPH_CPU_ARCH_BITS 32 + #define JPH_VECTOR_ALIGNMENT 8 // 32-bit ARM does not support aligning on the stack on 16 byte boundaries + #define JPH_DVECTOR_ALIGNMENT 8 + #endif +#elif defined(__riscv) + // RISC-V CPU architecture + #define JPH_CPU_RISCV + #if __riscv_xlen == 64 + #define JPH_CPU_ARCH_BITS 64 + #define JPH_VECTOR_ALIGNMENT 16 + #define JPH_DVECTOR_ALIGNMENT 32 + #else + #define JPH_CPU_ARCH_BITS 32 + #define JPH_VECTOR_ALIGNMENT 16 + #define JPH_DVECTOR_ALIGNMENT 8 + #endif +#elif defined(JPH_PLATFORM_WASM) + // WebAssembly CPU architecture + #define JPH_CPU_WASM + #if defined(__wasm64__) + #define JPH_CPU_ARCH_BITS 64 + #else + #define JPH_CPU_ARCH_BITS 32 + #endif + #define JPH_VECTOR_ALIGNMENT 16 + #define JPH_DVECTOR_ALIGNMENT 32 + #ifdef __wasm_simd128__ + #define JPH_USE_SSE + #define JPH_USE_SSE4_1 + #define JPH_USE_SSE4_2 + #endif +#elif defined(__powerpc__) || defined(__powerpc64__) + // PowerPC CPU architecture + #define JPH_CPU_PPC + #if defined(__powerpc64__) + #define JPH_CPU_ARCH_BITS 64 + #else + #define JPH_CPU_ARCH_BITS 32 + #endif + #ifdef _BIG_ENDIAN + #define JPH_CPU_BIG_ENDIAN + #endif + #define JPH_VECTOR_ALIGNMENT 16 + #define JPH_DVECTOR_ALIGNMENT 8 +#elif defined(__loongarch__) + // LoongArch CPU architecture + #define JPH_CPU_LOONGARCH + #if defined(__loongarch64) + #define JPH_CPU_ARCH_BITS 64 + #else + #define JPH_CPU_ARCH_BITS 32 + #endif + #define JPH_VECTOR_ALIGNMENT 16 + #define JPH_DVECTOR_ALIGNMENT 8 +#elif defined(__e2k__) + // E2K CPU architecture (MCST Elbrus 2000) + #define JPH_CPU_E2K + #define JPH_CPU_ARCH_BITS 64 + #define JPH_VECTOR_ALIGNMENT 16 + #define JPH_DVECTOR_ALIGNMENT 32 + + // Compiler flags on e2k arch determine CPU features + #if defined(__SSE__) && !defined(JPH_USE_SSE) + #define JPH_USE_SSE + #endif +#else + #error Unsupported CPU architecture +#endif + +// If this define is set, Jolt is compiled as a shared library +#ifdef JPH_SHARED_LIBRARY + #ifdef JPH_BUILD_SHARED_LIBRARY + // While building the shared library, we must export these symbols + #if defined(JPH_PLATFORM_WINDOWS) && !defined(JPH_COMPILER_MINGW) + #define JPH_EXPORT __declspec(dllexport) + #else + #define JPH_EXPORT __attribute__ ((visibility ("default"))) + #if defined(JPH_COMPILER_GCC) + // Prevents an issue with GCC attribute parsing (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69585) + #define JPH_EXPORT_GCC_BUG_WORKAROUND [[gnu::visibility("default")]] + #endif + #endif + #else + // When linking against Jolt, we must import these symbols + #if defined(JPH_PLATFORM_WINDOWS) && !defined(JPH_COMPILER_MINGW) + #define JPH_EXPORT __declspec(dllimport) + #else + #define JPH_EXPORT __attribute__ ((visibility ("default"))) + #if defined(JPH_COMPILER_GCC) + // Prevents an issue with GCC attribute parsing (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69585) + #define JPH_EXPORT_GCC_BUG_WORKAROUND [[gnu::visibility("default")]] + #endif + #endif + #endif +#else + // If the define is not set, we use static linking and symbols don't need to be imported or exported + #define JPH_EXPORT +#endif + +#ifndef JPH_EXPORT_GCC_BUG_WORKAROUND + #define JPH_EXPORT_GCC_BUG_WORKAROUND JPH_EXPORT +#endif + +// Macro used by the RTTI macros to not export a function +#define JPH_NO_EXPORT + +// Pragmas to store / restore the warning state and to disable individual warnings +#ifdef JPH_COMPILER_CLANG +#define JPH_PRAGMA(x) _Pragma(#x) +#define JPH_SUPPRESS_WARNING_PUSH JPH_PRAGMA(clang diagnostic push) +#define JPH_SUPPRESS_WARNING_POP JPH_PRAGMA(clang diagnostic pop) +#define JPH_CLANG_SUPPRESS_WARNING(w) JPH_PRAGMA(clang diagnostic ignored w) +#if __clang_major__ >= 13 + #define JPH_CLANG_13_PLUS_SUPPRESS_WARNING(w) JPH_CLANG_SUPPRESS_WARNING(w) +#else + #define JPH_CLANG_13_PLUS_SUPPRESS_WARNING(w) +#endif +#if __clang_major__ >= 16 + #define JPH_CLANG_16_PLUS_SUPPRESS_WARNING(w) JPH_CLANG_SUPPRESS_WARNING(w) +#else + #define JPH_CLANG_16_PLUS_SUPPRESS_WARNING(w) +#endif +#else +#define JPH_CLANG_SUPPRESS_WARNING(w) +#define JPH_CLANG_13_PLUS_SUPPRESS_WARNING(w) +#define JPH_CLANG_16_PLUS_SUPPRESS_WARNING(w) +#endif +#ifdef JPH_COMPILER_GCC +#define JPH_PRAGMA(x) _Pragma(#x) +#define JPH_SUPPRESS_WARNING_PUSH JPH_PRAGMA(GCC diagnostic push) +#define JPH_SUPPRESS_WARNING_POP JPH_PRAGMA(GCC diagnostic pop) +#define JPH_GCC_SUPPRESS_WARNING(w) JPH_PRAGMA(GCC diagnostic ignored w) +#else +#define JPH_GCC_SUPPRESS_WARNING(w) +#endif +#ifdef JPH_COMPILER_MSVC +#define JPH_PRAGMA(x) __pragma(x) +#define JPH_SUPPRESS_WARNING_PUSH JPH_PRAGMA(warning (push)) +#define JPH_SUPPRESS_WARNING_POP JPH_PRAGMA(warning (pop)) +#define JPH_MSVC_SUPPRESS_WARNING(w) JPH_PRAGMA(warning (disable : w)) +#if _MSC_VER >= 1920 && _MSC_VER < 1930 + #define JPH_MSVC2019_SUPPRESS_WARNING(w) JPH_MSVC_SUPPRESS_WARNING(w) +#else + #define JPH_MSVC2019_SUPPRESS_WARNING(w) +#endif +#if _MSC_VER >= 1950 +#define JPH_MSVC2026_PLUS_SUPPRESS_WARNING(w) JPH_MSVC_SUPPRESS_WARNING(w) +#else +#define JPH_MSVC2026_PLUS_SUPPRESS_WARNING(w) +#endif +#else +#define JPH_MSVC_SUPPRESS_WARNING(w) +#define JPH_MSVC2019_SUPPRESS_WARNING(w) +#define JPH_MSVC2026_PLUS_SUPPRESS_WARNING(w) +#endif + +// Disable common warnings triggered by Jolt when compiling with -Wall +#define JPH_SUPPRESS_WARNINGS \ + JPH_CLANG_SUPPRESS_WARNING("-Wc++98-compat") \ + JPH_CLANG_SUPPRESS_WARNING("-Wc++98-compat-pedantic") \ + JPH_CLANG_SUPPRESS_WARNING("-Wfloat-equal") \ + JPH_CLANG_SUPPRESS_WARNING("-Wsign-conversion") \ + JPH_CLANG_SUPPRESS_WARNING("-Wold-style-cast") \ + JPH_CLANG_SUPPRESS_WARNING("-Wgnu-anonymous-struct") \ + JPH_CLANG_SUPPRESS_WARNING("-Wnested-anon-types") \ + JPH_CLANG_SUPPRESS_WARNING("-Wglobal-constructors") \ + JPH_CLANG_SUPPRESS_WARNING("-Wexit-time-destructors") \ + JPH_CLANG_SUPPRESS_WARNING("-Wnonportable-system-include-path") \ + JPH_CLANG_SUPPRESS_WARNING("-Wlanguage-extension-token") \ + JPH_CLANG_SUPPRESS_WARNING("-Wunused-parameter") \ + JPH_CLANG_SUPPRESS_WARNING("-Wformat-nonliteral") \ + JPH_CLANG_SUPPRESS_WARNING("-Wcovered-switch-default") \ + JPH_CLANG_SUPPRESS_WARNING("-Wcast-align") \ + JPH_CLANG_SUPPRESS_WARNING("-Winvalid-offsetof") \ + JPH_CLANG_SUPPRESS_WARNING("-Wgnu-zero-variadic-macro-arguments") \ + JPH_CLANG_SUPPRESS_WARNING("-Wdocumentation-unknown-command") \ + JPH_CLANG_SUPPRESS_WARNING("-Wctad-maybe-unsupported") \ + JPH_CLANG_SUPPRESS_WARNING("-Wswitch-default") \ + JPH_CLANG_13_PLUS_SUPPRESS_WARNING("-Wdeprecated-copy") \ + JPH_CLANG_13_PLUS_SUPPRESS_WARNING("-Wdeprecated-copy-with-dtor") \ + JPH_CLANG_16_PLUS_SUPPRESS_WARNING("-Wunsafe-buffer-usage") \ + JPH_IF_NOT_ANDROID(JPH_CLANG_SUPPRESS_WARNING("-Wimplicit-int-float-conversion")) \ + \ + JPH_GCC_SUPPRESS_WARNING("-Wcomment") \ + JPH_GCC_SUPPRESS_WARNING("-Winvalid-offsetof") \ + JPH_GCC_SUPPRESS_WARNING("-Wclass-memaccess") \ + JPH_GCC_SUPPRESS_WARNING("-Wpedantic") \ + JPH_GCC_SUPPRESS_WARNING("-Wunused-parameter") \ + JPH_GCC_SUPPRESS_WARNING("-Wmaybe-uninitialized") \ + \ + JPH_MSVC_SUPPRESS_WARNING(4619) /* #pragma warning: there is no warning number 'XXXX' */ \ + JPH_MSVC_SUPPRESS_WARNING(4514) /* 'X' : unreferenced inline function has been removed */ \ + JPH_MSVC_SUPPRESS_WARNING(4710) /* 'X' : function not inlined */ \ + JPH_MSVC_SUPPRESS_WARNING(4711) /* function 'X' selected for automatic inline expansion */ \ + JPH_MSVC_SUPPRESS_WARNING(4714) /* function 'X' marked as __forceinline not inlined */ \ + JPH_MSVC_SUPPRESS_WARNING(4820) /* 'X': 'Y' bytes padding added after data member 'Z' */ \ + JPH_MSVC_SUPPRESS_WARNING(4100) /* 'X' : unreferenced formal parameter */ \ + JPH_MSVC_SUPPRESS_WARNING(4626) /* 'X' : assignment operator was implicitly defined as deleted because a base class assignment operator is inaccessible or deleted */ \ + JPH_MSVC_SUPPRESS_WARNING(5027) /* 'X' : move assignment operator was implicitly defined as deleted because a base class move assignment operator is inaccessible or deleted */ \ + JPH_MSVC_SUPPRESS_WARNING(4365) /* 'argument' : conversion from 'X' to 'Y', signed / unsigned mismatch */ \ + JPH_MSVC_SUPPRESS_WARNING(4324) /* 'X' : structure was padded due to alignment specifier */ \ + JPH_MSVC_SUPPRESS_WARNING(4625) /* 'X' : copy constructor was implicitly defined as deleted because a base class copy constructor is inaccessible or deleted */ \ + JPH_MSVC_SUPPRESS_WARNING(5026) /* 'X': move constructor was implicitly defined as deleted because a base class move constructor is inaccessible or deleted */ \ + JPH_MSVC_SUPPRESS_WARNING(4623) /* 'X' : default constructor was implicitly defined as deleted */ \ + JPH_MSVC_SUPPRESS_WARNING(4201) /* nonstandard extension used: nameless struct/union */ \ + JPH_MSVC_SUPPRESS_WARNING(4371) /* 'X': layout of class may have changed from a previous version of the compiler due to better packing of member 'Y' */ \ + JPH_MSVC_SUPPRESS_WARNING(5045) /* Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified */ \ + JPH_MSVC_SUPPRESS_WARNING(4583) /* 'X': destructor is not implicitly called */ \ + JPH_MSVC_SUPPRESS_WARNING(4582) /* 'X': constructor is not implicitly called */ \ + JPH_MSVC_SUPPRESS_WARNING(5219) /* implicit conversion from 'X' to 'Y', possible loss of data */ \ + JPH_MSVC_SUPPRESS_WARNING(4826) /* Conversion from 'X *' to 'JPH::uint64' is sign-extended. This may cause unexpected runtime behavior. (32-bit) */ \ + JPH_MSVC_SUPPRESS_WARNING(5264) /* 'X': 'const' variable is not used */ \ + JPH_MSVC_SUPPRESS_WARNING(4251) /* class 'X' needs to have DLL-interface to be used by clients of class 'Y' */ \ + JPH_MSVC_SUPPRESS_WARNING(4738) /* storing 32-bit float result in memory, possible loss of performance */ \ + JPH_MSVC2019_SUPPRESS_WARNING(5246) /* the initialization of a subobject should be wrapped in braces */ + +// OS-specific includes +#if defined(JPH_PLATFORM_WINDOWS) + #define JPH_BREAKPOINT __debugbreak() +#elif defined(JPH_PLATFORM_BLUE) + // Configuration for a popular game console. + // This file is not distributed because it would violate an NDA. + // Creating one should only be a couple of minutes of work if you have the documentation for the platform + // (you only need to define JPH_BREAKPOINT, JPH_PLATFORM_BLUE_GET_TICKS, JPH_PLATFORM_BLUE_MUTEX*, JPH_PLATFORM_BLUE_RWLOCK*, JPH_PLATFORM_BLUE_SEMAPHORE* and include the right header). + #include +#elif defined(JPH_PLATFORM_LINUX) || defined(JPH_PLATFORM_ANDROID) || defined(JPH_PLATFORM_MACOS) || defined(JPH_PLATFORM_IOS) || defined(JPH_PLATFORM_BSD) + #if defined(JPH_CPU_X86) + #define JPH_BREAKPOINT __asm volatile ("int $0x3") + #elif defined(JPH_CPU_ARM) || defined(JPH_CPU_RISCV) || defined(JPH_CPU_E2K) || defined(JPH_CPU_PPC) || defined(JPH_CPU_LOONGARCH) + #define JPH_BREAKPOINT __builtin_trap() + #else + #error Unknown CPU architecture + #endif +#elif defined(JPH_PLATFORM_WASM) + #define JPH_BREAKPOINT do { } while (false) // Not supported +#else + #error Unknown platform +#endif + +// Begin the JPH namespace +#define JPH_NAMESPACE_BEGIN \ + JPH_SUPPRESS_WARNING_PUSH \ + JPH_SUPPRESS_WARNINGS \ + namespace JPH { + +// End the JPH namespace +#define JPH_NAMESPACE_END \ + } \ + JPH_SUPPRESS_WARNING_POP + +// Suppress warnings generated by the standard template library +#define JPH_SUPPRESS_WARNINGS_STD_BEGIN \ + JPH_SUPPRESS_WARNING_PUSH \ + JPH_MSVC_SUPPRESS_WARNING(4365) \ + JPH_MSVC_SUPPRESS_WARNING(4619) \ + JPH_MSVC_SUPPRESS_WARNING(4710) \ + JPH_MSVC_SUPPRESS_WARNING(4711) \ + JPH_MSVC_SUPPRESS_WARNING(4820) \ + JPH_MSVC_SUPPRESS_WARNING(4514) \ + JPH_MSVC_SUPPRESS_WARNING(5262) \ + JPH_MSVC_SUPPRESS_WARNING(5264) \ + JPH_MSVC_SUPPRESS_WARNING(4738) \ + JPH_MSVC_SUPPRESS_WARNING(5045) + +#define JPH_SUPPRESS_WARNINGS_STD_END \ + JPH_SUPPRESS_WARNING_POP + +// MSVC STL requires _HAS_EXCEPTIONS=0 if exceptions are turned off +#if defined(JPH_COMPILER_MSVC) && (!defined(__cpp_exceptions) || !__cpp_exceptions) && !defined(_HAS_EXCEPTIONS) + #define _HAS_EXCEPTIONS 0 +#endif + +// Standard C++ includes +JPH_SUPPRESS_WARNINGS_STD_BEGIN +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if defined(JPH_COMPILER_MSVC) || (defined(JPH_COMPILER_CLANG) && defined(_MSC_VER)) // MSVC or clang-cl + #include // for alloca +#endif +#if defined(JPH_USE_SSE) + #include +#elif defined(JPH_USE_NEON) + #ifdef JPH_COMPILER_MSVC + #include + #include + #else + #include + #endif +#endif +JPH_SUPPRESS_WARNINGS_STD_END + +JPH_NAMESPACE_BEGIN + +// Commonly used STL types +using std::min; +using std::max; +using std::abs; +using std::sqrt; +using std::ceil; +using std::floor; +using std::trunc; +using std::round; +using std::fmod; +using std::string_view; +using std::function; +using std::numeric_limits; +using std::isfinite; +using std::isnan; +using std::ostream; +using std::istream; + +// Standard types +using uint = unsigned int; +using uint8 = std::uint8_t; +using uint16 = std::uint16_t; +using uint32 = std::uint32_t; +using uint64 = std::uint64_t; + +// Assert sizes of types +static_assert(sizeof(uint) >= 4, "Invalid size of uint"); +static_assert(sizeof(uint8) == 1, "Invalid size of uint8"); +static_assert(sizeof(uint16) == 2, "Invalid size of uint16"); +static_assert(sizeof(uint32) == 4, "Invalid size of uint32"); +static_assert(sizeof(uint64) == 8, "Invalid size of uint64"); + +// Determine if we want extra debugging code to be active +#if !defined(NDEBUG) && !defined(JPH_NO_DEBUG) + #define JPH_DEBUG +#endif + +// Define inline macro +#if defined(JPH_NO_FORCE_INLINE) + #define JPH_INLINE inline +#elif defined(JPH_COMPILER_CLANG) + #define JPH_INLINE __inline__ __attribute__((always_inline)) +#elif defined(JPH_COMPILER_GCC) + // On gcc 14 using always_inline in debug mode causes error: "inlining failed in call to 'always_inline' 'XXX': function not considered for inlining" + // See: https://github.com/jrouwe/JoltPhysics/issues/1096 + #if __GNUC__ >= 14 && defined(JPH_DEBUG) + #define JPH_INLINE inline + #else + #define JPH_INLINE __inline__ __attribute__((always_inline)) + #endif +#elif defined(JPH_COMPILER_MSVC) + #define JPH_INLINE __forceinline +#else + #error Undefined +#endif + +// Default memory allocation alignment. +// This define can be overridden in case the user provides an Allocate function that has a different alignment than the platform default. +#ifndef JPH_DEFAULT_ALLOCATE_ALIGNMENT + #define JPH_DEFAULT_ALLOCATE_ALIGNMENT __STDCPP_DEFAULT_NEW_ALIGNMENT__ +#endif + +// Cache line size (used for aligning to cache line) +#ifndef JPH_CACHE_LINE_SIZE + #define JPH_CACHE_LINE_SIZE 64 +#endif + +// Define macro to get current function name +#if defined(JPH_COMPILER_CLANG) || defined(JPH_COMPILER_GCC) + #define JPH_FUNCTION_NAME __PRETTY_FUNCTION__ +#elif defined(JPH_COMPILER_MSVC) + #define JPH_FUNCTION_NAME __FUNCTION__ +#else + #error Undefined +#endif + +// Stack allocation +#define JPH_STACK_ALLOC(n) alloca(n) + +// Shorthand for #ifdef JPH_DEBUG / #endif +#ifdef JPH_DEBUG + #define JPH_IF_DEBUG(...) __VA_ARGS__ + #define JPH_IF_NOT_DEBUG(...) +#else + #define JPH_IF_DEBUG(...) + #define JPH_IF_NOT_DEBUG(...) __VA_ARGS__ +#endif + +// Shorthand for #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED / #endif +#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED + #define JPH_IF_FLOATING_POINT_EXCEPTIONS_ENABLED(...) __VA_ARGS__ +#else + #define JPH_IF_FLOATING_POINT_EXCEPTIONS_ENABLED(...) +#endif + +// Helper macros to detect if we're running in single or double precision mode +#ifdef JPH_DOUBLE_PRECISION + #define JPH_IF_SINGLE_PRECISION(...) + #define JPH_IF_SINGLE_PRECISION_ELSE(s, d) d + #define JPH_IF_DOUBLE_PRECISION(...) __VA_ARGS__ +#else + #define JPH_IF_SINGLE_PRECISION(...) __VA_ARGS__ + #define JPH_IF_SINGLE_PRECISION_ELSE(s, d) s + #define JPH_IF_DOUBLE_PRECISION(...) +#endif + +// Helper macro to detect if the debug renderer is active +#ifdef JPH_DEBUG_RENDERER + #define JPH_IF_DEBUG_RENDERER(...) __VA_ARGS__ + #define JPH_IF_NOT_DEBUG_RENDERER(...) +#else + #define JPH_IF_DEBUG_RENDERER(...) + #define JPH_IF_NOT_DEBUG_RENDERER(...) __VA_ARGS__ +#endif + +// Macro to indicate that a parameter / variable is unused +#define JPH_UNUSED(x) (void)x + +// Macro to enable floating point precise mode and to disable fused multiply add instructions +#if defined(JPH_COMPILER_GCC) || defined(JPH_CROSS_PLATFORM_DETERMINISTIC) + // We compile without -ffast-math and -ffp-contract=fast, so we don't need to disable anything + #define JPH_PRECISE_MATH_ON + #define JPH_PRECISE_MATH_OFF +#elif defined(JPH_COMPILER_CLANG) + // We compile without -ffast-math because pragma float_control(precise, on) doesn't seem to actually negate all of the -ffast-math effects and causes the unit tests to fail (even if the pragma is added to all files) + // On clang 14 and later we can turn off float contraction through a pragma (before it was buggy), so if FMA is on we can disable it through this macro + #if (defined(JPH_CPU_ARM) && !defined(JPH_PLATFORM_ANDROID) && __clang_major__ >= 16) || (defined(JPH_CPU_X86) && __clang_major__ >= 14) + #define JPH_PRECISE_MATH_ON \ + _Pragma("float_control(precise, on, push)") \ + _Pragma("clang fp contract(off)") + #define JPH_PRECISE_MATH_OFF \ + _Pragma("float_control(pop)") + #elif __clang_major__ >= 14 && (defined(JPH_USE_FMADD) || defined(FP_FAST_FMA)) + #define JPH_PRECISE_MATH_ON \ + _Pragma("clang fp contract(off)") + #define JPH_PRECISE_MATH_OFF \ + _Pragma("clang fp contract(on)") + #else + #define JPH_PRECISE_MATH_ON + #define JPH_PRECISE_MATH_OFF + #endif +#elif defined(JPH_COMPILER_MSVC) + // Unfortunately there is no way to push the state of fp_contract, so we have to assume it was turned on before JPH_PRECISE_MATH_ON + #define JPH_PRECISE_MATH_ON \ + __pragma(float_control(precise, on, push)) \ + __pragma(fp_contract(off)) + #define JPH_PRECISE_MATH_OFF \ + __pragma(fp_contract(on)) \ + __pragma(float_control(pop)) +#else + #error Undefined +#endif + +// Check if Thread Sanitizer is enabled +#ifdef __has_feature + #if __has_feature(thread_sanitizer) + #define JPH_TSAN_ENABLED + #endif +#else + #ifdef __SANITIZE_THREAD__ + #define JPH_TSAN_ENABLED + #endif +#endif + +// Attribute to disable Thread Sanitizer for a particular function +#ifdef JPH_TSAN_ENABLED + #define JPH_TSAN_NO_SANITIZE __attribute__((no_sanitize("thread"))) +#else + #define JPH_TSAN_NO_SANITIZE +#endif + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/Core/FPControlWord.h b/Engine/lib/JoltPhysics/Jolt/Core/FPControlWord.h new file mode 100644 index 000000000..9fceee463 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/FPControlWord.h @@ -0,0 +1,143 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +#include + +JPH_NAMESPACE_BEGIN + +#if defined(JPH_CPU_WASM) + +// Not supported + +#elif defined(JPH_USE_SSE) + +/// Helper class that needs to be put on the stack to update the state of the floating point control word. +/// This state is kept per thread. +template +class FPControlWord : public NonCopyable +{ +public: + FPControlWord() + { + mPrevState = _mm_getcsr(); + _mm_setcsr((mPrevState & ~Mask) | Value); + } + + ~FPControlWord() + { + _mm_setcsr((_mm_getcsr() & ~Mask) | (mPrevState & Mask)); + } + +private: + uint mPrevState; +}; + +#elif defined(JPH_CPU_ARM) && defined(JPH_COMPILER_MSVC) + +/// Helper class that needs to be put on the stack to update the state of the floating point control word. +/// This state is kept per thread. +template +class FPControlWord : public NonCopyable +{ +public: + FPControlWord() + { + // Read state before change + _controlfp_s(&mPrevState, 0, 0); + + // Update the state + unsigned int dummy; + _controlfp_s(&dummy, Value, Mask); + } + + ~FPControlWord() + { + // Restore state + unsigned int dummy; + _controlfp_s(&dummy, mPrevState, Mask); + } + +private: + unsigned int mPrevState; +}; + +#elif defined(JPH_CPU_ARM) && defined(JPH_USE_NEON) + +/// Helper class that needs to be put on the stack to update the state of the floating point control word. +/// This state is kept per thread. +template +class FPControlWord : public NonCopyable +{ +public: + FPControlWord() + { + uint64 val; + asm volatile("mrs %0, fpcr" : "=r" (val)); + mPrevState = val; + val &= ~Mask; + val |= Value; + asm volatile("msr fpcr, %0" : /* no output */ : "r" (val)); + } + + ~FPControlWord() + { + uint64 val; + asm volatile("mrs %0, fpcr" : "=r" (val)); + val &= ~Mask; + val |= mPrevState & Mask; + asm volatile("msr fpcr, %0" : /* no output */ : "r" (val)); + } + +private: + uint64 mPrevState; +}; + +#elif defined(JPH_CPU_ARM) + +/// Helper class that needs to be put on the stack to update the state of the floating point control word. +/// This state is kept per thread. +template +class FPControlWord : public NonCopyable +{ +public: + FPControlWord() + { + uint32 val; + asm volatile("vmrs %0, fpscr" : "=r" (val)); + mPrevState = val; + val &= ~Mask; + val |= Value; + asm volatile("vmsr fpscr, %0" : /* no output */ : "r" (val)); + } + + ~FPControlWord() + { + uint32 val; + asm volatile("vmrs %0, fpscr" : "=r" (val)); + val &= ~Mask; + val |= mPrevState & Mask; + asm volatile("vmsr fpscr, %0" : /* no output */ : "r" (val)); + } + +private: + uint32 mPrevState; +}; + +#elif defined(JPH_CPU_RISCV) + +// RISC-V only implements manually checking if exceptions occurred by reading the fcsr register. It doesn't generate exceptions. + +#elif defined(JPH_CPU_PPC) || defined(JPH_CPU_LOONGARCH) + +// Not implemented right now + +#else + +#error Unsupported CPU architecture + +#endif + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/Core/FPException.h b/Engine/lib/JoltPhysics/Jolt/Core/FPException.h new file mode 100644 index 000000000..9e22f5422 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/FPException.h @@ -0,0 +1,96 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +#include + +JPH_NAMESPACE_BEGIN + +#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED + +#if defined(JPH_CPU_WASM) + +// Not supported +class FPExceptionsEnable { }; +class FPExceptionDisableInvalid { }; +class FPExceptionDisableDivByZero { }; +class FPExceptionDisableOverflow { }; + +#elif defined(JPH_USE_SSE) + +/// Enable floating point divide by zero exception, overflow exceptions and exceptions on invalid numbers +class FPExceptionsEnable : public FPControlWord<0, _MM_MASK_DIV_ZERO | _MM_MASK_INVALID | _MM_MASK_OVERFLOW> { }; + +/// Disable invalid floating point value exceptions +class FPExceptionDisableInvalid : public FPControlWord<_MM_MASK_INVALID, _MM_MASK_INVALID> { }; + +/// Disable division by zero floating point exceptions +class FPExceptionDisableDivByZero : public FPControlWord<_MM_MASK_DIV_ZERO, _MM_MASK_DIV_ZERO> { }; + +/// Disable floating point overflow exceptions +class FPExceptionDisableOverflow : public FPControlWord<_MM_MASK_OVERFLOW, _MM_MASK_OVERFLOW> { }; + +#elif defined(JPH_CPU_ARM) && defined(JPH_COMPILER_MSVC) + +/// Enable floating point divide by zero exception, overflow exceptions and exceptions on invalid numbers +class FPExceptionsEnable : public FPControlWord<0, _EM_INVALID | _EM_ZERODIVIDE | _EM_OVERFLOW> { }; + +/// Disable invalid floating point value exceptions +class FPExceptionDisableInvalid : public FPControlWord<_EM_INVALID, _EM_INVALID> { }; + +/// Disable division by zero floating point exceptions +class FPExceptionDisableDivByZero : public FPControlWord<_EM_ZERODIVIDE, _EM_ZERODIVIDE> { }; + +/// Disable floating point overflow exceptions +class FPExceptionDisableOverflow : public FPControlWord<_EM_OVERFLOW, _EM_OVERFLOW> { }; + +#elif defined(JPH_CPU_ARM) + +/// Invalid operation exception bit +static constexpr uint64 FP_IOE = 1 << 8; + +/// Enable divide by zero exception bit +static constexpr uint64 FP_DZE = 1 << 9; + +/// Enable floating point overflow bit +static constexpr uint64 FP_OFE = 1 << 10; + +/// Enable floating point divide by zero exception, overflow exceptions and exceptions on invalid numbers +class FPExceptionsEnable : public FPControlWord { }; + +/// Disable invalid floating point value exceptions +class FPExceptionDisableInvalid : public FPControlWord<0, FP_IOE> { }; + +/// Disable division by zero floating point exceptions +class FPExceptionDisableDivByZero : public FPControlWord<0, FP_DZE> { }; + +/// Disable floating point overflow exceptions +class FPExceptionDisableOverflow : public FPControlWord<0, FP_OFE> { }; + +#elif defined(JPH_CPU_RISCV) + +#error "RISC-V only implements manually checking if exceptions occurred by reading the fcsr register. It doesn't generate exceptions. JPH_FLOATING_POINT_EXCEPTIONS_ENABLED must be disabled." + +#elif defined(JPH_CPU_PPC) + +#error PowerPC floating point exception handling to be implemented. JPH_FLOATING_POINT_EXCEPTIONS_ENABLED must be disabled. + +#else + +#error Unsupported CPU architecture + +#endif + +#else + +/// Dummy implementations +class FPExceptionsEnable { }; +class FPExceptionDisableInvalid { }; +class FPExceptionDisableDivByZero { }; +class FPExceptionDisableOverflow { }; + +#endif + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/Core/FPFlushDenormals.h b/Engine/lib/JoltPhysics/Jolt/Core/FPFlushDenormals.h new file mode 100644 index 000000000..74a2c10b3 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/FPFlushDenormals.h @@ -0,0 +1,43 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +#include + +JPH_NAMESPACE_BEGIN + +#if defined(JPH_CPU_WASM) || defined(JPH_CPU_RISCV) || defined(JPH_CPU_PPC) || defined(JPH_CPU_LOONGARCH) + +// Not supported +class FPFlushDenormals { }; + +#elif defined(JPH_USE_SSE) + +/// Helper class that needs to be put on the stack to enable flushing denormals to zero +/// This can make floating point operations much faster when working with very small numbers +class FPFlushDenormals : public FPControlWord<_MM_FLUSH_ZERO_ON, _MM_FLUSH_ZERO_MASK> { }; + +#elif defined(JPH_CPU_ARM) && defined(JPH_COMPILER_MSVC) + +/// Helper class that needs to be put on the stack to enable flushing denormals to zero +/// This can make floating point operations much faster when working with very small numbers +class FPFlushDenormals : public FPControlWord<_DN_FLUSH, _MCW_DN> { }; + +#elif defined(JPH_CPU_ARM) + +/// Flush denormals to zero bit +static constexpr uint64 FP_FZ = 1 << 24; + +/// Helper class that needs to be put on the stack to enable flushing denormals to zero +/// This can make floating point operations much faster when working with very small numbers +class FPFlushDenormals : public FPControlWord { }; + +#else + +#error Unsupported CPU architecture + +#endif + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/Core/Factory.cpp b/Engine/lib/JoltPhysics/Jolt/Core/Factory.cpp new file mode 100644 index 000000000..1890c037f --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/Factory.cpp @@ -0,0 +1,92 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#include + +#include + +JPH_NAMESPACE_BEGIN + +Factory *Factory::sInstance = nullptr; + +void *Factory::CreateObject(const char *inName) +{ + const RTTI *ci = Find(inName); + return ci != nullptr? ci->CreateObject() : nullptr; +} + +const RTTI *Factory::Find(const char *inName) +{ + ClassNameMap::iterator c = mClassNameMap.find(inName); + return c != mClassNameMap.end()? c->second : nullptr; +} + +const RTTI *Factory::Find(uint32 inHash) +{ + ClassHashMap::iterator c = mClassHashMap.find(inHash); + return c != mClassHashMap.end()? c->second : nullptr; +} + +bool Factory::Register(const RTTI *inRTTI) +{ + // Check if we already know the type + if (Find(inRTTI->GetName()) != nullptr) + return true; + + // Insert this class by name + mClassNameMap.try_emplace(inRTTI->GetName(), inRTTI); + + // Insert this class by hash + if (!mClassHashMap.try_emplace(inRTTI->GetHash(), inRTTI).second) + { + JPH_ASSERT(false, "Hash collision registering type!"); + return false; + } + + // Register base classes + for (int i = 0; i < inRTTI->GetBaseClassCount(); ++i) + if (!Register(inRTTI->GetBaseClass(i))) + return false; + +#ifdef JPH_OBJECT_STREAM + // Register attribute classes + for (int i = 0; i < inRTTI->GetAttributeCount(); ++i) + { + const RTTI *rtti = inRTTI->GetAttribute(i).GetMemberPrimitiveType(); + if (rtti != nullptr && !Register(rtti)) + return false; + } +#endif // JPH_OBJECT_STREAM + + return true; +} + +bool Factory::Register(const RTTI **inRTTIs, uint inNumber) +{ + mClassHashMap.reserve(mClassHashMap.size() + inNumber); + mClassNameMap.reserve(mClassNameMap.size() + inNumber); + + for (const RTTI **rtti = inRTTIs; rtti < inRTTIs + inNumber; ++rtti) + if (!Register(*rtti)) + return false; + + return true; +} + +void Factory::Clear() +{ + mClassNameMap.clear(); + mClassHashMap.clear(); +} + +Array Factory::GetAllClasses() const +{ + Array all_classes; + all_classes.reserve(mClassNameMap.size()); + for (const ClassNameMap::value_type &c : mClassNameMap) + all_classes.push_back(c.second); + return all_classes; +} + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/Core/Factory.h b/Engine/lib/JoltPhysics/Jolt/Core/Factory.h new file mode 100644 index 000000000..557f38173 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/Factory.h @@ -0,0 +1,54 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +#include +#include + +JPH_NAMESPACE_BEGIN + +/// This class is responsible for creating instances of classes based on their name or hash and is mainly used for deserialization of saved data. +class JPH_EXPORT Factory +{ +public: + JPH_OVERRIDE_NEW_DELETE + + /// Create an object + void * CreateObject(const char *inName); + + /// Find type info for a specific class by name + const RTTI * Find(const char *inName); + + /// Find type info for a specific class by hash + const RTTI * Find(uint32 inHash); + + /// Register an object with the factory. Returns false on failure. + bool Register(const RTTI *inRTTI); + + /// Register a list of objects with the factory. Returns false on failure. + bool Register(const RTTI **inRTTIs, uint inNumber); + + /// Unregisters all types + void Clear(); + + /// Get all registered classes + Array GetAllClasses() const; + + /// Singleton factory instance + static Factory * sInstance; + +private: + using ClassNameMap = UnorderedMap; + + using ClassHashMap = UnorderedMap; + + /// Map of class names to type info + ClassNameMap mClassNameMap; + + // Map of class hash to type info + ClassHashMap mClassHashMap; +}; + +JPH_NAMESPACE_END diff --git a/Engine/lib/JoltPhysics/Jolt/Core/FixedSizeFreeList.h b/Engine/lib/JoltPhysics/Jolt/Core/FixedSizeFreeList.h new file mode 100644 index 000000000..51f2d1368 --- /dev/null +++ b/Engine/lib/JoltPhysics/Jolt/Core/FixedSizeFreeList.h @@ -0,0 +1,122 @@ +// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) +// SPDX-FileCopyrightText: 2021 Jorrit Rouwe +// SPDX-License-Identifier: MIT + +#pragma once + +#include +#include +#include + +JPH_NAMESPACE_BEGIN + +/// Class that allows lock free creation / destruction of objects (unless a new page of objects needs to be allocated) +/// It contains a fixed pool of objects and also allows batching up a lot of objects to be destroyed +/// and doing the actual free in a single atomic operation +template +class FixedSizeFreeList : public NonCopyable +{ +private: + /// Storage type for an Object + struct ObjectStorage + { + /// The object we're storing + Object mObject; + + /// When the object is freed (or in the process of being freed as a batch) this will contain the next free object + /// When an object is in use it will contain the object's index in the free list + atomic