Я нашел несколько похожих вопросов, но ни один из них точно не описал проблему, с которой я столкнулся. У меня есть файл OBJ, который содержит строки, описывающие положения вершин:
v 0,01214 0,4242 0,82874
Я хочу преобразовать эти данные в дружественный к Matlab формат, чтобы я мог отобразить некоторые данные с этими и другими значениями, полученными из других файлов. Я использую python (и numpy) для преобразования этих данных в двоичный файл, поэтому я использую следующую функцию:
def extract_verts(in_file, out_file):
v = np.zeros(3, np.float32)
for line in in_file:
words = line.split()
if words[0] == 'v':
v[:] = [np.float32(s) for s in words[1:4]]
print v[:]
v.tofile(out_file)
Проблема в том, что когда я читаю его, используя matlab (fread делает работу), первые значения верны, но затем читаются неверные значения. после некоторых неправильных значений правильные значения снова считываются, но они кажутся смещенными (например, при использовании структуры vector-3 компонент x отображается как компонент y). Позже это происходит снова и неправильно, а затем корректируются, но смещенные значения считываются и так далее. Я проверил, что файл прочитан правильно, так как я могу видеть прочитанные значения из строки печати.
Я пытался прочитать файл с помощью python, на случай, если это будет проблема с Matlab:
data = np.fromfile('file.dat', np.float32)
i = 0
while i < 100:
print data[i]
i = i+1
и это происходит точно так же (даже неправильные значения одинаковы).
Я думаю, что это может быть связано с порядком байтов или проблемами, зависящими от ОС, потому что этот набор сценариев, который я использую, работает на MacOS (сценарии были созданы коллегой), но я использую Windows 7. Имеет кто-нибудь сталкивался с подобной проблемой в прошлом?
Спасибо.