[vtkusers] Notification after interaction with vtkComposite(TransferFunction|ControlPoints)Item

Elvis Stansvik elvis.stansvik at orexplore.com
Wed Jun 22 06:23:48 EDT 2016


2016-06-22 11:07 GMT+02:00 Elvis Stansvik <elvis.stansvik at orexplore.com>:

> 2016-06-22 10:36 GMT+02:00 Elvis Stansvik <elvis.stansvik at orexplore.com>:
>
>> 2016-06-21 16:02 GMT+02:00 Elvis Stansvik <elvis.stansvik at orexplore.com>:
>>
>>> Hi all,
>>>
>>> I'm using a vtkCompositeTransferFunctionItem +
>>> vtkCompositeControlPointsItem in a vtkChartXY to modify the transfer
>>> functions used for some volume rendering.
>>>
>>> Is there some event from one of these items I can observe that will fire
>>> once interaction has occurred? I know I can observe the ModifiedEvent of
>>> the vtkCompositeTransferFunctionItem, but when dragging points around, it
>>> will fire on each mouse move. I need to be notified only once the
>>> interaction has stopped.
>>>
>>
>> Looking at the code, I noticed that vtkControlPointsItem seem to emit
>> vtkCommand::StartInteractionEvent and vtkCommand::EndInteractionEvent
>> (though I'm not sure...), and since vtkCompositeControlPointsItem
>> indirectly inherits vtkControlPointsItem, I tried to observe
>> vtkCommand::EndInteractionEvent with
>>
>>         self._pointsItem.AddObserver(vtkCommand.EndInteractionEvent,
>>                                      lambda *_: print('interaction
>> ended'))
>>
>> where self._pointsItem is my vtkCompositeControlPointsItem.
>>
>> But it seems the event is not emitted when I interact with the points.
>>
>> Any ideas here? Surely there must be some way of being notified when
>> interaction with the color transfer functions has ended? My use case is
>> that I don't want to issue a re-render of my volume each time the mouse
>> moves when dragging a point around. Only when dragging finally stops do I
>> want to re-render.
>>
>> Any advice is much appriciated.
>>
>
> After some more experimentation, trying to observe various events on the
> items, the chart, the context view and the context scene, I've realized I
> can observe
>
> vtkCommand.LeftButtonReleaseEvent
> vtkCommand.RightButtonReleaseEvent
> vtkCommand.MiddleButtonReleaseEvent
>
> on the context scene. This will work as a workaround, but seems overly
> liberal and complicated. Is there no single event on the composite control
> points item or the composite transfer function item I could observe?
>

Although I realized now that this approach won't work, since for some
reason, by the time I get the vtkCommand.MiddleButtonReleaseEvent, the
point has not yet been deleted. So still looking for a proper solution.

Elvis


>

> Elvis
>
>
>> Elvis
>>
>>
>>> Thanks in advance,
>>> Elvis
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160622/43553f72/attachment-0001.html>


More information about the vtkusers mailing list