<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<!-- Template generated by Exclaimer Mail Disclaimers on 12:34:33 Donnerstag, 27 November 2014 -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">P.63ab7c3c-ec17-40e8-b7bb-1233934bfc4a {
        MARGIN: 0cm 0cm 0pt
}
LI.63ab7c3c-ec17-40e8-b7bb-1233934bfc4a {
        MARGIN: 0cm 0cm 0pt
}
DIV.63ab7c3c-ec17-40e8-b7bb-1233934bfc4a {
        MARGIN: 0cm 0cm 0pt
}
TABLE.63ab7c3c-ec17-40e8-b7bb-1233934bfc4aTable {
        MARGIN: 0cm 0cm 0pt
}
DIV.Section1 {
        page: Section1
}
</style><!-- Template generated by Exclaimer Mail Disclaimers on 12:34:33 Donnerstag, 27 November 2014 --><style type="text/css">P.c143ff1d-3c8d-4018-9639-6148349c12cc {
        MARGIN: 0cm 0cm 0pt
}
LI.c143ff1d-3c8d-4018-9639-6148349c12cc {
        MARGIN: 0cm 0cm 0pt
}
DIV.c143ff1d-3c8d-4018-9639-6148349c12cc {
        MARGIN: 0cm 0cm 0pt
}
TABLE.c143ff1d-3c8d-4018-9639-6148349c12ccTable {
        MARGIN: 0cm 0cm 0pt
}
DIV.Section1 {
        page: Section1
}
</style><!-- Template generated by Exclaimer Mail Disclaimers on 12:34:33 Donnerstag, 27 November 2014 --><style type="text/css">P.3faff407-5b84-4374-b356-2c1885a63c54 {
        MARGIN: 0cm 0cm 0pt
}
LI.3faff407-5b84-4374-b356-2c1885a63c54 {
        MARGIN: 0cm 0cm 0pt
}
DIV.3faff407-5b84-4374-b356-2c1885a63c54 {
        MARGIN: 0cm 0cm 0pt
}
TABLE.3faff407-5b84-4374-b356-2c1885a63c54Table {
        MARGIN: 0cm 0cm 0pt
}
DIV.Section1 {
        page: Section1
}
</style>
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.E-MailFormatvorlage17
        {mso-style-type:personal-compose;
        font-family:"Verdana","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="DE" link="blue" vlink="purple">
<p class="63ab7c3c-ec17-40e8-b7bb-1233934bfc4a"></p>
<p class="c143ff1d-3c8d-4018-9639-6148349c12cc"></p>
<p class="3faff407-5b84-4374-b356-2c1885a63c54"></p>
<div class="WordSection1">
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">Hello,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">I am using VTK 6.1 as Python wrapper. For some time I have been struggling with a vtkCamera problem.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">I would like to rotate the camera around a specific point. By default the camera rotates around the focal point. The focal point can be set wit camera.SetFocalPoint() method. But using this
 method the scene is moved to the center of the viewport (and then it is possible to rotate around that defined point). And that I would like to avoid. I would like to rotate the camera around a specific point (as it is with focal point) but without moving
 the scene to the center.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">A small example that demonstrates the problem (it interacts with left mouse click on the cone, then the new point is defined):<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">## code ##<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">from vtk import vtkConeSource, vtkPolyDataMapper, vtkActor, vtkRenderer, vtkRenderWindow, vtkRenderWindowInteractor, vtkInteractorStyleTrackballCamera<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">class MyInteractorStyle(vtkInteractorStyleTrackballCamera):<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    def __init__(self):<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">        self.AddObserver('LeftButtonPressEvent', self.OnLeftButtonDown, -1)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    def OnLeftButtonDown(self, obj, event):<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">        picker = self.GetInteractor().GetPicker()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">        camera = self.GetCurrentRenderer().GetActiveCamera()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">        if self.PositionPicked() != 0:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">           camera.SetFocalPoint(picker.GetPickPosition())<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">        vtkInteractorStyleTrackballCamera.OnLeftButtonDown(self)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    def PositionPicked(self):<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">        click_pos = self.GetInteractor().GetEventPosition()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">        picker = self.GetInteractor().GetPicker()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">        t = picker.Pick(click_pos[0], click_pos[1], 0, self.GetCurrentRenderer())<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">        return t<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">if __name__ == "__main__":<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    cone = vtkConeSource()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    cone.Update()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    mapper = vtkPolyDataMapper()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    mapper.SetInputData(cone.GetOutput())<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    mapper.ScalarVisibilityOn()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    mapper.SetScalarModeToUsePointData()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    mapper.SetColorModeToMapScalars()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    actor = vtkActor()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    actor.SetMapper(mapper)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    renderer = vtkRenderer()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    renderWindow = vtkRenderWindow()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    renderWindow.AddRenderer(renderer)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    renderWindowInteractor = vtkRenderWindowInteractor()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    renderWindowInteractor.SetRenderWindow(renderWindow)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    style = MyInteractorStyle()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    style.SetCurrentRenderer(renderer)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    renderWindowInteractor.SetInteractorStyle(style)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    renderer.AddActor(actor)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    renderWindow.Render()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">    renderWindowInteractor.Start()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">## end code ##<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">I have dealt with the camera’s transformations after setting the focal point, but without any success.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">I have also tried to implement my own Camera class (that inherits vtkCamera) in order to rewrite/modify the Azimuth() and Elevation() methods as they are responsible for the rotation. For
 some reason it does not work with the modified SetPosition() and SetFocalPoint() methods (they also have to be reimplemented in order to update the transformations from Azimuth() and Elevation()). I wrote that class based on the original vtkCamera.cxx implementation.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">The code with my camera is pretty long, but I can provide it if needed.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">I have search probably every vtk post on the internet and I did not found a solution for my issue. Maybe I am missing something?
</span><span style="font-family:Wingdings">J</span><span style="font-family:"Verdana","sans-serif""><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">Thanks in advance for any help!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">Best regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">lukasz<o:p></o:p></span></p>
</div>
<p></p>
<p class="3faff407-5b84-4374-b356-2c1885a63c54"> </p>
<p class="3faff407-5b84-4374-b356-2c1885a63c54"><span style="font-family:Verdana; font-size:11pt; ">Dr.-Ing.
</span><span style="font-family:Verdana; font-size:11pt; ">Lukasz</span> <span style="font-family:verdana; font-size:11pt; ">Dowhan</span><font face="Verdana"></font></p>
<p class="3faff407-5b84-4374-b356-2c1885a63c54"><span style="font-family:Verdana; font-size:11pt; ">CAE Prozesse und Optimierung</span><br>
<font size="2" face="Verdana"> </font></p>
<p class="3faff407-5b84-4374-b356-2c1885a63c54"><span style="font-family:Verdana; font-size:11pt; ">ISKO engineers AG</span><br>
<span style="font-family:Verdana; font-size:11pt; ">Taunusstr. 42</span><font size="2" face="Verdana">,
</font><span style="font-family:Verdana; font-size:11pt; ">80807</span><font size="2" face="Verdana"> </font><span style="font-family:Verdana; font-size:11pt; ">München</span><br>
<font size="2" face="Verdana">Fon: </font><span style="font-family:Verdana; font-size:11pt; ">+49 89 37062-247</span><br>
<font size="2" face="Verdana">Fax: </font><span style="font-family:Verdana; font-size:11pt; ">+49 89 37062-191</span></p>
<p class="3faff407-5b84-4374-b356-2c1885a63c54"><font size="2" face="Verdana">Mail:
</font><span style="font-family:Verdana; font-size:11pt; ">Lukasz.Dowhan@isko-engineers.de</span><br>
<font face="Verdana"> </font></p>
<p class="3faff407-5b84-4374-b356-2c1885a63c54"></p>
<p></p>
<p class="c143ff1d-3c8d-4018-9639-6148349c12cc"> </p>
<p class="c143ff1d-3c8d-4018-9639-6148349c12cc"><a href="http://www.isko-engineers.de/loesungen/software/aktionen/msc-fem-einsteigerpaket/?utm_source=Mailsignatur&utm_medium=E-Mail&utm_term=MSC%20FEM%20Einstiegspaket&utm_campaign=MSC%20FEM%20Aktion"><img id="IMG1" border="0" src="cid:image85a5dd.PNG@56fbcc64.4197f06c" width="600" height="60"></a></p>
<p class="c143ff1d-3c8d-4018-9639-6148349c12cc"> </p>
<p class="c143ff1d-3c8d-4018-9639-6148349c12cc"><a href="http://www.isko-engineers.de/events/konferenzen/?utm_source=Signatur&utm_medium=E-Mail&utm_term=Simvec&utm_campaign=Simvec%20Konferenz"><img id="IMG1" border="0" src="cid:imageabe85f.PNG@3f98ebe7.4a876f46" width="600" height="60"></a></p>
<p class="c143ff1d-3c8d-4018-9639-6148349c12cc"> </p>
<p class="c143ff1d-3c8d-4018-9639-6148349c12cc"><font size="2" face="Verdana">http://www.isko-engineers.de</font></p>
<p class="c143ff1d-3c8d-4018-9639-6148349c12cc"></p>
<p></p>
<p class="63ab7c3c-ec17-40e8-b7bb-1233934bfc4a"><font size="1"></font> </p>
<p class="63ab7c3c-ec17-40e8-b7bb-1233934bfc4a"><font size="1" face="Verdana">Sitz der AG: D-80807 Muenchen, Registergericht Muenchen HRB 129 078<br>
Vorsitzender des Aufsichtsrates: Michael Welzel<br>
Vorstand: Michael Probst, Michael Krause<br>
USt-IdNr.: DE 812 837 909</font></p>
<p class="63ab7c3c-ec17-40e8-b7bb-1233934bfc4a"> </p>
<p class="63ab7c3c-ec17-40e8-b7bb-1233934bfc4a"></p>
</body>
</html>