Продолжал писать экспортер модели из Blender, формат простой поэтому отображатор модели уже был на писан и использовался в качестве тестирования экспортера.

В начале все было просто если модель гладкая (smooth) то я шел по вершинам и экспортировал их (индекс при этом я просто инкрементировал), если негладкая то шел по граням (faces) и экспортировал все вершины грани. Но после этого я понял что если модель частично гладкая то это не работает т.к. простое прибавление для индексирования не подходит, пришлось заводить отдельный массив для генерируемых вершин - которые принадлежат негладким граням, и выводить по очереди: в начале идут гладкие грани потом негладкие.
Сделал.
Добавил нормали все норм, добавил текстуры и все разъехалось для гладких граней т.к. одной вершине могут принадлежать разные координаты текстуры, пришлось делать обработку и заводить отдельный массив для новых сгенерированных вершин которые отличаются только uv координатами. Хранил все это как dictionary в dictionary: [face -> [индекс вешины в face -> нужный индекс вершины] ]. При выводе индексов уже смотрел есть ли грань в dictionary, если есть то для соответсвующей вершины менял индекс иначе брал из вершины по [связи базовая вершина -> индекс].
Сделал.

Вроде основы, а как муторно