//wizualizacja 3d ----------------------------------------------------------------- public Visualization3D(RenderWindowControl window, vtkDICOMImageReader dicomReader) { this.window = window; this.dicomReader = dicomReader; this.presetMapper = new PresetMapper(); vtkRenderer renderer = window.RenderWindow.GetRenderers().GetFirstRenderer(); vtkSmartVolumeMapper mapper = vtkSmartVolumeMapper.New(); vol = vtkVolume.New(); vtkLookupTable bwLut = vtkLookupTable.New(); bwLut.SetTableRange(0, 2000); bwLut.SetSaturationRange(0, 0); bwLut.SetHueRange(0, 0); bwLut.SetValueRange(0, 1); bwLut.Build(); //effective built vtkImageMapToColors sagittalColors = vtkImageMapToColors.New(); sagittalColors.SetInputConnection(dicomReader.GetOutputPort()); sagittalColors.SetLookupTable(bwLut); sagittalColors.Update(); vtkImageActor sagittal = vtkImageActor.New(); sagittal.SetInput(sagittalColors.GetOutput()); sagittal.SetDisplayExtent(117, 117, 0, 173, 1, 180); vtkImageReslice reslicer = vtkImageReslice.New(); reslicer.SetResliceAxesDirectionCosines(1, 0, 0, 2, 0, 0, 0, 0, 0); mapper.SetInputConnection(dicomReader.GetOutputPort()); this.setColorFunction(); this.setOpacityFunction(); this.setGradientOpacity(); vol.SetMapper(mapper); renderer.AddActor(sagittal); renderer.AddVolume(vol); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVTestImageStreamer(String [] argv) { //Prefix Content is: "" reader = new vtkImageReader(); reader.ReleaseDataFlagOff(); reader.SetDataByteOrderToLittleEndian(); reader.SetDataExtent((int)0,(int)63,(int)0,(int)63,(int)1,(int)93); reader.SetFilePrefix((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/headsq/quarter"); reader.SetDataMask((int)0x7fff); rangeStart = 0.0; rangeEnd = 0.2; LUT = new vtkLookupTable(); LUT.SetTableRange((double)0,(double)1800); LUT.SetSaturationRange((double)1,(double)1); LUT.SetHueRange((double)rangeStart,(double)rangeEnd); LUT.SetValueRange((double)1,(double)1); LUT.SetAlphaRange((double)1,(double)1); LUT.Build(); // added these unused default arguments so that the prototype[] // matches as required in python.[] //method moved mapToRGBA = new vtkImageMapToColors(); mapToRGBA.SetInputConnection((vtkAlgorithmOutput)reader.GetOutputPort()); mapToRGBA.SetOutputFormatToRGBA(); mapToRGBA.SetLookupTable((vtkScalarsToColors)LUT); mapToRGBA.EndEvt += new Kitware.VTK.vtkObject.vtkObjectEventHandler(changeLUT_Command.Execute); streamer = new vtkMemoryLimitImageDataStreamer(); streamer.SetInputConnection((vtkAlgorithmOutput)mapToRGBA.GetOutputPort()); streamer.SetMemoryLimit((uint)100); streamer.UpdateWholeExtent(); // set the window/level to 255.0/127.5 to view full range[] viewer = new vtkImageViewer(); viewer.SetInputConnection((vtkAlgorithmOutput)streamer.GetOutputPort()); viewer.SetColorWindow((double)255.0); viewer.SetColorLevel((double)127.5); viewer.SetZSlice((int)50); viewer.Render(); //deleteAllVTKObjects(); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVTestImageStreamer(String [] argv) { //Prefix Content is: "" reader = new vtkImageReader(); reader.ReleaseDataFlagOff(); reader.SetDataByteOrderToLittleEndian(); reader.SetDataExtent((int)0, (int)63, (int)0, (int)63, (int)1, (int)93); reader.SetFilePrefix((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/headsq/quarter"); reader.SetDataMask((int)0x7fff); rangeStart = 0.0; rangeEnd = 0.2; LUT = new vtkLookupTable(); LUT.SetTableRange((double)0, (double)1800); LUT.SetSaturationRange((double)1, (double)1); LUT.SetHueRange((double)rangeStart, (double)rangeEnd); LUT.SetValueRange((double)1, (double)1); LUT.SetAlphaRange((double)1, (double)1); LUT.Build(); // added these unused default arguments so that the prototype[] // matches as required in python.[] //method moved mapToRGBA = new vtkImageMapToColors(); mapToRGBA.SetInputConnection((vtkAlgorithmOutput)reader.GetOutputPort()); mapToRGBA.SetOutputFormatToRGBA(); mapToRGBA.SetLookupTable((vtkScalarsToColors)LUT); mapToRGBA.EndEvt += new Kitware.VTK.vtkObject.vtkObjectEventHandler(changeLUT_Command.Execute); streamer = new vtkMemoryLimitImageDataStreamer(); streamer.SetInputConnection((vtkAlgorithmOutput)mapToRGBA.GetOutputPort()); streamer.SetMemoryLimit((uint)100); streamer.UpdateWholeExtent(); // set the window/level to 255.0/127.5 to view full range[] viewer = new vtkImageViewer(); viewer.SetInputConnection((vtkAlgorithmOutput)streamer.GetOutputPort()); viewer.SetColorWindow((double)255.0); viewer.SetColorLevel((double)127.5); viewer.SetZSlice((int)50); viewer.Render(); //deleteAllVTKObjects(); }
private void ReadDEM() { // Path to vtk data must be set as an environment variable // VTK_DATA_ROOT = "C:\VTK\vtkdata-5.8.0" vtkTesting test = vtkTesting.New(); string root = test.GetDataRoot(); string filePath = System.IO.Path.Combine(root, @"Data\SainteHelens.dem"); vtkDEMReader reader = vtkDEMReader.New(); reader.SetFileName(filePath); reader.Update(); vtkLookupTable lut = vtkLookupTable.New(); lut.SetHueRange(0.6, 0); lut.SetSaturationRange(1.0, 0); lut.SetValueRange(0.5, 1.0); double[] range = reader.GetOutput().GetScalarRange(); lut.SetTableRange(range[0], range[1]); // Visualize vtkImageMapToColors mapColors = vtkImageMapToColors.New(); mapColors.SetLookupTable(lut); mapColors.SetInputConnection(reader.GetOutputPort()); // Create an actor vtkImageActor actor = vtkImageActor.New(); actor.SetInput(mapColors.GetOutput()); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(0.2, 0.3, 0.4); // add our actor to the renderer renderer.AddActor(actor); }
private void RenderDEM() { vtkDEMReader reader = vtkDEMReader.New(); reader.SetFileName(m_FileName); reader.Update(); vtkLookupTable lut = vtkLookupTable.New(); lut.SetHueRange(0.6, 0); lut.SetSaturationRange(1.0, 0); lut.SetValueRange(0.5, 1.0); double[] range = reader.GetOutput().GetScalarRange(); lut.SetTableRange(range[0], range[1]); // Visualize vtkImageMapToColors mapColors = vtkImageMapToColors.New(); mapColors.SetLookupTable(lut); mapColors.SetInputConnection(reader.GetOutputPort()); // Create an actor vtkImageActor actor = vtkImageActor.New(); actor.SetInput(mapColors.GetOutput()); // add our actor to the renderer m_Renderer.AddActor(actor); imgPropList.Add(actor); m_Renderer.ResetCamera(); //Rerender the screen m_RenderWindow.Render(); m_Renderer.Render(); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVTestMultiBlockStreamer(String [] argv) { //Prefix Content is: "" // we need to use composite data pipeline with multiblock datasets[] alg = new vtkAlgorithm(); pip = new vtkCompositeDataPipeline(); vtkAlgorithm.SetDefaultExecutivePrototype((vtkExecutive)pip); //skipping Delete pip Ren1 = vtkRenderer.New(); Ren1.SetBackground((double)0.33, (double)0.35, (double)0.43); renWin = vtkRenderWindow.New(); renWin.AddRenderer((vtkRenderer)Ren1); iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow((vtkRenderWindow)renWin); Plot3D0 = new vtkMultiBlockPLOT3DReader(); Plot3D0.SetFileName((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/combxyz.bin"); Plot3D0.SetQFileName((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/combq.bin"); Plot3D0.SetBinaryFile((int)1); Plot3D0.SetMultiGrid((int)0); Plot3D0.SetHasByteCount((int)0); Plot3D0.SetIBlanking((int)0); Plot3D0.SetTwoDimensionalGeometry((int)0); Plot3D0.SetForceRead((int)0); Plot3D0.SetByteOrder((int)0); Plot3D0.Update(); Geometry5 = new vtkStructuredGridOutlineFilter(); Geometry5.SetInputData((vtkDataSet)Plot3D0.GetOutput().GetBlock(0)); Mapper5 = vtkPolyDataMapper.New(); Mapper5.SetInputConnection((vtkAlgorithmOutput)Geometry5.GetOutputPort()); Mapper5.SetImmediateModeRendering((int)1); Mapper5.UseLookupTableScalarRangeOn(); Mapper5.SetScalarVisibility((int)0); Mapper5.SetScalarModeToDefault(); Actor5 = new vtkActor(); Actor5.SetMapper((vtkMapper)Mapper5); Actor5.GetProperty().SetRepresentationToSurface(); Actor5.GetProperty().SetInterpolationToGouraud(); Actor5.GetProperty().SetAmbient((double)0.15); Actor5.GetProperty().SetDiffuse((double)0.85); Actor5.GetProperty().SetSpecular((double)0.1); Actor5.GetProperty().SetSpecularPower((double)100); Actor5.GetProperty().SetSpecularColor((double)1, (double)1, (double)1); Actor5.GetProperty().SetColor((double)1, (double)1, (double)1); Ren1.AddActor((vtkProp)Actor5); ExtractGrid[0] = new vtkExtractGrid(); ExtractGrid[0].SetInputData((vtkDataSet)Plot3D0.GetOutput().GetBlock(0)); ExtractGrid[0].SetVOI((int)0, (int)14, (int)0, (int)32, (int)0, (int)24); ExtractGrid[0].SetSampleRate((int)1, (int)1, (int)1); ExtractGrid[0].SetIncludeBoundary((int)0); ExtractGrid[1] = new vtkExtractGrid(); ExtractGrid[1].SetInputData((vtkDataSet)Plot3D0.GetOutput().GetBlock(0)); ExtractGrid[1].SetVOI((int)14, (int)29, (int)0, (int)32, (int)0, (int)24); ExtractGrid[1].SetSampleRate((int)1, (int)1, (int)1); ExtractGrid[1].SetIncludeBoundary((int)0); ExtractGrid[2] = new vtkExtractGrid(); ExtractGrid[2].SetInputData((vtkDataSet)Plot3D0.GetOutput().GetBlock(0)); ExtractGrid[2].SetVOI((int)29, (int)56, (int)0, (int)32, (int)0, (int)24); ExtractGrid[2].SetSampleRate((int)1, (int)1, (int)1); ExtractGrid[2].SetIncludeBoundary((int)0); LineSourceWidget0 = new vtkLineSource(); LineSourceWidget0.SetPoint1((double)3.05638, (double)-3.00497, (double)28.2211); LineSourceWidget0.SetPoint2((double)3.05638, (double)3.95916, (double)28.2211); LineSourceWidget0.SetResolution((int)20); mbds = new vtkMultiBlockDataSet(); mbds.SetNumberOfBlocks((uint)3); i = 0; while ((i) < 3) { ExtractGrid[i].Update(); sg[i] = vtkStructuredGrid.New(); sg[i].ShallowCopy(ExtractGrid[i].GetOutput()); mbds.SetBlock((uint)i, sg[i]); //skipping Delete sg[i] i = i + 1; } Stream0 = new vtkStreamTracer(); Stream0.SetInputData((vtkDataObject)mbds); Stream0.SetSourceConnection(LineSourceWidget0.GetOutputPort()); Stream0.SetIntegrationStepUnit(2); Stream0.SetMaximumPropagation((double)20); Stream0.SetInitialIntegrationStep((double)0.5); Stream0.SetIntegrationDirection((int)0); Stream0.SetIntegratorType((int)0); Stream0.SetMaximumNumberOfSteps((int)2000); Stream0.SetTerminalSpeed((double)1e-12); //skipping Delete mbds aa = new vtkAssignAttribute(); aa.SetInputConnection((vtkAlgorithmOutput)Stream0.GetOutputPort()); aa.Assign((string)"Normals", (string)"NORMALS", (string)"POINT_DATA"); Ribbon0 = new vtkRibbonFilter(); Ribbon0.SetInputConnection((vtkAlgorithmOutput)aa.GetOutputPort()); Ribbon0.SetWidth((double)0.1); Ribbon0.SetAngle((double)0); Ribbon0.SetDefaultNormal((double)0, (double)0, (double)1); Ribbon0.SetVaryWidth((int)0); LookupTable1 = new vtkLookupTable(); LookupTable1.SetNumberOfTableValues((int)256); LookupTable1.SetHueRange((double)0, (double)0.66667); LookupTable1.SetSaturationRange((double)1, (double)1); LookupTable1.SetValueRange((double)1, (double)1); LookupTable1.SetTableRange((double)0.197813, (double)0.710419); LookupTable1.SetVectorComponent((int)0); LookupTable1.Build(); Mapper10 = vtkPolyDataMapper.New(); Mapper10.SetInputConnection((vtkAlgorithmOutput)Ribbon0.GetOutputPort()); Mapper10.SetImmediateModeRendering((int)1); Mapper10.UseLookupTableScalarRangeOn(); Mapper10.SetScalarVisibility((int)1); Mapper10.SetScalarModeToUsePointFieldData(); Mapper10.SelectColorArray((string)"Density"); Mapper10.SetLookupTable((vtkScalarsToColors)LookupTable1); Actor10 = new vtkActor(); Actor10.SetMapper((vtkMapper)Mapper10); Actor10.GetProperty().SetRepresentationToSurface(); Actor10.GetProperty().SetInterpolationToGouraud(); Actor10.GetProperty().SetAmbient((double)0.15); Actor10.GetProperty().SetDiffuse((double)0.85); Actor10.GetProperty().SetSpecular((double)0); Actor10.GetProperty().SetSpecularPower((double)1); Actor10.GetProperty().SetSpecularColor((double)1, (double)1, (double)1); Ren1.AddActor((vtkProp)Actor10); // enable user interface interactor[] iren.Initialize(); // prevent the tk window from showing up then start the event loop[] vtkAlgorithm.SetDefaultExecutivePrototype(null); //skipping Delete alg //deleteAllVTKObjects(); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVTestMultiBlockStreamer(String [] argv) { //Prefix Content is: "" // we need to use composite data pipeline with multiblock datasets[] alg = new vtkAlgorithm(); pip = new vtkCompositeDataPipeline(); vtkAlgorithm.SetDefaultExecutivePrototype((vtkExecutive)pip); //skipping Delete pip Ren1 = vtkRenderer.New(); Ren1.SetBackground((double)0.33,(double)0.35,(double)0.43); renWin = vtkRenderWindow.New(); renWin.AddRenderer((vtkRenderer)Ren1); iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow((vtkRenderWindow)renWin); Plot3D0 = new vtkPLOT3DReader(); Plot3D0.SetFileName((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/combxyz.bin"); Plot3D0.SetQFileName((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/combq.bin"); Plot3D0.SetBinaryFile((int)1); Plot3D0.SetMultiGrid((int)0); Plot3D0.SetHasByteCount((int)0); Plot3D0.SetIBlanking((int)0); Plot3D0.SetTwoDimensionalGeometry((int)0); Plot3D0.SetForceRead((int)0); Plot3D0.SetByteOrder((int)0); Geometry5 = new vtkStructuredGridOutlineFilter(); Geometry5.SetInputConnection((vtkAlgorithmOutput)Plot3D0.GetOutputPort()); Mapper5 = vtkPolyDataMapper.New(); Mapper5.SetInputConnection((vtkAlgorithmOutput)Geometry5.GetOutputPort()); Mapper5.SetImmediateModeRendering((int)1); Mapper5.UseLookupTableScalarRangeOn(); Mapper5.SetScalarVisibility((int)0); Mapper5.SetScalarModeToDefault(); Actor5 = new vtkActor(); Actor5.SetMapper((vtkMapper)Mapper5); Actor5.GetProperty().SetRepresentationToSurface(); Actor5.GetProperty().SetInterpolationToGouraud(); Actor5.GetProperty().SetAmbient((double)0.15); Actor5.GetProperty().SetDiffuse((double)0.85); Actor5.GetProperty().SetSpecular((double)0.1); Actor5.GetProperty().SetSpecularPower((double)100); Actor5.GetProperty().SetSpecularColor((double)1,(double)1,(double)1); Actor5.GetProperty().SetColor((double)1,(double)1,(double)1); Ren1.AddActor((vtkProp)Actor5); ExtractGrid[0] = new vtkExtractGrid(); ExtractGrid[0].SetInputConnection((vtkAlgorithmOutput)Plot3D0.GetOutputPort()); ExtractGrid[0].SetVOI((int)0,(int)14,(int)0,(int)32,(int)0,(int)24); ExtractGrid[0].SetSampleRate((int)1,(int)1,(int)1); ExtractGrid[0].SetIncludeBoundary((int)0); ExtractGrid[1] = new vtkExtractGrid(); ExtractGrid[1].SetInputConnection((vtkAlgorithmOutput)Plot3D0.GetOutputPort()); ExtractGrid[1].SetVOI((int)14,(int)29,(int)0,(int)32,(int)0,(int)24); ExtractGrid[1].SetSampleRate((int)1,(int)1,(int)1); ExtractGrid[1].SetIncludeBoundary((int)0); ExtractGrid[2] = new vtkExtractGrid(); ExtractGrid[2].SetInputConnection((vtkAlgorithmOutput)Plot3D0.GetOutputPort()); ExtractGrid[2].SetVOI((int)29,(int)56,(int)0,(int)32,(int)0,(int)24); ExtractGrid[2].SetSampleRate((int)1,(int)1,(int)1); ExtractGrid[2].SetIncludeBoundary((int)0); LineSourceWidget0 = new vtkLineSource(); LineSourceWidget0.SetPoint1((double)3.05638,(double)-3.00497,(double)28.2211); LineSourceWidget0.SetPoint2((double)3.05638,(double)3.95916,(double)28.2211); LineSourceWidget0.SetResolution((int)20); mbds = new vtkMultiBlockDataSet(); mbds.SetNumberOfBlocks((uint)3); i = 0; while((i) < 3) { ExtractGrid[i].Update(); sg[i] = vtkStructuredGrid.New(); sg[i].ShallowCopy(ExtractGrid[i].GetOutput()); mbds.SetBlock((uint)i, sg[i]); //skipping Delete sg[i] i = i + 1; } Stream0 = new vtkStreamTracer(); Stream0.SetInput((vtkDataObject)mbds); Stream0.SetSource((vtkDataSet)LineSourceWidget0.GetOutput()); Stream0.SetIntegrationStepUnit(2); Stream0.SetMaximumPropagation((double)20); Stream0.SetInitialIntegrationStep((double)0.5); Stream0.SetIntegrationDirection((int)0); Stream0.SetIntegratorType((int)0); Stream0.SetMaximumNumberOfSteps((int)2000); Stream0.SetTerminalSpeed((double)1e-12); //skipping Delete mbds aa = new vtkAssignAttribute(); aa.SetInputConnection((vtkAlgorithmOutput)Stream0.GetOutputPort()); aa.Assign((string)"Normals",(string)"NORMALS",(string)"POINT_DATA"); Ribbon0 = new vtkRibbonFilter(); Ribbon0.SetInputConnection((vtkAlgorithmOutput)aa.GetOutputPort()); Ribbon0.SetWidth((double)0.1); Ribbon0.SetAngle((double)0); Ribbon0.SetDefaultNormal((double)0,(double)0,(double)1); Ribbon0.SetVaryWidth((int)0); LookupTable1 = new vtkLookupTable(); LookupTable1.SetNumberOfTableValues((int)256); LookupTable1.SetHueRange((double)0,(double)0.66667); LookupTable1.SetSaturationRange((double)1,(double)1); LookupTable1.SetValueRange((double)1,(double)1); LookupTable1.SetTableRange((double)0.197813,(double)0.710419); LookupTable1.SetVectorComponent((int)0); LookupTable1.Build(); Mapper10 = vtkPolyDataMapper.New(); Mapper10.SetInputConnection((vtkAlgorithmOutput)Ribbon0.GetOutputPort()); Mapper10.SetImmediateModeRendering((int)1); Mapper10.UseLookupTableScalarRangeOn(); Mapper10.SetScalarVisibility((int)1); Mapper10.SetScalarModeToUsePointFieldData(); Mapper10.SelectColorArray((string)"Density"); Mapper10.SetLookupTable((vtkScalarsToColors)LookupTable1); Actor10 = new vtkActor(); Actor10.SetMapper((vtkMapper)Mapper10); Actor10.GetProperty().SetRepresentationToSurface(); Actor10.GetProperty().SetInterpolationToGouraud(); Actor10.GetProperty().SetAmbient((double)0.15); Actor10.GetProperty().SetDiffuse((double)0.85); Actor10.GetProperty().SetSpecular((double)0); Actor10.GetProperty().SetSpecularPower((double)1); Actor10.GetProperty().SetSpecularColor((double)1,(double)1,(double)1); Ren1.AddActor((vtkProp)Actor10); // enable user interface interactor[] iren.Initialize(); // prevent the tk window from showing up then start the event loop[] vtkAlgorithm.SetDefaultExecutivePrototype(null); //skipping Delete alg //deleteAllVTKObjects(); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVTestExtractCTHPart(String [] argv) { //Prefix Content is: "" // we need to use composite data pipeline with multiblock datasets[] alg = new vtkAlgorithm(); pip = new vtkCompositeDataPipeline(); vtkAlgorithm.SetDefaultExecutivePrototype((vtkExecutive)pip); //skipping Delete pip // Create the RenderWindow, Renderer and both Actors[] //[] Ren1 = vtkRenderer.New(); Ren1.SetBackground((double)0.33,(double)0.35,(double)0.43); renWin = vtkRenderWindow.New(); renWin.AddRenderer((vtkRenderer)Ren1); renWin.SetSize((int)300,(int)300); iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow((vtkRenderWindow)renWin); pvTemp59 = new vtkXMLRectilinearGridReader(); pvTemp59.SetFileName((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/cth.vtr"); pvTemp59.UpdateInformation(); pvTemp59.SetCellArrayStatus((string)"X Velocity",(int)0); pvTemp59.SetCellArrayStatus((string)"Y Velocity",(int)0); pvTemp59.SetCellArrayStatus((string)"Z Velocity",(int)0); pvTemp59.SetCellArrayStatus((string)"Mass for Armor Plate",(int)0); pvTemp59.SetCellArrayStatus((string)"Mass for Body, Nose",(int)0); pvTemp79 = new vtkExtractCTHPart(); pvTemp79.SetInputConnection((vtkAlgorithmOutput)pvTemp59.GetOutputPort()); pvTemp79.AddVolumeArrayName((string)"Volume Fraction for Armor Plate"); pvTemp79.AddVolumeArrayName((string)"Volume Fraction for Body, Nose"); pvTemp79.SetClipPlane(null); pvTemp104 = new vtkLookupTable(); pvTemp104.SetNumberOfTableValues((int)256); pvTemp104.SetHueRange((double)0.6667,(double)0); pvTemp104.SetSaturationRange((double)1,(double)1); pvTemp104.SetValueRange((double)1,(double)1); pvTemp104.SetTableRange((double)0,(double)1); pvTemp104.SetVectorComponent((int)0); pvTemp104.Build(); pvTemp87 = new vtkCompositePolyDataMapper(); pvTemp87.SetInputConnection((vtkAlgorithmOutput)pvTemp79.GetOutputPort()); pvTemp87.SetImmediateModeRendering((int)1); pvTemp87.SetScalarRange((double)0,(double)1); pvTemp87.UseLookupTableScalarRangeOn(); pvTemp87.SetScalarVisibility((int)1); pvTemp87.SetScalarModeToUsePointFieldData(); pvTemp87.SelectColorArray((string)"Part Index"); pvTemp87.SetLookupTable((vtkScalarsToColors)pvTemp104); pvTemp88 = new vtkActor(); pvTemp88.SetMapper((vtkMapper)pvTemp87); pvTemp88.GetProperty().SetRepresentationToSurface(); pvTemp88.GetProperty().SetInterpolationToGouraud(); pvTemp88.GetProperty().SetAmbient((double)0); pvTemp88.GetProperty().SetDiffuse((double)1); pvTemp88.GetProperty().SetSpecular((double)0); pvTemp88.GetProperty().SetSpecularPower((double)1); pvTemp88.GetProperty().SetSpecularColor((double)1,(double)1,(double)1); Ren1.AddActor((vtkProp)pvTemp88); renWin.Render(); vtkAlgorithm.SetDefaultExecutivePrototype(null); //deleteAllVTKObjects(); }
//Parameters for building a model private void BasicVTKBuilder(ref vtkActor actor, ref vtkPoints points, ref vtkCellArray polys, ref vtkFloatArray scalars, ref vtkLookupTable Luk, ref vtkActor2D actor2D) { int pointsNum = 0; TowerModelInstance.VTKDrawModel(ref points, ref polys, ref scalars, ref pointsNum, paras); vtkPolyData profile = vtkPolyData.New(); profile.SetPoints(points); profile.SetPolys(polys); vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); if (paras.RotateAngle == 0) { profile.GetCellData().SetScalars(scalars); mapper.SetInput(profile); } else { vtkRotationalExtrusionFilter refilter = vtkRotationalExtrusionFilter.New(); profile.Update(); profile.GetCellData().SetScalars(scalars); //profile.GetPointData().SetScalars(scalars); refilter.SetInput(profile); refilter.SetResolution(50); refilter.SetAngle(paras.RotateAngle); refilter.SetTranslation(0); refilter.SetDeltaRadius(0); mapper.SetInputConnection(refilter.GetOutputPort()); } mapper.SetScalarRange(TowerModelInstance.GetColorGenColorTableMinvalue(), TowerModelInstance.GetColorGenColorTableMaxValue()); actor.SetMapper(mapper); // This text property is for scalarBar vtkTextProperty textProperty = vtkTextProperty.New(); //textProperty.SetFontFamilyToCourier(); //textProperty.SetColor(1.0, 1.0, 0.5); textProperty.SetFontSize(10); vtkScalarBarActor scalarBar = vtkScalarBarActor.New(); scalarBar.SetLookupTable(mapper.GetLookupTable()); scalarBar.SetTitle("Color Table"); scalarBar.SetNumberOfLabels(TowerModelInstance.GetColorGenColorTableSize()); scalarBar.SetTitleTextProperty(textProperty); scalarBar.SetLabelTextProperty(textProperty); scalarBar.SetWidth(0.07); scalarBar.SetHeight(0.6); //scalarBar.SetDrawFrame(1); vtkLookupTable hueLut = vtkLookupTable.New(); hueLut.SetTableRange(TowerModelInstance.GetColorGenColorTableMinvalue(), TowerModelInstance.GetColorGenColorTableMaxValue()); hueLut.SetHueRange(0.667, 0); hueLut.SetSaturationRange(1, 1); hueLut.SetValueRange(1, 1); hueLut.SetNumberOfTableValues(TowerModelInstance.GetColorGenColorTableSize()); hueLut.Build(); mapper.SetLookupTable(hueLut); scalarBar.SetLookupTable(hueLut); // The actor links the data pipeline to the rendering subsystem actor2D = scalarBar; //actor.GetProperty().SetColor(0.388, 0.388, 0.388); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVTestExtractCTHPart(String [] argv) { //Prefix Content is: "" // we need to use composite data pipeline with multiblock datasets[] alg = new vtkAlgorithm(); pip = new vtkCompositeDataPipeline(); vtkAlgorithm.SetDefaultExecutivePrototype((vtkExecutive)pip); //skipping Delete pip // Create the RenderWindow, Renderer and both Actors[] //[] Ren1 = vtkRenderer.New(); Ren1.SetBackground((double)0.33, (double)0.35, (double)0.43); renWin = vtkRenderWindow.New(); renWin.AddRenderer((vtkRenderer)Ren1); renWin.SetSize((int)300, (int)300); iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow((vtkRenderWindow)renWin); pvTemp59 = new vtkXMLRectilinearGridReader(); pvTemp59.SetFileName((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/cth.vtr"); pvTemp59.UpdateInformation(); pvTemp59.SetCellArrayStatus((string)"X Velocity", (int)0); pvTemp59.SetCellArrayStatus((string)"Y Velocity", (int)0); pvTemp59.SetCellArrayStatus((string)"Z Velocity", (int)0); pvTemp59.SetCellArrayStatus((string)"Mass for Armor Plate", (int)0); pvTemp59.SetCellArrayStatus((string)"Mass for Body, Nose", (int)0); pvTemp79 = new vtkExtractCTHPart(); pvTemp79.SetInputConnection((vtkAlgorithmOutput)pvTemp59.GetOutputPort()); pvTemp79.AddVolumeArrayName((string)"Volume Fraction for Armor Plate"); pvTemp79.AddVolumeArrayName((string)"Volume Fraction for Body, Nose"); pvTemp79.SetClipPlane(null); pvTemp104 = new vtkLookupTable(); pvTemp104.SetNumberOfTableValues((int)256); pvTemp104.SetHueRange((double)0.6667, (double)0); pvTemp104.SetSaturationRange((double)1, (double)1); pvTemp104.SetValueRange((double)1, (double)1); pvTemp104.SetTableRange((double)0, (double)1); pvTemp104.SetVectorComponent((int)0); pvTemp104.Build(); pvTemp87 = new vtkCompositePolyDataMapper(); pvTemp87.SetInputConnection((vtkAlgorithmOutput)pvTemp79.GetOutputPort()); pvTemp87.SetImmediateModeRendering((int)1); pvTemp87.SetScalarRange((double)0, (double)1); pvTemp87.UseLookupTableScalarRangeOn(); pvTemp87.SetScalarVisibility((int)1); pvTemp87.SetScalarModeToUsePointFieldData(); pvTemp87.SelectColorArray((string)"Part Index"); pvTemp87.SetLookupTable((vtkScalarsToColors)pvTemp104); pvTemp88 = new vtkActor(); pvTemp88.SetMapper((vtkMapper)pvTemp87); pvTemp88.GetProperty().SetRepresentationToSurface(); pvTemp88.GetProperty().SetInterpolationToGouraud(); pvTemp88.GetProperty().SetAmbient((double)0); pvTemp88.GetProperty().SetDiffuse((double)1); pvTemp88.GetProperty().SetSpecular((double)0); pvTemp88.GetProperty().SetSpecularPower((double)1); pvTemp88.GetProperty().SetSpecularColor((double)1, (double)1, (double)1); Ren1.AddActor((vtkProp)pvTemp88); renWin.Render(); vtkAlgorithm.SetDefaultExecutivePrototype(null); //deleteAllVTKObjects(); }