yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #02027
[Branch ~yade-dev/yade/trunk] Rev 1759: Add colors rec to VTKRecorder
------------------------------------------------------------
revno: 1759
committer: Sergei D. <sega@laptop>
branch nick: trunk
timestamp: Wed 2009-09-16 08:58:04 +0400
message:
Add colors rec to VTKRecorder
modified:
pkg/dem/Engine/StandAloneEngine/VTKRecorder.cpp
pkg/dem/Engine/StandAloneEngine/VTKRecorder.hpp
--
lp:yade
https://code.launchpad.net/~yade-dev/yade/trunk
Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-dev/yade/trunk/+edit-subscription.
=== modified file 'pkg/dem/Engine/StandAloneEngine/VTKRecorder.cpp'
--- pkg/dem/Engine/StandAloneEngine/VTKRecorder.cpp 2009-09-15 19:32:10 +0000
+++ pkg/dem/Engine/StandAloneEngine/VTKRecorder.cpp 2009-09-16 04:58:04 +0000
@@ -2,6 +2,7 @@
#include<vtkCellArray.h>
#include<vtkPoints.h>
#include<vtkPointData.h>
+#include<vtkCellData.h>
#include<vtkSmartPointer.h>
#include<vtkFloatArray.h>
#include<vtkUnstructuredGrid.h>
@@ -38,6 +39,7 @@
FOREACH(string& rec, recorders){
if(rec=="spheres") recActive[REC_SPHERES]=true;
else if(rec=="facets") recActive[REC_FACETS]=true;
+ else if(rec=="colors") recActive[REC_COLORS]=true;
else LOG_ERROR("Unknown recorder named `"<<rec<<"' (supported are: spheres, facets). Ignored.");
}
@@ -46,9 +48,15 @@
vtkSmartPointer<vtkFloatArray> radii = vtkSmartPointer<vtkFloatArray>::New();
radii->SetNumberOfComponents(1);
radii->SetName("Radii");
+ vtkSmartPointer<vtkFloatArray> spheresColors = vtkSmartPointer<vtkFloatArray>::New();
+ spheresColors->SetNumberOfComponents(3);
+ spheresColors->SetName("Colors");
vtkSmartPointer<vtkPoints> facetsPos = vtkSmartPointer<vtkPoints>::New();
vtkSmartPointer<vtkCellArray> facetsCells = vtkSmartPointer<vtkCellArray>::New();
+ vtkSmartPointer<vtkFloatArray> facetsColors = vtkSmartPointer<vtkFloatArray>::New();
+ facetsColors->SetNumberOfComponents(3);
+ facetsColors->SetName("Colors");
FOREACH(const shared_ptr<Body>& b, *rootBody->bodies){
if (recActive[REC_SPHERES])
@@ -61,6 +69,12 @@
pid[0] = spheresPos->InsertNextPoint(pos[0], pos[1], pos[2]);
spheresCells->InsertNextCell(1,pid);
radii->InsertNextValue(sphere->radius);
+ if (recActive[REC_COLORS])
+ {
+ const Vector3r& color = sphere->diffuseColor;
+ float c[3] = {color[0],color[1],color[2]};
+ spheresColors->InsertNextTupleValue(c);
+ }
continue;
}
}
@@ -80,6 +94,12 @@
tri->GetPointIds()->SetId(i,nbPoints+i);
}
facetsCells->InsertNextCell(tri);
+ if (recActive[REC_COLORS])
+ {
+ const Vector3r& color = facet->diffuseColor;
+ float c[3] = {color[0],color[1],color[2]};
+ facetsColors->InsertNextTupleValue(c);
+ }
continue;
}
}
@@ -91,6 +111,7 @@
spheresUg->SetPoints(spheresPos);
spheresUg->SetCells(VTK_VERTEX, spheresCells);
spheresUg->GetPointData()->AddArray(radii);
+ if (recActive[REC_COLORS]) spheresUg->GetPointData()->AddArray(spheresColors);
vtkSmartPointer<vtkXMLUnstructuredGridWriter> writer = vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();
string fn=fileName+"spheres."+lexical_cast<string>(rootBody->currentIteration)+".vtu";
writer->SetFileName(fn.c_str());
@@ -102,6 +123,7 @@
vtkSmartPointer<vtkUnstructuredGrid> facetsUg = vtkSmartPointer<vtkUnstructuredGrid>::New();
facetsUg->SetPoints(facetsPos);
facetsUg->SetCells(VTK_TRIANGLE, facetsCells);
+ if (recActive[REC_COLORS]) facetsUg->GetCellData()->AddArray(facetsColors);
vtkSmartPointer<vtkXMLUnstructuredGridWriter> writer = vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();
string fn=fileName+"facets."+lexical_cast<string>(rootBody->currentIteration)+".vtu";
writer->SetFileName(fn.c_str());
=== modified file 'pkg/dem/Engine/StandAloneEngine/VTKRecorder.hpp'
--- pkg/dem/Engine/StandAloneEngine/VTKRecorder.hpp 2009-09-15 19:32:10 +0000
+++ pkg/dem/Engine/StandAloneEngine/VTKRecorder.hpp 2009-09-16 04:58:04 +0000
@@ -4,11 +4,11 @@
class VTKRecorder: public PeriodicEngine {
public:
- enum {REC_SPHERES=0,REC_FACETS,REC_SENTINEL};
+ enum {REC_SPHERES=0,REC_FACETS,REC_COLORS,REC_SENTINEL};
+ //! A stuff to record: spheres,facets,colors
vector<string> recorders;
string fileName;
- //bool multiBlockData;
- VTKRecorder(); //{ /* we always want to save the first state as well */ initRun=true; };
+ VTKRecorder();
~VTKRecorder();
void init(MetaBody*);
virtual void action(MetaBody*);