[vtkusers] Issues with coordinate conversion, possible VTK bugs?

Bill Q bill.q.hdp at gmail.com
Wed May 24 10:34:50 EDT 2017


Hi Dan,
Thanks a ton for the example. The example used 4 different viewports.
However, for my application, I need to set all renderers under the same
viewport. The problem is that if I add a second renderer into the render
window and using the default viewport, it will cover the first renderer and
nothing on the first renderer will show up. I am wondering if I did the
whole thing wrong.

My purpose is to display some DICOM images, some texts, and scales on the
same screen. Also, I would like to make the scales zoom with the DICOM
images but the texts stay put. Most importantly, I would like to get the
world coordinates on the DICOM image when users click on the screen, so I
can mark the click properly.

What should be done in order to get this working?


Many thanks.


Bill

On Wed, May 24, 2017 at 12:02 AM, Dan Lipsa <dan.lipsa at kitware.com> wrote:

> Not sure what is going on. Do the objects you are rendering have the same
> world coordinates? Are both renderers added to the rendering window?
> Here is an example with multiple renderer (they are over different
> viewports but they could have the same viewport as well)
> http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/MultipleViewports
>
> On Tue, May 23, 2017 at 11:39 AM, Bill Q <bill.q.hdp at gmail.com> wrote:
>
>> I just gave it a try. But when I added another renderer into the window
>> that I used for text actors, it overlaps and covered the first renderer. So
>> the first renderer won't show up. Is there a solution?
>>
>> Many thanks.
>>
>>
>> Bill
>>
>> On Tue, May 23, 2017 at 10:16 PM, Dan Lipsa <dan.lipsa at kitware.com>
>> wrote:
>>
>>> I think moving those text actors on a different renderer will solve your
>>> problem.
>>>
>>> Dan
>>>
>>>
>>> On Tue, May 23, 2017 at 9:40 AM, Bill Q <bill.q.hdp at gmail.com> wrote:
>>>
>>>> Hi Dan,
>>>> Thanks a lot for the reply. Yes, that's exactly the case. If I remove
>>>> the text actors, the world picker would return the correct coordinates. So,
>>>> what method should I use in order to get the correct coordinates no matter
>>>> how many actors I put in with the dicom image reader actor?
>>>>
>>>> Many thanks.
>>>>
>>>>
>>>> Bill
>>>>
>>>> On Mon, May 22, 2017 at 10:04 PM, Dan Lipsa <dan.lipsa at kitware.com>
>>>> wrote:
>>>>
>>>>> Bill,
>>>>> For display_to_world, the picker picks up only what is visible (closes
>>>>> to the camera). You might have several objects (several values in world
>>>>> coordinates) that end up over the same display coordinate. This might
>>>>> explain why adding those text actors changes what you pick.
>>>>>
>>>>> Dan
>>>>>
>>>>>
>>>>>
>>>>> On Sun, May 21, 2017 at 5:25 AM, Bill Q <bill.q.hdp at gmail.com> wrote:
>>>>>
>>>>>> Can anybody help? Many thanks.
>>>>>>
>>>>>> Many thanks.
>>>>>>
>>>>>>
>>>>>> Bill
>>>>>>
>>>>>> On Fri, May 19, 2017 at 11:20 PM, Bill Q <bill.q.hdp at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hello Everyone,
>>>>>>> I encountered a weird problem in coordinate conversion.
>>>>>>>
>>>>>>> In order to check the accuracy, I converted from display to world,
>>>>>>> and from world back to display. Using the following ways:
>>>>>>>
>>>>>>>
>>>>>>> *self.world_picker = vtk.vtkWorldPointPicker()*
>>>>>>>
>>>>>>> *def *display_to_world(self, pt):
>>>>>>>     self.world_picker.Pick(pt[0], pt[1], 0, self.ren)
>>>>>>>     picker_pt = self.world_picker.GetPickPosition()
>>>>>>>     picker_pt = (picker_pt[0], picker_pt[1], 0)
>>>>>>>     *return *picker_pt
>>>>>>>
>>>>>>> *def *world_to_display(self, pt):
>>>>>>>     *if *len(pt) == 3:
>>>>>>>         pt = pt + (1.0,)
>>>>>>>     *elif *len(pt) == 2:
>>>>>>>         pt = pt + (0.0, 1.0)
>>>>>>>     self.ren.SetWorldPoint(pt)
>>>>>>>     self.ren.WorldToDisplay()
>>>>>>>     pt = self.ren.GetDisplayPoint()
>>>>>>>     pt = (pt[0], pt[1])
>>>>>>>     *return *pt
>>>>>>>
>>>>>>> pt = [5, 5]
>>>>>>>
>>>>>>> world_pt = self. world_to_display(pt)
>>>>>>>
>>>>>>> display_pt = self. world_to_display(world_pt)
>>>>>>> In some cases, it's quite accurate, which means pt equals
>>>>>>> display_pt. But, in some cases, the result is simply wrong. For example,
>>>>>>> for (5, 5), after conversions back to display, the coordinate becomes
>>>>>>> (20.89, 20.89).
>>>>>>>
>>>>>>> Any ideas?
>>>>>>>
>>>>>>>
>>>>>>> Many thanks.
>>>>>>>
>>>>>>>
>>>>>>> Bill
>>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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
>>>>>>
>>>>>> Search the list archives at: http://markmail.org/search/?q=vtkusers
>>>>>>
>>>>>> Follow this link to subscribe/unsubscribe:
>>>>>> http://public.kitware.com/mailman/listinfo/vtkusers
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170524/0793cb46/attachment.html>


More information about the vtkusers mailing list