static void PrintCameraPosition(vtk.vtkObject caller, uint eventId, object clientData, IntPtr callData) { System.Diagnostics.Debug.WriteLine("Callback has been called."); vtk.vtkRenderer ren = vtk.vtkRenderer.SafeDownCast(caller); if (ren != null) { double[] position = ren.GetActiveCamera().GetPosition(); Console.WriteLine(String.Format("{0}, {1}, {2}", position[0], position[1], position[2])); } else { System.Diagnostics.Debug.WriteLine("Caller is not a renderer."); } }
void AddFlamingoToWindow(vtk.vtkRenderWindow renWin) { // This example demonstrates the use of vtk3DSImporter. // vtk3DSImporter is used to load 3D Studio files. Unlike writers, // importers can load scenes (data as well as lights, cameras, actors // etc.). Importers will either generate an instance of vtkRenderWindow // and/or vtkRenderer or will use the ones you specify. string VTK_DATA_ROOT = vtk.vtkDotNetUtil.vtkGetDataRoot(); // Create the importer and read a file vtk.vtk3DSImporter importer = new vtk.vtk3DSImporter(); importer.ComputeNormalsOn(); importer.SetFileName(VTK_DATA_ROOT + "/Data/iflamigm.3ds"); importer.Read(); // Here we let the importer create a renderer and a render window for // us. We could have also create and assigned those ourselves like so: importer.SetRenderWindow(renWin); // Assign an interactor. // We have to ask the importer for it's render window. // Set some properties on the renderer. // We have to ask the importer for it's renderer. vtk.vtkRenderer ren = importer.GetRenderer(); renWin.AddRenderer(ren); ren.SetBackground(0.1, 0.2, 0.4); // Position the camera: // change view up to +z vtk.vtkCamera camera = ren.GetActiveCamera(); camera.SetPosition(0, 1, 0); camera.SetFocalPoint(0, 0, 0); camera.SetViewUp(0, 0, 1); // let the renderer compute good position and focal point ren.ResetCamera(); camera.Dolly(1.4); ren.ResetCameraClippingRange(); }
static void Main(string[] args) { string VTK_DATA_ROOT = vtk.vtkDotNetUtil.vtkGetDataRoot(); // Create the reader and read a data file. Connect the mapper and // actor. vtk.vtkSTLReader sr = new vtk.vtkSTLReader(); sr.SetFileName(VTK_DATA_ROOT + "/Data/42400-IDGH.stl"); vtk.vtkPolyDataMapper stlMapper = new vtk.vtkPolyDataMapper(); stlMapper.SetInputConnection(sr.GetOutputPort()); vtk.vtkLODActor stlActor = new vtk.vtkLODActor(); stlActor.SetMapper(stlMapper); // Create the Renderer, RenderWindow, and RenderWindowInteractor vtk.vtkRenderer ren = new vtk.vtkRenderer(); vtk.vtkRenderWindow renWin = new vtk.vtkRenderWindow(); renWin.AddRenderer(ren); vtk.vtkRenderWindowInteractor iren = new vtk.vtkRenderWindowInteractor(); iren.SetRenderWindow(renWin); // Add the actors to the render; set the background and size ren.AddActor(stlActor); ren.SetBackground(0.1, 0.2, 0.4); renWin.SetSize(500, 500); // Zoom in closer ren.ResetCamera(); vtk.vtkCamera cam1 = ren.GetActiveCamera(); cam1.Zoom(1.4); iren.Initialize(); renWin.Render(); iren.Start(); vtk.vtkWin32OpenGLRenderWindow win32win = vtk.vtkWin32OpenGLRenderWindow.SafeDownCast(renWin); if (null != win32win) win32win.Clean(); }
public void rendersiteplanes(vtk.vtkImageData VoxelData) { //vtk.vtkWin32RenderWindowInteractor renwX.AddRenderer(renX); renwY.AddRenderer(renY); renwZ.AddRenderer(renZ); irenX.SetRenderWindow(renwX); irenY.SetRenderWindow(renwY); irenZ.SetRenderWindow(renwZ); vtk.vtkOutlineFilter outline = new vtk.vtkOutlineFilter(); outline.SetInput(VoxelData); vtk.vtkPolyDataMapper outlineMapper = new vtk.vtkPolyDataMapper(); outlineMapper.SetInputConnection(outline.GetOutputPort()); vtk.vtkActor outlineActor = new vtk.vtkActor(); outlineActor.SetMapper(outlineMapper); vtk.vtkCellPicker picker = new vtk.vtkCellPicker(); picker.SetTolerance(0.005); planeWidgetX.SetInteractor(irenX); planeWidgetX.DisplayTextOff(); planeWidgetX.SetInput(VoxelData); planeWidgetX.SetPlaneOrientationToXAxes(); planeWidgetX.SetSliceIndex(slizex); planeWidgetX.SetPicker(picker); planeWidgetX.On(); planeWidgetX.InteractionOff(); if (firstTime) { double[] wl = new double[2]; vtk.vtkLookupTable lktb = new vtk.vtkLookupTable(); lktb = planeWidgetX.GetLookupTable(); wl = lktb.GetTableRange(); rangeXMin = wl[0]; rangeXMax = wl[1]; planeWidgetX.GetWindowLevel(wl); windowX = wl[0]; levelX = wl[1]; } planeWidgetY.SetInteractor(irenY); planeWidgetY.DisplayTextOff(); planeWidgetY.SetInput(VoxelData); planeWidgetY.SetPlaneOrientationToYAxes(); planeWidgetY.SetSliceIndex(slizey); planeWidgetY.SetPicker(picker); planeWidgetY.On(); planeWidgetY.InteractionOff(); if (firstTime) { double[] wl = new double[2]; vtk.vtkLookupTable lktb = new vtk.vtkLookupTable(); lktb = planeWidgetY.GetLookupTable(); wl = lktb.GetTableRange(); rangeYMin = wl[0]; rangeYMax = wl[1]; planeWidgetY.GetWindowLevel(wl); windowY = wl[0]; levelY = wl[1]; } planeWidgetZ.SetInteractor(irenZ); planeWidgetZ.DisplayTextOff(); planeWidgetZ.SetInput(VoxelData); planeWidgetZ.SetPlaneOrientationToZAxes(); planeWidgetZ.SetSliceIndex(slizez); planeWidgetZ.SetPicker(picker); planeWidgetZ.On(); planeWidgetZ.InteractionOff(); if (firstTime) { double[] wl = new double[2]; vtk.vtkLookupTable lktb = new vtk.vtkLookupTable(); lktb = planeWidgetZ.GetLookupTable(); wl = lktb.GetTableRange(); rangeZMin = wl[0]; rangeZMax = wl[1]; planeWidgetZ.GetWindowLevel(wl); windowZ = wl[0]; levelZ = wl[1]; } firstTime = false; enabled = true; if (firstime == 1) { renX.GetActiveCamera().Roll(90); renX.GetActiveCamera().Azimuth(90); renY.GetActiveCamera().Elevation(-90); renX.GetActiveCamera().ParallelProjectionOff(); renY.GetActiveCamera().ParallelProjectionOff(); renZ.GetActiveCamera().ParallelProjectionOff(); } renX.ResetCamera(); renY.ResetCamera(); renZ.ResetCamera(); renX.GetActiveCamera().ParallelProjectionOn(); renY.GetActiveCamera().ParallelProjectionOn(); renZ.GetActiveCamera().ParallelProjectionOn(); renX.GetActiveCamera().Azimuth(-90); renX.GetActiveCamera().Roll(-90); renY.GetActiveCamera().Elevation(90); firstime = 1; int[] dimensions = VoxelData.GetDimensions(); double[] spacing = VoxelData.GetSpacing(); double xmax = (double)dimensions[0] * spacing[0] * 0.5; double ymax = (double)dimensions[1] * spacing[1] * 0.5; double zmax = (double)dimensions[2] * spacing[2] * 0.5; double smax = xmax; if (ymax > smax) { smax = ymax; } if (zmax > smax) { smax = zmax; } renX.GetActiveCamera().SetParallelScale(smax); renY.GetActiveCamera().SetParallelScale(smax); renZ.GetActiveCamera().SetParallelScale(smax); renX.GetActiveCamera().SetClippingRange(0.1, 1000); renY.GetActiveCamera().SetClippingRange(0.1, 1000); renZ.GetActiveCamera().SetClippingRange(0.1, 1000); irenX.Initialize(); irenY.Initialize(); irenZ.Initialize(); irenX.Disable(); irenY.Disable(); irenZ.Disable(); renwX.Render(); renwY.Render(); renwZ.Render(); }