August 26, 2022
Генерация случайных точек на поверхности мешей с помощью линий
В этом посте речь пойдет о способе покрыть случайными равномерно-распределенными точками только видимые поверхности сцены, исключая поверхности внутри пересечений мешей.
Метод можно погуглить как "Sampling with Global Lines" или "Sampling with Uniformly Distributed Lines". Есть несколько интересных вариаций, расскажу о самой простой.
- Формируем баунд-сферу вокруг геометрии сцены.
- Берем две случайные точки на поверхности баунд-сферы и делаем из них линию.
- Находим точки пересечения линии с геометрией уровня. Это и будут наши искомые точки на поверхности.
- Повторяем 2-4.
Если все меши на сцене замкнутые, то исключить точки внутри пересечений мешей довольно легко, подсчитывая число входов и выходов луча в поверхность по ходу рейкаста.
Результат такой же, как и в методе inverse cdf, с той лишь разницей, что мы исключили невидимые точки