Hello,<br><br>I'm trying to write a image filter, but I got this error:<br><br>ERROR: In \vwdev\PC\Libraries\vtk44\src\Common\vtkDataSet.cxx, line 376<br>vtkImageData (02476728): Point array color array with 3 components, only has 0<br> tuples but there are 4 points<br><br>do you have any idea?<br><br>Below are my code:<br><br>//------------main.cpp-------------------<br> #include "vtkRenderer.h"<br> #include "vtkRenderWindow.h"<br> #include "vtkRenderWindowInteractor.h"<br> #include "vtkInteractorStyleTrackballCamera.h"<br> #include "vtkPoints.h"<br> #include "vtkDataSetMapper.h"<br> #include "vtkImageData.h"<br> #include "vtkPointData.h"<br> #include "CImageMerger.h"<br> <br> int main( int argc, char *argv[] )<br> {<br> CImageMerger *reader = CImageMerger::New();<br> reader->Update();<br> cout <<"main: # of tuples in color array: " <<
reader->GetOutput()->GetPointData()->GetArray(0)->GetNumberOfTuples() <<endl;<br> <br> vtkDataSetMapper *mapper = vtkDataSetMapper::New();<br> mapper->SetInput(reader->GetOutput());<br> <br> vtkActor *actor = vtkActor::New();<br> actor->SetMapper(mapper);<br> <br> vtkRenderer* ren = vtkRenderer::New();<br> ren->AddActor(actor);<br> ren->SetBackground(1, 1, 1);<br> <br> vtkRenderWindow* renWin = vtkRenderWindow::New();<br> renWin->AddRenderer(ren);<br> <br> vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();<br> iren->SetRenderWindow(renWin);<br>
vtkInteractorStyleTrackballCamera *style = vtkInteractorStyleTrackballCamera::New();<br> iren->SetInteractorStyle(style);<br> renWin->SetSize(600,600);<br> renWin->Render();<br> iren->Start();<br> <br> style->Delete();<br> iren->Delete();<br> ren->Delete();<br> renWin->Delete();<br> actor->Delete();<br> mapper->Delete();<br> reader->Delete();<br> return 0;<br> <br> }<br> <br><br>//-------------CImageMerger.cpp--------------<br>#include "vtkFloatArray.h"<br>#include "vtkPointData.h"<br>#include "vtkObjectFactory.h"<br>#include <vector><br>#include "vtkUnsignedCharArray.h"<br>#include "vtkImageData.h"<br>#include "CImageMerger.h"<br><br>vtkCxxRevisionMacro(CImageMerger,
"$Revision: 1.30 $");<br>vtkStandardNewMacro(CImageMerger);<br><br>CImageMerger::CImageMerger():vtkImageSource()<br>{}<br>CImageMerger::~CImageMerger()<br>{}<br><br>void CImageMerger::ExecuteData(vtkDataObject*)<br>{<br> this->GetOutput()->SetDimensions(2, 2, 1);<br> this->GetOutput()->SetSpacing(1.0,1.0,1.0);<br> this->GetOutput()->SetOrigin(0.0,0.0,0.0);<br> this->GetOutput()->SetScalarType(VTK_UNSIGNED_CHAR);<br> vtkUnsignedCharArray *colorArray = vtkUnsignedCharArray::New();<br> colorArray->SetNumberOfComponents(3);<br> colorArray->SetNumberOfTuples(4);<br> colorArray->InsertNextTuple3(0,0,0);<br> colorArray->InsertNextTuple3(0,0,0);<br>
colorArray->InsertNextTuple3(0,0,0);<br> colorArray->InsertNextTuple3(0,0,0);<br> colorArray->SetName("color array");<br> this->GetOutput()->GetPointData()->SetScalars(colorArray);<br>}<br><br>void CImageMerger::ExecuteInformation()<br>{<br>}<br><br>void CImageMerger::PrintSelf(ostream& os, vtkIndent indent) <br>{<br>}<br><br>//--------CImageMerger.h-------------------<br>#include "vtkImageSource.h"<br><br>class CImageMerger : public vtkImageSource<br>{<br>public:<br> vtkTypeRevisionMacro(CImageMerger, vtkImageSource);<br> void PrintSelf(ostream& os, vtkIndent indent);<br> static CImageMerger *New();<br><br> CImageMerger();<br> ~CImageMerger();<br> <br>protected:<br> void ExecuteInformation();<br> void
ExecuteData(vtkDataObject*);<br> <br>private:<br> CImageMerger(const CImageMerger&); // Not implemented.<br> void operator=(const CImageMerger&); // Not implemented.<br> <br> <br>};<br><br><br>thanks<br> <br> tracy<br> <br><br><br><p> 
<hr size=1>Never miss a thing. <a href="http://us.rd.yahoo.com/evt=51438/*http://www.yahoo.com/r/hs"> Make Yahoo your homepage.</a>