<div>Tracy,</div>
<div> </div>
<div>You should be using:</div>
<div> colorArray->InsertTuple3(0,0,0,0);<br> colorArray->InsertTuple3(1,0,0,0);<br> colorArray->InsertTuple3(2,0,0,0);<br> colorArray->InsertTuple3(3,0,0,0);<br><br>InsertNextTuple3 will add to the already allocated colorArray.
</div>
<div> </div>
<div>This does not explain the error message you get however.</div>
<div> </div>
<div>Bill<br></div>
<div class="gmail_quote">On Dec 28, 2007 8:28 PM, Tracy Hu <<a href="mailto:tracy.hu@yahoo.com">tracy.hu@yahoo.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">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><font color="#888888">
<br>tracy<br></font>
<div class="WgoR0d"><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" target="_blank">Make Yahoo your homepage.</a>
<p></p></p></div><br>_______________________________________________<br>This is the private VTK discussion list.<br>Please keep messages on-topic. Check the FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">
http://www.vtk.org/Wiki/VTK_FAQ</a><br>Follow this link to subscribe/unsubscribe:<br><a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br><br></blockquote>
</div><br>