VTK例子12-extrudeCopyCD(字符立体化)
extrudeCopyCD(字符立体化)#include "stdafx.h"#include "vtkRenderer.h"#include "vtkRenderWindow.h"#include "vtkRenderWindowInteractor.h"#include "vtkDataSetMapper.h"#include "vtkActor.h"#include "vtkVectorText.h"#include "vtkTransform.h"#include "vtkTransformFilter.h"#include "vtkCamera.h"#include "vtkProperty.h"#include "vtkStripper.h"#include "vtkPolyDataMapper.h"#include "vtkAppendPolyData.h"#include "vtkLinearExtrusionFilter.h"#include "vtkMath.h"#include "vtkUnsignedCharArray.h"#include "vtkArrowSource.h"#include "vtkCellData.h" int main( int argc, char *argv() ){ vtkRenderer *renderer = vtkRenderer::New(); vtkRenderWindow *renWin = vtkRenderWindow::New(); renWin->AddRenderer(renderer); vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); iren->SetRenderWindow(renWin); vtkVectorText *disk=vtkVectorText::New();disk-> SetText ("Q"); vtkTransform *t=vtkTransform::New();t-> Translate( 1.1, 0, 0);vtkTransformFilter *tf=vtkTransformFilter::New();tf-> SetTransform( t);tf-> SetInputConnection( disk-> GetOutputPort());vtkStripper *strips=vtkStripper::New();strips-> SetInputConnection (tf-> GetOutputPort()); vtkAppendPolyData *app=vtkAppendPolyData::New();app-> AddInput ( disk ->GetOutput());app-> AddInput ( strips-> GetOutput());app-> Update(); int numcell=app-> GetOutput()->GetNumberOfCells(); vtkLinearExtrusionFilter *extrude=vtkLinearExtrusionFilter::New();extrude-> SetInput (app-> GetOutput()); vtkPolyDataMapper *mapper=vtkPolyDataMapper::New(); mapper-> SetInputConnection (extrude-> GetOutputPort()); vtkActor *actor=vtkActor::New(); actor-> SetMapper (mapper); // create random cell scalars for the model before extrusion. vtkMath *rn=vtkMath::New();rn-> RandomSeed (1230);vtkUnsignedCharArray *cellColors=vtkUnsignedCharArray::New();cellColors-> SetNumberOfComponents (3);cellColors-> SetNumberOfTuples (numcell);for(int i=0;i<numcell;i++){ cellColors-> InsertComponent (i ,0 ,rn-> Random( 100 ,255)); cellColors-> InsertComponent (i ,1 ,rn-> Random( 100 ,255)); cellColors-> InsertComponent (i ,2 ,rn-> Random( 100 ,255));} app-> GetOutput()->GetCellData()->SetScalars(cellColors); //Lets test the arrow source instead of creating another test.vtkArrowSource *arrow1=vtkArrowSource::New(); vtkPolyDataMapper *mapper1=vtkPolyDataMapper::New();mapper1-> SetInputConnection (arrow1-> GetOutputPort()); vtkActor *actor1 =vtkActor::New();actor1-> SetMapper (mapper1 );actor1-> SetPosition (0, -0.2, 1); vtkArrowSource *arrow2=vtkArrowSource::New();arrow2-> SetShaftResolution( 2);arrow2-> SetTipResolution( 1); vtkPolyDataMapper *mapper2=vtkPolyDataMapper::New();mapper2-> SetInputConnection (arrow2-> GetOutputPort()); vtkActor *actor2 =vtkActor::New();actor2-> SetMapper (mapper2);actor2-> SetPosition( 1 ,-0.2 ,1); renderer-> AddActor (actor); renderer-> AddActor (actor1); renderer-> AddActor (actor2); renderer-> SetBackground (1 ,1 ,1); renWin-> SetSize (600 ,600); // interact with datarenWin->Render(); // SAVEIMAGE( renWin ); iren->Start(); // Clean uprenderer->Delete();renWin->Delete();iren->Delete(); return 0;} zhichizhichi 好 人生真是寂寞如雪啊。 谢谢分享 学习学习一下
页:
[1]