"" " Простой скрипт для преобразования слоя в OBJ модели """ импорт ОС из argparse импорта ArgumentParser из plyfile импорта PlyData четкости parse_args (): парсер = ArgumentParser () parser.add_argument ( 'ply_path') parser.add_argument ( '- obj_path », по умолчанию = None, требуемый = False) Args = parser.parse_args () возвращение args.ply_path, args.obj_path Защиты ply_path_to_obj_path (ply_path): "" " Заменяет .ply расширение с .obj расширения """ возвращение os.path .splitext (ply_path) [0] + '' .obj четкости не преобразовать (ply_path, obj_path = None): ""» Преобразует заданный .ply файл в файл .obj «»» obj_path = obj_path или ply_path_to_obj_path (ply_path) курсируют = PlyData.read (ply_path) с открытым (obj_path, 'ж'), а е: f.write ( "# OBJ файл \ п") verteces = слойные [ 'вершина'] для V в verteces: р = [v [ 'х'], v [ 'у'], v [ 'г']] , если 'красный' в ст и 'зеленых' в ст и 'синий' в V: с = [v [ 'красный'] / 256, v [ 'зеленый'] / 256, v [ 'синего'] / 256] остальное: с = [0, 0, 0] а = р + с f.write ( "V%. 6f% .6f% .6f% .6f% .6f% .6f \ п»% кортеж (а)) для V в verteces: если «пх» в V и «пу» в V и «новозеландских» в V: п = (v [»п х '], в [' пу '] в [' NZ «]) f.write ( "Vn% .6f% .6f% .6f \ п" % п) при г в verteces: если 'S' в V и 'Т' в ст: т = (v [ 's'], v [ 'т']) f.write ( "В.Т.% .6f% .6f \ п" % т) , если 'лицо' в сгибе: ибо я в слое [ 'лица'] [ ''] vertex_indices: f.write ( "F") для J в диапазоне (i.size): # б = [я [J] +1] II = [I [J] + 1, я [J] + 1, я [J] + 1] , # f.write ( "% d" % кортеж (II)) f.write ( "% d /% d /% d" % кортеж (II)) f.write ( "\ п" Защита главное (): ply_path, obj_path = parse_args () obj_path = ply_path_to_obj_path (ply_path) печать (е "Преобразование {ply_path} в .obj ...") конвертировать (ply_path, obj_path) печать (е "Конверсия успешно закончил путь вывода:. {obj_path}" ) если __name__ == '__main__': основной ()