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.
4.8 KiB
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ı.
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)
- Python 3.11 / 3.12 önerilir (en az 3.10 gerekir)
- Sanal ortam ve bağımlılıklar:
py -3 -m venv .venv
.venv\Scripts\pip.exe install -r requirements.txt
CLI Kullanımı
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:
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ı
python scripts/app.py
Derleme
- CMD:
build_exe.bat(portable klasördist/VMDOptimizer) - PowerShell:
build_exe.ps1
Testler
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 Animatorise varsayılan olarakBarış Keserile değiştirilir (--replace-xr-withile 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
