Точка дерева BSP на плоскости для операций CSG - PullRequest
0 голосов
/ 12 октября 2018

У меня есть дерево BSP, которое я использую, и оно действительно хорошо работает для множества вещей, включая операции CSG.Один сценарий, который продолжает появляться и до недавнего времени не был проблемой, это сценарий точки / треугольника на плоскости полупространства другого.В документации по большинству деревьев BSP описывается построение узлов с внутренними и внешними дочерними элементами и построение таким образом, но в действительности ничего не сказано о ситуации «точки на плоскости».В настоящее время для построения я предполагаю, что точки на плоскости находятся «внутри», что хорошо работает и означает, что мне не нужно разбивать треугольник, однако часть операций CSG включает в себя объединение двух разных сеток, и это создает проблему для точки насценарии самолета.В настоящее время я реализовал методы для принятия флага onPlaneIsInside, который позволяет мне решать проблемы с этим слиянием.В зависимости от данных, хотя этого недостаточно, и это заставляет меня думать, что мне нужно разделить плоские треугольники и провести повторную разбивку, чтобы обеспечить точные границы с сетками CSGing.

Мой вопрос о наилучшей практике для этой ситуации?Я думаю, что разбиение плоских треугольников и удержание только внутри / снаружи дочерних узлов, возможно, то, что нужно сделать, однако есть ли смысл в добавлении еще одного дочернего узла onPlane.Поскольку это не описано ни в одной литературе по BSP, это хорошая идея?Я не могу найти никаких описаний, которые делают это, это заставляет меня думать, что это плохая идея, и я должен просто продолжать расщеплять плоские треугольники соответственно и размещать точки на плоскости как «внутренние» дочерние узлы.

Большое спасибо.

[EDIT:] Я думаю, ключ к названию?Есть ли эквивалент для 3 дочерних узлов, внутри / снаружи / на плоскости?

...