Files
Barış Keser 5423971fa7 Dokümanları kodla hizala ve v1.1.0'a yükselt
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.
2026-08-03 10:13:11 +03:00

122 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# VMD Motion Optimizer by Barış Keser (barkeser2002)
![Logo](logo.png)
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`