Как понять, из каких вершин должны состоять полигоны в 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.Нарисовано точками
2.Полигонами по 4 вершины

