class RenderWidget(QWidget): def __init__(self, parent=None, **kwargs): super(RenderWidget, self).__init__(parent) self._font = kwargs.get("font", QFont()) self.setFont(self._font) ## create render window self._parent = parent self._renderer = Renderer(self, antialiasing=True, **kwargs) self._mainLayout = QVBoxLayout() self._mainLayout.setContentsMargins(0, 0, 0, 0) self._mainLayout.setSpacing(3) ## create viewer self._mainLayout.addWidget(self._renderer) ## create bottom layout self._bottomLayout = QHBoxLayout() self._bottomLayout.setContentsMargins(3, 0, 3, 0) self._bottomLayout.setSpacing(3) ## create view sublayout self._viewLayout = QHBoxLayout() self._viewLayout.setContentsMargins(0, 0, 0, 0) self._viewLayout.setSpacing(3) # Adding actor selector label = QLabel("Actor: ") self._bottomLayout.addWidget(label) self.actorCombo = QComboBox() self.actorCombo.addItem("Cone", Renderer.ActorType.CONE) self.actorCombo.addItem("Cube", Renderer.ActorType.CUBE) self.actorCombo.addItem("Cylinder", Renderer.ActorType.CYLINDER) self.actorCombo.addItem("Floor", Renderer.ActorType.FLOOR) self.actorCombo.addItem("Icosahedron", Renderer.ActorType.ICOSAHEDRON) self.actorCombo.addItem("Pyramid 1", Renderer.ActorType.PYRAMID_1) self.actorCombo.addItem("Pyramid 2", Renderer.ActorType.PYRAMID_2) self.actorCombo.addItem("Sphere (Polar)", Renderer.ActorType.SPHERE_POLAR) self.actorCombo.addItem("Sphere (Icos)", Renderer.ActorType.SPHERE_ICOS) self.actorCombo.currentIndexChanged.connect(self._renderer.changeActor) self._bottomLayout.addWidget(self.actorCombo) ## register view functions self._viewFunc = [ self._renderer.viewLeft, self._renderer.viewRight, self._renderer.viewTop, self._renderer.viewBottom, self._renderer.viewFront, self._renderer.viewBack] label = QLabel("Axis: ") label.setFont(self._font) self._viewLayout.addWidget(label) self._viewCombo = QComboBox(self) self._viewCombo.addItem("+x") self._viewCombo.addItem("-x") self._viewCombo.addItem("+y") self._viewCombo.addItem("-y") self._viewCombo.addItem("+z") self._viewCombo.addItem("-z") self._viewCombo.setFont(self._font) self._viewCombo.activated.connect(self.viewDirectionChanged) self._viewLayout.addWidget(self._viewCombo) self._bottomLayout.addLayout(self._viewLayout) ## create camera sublayout self._cameraLayout = QHBoxLayout() self._cameraLayout.setContentsMargins(0, 0, 5, 0) self._cameraLayout.setSpacing(3) label = QLabel(" Camera: ") label.setFont(self._font) self._cameraLayout.addWidget(label) self._cameraLensCombo = QComboBox(self) self._cameraLensCombo.addItem("Perspective") self._cameraLensCombo.addItem("Ortographic") self._cameraLensCombo.setFont(self._font) self._cameraLensCombo.activated.connect(self._renderer.cameraLensChanged) self._cameraLayout.addWidget(self._cameraLensCombo) self._cameraCombo = QComboBox(self) self._cameraCombo.addItem("Store") self._cameraCombo.addItem("Recall") self._cameraCombo.addItem("Reset") self._cameraCombo.setFont(self._font) self._cameraCombo.activated.connect(self.cameraOperationChanged) self._cameraLayout.addWidget(self._cameraCombo) self._bottomLayout.addLayout(self._cameraLayout) self._renderLayout = QHBoxLayout() self._renderLayout.setContentsMargins(0, 0, 5, 0) self._renderLayout.setSpacing(3) label = QLabel(" Style: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._drawStyleCombo = QComboBox(self) self._drawStyleCombo.addItem("Points") self._drawStyleCombo.addItem("Wireframe") self._drawStyleCombo.addItem("Solid") self._drawStyleCombo.addItem("Solid with edges") self._drawStyleCombo.setFont(self._font) self._drawStyleCombo.activated.connect(self._renderer.drawStyleChanged) self._drawStyleCombo.setCurrentIndex(2) self._renderLayout.addWidget(self._drawStyleCombo) label = QLabel(" Quality: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._shadingCombo = QComboBox(self) self._shadingCombo.addItem("Low") self._shadingCombo.addItem("High") self._shadingCombo.setFont(self._font) self._shadingCombo.activated.connect(self._renderer.shadingChanged) self._shadingCombo.setCurrentIndex(1) self._renderLayout.addWidget(self._shadingCombo) self._bottomLayout.addLayout(self._renderLayout) menu = QMenu() menu.setFont(self._font) lightingAction = QAction("Lighting", self) lightingAction.setCheckable(True) lightingAction.setChecked(True) lightingAction.triggered.connect(self._renderer.lightingChanged) menu.addAction(lightingAction) profilingAction = QAction("Profiling", self) profilingAction.setCheckable(True) profilingAction.setChecked(True) profilingAction.triggered.connect(self.profilingChanged) menu.addAction(profilingAction) menu.addSeparator() animateAction = QAction("Animate", self) animateAction.setCheckable(True) animateAction.setChecked(False) animateAction.triggered.connect(self.animateChanged) menu.addAction(animateAction) self._options = QPushButton() self._options.setText("Options") self._options.setFont(self._font) self._options.setMenu(menu) self._renderLayout.addWidget(self._options) self._bottomLayout.addStretch(1) self._mainLayout.addLayout(self._bottomLayout) self.setLayout(self._mainLayout) def clear(self): """Clear viewer""" self._renderer.clear() def updateViewer(self): """Refresh viewer""" self._renderer.update() def viewDirectionChanged(self, index): """Called upon a change in view direction""" self._viewFunc[index]() def cameraOperationChanged(self, index): """Called upon a chnage in camera operation""" if index == 0: self.storeViewerCamera() elif index == 1: self.recallViewerCamera() else: self.resetViewerCamera() def storeViewerCamera(self): """Ask the the viewer to store active camera parameters""" self._renderer.storeCamera() def recallViewerCamera(self): """Ask the viewer to recall previously stored camera parameters""" self._renderer.recallCamera() self._cameraLensCombo.setCurrentIndex(self._renderer.activeSceneCamera().lens) def resetViewerCamera(self): """Ask viewer to reset the active camera parameters""" self._renderer.resetCamera() self._cameraLensCombo.setCurrentIndex(self._renderer.activeSceneCamera().lens) def profilingChanged(self, state): """Turn on or off rendering profiling""" if state: self._renderer.enableProfiling(True) self._parent.restartTimer() else: self._renderer.enableProfiling(False) self._parent.stopTimer() self._parent.clearStatistics() def animateChanged(self, state): """Turn on or off animation""" self._renderer.enableAnimation(state) def renderTimeEstimates(self): """Ask viewer for current render time estimates""" return self._renderer.renderTimeEstimates() def sizeHint(self): return QSize(1280, 800)
def __init__(self, parent=None, **kwargs): super(RenderWidget, self).__init__(parent) self._font = kwargs.get("font", QFont()) self.setFont(self._font) ## create render window self._parent = parent self._renderer = Renderer(self, antialiasing=True, **kwargs) self._mainLayout = QVBoxLayout() self._mainLayout.setContentsMargins(0, 0, 0, 0) self._mainLayout.setSpacing(3) ## create viewer self._mainLayout.addWidget(self._renderer) ## create bottom layout self._bottomLayout = QHBoxLayout() self._bottomLayout.setContentsMargins(3, 0, 3, 0) self._bottomLayout.setSpacing(3) ## create view sublayout self._viewLayout = QHBoxLayout() self._viewLayout.setContentsMargins(0, 0, 0, 0) self._viewLayout.setSpacing(3) # Adding actor selector label = QLabel("Actor: ") self._bottomLayout.addWidget(label) self.actorCombo = QComboBox() self.actorCombo.addItem("Cone", Renderer.ActorType.CONE) self.actorCombo.addItem("Cube", Renderer.ActorType.CUBE) self.actorCombo.addItem("Cylinder", Renderer.ActorType.CYLINDER) self.actorCombo.addItem("Floor", Renderer.ActorType.FLOOR) self.actorCombo.addItem("Icosahedron", Renderer.ActorType.ICOSAHEDRON) self.actorCombo.addItem("Pyramid 1", Renderer.ActorType.PYRAMID_1) self.actorCombo.addItem("Pyramid 2", Renderer.ActorType.PYRAMID_2) self.actorCombo.addItem("Sphere (Polar)", Renderer.ActorType.SPHERE_POLAR) self.actorCombo.addItem("Sphere (Icos)", Renderer.ActorType.SPHERE_ICOS) self.actorCombo.currentIndexChanged.connect(self._renderer.changeActor) self._bottomLayout.addWidget(self.actorCombo) ## register view functions self._viewFunc = [ self._renderer.viewLeft, self._renderer.viewRight, self._renderer.viewTop, self._renderer.viewBottom, self._renderer.viewFront, self._renderer.viewBack] label = QLabel("Axis: ") label.setFont(self._font) self._viewLayout.addWidget(label) self._viewCombo = QComboBox(self) self._viewCombo.addItem("+x") self._viewCombo.addItem("-x") self._viewCombo.addItem("+y") self._viewCombo.addItem("-y") self._viewCombo.addItem("+z") self._viewCombo.addItem("-z") self._viewCombo.setFont(self._font) self._viewCombo.activated.connect(self.viewDirectionChanged) self._viewLayout.addWidget(self._viewCombo) self._bottomLayout.addLayout(self._viewLayout) ## create camera sublayout self._cameraLayout = QHBoxLayout() self._cameraLayout.setContentsMargins(0, 0, 5, 0) self._cameraLayout.setSpacing(3) label = QLabel(" Camera: ") label.setFont(self._font) self._cameraLayout.addWidget(label) self._cameraLensCombo = QComboBox(self) self._cameraLensCombo.addItem("Perspective") self._cameraLensCombo.addItem("Ortographic") self._cameraLensCombo.setFont(self._font) self._cameraLensCombo.activated.connect(self._renderer.cameraLensChanged) self._cameraLayout.addWidget(self._cameraLensCombo) self._cameraCombo = QComboBox(self) self._cameraCombo.addItem("Store") self._cameraCombo.addItem("Recall") self._cameraCombo.addItem("Reset") self._cameraCombo.setFont(self._font) self._cameraCombo.activated.connect(self.cameraOperationChanged) self._cameraLayout.addWidget(self._cameraCombo) self._bottomLayout.addLayout(self._cameraLayout) self._renderLayout = QHBoxLayout() self._renderLayout.setContentsMargins(0, 0, 5, 0) self._renderLayout.setSpacing(3) label = QLabel(" Style: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._drawStyleCombo = QComboBox(self) self._drawStyleCombo.addItem("Points") self._drawStyleCombo.addItem("Wireframe") self._drawStyleCombo.addItem("Solid") self._drawStyleCombo.addItem("Solid with edges") self._drawStyleCombo.setFont(self._font) self._drawStyleCombo.activated.connect(self._renderer.drawStyleChanged) self._drawStyleCombo.setCurrentIndex(2) self._renderLayout.addWidget(self._drawStyleCombo) label = QLabel(" Quality: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._shadingCombo = QComboBox(self) self._shadingCombo.addItem("Low") self._shadingCombo.addItem("High") self._shadingCombo.setFont(self._font) self._shadingCombo.activated.connect(self._renderer.shadingChanged) self._shadingCombo.setCurrentIndex(1) self._renderLayout.addWidget(self._shadingCombo) self._bottomLayout.addLayout(self._renderLayout) menu = QMenu() menu.setFont(self._font) lightingAction = QAction("Lighting", self) lightingAction.setCheckable(True) lightingAction.setChecked(True) lightingAction.triggered.connect(self._renderer.lightingChanged) menu.addAction(lightingAction) profilingAction = QAction("Profiling", self) profilingAction.setCheckable(True) profilingAction.setChecked(True) profilingAction.triggered.connect(self.profilingChanged) menu.addAction(profilingAction) menu.addSeparator() animateAction = QAction("Animate", self) animateAction.setCheckable(True) animateAction.setChecked(False) animateAction.triggered.connect(self.animateChanged) menu.addAction(animateAction) self._options = QPushButton() self._options.setText("Options") self._options.setFont(self._font) self._options.setMenu(menu) self._renderLayout.addWidget(self._options) self._bottomLayout.addStretch(1) self._mainLayout.addLayout(self._bottomLayout) self.setLayout(self._mainLayout)
def __init__(self, parent=None, **kwargs): super(RenderWidget, self).__init__(parent) self._font = kwargs.get("font", QFont()) self.setFont(self._font) # create render window self._parent = parent self._renderer = Renderer(self, antialiasing=True, **kwargs) self._mainLayout = QVBoxLayout() self._mainLayout.setContentsMargins(0, 0, 0, 0) self._mainLayout.setSpacing(3) # create viewer self._mainLayout.addWidget(self._renderer) # create bottom layout self._bottomLayout = QHBoxLayout() self._bottomLayout.setContentsMargins(3, 0, 3, 0) self._bottomLayout.setSpacing(3) # create actor sublayout self._actorLayout = QHBoxLayout() self._actorLayout.setContentsMargins(0, 0, 0, 0) self._actorLayout.setSpacing(3) label = QLabel("Tessellated Sphere: ") label.setFont(self._font) self._actorLayout.addWidget(label) self._actorCombo = QComboBox(self) self._actorCombo.addItem("radius:1 / subdivision:1", Renderer.ActorType.SPHERE0) self._actorCombo.addItem("radius:1 / subdivision:5", Renderer.ActorType.SPHERE1) self._actorCombo.addItem("radius:1 / subdivision:10", Renderer.ActorType.SPHERE2) self._actorCombo.addItem("radius:1 / subdivision:20", Renderer.ActorType.SPHERE3) self._actorCombo.addItem("radius:2 / subdivision:20", Renderer.ActorType.SPHERE4) self._actorCombo.addItem("radius:3 / subdivision:20", Renderer.ActorType.SPHERE5) self._actorCombo.currentIndexChanged.connect( self._renderer.changeActor) self._actorCombo.setFont(self._font) self._actorLayout.addWidget(self._actorCombo) self._bottomLayout.addLayout(self._actorLayout) # create view sublayout self._viewLayout = QHBoxLayout() self._viewLayout.setContentsMargins(0, 0, 0, 0) self._viewLayout.setSpacing(3) # register view functions self._viewFunc = [ self._renderer.viewLeft, self._renderer.viewRight, self._renderer.viewTop, self._renderer.viewBottom, self._renderer.viewFront, self._renderer.viewBack ] label = QLabel("Axis: ") label.setFont(self._font) self._viewLayout.addWidget(label) self._viewCombo = QComboBox(self) self._viewCombo.addItem("+x") self._viewCombo.addItem("-x") self._viewCombo.addItem("+y") self._viewCombo.addItem("-y") self._viewCombo.addItem("+z") self._viewCombo.addItem("-z") self._viewCombo.setFont(self._font) self._viewCombo.activated.connect(self.viewDirectionChanged) self._viewLayout.addWidget(self._viewCombo) self._bottomLayout.addLayout(self._viewLayout) # create camera sublayout self._cameraLayout = QHBoxLayout() self._cameraLayout.setContentsMargins(0, 0, 5, 0) self._cameraLayout.setSpacing(3) label = QLabel(" Camera: ") label.setFont(self._font) self._cameraLayout.addWidget(label) self._cameraLensCombo = QComboBox(self) self._cameraLensCombo.addItem("Perspective") self._cameraLensCombo.addItem("Ortographic") self._cameraLensCombo.setFont(self._font) self._cameraLensCombo.activated.connect( self._renderer.cameraLensChanged) self._cameraLayout.addWidget(self._cameraLensCombo) self._cameraCombo = QComboBox(self) self._cameraCombo.addItem("Store") self._cameraCombo.addItem("Recall") self._cameraCombo.addItem("Reset") self._cameraCombo.setFont(self._font) self._cameraCombo.activated.connect(self.cameraOperationChanged) self._cameraLayout.addWidget(self._cameraCombo) self._bottomLayout.addLayout(self._cameraLayout) self._renderLayout = QHBoxLayout() self._renderLayout.setContentsMargins(0, 0, 5, 0) self._renderLayout.setSpacing(3) label = QLabel(" Style: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._drawStyleCombo = QComboBox(self) self._drawStyleCombo.addItem("Points") self._drawStyleCombo.addItem("Wireframe") self._drawStyleCombo.addItem("Solid") self._drawStyleCombo.addItem("Solid with edges") self._drawStyleCombo.setFont(self._font) self._drawStyleCombo.activated.connect(self._renderer.drawStyleChanged) self._drawStyleCombo.setCurrentIndex(2) self._renderLayout.addWidget(self._drawStyleCombo) label = QLabel(" Quality: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._shadingCombo = QComboBox(self) self._shadingCombo.addItem("Low") self._shadingCombo.addItem("High") self._shadingCombo.setFont(self._font) self._shadingCombo.activated.connect(self._renderer.shadingChanged) self._shadingCombo.setCurrentIndex(1) self._renderLayout.addWidget(self._shadingCombo) self._bottomLayout.addLayout(self._renderLayout) menu = QMenu() menu.setFont(self._font) lightingAction = QAction("Lighting", self) lightingAction.setCheckable(True) lightingAction.setChecked(True) lightingAction.triggered.connect(self._renderer.lightingChanged) menu.addAction(lightingAction) profilingAction = QAction("Profiling", self) profilingAction.setCheckable(True) profilingAction.setChecked(True) profilingAction.triggered.connect(self.profilingChanged) menu.addAction(profilingAction) menu.addSeparator() animateAction = QAction("Animate", self) animateAction.setCheckable(True) animateAction.setChecked(False) animateAction.triggered.connect(self.animateChanged) menu.addAction(animateAction) self._options = QPushButton() self._options.setText("Options") self._options.setFont(self._font) self._options.setMenu(menu) self._renderLayout.addWidget(self._options) self._bottomLayout.addStretch(1) self._mainLayout.addLayout(self._bottomLayout) self.setLayout(self._mainLayout)
def __init__(self, parent=None, **kwargs): super(RenderWidget, self).__init__(parent) self._font = kwargs.get("font", QFont()) self.setFont(self._font) ## create render window self._parent = parent self._renderer = Renderer(self, antialiasing=True, **kwargs) self._mainLayout = QVBoxLayout() self._mainLayout.setContentsMargins(0, 0, 0, 0) self._mainLayout.setSpacing(3) ## create viewer self._mainLayout.addWidget(self._renderer) ## create bottom layout self._bottomLayout = QHBoxLayout() self._bottomLayout.setContentsMargins(3, 0, 3, 0) self._bottomLayout.setSpacing(3) ## create view sublayout self._viewLayout = QHBoxLayout() self._viewLayout.setContentsMargins(0, 0, 0, 0) self._viewLayout.setSpacing(3) ## register view functions self._viewFunc = [ self._renderer.viewLeft, self._renderer.viewRight, self._renderer.viewTop, self._renderer.viewBottom, self._renderer.viewFront, self._renderer.viewBack ] label = QLabel("Axis: ") label.setFont(self._font) self._viewLayout.addWidget(label) self._viewCombo = QComboBox(self) self._viewCombo.addItem("+x") self._viewCombo.addItem("-x") self._viewCombo.addItem("+y") self._viewCombo.addItem("-y") self._viewCombo.addItem("+z") self._viewCombo.addItem("-z") self._viewCombo.setFont(self._font) self._viewCombo.activated.connect(self.viewDirectionChanged) self._viewLayout.addWidget(self._viewCombo) self._bottomLayout.addLayout(self._viewLayout) ## create camera sublayout self._cameraLayout = QHBoxLayout() self._cameraLayout.setContentsMargins(0, 0, 5, 0) self._cameraLayout.setSpacing(3) label = QLabel(" Camera: ") label.setFont(self._font) self._cameraLayout.addWidget(label) self._cameraLensCombo = QComboBox(self) self._cameraLensCombo.addItem("Perspective") self._cameraLensCombo.addItem("Ortographic") self._cameraLensCombo.setFont(self._font) self._cameraLensCombo.activated.connect( self._renderer.cameraLensChanged) self._cameraLayout.addWidget(self._cameraLensCombo) self._cameraCombo = QComboBox(self) self._cameraCombo.addItem("Store") self._cameraCombo.addItem("Recall") self._cameraCombo.addItem("Reset") self._cameraCombo.setFont(self._font) self._cameraCombo.activated.connect(self.cameraOperationChanged) self._cameraLayout.addWidget(self._cameraCombo) self._bottomLayout.addLayout(self._cameraLayout) self._renderLayout = QHBoxLayout() self._renderLayout.setContentsMargins(0, 0, 5, 0) self._renderLayout.setSpacing(3) label = QLabel(" Style: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._drawStyleCombo = QComboBox(self) self._drawStyleCombo.addItem("Points") self._drawStyleCombo.addItem("Wireframe") self._drawStyleCombo.addItem("Solid") self._drawStyleCombo.addItem("Solid with edges") self._drawStyleCombo.setFont(self._font) self._drawStyleCombo.activated.connect(self._renderer.drawStyleChanged) self._drawStyleCombo.setCurrentIndex(2) self._renderLayout.addWidget(self._drawStyleCombo) label = QLabel(" Quality: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._shadingCombo = QComboBox(self) self._shadingCombo.addItem("Low") self._shadingCombo.addItem("High") self._shadingCombo.setFont(self._font) self._shadingCombo.activated.connect(self._renderer.shadingChanged) self._shadingCombo.setCurrentIndex(1) self._renderLayout.addWidget(self._shadingCombo) self._bottomLayout.addLayout(self._renderLayout) menu = QMenu() menu.setFont(self._font) lightingAction = QAction("Lighting", self) lightingAction.setCheckable(True) lightingAction.setChecked(True) lightingAction.triggered.connect(self._renderer.lightingChanged) menu.addAction(lightingAction) profilingAction = QAction("Profiling", self) profilingAction.setCheckable(True) profilingAction.setChecked(True) profilingAction.triggered.connect(self.profilingChanged) menu.addAction(profilingAction) menu.addSeparator() animateAction = QAction("Animate", self) animateAction.setCheckable(True) animateAction.setChecked(False) animateAction.triggered.connect(self.animateChanged) menu.addAction(animateAction) self._options = QPushButton() self._options.setText("Options") self._options.setFont(self._font) self._options.setMenu(menu) self._renderLayout.addWidget(self._options) self._bottomLayout.addStretch(1) self._mainLayout.addLayout(self._bottomLayout) self._rotacoesOptions = QHBoxLayout() self._rotacoesOptions.setContentsMargins(1, 0, 1, 0) self._rotacoesOptions.setSpacing(3) label = QLabel(" Length: ") label.setFont(self._font) self._rotacoesOptions.addWidget(label) self.sl4 = QSlider(Qt.Horizontal) self.sl4.setMinimum(1) self.sl4.setMaximum(20) self.sl4.setValue(4) self.sl4.setTickPosition(QSlider.TicksBelow) self.sl4.setTickInterval(1) self.sl4.valueChanged.connect(self.length_changed) self._rotacoesOptions.addWidget(self.sl4) label = QLabel(" Elevation: ") label.setFont(self._font) self._rotacoesOptions.addWidget(label) self.sl = QSlider(Qt.Horizontal) self.sl.setMinimum(-90) self.sl.setMaximum(90) self.sl.setValue(0) self.sl.setTickPosition(QSlider.TicksBelow) self.sl.setTickInterval(15) self.sl.valueChanged.connect(self.elevation_changed) self._rotacoesOptions.addWidget(self.sl) self._mainLayout.addLayout(self._rotacoesOptions) self._rotacoesOptions2 = QHBoxLayout() self._rotacoesOptions2.setContentsMargins(1, 0, 1, 0) self._rotacoesOptions2.setSpacing(3) label = QLabel(" Rotation: ") label.setFont(self._font) self._rotacoesOptions2.addWidget(label) self.sl2 = QSlider(Qt.Horizontal) self.sl2.setMinimum(-90) self.sl2.setMaximum(90) self.sl2.setValue(0) self.sl2.setTickPosition(QSlider.TicksBelow) self.sl2.setTickInterval(15) self.sl2.valueChanged.connect(self.rotation_changed) self._rotacoesOptions2.addWidget(self.sl2) label = QLabel(" Inclination: ") label.setFont(self._font) self._rotacoesOptions2.addWidget(label) self.sl3 = QSlider(Qt.Horizontal) self.sl3.setMinimum(-90) self.sl3.setMaximum(90) self.sl3.setValue(0) self.sl3.setTickPosition(QSlider.TicksBelow) self.sl3.setTickInterval(15) self.sl3.valueChanged.connect(self.inclination_changed) self._rotacoesOptions2.addWidget(self.sl3) self._mainLayout.addLayout(self._rotacoesOptions2) self._trilhosOptions = QHBoxLayout() self._trilhosOptions.setContentsMargins(1, 0, 1, 0) self._trilhosOptions.setSpacing(3) label = QLabel(" Type: ") self._trilhosOptions.addWidget(label) self._tiposCombo = QComboBox(self) self._tiposCombo.addItem("Platform") self._tiposCombo.addItem("Normal") self._tiposCombo.addItem("Lever") self._tiposCombo.addItem("Brakes") self._tiposCombo.addItem("Final") self._tiposCombo.activated.connect(self.type_changed) self._tiposCombo.setCurrentIndex(0) self._trilhosOptions.addWidget(self._tiposCombo) self.b1 = QPushButton("Construct") self.b1.setCheckable(True) self.b1.toggle() self.b1.clicked.connect(self.construct) self._trilhosOptions.addWidget(self.b1) self.b2 = QPushButton("Remove") self.b2.setCheckable(True) self.b2.toggle() self.b2.clicked.connect(self.remove) self._trilhosOptions.addWidget(self.b2) self.b3 = QPushButton("Simulate") self.b3.setCheckable(True) self.b3.toggle() self.b3.clicked.connect(self.simulate) self._trilhosOptions.addWidget(self.b3) self.b4 = QPushButton("Stop") self.b4.setCheckable(True) self.b4.toggle() self.b4.clicked.connect(self.stop) self._trilhosOptions.addWidget(self.b4) self.b5 = QPushButton("Change Camera") self.b5.setCheckable(True) self.b5.toggle() self.b5.clicked.connect(self.camera_changed) self._trilhosOptions.addWidget(self.b5) self._mainLayout.addLayout(self._trilhosOptions) self.setLayout(self._mainLayout)
class RenderWidget(QWidget): def __init__(self, parent=None, **kwargs): super(RenderWidget, self).__init__(parent) self._font = kwargs.get("font", QFont()) self.setFont(self._font) ## create render window self._parent = parent self._renderer = Renderer(self, antialiasing=True, **kwargs) self._mainLayout = QVBoxLayout() self._mainLayout.setContentsMargins(0, 0, 0, 0) self._mainLayout.setSpacing(3) ## create viewer self._mainLayout.addWidget(self._renderer) ## create bottom layout self._bottomLayout = QHBoxLayout() self._bottomLayout.setContentsMargins(3, 0, 3, 0) self._bottomLayout.setSpacing(3) ## create view sublayout self._viewLayout = QHBoxLayout() self._viewLayout.setContentsMargins(0, 0, 0, 0) self._viewLayout.setSpacing(3) ## register view functions self._viewFunc = [ self._renderer.viewLeft, self._renderer.viewRight, self._renderer.viewTop, self._renderer.viewBottom, self._renderer.viewFront, self._renderer.viewBack ] label = QLabel("Axis: ") label.setFont(self._font) self._viewLayout.addWidget(label) self._viewCombo = QComboBox(self) self._viewCombo.addItem("+x") self._viewCombo.addItem("-x") self._viewCombo.addItem("+y") self._viewCombo.addItem("-y") self._viewCombo.addItem("+z") self._viewCombo.addItem("-z") self._viewCombo.setFont(self._font) self._viewCombo.activated.connect(self.viewDirectionChanged) self._viewLayout.addWidget(self._viewCombo) self._bottomLayout.addLayout(self._viewLayout) ## create camera sublayout self._cameraLayout = QHBoxLayout() self._cameraLayout.setContentsMargins(0, 0, 5, 0) self._cameraLayout.setSpacing(3) label = QLabel(" Camera: ") label.setFont(self._font) self._cameraLayout.addWidget(label) self._cameraLensCombo = QComboBox(self) self._cameraLensCombo.addItem("Perspective") self._cameraLensCombo.addItem("Ortographic") self._cameraLensCombo.setFont(self._font) self._cameraLensCombo.activated.connect( self._renderer.cameraLensChanged) self._cameraLayout.addWidget(self._cameraLensCombo) self._cameraCombo = QComboBox(self) self._cameraCombo.addItem("Store") self._cameraCombo.addItem("Recall") self._cameraCombo.addItem("Reset") self._cameraCombo.setFont(self._font) self._cameraCombo.activated.connect(self.cameraOperationChanged) self._cameraLayout.addWidget(self._cameraCombo) self._bottomLayout.addLayout(self._cameraLayout) self._renderLayout = QHBoxLayout() self._renderLayout.setContentsMargins(0, 0, 5, 0) self._renderLayout.setSpacing(3) label = QLabel(" Style: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._drawStyleCombo = QComboBox(self) self._drawStyleCombo.addItem("Points") self._drawStyleCombo.addItem("Wireframe") self._drawStyleCombo.addItem("Solid") self._drawStyleCombo.addItem("Solid with edges") self._drawStyleCombo.setFont(self._font) self._drawStyleCombo.activated.connect(self._renderer.drawStyleChanged) self._drawStyleCombo.setCurrentIndex(2) self._renderLayout.addWidget(self._drawStyleCombo) label = QLabel(" Quality: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._shadingCombo = QComboBox(self) self._shadingCombo.addItem("Low") self._shadingCombo.addItem("High") self._shadingCombo.setFont(self._font) self._shadingCombo.activated.connect(self._renderer.shadingChanged) self._shadingCombo.setCurrentIndex(1) self._renderLayout.addWidget(self._shadingCombo) self._bottomLayout.addLayout(self._renderLayout) menu = QMenu() menu.setFont(self._font) lightingAction = QAction("Lighting", self) lightingAction.setCheckable(True) lightingAction.setChecked(True) lightingAction.triggered.connect(self._renderer.lightingChanged) menu.addAction(lightingAction) profilingAction = QAction("Profiling", self) profilingAction.setCheckable(True) profilingAction.setChecked(True) profilingAction.triggered.connect(self.profilingChanged) menu.addAction(profilingAction) menu.addSeparator() animateAction = QAction("Animate", self) animateAction.setCheckable(True) animateAction.setChecked(False) animateAction.triggered.connect(self.animateChanged) menu.addAction(animateAction) self._options = QPushButton() self._options.setText("Options") self._options.setFont(self._font) self._options.setMenu(menu) self._renderLayout.addWidget(self._options) self._bottomLayout.addStretch(1) self._mainLayout.addLayout(self._bottomLayout) self._rotacoesOptions = QHBoxLayout() self._rotacoesOptions.setContentsMargins(1, 0, 1, 0) self._rotacoesOptions.setSpacing(3) label = QLabel(" Length: ") label.setFont(self._font) self._rotacoesOptions.addWidget(label) self.sl4 = QSlider(Qt.Horizontal) self.sl4.setMinimum(1) self.sl4.setMaximum(20) self.sl4.setValue(4) self.sl4.setTickPosition(QSlider.TicksBelow) self.sl4.setTickInterval(1) self.sl4.valueChanged.connect(self.length_changed) self._rotacoesOptions.addWidget(self.sl4) label = QLabel(" Elevation: ") label.setFont(self._font) self._rotacoesOptions.addWidget(label) self.sl = QSlider(Qt.Horizontal) self.sl.setMinimum(-90) self.sl.setMaximum(90) self.sl.setValue(0) self.sl.setTickPosition(QSlider.TicksBelow) self.sl.setTickInterval(15) self.sl.valueChanged.connect(self.elevation_changed) self._rotacoesOptions.addWidget(self.sl) self._mainLayout.addLayout(self._rotacoesOptions) self._rotacoesOptions2 = QHBoxLayout() self._rotacoesOptions2.setContentsMargins(1, 0, 1, 0) self._rotacoesOptions2.setSpacing(3) label = QLabel(" Rotation: ") label.setFont(self._font) self._rotacoesOptions2.addWidget(label) self.sl2 = QSlider(Qt.Horizontal) self.sl2.setMinimum(-90) self.sl2.setMaximum(90) self.sl2.setValue(0) self.sl2.setTickPosition(QSlider.TicksBelow) self.sl2.setTickInterval(15) self.sl2.valueChanged.connect(self.rotation_changed) self._rotacoesOptions2.addWidget(self.sl2) label = QLabel(" Inclination: ") label.setFont(self._font) self._rotacoesOptions2.addWidget(label) self.sl3 = QSlider(Qt.Horizontal) self.sl3.setMinimum(-90) self.sl3.setMaximum(90) self.sl3.setValue(0) self.sl3.setTickPosition(QSlider.TicksBelow) self.sl3.setTickInterval(15) self.sl3.valueChanged.connect(self.inclination_changed) self._rotacoesOptions2.addWidget(self.sl3) self._mainLayout.addLayout(self._rotacoesOptions2) self._trilhosOptions = QHBoxLayout() self._trilhosOptions.setContentsMargins(1, 0, 1, 0) self._trilhosOptions.setSpacing(3) label = QLabel(" Type: ") self._trilhosOptions.addWidget(label) self._tiposCombo = QComboBox(self) self._tiposCombo.addItem("Platform") self._tiposCombo.addItem("Normal") self._tiposCombo.addItem("Lever") self._tiposCombo.addItem("Brakes") self._tiposCombo.addItem("Final") self._tiposCombo.activated.connect(self.type_changed) self._tiposCombo.setCurrentIndex(0) self._trilhosOptions.addWidget(self._tiposCombo) self.b1 = QPushButton("Construct") self.b1.setCheckable(True) self.b1.toggle() self.b1.clicked.connect(self.construct) self._trilhosOptions.addWidget(self.b1) self.b2 = QPushButton("Remove") self.b2.setCheckable(True) self.b2.toggle() self.b2.clicked.connect(self.remove) self._trilhosOptions.addWidget(self.b2) self.b3 = QPushButton("Simulate") self.b3.setCheckable(True) self.b3.toggle() self.b3.clicked.connect(self.simulate) self._trilhosOptions.addWidget(self.b3) self.b4 = QPushButton("Stop") self.b4.setCheckable(True) self.b4.toggle() self.b4.clicked.connect(self.stop) self._trilhosOptions.addWidget(self.b4) self.b5 = QPushButton("Change Camera") self.b5.setCheckable(True) self.b5.toggle() self.b5.clicked.connect(self.camera_changed) self._trilhosOptions.addWidget(self.b5) self._mainLayout.addLayout(self._trilhosOptions) self.setLayout(self._mainLayout) def clear(self): """Clear viewer""" self._renderer.clear() def updateViewer(self): """Refresh viewer""" self._renderer.update() def viewDirectionChanged(self, index): """Called upon a change in view direction""" self._viewFunc[index]() def cameraOperationChanged(self, index): """Called upon a chnage in camera operation""" if index == 0: self.storeViewerCamera() elif index == 1: self.recallViewerCamera() else: self.resetViewerCamera() def storeViewerCamera(self): """Ask the the viewer to store active camera parameters""" self._renderer.storeCamera() def recallViewerCamera(self): """Ask the viewer to recall previously stored camera parameters""" self._renderer.recallCamera() self._cameraLensCombo.setCurrentIndex( self._renderer.activeSceneCamera().lens) def resetViewerCamera(self): """Ask viewer to reset the active camera parameters""" self._renderer.resetCamera() self._cameraLensCombo.setCurrentIndex( self._renderer.activeSceneCamera().lens) def profilingChanged(self, state): """Turn on or off rendering profiling""" if state: self._renderer.enableProfiling(True) self._parent.restartTimer() else: self._renderer.enableProfiling(False) self._parent.stopTimer() self._parent.clearStatistics() def animateChanged(self, state): """Turn on or off animation""" self._renderer.enableAnimation(state) def renderTimeEstimates(self): """Ask viewer for current render time estimates""" return self._renderer.renderTimeEstimates() def sizeHint(self): return QSize(1280, 800) def elevation_changed(self): ele = self.sl.value() self._renderer.elevation_changed(ele) def rotation_changed(self): rot = self.sl2.value() self._renderer.rotation_changed(-rot) def inclination_changed(self): inc = self.sl3.value() self._renderer.inclination_changed(inc) def length_changed(self): len = self.sl4.value() self._renderer.length_changed(len) def type_changed(self, type): self._renderer.type_changed(type) def construct(self): self._renderer.construct() def remove(self): self._renderer.remove() def simulate(self): self._renderer.simulate() def stop(self): self._renderer.stop() def camera_changed(self): self._renderer.camera_changed()
def __init__(self, parent=None, **kwargs): super(RenderWidget, self).__init__(parent) self._font = kwargs.get("font", QFont()) self.setFont(self._font) ## create render window self._parent = parent self._renderer = Renderer(self, antialiasing=True, **kwargs) self._mainLayout = QVBoxLayout() self._mainLayout.setContentsMargins(0, 0, 0, 0) self._mainLayout.setSpacing(3) ## create viewer self._mainLayout.addWidget(self._renderer) ## create bottom layout self._bottomLayout = QHBoxLayout() self._bottomLayout.setContentsMargins(3, 0, 3, 0) self._bottomLayout.setSpacing(3) ## create view sublayout self._viewLayout = QHBoxLayout() self._viewLayout.setContentsMargins(0, 0, 0, 0) self._viewLayout.setSpacing(3) # Adding actor selector label = QLabel("Object Sources: ") self._bottomLayout.addWidget(label) self.actorCombo = QComboBox() self.actorCombo.currentIndexChanged.connect(self._renderer.changeActor) self._bottomLayout.addWidget(self.actorCombo) self.actorCombo.addItem("Select To Create") #gets list of available objects files = [] available = [] o_dir = "obj-models/buildings/" for file in os.listdir(o_dir): if (file.endswith(".obj")): if (file.strip("obj") + "mtl" in files): available.append(file.strip(".obj")) else: files.append(file) elif (file.endswith(".mtl")): if (file.strip("mtl") + "obj" in files): available.append(file.strip(".mtl")) else: files.append(file) available = list(set(available)) for i in range(len(available)): self.actorCombo.addItem(available[i]) #for i in range(len(available)): available[i] = o_dir + available[i] + ".obj" self._renderer.setActors(available) ## register view functions self._viewFunc = [ self._renderer.viewLeft, self._renderer.viewRight, self._renderer.viewTop, self._renderer.viewBottom, self._renderer.viewFront, self._renderer.viewBack ] label = QLabel("Axis: ") label.setFont(self._font) self._viewLayout.addWidget(label) self._viewCombo = QComboBox(self) self._viewCombo.addItem("+x") self._viewCombo.addItem("-x") self._viewCombo.addItem("+y") self._viewCombo.addItem("-y") self._viewCombo.addItem("+z") self._viewCombo.addItem("-z") self._viewCombo.setFont(self._font) self._viewCombo.activated.connect(self.viewDirectionChanged) self._viewLayout.addWidget(self._viewCombo) self._bottomLayout.addLayout(self._viewLayout) ## create camera sublayout self._cameraLayout = QHBoxLayout() self._cameraLayout.setContentsMargins(0, 0, 5, 0) self._cameraLayout.setSpacing(3) label = QLabel(" Camera: ") label.setFont(self._font) self._cameraLayout.addWidget(label) self._cameraLensCombo = QComboBox(self) self._cameraLensCombo.addItem("Perspective") self._cameraLensCombo.addItem("Ortographic") self._cameraLensCombo.setFont(self._font) self._cameraLensCombo.activated.connect( self._renderer.cameraLensChanged) self._cameraLayout.addWidget(self._cameraLensCombo) self._cameraCombo = QComboBox(self) self._cameraCombo.addItem("Store") self._cameraCombo.addItem("Recall") self._cameraCombo.addItem("Reset") self._cameraCombo.setFont(self._font) self._cameraCombo.activated.connect(self.cameraOperationChanged) self._cameraLayout.addWidget(self._cameraCombo) self._bottomLayout.addLayout(self._cameraLayout) self._renderLayout = QHBoxLayout() self._renderLayout.setContentsMargins(0, 0, 5, 0) self._renderLayout.setSpacing(3) label = QLabel(" Style: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._drawStyleCombo = QComboBox(self) self._drawStyleCombo.addItem("Points") self._drawStyleCombo.addItem("Wireframe") self._drawStyleCombo.addItem("Solid") self._drawStyleCombo.addItem("Solid with edges") self._drawStyleCombo.setFont(self._font) self._drawStyleCombo.activated.connect(self._renderer.drawStyleChanged) self._drawStyleCombo.setCurrentIndex(2) self._renderLayout.addWidget(self._drawStyleCombo) label = QLabel(" Quality: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._shadingCombo = QComboBox(self) self._shadingCombo.addItem("Low") self._shadingCombo.addItem("High") self._shadingCombo.setFont(self._font) self._shadingCombo.activated.connect(self._renderer.shadingChanged) self._shadingCombo.setCurrentIndex(1) self._renderLayout.addWidget(self._shadingCombo) self._bottomLayout.addLayout(self._renderLayout) menu = QMenu() menu.setFont(self._font) lightingAction = QAction("Lighting", self) lightingAction.setCheckable(True) lightingAction.setChecked(True) lightingAction.triggered.connect(self._renderer.lightingChanged) menu.addAction(lightingAction) profilingAction = QAction("Profiling", self) profilingAction.setCheckable(True) profilingAction.setChecked(True) profilingAction.triggered.connect(self.profilingChanged) menu.addAction(profilingAction) menu.addSeparator() animateAction = QAction("Animate", self) animateAction.setCheckable(True) animateAction.setChecked(False) animateAction.triggered.connect(self.animateChanged) menu.addAction(animateAction) self._options = QPushButton() self._options.setText("Options") self._options.setFont(self._font) self._options.setMenu(menu) self._renderLayout.addWidget(self._options) self._delete = QPushButton() self._delete.setText("Delete") self._delete.setFont(self._font) self._renderLayout.addWidget(self._delete) self._delete.clicked.connect(self.delActor) self._delete.setDisabled(True) self._bottomLayout.addStretch(1) self._mainLayout.addLayout(self._bottomLayout) self.setLayout(self._mainLayout) self.setFocusPolicy(Qt.StrongFocus)
class RenderWidget(QWidget): def __init__(self, parent=None, **kwargs): super(RenderWidget, self).__init__(parent) self._font = kwargs.get("font", QFont()) self.setFont(self._font) ## create render window self._parent = parent self._renderer = Renderer(self, antialiasing=True, **kwargs) self._mainLayout = QVBoxLayout() self._mainLayout.setContentsMargins(0, 0, 0, 0) self._mainLayout.setSpacing(3) ## create viewer self._mainLayout.addWidget(self._renderer) ## create bottom layout self._bottomLayout = QHBoxLayout() self._bottomLayout.setContentsMargins(3, 0, 3, 0) self._bottomLayout.setSpacing(3) ## create view sublayout self._viewLayout = QHBoxLayout() self._viewLayout.setContentsMargins(0, 0, 0, 0) self._viewLayout.setSpacing(3) # Adding actor selector label = QLabel("Object Sources: ") self._bottomLayout.addWidget(label) self.actorCombo = QComboBox() self.actorCombo.currentIndexChanged.connect(self._renderer.changeActor) self._bottomLayout.addWidget(self.actorCombo) self.actorCombo.addItem("Select To Create") #gets list of available objects files = [] available = [] o_dir = "obj-models/buildings/" for file in os.listdir(o_dir): if (file.endswith(".obj")): if (file.strip("obj") + "mtl" in files): available.append(file.strip(".obj")) else: files.append(file) elif (file.endswith(".mtl")): if (file.strip("mtl") + "obj" in files): available.append(file.strip(".mtl")) else: files.append(file) available = list(set(available)) for i in range(len(available)): self.actorCombo.addItem(available[i]) #for i in range(len(available)): available[i] = o_dir + available[i] + ".obj" self._renderer.setActors(available) ## register view functions self._viewFunc = [ self._renderer.viewLeft, self._renderer.viewRight, self._renderer.viewTop, self._renderer.viewBottom, self._renderer.viewFront, self._renderer.viewBack ] label = QLabel("Axis: ") label.setFont(self._font) self._viewLayout.addWidget(label) self._viewCombo = QComboBox(self) self._viewCombo.addItem("+x") self._viewCombo.addItem("-x") self._viewCombo.addItem("+y") self._viewCombo.addItem("-y") self._viewCombo.addItem("+z") self._viewCombo.addItem("-z") self._viewCombo.setFont(self._font) self._viewCombo.activated.connect(self.viewDirectionChanged) self._viewLayout.addWidget(self._viewCombo) self._bottomLayout.addLayout(self._viewLayout) ## create camera sublayout self._cameraLayout = QHBoxLayout() self._cameraLayout.setContentsMargins(0, 0, 5, 0) self._cameraLayout.setSpacing(3) label = QLabel(" Camera: ") label.setFont(self._font) self._cameraLayout.addWidget(label) self._cameraLensCombo = QComboBox(self) self._cameraLensCombo.addItem("Perspective") self._cameraLensCombo.addItem("Ortographic") self._cameraLensCombo.setFont(self._font) self._cameraLensCombo.activated.connect( self._renderer.cameraLensChanged) self._cameraLayout.addWidget(self._cameraLensCombo) self._cameraCombo = QComboBox(self) self._cameraCombo.addItem("Store") self._cameraCombo.addItem("Recall") self._cameraCombo.addItem("Reset") self._cameraCombo.setFont(self._font) self._cameraCombo.activated.connect(self.cameraOperationChanged) self._cameraLayout.addWidget(self._cameraCombo) self._bottomLayout.addLayout(self._cameraLayout) self._renderLayout = QHBoxLayout() self._renderLayout.setContentsMargins(0, 0, 5, 0) self._renderLayout.setSpacing(3) label = QLabel(" Style: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._drawStyleCombo = QComboBox(self) self._drawStyleCombo.addItem("Points") self._drawStyleCombo.addItem("Wireframe") self._drawStyleCombo.addItem("Solid") self._drawStyleCombo.addItem("Solid with edges") self._drawStyleCombo.setFont(self._font) self._drawStyleCombo.activated.connect(self._renderer.drawStyleChanged) self._drawStyleCombo.setCurrentIndex(2) self._renderLayout.addWidget(self._drawStyleCombo) label = QLabel(" Quality: ") label.setFont(self._font) self._renderLayout.addWidget(label) self._shadingCombo = QComboBox(self) self._shadingCombo.addItem("Low") self._shadingCombo.addItem("High") self._shadingCombo.setFont(self._font) self._shadingCombo.activated.connect(self._renderer.shadingChanged) self._shadingCombo.setCurrentIndex(1) self._renderLayout.addWidget(self._shadingCombo) self._bottomLayout.addLayout(self._renderLayout) menu = QMenu() menu.setFont(self._font) lightingAction = QAction("Lighting", self) lightingAction.setCheckable(True) lightingAction.setChecked(True) lightingAction.triggered.connect(self._renderer.lightingChanged) menu.addAction(lightingAction) profilingAction = QAction("Profiling", self) profilingAction.setCheckable(True) profilingAction.setChecked(True) profilingAction.triggered.connect(self.profilingChanged) menu.addAction(profilingAction) menu.addSeparator() animateAction = QAction("Animate", self) animateAction.setCheckable(True) animateAction.setChecked(False) animateAction.triggered.connect(self.animateChanged) menu.addAction(animateAction) self._options = QPushButton() self._options.setText("Options") self._options.setFont(self._font) self._options.setMenu(menu) self._renderLayout.addWidget(self._options) self._delete = QPushButton() self._delete.setText("Delete") self._delete.setFont(self._font) self._renderLayout.addWidget(self._delete) self._delete.clicked.connect(self.delActor) self._delete.setDisabled(True) self._bottomLayout.addStretch(1) self._mainLayout.addLayout(self._bottomLayout) self.setLayout(self._mainLayout) self.setFocusPolicy(Qt.StrongFocus) def mousePressEvent(self, event): """ Called by the Qt libraries whenever the window receives a mouse click.""" print("MOUSE") super(RenderWidget, self).mousePressEvent(event) if event.isAccepted(): return render = self._renderer if event.buttons() & Qt.LeftButton: point = render._pixelPosToViewPos(event.localPos()) if (render.IsAxisSelected()): render.startTransforming(point) else: render._trackball.press(point, QQuaternion()) render._trackball.start() event.accept() if not render.isAnimating(): render.update() if (render._shift_isPressed): wd = render._world ob = wd.pick(point) if (ob[0] != None): if (wd.selectedActor() == None): self._delete.setDisabled(False) render.selectActor(ob[0]) else: if (wd.selectedActor() != None): self._delete.setDisabled(True) render.selectActor(None) elif event.buttons() & Qt.RightButton: render.pan(render._pixelPosToViewPos(event.localPos()), state='start') render.update() def keyPressEvent(self, event): print("Key Pressed") key = event.key() if (key == Qt.Key_Shift): self._renderer.shiftPressed() elif (key == Qt.Key_Delete): self._renderer.delActor() elif (key == Qt.Key_R): self._renderer.generateRotatingLines() elif (key == Qt.Key_T): self._renderer.generateTranslatingLines() elif (key == Qt.Key_S): self._renderer.generateScalingLines() elif (key == Qt.Key_X): self._renderer.selectX() elif (key == Qt.Key_Y): self._renderer.selectY() elif (key == Qt.Key_Z): self._renderer.selectZ() elif (key == Qt.Key_Escape): self._delete.setDisabled(True) self._renderer.selectActor(None) else: super(RenderWidget, self).keyPressEvent(event) def keyReleaseEvent(self, QKeyEvent): super(RenderWidget, self).keyReleaseEvent(QKeyEvent) render = self._renderer if (QKeyEvent.key() == Qt.Key_Shift): render.shiftReleased() def delActor(self): self._delete.setDisabled(False) self._renderer.delActor() def clear(self): """Clear viewer""" self._renderer.clear() def updateViewer(self): """Refresh viewer""" self._renderer.update() def viewDirectionChanged(self, index): """Called upon a change in view direction""" self._viewFunc[index]() def cameraOperationChanged(self, index): """Called upon a chnage in camera operation""" if index == 0: self.storeViewerCamera() elif index == 1: self.recallViewerCamera() else: self.resetViewerCamera() def storeViewerCamera(self): """Ask the the viewer to store active camera parameters""" self._renderer.storeCamera() def recallViewerCamera(self): """Ask the viewer to recall previously stored camera parameters""" self._renderer.recallCamera() self._cameraLensCombo.setCurrentIndex( self._renderer.activeSceneCamera().lens) def resetViewerCamera(self): """Ask viewer to reset the active camera parameters""" self._renderer.resetCamera() self._cameraLensCombo.setCurrentIndex( self._renderer.activeSceneCamera().lens) def profilingChanged(self, state): """Turn on or off rendering profiling""" if state: self._renderer.enableProfiling(True) self._parent.restartTimer() else: self._renderer.enableProfiling(False) self._parent.stopTimer() self._parent.clearStatistics() def animateChanged(self, state): """Turn on or off animation""" self._renderer.enableAnimation(state) def renderTimeEstimates(self): """Ask viewer for current render time estimates""" return self._renderer.renderTimeEstimates() def sizeHint(self): return QSize(1280, 800)