예제 #1
0
    def __init__(self, qtApp, close_callback = None, render3D=True, showRGB=True):
        super(RGBDViewer, self).__init__()
        self.mainLayout = QtGui.QHBoxLayout()
        self.qtApp = qtApp
        self.rgbLabel = QtGui.QLabel()
        # A widget where there is some control over what is being displayed.
        self.control_widget = QtGui.QWidget()
        self.control_layout = QtGui.QVBoxLayout()
        # An example of such control is the "pauseButton"
        self.pauseButton = QtGui.QPushButton('Pause/Unpause')
        # Whi is now added to the control widget
        self.control_layout.addWidget(self.pauseButton)
        self.control_widget.setLayout(self.control_layout)
        self.mainLayout.addWidget(self.control_widget)

        # Create the widget which allows to do OpenGL rendering
        self.glWidget = InteractiveViewer()
        self.glWidget.setFixedSize(600, 600)
        self.glWidget.ambient = (0.5,0.5,0.5,1.0)
        self.glWidget.position = (1.0,1.0,2.0)
        self.glWidget.diffuse = (1.0,1.0,1.0,1.0)
        self.glWidget.qtApp = qtApp
        # Make the connection of the update signal
        self.updateSignal.connect(self.glWidget.updateGL)
        widget = QtGui.QWidget()
        widget.setLayout(self.mainLayout)
        self.setCentralWidget(widget)
        # Whenever this "main window" is closed, then this function will be called
        self.close_callback = close_callback
        self.meshId = None

        self.showRGB = showRGB
        self.render3D = render3D

        self.rgbLabel.setMinimumSize(QtCore.QSize(640, 480))
        self.rgb_size = 400, 400

        self.mainLayout.addWidget(self.rgbLabel)

        self.glWidget.show()
        if not render3D:
            self.glWidget.hide()