R50 24a617f300ed3468f2a0f63b15a39f57
Программист

Simple Python Pygame Ray Tracing

Добавлено 14 мая 2021 в 22:05
yaroslavsokolov/py_raytracing: Ray tracing engine (github.com)
Кому лень читать - тут все есть ☝
Простейший трассировщик лучей на Python с Pygame
Для примера я взял объекты - сферы, т.к. с ними легче начать. Если коротко - мы берем условную точку камеры и считаем, что изображение проецируется на плоскость, расположенной в удалении от нее на единичный вектор. Потом через каждый пиксель пропускаем луч - т.е. берем от точки камеры до точки на проекции вида камеры (то бишь наш экран) условно вектор k и считаем где будет пересечение (проверяем пересечение с каждой сферой), если пересечение есть, то вычисляем длину до него через тот самый вектор k, умноженный на некоторое число (нам нужно именно это число). Далее следуют преломления света, рассеивание и тп тем же методом, в зависимости от псевдо шейдера сферы.
074165b7f2 1e172dc6b7 93418446e3 29e5c119cd