<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Dear Cory,<br>
    <br>
    thank you for your reply! It took some time to identify the problem
    further.<br>
    Please find at the very bottom of this mail a test implementation
    (java) showing the problem. The code creates a simple view showing
    some spheres and two buttons. The first button uses the camera
    present, the second one creates a new camera.<br>
    They should behave the same, but don't. I think it is the
    resetCamera() method. Maybe i use it wrong? The relevant code is in
    the selectionListeners for the buttons.<br>
    <br>
    Best regards<br>
    Jens<br>
    <br>
    <br>
    <div class="moz-cite-prefix">Am 29.07.2015 um 03:48 schrieb Cory
      Quammen:<br>
    </div>
    <blockquote
cite="mid:CAB5Fpx76Z-SQsDft9u=XGEuEkzhvUJQbHGNN+b0tisKoiM2OGw@mail.gmail.com"
      type="cite">
      <meta http-equiv="Context-Type" content="text/html; charset=UTF-8">
      <div dir="ltr">Jens,
        <div><br>
        </div>
        <div>Please remember to "reply-all" so that others on the list
          may benefit from or contribute to the conversation.</div>
        <div><br>
        </div>
        <div>Do you have a small code sample that reproduces the issue?
          This kind of camera manipulation followed by rendering is done
          all the time (see [1], for example), so I'm not sure what is
          going on.</div>
        <div><br>
        </div>
        <div>Thanks,</div>
        <div>Cory</div>
        <div><br>
        </div>
        <div>[1] <a moz-do-not-send="true"
href="http://www.vtk.org/gitweb?p=VTK.git;a=blob;f=Examples/Tutorial/Step3/Java/Cone3.java;h=91e003825bca66e275c22658019b6c52ef1afb75;hb=HEAD">http://www.vtk.org/gitweb?p=VTK.git;a=blob;f=Examples/Tutorial/Step3/Java/Cone3.java;h=91e003825bca66e275c22658019b6c52ef1afb75;hb=HEAD</a></div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Tue, Jul 28, 2015 at 7:42 AM, Jens
          Schmidt <span dir="ltr"><<a moz-do-not-send="true"
              href="mailto:jens.g.w.schmidt@gmx.de" target="_blank">jens.g.w.schmidt@gmx.de</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote">Cory,<br>
            <br>
            thx for your reply! Yep called render each time i changed
            the camera.  But the only time the camera did what i wanted
            was with the new camera object and setActiveCamera.<br>
            <br>
            Best regards<span class="HOEnZb"><br>
              Jens</span>
            <div class="HOEnZb">
              <div class="h5"><br>
                <br>
                <br>
                Am 27.07.2015 um 20:31 schrieb Cory Quammen:<br>
                <blockquote class="gmail_quote">
                  Jens,<br>
                  <br>
                  Did you try calling your render window's Render()
                  member function after<br>
                  changing the camera properties? Rendering updates are
                  not performed<br>
                  automatically when you change just camera properties.
                  This is actually good<br>
                  because it prevents too many renderings when you
                  update more than one<br>
                  camera property.<br>
                  <br>
                  HTH,<br>
                  Cory<br>
                  <br>
                  On Mon, Jul 27, 2015 at 1:46 PM, Jens Schmidt <<a
                    moz-do-not-send="true"
                    href="mailto:jens.g.w.schmidt@gmx.de"
                    target="_blank">jens.g.w.schmidt@gmx.de</a>><br>
                  wrote:<br>
                  <br>
                  <blockquote class="gmail_quote">
                    Hi Everyone!<br>
                    <br>
                    VTK rocks, but we knew that allready. ^^ What rocks
                    less is that the<br>
                    camera ist not automatically updated when
                    SetPosition or SetFocalPoint are<br>
                    called.<br>
                    Btw i am using the java wrapping with SWT.
                    VtkAbstractComponent has a<br>
                    reference to the active camera.<br>
                    Using that had no effect, as was using the renderers
                    GetActiveCamera<br>
                    method.<br>
                    In fact i have to create a new vtkCamera, modify
                    that an then pass it to<br>
                    the renderer as new active camera -> tada change
                    on the screen.<br>
                    Did i do something wrong or is that how it is
                    supposed to work?<br>
                    <br>
                    Thank you<br>
                    Jens<br>
                    _______________________________________________<br>
                    Powered by <a moz-do-not-send="true"
                      href="http://www.kitware.com" rel="noreferrer"
                      target="_blank">www.kitware.com</a><br>
                    <br>
                    Visit other Kitware open-source projects at<br>
                    <a moz-do-not-send="true"
                      href="http://www.kitware.com/opensource/opensource.html"
                      rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
                    <br>
                    Please keep messages on-topic and check the VTK FAQ
                    at:<br>
                    <a moz-do-not-send="true"
                      href="http://www.vtk.org/Wiki/VTK_FAQ"
                      rel="noreferrer" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
                    <br>
                    Search the list archives at: <a
                      moz-do-not-send="true"
                      href="http://markmail.org/search/?q=vtkusers"
                      rel="noreferrer" target="_blank">http://markmail.org/search/?q=vtkusers</a><br>
                    <br>
                    Follow this link to subscribe/unsubscribe:<br>
                    <a moz-do-not-send="true"
                      href="http://public.kitware.com/mailman/listinfo/vtkusers"
                      rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
                    <br>
                  </blockquote>
                  <br>
                  <br>
                </blockquote>
                <br>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
        <br>
        <div><br>
        </div>
        -- <br>
        <div class="gmail_signature">Cory Quammen<br>
          R&D Engineer<br>
          Kitware, Inc.</div>
      </div>
    </blockquote>
    <br>
    <br>
    Code below here:<br>
    ==============<br>
    <br>
    package CamTest;<br>
    <br>
    import org.eclipse.swt.SWT;<br>
    import org.eclipse.swt.events.SelectionAdapter;<br>
    import org.eclipse.swt.events.SelectionEvent;<br>
    import org.eclipse.swt.layout.GridData;<br>
    import org.eclipse.swt.layout.GridLayout;<br>
    import org.eclipse.swt.widgets.Button;<br>
    import org.eclipse.swt.widgets.Composite;<br>
    import org.eclipse.swt.widgets.Display;<br>
    import org.eclipse.swt.widgets.Shell;<br>
    import org.vtk.VTKLoader;<br>
    <br>
    import vtk.vtkActor;<br>
    import vtk.vtkCamera;<br>
    import vtk.vtkPolyDataMapper;<br>
    import vtk.vtkSphereSource;<br>
    import vtk.rendering.swt.vtkSwtComponent;<br>
    <br>
    public class CamTest {<br>
    <br>
        class vtkView extends vtkSwtComponent {<br>
    <br>
            public vtkView(Composite parentComposite) {<br>
                super(parentComposite);<br>
                renderer.SetBackground(0.1, 0.2, 0.4);<br>
                renderer.SetBackground2(1, 1, 1);<br>
                renderer.SetGradientBackground(true);<br>
                vtkSwtComponent.attachOrientationAxes(this);<br>
                update();<br>
            }<br>
    <br>
            void setCamera(vtkCamera camera) {<br>
                this.camera = camera;<br>
                renderer.SetActiveCamera(camera);<br>
            }<br>
    <br>
            void addSpheres(int precision, int numberInX, int numberInY,
    int numberInZ) {<br>
                vtkSphereSource source = new vtkSphereSource();<br>
                source.SetRadius(1.);<br>
                source.SetPhiResolution(precision);<br>
                source.SetThetaResolution(precision);<br>
    <br>
                vtkPolyDataMapper mapper = new vtkPolyDataMapper();<br>
                mapper.SetInputConnection(source.GetOutputPort());<br>
                mapper.Update();<br>
    <br>
                for (int i = 0; i < numberInX; i++) {<br>
                    for (int j = 0; j < numberInY; j++) {<br>
                        for (int k = 0; k < numberInZ; k++) {<br>
                            vtkActor actor = new vtkActor();<br>
                            actor.SetPosition(4 * i, 4 * j, 4 * k);<br>
                            actor.SetMapper(mapper);<br>
                            actor.GetProperty().BackfaceCullingOn();<br>
                            renderer.AddActor(actor);<br>
                        }<br>
                    }<br>
                }<br>
                update();<br>
                resetCamera();<br>
            }<br>
        }<br>
    <br>
        private vtkView vtkView;<br>
    <br>
        private CamTest() {<br>
            VTKLoader loader = new VTKLoader();<br>
            loader.loadAll();<br>
    <br>
            Display display = new Display();<br>
            Shell shell = new Shell(display);<br>
            shell.setText("CamTest");<br>
            GridLayout layout = new GridLayout(2, false);<br>
            shell.setLayout(layout);<br>
    <br>
            vtkView = new vtkView(shell);<br>
            GridData data = new GridData(SWT.FILL, SWT.FILL, true, true,
    2, 1);<br>
            data.widthHint = 300;<br>
            data.heightHint = 300;<br>
            vtkView.getComponent().setLayoutData(data);<br>
    <br>
            vtkView.addSpheres(10, 10, 10, 10);<br>
    <br>
            Button isoButton = new Button(shell, SWT.PUSH);<br>
            isoButton.setText("ISO VIEW");<br>
            isoButton.addSelectionListener(new SelectionAdapter() {<br>
                @Override<br>
                public void widgetSelected(SelectionEvent e) {<br>
                    System.out.println("ISO");<br>
                    vtkCamera camera = vtkView.getActiveCamera();<br>
                    camera.SetPosition(new double[] { 1., 1., 1. });<br>
                    camera.SetViewUp(new double[] { 0., 0., 1. });<br>
                    vtkView.resetCamera();// <-- bad line<br>
                    vtkView.update();<br>
                }<br>
            });<br>
    <br>
            Button resetButton = new Button(shell, SWT.PUSH);<br>
            resetButton.setText("RESET VIEW");<br>
            resetButton.addSelectionListener(new SelectionAdapter() {<br>
                @Override<br>
                public void widgetSelected(SelectionEvent e) {<br>
                    System.out.println("RESET");<br>
                    vtkCamera newCamera = new vtkCamera();<br>
                    newCamera.SetPosition(new double[] { 1., 1., 1. });<br>
                    newCamera.SetViewUp(new double[] { 0., 0., 1. });<br>
                    vtkView.setCamera(newCamera);<br>
                    vtkView.resetCamera();<br>
                    vtkView.update();<br>
                }<br>
            });<br>
    <br>
            shell.pack();<br>
            shell.open();<br>
    <br>
            while (!shell.isDisposed()) {<br>
                if (!display.readAndDispatch()) {<br>
                    display.sleep();<br>
                }<br>
            }<br>
            display.dispose();<br>
        }<br>
    <br>
        public static void main(String[] args) {<br>
            CamTest camTest = new CamTest();<br>
        }<br>
    <br>
    }<br>
    <br>
  </body>
</html>