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

Bill Q bill.q.hdp at gmail.com
Wed May 24 11:27:52 EDT 2017


Hi Dan,
After set the layer, I got this error:

VTK-7.1.0\Rendering\Core\vtkRendererCollection.cxx, line 61
vtkRendererCollection (000000001192E3A0): Invalid layer for renderer: not
rendered.

And the text renderer didn't show up.

Many thanks.


Bill

On Wed, May 24, 2017 at 11:06 PM, Dan Lipsa <dan.lipsa at kitware.com> wrote:

> Bill,
> Try using SetLayer(1) for the renderer that has the text.
>
> Dan
>
>
> On Wed, May 24, 2017 at 10:34 AM, Bill Q <bill.q.hdp at gmail.com> wrote:
>
>> 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/d2179358/attachment.html>


More information about the vtkusers mailing list