Как понять, из каких вершин должны состоять полигоны в 3Д модели (Obj модель)

Я делал свой 3D wareframe движок и был уже на шаге добавления полигонов но у меня возникла проблема с их отображением т.к. я не могу сделать так чтобы полигоны состояли из соседних вершин (квадратом) , у меня вершины соединяются по прямой и квадратов из полигонов не получается т.к. программа не знает какие вершины соединять (в каком порядке). Я использую чтение .obj файла и если строчка примерно равна вот этому:

v 1.543241 43.321 5.5324 - это значит что на координатах (1.543241x 43.321y 5.5324z) есть вершина

И у меня есть список с координатами вершин. Программа рисует либо просто точки на месте вершин либо какие-то корявые полигоны (потому что не знает какие вершины должны входить в состав полигона).

Код считывания координат вершин из файла:

#name = 'Deer.obj'
coords=[]
    with open(name) as obj:
        for line in obj.read().splitlines():
            #print(line)
            try:
                if line[0]=='v':
                    coords.append(line[line.index('v')+2:].split())
            except:
                pass

(Беспокоится о неверной работе функции Polygon3D я не считаю нужным т.к. я ее уже много раз проверял) Отрисовка полигонов по координатам:

polyCords=[]
#con - счетчик вершин для отдельного полигона
#pol - сколько вершин должно входить в полигон
con=1
pol=pol
for ncl in coords:
    if con!=pol:
        polyCords.append(pos_convert(ncl[0],ncl[1],ncl[2], posS))
    else:
        con=1
        con+=1
        if len(polyCords)==pol:
            Polygon3D(polyCords, ang, clr=(randint(100,255),randint(100,255),randint(100,255)))
            polyCords=[]

Функция Polygon3D работает также как и функция pygame.draw.polygon только преобразовывает 3Д координаты в 2Д

1.Нарисовано точками

Олень по 3Д точкам

2.Полигонами по 4 вершины

Олень с полигонами


Ответы (0 шт):