Işın izleyicim çok çeşitli nesneleri destekler. Onları kesişmek için ışınları nesne boşluğuna dönüştürme standart tekniğini kullanıyorum. Hareket bulanıklığı ekleyene kadar bu harika çalışıyor.
Hareket bulanıklığını bir yerine bir dönüşüm dizisi (tartışmayı basitleştirmek için tam olarak iki diyelim) olarak modelliyorum. Benim yaklaşımım ışığın her iki anahtar karede ters dönüşümünü almak ve pozisyonları / yönleri lerp.
Bu çeviriler için işe yarıyor gibi görünüyor, ama rotasyonlar için çöküyor. Örneğin, 30 ve 90 derece rotasyona uğrayan iki üçgen:
(4 örnek, MN rekonstrüksiyonu, kırmızı örnekler iki ana karenin yanından geldi)
Köşelerde, kesilen örneklerin iki köşe arasında düz bir çizgi üzerinde durmasını beklerdim. Bunun yerine, dışarı doğru şişerler. Bu yanlış. Daha ilginç dönüşümlere sahip daha ilginç sahnelerde, çeşitli hata modlarına neden olur. Örneğin, 45 rotasyondan geçen bir pervane:
(100 örnek, normaller görselleştirildi)
Bazı problemler BVH kırılmasından kaynaklanır (nesnelerin ekstrüzyonunun anahtar karelerde yattığını varsayar), ancak kaba bir kuvvet oluşturma bile yanlıştır.
Tüm bunları sadece ileri dönüşümler yaparak (ışını değil, nesneyi dönüştürerek) düzeltebilirim, ancak bu sadece mümkün olan nesneler için çalışır (sadece üçgenler, gerçekten).
Işın izleyicimin nesneleri değil, ışınları dönüştürerek dönüşüme (özellikle dönmeye) doğrusal yaklaşımlar üretmesini nasıl sağlayabilirim?