интересная тема
Mr_F_ +1
метод с рендером в текстуру может подойти только для специфичных случаем
ибо кроме проблем с уникальными текстурами для декалей (и их большими разрешениями), еще не забывайте что в блице всего два набора текстурных координат, и если первый для [цвета,спекуляра,нормали], а второй например для лайтмапы, то для декалей не остается
юзать первый набор - не факт что развертка равномерная, декали могут деформироваться, как впрочем и для развертки лайтмапы.
слышал про вариант с использованием стенсил-буфера для "обрезки" висячих частей, но думаю это тоже геморно (еще и потому что надо будет очередной DLL-костыль писать)
кстати по поводу способа с копированием и обрезкой геометрии, там тоже проблем полно, например

есть два пересекающихся бокса (два этажа например, соответственно горизонтальный бокс - пол, вертикальный - стена)
зеленым цветом - точка пика и бокс декаля для обрезки
черным цветом - выбраные для обрезки треугольники
после обрезки
синим цветом - нужные треугольники
красным цветом - ненужные треугольники
мне в голову приходит только один вариант - сначала обрезать выбраные треугольники плоскостями других выбраных, а потом уже резать боксом
если есть какие-нибудь другие идеи, буду рад их выслушать
ЗЫ
представляем 4 бесконечных плоскости, равноудалённые от позиции дырки и образующие квадрат
|
кстати по рисунку также можно понять почему резать лучше боксом, а не квадратом