Что такое тип аргумента для get_view_control.rotate () в Open3D? - PullRequest
0 голосов
/ 28 мая 2020

Как показано в документации Open3D, вы можете использовать функцию get_view_control.rotate() для поворота объекта внутри средства просмотра. Но он не указывает тип (градус, радиан и т.д. c.). Если я использую значение около 2100, это будет выглядеть как полный оборот, но после помещения их в al oop оказывается, что это не точное значение для поворота 360 градусов . Также я нигде не упоминаю об этом в документации Open3D.

Я хочу снимать изображения глубины под разными углами на полные 360 градусов (x, y, z). Это часть моего кода:

class Viewer:
    def __init__(self, on, of, fd):        #objectname, objectFile and folderdirectory
        self.index = 0
        self.objectName = on
        self.objectFile = of
        self.folderDirectory = fd
        self.vis = o3d.visualization.Visualizer()
        self.view = o3d.visualization.ViewControl()
        self.pcd = o3d.io.read_triangle_mesh(self.folderDirectory + self.objectFile)

    def depthFullCapture(self, times):

        self.numberOfTimes = times

        def captureDepth(vis):
            print('Capturing')
            self.depth = vis.capture_depth_float_buffer(False)
            plt.imsave((self.folderDirectory + 'images/' + self.objectName + '_{:05d}.png'.format(self.index)),np.asarray(self.depth), dpi = 1)
            np.savetxt((self.folderDirectory + 'text/' + self.objectName + '_{:05d}.txt'.format(self.index)),self.depth,fmt='%.2f',delimiter=',')
            vis.register_animation_callback(rotate)

        def rotate(vis):
            print('Rotating')
            ctr = vis.get_view_control()
            if(self.index % 25 == 0):
                self.vis.reset_view_point(True)
                ctr.rotate(0,((2100/25)*(self.index/25)))
            else:
                ctr.rotate(84, 0)
            ctr.set_zoom(0.75)
            self.index += 1
            if not (self.index == 625):
                vis.register_animation_callback(captureDepth)
            else:
                vis.register_animation_callback(None)
                vis.destroy_window()


        self.vis.create_window(width = 200, height = 200)
        self.vis.add_geometry(self.pcd)
        self.vis.register_animation_callback(captureDepth)
        self.vis.run()

Так может ли кто-нибудь объяснить правильное значение / тип для поворота на определенный градус? Или есть другой / лучший способ сделать это? Заранее спасибо! Если что не понятно, спрашивайте :)

...