/// <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); } }
/// <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); }
/// <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(); }