Bezier eğrisi nedir? Kuadratik ve kübik Bezier nasıl hesaplanır, oyunlarda nerede kullanılır?

Cevap

Bezier eğrisi, kontrol noktalarıyla tanımlanan pürüzsüz bir eğridir. Eğri ilk ve son noktadan geçer, aradaki kontrol noktaları ise eğriyi kendine doğru "çeker" ama genelde üzerinden geçilmez. t 0'dan 1'e giderken eğri üzerinde ilerlenir.

De Casteljau yöntemi: Art arda lerp yapmaktır.

  • Kuadratik (3 nokta): B(t) = (1-t)² P0 + 2(1-t)t P1 + t² P2
  • Kübik (4 nokta): B(t) = (1-t)³ P0 + 3(1-t)²t P1 + 3(1-t)t² P2 + t³ P3
Vector3 Quadratic(Vector3 p0, Vector3 p1, Vector3 p2, float t)
{
    Vector3 a = Vector3.Lerp(p0, p1, t);
    Vector3 b = Vector3.Lerp(p1, p2, t);
    return Vector3.Lerp(a, b, t);
}

Vector3 Cubic(Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3, float t)
{
    float u = 1f - t;
    return u*u*u*p0 + 3f*u*u*t*p1 + 3f*u*t*t*p2 + t*t*t*p3;
}

// Teğet (yön): kübiğin türevi
Vector3 CubicTangent(Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3, float t)
{
    float u = 1f - t;
    return 3f*u*u*(p1 - p0) + 6f*u*t*(p2 - p1) + 3f*t*t*(p3 - p2);
}

Oyunlardaki kullanımlar: Kamera yolları (cutscene), mermi ve fırlatma yayları, güdümlü füze yörüngeleri, yol/ray/nehir spline'ları, UI animasyonları ve easing eğrileri (CSS cubic-bezier ve Unity AnimationCurve benzeri).

Önemli tuzak: t sabit hızla artırıldığında eğri üzerinde sabit hızla hareket edilmez; kontrol noktalarının sık olduğu yerde nesne yavaşlar. Sabit hız için eğri önceden örneklenip bir arc-length tablosu çıkarılır ve mesafeye göre t bulunur. Uzun yollar için birden fazla kübik segment birleştirilir (Catmull-Rom veya B-spline); Unity'de Splines paketi bunu hazır sunar.

  1. Vektörlerde dot product ve cross product oyunlarda ne için kullanılır?OrtaOyun MatematiğiGame Dev
  2. AABB ve sphere çarpışma testleri matematiksel olarak nasıl yapılır? Hangisi ne zaman tercih edilir?OrtaOyun MatematiğiGame Dev
  3. Transform matrisleri nedir? Local space ile world space arasında nasıl dönüşüm yapılır?OrtaOyun MatematiğiGame Dev
  4. Quaternion ile Euler açıları arasındaki fark nedir? Gimbal lock nedir?ZorOyun MatematiğiGame Dev
  5. Lerp ve Slerp nedir? Lerp'ü Update içinde yanlış kullanmak neden sorun yaratır?OrtaOyun MatematiğiGame Dev
  6. Vektör normalize etmek ne demektir? Çapraz harekette neden gereklidir?KolayOyun MatematiğiGame Dev

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle