Я не специалист в этом вопросе, и я могу пропустить важные вопросы. Итак, вот что я наивно сделал бы.
Треугольники, имеющие внешнюю нормаль, направленную вниз, покажут выступы. Когда они проецируются вертикально и объединяются общими краями, они определяют многоугольные области базовой плоскости. Сначала вы должны построить эти спроектированные многоугольники, найти их пересечения и упорядочить пересечения по Z. (Возможно, вы захотите рассмотреть лицевые полигоны, чтобы учесть толщину поверхности).
Теперь для каждого многоугольника пересечения вы рисуете вертикали к тому, что чуть ниже. Проекции вертикалей могут быть взяты из регулярной сетки или как-то еще, чтобы настроить плотность. Вы также можете рассмотреть возможность отбора этих столбов из подвала непрерывно на верхнюю поверхность, возможно, остановив некоторые из них ранее.
Ключевым компонентом в этой процедуре является хороший алгоритм пересечения полигонов.