Я пытаюсь сохранить информацию о координатах файла .obj в многомерном списке Python.Каждый элемент списка «куб» представляет собой 8 наборов трехмерных координат.
Код работал нормально, пока я не превратил его в функцию.Кажется, проблема в цикле for, который я сделал для анализа данных, но я не вижу, что не так.
Файл данных выглядит следующим образом (вставлены только первые два объекта (кубы, поскольку все они кубы).)): https://pastebin.com/U7dmCsC3
def read_obj(file, filepath):
# count number of distinct objects (cubes)
o = 0
for line in fyle:
if line[0] == "o":
o += 1
print("number of cubes =", o)
# generate array with size = number of cubes
vec = [0.0] * 3
arr = [vec] * 8
cube = [arr] * o
# each element of cube is an array of
# the 8 co-ordinates that make up the cube
i = -1
j = 0
for line in open(filepath):
#
vec_line = line.split(" ")
if line[0] == "o":
i += 1
j = 0
if line[0] == "v" and line[1] == " ":
cube[i][j] = [float(vec_line[1]),
float(vec_line[2]),float(vec_line[3])]
j += 1
return cube
Чтобы запустить его,
cube = read_obj(fyle, filepath)
Где путь к файлу выбирается с помощью tkinter, и
fyle = open(filepath,"r")
Каждый раз, когда буква "o "читается, функция должна записать следующие координаты в куб [i] в цикле for до следующего" o ", а затем перейти к кубу [i + 1] и так далее.У меня проблема в том, что каждая строка куба одинакова - координаты последнего объекта в файле данных.