コード例 #1
0
        private void MarchingSquares()
        {
            // 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();

            vtkVolume16Reader v16 = vtkVolume16Reader.New();

            v16.SetDataDimensions(64, 64);

            v16.GetOutput().SetOrigin(0.0, 0.0, 0.0);
            v16.SetDataByteOrderToLittleEndian();
            v16.SetFilePrefix(System.IO.Path.Combine(root, @"Data\headsq\quarter"));
            v16.SetImageRange(1, 93);
            v16.SetDataSpacing(3.2, 3.2, 1.5);
            v16.Update();

            vtkMergePoints myLocator = vtkMergePoints.New();

            vtkMarchingSquares isoXY = vtkMarchingSquares.New();

#if VTK_MAJOR_VERSION_5
            isoXY.SetInputConnection(v16.GetOutputPort());
#else
            isoXY.SetInputData(v16);
#endif
            isoXY.GenerateValues(2, 600, 1200);
            isoXY.SetImageRange(0, 32, 32, 63, 45, 45);
            isoXY.SetLocator(myLocator);

            vtkPolyDataMapper isoXYMapper = vtkPolyDataMapper.New();
#if VTK_MAJOR_VERSION_5
            isoXYMapper.SetInputConnection(isoXY.GetOutputPort());
#else
            isoXYMapper.SetInputData(isoXY);
#endif
            isoXYMapper.SetScalarRange(600, 1200);

            vtkActor isoXYActor = vtkActor.New();
            isoXYActor.SetMapper(isoXYMapper);

            vtkMarchingSquares isoYZ = vtkMarchingSquares.New();
#if VTK_MAJOR_VERSION_5
            isoYZ.SetInputConnection(v16.GetOutputPort());
#else
            isoYZ.SetInputData(v16);
#endif
            isoYZ.GenerateValues(2, 600, 1200);
            isoYZ.SetImageRange(32, 32, 32, 63, 46, 92);

            vtkPolyDataMapper isoYZMapper = vtkPolyDataMapper.New();
#if VTK_MAJOR_VERSION_5
            isoYZMapper.SetInputConnection(isoYZ.GetOutputPort());
#else
            isoYZMapper.SetInputData(isoYZ);
#endif
            isoYZMapper.SetScalarRange(600, 1200);

            vtkActor isoYZActor = vtkActor.New();
            isoYZActor.SetMapper(isoYZMapper);

            vtkMarchingSquares isoXZ = vtkMarchingSquares.New();
#if VTK_MAJOR_VERSION_5
            isoXZ.SetInputConnection(v16.GetOutputPort());
#else
            isoXZ.SetInputData(v16);
#endif
            isoXZ.GenerateValues(2, 600, 1200);
            isoXZ.SetImageRange(0, 32, 32, 32, 0, 46);

            vtkPolyDataMapper isoXZMapper = vtkPolyDataMapper.New();
#if VTK_MAJOR_VERSION_5
            isoXZMapper.SetInputConnection(isoXZ.GetOutputPort());
#else
            isoXZMapper.SetInputData(isoXZ);
#endif
            isoXZMapper.SetScalarRange(600, 1200);

            vtkActor isoXZActor = vtkActor.New();
            isoXZActor.SetMapper(isoXZMapper);

            vtkOutlineFilter outline = vtkOutlineFilter.New();
#if VTK_MAJOR_VERSION_5
            outline.SetInputConnection(v16.GetOutputPort());
#else
            outline.SetInputData(v16);
#endif
            vtkPolyDataMapper outlineMapper = vtkPolyDataMapper.New();
#if VTK_MAJOR_VERSION_5
            outlineMapper.SetInputConnection(outline.GetOutputPort());
#else
            outlineMapper.SetInputData(outline);
#endif
            vtkActor outlineActor = vtkActor.New();
            outlineActor.SetMapper(outlineMapper);
            outlineActor.VisibilityOff();

            // get a reference to the renderwindow of our renderWindowControl1
            vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow;
            // renderer
            vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer();
            // set background color
            renderer.SetBackground(1.0, 1.0, 1.0);
            //Add the actors to the renderer, set the background and size
            renderer.AddActor(outlineActor);
            renderer.AddActor(isoXYActor);
            renderer.AddActor(isoYZActor);
            renderer.AddActor(isoXZActor);
            renderer.GetActiveCamera().SetPosition(324.368, 284.266, -19.3293);
            renderer.GetActiveCamera().SetFocalPoint(73.5683, 120.903, 70.7309);
            renderer.GetActiveCamera().SetViewAngle(30);
            renderer.GetActiveCamera().SetViewUp(-0.304692, -0.0563843, -0.950781);
        }