Animasyonlu 3B karakter modellerini görüntüleyip oynatmak için yazılmış bir WinForms uygulaması. mixamo.com sitesinden indirdiğiniz karakterleri ve animasyonları açabilir, animasyonun her karesini kontrol edebilirsiniz. Modern OpenGL (GLSL 4.50) shader'ları kullanır. Model yükleme için Assimp, çizim için OpenTK kütüphaneleri kullanıldı.
Githubtaki acgessler/open3mod projesinden faydalanıldı ve geliştirildi. Temiz ve basit bir kod yazılmaya çalışıldı. Umarım faydalı olur. İyi eğlenceler.
special thanks to acgessler.
- Model yükleme: FBX, OBJ, DAE ve Assimp'in desteklediği diğer formatlar. Gömülü (embedded) texture'lar da okunur.
- İskelet animasyonu: GPU üzerinde skinning (vertex başına 4 kemik). Mixamo animasyonları ayrı bir dosyadan modele uygulanabilir. Oynatma hızı, döngü ve kare kontrolü Inspector penceresinden yapılır.
- Fiziksel tabanlı aydınlatma (PBR):
- Cook-Torrance specular (GGX, Smith, Schlick Fresnel).
- Diffuse, specular ve normal map desteği. FBX normal map'leri otomatik bulunur.
- Ortam (ambient) ışığı skybox'tan hesaplanır, böylece model arka plandaki gökyüzü ve zeminle uyumlu aydınlanır.
- Lineer renk uzayında hesap, ACES tone mapping ve gamma düzeltmesi.
- Stüdyo tipi ışık düzeni: ana ışık, dolgu ışığı, arka kontur ışığı ve alttan yansıma.
- Kameralar: Orbit ve FPS kamera.
- Görünüm: skybox, zemin ızgarası ve FPS/kamera bilgi ekranı.
- Windows, .NET Framework 4.8
- OpenGL 4.5 destekleyen ekran kartı
- Visual Studio (derlemek için)
Kullanılan kütüphaneler XR/Lib klasöründe bulunur: OpenTK 3.1, OpenTK.GLControl 3.1, AssimpNet 4.1, TargaImage.
XR.slndosyasını Visual Studio ile açın.- Derleyip çalıştırın (F5).
Örnek modeller XR/Resources/Model klasöründedir ve derleme sırasında çıktı klasörüne kopyalanır.
| Menü | İşlev |
|---|---|
| Open → Load Model | Model dosyası açar |
| Open → Load Animation | Açık modele başka bir dosyadaki animasyonu uygular |
| View → Environment / Display / Grid | Skybox, bilgi ekranı ve ızgarayı açıp kapatır |
| View → Grid → Properties | Izgara ayarları |
| Camera → Orbit / FPS | Kamera türünü seçer |
| Inspection | Animasyon seçimi ve oynatma kontrolleri (Inspector) |
Fare ve klavye
| Kontrol | İşlev |
|---|---|
| Sol tuş + sürükle | Kamerayı döndürür |
| Orta tuş + sürükle | Kamerayı kaydırır (pan) |
| Tekerlek | Orbit kamerada yakınlaştırır, FPS kamerada görüş açısını değiştirir |
| W / A / S / D | İleri, sol, geri, sağ |
| Space / Sol Shift | Yukarı / aşağı |
XR/
├── Engine/ Model, Mesh, Animator, Renderer, Shader, Texture, Environment, kameralar
├── Forms/ Ana pencere, Inspector, ızgara ayarları
├── Controls/ Animasyon zaman çubuğu
├── Resources/
│ ├── Shaders/ GLSL shader'ları (Model, Environment, Grid2D, Label)
│ ├── Skybox/ Ortam haritası
│ └── Model/ Örnek modeller
└── Settings/ Uygulama ayarları
- Model kendi üzerine gölge düşürmez (shadow mapping yok).
- Solus The Knight modelinin FBX dosyasında diffuse texture olarak occlusion map tanımlı, bu yüzden model beyaz görünür. Doğru renk haritası
tex_knight_color_map_1024.pngdosyasıdır. - LaraCroft modelinin mesh'i ile Mixamo animasyonları farklı birimlerde olduğundan, animasyon oynatılınca model büyük görünür.