Как рассчитать точки кисти из исходного движка vmf?

Я пытаюсь сделать кисти из движка Source .vmf файл в C ++, используя OpenGL.

.vmf сохраняет сплошные кисти в виде ряда плоскостей, которые я хотел бы использовать для вычисления точек для каждой кисти. Я уверен, что это будет сделано точно так же, как и для всех движков Quake. .map файлы также.

По сути, каждая точка кисти — это точка пересечения трех плоскостей. Я нашел такой же вопрос, что и мой, по stackoverflow, и объяснение состоит в том, чтобы получить единичные нормали для 3-х плоскостей, а затем использовать уравнение 8 на этой странице mathworld.wolfram.com/Plane-PlaneIntersection.html. Моя проблема в том, что я понятия не имею, как это реализовать

Вот некоторый код для одной шестигранной кубической кисти:

    "plane" "(0 0 256) (0 256 256) (256 256 256)""plane" "(0 256 0) (0 0 0) (256 0 0)""plane" "(0 0 0) (0 256 0) (0 256 256)""plane" "(256 256 0) (256 0 0) (256 0 256)""plane" "(0 256 0) (256 256 0) (256 256 256)""plane" "(256 0 0) (0 0 0) (0 0 256)"

Я действительно понятия не имею, с чего начать, любая помощь будет оценена, спасибо.

1

Решение

Обычный способ сделать это — заполнить дерево BSP плоскостями. С установленным BSP довольно легко выполнять булевы операции, такие как «взять все эти плоскости и испустить (выпуклый) объем, ограниченный ими», пересечения плоскостей — это ребра, соприкосновение ребер — это точки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]