mirror of
https://github.com/barkeser2002/VMD-Motion-Optimizer.git
synced 2026-09-25 01:10:14 +03:00
READMEler koda uymayan davranışlar anlatıyordu: depth ve ground'un "tüm kemiklere global çeviri uyguladığı" yazıyordu, oysa kod yalnızca kök kemiğe uyguluyor (kod içi docstring de README ile çelişiyordu). Kamera/ışık bloklarının yazılmadığı notu artık geçersiz - korunuyorlar. Eklenenler: Releases indirme bağlantısı, tüm CLI seçeneklerinin tam tablosu (--no-preserve-end, --replace-xr-with, --flatten-interp, --force, --ground-exclude-ik/--ground-include-ik dahil), test çalıştırma talimatı ve ground stabilizasyonun neyi ölçtüğüne dair dürüst bir not (VMD iskelet içermez, mutlak yükseklik ondan türetilemez). CLI örneklerindeki "\" satır devamları kaldırıldı - Windows'a yönelik bir araçta ne cmd ne PowerShell bunu kabul ediyor, örnekler kopyalanınca çalışmıyordu. v1.1.0: --remove-depth ve --stabilize-ground çıktısı v1.0.4'ten farklı. Bu bilinçli - v1.0.4'ün çıktısı hatalıydı. Değişiklik notu üç READMEde de var.
122 lines
4.8 KiB
Markdown
122 lines
4.8 KiB
Markdown
# VMD Motion Optimizer by Barış Keser (barkeser2002)
|
||
|
||

|
||
|
||
VMD Motion Optimizer, MikuMikuDance (MMD) `.vmd` motion dosyalarını akıllı sezgilerle
|
||
(heuristic) optimize eder. Pozisyon/rotasyon anahtarlarını azaltır, derinlik
|
||
sürüklenmesini kaldırır ve zemin stabilizasyonu uygular.
|
||
|
||
- Yazar: Barış Keser (barkeser2002)
|
||
- Lisans: GNU General Public License v3.0 (GPL-3.0) — bkz. `LICENSE`
|
||
- Sürüm: bkz. `version.txt`
|
||
|
||
## İndirme
|
||
|
||
En güncel taşınabilir Windows derlemesi için
|
||
[Releases sayfası](https://github.com/barkeser2002/VMD-Motion-Optimizer/releases).
|
||
ZIP'i açıp `VMDOptimizer/VMDOptimizer.exe` dosyasını çalıştırın; kurulum gerekmez.
|
||
Her sürümde indirmeyi doğrulamak için bir `.sha256` dosyası bulunur.
|
||
|
||
## Özellikler
|
||
|
||
- RDP benzeri eğri sadeleştirme (pozisyon)
|
||
- Quaternion SLERP açısal hata sınırlı sadeleştirme (rotasyon)
|
||
- Morph anahtar sadeleştirme (sabit tutuşlar rampaya dönmez, korunur)
|
||
- **İnterpolasyon (bezier) eğrileri korunur** — elle ayarlanmış yumuşatmalar kaybolmaz
|
||
- **Kamera, ışık, self-shadow ve IK/görünürlük blokları olduğu gibi taşınır**
|
||
- Depth (Z) sürüklenmesini kaldırma: kök kemiğin düşük frekanslı eğilimi ölçülüp
|
||
çıkarılır, gerçek ileri/geri hareket korunur
|
||
- Ground (Y) stabilizasyon: en düşük ayak kemiği Y ötelemesi ölçülür ve kök kemik
|
||
hedef yüksekliğe taşınır
|
||
- PyQt6 GUI: profiller, sürükle-bırak ve çalışan bir İptal düğmesi
|
||
- PyInstaller ile portable derleme (Windows)
|
||
|
||
## Kurulum (CLI)
|
||
|
||
1. Python 3.11 / 3.12 önerilir (en az 3.10 gerekir)
|
||
2. Sanal ortam ve bağımlılıklar:
|
||
|
||
```bash
|
||
py -3 -m venv .venv
|
||
.venv\Scripts\pip.exe install -r requirements.txt
|
||
```
|
||
|
||
## CLI Kullanımı
|
||
|
||
```bash
|
||
python scripts/optimize_vmd.py input.vmd -o output.vmd --pos-eps 0.05 --rot-eps-deg 0.5 --morph-eps 0.001
|
||
```
|
||
|
||
Derinlik sürüklenmesi kaldırma ve zemin stabilizasyonu ile:
|
||
|
||
```bash
|
||
python scripts/optimize_vmd.py input.vmd -o output.vmd --remove-depth --depth-smooth 30 --stabilize-ground --ground-target-y 0.0 --ground-smooth 5
|
||
```
|
||
|
||
### Seçenekler
|
||
|
||
| Seçenek | Varsayılan | Açıklama |
|
||
|---|---|---|
|
||
| `-o`, `--output` | `<girdi>_optimized.vmd` | Çıktı yolu |
|
||
| `--pos-eps` | `0.05` | Pozisyon toleransı (model birimi) |
|
||
| `--rot-eps-deg` | `0.5` | Rotasyon toleransı (derece) |
|
||
| `--morph-eps` | `0.001` | Morph ağırlık toleransı |
|
||
| `--key-step` | `1` | Kaba downsample: her N. anahtarı tut |
|
||
| `--no-preserve-end` | kapalı | Kanal uçlarını zorla koruma |
|
||
| `--flatten-interp` | kapalı | Kaynak eğrileri at, MMD varsayılanını yaz |
|
||
| `--force` | kapalı | Girdi dosyasının üzerine yazmaya izin ver (**tehlikeli**) |
|
||
| `--remove-depth` | kapalı | Kök kemikteki global Z sürüklenmesini kaldır |
|
||
| `--depth-smooth` | `0` | Depth eğilim penceresi. **En az 2 olmalı** (öneri: `30`) |
|
||
| `--depth-scale` | `1.0` | Kaldırılan sürüklenme çarpanı |
|
||
| `--stabilize-ground` | kapalı | Karakteri zemine sabitle |
|
||
| `--ground-target-y` | `0.0` | Hedef zemin yüksekliği |
|
||
| `--ground-smooth` | `0` | Zemin ofseti için yumuşatma penceresi |
|
||
| `--ground-scale` | `1.0` | Zemin ofseti çarpanı |
|
||
| `--ground-all-bones` | kapalı | Sadece ayak yerine tüm kemiklerden ölç |
|
||
| `--ground-exclude-ik` | açık | IK kemiklerini zemin ölçümünden çıkar |
|
||
| `--ground-include-ik` | — | IK kemiklerini zemin ölçümüne dahil et |
|
||
| `--replace-xr-with` | `Barış Keser` | `XR Animator` model adını değiştir |
|
||
|
||
## GUI Kullanımı
|
||
|
||
```bash
|
||
python scripts/app.py
|
||
```
|
||
|
||
## Derleme
|
||
|
||
- CMD: `build_exe.bat` (portable klasör `dist/VMDOptimizer`)
|
||
- PowerShell: `build_exe.ps1`
|
||
|
||
## Testler
|
||
|
||
```bash
|
||
pip install -r requirements-dev.txt
|
||
python -m pytest tests -q
|
||
```
|
||
|
||
## Notlar
|
||
|
||
- Bazı VMD dosyalarında imza ile model adı arasındaki dolgu standart dışıdır;
|
||
okuyucu bunu otomatik algılayıp onarır.
|
||
- Hem VMD 1.0 (10 baytlık model adı) hem VMD 2.0 (20 baytlık) başlıkları desteklenir.
|
||
- Ground stabilizasyon, VMD içindeki *öteleme değerlerini* ölçer; gerçek dünya
|
||
yüksekliğini değil. VMD dosyası iskelet içermediği için mutlak yükseklik ondan
|
||
türetilemez. Ofset kök/merkez kemiğe uygulanır; tüm iskelet onunla taşınır.
|
||
- Model adı `XR Animator` ise varsayılan olarak `Barış Keser` ile değiştirilir
|
||
(`--replace-xr-with` ile değiştirilebilir).
|
||
- GUI şu an yalnızca Türkçedir.
|
||
|
||
### v1.1.0 ile değişenler
|
||
|
||
`--remove-depth` ve `--stabilize-ground` artık **v1.0.4'ten farklı çıktı üretir**.
|
||
v1.0.4'te `--remove-depth` kökün Z değerini kendinden çıkarıyor ve tüm ileri/geri
|
||
hareketi sıfırlıyordu; interpolasyon eğrileri siliniyordu; kamera/ışık/gölge/IK
|
||
blokları düşüyordu; sabit morph tutuşları uzun rampalara dönüyordu. Bunlar hataydı —
|
||
yeni çıktı amaçlanan davranıştır.
|
||
|
||
## Kredi
|
||
|
||
- VMD Motion Optimizer by Barış Keser (barkeser2002)
|
||
- GPL-3.0 — bkz. `LICENSE`
|