<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html><body style='font-family: Verdana,Geneva,sans-serif'>
<p>I'm using the lastest version of VTK (6.2). I fogot to mention that I have tested the code in other PCs (with more RAM and better video graphics) and I didn't see the inconsistent frame rate. That's why I would like to know if it could be related to the limited resources of the PC I'm currently working on. Are there any minimum requirements depending on the operation that is to be perform in VTK?</p>
<p> </p>
<div> </div>
<p>El 27-04-2015 14:05, Bill Lorensen escribió:</p>
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px; width:100%"><!-- html ignored --><!-- head ignored --><!-- meta ignored -->
<pre>What version of VTK are you using. I do not see and degradation when I
run on my Mac with the latest VTK.

On Mon, Apr 27, 2015 at 7:11 AM,  <<a href="mailto:javier.maestro@nabla-designs.es">javier.maestro@nabla-designs.es</a>> wrote:</pre>
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px; width:100%">The code appeared a little messed up, sorry about that. I attached the code on the ColoredPoints.cxx file. El 27-04-2015 09:59, <a href="mailto:javier.maestro@nabla-designs.es">javier.maestro@nabla-designs.es</a> escribió: Hi all, I'm testing VTK limits rendering a large number of points of a vtkPolyData structure. I'm trying to determine how many points can I use so the frame rate is fast enough for a specific application. As expected, as the number of points gets bigger, the rendering takes more time and the frame rate decreases. I expect the frame rate to decrease but I also expect it to keep a constant value. However even though at first it seems to be constant, sometimes the frame rate drops drastically and it takes a while to get back to that constant rate. I'm using a grid of points (128 x 400) just as an example. I get 6 FPS using the program below (PC Intel Core 2 Duo 2GHz, 3GB RAM, Windows 7), but sometimes it drops to 0 FPS and it stays in there for periods of 1 min. Is there any reason for the inconsistent frame rate? Thanks. #include <vtkVersion.h> #include <vtkSmartPointer.h> #include <vtkPoints.h> #include <vtkPolyData.h> #include <vtkPointData.h> #include <vtkCellArray.h> #include <vtkUnsignedCharArray.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkRenderWindow.h> #include <vtkRenderer.h> #include <vtkRenderWindowInteractor.h> #include <vtkVertexGlyphFilter.h> #include <vtkProperty.h> #include <vtkLookupTable.h> #include <vtkFloatArray.h> #include <vtkPoints.h> #include <vtkTextActor.h> #include <vtkTextProperty.h> #include <vtkCommand.h> #include <stdio.h> #define LINES_X 128 #define LINES_Y 400 /** Update callback. */ class vtkTimerCallback : public vtkCommand{ public: /** New operator. */ static vtkTimerCallback *New(){ return (vtkTimerCallback *)new vtkTimerCallback; } /** Callback timer. */ virtual void Execute(vtkObject *caller, unsigned long vtkNotUsed(eventId), void *vtkNotUsed(callData)){ static char value[40]; static int counter = 0; vtkRenderWindowInteractor *iren = static_cast<vtkRenderWindowInteractor*>(caller); // Update frame counter textActor->SetInput(value); textActor->Modified(); sprintf(&value[0], "%d", counter ++); // Just render again (data hasn't really changed) poly->Modified(); iren->Render(); } // Access polydata and text actor vtkSmartPointer<vtkPolyData> poly; vtkSmartPointer<vtkTextActor> textActor; }; // Cell connectivity vtkSmartPointer<vtkCellArray> getCells(){ vtkSmartPointer<vtkCellArray> mesh = vtkSmartPointer<vtkCellArray>::New(); int nx = LINES_X; int ny = LINES_Y; for(int i=0;i<nx-1;i++){ for(int j=0;j<ny-1;j++){ mesh->InsertNextCell(4); mesh->InsertCellPoint((0+j) + ny*i); mesh->InsertCellPoint((ny+j) + ny*i); mesh->InsertCellPoint((ny+1+j) + ny*i); mesh->InsertCellPoint((1+j)+ ny*i); } } return mesh; } int main(int, char *[]){ // Polydata vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New(); vtkSmartPointer<vtkFloatArray> scalars = vtkSmartPointer<vtkFloatArray>::New(); vtkSmartPointer<vtkPolyData> poly = vtkSmartPointer<vtkPolyData>::New(); for(int a=0;a<LINES_X;a++){ for(int b=0;b<LINES_Y;b++){ points->InsertNextPoint((float)a, (float)b, 0); float value = (float)a/(float)LINES_X; scalars->InsertNextValue(value); } } poly->SetPoints(points); poly->GetPointData()->SetScalars(scalars); poly->SetPolys(getCells()); // Mapper vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); mapper->SetInputData(poly); mapper->ScalarVisibilityOn(); mapper->SetScalarModeToUsePointData(); mapper->SetColorModeToMapScalars(); mapper->SetScalarRange(0, 1.0); // Lookup Table vtkSmartPointer<vtkLookupTable> lookupTable = vtkSmartPointer<vtkLookupTable>::New(); lookupTable->SetTableRange(0, 1.0); mapper->SetLookupTable(lookupTable); mapper->ReleaseDataFlagOn(); mapper->ImmediateModeRenderingOn(); // Actor vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New(); actor->SetMapper(mapper); // Renderer vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->AddRenderer(renderer); // Setup the text and add it to the window vtkSmartPointer<vtkTextActor> textActor = vtkSmartPointer<vtkTextActor>::New(); textActor->GetTextProperty()->SetFontSize ( 24 ); textActor->SetPosition2 ( 10, 40 ); renderer->AddActor2D ( textActor ); textActor->SetInput ( "0" ); textActor->GetTextProperty()->SetColor ( 1.0,0.0,0.0 ); // Add actors renderer->AddActor(actor); renderer->AddActor(textActor); // Interactor vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); renderWindowInteractor->SetRenderWindow(renderWindow); // Render renderWindow->Render(); renderWindowInteractor->Initialize(); // Sign up to receive TimerEvent (Update) vtkSmartPointer<vtkTimerCallback> timerCallback = vtkSmartPointer<vtkTimerCallback>::New(); timerCallback->poly = poly; timerCallback->textActor = textActor; renderWindowInteractor->AddObserver(vtkCommand::TimerEvent, timerCallback); renderWindowInteractor->CreateRepeatingTimer(1); // Start interactor renderWindowInteractor->Start(); return EXIT_SUCCESS; } _______________________________________________ Powered by <a href="http://www.kitware.com">www.kitware.com</a> Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a> Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a> Search the list archives at: <a href="http://markmail.org/search/?q=vtkusers">http://markmail.org/search/?q=vtkusers</a> Follow this link to subscribe/unsubscribe: <a href="http://public.kitware.com/mailman/listinfo/vtkusers">http://public.kitware.com/mailman/listinfo/vtkusers</a></blockquote>
</blockquote>
</body></html>