⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qvtkrenderwidget.py

📁 a very goog book
💻 PY
📖 第 1 页 / 共 2 页
字号:
    def GetPicker(self):        return self._Picker    def Render(self):        if (self._CurrentLight):            light = self._CurrentLight            light.SetPosition(self._CurrentCamera.GetPosition())            light.SetFocalPoint(self._CurrentCamera.GetFocalPoint())        self._RenderWindow.Render()    def UpdateRenderer(self,x,y):        """        UpdateRenderer will identify the renderer under the mouse and set        up _CurrentRenderer, _CurrentCamera, and _CurrentLight.        """        windowX = self.width()        windowY = self.height()        renderers = self._RenderWindow.GetRenderers()        numRenderers = renderers.GetNumberOfItems()        self._CurrentRenderer = None        renderers.InitTraversal()        for i in range(0,numRenderers):            renderer = renderers.GetNextItem()            vx,vy = (0,0)            if (windowX > 1):                vx = float(x)/(windowX-1)            if (windowY > 1):                vy = (windowY-float(y)-1)/(windowY-1)            (vpxmin,vpymin,vpxmax,vpymax) = renderer.GetViewport()                        if (vx >= vpxmin and vx <= vpxmax and                vy >= vpymin and vy <= vpymax):                self._CurrentRenderer = renderer                self._ViewportCenterX = float(windowX)*(vpxmax-vpxmin)/2.0\                                        +vpxmin                self._ViewportCenterY = float(windowY)*(vpymax-vpymin)/2.0\                                        +vpymin                self._CurrentCamera = self._CurrentRenderer.GetActiveCamera()                lights = self._CurrentRenderer.GetLights()                lights.InitTraversal()                self._CurrentLight = lights.GetNextItem()                break        self._LastX = x        self._LastY = y    def GetCurrentRenderer(self):        return self._CurrentRenderer                    def Rotate(self,x,y):        if self._CurrentRenderer:                        self._CurrentCamera.Azimuth(self._LastX - x)            self._CurrentCamera.Elevation(y - self._LastY)            self._CurrentCamera.OrthogonalizeViewUp()                        self._LastX = x            self._LastY = y                        self._CurrentRenderer.ResetCameraClippingRange()            self.Render()    def Pan(self,x,y):        if self._CurrentRenderer:                        renderer = self._CurrentRenderer            camera = self._CurrentCamera            (pPoint0,pPoint1,pPoint2) = camera.GetPosition()            (fPoint0,fPoint1,fPoint2) = camera.GetFocalPoint()            if (camera.GetParallelProjection()):                renderer.SetWorldPoint(fPoint0,fPoint1,fPoint2,1.0)                renderer.WorldToDisplay()                fx,fy,fz = renderer.GetDisplayPoint()                renderer.SetDisplayPoint(fx-x+self._LastX,                                         fy+y-self._LastY,                                         fz)                renderer.DisplayToWorld()                fx,fy,fz,fw = renderer.GetWorldPoint()                camera.SetFocalPoint(fx,fy,fz)                renderer.SetWorldPoint(pPoint0,pPoint1,pPoint2,1.0)                renderer.WorldToDisplay()                fx,fy,fz = renderer.GetDisplayPoint()                renderer.SetDisplayPoint(fx-x+self._LastX,                                         fy+y-self._LastY,                                         fz)                renderer.DisplayToWorld()                fx,fy,fz,fw = renderer.GetWorldPoint()                camera.SetPosition(fx,fy,fz)                            else:                (fPoint0,fPoint1,fPoint2) = camera.GetFocalPoint()                # Specify a point location in world coordinates                renderer.SetWorldPoint(fPoint0,fPoint1,fPoint2,1.0)                renderer.WorldToDisplay()                # Convert world point coordinates to display coordinates                dPoint = renderer.GetDisplayPoint()                focalDepth = dPoint[2]                                aPoint0 = self._ViewportCenterX + (x - self._LastX)                aPoint1 = self._ViewportCenterY - (y - self._LastY)                                renderer.SetDisplayPoint(aPoint0,aPoint1,focalDepth)                renderer.DisplayToWorld()                                (rPoint0,rPoint1,rPoint2,rPoint3) = renderer.GetWorldPoint()                if (rPoint3 != 0.0):                    rPoint0 = rPoint0/rPoint3                    rPoint1 = rPoint1/rPoint3                    rPoint2 = rPoint2/rPoint3                camera.SetFocalPoint((fPoint0 - rPoint0) + fPoint0,                                      (fPoint1 - rPoint1) + fPoint1,                                     (fPoint2 - rPoint2) + fPoint2)                                 camera.SetPosition((fPoint0 - rPoint0) + pPoint0,                                    (fPoint1 - rPoint1) + pPoint1,                                   (fPoint2 - rPoint2) + pPoint2)            self._LastX = x            self._LastY = y            self.Render()    def Zoom(self,x,y):        if self._CurrentRenderer:            renderer = self._CurrentRenderer            camera = self._CurrentCamera            zoomFactor = math.pow(1.02,(0.5*(self._LastY - y)))            self._CurrentZoom = self._CurrentZoom * zoomFactor            if camera.GetParallelProjection():                parallelScale = camera.GetParallelScale()/zoomFactor                camera.SetParallelScale(parallelScale)            else:                camera.Dolly(zoomFactor)                renderer.ResetCameraClippingRange()            self._LastX = x            self._LastY = y            self.Render()    def Reset(self,x,y):        if self._CurrentRenderer:            self._CurrentRenderer.ResetCamera()                    self.Render()    def Wireframe(self):        actors = self._CurrentRenderer.GetActors()        numActors = actors.GetNumberOfItems()        actors.InitTraversal()        for i in range(0,numActors):            actor = actors.GetNextItem()            actor.GetProperty().SetRepresentationToWireframe()        self.Render()            def Surface(self):        actors = self._CurrentRenderer.GetActors()        numActors = actors.GetNumberOfItems()        actors.InitTraversal()        for i in range(0,numActors):            actor = actors.GetNextItem()            actor.GetProperty().SetRepresentationToSurface()        self.Render()    def PickActor(self,x,y):        if self._CurrentRenderer:            renderer = self._CurrentRenderer            picker = self._Picker                        windowY = self.height()            picker.Pick(x,(windowY - y - 1),0.0,renderer)            actor = picker.GetActor()            if (self._PickedActor != None and                self._PrePickedProperty != None):                self._PickedActor.SetProperty(self._PrePickedProperty)                # release hold of the property                self._PrePickedProperty.UnRegister(self._PrePickedProperty)                self._PrePickedProperty = None            if (actor != None):                self._PickedActor = actor                self._PrePickedProperty = self._PickedActor.GetProperty()                # hold onto the property                self._PrePickedProperty.Register(self._PrePickedProperty)                self._PickedActor.SetProperty(self._PickedProperty)            self.Render()#----------------------------------------------------------------------------  def QVTKRenderWidgetConeExample():    """Like it says, just a simple example    """    # every QT app needs an app    app = QApplication(['QVTKRenderWidget'])    # create the widget    widget = QVTKRenderWidget()    ren = vtk.vtkRenderer()    widget.GetRenderWindow().AddRenderer(ren)    cone = vtk.vtkConeSource()    cone.SetResolution(8)        coneMapper = vtk.vtkPolyDataMapper()    coneMapper.SetInput(cone.GetOutput())        coneActor = vtk.vtkActor()    coneActor.SetMapper(coneMapper)    ren.AddActor(coneActor)    # show the widget    widget.show()    # close the application when window is closed    qApp.setMainWidget(widget)    # start event processing    app.exec_loop()    if __name__ == "__main__":    QVTKRenderWidgetConeExample()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -