//读取Camera参数,传递给主窗体
        public void GetCameraParameters(ref double[] CameraFocalPoint, ref double[] CameraPosition, ref double[] CameraViewUp)
        {
            vtkCamera Camera = renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer().GetActiveCamera();

            CameraFocalPoint = Camera.GetFocalPoint();
            CameraPosition   = Camera.GetPosition();
            CameraViewUp     = Camera.GetViewUp();
        }
예제 #2
0
        internal void UpdateCamera(vtkCamera mainViewCamera)
        {
            //return;

            vtkCamera OrientationEnumViewCamera = _topRenderer.GetActiveCamera();

            double[] mainViewCameraPosition = mainViewCamera.GetPosition();
            double[] mainViewFocalPosition  = mainViewCamera.GetFocalPoint();
            double[] mainViewViewUp         = mainViewCamera.GetViewUp();

            OrientationEnumViewCamera.SetPosition(mainViewCameraPosition[0], mainViewCameraPosition[1], mainViewCameraPosition[2]);
            OrientationEnumViewCamera.SetFocalPoint(mainViewFocalPosition[0], mainViewFocalPosition[1], mainViewFocalPosition[2]);
            OrientationEnumViewCamera.SetViewUp(mainViewViewUp[0], mainViewViewUp[1], mainViewViewUp[2]);

            _topRenderer.ResetCameraClippingRange();
            //_topRenderer.ResetCamera();
        }
        internal void UpdateCamera(vtkCamera mainViewCamera)
        {
            //return;

            vtkCamera OrientationEnumViewCamera = _topRenderer.GetActiveCamera();

            double[] mainViewCameraPosition = mainViewCamera.GetPosition();
            double[] mainViewFocalPosition  = mainViewCamera.GetFocalPoint();
            double[] mainViewViewUp         = mainViewCamera.GetViewUp();

            OrientationEnumViewCamera.SetPosition(mainViewCameraPosition[0], mainViewCameraPosition[1], mainViewCameraPosition[2]);
            OrientationEnumViewCamera.SetFocalPoint(mainViewFocalPosition[0], mainViewFocalPosition[1], mainViewFocalPosition[2]);
            OrientationEnumViewCamera.SetViewUp(mainViewViewUp[0], mainViewViewUp[1], mainViewViewUp[2]);
            OrientationEnumViewCamera.ComputeViewPlaneNormal();
            OrientationEnumViewCamera.ComputeProjAndViewParams();
            OrientationEnumViewCamera.OrthogonalizeViewUp();

            _topRenderer.ResetCameraClippingRange();
            _topRenderer.ResetCamera();
        }
예제 #4
0
        private void renderWindowControl1_Load(object sender, EventArgs e)
        {
            // Create components of the rendering subsystem
            //
            vtkRenderer     ren1   = renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer();
            vtkRenderWindow renWin = renderWindowControl1.RenderWindow;

            renWin.SetSize((int)paras.Height, (int)paras.Width);

            // Add the actors to the renderer, set the window size
            //
            vtkPoints      points  = vtkPoints.New();
            vtkCellArray   polys   = vtkCellArray.New();
            vtkFloatArray  scalars = vtkFloatArray.New();
            vtkLookupTable Luk     = vtkLookupTable.New();

            if (paras.Using3DTower == 1)
            {
                vtkActor   actor1  = new vtkActor();
                vtkActor2D actor2D = new vtkActor2D();
                if (paras.StageID != -1)
                {
                    if (paras.UsingEdges == 1)
                    {
                        MessageBox.Show("单元显示无法使用");
                    }
                    else
                    {
                        BasicVTKBuilder(ref actor1, ref points, ref polys, ref scalars, ref Luk, ref actor2D);
                        ren1.AddActor(actor1);
                        ren1.AddActor2D(actor2D);

                        vtkActor2D textActor = new vtkActor2D();
                        VTKInfoBuilder(ref textActor);
                        ren1.AddActor2D(textActor);
                    }
                }
                else
                {
                    if (paras.UsingEdges == 1)
                    {
                        ExtractEdgesVTKBuilderWithoutRunning(ref actor1, ref points, ref polys, ref scalars, ref Luk);
                    }
                    else
                    {
                        BasicVTKBuilderWithoutRunning(ref actor1, ref points, ref polys, ref scalars, ref Luk);
                    }
                    ren1.AddActor(actor1);
                }
            }

            if (paras.UsingVirtualHeater == 1)
            {
                //MessageBox.Show("!");
                vtkActor2D actor2 = VirtualHeaterVTKBuilder();
                ren1.AddActor(actor2);
            }


            renWin.Render();
            vtkCamera camera = ren1.GetActiveCamera();

            //camera.ParallelProjectionOn();
            //camera.Elevation(20);
            int[] camera_pos = new int[3];

            if (paras.globalEnv == 1)
            {
                camera_pos[1] = -70;
            }
            else
            {
                camera_pos[1] = -80;
            }

            if (paras.RotateAngle == 0)
            {
                camera_pos[1] = -camera_pos[1];
                camera_pos[0] = camera_pos[2] = 0;
                camera.SetRoll(-2);
            }
            else if (paras.RotateAngle == 180)
            {
                camera_pos[0] = camera_pos[2] = 0;
                camera.SetRoll(180);
            }
            else if (paras.RotateAngle == 90)
            {
                double r = (double)Math.Abs(camera_pos[1]);
                camera_pos[0] = (int)(-r * 0.707);
                camera_pos[1] = (int)(-r * 0.707);
                camera_pos[2] = 0;
                camera.SetRoll(225);
            }
            else if (paras.RotateAngle == 270)
            {
                double r = (double)Math.Abs(camera_pos[1]);
                camera_pos[0] = (int)(r * 0.707);
                camera_pos[1] = (int)(-r * 0.707);
                camera_pos[2] = 0;
                camera.SetRoll(135);
            }

            camera.SetPosition((double)camera_pos[0], (double)camera_pos[1], (double)camera_pos[2]);
            //camera.Yaw(10);
            camera.Elevation(1);
            camera.ParallelProjectionOn();
            camera.Zoom(0.9);
            StoredViewCamera = new List <vtkCamera>();
            for (int i = 0; i < 3; i++)
            {
                vtkCamera ViewCamera = new vtkCamera();


                if (i == 0)
                {
                    ViewCamera.SetPosition(camera.GetPosition()[0],
                                           camera.GetPosition()[1],
                                           camera.GetPosition()[2]);
                    ViewCamera.SetRoll(camera.GetRoll());
                }
                else if (i == 1)
                {
                    ViewCamera.SetPosition(80, 0, 0);
                    ViewCamera.SetRoll(180);
                }
                else if (i == 2)
                {
                    ViewCamera.SetPosition(0, 0, -80);
                    ViewCamera.SetRoll(camera.GetRoll());
                }
                ViewCamera.SetFocalPoint(camera.GetFocalPoint()[0],
                                         camera.GetFocalPoint()[1],
                                         camera.GetFocalPoint()[2]);
                ViewCamera.SetViewUp(camera.GetViewUp()[0],
                                     camera.GetViewUp()[1],
                                     camera.GetViewUp()[2]);
                StoredViewCamera.Add(ViewCamera);
            }

            //camera.Zoom(1.5);
        }