Raytracer saya mendukung berbagai objek. Untuk memotongnya, saya menggunakan teknik standar mengubah sinar menjadi ruang-objek. Ini bekerja dengan luar biasa sampai saya menambahkan gerakan kabur.
Saya memodelkan blur sebagai urutan transformasi (untuk menyederhanakan diskusi, katakanlah tepat dua), bukan satu. Pendekatan saya adalah mengambil transformasi invers dari sinar di kedua keyframe dan lerp posisi / arah.
Ini sepertinya berfungsi dengan baik untuk terjemahan, tetapi itu rusak untuk rotasi. Misalnya, ada dua segitiga yang mengalami rotasi 30 dan 90 derajat:
(4 sampel, rekonstruksi MN, sampel merah berasal dari dekat dua keyframe)
Di sudut-sudut, saya berharap sampel yang telah dililitkan terletak pada garis lurus antara kedua simpul. Sebaliknya, mereka menonjol keluar. Ini salah. Dalam adegan yang lebih menarik dengan transformasi yang lebih menarik, itu menyebabkan berbagai mode kegagalan. Misalnya inilah baling-baling yang mengalami rotasi 45:
(100 sampel, normals divisualisasikan)
Beberapa masalah disebabkan oleh pemecahan BVH (mengasumsikan ekstrem objek terletak pada keyframe), tetapi bahkan brute force membuat tidak benar.
Saya dapat memperbaiki semua ini dengan melakukan transformasi ke depan saja (mengubah objek, bukan ray), tetapi ini hanya bekerja untuk objek di mana itu mungkin (hanya segitiga, sebenarnya).
Bagaimana saya bisa membuat raytracer saya menghasilkan perkiraan linear untuk transformasi (terutama rotasi) dengan mengubah sinar, bukan objek?