У меня проблемы с включением преобразований. По каким-то причинам все идет не так, как я думаю, но, честно говоря, все трансформации вперед и назад вызывают у меня головокружение.
Как я читал везде (хотя явные объяснения редки, imho), основной алгоритм преобразований заключается в следующем:
Из того, что я понял, это должно сработать. Я почти уверен, что моя проблема заключается в том, что я пытаюсь рассчитать освещение, так как и начальное пересечение, и алгоритм освещения используют одну и ту же функцию (obj.getIntersection()
). Но опять же, я понятия не имею. 🙁
Вы можете прочитать части моего кода здесь:
main.cpp, scene.cpp, sphere.cpp, SDF-loader.cpp
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, чтобы помочь мне — и, пожалуйста, помогите мне! 😉
РЕДАКТИРОВАТЬ:
Я сделал некоторые результаты, может быть, кто-то «видит» (по результатам), где я могу ошибаться:
нетрансформированная сцена:
Сфера масштабируется (2,4,2):
коробка переведена (0, -200,0):
сфера переведена (-300,0,0):
сфера вращается (45 °):
Вообще для преобразования в компьютерной графике я бы порекомендовал вам взглянуть на scratchapixel.com и, в частности, на этот урок:
http://scratchapixel.com/lessons/3d-basic-lessons/lesson-4-geometry/
и этот, где вы можете увидеть, как преобразования (матрицы) используются для преобразования лучей и объектов:
Если вы еще не знаете этот удивительный ресурс, я бы посоветовал им воспользоваться и, возможно, распространить информацию в вашем университете. Ваш учитель должен был указать вам на это.
Других решений пока нет …