Upload folder using huggingface_hub
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitattributes +11 -35
- .gitignore +144 -0
- .pre-commit-config.yaml +7 -0
- .vscode/extensions.json +1 -0
- .vscode/settings.json +9 -0
- ATTRIBUTIONS.MD +399 -0
- CONTRIBUTING.MD +49 -0
- Dockerfile +53 -0
- LICENSE +201 -0
- MANIFEST.in +6 -0
- README.md +359 -0
- assets/Anny/SOMA_wrap.obj +0 -0
- assets/Anny/base_body.obj +0 -0
- assets/GarmentMeasurements/SOMA_wrap.obj +0 -0
- assets/GarmentMeasurements/mean.obj +0 -0
- assets/GarmentMeasurements/point.npz +3 -0
- assets/MHR/SOMA_wrap_lod1.obj +0 -0
- assets/MHR/base_body_lod1.obj +0 -0
- assets/MHR/base_body_lod6.obj +1783 -0
- assets/MHR/mhr_model_lod1.pt +3 -0
- assets/MHR/mhr_model_lod6.pt +3 -0
- assets/SMPL/SOMA_wrap.obj +0 -0
- assets/SMPL/base_body.obj +0 -0
- assets/SMPL/smpl_anim.npy +3 -0
- assets/SMPLX/SOMA_wrap.obj +0 -0
- assets/SMPLX/base_body.obj +0 -0
- assets/SOMA_neutral.npz +3 -0
- assets/correctives_model.pt +3 -0
- assets/example_animation.npy +3 -0
- assets/images/banner.png +0 -0
- assets/images/hand-left-in-action.gif +0 -0
- assets/images/hand-right-in-action.gif +3 -0
- assets/images/mhr2soma.gif +3 -0
- assets/images/smpl2soma.gif +3 -0
- assets/images/soma-in-action.gif +3 -0
- assets/images/soma_correctives.gif +3 -0
- docs/BIAS.md +7 -0
- docs/EXPLAINABILITY.md +13 -0
- docs/PRIVACY.md +16 -0
- docs/SAFETY_and_SECURITY.md +9 -0
- docs/model_card.md +152 -0
- out/omomo_sub1_clothesstand_000_soma.npz +3 -0
- out/omomo_sub1_clothesstand_000_soma_smoke.npz +3 -0
- out/smplx2soma_smoke.npz +3 -0
- out/soma2smpl_betafit_smoke.npz +3 -0
- out/soma2smpl_cached_beta_smoke.npz +3 -0
- out/soma2smpl_neutral_smoke.npz +3 -0
- out/soma2smpl_smoke.npz +3 -0
- out/soma2smpl_smplx2soma_beta_smoke.npz +3 -0
- py_soma_x.egg-info/PKG-INFO +404 -0
.gitattributes
CHANGED
|
@@ -1,35 +1,11 @@
|
|
| 1 |
-
*
|
| 2 |
-
*.
|
| 3 |
-
*.
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
-
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
-
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
-
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
-
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
-
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
-
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
-
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
-
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
-
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
-
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
-
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
-
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
-
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
-
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
-
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
-
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
-
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
-
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
-
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
-
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
-
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
-
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
-
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 1 |
+
assets/** filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.md -filter text
|
| 3 |
+
*.txt -filter text
|
| 4 |
+
out/omomo_sub1_clothesstand_000_soma.npz filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
out/omomo_sub1_clothesstand_000_soma_smoke.npz filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
out/smplx2soma_smoke.npz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
out/soma2smpl_betafit_smoke.npz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
out/soma2smpl_cached_beta_smoke.npz filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
out/soma2smpl_neutral_smoke.npz filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
out/soma2smpl_smoke.npz filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
out/soma2smpl_smplx2soma_beta_smoke.npz filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.gitignore
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Byte-compiled / optimized / DLL files
|
| 2 |
+
__pycache__/
|
| 3 |
+
*.py[cod]
|
| 4 |
+
*$py.class
|
| 5 |
+
|
| 6 |
+
# C extensions
|
| 7 |
+
*.so
|
| 8 |
+
|
| 9 |
+
# Distribution / packaging
|
| 10 |
+
.Python
|
| 11 |
+
build/
|
| 12 |
+
develop-eggs/
|
| 13 |
+
dist/
|
| 14 |
+
downloads/
|
| 15 |
+
eggs/
|
| 16 |
+
.eggs/
|
| 17 |
+
lib/
|
| 18 |
+
lib64/
|
| 19 |
+
parts/
|
| 20 |
+
sdist/
|
| 21 |
+
var/
|
| 22 |
+
wheels/
|
| 23 |
+
share/python-wheels/
|
| 24 |
+
*.egg-info/
|
| 25 |
+
.installed.cfg
|
| 26 |
+
*.egg
|
| 27 |
+
MANIFEST
|
| 28 |
+
|
| 29 |
+
# PyInstaller
|
| 30 |
+
# Usually these files are written by a python script from a template
|
| 31 |
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
| 32 |
+
*.manifest
|
| 33 |
+
*.spec
|
| 34 |
+
|
| 35 |
+
# Installer logs
|
| 36 |
+
pip-log.txt
|
| 37 |
+
pip-delete-this-directory.txt
|
| 38 |
+
|
| 39 |
+
# Unit test / coverage reports
|
| 40 |
+
htmlcov/
|
| 41 |
+
.tox/
|
| 42 |
+
.nox/
|
| 43 |
+
.coverage
|
| 44 |
+
.coverage.*
|
| 45 |
+
.cache
|
| 46 |
+
nosetests.xml
|
| 47 |
+
coverage.xml
|
| 48 |
+
*.cover
|
| 49 |
+
*.py,cover
|
| 50 |
+
.hypothesis/
|
| 51 |
+
.pytest_cache/
|
| 52 |
+
cover/
|
| 53 |
+
|
| 54 |
+
# Translations
|
| 55 |
+
*.mo
|
| 56 |
+
*.pot
|
| 57 |
+
|
| 58 |
+
# Django stuff:
|
| 59 |
+
*.log
|
| 60 |
+
local_settings.py
|
| 61 |
+
db.sqlite3
|
| 62 |
+
db.sqlite3-journal
|
| 63 |
+
|
| 64 |
+
# Flask stuff:
|
| 65 |
+
instance/
|
| 66 |
+
.webassets-cache
|
| 67 |
+
|
| 68 |
+
# Scrapy stuff:
|
| 69 |
+
.scrapy
|
| 70 |
+
|
| 71 |
+
# Sphinx documentation
|
| 72 |
+
docs/_build/
|
| 73 |
+
|
| 74 |
+
# PyBuilder
|
| 75 |
+
target/
|
| 76 |
+
|
| 77 |
+
# Jupyter Notebook
|
| 78 |
+
.ipynb_checkpoints
|
| 79 |
+
|
| 80 |
+
# IPython
|
| 81 |
+
profile_default/
|
| 82 |
+
ipython_config.py
|
| 83 |
+
|
| 84 |
+
# pyenv
|
| 85 |
+
.python-version
|
| 86 |
+
|
| 87 |
+
# pipenv
|
| 88 |
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
| 89 |
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
| 90 |
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
| 91 |
+
# install all needed dependencies.
|
| 92 |
+
#Pipfile.lock
|
| 93 |
+
|
| 94 |
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
| 95 |
+
__pypackages__/
|
| 96 |
+
|
| 97 |
+
# Celery stuff
|
| 98 |
+
celerybeat-schedule
|
| 99 |
+
celerybeat.pid
|
| 100 |
+
|
| 101 |
+
# SageMath parsed files
|
| 102 |
+
*.sage.py
|
| 103 |
+
|
| 104 |
+
# Environments
|
| 105 |
+
.env
|
| 106 |
+
.venv
|
| 107 |
+
env/
|
| 108 |
+
venv/
|
| 109 |
+
ENV/
|
| 110 |
+
env.bak/
|
| 111 |
+
venv.bak/
|
| 112 |
+
|
| 113 |
+
# Spyder project settings
|
| 114 |
+
.spyderproject
|
| 115 |
+
.spyproject
|
| 116 |
+
|
| 117 |
+
# Rope project settings
|
| 118 |
+
.ropeproject
|
| 119 |
+
|
| 120 |
+
# mkdocs documentation
|
| 121 |
+
/site
|
| 122 |
+
|
| 123 |
+
# mypy
|
| 124 |
+
.mypy_cache/
|
| 125 |
+
.dmypy.json
|
| 126 |
+
dmypy.json
|
| 127 |
+
|
| 128 |
+
# Pyre type checker
|
| 129 |
+
.pyre/
|
| 130 |
+
|
| 131 |
+
# Editors
|
| 132 |
+
.idea/
|
| 133 |
+
.vscode/*
|
| 134 |
+
!.vscode/extensions.json
|
| 135 |
+
!.vscode/settings.json
|
| 136 |
+
*.swp
|
| 137 |
+
*.swo
|
| 138 |
+
|
| 139 |
+
# Project specific
|
| 140 |
+
out/
|
| 141 |
+
assets/SMPL/SMPL_NEUTRAL.pkl
|
| 142 |
+
assets/nova-in-action.mp4
|
| 143 |
+
assets/SMPLX/SMPLX_NEUTRAL.npz
|
| 144 |
+
assets/SMPLX/SMPLX_NEUTRAL.pkl
|
.pre-commit-config.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
repos:
|
| 2 |
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
| 3 |
+
rev: v0.9.7
|
| 4 |
+
hooks:
|
| 5 |
+
- id: ruff
|
| 6 |
+
args: [--fix, --exit-non-zero-on-fix]
|
| 7 |
+
- id: ruff-format
|
.vscode/extensions.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"recommendations":["charliermarsh.ruff","ms-python.python"]}
|
.vscode/settings.json
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"[python]": {
|
| 3 |
+
"editor.defaultFormatter": "charliermarsh.ruff",
|
| 4 |
+
"editor.codeActionsOnSave": {
|
| 5 |
+
"source.fixAll.ruff": "explicit",
|
| 6 |
+
"source.organizeImports.ruff": "explicit"
|
| 7 |
+
}
|
| 8 |
+
}
|
| 9 |
+
}
|
ATTRIBUTIONS.MD
ADDED
|
@@ -0,0 +1,399 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Anny, Copyright (C) 2025 NAVER Corporation. All Rights Reserved.
|
| 2 |
+
|
| 3 |
+
The files within this subdirectory are licensed under the Apache License,
|
| 4 |
+
Version 2.0 (the "License"); you may not use these files except in compliance
|
| 5 |
+
with the License.
|
| 6 |
+
|
| 7 |
+
A copy of the terms of the license are reproduced below. You may also obtain
|
| 8 |
+
a copy of the License at:
|
| 9 |
+
|
| 10 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
| 11 |
+
|
| 12 |
+
Unless required by applicable law or agreed to in writing, software
|
| 13 |
+
distributed under the License is distributed on an "AS IS" BASIS,
|
| 14 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 15 |
+
See the License for the specific language governing permissions and
|
| 16 |
+
limitations under the License.
|
| 17 |
+
|
| 18 |
+
Apache License
|
| 19 |
+
Version 2.0, January 2004
|
| 20 |
+
http://www.apache.org/licenses/
|
| 21 |
+
|
| 22 |
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
| 23 |
+
|
| 24 |
+
1. Definitions.
|
| 25 |
+
|
| 26 |
+
"License" shall mean the terms and conditions for use, reproduction,
|
| 27 |
+
and distribution as defined by Sections 1 through 9 of this document.
|
| 28 |
+
|
| 29 |
+
"Licensor" shall mean the copyright owner or entity authorized by
|
| 30 |
+
the copyright owner that is granting the License.
|
| 31 |
+
|
| 32 |
+
"Legal Entity" shall mean the union of the acting entity and all
|
| 33 |
+
other entities that control, are controlled by, or are under common
|
| 34 |
+
control with that entity. For the purposes of this definition,
|
| 35 |
+
"control" means (i) the power, direct or indirect, to cause the
|
| 36 |
+
direction or management of such entity, whether by contract or
|
| 37 |
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
| 38 |
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
| 39 |
+
|
| 40 |
+
"You" (or "Your") shall mean an individual or Legal Entity
|
| 41 |
+
exercising permissions granted by this License.
|
| 42 |
+
|
| 43 |
+
"Source" form shall mean the preferred form for making modifications,
|
| 44 |
+
including but not limited to software source code, documentation
|
| 45 |
+
source, and configuration files.
|
| 46 |
+
|
| 47 |
+
"Object" form shall mean any form resulting from mechanical
|
| 48 |
+
transformation or translation of a Source form, including but
|
| 49 |
+
not limited to compiled object code, generated documentation,
|
| 50 |
+
and conversions to other media types.
|
| 51 |
+
|
| 52 |
+
"Work" shall mean the work of authorship, whether in Source or
|
| 53 |
+
Object form, made available under the License, as indicated by a
|
| 54 |
+
copyright notice that is included in or attached to the work
|
| 55 |
+
(an example is provided in the Appendix below).
|
| 56 |
+
|
| 57 |
+
"Derivative Works" shall mean any work, whether in Source or Object
|
| 58 |
+
form, that is based on (or derived from) the Work and for which the
|
| 59 |
+
editorial revisions, annotations, elaborations, or other modifications
|
| 60 |
+
represent, as a whole, an original work of authorship. For the purposes
|
| 61 |
+
of this License, Derivative Works shall not include works that remain
|
| 62 |
+
separable from, or merely link (or bind by name) to the interfaces of,
|
| 63 |
+
the Work and Derivative Works thereof.
|
| 64 |
+
|
| 65 |
+
"Contribution" shall mean any work of authorship, including
|
| 66 |
+
the original version of the Work and any modifications or additions
|
| 67 |
+
to that Work or Derivative Works thereof, that is intentionally
|
| 68 |
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
| 69 |
+
or by an individual or Legal Entity authorized to submit on behalf of
|
| 70 |
+
the copyright owner. For the purposes of this definition, "submitted"
|
| 71 |
+
means any form of electronic, verbal, or written communication sent
|
| 72 |
+
to the Licensor or its representatives, including but not limited to
|
| 73 |
+
communication on electronic mailing lists, source code control systems,
|
| 74 |
+
and issue tracking systems that are managed by, or on behalf of, the
|
| 75 |
+
Licensor for the purpose of discussing and improving the Work, but
|
| 76 |
+
excluding communication that is conspicuously marked or otherwise
|
| 77 |
+
designated in writing by the copyright owner as "Not a Contribution."
|
| 78 |
+
|
| 79 |
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
| 80 |
+
on behalf of whom a Contribution has been received by Licensor and
|
| 81 |
+
subsequently incorporated within the Work.
|
| 82 |
+
|
| 83 |
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
| 84 |
+
this License, each Contributor hereby grants to You a perpetual,
|
| 85 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
| 86 |
+
copyright license to reproduce, prepare Derivative Works of,
|
| 87 |
+
publicly display, publicly perform, sublicense, and distribute the
|
| 88 |
+
Work and such Derivative Works in Source or Object form.
|
| 89 |
+
|
| 90 |
+
3. Grant of Patent License. Subject to the terms and conditions of
|
| 91 |
+
this License, each Contributor hereby grants to You a perpetual,
|
| 92 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
| 93 |
+
(except as stated in this section) patent license to make, have made,
|
| 94 |
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
| 95 |
+
where such license applies only to those patent claims licensable
|
| 96 |
+
by such Contributor that are necessarily infringed by their
|
| 97 |
+
Contribution(s) alone or by combination of their Contribution(s)
|
| 98 |
+
with the Work to which such Contribution(s) was submitted. If You
|
| 99 |
+
institute patent litigation against any entity (including a
|
| 100 |
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
| 101 |
+
or a Contribution incorporated within the Work constitutes direct
|
| 102 |
+
or contributory patent infringement, then any patent licenses
|
| 103 |
+
granted to You under this License for that Work shall terminate
|
| 104 |
+
as of the date such litigation is filed.
|
| 105 |
+
|
| 106 |
+
4. Redistribution. You may reproduce and distribute copies of the
|
| 107 |
+
Work or Derivative Works thereof in any medium, with or without
|
| 108 |
+
modifications, and in Source or Object form, provided that You
|
| 109 |
+
meet the following conditions:
|
| 110 |
+
|
| 111 |
+
(a) You must give any other recipients of the Work or
|
| 112 |
+
Derivative Works a copy of this License; and
|
| 113 |
+
|
| 114 |
+
(b) You must cause any modified files to carry prominent notices
|
| 115 |
+
stating that You changed the files; and
|
| 116 |
+
|
| 117 |
+
(c) You must retain, in the Source form of any Derivative Works
|
| 118 |
+
that You distribute, all copyright, patent, trademark, and
|
| 119 |
+
attribution notices from the Source form of the Work,
|
| 120 |
+
excluding those notices that do not pertain to any part of
|
| 121 |
+
the Derivative Works; and
|
| 122 |
+
|
| 123 |
+
(d) If the Work includes a "NOTICE" text file as part of its
|
| 124 |
+
distribution, then any Derivative Works that You distribute must
|
| 125 |
+
include a readable copy of the attribution notices contained
|
| 126 |
+
within such NOTICE file, excluding those notices that do not
|
| 127 |
+
pertain to any part of the Derivative Works, in at least one
|
| 128 |
+
of the following places: within a NOTICE text file distributed
|
| 129 |
+
as part of the Derivative Works; within the Source form or
|
| 130 |
+
documentation, if provided along with the Derivative Works; or,
|
| 131 |
+
within a display generated by the Derivative Works, if and
|
| 132 |
+
wherever such third-party notices normally appear. The contents
|
| 133 |
+
of the NOTICE file are for informational purposes only and
|
| 134 |
+
do not modify the License. You may add Your own attribution
|
| 135 |
+
notices within Derivative Works that You distribute, alongside
|
| 136 |
+
or as an addendum to the NOTICE text from the Work, provided
|
| 137 |
+
that such additional attribution notices cannot be construed
|
| 138 |
+
as modifying the License.
|
| 139 |
+
|
| 140 |
+
You may add Your own copyright statement to Your modifications and
|
| 141 |
+
may provide additional or different license terms and conditions
|
| 142 |
+
for use, reproduction, or distribution of Your modifications, or
|
| 143 |
+
for any such Derivative Works as a whole, provided Your use,
|
| 144 |
+
reproduction, and distribution of the Work otherwise complies with
|
| 145 |
+
the conditions stated in this License.
|
| 146 |
+
|
| 147 |
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
| 148 |
+
any Contribution intentionally submitted for inclusion in the Work
|
| 149 |
+
by You to the Licensor shall be under the terms and conditions of
|
| 150 |
+
this License, without any additional terms or conditions.
|
| 151 |
+
Notwithstanding the above, nothing herein shall supersede or modify
|
| 152 |
+
the terms of any separate license agreement you may have executed
|
| 153 |
+
with Licensor regarding such Contributions.
|
| 154 |
+
|
| 155 |
+
6. Trademarks. This License does not grant permission to use the trade
|
| 156 |
+
names, trademarks, service marks, or product names of the Licensor,
|
| 157 |
+
except as required for reasonable and customary use in describing the
|
| 158 |
+
origin of the Work and reproducing the content of the NOTICE file.
|
| 159 |
+
|
| 160 |
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
| 161 |
+
agreed to in writing, Licensor provides the Work (and each
|
| 162 |
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
| 163 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
| 164 |
+
implied, including, without limitation, any warranties or conditions
|
| 165 |
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
| 166 |
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
| 167 |
+
appropriateness of using or redistributing the Work and assume any
|
| 168 |
+
risks associated with Your exercise of permissions under this License.
|
| 169 |
+
|
| 170 |
+
8. Limitation of Liability. In no event and under no legal theory,
|
| 171 |
+
whether in tort (including negligence), contract, or otherwise,
|
| 172 |
+
unless required by applicable law (such as deliberate and grossly
|
| 173 |
+
negligent acts) or agreed to in writing, shall any Contributor be
|
| 174 |
+
liable to You for damages, including any direct, indirect, special,
|
| 175 |
+
incidental, or consequential damages of any character arising as a
|
| 176 |
+
result of this License or out of the use or inability to use the
|
| 177 |
+
Work (including but not limited to damages for loss of goodwill,
|
| 178 |
+
work stoppage, computer failure or malfunction, or any and all
|
| 179 |
+
other commercial damages or losses), even if such Contributor
|
| 180 |
+
has been advised of the possibility of such damages.
|
| 181 |
+
|
| 182 |
+
9. Accepting Warranty or Additional Liability. While redistributing
|
| 183 |
+
the Work or Derivative Works thereof, You may choose to offer,
|
| 184 |
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
| 185 |
+
or other liability obligations and/or rights consistent with this
|
| 186 |
+
License. However, in accepting such obligations, You may act only
|
| 187 |
+
on Your own behalf and on Your sole responsibility, not on behalf
|
| 188 |
+
of any other Contributor, and only if You agree to indemnify,
|
| 189 |
+
defend, and hold each Contributor harmless for any liability
|
| 190 |
+
incurred by, or claims asserted against, such Contributor by reason
|
| 191 |
+
of your accepting any such warranty or additional liability.
|
| 192 |
+
|
| 193 |
+
END OF TERMS AND CONDITIONS
|
| 194 |
+
|
| 195 |
+
|
| 196 |
+
|
| 197 |
+
MHR Apache License
|
| 198 |
+
Version 2.0, January 2004
|
| 199 |
+
http://www.apache.org/licenses/
|
| 200 |
+
|
| 201 |
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
| 202 |
+
|
| 203 |
+
1. Definitions.
|
| 204 |
+
|
| 205 |
+
"License" shall mean the terms and conditions for use, reproduction,
|
| 206 |
+
and distribution as defined by Sections 1 through 9 of this document.
|
| 207 |
+
|
| 208 |
+
"Licensor" shall mean the copyright owner or entity authorized by
|
| 209 |
+
the copyright owner that is granting the License.
|
| 210 |
+
|
| 211 |
+
"Legal Entity" shall mean the union of the acting entity and all
|
| 212 |
+
other entities that control, are controlled by, or are under common
|
| 213 |
+
control with that entity. For the purposes of this definition,
|
| 214 |
+
"control" means (i) the power, direct or indirect, to cause the
|
| 215 |
+
direction or management of such entity, whether by contract or
|
| 216 |
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
| 217 |
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
| 218 |
+
|
| 219 |
+
"You" (or "Your") shall mean an individual or Legal Entity
|
| 220 |
+
exercising permissions granted by this License.
|
| 221 |
+
|
| 222 |
+
"Source" form shall mean the preferred form for making modifications,
|
| 223 |
+
including but not limited to software source code, documentation
|
| 224 |
+
source, and configuration files.
|
| 225 |
+
|
| 226 |
+
"Object" form shall mean any form resulting from mechanical
|
| 227 |
+
transformation or translation of a Source form, including but
|
| 228 |
+
not limited to compiled object code, generated documentation,
|
| 229 |
+
and conversions to other media types.
|
| 230 |
+
|
| 231 |
+
"Work" shall mean the work of authorship, whether in Source or
|
| 232 |
+
Object form, made available under the License, as indicated by a
|
| 233 |
+
copyright notice that is included in or attached to the work
|
| 234 |
+
(an example is provided in the Appendix below).
|
| 235 |
+
|
| 236 |
+
"Derivative Works" shall mean any work, whether in Source or Object
|
| 237 |
+
form, that is based on (or derived from) the Work and for which the
|
| 238 |
+
editorial revisions, annotations, elaborations, or other modifications
|
| 239 |
+
represent, as a whole, an original work of authorship. For the purposes
|
| 240 |
+
of this License, Derivative Works shall not include works that remain
|
| 241 |
+
separable from, or merely link (or bind by name) to the interfaces of,
|
| 242 |
+
the Work and Derivative Works thereof.
|
| 243 |
+
|
| 244 |
+
"Contribution" shall mean any work of authorship, including
|
| 245 |
+
the original version of the Work and any modifications or additions
|
| 246 |
+
to that Work or Derivative Works thereof, that is intentionally
|
| 247 |
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
| 248 |
+
or by an individual or Legal Entity authorized to submit on behalf of
|
| 249 |
+
the copyright owner. For the purposes of this definition, "submitted"
|
| 250 |
+
means any form of electronic, verbal, or written communication sent
|
| 251 |
+
to the Licensor or its representatives, including but not limited to
|
| 252 |
+
communication on electronic mailing lists, source code control systems,
|
| 253 |
+
and issue tracking systems that are managed by, or on behalf of, the
|
| 254 |
+
Licensor for the purpose of discussing and improving the Work, but
|
| 255 |
+
excluding communication that is conspicuously marked or otherwise
|
| 256 |
+
designated in writing by the copyright owner as "Not a Contribution."
|
| 257 |
+
|
| 258 |
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
| 259 |
+
on behalf of whom a Contribution has been received by Licensor and
|
| 260 |
+
subsequently incorporated within the Work.
|
| 261 |
+
|
| 262 |
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
| 263 |
+
this License, each Contributor hereby grants to You a perpetual,
|
| 264 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
| 265 |
+
copyright license to reproduce, prepare Derivative Works of,
|
| 266 |
+
publicly display, publicly perform, sublicense, and distribute the
|
| 267 |
+
Work and such Derivative Works in Source or Object form.
|
| 268 |
+
|
| 269 |
+
3. Grant of Patent License. Subject to the terms and conditions of
|
| 270 |
+
this License, each Contributor hereby grants to You a perpetual,
|
| 271 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
| 272 |
+
(except as stated in this section) patent license to make, have made,
|
| 273 |
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
| 274 |
+
where such license applies only to those patent claims licensable
|
| 275 |
+
by such Contributor that are necessarily infringed by their
|
| 276 |
+
Contribution(s) alone or by combination of their Contribution(s)
|
| 277 |
+
with the Work to which such Contribution(s) was submitted. If You
|
| 278 |
+
institute patent litigation against any entity (including a
|
| 279 |
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
| 280 |
+
or a Contribution incorporated within the Work constitutes direct
|
| 281 |
+
or contributory patent infringement, then any patent licenses
|
| 282 |
+
granted to You under this License for that Work shall terminate
|
| 283 |
+
as of the date such litigation is filed.
|
| 284 |
+
|
| 285 |
+
4. Redistribution. You may reproduce and distribute copies of the
|
| 286 |
+
Work or Derivative Works thereof in any medium, with or without
|
| 287 |
+
modifications, and in Source or Object form, provided that You
|
| 288 |
+
meet the following conditions:
|
| 289 |
+
|
| 290 |
+
(a) You must give any other recipients of the Work or
|
| 291 |
+
Derivative Works a copy of this License; and
|
| 292 |
+
|
| 293 |
+
(b) You must cause any modified files to carry prominent notices
|
| 294 |
+
stating that You changed the files; and
|
| 295 |
+
|
| 296 |
+
(c) You must retain, in the Source form of any Derivative Works
|
| 297 |
+
that You distribute, all copyright, patent, trademark, and
|
| 298 |
+
attribution notices from the Source form of the Work,
|
| 299 |
+
excluding those notices that do not pertain to any part of
|
| 300 |
+
the Derivative Works; and
|
| 301 |
+
|
| 302 |
+
(d) If the Work includes a "NOTICE" text file as part of its
|
| 303 |
+
distribution, then any Derivative Works that You distribute must
|
| 304 |
+
include a readable copy of the attribution notices contained
|
| 305 |
+
within such NOTICE file, excluding those notices that do not
|
| 306 |
+
pertain to any part of the Derivative Works, in at least one
|
| 307 |
+
of the following places: within a NOTICE text file distributed
|
| 308 |
+
as part of the Derivative Works; within the Source form or
|
| 309 |
+
documentation, if provided along with the Derivative Works; or,
|
| 310 |
+
within a display generated by the Derivative Works, if and
|
| 311 |
+
wherever such third-party notices normally appear. The contents
|
| 312 |
+
of the NOTICE file are for informational purposes only and
|
| 313 |
+
do not modify the License. You may add Your own attribution
|
| 314 |
+
notices within Derivative Works that You distribute, alongside
|
| 315 |
+
or as an addendum to the NOTICE text from the Work, provided
|
| 316 |
+
that such additional attribution notices cannot be construed
|
| 317 |
+
as modifying the License.
|
| 318 |
+
|
| 319 |
+
You may add Your own copyright statement to Your modifications and
|
| 320 |
+
may provide additional or different license terms and conditions
|
| 321 |
+
for use, reproduction, or distribution of Your modifications, or
|
| 322 |
+
for any such Derivative Works as a whole, provided Your use,
|
| 323 |
+
reproduction, and distribution of the Work otherwise complies with
|
| 324 |
+
the conditions stated in this License.
|
| 325 |
+
|
| 326 |
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
| 327 |
+
any Contribution intentionally submitted for inclusion in the Work
|
| 328 |
+
by You to the Licensor shall be under the terms and conditions of
|
| 329 |
+
this License, without any additional terms or conditions.
|
| 330 |
+
Notwithstanding the above, nothing herein shall supersede or modify
|
| 331 |
+
the terms of any separate license agreement you may have executed
|
| 332 |
+
with Licensor regarding such Contributions.
|
| 333 |
+
|
| 334 |
+
6. Trademarks. This License does not grant permission to use the trade
|
| 335 |
+
names, trademarks, service marks, or product names of the Licensor,
|
| 336 |
+
except as required for reasonable and customary use in describing the
|
| 337 |
+
origin of the Work and reproducing the content of the NOTICE file.
|
| 338 |
+
|
| 339 |
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
| 340 |
+
agreed to in writing, Licensor provides the Work (and each
|
| 341 |
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
| 342 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
| 343 |
+
implied, including, without limitation, any warranties or conditions
|
| 344 |
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
| 345 |
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
| 346 |
+
appropriateness of using or redistributing the Work and assume any
|
| 347 |
+
risks associated with Your exercise of permissions under this License.
|
| 348 |
+
|
| 349 |
+
8. Limitation of Liability. In no event and under no legal theory,
|
| 350 |
+
whether in tort (including negligence), contract, or otherwise,
|
| 351 |
+
unless required by applicable law (such as deliberate and grossly
|
| 352 |
+
negligent acts) or agreed to in writing, shall any Contributor be
|
| 353 |
+
liable to You for damages, including any direct, indirect, special,
|
| 354 |
+
incidental, or consequential damages of any character arising as a
|
| 355 |
+
result of this License or out of the use or inability to use the
|
| 356 |
+
Work (including but not limited to damages for loss of goodwill,
|
| 357 |
+
work stoppage, computer failure or malfunction, or any and all
|
| 358 |
+
other commercial damages or losses), even if such Contributor
|
| 359 |
+
has been advised of the possibility of such damages.
|
| 360 |
+
|
| 361 |
+
9. Accepting Warranty or Additional Liability. While redistributing
|
| 362 |
+
the Work or Derivative Works thereof, You may choose to offer,
|
| 363 |
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
| 364 |
+
or other liability obligations and/or rights consistent with this
|
| 365 |
+
License. However, in accepting such obligations, You may act only
|
| 366 |
+
on Your own behalf and on Your sole responsibility, not on behalf
|
| 367 |
+
of any other Contributor, and only if You agree to indemnify,
|
| 368 |
+
defend, and hold each Contributor harmless for any liability
|
| 369 |
+
incurred by, or claims asserted against, such Contributor by reason
|
| 370 |
+
of your accepting any such warranty or additional liability.
|
| 371 |
+
|
| 372 |
+
END OF TERMS AND CONDITIONS
|
| 373 |
+
|
| 374 |
+
APPENDIX: How to apply the Apache License to your work.
|
| 375 |
+
|
| 376 |
+
To apply the Apache License to your work, attach the following
|
| 377 |
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
| 378 |
+
replaced with your own identifying information. (Don't include
|
| 379 |
+
the brackets!) The text should be enclosed in the appropriate
|
| 380 |
+
comment syntax for the file format. We also recommend that a
|
| 381 |
+
file or class name and description of purpose be included on the
|
| 382 |
+
same "printed page" as the copyright notice for easier
|
| 383 |
+
identification within third-party archives.
|
| 384 |
+
|
| 385 |
+
Copyright [yyyy] [name of copyright owner]
|
| 386 |
+
|
| 387 |
+
Licensed under the Apache License, Version 2.0 (the "License");
|
| 388 |
+
you may not use this file except in compliance with the License.
|
| 389 |
+
You may obtain a copy of the License at
|
| 390 |
+
|
| 391 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
| 392 |
+
|
| 393 |
+
Unless required by applicable law or agreed to in writing, software
|
| 394 |
+
distributed under the License is distributed on an "AS IS" BASIS,
|
| 395 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 396 |
+
See the License for the specific language governing permissions and
|
| 397 |
+
limitations under the License.
|
| 398 |
+
|
| 399 |
+
|
CONTRIBUTING.MD
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# How to Contribute
|
| 2 |
+
|
| 3 |
+
## Code Reviews
|
| 4 |
+
|
| 5 |
+
All submissions require review. We use GitHub pull requests for this purpose. Consult
|
| 6 |
+
[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more information on using pull requests.
|
| 7 |
+
|
| 8 |
+
## Signing Your Work
|
| 9 |
+
|
| 10 |
+
* We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
|
| 11 |
+
|
| 12 |
+
* Any contribution which contains commits that are not Signed-Off will not be accepted.
|
| 13 |
+
|
| 14 |
+
* To sign off on a commit you simply use the `--signoff` (or `-s`) option when committing your changes:
|
| 15 |
+
```bash
|
| 16 |
+
$ git commit -s -m "Add cool feature."
|
| 17 |
+
```
|
| 18 |
+
This will append the following to your commit message:
|
| 19 |
+
```
|
| 20 |
+
Signed-off-by: Your Name <your@email.com>
|
| 21 |
+
```
|
| 22 |
+
|
| 23 |
+
* Full text of the DCO:
|
| 24 |
+
|
| 25 |
+
```
|
| 26 |
+
Developer Certificate of Origin
|
| 27 |
+
Version 1.1
|
| 28 |
+
|
| 29 |
+
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
|
| 30 |
+
1 Letterman Drive
|
| 31 |
+
Suite D4700
|
| 32 |
+
San Francisco, CA, 94129
|
| 33 |
+
|
| 34 |
+
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
|
| 35 |
+
```
|
| 36 |
+
|
| 37 |
+
```
|
| 38 |
+
Developer's Certificate of Origin 1.1
|
| 39 |
+
|
| 40 |
+
By making a contribution to this project, I certify that:
|
| 41 |
+
|
| 42 |
+
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
|
| 43 |
+
|
| 44 |
+
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
|
| 45 |
+
|
| 46 |
+
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
|
| 47 |
+
|
| 48 |
+
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.
|
| 49 |
+
```
|
Dockerfile
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Public image (no NGC login). For NGC: nvcr.io/nvidia/pytorch:24.07-py3
|
| 2 |
+
FROM pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel
|
| 3 |
+
|
| 4 |
+
# Avoid some interactive prompts + make pip quieter/reproducible-ish
|
| 5 |
+
ENV DEBIAN_FRONTEND=noninteractive \
|
| 6 |
+
PIP_DISABLE_PIP_VERSION_CHECK=1 \
|
| 7 |
+
PYTHONDONTWRITEBYTECODE=1 \
|
| 8 |
+
PYTHONUNBUFFERED=1
|
| 9 |
+
|
| 10 |
+
# Where your code will live inside the container
|
| 11 |
+
WORKDIR /workspace
|
| 12 |
+
|
| 13 |
+
# System deps (EGL/OpenGL + X11/xvfb for pyrender/pyglet in headless Docker)
|
| 14 |
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 15 |
+
git curl ca-certificates \
|
| 16 |
+
cmake build-essential \
|
| 17 |
+
gosu \
|
| 18 |
+
libegl1 libgles2 libgl1-mesa-glx libglvnd0 libglx0 \
|
| 19 |
+
xvfb libx11-6 libxrender1 libxkbcommon0 \
|
| 20 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 21 |
+
|
| 22 |
+
# Some base images ship a broken `/usr/local/bin/cmake` shim (from a partial pip install),
|
| 23 |
+
# which shadows `/usr/bin/cmake` and breaks builds that invoke `cmake`
|
| 24 |
+
# Prefer the system cmake.
|
| 25 |
+
RUN rm -f /usr/local/bin/cmake || true
|
| 26 |
+
|
| 27 |
+
# Install Python deps first (better layer caching)
|
| 28 |
+
COPY assets /workspace/assets
|
| 29 |
+
COPY soma /workspace/soma
|
| 30 |
+
COPY tools /workspace/tools
|
| 31 |
+
COPY setup.cfg /workspace/setup.cfg
|
| 32 |
+
COPY setup.py /workspace/setup.py
|
| 33 |
+
COPY README.md /workspace/README.md
|
| 34 |
+
COPY pyproject.toml /workspace/pyproject.toml
|
| 35 |
+
|
| 36 |
+
# chumpy's build assumes 'pip' is in the build env; install it without isolation first
|
| 37 |
+
# chumpy uses inspect.getargspec (removed in Python 3.11); patch before any import
|
| 38 |
+
RUN --mount=type=cache,target=/root/.cache/pip \
|
| 39 |
+
python -m pip install --upgrade pip setuptools wheel \
|
| 40 |
+
&& python -m pip install --no-build-isolation chumpy \
|
| 41 |
+
&& find /opt/conda/lib/python3.11/site-packages/chumpy -name "*.py" -exec sed -i 's/inspect\.getargspec/inspect.getfullargspec/g' {} \; \
|
| 42 |
+
&& python -m pip install .[smpl,anny]
|
| 43 |
+
|
| 44 |
+
RUN python -m pip install pyrender tqdm pyyaml imageio[ffmpeg]
|
| 45 |
+
|
| 46 |
+
# Use the docker-entrypoint script, to allow the docker to run as the actual user instead of root
|
| 47 |
+
COPY tools/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
|
| 48 |
+
RUN chmod +x /usr/local/bin/docker-entrypoint
|
| 49 |
+
|
| 50 |
+
# Default command (change to your entrypoint if you have one)
|
| 51 |
+
ENTRYPOINT ["docker-entrypoint"]
|
| 52 |
+
CMD ["bash"]
|
| 53 |
+
|
LICENSE
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Apache License
|
| 2 |
+
Version 2.0, January 2004
|
| 3 |
+
http://www.apache.org/licenses/
|
| 4 |
+
|
| 5 |
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
| 6 |
+
|
| 7 |
+
1. Definitions.
|
| 8 |
+
|
| 9 |
+
"License" shall mean the terms and conditions for use, reproduction,
|
| 10 |
+
and distribution as defined by Sections 1 through 9 of this document.
|
| 11 |
+
|
| 12 |
+
"Licensor" shall mean the copyright owner or entity authorized by
|
| 13 |
+
the copyright owner that is granting the License.
|
| 14 |
+
|
| 15 |
+
"Legal Entity" shall mean the union of the acting entity and all
|
| 16 |
+
other entities that control, are controlled by, or are under common
|
| 17 |
+
control with that entity. For the purposes of this definition,
|
| 18 |
+
"control" means (i) the power, direct or indirect, to cause the
|
| 19 |
+
direction or management of such entity, whether by contract or
|
| 20 |
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
| 21 |
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
| 22 |
+
|
| 23 |
+
"You" (or "Your") shall mean an individual or Legal Entity
|
| 24 |
+
exercising permissions granted by this License.
|
| 25 |
+
|
| 26 |
+
"Source" form shall mean the preferred form for making modifications,
|
| 27 |
+
including but not limited to software source code, documentation
|
| 28 |
+
source, and configuration files.
|
| 29 |
+
|
| 30 |
+
"Object" form shall mean any form resulting from mechanical
|
| 31 |
+
transformation or translation of a Source form, including but
|
| 32 |
+
not limited to compiled object code, generated documentation,
|
| 33 |
+
and conversions to other media types.
|
| 34 |
+
|
| 35 |
+
"Work" shall mean the work of authorship, whether in Source or
|
| 36 |
+
Object form, made available under the License, as indicated by a
|
| 37 |
+
copyright notice that is included in or attached to the work
|
| 38 |
+
(an example is provided in the Appendix below).
|
| 39 |
+
|
| 40 |
+
"Derivative Works" shall mean any work, whether in Source or Object
|
| 41 |
+
form, that is based on (or derived from) the Work and for which the
|
| 42 |
+
editorial revisions, annotations, elaborations, or other modifications
|
| 43 |
+
represent, as a whole, an original work of authorship. For the purposes
|
| 44 |
+
of this License, Derivative Works shall not include works that remain
|
| 45 |
+
separable from, or merely link (or bind by name) to the interfaces of,
|
| 46 |
+
the Work and Derivative Works thereof.
|
| 47 |
+
|
| 48 |
+
"Contribution" shall mean any work of authorship, including
|
| 49 |
+
the original version of the Work and any modifications or additions
|
| 50 |
+
to that Work or Derivative Works thereof, that is intentionally
|
| 51 |
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
| 52 |
+
or by an individual or Legal Entity authorized to submit on behalf of
|
| 53 |
+
the copyright owner. For the purposes of this definition, "submitted"
|
| 54 |
+
means any form of electronic, verbal, or written communication sent
|
| 55 |
+
to the Licensor or its representatives, including but not limited to
|
| 56 |
+
communication on electronic mailing lists, source code control systems,
|
| 57 |
+
and issue tracking systems that are managed by, or on behalf of, the
|
| 58 |
+
Licensor for the purpose of discussing and improving the Work, but
|
| 59 |
+
excluding communication that is conspicuously marked or otherwise
|
| 60 |
+
designated in writing by the copyright owner as "Not a Contribution."
|
| 61 |
+
|
| 62 |
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
| 63 |
+
on behalf of whom a Contribution has been received by Licensor and
|
| 64 |
+
subsequently incorporated within the Work.
|
| 65 |
+
|
| 66 |
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
| 67 |
+
this License, each Contributor hereby grants to You a perpetual,
|
| 68 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
| 69 |
+
copyright license to reproduce, prepare Derivative Works of,
|
| 70 |
+
publicly display, publicly perform, sublicense, and distribute the
|
| 71 |
+
Work and such Derivative Works in Source or Object form.
|
| 72 |
+
|
| 73 |
+
3. Grant of Patent License. Subject to the terms and conditions of
|
| 74 |
+
this License, each Contributor hereby grants to You a perpetual,
|
| 75 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
| 76 |
+
(except as stated in this section) patent license to make, have made,
|
| 77 |
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
| 78 |
+
where such license applies only to those patent claims licensable
|
| 79 |
+
by such Contributor that are necessarily infringed by their
|
| 80 |
+
Contribution(s) alone or by combination of their Contribution(s)
|
| 81 |
+
with the Work to which such Contribution(s) was submitted. If You
|
| 82 |
+
institute patent litigation against any entity (including a
|
| 83 |
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
| 84 |
+
or a Contribution incorporated within the Work constitutes direct
|
| 85 |
+
or contributory patent infringement, then any patent licenses
|
| 86 |
+
granted to You under this License for that Work shall terminate
|
| 87 |
+
as of the date such litigation is filed.
|
| 88 |
+
|
| 89 |
+
4. Redistribution. You may reproduce and distribute copies of the
|
| 90 |
+
Work or Derivative Works thereof in any medium, with or without
|
| 91 |
+
modifications, and in Source or Object form, provided that You
|
| 92 |
+
meet the following conditions:
|
| 93 |
+
|
| 94 |
+
(a) You must give any other recipients of the Work or
|
| 95 |
+
Derivative Works a copy of this License; and
|
| 96 |
+
|
| 97 |
+
(b) You must cause any modified files to carry prominent notices
|
| 98 |
+
stating that You changed the files; and
|
| 99 |
+
|
| 100 |
+
(c) You must retain, in the Source form of any Derivative Works
|
| 101 |
+
that You distribute, all copyright, patent, trademark, and
|
| 102 |
+
attribution notices from the Source form of the Work,
|
| 103 |
+
excluding those notices that do not pertain to any part of
|
| 104 |
+
the Derivative Works; and
|
| 105 |
+
|
| 106 |
+
(d) If the Work includes a "NOTICE" text file as part of its
|
| 107 |
+
distribution, then any Derivative Works that You distribute must
|
| 108 |
+
include a readable copy of the attribution notices contained
|
| 109 |
+
within such NOTICE file, excluding those notices that do not
|
| 110 |
+
pertain to any part of the Derivative Works, in at least one
|
| 111 |
+
of the following places: within a NOTICE text file distributed
|
| 112 |
+
as part of the Derivative Works; within the Source form or
|
| 113 |
+
documentation, if provided along with the Derivative Works; or,
|
| 114 |
+
within a display generated by the Derivative Works, if and
|
| 115 |
+
wherever such third-party notices normally appear. The contents
|
| 116 |
+
of the NOTICE file are for informational purposes only and
|
| 117 |
+
do not modify the License. You may add Your own attribution
|
| 118 |
+
notices within Derivative Works that You distribute, alongside
|
| 119 |
+
or as an addendum to the NOTICE text from the Work, provided
|
| 120 |
+
that such additional attribution notices cannot be construed
|
| 121 |
+
as modifying the License.
|
| 122 |
+
|
| 123 |
+
You may add Your own copyright statement to Your modifications and
|
| 124 |
+
may provide additional or different license terms and conditions
|
| 125 |
+
for use, reproduction, or distribution of Your modifications, or
|
| 126 |
+
for any such Derivative Works as a whole, provided Your use,
|
| 127 |
+
reproduction, and distribution of the Work otherwise complies with
|
| 128 |
+
the conditions stated in this License.
|
| 129 |
+
|
| 130 |
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
| 131 |
+
any Contribution intentionally submitted for inclusion in the Work
|
| 132 |
+
by You to the Licensor shall be under the terms and conditions of
|
| 133 |
+
this License, without any additional terms or conditions.
|
| 134 |
+
Notwithstanding the above, nothing herein shall supersede or modify
|
| 135 |
+
the terms of any separate license agreement you may have executed
|
| 136 |
+
with Licensor regarding such Contributions.
|
| 137 |
+
|
| 138 |
+
6. Trademarks. This License does not grant permission to use the trade
|
| 139 |
+
names, trademarks, service marks, or product names of the Licensor,
|
| 140 |
+
except as required for reasonable and customary use in describing the
|
| 141 |
+
origin of the Work and reproducing the content of the NOTICE file.
|
| 142 |
+
|
| 143 |
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
| 144 |
+
agreed to in writing, Licensor provides the Work (and each
|
| 145 |
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
| 146 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
| 147 |
+
implied, including, without limitation, any warranties or conditions
|
| 148 |
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
| 149 |
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
| 150 |
+
appropriateness of using or redistributing the Work and assume any
|
| 151 |
+
risks associated with Your exercise of permissions under this License.
|
| 152 |
+
|
| 153 |
+
8. Limitation of Liability. In no event and under no legal theory,
|
| 154 |
+
whether in tort (including negligence), contract, or otherwise,
|
| 155 |
+
unless required by applicable law (such as deliberate and grossly
|
| 156 |
+
negligent acts) or agreed to in writing, shall any Contributor be
|
| 157 |
+
liable to You for damages, including any direct, indirect, special,
|
| 158 |
+
incidental, or consequential damages of any character arising as a
|
| 159 |
+
result of this License or out of the use or inability to use the
|
| 160 |
+
Work (including but not limited to damages for loss of goodwill,
|
| 161 |
+
work stoppage, computer failure or malfunction, or any and all
|
| 162 |
+
other commercial damages or losses), even if such Contributor
|
| 163 |
+
has been advised of the possibility of such damages.
|
| 164 |
+
|
| 165 |
+
9. Accepting Warranty or Additional Liability. While redistributing
|
| 166 |
+
the Work or Derivative Works thereof, You may choose to offer,
|
| 167 |
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
| 168 |
+
or other liability obligations and/or rights consistent with this
|
| 169 |
+
License. However, in accepting such obligations, You may act only
|
| 170 |
+
on Your own behalf and on Your sole responsibility, not on behalf
|
| 171 |
+
of any other Contributor, and only if You agree to indemnify,
|
| 172 |
+
defend, and hold each Contributor harmless for any liability
|
| 173 |
+
incurred by, or claims asserted against, such Contributor by reason
|
| 174 |
+
of your accepting any such warranty or additional liability.
|
| 175 |
+
|
| 176 |
+
END OF TERMS AND CONDITIONS
|
| 177 |
+
|
| 178 |
+
APPENDIX: How to apply the Apache License to your work.
|
| 179 |
+
|
| 180 |
+
To apply the Apache License to your work, attach the following
|
| 181 |
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
| 182 |
+
replaced with your own identifying information. (Don't include
|
| 183 |
+
the brackets!) The text should be enclosed in the appropriate
|
| 184 |
+
comment syntax for the file format. We also recommend that a
|
| 185 |
+
file or class name and description of purpose be included on the
|
| 186 |
+
same "printed page" as the copyright notice for easier
|
| 187 |
+
identification within third-party archives.
|
| 188 |
+
|
| 189 |
+
Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
| 190 |
+
|
| 191 |
+
Licensed under the Apache License, Version 2.0 (the "License");
|
| 192 |
+
you may not use this file except in compliance with the License.
|
| 193 |
+
You may obtain a copy of the License at
|
| 194 |
+
|
| 195 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
| 196 |
+
|
| 197 |
+
Unless required by applicable law or agreed to in writing, software
|
| 198 |
+
distributed under the License is distributed on an "AS IS" BASIS,
|
| 199 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 200 |
+
See the License for the specific language governing permissions and
|
| 201 |
+
limitations under the License.
|
MANIFEST.in
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
include LICENSE
|
| 2 |
+
include README.md
|
| 3 |
+
recursive-include soma *.py
|
| 4 |
+
prune assets
|
| 5 |
+
prune tools
|
| 6 |
+
prune tests
|
README.md
ADDED
|
@@ -0,0 +1,359 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
<p align="center">
|
| 4 |
+
<img src="./assets/images/banner.png" alt="Banner" width="100%">
|
| 5 |
+
</p>
|
| 6 |
+
|
| 7 |
+
[](https://opensource.org/licenses/Apache-2.0)
|
| 8 |
+
[](https://arxiv.org/abs/2603.16858)
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
|
| 12 |
+
Parametric human body models, including SMPL, SMPL-X, MHR, Anny, and GarmentMeasurements, are central to a wide range of tasks in human reconstruction, animation, and simulation. However, these models are inherently incompatible: each defines its own mesh topology, joint hierarchy, and parameterization, precluding seamless integration. As a result, leveraging complementary strengths across models (such as combining Anny’s age-range control with SMPL-based motion data) necessitates bespoke adapters for every model pair, hindering interoperability and limiting practical applications.
|
| 13 |
+
|
| 14 |
+
We present **SOMA**—a canonical body topology and rig that acts as a universal pivot for all supported parametric human body models. Instead of replacing existing models, **SOMA unifies them** by mapping their diverse rest shapes onto a single, shared representation. This approach allows any supported identity model to be animated with a unified animation pipeline, eliminating the need for custom adapters or model-specific retargeting. With SOMA, you can mix and match identity sources and pose data at inference time without additional engineering. The entire pipeline remains end-to-end differentiable and GPU-accelerated via NVIDIA Warp.
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
See SOMA in action:
|
| 18 |
+
|
| 19 |
+
<p align="center">
|
| 20 |
+
<img src="assets/images/soma-in-action.gif" alt="SOMA in Action" width="1000"/>
|
| 21 |
+
</p>
|
| 22 |
+
|
| 23 |
+
## Supported Identity Models
|
| 24 |
+
|
| 25 |
+
SOMA currently supports five distinct identity models, each offering unique capabilities:
|
| 26 |
+
|
| 27 |
+
1. [MHR](https://github.com/facebookresearch/MHR): The default identity model in SOMA, providing high-fidelity body shape representation.
|
| 28 |
+
2. [Anny](https://github.com/naver/anny): Particularly well-suited for modeling children, broadening applicability to younger subjects.
|
| 29 |
+
3. [SMPL-Family](https://smpl.is.tue.mpg.de/): Supports both SMPL and SMPL-X models, enabling interoperability with established standards in the field.
|
| 30 |
+
4. **SOMA-shape**: A proprietary PCA-based model developed as part of this project, designed to offer SMPL-like functionality with 128 PCA coefficients for identity representation.
|
| 31 |
+
5. [GarmentMeasurement](https://github.com/mbotsch/GarmentMeasurements): A PCA-based identity model trained on the CAESARS dataset, suitable for specialized use cases involving garment fitting and measurement.
|
| 32 |
+
|
| 33 |
+
We welcome community contributions to extend support for additional identity models.
|
| 34 |
+
|
| 35 |
+
## Unified Pose Correctives (Beta)
|
| 36 |
+
Thanks to SOMA's unified framework, pose-dependent corrective deformations that mitigate LBS artifacts are seamlessly available for all supported identity models, including those that do not provide correctives themselves (e.g., Anny and GarmentMeasurement).
|
| 37 |
+
<p align="center">
|
| 38 |
+
<img src="assets/images/soma_correctives.gif" alt="SOMA Pose Correctives" width="800"/>
|
| 39 |
+
</p>
|
| 40 |
+
|
| 41 |
+
## Related projects that already support SOMA
|
| 42 |
+
SOMA is part of a larger effort to enable human animation, robotics, physical AI, and other applications. We also provide the following works with SOMA support:
|
| 43 |
+
|
| 44 |
+
* [GEM](https://github.com/NVlabs/GEM-X) - SOMA-based video pose estimation.
|
| 45 |
+
* [Kimodo](https://github.com/nv-tlabs/kimodo) - SOMA-based controllable text-to-motion generation method for **human(oid)s**.
|
| 46 |
+
* [BONES-SEED Dataset](https://huggingface.co/datasets/bones-studio/seed) - a large scale human(oid) motion capture dataset in SOMA format. Also provides retargeted G1 data.
|
| 47 |
+
* [SOMA Retargeter](https://github.com/NVIDIA/soma-retargeter) - for SOMA to G1 retargeting.
|
| 48 |
+
* [ProtoMotion](https://github.com/NVlabs/ProtoMotions) - simulation and learning framework for training physically simulated digital human(oid)s
|
| 49 |
+
* [GEAR SONIC](https://github.com/NVlabs/GR00T-WholeBodyControl) - a humanoid behavior foundation model. (coming soon)
|
| 50 |
+
|
| 51 |
+
## Installation
|
| 52 |
+
|
| 53 |
+
### Install from PyPI
|
| 54 |
+
|
| 55 |
+
```bash
|
| 56 |
+
pip install py-soma-x
|
| 57 |
+
```
|
| 58 |
+
|
| 59 |
+
With optional extras:
|
| 60 |
+
```bash
|
| 61 |
+
pip install "py-soma-x[smpl]" # SMPL/SMPL-X support
|
| 62 |
+
pip install "py-soma-x[anny]" # Anny support
|
| 63 |
+
```
|
| 64 |
+
|
| 65 |
+
Assets are automatically downloaded from HuggingFace on first use (cached in `~/.cache/huggingface/hub/`).
|
| 66 |
+
|
| 67 |
+
> **Note:** SMPL/SMPL-X requires `chumpy`, which must be installed separately:
|
| 68 |
+
> ```bash
|
| 69 |
+
> pip install --no-build-isolation chumpy
|
| 70 |
+
> ```
|
| 71 |
+
> If that fails, install from source:
|
| 72 |
+
> ```bash
|
| 73 |
+
> pip install --no-build-isolation git+https://github.com/mattloper/chumpy@580566eafc9ac68b2614b64d6f7aaa8
|
| 74 |
+
> ```
|
| 75 |
+
>
|
| 76 |
+
> SMPL/SMPL-X model files (`SMPL_NEUTRAL.pkl`, `SMPLX_NEUTRAL.npz`) require a separate license and must be downloaded from [SMPL](https://smpl.is.tue.mpg.de/) / [SMPL-X](https://smpl-x.is.tue.mpg.de/). Pass the model path explicitly:
|
| 77 |
+
> ```python
|
| 78 |
+
> soma = SOMALayer(
|
| 79 |
+
> identity_model_type="smpl",
|
| 80 |
+
> identity_model_kwargs={"model_path": "/path/to/SMPL_NEUTRAL.pkl"},
|
| 81 |
+
> )
|
| 82 |
+
> ```
|
| 83 |
+
|
| 84 |
+
<details>
|
| 85 |
+
|
| 86 |
+
<summary>Developer installation (clone with Git LFS)</summary>
|
| 87 |
+
|
| 88 |
+
### Clone with Git LFS (Required for Assets)
|
| 89 |
+
This repository uses Git LFS for large asset files (e.g., assets/Nova_neutral.npz). You must install Git LFS to download the actual data; otherwise, you will encounter file loading errors.
|
| 90 |
+
|
| 91 |
+
1. Install Git LFS (if not installed):
|
| 92 |
+
````bash
|
| 93 |
+
git lfs install
|
| 94 |
+
````
|
| 95 |
+
|
| 96 |
+
2. Clone and Pull Data:
|
| 97 |
+
```bash
|
| 98 |
+
git clone https://github.com/NVlabs/SOMA-X.git
|
| 99 |
+
cd SOMA-X
|
| 100 |
+
git lfs pull
|
| 101 |
+
```
|
| 102 |
+
_(If you already cloned the repo, just run `git lfs pull` to fetch the missing assets.)_
|
| 103 |
+
|
| 104 |
+
### Prepare Python environment
|
| 105 |
+
|
| 106 |
+
**Linux:**
|
| 107 |
+
```bash
|
| 108 |
+
pip install uv
|
| 109 |
+
uv venv .venv
|
| 110 |
+
source .venv/bin/activate # or: . .venv/bin/activate
|
| 111 |
+
# Install PyTorch with CUDA — adjust the version (cu124, cu126, cu130, …)
|
| 112 |
+
# to match your GPU and driver. See https://pytorch.org/get-started/locally/
|
| 113 |
+
uv pip install torch --index-url https://download.pytorch.org/whl/cu124
|
| 114 |
+
uv pip install ".[dev]"
|
| 115 |
+
```
|
| 116 |
+
|
| 117 |
+
**Windows (PowerShell):**
|
| 118 |
+
```powershell
|
| 119 |
+
pip install uv
|
| 120 |
+
uv venv .venv
|
| 121 |
+
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser # one-time setup
|
| 122 |
+
.\.venv\Scripts\activate
|
| 123 |
+
# Install PyTorch with CUDA — adjust the version (cu124, cu126, cu130, …)
|
| 124 |
+
# to match your GPU and driver. See https://pytorch.org/get-started/locally/
|
| 125 |
+
uv pip install torch --index-url https://download.pytorch.org/whl/cu124
|
| 126 |
+
uv pip install ".[dev]"
|
| 127 |
+
```
|
| 128 |
+
Then run tests: `pytest tests/ -v`.
|
| 129 |
+
|
| 130 |
+
### Optional Dependencies
|
| 131 |
+
|
| 132 |
+
**For SMPL and SMPLX support:**
|
| 133 |
+
|
| 134 |
+
```bash
|
| 135 |
+
uv pip install ".[smpl]"
|
| 136 |
+
pip install --no-build-isolation chumpy
|
| 137 |
+
```
|
| 138 |
+
_NOTE: `chumpy` (required by `smplx` at runtime) has a broken PyPI build and must be installed with `--no-build-isolation`. If that fails, install from source: `pip install --no-build-isolation git+https://github.com/mattloper/chumpy@580566eafc9ac68b2614b64d6f7aaa8`_
|
| 139 |
+
|
| 140 |
+
You also need to download `SMPL_NEUTRAL.pkl` or `SMPLX_NEUTRAL.npz` separately:
|
| 141 |
+
1. Visit the [SMPL](https://smpl.is.tue.mpg.de/) or [SMPLX](https://smpl-x.is.tue.mpg.de/) website.
|
| 142 |
+
2. Register and download the SMPL (v1.1.0 for Python) or [SMPL-X](https://download.is.tue.mpg.de/download.php?domain=smplx&sfile=smplx_lockedhead_20230207.zip) (with removed head bun) model files.
|
| 143 |
+
3. Extract and copy `SMPL_NEUTRAL.pkl` to `./assets/SMPL/SMPL_NEUTRAL.pkl` and `SMPLX_NEUTRAL.npz` to `./assets/SMPLX/SMPLX_NEUTRAL.npz`.
|
| 144 |
+
|
| 145 |
+
**Note:** The SMPL models are subject to a separate license and cannot be redistributed with this repository.
|
| 146 |
+
|
| 147 |
+
**For [Anny](https://github.com/naver/anny) support:**
|
| 148 |
+
```bash
|
| 149 |
+
uv pip install ".[anny]"
|
| 150 |
+
```
|
| 151 |
+
|
| 152 |
+
**For [GarmentMeasurement](https://github.com/mbotsch/GarmentMeasurements) support:**
|
| 153 |
+
```bash
|
| 154 |
+
git clone https://github.com/mbotsch/GarmentMeasurements
|
| 155 |
+
python tools/convert_gm_pca_to_npz.py ./GarmentMeasurements/data/pca/point.pca assets/GarmentMeasurements/point.npz
|
| 156 |
+
rm -rf GarmentMeasurements
|
| 157 |
+
```
|
| 158 |
+
</details>
|
| 159 |
+
|
| 160 |
+
|
| 161 |
+
## Usage
|
| 162 |
+
|
| 163 |
+
```python
|
| 164 |
+
import torch
|
| 165 |
+
from soma import SOMALayer
|
| 166 |
+
|
| 167 |
+
# Initialize the layer — assets are auto-downloaded from HuggingFace
|
| 168 |
+
soma = SOMALayer(
|
| 169 |
+
identity_model_type="mhr", # or "soma" "smpl", "smplx", "anny", "garment"
|
| 170 |
+
device="cuda"
|
| 171 |
+
)
|
| 172 |
+
|
| 173 |
+
# Or use a local assets directory
|
| 174 |
+
# soma = SOMALayer(data_root="./assets", identity_model_type="mhr", device="cuda")
|
| 175 |
+
|
| 176 |
+
# Forward pass
|
| 177 |
+
# poses: (B, num_joints, 3)
|
| 178 |
+
# identity: (B, num_coeffs)
|
| 179 |
+
# scale_params: (B, num_scales) - Optional, depending on model type (required for MHR)
|
| 180 |
+
output = soma(poses, identity, scale_params=scale_params)
|
| 181 |
+
vertices = output["vertices"]
|
| 182 |
+
```
|
| 183 |
+
|
| 184 |
+
## Running the Demo
|
| 185 |
+
|
| 186 |
+
Install the demo environment (includes pyrender, tqdm, imageio with ffmpeg for video output):
|
| 187 |
+
|
| 188 |
+
```bash
|
| 189 |
+
uv pip install ".[demo]"
|
| 190 |
+
```
|
| 191 |
+
|
| 192 |
+
If you want to run all identity models (soma, mhr, anny, smpl, smplx, garment), install the full set and use the same build steps as for tests:
|
| 193 |
+
|
| 194 |
+
```bash
|
| 195 |
+
uv pip install -e ".[all,demo]"
|
| 196 |
+
pip install --no-build-isolation chumpy
|
| 197 |
+
```
|
| 198 |
+
|
| 199 |
+
Then run the demo script:
|
| 200 |
+
|
| 201 |
+
```bash
|
| 202 |
+
# Run all models (default: soma, mhr, anny, smpl, smplx, garment)
|
| 203 |
+
python tools/demo_soma_vis.py --data-root ./assets --output-dir ./out
|
| 204 |
+
|
| 205 |
+
# Run specific models only
|
| 206 |
+
python tools/demo_soma_vis.py --data-root ./assets --output-dir ./out --identity-model-type soma, mhr, smplx
|
| 207 |
+
|
| 208 |
+
# Run a single model
|
| 209 |
+
python tools/demo_soma_vis.py --data-root ./assets --output-dir ./out --identity-model-type anny
|
| 210 |
+
|
| 211 |
+
# Run MHR with random shapes
|
| 212 |
+
python tools/demo_soma_vis.py --data-root ./assets --output-dir ./out --identity-model-type mhr --random-shape
|
| 213 |
+
```
|
| 214 |
+
|
| 215 |
+
This will generate example animation videos for the selected models in the `out/` directory.
|
| 216 |
+
|
| 217 |
+
**Demo Options:**
|
| 218 |
+
- `--identity-model-type`: Comma-separated list of models to use (options: `soma`, `mhr`, `anny`, `smplx`, `smpl`, `garment`, default: `soma,mhr,anny,smpl,smplx,garment`)
|
| 219 |
+
- `--random-shape`: Generate random body shapes instead of using neutral shapes
|
| 220 |
+
- `--motion-file`: Path to custom motion file (default: `assets/ROM5.npy`)
|
| 221 |
+
- `--image-size`: Render resolution (default: 1920)
|
| 222 |
+
- `--device`: Device to use (default: `cuda:0`)
|
| 223 |
+
|
| 224 |
+
## Conversion of pose parameters from other models to SOMA
|
| 225 |
+
We provide conversion tools for converting from SMPL and MHR pose parameters to SOMA.
|
| 226 |
+
Both tools use `PoseInversion.fit()`, which supports two complementary solvers — both initialized by a single-pass skeleton transfer fit for fast convergence:
|
| 227 |
+
|
| 228 |
+
- **Analytical** (default): iterative inverse-LBS with Newton-Schulz refinement. Extremely fast (~1200 FPS) with comparable accuracy.
|
| 229 |
+
- **Autograd FK**: 6D rotation optimization by backpropagating FK + LBS. Slow but controllable (e.g. extra weights on extremities).
|
| 230 |
+
|
| 231 |
+
The two can be combined: the analytical solve warm-starts autograd refinement — best of both worlds.
|
| 232 |
+
|
| 233 |
+
### SMPL to SOMA
|
| 234 |
+
|
| 235 |
+
<img src="assets/images/smpl2soma.gif" alt="SMPL to SOMA conversion" width="400"/>
|
| 236 |
+
|
| 237 |
+
```bash
|
| 238 |
+
# Convert SMPL animation to SOMA (renders comparison video)
|
| 239 |
+
python -m tools.smpl2soma
|
| 240 |
+
|
| 241 |
+
# Export SOMA poses as .npz
|
| 242 |
+
python -m tools.smpl2soma --output-npz out/smpl_soma.npz
|
| 243 |
+
|
| 244 |
+
# Tune analytical iterations (defaults: --body-iters 2 --full-iters 1)
|
| 245 |
+
python -m tools.smpl2soma --body-iters 3 --full-iters 1 --batch-size 64
|
| 246 |
+
|
| 247 |
+
# Analytical + autograd FK refinement (best accuracy)
|
| 248 |
+
python -m tools.smpl2soma --body-iters 2 --full-iters 1 --autograd-iters 10
|
| 249 |
+
```
|
| 250 |
+
|
| 251 |
+
**Benchmark** (402 SMPL frames, RTX 5000 Ada):
|
| 252 |
+
|
| 253 |
+
| Method | Speed | Mean | Median | Max |
|
| 254 |
+
|---|---|---|---|---|
|
| 255 |
+
| Analytical (body=2, full=1) — **default** | **1279 FPS** | 0.65 cm | 0.52 cm | 17.8 cm |
|
| 256 |
+
| Autograd FK (10 iters, lr=5e-3) | 199 FPS | 1.04 cm | 0.97 cm | 18.1 cm |
|
| 257 |
+
| Autograd FK (100 iters) | 18 FPS | 0.49 cm | 0.39 cm | 16.8 cm |
|
| 258 |
+
|
| 259 |
+
### MHR to SOMA
|
| 260 |
+
|
| 261 |
+
<img src="assets/images/mhr2soma.gif" alt="MHR to SOMA conversion" width="400"/>
|
| 262 |
+
|
| 263 |
+
For [SAM 3D Body](https://huggingface.co/datasets/facebook/sam-3d-body-dataset) or similar MHR-format data.
|
| 264 |
+
|
| 265 |
+
```bash
|
| 266 |
+
# Convert a directory of SAM 3D Body parquet files
|
| 267 |
+
python -m tools.mhr2soma --input path/to/sam_3d_body/data/coco_train
|
| 268 |
+
|
| 269 |
+
# Convert and export as .npz
|
| 270 |
+
python -m tools.mhr2soma --input path/to/parquet_dir --output-npz out/mhr_soma.npz
|
| 271 |
+
|
| 272 |
+
# Tune analytical iterations (defaults: --body-iters 2 --full-iters 1)
|
| 273 |
+
python -m tools.mhr2soma --input path/to/parquet_dir --max-samples 100 --body-iters 3
|
| 274 |
+
|
| 275 |
+
# Analytical + autograd FK refinement (best accuracy)
|
| 276 |
+
python -m tools.mhr2soma --input path/to/parquet_dir --autograd-iters 10
|
| 277 |
+
```
|
| 278 |
+
|
| 279 |
+
**Benchmark** (200 SAM 3D Body samples, RTX 5000 Ada):
|
| 280 |
+
|
| 281 |
+
| Method | Speed | Mean | Median | Max |
|
| 282 |
+
|---|---|---|---|---|
|
| 283 |
+
| Analytical (body=2, full=1) — **default** | **342 FPS** | 0.61 cm | 0.34 cm | 14.8 cm |
|
| 284 |
+
| Autograd FK (10 iters, lr=5e-3) | 161 FPS | 1.05 cm | 0.76 cm | 13.5 cm |
|
| 285 |
+
| Autograd FK (100 iters) | 16 FPS | 0.48 cm | 0.22 cm | 13.3 cm |
|
| 286 |
+
|
| 287 |
+
> **Note:** The `mhr2soma` tool's end-to-end throughput (~50 samp/s) is dominated by MHR identity model evaluation, not SOMA inversion. The MHR TorchScript model is called twice per sample (once to produce the rest shape, once for posed vertices). The SOMA inversion itself runs at 342 FPS.
|
| 288 |
+
|
| 289 |
+
### AMASS dataset to SOMA
|
| 290 |
+
|
| 291 |
+
Convert [AMASS](https://amass.is.tue.mpg.de/) motion sequences (SMPL format `.npz` files) to SOMA.
|
| 292 |
+
|
| 293 |
+
> **Prerequisites:** Download the AMASS dataset from [amass.is.tue.mpg.de](https://amass.is.tue.mpg.de/) and place `SMPL_NEUTRAL.pkl` in `assets/SMPL/` (see SMPL installation above).
|
| 294 |
+
|
| 295 |
+
```bash
|
| 296 |
+
# Single file — converts and renders a comparison video
|
| 297 |
+
python -m tools.convert_amass_to_soma --input path/to/amass_sequence.npz
|
| 298 |
+
|
| 299 |
+
# Single file — export .npz only (skip rendering)
|
| 300 |
+
python -m tools.convert_amass_to_soma --input path/to/amass_sequence.npz --output-npz out/soma.npz --no-render
|
| 301 |
+
|
| 302 |
+
# Batch convert entire dataset (mirrors folder structure)
|
| 303 |
+
python -m tools.convert_amass_to_soma --input-dir /data/amass/ --output-dir out/amass_soma/
|
| 304 |
+
|
| 305 |
+
# Shuffle file order (useful when running multiple workers in parallel)
|
| 306 |
+
python -m tools.convert_amass_to_soma --input-dir /data/amass/ --output-dir out/amass_soma/ --shuffle
|
| 307 |
+
|
| 308 |
+
# Tune analytical iterations
|
| 309 |
+
python -m tools.convert_amass_to_soma --input path/to/seq.npz --body-iters 3 --full-iters 1
|
| 310 |
+
|
| 311 |
+
# Analytical + autograd FK refinement (best accuracy)
|
| 312 |
+
python -m tools.convert_amass_to_soma --input path/to/seq.npz --autograd-iters 10
|
| 313 |
+
```
|
| 314 |
+
|
| 315 |
+
The output `.npz` files contain:
|
| 316 |
+
- `poses`: `(N, J, 3)` rotation vectors per joint
|
| 317 |
+
- `root_translation`: `(N, 3)` root position in meters
|
| 318 |
+
- `joint_names`: list of SOMA joint names
|
| 319 |
+
- `per_vertex_error`: `(N, V)` reconstruction error per vertex
|
| 320 |
+
- `identity_coeffs` / `scale_params`: identity parameters used
|
| 321 |
+
|
| 322 |
+
|
| 323 |
+
**Benchmark** (A100):
|
| 324 |
+
|
| 325 |
+
| Method | Speed | Mean | Median | Max |
|
| 326 |
+
|---|---|---|---|---|
|
| 327 |
+
| Analytical (body=2, full=1) — **default** | **17393 FPS** | 0.53 cm | 0.32 cm | 8.8 cm |
|
| 328 |
+
| Autograd FK (10 iters, lr=5e-3) | 435 FPS | 0.78 cm | 0.64 cm | 8.8 cm |
|
| 329 |
+
|
| 330 |
+
|
| 331 |
+
|
| 332 |
+
|
| 333 |
+
|
| 334 |
+
## Citation
|
| 335 |
+
If you use this code in your work, please cite:
|
| 336 |
+
|
| 337 |
+
```bibtex
|
| 338 |
+
@article{soma2026,
|
| 339 |
+
title={SOMA: Unifying Parametric Human Body Models},
|
| 340 |
+
author={Jun Saito and Jiefeng Li and Michael de Ruyter and Miguel Guerrero and Edy Lim and Ehsan Hassani and Roger Blanco Ribera and Hyejin Moon and Magdalena Dadela and Marco Di Lucca and Qiao Wang and Xueting Li and Jan Kautz and Simon Yuen and Umar Iqbal},
|
| 341 |
+
eprint={2603.16858},
|
| 342 |
+
archivePrefix={arXiv},
|
| 343 |
+
year={2026},
|
| 344 |
+
url={https://arxiv.org/abs/2603.16858},
|
| 345 |
+
}
|
| 346 |
+
```
|
| 347 |
+
|
| 348 |
+
## Acknowledgements
|
| 349 |
+
- [SMPL-Body](https://smpl.is.tue.mpg.de/bodylicense.html) was used to create an interpolator between SMPL and SOMA mesh topologies, courtesy of the Max Planck Institute for Intelligent Systems.
|
| 350 |
+
- [MHR](https://github.com/facebookresearch/MHR) was used to learn the pose corrective model.
|
| 351 |
+
- [Anny](https://github.com/naver/anny) for [WARP](https://github.com/NVIDIA/warp)-based sparse linear blend skinning.
|
| 352 |
+
- [GarmentMeasurement](https://github.com/mbotsch/GarmentMeasurements) was used to augment the data in our shape model.
|
| 353 |
+
|
| 354 |
+
|
| 355 |
+
## License
|
| 356 |
+
|
| 357 |
+
This codebase is licensed under [Apache-2.0](LICENSE).
|
| 358 |
+
|
| 359 |
+
This project will download and install additional third-party open source software projects. Review the license terms of these open source projects before use.
|
assets/Anny/SOMA_wrap.obj
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/Anny/base_body.obj
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/GarmentMeasurements/SOMA_wrap.obj
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/GarmentMeasurements/mean.obj
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/GarmentMeasurements/point.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6ae75a1ab7a8ae4f46bac503146976ba59cf918bca8aefe7320a3ed02aa2416a
|
| 3 |
+
size 8626920
|
assets/MHR/SOMA_wrap_lod1.obj
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/MHR/base_body_lod1.obj
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/MHR/base_body_lod6.obj
ADDED
|
@@ -0,0 +1,1783 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# https://github.com/mikedh/trimesh
|
| 2 |
+
v 7.00926542 157.20454407 4.41645241
|
| 3 |
+
v 7.41320992 159.93046570 3.96769547
|
| 4 |
+
v 8.02834129 161.81506348 3.51396084
|
| 5 |
+
v 7.71562672 157.14881897 2.80745554
|
| 6 |
+
v 2.11030126 151.31095886 12.09629726
|
| 7 |
+
v 2.08244991 150.21667480 8.50155163
|
| 8 |
+
v 4.67009115 154.78413391 -0.80085707
|
| 9 |
+
v 1.26834023 158.97560120 14.50586033
|
| 10 |
+
v 5.08444548 169.42932129 -0.96812111
|
| 11 |
+
v 0.73630416 162.67111206 12.77306366
|
| 12 |
+
v 4.38978386 151.81127930 7.02104950
|
| 13 |
+
v 7.42488432 165.76206970 5.89370823
|
| 14 |
+
v 1.28428912 160.66194153 13.17580795
|
| 15 |
+
v 2.58244324 159.34757996 12.63513947
|
| 16 |
+
v 5.12824392 154.77626038 10.57160378
|
| 17 |
+
v 5.28234386 157.85272217 11.22543621
|
| 18 |
+
v 1.93807149 161.97993469 11.87946701
|
| 19 |
+
v 1.63153052 162.19120789 11.83549595
|
| 20 |
+
v 6.00734854 162.74040222 9.80867672
|
| 21 |
+
v 4.77642155 162.19696045 10.99352360
|
| 22 |
+
v 4.40829849 162.57217407 11.66743469
|
| 23 |
+
v 3.07648659 161.69796753 12.12496471
|
| 24 |
+
v 4.62093592 161.95024109 11.15440464
|
| 25 |
+
v 5.81209898 165.44323730 -2.53650331
|
| 26 |
+
v 3.49701285 164.01362610 12.52966499
|
| 27 |
+
v 3.16701603 162.88748169 12.33050060
|
| 28 |
+
v 1.36003184 163.81082153 13.00516319
|
| 29 |
+
v 3.11280966 169.97669983 9.96627903
|
| 30 |
+
v 5.71054411 163.32601929 10.57106400
|
| 31 |
+
v 5.43079376 161.67053223 -2.87125802
|
| 32 |
+
v 1.20193863 156.13609314 13.97113419
|
| 33 |
+
v 2.45243263 155.73193359 13.00902176
|
| 34 |
+
v 2.83656073 155.20169067 12.58699703
|
| 35 |
+
v 2.21061826 154.88403320 13.03202820
|
| 36 |
+
v 1.28727126 154.95089722 13.82441044
|
| 37 |
+
v 5.49733210 168.78497314 8.26215935
|
| 38 |
+
v 4.39457035 165.79716492 11.39317703
|
| 39 |
+
v 8.61304665 160.12678528 0.85173720
|
| 40 |
+
v 8.80191803 162.00326538 1.83837879
|
| 41 |
+
v 4.03664637 152.70640564 10.80151939
|
| 42 |
+
v 6.63973808 158.32962036 8.77689648
|
| 43 |
+
v 2.06216979 162.56201172 11.92606831
|
| 44 |
+
v 6.00563431 154.01350403 5.86400270
|
| 45 |
+
v 3.41539955 171.83744812 3.98621845
|
| 46 |
+
v 6.64694214 162.63639832 8.47797489
|
| 47 |
+
v 8.31393909 158.34347534 1.66540956
|
| 48 |
+
v 0.90657699 155.76998901 13.70701122
|
| 49 |
+
v 2.14602518 155.54119873 12.88399887
|
| 50 |
+
v 2.49527669 155.32948303 12.68269920
|
| 51 |
+
v 6.08448648 164.35888672 9.44290638
|
| 52 |
+
v 2.06042123 165.75898743 12.84942818
|
| 53 |
+
v 1.69611406 158.19329834 13.07868004
|
| 54 |
+
v 7.19837141 159.85931396 2.35688782
|
| 55 |
+
v 7.26350307 156.78773499 3.69919276
|
| 56 |
+
v 4.03413010 151.59210205 -2.67911196
|
| 57 |
+
v 5.13297701 148.05513000 4.37623549
|
| 58 |
+
v 2.65578270 146.21435547 6.00741529
|
| 59 |
+
v 5.99915314 150.13146973 2.00101423
|
| 60 |
+
v 14.35209465 126.69233704 -8.56925392
|
| 61 |
+
v 12.94260311 138.07189941 8.24148369
|
| 62 |
+
v 15.15691566 145.82058716 -6.43584061
|
| 63 |
+
v 6.80274773 136.59588623 11.39419937
|
| 64 |
+
v 16.17856026 146.54795837 -0.04233695
|
| 65 |
+
v 21.64597511 142.46154785 2.46649885
|
| 66 |
+
v 22.46770287 142.53205872 -4.64267445
|
| 67 |
+
v 15.79642391 137.45022583 -10.67056274
|
| 68 |
+
v 8.80438328 148.07191467 -7.13171291
|
| 69 |
+
v 16.77529526 125.29798126 -3.84707928
|
| 70 |
+
v 16.75297737 129.15855408 8.44582748
|
| 71 |
+
v 9.48873997 126.96875000 15.31827259
|
| 72 |
+
v 5.75988293 111.06945038 -9.28915501
|
| 73 |
+
v 11.70995903 110.61968994 -7.97347927
|
| 74 |
+
v 12.35213280 97.66931915 -11.33522415
|
| 75 |
+
v 15.89435101 110.66032410 -3.53993177
|
| 76 |
+
v 17.18901443 98.21879578 -5.21805000
|
| 77 |
+
v 15.53003693 110.58561707 6.93215084
|
| 78 |
+
v 9.51782990 110.30020142 13.98818970
|
| 79 |
+
v 18.02158737 98.28098297 5.98351765
|
| 80 |
+
v 5.52895164 98.07816315 -13.66227531
|
| 81 |
+
v 9.77538681 97.33262634 12.62118530
|
| 82 |
+
v 8.79389763 135.12405396 -12.59514809
|
| 83 |
+
v 12.20609856 146.17858887 1.18389344
|
| 84 |
+
v 20.30633736 133.94830322 3.98550510
|
| 85 |
+
v 19.51426888 130.97050476 -2.16005421
|
| 86 |
+
v 20.04141426 132.08071899 -7.58880663
|
| 87 |
+
v 27.01042938 137.74952698 -3.96306348
|
| 88 |
+
v 25.44848251 136.98837280 2.38623476
|
| 89 |
+
v 19.13416862 85.68416595 6.40200472
|
| 90 |
+
v 19.67422295 84.57188416 -2.90073276
|
| 91 |
+
v 12.35614204 80.94895935 -8.23965645
|
| 92 |
+
v 2.91570807 79.21669006 -5.02264214
|
| 93 |
+
v 1.34856105 79.28565979 4.71136236
|
| 94 |
+
v 9.56175613 83.78540039 12.06651688
|
| 95 |
+
v 53.43836212 113.61102295 14.08658981
|
| 96 |
+
v 56.56444550 109.66576385 12.22203445
|
| 97 |
+
v 56.71775055 110.59195709 13.92386341
|
| 98 |
+
v 55.86066437 111.32291412 16.13799667
|
| 99 |
+
v 54.03722763 111.40134430 17.46838379
|
| 100 |
+
v 52.77238846 108.22270203 14.24533463
|
| 101 |
+
v 56.95050812 105.08840942 13.27689743
|
| 102 |
+
v 57.67414856 106.43202972 12.62006950
|
| 103 |
+
v 58.45194244 107.60689545 13.95723343
|
| 104 |
+
v 58.50717163 108.70809174 15.74811077
|
| 105 |
+
v 57.91786194 109.48098755 17.99660683
|
| 106 |
+
v 56.28570175 109.44392395 19.70902443
|
| 107 |
+
v 57.15665436 105.17353821 15.16427803
|
| 108 |
+
v 51.97931290 107.24462891 20.26030350
|
| 109 |
+
v 51.80212784 108.60663605 20.58830833
|
| 110 |
+
v 57.16942596 105.88970947 16.84202194
|
| 111 |
+
v 53.95196152 107.64468384 21.10037422
|
| 112 |
+
v 56.47528458 106.53314209 18.65262032
|
| 113 |
+
v 59.02365875 103.96133423 14.40133667
|
| 114 |
+
v 59.76410294 105.15591431 15.67636490
|
| 115 |
+
v 60.13077545 106.06590271 17.77570343
|
| 116 |
+
v 59.30287933 106.89019775 19.73707962
|
| 117 |
+
v 58.47375870 107.41496277 21.42365456
|
| 118 |
+
v 58.00305557 106.40937042 21.65460587
|
| 119 |
+
v 59.81988525 105.26615906 18.08451080
|
| 120 |
+
v 59.30020142 104.55081177 16.12774277
|
| 121 |
+
v 58.86619186 105.76465607 20.03188324
|
| 122 |
+
v 61.26793289 103.77033997 19.75878143
|
| 123 |
+
v 61.54691696 105.11570740 20.93947029
|
| 124 |
+
v 60.79926300 104.29452515 21.06893730
|
| 125 |
+
v 63.39978790 103.22711182 22.36280441
|
| 126 |
+
v 62.87060547 102.51445007 22.41769409
|
| 127 |
+
v 63.23643875 102.15755463 21.23368263
|
| 128 |
+
v 64.97113037 101.30489349 22.33739281
|
| 129 |
+
v 65.29236603 101.76620483 22.45171356
|
| 130 |
+
v 64.53121185 101.47343445 22.99083328
|
| 131 |
+
v 64.82241058 101.97389221 23.16209793
|
| 132 |
+
v 60.18143463 105.85148621 22.89770508
|
| 133 |
+
v 59.45738220 104.97747803 22.69704819
|
| 134 |
+
v 60.15821075 104.67700195 21.59041405
|
| 135 |
+
v 61.50219727 104.50748444 24.02244568
|
| 136 |
+
v 60.97847366 103.81912994 24.00730896
|
| 137 |
+
v 61.53809738 103.40454102 22.93847084
|
| 138 |
+
v 62.93658829 102.61989594 24.03377724
|
| 139 |
+
v 63.33475113 103.10246277 24.17765808
|
| 140 |
+
v 62.52485657 102.84911346 24.62942886
|
| 141 |
+
v 62.83255386 103.32019806 24.80877304
|
| 142 |
+
v 62.07540894 104.09508514 18.33690262
|
| 143 |
+
v 61.65749741 102.81876373 17.40263748
|
| 144 |
+
v 61.41816711 103.36863708 18.70213509
|
| 145 |
+
v 63.60524750 102.36944580 19.27437592
|
| 146 |
+
v 63.02436066 101.78334808 19.54994774
|
| 147 |
+
v 63.29376221 101.36763763 18.27829742
|
| 148 |
+
v 64.32782745 100.60639191 19.98765373
|
| 149 |
+
v 64.57946777 100.31163025 19.31448174
|
| 150 |
+
v 65.01018524 100.65655518 19.31124496
|
| 151 |
+
v 64.78156281 100.94828796 20.01457596
|
| 152 |
+
v 60.63112640 103.32516479 16.27017021
|
| 153 |
+
v 61.11441040 103.89047241 15.77290726
|
| 154 |
+
v 60.30725479 102.73503113 15.13293648
|
| 155 |
+
v 62.33058167 102.48978424 16.28523636
|
| 156 |
+
v 61.87433624 101.99139404 16.80174637
|
| 157 |
+
v 61.59629822 101.41039276 15.73289013
|
| 158 |
+
v 62.92537689 101.05876923 17.17155266
|
| 159 |
+
v 63.00787354 100.52017975 16.42248917
|
| 160 |
+
v 63.41054916 100.77281189 16.32980537
|
| 161 |
+
v 63.45371246 101.08361816 16.98884010
|
| 162 |
+
v 51.91946793 107.56434631 22.58216667
|
| 163 |
+
v 52.06513596 106.61811066 22.25206566
|
| 164 |
+
v 53.64317703 107.07995605 22.89180374
|
| 165 |
+
v 52.97402573 106.43168640 25.20468330
|
| 166 |
+
v 52.84350967 107.09536743 25.35215950
|
| 167 |
+
v 51.74992752 106.70360565 24.98805237
|
| 168 |
+
v 51.95806885 106.14369202 24.95171928
|
| 169 |
+
v 62.05607224 104.26313019 23.12063980
|
| 170 |
+
v 60.80032349 105.62020874 21.84347534
|
| 171 |
+
v 63.78952026 103.02033997 21.34733200
|
| 172 |
+
v 61.98308563 104.71447754 19.79071999
|
| 173 |
+
v 63.76453781 102.05308533 18.38547897
|
| 174 |
+
v 62.21471024 103.65002441 17.25656128
|
| 175 |
+
v 62.24136734 102.03684998 15.52336597
|
| 176 |
+
v 61.07238007 103.50170898 14.89530563
|
| 177 |
+
v 59.70740128 104.62441254 14.11748981
|
| 178 |
+
v 53.26042557 108.97376251 20.98348999
|
| 179 |
+
v 53.07146454 108.03335571 22.85389900
|
| 180 |
+
v 55.96366882 107.84006500 20.38205147
|
| 181 |
+
v 53.82003784 110.03176880 19.60144615
|
| 182 |
+
v 54.75553894 111.43631744 10.27265263
|
| 183 |
+
v 37.58525848 122.15583801 -3.15860033
|
| 184 |
+
v 35.33766937 119.17197418 -3.25094461
|
| 185 |
+
v 33.02293015 117.81751251 0.62045729
|
| 186 |
+
v 34.42385864 121.81600952 3.44744921
|
| 187 |
+
v 37.31094742 124.95536804 3.13135076
|
| 188 |
+
v 53.18741989 110.09970856 10.08683777
|
| 189 |
+
v 51.20825577 110.38431549 12.15847588
|
| 190 |
+
v 51.07786942 112.63738251 14.47809792
|
| 191 |
+
v 54.71590805 112.94965363 12.05955601
|
| 192 |
+
v 38.82189178 124.76553345 -0.67842650
|
| 193 |
+
v 51.84812927 107.58807373 18.57875061
|
| 194 |
+
v 51.85197830 108.03208160 16.34364510
|
| 195 |
+
v 54.60863495 107.17626953 15.64114857
|
| 196 |
+
v 54.45499420 107.78453064 20.28181839
|
| 197 |
+
v 51.60578156 109.51104736 18.77284431
|
| 198 |
+
v 54.05800629 106.95270538 17.70573997
|
| 199 |
+
v 51.45625305 110.56800842 15.79239464
|
| 200 |
+
v 52.09320831 109.30036163 13.16573429
|
| 201 |
+
v 54.30587769 108.15345001 11.30984020
|
| 202 |
+
v 15.00088978 7.14629459 -5.54620218
|
| 203 |
+
v 9.03719330 47.50702286 -2.63771057
|
| 204 |
+
v 17.88500786 13.49072647 -2.54369426
|
| 205 |
+
v 14.73390579 47.50540161 0.90244901
|
| 206 |
+
v 20.61874962 12.55002594 -6.89265060
|
| 207 |
+
v 18.72999001 49.17055130 -2.46849298
|
| 208 |
+
v 21.35470772 7.81221914 -6.98164749
|
| 209 |
+
v 19.18989372 12.15617466 -9.35404110
|
| 210 |
+
v 17.53762817 11.84721184 -10.53265381
|
| 211 |
+
v 15.58839226 11.78482437 -9.03133297
|
| 212 |
+
v 19.56419945 6.97279739 -9.74922180
|
| 213 |
+
v 17.66975594 6.52705383 -11.21733475
|
| 214 |
+
v 16.08925629 6.45059776 -9.08887482
|
| 215 |
+
v 18.15110397 9.55401611 -1.58166409
|
| 216 |
+
v 8.76815796 49.08409882 -7.92628336
|
| 217 |
+
v 13.84381676 51.16987610 -10.21704197
|
| 218 |
+
v 18.42738914 50.87158966 -8.04082680
|
| 219 |
+
v 14.98722458 12.19365406 -6.03913069
|
| 220 |
+
v 16.69658089 0.33653906 7.80596924
|
| 221 |
+
v 24.51317596 0.29144299 4.49537039
|
| 222 |
+
v 24.20194244 2.64405346 4.43404484
|
| 223 |
+
v 16.16193962 2.84213448 7.62981892
|
| 224 |
+
v 20.09386444 3.82277584 5.98266697
|
| 225 |
+
v 24.59157562 1.04880416 7.93115950
|
| 226 |
+
v 24.74430084 0.28742486 7.50674534
|
| 227 |
+
v 21.31675339 0.39067560 11.41250801
|
| 228 |
+
v 16.97012520 1.84469330 12.31910133
|
| 229 |
+
v 17.05047607 0.58545154 12.15754128
|
| 230 |
+
v 20.54434967 -0.01465580 5.28890514
|
| 231 |
+
v 21.00399208 1.92971742 11.18031502
|
| 232 |
+
v 21.73746681 0.59838712 -7.31756735
|
| 233 |
+
v 16.11884689 1.15694809 -5.89527798
|
| 234 |
+
v 16.33346367 0.98196977 -9.84180546
|
| 235 |
+
v 18.29343224 0.73253381 -11.43710518
|
| 236 |
+
v 20.76914215 0.79364657 -10.17305946
|
| 237 |
+
v 19.42973900 0.02291853 -6.83368015
|
| 238 |
+
v 32.10017014 131.04632568 -2.38571525
|
| 239 |
+
v 31.01911163 130.60102844 1.93718469
|
| 240 |
+
v 27.65014267 127.51773834 3.50330138
|
| 241 |
+
v 26.16343307 124.26586151 -1.17790401
|
| 242 |
+
v 27.70417976 125.38633728 -5.69719458
|
| 243 |
+
v 30.67440605 128.43276978 -5.88471270
|
| 244 |
+
v 46.42700195 116.35452271 3.41962433
|
| 245 |
+
v 44.31628418 113.81649780 3.38142133
|
| 246 |
+
v 42.81024933 113.25511169 6.62114334
|
| 247 |
+
v 43.24219131 116.41262817 9.25353813
|
| 248 |
+
v 45.34690475 119.01235199 8.68661404
|
| 249 |
+
v 46.87958908 118.93370056 5.79959488
|
| 250 |
+
v 0.00000000 170.48275757 10.60114002
|
| 251 |
+
v 0.00000000 165.67184448 13.08020210
|
| 252 |
+
v 0.00000040 172.58039856 3.61058927
|
| 253 |
+
v 0.00000871 170.55838013 -2.62355232
|
| 254 |
+
v 0.00001620 166.90112305 -5.04047871
|
| 255 |
+
v -0.00000822 162.30085754 -5.32399940
|
| 256 |
+
v 0.00000014 154.81781006 -3.63641596
|
| 257 |
+
v -0.00000362 151.89758301 -4.05541563
|
| 258 |
+
v -0.00002063 147.42192078 -8.22846699
|
| 259 |
+
v -0.00001856 133.96888733 -11.56155682
|
| 260 |
+
v -0.00001171 111.00953674 -8.93142128
|
| 261 |
+
v -0.00000168 98.32096863 -13.39424419
|
| 262 |
+
v -0.00000186 82.23284912 -4.15728188
|
| 263 |
+
v -0.00000179 81.19035339 5.35476017
|
| 264 |
+
v -0.00000064 87.09713745 11.81717682
|
| 265 |
+
v -0.00000435 97.31720734 15.44957733
|
| 266 |
+
v -0.00000953 110.03072357 17.39150238
|
| 267 |
+
v -0.00001127 126.99459076 15.09161568
|
| 268 |
+
v -0.00001095 135.56526184 11.96467113
|
| 269 |
+
v -0.00001510 145.56173706 6.31578255
|
| 270 |
+
v 0.00000257 149.85084534 9.16619968
|
| 271 |
+
v -0.00000007 150.89947510 12.58763409
|
| 272 |
+
v -0.00000007 154.96121216 14.19593048
|
| 273 |
+
v 0.00000016 155.75230408 13.91590786
|
| 274 |
+
v 0.00000067 156.27239990 14.35803509
|
| 275 |
+
v -0.00000035 157.99909973 14.18085766
|
| 276 |
+
v 0.00000725 158.59199524 15.29075909
|
| 277 |
+
v 0.00000004 161.38304138 14.13892555
|
| 278 |
+
v -0.00000000 162.73606873 13.20080280
|
| 279 |
+
v -0.00000002 164.05990601 13.23726082
|
| 280 |
+
v -0.00001090 119.94038391 16.05790901
|
| 281 |
+
v 8.54571724 119.34547424 13.64171982
|
| 282 |
+
v 14.25802517 119.82495880 6.85353088
|
| 283 |
+
v 14.99169731 118.90055847 -2.85887003
|
| 284 |
+
v 12.36296082 119.51426697 -7.18169165
|
| 285 |
+
v 5.95811844 121.57730103 -10.52219963
|
| 286 |
+
v -0.00001504 121.68761444 -9.88596916
|
| 287 |
+
v 5.50891161 65.75942230 -5.87026072
|
| 288 |
+
v 12.11058521 66.51130676 -8.96857834
|
| 289 |
+
v 18.25641251 67.72827911 -4.86445522
|
| 290 |
+
v 18.94192505 68.27494812 2.53187728
|
| 291 |
+
v 10.76150417 68.80754089 8.62218285
|
| 292 |
+
v 4.46946192 66.13342285 1.75856447
|
| 293 |
+
v 10.62260151 31.51332283 -6.18412971
|
| 294 |
+
v 16.19191742 31.97746277 -1.38874865
|
| 295 |
+
v 21.88733101 32.98069763 -5.19421101
|
| 296 |
+
v 20.96317863 33.25065613 -10.47307205
|
| 297 |
+
v 15.67575645 32.83581543 -12.72336483
|
| 298 |
+
v 10.92557526 32.15386200 -9.72300911
|
| 299 |
+
v 17.24796677 140.95716858 4.94616127
|
| 300 |
+
v 54.12169647 107.08302307 12.45810890
|
| 301 |
+
v 55.34896088 106.28337860 14.30641174
|
| 302 |
+
v 24.09582710 135.11126709 -8.42392159
|
| 303 |
+
v 20.60242081 139.35293579 -8.59044361
|
| 304 |
+
v -7.00926447 157.20454407 4.41645241
|
| 305 |
+
v -7.41320992 159.93046570 3.96769547
|
| 306 |
+
v -8.02834129 161.81506348 3.51396060
|
| 307 |
+
v -7.71562672 157.14881897 2.80745554
|
| 308 |
+
v -2.11030126 151.31095886 12.09629726
|
| 309 |
+
v -2.08244562 150.21667480 8.50155258
|
| 310 |
+
v -4.67009020 154.78413391 -0.80085695
|
| 311 |
+
v -1.26834023 158.97560120 14.50586033
|
| 312 |
+
v -5.08444548 169.42932129 -0.96812111
|
| 313 |
+
v -0.73630416 162.67109680 12.77306366
|
| 314 |
+
v -4.38977957 151.81127930 7.02104998
|
| 315 |
+
v -7.42488384 165.76206970 5.89370823
|
| 316 |
+
v -1.28428912 160.66194153 13.17580795
|
| 317 |
+
v -2.58244324 159.34757996 12.63513947
|
| 318 |
+
v -5.12824392 154.77626038 10.57160378
|
| 319 |
+
v -5.28234386 157.85272217 11.22543621
|
| 320 |
+
v -1.93807149 161.97993469 11.87946796
|
| 321 |
+
v -1.63153052 162.19120789 11.83549595
|
| 322 |
+
v -6.00734854 162.74040222 9.80867672
|
| 323 |
+
v -4.77642155 162.19696045 10.99352360
|
| 324 |
+
v -4.40829802 162.57218933 11.66743469
|
| 325 |
+
v -3.07648659 161.69796753 12.12496471
|
| 326 |
+
v -4.62093639 161.95024109 11.15440464
|
| 327 |
+
v -5.81209898 165.44323730 -2.53650331
|
| 328 |
+
v -3.49701285 164.01362610 12.52966499
|
| 329 |
+
v -3.16701603 162.88748169 12.33050060
|
| 330 |
+
v -1.36003196 163.81082153 13.00516415
|
| 331 |
+
v -3.11280966 169.97669983 9.96627903
|
| 332 |
+
v -5.71054411 163.32601929 10.57106400
|
| 333 |
+
v -5.43079472 161.67053223 -2.87125850
|
| 334 |
+
v -1.20193863 156.13609314 13.97113419
|
| 335 |
+
v -2.45243263 155.73193359 13.00902176
|
| 336 |
+
v -2.83656073 155.20169067 12.58699703
|
| 337 |
+
v -2.21061826 154.88403320 13.03202820
|
| 338 |
+
v -1.28727126 154.95089722 13.82441044
|
| 339 |
+
v -5.49733210 168.78497314 8.26215935
|
| 340 |
+
v -4.39457035 165.79716492 11.39317799
|
| 341 |
+
v -8.61304665 160.12678528 0.85173720
|
| 342 |
+
v -8.80191803 162.00326538 1.83837879
|
| 343 |
+
v -4.03664637 152.70640564 10.80151939
|
| 344 |
+
v -6.63973808 158.32962036 8.77689648
|
| 345 |
+
v -2.06216979 162.56201172 11.92606831
|
| 346 |
+
v -6.00563240 154.01350403 5.86400270
|
| 347 |
+
v -3.41539955 171.83744812 3.98621845
|
| 348 |
+
v -6.64694214 162.63641357 8.47797585
|
| 349 |
+
v -8.31393909 158.34347534 1.66540956
|
| 350 |
+
v -0.90657699 155.76997375 13.70701122
|
| 351 |
+
v -2.14602518 155.54118347 12.88399887
|
| 352 |
+
v -2.49527669 155.32948303 12.68269920
|
| 353 |
+
v -6.08448648 164.35888672 9.44290638
|
| 354 |
+
v -2.06042123 165.75898743 12.84942818
|
| 355 |
+
v -1.69611406 158.19328308 13.07868004
|
| 356 |
+
v -7.19837141 159.85931396 2.35688782
|
| 357 |
+
v -7.26350260 156.78773499 3.69919300
|
| 358 |
+
v -4.03413296 151.59210205 -2.67910504
|
| 359 |
+
v -5.13298321 148.05509949 4.37630606
|
| 360 |
+
v -2.65579414 146.21429443 6.00758553
|
| 361 |
+
v -5.99913502 150.13145447 2.00109291
|
| 362 |
+
v -14.35211754 126.69233704 -8.56925392
|
| 363 |
+
v -12.94261265 138.07191467 8.24147987
|
| 364 |
+
v -15.15691948 145.82058716 -6.43584299
|
| 365 |
+
v -6.80276632 136.59588623 11.39419937
|
| 366 |
+
v -16.17856598 146.54797363 -0.04233960
|
| 367 |
+
v -21.64597893 142.46156311 2.46649504
|
| 368 |
+
v -22.46770477 142.53207397 -4.64267540
|
| 369 |
+
v -15.79643345 137.45024109 -10.67056274
|
| 370 |
+
v -8.80440140 148.07192993 -7.13171387
|
| 371 |
+
v -16.77531242 125.29798126 -3.84707785
|
| 372 |
+
v -16.75299454 129.15856934 8.44582844
|
| 373 |
+
v -9.48875904 126.96873474 15.31827259
|
| 374 |
+
v -5.75990629 111.06945038 -9.28915501
|
| 375 |
+
v -11.70998192 110.61968994 -7.97347593
|
| 376 |
+
v -12.35213852 97.66931152 -11.33522797
|
| 377 |
+
v -15.89437485 110.66032410 -3.53992820
|
| 378 |
+
v -17.18901825 98.21878815 -5.21805191
|
| 379 |
+
v -15.53005981 110.58562469 6.93215466
|
| 380 |
+
v -9.51784992 110.30020142 13.98819160
|
| 381 |
+
v -18.02159500 98.28097534 5.98351574
|
| 382 |
+
v -5.52895546 98.07815552 -13.66227722
|
| 383 |
+
v -9.77539539 97.33264160 12.62118435
|
| 384 |
+
v -8.79392624 135.12405396 -12.59514809
|
| 385 |
+
v -12.20610905 146.17858887 1.18389094
|
| 386 |
+
v -20.30633926 133.94830322 3.98550415
|
| 387 |
+
v -19.51426697 130.97052002 -2.16005516
|
| 388 |
+
v -20.04141617 132.08073425 -7.58880663
|
| 389 |
+
v -27.01043320 137.74952698 -3.96306610
|
| 390 |
+
v -25.44848442 136.98834229 2.38623190
|
| 391 |
+
v -19.13417244 85.68415833 6.40199852
|
| 392 |
+
v -19.67422676 84.57188416 -2.90073729
|
| 393 |
+
v -12.35614777 80.94894409 -8.23965931
|
| 394 |
+
v -2.91571140 79.21669006 -5.02264643
|
| 395 |
+
v -1.34856403 79.28565979 4.71135759
|
| 396 |
+
v -9.56176090 83.78540039 12.06650925
|
| 397 |
+
v -53.43836212 113.61102295 14.08658600
|
| 398 |
+
v -56.56445312 109.66576385 12.22203064
|
| 399 |
+
v -56.71775818 110.59195709 13.92386055
|
| 400 |
+
v -55.86067200 111.32291412 16.13799286
|
| 401 |
+
v -54.03723145 111.40134430 17.46838188
|
| 402 |
+
v -52.77239227 108.22270203 14.24533272
|
| 403 |
+
v -56.95050430 105.08840942 13.27689266
|
| 404 |
+
v -57.67414856 106.43203735 12.62006378
|
| 405 |
+
v -58.45195007 107.60690308 13.95722961
|
| 406 |
+
v -58.50717545 108.70809174 15.74810791
|
| 407 |
+
v -57.91786957 109.48098755 17.99660301
|
| 408 |
+
v -56.28570557 109.44392395 19.70902252
|
| 409 |
+
v -57.15665436 105.17353821 15.16427326
|
| 410 |
+
v -51.97931671 107.24463654 20.26029205
|
| 411 |
+
v -51.80213547 108.60665894 20.58829689
|
| 412 |
+
v -57.16942978 105.88970947 16.84201813
|
| 413 |
+
v -53.95196915 107.64469910 21.10036469
|
| 414 |
+
v -56.47529602 106.53314209 18.65261459
|
| 415 |
+
v -59.02365112 103.96132660 14.40132713
|
| 416 |
+
v -59.76409912 105.15591431 15.67636299
|
| 417 |
+
v -60.13078308 106.06590271 17.77570343
|
| 418 |
+
v -59.30288696 106.89020538 19.73708344
|
| 419 |
+
v -58.47377014 107.41497040 21.42366028
|
| 420 |
+
v -58.00306320 106.40937805 21.65461540
|
| 421 |
+
v -59.81988144 105.26615906 18.08451080
|
| 422 |
+
v -59.30019379 104.55081940 16.12773895
|
| 423 |
+
v -58.86619568 105.76464844 20.03188705
|
| 424 |
+
v -61.26793289 103.77032471 19.75877762
|
| 425 |
+
v -61.54691315 105.11568451 20.93946457
|
| 426 |
+
v -60.79926300 104.29450989 21.06893158
|
| 427 |
+
v -63.39978027 103.22709656 22.36280441
|
| 428 |
+
v -62.87060547 102.51444244 22.41769409
|
| 429 |
+
v -63.23642731 102.15754700 21.23368263
|
| 430 |
+
v -64.97111511 101.30489349 22.33740234
|
| 431 |
+
v -65.29235077 101.76621246 22.45172501
|
| 432 |
+
v -64.53119659 101.47343445 22.99084282
|
| 433 |
+
v -64.82239532 101.97389221 23.16210747
|
| 434 |
+
v -60.18144226 105.85150146 22.89771271
|
| 435 |
+
v -59.45738602 104.97747803 22.69705582
|
| 436 |
+
v -60.15821838 104.67701721 21.59042358
|
| 437 |
+
v -61.50219727 104.50749207 24.02244949
|
| 438 |
+
v -60.97847366 103.81913757 24.00731659
|
| 439 |
+
v -61.53810120 103.40454865 22.93848038
|
| 440 |
+
v -62.93659592 102.61992645 24.03378487
|
| 441 |
+
v -63.33475876 103.10249329 24.17766762
|
| 442 |
+
v -62.52485657 102.84914398 24.62943840
|
| 443 |
+
v -62.83256149 103.32022858 24.80878067
|
| 444 |
+
v -62.07541656 104.09510040 18.33690643
|
| 445 |
+
v -61.65750504 102.81877136 17.40263748
|
| 446 |
+
v -61.41817093 103.36864471 18.70213699
|
| 447 |
+
v -63.60525131 102.36945343 19.27437592
|
| 448 |
+
v -63.02436829 101.78337097 19.54994774
|
| 449 |
+
v -63.29376221 101.36764526 18.27829933
|
| 450 |
+
v -64.32781982 100.60641479 19.98766136
|
| 451 |
+
v -64.57946014 100.31164551 19.31448936
|
| 452 |
+
v -65.01018524 100.65657043 19.31125259
|
| 453 |
+
v -64.78155518 100.94829559 20.01458359
|
| 454 |
+
v -60.63113403 103.32515717 16.27017021
|
| 455 |
+
v -61.11442184 103.89045715 15.77290726
|
| 456 |
+
v -60.30725861 102.73501587 15.13293457
|
| 457 |
+
v -62.33058548 102.48979187 16.28524590
|
| 458 |
+
v -61.87434769 101.99141693 16.80175591
|
| 459 |
+
v -61.59630585 101.41040802 15.73289871
|
| 460 |
+
v -62.92539215 101.05879974 17.17155266
|
| 461 |
+
v -63.00788879 100.52019501 16.42248917
|
| 462 |
+
v -63.41056442 100.77282715 16.32980728
|
| 463 |
+
v -63.45372772 101.08363342 16.98884010
|
| 464 |
+
v -51.91946793 107.56435394 22.58216095
|
| 465 |
+
v -52.06513977 106.61812592 22.25205612
|
| 466 |
+
v -53.64318466 107.07996368 22.89179420
|
| 467 |
+
v -52.97402191 106.43167877 25.20467758
|
| 468 |
+
v -52.84350586 107.09536743 25.35215378
|
| 469 |
+
v -51.74992371 106.70360565 24.98804665
|
| 470 |
+
v -51.95806503 106.14369202 24.95171356
|
| 471 |
+
v -62.05607605 104.26313782 23.12064743
|
| 472 |
+
v -60.80033112 105.62022400 21.84348297
|
| 473 |
+
v -63.78951263 103.02030945 21.34733200
|
| 474 |
+
v -61.98308563 104.71447754 19.79071808
|
| 475 |
+
v -63.76454163 102.05309296 18.38548088
|
| 476 |
+
v -62.21471405 103.65003204 17.25656319
|
| 477 |
+
v -62.24137115 102.03686523 15.52337646
|
| 478 |
+
v -61.07238770 103.50170898 14.89530373
|
| 479 |
+
v -59.70740128 104.62440491 14.11748123
|
| 480 |
+
v -53.26043320 108.97377777 20.98347855
|
| 481 |
+
v -53.07146454 108.03335571 22.85388947
|
| 482 |
+
v -55.96367645 107.84006500 20.38204956
|
| 483 |
+
v -53.82003784 110.03176117 19.60144234
|
| 484 |
+
v -54.75554276 111.43630981 10.27264977
|
| 485 |
+
v -37.58526611 122.15582275 -3.15859437
|
| 486 |
+
v -35.33767319 119.17195892 -3.25093889
|
| 487 |
+
v -33.02293015 117.81749725 0.62046176
|
| 488 |
+
v -34.42385864 121.81599426 3.44745135
|
| 489 |
+
v -37.31094742 124.95535278 3.13135433
|
| 490 |
+
v -53.18741989 110.09970856 10.08683586
|
| 491 |
+
v -51.20826340 110.38431549 12.15847206
|
| 492 |
+
v -51.07786942 112.63737488 14.47809505
|
| 493 |
+
v -54.71591568 112.94964600 12.05955410
|
| 494 |
+
v -38.82189560 124.76551819 -0.67842126
|
| 495 |
+
v -51.84812927 107.58807373 18.57874489
|
| 496 |
+
v -51.85197449 108.03208160 16.34364510
|
| 497 |
+
v -54.60864258 107.17626953 15.64114571
|
| 498 |
+
v -54.45500183 107.78453827 20.28181076
|
| 499 |
+
v -51.60578156 109.51104736 18.77284050
|
| 500 |
+
v -54.05800629 106.95270538 17.70573616
|
| 501 |
+
v -51.45625687 110.56800079 15.79239273
|
| 502 |
+
v -52.09321594 109.30036163 13.16573143
|
| 503 |
+
v -54.30588531 108.15345001 11.30983639
|
| 504 |
+
v -15.00088787 7.14629459 -5.54620266
|
| 505 |
+
v -9.03719044 47.50702667 -2.63771009
|
| 506 |
+
v -17.88500595 13.49072647 -2.54369354
|
| 507 |
+
v -14.73390484 47.50539780 0.90244895
|
| 508 |
+
v -20.61874390 12.55002594 -6.89265013
|
| 509 |
+
v -18.72998428 49.17055130 -2.46849108
|
| 510 |
+
v -21.35470390 7.81221867 -6.98164892
|
| 511 |
+
v -19.18988800 12.15617466 -9.35404110
|
| 512 |
+
v -17.53762436 11.84721279 -10.53265285
|
| 513 |
+
v -15.58838844 11.78482533 -9.03133202
|
| 514 |
+
v -19.56419563 6.97279739 -9.74922180
|
| 515 |
+
v -17.66975021 6.52705431 -11.21733570
|
| 516 |
+
v -16.08925247 6.45059824 -9.08887482
|
| 517 |
+
v -18.14980125 9.55443573 -1.58181274
|
| 518 |
+
v -8.76815414 49.08409882 -7.92628193
|
| 519 |
+
v -13.84381485 51.16987610 -10.21704102
|
| 520 |
+
v -18.42738533 50.87158966 -8.04082489
|
| 521 |
+
v -14.98722172 12.19365406 -6.03913021
|
| 522 |
+
v -16.69733810 0.33610976 7.80738068
|
| 523 |
+
v -24.51290894 0.29158637 4.49510717
|
| 524 |
+
v -24.20193672 2.64405012 4.43403816
|
| 525 |
+
v -16.16193008 2.84213257 7.62981415
|
| 526 |
+
v -20.09386063 3.82277298 5.98266077
|
| 527 |
+
v -24.59193802 1.04839909 7.93197060
|
| 528 |
+
v -24.74610519 0.29228172 7.50010204
|
| 529 |
+
v -21.31622505 0.39278227 11.41202736
|
| 530 |
+
v -16.97011757 1.84468806 12.31909752
|
| 531 |
+
v -17.05066490 0.58461207 12.15770721
|
| 532 |
+
v -20.54670143 -0.01325684 5.28845024
|
| 533 |
+
v -21.00398827 1.92971265 11.18030739
|
| 534 |
+
v -21.72554016 0.60355461 -7.31446648
|
| 535 |
+
v -16.11877632 1.15689850 -5.89530230
|
| 536 |
+
v -16.33350563 0.98197663 -9.84186745
|
| 537 |
+
v -18.29346275 0.73248839 -11.43722725
|
| 538 |
+
v -20.77364731 0.79162246 -10.17386246
|
| 539 |
+
v -19.42363739 0.02848397 -6.83465481
|
| 540 |
+
v -32.10017776 131.04632568 -2.38572025
|
| 541 |
+
v -31.01911354 130.60101318 1.93717957
|
| 542 |
+
v -27.65014267 127.51774597 3.50329685
|
| 543 |
+
v -26.16343689 124.26585388 -1.17790878
|
| 544 |
+
v -27.70418739 125.38633728 -5.69719839
|
| 545 |
+
v -30.67441177 128.43276978 -5.88471794
|
| 546 |
+
v -46.42699432 116.35452271 3.41961956
|
| 547 |
+
v -44.31628036 113.81648254 3.38141704
|
| 548 |
+
v -42.81025314 113.25510406 6.62113857
|
| 549 |
+
v -43.24219513 116.41262817 9.25353336
|
| 550 |
+
v -45.34690094 119.01234436 8.68660927
|
| 551 |
+
v -46.87958908 118.93370056 5.79959011
|
| 552 |
+
v -8.54574013 119.34546661 13.64172173
|
| 553 |
+
v -14.25804996 119.82495880 6.85353422
|
| 554 |
+
v -14.99172497 118.90056610 -2.85886645
|
| 555 |
+
v -12.36298943 119.51426697 -7.18168926
|
| 556 |
+
v -5.95814753 121.57730103 -10.52219772
|
| 557 |
+
v -5.50890827 65.75942230 -5.87026930
|
| 558 |
+
v -12.11058235 66.51130676 -8.96858597
|
| 559 |
+
v -18.25640869 67.72826385 -4.86446333
|
| 560 |
+
v -18.94192505 68.27494812 2.53186965
|
| 561 |
+
v -10.76150227 68.80753326 8.62217331
|
| 562 |
+
v -4.46945858 66.13342285 1.75855601
|
| 563 |
+
v -10.62259674 31.51332283 -6.18412733
|
| 564 |
+
v -16.19191360 31.97746277 -1.38874674
|
| 565 |
+
v -21.88732529 32.98069382 -5.19420910
|
| 566 |
+
v -20.96317291 33.25065613 -10.47307014
|
| 567 |
+
v -15.67575073 32.83581543 -12.72336197
|
| 568 |
+
v -10.92556953 32.15386581 -9.72300720
|
| 569 |
+
v -17.24797058 140.95718384 4.94615936
|
| 570 |
+
v -54.12170029 107.08302307 12.45810604
|
| 571 |
+
v -55.34896088 106.28338623 14.30640793
|
| 572 |
+
v -24.09583092 135.11126709 -8.42392254
|
| 573 |
+
v -20.60242081 139.35293579 -8.59044266
|
| 574 |
+
v -3.73078799 156.21582031 12.39494896
|
| 575 |
+
v -4.30724335 154.80300903 11.64877129
|
| 576 |
+
v -3.35732555 153.58679199 11.99589443
|
| 577 |
+
v -1.79249573 152.90124512 13.11233902
|
| 578 |
+
v -0.00000012 152.13348389 13.69438457
|
| 579 |
+
v 1.79249573 152.90124512 13.11233902
|
| 580 |
+
v 3.35732555 153.58679199 11.99589443
|
| 581 |
+
v 4.30724335 154.80302429 11.64877129
|
| 582 |
+
v 3.73078799 156.21582031 12.39494896
|
| 583 |
+
v -4.88916445 157.74873352 -1.75319588
|
| 584 |
+
v 0.00000022 158.05984497 -4.33909178
|
| 585 |
+
v 4.88916540 157.74873352 -1.75319612
|
| 586 |
+
v 6.00088644 153.95372009 2.54716110
|
| 587 |
+
v -6.00088501 153.95372009 2.54716039
|
| 588 |
+
v -7.38238764 167.29005432 2.32785010
|
| 589 |
+
v -5.83504105 169.91587830 5.26228905
|
| 590 |
+
v 7.38238764 167.29003906 2.32785010
|
| 591 |
+
v 5.83504105 169.91587830 5.26228905
|
| 592 |
+
v 9.08172417 143.83937073 5.02291965
|
| 593 |
+
v 4.65760565 141.60554504 7.93151283
|
| 594 |
+
v -0.00001854 140.80328369 8.84359360
|
| 595 |
+
v -4.65763950 141.60554504 7.93151236
|
| 596 |
+
v -9.08174515 143.83937073 5.02291775
|
| 597 |
+
f 49 32 48
|
| 598 |
+
f 32 49 33
|
| 599 |
+
f 33 49 34
|
| 600 |
+
f 34 49 48
|
| 601 |
+
f 23 20 21
|
| 602 |
+
f 17 42 18
|
| 603 |
+
f 98 180 105
|
| 604 |
+
f 98 189 198
|
| 605 |
+
f 586 360 345
|
| 606 |
+
f 351 334 335
|
| 607 |
+
f 334 351 350
|
| 608 |
+
f 350 351 336
|
| 609 |
+
f 336 351 335
|
| 610 |
+
f 325 323 322
|
| 611 |
+
f 319 320 344
|
| 612 |
+
f 400 407 482
|
| 613 |
+
f 400 500 491
|
| 614 |
+
f 58 585 43
|
| 615 |
+
f 2 53 39
|
| 616 |
+
f 2 39 3
|
| 617 |
+
f 249 250 51
|
| 618 |
+
f 249 51 28
|
| 619 |
+
f 27 278 277
|
| 620 |
+
f 27 277 10
|
| 621 |
+
f 36 590 44
|
| 622 |
+
f 36 44 28
|
| 623 |
+
f 29 50 37
|
| 624 |
+
f 29 37 25
|
| 625 |
+
f 25 26 21
|
| 626 |
+
f 25 21 29
|
| 627 |
+
f 7 55 256
|
| 628 |
+
f 7 256 255
|
| 629 |
+
f 11 56 58
|
| 630 |
+
f 11 58 43
|
| 631 |
+
f 29 21 20
|
| 632 |
+
f 29 20 19
|
| 633 |
+
f 8 275 274
|
| 634 |
+
f 8 274 52
|
| 635 |
+
f 56 11 6
|
| 636 |
+
f 56 6 57
|
| 637 |
+
f 6 269 268
|
| 638 |
+
f 6 268 57
|
| 639 |
+
f 273 31 52
|
| 640 |
+
f 273 52 274
|
| 641 |
+
f 52 31 32
|
| 642 |
+
f 52 32 581
|
| 643 |
+
f 579 580 33
|
| 644 |
+
f 579 33 34
|
| 645 |
+
f 581 32 33
|
| 646 |
+
f 581 33 580
|
| 647 |
+
f 578 579 34
|
| 648 |
+
f 578 34 35
|
| 649 |
+
f 577 578 35
|
| 650 |
+
f 577 35 271
|
| 651 |
+
f 19 45 50
|
| 652 |
+
f 19 50 29
|
| 653 |
+
f 9 24 253
|
| 654 |
+
f 9 253 252
|
| 655 |
+
f 3 39 589
|
| 656 |
+
f 3 589 12
|
| 657 |
+
f 253 24 30
|
| 658 |
+
f 253 30 254
|
| 659 |
+
f 38 30 24
|
| 660 |
+
f 38 24 39
|
| 661 |
+
f 36 37 50
|
| 662 |
+
f 36 50 12
|
| 663 |
+
f 50 45 3
|
| 664 |
+
f 50 3 12
|
| 665 |
+
f 7 585 58
|
| 666 |
+
f 7 58 55
|
| 667 |
+
f 1 54 53
|
| 668 |
+
f 1 53 2
|
| 669 |
+
f 4 46 53
|
| 670 |
+
f 4 53 54
|
| 671 |
+
f 26 25 27
|
| 672 |
+
f 26 27 42
|
| 673 |
+
f 51 27 25
|
| 674 |
+
f 51 25 37
|
| 675 |
+
f 28 51 37
|
| 676 |
+
f 28 37 36
|
| 677 |
+
f 41 45 19
|
| 678 |
+
f 41 19 20
|
| 679 |
+
f 40 11 43
|
| 680 |
+
f 40 43 15
|
| 681 |
+
f 11 40 5
|
| 682 |
+
f 11 5 6
|
| 683 |
+
f 6 5 270
|
| 684 |
+
f 6 270 269
|
| 685 |
+
f 12 589 590
|
| 686 |
+
f 12 590 36
|
| 687 |
+
f 252 251 44
|
| 688 |
+
f 252 44 9
|
| 689 |
+
f 251 249 28
|
| 690 |
+
f 251 28 44
|
| 691 |
+
f 16 15 43
|
| 692 |
+
f 16 43 41
|
| 693 |
+
f 7 255 583
|
| 694 |
+
f 7 583 584
|
| 695 |
+
f 7 584 46
|
| 696 |
+
f 7 46 4
|
| 697 |
+
f 277 276 13
|
| 698 |
+
f 277 13 10
|
| 699 |
+
f 47 31 273
|
| 700 |
+
f 47 273 272
|
| 701 |
+
f 31 47 48
|
| 702 |
+
f 31 48 32
|
| 703 |
+
f 34 48 47
|
| 704 |
+
f 34 47 35
|
| 705 |
+
f 271 35 47
|
| 706 |
+
f 271 47 272
|
| 707 |
+
f 278 27 51
|
| 708 |
+
f 278 51 250
|
| 709 |
+
f 13 8 52
|
| 710 |
+
f 13 52 14
|
| 711 |
+
f 8 13 276
|
| 712 |
+
f 8 276 275
|
| 713 |
+
f 38 39 53
|
| 714 |
+
f 38 53 46
|
| 715 |
+
f 18 42 27
|
| 716 |
+
f 18 27 10
|
| 717 |
+
f 18 10 13
|
| 718 |
+
f 18 13 17
|
| 719 |
+
f 14 22 17
|
| 720 |
+
f 14 17 13
|
| 721 |
+
f 22 26 42
|
| 722 |
+
f 22 42 17
|
| 723 |
+
f 22 23 21
|
| 724 |
+
f 22 21 26
|
| 725 |
+
f 593 267 62
|
| 726 |
+
f 593 62 592
|
| 727 |
+
f 592 62 60
|
| 728 |
+
f 592 60 591
|
| 729 |
+
f 55 58 82
|
| 730 |
+
f 55 82 67
|
| 731 |
+
f 256 55 67
|
| 732 |
+
f 256 67 257
|
| 733 |
+
f 63 64 65
|
| 734 |
+
f 63 65 61
|
| 735 |
+
f 61 66 81
|
| 736 |
+
f 61 81 67
|
| 737 |
+
f 81 258 257
|
| 738 |
+
f 81 257 67
|
| 739 |
+
f 61 65 302
|
| 740 |
+
f 61 302 66
|
| 741 |
+
f 65 64 87
|
| 742 |
+
f 65 87 86
|
| 743 |
+
f 86 301 302
|
| 744 |
+
f 86 302 65
|
| 745 |
+
f 267 266 70
|
| 746 |
+
f 267 70 62
|
| 747 |
+
f 60 62 70
|
| 748 |
+
f 60 70 69
|
| 749 |
+
f 259 71 79
|
| 750 |
+
f 259 79 260
|
| 751 |
+
f 72 73 79
|
| 752 |
+
f 72 79 71
|
| 753 |
+
f 74 75 73
|
| 754 |
+
f 74 73 72
|
| 755 |
+
f 78 75 74
|
| 756 |
+
f 78 74 76
|
| 757 |
+
f 76 77 80
|
| 758 |
+
f 76 80 78
|
| 759 |
+
f 265 264 80
|
| 760 |
+
f 265 80 77
|
| 761 |
+
f 75 78 88
|
| 762 |
+
f 75 88 89
|
| 763 |
+
f 75 89 90
|
| 764 |
+
f 75 90 73
|
| 765 |
+
f 73 90 91
|
| 766 |
+
f 73 91 79
|
| 767 |
+
f 78 80 93
|
| 768 |
+
f 78 93 88
|
| 769 |
+
f 279 280 70
|
| 770 |
+
f 279 70 266
|
| 771 |
+
f 280 281 69
|
| 772 |
+
f 280 69 70
|
| 773 |
+
f 282 68 69
|
| 774 |
+
f 282 69 281
|
| 775 |
+
f 68 282 283
|
| 776 |
+
f 68 283 59
|
| 777 |
+
f 283 284 81
|
| 778 |
+
f 283 81 59
|
| 779 |
+
f 285 258 81
|
| 780 |
+
f 285 81 284
|
| 781 |
+
f 262 92 93
|
| 782 |
+
f 262 93 263
|
| 783 |
+
f 92 262 261
|
| 784 |
+
f 92 261 91
|
| 785 |
+
f 261 260 79
|
| 786 |
+
f 261 79 91
|
| 787 |
+
f 93 80 264
|
| 788 |
+
f 93 264 263
|
| 789 |
+
f 298 64 63
|
| 790 |
+
f 298 63 82
|
| 791 |
+
f 69 68 84
|
| 792 |
+
f 69 84 83
|
| 793 |
+
f 85 84 68
|
| 794 |
+
f 85 68 59
|
| 795 |
+
f 59 81 66
|
| 796 |
+
f 59 66 85
|
| 797 |
+
f 67 82 63
|
| 798 |
+
f 67 63 61
|
| 799 |
+
f 190 96 95
|
| 800 |
+
f 190 95 181
|
| 801 |
+
f 187 181 95
|
| 802 |
+
f 187 95 200
|
| 803 |
+
f 189 98 97
|
| 804 |
+
f 189 97 94
|
| 805 |
+
f 190 94 97
|
| 806 |
+
f 190 97 96
|
| 807 |
+
f 96 103 102
|
| 808 |
+
f 96 102 95
|
| 809 |
+
f 102 101 200
|
| 810 |
+
f 102 200 95
|
| 811 |
+
f 105 104 97
|
| 812 |
+
f 105 97 98
|
| 813 |
+
f 97 104 103
|
| 814 |
+
f 97 103 96
|
| 815 |
+
f 180 177 110
|
| 816 |
+
f 180 110 195
|
| 817 |
+
f 196 192 107
|
| 818 |
+
f 196 107 108
|
| 819 |
+
f 163 110 177
|
| 820 |
+
f 163 177 178
|
| 821 |
+
f 162 161 108
|
| 822 |
+
f 162 108 107
|
| 823 |
+
f 163 178 165
|
| 824 |
+
f 163 165 164
|
| 825 |
+
f 165 166 167
|
| 826 |
+
f 165 167 164
|
| 827 |
+
f 114 113 102
|
| 828 |
+
f 114 102 103
|
| 829 |
+
f 106 119 118
|
| 830 |
+
f 106 118 109
|
| 831 |
+
f 118 120 111
|
| 832 |
+
f 118 111 109
|
| 833 |
+
f 122 171 114
|
| 834 |
+
f 122 114 115
|
| 835 |
+
f 141 173 113
|
| 836 |
+
f 141 113 114
|
| 837 |
+
f 113 152 175
|
| 838 |
+
f 113 175 176
|
| 839 |
+
f 115 116 131
|
| 840 |
+
f 115 131 169
|
| 841 |
+
f 112 153 151
|
| 842 |
+
f 112 151 119
|
| 843 |
+
f 143 118 119
|
| 844 |
+
f 143 119 142
|
| 845 |
+
f 120 118 121
|
| 846 |
+
f 120 121 123
|
| 847 |
+
f 132 135 134
|
| 848 |
+
f 132 134 131
|
| 849 |
+
f 169 131 134
|
| 850 |
+
f 169 134 168
|
| 851 |
+
f 133 136 135
|
| 852 |
+
f 133 135 132
|
| 853 |
+
f 168 134 140
|
| 854 |
+
f 168 140 138
|
| 855 |
+
f 136 137 139
|
| 856 |
+
f 136 139 135
|
| 857 |
+
f 134 135 139
|
| 858 |
+
f 134 139 140
|
| 859 |
+
f 138 140 139
|
| 860 |
+
f 138 139 137
|
| 861 |
+
f 122 124 170
|
| 862 |
+
f 122 170 171
|
| 863 |
+
f 123 121 126
|
| 864 |
+
f 123 126 125
|
| 865 |
+
f 130 128 170
|
| 866 |
+
f 130 170 124
|
| 867 |
+
f 129 125 126
|
| 868 |
+
f 129 126 127
|
| 869 |
+
f 124 125 129
|
| 870 |
+
f 124 129 130
|
| 871 |
+
f 130 129 127
|
| 872 |
+
f 130 127 128
|
| 873 |
+
f 141 144 172
|
| 874 |
+
f 141 172 173
|
| 875 |
+
f 143 142 146
|
| 876 |
+
f 143 146 145
|
| 877 |
+
f 150 149 172
|
| 878 |
+
f 150 172 144
|
| 879 |
+
f 147 145 146
|
| 880 |
+
f 147 146 148
|
| 881 |
+
f 144 145 147
|
| 882 |
+
f 144 147 150
|
| 883 |
+
f 148 146 172
|
| 884 |
+
f 148 172 149
|
| 885 |
+
f 150 147 148
|
| 886 |
+
f 150 148 149
|
| 887 |
+
f 154 174 175
|
| 888 |
+
f 154 175 152
|
| 889 |
+
f 156 155 151
|
| 890 |
+
f 156 151 153
|
| 891 |
+
f 154 155 157
|
| 892 |
+
f 154 157 160
|
| 893 |
+
f 157 158 159
|
| 894 |
+
f 157 159 160
|
| 895 |
+
f 168 136 133
|
| 896 |
+
f 168 133 169
|
| 897 |
+
f 122 115 120
|
| 898 |
+
f 122 120 123
|
| 899 |
+
f 170 126 121
|
| 900 |
+
f 170 121 171
|
| 901 |
+
f 141 114 118
|
| 902 |
+
f 141 118 143
|
| 903 |
+
f 152 113 119
|
| 904 |
+
f 152 119 151
|
| 905 |
+
f 101 176 112
|
| 906 |
+
f 101 112 100
|
| 907 |
+
f 299 200 101
|
| 908 |
+
f 299 101 100
|
| 909 |
+
f 137 136 168
|
| 910 |
+
f 137 168 138
|
| 911 |
+
f 127 126 170
|
| 912 |
+
f 127 170 128
|
| 913 |
+
f 177 180 196
|
| 914 |
+
f 177 196 108
|
| 915 |
+
f 178 177 108
|
| 916 |
+
f 178 108 161
|
| 917 |
+
f 178 161 166
|
| 918 |
+
f 178 166 165
|
| 919 |
+
f 171 121 118
|
| 920 |
+
f 171 118 114
|
| 921 |
+
f 173 142 119
|
| 922 |
+
f 173 119 113
|
| 923 |
+
f 153 112 176
|
| 924 |
+
f 153 176 175
|
| 925 |
+
f 169 133 120
|
| 926 |
+
f 169 120 115
|
| 927 |
+
f 117 132 131
|
| 928 |
+
f 117 131 116
|
| 929 |
+
f 133 132 117
|
| 930 |
+
f 133 117 120
|
| 931 |
+
f 103 104 115
|
| 932 |
+
f 103 115 114
|
| 933 |
+
f 105 116 115
|
| 934 |
+
f 105 115 104
|
| 935 |
+
f 100 112 119
|
| 936 |
+
f 100 119 106
|
| 937 |
+
f 300 194 99
|
| 938 |
+
f 300 99 299
|
| 939 |
+
f 156 153 175
|
| 940 |
+
f 156 175 174
|
| 941 |
+
f 158 156 174
|
| 942 |
+
f 158 174 159
|
| 943 |
+
f 151 155 154
|
| 944 |
+
f 151 154 152
|
| 945 |
+
f 146 142 173
|
| 946 |
+
f 146 173 172
|
| 947 |
+
f 141 143 145
|
| 948 |
+
f 141 145 144
|
| 949 |
+
f 123 125 124
|
| 950 |
+
f 123 124 122
|
| 951 |
+
f 166 161 162
|
| 952 |
+
f 166 162 167
|
| 953 |
+
f 244 183 182
|
| 954 |
+
f 244 182 243
|
| 955 |
+
f 244 245 184
|
| 956 |
+
f 244 184 183
|
| 957 |
+
f 246 185 184
|
| 958 |
+
f 246 184 245
|
| 959 |
+
f 247 186 185
|
| 960 |
+
f 247 185 246
|
| 961 |
+
f 247 248 191
|
| 962 |
+
f 247 191 186
|
| 963 |
+
f 248 243 182
|
| 964 |
+
f 248 182 191
|
| 965 |
+
f 242 237 191
|
| 966 |
+
f 242 191 182
|
| 967 |
+
f 191 237 238
|
| 968 |
+
f 191 238 186
|
| 969 |
+
f 186 238 239
|
| 970 |
+
f 186 239 185
|
| 971 |
+
f 185 239 240
|
| 972 |
+
f 185 240 184
|
| 973 |
+
f 241 242 182
|
| 974 |
+
f 241 182 183
|
| 975 |
+
f 163 162 107
|
| 976 |
+
f 163 107 110
|
| 977 |
+
f 164 167 162
|
| 978 |
+
f 164 162 163
|
| 979 |
+
f 105 179 117
|
| 980 |
+
f 105 117 116
|
| 981 |
+
f 180 195 179
|
| 982 |
+
f 180 179 105
|
| 983 |
+
f 194 197 193
|
| 984 |
+
f 194 193 99
|
| 985 |
+
f 193 197 195
|
| 986 |
+
f 193 195 192
|
| 987 |
+
f 240 241 183
|
| 988 |
+
f 240 183 184
|
| 989 |
+
f 197 111 179
|
| 990 |
+
f 197 179 195
|
| 991 |
+
f 300 106 109
|
| 992 |
+
f 300 109 194
|
| 993 |
+
f 111 197 194
|
| 994 |
+
f 111 194 109
|
| 995 |
+
f 180 98 198
|
| 996 |
+
f 180 198 196
|
| 997 |
+
f 192 196 198
|
| 998 |
+
f 192 198 193
|
| 999 |
+
f 198 199 99
|
| 1000 |
+
f 198 99 193
|
| 1001 |
+
f 198 189 188
|
| 1002 |
+
f 198 188 199
|
| 1003 |
+
f 188 187 200
|
| 1004 |
+
f 188 200 199
|
| 1005 |
+
f 156 158 157
|
| 1006 |
+
f 156 157 155
|
| 1007 |
+
f 154 160 159
|
| 1008 |
+
f 154 159 174
|
| 1009 |
+
f 117 179 111
|
| 1010 |
+
f 117 111 120
|
| 1011 |
+
f 176 101 102
|
| 1012 |
+
f 176 102 113
|
| 1013 |
+
f 204 293 294
|
| 1014 |
+
f 204 294 206
|
| 1015 |
+
f 294 295 217
|
| 1016 |
+
f 294 217 206
|
| 1017 |
+
f 215 202 291
|
| 1018 |
+
f 215 291 286
|
| 1019 |
+
f 292 202 215
|
| 1020 |
+
f 292 215 297
|
| 1021 |
+
f 296 216 217
|
| 1022 |
+
f 296 217 295
|
| 1023 |
+
f 296 297 215
|
| 1024 |
+
f 296 215 216
|
| 1025 |
+
f 208 211 212
|
| 1026 |
+
f 208 212 209
|
| 1027 |
+
f 209 212 213
|
| 1028 |
+
f 209 213 210
|
| 1029 |
+
f 203 214 207
|
| 1030 |
+
f 203 207 205
|
| 1031 |
+
f 216 215 286
|
| 1032 |
+
f 216 286 287
|
| 1033 |
+
f 216 287 288
|
| 1034 |
+
f 216 288 217
|
| 1035 |
+
f 218 210 213
|
| 1036 |
+
f 218 213 201
|
| 1037 |
+
f 205 207 211
|
| 1038 |
+
f 205 211 208
|
| 1039 |
+
f 289 206 217
|
| 1040 |
+
f 289 217 288
|
| 1041 |
+
f 206 289 290
|
| 1042 |
+
f 206 290 204
|
| 1043 |
+
f 203 218 201
|
| 1044 |
+
f 203 201 214
|
| 1045 |
+
f 292 293 204
|
| 1046 |
+
f 292 204 202
|
| 1047 |
+
f 290 291 202
|
| 1048 |
+
f 290 202 204
|
| 1049 |
+
f 224 221 223
|
| 1050 |
+
f 224 223 230
|
| 1051 |
+
f 221 224 225
|
| 1052 |
+
f 221 225 220
|
| 1053 |
+
f 226 230 227
|
| 1054 |
+
f 226 227 228
|
| 1055 |
+
f 228 227 222
|
| 1056 |
+
f 228 222 219
|
| 1057 |
+
f 227 230 223
|
| 1058 |
+
f 227 223 222
|
| 1059 |
+
f 224 230 226
|
| 1060 |
+
f 224 226 225
|
| 1061 |
+
f 220 225 226
|
| 1062 |
+
f 220 226 229
|
| 1063 |
+
f 226 228 219
|
| 1064 |
+
f 226 219 229
|
| 1065 |
+
f 213 233 232
|
| 1066 |
+
f 213 232 201
|
| 1067 |
+
f 212 234 233
|
| 1068 |
+
f 212 233 213
|
| 1069 |
+
f 235 234 212
|
| 1070 |
+
f 235 212 211
|
| 1071 |
+
f 207 231 235
|
| 1072 |
+
f 207 235 211
|
| 1073 |
+
f 201 232 219
|
| 1074 |
+
f 201 219 222
|
| 1075 |
+
f 207 221 220
|
| 1076 |
+
f 207 220 231
|
| 1077 |
+
f 223 221 207
|
| 1078 |
+
f 223 207 214
|
| 1079 |
+
f 201 222 223
|
| 1080 |
+
f 201 223 214
|
| 1081 |
+
f 219 232 236
|
| 1082 |
+
f 219 236 229
|
| 1083 |
+
f 233 234 236
|
| 1084 |
+
f 233 236 232
|
| 1085 |
+
f 236 234 235
|
| 1086 |
+
f 236 235 231
|
| 1087 |
+
f 231 220 229
|
| 1088 |
+
f 231 229 236
|
| 1089 |
+
f 54 585 7
|
| 1090 |
+
f 54 7 4
|
| 1091 |
+
f 2 3 45
|
| 1092 |
+
f 2 45 41
|
| 1093 |
+
f 41 43 1
|
| 1094 |
+
f 41 1 2
|
| 1095 |
+
f 238 237 86
|
| 1096 |
+
f 238 86 87
|
| 1097 |
+
f 238 87 83
|
| 1098 |
+
f 238 83 239
|
| 1099 |
+
f 240 239 83
|
| 1100 |
+
f 240 83 84
|
| 1101 |
+
f 240 84 85
|
| 1102 |
+
f 240 85 241
|
| 1103 |
+
f 242 241 85
|
| 1104 |
+
f 242 85 301
|
| 1105 |
+
f 237 242 301
|
| 1106 |
+
f 237 301 86
|
| 1107 |
+
f 187 244 243
|
| 1108 |
+
f 187 243 181
|
| 1109 |
+
f 188 245 244
|
| 1110 |
+
f 188 244 187
|
| 1111 |
+
f 189 246 245
|
| 1112 |
+
f 189 245 188
|
| 1113 |
+
f 247 246 189
|
| 1114 |
+
f 247 189 94
|
| 1115 |
+
f 248 247 94
|
| 1116 |
+
f 248 94 190
|
| 1117 |
+
f 243 248 190
|
| 1118 |
+
f 243 190 181
|
| 1119 |
+
f 265 77 280
|
| 1120 |
+
f 265 280 279
|
| 1121 |
+
f 77 76 281
|
| 1122 |
+
f 77 281 280
|
| 1123 |
+
f 74 282 281
|
| 1124 |
+
f 74 281 76
|
| 1125 |
+
f 282 74 72
|
| 1126 |
+
f 282 72 283
|
| 1127 |
+
f 284 283 72
|
| 1128 |
+
f 284 72 71
|
| 1129 |
+
f 71 259 285
|
| 1130 |
+
f 71 285 284
|
| 1131 |
+
f 286 91 90
|
| 1132 |
+
f 286 90 287
|
| 1133 |
+
f 287 90 89
|
| 1134 |
+
f 287 89 288
|
| 1135 |
+
f 88 289 288
|
| 1136 |
+
f 88 288 89
|
| 1137 |
+
f 290 289 88
|
| 1138 |
+
f 290 88 93
|
| 1139 |
+
f 291 290 93
|
| 1140 |
+
f 291 93 92
|
| 1141 |
+
f 203 293 292
|
| 1142 |
+
f 203 292 218
|
| 1143 |
+
f 294 293 203
|
| 1144 |
+
f 294 203 205
|
| 1145 |
+
f 295 294 205
|
| 1146 |
+
f 295 205 208
|
| 1147 |
+
f 296 295 208
|
| 1148 |
+
f 296 208 209
|
| 1149 |
+
f 210 297 296
|
| 1150 |
+
f 210 296 209
|
| 1151 |
+
f 218 292 297
|
| 1152 |
+
f 218 297 210
|
| 1153 |
+
f 286 291 92
|
| 1154 |
+
f 286 92 91
|
| 1155 |
+
f 192 195 110
|
| 1156 |
+
f 192 110 107
|
| 1157 |
+
f 83 87 64
|
| 1158 |
+
f 83 64 298
|
| 1159 |
+
f 69 83 298
|
| 1160 |
+
f 69 298 60
|
| 1161 |
+
f 298 82 591
|
| 1162 |
+
f 298 591 60
|
| 1163 |
+
f 299 99 199
|
| 1164 |
+
f 299 199 200
|
| 1165 |
+
f 100 106 300
|
| 1166 |
+
f 100 300 299
|
| 1167 |
+
f 301 85 66
|
| 1168 |
+
f 301 66 302
|
| 1169 |
+
f 341 355 304
|
| 1170 |
+
f 341 304 305
|
| 1171 |
+
f 353 250 249
|
| 1172 |
+
f 353 249 330
|
| 1173 |
+
f 329 312 277
|
| 1174 |
+
f 329 277 278
|
| 1175 |
+
f 338 330 346
|
| 1176 |
+
f 338 346 588
|
| 1177 |
+
f 341 587 311
|
| 1178 |
+
f 341 311 326
|
| 1179 |
+
f 331 327 339
|
| 1180 |
+
f 331 339 352
|
| 1181 |
+
f 323 328 327
|
| 1182 |
+
f 323 327 331
|
| 1183 |
+
f 309 255 256
|
| 1184 |
+
f 309 256 357
|
| 1185 |
+
f 276 315 310
|
| 1186 |
+
f 276 310 275
|
| 1187 |
+
f 360 358 313
|
| 1188 |
+
f 360 313 345
|
| 1189 |
+
f 331 321 322
|
| 1190 |
+
f 331 322 323
|
| 1191 |
+
f 310 354 274
|
| 1192 |
+
f 310 274 275
|
| 1193 |
+
f 358 359 308
|
| 1194 |
+
f 358 308 313
|
| 1195 |
+
f 308 359 268
|
| 1196 |
+
f 308 268 269
|
| 1197 |
+
f 273 274 354
|
| 1198 |
+
f 273 354 333
|
| 1199 |
+
f 354 573 334
|
| 1200 |
+
f 354 334 333
|
| 1201 |
+
f 575 336 335
|
| 1202 |
+
f 575 335 574
|
| 1203 |
+
f 573 574 335
|
| 1204 |
+
f 573 335 334
|
| 1205 |
+
f 576 337 336
|
| 1206 |
+
f 576 336 575
|
| 1207 |
+
f 577 271 337
|
| 1208 |
+
f 577 337 576
|
| 1209 |
+
f 352 347 321
|
| 1210 |
+
f 352 321 331
|
| 1211 |
+
f 253 326 311
|
| 1212 |
+
f 253 311 252
|
| 1213 |
+
f 332 326 253
|
| 1214 |
+
f 332 253 254
|
| 1215 |
+
f 340 341 326
|
| 1216 |
+
f 340 326 332
|
| 1217 |
+
f 338 314 352
|
| 1218 |
+
f 338 352 339
|
| 1219 |
+
f 305 347 352
|
| 1220 |
+
f 305 352 314
|
| 1221 |
+
f 303 304 355
|
| 1222 |
+
f 303 355 356
|
| 1223 |
+
f 306 356 355
|
| 1224 |
+
f 306 355 348
|
| 1225 |
+
f 328 344 329
|
| 1226 |
+
f 328 329 327
|
| 1227 |
+
f 327 329 353
|
| 1228 |
+
f 327 353 339
|
| 1229 |
+
f 339 353 330
|
| 1230 |
+
f 339 330 338
|
| 1231 |
+
f 345 313 342
|
| 1232 |
+
f 345 342 317
|
| 1233 |
+
f 307 342 313
|
| 1234 |
+
f 307 313 308
|
| 1235 |
+
f 270 307 308
|
| 1236 |
+
f 270 308 269
|
| 1237 |
+
f 588 346 311
|
| 1238 |
+
f 588 311 587
|
| 1239 |
+
f 346 251 252
|
| 1240 |
+
f 346 252 311
|
| 1241 |
+
f 330 249 251
|
| 1242 |
+
f 330 251 346
|
| 1243 |
+
f 318 343 345
|
| 1244 |
+
f 318 345 317
|
| 1245 |
+
f 309 306 348
|
| 1246 |
+
f 309 348 582
|
| 1247 |
+
f 309 582 583
|
| 1248 |
+
f 309 583 255
|
| 1249 |
+
f 277 312 315
|
| 1250 |
+
f 277 315 276
|
| 1251 |
+
f 349 272 273
|
| 1252 |
+
f 349 273 333
|
| 1253 |
+
f 350 349 333
|
| 1254 |
+
f 350 333 334
|
| 1255 |
+
f 349 350 336
|
| 1256 |
+
f 349 336 337
|
| 1257 |
+
f 271 272 349
|
| 1258 |
+
f 271 349 337
|
| 1259 |
+
f 353 329 278
|
| 1260 |
+
f 353 278 250
|
| 1261 |
+
f 354 310 315
|
| 1262 |
+
f 354 315 316
|
| 1263 |
+
f 340 348 355
|
| 1264 |
+
f 340 355 341
|
| 1265 |
+
f 320 312 329
|
| 1266 |
+
f 320 329 344
|
| 1267 |
+
f 315 312 320
|
| 1268 |
+
f 315 320 319
|
| 1269 |
+
f 316 315 319
|
| 1270 |
+
f 316 319 324
|
| 1271 |
+
f 325 322 343
|
| 1272 |
+
f 325 343 318
|
| 1273 |
+
f 344 328 324
|
| 1274 |
+
f 344 324 319
|
| 1275 |
+
f 324 328 323
|
| 1276 |
+
f 324 323 325
|
| 1277 |
+
f 593 594 364
|
| 1278 |
+
f 593 364 267
|
| 1279 |
+
f 594 595 362
|
| 1280 |
+
f 594 362 364
|
| 1281 |
+
f 357 369 384
|
| 1282 |
+
f 357 384 360
|
| 1283 |
+
f 369 357 256
|
| 1284 |
+
f 369 256 257
|
| 1285 |
+
f 367 366 365
|
| 1286 |
+
f 367 365 363
|
| 1287 |
+
f 363 369 383
|
| 1288 |
+
f 363 383 368
|
| 1289 |
+
f 257 258 383
|
| 1290 |
+
f 257 383 369
|
| 1291 |
+
f 363 368 572
|
| 1292 |
+
f 363 572 367
|
| 1293 |
+
f 367 388 389
|
| 1294 |
+
f 367 389 366
|
| 1295 |
+
f 572 571 388
|
| 1296 |
+
f 572 388 367
|
| 1297 |
+
f 372 266 267
|
| 1298 |
+
f 372 267 364
|
| 1299 |
+
f 362 371 372
|
| 1300 |
+
f 362 372 364
|
| 1301 |
+
f 259 260 381
|
| 1302 |
+
f 259 381 373
|
| 1303 |
+
f 381 375 374
|
| 1304 |
+
f 381 374 373
|
| 1305 |
+
f 375 377 376
|
| 1306 |
+
f 375 376 374
|
| 1307 |
+
f 376 377 380
|
| 1308 |
+
f 376 380 378
|
| 1309 |
+
f 378 380 382
|
| 1310 |
+
f 378 382 379
|
| 1311 |
+
f 382 264 265
|
| 1312 |
+
f 382 265 379
|
| 1313 |
+
f 390 380 377
|
| 1314 |
+
f 390 377 391
|
| 1315 |
+
f 392 391 377
|
| 1316 |
+
f 392 377 375
|
| 1317 |
+
f 393 392 375
|
| 1318 |
+
f 393 375 381
|
| 1319 |
+
f 395 382 380
|
| 1320 |
+
f 395 380 390
|
| 1321 |
+
f 279 266 372
|
| 1322 |
+
f 279 372 551
|
| 1323 |
+
f 551 372 371
|
| 1324 |
+
f 551 371 552
|
| 1325 |
+
f 371 370 553
|
| 1326 |
+
f 371 553 552
|
| 1327 |
+
f 370 361 554
|
| 1328 |
+
f 370 554 553
|
| 1329 |
+
f 383 555 554
|
| 1330 |
+
f 383 554 361
|
| 1331 |
+
f 383 258 285
|
| 1332 |
+
f 383 285 555
|
| 1333 |
+
f 262 263 395
|
| 1334 |
+
f 262 395 394
|
| 1335 |
+
f 261 262 394
|
| 1336 |
+
f 261 394 393
|
| 1337 |
+
f 261 393 381
|
| 1338 |
+
f 261 381 260
|
| 1339 |
+
f 264 382 395
|
| 1340 |
+
f 264 395 263
|
| 1341 |
+
f 595 384 568
|
| 1342 |
+
f 595 568 362
|
| 1343 |
+
f 371 385 386
|
| 1344 |
+
f 371 386 370
|
| 1345 |
+
f 387 361 370
|
| 1346 |
+
f 387 370 386
|
| 1347 |
+
f 368 383 361
|
| 1348 |
+
f 368 361 387
|
| 1349 |
+
f 369 363 365
|
| 1350 |
+
f 369 365 384
|
| 1351 |
+
f 397 398 492
|
| 1352 |
+
f 397 492 483
|
| 1353 |
+
f 489 502 397
|
| 1354 |
+
f 489 397 483
|
| 1355 |
+
f 399 400 491
|
| 1356 |
+
f 399 491 396
|
| 1357 |
+
f 492 398 399
|
| 1358 |
+
f 492 399 396
|
| 1359 |
+
f 398 397 404
|
| 1360 |
+
f 398 404 405
|
| 1361 |
+
f 502 403 404
|
| 1362 |
+
f 502 404 397
|
| 1363 |
+
f 399 406 407
|
| 1364 |
+
f 399 407 400
|
| 1365 |
+
f 399 398 405
|
| 1366 |
+
f 399 405 406
|
| 1367 |
+
f 412 479 482
|
| 1368 |
+
f 412 482 497
|
| 1369 |
+
f 498 410 409
|
| 1370 |
+
f 498 409 494
|
| 1371 |
+
f 465 480 479
|
| 1372 |
+
f 465 479 412
|
| 1373 |
+
f 410 463 464
|
| 1374 |
+
f 410 464 409
|
| 1375 |
+
f 465 466 467
|
| 1376 |
+
f 465 467 480
|
| 1377 |
+
f 467 466 469
|
| 1378 |
+
f 467 469 468
|
| 1379 |
+
f 404 415 416
|
| 1380 |
+
f 404 416 405
|
| 1381 |
+
f 408 411 420
|
| 1382 |
+
f 408 420 421
|
| 1383 |
+
f 413 422 420
|
| 1384 |
+
f 413 420 411
|
| 1385 |
+
f 416 473 424
|
| 1386 |
+
f 416 424 417
|
| 1387 |
+
f 415 475 443
|
| 1388 |
+
f 415 443 416
|
| 1389 |
+
f 415 478 477
|
| 1390 |
+
f 415 477 454
|
| 1391 |
+
f 433 418 417
|
| 1392 |
+
f 433 417 471
|
| 1393 |
+
f 414 421 453
|
| 1394 |
+
f 414 453 455
|
| 1395 |
+
f 445 444 421
|
| 1396 |
+
f 445 421 420
|
| 1397 |
+
f 423 420 422
|
| 1398 |
+
f 423 422 425
|
| 1399 |
+
f 436 437 434
|
| 1400 |
+
f 436 434 433
|
| 1401 |
+
f 436 433 471
|
| 1402 |
+
f 436 471 470
|
| 1403 |
+
f 435 434 437
|
| 1404 |
+
f 435 437 438
|
| 1405 |
+
f 442 436 470
|
| 1406 |
+
f 442 470 440
|
| 1407 |
+
f 438 437 441
|
| 1408 |
+
f 438 441 439
|
| 1409 |
+
f 436 442 441
|
| 1410 |
+
f 436 441 437
|
| 1411 |
+
f 441 442 440
|
| 1412 |
+
f 441 440 439
|
| 1413 |
+
f 424 473 472
|
| 1414 |
+
f 424 472 426
|
| 1415 |
+
f 428 423 425
|
| 1416 |
+
f 428 425 427
|
| 1417 |
+
f 472 430 432
|
| 1418 |
+
f 472 432 426
|
| 1419 |
+
f 431 429 428
|
| 1420 |
+
f 431 428 427
|
| 1421 |
+
f 426 432 431
|
| 1422 |
+
f 426 431 427
|
| 1423 |
+
f 432 430 429
|
| 1424 |
+
f 432 429 431
|
| 1425 |
+
f 443 475 474
|
| 1426 |
+
f 443 474 446
|
| 1427 |
+
f 448 444 445
|
| 1428 |
+
f 448 445 447
|
| 1429 |
+
f 474 451 452
|
| 1430 |
+
f 474 452 446
|
| 1431 |
+
f 449 450 448
|
| 1432 |
+
f 449 448 447
|
| 1433 |
+
f 446 452 449
|
| 1434 |
+
f 446 449 447
|
| 1435 |
+
f 450 451 474
|
| 1436 |
+
f 450 474 448
|
| 1437 |
+
f 452 451 450
|
| 1438 |
+
f 452 450 449
|
| 1439 |
+
f 477 476 456
|
| 1440 |
+
f 477 456 454
|
| 1441 |
+
f 453 457 458
|
| 1442 |
+
f 453 458 455
|
| 1443 |
+
f 456 462 459
|
| 1444 |
+
f 456 459 457
|
| 1445 |
+
f 461 460 459
|
| 1446 |
+
f 461 459 462
|
| 1447 |
+
f 470 471 435
|
| 1448 |
+
f 470 435 438
|
| 1449 |
+
f 424 425 422
|
| 1450 |
+
f 424 422 417
|
| 1451 |
+
f 472 473 423
|
| 1452 |
+
f 472 423 428
|
| 1453 |
+
f 443 445 420
|
| 1454 |
+
f 443 420 416
|
| 1455 |
+
f 454 453 421
|
| 1456 |
+
f 454 421 415
|
| 1457 |
+
f 414 478 403
|
| 1458 |
+
f 414 403 402
|
| 1459 |
+
f 403 502 569
|
| 1460 |
+
f 403 569 402
|
| 1461 |
+
f 470 438 439
|
| 1462 |
+
f 470 439 440
|
| 1463 |
+
f 472 428 429
|
| 1464 |
+
f 472 429 430
|
| 1465 |
+
f 498 482 479
|
| 1466 |
+
f 498 479 410
|
| 1467 |
+
f 410 479 480
|
| 1468 |
+
f 410 480 463
|
| 1469 |
+
f 468 463 480
|
| 1470 |
+
f 468 480 467
|
| 1471 |
+
f 473 416 420
|
| 1472 |
+
f 473 420 423
|
| 1473 |
+
f 475 415 421
|
| 1474 |
+
f 475 421 444
|
| 1475 |
+
f 478 414 455
|
| 1476 |
+
f 478 455 477
|
| 1477 |
+
f 471 417 422
|
| 1478 |
+
f 471 422 435
|
| 1479 |
+
f 419 418 433
|
| 1480 |
+
f 419 433 434
|
| 1481 |
+
f 419 434 435
|
| 1482 |
+
f 419 435 422
|
| 1483 |
+
f 405 416 417
|
| 1484 |
+
f 405 417 406
|
| 1485 |
+
f 407 406 417
|
| 1486 |
+
f 407 417 418
|
| 1487 |
+
f 421 414 402
|
| 1488 |
+
f 421 402 408
|
| 1489 |
+
f 401 496 570
|
| 1490 |
+
f 401 570 569
|
| 1491 |
+
f 477 455 458
|
| 1492 |
+
f 477 458 476
|
| 1493 |
+
f 476 458 460
|
| 1494 |
+
f 476 460 461
|
| 1495 |
+
f 456 457 453
|
| 1496 |
+
f 456 453 454
|
| 1497 |
+
f 475 444 448
|
| 1498 |
+
f 475 448 474
|
| 1499 |
+
f 443 446 447
|
| 1500 |
+
f 443 447 445
|
| 1501 |
+
f 426 427 425
|
| 1502 |
+
f 426 425 424
|
| 1503 |
+
f 468 469 464
|
| 1504 |
+
f 468 464 463
|
| 1505 |
+
f 484 485 546
|
| 1506 |
+
f 484 546 545
|
| 1507 |
+
f 546 485 486
|
| 1508 |
+
f 546 486 547
|
| 1509 |
+
f 486 487 548
|
| 1510 |
+
f 486 548 547
|
| 1511 |
+
f 487 488 549
|
| 1512 |
+
f 487 549 548
|
| 1513 |
+
f 549 488 493
|
| 1514 |
+
f 549 493 550
|
| 1515 |
+
f 550 493 484
|
| 1516 |
+
f 550 484 545
|
| 1517 |
+
f 493 539 544
|
| 1518 |
+
f 493 544 484
|
| 1519 |
+
f 493 488 540
|
| 1520 |
+
f 493 540 539
|
| 1521 |
+
f 488 487 541
|
| 1522 |
+
f 488 541 540
|
| 1523 |
+
f 487 486 542
|
| 1524 |
+
f 487 542 541
|
| 1525 |
+
f 484 544 543
|
| 1526 |
+
f 484 543 485
|
| 1527 |
+
f 465 412 409
|
| 1528 |
+
f 465 409 464
|
| 1529 |
+
f 466 465 464
|
| 1530 |
+
f 466 464 469
|
| 1531 |
+
f 407 418 419
|
| 1532 |
+
f 407 419 481
|
| 1533 |
+
f 481 497 482
|
| 1534 |
+
f 481 482 407
|
| 1535 |
+
f 495 499 496
|
| 1536 |
+
f 495 496 401
|
| 1537 |
+
f 497 499 495
|
| 1538 |
+
f 497 495 494
|
| 1539 |
+
f 485 543 542
|
| 1540 |
+
f 485 542 486
|
| 1541 |
+
f 481 413 499
|
| 1542 |
+
f 481 499 497
|
| 1543 |
+
f 411 408 570
|
| 1544 |
+
f 411 570 496
|
| 1545 |
+
f 413 411 496
|
| 1546 |
+
f 413 496 499
|
| 1547 |
+
f 500 400 482
|
| 1548 |
+
f 500 482 498
|
| 1549 |
+
f 500 498 494
|
| 1550 |
+
f 500 494 495
|
| 1551 |
+
f 500 495 401
|
| 1552 |
+
f 500 401 501
|
| 1553 |
+
f 490 491 500
|
| 1554 |
+
f 490 500 501
|
| 1555 |
+
f 490 501 502
|
| 1556 |
+
f 490 502 489
|
| 1557 |
+
f 458 457 459
|
| 1558 |
+
f 458 459 460
|
| 1559 |
+
f 456 476 461
|
| 1560 |
+
f 456 461 462
|
| 1561 |
+
f 413 481 419
|
| 1562 |
+
f 413 419 422
|
| 1563 |
+
f 404 403 478
|
| 1564 |
+
f 404 478 415
|
| 1565 |
+
f 564 563 506
|
| 1566 |
+
f 564 506 508
|
| 1567 |
+
f 564 508 519
|
| 1568 |
+
f 564 519 565
|
| 1569 |
+
f 517 556 561
|
| 1570 |
+
f 517 561 504
|
| 1571 |
+
f 517 504 562
|
| 1572 |
+
f 517 562 567
|
| 1573 |
+
f 519 518 566
|
| 1574 |
+
f 519 566 565
|
| 1575 |
+
f 566 518 517
|
| 1576 |
+
f 566 517 567
|
| 1577 |
+
f 514 513 510
|
| 1578 |
+
f 514 510 511
|
| 1579 |
+
f 515 514 511
|
| 1580 |
+
f 515 511 512
|
| 1581 |
+
f 509 516 505
|
| 1582 |
+
f 509 505 507
|
| 1583 |
+
f 518 557 556
|
| 1584 |
+
f 518 556 517
|
| 1585 |
+
f 558 557 518
|
| 1586 |
+
f 558 518 519
|
| 1587 |
+
f 515 512 520
|
| 1588 |
+
f 515 520 503
|
| 1589 |
+
f 513 509 507
|
| 1590 |
+
f 513 507 510
|
| 1591 |
+
f 519 508 559
|
| 1592 |
+
f 519 559 558
|
| 1593 |
+
f 508 506 560
|
| 1594 |
+
f 508 560 559
|
| 1595 |
+
f 505 516 503
|
| 1596 |
+
f 505 503 520
|
| 1597 |
+
f 562 504 506
|
| 1598 |
+
f 562 506 563
|
| 1599 |
+
f 504 561 560
|
| 1600 |
+
f 504 560 506
|
| 1601 |
+
f 526 532 525
|
| 1602 |
+
f 526 525 523
|
| 1603 |
+
f 523 522 527
|
| 1604 |
+
f 523 527 526
|
| 1605 |
+
f 528 530 529
|
| 1606 |
+
f 528 529 532
|
| 1607 |
+
f 524 529 530
|
| 1608 |
+
f 524 530 521
|
| 1609 |
+
f 525 532 529
|
| 1610 |
+
f 525 529 524
|
| 1611 |
+
f 526 527 528
|
| 1612 |
+
f 526 528 532
|
| 1613 |
+
f 522 531 528
|
| 1614 |
+
f 522 528 527
|
| 1615 |
+
f 521 530 528
|
| 1616 |
+
f 521 528 531
|
| 1617 |
+
f 515 503 534
|
| 1618 |
+
f 515 534 535
|
| 1619 |
+
f 514 515 535
|
| 1620 |
+
f 514 535 536
|
| 1621 |
+
f 514 536 537
|
| 1622 |
+
f 514 537 513
|
| 1623 |
+
f 509 513 537
|
| 1624 |
+
f 509 537 533
|
| 1625 |
+
f 521 534 503
|
| 1626 |
+
f 521 503 524
|
| 1627 |
+
f 509 533 522
|
| 1628 |
+
f 509 522 523
|
| 1629 |
+
f 509 523 525
|
| 1630 |
+
f 509 525 516
|
| 1631 |
+
f 503 516 525
|
| 1632 |
+
f 503 525 524
|
| 1633 |
+
f 538 534 521
|
| 1634 |
+
f 538 521 531
|
| 1635 |
+
f 535 534 538
|
| 1636 |
+
f 535 538 536
|
| 1637 |
+
f 538 533 537
|
| 1638 |
+
f 538 537 536
|
| 1639 |
+
f 533 538 531
|
| 1640 |
+
f 533 531 522
|
| 1641 |
+
f 303 356 586
|
| 1642 |
+
f 303 586 345
|
| 1643 |
+
f 304 343 347
|
| 1644 |
+
f 304 347 305
|
| 1645 |
+
f 303 345 343
|
| 1646 |
+
f 303 343 304
|
| 1647 |
+
f 540 389 388
|
| 1648 |
+
f 540 388 539
|
| 1649 |
+
f 385 389 540
|
| 1650 |
+
f 385 540 541
|
| 1651 |
+
f 542 386 385
|
| 1652 |
+
f 542 385 541
|
| 1653 |
+
f 387 386 542
|
| 1654 |
+
f 387 542 543
|
| 1655 |
+
f 544 571 387
|
| 1656 |
+
f 544 387 543
|
| 1657 |
+
f 539 388 571
|
| 1658 |
+
f 539 571 544
|
| 1659 |
+
f 489 483 545
|
| 1660 |
+
f 489 545 546
|
| 1661 |
+
f 490 489 546
|
| 1662 |
+
f 490 546 547
|
| 1663 |
+
f 491 490 547
|
| 1664 |
+
f 491 547 548
|
| 1665 |
+
f 491 548 549
|
| 1666 |
+
f 491 549 396
|
| 1667 |
+
f 396 549 550
|
| 1668 |
+
f 396 550 492
|
| 1669 |
+
f 492 550 545
|
| 1670 |
+
f 492 545 483
|
| 1671 |
+
f 265 279 551
|
| 1672 |
+
f 265 551 379
|
| 1673 |
+
f 379 551 552
|
| 1674 |
+
f 379 552 378
|
| 1675 |
+
f 552 553 376
|
| 1676 |
+
f 552 376 378
|
| 1677 |
+
f 374 376 553
|
| 1678 |
+
f 374 553 554
|
| 1679 |
+
f 555 373 374
|
| 1680 |
+
f 555 374 554
|
| 1681 |
+
f 373 555 285
|
| 1682 |
+
f 373 285 259
|
| 1683 |
+
f 392 393 556
|
| 1684 |
+
f 392 556 557
|
| 1685 |
+
f 391 392 557
|
| 1686 |
+
f 391 557 558
|
| 1687 |
+
f 558 559 390
|
| 1688 |
+
f 558 390 391
|
| 1689 |
+
f 560 395 390
|
| 1690 |
+
f 560 390 559
|
| 1691 |
+
f 561 394 395
|
| 1692 |
+
f 561 395 560
|
| 1693 |
+
f 505 520 562
|
| 1694 |
+
f 505 562 563
|
| 1695 |
+
f 564 507 505
|
| 1696 |
+
f 564 505 563
|
| 1697 |
+
f 507 564 565
|
| 1698 |
+
f 507 565 510
|
| 1699 |
+
f 510 565 566
|
| 1700 |
+
f 510 566 511
|
| 1701 |
+
f 512 511 566
|
| 1702 |
+
f 512 566 567
|
| 1703 |
+
f 520 512 567
|
| 1704 |
+
f 520 567 562
|
| 1705 |
+
f 556 393 394
|
| 1706 |
+
f 556 394 561
|
| 1707 |
+
f 494 409 412
|
| 1708 |
+
f 494 412 497
|
| 1709 |
+
f 366 389 385
|
| 1710 |
+
f 366 385 568
|
| 1711 |
+
f 568 385 371
|
| 1712 |
+
f 568 371 362
|
| 1713 |
+
f 568 384 365
|
| 1714 |
+
f 568 365 366
|
| 1715 |
+
f 501 401 569
|
| 1716 |
+
f 501 569 502
|
| 1717 |
+
f 402 569 570
|
| 1718 |
+
f 402 570 408
|
| 1719 |
+
f 368 387 571
|
| 1720 |
+
f 368 571 572
|
| 1721 |
+
f 354 316 318
|
| 1722 |
+
f 354 318 573
|
| 1723 |
+
f 318 317 574
|
| 1724 |
+
f 318 574 573
|
| 1725 |
+
f 342 575 574
|
| 1726 |
+
f 342 574 317
|
| 1727 |
+
f 307 576 575
|
| 1728 |
+
f 307 575 342
|
| 1729 |
+
f 307 270 577
|
| 1730 |
+
f 307 577 576
|
| 1731 |
+
f 5 578 577
|
| 1732 |
+
f 5 577 270
|
| 1733 |
+
f 579 578 5
|
| 1734 |
+
f 579 5 40
|
| 1735 |
+
f 580 579 40
|
| 1736 |
+
f 580 40 15
|
| 1737 |
+
f 16 581 580
|
| 1738 |
+
f 16 580 15
|
| 1739 |
+
f 52 581 16
|
| 1740 |
+
f 52 16 14
|
| 1741 |
+
f 16 23 22
|
| 1742 |
+
f 16 22 14
|
| 1743 |
+
f 318 316 324
|
| 1744 |
+
f 318 324 325
|
| 1745 |
+
f 41 20 23
|
| 1746 |
+
f 41 23 16
|
| 1747 |
+
f 343 322 321
|
| 1748 |
+
f 343 321 347
|
| 1749 |
+
f 348 340 332
|
| 1750 |
+
f 348 332 582
|
| 1751 |
+
f 582 332 254
|
| 1752 |
+
f 582 254 583
|
| 1753 |
+
f 584 583 254
|
| 1754 |
+
f 584 254 30
|
| 1755 |
+
f 46 584 30
|
| 1756 |
+
f 46 30 38
|
| 1757 |
+
f 1 43 585
|
| 1758 |
+
f 1 585 54
|
| 1759 |
+
f 356 306 309
|
| 1760 |
+
f 356 309 586
|
| 1761 |
+
f 309 357 360
|
| 1762 |
+
f 309 360 586
|
| 1763 |
+
f 305 314 587
|
| 1764 |
+
f 305 587 341
|
| 1765 |
+
f 314 338 588
|
| 1766 |
+
f 314 588 587
|
| 1767 |
+
f 39 24 9
|
| 1768 |
+
f 39 9 589
|
| 1769 |
+
f 590 589 9
|
| 1770 |
+
f 590 9 44
|
| 1771 |
+
f 82 58 56
|
| 1772 |
+
f 82 56 591
|
| 1773 |
+
f 57 592 591
|
| 1774 |
+
f 57 591 56
|
| 1775 |
+
f 268 593 592
|
| 1776 |
+
f 268 592 57
|
| 1777 |
+
f 594 593 268
|
| 1778 |
+
f 594 268 359
|
| 1779 |
+
f 595 594 359
|
| 1780 |
+
f 595 359 358
|
| 1781 |
+
f 384 595 358
|
| 1782 |
+
f 384 358 360
|
| 1783 |
+
|
assets/MHR/mhr_model_lod1.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:352e271a6c42729c68554ceaea0c955e866970160c31e35506d782dc0f7377bc
|
| 3 |
+
size 696110248
|
assets/MHR/mhr_model_lod6.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:28839b7ee0eb38eb3943cf26cff61a306de78f86227a0f17bb044252c7bc06ac
|
| 3 |
+
size 2080751
|
assets/SMPL/SOMA_wrap.obj
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/SMPL/base_body.obj
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/SMPL/smpl_anim.npy
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1126c0b377f00b2678a91a2e0dd0eb712d27ed700eea6edc76ed46e779769a84
|
| 3 |
+
size 1009136
|
assets/SMPLX/SOMA_wrap.obj
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/SMPLX/base_body.obj
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/SOMA_neutral.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:515f7d5bb74be4e370e9adf5e779760ec3581556374c0b33212a32d13ab3b53f
|
| 3 |
+
size 27488638
|
assets/correctives_model.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3b0f82928dc25c952e0a23af59dbc9c02854ccb4c4c1c988f70bbffd7c284636
|
| 3 |
+
size 95437256
|
assets/example_animation.npy
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f424385dae3128278e74e81e0789ee4048753199d04fef77c27ba5457bd3819d
|
| 3 |
+
size 5601024
|
assets/images/banner.png
ADDED
|
assets/images/hand-left-in-action.gif
ADDED
|
assets/images/hand-right-in-action.gif
ADDED
|
Git LFS Details
|
assets/images/mhr2soma.gif
ADDED
|
Git LFS Details
|
assets/images/smpl2soma.gif
ADDED
|
Git LFS Details
|
assets/images/soma-in-action.gif
ADDED
|
Git LFS Details
|
assets/images/soma_correctives.gif
ADDED
|
Git LFS Details
|
docs/BIAS.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Field | Response
|
| 2 |
+
:-----|:--------
|
| 3 |
+
Participation considerations from adversely impacted groups ([protected classes](https://www.senate.ca.gov/content/protected-classes)) in model design and testing: | The SOMA native shape PCA was fitted on a combination of SizeUSA (large-scale U.S. anthropometric survey) and TripleGangers (303 individuals, commercially purchased). While SizeUSA covers a broad range of age, sex, and BMI groups, both datasets reflect body shapes predominantly from North American/Western populations and may under-represent shapes common in other geographic regions (e.g., South/Southeast Asia, Sub-Saharan Africa). SOMA mitigates this by adding additional data from GarmentMeasurements which contains some european population and by supporting the ANNY backend, which derives body shapes from anthropometric measurements rather than 3D scan data, enabling representation of human body shapes from infants to elders without inheriting scan-collection demographic biases.
|
| 4 |
+
Measures taken to mitigate against unwanted bias: | (1) **Multi-backend design:** SOMA's unified framework supports six identity backends. The ANNY backend is explicitly constructed from anthropometric phenotypes (age, height, weight, body composition) rather than scans, avoiding demographic sampling biases that affect scan-collected datasets. Developers requiring globally diverse or age-spanning body shape representation are encouraged to use ANNY. (2) **Shape space coverage:** The SOMA-shape PCA backend samples from the full statistical range of the SizeUSA, TripleGanger and GarmentMeasurment scan distribution; no demographic subgroup is excluded. (3) **Evaluation coverage:** Quantitative benchmarks sample 100 random identities spanning the full shape space extremes per backend, ensuring evaluation is not biased toward mean/average bodies.
|
| 5 |
+
Bias Metric (If Measured): | No formal demographic bias metric has been measured for the SOMA-shape against external demographic benchmarks.
|
| 6 |
+
Which characteristic (feature) shows the greatest difference in performance?: | Not applicable.
|
| 7 |
+
Representation in training data: | SizeUSA and TripleGangers (303 individuals) together represent predominantly the U.S./Western population and do not collectively or exhaustively represent all global demographic groups proportionally. For instance, East Asian, South Asian, and Sub-Saharan African body proportions may be under-represented. To mitigate this for applications requiring global diversity, we recommend using the ANNY identity backend or fine-tuning the SOMA native shape PCA with supplementary scan data representative of the target population.
|
docs/EXPLAINABILITY.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Field | Response
|
| 2 |
+
:-----|:--------
|
| 3 |
+
Intended Task/Domain: | 3D Human Body Modeling — parametric body shape and pose synthesis for computer vision, animation, robotics, and human simulation.
|
| 4 |
+
Model Type: | Analytical / Parametric (Pose) pipeline. Core components are closed-form (no learned neural network layers in the primary forward pass). Optional: shallow two layer MLP for pose-dependent surface correctives.
|
| 5 |
+
Intended Users: | Computer vision researchers; graphics and animation engineers; machine learning engineers; robotics researchers and companies.
|
| 6 |
+
Output: | 3D mesh vertices `(B, N_h, 3)` in meters and joint positions `(B, 77, 3)` in meters. Deterministic given fixed inputs — no sampling or stochastic components.
|
| 7 |
+
Describe how the model works: | SOMA processes identity and pose inputs through four sequential analytical stages: (1) **Barycentric Topology Transfer** — a pre-computed sparse barycentric correspondence matrix maps the source model's rest-shape mesh to SOMA's canonical 18,095-vertex topology in O(V_h) time via a single sparse matrix-vector product. (2) **RBF Skeleton Fitting** — Radial Basis Function (RBF) regression with Kabsch rotation alignment adapts all 77 joint transforms to the new identity's rest shape in one linear solve per identity, recovering anatomically correct joint positions and orientations. (3) **Linear Blend Skinning (LBS)** — standard LBS drives the canonical mesh to the target pose given axis-angle or rotation matrix pose parameters; a GPU-accelerated path via NVIDIA Warp processes batches at > 7,000 meshes/second on an A100. All four stages are fully differentiable.
|
| 8 |
+
Name the adversely impacted groups this has been tested to deliver comparable outcomes regardless of: | None
|
| 9 |
+
Technical Limitations & Mitigation: | (1) **LBS surface artifacts** — standard LBS produces known candy-wrapper and volume-loss artifacts at joints under extreme flexion (e.g., elbow > 120°, shoulder abduction > 90°). Mitigation: optional pose-dependent corrective MLP reduces these artifacts. (2) **Fixed topology** — SOMA uses a fixed canonical mesh and 77-joint skeleton; it cannot dynamically adapt to application-specific topologies without re-running offline registration. (3) **Backend engineering overhead** — adding a new identity backend requires authoring a `BaseIdentityModel` wrapper and performing a one-time offline SOMA wrap mesh registration.
|
| 10 |
+
Verified to have met prescribed NVIDIA quality standards: | Yes.
|
| 11 |
+
Performance Metrics: | Not applicable.
|
| 12 |
+
Potential Known Risks: | (1) **Out-of-distribution shape inputs** — identity coefficients far outside the training shape space distribution may produce physically implausible body meshes (intersecting limbs, extreme proportions). No clamping is applied; downstream applications should validate output geometry. (2) **LBS artifacts under extreme poses** — highly non-rigid poses may produce surface artifacts that are visually unrealistic; applications requiring photorealistic rendering under extreme motion should pair SOMA with a pose corrective or neural rendering module. (3) **Misuse for synthetic identity generation** — SOMA can generate arbitrary human body shapes; developers should not use it to impersonate specific real individuals without consent.
|
| 13 |
+
Licensing: | [Apache 2.0](../../LICENSE)
|
docs/PRIVACY.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Field | Response
|
| 2 |
+
:-----|:--------
|
| 3 |
+
Generatable or reverse engineerable personal data? | No — SOMA generates anonymous 3D body meshes defined by continuous numerical shape coefficients. The canonical mesh topology is fixed and the released PCA shape space represents aggregate population-level statistics; it does not encode any specific individual's biometric identity and cannot be reverse-mapped to a participant. Shape coefficients do not correspond to real, identifiable individuals unless explicitly constructed to do so by the caller. The model does not process or output images, video, or biometric identifiers at inference time.
|
| 4 |
+
Personal data used to create this model? | Partial — the SOMA native shape PCA was computed from two purchased 3D body scan datasets: (1) **SizeUSA**, consisting of whole-body scans of consenting human participants collected by TC², and dataset was processed to remove personally identifying markers before NVIDIA received them. (2) **TripleGangers**, containing body scans of 303 consenting individuals purchased from TripleGangers. GarmentMeasurement shape data was derived synthetically from their model and contains no personal data. Additionally, **Bones RigPlay** is a motion capture dataset of 350,000 animation sequences recorded from real human performers, used to train the optional pose-dependent corrective MLP. However, the data was retargeted to a fixed skeleton, removing any person-specific biometric signals.
|
| 5 |
+
Was consent obtained for any personal data used? | Yes — SizeUSA participants consented to the collection and use of their body scan data for research and commercial purposes as part of the TC² data collection protocol. TripleGangers participants consented to scanning under agreements that explicitly permit use of the scans for AI model development.
|
| 6 |
+
Description of methods implemented in data acquisition or processing, if any, to address the prevalence of personal data in the training data: | SizeUSA scans were delivered to NVIDIA as anonymous 3D body meshes without face geometry and texture maps. TripleGangers scans include full-body and face geometry; however, TripleGangers' participant agreements explicitly permit use of the scans for AI model development. Both datasets were processed without participant names, contact information, or other personal data. PCA fitting was performed on the mesh data, producing statistical shape vectors that cannot be reverse-mapped to individual participants. The resulting shape space (64 principal components) represents population-level body shape variation and not any specific individual's geometry. Bones RigPlay motion sequences are used only as skeletal animation data for training the optional corrective MLP; the retargeting process discards performer-specific kinematics and no visual appearance, face, texture, or identity information from any real performers is included.
|
| 7 |
+
How often is dataset reviewed? | Dataset is initially reviewed upon addition, and subsequent reviews are conducted as needed or upon request for changes.
|
| 8 |
+
Is a mechanism in place to honor data subject right of access or deletion of personal data? | Not Applicable — SOMA's release artifacts (model weights, PCA components) do not store raw scan data or any personal data. The PCA shape components are aggregate statistical transforms computed over all participants; no individual scan can be recovered from the released model. Data subject rights requests pertaining to the underlying SizeUSA dataset should be directed to TC² in accordance with their privacy policy.
|
| 9 |
+
If personal data was collected for the development of the model, was it collected directly by NVIDIA? | No — body scan data was collected by TC² (SizeUSA) and TripleGangers (two third-party data providers) and purchased by NVIDIA under commercial licenses. NVIDIA did not directly collect body scans.
|
| 10 |
+
If personal data was collected for the development of the model by NVIDIA, do you maintain or have access to disclosures made to data subjects? | Not Applicable — data was collected by TC² (SizeUSA) and TripleGangers; NVIDIA holds the commercial license agreements but not the participant consent forms, which remain with the respective data providers.
|
| 11 |
+
If personal data was collected for the development of this AI model, was it minimized to only what was required? | Yes — only the 3D mesh geometry necessary for fitting the shape PCA were used. No facial texture, personal identifiers, or fine-grained biometric data were used.
|
| 12 |
+
Was data from user interactions with the AI model (e.g. user input and prompts) used to train the model? | No
|
| 13 |
+
Is there provenance for all datasets used in training? | Yes — SizeUSA: commercially licensed from TC²; TripleGangers: commercially licensed from TripleGangers (303 individuals); GarmentMeasurement: internally derived synthetic dataset using their source code which is released with GPL 3.0 license; Bones RigPlay: commercially licensed (purchased by NVIDIA), used for the optional pose corrective MLP.
|
| 14 |
+
Does data labeling (annotation, metadata) comply with privacy laws? | Yes
|
| 15 |
+
Is data compliant with data subject requests for data correction or removal, if such a request was made? | Not applicable with the released model — raw scan data is not included in the released artifacts. Requests relating to the source dataset should be directed to TC² or TripleGanger.
|
| 16 |
+
Applicable Privacy Policy | https://www.nvidia.com/en-us/about-nvidia/privacy-policy/
|
docs/SAFETY_and_SECURITY.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Field | Response
|
| 2 |
+
:-----|:--------
|
| 3 |
+
Model Application Field(s): | Media & Entertainment; Industrial/Machinery and Robotics; Healthcare (Biomechanics Research); Computer Vision Research; Animation and Simulation
|
| 4 |
+
Describe the life critical impact (if present). | None; this should not operate in safety-critical control loops (autonomous vehicles, medical devices, industrial safety systems).
|
| 5 |
+
Use Case Restrictions: | Abide by the [Apache 2.0 License](../../LICENSE). SOMA must not be used to: (1) impersonate specific real individuals without their explicit consent; (2) generate synthetic body data intended to deceive biometric identification systems; (3) produce outputs that violate applicable laws or regulations in the deployment jurisdiction. Integration into safety-critical systems (medical devices, autonomous vehicles, industrial machinery) requires additional validation by the integrating team.
|
| 6 |
+
Model and dataset restrictions: | The Principle of Least Privilege (PoLP) is applied, limiting access for dataset generation and model development. Dataset access restrictions were enforced during PCA fitting and corrective MLP training. The released model artifacts (PCA components, skinning weights, rig data) do not contain raw scan data; access to the underlying SizeUSA dataset remains restricted to authorized NVIDIA personnel under the commercial license agreement. Bones RigPlay motion capture data (used for optional corrective MLP training) is commercially licensed (purchased by NVIDIA) and contains no real-person video or personally identifiable information; all motion sequences were retargeted to a fixed skeleton.
|
| 7 |
+
Security considerations: | SOMA processes numerical tensors (shape coefficients and pose parameters) only; it does not accept image, video, text, or executable inputs, substantially limiting its attack surface. The model does not make network calls at inference time. The NVIDIA Warp custom kernel is compiled and linked at package installation; users should verify package integrity via the official distribution channel (GitHub / Hugging Face). Report security vulnerabilities to NVIDIA [here](https://www.nvidia.com/en-us/support/submit-security-vulnerability/).
|
| 8 |
+
Description of methods to address potentially harmful data in training data: | The body scan datasets used for shape PCA fitting contain 3D geometric data only — no images, text, audio, or personally identifiable information. No screening for harmful content (CSAM, NCII, hate speech) is applicable to abstract 3D body geometry data. The GarmentMeasurement distillation data is synthetically generated using their source code and contains no personal or harmful content. Bones RigPlay motion capture sequences (used for optional corrective MLP training) were retargeted to a fixed skeleton prior to use, removing performer-specific biometrics; the dataset contains no visual appearance data or personally identifiable information.
|
| 9 |
+
Responsible AI practices: | SOMA is designed to represent diverse human body shapes; misuse for stereotyping, body shaming, or generating distorted body shapes to mock or demean individuals is contrary to the intended use. The ANNY backend is specifically recommended for applications requiring age-spanning (infant and children) or globally diverse body shapes to avoid reinforcing demographic biases from scan-collected datasets. Developers are responsible for implementing appropriate content guardrails in any user-facing application built on top of SOMA.
|
docs/model_card.md
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Model Overview
|
| 2 |
+
|
| 3 |
+
### Description:
|
| 4 |
+
SOMA (Unifying Parametric Human Body Models) is a unified framework that decouples identity representation from pose parameterization by mapping any supported parametric body model to a single canonical mesh topology and skeleton, enabling a shared Linear Blend Skinning (LBS) pipeline across all backends. SOMA supports six identity backends (SOMA-shape, SMPL, SMPL-X, MHR, ANNY, and GarmentMeasurements), unified under a canonical mesh topology and SOMA skeleton.
|
| 5 |
+
|
| 6 |
+
This model is ready for commercial use.
|
| 7 |
+
|
| 8 |
+
### License/Terms of Use:
|
| 9 |
+
SOMA is released under the [Apache 2.0 License](../../LICENSE).
|
| 10 |
+
|
| 11 |
+
### Deployment Geography:
|
| 12 |
+
Global
|
| 13 |
+
|
| 14 |
+
### Use Case:
|
| 15 |
+
SOMA is intended for use by computer vision researchers, graphics and animation engineers, machine learning engineers, and robotics researchers and companies. Specific use cases include:
|
| 16 |
+
- **Pose estimation and human reconstruction** — unified pose interface enables seamless identity substitution across backends without retraining.
|
| 17 |
+
- **Motion generation and animation** — apply motion capture sequences to any supported identity model using the same axis-angle pose parameterization.
|
| 18 |
+
- **Avatar synthesis and digital humans** — freely mix identity sources with SOMA's pose representation.
|
| 19 |
+
- **Simulation and robotics** — lightweight analytical forward pass enables real-time simulation pipelines with diverse body shapes.
|
| 20 |
+
|
| 21 |
+
### Expected Release Date:
|
| 22 |
+
GitHub: 03/16/2026 <br>
|
| 23 |
+
|
| 24 |
+
## Reference(s):
|
| 25 |
+
- SOMA: Unifying Parametric Human Body Models.
|
| 26 |
+
- SMPL: A Skinned Multi-Person Linear Model — Loper et al., 2015
|
| 27 |
+
- SMPL-X: Expressive Body Capture: 3D Hands, Face, and Body from a Single Image — Pavlakos et al., 2019
|
| 28 |
+
- MHR: Momentum Human Rig, Meta
|
| 29 |
+
- ANNY: Anthropometric body model spanning full human lifespan
|
| 30 |
+
|
| 31 |
+
## Model Architecture:
|
| 32 |
+
**Architecture Type:** Analytical / Parametric; optional shallow Multilayer Perceptron (MLP) for pose-dependent surface correctives <br>
|
| 33 |
+
|
| 34 |
+
**Network Architecture:** The core pipeline uses no learned neural network components. It is composed of three closed-form analytical modules:
|
| 35 |
+
1. **Barycentric Mesh Transfer** — sparse barycentric correspondence matrix pre-computed per backend; runtime topology transfer is a single sparse matrix-vector product in O(V_h) time.
|
| 36 |
+
2. **RBF Skeleton Fitting** — Radial Basis Function regression with Kabsch rotation alignment yields the 77-joint identity-adapted skeleton transforms in a single linear solve per identity.
|
| 37 |
+
3. **Linear Blend Skinning (LBS)** — standard LBS with joint-orient (T-pose-relative) parameterization; GPU-accelerated via NVIDIA Warp custom kernels with `torch.export`-compatible interface.
|
| 38 |
+
|
| 39 |
+
Optional: shallow pose-dependent corrective MLP (2 hidden layers, ReLU activations) for surface artifact reduction. <br>
|
| 40 |
+
|
| 41 |
+
**This model was developed independently by NVIDIA.** <br>
|
| 42 |
+
|
| 43 |
+
**Number of model parameters:**
|
| 44 |
+
- Core analytical pipeline: 0 learned parameters (closed-form)
|
| 45 |
+
- Principal Component Analysis (PCA) for SOMA-shape model: 128 principal components × ~18,000 vertices × 3 = ~3.1 × 10⁶ coefficients (pre-fitted, not gradient-trained)
|
| 46 |
+
- Optional pose corrective Multilayer Perceptron (MLP) layers: ~1 × 10^8 parameters (if enabled)
|
| 47 |
+
|
| 48 |
+
## Computational Load
|
| 49 |
+
**Throughput:** > 7,033 posed meshes/second on NVIDIA A100 80GB (batch size 128, GPU Warp path) <br>
|
| 50 |
+
**Latency:** 2.1 ms per mesh (batch = 1, GPU); 12.1 ms (batch = 1, CPU 32-core) <br>
|
| 51 |
+
**Skeleton fitting:** < 1.68 ms (batch = 1) <br>
|
| 52 |
+
**Training compute:** N/A — core pipeline requires no gradient-based training; PCA shape space fitted offline from body scan data.
|
| 53 |
+
|
| 54 |
+
## Input(s):
|
| 55 |
+
**Input Type(s):** Numerical tensors (floating-point) <br>
|
| 56 |
+
|
| 57 |
+
**Input Format(s):**
|
| 58 |
+
- Identity coefficients: floating-point tensor, shape `(B, K)` where `K = 128` for SOMA-shape backend or backend-specific dimensionality for SMPL/SMPL-X/MHR/ANNY/Garment
|
| 59 |
+
- Pose parameters: axis-angle vectors `(B, 77, 3)` or rotation matrices `(B, 77, 3, 3)` covering 77 articulated joints (excludes root dummy joint)
|
| 60 |
+
- Optional root translation: `(B, 3)` in meters
|
| 61 |
+
|
| 62 |
+
**Input Parameters:** One-Dimensional (1D) coefficient vectors; Three-Dimensional (3D) pose tensors <br>
|
| 63 |
+
|
| 64 |
+
**Other Properties Related to Input:**
|
| 65 |
+
- Identity coefficients should lie within the shape space of the respective backend (no hard clipping, but extreme out-of-distribution values may produce artifact geometry).
|
| 66 |
+
- Pose parameters follow standard axis-angle convention; no clamping is applied.
|
| 67 |
+
- All inputs are standard float32 PyTorch tensors. No pre-processing beyond normalization within each backend's identity model is required.
|
| 68 |
+
|
| 69 |
+
## Output(s):
|
| 70 |
+
**Output Type(s):** Numerical tensors (3D geometry) <br>
|
| 71 |
+
|
| 72 |
+
**Output Format(s):** PyTorch float32 tensors <br>
|
| 73 |
+
|
| 74 |
+
**Output Parameters:** Three-Dimensional (3D) <br>
|
| 75 |
+
|
| 76 |
+
- Posed mesh vertices: `(B, N_h, 3)` where `N_h ≈ 18,095` — world-space vertex positions in **meters**
|
| 77 |
+
- Joint positions: `(B, 77, 3)` — world-space 3D joint positions in **meters**
|
| 78 |
+
- Rest-shape vertices: `(B, N_h, 3)` in meters (intermediate output, available on request)
|
| 79 |
+
|
| 80 |
+
**Other Properties Related to Output:** All outputs are in meters. Vertex count `N_h` is fixed by the SOMA canonical topology (mid-resolution LOD, approximately 18,095 vertices). Joint count is fixed at 77.
|
| 81 |
+
|
| 82 |
+
Our AI models are designed and/or optimized to run on NVIDIA GPU-accelerated systems. By leveraging NVIDIA's hardware (GPU cores) and software frameworks (CUDA libraries, NVIDIA Warp), the model achieves real-time throughput exceeding 7,000 meshes per second at batch size 128 on an A100 GPU.
|
| 83 |
+
|
| 84 |
+
## Software Integration:
|
| 85 |
+
**Runtime Engine(s):**
|
| 86 |
+
* NVIDIA Warp (GPU-accelerated LBS kernel, `torch.export`-compatible) <br>
|
| 87 |
+
* PyTorch (CPU and GPU fallback) <br>
|
| 88 |
+
* N/A — No dependency on TAO, Riva, NeMo, or other NVIDIA SDK runtimes
|
| 89 |
+
|
| 90 |
+
**Supported Hardware Microarchitecture Compatibility:**
|
| 91 |
+
* NVIDIA Ampere (A100, A30, A40, A10, RTX 3000-series) — tested on A100 80GB <br>
|
| 92 |
+
* NVIDIA Hopper (H100) — forward compatible via Warp/CUDA <br>
|
| 93 |
+
* NVIDIA Ada Lovelace (RTX 4000-series, L40) <br>
|
| 94 |
+
* NVIDIA Turing (T4, RTX 2000-series) <br>
|
| 95 |
+
* NVIDIA Volta (V100) <br>
|
| 96 |
+
* Any NVIDIA GPU with CUDA support — model is lightweight and runs on any NVIDIA GPU <br>
|
| 97 |
+
* CPU only (PyTorch fallback, no CUDA required)
|
| 98 |
+
|
| 99 |
+
**Preferred/Supported Operating System(s):**
|
| 100 |
+
* Linux <br>
|
| 101 |
+
* Windows (via PyTorch CPU/GPU path) <br>
|
| 102 |
+
|
| 103 |
+
## Model Version(s):
|
| 104 |
+
- **SOMA v1.0** — initial public release; includes full-body layer (`SOMALayer`, 77 joints, ~18k vertices) and all six identity backends.
|
| 105 |
+
|
| 106 |
+
## Training, Testing, and Evaluation Datasets:
|
| 107 |
+
|
| 108 |
+
## Training Dataset:
|
| 109 |
+
|
| 110 |
+
**SOMA-shape Identity Model (Shape PCA):**
|
| 111 |
+
- **SizeUSA** — commercially licensed 3D body scan dataset; largest anthropometric survey of the U.S. population, covering diverse body shapes across age, sex, and BMI groups. Used to compute the 128-component PCA shape space for the SOMA-native identity backend.
|
| 112 |
+
- **TripleGangers** — commercially licensed 3D body scan dataset purchased from TripleGangers, containing body scans of 303 individuals. Contributes additional shape diversity to the SOMA-shape PCA.
|
| 113 |
+
- **GarmentMeasurement PCA model** — body shape data distilled from the GarmentMeasurement parametric model to augment the shape space with garment-relevant proportions.
|
| 114 |
+
|
| 115 |
+
**Shallow MLP for Pose Correctives:**
|
| 116 |
+
|
| 117 |
+
- **Bones RigPlay Dataset**: 80,000 (pose,mesh) pairs samples from Bones RigPlay motion capture dataset owned by NVIDIA.
|
| 118 |
+
|
| 119 |
+
**Data Modality**
|
| 120 |
+
- Other: 3D meshes and 3D motion data
|
| 121 |
+
|
| 122 |
+
**Non-Audio, Image, Text Training Data Size**: 20,000 3D meshes and 80,000 (pose,mesh) pairs. <br>
|
| 123 |
+
|
| 124 |
+
**Data Collection Method:** Automatic/Sensors (structured-light 3D body scanners) for SizeUSA and TripleGangers; Synthetic for GarmentMeasurement distillation; motion capture for Bones RigPlay. <br>
|
| 125 |
+
**Labeling Method:** Automatic/Sensors (body landmarks auto-detected from scans) <br>
|
| 126 |
+
|
| 127 |
+
**Dataset License(s):** SizeUSA — commercially licensed (purchased by NVIDIA); TripleGangers — commercially licensed (purchased by NVIDIA); GarmentMeasurement — Generated using the source code; Bones RigPlay - commercially licensed (purchased by NVIDIA)
|
| 128 |
+
|
| 129 |
+
### Testing Dataset:
|
| 130 |
+
Not applicable
|
| 131 |
+
|
| 132 |
+
### Evaluation Dataset:
|
| 133 |
+
Not applicable
|
| 134 |
+
|
| 135 |
+
Data Collection Method: Synthetic <br>
|
| 136 |
+
Labeling Method: Automatic <br>
|
| 137 |
+
**Dataset License(s):** N/A
|
| 138 |
+
|
| 139 |
+
# Inference:
|
| 140 |
+
**Acceleration Engine:** NVIDIA Warp (custom LBS kernel, `torch.export`-compatible); PyTorch (fallback) <br>
|
| 141 |
+
**Test Hardware:**
|
| 142 |
+
* NVIDIA A100 80GB (primary GPU benchmark hardware)
|
| 143 |
+
* 32-core AMD EPYC 7763 (CPU benchmark hardware)
|
| 144 |
+
|
| 145 |
+
## Ethical Considerations:
|
| 146 |
+
NVIDIA believes Trustworthy AI is a shared responsibility and we have established policies and practices to enable development for a wide array of AI applications. When downloaded or used in accordance with our terms of service, developers should work with their internal model team to ensure this model meets requirements for the relevant industry and use case and addresses unforeseen product misuse.
|
| 147 |
+
|
| 148 |
+
SOMA produces 3D human body meshes in a purely geometric and anonymous form; it does not process images, video, or any personally identifiable data at inference time. Input shape coefficients do not correspond to real individuals unless explicitly constructed to do so. Developers integrating SOMA into applications that may reconstruct or represent real individuals should ensure they have obtained appropriate consent and comply with applicable privacy regulations.
|
| 149 |
+
|
| 150 |
+
For more detailed information on ethical considerations for this model, please see the Model Card++ subcards: [BIAS.md](BIAS.md), [EXPLAINABILITY.md](EXPLAINABILITY.md), [SAFETY_and_SECURITY.md](SAFETY_and_SECURITY.md), and [PRIVACY.md](PRIVACY.md).
|
| 151 |
+
|
| 152 |
+
Please report model quality, risk, or security vulnerabilities [here](https://www.nvidia.com/en-us/support/submit-security-vulnerability/).
|
out/omomo_sub1_clothesstand_000_soma.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0bff375b5b0798f40eeef18eed44b714c229084f57a67c7afa3408d5bdadb52f
|
| 3 |
+
size 135868
|
out/omomo_sub1_clothesstand_000_soma_smoke.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:076f766f9999bbdf072f61b102aed2a0e4780759daf37badc05bb21ace7b0377
|
| 3 |
+
size 17995
|
out/smplx2soma_smoke.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:75683e4c2d9ff2f26952655163dfd86704d99ee7ccf5b62e86b9fff2538edde1
|
| 3 |
+
size 8284
|
out/soma2smpl_betafit_smoke.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:588a3812cba8fc535fc571814385e164b9e45798c9b2924fea05f144d22511c2
|
| 3 |
+
size 5836
|
out/soma2smpl_cached_beta_smoke.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7829523fc645cfa3f2d358f016ebbbc93a21d405b5367d5bc74bbd7b2aba016e
|
| 3 |
+
size 4492
|
out/soma2smpl_neutral_smoke.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1452e76b3db1c21aadce68ac4f7038d6f41bba7a153c6acd2dda365476a29c46
|
| 3 |
+
size 5836
|
out/soma2smpl_smoke.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ee656df107fdbacd52b4140b7a224946a16de4a12d2a9cb74fdd561cd0e7d39f
|
| 3 |
+
size 8524
|
out/soma2smpl_smplx2soma_beta_smoke.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9fe4ae3b3d196ccd4d0a23677745930b703c89862da124df7fd3f1578976a10a
|
| 3 |
+
size 5836
|
py_soma_x.egg-info/PKG-INFO
ADDED
|
@@ -0,0 +1,404 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Metadata-Version: 2.4
|
| 2 |
+
Name: py-soma-x
|
| 3 |
+
Version: 0.1.0
|
| 4 |
+
Summary: SOMA body layer
|
| 5 |
+
Home-page: https://github.com/NVlabs/SOMA-X
|
| 6 |
+
Author: NVIDIA Corporation
|
| 7 |
+
License: Apache-2.0
|
| 8 |
+
Project-URL: Bug Tracker, https://github.com/NVlabs/SOMA-X/issues
|
| 9 |
+
Project-URL: Source Code, https://github.com/NVlabs/SOMA-X
|
| 10 |
+
Classifier: Development Status :: 4 - Beta
|
| 11 |
+
Classifier: Intended Audience :: Developers
|
| 12 |
+
Classifier: Intended Audience :: Science/Research
|
| 13 |
+
Classifier: License :: OSI Approved :: Apache Software License
|
| 14 |
+
Classifier: Programming Language :: Python :: 3
|
| 15 |
+
Classifier: Topic :: Scientific/Engineering
|
| 16 |
+
Requires-Python: >=3.8
|
| 17 |
+
Description-Content-Type: text/markdown
|
| 18 |
+
License-File: LICENSE
|
| 19 |
+
Requires-Dist: numpy
|
| 20 |
+
Requires-Dist: scipy
|
| 21 |
+
Requires-Dist: torch
|
| 22 |
+
Requires-Dist: trimesh
|
| 23 |
+
Requires-Dist: warp-lang
|
| 24 |
+
Requires-Dist: rtree
|
| 25 |
+
Requires-Dist: cholespy
|
| 26 |
+
Requires-Dist: huggingface_hub
|
| 27 |
+
Provides-Extra: smpl
|
| 28 |
+
Requires-Dist: smplx; extra == "smpl"
|
| 29 |
+
Provides-Extra: anny
|
| 30 |
+
Requires-Dist: anny; extra == "anny"
|
| 31 |
+
Requires-Dist: Pillow; extra == "anny"
|
| 32 |
+
Provides-Extra: dev
|
| 33 |
+
Requires-Dist: pytest; extra == "dev"
|
| 34 |
+
Requires-Dist: ruff; extra == "dev"
|
| 35 |
+
Requires-Dist: pre-commit; extra == "dev"
|
| 36 |
+
Provides-Extra: demo
|
| 37 |
+
Requires-Dist: pyrender; extra == "demo"
|
| 38 |
+
Requires-Dist: tqdm; extra == "demo"
|
| 39 |
+
Requires-Dist: imageio[ffmpeg]; extra == "demo"
|
| 40 |
+
Provides-Extra: all
|
| 41 |
+
Requires-Dist: smplx; extra == "all"
|
| 42 |
+
Requires-Dist: anny; extra == "all"
|
| 43 |
+
Requires-Dist: Pillow; extra == "all"
|
| 44 |
+
Dynamic: license-file
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
<p align="center">
|
| 49 |
+
<img src="./assets/images/banner.png" alt="Banner" width="100%">
|
| 50 |
+
</p>
|
| 51 |
+
|
| 52 |
+
[](https://opensource.org/licenses/Apache-2.0)
|
| 53 |
+
[](https://arxiv.org/abs/2603.16858)
|
| 54 |
+
|
| 55 |
+
## Overview
|
| 56 |
+
|
| 57 |
+
Parametric human body models, including SMPL, SMPL-X, MHR, Anny, and GarmentMeasurements, are central to a wide range of tasks in human reconstruction, animation, and simulation. However, these models are inherently incompatible: each defines its own mesh topology, joint hierarchy, and parameterization, precluding seamless integration. As a result, leveraging complementary strengths across models (such as combining Anny’s age-range control with SMPL-based motion data) necessitates bespoke adapters for every model pair, hindering interoperability and limiting practical applications.
|
| 58 |
+
|
| 59 |
+
We present **SOMA**—a canonical body topology and rig that acts as a universal pivot for all supported parametric human body models. Instead of replacing existing models, **SOMA unifies them** by mapping their diverse rest shapes onto a single, shared representation. This approach allows any supported identity model to be animated with a unified animation pipeline, eliminating the need for custom adapters or model-specific retargeting. With SOMA, you can mix and match identity sources and pose data at inference time without additional engineering. The entire pipeline remains end-to-end differentiable and GPU-accelerated via NVIDIA Warp.
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
See SOMA in action:
|
| 63 |
+
|
| 64 |
+
<p align="center">
|
| 65 |
+
<img src="assets/images/soma-in-action.gif" alt="SOMA in Action" width="1000"/>
|
| 66 |
+
</p>
|
| 67 |
+
|
| 68 |
+
## Supported Identity Models
|
| 69 |
+
|
| 70 |
+
SOMA currently supports five distinct identity models, each offering unique capabilities:
|
| 71 |
+
|
| 72 |
+
1. [MHR](https://github.com/facebookresearch/MHR): The default identity model in SOMA, providing high-fidelity body shape representation.
|
| 73 |
+
2. [Anny](https://github.com/naver/anny): Particularly well-suited for modeling children, broadening applicability to younger subjects.
|
| 74 |
+
3. [SMPL-Family](https://smpl.is.tue.mpg.de/): Supports both SMPL and SMPL-X models, enabling interoperability with established standards in the field.
|
| 75 |
+
4. **SOMA-shape**: A proprietary PCA-based model developed as part of this project, designed to offer SMPL-like functionality with 128 PCA coefficients for identity representation.
|
| 76 |
+
5. [GarmentMeasurement](https://github.com/mbotsch/GarmentMeasurements): A PCA-based identity model trained on the CAESARS dataset, suitable for specialized use cases involving garment fitting and measurement.
|
| 77 |
+
|
| 78 |
+
We welcome community contributions to extend support for additional identity models.
|
| 79 |
+
|
| 80 |
+
## Unified Pose Correctives (Beta)
|
| 81 |
+
Thanks to SOMA's unified framework, pose-dependent corrective deformations that mitigate LBS artifacts are seamlessly available for all supported identity models, including those that do not provide correctives themselves (e.g., Anny and GarmentMeasurement).
|
| 82 |
+
<p align="center">
|
| 83 |
+
<img src="assets/images/soma_correctives.gif" alt="SOMA Pose Correctives" width="800"/>
|
| 84 |
+
</p>
|
| 85 |
+
|
| 86 |
+
## Related projects that already support SOMA
|
| 87 |
+
SOMA is part of a larger effort to enable human animation, robotics, physical AI, and other applications. We also provide the following works with SOMA support:
|
| 88 |
+
|
| 89 |
+
* [GEM](https://github.com/NVlabs/GEM-X) - SOMA-based video pose estimation.
|
| 90 |
+
* [Kimodo](https://github.com/nv-tlabs/kimodo) - SOMA-based controllable text-to-motion generation method for **human(oid)s**.
|
| 91 |
+
* [BONES-SEED Dataset](https://huggingface.co/datasets/bones-studio/seed) - a large scale human(oid) motion capture dataset in SOMA format. Also provides retargeted G1 data.
|
| 92 |
+
* [SOMA Retargeter](https://github.com/NVIDIA/soma-retargeter) - for SOMA to G1 retargeting.
|
| 93 |
+
* [ProtoMotion](https://github.com/NVlabs/ProtoMotions) - simulation and learning framework for training physically simulated digital human(oid)s
|
| 94 |
+
* [GEAR SONIC](https://github.com/NVlabs/GR00T-WholeBodyControl) - a humanoid behavior foundation model. (coming soon)
|
| 95 |
+
|
| 96 |
+
## Installation
|
| 97 |
+
|
| 98 |
+
### Install from PyPI
|
| 99 |
+
|
| 100 |
+
```bash
|
| 101 |
+
pip install py-soma-x
|
| 102 |
+
```
|
| 103 |
+
|
| 104 |
+
With optional extras:
|
| 105 |
+
```bash
|
| 106 |
+
pip install "py-soma-x[smpl]" # SMPL/SMPL-X support
|
| 107 |
+
pip install "py-soma-x[anny]" # Anny support
|
| 108 |
+
```
|
| 109 |
+
|
| 110 |
+
Assets are automatically downloaded from HuggingFace on first use (cached in `~/.cache/huggingface/hub/`).
|
| 111 |
+
|
| 112 |
+
> **Note:** SMPL/SMPL-X requires `chumpy`, which must be installed separately:
|
| 113 |
+
> ```bash
|
| 114 |
+
> pip install --no-build-isolation chumpy
|
| 115 |
+
> ```
|
| 116 |
+
> If that fails, install from source:
|
| 117 |
+
> ```bash
|
| 118 |
+
> pip install --no-build-isolation git+https://github.com/mattloper/chumpy@580566eafc9ac68b2614b64d6f7aaa8
|
| 119 |
+
> ```
|
| 120 |
+
>
|
| 121 |
+
> SMPL/SMPL-X model files (`SMPL_NEUTRAL.pkl`, `SMPLX_NEUTRAL.npz`) require a separate license and must be downloaded from [SMPL](https://smpl.is.tue.mpg.de/) / [SMPL-X](https://smpl-x.is.tue.mpg.de/). Pass the model path explicitly:
|
| 122 |
+
> ```python
|
| 123 |
+
> soma = SOMALayer(
|
| 124 |
+
> identity_model_type="smpl",
|
| 125 |
+
> identity_model_kwargs={"model_path": "/path/to/SMPL_NEUTRAL.pkl"},
|
| 126 |
+
> )
|
| 127 |
+
> ```
|
| 128 |
+
|
| 129 |
+
<details>
|
| 130 |
+
|
| 131 |
+
<summary>Developer installation (clone with Git LFS)</summary>
|
| 132 |
+
|
| 133 |
+
### Clone with Git LFS (Required for Assets)
|
| 134 |
+
This repository uses Git LFS for large asset files (e.g., assets/Nova_neutral.npz). You must install Git LFS to download the actual data; otherwise, you will encounter file loading errors.
|
| 135 |
+
|
| 136 |
+
1. Install Git LFS (if not installed):
|
| 137 |
+
````bash
|
| 138 |
+
git lfs install
|
| 139 |
+
````
|
| 140 |
+
|
| 141 |
+
2. Clone and Pull Data:
|
| 142 |
+
```bash
|
| 143 |
+
git clone https://github.com/NVlabs/SOMA-X.git
|
| 144 |
+
cd SOMA-X
|
| 145 |
+
git lfs pull
|
| 146 |
+
```
|
| 147 |
+
_(If you already cloned the repo, just run `git lfs pull` to fetch the missing assets.)_
|
| 148 |
+
|
| 149 |
+
### Prepare Python environment
|
| 150 |
+
|
| 151 |
+
**Linux:**
|
| 152 |
+
```bash
|
| 153 |
+
pip install uv
|
| 154 |
+
uv venv .venv
|
| 155 |
+
source .venv/bin/activate # or: . .venv/bin/activate
|
| 156 |
+
# Install PyTorch with CUDA — adjust the version (cu124, cu126, cu130, …)
|
| 157 |
+
# to match your GPU and driver. See https://pytorch.org/get-started/locally/
|
| 158 |
+
uv pip install torch --index-url https://download.pytorch.org/whl/cu124
|
| 159 |
+
uv pip install ".[dev]"
|
| 160 |
+
```
|
| 161 |
+
|
| 162 |
+
**Windows (PowerShell):**
|
| 163 |
+
```powershell
|
| 164 |
+
pip install uv
|
| 165 |
+
uv venv .venv
|
| 166 |
+
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser # one-time setup
|
| 167 |
+
.\.venv\Scripts\activate
|
| 168 |
+
# Install PyTorch with CUDA — adjust the version (cu124, cu126, cu130, …)
|
| 169 |
+
# to match your GPU and driver. See https://pytorch.org/get-started/locally/
|
| 170 |
+
uv pip install torch --index-url https://download.pytorch.org/whl/cu124
|
| 171 |
+
uv pip install ".[dev]"
|
| 172 |
+
```
|
| 173 |
+
Then run tests: `pytest tests/ -v`.
|
| 174 |
+
|
| 175 |
+
### Optional Dependencies
|
| 176 |
+
|
| 177 |
+
**For SMPL and SMPLX support:**
|
| 178 |
+
|
| 179 |
+
```bash
|
| 180 |
+
uv pip install ".[smpl]"
|
| 181 |
+
pip install --no-build-isolation chumpy
|
| 182 |
+
```
|
| 183 |
+
_NOTE: `chumpy` (required by `smplx` at runtime) has a broken PyPI build and must be installed with `--no-build-isolation`. If that fails, install from source: `pip install --no-build-isolation git+https://github.com/mattloper/chumpy@580566eafc9ac68b2614b64d6f7aaa8`_
|
| 184 |
+
|
| 185 |
+
You also need to download `SMPL_NEUTRAL.pkl` or `SMPLX_NEUTRAL.npz` separately:
|
| 186 |
+
1. Visit the [SMPL](https://smpl.is.tue.mpg.de/) or [SMPLX](https://smpl-x.is.tue.mpg.de/) website.
|
| 187 |
+
2. Register and download the SMPL (v1.1.0 for Python) or [SMPL-X](https://download.is.tue.mpg.de/download.php?domain=smplx&sfile=smplx_lockedhead_20230207.zip) (with removed head bun) model files.
|
| 188 |
+
3. Extract and copy `SMPL_NEUTRAL.pkl` to `./assets/SMPL/SMPL_NEUTRAL.pkl` and `SMPLX_NEUTRAL.npz` to `./assets/SMPLX/SMPLX_NEUTRAL.npz`.
|
| 189 |
+
|
| 190 |
+
**Note:** The SMPL models are subject to a separate license and cannot be redistributed with this repository.
|
| 191 |
+
|
| 192 |
+
**For [Anny](https://github.com/naver/anny) support:**
|
| 193 |
+
```bash
|
| 194 |
+
uv pip install ".[anny]"
|
| 195 |
+
```
|
| 196 |
+
|
| 197 |
+
**For [GarmentMeasurement](https://github.com/mbotsch/GarmentMeasurements) support:**
|
| 198 |
+
```bash
|
| 199 |
+
git clone https://github.com/mbotsch/GarmentMeasurements
|
| 200 |
+
python tools/convert_gm_pca_to_npz.py ./GarmentMeasurements/data/pca/point.pca assets/GarmentMeasurements/point.npz
|
| 201 |
+
rm -rf GarmentMeasurements
|
| 202 |
+
```
|
| 203 |
+
</details>
|
| 204 |
+
|
| 205 |
+
|
| 206 |
+
## Usage
|
| 207 |
+
|
| 208 |
+
```python
|
| 209 |
+
import torch
|
| 210 |
+
from soma import SOMALayer
|
| 211 |
+
|
| 212 |
+
# Initialize the layer — assets are auto-downloaded from HuggingFace
|
| 213 |
+
soma = SOMALayer(
|
| 214 |
+
identity_model_type="mhr", # or "soma" "smpl", "smplx", "anny", "garment"
|
| 215 |
+
device="cuda"
|
| 216 |
+
)
|
| 217 |
+
|
| 218 |
+
# Or use a local assets directory
|
| 219 |
+
# soma = SOMALayer(data_root="./assets", identity_model_type="mhr", device="cuda")
|
| 220 |
+
|
| 221 |
+
# Forward pass
|
| 222 |
+
# poses: (B, num_joints, 3)
|
| 223 |
+
# identity: (B, num_coeffs)
|
| 224 |
+
# scale_params: (B, num_scales) - Optional, depending on model type (required for MHR)
|
| 225 |
+
output = soma(poses, identity, scale_params=scale_params)
|
| 226 |
+
vertices = output["vertices"]
|
| 227 |
+
```
|
| 228 |
+
|
| 229 |
+
## Running the Demo
|
| 230 |
+
|
| 231 |
+
Install the demo environment (includes pyrender, tqdm, imageio with ffmpeg for video output):
|
| 232 |
+
|
| 233 |
+
```bash
|
| 234 |
+
uv pip install ".[demo]"
|
| 235 |
+
```
|
| 236 |
+
|
| 237 |
+
If you want to run all identity models (soma, mhr, anny, smpl, smplx, garment), install the full set and use the same build steps as for tests:
|
| 238 |
+
|
| 239 |
+
```bash
|
| 240 |
+
uv pip install -e ".[all,demo]"
|
| 241 |
+
pip install --no-build-isolation chumpy
|
| 242 |
+
```
|
| 243 |
+
|
| 244 |
+
Then run the demo script:
|
| 245 |
+
|
| 246 |
+
```bash
|
| 247 |
+
# Run all models (default: soma, mhr, anny, smpl, smplx, garment)
|
| 248 |
+
python tools/demo_soma_vis.py --data-root ./assets --output-dir ./out
|
| 249 |
+
|
| 250 |
+
# Run specific models only
|
| 251 |
+
python tools/demo_soma_vis.py --data-root ./assets --output-dir ./out --identity-model-type soma, mhr, smplx
|
| 252 |
+
|
| 253 |
+
# Run a single model
|
| 254 |
+
python tools/demo_soma_vis.py --data-root ./assets --output-dir ./out --identity-model-type anny
|
| 255 |
+
|
| 256 |
+
# Run MHR with random shapes
|
| 257 |
+
python tools/demo_soma_vis.py --data-root ./assets --output-dir ./out --identity-model-type mhr --random-shape
|
| 258 |
+
```
|
| 259 |
+
|
| 260 |
+
This will generate example animation videos for the selected models in the `out/` directory.
|
| 261 |
+
|
| 262 |
+
**Demo Options:**
|
| 263 |
+
- `--identity-model-type`: Comma-separated list of models to use (options: `soma`, `mhr`, `anny`, `smplx`, `smpl`, `garment`, default: `soma,mhr,anny,smpl,smplx,garment`)
|
| 264 |
+
- `--random-shape`: Generate random body shapes instead of using neutral shapes
|
| 265 |
+
- `--motion-file`: Path to custom motion file (default: `assets/ROM5.npy`)
|
| 266 |
+
- `--image-size`: Render resolution (default: 1920)
|
| 267 |
+
- `--device`: Device to use (default: `cuda:0`)
|
| 268 |
+
|
| 269 |
+
## Conversion of pose parameters from other models to SOMA
|
| 270 |
+
We provide conversion tools for converting from SMPL and MHR pose parameters to SOMA.
|
| 271 |
+
Both tools use `PoseInversion.fit()`, which supports two complementary solvers — both initialized by a single-pass skeleton transfer fit for fast convergence:
|
| 272 |
+
|
| 273 |
+
- **Analytical** (default): iterative inverse-LBS with Newton-Schulz refinement. Extremely fast (~1200 FPS) with comparable accuracy.
|
| 274 |
+
- **Autograd FK**: 6D rotation optimization by backpropagating FK + LBS. Slow but controllable (e.g. extra weights on extremities).
|
| 275 |
+
|
| 276 |
+
The two can be combined: the analytical solve warm-starts autograd refinement — best of both worlds.
|
| 277 |
+
|
| 278 |
+
### SMPL to SOMA
|
| 279 |
+
|
| 280 |
+
<img src="assets/images/smpl2soma.gif" alt="SMPL to SOMA conversion" width="400"/>
|
| 281 |
+
|
| 282 |
+
```bash
|
| 283 |
+
# Convert SMPL animation to SOMA (renders comparison video)
|
| 284 |
+
python -m tools.smpl2soma
|
| 285 |
+
|
| 286 |
+
# Export SOMA poses as .npz
|
| 287 |
+
python -m tools.smpl2soma --output-npz out/smpl_soma.npz
|
| 288 |
+
|
| 289 |
+
# Tune analytical iterations (defaults: --body-iters 2 --full-iters 1)
|
| 290 |
+
python -m tools.smpl2soma --body-iters 3 --full-iters 1 --batch-size 64
|
| 291 |
+
|
| 292 |
+
# Analytical + autograd FK refinement (best accuracy)
|
| 293 |
+
python -m tools.smpl2soma --body-iters 2 --full-iters 1 --autograd-iters 10
|
| 294 |
+
```
|
| 295 |
+
|
| 296 |
+
**Benchmark** (402 SMPL frames, RTX 5000 Ada):
|
| 297 |
+
|
| 298 |
+
| Method | Speed | Mean | Median | Max |
|
| 299 |
+
|---|---|---|---|---|
|
| 300 |
+
| Analytical (body=2, full=1) — **default** | **1279 FPS** | 0.65 cm | 0.52 cm | 17.8 cm |
|
| 301 |
+
| Autograd FK (10 iters, lr=5e-3) | 199 FPS | 1.04 cm | 0.97 cm | 18.1 cm |
|
| 302 |
+
| Autograd FK (100 iters) | 18 FPS | 0.49 cm | 0.39 cm | 16.8 cm |
|
| 303 |
+
|
| 304 |
+
### MHR to SOMA
|
| 305 |
+
|
| 306 |
+
<img src="assets/images/mhr2soma.gif" alt="MHR to SOMA conversion" width="400"/>
|
| 307 |
+
|
| 308 |
+
For [SAM 3D Body](https://huggingface.co/datasets/facebook/sam-3d-body-dataset) or similar MHR-format data.
|
| 309 |
+
|
| 310 |
+
```bash
|
| 311 |
+
# Convert a directory of SAM 3D Body parquet files
|
| 312 |
+
python -m tools.mhr2soma --input path/to/sam_3d_body/data/coco_train
|
| 313 |
+
|
| 314 |
+
# Convert and export as .npz
|
| 315 |
+
python -m tools.mhr2soma --input path/to/parquet_dir --output-npz out/mhr_soma.npz
|
| 316 |
+
|
| 317 |
+
# Tune analytical iterations (defaults: --body-iters 2 --full-iters 1)
|
| 318 |
+
python -m tools.mhr2soma --input path/to/parquet_dir --max-samples 100 --body-iters 3
|
| 319 |
+
|
| 320 |
+
# Analytical + autograd FK refinement (best accuracy)
|
| 321 |
+
python -m tools.mhr2soma --input path/to/parquet_dir --autograd-iters 10
|
| 322 |
+
```
|
| 323 |
+
|
| 324 |
+
**Benchmark** (200 SAM 3D Body samples, RTX 5000 Ada):
|
| 325 |
+
|
| 326 |
+
| Method | Speed | Mean | Median | Max |
|
| 327 |
+
|---|---|---|---|---|
|
| 328 |
+
| Analytical (body=2, full=1) — **default** | **342 FPS** | 0.61 cm | 0.34 cm | 14.8 cm |
|
| 329 |
+
| Autograd FK (10 iters, lr=5e-3) | 161 FPS | 1.05 cm | 0.76 cm | 13.5 cm |
|
| 330 |
+
| Autograd FK (100 iters) | 16 FPS | 0.48 cm | 0.22 cm | 13.3 cm |
|
| 331 |
+
|
| 332 |
+
> **Note:** The `mhr2soma` tool's end-to-end throughput (~50 samp/s) is dominated by MHR identity model evaluation, not SOMA inversion. The MHR TorchScript model is called twice per sample (once to produce the rest shape, once for posed vertices). The SOMA inversion itself runs at 342 FPS.
|
| 333 |
+
|
| 334 |
+
### AMASS dataset to SOMA
|
| 335 |
+
|
| 336 |
+
Convert [AMASS](https://amass.is.tue.mpg.de/) motion sequences (SMPL format `.npz` files) to SOMA.
|
| 337 |
+
|
| 338 |
+
> **Prerequisites:** Download the AMASS dataset from [amass.is.tue.mpg.de](https://amass.is.tue.mpg.de/) and place `SMPL_NEUTRAL.pkl` in `assets/SMPL/` (see SMPL installation above).
|
| 339 |
+
|
| 340 |
+
```bash
|
| 341 |
+
# Single file — converts and renders a comparison video
|
| 342 |
+
python -m tools.convert_amass_to_soma --input path/to/amass_sequence.npz
|
| 343 |
+
|
| 344 |
+
# Single file — export .npz only (skip rendering)
|
| 345 |
+
python -m tools.convert_amass_to_soma --input path/to/amass_sequence.npz --output-npz out/soma.npz --no-render
|
| 346 |
+
|
| 347 |
+
# Batch convert entire dataset (mirrors folder structure)
|
| 348 |
+
python -m tools.convert_amass_to_soma --input-dir /data/amass/ --output-dir out/amass_soma/
|
| 349 |
+
|
| 350 |
+
# Shuffle file order (useful when running multiple workers in parallel)
|
| 351 |
+
python -m tools.convert_amass_to_soma --input-dir /data/amass/ --output-dir out/amass_soma/ --shuffle
|
| 352 |
+
|
| 353 |
+
# Tune analytical iterations
|
| 354 |
+
python -m tools.convert_amass_to_soma --input path/to/seq.npz --body-iters 3 --full-iters 1
|
| 355 |
+
|
| 356 |
+
# Analytical + autograd FK refinement (best accuracy)
|
| 357 |
+
python -m tools.convert_amass_to_soma --input path/to/seq.npz --autograd-iters 10
|
| 358 |
+
```
|
| 359 |
+
|
| 360 |
+
The output `.npz` files contain:
|
| 361 |
+
- `poses`: `(N, J, 3)` rotation vectors per joint
|
| 362 |
+
- `root_translation`: `(N, 3)` root position in meters
|
| 363 |
+
- `joint_names`: list of SOMA joint names
|
| 364 |
+
- `per_vertex_error`: `(N, V)` reconstruction error per vertex
|
| 365 |
+
- `identity_coeffs` / `scale_params`: identity parameters used
|
| 366 |
+
|
| 367 |
+
|
| 368 |
+
**Benchmark** (A100):
|
| 369 |
+
|
| 370 |
+
| Method | Speed | Mean | Median | Max |
|
| 371 |
+
|---|---|---|---|---|
|
| 372 |
+
| Analytical (body=2, full=1) — **default** | **17393 FPS** | 0.53 cm | 0.32 cm | 8.8 cm |
|
| 373 |
+
| Autograd FK (10 iters, lr=5e-3) | 435 FPS | 0.78 cm | 0.64 cm | 8.8 cm |
|
| 374 |
+
|
| 375 |
+
|
| 376 |
+
|
| 377 |
+
|
| 378 |
+
|
| 379 |
+
## Citation
|
| 380 |
+
If you use this code in your work, please cite:
|
| 381 |
+
|
| 382 |
+
```bibtex
|
| 383 |
+
@article{soma2026,
|
| 384 |
+
title={SOMA: Unifying Parametric Human Body Models},
|
| 385 |
+
author={Jun Saito and Jiefeng Li and Michael de Ruyter and Miguel Guerrero and Edy Lim and Ehsan Hassani and Roger Blanco Ribera and Hyejin Moon and Magdalena Dadela and Marco Di Lucca and Qiao Wang and Xueting Li and Jan Kautz and Simon Yuen and Umar Iqbal},
|
| 386 |
+
eprint={2603.16858},
|
| 387 |
+
archivePrefix={arXiv},
|
| 388 |
+
year={2026},
|
| 389 |
+
url={https://arxiv.org/abs/2603.16858},
|
| 390 |
+
}
|
| 391 |
+
```
|
| 392 |
+
|
| 393 |
+
## Acknowledgements
|
| 394 |
+
- [SMPL-Body](https://smpl.is.tue.mpg.de/bodylicense.html) was used to create an interpolator between SMPL and SOMA mesh topologies, courtesy of the Max Planck Institute for Intelligent Systems.
|
| 395 |
+
- [MHR](https://github.com/facebookresearch/MHR) was used to learn the pose corrective model.
|
| 396 |
+
- [Anny](https://github.com/naver/anny) for [WARP](https://github.com/NVIDIA/warp)-based sparse linear blend skinning.
|
| 397 |
+
- [GarmentMeasurement](https://github.com/mbotsch/GarmentMeasurements) was used to augment the data in our shape model.
|
| 398 |
+
|
| 399 |
+
|
| 400 |
+
## License
|
| 401 |
+
|
| 402 |
+
This codebase is licensed under [Apache-2.0](LICENSE).
|
| 403 |
+
|
| 404 |
+
This project will download and install additional third-party open source software projects. Review the license terms of these open source projects before use.
|