# -*- coding:UTF-8 -*-
# Used for processing and modifing obj files.
# This code only processes geometry information and ignores materials.
import os
import datetime
import numpy as np
class OBJ:
def __init__(self, file_dir, file_name, material):
'''
Loads a Wavefront OBJ file.
'''
# (x, y, z)
self.vertices = []
# (x, y, z)
self.normals = []
# (u, v)
self.texcoords = []
# (([v1, v2, ...], [vt1, vt2, ...], [vn1, vn2, ...]), ...)
self.faces = []
self.file_dir = file_dir
self.file_name = file_name
self.material = material
for line in open(os.path.join(file_dir, file_name), "r"):
# Comments
if line.startswith('#'):
continue
values = line.split()
if not values:
continue
# Vertex
if values[0] == 'v':
v = [float(i) for i in values[1:4]]
self.vertices.append(v)
# Normal
elif values[0] == 'vn':
vn = [float(i) for i in values[1:4]]
self.normals.append(vn)
# UV coordinate
elif values[0] == 'vt':
vt = [
obj文件读写以及模型缩放
本文详细介绍了如何进行OBJ文件的读取和写入操作,并探讨了在三维模型处理中如何实现模型的缩放,包括关键代码示例和步骤解析。
摘要由CSDN通过智能技术生成