ply2obj

"" " 
Простой скрипт для преобразования слоя в 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__': 
    основной ()

  

рекомендация

отwww.cnblogs.com/BambooEatPanda/p/10973120.html