[vtkusers] Animation of vtkUnstructuredGrid Code

Bill Lorensen bill.lorensen at gmail.com
Tue Jun 8 16:16:08 EDT 2010


Try
grid->Modified();
rather than
grid->Update();


2010/6/8 Сергеев Ефим <efim.sergeev at yandex.ru>:
> class vtkTimerCallback : public vtkCommand
> {
> public:
> static vtkTimerCallback *New()
> {
> vtkTimerCallback *cb = new vtkTimerCallback;
> cb->TimerCount = 0;
> return cb;
> }
>
> virtual void Execute(vtkObject *caller, unsigned long eventId,
> void * vtkNotUsed(callData))
> {
> if (vtkCommand::TimerEvent == eventId)
> {
> ++this->TimerCount;
> }
> else
> {
> return;
> }
>
> vtkSmartPointer displacements;
> const char *v_names = reader->GetVectorsNameInFile(TimerCount);
> displacements = grid->GetPointData()->GetVectors(v_names);
> int Size = displacements->GetSize();
> std::cout << v_names << std::endl;
> std::cout << Size << std::endl;
>
> double point[3];
>
>
> for(vtkIdType i = 0; i < grid->GetNumberOfPoints(); i++)
> {
>
> grid->GetPoint(i,point);
>
> double *touple;
>
> touple = displacements->GetTuple3(i);
>
>
> point[0]=point[0]+touple[0];
> point[1]=point[1]+touple[1];
> point[2]=point[2]+touple[2];
>
> grid->GetPoints()->SetPoint(i,point[0],point[1],point[2]);
> cout << this->TimerCount << endl;
> }
>
> grid->Update();
> actor->Modified();
>
> renderer->Render();
>
> }
>
> private:
> int TimerCount;
> public:
> vtkSmartPointer actor;
> vtkSmartPointer grid;
> vtkSmartPointer reader;
> vtkSmartPointer geometryFilter;
> vtkSmartPointer renderer;
> vtkSmartPointer renderWindow;
> vtkSmartPointer iren;
> vtkSmartPointer mapper;
> };
>
>
> int main(int, char *[])
> {
>
> vtkstd::string filename = "C://vtk//DATA//blow.vtk";
>
> //read all the data from the file
> vtkSmartPointer reader = vtkSmartPointer::New();
> reader->SetFileName(filename.c_str());
> reader->GetReadAllVectors();
> reader->ReadAllVectorsOn();
>
> reader->Update();
> vtkUnstructuredGrid* unstructuredGrid = reader->GetOutput();
>
>
>
> vtkSmartPointer geometryFilter = vtkSmartPointer::New();
> geometryFilter->SetInputConnection(unstructuredGrid->GetProducerPort());
>
> geometryFilter->Update();
>
> //Create a mapper and actor
> vtkSmartPointer mapper = vtkSmartPointer::New();
> mapper->SetInputConnection(geometryFilter->GetOutputPort());
> vtkSmartPointer actor = vtkSmartPointer::New();
> actor->SetMapper(mapper);
>
>
> //Create a renderer, render window, and interactor
> vtkSmartPointer renderer = vtkSmartPointer::New();
> vtkSmartPointer renderWindow = vtkSmartPointer::New();
> renderWindow->AddRenderer(renderer);
>
> vtkSmartPointer renderWindowInteractor = vtkSmartPointer::New();
> renderWindowInteractor->SetRenderWindow(renderWindow);
>
> //Add the actor to the scene
> renderer->AddActor(actor);
> //renderer->SetBackground(1,1,1); // Background color white
>
> //Render and interact
>
> renderWindow->Render();
>
> renderWindowInteractor->Initialize();
>
>
> // Sign up to receive TimerEvent
> vtkSmartPointer cb = vtkSmartPointer::New();
> //init cb
> cb->actor = actor;
> cb->grid = unstructuredGrid;
> cb->reader = reader;
> cb->renderWindow = renderWindow;
> cb->iren = renderWindowInteractor;
> cb->renderer = renderer;
> cb->mapper = mapper;
> cb->geometryFilter = geometryFilter;
>
>
> renderWindowInteractor->AddObserver(vtkCommand::TimerEvent, cb);
>
> int timerId = renderWindowInteractor->CreateRepeatingTimer(1000);
> std::cout << "timerId: " << timerId << std::endl;
>
>
> renderWindowInteractor->Start();
>
> return EXIT_SUCCESS;
> }
>
> 08.06.10, 23:37, "Bill Lorensen" <bill.lorensen at gmail.com>:
>
>> Please post your code.
>>
>>  2010/6/8 Сергеев Ефим :
>>  > 08.06.10, 17:58, "David Doria" :
>>  >
>>  > On Tue, Jun 8, 2010 at 9:46 AM, Сергеев Ефим  wrote:
>>  >>
>>  >> I have some sophisticated code on C++, it seems must animate
>>  >> vtkUnstrucuredGrid which loaded  from C:\VTK\Data\blow.vtk file.
>>  >> But code doesn't work. I not understand where error is located.
>>  >>
>>  >
>>  > What do you mean by "doesn't work"? Can you be more specific? What are you
>>  > trying to accomplish?
>>  > There are many examples here: http://www.vtk.org/Wiki/VTK/Examples
>>  > Including an animation demonstration. Please take a look and let us know if
>>  > you still have questions.
>>  > Thanks,
>>  >
>>  > David
>>  >
>>  >  The file "blow.vtk" contain description of unstructured grid and 10 vectors
>>  > "displacement0 ....displacement9" described by VECTOR keyword. Each vector
>>  > of value in these vectors specifies the offset of the initial position of
>>  > point is described by POINTS keyword.
>>  >
>>  > Using these data probably can construct animation for 10 frames, just move
>>  > points to next position by adding displacement. This is the goal of my
>>  > program.
>>  >
>>  > The basis of my program, this example
>>  > http://www.vtk.org/Wiki/VTK/Examples/Utilities/Animation. But this example
>>  > just move a sphere.
>>  >
>>  > My program runnig and displays the first frame, but after that the objects
>>  > in the window not movin
>>  > _______________________________________________
>>  > 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
>>  >
>>  > Follow this link to subscribe/unsubscribe:
>>  > http://www.vtk.org/mailman/listinfo/vtkusers
>>  >
>>  >
>>
>>
>
> --
> Здесь спама нет http://mail.yandex.ru/nospam/sign
>



More information about the vtkusers mailing list