CSM.Dev

Загрузка .map

Вопрос. Какого вида алгоритм нужен для того, чтобы после загрузки .map файла построить браши на основе данных в нём?
Проблема такая, что в этом формате каждая сторона браша описывается тремя точками. Как вывести из них нормаль, я ещё примерно представляю. А вот как высчитать количество точек у каждой поверхности и их позиции, сообразить не могу. Хотя по идее это что-то простое, иначе ид и вальв не стали бы пользоваться такой извращённой записью.
Рылся в исходник бета-хаммера, там всё как-то мутно и раскиданно. Реквестирую указание на конкретные функции или пример кода.
И да, загрузчик пишу на яве, код на C как образец подойдёт.