Nova Physics, hafif ve kullanımı kolay bir 2B fizik motorudur.
Bu sayfayı ayrıca şu dillerde okuyabilirsin
- Basit ve kullanıcı-dostu arayüz
- Katı cisim dinamiği
- Basit şekil çarpışmaları (daire, dikdörtgen, çokgen, AABB)
- Broad-phase stratejileri (Spatial hashing & BVH-ağacı)
- Fiziksel materyal özellikleri (sürtünme kuvveti, elastiklik ve yoğunluk)
- Eklem kısıtlamaları (yay, uzaklık, menteşe ..)
- Gayet iyi yığın dengesi ve çarpışma sürekliliği
- Erin Catto'nun iteratif "sequential impulse" çözücü algoritması
- Semi-implicit (symplectic) Euler integrasyonu
- Çarpışma eventleri
- CPU yükünü azaltmak için cisimleri uyutma
- Çekici güçler
- Birleşik profiler
- Dış bağımlılığı olmayan taşınabilir codebase
- SDL2 kullanan çeşitli etkileşimli örnek demolar
Nova Physics 0.x.x
sürümleri boyunca hala daha erken aşamalarında. Motorun ve API'ın hala optimizasyon ve gelişme anlamında kat edecek yolu var. 1.x.x
kilometre taşından önce değinilmesi gereken bazı noktalar:
-
Nova'da şuan kullanılabilir olan broad-phase stratejileri spatial hash grid ve BVH (kaplayan alan hiyerarşisi) ağacı. İkisi de hızlı ama hala geliştirilebilirler, özellikle BVH-ağacının oluşumu ve multi-thread kullanan SHG.
-
Nova Physics'in Python modülü (burada) hala WIP. Kullanımı kolay ve Pythonic bir arayüzü olmasını istiyorum. Başka diller için bindinglere her zaman açığız!
Geliştirme kütüphaneleri her zaman son sürümle beraber nova-physics-X.X.X-devel.zip
(veya .tar.gz
) ismiyle yüklenirler. Arşivi buradan indirip libnova.a
(veya libnova.lib
) 'i favori derleyicinizle kullanabilirsiniz.
Fakat eğer Nova Physics'i baştan kendiniz derlemek istiyor (veya gerek duyuyorsanız), derleme kılavuzunu kullanın.
Örnek demoları examples klasöründe, demoları çalıştırmak için demoları derleme kılavuzunu kullanın
Dökümantasyona buradan erişebilirsiniz.
Aşağıdakiler Nova Physics'i yazarken bana yardımcı olan müthiş kaynaklardan bazıları.
- Erin Catto, GDC Presentations
- Chris Hecker, Rigid Body Dynamics
- Randy Gaul, Game Physics Articles
- Allen Chou, Physics Blogs
- Marjin Tamis & Giuseppe Maggiore, Constraint Based Physics Solver
- Micheal Manzke, Multiple Contact Resolution
- Dirk Gregorius, Robust Contact Creation for Physics Simulations
- Andrew Sevenson, Separating Axis Theorem Explanation
MIT © Kadir Aksoy
Nova Physics her zaman ücretsiz ve açık-kaynak olacaktır. Fakat bağışlara her zaman açığız!
Türkçeye çevrilirken bozulmak zorunda kalan veya anlamını koruyamayan / karşılığı olmayan kelimeler ve teknik terimler (alfabetik sırayla):
- AABB (Axis Aligned Bounding Box): Bir cismi veya şekli kapsayan olabilecek en küçük, eksenlere hizalanmış kutu.
- Kısıtlama (constraint): Kısıtlama fizik motorlarının temelidir diyebiliriz. Cisimlerin uzay içerisinde nasıl davranacağını, nasıl davranamayacağını belirler. Cisimleri "kısıtlar".
- Çarpışma: İki cismin birbirine değmesi.
- Eklem (joint): Eklemler, iki cismin birbirine bağlı olduğu bir kısıtlamadır. Cisimlerin özgürlük derecelerinden (degrees of freedom) birini veya birden çoğunu kıstlar.
- Stacking (yığın): Basitçe birbirinin üstüne oturtulmuş cisimlerdir. Fizik motorlarının dengesini ve stabilitesini ölçmek için iyi bir benchmarktır.