[vtkusers] vtkOrientationMarkerWidget does not rotate in QVTKWidget
Eric E. Monson
emonson at cs.duke.edu
Wed Jun 23 11:15:19 EDT 2010
Well, I was able to transplant your code into a PyQt4 app. (Since you're using Python, I'm assuming that's what you're using...?) Here's the code that works on my system and a screenshot.
-Eric
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import QApplication
import vtk
from vtk.qt4.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
import sys
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(603, 553)
self.centralWidget = QtGui.QWidget(MainWindow)
self.gridlayout = QtGui.QGridLayout(self.centralWidget)
self.vtkWidget = QVTKRenderWindowInteractor(self.centralWidget)
self.gridlayout.addWidget(self.vtkWidget, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralWidget)
class SimpleView(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QMainWindow.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ren = vtk.vtkRenderer()
self.ui.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
iren = self.ui.vtkWidget.GetRenderWindow().GetInteractor()
cube = vtk.vtkCubeSource()
cube.SetXLength(200)
cube.SetYLength(200)
cube.SetZLength(200)
cube.Update()
cm = vtk.vtkPolyDataMapper()
cm.SetInputConnection(cube.GetOutputPort())
ca = vtk.vtkActor()
ca.SetMapper(cm)
self.ren.AddActor(ca)
self.axesActor = vtk.vtkAnnotatedCubeActor();
self.axesActor.SetXPlusFaceText('R')
self.axesActor.SetXMinusFaceText('L')
self.axesActor.SetYMinusFaceText('H')
self.axesActor.SetYPlusFaceText('F')
self.axesActor.SetZMinusFaceText('P')
self.axesActor.SetZPlusFaceText('A')
self.axesActor.GetTextEdgesProperty().SetColor(1,1,0)
self.axesActor.GetTextEdgesProperty().SetLineWidth(2)
self.axesActor.GetCubeProperty().SetColor(0,0,1)
self.axes = vtk.vtkOrientationMarkerWidget()
self.axes.SetOrientationMarker(self.axesActor)
self.axes.SetInteractor(iren)
self.axes.EnabledOn()
self.axes.InteractiveOn()
self.ren.ResetCamera()
iren.Start()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = SimpleView()
window.show()
sys.exit(app.exec_())
On Jun 23, 2010, at 10:24 AM, Jothy wrote:
> Why my orientationWidget is show like the one shown in the attached picture?
>
> Its a vtkAxesActor+vtkOrientationWidget with a cube rendered in QVTKWidget.
>
>
> Thanks,
>
> Jothy
>
>
> On Wed, Jun 23, 2010 at 3:07 PM, Jothy <jothybasu at gmail.com> wrote:
> And it also appears cropped, I mean only the centre portion is visible.
>
> How to get the camera of the orientation widget renderer? So that I can reset it.
>
> Thanks,
>
> Jothy
>
>
> On Wed, Jun 23, 2010 at 2:23 PM, Jothy <jothybasu at gmail.com> wrote:
> No Eric,
>
> The problem is not with this code, with this script I can rotate without calling start().But, when I embed it into a QVTKWidget, it doesn't work as expected. Did you tried with QVTKWidget?
>
> Thanks,
>
> Jothy
>
>
> On Wed, Jun 23, 2010 at 2:18 PM, Eric E. Monson <emonson at cs.duke.edu> wrote:
> Hey Jothy,
>
> If I add iren.Start() at the end of this code it works for me. The blue cube in the corner spins with the big white cube.
>
> -Eric
>
> ------------------------------------------------------
> Eric E Monson
> Duke Visualization Technology Group
>
>
> On Jun 23, 2010, at 7:29 AM, Jothy wrote:
>
> > Hi all,
> >
> > I am trying to add a vtkOrientationMarkerWidget to a QVTKWidget. The annotatedCube is displayed in the corner but it doesn't rotate along with the other actors.
> >
> > I checkd the code with vtkRenderWindow, it works well. What is the problem??
> >
> > Below is the code
> >
> >
> >
> > from vtk import*
> > cube=vtkCubeSource()
> > cube.SetXLength(200)
> > cube.SetYLength(200)
> > cube.SetZLength(200)
> > cube.Update()
> > cm=vtkPolyDataMapper()
> > cm.SetInputConnection(cube.GetOutputPort())
> > ca=vtkActor()
> > ca.SetMapper(cm)
> >
> > renWin = vtkRenderWindow()
> > ren=vtkRenderer()
> > ren.AddActor(ca)
> > renWin.AddRenderer(ren)
> > iren = vtkRenderWindowInteractor()
> > iren.SetRenderWindow(renWin)
> > ren.SetBackground(0,0,0)
> > renWin.Render()
> >
> > axesActor = vtkAnnotatedCubeActor();
> > axesActor.SetXPlusFaceText('R')
> > axesActor.SetXMinusFaceText('L')
> > axesActor.SetYMinusFaceText('H')
> > axesActor.SetYPlusFaceText('F')
> > axesActor.SetZMinusFaceText('P')
> > axesActor.SetZPlusFaceText('A')
> > axesActor.GetTextEdgesProperty().SetColor(1,1,0)
> > axesActor.GetTextEdgesProperty().SetLineWidth(2)
> > axesActor.GetCubeProperty().SetColor(0,0,1)
> > axes = vtkOrientationMarkerWidget();
> > axes.SetOrientationMarker(axesActor);
> > axes.SetInteractor(iren);
> > axes.EnabledOn();
> > axes.InteractiveOn();
> >
> >
> > Thanks,
> >
> > Jothy
> >
> >
> >
> >
> >
> > _______________________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtkusers
>
>
>
>
> <untitled.TIF>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100623/be162080/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OrientationInPyQt4.png
Type: image/png
Size: 3034 bytes
Desc: not available
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100623/be162080/attachment.png>
More information about the vtkusers
mailing list