[vtkusers] LookupTable show greyscale colour only

Clement.Chu at csiro.au Clement.Chu at csiro.au
Thu Jul 28 08:24:18 EDT 2011


Hi,

   I used the following code to display image data, but I have no idea why I cannot show colour.

         unsigned char* ptr;  // used defined data
         int nx, ny, nx;

	vtkImageData vtkData = vtkImageData::New();
        vtkData->SetDimensions(nx, ny, nz);
	vtkData->GetPointData()->GetScalars()->SetVoidArray(ptr, (nx * ny * nz), 1);

	vtkData->SetScalarTypeToUnsignedChar();
	vtkData->AllocateScalars();

	vtkLookupTable vtkColourMap = vtkLookupTable::New();
	vtkColourMap->SetNumberOfTableValues(256);
	vtkColourMap->SetTableRange(0, 255);

	vtkDataSetMapper vtkMapper = vtkDataSetMapper::New();
	vtkMapper->SetInput(vtkData);
	vtkMapper->SetLookupTable(vtkColourMap);

	vtkActor vtkMapperActor = vtkActor::New();
	vtkMapperActor->SetMapper(vtkMapper);
	
        vtkRenderer vtkRender = vtkRenderer::New();
	vtkRender->AddActor(vtkMapperActor);
	vtkRender->SetBackground(0.0, 0.0, 0.0);
	
	vtkWin32OpenGLRenderWindow vtkViewer = vtkWin32OpenGLRenderWindow::New();
	vtkViewer->SetParentId(m_hWnd);
	vtkViewer->AddRenderer(vtkRender);

	vtkWin32RenderWindowInteractor *renderWindowInteractor = vtkWin32RenderWindowInteractor::New();
	renderWindowInteractor->SetRenderWindow(vtkViewer);
	renderWindowInteractor->Initialize();

   The above codes are used to initial the viewer.  After that, I will create colour map table by "SetTableValue" function.  Then I will read my data file and assign the unsiged char value into "ptr".  Finally calling the following codes to update the data.

		vtkData->GetPointData()->GetScalars()->Modified();
		vtkViewer->Render();


   My problem is that the above codes can show greyscale colour.  If I used vtkVolumeRayCastMapper and vtkColorTransferFunction, I can display the colour I wanted.  I wonder why I can't use lookup table to set colour.


Clement



More information about the vtkusers mailing list