parce56
@parce56
Системный аналитик

Какую библиотеку или технологию лучше использовать для задачи учета теней?

Всем здравствуйте!

Пытаюсь решить следующую задачи в области 3D моделирования.

Есть некоторая заданная в пространстве плоскость, источник света, двигающийся по заданному уравнению и некий заданный объект между источником света и плоскостью, который отбрасывает тень на плоскость. Тень, по мере движения источника света, изменяет свою форму и положение на плоскости.

Задача состоит в том, чтобы разделить исследуемую плоскость сеткой с шагом h и в определённый момент времени проанализировать каждую ячейку на предмет наличия в ней тени.
Пытаюсь решить этот вопрос с использованием библиотеки three.js. Все условия задачи сформировать удалось, не получается получить доступ к математике плоскости и тени на ней, чтобы анализировать ячейки. Есть минус - медленно формируется тень и решение задачи через данную библиотеку затратно в плане вычислительных мощностей. Хотя если кто подскажет как сделать через three.js - буду рад.

Для решения задачи смотрел более низкоуровневые библиотеки WebGL и OpenGL. Там, в принципе, можно решить задачу через шейдеры, но достаточно высокий порог вхождения, если уж совсем ничего не останется, то буду изучать их.

Какие технологии и библиотеки для решения данной задачи можете подсказать Вы?
Моё предпочтительное поле работы - JavaScript. Готов рассмотреть варианты с C++ и C#.
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
jamakasi666
@jamakasi666
Просто IT'шник.
Смотри в сторону THREE.Raycaster(). Бери источник света. От него кидаешь "лучи" по граням модели, на плоскости проецируешь по кастам точки, по точкам модель, это будет тенью. Саму плоскость с сеткой h немного проще будет поделить на отдельные объекты в сцене(каждая клетка отдельный объект) и тогда будет очень легко отловить на какой клетке тень есть а на какой нет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AlexSku
не буду отвечать из-за модератора
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы