<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>