Exemplo n.º 1
0
        /// <summary>
        /// Highlights pieces
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void MotionCallback(vtkObject sender, vtkObjectEventArgs e)
        {
            //Make sure the piece isn't in an animation
            //durring a click or bad things happen
            if (!in_piece_rotation)
            {
                vtkRenderWindowInteractor iren   = renderWindowControl1.RenderWindow.GetInteractor();
                vtkInteractorStyleSwitch  istyle = (vtkInteractorStyleSwitch)iren.GetInteractorStyle();

                //return if the user is performing interaction
                if (istyle.GetState() != 0)
                {
                    return;
                }

                int[] pos = iren.GetEventPosition();
                int   x   = pos[0];
                int   y   = pos[1];

                vtkRenderer ren1 = renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer();
                ren1.SetDisplayPoint(x, y, ren1.GetZ(x, y));
                ren1.DisplayToWorld();
                double [] pt  = ren1.GetWorldPoint();
                double    val = puzzle.SetPoint(pt[0], pt[1], pt[2]);
                if (!LastValExists || val != LastVal)
                {
                    renderWindowControl1.RenderWindow.Render();
                    LastVal       = val;
                    LastValExists = true;
                }
            }
        }
        /// <summary>
        /// Executes the initialize action.
        /// </summary>
        ///
        /// <param name="hWnd">The HWND we present to when rendering.</param>
        ///
        /// <seealso cref="M:ActivizWPF.Framework.Native.HwndWrapper.OnInitialize(IntPtr)"/>
        protected override void OnInitialize(IntPtr hWnd)
        {
            try
            {
                vtkLogoWidget vtkLogoWidget = new vtkLogoWidget();

                _renderer     = vtkRenderer.New();
                _renderWindow = vtkRenderWindow.New();

                _renderWindowInteractor = vtkRenderWindowInteractor.New();

                vtkInteractorStyleSwitch interactorStyleSwitch = _renderWindowInteractor.GetInteractorStyle() as vtkInteractorStyleSwitch;

                if (null != interactorStyleSwitch)
                {
                    interactorStyleSwitch.SetCurrentStyleToTrackballCamera();
                }

                _renderWindow.SetParentId(hWnd);
                _renderWindow.AddRenderer(_renderer);

                AttachInteractor();

                vtkLogoWidget.Dispose();
            }
            catch (Exception ex)
            {
                log.ErrorException("OnInitialize()", ex);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Set up the dialog
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void renderWindowControl1_Load(object sender, EventArgs e)
        {
            //Setup the variables and the background
            vtkRenderer ren1 = renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer();

            mapper.SetInputConnection(puzzle.GetOutputPort());
            mapper2.SetInputConnection(arrows.GetOutputPort());
            actor.SetMapper(mapper);
            actor2.SetMapper(mapper2);
            ren1.AddActor(actor);
            ren1.AddActor(actor2);
            ren1.SetBackground(0.1, 0.2, 0.4);

            //Set up the camera
            ren1.ResetCamera();
            vtkCamera cam = ren1.GetActiveCamera();

            cam.Elevation(-40);
            renderWindowControl1.RenderWindow.Render();

            //Change the style to a trackball style
            //Equivalent of pressing 't'
            vtkRenderWindowInteractor iren   = renderWindowControl1.RenderWindow.GetInteractor();
            vtkInteractorStyleSwitch  istyle = vtkInteractorStyleSwitch.New();

            iren.SetInteractorStyle(istyle);
            (istyle).SetCurrentStyleToTrackballCamera();

            //Add events to the iren instead of Observers
            iren.MouseMoveEvt += new vtkObject.vtkObjectEventHandler(MotionCallback);
            iren.CharEvt      += new vtkObject.vtkObjectEventHandler(CharCallback);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Crée les objets de base : renderer, axes, interactor.
        /// </summary>
        private void initBaseObjects()
        {
            // Nous créons un renderer qui va faire le rendu de notre entitée.
            _renderer = vtkRenderer.New();

            _stlLoader             = new STLLoader(this._renderer);
            _stlLoader.VolumeColor = Properties.Settings.Default.VolumeColor;
            _stlLoader.EdgeColor   = Properties.Settings.Default.EdgeColor;
            _stlLoader.ShowVolume  = Properties.Settings.Default.ShowVolume;
            _stlLoader.ShowEdges   = Properties.Settings.Default.ShowEdges;

            this.aretesToolStripMenuItem.Checked = (bool)loadSetting("ShowEdges");
            this.volumeToolStripMenuItem.Checked = (bool)loadSetting("ShowVolume");


            _renderer.SetBackground(1, 1, 1); // background color white

            vtkRenderCtl.RenderWindow.AddRenderer(_renderer);

            // Nous créons un interactor qui permet de bouger la caméra.
            _interactor = vtkRenderWindowInteractor.New();

            _interactor.SetRenderWindow(vtkRenderCtl.RenderWindow);

            //axes
            vtkAxes axes = vtkAxes.New();

            axes.SetScaleFactor(10);

            addActor(axes.GetOutput());

            /*
             * //outil de mesure
             * vtkDistanceWidget wdgDistance = vtkDistanceWidget.New();
             * wdgDistance.SetInteractor(_interactor);
             * wdgDistance.CreateDefaultRepresentation();
             * ((vtkDistanceRepresentation)wdgDistance.GetRepresentation()).SetLabelFormat("%-#6.3g mm");
             * wdgDistance.On();
             */

            Camera.SetPosition(0, 0, -300);

            vtkRenderCtl.RenderWindow.Render();

            _interactor.RenderEvt += _interactor_RenderEvt;

            vtkInteractorStyleSwitch style = vtkInteractorStyleSwitch.New();

            style.SetCurrentStyleToTrackballCamera();

            _interactor.SetInteractorStyle(style);

            _interactor.Start();
        }
        private void SetUpRenderWindow()
        {
            // create a VTK output control and make the forms host point to it
            rwc = new RenderWindowControl();
            rwc.CreateGraphics();
            windowsFormsHost.Child = rwc;

            // set up basic viewing
            vtkRenderer ren = rwc.RenderWindow.GetRenderers().GetFirstRenderer();

            // background color
            ren.SetBackground(0.0, 0.0, 0.0);

            // interactor style
            vtkInteractorStyleSwitch istyle = vtkInteractorStyleSwitch.New();

            rwc.RenderWindow.GetInteractor().SetInteractorStyle(istyle);
            rwc.RenderWindow.GetInteractor().SetPicker(vtkCellPicker.New());
            (istyle).SetCurrentStyleToTrackballCamera();

            // Demonstrate how to use the vtkBoxWidget 3D widget,
            vtkSphereSource sphere = vtkSphereSource.New();

            sphere.SetRadius(0.25);

            vtkPolyDataMapper sphereMapper = vtkPolyDataMapper.New();

            sphereMapper.SetInputConnection(sphere.GetOutputPort());

            vtkActor      sphereActor;
            vtkTransform  widgetTransform = vtkTransform.New();
            List <Region> region_list     = configurator.SimConfig.scenario.regions.ToList();

            for (int ii = 0; ii < region_list.Count; ++ii)
            {
                this.TransferMatrixToVTKTransform(region_list[ii].region_box_spec.transform_matrix, widgetTransform);
                sphereActor = vtkActor.New();
                sphereActor.SetMapper(sphereMapper);
                sphereActor.SetUserTransform(widgetTransform);
                sphereActor.GetProperty().SetOpacity(0.5);
                sphereActor.SetVisibility(region_list[ii].region_visibility ? 1 : 0);
                sphereActorList.Add(sphereActor);
                ren.AddActor(sphereActorList[ii]);
            }

            vtkCubeSource cube = vtkCubeSource.New();

            cube.SetXLength(5.0);
            cube.SetYLength(5.0);
            cube.SetZLength(5.0);

            vtkOutlineSource outline = vtkOutlineSource.New();

            outline.SetBounds(-2, 2, -2, 2, -2, 2);

            vtkPolyDataMapper cubeMapper = vtkPolyDataMapper.New();

            cubeMapper.SetInputConnection(outline.GetOutputPort());

            vtkLODActor cubeActor = vtkLODActor.New();

            cubeActor.SetMapper(cubeMapper);
            cubeActor.VisibilityOn();

            ren.AddActor(cubeActor);

            boxRep = vtkBoxRepresentation.New();
            boxRep.SetTransform(widgetTransform);

            boxWidget = vtkBoxWidget2.New();
            boxWidget.SetInteractor(rwc.RenderWindow.GetInteractor());
            boxWidget.SetRepresentation(boxRep);
            boxWidget.SetPriority(1);
            boxWidget.InteractionEvt += this.boxInteractionCallback;

            ren.ResetCamera();
        }