<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2016-06-21 18:25 GMT+02:00 Elvis Stansvik <span dir="ltr"><<a href="mailto:elvis.stansvik@orexplore.com" target="_blank">elvis.stansvik@orexplore.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">2016-06-21 17:44 GMT+02:00 Elvis Stansvik <span dir="ltr"><<a href="mailto:elvis.stansvik@orexplore.com" target="_blank">elvis.stansvik@orexplore.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span><p dir="ltr">Den 21 juni 2016 4:45 em skrev "Ken Martin" <<a href="mailto:ken.martin@kitware.com" target="_blank">ken.martin@kitware.com</a>>:<br>
><br>
> That image doesn't match what I think you are saying, so maybe you can help me understand.  You mention the camera is positioned on a cylinder of radius 3.0 and from your code it looks like the focal point is not changing.<br>
><br>
> If that is true then at some point some of the cones will be behind your camera. For example if your focal point was (0,0,0) and your camera was at (3,10,0) then you would be looking mostly down the y axis and from your code you have a cone positioned at (0,20,0) which would be behind you.<br>
><br>
> Having said all that your image looks funny anyhow.  With a parallel projection all the cones should look the exact same aside from clipping but the first cone really looks off from the rest and the others are all identical so something is off.<br>
><br>
> I did look through that code and it looks reasonable to me (the patch referenced is not correct BTW, parallel projection still requires proper z buffer scaling and clipping)  If you could provide a few more images from different viewpoints, ideally with the resulting camera <br>
><br>
> clipping range<br>
> parallel scale <br>
> position<br>
> focal point<br>
><br>
> for those images that would help me see what is going on.</p>
</span><p dir="ltr">Thanks a lot for taking the time Ken. You're right of course about cones being behind me. I think what I meant was I'm never inside a cone.</p>
<p dir="ltr">I'll try to make a minimal test case when I get home, as I'm on the bus and only have my phone right now.</p></blockquote></span><div>Here's a minimal test case where the camera is positioned to look "down" on the stack of cones, the stack is cut off due to clipping (see attached .png):<br><br>from vtk import vtkRenderer, vtkRenderWindow, vtkRenderWindowInteractor<br>from vtk import vtkConeSource, vtkActor, vtkPolyDataMapper<br><br>renderer = vtkRenderer()<br>renderWindow = vtkRenderWindow()<br>renderWindow.SetSize(500, 1000)<br>renderWindow.AddRenderer(renderer)<br><br>interactor = vtkRenderWindowInteractor()<br>interactor.SetRenderWindow(renderWindow)<br> <br># Create a stack of 40 cones along the Y axis<br>for i in range(-20, 20):<span class=""><br>    coneSource = vtkConeSource()<br>    coneSource.SetDirection(0, 1, 0)<br>    coneSource.SetResolution(8)<br>    coneSource.SetCenter(0, i, 0)<br><br>    coneMapper = vtkPolyDataMapper()<br>    coneMapper.SetInputConnection(coneSource.GetOutputPort())<br><br>    coneActor = vtkActor()<br>    coneActor.SetMapper(coneMapper)<br><br></span>    renderer.AddActor(coneActor)<br><br># Position camera at (3.0, 10.0, 0), looking "down" along the stack<br>camera = renderer.GetActiveCamera()<br>camera.SetParallelProjection(True)<br>camera.SetPosition(3.0, 10.0, 0.0)<br>camera.SetFocalPoint(0.0, 0.0, 0.0)<br>camera.SetParallelScale(5.0)<br><br># Reset camera clipping range<br>renderer.ResetCameraClippingRange()<br><br># Print some camera info<br>print(camera)<br> <br>interactor.Start()<br></div></div></div></div></blockquote><div><br></div><div>Forgot to include the output from the test (the printing of the camera):<br><br>vtkOpenGLCamera (0x2130810)<br>  Debug: Off<br>  Modified Time: 17946<br>  Reference Count: 2<br>  Registered Events: (none)<br>  ClippingRange: (0.0531862, 53.1862)<br>  DirectionOfProjection: (-0.287348, -0.957826, 0)<br>  Distance: 10.4403<br>  EyeAngle: 2<br>  FocalDisk: 1<br>  FocalPoint: (0, 0, 0)<br>  ViewShear: (0, 0, 1)<br>  ParallelProjection: On<br>  ParallelScale: 5<br>  Position: (3, 10, 0)<br>  Stereo: Off<br>  Left Eye: 1<br>  Thickness: 53.133<br>  ViewAngle: 30<br>  UseHorizontalViewAngle: 0<br>  UserTransform: (none)<br>(none)<br>  FreezeFocalPoint: (none)<br>  ViewPlaneNormal: (0.287348, 0.957826, -0)<br>  ViewUp: (0, 1, 0)<br>  WindowCenter: (0, 0)<br>  UseOffAxisProjection: (0)<br>  ScreenBottomLeft: (-0.5, -0.5, -0.5)<br>  ScreenBottomRight: (0.5, -0.5, -0.5)<br>  ScreenTopRight: (0.5, 0.5, -0.5)<br>  EyeSeparation: (0.06)<br>  WorldToScreenMatrix: (0x2130a50<br>    Debug: Off<br>    Modified Time: 12739<br>    Reference Count: 1<br>    Registered Events: (none)<br>    Elements:<br>        1 0 0 0 <br>        0 1 0 0 <br>        0 0 1 0 <br>        0 0 0 1 <br>  )<br>  EyeTransformMatrix: (0x2130b40<br>    Debug: Off<br>    Modified Time: 12741<br>    Reference Count: 1<br>    Registered Events: (none)<br>    Elements:<br>        1 0 0 0 <br>        0 1 0 0 <br>        0 0 1 0 <br>        0 0 0 1 <br>  )<br>  ModelTransformMatrix: (0x2130c30<br>    Debug: Off<br>    Modified Time: 12743<br>    Reference Count: 1<br>    Registered Events: (none)<br>    Elements:<br>        1 0 0 0 <br>        0 1 0 0 <br>        0 0 1 0 <br>        0 0 0 1 <br>  )<br>  ProjectionTransform: (0x2131170<br>    Debug: Off<br>    Modified Time: 12748<br>    Reference Count: 1<br>    Registered Events: (none)<br>    Inverse: (0)<br>    Matrix: (0x21312a0)<br>      Debug: Off<br>      Modified Time: 17947<br>      Reference Count: 1<br>      Registered Events: (none)<br>      Elements:<br>            1 0 0 0 <br>            0 1 0 0 <br>            0 0 1 0 <br>            0 0 0 1 <br>    Input: (0)<br>    InverseFlag: 0<br>    NumberOfConcatenatedTransforms: 0<br>  )<br><br></div><div>Elvis<br> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>But I'm beginning to think this is maybe just a misunderstanding on my part. Perhaps this clipping is inevitable and expected when using parallel projection?<br><br></div><div>Thanks in advance,<br></div><div>Elvis<br><br></div><div><div class="h5"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span><font color="#888888">
<p dir="ltr">Elvis</p></font></span><div><div>
<p dir="ltr">><br>
> Thanks<br>
> Ken<br>
><br>
><br>
><br>
><br>
><br>
> On Tue, Jun 21, 2016 at 7:06 AM, Elvis Stansvik <<a href="mailto:elvis.stansvik@orexplore.com" target="_blank">elvis.stansvik@orexplore.com</a>> wrote:<br>
>><br>
>> Hi all,<br>
>><br>
>> I have a setup where the camera always moves on a cylinder of radius 3.0 around my subject (just testing with a stack of cones at the moment). The focal point is always positioned along the Y axis, and the camera may be moved up and down independent of the focus point, but the camera is always at a distance of 3 from the Y axis.<br>
>><br>
>> As soon as the user moves the camera, I reset the camera clipping range with ResetCameraClippingRange(). Despite this, when the camera and the focal point are far away from eachother, the actors (my stack of cones) get clipped by the near plane for some reason.<br>
>><br>
>> See the attached screenshot which shows the clipping.<br>
>><br>
>> What I'm doing to my camera (in response to Shift+mouse drag in my custom interactor) to end up in this situation is just:<br>
>><br>
>>         camera = renderer.GetActiveCamera()<br>
>>         (x, y, z) = camera.GetPosition()<br>
>>         camera.SetPosition(x, y - self.PanningFactor * dy, z)<br>
>>         renderer.ResetCameraClippingRange()<br>
>><br>
>> and I've verified that the camera is always at a distance of 3.0 from the Y axis.<br>
>><br>
>> The cones I'm using in this test were created with:<br>
>><br>
>>     for i in range(-10, 20):<br>
>>         coneSource = vtkConeSource()<br>
>>         coneSource.SetDirection(0, 1, 0)<br>
>>         coneSource.SetResolution(8)<br>
>>         coneSource.SetCenter(0, i, 0)<br>
>><br>
>>         coneMapper = vtkPolyDataMapper()<br>
>>         coneMapper.SetInputConnection(coneSource.GetOutputPort())<br>
>><br>
>>         coneActor = vtkActor()<br>
>>         coneActor.SetMapper(coneMapper)<br>
>><br>
>>         widget.renderer.AddActor(coneActor)<br>
>><br>
>> I don't understand why I see clipping occur here, since I'm using ResetCameraClippingRange, and nothing is behind the camera. The radius of these cones is the default (0.5).<br>
>><br>
>> It's probably something stupid, but any advice is much appreciated.<br>
>><br>
>> Elvis<br>
>><br>
>> _______________________________________________<br>
>> Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
>><br>
>> Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
>><br>
>> Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
>><br>
>> Search the list archives at: <a href="http://markmail.org/search/?q=vtkusers" target="_blank">http://markmail.org/search/?q=vtkusers</a><br>
>><br>
>> Follow this link to subscribe/unsubscribe:<br>
>> <a href="http://public.kitware.com/mailman/listinfo/vtkusers" target="_blank">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
>><br>
><br>
><br>
><br>
> -- <br>
> Ken Martin PhD<br>
> Chairman & CFO<br>
> Kitware Inc.<br>
> 28 Corporate Drive<br>
> Clifton Park NY 12065<br>
> <a href="tel:518%20371%203971" value="+15183713971" target="_blank">518 371 3971</a><br>
><br>
> This communication, including all attachments, contains confidential and legally privileged information, and it is intended only for the use of the addressee.  Access to this email by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken in reliance on it is prohibited and may be unlawful. If you received this communication in error please notify us immediately and destroy the original message.  Thank you.</p>
</div></div></blockquote></div></div></div><br></div></div>
</blockquote></div><br></div></div>