[vtkusers] Changing Cell Color After picking
Dominik Szczerba
domi at vision.ee.ethz.ch
Sun Jan 7 19:02:39 EST 2007
enable coloring the dataset with a scalar, set the right one
--ds
Ricardo Seco VTK wrote:
> Still no results :(
>
> Ricardo Seco
>
> class vtkMyCallback : public vtkCommand
> {
> public:
> vtkMyCallback::vtkMyCallback() { m_pvtkActorSelection = NULL; };
> static vtkMyCallback *New() { return new vtkMyCallback; }
> void SetSelectionActor(vtkActor* pvtkActorSelection) {
> m_pvtkActorSelection = pvtkActorSelection; };
> void SetSelectionList(vtkIdList* pvtkIdDeletion) {
> m_pvtkIdDeletion = pvtkIdDeletion; };
> void SetSelectionDataSet(vtkPolyData* pvtkDataSet) {
> m_pvtkDataSet = pvtkDataSet; };
> void SetIren(vtkRenderWindowInteractor* pvtkIren) { m_pvtkIren =
> pvtkIren; };
> void SetSelectionMapper(vtkPolyDataMapper* pvtkDataMapper) {
> m_pvtkDataMapper = pvtkDataMapper; };
> virtual void Execute(vtkObject *caller, unsigned long, void*)
> {
> double coords[3];
> int pId;
> float ptr;
> vtkCellPicker *picker = (vtkCellPicker
> *)m_pvtkIren->GetPicker();
> picker->GetPickPosition(coords);
> // Obter o Id da cell que acabamos de fazer pickin
> pId = picker->GetCellId();
>
> m_pvtkDataSet->GetPointData()->GetScalars()->SetTuple1(pId,0);
> ------------------------------------------------------------
>
> m_pvtkDataSet->Update();------------------------------------------------------------------------------------------------------
>
>
> m_pvtkDataMapper->SetInput(m_pvtkDataSet);--------------------------------------------------------------------------------
>
> printf("Cell ID a remover: %d \n",pId);
> // Inserção da cell na vtkIdList
> m_pvtkIdDeletion->InsertNextId(pId);
> // Caso a cell já esteja na vtkIdList ou seja NULL(-1)
> for(int k=0; k<m_pvtkIdDeletion->GetNumberOfIds(); k++)
> {
> if ((pId) == (m_pvtkIdDeletion->GetId(k)) && (k!=0))
> {
> m_pvtkIdDeletion->DeleteId(pId);
> m_pvtkIdDeletion->InsertNextId(pId);
> }
> if ((pId) == -1)
> m_pvtkIdDeletion->DeleteId(pId);
> }
>
> printf("-------------------------------------------------------------------------\n");
>
> printf("Numero de Cells para
> remocao:%d\n",m_pvtkIdDeletion->GetNumberOfIds());
> printf("Lista de Cells para remocao:\n");
> for(int k=0; k<m_pvtkIdDeletion->GetNumberOfIds(); k++)
> printf("Pos:%d
> CellId:%d\n",k,m_pvtkIdDeletion->GetId(k));
> // Renderizar a nossa esfera de picking para a cell
> seleccionada
> if (picker->GetCellId() != -1)
> {
> if (m_pvtkActorSelection)
> m_pvtkActorSelection->SetPosition(coords);
> }
> m_pvtkIren->Render();
>
> //m_pvtkDataSet->GetPointData()->GetScalars()->SetTuple1(pId,1);
> }
> private:
> vtkActor* m_pvtkActorSelection;
> vtkIdList* m_pvtkIdDeletion;
> vtkPolyData* m_pvtkDataSet;
> vtkRenderWindowInteractor* m_pvtkIren;
> vtkPolyDataMapper* m_pvtkDataMapper;
> };
>
>
>
> Dominik Szczerba escreveu:
>> you may need to set/update the range in the mapper
>> --ds
>>
>> Ricardo Seco VTK wrote:
>>
>>> well i did after setting the tuple the update of my polydata object and
>>> nothing....
>>> any more sugestions?
>>>
>>> Ricardo Seco
>>>
>>> Dominik Szczerba escreveu:
>>>
>>>> well you have to Update() something
>>>> --DS
>>>>
>>>> Ricardo Seco VTK wrote:
>>>>
>>>>
>>>>> Hello. I am trying to change the color of the cell after picking but
>>>>> nothing happens...
>>>>> Could someone help me?
>>>>>
>>>>> Best Regards
>>>>> Ricardo Seco
>>>>>
>>>>> class vtkMyCallback : public vtkCommand
>>>>> {
>>>>> public:
>>>>> vtkMyCallback::vtkMyCallback() { m_pvtkActorSelection =
>>>>> NULL; };
>>>>> static vtkMyCallback *New() { return new vtkMyCallback; }
>>>>> void SetSelectionActor(vtkActor* pvtkActorSelection) {
>>>>> m_pvtkActorSelection = pvtkActorSelection; };
>>>>> void SetSelectionList(vtkIdList* pvtkIdDeletion) {
>>>>> m_pvtkIdDeletion = pvtkIdDeletion; };
>>>>> void SetSelectionDataSet(vtkPolyData* pvtkDataSet) {
>>>>> m_pvtkDataSet = pvtkDataSet; };
>>>>> void SetIren(vtkRenderWindowInteractor* pvtkIren) {
>>>>> m_pvtkIren =
>>>>> pvtkIren; };
>>>>> virtual void Execute(vtkObject *caller, unsigned long, void*)
>>>>> {
>>>>> double coords[3];
>>>>> int pId;
>>>>> float ptr;
>>>>> vtkCellPicker *picker = (vtkCellPicker
>>>>> *)m_pvtkIren->GetPicker();
>>>>> picker->GetPickPosition(coords);
>>>>> // Obter o Id da cell que acabamos de fazer pickin
>>>>> pId = picker->GetCellId();
>>>>>
>>>>> m_pvtkDataSet->GetPointData()->GetScalars()->SetTuple1(pId,0);--------------------------------------------------
>>>>>
>>>>>
>>>>> HERE
>>>>> printf("Cell ID a remover: %d \n",pId);
>>>>> // Inserção da cell na vtkIdList
>>>>> m_pvtkIdDeletion->InsertNextId(pId);
>>>>> // Caso a cell já esteja na vtkIdList ou seja NULL(-1)
>>>>> for(int k=0; k<m_pvtkIdDeletion->GetNumberOfIds(); k++)
>>>>> {
>>>>> if ((pId) == (m_pvtkIdDeletion->GetId(k)) &&
>>>>> (k!=0))
>>>>> {
>>>>> m_pvtkIdDeletion->DeleteId(pId);
>>>>> m_pvtkIdDeletion->InsertNextId(pId);
>>>>> }
>>>>> if ((pId) == -1)
>>>>> m_pvtkIdDeletion->DeleteId(pId);
>>>>> }
>>>>>
>>>>> printf("-------------------------------------------------------------------------\n");
>>>>>
>>>>>
>>>>>
>>>>> printf("Numero de Cells para
>>>>> remocao:%d\n",m_pvtkIdDeletion->GetNumberOfIds());
>>>>> printf("Lista de Cells para remocao:\n");
>>>>> for(int k=0; k<m_pvtkIdDeletion->GetNumberOfIds(); k++)
>>>>> printf("Pos:%d
>>>>> CellId:%d\n",k,m_pvtkIdDeletion->GetId(k));
>>>>> // Renderizar a nossa esfera de picking para a cell
>>>>> seleccionada
>>>>> if (picker->GetCellId() != -1)
>>>>> {
>>>>> if (m_pvtkActorSelection)
>>>>> m_pvtkActorSelection->SetPosition(coords);
>>>>> }
>>>>> m_pvtkIren->Render();
>>>>>
>>>>> m_pvtkDataSet->GetPointData()->GetScalars()->SetTuple1(pId,1);
>>>>> }
>>>>> private:
>>>>> vtkActor* m_pvtkActorSelection;
>>>>> vtkIdList* m_pvtkIdDeletion;
>>>>> vtkPolyData* m_pvtkDataSet;
>>>>> vtkRenderWindowInteractor* m_pvtkIren;
>>>>> };
>>>>> _______________________________________________
>>>>> This is the private VTK discussion list. Please keep messages
>>>>> on-topic.
>>>>> Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>>>>> Follow this link to subscribe/unsubscribe:
>>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>>
>>>>
>>> _______________________________________________
>>> This is the private VTK discussion list. Please keep messages on-topic.
>>> Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>
>>
>>
>
> _______________________________________________
> This is the private VTK discussion list. Please keep messages on-topic.
> Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
More information about the vtkusers
mailing list