Мій raytracer підтримує найрізноманітніші об'єкти. Для їх перетину я використовую стандартну техніку перетворення променів у об’єкт-простір. Це працює фантастично, поки я не додаю розмиття руху.
Я моделюю розмиття руху як послідовність перетворень (щоб спростити обговорення, скажімо, точно два) замість одного. Мій підхід полягає в тому, щоб здійснити обернене перетворення променя в обох ключових кадрах і проглядати положення / напрямки.
Здається, це добре працює для перекладів, але воно руйнується для обертання. Наприклад, два трикутники, що зазнають обертання на 30 і 90 градусів:
(4 зразки, реконструкція MN, зразки червоного кольору з’явилися поблизу двох ключових кадрів)
В кутах я б очікував, що лерпаті проби лежать на прямій лінії між двома вершинами. Натомість вони випинаються назовні. Це неправильно. У більш цікавих сценах з більш цікавими перетвореннями він спричиняє різноманітні режими відмов. Наприклад, ось гвинт, який проходить 45 обертів:
(100 проб, візуалізовані нормалі)
Деякі проблеми пов'язані з розривом BVH (він передбачає, що екстремальність об'єктів лежить у ключових кадрах), але навіть груба сила передачі невірна.
Я можу все це виправити, роблячи лише перетворення вперед (трансформуючи об’єкт, а не промінь), але це працює лише для об'єктів, де це можливо (насправді лише трикутники).
Як я можу змусити мій Raytracer виробляти лінійні наближення до перетворення (особливо обертання) шляхом перетворення променів, а не предметів?