Getting to the way it's supposed to be!

This commit is contained in:
2024-10-12 00:43:51 +02:00
parent 84729f9d27
commit 8f2dad9cec
2663 changed files with 540071 additions and 14 deletions

10
modules/ufbx/.gitattributes vendored Normal file
View File

@@ -0,0 +1,10 @@
* text=auto
# Treat all .fbx/.obj/.mtl files (even ASCII) as binary
*.fbx binary
*.obj binary
*.mtl binary
*.png binary
*.mcx binary
*.mc binary

19
modules/ufbx/.github/codecov.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
coverage:
status:
project:
default:
informational: true
patch:
default:
informational: true
parsers:
gcov:
branch_detection:
conditional: yes
loop: yes
method: yes
macro: yes
ignore:
- "test"
comment:
layout: "diff"

500
modules/ufbx/.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,500 @@
name: CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
# Cancel any in-flight jobs for the same PR/branch so there's only one active
# at a time
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
ci_pre_hashes:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Compile hash_scene
run: |
mkdir build
clang test/hash_scene.c misc/fdlibm.c -O2 -o build/hash_scene
- name: Generate reference hashes
run: |
python3 misc/generate_hashses.py --exe build/hash_scene -o build/hashes.txt --verbose
- name: Upload reference hashes
uses: actions/upload-artifact@v3
with:
name: reference-hashes
path: build/hashes.txt
ci_ubuntu:
runs-on: ubuntu-20.04
needs: ci_pre_hashes
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Update apt
run: sudo apt-get update
- name: Install apt dependencies
run: sudo apt-get install -y gcc-multilib g++-multilib lcov llvm-11
- name: Download reference hashes
uses: actions/download-artifact@v3
with:
name: reference-hashes
path: build
- name: Run tests
run: python3 misc/run_tests.py tests stack readme threadcheck hashes --runner ci_linux
- name: Verbose test info
run: build/runner_clang_release_x64/runner -d data -v
- name: Generate coverage
run: LLVM_COV=llvm-cov-11 bash misc/generate_coverage.sh
- name: Upload coverage
run: bash <(curl -s https://codecov.io/bash) -f coverage.lcov -y .github/codecov.yml
- name: Compress hashdumps
if: ${{ always() && !cancelled() }}
run: python3 misc/hash_diff.py compress build/hashdumps -o build/hashdump_ci_linux.txt.gz
- name: Upload hashdumps
uses: actions/upload-artifact@v3
if: ${{ always() && !cancelled() }}
with:
name: hash-dumps
path: build/hashdump_ci_linux.txt.gz
ci_windows:
runs-on: windows-2019
needs: ci_pre_hashes
steps:
- uses: actions/checkout@v3
- name: Download reference hashes
uses: actions/download-artifact@v3
with:
name: reference-hashes
path: build
- run: type build\hashes.txt
- name: Run tests
run: python misc/run_tests.py tests stack readme threadcheck hashes --runner ci_windows
- name: Verbose test info
run: build\runner_vs_cl64_release_x64\runner.exe -d data -v
- name: Compress hashdumps
if: ${{ always() && !cancelled() }}
run: python3 misc/hash_diff.py compress build/hashdumps -o build/hashdump_ci_windows.txt.gz
- name: Upload hashdumps
uses: actions/upload-artifact@v3
if: ${{ always() && !cancelled() }}
with:
name: hash-dumps
path: build/hashdump_ci_windows.txt.gz
ci_macos:
runs-on: macos-11
needs: ci_pre_hashes
steps:
- uses: actions/checkout@v3
- name: Download reference hashes
uses: actions/download-artifact@v3
with:
name: reference-hashes
path: build
- name: Run tests
run: python3 misc/run_tests.py tests stack readme threadcheck hashes --remove-compiler gcc --additional-compiler gcc-11 --remove-arch x86 --runner ci_macos
- name: Compile ufbx as Objective C
run: clang -Wall -Wextra -Werror -ObjC -c ufbx.c -o build/ufbx-objc.o
- name: Compress hashdumps
if: ${{ always() && !cancelled() }}
run: python3 misc/hash_diff.py compress build/hashdumps -o build/hashdump_ci_macos.txt.gz
- name: Upload hashdumps
uses: actions/upload-artifact@v3
if: ${{ always() && !cancelled() }}
with:
name: hash-dumps
path: build/hashdump_ci_macos.txt.gz
ci_picort:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run picort
run: python misc/run_tests.py picort
- name: Upload result images
env:
BUNNY_API_TOKEN: ${{ secrets.BUNNY_API_TOKEN }}
if: ${{ always() && !cancelled() }}
continue-on-error: true
run: |
HASH="$(git rev-parse --short=16 HEAD)"
URL="https://storage.bunnycdn.com/ufbx-images/$HASH"
DST_URL="https://ufbx-images.b-cdn.net/$HASH"
curl -sS -w " -> $DST_URL/barbarian.png \n" --request PUT --header "AccessKey: $BUNNY_API_TOKEN" --header "Content-Type: image/png" --url $URL/barbarian.png --data-binary @build/images/barbarian.png
curl -sS -w " -> $DST_URL/barbarian-scalar.png \n" --request PUT --header "AccessKey: $BUNNY_API_TOKEN" --header "Content-Type: image/png" --url $URL/barbarian-scalar.png --data-binary @build/images/barbarian-scalar.png
curl -sS -w " -> $DST_URL/barbarian-big.png \n" --request PUT --header "AccessKey: $BUNNY_API_TOKEN" --header "Content-Type: image/png" --url $URL/barbarian-big.png --data-binary @build/images/barbarian-big.png
curl -sS -w " -> $DST_URL/slime-binary.png \n" --request PUT --header "AccessKey: $BUNNY_API_TOKEN" --header "Content-Type: image/png" --url $URL/slime-binary.png --data-binary @build/images/slime-binary.png
curl -sS -w " -> $DST_URL/slime-ascii.png \n" --request PUT --header "AccessKey: $BUNNY_API_TOKEN" --header "Content-Type: image/png" --url $URL/slime-ascii.png --data-binary @build/images/slime-ascii.png
curl -sS -w " -> $DST_URL/slime-big.png \n" --request PUT --header "AccessKey: $BUNNY_API_TOKEN" --header "Content-Type: image/png" --url $URL/slime-big.png --data-binary @build/images/slime-big.png
ci_domfuzz:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run domfuzz/objfuzz
run: python misc/run_tests.py domfuzz objfuzz
ci_viewer:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run viewer
run: python misc/run_tests.py viewer
ci_features:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Compile feature permutations
run: python misc/run_tests.py features
ci_analysis:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Update apt
run: sudo apt-get update
- name: Install apt dependencies
run: sudo apt-get install -y cppcheck
- name: Install PIP dependencies
run: sudo pip3 install pcpp pycparser
- name: Prepare directories
run: mkdir build
- name: cppcheck
run: cppcheck --error-exitcode=1 --inline-suppr --std=c99 ufbx.c -DUFBX_STATIC_ANALYSIS=1
- name: Clang Analyzer
if: ${{ always() && !cancelled() }}
run: clang --analyze -Xanalyzer -analyzer-werror -Xanalyzer -analyzer-disable-checker=unix.Malloc ufbx.c
- name: Get Clang debug stack usage
if: ${{ always() && !cancelled() }}
run: clang -fstack-usage -DUFBX_DEV -DUFBX_STANDARD_C -c ufbx.c -o build/ufbx-clang-debug.o
- name: Get Clang release stack usage
if: ${{ always() && !cancelled() }}
run: clang -fstack-usage -DUFBX_DEV -O2 -c ufbx.c -o build/ufbx-clang-release.o
- name: Get GCC debug stack usage
if: ${{ always() && !cancelled() }}
run: gcc -fstack-usage -DUFBX_DEV -DUFBX_STANDARD_C -c ufbx.c -o build/ufbx-gcc-debug.o
- name: Get GCC release stack usage
if: ${{ always() && !cancelled() }}
run: gcc -fstack-usage -DUFBX_DEV -O2 -c ufbx.c -o build/ufbx-gcc-release.o
- name: Parse ufbx.c to AST for analysis
if: ${{ always() && !cancelled() }}
run: python3 misc/analyze_stack.py --no-su --cache build/ufbx-cache.pickle
- name: Analyze Clang debug stack
if: ${{ always() && !cancelled() }}
run: python3 misc/analyze_stack.py build/ufbx-clang-debug.su --limit 0x20000 --cache build/ufbx-cache.pickle
- name: Analyze Clang release stack
if: ${{ always() && !cancelled() }}
run: python3 misc/analyze_stack.py build/ufbx-clang-release.su --limit 0x10000 --cache build/ufbx-cache.pickle
- name: Analyze GCC debug stack
if: ${{ always() && !cancelled() }}
run: python3 misc/analyze_stack.py build/ufbx-gcc-debug.su --limit 0x20000 --cache build/ufbx-cache.pickle
- name: Analyze GCC release stack
if: ${{ always() && !cancelled() }}
run: python3 misc/analyze_stack.py build/ufbx-gcc-release.su --limit 0x10000 --cache build/ufbx-cache.pickle
ci_compat:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Update apt
run: sudo apt-get update
- name: Install apt dependencies
run: sudo apt-get install -y gcc-multilib g++-multilib
- name: Copy the current ufbx.h to ufbx_new.h
run: cp ufbx.h ufbx_new.h
- name: Downgrade to oldest compatible header
run: bash misc/downgrade_header.sh
- name: Run tests with old header (source compatability)
run: python3 misc/run_tests.py tests --no-sanitize --runner ci_compat
- name: Run tests with new header in ufbx.c, old header in runner.c (ABI compatability)
run: python3 misc/run_tests.py tests --no-sanitize-arch x86 --runner ci_compat --define UFBX_HEADER_PATH=\"ufbx_new.h\"
ci_lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Check formatting
if: ${{ always() && !cancelled() }}
run: python3 misc/check_formatting.py ufbx.c ufbx.h
- name: Check for typos
if: ${{ always() && !cancelled() }}
uses: crate-ci/typos@master
with:
files: ufbx.h ufbx.c
config: ./misc/typos.toml
ci_bindgen:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Create bindgen/build directory
run: mkdir bindgen/build
- name: Parse ufbx.h
run: python3 bindgen/ufbx_parser.py
- name: Generate typed IR
run: python3 bindgen/ufbx_ir.py
ci_exotic:
runs-on: ubuntu-latest
needs: ci_pre_hashes
steps:
- uses: actions/checkout@v3
- name: Download reference hashes
uses: actions/download-artifact@v3
with:
name: reference-hashes
path: build
- name: Update apt
run: sudo apt-get update
- name: Install apt dependencies
run: sudo apt-get install -y tcc qemu qemu-user gcc-multilib
- name: Install zig cc via PIP
run: sudo pip3 install ziglang
- name: Run tests with TCC
run: python3 misc/run_tests.py tests hashes --additional-compiler tcc --compiler tcc --remove-arch x86 --runner ci_exotic
- name: Compile ufbx.c wth x86 TCC
run: i386-tcc -Wall -Werror -c ufbx.c -o build/tcc-ufbx-x86.o
- name: Compile PowerPC tests
run: python3 -m ziglang cc -fno-sanitize=undefined -target powerpc-linux -DUFBX_DEV ufbx.c test/runner.c -g -o build/ppc-runner
- name: Run PowerPC tests
run: qemu-ppc build/ppc-runner -d data
- name: Compile PowerPC hash_scene
run: |
python3 -m ziglang cc -fno-sanitize=undefined -ffp-contract=off -target powerpc-linux misc/fdlibm.c test/hash_scene.c -g -o build/ppc_hasher_debug
python3 -m ziglang cc -fno-sanitize=undefined -ffp-contract=off -O2 -target powerpc-linux misc/fdlibm.c test/hash_scene.c -g -o build/ppc_hasher_release
- name: Check PowerPC hashes
run: |
qemu-ppc build/ppc_hasher_debug --check build/hashes.txt --dump build/hashdumps/ci_exotic_powerpc_debug.txt --max-dump-errors 3
qemu-ppc build/ppc_hasher_release --check build/hashes.txt --dump build/hashdumps/ci_exotic_powerpc_release.txt --max-dump-errors 3
- name: Compile runner with fdlibm
run: clang -DUFBX_NO_MATH_H -DUFBX_MATH_PREFIX=fdlibm_ ufbx.c test/runner.c misc/fdlibm.c -lm -o build/fdlibm_runner
- name: Run tests using fdlibm
run: build/fdlibm_runner -d data
- name: Compile runner.c
run: gcc -c test/runner.c -o build/runner.o
- name: Build and run standard C99
run: |
gcc -Wall -Wextra -Werror -Wno-unused-function -std=c99 -DUFBX_STANDARD_C build/runner.o ufbx.c -lm -o build/runner-c99
build/runner-c99 -d data --allow-non-thread-safe
- name: Build and run standard C11
run: |
gcc -Wall -Wextra -Werror -Wno-unused-function -std=c11 -DUFBX_STANDARD_C build/runner.o ufbx.c -lm -o build/runner-c11
build/runner-c11 -d data
- name: Build and run standard C++98
run: |
g++ -Wall -Wextra -Werror -Wno-unused-function -std=c++98 -DUFBX_STANDARD_C build/runner.o -x c++ ufbx.c -lm -o build/runner-cpp98
build/runner-cpp98 -d data --allow-non-thread-safe
- name: Build and run standard C++11
run: |
g++ -Wall -Wextra -Werror -Wno-unused-function -std=c++11 -DUFBX_STANDARD_C build/runner.o -x c++ ufbx.c -lm -o build/runner-cpp11
build/runner-cpp11 -d data
- name: Build and run threadcheck (standard C11)
run: |
gcc -Wall -Wextra -Werror -Wno-unused-function -std=c11 -DUFBX_STANDARD_C -c ufbx.c -o build/ufbx-c11.o
g++ -Wall -Wextra -Werror -Wno-unused-function -pthread -std=c++11 build/ufbx-c11.o test/threadcheck.cpp -lm -o build/threadcheck-c11
build/threadcheck-c11 data/maya_cube_7500_binary.fbx 2
- name: Build and run threadcheck (standard C++11)
run: |
g++ -Wall -Wextra -Werror -Wno-unused-function -pthread -std=c++11 -DUFBX_STANDARD_C -x c++ ufbx.c test/threadcheck.cpp -lm -o build/threadcheck-cpp11
build/threadcheck-cpp11 data/maya_cube_7500_binary.fbx 2
- name: Compress hashdumps
if: ${{ always() && !cancelled() }}
run: python3 misc/hash_diff.py compress build/hashdumps -o build/hashdump_ci_exotic.txt.gz
- name: Upload hashdumps
uses: actions/upload-artifact@v3
if: ${{ always() && !cancelled() }}
with:
name: hash-dumps
path: build/hashdump_ci_exotic.txt.gz
ci_hasher:
runs-on: ubuntu-latest
needs: ci_pre_hashes
steps:
- uses: actions/checkout@v3
- name: Prepare directories
run: |
mkdir build
mkdir build/hashdumps
- name: Download reference hashes
uses: actions/download-artifact@v3
with:
name: reference-hashes
path: build
- name: Compile and run hash_scene with various configurations
run: |
clang test/hash_scene.c misc/fdlibm.c -O2 -o build/hash_scene
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_x64_release.txt --max-dump-errors 3
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_unbuffered_x64_release.txt --max-dump-errors 3 --no-read-buffer
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_dedicated_x64_release.txt --max-dump-errors 3 --dedicated-allocs
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_linear_x64_release.txt --max-dump-errors 3 --dedicated-allocs --allocator linear
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_linear_reverse_x64_release.txt --max-dump-errors 3 --dedicated-allocs --allocator linear-reverse
clang -DUFBX_DEV -DUFBX_REGRESSION test/hash_scene.c misc/fdlibm.c -O2 -o build/hash_scene
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_regression_x64_release.txt --max-dump-errors 3
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_regression_unbuffered_x64_release.txt --max-dump-errors 3 --no-read-buffer
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_regression_dedicated_x64_release.txt --max-dump-errors 3 --dedicated-allocs
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_regression_linear_x64_release.txt --max-dump-errors 3 --dedicated-allocs --allocator linear
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_regression_linear_reverse_x64_release.txt --max-dump-errors 3 --dedicated-allocs --allocator linear-reverse
clang -fshort-enums -fshort-wchar test/hash_scene.c misc/fdlibm.c -O2 -o build/hash_scene
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_short_x64_release.txt --max-dump-errors 3
clang -fsigned-char test/hash_scene.c misc/fdlibm.c -O2 -o build/hash_scene
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_schar_x64_release.txt --max-dump-errors 3
clang -funsigned-char test/hash_scene.c misc/fdlibm.c -O2 -o build/hash_scene
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_uchar_x64_release.txt --max-dump-errors 3
clang -DUFBX_STANDARD_C -DUFBX_DEV -DUFBX_REGRESSION test/hash_scene.c misc/fdlibm.c -O2 -o build/hash_scene
build/hash_scene --check build/hashes.txt --dump build/hashdumps/ci_hasher_stdc_x64_release.txt --max-dump-errors 3
- name: Compress hashdumps
if: ${{ always() && !cancelled() }}
run: python3 misc/hash_diff.py compress build/hashdumps -o build/hashdump_ci_hasher.txt.gz
- name: Upload hashdumps
uses: actions/upload-artifact@v3
if: ${{ always() && !cancelled() }}
with:
name: hash-dumps
path: build/hashdump_ci_hasher.txt.gz
ci_wasm:
runs-on: ubuntu-latest
needs: ci_pre_hashes
steps:
- uses: actions/checkout@v3
- name: Install wasi-sdk
run: |
mkdir build
export WASI_VERSION=17
export WASI_VERSION_FULL=${WASI_VERSION}.0
curl -L https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_VERSION}/wasi-sdk-${WASI_VERSION_FULL}-linux.tar.gz -o build/wasi-sdk.tar.gz
tar xzf build/wasi-sdk.tar.gz -C build
mv build/wasi-sdk-${WASI_VERSION_FULL} build/wasi-sdk
- name: Install wasmtime
run: |
curl https://wasmtime.dev/install.sh -sSf > wasmtime-install.sh
bash wasmtime-install.sh --version v4.0.0
echo "$HOME/.wasmtime/bin" >> $GITHUB_PATH
- name: Test wasmtime
run: wasmtime --version
- name: Download reference hashes
uses: actions/download-artifact@v3
with:
name: reference-hashes
path: build
- name: Run tests
run: python3 misc/run_tests.py tests hashes --wasi-sdk build/wasi-sdk --compiler wasi_clang --runner ci_wasm
- name: Compress hashdumps
if: ${{ always() && !cancelled() }}
run: python3 misc/hash_diff.py compress build/hashdumps -o build/hashdump_ci_wasm.txt.gz
- name: Upload hashdumps
uses: actions/upload-artifact@v3
if: ${{ always() && !cancelled() }}
with:
name: hash-dumps
path: build/hashdump_ci_wasm.txt.gz
ci_arm32:
runs-on: [self-hosted, ARM]
needs: ci_pre_hashes
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Download reference hashes
uses: actions/download-artifact@v3
with:
name: reference-hashes
path: build
- name: Run tests
run: python3 misc/run_tests.py tests stack hashes --no-sanitize --threads 2 --runner ci_arm64
- name: Compress hashdumps
if: ${{ always() && !cancelled() }}
run: python3 misc/hash_diff.py compress build/hashdumps -o build/hashdump_ci_arm32.txt.gz
- name: Upload hashdumps
uses: actions/upload-artifact@v3
if: ${{ always() && !cancelled() }}
with:
name: hash-dumps
path: build/hashdump_ci_arm32.txt.gz
ci_arm64:
runs-on: [self-hosted, ARM64]
needs: ci_pre_hashes
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Download reference hashes
uses: actions/download-artifact@v3
with:
name: reference-hashes
path: build
- name: Run tests
run: python3 misc/run_tests.py tests stack hashes --no-sanitize --threads 2 --runner ci_arm64
- name: Compress hashdumps
if: ${{ always() && !cancelled() }}
run: python3 misc/hash_diff.py compress build/hashdumps -o build/hashdump_ci_arm64.txt.gz
- name: Upload hashdumps
uses: actions/upload-artifact@v3
if: ${{ always() && !cancelled() }}
with:
name: hash-dumps
path: build/hashdump_ci_arm64.txt.gz
ci_dataset:
runs-on: [self-hosted, ARM64]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Create build directory
run: mkdir build
- name: Compile check_fbx.c
run: clang -O2 test/check_fbx.c -lm -o build/check_fbx
- name: Run dataset tests
run: python3 misc/check_dataset.py --exe build/check_fbx --root /mnt/fbx-files --host-url https://ufbx-dataset.b-cdn.net
ci_post_hashes:
runs-on: ubuntu-latest
if: ${{ always() }}
needs: [ci_ubuntu, ci_windows, ci_macos, ci_wasm, ci_arm32, ci_arm64, ci_exotic, ci_hasher]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Compile hash_scene
run: |
mkdir build
clang test/hash_scene.c misc/fdlibm.c -O2 -o build/hash_scene
- name: Download combined hashdumps
uses: actions/download-artifact@v3
with:
name: hash-dumps
path: build/ci-hashdumps
- name: List files to dump
run: python3 misc/hash_diff.py list build/ci-hashdumps -o build/dumped-files.txt
- name: Dump reference hashes
run: |
mkdir build/ref-hashdumps
build/hash_scene --check build/dumped-files.txt --dump build/ref-hashdumps/reference_linux_x64_release.txt --dump-all
- name: Compress reference hashdumps
run: python3 misc/hash_diff.py compress build/ref-hashdumps -o build/hashdump_ci_reference.txt.gz
- name: Diff CI and reference dumps
run: python3 misc/hash_diff.py diff build/ci-hashdumps --ref build/hashdump_ci_reference.txt.gz
- name: Upload reference hashdumps
uses: actions/upload-artifact@v3
if: ${{ always() && !cancelled() }}
with:
name: hash-dumps
path: build/hashdump_ci_reference.txt.gz

19
modules/ufbx/.gitignore vendored Normal file
View File

@@ -0,0 +1,19 @@
# Project files
proj/
# Build output
build/
# Python cache files
__pycache__/
# Editor files
.vscode/
# Coverage files
*.lcov
*.gcov
*.gcda
*.gcno

39
modules/ufbx/LICENSE Normal file
View File

@@ -0,0 +1,39 @@
------------------------------------------------------------------------------
This software is available under 2 licenses -- choose whichever you prefer.
------------------------------------------------------------------------------
ALTERNATIVE A - MIT License
Copyright (c) 2020 Samuli Raivio
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
------------------------------------------------------------------------------
ALTERNATIVE B - Public Domain (www.unlicense.org)
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
software, either in source code form or as a compiled binary, for any purpose,
commercial or non-commercial, and by any means.
In jurisdictions that recognize copyright laws, the author or authors of this
software dedicate any and all copyright interest in the software to the public
domain. We make this dedication for the benefit of the public at large and to
the detriment of our heirs and successors. We intend this dedication to be an
overt act of relinquishment in perpetuity of all present and future rights to
this software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----------------------------------------

145
modules/ufbx/README.md Normal file
View File

@@ -0,0 +1,145 @@
# ufbx [![CI](https://github.com/bqqbarbhg/ufbx/actions/workflows/ci.yml/badge.svg)](https://github.com/bqqbarbhg/ufbx/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/bqqbarbhg/ufbx/branch/master/graph/badge.svg)](https://codecov.io/gh/bqqbarbhg/ufbx)
Single source file FBX file loader.
```cpp
ufbx_load_opts opts = { 0 }; // Optional, pass NULL for defaults
ufbx_error error; // Optional, pass NULL if you don't care about errors
ufbx_scene *scene = ufbx_load_file("thing.fbx", &opts, &error);
if (!scene) {
fprintf(stderr, "Failed to load: %s\n", error.description.data);
exit(1);
}
// Use and inspect `scene`, it's just plain data!
// Let's just list all objects within the scene for example:
for (size_t i = 0; i < scene->nodes.count; i++) {
ufbx_node *node = scene->nodes.data[i];
if (node->is_root) continue;
printf("Object: %s\n", node->name.data);
if (node->mesh) {
printf("-> mesh with %zu faces\n", node->mesh->faces.count);
}
}
ufbx_free_scene(scene);
```
## Setup
Copy `ufbx.h` and `ufbx.c` to your project, `ufbx.c` needs to be compiled as
C99/C++11 or more recent. You can also add `misc/ufbx.natvis` to get debug
formatting for the types.
## Features
The goal is to be at feature parity with the official FBX SDK.
* Supports binary and ASCII FBX files starting from version 3000
* Safe
* Invalid files and out-of-memory conditions are handled gracefully
* Loaded scenes are sanitized by default, no out-of-bounds indices or non-UTF-8 strings
* Extensively [tested](#testing)
* Various object types
* Meshes, skinning, blend shapes
* Lights and cameras
* Embedded textures
* NURBS curves and surfaces
* Geometry caches
* LOD groups
* Display/selection sets
* Rigging constraints
* Unified PBR material from known vendor-specific materials
* Various utilities for evaluating the scene (can be compiled out if not needed)
* Polygon triangulation
* Index generation
* Animation curve evaluation / layer blending
* CPU skinning evaluation
* Subdivision surface evaluation
* NURBS curve/surface tessellation
* Progress reporting and cancellation
* Support for Wavefront `.obj` files as well
## Platforms
The library is written in portable C (also compiles as C++) and should work on
almost any platform without modification. If compiled as pre-C11/C++11 on an
unknown compiler (not MSVC/Clang/GCC/TCC), some functions will not be
thread-safe as C99 does not have support for atomics.
The following platforms are tested on CI and produce bit-exact results:
* Windows: MSVC x64/x86, Clang x64/x86, GCC MinGW x64
* macOS: Clang x64, GCC x64
* Linux: Clang x64/x86/ARM64/ARM32/PowerPC, GCC x64/x86/ARM64/ARM32, TCC x64/x86
* WASI: Clang WASM
## Testing
* Internal tests run on all platforms listed above
* Fuzzed in multiple layers
* Parsers (fbx binary/fbx ascii/deflate/xml/mcx/obj/mtl) fuzzed via AFL
* Built-in fuzzing for byte modifications/truncation/out-of-memory
* Semantic fuzzing for binary FBX and OBJ files
* Public dataset: 3.0GB / 245 files
* Loaded, validated, and compared against reference .obj files
* Private dataset: 33.6GB / 12618 files
* Loaded and validated
* Static analysis for maximum stack depth on Linux GCC/Clang
## Versioning
The latest commit in the [`master`](https://github.com/ufbx/ufbx/tree/master)
branch contains the latest stable version of the library.
Older versions are tagged as `vX.Y.Z`, patch updates (`Z`) are ABI compatible
and work with older versions of the header from the same minor version (`Y`).
Minor versions within a major verision (`X`) are expected to be source
compatible after `1.0.0` but the `0.Y.Z` releases can break for every minor
release.
## License
```
------------------------------------------------------------------------------
This software is available under 2 licenses -- choose whichever you prefer.
------------------------------------------------------------------------------
ALTERNATIVE A - MIT License
Copyright (c) 2020 Samuli Raivio
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
------------------------------------------------------------------------------
ALTERNATIVE B - Public Domain (www.unlicense.org)
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
software, either in source code form or as a compiled binary, for any purpose,
commercial or non-commercial, and by any means.
In jurisdictions that recognize copyright laws, the author or authors of this
software dedicate any and all copyright interest in the software to the public
domain. We make this dedication for the benefit of the public at large and to
the detriment of our heirs and successors. We intend this dedication to be an
overt act of relinquishment in perpetuity of all present and future rights to
this software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----------------------------------------
```

View File

@@ -0,0 +1,472 @@
import re
from typing import Optional, Callable, Any, Iterable, NamedTuple, Union, List, Dict, Tuple
import typing
try:
regex_type = re.Pattern
except AttributeError:
try:
regex_type = re.RegexObject
except AttributeError:
regex_type = type(re.compile(''))
Matcher = Callable[[str, int], int]
def make_regex_matcher(regex) -> Matcher:
def matcher(text: str, begin: int) -> int:
m = regex.match(text, begin)
if m:
return m.end()
else:
return -1
return matcher
def make_literal_matcher(literal) -> Matcher:
def matcher(text: str, begin: int) -> int:
if text.startswith(literal, begin):
return begin + len(literal)
else:
return -1
return matcher
def never_matcher(text: str, begin: int) -> int:
return -1
def always_one_matcher(text: str, begin: int) -> int:
return begin + 1
class Location(NamedTuple):
filename: str
source: str
begin: int
end: int
line: int
column: int
def __str__(self):
if self.filename:
return f"{self.filename}:{self.line}:{self.column}"
else:
return f"{self.line}:{self.column}"
class ParserHint(NamedTuple):
location: Location
message: str
class ParseError(Exception):
def __init__(self, loc: Location, message: str, hints: Iterable[ParserHint]):
msg = f"{loc}: {message}"
if hints:
lines = (f".. while parsing {h.message} at {h.location}" for h in reversed(hints))
msg = msg + "\n" + "\n".join(lines)
super().__init__(msg)
self.loc = loc
class Rule:
"""Rule to match tokens
"""
def __init__(self, name: str, matcher: Matcher=never_matcher, literal: str="", value:Any=None, ignore:bool=False):
self.name = name
self.matcher = matcher
self.literal = literal
if value is None or callable(value):
self.valuer = value
else:
self.valuer = lambda s: value
self.ignore = bool(ignore)
def __repr__(self):
return "Rule({!r})".format(self.name)
def __str__(self):
return "{!r}".format(self.name)
# Special rules for begin and end
Begin = Rule("begin-of-file")
End = Rule("end-of-file")
Synthetic = Rule("synthetic")
Error = Rule("error")
def make_matcher_from_pattern(pattern: Any) -> Matcher:
if isinstance(pattern, str):
# Compile strings to regex
regex = re.compile(pattern, re.ASCII)
return make_regex_matcher(regex)
elif isinstance(pattern, regex_type):
# Already compiled regex
return make_regex_matcher(pattern)
elif callable(pattern):
# Custom matcher function
return pattern
else:
raise TypeError('Invalid type for rule pattern {!r}'.format(type(pattern)))
class Lexer(object):
def __init__(self):
self.global_rules = []
self.prefix_rules = {}
self.lexer_type = SourceLexer
def add_rule(self, rule: Rule, prefix:Iterable[str]=None):
if prefix:
for pre in prefix:
if not isinstance(pre, str):
raise TypeError("Prefixes must be an iterable of str")
if len(pre) > 1:
raise ValueError('Prefixes must be single characters')
rules = self.prefix_rules.setdefault(pre, [])
rules.append(rule)
else:
self.global_rules.append(rule)
def rule(self, name: str, pattern: Any, *, value:Any=None, prefix:Optional[Iterable[str]]=None):
matcher = make_matcher_from_pattern(pattern)
rule = Rule(name, matcher, "", value, ignore=False)
self.add_rule(rule, prefix)
return rule
def ignore(self, name: str, pattern: Any, *, value:Any=None, prefix:Optional[Iterable[str]]=None):
matcher = make_matcher_from_pattern(pattern)
rule = Rule(name, matcher, "", value, ignore=True)
self.add_rule(rule, prefix)
return rule
def ignore_whitespace(self, *, ignore_newline=True):
spaces = " \t\v\r"
if ignore_newline:
spaces += "\n"
regex = re.compile(f"[{re.escape(spaces)}]+")
self.ignore("whitespace", regex, prefix=spaces)
def literal(self, literal: str, value: Any=None):
if not isinstance(literal, str):
raise TypeError('Literals must be strings, got {!r}'.format(type(literal)))
if not literal:
raise ValueError('Empty literal')
if len(literal) == 1:
# Prefix match is full match
matcher = always_one_matcher
else:
matcher = make_literal_matcher(literal)
rule = Rule(repr(literal), matcher, literal, value)
self.add_rule(rule, literal[0])
return rule
def literals(self, *args: str):
return [self.literal(arg) for arg in args]
def make(self, source: str, filename: str=""):
return self.lexer_type(self, source, filename)
class Token:
__slots__ = ["rule", "location", "value", "_text"]
def __init__(self, rule: Rule, location: Location):
self.rule = rule
self.location = location
self.value = None
self._text = None
if rule.valuer:
self.value = rule.valuer(self.text())
def text(self) -> str:
if self._text is None:
loc = self.location
self._text = loc.source[loc.begin:loc.end]
return self._text
def __str__(self) -> str:
loc = self.location
length = loc.end - loc.begin
if self.rule.literal or length > 20:
return self.rule.name
else:
return f"{self.rule.name} {self.text()!r}"
def __repr__(self) -> str:
return f"Token({self.rule.name!r}"
def synthetic(text: str):
length = len(text)
loc = Location("", text, 0, length, 1, 1)
return Token(Synthetic, loc)
class SourceLexer:
def __init__(self, lexer: Lexer, source: str, filename:str=""):
self.pos = 0
self.lexer = lexer
self.source = source
self.source_length = len(source)
self.filename = filename
self.line = 1
self.line_end = 0
def scan(self) -> Token:
pos = self.pos
source_end = self.source_length
lexer = self.lexer
source = self.source
global_rules = lexer.global_rules
while pos < source_end:
prefix = source[pos]
prefix_rules = lexer.prefix_rules.get(prefix)
best_rule = None
best_end = -1
if prefix_rules:
for rule in prefix_rules:
end = rule.matcher(source, pos)
if end >= best_end:
best_rule = rule
best_end = end
for rule in global_rules:
end = rule.matcher(source, pos)
if end >= best_end:
best_rule = rule
best_end = end
column = pos - self.line_end + 1
while self.line_end < best_end:
line_end = source.find("\n", self.line_end, best_end)
if line_end < 0: break
self.line_end = line_end + 1
self.line += 1
if best_end < 0:
loc = Location(self.filename, source, pos, pos + 1, self.line, column)
return Token(Error, loc)
if best_rule.ignore:
pos = best_end
else:
self.pos = best_end
loc = Location(self.filename, source, pos, best_end, self.line, column)
return Token(best_rule, loc)
loc = Location(self.filename, source, source_end, source_end + 1, self.line + 1, 1)
return Token(End, loc)
def format_rule(rule):
if isinstance(rule, list):
return 'any of ({})'.format(', '.join(format_rule(r) for r in rule))
elif isinstance(rule, Rule):
return rule.name
elif isinstance(rule, str):
return repr(rule)
else:
raise TypeError(f'Unsupported rule type {repr(type(rule))}')
def format_message(msg):
return " " + msg if msg else ""
class ParserHintContext:
def __init__(self, parser: "Parser", token_or_loc: Union[Token, Location], message: str):
self.parser = parser
if hasattr(token_or_loc, "location"):
self.location = token_or_loc.location
else:
self.location = token_or_loc
self.message = message
def __enter__(self):
self.parser.hint_stack.append(ParserHint(self.location, self.message))
def __exit__(self, type, value, traceback):
self.parser.hint_stack.pop()
class Parser:
def __init__(self, lexer: Lexer, source: str, filename:str=""):
begin_loc = Location(filename, source, 0, 0, 1, 1)
self.lexer = lexer
self.source_lexer = lexer.make(source, filename)
self.prev_token = Token(Begin, begin_loc)
self.token = self.source_lexer.scan()
self.hint_stack = []
def scan(self):
if self.token.rule is not End:
self.prev_token = self.token
self.token = self.source_lexer.scan()
if self.token.rule is Error:
self.fail(f"Bad token starting with {self.token.text()!r}")
return self.prev_token
def peek(self, rule: Any) -> Optional[Token]:
if isinstance(rule, list):
for r in rule:
tok = self.peek(r)
if tok: return tok
elif isinstance(rule, Rule):
if self.token.rule == rule:
return self.token
elif isinstance(rule, str):
if self.token.rule.literal == rule:
return self.token
else:
raise TypeError(f'Unsupported rule type {type(rule)!r}')
def accept(self, rule) -> Optional[Token]:
tok = self.peek(rule)
if tok:
self.scan()
return tok
else:
return None
def fail_at(self, location: Location, message: str):
raise ParseError(location, message, self.hint_stack)
def fail(self, message: str):
self.fail_at(self.token.location, message)
def fail_prev(self, message: str):
self.fail_at(self.prev_token.location, message)
def fail_got(self, message: str):
self.fail_at(self.token.location, message + f", got {self.token}")
def fail_prev_got(self, message: str):
self.fail_at(self.prev_token.location, message + f", got {self.prev_token}")
def require(self, rule, message: str="") -> Token:
tok = self.accept(rule)
if tok:
return tok
else:
fr, fm = format_rule, format_message
self.fail_got(f"Expected {fr(rule)}{fm(message)}")
def sep(self, sep, message="") -> Iterable[int]:
n = 0
yield n
while self.accept(sep):
yield n
n += 1
def until(self, end, message="") -> Iterable[int]:
n = 0
while not self.accept(end):
yield n
n += 1
def sep_until(self, sep, end, message="") -> Iterable[int]:
n = 0
while not self.accept(end):
if n > 0 and not self.accept(sep):
fr, fm = format_rule, format_message
self.fail_got(f"Expected {fr(sep)} or {fr(end)}{fm(message)}")
yield n
n += 1
def ignore(self, rule) -> int:
n = 0
while self.accept(rule):
n += 1
return n
def hint(self, token_or_loc: Union[Token, Location], message: str):
return ParserHintContext(self, token_or_loc, message)
get_origin = getattr(typing, "get_origin", lambda o: getattr(o, "__origin__", None))
get_args = getattr(typing, "get_args", lambda o: getattr(o, "__args__", None))
class AstField(NamedTuple):
name: str
base: type
optional: bool
sequence: bool
def make_ast_field(name, base):
origin, args = get_origin(base), get_args(base)
optional = sequence = False
if origin == Union and len(args) == 2 and type(None) in args:
base = args[args.index(type(None)) ^ 1]
optional = True
origin, args = get_origin(base), get_args(base)
if origin == List:
base = args[0]
sequence = True
elif origin:
base = object
return AstField(name, base, optional, sequence)
class Ast:
def __init__(self, *args, **kwargs):
cls = type(self)
if len(args) > len(cls.fields):
raise TypeError(f"Too many fields for {cls.__name__}: {len(args)}, expected {len(cls.fields)}")
for field, arg in zip(cls.fields, args):
setattr(self, field.name, arg)
for name, arg in kwargs.items():
setattr(self, name, arg)
for field in cls.fields:
try:
value = getattr(self, field.name)
if field.optional and value is None:
continue
if field.sequence:
for ix, v in enumerate(value):
if not isinstance(v, field.base):
raise TypeError(f"Trying to assign '{type(v).__name__}' to '{cls.__name__}' field '{field.name}: {field.base.__name__}' index [{ix}]")
else:
if not isinstance(value, field.base):
raise TypeError(f"Trying to assign '{type(value).__name__}' to '{cls.__name__}' field '{field.name}: {field.base.__name__}'")
except AttributeError:
raise ValueError(f"'{cls.__name__}' requires field '{field.name}: {field.base.__name__}'")
def __init_subclass__(cls, **kwargs):
fields = getattr(cls, "__annotations__", {})
cls.fields = [make_ast_field(k, v) for k,v in fields.items()]
super().__init_subclass__(**kwargs)
def _imp_dump(self, result, indent):
cls = type(self)
indent_str = " " * indent
result += (cls.__name__, "(")
first = True
num_asts = 0
for field in cls.fields:
if issubclass(field.base, Ast):
num_asts += 1
continue
if not first: result.append(", ")
first = False
result += (field.name, "=", str(getattr(self, field.name, None)))
for field in cls.fields:
if not issubclass(field.base, Ast): continue
if num_asts > 1:
result += ("\n", indent_str, " ")
else:
if not first: result.append(", ")
result.append(field.name)
result.append("=")
attr = getattr(self, field.name, None)
if not attr:
result.append("None")
continue
if field.sequence:
result.append("[")
seq_indent = 1 if num_asts == 1 else 2
print(seq_indent)
for ast in getattr(self, field.name, None):
result += ("\n", indent_str, " " * seq_indent)
ast._imp_dump(result, indent + seq_indent)
result += ("\n", indent_str, " ]")
else:
attr._imp_dump(result, indent + 1)
result += ")"
def dump(self, indent=0):
result = []
self._imp_dump(result, indent)
return "".join(result)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,804 @@
import parsette
import string
from typing import List, Optional, NamedTuple, Union
import json
import argparse
import os
import re
lexer = parsette.Lexer()
lexer.ignore_whitespace()
TEnd = parsette.End
TIdent = lexer.rule("identifier", r"[A-Za-z_][A-Za-z0-9_]*", prefix=string.ascii_letters+"_")
TNumber = lexer.rule("number", r"(0[Xx][0-9A-Fa-f]+)|([0-9]+)", prefix=string.digits)
TComment = lexer.rule("comment", r"//[^\r\n]*", prefix="/")
TPreproc = lexer.rule("preproc", r"#[^\n\\]*(\\\r?\n[^\n\\]*?)*\n", prefix="#")
TString = lexer.rule("string", r"\"[^\"]*\"", prefix="\"")
lexer.literals(*"const typedef struct union enum extern ufbx_abi ufbx_inline ufbx_nullable ufbx_abi ufbx_unsafe UFBX_LIST_TYPE UFBX_ENUM_REPR UFBX_FLAG_REPR UFBX_ENUM_FORCE_WIDTH UFBX_FLAG_FORCE_WIDTH UFBX_ENUM_TYPE".split())
lexer.literals(*",.*[]{}()<>=-;")
lexer.ignore("disable", re.compile(r"//\s*bindgen-disable.*?//\s*bindgen-enable", flags=re.DOTALL))
Token = parsette.Token
Ast = parsette.Ast
class AType(Ast):
pass
class AName(Ast):
pass
class ATop(Ast):
pass
class AStructDecl(Ast):
pass
class AEnumDecl(Ast):
pass
class ADecl(Ast):
type: AType
names: List[AName]
end_line: Optional[int] = None
class ANamePointer(AName):
inner: AName
class ANameArray(AName):
inner: AName
length: Optional[Token]
class ANameIdent(AName):
ident: Token
class ANameFunction(AName):
inner: AName
args: List[ADecl]
class ANameAnonymous(AName):
pass
class ATypeConst(AType):
inner: AType
class ATypeSpec(AType):
inner: AType
spec: Token
class ATypeIdent(AType):
name: Token
class ATypeStruct(AType):
kind: Token
name: Optional[Token]
decls: Optional[List[AStructDecl]]
class ATypeEnum(AType):
kind: Token
name: Optional[Token]
decls: Optional[List[AEnumDecl]]
class AStructComment(AStructDecl):
comments: List[Token]
class AStructField(AStructDecl):
decl: ADecl
class AEnumComment(AEnumDecl):
comments: List[Token]
class AEnumValue(AEnumDecl):
name: Token
value: Optional[Token]
class ATopPreproc(ATop):
preproc: Token
class ATopComment(ATop):
comments: List[Token]
class ATopDecl(ATop):
decl: ADecl
class ATopExtern(ATop):
decl: ADecl
class ATopTypedef(ATop):
decl: ADecl
class ATopFile(ATop):
tops: List[ATop]
class ATopList(ATop):
name: Token
type: ADecl
class ATopEnumType(ATop):
enum_type: Token
prefix: Token
last_value: Token
class Parser(parsette.Parser):
def __init__(self, source, filename=""):
super().__init__(lexer, source, filename)
def finish_comment(self, comment_type, first):
comments = [first]
line = first.location.line + 1
while self.peek(TComment) and self.token.location.line == line:
comments.append(self.scan())
line += 1
return comment_type(comments)
def accept_impl(self) -> bool:
if self.token.rule != TIdent: return False
text = self.token.text()
if not text.startswith("UFBX_"): return False
if not text.endswith("_IMPL"): return False
self.scan()
return True
def finish_struct(self, kind) -> ATypeStruct:
kn = kind.text()
name = self.accept(TIdent)
if self.accept("{"):
fields = []
loc = name if name else kind
with self.hint(loc, f"{kn} {name.text()}" if name else f"anonymous {kn}"):
while not self.accept("}"):
if self.accept(TComment):
fields.append(self.finish_comment(AStructComment, self.prev_token))
elif self.accept_impl():
self.require("(", "for macro parameters")
self.finish_macro_params()
else:
decl = self.parse_decl(f"{kn} field")
field = AStructField(decl)
fields.append(field)
self.require(";", f"after {kn} field")
else:
fields = None
return ATypeStruct(kind, name, fields)
def parse_enum_decl(self) -> AEnumDecl:
if self.accept(TComment):
return self.finish_comment(AEnumComment, self.prev_token)
else:
name = self.require(TIdent, "enum value name")
value = None
if self.accept("="):
value = self.require([TIdent, TNumber], f"'{name.text()}' value")
return AEnumValue(name, value)
def finish_enum(self, kind) -> ATypeStruct:
kn = kind.text()
name = self.accept(TIdent)
self.require(["UFBX_ENUM_REPR", "UFBX_FLAG_REPR"], "enum repr macro")
if self.accept("{"):
decls = []
loc = name if name else kind
has_force_width = False
with self.hint(loc, f"{kn} {name.text()}" if name else f"anonymous {kn}"):
while not self.accept("}"):
if self.accept(","):
continue
if self.accept(["UFBX_ENUM_FORCE_WIDTH", "UFBX_FLAG_FORCE_WIDTH"]):
self.require("(", "for FORCE_WIDTH macro parameters")
self.require(TIdent, "for FORCE_WIDTH macro name")
self.require(")", "for FORCE_WIDTH macro parameters")
has_force_width = True
continue
decls.append(self.parse_enum_decl())
if not has_force_width:
self.fail_at(self.prev_token, "enum missing FORCE_WIDTH macro")
else:
decls = None
return ATypeEnum(kind, name, decls)
def parse_type(self) -> AType:
token = self.token
if self.accept("const"):
inner = self.parse_type()
return ATypeConst(inner)
elif self.accept(["ufbx_nullable", "ufbx_abi", "ufbx_unsafe", "ufbx_inline"]):
inner = self.parse_type()
return ATypeSpec(inner, token)
elif self.accept(["struct", "union"]):
return self.finish_struct(self.prev_token)
elif self.accept("enum"):
return self.finish_enum(self.prev_token)
elif self.accept(TIdent):
return ATypeIdent(self.prev_token)
else:
self.fail_got("expected a type")
def parse_name_non_array(self, ctx, allow_anonymous=False) -> AName:
if self.accept("*"):
inner = self.parse_name_non_array(ctx, allow_anonymous)
return ANamePointer(inner)
if allow_anonymous and not self.peek(TIdent):
return ANameAnonymous()
else:
name = self.require(TIdent, f"for {ctx} name")
return ANameIdent(name)
def parse_name(self, ctx, allow_anonymous=False) -> AName:
ast = self.parse_name_non_array(ctx, allow_anonymous)
while True:
if self.accept("["):
length = self.accept([TIdent, TNumber])
self.require("]", f"for opening [")
ast = ANameArray(ast, length)
elif self.accept("("):
args = []
while not self.accept(")"):
args.append(self.parse_decl("argument", allow_list=False, allow_anonymous=True))
self.accept(",")
ast = ANameFunction(ast, args)
else:
break
return ast
def parse_decl(self, ctx, allow_anonymous=False, allow_list=True) -> ADecl:
typ = self.parse_type()
names = []
if not self.peek(";"):
if allow_list:
for _ in self.sep(","):
names.append(self.parse_name(ctx, allow_anonymous))
else:
names.append(self.parse_name(ctx, allow_anonymous))
return ADecl(typ, names)
def finish_top_list(self) -> ATopList:
self.require("(", "for macro parameters")
name = self.require(TIdent, "for list type name")
self.require(",", "for macro parameters")
decl = self.parse_decl("UFBX_TOP_LIST type", allow_anonymous=True, allow_list=False)
self.require(")", "for macro parameters")
return ATopList(name, decl)
def finish_top_enum_type(self) -> ATopEnumType:
self.require("(", "for macro parameters")
enum_name = self.require(TIdent, "for enum type name")
self.require(",", "for macro parameters")
prefix = self.require(TIdent, "for enum prefix")
self.require(",", "for macro parameters")
last_value = self.require(TIdent, "for enum last value")
self.require(")", "for macro parameters")
return ATopEnumType(enum_name, prefix, last_value)
def finish_macro_params(self):
while not self.accept(")"):
if self.accept(TEnd): self.fail("Unclosed macro parameters")
if self.accept("("):
self.finish_macro_params()
else:
self.scan()
def parse_top(self) -> List[ATop]:
if self.accept(TPreproc):
return [ATopPreproc(self.prev_token)]
elif self.accept(TComment):
return [self.finish_comment(ATopComment, self.prev_token)]
elif self.accept("typedef"):
decl = self.parse_decl("typedef")
self.require(";", "after typedef")
decl.end_line = self.prev_token.location.line
return [ATopTypedef(decl)]
elif self.accept("extern"):
if self.accept(TString):
self.require("{", "for extern ABI block")
tops = []
while not self.accept("}"):
tops += self.parse_top()
return tops
else:
decl = self.parse_decl("extern")
self.require(";", "after extern")
decl.end_line = self.prev_token.location.line
return [ATopExtern(decl)]
elif self.accept("UFBX_LIST_TYPE"):
tl = self.finish_top_list()
self.require(";", "after UFBX_LIST_TYPE()")
return [tl]
elif self.accept("UFBX_ENUM_TYPE"):
tl = self.finish_top_enum_type()
self.require(";", "after UFBX_ENUM_TYPE()")
return [tl]
else:
decl = self.parse_decl("top-level")
if self.accept("{"):
level = 1
while level > 0:
if self.accept("{"):
level += 1
elif self.accept("}"):
level -= 1
else:
self.scan()
decl.end_line = self.prev_token.location.line
else:
self.require(";", "after top-level declaration")
decl.end_line = self.prev_token.location.line
return [ATopDecl(decl)]
def parse_top_file(self) -> ATopFile:
tops = []
while not self.accept(parsette.End):
if self.ignore(TEnd): continue
tops += self.parse_top()
return ATopFile(tops)
def fmt_type(type: AType):
if isinstance(type, ATypeIdent):
return type.name.text()
elif isinstance(type, ATypeConst):
return f"const {fmt_type(type.inner)}"
elif isinstance(type, ATypeSpec):
return f"{type.spec.text()} {fmt_type(type.inner)}"
class SMod: pass
class SModConst(SMod): pass
class SModNullable(SMod): pass
class SModInline(SMod): pass
class SModAbi(SMod): pass
class SModUnsafe(SMod): pass
class SModPointer(SMod): pass
class SModArray(SMod):
def __init__(self, length: Optional[str]):
self.length = length
class SModFunction(SMod):
def __init__(self, args: List["SDecl"]):
self.args = args
class SComment(NamedTuple):
line_begin: int
line_end: int
text: List[str]
class SType(NamedTuple):
kind: str
name: Optional[str]
mods: List[SMod] = []
body: Union["SStruct", "SEnum", "SEnumType", None] = None
class SName(NamedTuple):
name: Optional[str]
type: SType
value: Optional[str] = None
class SDecl(NamedTuple):
line_begin: int
line_end: int
kind: str
names: List[SName]
comment: Optional[SComment] = None
comment_inline: bool = False
is_function: bool = False
define_args: Optional[List[str]] = None
value: Optional[str] = None
class SDeclGroup(NamedTuple):
line: int
decls: List[SDecl]
comment: Optional[SComment] = None
comment_inline: bool = False
is_function: bool = False
SCommentDecl = Union[SComment, SDecl, SDeclGroup]
class SStruct(NamedTuple):
line: int
kind: str
name: Optional[str]
decls: List[SCommentDecl]
is_list: bool = False
class SEnum(NamedTuple):
line: int
name: Optional[str]
decls: List[SCommentDecl]
class SEnumType(NamedTuple):
line: int
enum_name: str
enum_prefix: str
last_value: str
def type_line(typ: AType):
if isinstance(typ, ATypeIdent):
return typ.name.location.line
elif isinstance(typ, ATypeConst):
return type_line(typ.inner)
elif isinstance(typ, ATypeStruct):
return typ.kind.location.line
elif isinstance(typ, ATypeEnum):
return typ.kind.location.line
elif isinstance(typ, ATypeSpec):
return type_line(typ.inner)
else:
raise TypeError(f"Unhandled type {type(typ).__name__}")
spec_to_mod = {
"ufbx_abi": SModAbi,
"ufbx_nullable": SModNullable,
"ufbx_inline": SModInline,
"ufbx_unsafe": SModUnsafe,
}
def to_stype(typ: AType) -> SType:
if isinstance(typ, ATypeIdent):
return SType("name", typ.name.text())
elif isinstance(typ, ATypeConst):
st = to_stype(typ.inner)
return st._replace(mods=st.mods + [SModConst()])
elif isinstance(typ, ATypeSpec):
st = to_stype(typ.inner)
spec = typ.spec.text()
return st._replace(mods=st.mods + [spec_to_mod[spec]()])
elif isinstance(typ, ATypeStruct):
body = to_sstruct(typ) if typ.decls is not None else None
return SType(typ.kind.text(), typ.name.text() if typ.name else None, body=body)
elif isinstance(typ, ATypeEnum):
body = to_senum(typ) if typ.decls is not None else None
return SType("enum", typ.name.text() if typ.name else None, body=body)
else:
raise TypeError(f"Unhandled type {type(typ).__name__}")
def name_to_stype(base: SType, name: AName) -> SType:
if isinstance(name, ANamePointer):
st = name_to_stype(base, name.inner)
return st._replace(mods=st.mods + [SModPointer()])
elif isinstance(name, ANameArray):
st = name_to_stype(base, name.inner)
mod = SModArray(name.length.text() if name.length else None)
return st._replace(mods=st.mods + [mod])
elif isinstance(name, ANameFunction):
st = name_to_stype(base, name.inner)
mod = SModFunction([to_sdecl(a, "argument") for a in name.args])
return st._replace(mods=st.mods + [mod])
elif isinstance(name, ANameIdent):
return base
elif isinstance(name, ANameAnonymous):
return base
else:
raise TypeError(f"Unhandled type {type(name)}")
def name_str(name: AName):
if isinstance(name, ANameIdent):
return name.ident.text()
elif isinstance(name, ANameAnonymous):
return None
elif isinstance(name, ANamePointer):
return name_str(name.inner)
elif isinstance(name, ANameArray):
return name_str(name.inner)
elif isinstance(name, ANameFunction):
return name_str(name.inner)
else:
raise TypeError(f"Unhandled type {type(name)}")
def to_sdecl(decl: ADecl, kind: str) -> SDecl:
names = []
is_function = False
base_st = to_stype(decl.type)
for name in decl.names:
st = name_to_stype(base_st, name)
if any(isinstance(mod, SModFunction) for mod in st.mods):
is_function = True
names.append(SName(name_str(name), st))
if not decl.names:
names.append(SName(None, base_st))
line = type_line(decl.type)
end_line = decl.end_line
if end_line is None: end_line = line
return SDecl(line, end_line, kind, names, is_function=is_function)
Comment = List[str]
def to_scomment(comment: Ast):
if not comment: return None
begin = comment.comments[0].location.line
end = comment.comments[-1].location.line
text = [c.text()[3:] for c in comment.comments]
return SComment(begin, end, text)
def to_sstruct(struct: ATypeStruct) -> SStruct:
decls = []
for decl in struct.decls:
if isinstance(decl, AStructComment):
decls.append(to_scomment(decl))
elif isinstance(decl, AStructField):
decls.append(to_sdecl(decl.decl, "field"))
line = struct.kind.location.line
name = struct.name.text() if struct.name else None
kind = struct.kind.text()
return SStruct(line, kind, name, decls)
def to_senum(enum: ATypeEnum) -> SEnum:
decls = []
name = enum.name.text() if enum.name else None
for decl in enum.decls:
if isinstance(decl, AEnumComment):
decls.append(to_scomment(decl))
elif isinstance(decl, AEnumValue):
line = decl.name.location.line
decls.append(SDecl(
line_begin=line,
line_end=line,
kind="enumValue",
value=decl.value.text() if decl.value else None,
names=[
SName(
name=decl.name.text(),
type=SType("enum", name),
value=decl.value)
]))
line = enum.kind.location.line
return SEnum(line, name, decls)
def to_sbody(typ: AType):
if isinstance(typ, ATypeStruct):
return to_sstruct(typ)
elif isinstance(typ, ATypeEnum):
return to_senum(typ)
else:
raise TypeError(f"Unhandled type {type(typ)}")
def top_sdecls(top: ATop) -> List[SCommentDecl]:
if isinstance(top, ATopFile):
decls = []
for t in top.tops:
decls += top_sdecls(t)
return decls
elif isinstance(top, ATopTypedef):
return [to_sdecl(top.decl, "typedef")]
elif isinstance(top, ATopExtern):
return [to_sdecl(top.decl, "extern")]
elif isinstance(top, ATopDecl):
return [to_sdecl(top.decl, "toplevel")]
elif isinstance(top, ATopComment):
return [to_scomment(top)]
elif isinstance(top, ATopList):
line = top.name.location.line
name = top.name.text()
st = to_stype(top.type.type)
st = name_to_stype(st, top.type.names[0])
return [SDecl(line, line, "list", [SName(None, SType("struct", name,
body=SStruct(line, "struct", name, [
SDecl(line, line, "field", [SName("data", st._replace(mods=st.mods+[SModPointer()]))]),
SDecl(line+1, line+1, "field", [SName("count", SType("name", "size_t"))]),
], is_list=True)
))])]
elif isinstance(top, ATopEnumType):
line = top.enum_type.location.line
name = top.prefix.text() + "_COUNT"
return [SDecl(line, line, "enumCount",
[SName(name, SType("enumType", "enumType", body=SEnumType(
line, top.enum_type.text(), top.prefix.text(), top.last_value.text())
)
)]
)]
elif isinstance(top, ATopPreproc):
line = top.preproc.location.line
text = top.preproc.text()
m = re.match(r"#\s*define\s+(\w+)(\([^\)]*\))?\s+(.*)", text)
if m:
name = m.group(1)
args = m.group(2)
if args:
args = [arg.strip() for arg in args.split(",")]
else:
args = None
value = m.group(3)
return [SDecl(line, line, "define", [SName(name, SType("define", "define"))],
define_args=args,
value=value)]
else:
return [] # TODO
else:
raise TypeError(f"Unhandled type {type(top)}")
def collect_decl_comments(decls: List[SCommentDecl]):
n = 0
while n < len(decls):
dc = decls[n:n+3]
if isinstance(dc[0], SComment):
if (len(dc) >= 2 and isinstance(dc[1], SDecl) and dc[0].line_end + 1 == dc[1].line_begin
and (len(dc) < 3 or not (isinstance(dc[2], SComment) and dc[1].line_end == dc[2].line_begin))):
yield dc[1]._replace(comment=dc[0])
n += 2
else:
yield dc[0]
n += 1
else:
if len(dc) >= 2 and isinstance(dc[1], SComment) and dc[0].line_end == dc[1].line_begin:
comment = dc[1]._replace(text=[re.sub("^\s*<\s*", "", t) for t in dc[1].text])
yield dc[0]._replace(comment=comment, comment_inline=True)
n += 2
else:
yield dc[0]
n += 1
def collect_decl_groups(decls: List[SCommentDecl]):
n = 0
while n < len(decls):
dc = decls[n]
if isinstance(dc, SDecl) and not dc.comment_inline and not (dc.names and dc.names[0].type.body):
group = [dc]
line = dc.line_end + 1
n += 1
while n < len(decls):
dc2 = decls[n]
if not isinstance(dc2, SDecl): break
if dc2.comment: break
if dc2.line_begin != line: break
if dc2.names and dc2.names[0].type.body: break
if dc2.is_function != dc.is_function: break
group.append(dc2)
line = dc2.line_end + 1
n += 1
group[0] = dc._replace(comment=None)
comment_inline = len(group) == 1 and dc.comment_inline
yield SDeclGroup(dc.line_begin, group, dc.comment, comment_inline, dc.is_function)
elif isinstance(dc, SDecl) and not (dc.names and dc.names[0].type.body):
group = [dc._replace(comment=None)]
yield SDeclGroup(dc.line_begin, group, dc.comment, dc.comment_inline, dc.is_function)
n += 1
else:
yield dc
n += 1
def collect_decls(decls: List[SCommentDecl], allow_groups: bool) -> List[SCommentDecl]:
decls = list(collect_decl_comments(decls))
if allow_groups:
decls = list(collect_decl_groups(decls))
return decls
def format_arg(decl: SDecl):
name = decl.names[0]
return {
"type": format_type(name.type),
"name": name.name,
}
def format_mod(mod: SMod):
if isinstance(mod, SModConst):
return { "type": "const" }
elif isinstance(mod, SModNullable):
return { "type": "nullable" }
elif isinstance(mod, SModInline):
return { "type": "inline" }
elif isinstance(mod, SModAbi):
return { "type": "abi" }
elif isinstance(mod, SModPointer):
return { "type": "pointer" }
elif isinstance(mod, SModUnsafe):
return { "type": "unsafe" }
elif isinstance(mod, SModArray):
return { "type": "array", "length": mod.length }
elif isinstance(mod, SModFunction):
return { "type": "function", "args": [format_arg(d) for d in mod.args] }
else:
raise TypeError(f"Unhandled mod {type(mod)}")
def format_type(type: SType):
return {
"kind": type.kind,
"name": type.name,
"mods": [format_mod(mod) for mod in type.mods],
}
def format_name(name: SName):
return {
"type": format_type(name.type),
"name": name.name,
}
def format_decls(decls: List[SCommentDecl], allow_groups: bool):
for decl in collect_decls(decls, allow_groups):
if isinstance(decl, SComment):
yield {
"kind": "paragraph",
"comment": decl.text,
}
elif isinstance(decl, SDecl):
body = None
if decl.names and decl.names[0].type.body:
body = decl.names[0].type.body
if isinstance(body, SStruct):
yield {
"kind": "struct",
"structKind": body.kind,
"line": body.line,
"name": body.name,
"comment": decl.comment.text if decl.comment else [],
"commentInline": decl.comment_inline,
"isList": body.is_list,
"decls": list(format_decls(body.decls, allow_groups=True)),
}
elif isinstance(body, SEnum):
yield {
"kind": "enum",
"line": body.line,
"name": body.name,
"comment": decl.comment.text if decl.comment else [],
"commentInline": decl.comment_inline,
"decls": list(format_decls(body.decls, allow_groups=True)),
}
elif isinstance(body, SEnumType):
yield {
"kind": "enumType",
"line": body.line,
"enumName": body.enum_name,
"countName": body.enum_prefix + "_COUNT",
"lastValue": body.last_value,
"comment": decl.comment.text if decl.comment else [],
"commentInline": decl.comment_inline,
}
else:
for name in decl.names:
yield {
"kind": "decl",
"declKind": decl.kind,
"line": decl.line_begin,
"name": name.name,
"comment": decl.comment.text if decl.comment else [],
"commentInline": decl.comment_inline,
"isFunction": decl.is_function,
"value": decl.value,
"defineArgs": decl.define_args,
"type": format_type(name.type),
}
elif isinstance(decl, SDeclGroup):
yield {
"kind": "group",
"line": decl.line,
"name": None,
"comment": decl.comment.text if decl.comment else [],
"commentInline": decl.comment_inline,
"isFunction": decl.is_function,
"decls": list(format_decls(decl.decls, allow_groups=False)),
}
else:
raise TypeError(f"Unhandled type {type(decl)}")
if __name__ == "__main__":
parser = argparse.ArgumentParser("ufbx_parser.py")
parser.add_argument("-i", help="Input file")
parser.add_argument("-o", help="Output file")
argv = parser.parse_args()
src_path = os.path.dirname(os.path.realpath(__file__))
input_file = argv.i
if not input_file:
input_file = os.path.join(src_path, "..", "ufbx.h")
output_file = argv.o
if not output_file:
output_file = os.path.join(src_path, "build", "ufbx.json")
output_path = os.path.dirname(os.path.realpath(output_file))
if not os.path.exists(output_path):
os.makedirs(output_path, exist_ok=True)
with open(input_file) as f:
source = f.read()
p = Parser(source, "ufbx.h")
top_file = p.parse_top_file()
result = top_sdecls(top_file)
js = list(format_decls(result, allow_groups=True))
with open(output_file, "wt") as f:
json.dump(js, f, indent=2)

Binary file not shown.

View File

@@ -0,0 +1,22 @@
# Blender MTL File: 'None'
# Material Count: 2
newmtl Red
Ns 96.078421
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.000000 0.000000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 0.000000
illum 9
newmtl White
Ns 96.078421
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 0.000000
illum 9

View File

@@ -0,0 +1,199 @@
# Blender v3.2.0 OBJ File: ''
# www.blender.org
mtllib blender_279_ball_0_obj.mtl
o Icosphere
v 0.000000 -0.000000 -1.000000
v 0.723607 -0.525725 -0.447219
v -0.276388 -0.850649 -0.447220
v -0.894426 -0.000000 -0.447216
v -0.276388 0.850649 -0.447220
v 0.723607 0.525725 -0.447220
v 0.276388 -0.850649 0.447220
v -0.723607 -0.525725 0.447220
v -0.723607 0.525725 0.447219
v 0.276388 0.850649 0.447220
v 0.894426 0.000000 0.447216
v 0.000000 0.000000 1.000000
v -0.162456 -0.499995 -0.850654
v 0.425323 -0.309012 -0.850654
v 0.262869 -0.809012 -0.525738
v 0.850648 -0.000000 -0.525736
v 0.425323 0.309011 -0.850654
v -0.525730 -0.000000 -0.850652
v -0.688189 -0.499997 -0.525736
v -0.162456 0.499995 -0.850654
v -0.688189 0.499997 -0.525736
v 0.262869 0.809012 -0.525738
v 0.951058 -0.309013 0.000000
v 0.951058 0.309013 -0.000000
v 0.000000 -1.000000 0.000000
v 0.587786 -0.809017 0.000000
v -0.951058 -0.309013 0.000000
v -0.587786 -0.809017 0.000000
v -0.587786 0.809017 -0.000000
v -0.951058 0.309013 -0.000000
v 0.587786 0.809017 -0.000000
v 0.000000 1.000000 -0.000000
v 0.688189 -0.499997 0.525736
v -0.262869 -0.809012 0.525738
v -0.850648 0.000000 0.525736
v -0.262869 0.809012 0.525738
v 0.688189 0.499997 0.525736
v 0.162456 -0.499995 0.850654
v 0.525730 0.000000 0.850652
v -0.425323 -0.309011 0.850654
v -0.425323 0.309012 0.850654
v 0.162456 0.499995 0.850654
vn -0.4713 -0.5831 0.6617
vn -0.7002 0.2680 0.6617
vn -0.1024 0.3151 0.9435
vn -0.1876 0.5773 0.7947
vn -0.4713 0.5831 0.6617
vn -0.3313 0.0000 0.9435
vn -0.6071 0.0000 0.7947
vn -0.7002 -0.2680 0.6617
vn -0.1024 -0.3151 0.9435
vn -0.1876 -0.5773 0.7947
vn -0.3035 0.9342 0.1876
vn -0.5346 0.7779 0.3304
vn -0.9050 0.2680 0.3304
vn -0.9822 -0.0000 0.1876
vn -0.9050 -0.2680 0.3304
vn -0.5346 -0.7779 0.3304
vn -0.3035 -0.9342 0.1876
vn -0.8026 0.5831 0.1256
vn -0.8026 -0.5831 0.1256
vn 0.2764 -0.8506 0.4472
vn 0.6882 -0.5000 0.5257
vn 0.1625 -0.5000 0.8507
vn 0.2764 0.8506 0.4472
vn -0.2629 0.8090 0.5257
vn 0.1625 0.5000 0.8507
vn 0.8944 0.0000 0.4472
vn 0.6882 0.5000 0.5257
vn 0.5257 0.0000 0.8507
vn 0.0000 -0.0000 1.0000
vn -0.2629 -0.8090 0.5257
vn 0.9511 0.3090 -0.0000
vn 0.5878 0.8090 0.0000
vn -0.0000 1.0000 0.0000
vn -0.0000 -1.0000 0.0000
vn 0.5878 -0.8090 0.0000
vn 0.9511 -0.3090 -0.0000
vn -0.2680 -0.1947 -0.9435
vn -0.2680 0.1947 -0.9435
vn 0.0247 -0.9435 -0.3304
vn -0.8897 -0.3151 -0.3304
vn -0.5746 0.7488 -0.3304
vn -0.3066 -0.9435 -0.1256
vn -0.9921 -0.0000 -0.1256
vn -0.3066 0.9435 -0.1256
vn 0.0247 0.9435 -0.3304
vn -0.7947 0.5773 -0.1876
vn -0.8897 0.3151 -0.3304
vn -0.7947 -0.5773 -0.1876
vn -0.5746 -0.7488 -0.3304
vn -0.0385 0.7488 -0.6617
vn -0.4089 0.6284 -0.6617
vn -0.4911 0.3568 -0.7947
vn -0.7240 0.1947 -0.6617
vn -0.7240 -0.1947 -0.6617
vn -0.4911 -0.3568 -0.7947
vn -0.4089 -0.6284 -0.6617
vn -0.0385 -0.7488 -0.6617
vn -0.0000 -0.0000 -1.0000
vn 0.4253 -0.3090 -0.8507
vn -0.1624 -0.5000 -0.8507
vn 0.7236 -0.5257 -0.4472
vn 0.8506 -0.0000 -0.5257
vn -0.1624 0.5000 -0.8507
vn 0.4253 0.3090 -0.8507
vn 0.7236 0.5257 -0.4472
vn 0.2629 0.8090 -0.5257
vn 0.2629 -0.8090 -0.5257
usemtl Red
s off
f 8//1 34//1 40//1
f 9//2 35//2 41//2
f 42//3 41//3 12//3
f 42//4 36//4 41//4
f 36//5 9//5 41//5
f 41//6 40//6 12//6
f 41//7 35//7 40//7
f 35//8 8//8 40//8
f 40//9 38//9 12//9
f 40//10 34//10 38//10
f 32//11 29//11 36//11
f 29//12 9//12 36//12
f 30//13 35//13 9//13
f 30//14 27//14 35//14
f 27//15 8//15 35//15
f 28//16 34//16 8//16
f 28//17 25//17 34//17
f 29//18 30//18 9//18
f 27//19 28//19 8//19
s 1
f 7//20 33//21 38//22
f 10//23 36//24 42//25
f 11//26 37//27 39//28
f 39//28 42//25 12//29
f 39//28 37//27 42//25
f 37//27 10//23 42//25
f 34//30 7//20 38//22
f 38//22 39//28 12//29
f 38//22 33//21 39//28
f 33//21 11//26 39//28
f 24//31 37//27 11//26
f 24//31 31//32 37//27
f 31//32 10//23 37//27
f 32//33 36//24 10//23
f 25//34 7//20 34//30
f 26//35 33//21 7//20
f 26//35 23//36 33//21
f 23//36 11//26 33//21
f 31//32 32//33 10//23
f 25//34 26//35 7//20
f 23//36 24//31 11//26
usemtl White
s off
f 1//37 13//37 18//37
f 1//38 18//38 20//38
f 3//39 15//39 25//39
f 4//40 19//40 27//40
f 5//41 21//41 29//41
f 3//42 25//42 28//42
f 4//43 27//43 30//43
f 5//44 29//44 32//44
f 22//45 5//45 32//45
f 29//46 21//46 30//46
f 21//47 4//47 30//47
f 27//48 19//48 28//48
f 19//49 3//49 28//49
f 20//50 5//50 22//50
f 20//51 21//51 5//51
f 20//52 18//52 21//52
f 18//53 4//53 21//53
f 18//54 19//54 4//54
f 18//55 13//55 19//55
f 13//56 3//56 19//56
f 13//57 15//57 3//57
s 1
f 1//58 14//59 13//60
f 2//61 14//59 16//62
f 1//58 20//63 17//64
f 2//61 16//62 23//36
f 6//65 22//66 31//32
f 2//61 23//36 26//35
f 6//65 31//32 24//31
f 31//32 22//66 32//33
f 25//34 15//67 26//35
f 15//67 2//61 26//35
f 23//36 16//62 24//31
f 16//62 6//65 24//31
f 17//64 22//66 6//65
f 17//64 20//63 22//66
f 16//62 17//64 6//65
f 16//62 14//59 17//64
f 14//59 1//58 17//64
f 13//60 14//59 15//67
f 14//59 2//61 15//67

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
# ufbx:bad_uvs
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
g Cube
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -0.999999
v 0.999999 1.000000 1.000001
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn 0.0000 0.0000 -1.0000
s off
f 1//1 2//1 3//1 4//1
f 5//2 8//2 7//2 6//2
f 1//3 5//3 6//3 2//3
f 2//4 6//4 7//4 3//4
f 3//5 7//5 8//5 4//5
f 5//6 1//6 4//6 8//6

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,179 @@
# This file uses centimeters as units for non-parametric coordinates.
g default
v -100.000000 -99.999984 100.000016
v -100.000000 100.000016 99.999984
v -100.000000 -100.000016 -99.999984
v -100.000000 99.999984 -100.000016
v 100.000000 -99.999984 100.000016
v 100.000000 100.000016 99.999984
v 100.000000 -100.000016 -99.999984
v 100.000000 99.999984 -100.000016
vn -1.000000 0.000000 -0.000000
vn -1.000000 0.000000 -0.000000
vn -1.000000 0.000000 -0.000000
vn -1.000000 0.000000 -0.000000
vn 0.000000 -0.000000 -1.000000
vn 0.000000 -0.000000 -1.000000
vn 0.000000 -0.000000 -1.000000
vn 0.000000 -0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 -0.000000
vn 0.000000 1.000000 -0.000000
vn 0.000000 1.000000 -0.000000
vn 0.000000 1.000000 -0.000000
s off
g CubeFBXASC046001
f 1//1 2//2 4//3 3//4
f 3//5 4//6 8//7 7//8
f 7//9 8//10 6//11 5//12
f 5//13 6//14 2//15 1//16
f 3//17 7//18 5//19 1//20
f 8//21 4//22 2//23 6//24
g default
v 197.583224 193.951703 -76.118610
v -182.971705 290.435579 -234.286480
v 145.165263 230.906611 9.318881
v 78.463071 194.765819 84.535448
v 130.881032 157.810913 -0.902039
vn 0.319483 0.925323 -0.204226
vn 0.319483 0.925323 -0.204226
vn 0.319483 0.925323 -0.204226
vn -0.098113 0.928177 0.358973
vn -0.098113 0.928177 0.358973
vn -0.098113 0.928177 0.358973
vn -0.452538 -0.885498 0.105368
vn -0.452538 -0.885498 0.105368
vn -0.452538 -0.885498 0.105368
vn -0.034942 -0.888352 -0.457831
vn -0.034942 -0.888352 -0.457831
vn -0.034942 -0.888352 -0.457831
vn 0.780485 -0.233606 0.579890
vn 0.780485 -0.233606 0.579890
vn 0.780485 -0.233606 0.579890
vn 0.780485 -0.233606 0.579890
s off
g CubeFBXASC046001 SpaceFBXASC032Cone
f 9//25 10//26 11//27
f 11//28 10//29 12//30
f 12//31 10//32 13//33
f 13//34 10//35 9//36
f 9//37 11//38 12//39 13//40
g default
v -101.179661 151.211242 190.961505
v 104.427292 179.828822 273.855201
v -163.773779 235.928872 159.201358
v -315.586777 230.941757 45.919290
v -141.204840 171.758585 90.564298
v 118.375546 140.169738 231.435522
v 17.092532 277.246586 180.044197
v -242.487854 308.835433 39.172973
v -228.539600 269.176349 -3.246706
v 39.661471 213.076299 111.407137
v 191.474469 218.063414 224.689205
v -22.932647 297.793929 79.646990
vn -0.380843 0.064412 0.922394
vn -0.380843 0.064412 0.922394
vn -0.380843 0.064412 0.922394
vn -0.156730 -0.746634 0.646509
vn -0.156730 -0.746634 0.646509
vn -0.156730 -0.746634 0.646509
vn -0.589500 -0.137123 0.796045
vn -0.589500 -0.137123 0.796045
vn -0.589500 -0.137123 0.796045
vn -0.303621 -0.949963 -0.073376
vn -0.303621 -0.949963 -0.073376
vn -0.303621 -0.949963 -0.073376
vn -0.013296 -0.980634 -0.195396
vn -0.013296 -0.980634 -0.195396
vn -0.013296 -0.980634 -0.195396
vn 0.581856 -0.489808 0.649255
vn 0.581856 -0.489808 0.649255
vn 0.581856 -0.489808 0.649255
vn -0.220899 0.566484 0.793914
vn -0.220899 0.566484 0.793914
vn -0.220899 0.566484 0.793914
vn -0.514501 0.540487 0.665705
vn -0.514501 0.540487 0.665705
vn -0.514501 0.540487 0.665705
vn -0.069866 -0.723742 -0.686525
vn -0.069866 -0.723742 -0.686525
vn -0.069866 -0.723742 -0.686525
vn 0.242305 -0.750546 -0.614792
vn 0.242305 -0.750546 -0.614792
vn 0.242305 -0.750546 -0.614792
vn 0.069866 0.723742 0.686525
vn 0.069866 0.723742 0.686525
vn 0.069866 0.723742 0.686525
vn -0.242305 0.750546 0.614792
vn -0.242305 0.750546 0.614792
vn -0.242305 0.750546 0.614792
vn -0.581856 0.489808 -0.649255
vn -0.581856 0.489808 -0.649255
vn -0.581856 0.489808 -0.649255
vn 0.220899 -0.566484 -0.793914
vn 0.220899 -0.566484 -0.793914
vn 0.220899 -0.566484 -0.793914
vn 0.514501 -0.540487 -0.665705
vn 0.514501 -0.540487 -0.665705
vn 0.514501 -0.540487 -0.665705
vn 0.303621 0.949963 0.073376
vn 0.303621 0.949963 0.073376
vn 0.303621 0.949963 0.073376
vn 0.013296 0.980634 0.195396
vn 0.013296 0.980634 0.195396
vn 0.013296 0.980634 0.195396
vn 0.156730 0.746634 -0.646509
vn 0.156730 0.746634 -0.646509
vn 0.156730 0.746634 -0.646509
vn 0.380843 -0.064412 -0.922394
vn 0.380843 -0.064412 -0.922394
vn 0.380843 -0.064412 -0.922394
vn 0.589500 0.137123 -0.796045
vn 0.589500 0.137123 -0.796045
vn 0.589500 0.137123 -0.796045
s off
g CubeFBXASC046001 IcoFBXASC046FBXASC032FBXASC046Sphere
f 14//41 15//42 16//43
f 15//44 14//45 19//46
f 14//47 16//48 17//49
f 14//50 17//51 18//52
f 14//53 18//54 19//55
f 15//56 19//57 24//58
f 16//59 15//60 20//61
f 17//62 16//63 21//64
f 18//65 17//66 22//67
f 19//68 18//69 23//70
f 15//71 24//72 20//73
f 16//74 20//75 21//76
f 17//77 21//78 22//79
f 18//80 22//81 23//82
f 19//83 23//84 24//85
f 20//86 24//87 25//88
f 21//89 20//90 25//91
f 22//92 21//93 25//94
f 23//95 22//96 25//97
f 24//98 23//99 25//100
g default
v -152.919693 371.478976 111.425983
v 27.280693 286.450085 89.921433
v -27.280650 454.809441 -89.921519
v 152.919736 369.780550 -111.426068
vn 0.408272 0.724935 0.554782
vn 0.408272 0.724935 0.554782
vn 0.408272 0.724935 0.554782
vn 0.408272 0.724935 0.554782
s off
g CubeFBXASC046001 SpaceFBXASC032Cone DeepFBXASC032Plane
f 26//101 27//102 29//103 28//104

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,664 @@
# ufbx:bad_uvs
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
g Skin_Cube.001
v -0.937500 5.250000 0.000000
v -0.875000 5.250000 0.375000
v -0.937500 5.625000 0.000000
v -0.875000 5.250000 -0.375000
v -0.937500 4.875000 0.000000
v -0.875000 4.875000 0.375000
v -0.875000 5.625000 0.375000
v -0.875000 5.625000 -0.375000
v -0.875000 4.875000 -0.375000
v 0.031250 5.250000 -0.968750
v -0.375000 5.250000 -0.875000
v 0.031250 5.625000 -0.968750
v 0.500000 5.250000 -1.000000
v 0.031250 4.875000 -0.968750
v -0.375000 4.875000 -0.875000
v -0.375000 5.625000 -0.875000
v 0.500000 5.625000 -1.000000
v 0.500000 4.875000 -1.000000
v 0.968750 5.250000 -0.031250
v 1.000000 5.250000 -0.500000
v 0.968750 5.625000 -0.031250
v 0.875000 5.250000 0.375000
v 0.968750 4.875000 -0.031250
v 1.000000 4.875000 -0.500000
v 1.000000 5.625000 -0.500000
v 0.875000 5.625000 0.375000
v 0.875000 4.875000 0.375000
v 0.000000 5.250000 0.937500
v 0.375000 5.250000 0.875000
v 0.000000 5.625000 0.937500
v -0.375000 5.250000 0.875000
v 0.000000 4.875000 0.937500
v 0.375000 4.875000 0.875000
v 0.375000 5.625000 0.875000
v -0.375000 5.625000 0.875000
v -0.375000 4.875000 0.875000
v 0.000000 0.091146 0.000000
v 0.000000 0.135417 -0.350694
v 0.350694 0.135417 0.000000
v 0.000000 0.135417 0.350694
v -0.350694 0.135417 0.000000
v -0.326389 0.177083 -0.326389
v 0.326389 0.177083 -0.326389
v 0.326389 0.177083 0.326389
v -0.326389 0.177083 0.326389
v 0.003906 6.000000 -0.003906
v 0.015625 6.000000 -0.484375
v -0.468750 6.000000 0.000000
v 0.000000 6.000000 0.468750
v 0.484375 6.000000 -0.015625
v 0.500000 6.000000 -0.500000
v -0.437500 6.000000 -0.437500
v -0.437500 6.000000 0.437500
v 0.437500 6.000000 0.437500
v 0.000000 0.777995 0.907986
v 0.362847 0.782552 0.847222
v 0.000000 1.125000 0.937500
v -0.362847 0.782552 0.847222
v 0.000000 0.486979 0.819444
v 0.326389 0.505208 0.763889
v 0.375000 1.125000 0.875000
v -0.375000 1.125000 0.875000
v -0.326389 0.505208 0.763889
v 0.000000 2.250000 0.937500
v 0.375000 2.250000 0.875000
v 0.000000 2.625000 0.937500
v -0.375000 2.250000 0.875000
v 0.000000 1.875000 0.937500
v 0.375000 1.875000 0.875000
v 0.375000 2.625000 0.875000
v -0.375000 2.625000 0.875000
v -0.375000 1.875000 0.875000
v 0.000000 3.750000 0.937500
v 0.375000 3.750000 0.875000
v 0.000000 4.125000 0.937500
v -0.375000 3.750000 0.875000
v 0.000000 3.375000 0.937500
v 0.375000 3.375000 0.875000
v 0.375000 4.125000 0.875000
v -0.375000 4.125000 0.875000
v -0.375000 3.375000 0.875000
v 0.935330 0.777995 -0.027344
v 0.956597 0.782552 -0.472222
v 0.968750 1.125000 -0.031250
v 0.847222 0.782552 0.362847
v 0.835069 0.486979 -0.015625
v 0.826389 0.505208 -0.388889
v 1.000000 1.125000 -0.500000
v 0.875000 1.125000 0.375000
v 0.763889 0.505208 0.326389
v 0.968750 2.250000 -0.031250
v 1.000000 2.250000 -0.500000
v 0.968750 2.625000 -0.031250
v 0.875000 2.250000 0.375000
v 0.968750 1.875000 -0.031250
v 1.000000 1.875000 -0.500000
v 1.000000 2.625000 -0.500000
v 0.875000 2.625000 0.375000
v 0.875000 1.875000 0.375000
v 0.968750 3.750000 -0.031250
v 1.000000 3.750000 -0.500000
v 0.968750 4.125000 -0.031250
v 0.875000 3.750000 0.375000
v 0.968750 3.375000 -0.031250
v 1.000000 3.375000 -0.500000
v 1.000000 4.125000 -0.500000
v 0.875000 4.125000 0.375000
v 0.875000 3.375000 0.375000
v 0.027344 0.777995 -0.935330
v -0.362847 0.782552 -0.847222
v 0.031250 1.125000 -0.968750
v 0.472222 0.782552 -0.956597
v 0.015625 0.486979 -0.835069
v -0.326389 0.505208 -0.763889
v -0.375000 1.125000 -0.875000
v 0.500000 1.125000 -1.000000
v 0.388889 0.505208 -0.826389
v 0.031250 2.250000 -0.968750
v -0.375000 2.250000 -0.875000
v 0.031250 2.625000 -0.968750
v 0.500000 2.250000 -1.000000
v 0.031250 1.875000 -0.968750
v -0.375000 1.875000 -0.875000
v -0.375000 2.625000 -0.875000
v 0.500000 2.625000 -1.000000
v 0.500000 1.875000 -1.000000
v 0.031250 3.750000 -0.968750
v -0.375000 3.750000 -0.875000
v 0.031250 4.125000 -0.968750
v 0.500000 3.750000 -1.000000
v 0.031250 3.375000 -0.968750
v -0.375000 3.375000 -0.875000
v -0.375000 4.125000 -0.875000
v 0.500000 4.125000 -1.000000
v 0.500000 3.375000 -1.000000
v -0.907986 0.777995 0.000000
v -0.847222 0.782552 0.362847
v -0.937500 1.125000 0.000000
v -0.847222 0.782552 -0.362847
v -0.819444 0.486979 0.000000
v -0.763889 0.505208 0.326389
v -0.875000 1.125000 0.375000
v -0.875000 1.125000 -0.375000
v -0.763889 0.505208 -0.326389
v -0.937500 2.250000 0.000000
v -0.875000 2.250000 0.375000
v -0.937500 2.625000 0.000000
v -0.875000 2.250000 -0.375000
v -0.937500 1.875000 0.000000
v -0.875000 1.875000 0.375000
v -0.875000 2.625000 0.375000
v -0.875000 2.625000 -0.375000
v -0.875000 1.875000 -0.375000
v -0.937500 3.750000 0.000000
v -0.875000 3.750000 0.375000
v -0.937500 4.125000 0.000000
v -0.875000 3.750000 -0.375000
v -0.937500 3.375000 0.000000
v -0.875000 3.375000 0.375000
v -0.875000 4.125000 0.375000
v -0.875000 4.125000 -0.375000
v -0.875000 3.375000 -0.375000
v -0.598958 0.300781 -0.302083
v -0.643229 0.267578 0.000000
v -0.598958 0.300781 0.302083
v -0.687500 4.875000 0.687500
v -0.687500 5.250000 0.687500
v -0.687500 5.625000 0.687500
v -0.875000 6.000000 0.375000
v -0.937500 6.000000 0.000000
v -0.875000 6.000000 -0.375000
v -0.687500 1.125000 -0.687500
v -0.665365 0.787109 -0.665365
v -0.598958 0.523438 -0.598958
v 0.317708 0.300781 -0.614583
v 0.003906 0.267578 -0.647135
v -0.302083 0.300781 -0.598958
v -0.375000 6.000000 -0.875000
v 0.031250 6.000000 -0.968750
v 0.500000 6.000000 -1.000000
v 1.000000 1.125000 -1.000000
v 0.944444 0.791667 -0.944444
v 0.777778 0.541667 -0.777778
v 0.598958 0.300781 0.302083
v 0.647135 0.267578 -0.003906
v 0.614583 0.300781 -0.317708
v 1.000000 6.000000 -0.500000
v 0.968750 6.000000 -0.031250
v 0.875000 6.000000 0.375000
v 0.687500 1.125000 0.687500
v 0.665365 0.787109 0.665365
v 0.598958 0.523438 0.598958
v -0.302083 0.300781 0.598958
v 0.000000 0.267578 0.643229
v 0.302083 0.300781 0.598958
v 0.375000 6.000000 0.875000
v 0.000000 6.000000 0.937500
v -0.375000 6.000000 0.875000
v -0.598958 0.523438 0.598958
v -0.665365 0.787109 0.665365
v -0.687500 1.125000 0.687500
v -0.687500 1.875000 0.687500
v -0.687500 2.250000 0.687500
v -0.687500 2.625000 0.687500
v -0.687500 3.375000 0.687500
v -0.687500 3.750000 0.687500
v -0.687500 4.125000 0.687500
v -0.687500 5.625000 -0.687500
v -0.687500 5.250000 -0.687500
v -0.687500 4.875000 -0.687500
v -0.687500 4.125000 -0.687500
v -0.687500 3.750000 -0.687500
v -0.687500 3.375000 -0.687500
v -0.687500 2.625000 -0.687500
v -0.687500 2.250000 -0.687500
v -0.687500 1.875000 -0.687500
v 1.000000 5.625000 -1.000000
v 1.000000 5.250000 -1.000000
v 1.000000 4.875000 -1.000000
v 1.000000 4.125000 -1.000000
v 1.000000 3.750000 -1.000000
v 1.000000 3.375000 -1.000000
v 1.000000 2.625000 -1.000000
v 1.000000 2.250000 -1.000000
v 1.000000 1.875000 -1.000000
v 0.687500 5.625000 0.687500
v 0.687500 5.250000 0.687500
v 0.687500 4.875000 0.687500
v 0.687500 4.125000 0.687500
v 0.687500 3.750000 0.687500
v 0.687500 3.375000 0.687500
v 0.687500 2.625000 0.687500
v 0.687500 2.250000 0.687500
v 0.687500 1.875000 0.687500
v 0.375000 1.500000 0.875000
v 0.000000 1.500000 0.937500
v -0.375000 1.500000 0.875000
v 0.375000 3.000000 0.875000
v 0.000000 3.000000 0.937500
v -0.375000 3.000000 0.875000
v 0.375000 4.500000 0.875000
v 0.000000 4.500000 0.937500
v -0.375000 4.500000 0.875000
v 1.000000 1.500000 -0.500000
v 0.968750 1.500000 -0.031250
v 0.875000 1.500000 0.375000
v 1.000000 3.000000 -0.500000
v 0.968750 3.000000 -0.031250
v 0.875000 3.000000 0.375000
v 1.000000 4.500000 -0.500000
v 0.968750 4.500000 -0.031250
v 0.875000 4.500000 0.375000
v -0.375000 1.500000 -0.875000
v 0.031250 1.500000 -0.968750
v 0.500000 1.500000 -1.000000
v -0.375000 3.000000 -0.875000
v 0.031250 3.000000 -0.968750
v 0.500000 3.000000 -1.000000
v -0.375000 4.500000 -0.875000
v 0.031250 4.500000 -0.968750
v 0.500000 4.500000 -1.000000
v -0.875000 1.500000 0.375000
v -0.937500 1.500000 0.000000
v -0.875000 1.500000 -0.375000
v -0.875000 3.000000 0.375000
v -0.937500 3.000000 0.000000
v -0.875000 3.000000 -0.375000
v -0.875000 4.500000 0.375000
v -0.937500 4.500000 0.000000
v -0.875000 4.500000 -0.375000
v -0.509259 0.368056 0.509259
v -0.687500 6.000000 0.687500
v -0.509259 0.368056 -0.509259
v -0.687500 6.000000 -0.687500
v 0.509259 0.368056 0.509259
v 0.687500 6.000000 0.687500
v 0.550926 0.368056 -0.550926
v 1.000000 6.000000 -1.000000
v -0.687500 1.500000 0.687500
v -0.687500 3.000000 0.687500
v -0.687500 4.500000 0.687500
v -0.687500 4.500000 -0.687500
v -0.687500 3.000000 -0.687500
v -0.687500 1.500000 -0.687500
v 1.000000 4.500000 -1.000000
v 1.000000 3.000000 -1.000000
v 1.000000 1.500000 -1.000000
v 0.687500 4.500000 0.687500
v 0.687500 3.000000 0.687500
v 0.687500 1.500000 0.687500
vn -0.9864 0.0000 0.1644
vn -0.8575 0.0000 0.5145
vn -0.9864 0.0000 -0.1644
vn -0.8575 0.0000 -0.5145
vn -0.2249 0.0000 -0.9744
vn -0.5145 0.0000 -0.8575
vn -0.0665 0.0000 -0.9978
vn 0.0000 0.0000 -1.0000
vn 0.9978 0.0000 0.0665
vn 1.0000 0.0000 0.0000
vn 0.9744 0.0000 0.2249
vn 0.8575 0.0000 0.5145
vn 0.1644 0.0000 0.9864
vn 0.5145 0.0000 0.8575
vn -0.1644 0.0000 0.9864
vn -0.5145 0.0000 0.8575
vn -0.1294 -0.9831 -0.1294
vn -0.1535 -0.8984 -0.4116
vn -0.4131 -0.8979 -0.1520
vn -0.4200 -0.8044 -0.4200
vn 0.1294 -0.9831 -0.1294
vn 0.3979 -0.9065 -0.1413
vn 0.1413 -0.9065 -0.3979
vn 0.3644 -0.8570 -0.3644
vn 0.1294 -0.9831 0.1294
vn 0.1520 -0.8979 0.4131
vn 0.4116 -0.8984 0.1535
vn 0.4200 -0.8044 0.4200
vn -0.1294 -0.9831 0.1294
vn -0.4131 -0.8979 0.1520
vn -0.1520 -0.8979 0.4131
vn -0.4200 -0.8044 0.4200
vn 0.0000 1.0000 0.0000
vn 0.1685 -0.2952 0.9405
vn 0.4988 -0.3180 0.8063
vn 0.1722 -0.6236 0.7625
vn 0.4545 -0.6060 0.6528
vn 0.1647 -0.0846 0.9827
vn 0.5133 -0.0885 0.8536
vn -0.1647 -0.0846 0.9827
vn -0.5133 -0.0885 0.8536
vn -0.1685 -0.2952 0.9405
vn -0.1722 -0.6236 0.7625
vn -0.4988 -0.3180 0.8063
vn -0.4545 -0.6060 0.6528
vn 0.9269 -0.3752 0.0038
vn 0.8498 -0.5199 -0.0875
vn 0.7149 -0.6928 -0.0948
vn 0.5396 -0.8092 -0.2323
vn 0.9925 -0.1080 0.0565
vn 0.9891 -0.1465 -0.0137
vn 0.9709 -0.0888 0.2222
vn 0.8536 -0.0885 0.5133
vn 0.9274 -0.3088 0.2114
vn 0.7520 -0.6317 0.1886
vn 0.8063 -0.3180 0.4988
vn 0.6528 -0.6060 0.4545
vn -0.2114 -0.3088 -0.9274
vn -0.4988 -0.3180 -0.8063
vn -0.1886 -0.6317 -0.7520
vn -0.4545 -0.6060 -0.6528
vn -0.2222 -0.0888 -0.9709
vn -0.5133 -0.0885 -0.8536
vn -0.0565 -0.1080 -0.9925
vn 0.0137 -0.1465 -0.9891
vn -0.0038 -0.3752 -0.9269
vn 0.0948 -0.6928 -0.7149
vn 0.0875 -0.5199 -0.8498
vn 0.2323 -0.8092 -0.5396
vn -0.9405 -0.2952 0.1685
vn -0.8063 -0.3180 0.4988
vn -0.7625 -0.6236 0.1722
vn -0.6528 -0.6060 0.4545
vn -0.9827 -0.0846 0.1647
vn -0.8536 -0.0885 0.5133
vn -0.9827 -0.0846 -0.1647
vn -0.8536 -0.0885 -0.5133
vn -0.9405 -0.2952 -0.1685
vn -0.7625 -0.6236 -0.1722
vn -0.8063 -0.3180 -0.4988
vn -0.6528 -0.6060 -0.4545
s off
f 1//1 5//1 6//1 2//1
f 2//2 6//2 166//2 167//2
f 5//1 269//1 268//1 6//1
f 6//2 268//2 281//2 166//2
f 1//1 2//1 7//1 3//1
f 3//1 7//1 169//1 170//1
f 2//2 167//2 168//2 7//2
f 7//2 168//2 272//2 169//2
f 1//3 3//3 8//3 4//3
f 4//4 8//4 208//4 209//4
f 3//3 170//3 171//3 8//3
f 8//4 171//4 274//4 208//4
f 1//3 4//3 9//3 5//3
f 5//3 9//3 270//3 269//3
f 4//4 209//4 210//4 9//4
f 9//4 210//4 282//4 270//4
f 10//5 14//5 15//5 11//5
f 11//6 15//6 210//6 209//6
f 14//5 260//5 259//5 15//5
f 15//6 259//6 282//6 210//6
f 10//5 11//5 16//5 12//5
f 12//5 16//5 178//5 179//5
f 11//6 209//6 208//6 16//6
f 16//6 208//6 274//6 178//6
f 10//7 12//7 17//7 13//7
f 13//8 17//8 217//8 218//8
f 12//7 179//7 180//7 17//7
f 17//8 180//8 278//8 217//8
f 10//7 13//7 18//7 14//7
f 14//7 18//7 261//7 260//7
f 13//8 218//8 219//8 18//8
f 18//8 219//8 285//8 261//8
f 19//9 23//9 24//9 20//9
f 20//10 24//10 219//10 218//10
f 23//9 251//9 250//9 24//9
f 24//10 250//10 285//10 219//10
f 19//9 20//9 25//9 21//9
f 21//9 25//9 187//9 188//9
f 20//10 218//10 217//10 25//10
f 25//10 217//10 278//10 187//10
f 19//11 21//11 26//11 22//11
f 22//12 26//12 226//12 227//12
f 21//11 188//11 189//11 26//11
f 26//12 189//12 276//12 226//12
f 19//11 22//11 27//11 23//11
f 23//11 27//11 252//11 251//11
f 22//12 227//12 228//12 27//12
f 27//12 228//12 288//12 252//12
f 28//13 32//13 33//13 29//13
f 29//14 33//14 228//14 227//14
f 32//13 242//13 241//13 33//13
f 33//14 241//14 288//14 228//14
f 28//13 29//13 34//13 30//13
f 30//13 34//13 196//13 197//13
f 29//14 227//14 226//14 34//14
f 34//14 226//14 276//14 196//14
f 28//15 30//15 35//15 31//15
f 31//16 35//16 168//16 167//16
f 30//15 197//15 198//15 35//15
f 35//16 198//16 272//16 168//16
f 28//15 31//15 36//15 32//15
f 32//15 36//15 243//15 242//15
f 31//16 167//16 166//16 36//16
f 36//16 166//16 281//16 243//16
f 37//17 41//17 42//17 38//17
f 38//18 42//18 177//18 176//18
f 41//19 164//19 163//19 42//19
f 42//20 163//20 273//20 177//20
f 37//21 38//21 43//21 39//21
f 39//22 43//22 186//22 185//22
f 38//23 176//23 175//23 43//23
f 43//24 175//24 277//24 186//24
f 37//25 39//25 44//25 40//25
f 40//26 44//26 195//26 194//26
f 39//27 185//27 184//27 44//27
f 44//28 184//28 275//28 195//28
f 37//29 40//29 45//29 41//29
f 41//30 45//30 165//30 164//30
f 40//31 194//31 193//31 45//31
f 45//32 193//32 271//32 165//32
f 46//33 50//33 51//33 47//33
f 47//33 51//33 180//33 179//33
f 50//33 188//33 187//33 51//33
f 51//33 187//33 278//33 180//33
f 46//33 47//33 52//33 48//33
f 48//33 52//33 171//33 170//33
f 47//33 179//33 178//33 52//33
f 52//33 178//33 274//33 171//33
f 46//33 48//33 53//33 49//33
f 49//33 53//33 198//33 197//33
f 48//33 170//33 169//33 53//33
f 53//33 169//33 272//33 198//33
f 46//33 49//33 54//33 50//33
f 50//33 54//33 189//33 188//33
f 49//33 197//33 196//33 54//33
f 54//33 196//33 276//33 189//33
f 55//34 59//34 60//34 56//34
f 56//35 60//35 192//35 191//35
f 59//36 194//36 195//36 60//36
f 60//37 195//37 275//37 192//37
f 55//38 56//38 61//38 57//38
f 57//13 61//13 235//13 236//13
f 56//39 191//39 190//39 61//39
f 61//14 190//14 290//14 235//14
f 55//40 57//40 62//40 58//40
f 58//41 62//41 201//41 200//41
f 57//15 236//15 237//15 62//15
f 62//16 237//16 279//16 201//16
f 55//42 58//42 63//42 59//42
f 59//43 63//43 193//43 194//43
f 58//44 200//44 199//44 63//44
f 63//45 199//45 271//45 193//45
f 64//13 68//13 69//13 65//13
f 65//14 69//14 234//14 233//14
f 68//13 236//13 235//13 69//13
f 69//14 235//14 290//14 234//14
f 64//13 65//13 70//13 66//13
f 66//13 70//13 238//13 239//13
f 65//14 233//14 232//14 70//14
f 70//14 232//14 289//14 238//14
f 64//15 66//15 71//15 67//15
f 67//16 71//16 204//16 203//16
f 66//15 239//15 240//15 71//15
f 71//16 240//16 280//16 204//16
f 64//15 67//15 72//15 68//15
f 68//15 72//15 237//15 236//15
f 67//16 203//16 202//16 72//16
f 72//16 202//16 279//16 237//16
f 73//13 77//13 78//13 74//13
f 74//14 78//14 231//14 230//14
f 77//13 239//13 238//13 78//13
f 78//14 238//14 289//14 231//14
f 73//13 74//13 79//13 75//13
f 75//13 79//13 241//13 242//13
f 74//14 230//14 229//14 79//14
f 79//14 229//14 288//14 241//14
f 73//15 75//15 80//15 76//15
f 76//16 80//16 207//16 206//16
f 75//15 242//15 243//15 80//15
f 80//16 243//16 281//16 207//16
f 73//15 76//15 81//15 77//15
f 77//15 81//15 240//15 239//15
f 76//16 206//16 205//16 81//16
f 81//16 205//16 280//16 240//16
f 82//46 86//46 87//46 83//46
f 83//47 87//47 183//47 182//47
f 86//48 185//48 186//48 87//48
f 87//49 186//49 277//49 183//49
f 82//50 83//50 88//50 84//50
f 84//9 88//9 244//9 245//9
f 83//51 182//51 181//51 88//51
f 88//10 181//10 287//10 244//10
f 82//52 84//52 89//52 85//52
f 85//53 89//53 190//53 191//53
f 84//11 245//11 246//11 89//11
f 89//12 246//12 290//12 190//12
f 82//54 85//54 90//54 86//54
f 86//55 90//55 184//55 185//55
f 85//56 191//56 192//56 90//56
f 90//57 192//57 275//57 184//57
f 91//9 95//9 96//9 92//9
f 92//10 96//10 225//10 224//10
f 95//9 245//9 244//9 96//9
f 96//10 244//10 287//10 225//10
f 91//9 92//9 97//9 93//9
f 93//9 97//9 247//9 248//9
f 92//10 224//10 223//10 97//10
f 97//10 223//10 286//10 247//10
f 91//11 93//11 98//11 94//11
f 94//12 98//12 232//12 233//12
f 93//11 248//11 249//11 98//11
f 98//12 249//12 289//12 232//12
f 91//11 94//11 99//11 95//11
f 95//11 99//11 246//11 245//11
f 94//12 233//12 234//12 99//12
f 99//12 234//12 290//12 246//12
f 100//9 104//9 105//9 101//9
f 101//10 105//10 222//10 221//10
f 104//9 248//9 247//9 105//9
f 105//10 247//10 286//10 222//10
f 100//9 101//9 106//9 102//9
f 102//9 106//9 250//9 251//9
f 101//10 221//10 220//10 106//10
f 106//10 220//10 285//10 250//10
f 100//11 102//11 107//11 103//11
f 103//12 107//12 229//12 230//12
f 102//11 251//11 252//11 107//11
f 107//12 252//12 288//12 229//12
f 100//11 103//11 108//11 104//11
f 104//11 108//11 249//11 248//11
f 103//12 230//12 231//12 108//12
f 108//12 231//12 289//12 249//12
f 109//58 113//58 114//58 110//58
f 110//59 114//59 174//59 173//59
f 113//60 176//60 177//60 114//60
f 114//61 177//61 273//61 174//61
f 109//62 110//62 115//62 111//62
f 111//5 115//5 253//5 254//5
f 110//63 173//63 172//63 115//63
f 115//6 172//6 284//6 253//6
f 109//64 111//64 116//64 112//64
f 112//65 116//65 181//65 182//65
f 111//7 254//7 255//7 116//7
f 116//8 255//8 287//8 181//8
f 109//66 112//66 117//66 113//66
f 113//67 117//67 175//67 176//67
f 112//68 182//68 183//68 117//68
f 117//69 183//69 277//69 175//69
f 118//5 122//5 123//5 119//5
f 119//6 123//6 216//6 215//6
f 122//5 254//5 253//5 123//5
f 123//6 253//6 284//6 216//6
f 118//5 119//5 124//5 120//5
f 120//5 124//5 256//5 257//5
f 119//6 215//6 214//6 124//6
f 124//6 214//6 283//6 256//6
f 118//7 120//7 125//7 121//7
f 121//8 125//8 223//8 224//8
f 120//7 257//7 258//7 125//7
f 125//8 258//8 286//8 223//8
f 118//7 121//7 126//7 122//7
f 122//7 126//7 255//7 254//7
f 121//8 224//8 225//8 126//8
f 126//8 225//8 287//8 255//8
f 127//5 131//5 132//5 128//5
f 128//6 132//6 213//6 212//6
f 131//5 257//5 256//5 132//5
f 132//6 256//6 283//6 213//6
f 127//5 128//5 133//5 129//5
f 129//5 133//5 259//5 260//5
f 128//6 212//6 211//6 133//6
f 133//6 211//6 282//6 259//6
f 127//7 129//7 134//7 130//7
f 130//8 134//8 220//8 221//8
f 129//7 260//7 261//7 134//7
f 134//8 261//8 285//8 220//8
f 127//7 130//7 135//7 131//7
f 131//7 135//7 258//7 257//7
f 130//8 221//8 222//8 135//8
f 135//8 222//8 286//8 258//8
f 136//70 140//70 141//70 137//70
f 137//71 141//71 199//71 200//71
f 140//72 164//72 165//72 141//72
f 141//73 165//73 271//73 199//73
f 136//74 137//74 142//74 138//74
f 138//1 142//1 262//1 263//1
f 137//75 200//75 201//75 142//75
f 142//2 201//2 279//2 262//2
f 136//76 138//76 143//76 139//76
f 139//77 143//77 172//77 173//77
f 138//3 263//3 264//3 143//3
f 143//4 264//4 284//4 172//4
f 136//78 139//78 144//78 140//78
f 140//79 144//79 163//79 164//79
f 139//80 173//80 174//80 144//80
f 144//81 174//81 273//81 163//81
f 145//1 149//1 150//1 146//1
f 146//2 150//2 202//2 203//2
f 149//1 263//1 262//1 150//1
f 150//2 262//2 279//2 202//2
f 145//1 146//1 151//1 147//1
f 147//1 151//1 265//1 266//1
f 146//2 203//2 204//2 151//2
f 151//2 204//2 280//2 265//2
f 145//3 147//3 152//3 148//3
f 148//4 152//4 214//4 215//4
f 147//3 266//3 267//3 152//3
f 152//4 267//4 283//4 214//4
f 145//3 148//3 153//3 149//3
f 149//3 153//3 264//3 263//3
f 148//4 215//4 216//4 153//4
f 153//4 216//4 284//4 264//4
f 154//1 158//1 159//1 155//1
f 155//2 159//2 205//2 206//2
f 158//1 266//1 265//1 159//1
f 159//2 265//2 280//2 205//2
f 154//1 155//1 160//1 156//1
f 156//1 160//1 268//1 269//1
f 155//2 206//2 207//2 160//2
f 160//2 207//2 281//2 268//2
f 154//3 156//3 161//3 157//3
f 157//4 161//4 211//4 212//4
f 156//3 269//3 270//3 161//3
f 161//4 270//4 282//4 211//4
f 154//3 157//3 162//3 158//3
f 158//3 162//3 267//3 266//3
f 157//4 212//4 213//4 162//4
f 162//4 213//4 283//4 267//4

View File

@@ -0,0 +1,856 @@
# ufbx:bad_uvs
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
g Skin_Cube.001
v -0.294501 5.250000 -0.861288
v -0.619363 5.250000 -0.686071
v -0.316787 5.625000 -0.867635
v 0.069632 5.250000 -0.921681
v -0.272291 4.875000 -0.854963
v -0.596100 4.875000 -0.689052
v -0.642710 5.625000 -0.683079
v 0.051377 5.625000 -0.936515
v 0.087828 4.875000 -0.906897
v 0.899814 5.250000 -0.275608
v 0.686066 5.250000 -0.619402
v 0.907115 5.625000 -0.298426
v 1.075758 5.250000 0.145237
v 0.892538 4.875000 -0.252869
v 0.689046 4.875000 -0.596148
v 0.683076 5.625000 -0.642734
v 1.094421 5.625000 0.124842
v 1.057163 4.875000 0.165557
v 0.333027 5.250000 0.880181
v 0.773465 5.250000 0.761644
v 0.356268 5.625000 0.885996
v -0.069632 5.250000 0.921681
v 0.309866 4.875000 0.874385
v 0.746396 4.875000 0.766743
v 0.800631 5.625000 0.756526
v -0.051377 5.625000 0.936515
v -0.087828 4.875000 0.906897
v -0.861288 5.250000 0.294501
v -0.686066 5.250000 0.619402
v -0.867635 5.625000 0.316787
v -0.921656 5.250000 -0.069663
v -0.854963 4.875000 0.272291
v -0.689046 4.875000 0.596148
v -0.683076 5.625000 0.642734
v -0.936500 5.625000 -0.051395
v -0.906866 4.875000 -0.087865
v 0.000000 0.091146 0.000000
v 0.321609 0.135417 -0.139836
v 0.139836 0.135417 0.321609
v -0.321609 0.135417 0.139836
v -0.139836 0.135417 -0.321609
v 0.169175 0.177083 -0.429464
v 0.429464 0.177083 0.169175
v -0.169175 0.177083 0.429464
v -0.429464 0.177083 -0.169175
v 0.005055 6.000000 0.002229
v 0.457221 6.000000 -0.160662
v -0.169576 6.000000 -0.437002
v -0.437002 6.000000 0.169576
v 0.189795 6.000000 0.445916
v 0.647016 6.000000 0.285254
v 0.249598 6.000000 -0.566139
v -0.566139 6.000000 -0.249598
v -0.249598 6.000000 0.566139
v -0.820926 0.777995 0.317405
v -0.639151 0.782552 0.624199
v -0.841574 1.125000 0.304798
v -0.892841 0.782552 -0.031876
v -0.746168 0.486979 0.306563
v -0.573477 0.505208 0.582971
v -0.663554 1.125000 0.621081
v -0.907405 1.125000 -0.052130
v -0.817693 0.505208 -0.011415
v -0.722380 2.250000 -0.151280
v -0.734735 2.250000 0.147743
v -0.666098 2.625000 -0.366719
v -0.613718 2.250000 -0.430135
v -0.778867 1.875000 0.064944
v -0.700968 1.875000 0.372140
v -0.768380 2.625000 -0.075839
v -0.475009 2.625000 -0.608704
v -0.752933 1.875000 -0.250916
v -0.728906 3.750000 -0.167120
v -0.747159 3.750000 0.135596
v -0.788674 4.125000 0.041139
v -0.613456 3.750000 -0.447551
v -0.669355 3.375000 -0.374624
v -0.774581 3.375000 -0.081901
v -0.719637 4.125000 0.353885
v -0.752539 4.125000 -0.277088
v -0.474878 3.375000 -0.617396
v 0.351685 0.777995 0.836089
v 0.761366 0.782552 0.699796
v 0.343010 1.125000 0.859467
v -0.031910 0.782552 0.892816
v 0.326636 0.486979 0.754551
v 0.663287 0.505208 0.607002
v 0.773988 1.125000 0.735114
v -0.052172 1.125000 0.907372
v -0.011432 0.505208 0.817680
v -0.132243 2.250000 0.751502
v 0.223921 2.250000 0.851218
v -0.356739 2.625000 0.700525
v -0.430158 2.250000 0.613701
v 0.093071 1.875000 0.802664
v 0.484694 1.875000 0.796150
v -0.035906 2.625000 0.906086
v -0.608716 2.625000 0.475000
v -0.250949 1.875000 0.752907
v -0.148394 3.750000 0.758774
v 0.210473 3.750000 0.866634
v 0.068800 4.125000 0.813592
v -0.447531 3.750000 0.613472
v -0.364800 3.375000 0.704155
v -0.042617 3.375000 0.913780
v 0.464486 4.125000 0.819315
v -0.277058 4.125000 0.752563
v -0.617386 3.375000 0.474886
v 0.855206 0.777995 -0.302241
v 0.639151 0.782552 -0.624199
v 0.879787 1.125000 -0.286905
v 1.029966 0.782552 0.092528
v 0.766242 0.486979 -0.298181
v 0.573477 0.505208 -0.582971
v 0.663554 1.125000 -0.621081
v 1.060259 1.125000 0.123698
v 0.897987 0.505208 0.044943
v 0.741417 2.250000 0.180402
v 0.734735 2.250000 -0.147743
v 0.676078 2.625000 0.401146
v 0.689867 2.250000 0.546622
v 0.806994 1.875000 -0.041147
v 0.700968 1.875000 -0.372140
v 0.768380 2.625000 0.075839
v 0.514927 2.625000 0.746412
v 0.865445 1.875000 0.346104
v 0.747632 3.750000 0.196988
v 0.747159 3.750000 -0.135596
v 0.816334 4.125000 -0.016222
v 0.688359 3.750000 0.567023
v 0.679180 3.375000 0.409424
v 0.774581 3.375000 0.081901
v 0.719637 4.125000 -0.353885
v 0.863178 4.125000 0.376760
v 0.514174 3.375000 0.756594
v -0.317405 0.777995 -0.820926
v -0.624241 0.782552 -0.639144
v -0.304798 1.125000 -0.841574
v 0.031910 0.782552 -0.892816
v -0.306563 0.486979 -0.746168
v -0.582993 0.505208 -0.573474
v -0.621134 1.125000 -0.663546
v 0.052172 1.125000 -0.907372
v 0.011432 0.505208 -0.817680
v 0.151280 2.250000 -0.722380
v -0.147772 2.250000 -0.734731
v 0.366719 2.625000 -0.666098
v 0.430158 2.250000 -0.613701
v -0.064944 1.875000 -0.778867
v -0.372182 1.875000 -0.700962
v 0.075824 2.625000 -0.768378
v 0.608716 2.625000 -0.475000
v 0.250949 1.875000 -0.752907
v 0.167120 3.750000 -0.728906
v -0.135571 3.750000 -0.747162
v -0.041139 4.125000 -0.788674
v 0.447531 3.750000 -0.613472
v 0.374624 3.375000 -0.669355
v 0.081914 3.375000 -0.774582
v -0.353847 4.125000 -0.719642
v 0.277058 4.125000 -0.752563
v 0.617386 3.375000 -0.474886
v 0.038200 0.300781 -0.669736
v -0.256482 0.267578 -0.589882
v -0.515859 0.300781 -0.428830
v -0.826610 4.875000 -0.427316
v -0.847543 5.250000 -0.415664
v -0.868555 5.625000 -0.403966
v -0.666143 6.000000 -0.680076
v -0.339152 6.000000 -0.874004
v 0.033060 6.000000 -0.951398
v 0.393663 1.125000 -0.840626
v 0.368998 0.787109 -0.834122
v 0.321333 0.523438 -0.769456
v 0.690295 0.300781 0.046299
v 0.595022 0.267578 -0.254457
v 0.428830 0.300781 -0.515859
v 0.680076 6.000000 -0.666143
v 0.914442 6.000000 -0.321323
v 1.113152 6.000000 0.104374
v 1.222865 1.125000 0.572521
v 1.184090 0.791667 0.523708
v 0.999229 0.541667 0.417238
v -0.038200 0.300781 0.669736
v 0.261622 0.267578 0.591907
v 0.536418 0.300781 0.436929
v 0.827897 6.000000 0.751390
v 0.379590 6.000000 0.891832
v -0.033060 6.000000 0.951398
v -0.393663 1.125000 0.840626
v -0.368998 0.787109 0.834122
v -0.321333 0.523438 0.769456
v -0.669736 0.300781 -0.038200
v -0.589882 0.267578 0.256482
v -0.428830 0.300781 0.515859
v -0.680076 6.000000 0.666143
v -0.874004 6.000000 0.339152
v -0.951398 6.000000 -0.033060
v -0.769495 0.523438 -0.321310
v -0.834196 0.787109 -0.368954
v -0.840720 1.125000 -0.393608
v -0.618832 1.875000 -0.523522
v -0.418832 2.250000 -0.640669
v -0.219558 2.625000 -0.757391
v -0.216125 3.375000 -0.765592
v -0.411953 3.750000 -0.657099
v -0.608495 4.125000 -0.548211
v 0.403943 5.625000 -0.868597
v 0.415624 5.250000 -0.847613
v 0.427268 4.875000 -0.826696
v 0.548173 4.125000 -0.608564
v 0.657073 3.750000 -0.411999
v 0.765579 3.375000 -0.216148
v 0.757407 2.625000 -0.219532
v 0.640699 2.250000 -0.418782
v 0.523565 1.875000 -0.618758
v 1.263353 5.625000 0.587587
v 1.232790 5.250000 0.604602
v 1.202341 4.875000 0.621551
v 0.885084 4.125000 0.797398
v 0.599205 3.750000 0.955780
v 0.314363 3.375000 1.113588
v 0.319357 2.625000 1.101660
v 0.609210 2.250000 0.931882
v 0.900119 1.875000 0.761486
v -0.403943 5.625000 0.868597
v -0.415624 5.250000 0.847613
v -0.427268 4.875000 0.826696
v -0.548173 4.125000 0.608564
v -0.657073 3.750000 0.411999
v -0.765579 3.375000 0.216148
v -0.757407 2.625000 0.219532
v -0.640699 2.250000 0.418782
v -0.523565 1.875000 0.618758
v -0.667077 1.500000 0.597357
v -0.835560 1.500000 0.281957
v -0.892656 1.500000 -0.071042
v -0.801903 3.000000 -0.298610
v -0.610020 3.000000 -0.581376
v -0.336802 3.000000 -0.786626
v -0.692016 4.500000 0.572971
v -0.848660 4.500000 0.250159
v -0.892130 4.500000 -0.106002
v 0.746418 1.500000 0.740880
v 0.319208 1.500000 0.854014
v -0.071086 1.500000 0.892622
v -0.294791 3.000000 0.960756
v -0.580422 3.000000 0.649734
v -0.786626 3.000000 0.336802
v 0.719426 4.500000 0.771824
v 0.286786 4.500000 0.868610
v -0.105962 4.500000 0.892162
v 0.667077 1.500000 -0.597357
v 0.872811 1.500000 -0.263504
v 1.041663 1.500000 0.144853
v 0.801903 3.000000 0.298610
v 0.610975 3.000000 0.621090
v 0.340621 3.000000 0.945479
v 0.692016 4.500000 -0.572971
v 0.885287 4.500000 -0.230209
v 1.038635 4.500000 0.185804
v -0.597411 1.500000 -0.667069
v -0.281957 1.500000 -0.835560
v 0.071086 1.500000 -0.892622
v 0.298610 3.000000 -0.801903
v 0.581376 3.000000 -0.610020
v 0.786626 3.000000 -0.336802
v -0.572921 4.500000 -0.692022
v -0.250159 4.500000 -0.848660
v 0.105962 4.500000 -0.892162
v -0.670086 0.368056 -0.263960
v -0.889647 6.000000 -0.392225
v 0.263960 0.368056 -0.670086
v 0.392225 6.000000 -0.889647
v -0.263960 0.368056 0.670086
v -0.392225 6.000000 0.889647
v 0.724911 0.368056 0.285557
v 1.294033 6.000000 0.570509
v -0.819562 1.500000 -0.405947
v -0.021006 3.000000 -0.873691
v -0.805755 4.500000 -0.438925
v 0.438875 4.500000 -0.805845
v 0.873691 3.000000 -0.021005
v 0.406004 1.500000 -0.819464
v 1.172008 4.500000 0.638437
v 0.030554 3.000000 1.270823
v 1.192090 1.500000 0.590468
v -0.438875 4.500000 0.805845
v -0.873691 3.000000 0.021005
v -0.406004 1.500000 0.819464
vn -0.4652 -0.0321 -0.8846
vn -0.7571 -0.0319 -0.6526
vn -0.4462 -0.0309 -0.8944
vn -0.7429 -0.0306 -0.6686
vn -0.4835 -0.0333 -0.8747
vn -0.5012 -0.0345 -0.8646
vn -0.7705 -0.0331 -0.6366
vn -0.7832 -0.0343 -0.6208
vn -0.1737 -0.0372 -0.9841
vn 0.1990 -0.0388 -0.9792
vn -0.1937 -0.0383 -0.9803
vn 0.1791 -0.0399 -0.9830
vn -0.1532 -0.0360 -0.9875
vn -0.1320 -0.0349 -0.9906
vn 0.2194 -0.0377 -0.9749
vn 0.2402 -0.0365 -0.9700
vn 0.8542 -0.0367 -0.5187
vn 0.6526 -0.0319 -0.7571
vn 0.8651 -0.0355 -0.5003
vn 0.6686 -0.0306 -0.7429
vn 0.8431 -0.0379 -0.5364
vn 0.8320 -0.0390 -0.5534
vn 0.6366 -0.0331 -0.7705
vn 0.6208 -0.0342 -0.7832
vn 0.9172 -0.0545 -0.3947
vn 0.9399 -0.0783 -0.3323
vn 0.9089 -0.0555 -0.4133
vn 0.9329 -0.0790 -0.3513
vn 0.9253 -0.0535 -0.3755
vn 0.9332 -0.0524 -0.3556
vn 0.9467 -0.0774 -0.3126
vn 0.9533 -0.0766 -0.2922
vn 0.2497 -0.0176 0.9682
vn 0.3136 0.0039 0.9496
vn 0.2289 -0.0162 0.9733
vn 0.2932 0.0056 0.9560
vn 0.2698 -0.0190 0.9627
vn 0.2894 -0.0204 0.9570
vn 0.3333 0.0022 0.9428
vn 0.3524 0.0005 0.9358
vn 0.1128 -0.0336 0.9931
vn -0.1990 -0.0388 0.9792
vn 0.1329 -0.0347 0.9905
vn -0.1791 -0.0399 0.9830
vn 0.0920 -0.0324 0.9952
vn 0.0707 -0.0312 0.9970
vn -0.2194 -0.0377 0.9749
vn -0.2402 -0.0365 0.9700
vn -0.8846 -0.0321 0.4652
vn -0.6526 -0.0319 0.7571
vn -0.8944 -0.0309 0.4461
vn -0.6686 -0.0306 0.7429
vn -0.8747 -0.0333 0.4835
vn -0.8646 -0.0345 0.5012
vn -0.6366 -0.0331 0.7705
vn -0.6208 -0.0342 0.7832
vn -0.9841 -0.0372 0.1737
vn -0.9792 -0.0389 -0.1991
vn -0.9803 -0.0383 0.1937
vn -0.9830 -0.0400 -0.1791
vn -0.9876 -0.0361 0.1531
vn -0.9906 -0.0349 0.1319
vn -0.9749 -0.0377 -0.2196
vn -0.9700 -0.0365 -0.2404
vn 0.0671 -0.9831 -0.1703
vn 0.3162 -0.8984 -0.3049
vn -0.0253 -0.8979 -0.4394
vn 0.2177 -0.8044 -0.5527
vn 0.1703 -0.9831 0.0671
vn 0.2883 -0.9065 0.3085
vn 0.4212 -0.9065 -0.0290
vn 0.4795 -0.8570 0.1889
vn -0.0671 -0.9831 0.1703
vn -0.3182 -0.8979 0.3041
vn 0.0233 -0.8984 0.4387
vn -0.2177 -0.8044 0.5527
vn -0.1703 -0.9831 -0.0671
vn -0.3041 -0.8979 -0.3182
vn -0.4394 -0.8979 0.0253
vn -0.5527 -0.8044 -0.2177
vn 0.0000 1.0000 0.0000
vn -0.8230 -0.2501 0.5100
vn -0.5743 -0.2715 0.7723
vn -0.6558 -0.5943 0.4655
vn -0.4467 -0.5699 0.6897
vn -0.8650 -0.0451 0.4998
vn -0.8763 0.0328 0.4807
vn -0.6214 -0.0487 0.7820
vn -0.6391 0.0325 0.7684
vn -0.9807 -0.0410 0.1910
vn -0.9824 -0.0424 -0.1817
vn -0.9847 0.0368 0.1705
vn -0.9786 0.0384 -0.2022
vn -0.9491 -0.2470 0.1956
vn -0.7910 -0.5942 0.1456
vn -0.9494 -0.2663 -0.1662
vn -0.8065 -0.5683 -0.1628
vn -0.9899 0.0929 0.1070
vn -0.8825 0.0843 0.4627
vn -0.9031 0.2382 0.3574
vn -0.7100 0.2338 0.6642
vn -0.9783 -0.0818 -0.1901
vn -0.8654 -0.2328 -0.4438
vn -0.9789 -0.0939 0.1815
vn -0.9645 -0.2462 -0.0954
vn -0.8661 -0.0367 -0.4985
vn -0.6234 -0.0268 -0.7815
vn -0.6806 -0.1936 -0.7066
vn -0.3747 -0.1879 -0.9079
vn -0.9662 0.1368 -0.2187
vn -0.9604 0.2752 0.0447
vn -0.8172 0.1497 -0.5565
vn -0.9061 0.2888 -0.3090
vn -0.9766 0.0729 -0.2025
vn -0.9819 0.0846 0.1694
vn -0.8676 0.2159 -0.4479
vn -0.9684 0.2289 -0.0984
vn -0.9926 -0.0893 0.0819
vn -0.9180 -0.2257 0.3260
vn -0.8942 -0.0809 0.4404
vn -0.7354 -0.2213 0.6405
vn -0.9609 -0.1319 -0.2433
vn -0.8035 -0.1444 -0.5776
vn -0.9650 -0.2621 0.0105
vn -0.8982 -0.2753 -0.3426
vn -0.8600 0.0291 -0.5094
vn -0.6808 0.1771 -0.7107
vn -0.6136 0.0194 -0.7894
vn -0.3733 0.1713 -0.9117
vn 0.3431 -0.3426 0.8746
vn 0.3996 -0.5038 0.7659
vn 0.3732 -0.6715 0.6402
vn 0.4325 -0.7964 0.4227
vn 0.2955 -0.0827 0.9517
vn 0.2667 0.0179 0.9636
vn 0.3598 -0.1422 0.9221
vn 0.3303 -0.0042 0.9439
vn 0.1327 -0.0489 0.9899
vn -0.1819 -0.0424 0.9824
vn 0.1094 0.0330 0.9934
vn -0.2024 0.0384 0.9785
vn 0.1499 -0.2639 0.9528
vn 0.1252 -0.6039 0.7871
vn -0.1663 -0.2663 0.9494
vn -0.1628 -0.5683 0.8066
vn -0.1232 -0.0850 0.9887
vn -0.0543 -0.3239 0.9445
vn 0.1440 0.0885 0.9856
vn 0.2081 -0.1385 0.9683
vn -0.3968 -0.2608 0.8800
vn -0.5976 -0.3881 0.7016
vn -0.3079 -0.4730 0.8255
vn -0.4943 -0.5595 0.6653
vn -0.5493 -0.0849 0.8313
vn -0.7815 -0.0268 0.6233
vn -0.7398 -0.2375 0.6295
vn -0.9079 -0.1879 0.3747
vn -0.2793 0.0920 0.9558
vn -0.0147 0.2393 0.9708
vn -0.5566 0.1497 0.8172
vn -0.3092 0.2887 0.9061
vn -0.4094 0.2475 0.8782
vn -0.3214 0.4571 0.8293
vn -0.6044 0.3700 0.7056
vn -0.5028 0.5426 0.6729
vn -0.1483 0.0833 0.9854
vn 0.1089 -0.0786 0.9909
vn -0.0785 0.3159 0.9455
vn 0.1733 0.1430 0.9744
vn -0.3035 -0.0884 0.9487
vn -0.5775 -0.1445 0.8035
vn -0.0494 -0.2268 0.9727
vn -0.3425 -0.2754 0.8982
vn -0.5601 0.0759 0.8250
vn -0.7446 0.2204 0.6301
vn -0.7894 0.0194 0.6136
vn -0.9117 0.1713 0.3733
vn 0.7962 -0.2602 -0.5462
vn 0.5743 -0.2715 -0.7723
vn 0.6401 -0.6019 -0.4774
vn 0.4467 -0.5699 -0.6897
vn 0.8341 -0.0445 -0.5498
vn 0.8449 0.0374 -0.5337
vn 0.6214 -0.0487 -0.7820
vn 0.6391 0.0325 -0.7684
vn 0.9141 -0.0456 -0.4029
vn 0.9396 -0.0561 -0.3376
vn 0.9184 0.0546 -0.3918
vn 0.9409 0.0791 -0.3293
vn 0.8799 -0.3148 -0.3558
vn 0.7196 -0.6647 -0.2006
vn 0.8606 -0.4446 -0.2483
vn 0.6178 -0.7863 -0.0039
vn 0.9759 0.1406 -0.1669
vn 0.8825 0.0843 -0.4627
vn 0.8691 0.2802 -0.4076
vn 0.7100 0.2338 -0.6642
vn 0.9909 -0.0350 0.1298
vn 0.8988 -0.1941 0.3930
vn 0.9789 -0.0939 -0.1815
vn 0.9645 -0.2462 0.0954
vn 0.9480 0.1448 0.2834
vn 0.8674 0.3781 0.3236
vn 0.8401 -0.0343 0.5413
vn 0.7867 0.1988 0.5845
vn 0.9505 0.3105 -0.0087
vn 0.8717 0.4220 -0.2490
vn 0.8589 0.5098 0.0493
vn 0.7954 0.5814 -0.1710
vn 0.9894 0.0274 0.1423
vn 0.9819 0.0846 -0.1694
vn 0.9006 0.1775 0.3967
vn 0.9684 0.2289 0.0984
vn 0.9805 -0.1356 -0.1422
vn 0.8865 -0.2670 -0.3778
vn 0.8942 -0.0809 -0.4404
vn 0.7354 -0.2213 -0.6405
vn 0.9534 -0.3012 0.0155
vn 0.8644 -0.4976 0.0718
vn 0.8865 -0.4074 -0.2194
vn 0.8109 -0.5672 -0.1442
vn 0.9440 -0.1472 0.2952
vn 0.8389 0.0200 0.5439
vn 0.8648 -0.3741 0.3351
vn 0.7836 -0.2076 0.5855
vn -0.5100 -0.2501 -0.8230
vn -0.7723 -0.2715 -0.5743
vn -0.4655 -0.5944 -0.6558
vn -0.6897 -0.5700 -0.4466
vn -0.4998 -0.0451 -0.8650
vn -0.4806 0.0327 -0.8763
vn -0.7819 -0.0487 -0.6214
vn -0.7684 0.0325 -0.6392
vn -0.1909 -0.0410 -0.9807
vn 0.1819 -0.0424 -0.9824
vn -0.1704 0.0367 -0.9847
vn 0.2024 0.0384 -0.9785
vn -0.1955 -0.2470 -0.9491
vn -0.1455 -0.5942 -0.7910
vn 0.1663 -0.2663 -0.9494
vn 0.1628 -0.5683 -0.8066
vn -0.1070 0.0929 -0.9899
vn -0.4628 0.0843 -0.8825
vn -0.3573 0.2382 -0.9031
vn -0.6642 0.2338 -0.7100
vn 0.1901 -0.0818 -0.9784
vn 0.4438 -0.2328 -0.8654
vn -0.1815 -0.0939 -0.9789
vn 0.0954 -0.2462 -0.9645
vn 0.4985 -0.0367 -0.8661
vn 0.7815 -0.0268 -0.6233
vn 0.7066 -0.1935 -0.6806
vn 0.9079 -0.1879 -0.3747
vn 0.2187 0.1368 -0.9662
vn -0.0447 0.2751 -0.9604
vn 0.5566 0.1497 -0.8172
vn 0.3092 0.2887 -0.9061
vn 0.2025 0.0729 -0.9766
vn -0.1693 0.0846 -0.9819
vn 0.4479 0.2159 -0.8676
vn 0.0985 0.2289 -0.9685
vn -0.0819 -0.0893 -0.9926
vn -0.3260 -0.2257 -0.9180
vn -0.4403 -0.0809 -0.8942
vn -0.6405 -0.2213 -0.7354
vn 0.2433 -0.1319 -0.9609
vn 0.5775 -0.1445 -0.8035
vn -0.0106 -0.2622 -0.9650
vn 0.3425 -0.2754 -0.8982
vn 0.5094 0.0291 -0.8600
vn 0.7107 0.1771 -0.6808
vn 0.7894 0.0194 -0.6136
vn 0.9117 0.1713 -0.3733
s off
f 1//1 5//1 6//1 2//1
f 2//2 6//2 166//2 167//2
f 5//3 269//3 268//3 6//3
f 6//4 268//4 281//4 166//4
f 1//5 2//5 7//5 3//5
f 3//6 7//6 169//6 170//6
f 2//7 167//7 168//7 7//7
f 7//8 168//8 272//8 169//8
f 1//9 3//9 8//9 4//9
f 4//10 8//10 208//10 209//10
f 3//11 170//11 171//11 8//11
f 8//12 171//12 274//12 208//12
f 1//13 4//13 9//13 5//13
f 5//14 9//14 270//14 269//14
f 4//15 209//15 210//15 9//15
f 9//16 210//16 282//16 270//16
f 10//17 14//17 15//17 11//17
f 11//18 15//18 210//18 209//18
f 14//19 260//19 259//19 15//19
f 15//20 259//20 282//20 210//20
f 10//21 11//21 16//21 12//21
f 12//22 16//22 178//22 179//22
f 11//23 209//23 208//23 16//23
f 16//24 208//24 274//24 178//24
f 10//25 12//25 17//25 13//25
f 13//26 17//26 217//26 218//26
f 12//27 179//27 180//27 17//27
f 17//28 180//28 278//28 217//28
f 10//29 13//29 18//29 14//29
f 14//30 18//30 261//30 260//30
f 13//31 218//31 219//31 18//31
f 18//32 219//32 285//32 261//32
f 19//33 23//33 24//33 20//33
f 20//34 24//34 219//34 218//34
f 23//35 251//35 250//35 24//35
f 24//36 250//36 285//36 219//36
f 19//37 20//37 25//37 21//37
f 21//38 25//38 187//38 188//38
f 20//39 218//39 217//39 25//39
f 25//40 217//40 278//40 187//40
f 19//41 21//41 26//41 22//41
f 22//42 26//42 226//42 227//42
f 21//43 188//43 189//43 26//43
f 26//44 189//44 276//44 226//44
f 19//45 22//45 27//45 23//45
f 23//46 27//46 252//46 251//46
f 22//47 227//47 228//47 27//47
f 27//48 228//48 288//48 252//48
f 28//49 32//49 33//49 29//49
f 29//50 33//50 228//50 227//50
f 32//51 242//51 241//51 33//51
f 33//52 241//52 288//52 228//52
f 28//53 29//53 34//53 30//53
f 30//54 34//54 196//54 197//54
f 29//55 227//55 226//55 34//55
f 34//56 226//56 276//56 196//56
f 28//57 30//57 35//57 31//57
f 31//58 35//58 168//58 167//58
f 30//59 197//59 198//59 35//59
f 35//60 198//60 272//60 168//60
f 28//61 31//61 36//61 32//61
f 32//62 36//62 243//62 242//62
f 31//63 167//63 166//63 36//63
f 36//64 166//64 281//64 243//64
f 37//65 41//65 42//65 38//65
f 38//66 42//66 177//66 176//66
f 41//67 164//67 163//67 42//67
f 42//68 163//68 273//68 177//68
f 37//69 38//69 43//69 39//69
f 39//70 43//70 186//70 185//70
f 38//71 176//71 175//71 43//71
f 43//72 175//72 277//72 186//72
f 37//73 39//73 44//73 40//73
f 40//74 44//74 195//74 194//74
f 39//75 185//75 184//75 44//75
f 44//76 184//76 275//76 195//76
f 37//77 40//77 45//77 41//77
f 41//78 45//78 165//78 164//78
f 40//79 194//79 193//79 45//79
f 45//80 193//80 271//80 165//80
f 46//81 50//81 51//81 47//81
f 47//81 51//81 180//81 179//81
f 50//81 188//81 187//81 51//81
f 51//81 187//81 278//81 180//81
f 46//81 47//81 52//81 48//81
f 48//81 52//81 171//81 170//81
f 47//81 179//81 178//81 52//81
f 52//81 178//81 274//81 171//81
f 46//81 48//81 53//81 49//81
f 49//81 53//81 198//81 197//81
f 48//81 170//81 169//81 53//81
f 53//81 169//81 272//81 198//81
f 46//81 49//81 54//81 50//81
f 50//81 54//81 189//81 188//81
f 49//81 197//81 196//81 54//81
f 54//81 196//81 276//81 189//81
f 55//82 59//82 60//82 56//82
f 56//83 60//83 192//83 191//83
f 59//84 194//84 195//84 60//84
f 60//85 195//85 275//85 192//85
f 55//86 56//86 61//86 57//86
f 57//87 61//87 235//87 236//87
f 56//88 191//88 190//88 61//88
f 61//89 190//89 290//89 235//89
f 55//90 57//90 62//90 58//90
f 58//91 62//91 201//91 200//91
f 57//92 236//92 237//92 62//92
f 62//93 237//93 279//93 201//93
f 55//94 58//94 63//94 59//94
f 59//95 63//95 193//95 194//95
f 58//96 200//96 199//96 63//96
f 63//97 199//97 271//97 193//97
f 64//98 68//98 69//98 65//98
f 65//99 69//99 234//99 233//99
f 68//100 236//100 235//100 69//100
f 69//101 235//101 290//101 234//101
f 64//102 65//102 70//102 66//102
f 66//103 70//103 238//103 239//103
f 65//104 233//104 232//104 70//104
f 70//105 232//105 289//105 238//105
f 64//106 66//106 71//106 67//106
f 67//107 71//107 204//107 203//107
f 66//108 239//108 240//108 71//108
f 71//109 240//109 280//109 204//109
f 64//110 67//110 72//110 68//110
f 68//111 72//111 237//111 236//111
f 67//112 203//112 202//112 72//112
f 72//113 202//113 279//113 237//113
f 73//114 77//114 78//114 74//114
f 74//115 78//115 231//115 230//115
f 77//116 239//116 238//116 78//116
f 78//117 238//117 289//117 231//117
f 73//118 74//118 79//118 75//118
f 75//119 79//119 241//119 242//119
f 74//120 230//120 229//120 79//120
f 79//121 229//121 288//121 241//121
f 73//122 75//122 80//122 76//122
f 76//123 80//123 207//123 206//123
f 75//124 242//124 243//124 80//124
f 80//125 243//125 281//125 207//125
f 73//126 76//126 81//126 77//126
f 77//127 81//127 240//127 239//127
f 76//128 206//128 205//128 81//128
f 81//129 205//129 280//129 240//129
f 82//130 86//130 87//130 83//130
f 83//131 87//131 183//131 182//131
f 86//132 185//132 186//132 87//132
f 87//133 186//133 277//133 183//133
f 82//134 83//134 88//134 84//134
f 84//135 88//135 244//135 245//135
f 83//136 182//136 181//136 88//136
f 88//137 181//137 287//137 244//137
f 82//138 84//138 89//138 85//138
f 85//139 89//139 190//139 191//139
f 84//140 245//140 246//140 89//140
f 89//141 246//141 290//141 190//141
f 82//142 85//142 90//142 86//142
f 86//143 90//143 184//143 185//143
f 85//144 191//144 192//144 90//144
f 90//145 192//145 275//145 184//145
f 91//146 95//146 96//146 92//146
f 92//147 96//147 225//147 224//147
f 95//148 245//148 244//148 96//148
f 96//149 244//149 287//149 225//149
f 91//150 92//150 97//150 93//150
f 93//151 97//151 247//151 248//151
f 92//152 224//152 223//152 97//152
f 97//153 223//153 286//153 247//153
f 91//154 93//154 98//154 94//154
f 94//155 98//155 232//155 233//155
f 93//156 248//156 249//156 98//156
f 98//157 249//157 289//157 232//157
f 91//158 94//158 99//158 95//158
f 95//159 99//159 246//159 245//159
f 94//160 233//160 234//160 99//160
f 99//161 234//161 290//161 246//161
f 100//162 104//162 105//162 101//162
f 101//163 105//163 222//163 221//163
f 104//164 248//164 247//164 105//164
f 105//165 247//165 286//165 222//165
f 100//166 101//166 106//166 102//166
f 102//167 106//167 250//167 251//167
f 101//168 221//168 220//168 106//168
f 106//169 220//169 285//169 250//169
f 100//170 102//170 107//170 103//170
f 103//171 107//171 229//171 230//171
f 102//172 251//172 252//172 107//172
f 107//173 252//173 288//173 229//173
f 100//174 103//174 108//174 104//174
f 104//175 108//175 249//175 248//175
f 103//176 230//176 231//176 108//176
f 108//177 231//177 289//177 249//177
f 109//178 113//178 114//178 110//178
f 110//179 114//179 174//179 173//179
f 113//180 176//180 177//180 114//180
f 114//181 177//181 273//181 174//181
f 109//182 110//182 115//182 111//182
f 111//183 115//183 253//183 254//183
f 110//184 173//184 172//184 115//184
f 115//185 172//185 284//185 253//185
f 109//186 111//186 116//186 112//186
f 112//187 116//187 181//187 182//187
f 111//188 254//188 255//188 116//188
f 116//189 255//189 287//189 181//189
f 109//190 112//190 117//190 113//190
f 113//191 117//191 175//191 176//191
f 112//192 182//192 183//192 117//192
f 117//193 183//193 277//193 175//193
f 118//194 122//194 123//194 119//194
f 119//195 123//195 216//195 215//195
f 122//196 254//196 253//196 123//196
f 123//197 253//197 284//197 216//197
f 118//198 119//198 124//198 120//198
f 120//199 124//199 256//199 257//199
f 119//200 215//200 214//200 124//200
f 124//201 214//201 283//201 256//201
f 118//202 120//202 125//202 121//202
f 121//203 125//203 223//203 224//203
f 120//204 257//204 258//204 125//204
f 125//205 258//205 286//205 223//205
f 118//206 121//206 126//206 122//206
f 122//207 126//207 255//207 254//207
f 121//208 224//208 225//208 126//208
f 126//209 225//209 287//209 255//209
f 127//210 131//210 132//210 128//210
f 128//211 132//211 213//211 212//211
f 131//212 257//212 256//212 132//212
f 132//213 256//213 283//213 213//213
f 127//214 128//214 133//214 129//214
f 129//215 133//215 259//215 260//215
f 128//216 212//216 211//216 133//216
f 133//217 211//217 282//217 259//217
f 127//218 129//218 134//218 130//218
f 130//219 134//219 220//219 221//219
f 129//220 260//220 261//220 134//220
f 134//221 261//221 285//221 220//221
f 127//222 130//222 135//222 131//222
f 131//223 135//223 258//223 257//223
f 130//224 221//224 222//224 135//224
f 135//225 222//225 286//225 258//225
f 136//226 140//226 141//226 137//226
f 137//227 141//227 199//227 200//227
f 140//228 164//228 165//228 141//228
f 141//229 165//229 271//229 199//229
f 136//230 137//230 142//230 138//230
f 138//231 142//231 262//231 263//231
f 137//232 200//232 201//232 142//232
f 142//233 201//233 279//233 262//233
f 136//234 138//234 143//234 139//234
f 139//235 143//235 172//235 173//235
f 138//236 263//236 264//236 143//236
f 143//237 264//237 284//237 172//237
f 136//238 139//238 144//238 140//238
f 140//239 144//239 163//239 164//239
f 139//240 173//240 174//240 144//240
f 144//241 174//241 273//241 163//241
f 145//242 149//242 150//242 146//242
f 146//243 150//243 202//243 203//243
f 149//244 263//244 262//244 150//244
f 150//245 262//245 279//245 202//245
f 145//246 146//246 151//246 147//246
f 147//247 151//247 265//247 266//247
f 146//248 203//248 204//248 151//248
f 151//249 204//249 280//249 265//249
f 145//250 147//250 152//250 148//250
f 148//251 152//251 214//251 215//251
f 147//252 266//252 267//252 152//252
f 152//253 267//253 283//253 214//253
f 145//254 148//254 153//254 149//254
f 149//255 153//255 264//255 263//255
f 148//256 215//256 216//256 153//256
f 153//257 216//257 284//257 264//257
f 154//258 158//258 159//258 155//258
f 155//259 159//259 205//259 206//259
f 158//260 266//260 265//260 159//260
f 159//261 265//261 280//261 205//261
f 154//262 155//262 160//262 156//262
f 156//263 160//263 268//263 269//263
f 155//264 206//264 207//264 160//264
f 160//265 207//265 281//265 268//265
f 154//266 156//266 161//266 157//266
f 157//267 161//267 211//267 212//267
f 156//268 269//268 270//268 161//268
f 161//269 270//269 282//269 211//269
f 154//270 157//270 162//270 158//270
f 158//271 162//271 267//271 266//271
f 157//272 212//272 213//272 162//272
f 162//273 213//273 283//273 267//273

View File

@@ -0,0 +1,844 @@
# ufbx:bad_uvs
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
g Skin_Cube.001
v -1.091528 4.313337 0.000001
v -1.030064 4.310006 0.375001
v -1.047250 4.709257 0.000001
v -1.030032 4.310046 -0.374999
v -1.123311 3.922210 0.000001
v -1.062235 3.919911 0.375001
v -0.985389 4.704895 0.375001
v -0.985365 4.704921 -0.374999
v -1.062209 3.919955 -0.374999
v -0.138587 4.262017 -0.968749
v -0.538189 4.283551 -0.874999
v -0.088220 4.641850 -0.968749
v 0.322490 4.237185 -0.999999
v -0.176438 3.886921 -0.968749
v -0.573497 3.901733 -0.874999
v -0.490380 4.670126 -0.874999
v 0.375810 4.609233 -0.999999
v 0.281705 3.869848 -0.999999
v 0.783613 4.212353 -0.031249
v 0.814328 4.210704 -0.499999
v 0.839874 4.576618 -0.031249
v 0.691418 4.217315 0.375001
v 0.739890 3.852770 -0.031249
v 0.770410 3.851643 -0.499999
v 0.870792 4.574446 -0.499999
v 0.747082 4.583140 0.375001
v 0.648282 3.856178 0.375001
v -0.169327 4.263672 0.937501
v 0.199575 4.243809 0.875001
v -0.119156 4.644024 0.937501
v -0.538226 4.283525 0.875001
v -0.206982 3.888059 0.937501
v 0.159570 3.874399 0.875001
v 0.252097 4.617934 0.875001
v -0.490408 4.670109 0.875001
v -0.573530 3.901706 0.875001
v 0.054212 0.073271 -0.000000
v 0.080544 0.108859 -0.350694
v 0.362462 -0.099728 -0.000000
v 0.080544 0.108859 0.350694
v -0.201374 0.317447 0.000000
v -0.157052 0.336486 -0.326389
v 0.367706 -0.051777 -0.326389
v 0.367706 -0.051777 0.326389
v -0.157052 0.336486 0.326389
v -0.052512 5.028802 -0.003905
v -0.040837 5.027791 -0.484374
v -0.523407 5.069566 0.000001
v -0.056404 5.029139 0.468751
v 0.426167 4.987364 -0.015624
v 0.441734 4.986016 -0.499999
v -0.492273 5.066871 -0.437499
v -0.492273 5.066871 0.437501
v 0.379466 4.991406 0.437501
v 0.523519 0.630691 0.907986
v 0.815991 0.438183 0.847222
v 0.731992 0.909823 0.937500
v 0.235973 0.830500 0.847222
v 0.327989 0.394801 0.819444
v 0.599968 0.224144 0.763889
v 1.030833 0.717207 0.875000
v 0.433150 1.102461 0.875000
v 0.076706 0.594690 0.763889
v 1.057564 1.770461 0.937500
v 1.341732 1.785480 0.875000
v 0.823501 2.030382 0.937500
v 0.773396 1.755454 0.875000
v 1.095208 1.496883 0.937500
v 1.386255 1.413296 0.875000
v 1.100820 2.143649 0.875000
v 0.546182 1.917122 0.875000
v 0.804160 1.580487 0.875000
v -0.137287 2.803306 0.937500
v 0.179889 2.905541 0.875000
v -0.239594 3.136696 0.937500
v -0.454460 2.701064 0.875000
v 0.074137 2.516732 0.937500
v 0.367932 2.673528 0.875000
v 0.101052 3.184174 0.875000
v -0.580236 3.089208 0.875000
v -0.219655 2.359934 0.875000
v 1.271021 0.125037 -0.027344
v 1.290456 0.117156 -0.472222
v 1.503939 0.412198 -0.031250
v 1.203096 0.176335 0.362847
v 0.997323 -0.079227 -0.015625
v 1.000694 -0.059702 -0.388889
v 1.528820 0.396114 -0.500000
v 1.429255 0.460384 0.375000
v 0.950637 -0.024197 0.326389
v 1.791682 1.809246 -0.031250
v 1.815372 1.810482 -0.500000
v 1.539929 2.322982 -0.031250
v 1.720630 1.805506 0.375000
v 1.847080 1.280929 -0.031250
v 1.871336 1.273939 -0.500000
v 1.563048 2.332413 -0.500000
v 1.470589 2.294673 0.375000
v 1.774317 1.301848 0.375000
v 0.682087 3.067423 -0.031250
v 0.708517 3.075952 -0.500000
v 0.640395 3.259356 -0.031249
v 0.602793 3.041856 0.375000
v 0.833116 2.921794 -0.031250
v 0.857602 2.934865 -0.500000
v 0.668774 3.263324 -0.499999
v 0.555243 3.247476 0.375001
v 0.759664 2.882589 0.375000
v 0.545372 0.615908 -0.935330
v 0.236029 0.830487 -0.847222
v 0.756894 0.893771 -0.968750
v 0.903350 0.379029 -0.956597
v 0.340513 0.385932 -0.835069
v 0.076747 0.594684 -0.763889
v 0.433198 1.102443 -0.875000
v 1.130394 0.652968 -1.000000
v 0.650024 0.188652 -0.826389
v 1.081245 1.771712 -0.968750
v 0.773383 1.755440 -0.875000
v 0.846612 2.039821 -0.968750
v 1.436471 1.790472 -1.000000
v 1.119462 1.489917 -0.968750
v 0.804162 1.580469 -0.875000
v 0.546166 1.917114 -0.875000
v 1.193279 2.181399 -1.000000
v 1.483272 1.385411 -1.000000
v -0.110855 2.811826 -0.968750
v -0.454468 2.701070 -0.875000
v -0.211207 3.140653 -0.968750
v 0.285617 2.939630 -1.000000
v 0.098621 2.529799 -0.968750
v -0.219666 2.359936 -0.875000
v -0.580233 3.089221 -0.875000
v 0.214588 3.200010 -1.000000
v 0.465872 2.725800 -1.000000
v -0.202130 1.121562 0.000000
v -0.151134 1.092372 0.362847
v -0.015053 1.391396 0.000000
v -0.151076 1.092336 -0.362847
v -0.328820 0.859960 0.000000
v -0.273964 0.843044 0.326389
v 0.034724 1.359315 0.375000
v 0.034775 1.359267 -0.375000
v -0.273922 0.843025 -0.326389
v 0.347127 1.732927 -0.000000
v 0.394496 1.735444 0.375000
v 0.130183 1.747222 -0.000000
v 0.394484 1.735414 -0.375000
v 0.367590 1.705870 -0.000000
v 0.416096 1.691959 0.375000
v 0.176412 1.766108 0.375000
v 0.176397 1.766091 -0.375000
v 0.416099 1.691917 -0.375000
v -0.930229 2.547709 0.000000
v -0.877361 2.564741 0.375000
v -1.091196 3.017993 0.000000
v -0.877372 2.564756 -0.375000
v -0.660358 2.124738 0.000000
v -0.611385 2.150869 0.375000
v -1.034421 3.025893 0.375000
v -1.034424 3.025920 -0.375000
v -0.611398 2.150874 -0.375000
v -0.302593 0.598045 -0.302083
v -0.357931 0.597685 0.000000
v -0.302593 0.598045 0.302083
v -0.878984 3.913065 0.687501
v -0.845641 4.300058 0.687501
v -0.799784 4.691838 0.687501
v -0.928143 5.104603 0.375001
v -0.990410 5.109993 0.000001
v -0.928143 5.104603 -0.374999
v 0.184209 1.262939 -0.687500
v -0.003246 0.997653 -0.665365
v -0.131357 0.764009 -0.598958
v 0.434301 0.052825 -0.614583
v 0.162292 0.212779 -0.647135
v -0.063940 0.421468 -0.598958
v -0.430006 5.061481 -0.874999
v -0.025270 5.026443 -0.968749
v 0.441734 4.986017 -0.999999
v 1.528799 0.396082 -1.000000
v 1.285646 0.130986 -0.944444
v 0.982408 -0.002897 -0.777778
v 0.660394 -0.114458 0.302083
v 0.679374 -0.169805 -0.003906
v 0.672954 -0.123752 -0.317708
v 0.939871 4.942894 -0.499999
v 0.908737 4.945589 -0.031249
v 0.815336 4.953675 0.375001
v 1.279868 0.556715 0.687500
v 1.060247 0.278306 0.665365
v 0.828807 0.084045 0.598958
v -0.063940 0.421468 0.598958
v 0.159152 0.215102 0.643229
v 0.421740 0.062119 0.598958
v 0.317199 4.996797 0.875001
v -0.056404 5.029139 0.937501
v -0.430006 5.061481 0.875001
v -0.131439 0.764037 0.598958
v -0.003360 0.997709 0.665365
v 0.184109 1.263013 0.687500
v 0.561619 1.650173 0.687500
v 0.536589 1.742960 0.687500
v 0.315084 1.822745 0.687500
v -0.464481 2.229267 0.687500
v -0.718768 2.615857 0.687500
v -0.864102 3.049625 0.687500
v -0.799732 4.691885 -0.687499
v -0.845575 4.300128 -0.687499
v -0.878928 3.913141 -0.687499
v -0.864103 3.049669 -0.687500
v -0.718788 2.615880 -0.687500
v -0.464505 2.229274 -0.687500
v 0.315052 1.822717 -0.687500
v 0.536565 1.742912 -0.687500
v 0.561624 1.650107 -0.687500
v 0.870774 4.574450 -0.999999
v 0.814302 4.210711 -0.999999
v 0.770385 3.851653 -0.999999
v 0.668765 3.263336 -0.999999
v 0.708516 3.075962 -1.000000
v 0.857605 2.934871 -1.000000
v 1.563057 2.332406 -1.000000
v 1.815380 1.810467 -1.000000
v 1.871338 1.273915 -1.000000
v 0.561480 4.596188 0.687501
v 0.507001 4.227249 0.687501
v 0.465038 3.863006 0.687501
v 0.384928 3.223730 0.687500
v 0.444204 2.990731 0.687500
v 0.612761 2.804187 0.687500
v 1.331917 2.238044 0.687500
v 1.578536 1.798007 0.687500
v 1.628792 1.343657 0.687500
v 1.233314 1.027022 0.875000
v 0.935357 1.209573 0.937500
v 0.637399 1.392147 0.875000
v 0.664587 2.487880 0.875000
v 0.394086 2.276721 0.937500
v 0.123585 2.065563 0.875000
v 0.132020 3.509680 0.875001
v -0.232186 3.517158 0.937501
v -0.596386 3.524623 0.875000
v 1.729868 0.722704 -0.500000
v 1.705049 0.737950 -0.031250
v 1.630572 0.783619 0.375000
v 1.115434 2.839812 -0.500000
v 1.092889 2.822216 -0.031250
v 1.025260 2.769426 0.375000
v 0.738970 3.497235 -0.499999
v 0.708640 3.497845 -0.031249
v 0.617611 3.499703 0.375001
v 0.637426 1.392126 -0.875000
v 0.960186 1.194359 -0.968750
v 1.332606 0.966138 -1.000000
v 0.123579 2.065562 -0.875000
v 0.416628 2.294318 -0.968750
v 0.754762 2.558267 -1.000000
v -0.596366 3.524646 -0.875000
v -0.201836 3.516535 -0.968749
v 0.253386 3.507195 -0.999999
v 0.240138 1.635581 0.375000
v 0.190495 1.665982 0.000000
v 0.240167 1.635529 -0.375000
v -0.237087 1.784019 0.375000
v -0.282174 1.748824 -0.000000
v -0.237094 1.784016 -0.375000
v -1.081970 3.534582 0.375000
v -1.142662 3.535849 0.000000
v -1.081957 3.534623 -0.375000
v -0.190472 0.598774 0.509259
v -0.741342 5.088431 0.687501
v -0.190472 0.598774 -0.509259
v -0.741342 5.088432 -0.687499
v 0.628300 -0.007026 0.509259
v 0.628535 4.969846 0.687501
v 0.661795 -0.031808 -0.550926
v 0.939871 4.942895 -0.999999
v 0.389096 1.544313 0.687500
v -0.101831 1.889599 0.687500
v -0.899884 3.530831 0.687500
v -0.899853 3.530899 -0.687500
v -0.101845 1.889595 -0.687500
v 0.389153 1.544233 -0.687500
v 0.738951 3.497248 -0.999999
v 1.115437 2.839812 -1.000000
v 1.729858 0.722672 -1.000000
v 0.435531 3.503437 0.687501
v 0.890005 2.663846 0.687500
v 1.481611 0.874917 0.687500
vn -0.9836 0.0805 0.1613
vn -0.8588 0.0724 0.5072
vn -0.9858 0.0499 0.1603
vn -0.8621 0.0456 0.5047
vn -0.9805 0.1103 0.1624
vn -0.9767 0.1392 0.1635
vn -0.8547 0.0984 0.5097
vn -0.8499 0.1235 0.5122
vn -0.9805 0.1103 -0.1624
vn -0.8547 0.0983 -0.5097
vn -0.9767 0.1392 -0.1635
vn -0.8499 0.1234 -0.5122
vn -0.9836 0.0805 -0.1614
vn -0.9858 0.0499 -0.1603
vn -0.8588 0.0724 -0.5072
vn -0.8621 0.0457 -0.5047
vn -0.2281 0.0220 -0.9734
vn -0.5199 0.0464 -0.8530
vn -0.2301 0.0149 -0.9731
vn -0.5235 0.0302 -0.8515
vn -0.2259 0.0289 -0.9737
vn -0.2236 0.0355 -0.9740
vn -0.5157 0.0621 -0.8545
vn -0.5111 0.0770 -0.8560
vn -0.0668 0.0092 -0.9977
vn 0.0000 0.0000 -1.0000
vn -0.0661 0.0112 -0.9978
vn -0.0675 0.0072 -0.9977
vn -0.0681 0.0050 -0.9977
vn 0.9905 -0.1208 0.0651
vn 0.9926 -0.1214 -0.0001
vn 0.9940 -0.0879 0.0647
vn 0.9961 -0.0884 -0.0000
vn 0.9861 -0.1527 0.0655
vn 0.9808 -0.1835 0.0659
vn 0.9882 -0.1534 -0.0000
vn 0.9829 -0.1843 -0.0000
vn 0.9639 -0.1478 0.2215
vn 0.8514 -0.1276 0.5087
vn 0.9585 -0.1777 0.2228
vn 0.8457 -0.1538 0.5111
vn 0.9684 -0.1167 0.2203
vn 0.9720 -0.0846 0.2190
vn 0.8564 -0.1005 0.5065
vn 0.8605 -0.0723 0.5042
vn 0.1668 -0.0174 0.9858
vn 0.5191 -0.0580 0.8527
vn 0.1683 -0.0121 0.9857
vn 0.5230 -0.0412 0.8513
vn 0.1651 -0.0225 0.9860
vn 0.1634 -0.0273 0.9862
vn 0.5147 -0.0741 0.8542
vn 0.5099 -0.0895 0.8556
vn -0.1652 0.0211 0.9860
vn -0.5157 0.0621 0.8545
vn -0.1635 0.0259 0.9862
vn -0.5111 0.0771 0.8560
vn -0.1668 0.0161 0.9859
vn -0.1683 0.0108 0.9857
vn -0.5198 0.0464 0.8530
vn -0.5235 0.0302 0.8515
vn -0.6888 -0.7133 -0.1294
vn -0.6578 -0.6309 -0.4116
vn -0.8661 -0.4761 -0.1520
vn -0.8161 -0.3968 -0.4200
vn -0.4807 -0.8673 -0.1294
vn -0.2193 -0.9654 -0.1413
vn -0.4255 -0.8128 -0.3979
vn -0.2167 -0.9057 -0.3644
vn -0.4807 -0.8673 0.1294
vn -0.4118 -0.8122 0.4131
vn -0.2035 -0.9670 0.1535
vn -0.1408 -0.8965 0.4200
vn -0.6888 -0.7133 0.1294
vn -0.8661 -0.4761 0.1520
vn -0.6563 -0.6314 0.4131
vn -0.8161 -0.3968 0.4200
vn 0.0862 0.9963 0.0000
vn -0.0235 -0.3379 0.9409
vn 0.2361 -0.5521 0.7997
vn -0.2040 -0.5801 0.7886
vn 0.0397 -0.7376 0.6741
vn 0.0930 -0.1712 0.9808
vn 0.1454 -0.0968 0.9846
vn 0.3861 -0.3764 0.8422
vn 0.4525 -0.2912 0.8429
vn -0.1841 0.0334 0.9823
vn -0.4677 0.2563 0.8459
vn -0.1437 0.0994 0.9846
vn -0.4379 0.3138 0.8425
vn -0.2956 -0.1228 0.9474
vn -0.4761 -0.3586 0.8029
vn -0.5685 0.0870 0.8181
vn -0.6847 -0.1349 0.7163
vn 0.2154 0.0274 0.9761
vn 0.6199 0.0711 0.7815
vn 0.1722 -0.0800 0.9818
vn 0.5405 -0.1897 0.8197
vn 0.1842 0.1415 0.9726
vn 0.1194 0.1750 0.9773
vn 0.5427 0.3315 0.7717
vn 0.3934 0.4487 0.8024
vn -0.1722 -0.1884 0.9669
vn -0.3624 -0.6736 0.6442
vn -0.0974 -0.2103 0.9728
vn -0.1756 -0.6847 0.7074
vn -0.2160 -0.0329 0.9758
vn -0.1589 0.1091 0.9812
vn -0.6205 -0.1293 0.7735
vn -0.3986 0.4597 0.7936
vn 0.1514 0.1166 0.9816
vn 0.4410 0.3757 0.8151
vn 0.1117 0.1618 0.9805
vn 0.2968 0.5225 0.7993
vn 0.1750 0.0518 0.9832
vn 0.1751 -0.0095 0.9845
vn 0.5360 0.1447 0.8317
vn 0.5396 -0.0727 0.8388
vn -0.1743 -0.0551 0.9832
vn -0.5286 -0.1744 0.8308
vn -0.1745 -0.0019 0.9847
vn -0.5366 -0.0304 0.8433
vn -0.1544 -0.1097 0.9819
vn -0.1202 -0.1491 0.9815
vn -0.4717 -0.3170 0.8228
vn -0.3800 -0.4231 0.8225
vn 0.5607 -0.8280 0.0038
vn 0.4340 -0.8969 -0.0852
vn 0.2205 -0.9709 -0.0936
vn 0.0318 -0.9718 -0.2339
vn 0.7689 -0.6371 0.0540
vn 0.8496 -0.5237 0.0625
vn 0.7478 -0.6638 -0.0131
vn 0.8516 -0.5242 0.0000
vn 0.7601 -0.6140 0.2128
vn 0.6655 -0.5577 0.4961
vn 0.8306 -0.5150 0.2120
vn 0.7375 -0.4634 0.4912
vn 0.5906 -0.7803 0.2058
vn 0.2763 -0.9424 0.1885
vn 0.4868 -0.7240 0.4887
vn 0.2131 -0.8637 0.4567
vn 0.9933 0.1039 0.0502
vn 0.9946 0.1037 0.0000
vn 0.9665 -0.2504 0.0565
vn 0.9686 -0.2486 0.0000
vn 0.8980 0.4371 0.0498
vn 0.7463 0.6633 0.0555
vn 0.9003 0.4352 0.0000
vn 0.7499 0.6615 0.0000
vn 0.8813 0.4410 0.1697
vn 0.8059 0.4307 0.4062
vn 0.7241 0.6635 0.1883
vn 0.6386 0.6291 0.4432
vn 0.9798 0.1036 0.1712
vn 0.9475 -0.2552 0.1926
vn 0.9061 0.0983 0.4116
vn 0.8537 -0.2517 0.4559
vn 0.6898 0.7220 0.0541
vn 0.6874 0.7263 0.0000
vn 0.3516 0.9349 0.0482
vn 0.3459 0.9383 0.0000
vn 0.9760 0.2095 0.0599
vn 0.9580 -0.2807 0.0590
vn 0.9782 0.2075 -0.0000
vn 0.9578 -0.2874 -0.0000
vn 0.9554 0.2145 0.2032
vn 0.8550 0.2082 0.4749
vn 0.9464 -0.2519 0.2021
vn 0.8590 -0.1824 0.4785
vn 0.6914 0.6982 0.1856
vn 0.3700 0.9138 0.1677
vn 0.6519 0.6135 0.4458
vn 0.3847 0.8239 0.4162
vn -0.3375 -0.1049 -0.9355
vn -0.5686 0.0871 -0.8180
vn -0.4946 -0.3535 -0.7940
vn -0.6846 -0.1347 -0.7163
vn -0.2343 0.0662 -0.9699
vn -0.1964 0.1356 -0.9711
vn -0.4678 0.2563 -0.8458
vn -0.4380 0.3139 -0.8424
vn -0.1064 -0.0537 -0.9929
vn -0.0653 -0.1248 -0.9900
vn -0.0590 0.0390 -0.9975
vn -0.2054 -0.2888 -0.9351
vn -0.3053 -0.5839 -0.7522
vn -0.2024 -0.4493 -0.8702
vn -0.2552 -0.7602 -0.5975
vn -0.2927 -0.0442 -0.9552
vn -0.6205 -0.1294 -0.7735
vn -0.2174 0.1465 -0.9650
vn -0.3987 0.4596 -0.7936
vn -0.2326 -0.2500 -0.9399
vn -0.1332 -0.2819 -0.9501
vn -0.3624 -0.6735 -0.6443
vn -0.1756 -0.6846 -0.7074
vn -0.0761 -0.0551 -0.9956
vn -0.0501 -0.0689 -0.9964
vn -0.0879 -0.0109 -0.9961
vn -0.0708 0.0307 -0.9970
vn -0.2102 -0.1498 -0.9661
vn -0.4717 -0.3170 -0.8228
vn -0.1632 -0.2037 -0.9653
vn -0.3800 -0.4231 -0.8225
vn -0.2377 -0.0750 -0.9684
vn -0.2384 -0.0020 -0.9712
vn -0.5286 -0.1743 -0.8308
vn -0.5367 -0.0304 -0.8433
vn -0.0711 -0.0207 -0.9973
vn -0.0710 0.0050 -0.9975
vn -0.0612 -0.0481 -0.9970
vn -0.0446 -0.0671 -0.9968
vn -0.8908 0.4233 0.1651
vn -0.8068 0.3123 0.5016
vn -0.9793 0.1031 0.1744
vn -0.8781 0.0556 0.4752
vn -0.8127 0.5610 0.1576
vn -0.7919 0.5908 0.1542
vn -0.7247 0.4762 0.4980
vn -0.7020 0.5167 0.4902
vn -0.8126 0.5610 -0.1578
vn -0.7246 0.4762 -0.4981
vn -0.7919 0.5908 -0.1544
vn -0.7020 0.5166 -0.4903
vn -0.8908 0.4233 -0.1653
vn -0.9792 0.1032 -0.1745
vn -0.8067 0.3123 -0.5017
vn -0.8781 0.0558 -0.4753
vn -0.8545 -0.5095 0.1015
vn -0.8731 -0.2987 0.3854
vn -0.2620 0.9608 0.0910
vn -0.3930 0.8441 0.3648
vn -0.1027 -0.9939 0.0412
vn -0.0236 -0.9969 0.0748
vn -0.2385 -0.9493 0.2046
vn -0.0972 -0.9522 0.2897
vn -0.1027 -0.9939 -0.0411
vn -0.2386 -0.9493 -0.2046
vn -0.0236 -0.9969 -0.0747
vn -0.0972 -0.9522 -0.2897
vn -0.8544 -0.5096 -0.1014
vn -0.2620 0.9607 -0.0912
vn -0.8730 -0.2989 -0.3853
vn -0.3931 0.8440 -0.3650
vn -0.8334 -0.5336 0.1439
vn -0.7431 -0.4830 0.4633
vn -0.6951 -0.7042 0.1448
vn -0.6128 -0.6391 0.4648
vn -0.9360 -0.3196 0.1475
vn -0.9834 -0.0949 0.1549
vn -0.8347 -0.2820 0.4730
vn -0.8677 -0.0730 0.4916
vn -0.9360 -0.3196 -0.1475
vn -0.8347 -0.2820 -0.4730
vn -0.9834 -0.0948 -0.1549
vn -0.8677 -0.0730 -0.4916
vn -0.8334 -0.5336 -0.1439
vn -0.6951 -0.7042 -0.1447
vn -0.7431 -0.4829 -0.4633
vn -0.6128 -0.6392 -0.4648
s off
f 1//1 5//1 6//1 2//1
f 2//2 6//2 166//2 167//2
f 5//3 269//3 268//3 6//3
f 6//4 268//4 281//4 166//4
f 1//5 2//5 7//5 3//5
f 3//6 7//6 169//6 170//6
f 2//7 167//7 168//7 7//7
f 7//8 168//8 272//8 169//8
f 1//9 3//9 8//9 4//9
f 4//10 8//10 208//10 209//10
f 3//11 170//11 171//11 8//11
f 8//12 171//12 274//12 208//12
f 1//13 4//13 9//13 5//13
f 5//14 9//14 270//14 269//14
f 4//15 209//15 210//15 9//15
f 9//16 210//16 282//16 270//16
f 10//17 14//17 15//17 11//17
f 11//18 15//18 210//18 209//18
f 14//19 260//19 259//19 15//19
f 15//20 259//20 282//20 210//20
f 10//21 11//21 16//21 12//21
f 12//22 16//22 178//22 179//22
f 11//23 209//23 208//23 16//23
f 16//24 208//24 274//24 178//24
f 10//25 12//25 17//25 13//25
f 13//26 17//26 217//26 218//26
f 12//27 179//27 180//27 17//27
f 17//26 180//26 278//26 217//26
f 10//28 13//28 18//28 14//28
f 14//29 18//29 261//29 260//29
f 13//26 218//26 219//26 18//26
f 18//26 219//26 285//26 261//26
f 19//30 23//30 24//30 20//30
f 20//31 24//31 219//31 218//31
f 23//32 251//32 250//32 24//32
f 24//33 250//33 285//33 219//33
f 19//34 20//34 25//34 21//34
f 21//35 25//35 187//35 188//35
f 20//36 218//36 217//36 25//36
f 25//37 217//37 278//37 187//37
f 19//38 21//38 26//38 22//38
f 22//39 26//39 226//39 227//39
f 21//40 188//40 189//40 26//40
f 26//41 189//41 276//41 226//41
f 19//42 22//42 27//42 23//42
f 23//43 27//43 252//43 251//43
f 22//44 227//44 228//44 27//44
f 27//45 228//45 288//45 252//45
f 28//46 32//46 33//46 29//46
f 29//47 33//47 228//47 227//47
f 32//48 242//48 241//48 33//48
f 33//49 241//49 288//49 228//49
f 28//50 29//50 34//50 30//50
f 30//51 34//51 196//51 197//51
f 29//52 227//52 226//52 34//52
f 34//53 226//53 276//53 196//53
f 28//54 30//54 35//54 31//54
f 31//55 35//55 168//55 167//55
f 30//56 197//56 198//56 35//56
f 35//57 198//57 272//57 168//57
f 28//58 31//58 36//58 32//58
f 32//59 36//59 243//59 242//59
f 31//60 167//60 166//60 36//60
f 36//61 166//61 281//61 243//61
f 37//62 41//62 42//62 38//62
f 38//63 42//63 177//63 176//63
f 41//64 164//64 163//64 42//64
f 42//65 163//65 273//65 177//65
f 37//66 38//66 43//66 39//66
f 39//67 43//67 186//67 185//67
f 38//68 176//68 175//68 43//68
f 43//69 175//69 277//69 186//69
f 37//70 39//70 44//70 40//70
f 40//71 44//71 195//71 194//71
f 39//72 185//72 184//72 44//72
f 44//73 184//73 275//73 195//73
f 37//74 40//74 45//74 41//74
f 41//75 45//75 165//75 164//75
f 40//76 194//76 193//76 45//76
f 45//77 193//77 271//77 165//77
f 46//78 50//78 51//78 47//78
f 47//78 51//78 180//78 179//78
f 50//78 188//78 187//78 51//78
f 51//78 187//78 278//78 180//78
f 46//78 47//78 52//78 48//78
f 48//78 52//78 171//78 170//78
f 47//78 179//78 178//78 52//78
f 52//78 178//78 274//78 171//78
f 46//78 48//78 53//78 49//78
f 49//78 53//78 198//78 197//78
f 48//78 170//78 169//78 53//78
f 53//78 169//78 272//78 198//78
f 46//78 49//78 54//78 50//78
f 50//78 54//78 189//78 188//78
f 49//78 197//78 196//78 54//78
f 54//78 196//78 276//78 189//78
f 55//79 59//79 60//79 56//79
f 56//80 60//80 192//80 191//80
f 59//81 194//81 195//81 60//81
f 60//82 195//82 275//82 192//82
f 55//83 56//83 61//83 57//83
f 57//84 61//84 235//84 236//84
f 56//85 191//85 190//85 61//85
f 61//86 190//86 290//86 235//86
f 55//87 57//87 62//87 58//87
f 58//88 62//88 201//88 200//88
f 57//89 236//89 237//89 62//89
f 62//90 237//90 279//90 201//90
f 55//91 58//91 63//91 59//91
f 59//92 63//92 193//92 194//92
f 58//93 200//93 199//93 63//93
f 63//94 199//94 271//94 193//94
f 64//95 68//95 69//95 65//95
f 65//96 69//96 234//96 233//96
f 68//97 236//97 235//97 69//97
f 69//98 235//98 290//98 234//98
f 64//99 65//99 70//99 66//99
f 66//100 70//100 238//100 239//100
f 65//101 233//101 232//101 70//101
f 70//102 232//102 289//102 238//102
f 64//103 66//103 71//103 67//103
f 67//104 71//104 204//104 203//104
f 66//105 239//105 240//105 71//105
f 71//106 240//106 280//106 204//106
f 64//107 67//107 72//107 68//107
f 68//108 72//108 237//108 236//108
f 67//109 203//109 202//109 72//109
f 72//110 202//110 279//110 237//110
f 73//111 77//111 78//111 74//111
f 74//112 78//112 231//112 230//112
f 77//113 239//113 238//113 78//113
f 78//114 238//114 289//114 231//114
f 73//115 74//115 79//115 75//115
f 75//116 79//116 241//116 242//116
f 74//117 230//117 229//117 79//117
f 79//118 229//118 288//118 241//118
f 73//119 75//119 80//119 76//119
f 76//120 80//120 207//120 206//120
f 75//121 242//121 243//121 80//121
f 80//122 243//122 281//122 207//122
f 73//123 76//123 81//123 77//123
f 77//124 81//124 240//124 239//124
f 76//125 206//125 205//125 81//125
f 81//126 205//126 280//126 240//126
f 82//127 86//127 87//127 83//127
f 83//128 87//128 183//128 182//128
f 86//129 185//129 186//129 87//129
f 87//130 186//130 277//130 183//130
f 82//131 83//131 88//131 84//131
f 84//132 88//132 244//132 245//132
f 83//133 182//133 181//133 88//133
f 88//134 181//134 287//134 244//134
f 82//135 84//135 89//135 85//135
f 85//136 89//136 190//136 191//136
f 84//137 245//137 246//137 89//137
f 89//138 246//138 290//138 190//138
f 82//139 85//139 90//139 86//139
f 86//140 90//140 184//140 185//140
f 85//141 191//141 192//141 90//141
f 90//142 192//142 275//142 184//142
f 91//143 95//143 96//143 92//143
f 92//144 96//144 225//144 224//144
f 95//145 245//145 244//145 96//145
f 96//146 244//146 287//146 225//146
f 91//147 92//147 97//147 93//147
f 93//148 97//148 247//148 248//148
f 92//149 224//149 223//149 97//149
f 97//150 223//150 286//150 247//150
f 91//151 93//151 98//151 94//151
f 94//152 98//152 232//152 233//152
f 93//153 248//153 249//153 98//153
f 98//154 249//154 289//154 232//154
f 91//155 94//155 99//155 95//155
f 95//156 99//156 246//156 245//156
f 94//157 233//157 234//157 99//157
f 99//158 234//158 290//158 246//158
f 100//159 104//159 105//159 101//159
f 101//160 105//160 222//160 221//160
f 104//161 248//161 247//161 105//161
f 105//162 247//162 286//162 222//162
f 100//163 101//163 106//163 102//163
f 102//164 106//164 250//164 251//164
f 101//165 221//165 220//165 106//165
f 106//166 220//166 285//166 250//166
f 100//167 102//167 107//167 103//167
f 103//168 107//168 229//168 230//168
f 102//169 251//169 252//169 107//169
f 107//170 252//170 288//170 229//170
f 100//171 103//171 108//171 104//171
f 104//172 108//172 249//172 248//172
f 103//173 230//173 231//173 108//173
f 108//174 231//174 289//174 249//174
f 109//175 113//175 114//175 110//175
f 110//176 114//176 174//176 173//176
f 113//177 176//177 177//177 114//177
f 114//178 177//178 273//178 174//178
f 109//179 110//179 115//179 111//179
f 111//180 115//180 253//180 254//180
f 110//181 173//181 172//181 115//181
f 115//182 172//182 284//182 253//182
f 109//183 111//183 116//183 112//183
f 112//184 116//184 181//184 182//184
f 111//185 254//185 255//185 116//185
f 116//26 255//26 287//26 181//26
f 109//186 112//186 117//186 113//186
f 113//187 117//187 175//187 176//187
f 112//188 182//188 183//188 117//188
f 117//189 183//189 277//189 175//189
f 118//190 122//190 123//190 119//190
f 119//191 123//191 216//191 215//191
f 122//192 254//192 253//192 123//192
f 123//193 253//193 284//193 216//193
f 118//194 119//194 124//194 120//194
f 120//195 124//195 256//195 257//195
f 119//196 215//196 214//196 124//196
f 124//197 214//197 283//197 256//197
f 118//198 120//198 125//198 121//198
f 121//26 125//26 223//26 224//26
f 120//199 257//199 258//199 125//199
f 125//26 258//26 286//26 223//26
f 118//200 121//200 126//200 122//200
f 122//201 126//201 255//201 254//201
f 121//26 224//26 225//26 126//26
f 126//26 225//26 287//26 255//26
f 127//202 131//202 132//202 128//202
f 128//203 132//203 213//203 212//203
f 131//204 257//204 256//204 132//204
f 132//205 256//205 283//205 213//205
f 127//206 128//206 133//206 129//206
f 129//207 133//207 259//207 260//207
f 128//208 212//208 211//208 133//208
f 133//209 211//209 282//209 259//209
f 127//210 129//210 134//210 130//210
f 130//26 134//26 220//26 221//26
f 129//211 260//211 261//211 134//211
f 134//26 261//26 285//26 220//26
f 127//212 130//212 135//212 131//212
f 131//213 135//213 258//213 257//213
f 130//26 221//26 222//26 135//26
f 135//26 222//26 286//26 258//26
f 136//214 140//214 141//214 137//214
f 137//215 141//215 199//215 200//215
f 140//216 164//216 165//216 141//216
f 141//217 165//217 271//217 199//217
f 136//218 137//218 142//218 138//218
f 138//219 142//219 262//219 263//219
f 137//220 200//220 201//220 142//220
f 142//221 201//221 279//221 262//221
f 136//222 138//222 143//222 139//222
f 139//223 143//223 172//223 173//223
f 138//224 263//224 264//224 143//224
f 143//225 264//225 284//225 172//225
f 136//226 139//226 144//226 140//226
f 140//227 144//227 163//227 164//227
f 139//228 173//228 174//228 144//228
f 144//229 174//229 273//229 163//229
f 145//230 149//230 150//230 146//230
f 146//231 150//231 202//231 203//231
f 149//232 263//232 262//232 150//232
f 150//233 262//233 279//233 202//233
f 145//234 146//234 151//234 147//234
f 147//235 151//235 265//235 266//235
f 146//236 203//236 204//236 151//236
f 151//237 204//237 280//237 265//237
f 145//238 147//238 152//238 148//238
f 148//239 152//239 214//239 215//239
f 147//240 266//240 267//240 152//240
f 152//241 267//241 283//241 214//241
f 145//242 148//242 153//242 149//242
f 149//243 153//243 264//243 263//243
f 148//244 215//244 216//244 153//244
f 153//245 216//245 284//245 264//245
f 154//246 158//246 159//246 155//246
f 155//247 159//247 205//247 206//247
f 158//248 266//248 265//248 159//248
f 159//249 265//249 280//249 205//249
f 154//250 155//250 160//250 156//250
f 156//251 160//251 268//251 269//251
f 155//252 206//252 207//252 160//252
f 160//253 207//253 281//253 268//253
f 154//254 156//254 161//254 157//254
f 157//255 161//255 211//255 212//255
f 156//256 269//256 270//256 161//256
f 161//257 270//257 282//257 211//257
f 154//258 157//258 162//258 158//258
f 158//259 162//259 267//259 266//259
f 157//260 212//260 213//260 162//260
f 162//261 213//261 283//261 267//261

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
# Blender v2.93.1 OBJ File: ''
# www.blender.org
g Plane
v -1.000000 1.000000 1.000000
v 1.000000 1.000000 1.000000
v -1.000000 0.000000 -1.000000
v 1.000000 0.000000 -1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vn 0.0000 0.8944 -0.4472
s off
f 1/1/1 2/2/1 4/3/1 3/4/1

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,160 @@
# ufbx:bad_normals
# Blender v2.93.1 OBJ File: ''
# www.blender.org
g Plane
v -0.285714 -0.098136 0.413226
v 0.937829 0.000000 0.928330
v -0.460317 -0.158108 -0.469873
v 0.871949 -0.085869 -0.417109
v 0.248437 -0.088936 1.566148
v 1.594936 -0.085869 1.459709
v 0.921956 -0.654242 0.930379
v -0.035714 -0.355744 -0.651303
v 0.863020 -0.582684 -0.415957
v 0.552776 -0.539749 1.585911
v 1.594936 -0.601085 1.459710
v -0.535714 -0.098136 0.192785
v 0.505357 0.000000 1.211489
v 0.838690 0.000000 0.250902
v 0.000000 -0.085869 -0.655912
v -0.285714 -0.098136 0.913226
v 1.029461 -0.085869 1.808282
v 1.360116 0.000000 1.274214
v 1.487795 -0.085869 0.487474
v 0.469642 -0.613352 1.216098
v 0.802976 -0.613352 0.255511
v -0.035714 -0.527482 -0.651303
v 1.029461 -0.601085 1.808282
v 1.360116 -0.686954 1.274214
v 1.487795 -0.601085 0.487474
v -0.535714 -0.355744 -0.651303
v 0.883035 -0.343477 -0.639780
v 0.222321 -0.355744 1.510018
v 1.673209 -0.343477 1.521541
v 0.000000 0.000000 0.376352
v 1.021426 0.000000 1.587841
v 1.354760 0.000000 0.627254
v 1.021426 -0.686954 1.587841
v 1.354760 -0.686954 0.627254
v 0.000000 -0.343477 -1.000000
v -0.142857 -0.392545 0.394789
v 1.532140 -0.343477 0.440881
v 1.032140 -0.343477 1.881762
vt 0.548251 0.350671
vt 0.652271 0.246651
vt 0.717143 0.389820
vt 0.554400 0.448542
vt 0.756292 0.142630
vt 0.860312 0.246651
vt 0.964333 0.350671
vt 0.817434 0.464011
vt 0.757280 0.544790
vt 0.682839 0.529258
vt 0.560550 0.546413
vt 0.765227 0.624696
vt 0.697373 0.622089
vt 0.775277 0.761140
vt 0.667914 0.653777
vt 0.869805 0.555906
vt 0.831967 0.556841
vt 0.327956 0.466981
vt 0.271977 0.447027
vt 0.313610 0.400910
vt 0.356348 0.428637
vt 0.262851 0.391765
vt 0.307700 0.365946
vt 0.379745 0.395769
vt 0.396222 0.596544
vt 0.342146 0.533918
vt 0.383779 0.487801
vt 0.415056 0.493411
vt 0.532234 0.686502
vt 0.382822 0.754318
vt 0.362253 0.711502
vt 0.442877 0.630382
vt 0.233410 0.822134
vt 0.272149 0.695058
vt 0.312973 0.679497
vt 0.319629 0.648915
vt 0.128878 0.675865
vt 0.232895 0.546788
vt 0.024346 0.529595
vt 0.086040 0.413802
vt 0.147735 0.298008
vt 0.224598 0.386338
vt 0.459765 0.257445
vt 0.496000 0.471974
vt 0.453689 0.485958
vt 0.404454 0.357347
vt 0.303750 0.277726
vt 0.304938 0.323666
vn 0.3105 -0.9445 -0.1077
vn 0.1681 -0.9815 0.0919
vn -0.0067 -0.9949 0.1004
vn 0.0000 -1.0000 0.0000
vn 0.1621 -0.9809 -0.1072
vn -0.2024 -0.9395 -0.2764
vn 0.1176 -0.9632 -0.2419
vn -0.1888 -0.9677 0.1669
vn -0.4259 -0.9043 0.0296
vn 0.0799 0.9961 0.0375
vn 0.2878 0.9124 -0.2910
vn -0.2024 0.9395 -0.2764
vn -0.0610 0.9899 0.1277
vn 0.0908 0.9956 0.0223
vn -0.4259 0.9043 0.0296
vn -0.2230 -0.7235 0.6533
vn 0.3714 -0.7275 0.5769
vn 0.3241 0.9437 0.0664
vn -0.1675 0.8005 0.5754
vn 0.8323 0.5302 -0.1618
vn 0.8521 0.4320 -0.2957
vn 0.7373 0.5520 -0.3894
vn 0.5592 0.7971 -0.2281
vn 0.2043 0.9763 0.0709
vn 0.1501 0.9876 -0.0453
vn -0.9669 -0.2267 0.1169
vn -0.7905 -0.3483 0.5037
vn -0.7786 0.3748 0.5033
vn -0.9669 0.2267 0.1169
vn 0.3600 -0.0469 -0.9318
vn -0.4843 -0.2926 -0.8245
vn -0.4843 0.2926 -0.8245
vn 0.4094 0.2992 -0.8619
s off
f 1/1/1 12/2/1 30/3/1 16/4/1
f 3/5/2 15/6/2 30/3/2 12/2/2
f 4/7/3 14/8/3 30/3/3 15/6/3
f 2/9/4 13/10/4 30/3/4 14/8/4
f 5/11/5 16/4/5 30/3/5 13/10/5
f 2/9/4 18/12/4 31/13/4 13/10/4
f 6/14/6 17/15/6 31/13/6 18/12/6
f 5/11/7 13/10/7 31/13/7 17/15/7
f 4/7/8 19/16/8 32/17/8 14/8/8
f 6/14/9 18/12/9 32/17/9 19/16/9
f 2/9/4 14/8/4 32/17/4 18/12/4
f 7/18/10 20/19/10 33/20/10 24/21/10
f 10/22/11 23/23/11 33/20/11 20/19/11
f 11/24/12 24/21/12 33/20/12 23/23/12
f 9/25/13 21/26/13 34/27/13 25/28/13
f 7/18/14 24/21/14 34/27/14 21/26/14
f 11/24/15 25/28/15 34/27/15 24/21/15
f 4/29/16 15/30/16 35/31/16 27/32/16
f 15/30/17 3/33/17 26/34/17 35/31/17
f 35/31/18 26/34/18 8/35/18 22/36/18
f 27/32/19 35/31/19 22/36/19 9/25/19
f 3/33/20 12/37/20 36/38/20 26/34/20
f 1/39/21 16/40/21 36/38/21 12/37/21
f 5/41/22 28/42/22 36/38/22 16/40/22
f 10/22/23 20/19/23 36/38/23 28/42/23
f 7/18/24 21/26/24 36/38/24 20/19/24
f 9/25/25 22/36/25 36/38/25 21/26/25
f 8/35/18 26/34/18 36/38/18 22/36/18
f 6/43/26 19/44/26 37/45/26 29/46/26
f 19/44/27 4/29/27 27/32/27 37/45/27
f 37/45/28 27/32/28 9/25/28 25/28/28
f 29/46/29 37/45/29 25/28/29 11/24/29
f 5/41/30 17/47/30 38/48/30 28/42/30
f 17/47/31 6/43/31 29/46/31 38/48/31
f 38/48/32 29/46/32 11/24/32 23/23/32
f 28/42/33 38/48/33 23/23/33 10/22/33

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,71 @@
# ufbx:line_faces
# Blender v2.93.1 OBJ File: ''
# www.blender.org
g Plane
v -0.750000 0.000000 0.875000
v 0.750000 0.000000 0.875000
v -0.750000 0.000000 -0.875000
v 0.750000 0.000000 -0.875000
v -1.000000 0.000000 0.000000
v 1.000000 0.000000 0.000000
v -0.750000 0.875000 0.000000
v 0.750000 0.875000 0.000000
v 1.000000 -1.000000 0.000000
v -1.000000 0.000000 0.500000
v 0.000000 0.000000 1.000000
v 1.000000 0.000000 -0.500000
v 0.000000 0.000000 -1.000000
v -1.000000 0.000000 -0.500000
v 1.000000 0.000000 0.500000
v 0.000000 0.000000 0.000000
v 0.000000 1.000000 0.000000
v 1.000000 0.500000 0.000000
v -1.000000 0.500000 0.000000
v 1.000000 -0.500000 0.000000
v 0.000000 0.000000 -0.500000
v 0.000000 0.000000 0.500000
v 0.000000 0.500000 0.000000
vt 0.666243 0.666525
vt 0.333192 0.666525
vt 0.333192 0.500000
vt 0.666243 0.500000
vt 0.000141 0.666525
vt 0.000141 0.500000
vt 0.000141 0.333475
vt 0.333192 0.333475
vt 0.666243 0.333475
vt 0.666243 0.333192
vt 0.333192 0.333192
vt 0.333192 0.166667
vt 0.666243 0.166667
vt 0.000141 0.333192
vt 0.000141 0.166667
vt 0.000141 0.000141
vt 0.333192 0.000141
vt 0.666243 0.000141
vt 0.666243 0.999859
vt 0.333192 0.999859
vt 0.333192 0.833333
vt 0.666243 0.833333
vt 0.000141 0.999859
vt 0.000141 0.833333
vt 0.000141 0.666808
vt 0.333192 0.666808
vt 0.666243 0.666808
vn 0.0000 1.0000 0.0000
vn 0.0000 0.0000 1.0000
s off
f 5/1/1 16/2/1 21/3/1 14/4/1
f 16/2/1 6/5/1 12/6/1 21/3/1
f 21/3/1 12/6/1 4/7/1 13/8/1
f 14/4/1 21/3/1 13/8/1 3/9/1
f 1/10/1 11/11/1 22/12/1 10/13/1
f 11/11/1 2/14/1 15/15/1 22/12/1
f 22/12/1 15/15/1 6/16/1 16/17/1
f 10/13/1 22/12/1 16/17/1 5/18/1
f 5/19/2 16/20/2 23/21/2 19/22/2
f 16/20/2 6/23/2 18/24/2 23/21/2
f 23/21/2 18/24/2 8/25/2 17/26/2
f 19/22/2 23/21/2 17/26/2 7/27/2
l 6 20
l 20 9

View File

@@ -0,0 +1,52 @@
# Blender v2.93.1 OBJ File: ''
# www.blender.org
g All_Plane
v 0.750000 0.000000 0.750000
v 2.250000 0.000000 0.750000
v 0.750000 0.000000 -0.750000
v 2.250000 0.000000 -0.750000
v 0.500000 0.000000 0.000000
v 1.500000 0.000000 1.000000
v 2.500000 0.000000 0.000000
v 1.500000 0.000000 -1.000000
v 1.500000 0.000000 0.000000
vt 0.000000 0.000000
vt 0.500000 0.000000
vt 0.500000 0.500000
vt 0.000000 0.500000
vt 1.000000 0.000000
vt 1.000000 0.500000
vt 1.000000 1.000000
vt 0.500000 1.000000
vt 0.000000 1.000000
vn 0.0000 1.0000 0.0000
s off
f 1/1/1 6/2/1 9/3/1 5/4/1
f 6/2/1 2/5/1 7/6/1 9/3/1
f 9/3/1 7/6/1 4/7/1 8/8/1
f 5/4/1 9/3/1 8/8/1 3/9/1
g KeepCorners_Plane.001
v -2.500000 0.000000 1.000000
v -0.500000 0.000000 1.000000
v -2.500000 0.000000 -1.000000
v -0.500000 0.000000 -1.000000
v -2.500000 0.000000 0.000000
v -1.500000 0.000000 1.000000
v -0.500000 0.000000 0.000000
v -1.500000 0.000000 -1.000000
v -1.500000 0.000000 0.000000
vt 0.000000 0.000000
vt 0.500000 0.000000
vt 0.500000 0.500000
vt 0.000000 0.500000
vt 1.000000 0.000000
vt 1.000000 0.500000
vt 1.000000 1.000000
vt 0.500000 1.000000
vt 0.000000 1.000000
vn 0.0000 1.0000 0.0000
s off
f 10/10/2 15/11/2 18/12/2 14/13/2
f 15/11/2 11/14/2 16/15/2 18/12/2
f 18/12/2 16/15/2 13/16/2 17/17/2
f 14/13/2 18/12/2 17/17/2 12/18/2

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,414 @@
# ufbx:bad_normals
# Blender v3.1.2 OBJ File: 'vertex_crease.blend'
# www.blender.org
g Cube_Cube.001
v -0.950000 -1.000000 0.950000
v -0.877778 0.877778 0.877778
v -0.856250 -1.000000 -0.856250
v -0.675926 0.675926 -0.675926
v 1.000000 -1.000000 1.000000
v 1.000000 1.000000 1.000000
v 0.762500 -1.000000 -0.762500
v 0.583333 0.583333 -0.583333
v -0.987500 -1.000000 -0.487500
v -0.996875 -1.000000 0.003125
v -1.000000 -1.000000 0.500000
v -0.781250 -0.500000 0.781250
v -0.730469 -0.007812 0.730469
v -0.765625 0.468750 0.765625
v -0.765625 0.765625 0.468750
v -0.722396 0.722396 0.004167
v -0.748958 0.748958 -0.452083
v -0.748958 0.452083 -0.748958
v -0.723958 -0.011979 -0.723958
v -0.771875 -0.500000 -0.771875
v 0.425000 -1.000000 -0.925000
v -0.015625 -1.000000 -0.978125
v -0.487500 -1.000000 -0.987500
v -0.452083 0.748958 -0.748958
v -0.020833 0.697396 -0.697396
v 0.368750 0.665625 -0.665625
v 0.665625 0.368750 -0.665625
v 0.691406 -0.032812 -0.691406
v 0.725000 -0.500000 -0.725000
v 1.000000 -1.000000 0.500000
v 0.981250 -1.000000 0.018750
v 0.925000 -1.000000 -0.425000
v 0.665625 0.665625 -0.368750
v 0.701563 0.701563 0.025000
v 0.765625 0.765625 0.468750
v 0.765625 0.468750 0.765625
v 0.730469 -0.007812 0.730469
v 0.781250 -0.500000 0.781250
v -0.500000 -1.000000 1.000000
v 0.000000 -1.000000 1.000000
v 0.500000 -1.000000 1.000000
v 0.468750 0.765625 0.765625
v 0.000000 0.726562 0.726562
v -0.468750 0.765625 0.765625
v -0.937500 -0.500000 0.437500
v -0.890625 -0.015625 0.406250
v -0.875000 0.437500 0.437500
v -0.967187 -0.500000 0.001562
v -0.928602 -0.024132 0.001085
v -0.872222 0.403472 0.002778
v -0.931250 -0.500000 -0.431250
v -0.886285 -0.018403 -0.401910
v -0.863889 0.426389 -0.426389
v -0.431250 -0.500000 -0.931250
v -0.401910 -0.018403 -0.886285
v -0.426389 0.426389 -0.863889
v -0.007813 -0.500000 -0.957813
v -0.005425 -0.028299 -0.922092
v -0.013889 0.386806 -0.855556
v 0.400000 -0.500000 -0.900000
v 0.380208 -0.032292 -0.864583
v 0.370833 0.370833 -0.808333
v 0.900000 -0.500000 -0.400000
v 0.864583 -0.032292 -0.380208
v 0.808333 0.370833 -0.370833
v 0.959375 -0.500000 0.009375
v 0.923177 -0.027604 0.006510
v 0.858333 0.389583 0.016667
v 0.937500 -0.500000 0.437500
v 0.890625 -0.015625 0.406250
v 0.875000 0.437500 0.437500
v 0.437500 -0.500000 0.937500
v 0.406250 -0.015625 0.890625
v 0.437500 0.437500 0.875000
v 0.000000 -0.500000 0.968750
v 0.000000 -0.023438 0.929688
v 0.000000 0.406250 0.875000
v -0.437500 -0.500000 0.937500
v -0.406250 -0.015625 0.890625
v -0.437500 0.437500 0.875000
v -0.493750 -1.000000 -0.493750
v -0.007812 -1.000000 -0.489063
v 0.462500 -1.000000 -0.462500
v -0.498437 -1.000000 0.001562
v -0.001953 -1.000000 0.002734
v 0.490625 -1.000000 0.009375
v -0.500000 -1.000000 0.500000
v 0.000000 -1.000000 0.500000
v 0.500000 -1.000000 0.500000
v 0.370833 0.808333 -0.370833
v -0.013889 0.855556 -0.386806
v -0.426389 0.863889 -0.426389
v 0.389583 0.858333 0.016667
v -0.003472 0.901389 0.004861
v -0.403472 0.872222 0.002778
v 0.437500 0.875000 0.437500
v 0.000000 0.875000 0.406250
v -0.437500 0.875000 0.437500
vt 0.437500 0.062500
vt 0.500000 0.062500
vt 0.500000 0.125000
vt 0.437500 0.125000
vt 0.562500 0.062500
vt 0.562500 0.125000
vt 0.500000 0.187500
vt 0.437500 0.187500
vt 0.562500 0.187500
vt 0.381250 0.006250
vt 0.437500 0.000000
vt 0.375000 0.062500
vt 0.500000 0.000000
vt 0.562500 0.000000
vt 0.618750 0.006250
vt 0.625000 0.062500
vt 0.625000 0.125000
vt 0.625000 0.187500
vt 0.625000 0.250000
vt 0.562500 0.250000
vt 0.500000 0.250000
vt 0.437500 0.250000
vt 0.375000 0.187500
vt 0.375000 0.250000
vt 0.375000 0.125000
vt 0.437500 0.312500
vt 0.500000 0.312500
vt 0.500293 0.374707
vt 0.437500 0.375000
vt 0.562500 0.312500
vt 0.563672 0.373828
vt 0.501172 0.436328
vt 0.437500 0.437500
vt 0.567187 0.432813
vt 0.375000 0.312500
vt 0.625000 0.312500
vt 0.627344 0.372656
vt 0.634375 0.428125
vt 0.654688 0.470313
vt 0.569531 0.492969
vt 0.501758 0.498242
vt 0.437500 0.500000
vt 0.375000 0.437500
vt 0.375000 0.500000
vt 0.375000 0.375000
vt 0.437500 0.562500
vt 0.501172 0.561328
vt 0.500293 0.624707
vt 0.437500 0.625000
vt 0.567187 0.557812
vt 0.563672 0.623828
vt 0.500000 0.687500
vt 0.437500 0.687500
vt 0.562500 0.687500
vt 0.375000 0.562500
vt 0.632031 0.555469
vt 0.626758 0.623242
vt 0.625000 0.687500
vt 0.625000 0.750000
vt 0.562500 0.750000
vt 0.500000 0.750000
vt 0.437500 0.750000
vt 0.375000 0.687500
vt 0.375000 0.750000
vt 0.375000 0.625000
vt 0.437500 0.812500
vt 0.500000 0.812500
vt 0.500000 0.875000
vt 0.437500 0.875000
vt 0.562500 0.812500
vt 0.562500 0.875000
vt 0.500000 0.937500
vt 0.437500 0.937500
vt 0.562500 0.937500
vt 0.375000 0.812500
vt 0.625000 0.812500
vt 0.625000 0.875000
vt 0.625000 0.937500
vt 0.618750 0.993750
vt 0.562500 1.000000
vt 0.500000 1.000000
vt 0.437500 1.000000
vt 0.375000 0.937500
vt 0.381250 0.993750
vt 0.375000 0.875000
vt 0.188281 0.563281
vt 0.250195 0.562695
vt 0.250049 0.625049
vt 0.187695 0.625195
vt 0.312500 0.562500
vt 0.312500 0.625000
vt 0.250000 0.687500
vt 0.187500 0.687500
vt 0.312500 0.687500
vt 0.142969 0.517969
vt 0.189062 0.501562
vt 0.126562 0.564063
vt 0.250391 0.500391
vt 0.312500 0.500000
vt 0.312500 0.750000
vt 0.250000 0.750000
vt 0.187500 0.750000
vt 0.125000 0.687500
vt 0.131250 0.743750
vt 0.125391 0.625391
vt 0.692187 0.557813
vt 0.750977 0.561523
vt 0.750244 0.624756
vt 0.688672 0.623828
vt 0.811719 0.563281
vt 0.812305 0.625195
vt 0.750000 0.687500
vt 0.687500 0.687500
vt 0.812500 0.687500
vt 0.696875 0.490625
vt 0.751953 0.498047
vt 0.810937 0.501562
vt 0.857031 0.517969
vt 0.873437 0.564063
vt 0.874609 0.625391
vt 0.875000 0.687500
vt 0.868750 0.743750
vt 0.812500 0.750000
vt 0.750000 0.750000
vt 0.687500 0.750000
vn -0.9700 0.1459 0.1945
vn -0.9711 0.0658 0.2294
vn -0.9961 0.0874 -0.0083
vn -0.9958 0.0907 -0.0085
vn -0.9889 0.1131 0.0967
vn -0.9735 0.2282 -0.0143
vn -0.9672 0.0713 -0.2437
vn -0.9637 0.1207 -0.2380
vn -0.9621 0.1965 -0.1890
vn -0.6313 -0.4505 0.6313
vn -0.6890 0.2250 0.6890
vn -0.7719 -0.6252 0.1150
vn -0.7065 0.0414 0.7065
vn -0.7068 -0.0279 0.7068
vn -0.5774 0.5774 0.5774
vn -0.7064 0.7064 -0.0458
vn -0.7069 0.7069 -0.0217
vn -0.6978 0.6978 -0.1616
vn -0.5774 0.5774 -0.5774
vn -0.6969 0.1696 -0.6969
vn -0.7062 0.0509 -0.7062
vn -0.6978 0.1621 -0.6978
vn -0.7637 -0.6208 -0.1769
vn -0.5940 -0.5425 -0.5940
vn -0.7397 -0.6729 -0.0075
vn -0.2261 0.1174 -0.9670
vn -0.2316 0.0744 -0.9700
vn 0.0453 0.1044 -0.9935
vn 0.0453 0.0724 -0.9963
vn -0.1633 0.2072 -0.9646
vn 0.0823 0.2732 -0.9584
vn 0.3075 0.1086 -0.9453
vn 0.3048 0.0759 -0.9494
vn 0.2878 0.2835 -0.9148
vn -0.1666 -0.6185 -0.7679
vn -0.1278 0.7013 -0.7013
vn 0.1198 0.7020 -0.7020
vn 0.2762 0.6796 -0.6796
vn 0.5774 0.5774 -0.5774
vn 0.6806 0.2714 -0.6806
vn 0.7032 0.1052 -0.7032
vn 0.7041 0.0918 -0.7041
vn 0.2282 -0.6475 -0.7271
vn 0.5631 -0.6048 -0.5631
vn 0.0403 -0.6736 -0.7380
vn 0.9488 0.0764 -0.3066
vn 0.9448 0.1082 -0.3094
vn 0.9933 0.1020 -0.0536
vn 0.9957 0.0750 -0.0537
vn 0.9141 0.2818 -0.2916
vn 0.9590 0.2663 -0.0964
vn 0.9733 0.0684 0.2191
vn 0.9739 0.1529 0.1677
vn 0.9938 0.0988 0.0515
vn 0.7263 -0.6479 -0.2297
vn 0.6785 0.6785 -0.2818
vn 0.7001 0.7001 -0.1408
vn 0.6981 0.6981 -0.1593
vn 0.5774 0.5774 0.5774
vn 0.7029 -0.1092 0.7029
vn 0.7065 0.0414 0.7065
vn 0.6837 0.2551 0.6837
vn 0.7740 -0.6286 0.0764
vn 0.6459 -0.4069 0.6459
vn 0.7377 -0.6735 -0.0478
vn 0.1799 0.1563 0.9712
vn 0.2313 0.0653 0.9707
vn 0.0000 0.0849 0.9964
vn 0.0000 0.0936 0.9956
vn 0.0783 0.0890 0.9929
vn 0.0000 0.2212 0.9752
vn -0.2313 0.0653 0.9707
vn -0.1965 0.1464 0.9695
vn -0.1009 0.1115 0.9886
vn 0.0870 -0.6312 0.7707
vn -0.1221 0.7018 0.7018
vn 0.0000 0.7071 0.7071
vn 0.0401 0.7065 0.7065
vn -0.1167 -0.6256 0.7714
vn 0.0000 -0.6728 0.7399
vn -0.0000 -1.0000 0.0000
vn 0.2764 0.9187 -0.2820
vn 0.0792 0.9630 -0.2578
vn 0.0293 0.9988 -0.0396
vn 0.2488 0.9640 -0.0936
vn -0.1579 0.9681 -0.1944
vn -0.1996 0.9797 -0.0193
vn 0.0048 0.9817 0.1904
vn 0.0832 0.9955 0.0465
vn -0.0960 0.9913 0.0902
s 1
f 45/1/1 46/2/2 49/3/3 48/4/4
f 46/2/2 47/5/5 50/6/6 49/3/3
f 48/4/4 49/3/3 52/7/7 51/8/8
f 49/3/3 50/6/6 53/9/9 52/7/7
f 1/10/10 12/11/11 45/1/1 11/12/12
f 12/11/11 13/13/13 46/2/2 45/1/1
f 13/13/13 14/14/14 47/5/5 46/2/2
f 14/14/14 2/15/15 15/16/16 47/5/5
f 47/5/5 15/16/16 16/17/17 50/6/6
f 50/6/6 16/17/17 17/18/18 53/9/9
f 53/9/9 17/18/18 4/19/19 18/20/20
f 52/7/7 53/9/9 18/20/20 19/21/21
f 51/8/8 52/7/7 19/21/21 20/22/22
f 9/23/23 51/8/8 20/22/22 3/24/24
f 10/25/25 48/4/4 51/8/8 9/23/23
f 11/12/12 45/1/1 48/4/4 10/25/25
f 54/26/26 55/27/27 58/28/28 57/29/29
f 55/27/27 56/30/30 59/31/31 58/28/28
f 57/29/29 58/28/28 61/32/32 60/33/33
f 58/28/28 59/31/31 62/34/34 61/32/32
f 3/24/24 20/22/22 54/26/26 23/35/35
f 20/22/22 19/21/21 55/27/27 54/26/26
f 19/21/21 18/20/20 56/30/30 55/27/27
f 18/20/20 4/19/19 24/36/36 56/30/30
f 56/30/30 24/36/36 25/37/37 59/31/31
f 59/31/31 25/37/37 26/38/38 62/34/34
f 62/34/34 26/38/38 8/39/39 27/40/40
f 61/32/32 62/34/34 27/40/40 28/41/41
f 60/33/33 61/32/32 28/41/41 29/42/42
f 21/43/43 60/33/33 29/42/42 7/44/44
f 22/45/45 57/29/29 60/33/33 21/43/43
f 23/35/35 54/26/26 57/29/29 22/45/45
f 63/46/46 64/47/47 67/48/48 66/49/49
f 64/47/47 65/50/50 68/51/51 67/48/48
f 66/49/49 67/48/48 70/52/52 69/53/53
f 67/48/48 68/51/51 71/54/54 70/52/52
f 7/44/44 29/42/42 63/46/46 32/55/55
f 29/42/42 28/41/41 64/47/47 63/46/46
f 28/41/41 27/40/40 65/50/50 64/47/47
f 27/40/40 8/39/39 33/56/56 65/50/50
f 65/50/50 33/56/56 34/57/57 68/51/51
f 68/51/51 34/57/57 35/58/58 71/54/54
f 71/54/54 35/58/58 6/59/59 36/60/60
f 70/52/52 71/54/54 36/60/60 37/61/61
f 69/53/53 70/52/52 37/61/61 38/62/62
f 30/63/63 69/53/53 38/62/62 5/64/64
f 31/65/65 66/49/49 69/53/53 30/63/63
f 32/55/55 63/46/46 66/49/49 31/65/65
f 72/66/66 73/67/67 76/68/68 75/69/69
f 73/67/67 74/70/70 77/71/71 76/68/68
f 75/69/69 76/68/68 79/72/72 78/73/73
f 76/68/68 77/71/71 80/74/74 79/72/72
f 5/64/64 38/62/62 72/66/66 41/75/75
f 38/62/62 37/61/61 73/67/67 72/66/66
f 37/61/61 36/60/60 74/70/70 73/67/67
f 36/60/60 6/59/59 42/76/76 74/70/70
f 74/70/70 42/76/76 43/77/77 77/71/71
f 77/71/71 43/77/77 44/78/78 80/74/74
f 80/74/74 44/78/78 2/79/15 14/80/14
f 79/72/72 80/74/74 14/80/14 13/81/13
f 78/73/73 79/72/72 13/81/13 12/82/11
f 39/83/79 78/73/73 12/82/11 1/84/10
f 40/85/80 75/69/69 78/73/73 39/83/79
f 41/75/75 72/66/66 75/69/69 40/85/80
f 81/86/81 82/87/81 85/88/81 84/89/81
f 82/87/81 83/90/81 86/91/81 85/88/81
f 84/89/81 85/88/81 88/92/81 87/93/81
f 85/88/81 86/91/81 89/94/81 88/92/81
f 3/95/24 23/96/35 81/86/81 9/97/23
f 23/96/35 22/98/45 82/87/81 81/86/81
f 22/98/45 21/99/43 83/90/81 82/87/81
f 21/99/43 7/44/44 32/55/55 83/90/81
f 83/90/81 32/55/55 31/65/65 86/91/81
f 86/91/81 31/65/65 30/63/63 89/94/81
f 89/94/81 30/63/63 5/64/64 41/100/75
f 88/92/81 89/94/81 41/100/75 40/101/80
f 87/93/81 88/92/81 40/101/80 39/102/79
f 11/103/12 87/93/81 39/102/79 1/104/10
f 10/105/25 84/89/81 87/93/81 11/103/12
f 9/97/23 81/86/81 84/89/81 10/105/25
f 90/106/82 91/107/83 94/108/84 93/109/85
f 91/107/83 92/110/86 95/111/87 94/108/84
f 93/109/85 94/108/84 97/112/88 96/113/89
f 94/108/84 95/111/87 98/114/90 97/112/88
f 8/39/39 26/115/38 90/106/82 33/56/56
f 26/115/38 25/116/37 91/107/83 90/106/82
f 25/116/37 24/117/36 92/110/86 91/107/83
f 24/117/36 4/118/19 17/119/18 92/110/86
f 92/110/86 17/119/18 16/120/17 95/111/87
f 95/111/87 16/120/17 15/121/16 98/114/90
f 98/114/90 15/121/16 2/122/15 44/123/78
f 97/112/88 98/114/90 44/123/78 43/124/77
f 96/113/89 97/112/88 43/124/77 42/125/76
f 35/58/58 96/113/89 42/125/76 6/59/59
f 34/57/57 93/109/85 96/113/89 35/58/58
f 33/56/56 90/106/82 93/109/85 34/57/57

View File

@@ -0,0 +1,12 @@
# Blender 3.3.1 MTL File: 'None'
# www.blender.org
newmtl Material
Ns 250.000000
Ka 1.000000 1.000000 1.000000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 1.000000
illum 2
map_Kd space dir/space tex.png

View File

@@ -0,0 +1,40 @@
# Blender 3.3.1
# www.blender.org
mtllib blender_331_space texture_0_mtl.mtl
o Cube
v 1.000000 1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 1.000000 1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 1.000000 -1.000000
v -1.000000 -1.000000 -1.000000
v -1.000000 1.000000 1.000000
v -1.000000 -1.000000 1.000000
vn -0.0000 1.0000 -0.0000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 -1.0000 -0.0000
vn 1.0000 -0.0000 -0.0000
vn -0.0000 -0.0000 -1.0000
vt 0.625000 0.500000
vt 0.375000 0.500000
vt 0.625000 0.750000
vt 0.375000 0.750000
vt 0.875000 0.500000
vt 0.625000 0.250000
vt 0.125000 0.500000
vt 0.375000 0.250000
vt 0.875000 0.750000
vt 0.625000 1.000000
vt 0.625000 0.000000
vt 0.375000 1.000000
vt 0.375000 0.000000
vt 0.125000 0.750000
s 0
usemtl Material
f 1/1/1 5/5/1 7/9/1 3/3/1
f 4/4/2 3/3/2 7/10/2 8/12/2
f 8/13/3 7/11/3 5/6/3 6/8/3
f 6/7/4 2/2/4 4/4/4 8/14/4
f 2/2/5 1/1/5 3/3/5 4/4/5
f 6/8/6 5/6/6 1/1/6 2/2/6

View File

@@ -0,0 +1,23 @@
# Blender 3.4.0
# www.blender.org
o Cube
v -1.000000 -1.000000 1.000000
v -1.000000 1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v -1.000000 1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v 1.000000 1.000000 1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -1.000000
vn -1.0000 -0.0000 -0.0000
vt 0.375000 0.000000
vt 0.625000 0.000000
vt 0.375000 0.250000
vt 0.625000 0.250000
s 0
f 1/1/1 2/2/1 4/4/1 3/3/1
l 1 5
l 6 5
l 7 3
l 6 2
l 5 7

View File

@@ -0,0 +1,84 @@
# Blender 3.4.0
# www.blender.org
o Cube
v 1.000000 2.000000 3.000000
v 1.000000 2.000000 1.000000
v 1.000000 0.000000 3.000000
v 1.000000 0.000000 1.000000
v -1.000000 2.000000 3.000000
v -1.000000 2.000000 1.000000
v -1.000000 0.000000 3.000000
v -1.000000 0.000000 1.000000
vn -0.0000 -0.0000 1.0000
vn -0.0000 -1.0000 -0.0000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 -0.0000 -1.0000
vn 1.0000 -0.0000 -0.0000
vn -0.0000 1.0000 -0.0000
vt 0.625000 0.500000
vt 0.375000 0.500000
vt 0.625000 0.750000
vt 0.375000 0.750000
vt 0.875000 0.500000
vt 0.625000 0.250000
vt 0.125000 0.500000
vt 0.375000 0.250000
vt 0.875000 0.750000
vt 0.625000 1.000000
vt 0.625000 0.000000
vt 0.375000 1.000000
vt 0.375000 0.000000
vt 0.125000 0.750000
s 0
f 1/1/1 5/5/1 7/9/1 3/3/1
f 4/4/2 3/3/2 7/10/2 8/12/2
f 8/13/3 7/11/3 5/6/3 6/8/3
f 6/7/4 2/2/4 4/4/4 8/14/4
f 2/2/5 1/1/5 3/3/5 4/4/5
f 6/8/6 5/6/6 1/1/6 2/2/6
o Cone
v 0.000000 2.000000 5.000000
v -0.707107 1.707107 5.000000
v -1.000000 1.000000 5.000000
v -0.707107 0.292893 5.000000
v 0.000000 0.000000 5.000000
v 0.707107 0.292893 5.000000
v 1.000000 1.000000 5.000000
v 0.707107 1.707107 5.000000
v -0.000000 1.000000 4.000000
vn -0.0000 0.7042 0.7100
vn -0.0000 -0.0000 -1.0000
vn -0.4979 0.4979 0.7100
vn -0.7042 -0.0000 0.7100
vn -0.4979 -0.4979 0.7100
vn -0.0000 -0.7042 0.7100
vn 0.4979 -0.4979 0.7100
vn 0.7042 -0.0000 0.7100
vn 0.4979 0.4979 0.7100
vt 0.750000 0.490000
vt 0.250000 0.490000
vt 0.419706 0.419706
vt 0.919706 0.419706
vt 0.490000 0.250000
vt 0.990000 0.250000
vt 0.419706 0.080294
vt 0.919706 0.080294
vt 0.250000 0.010000
vt 0.750000 0.010000
vt 0.080294 0.080294
vt 0.580294 0.080294
vt 0.510000 0.250000
vt 0.010000 0.250000
vt 0.580294 0.419706
vt 0.080294 0.419706
vt 0.250000 0.250000
s 1
f 9/16/7 17/31/8 10/17/9
f 10/17/9 17/31/8 11/19/10
f 11/19/10 17/31/8 12/21/11
f 12/21/11 17/31/8 13/23/12
f 13/23/12 17/31/8 14/25/13
f 14/25/13 17/31/8 15/28/14
f 9/15/7 10/18/9 11/20/10 12/22/11 13/24/12 14/26/13 15/27/14 16/29/15
f 15/28/14 17/31/8 16/30/15
f 16/30/15 17/31/8 9/16/7

Binary file not shown.

View File

@@ -0,0 +1,38 @@
# Blender 3.4.0
# www.blender.org
o Cube
v 1.000000 3.000000 -2.000000
v 1.000000 1.000000 -2.000000
v 1.000000 3.000000 0.000000
v 1.000000 1.000000 0.000000
v -1.000000 3.000000 -2.000000
v -1.000000 1.000000 -2.000000
v -1.000000 3.000000 0.000000
v -1.000000 1.000000 0.000000
vn -0.0000 1.0000 -0.0000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 -1.0000 -0.0000
vn 1.0000 -0.0000 -0.0000
vn -0.0000 -0.0000 -1.0000
vt 0.625000 0.500000
vt 0.375000 0.500000
vt 0.625000 0.750000
vt 0.375000 0.750000
vt 0.875000 0.500000
vt 0.625000 0.250000
vt 0.125000 0.500000
vt 0.375000 0.250000
vt 0.875000 0.750000
vt 0.625000 1.000000
vt 0.625000 0.000000
vt 0.375000 1.000000
vt 0.375000 0.000000
vt 0.125000 0.750000
s 0
f 1/1/1 5/5/1 7/9/1 3/3/1
f 4/4/2 3/3/2 7/10/2 8/12/2
f 8/13/3 7/11/3 5/6/3 6/8/3
f 6/7/4 2/2/4 4/4/4 8/14/4
f 2/2/5 1/1/5 3/3/5 4/4/5
f 6/8/6 5/6/6 1/1/6 2/2/6

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More