Необходимо реализовать визуализацию создания гранульного фильтра и пропуска через него молекул воды на Unreal Engine 4.
Для этого задачу декомпозировать на следующие:
-
Создание фильтра: гранулы фильтра – шары с диаметром sphereDiameter cо случайно заданным отклонением в пределах sphereDiameterTolerance. Необходимо сгенерировать «облако» таких шаров (в целом может представлять собой кубическую форму), расположенное над формой для фильтра. Шары, падая под действием гравитации, будут засыпаться в фильтр.
-
Генерация формы для фильтра: внутри – цилиндр с диаметром innerCylinderD. Внешняя оболочка диаметра outerCylinderD представляет собой полый открытый цилиндр без верхнего круга. Высота цилиндров сylinderH. cylindersDelta – расстояние между основаниями цилиндров (внутрений цилиндр приподнят относительно внешнего).
Для генерации внешней оболочки предстоит написать свой алгоритм.
При этом нужно помнить, что поверхность цилиндра в обычном виде обращена к пользователю внешней частью (что задаётся соответствующим обходом треугольников в ней против или по часовой стрелке – как – предстоит уточнить вам в коде). Внешняя часть – рабочая, она рендерится на экран. Внутренняя же часть «прозрачна» (невидима). Направление обхода точек треугольника (против или по часовой стрелке) определяет нормаль к нему, а, следовательно, видимость треугольника.
В вашем случае при генерации полого цилиндра необходимо «внешнюю» часть повернуть внутрь, к оси цилиндра, изменив функцию генерации цилиндра (за счёт изменения в направлении обхода соединяемых точек).
-
При старте программы гранулы засыпаются в форму.
В настройках файле должны быть доступны следующие параметры:
- sphereDiameter
- sphereDiameterTolerance
- innerCylinderD
- outerCylinderD
- сylinderH
- cylindersDelta
- scaleFactor
- particlesH