private void Window_Activated(object sender, EventArgs e) { // 一定要先 vtkformhost.Child = vtkControl;下面三条顺序不能乱 否则报错 切记! vtkformhost.Child = vtkControl; vtkRenderWindow renWin = vtkControl.RenderWindow; vtkRenderer aRenderer = renWin.GetRenderers().GetFirstRenderer(); renWin.AddRenderer(aRenderer); Marshal.Copy(ys1, 0, temp128, imgLine * imgPixel * imgNum); temp.SetArray(temp128, imgLine * imgPixel * imgNum, 1); testimgdata.SetDimensions(imgLine, imgPixel, imgNum); testimgdata.SetSpacing(1, 1, 4); testimgdata.SetScalarTypeToUnsignedChar(); testimgdata.SetNumberOfScalarComponents(1); testimgdata.AllocateScalars(); testimgdata.GetPointData().SetScalars(temp); testimgdata.Modified(); VtkSetColor(); VtkSetOpacity(); volumeProperty.SetColor(colorTransferFunction); volumeProperty.SetScalarOpacity(opacityTransferFunction); volumeProperty.ShadeOn(); volumeProperty.SetInterpolationTypeToLinear(); volumeMapper.SetVolumeRayCastFunction(compositeFunction); volumeMapper.SetInput(testimgdata); volume.SetMapper(volumeMapper); volume.SetProperty(volumeProperty); aCamera.SetViewUp(0, -1, 0); aCamera.SetPosition(-1, 0, 1); aCamera.ComputeViewPlaneNormal(); aRenderer.AddVolume(volume); aRenderer.SetBackground(0, 0, 0.6); aRenderer.SetActiveCamera(aCamera); aRenderer.ResetCamera(); renWin.SetSize(800, 800); renWin.Render(); }
private vtkProp CreateVolumeRendering() { _opacityTransferFunction = new vtkPiecewiseFunction(); _opacityTransferFunction.ClampingOff(); _colorTransferFunction = new vtkColorTransferFunction(); _colorTransferFunction.SetColorSpaceToRGB(); _colorTransferFunction.ClampingOff(); SetOpacityTransferFunction(); SetColorTransferFunction(); vtkVolumeProperty volumeProperty = new vtkVolumeProperty(); volumeProperty.ShadeOn(); volumeProperty.SetInterpolationTypeToLinear(); volumeProperty.SetColor(_colorTransferFunction); volumeProperty.SetScalarOpacity(_opacityTransferFunction); volumeProperty.SetDiffuse(0.7); volumeProperty.SetAmbient(0.1); volumeProperty.SetSpecular(.3); volumeProperty.SetSpecularPower(20); //vtkOpenGLVolumeTextureMapper2D volumeMapper = new vtkOpenGLVolumeTextureMapper2D(); //vtkOpenGLVolumeTextureMapper3D volumeMapper = new vtkOpenGLVolumeTextureMapper3D(); //volumeMapper.SetPreferredMethodToNVidia(); //volumeMapper.SetSampleDistance(1.0f); //int supported = volumeMapper.IsRenderSupported(volumeProperty); vtkFixedPointVolumeRayCastMapper volumeMapper = new vtkFixedPointVolumeRayCastMapper(); //vtkVolumeRayCastMapper volumeMapper = new vtkVolumeRayCastMapper(); volumeMapper.SetInput(_volumeLayer.GetImageData()); ////vtkVolumeRayCastCompositeFunction rayCastFunction = new vtkVolumeRayCastCompositeFunction(); ////volumeMapper.SetVolumeRayCastFunction(rayCastFunction); //vtkVolumeRayCastIsosurfaceFunction rayCastFunction = new vtkVolumeRayCastIsosurfaceFunction(); //volumeMapper.SetVolumeRayCastFunction(rayCastFunction); _vtkVolume = new vtkVolume(); _vtkVolume.SetMapper(volumeMapper); _vtkVolume.SetProperty(volumeProperty); return(_vtkVolume); }
private vtkProp CreateVolumeRendering() { _opacityTransferFunction = new vtkPiecewiseFunction(); _opacityTransferFunction.ClampingOff(); _colorTransferFunction = new vtkColorTransferFunction(); _colorTransferFunction.SetColorSpaceToRGB(); _colorTransferFunction.ClampingOff(); SetOpacityTransferFunction(); SetColorTransferFunction(); vtkVolumeProperty volumeProperty = new vtkVolumeProperty(); volumeProperty.ShadeOn(); volumeProperty.SetInterpolationTypeToLinear(); volumeProperty.SetColor(_colorTransferFunction); volumeProperty.SetScalarOpacity(_opacityTransferFunction); volumeProperty.SetDiffuse(0.7); volumeProperty.SetAmbient(0.1); volumeProperty.SetSpecular(.3); volumeProperty.SetSpecularPower(20); //vtkOpenGLVolumeTextureMapper2D volumeMapper = new vtkOpenGLVolumeTextureMapper2D(); //vtkOpenGLVolumeTextureMapper3D volumeMapper = new vtkOpenGLVolumeTextureMapper3D(); //volumeMapper.SetPreferredMethodToNVidia(); //volumeMapper.SetSampleDistance(1.0f); //int supported = volumeMapper.IsRenderSupported(volumeProperty); vtkFixedPointVolumeRayCastMapper volumeMapper = new vtkFixedPointVolumeRayCastMapper(); //vtkVolumeRayCastMapper volumeMapper = new vtkVolumeRayCastMapper(); volumeMapper.SetInput(_volumeLayer.GetImageData()); ////vtkVolumeRayCastCompositeFunction rayCastFunction = new vtkVolumeRayCastCompositeFunction(); ////volumeMapper.SetVolumeRayCastFunction(rayCastFunction); //vtkVolumeRayCastIsosurfaceFunction rayCastFunction = new vtkVolumeRayCastIsosurfaceFunction(); //volumeMapper.SetVolumeRayCastFunction(rayCastFunction); _vtkVolume = new vtkVolume(); _vtkVolume.SetMapper(volumeMapper); _vtkVolume.SetProperty(volumeProperty); return _vtkVolume; }
public cVolumeRendering3D(vtkImageData imageData, cPoint3D Pos) { baseInit(null); vtk_volume = vtkVolume.New(); // vtkFloatArray floatArray = vtkFloatArray.New(); //vtkCharArray charArray = vtkCharArray.New(); // vtkUnsignedShortArray UshortArray = vtkUnsignedShortArray.New(); vtkExtractVOI voi = vtkExtractVOI.New(); // vtkPiecewiseFunction opacityTransferFunction = vtkPiecewiseFunction.New(); vtkColorTransferFunction colorTransferFunction = vtkColorTransferFunction.New(); vtkVolumeProperty volumeProperty = vtkVolumeProperty.New(); // imageData.GetPointData().SetScalars(UshortArray); voi = vtkExtractVOI.New(); voi.SetInput(imageData); voi.SetVOI(0, imageData.GetDimensions()[0] - 1, 0, imageData.GetDimensions()[1] - 1, 0, imageData.GetDimensions()[2] - 1); voi.SetSampleRate(1, 1, 1); opacityTransferFunction = vtkPiecewiseFunction.New(); range = imageData.GetScalarRange(); opacityTransferFunction.AddPoint(100, 0.0); opacityTransferFunction.AddPoint(1000, 1); //opacityTransferFunction.AddPoint(range[0] + (range[1]-range[0])/2.0, 0.0); //opacityTransferFunction.AddPoint(range[1], 0.7); ////Scale the image between 0 and 1 using a lookup table //vtkLookupTable table = vtkLookupTable.New(); //table.SetValueRange(0,1); //table.SetSaturationRange(0,0); //table.SetRange(range[0], range[1]); //shoul here not be the minimum/maximum possible of "data"? //table.SetRampToLinear(); //table.Build(); //vtkImageMapToColors color = vtkImageMapToColors.New(); //color.SetLookupTable(table); //color.SetInputConnection(imageData.GetProducerPort()); vtkColorTransferFunction ColorTransferFunction = vtkColorTransferFunction.New(); ColorTransferFunction.AddRGBPoint(20.0, 0.0, 0.0, 1.0); ColorTransferFunction.AddRGBPoint(255.0, 1.0, 0.0, 0.0); //ColorTransferFunction.AddRGBPoint(1000.0, 0.8, 0.5, 0.0); //opacityTransferFunction.ClampingOff(); volumeProperty = vtkVolumeProperty.New(); volumeProperty.SetColor(colorTransferFunction); volumeProperty.SetScalarOpacity(opacityTransferFunction); volumeProperty.SetInterpolationTypeToLinear(); volumeProperty.ShadeOn(); volumeProperty.SetAmbient(0.6); volumeProperty.SetDiffuse(0.6); volumeProperty.SetSpecular(0.1); //volumeProperty.SetAmbient(0.1); //volumeProperty.SetDiffuse(0.9); //volumeProperty.SetSpecular(0.2); //volumeProperty.SetSpecularPower(10.0); //volumeProperty[band].SetScalarOpacityUnitDistance(0.8919); vtkVolumeTextureMapper3D volumeTextureMapper = vtkVolumeTextureMapper3D.New(); ////volumeTextureMapper.SetInputConnection(color.GetOutputPort()); volumeTextureMapper.SetInputConnection(voi.GetOutputPort()); //vtkVolumeRayCastCompositeFunction compositeFunction = vtkVolumeRayCastCompositeFunction.New(); //vtkVolumeRayCastMapper volumeMapper = vtkVolumeRayCastMapper.New(); //volumeMapper.SetVolumeRayCastFunction(compositeFunction); //volumeMapper.SetInputConnection(voi.GetOutputPort()); vtk_volume = vtkVolume.New(); vtk_volume.SetMapper(volumeTextureMapper); vtk_volume.SetProperty(volumeProperty); vtk_volume.PickableOff(); vtk_volume.SetPosition(Pos.X, Pos.Y, Pos.Z); }