Commit 99740a229dc281db7964a7a07c08a759590c45a6
1 parent
cc41da0f
Exists in
master
and in
68 other branches
ADD: Clipping plane
Showing
1 changed file
with
73 additions
and
6 deletions
Show diff stats
invesalius/data/volume.py
... | ... | @@ -253,10 +253,64 @@ class Volume(): |
253 | 253 | volume_mapper.SetGradientEstimator(gradientEstimator) |
254 | 254 | volume_mapper.IntermixIntersectingGeometryOn() |
255 | 255 | |
256 | - #clip = vtk.vtkPlane() | |
257 | - | |
258 | - #volume_mapper.AddClippingPlane(clip) | |
256 | + #============================ TESTE ============================================= | |
257 | + | |
258 | + self.plane_widget = plane_widget = vtk.vtkImagePlaneWidget() | |
259 | + plane_widget.SetInput(image2.GetOutput()) | |
260 | + plane_widget.SetPlaneOrientationToXAxes() | |
261 | + plane_widget.SetResliceInterpolateToLinear() | |
262 | + plane_widget.TextureVisibilityOff() | |
263 | + | |
264 | + #Set left mouse button to move and rotate plane | |
265 | + plane_widget.SetLeftButtonAction(1) | |
266 | + | |
267 | + #SetColor margin to green | |
268 | + margin_property = plane_widget.GetMarginProperty() | |
269 | + margin_property.SetColor(0,0.8,0) | |
270 | + | |
271 | + #Disable cross | |
272 | + cursor_property = plane_widget.GetCursorProperty() | |
273 | + cursor_property.SetOpacity(0) | |
274 | + | |
275 | + | |
276 | + self.plane_source = vtk.vtkPlaneSource() | |
277 | + self.plane_source.SetOrigin(plane_widget.GetOrigin()) | |
278 | + self.plane_source.SetPoint1(plane_widget.GetPoint1()) | |
279 | + self.plane_source.SetPoint2(plane_widget.GetPoint2()) | |
280 | + self.plane_source.SetNormal(plane_widget.GetNormal()) | |
281 | + | |
282 | + plane_mapper = vtk.vtkPolyDataMapper() | |
283 | + plane_mapper.SetInput(self.plane_source.GetOutput()) | |
284 | + | |
285 | + self.plane_actor = vtk.vtkActor() | |
286 | + self.plane_actor.SetMapper(plane_mapper) | |
287 | + self.plane_actor.GetProperty().BackfaceCullingOn() | |
288 | + self.plane_actor.GetProperty().SetOpacity(0) | |
289 | + | |
290 | + self.plane_actor.SetVisibility(1) | |
291 | + | |
292 | + self.plane_widget.AddObserver("InteractionEvent", self.UpdatePlane) | |
293 | + | |
294 | + ps.Publisher().sendMessage('ADD Actor', self.plane_actor) | |
295 | + ps.Publisher().sendMessage('Get Interactor Volume', self.plane_widget) | |
296 | + | |
297 | + self.plane_actor.SetVisibility(1) | |
298 | + self.plane_widget.On() | |
299 | + | |
300 | + | |
301 | + self.plane = plane = vtk.vtkPlane() | |
302 | + plane.SetNormal(self.plane_source.GetNormal()) | |
303 | + plane.SetOrigin(self.plane_source.GetOrigin()) | |
304 | + | |
305 | + volume_mapper.AddClippingPlane(plane) | |
306 | + | |
259 | 307 | |
308 | + | |
309 | + | |
310 | + | |
311 | + #=============================================================================== | |
312 | + | |
313 | + | |
260 | 314 | self.color_transfer = color_transfer |
261 | 315 | |
262 | 316 | volume_properties = vtk.vtkVolumeProperty() |
... | ... | @@ -298,6 +352,19 @@ class Volume(): |
298 | 352 | return value - scale[0] |
299 | 353 | |
300 | 354 | |
301 | - | |
302 | - | |
303 | - | |
355 | + def MovePlane(self): | |
356 | + pass | |
357 | + | |
358 | + def UpdatePlane(self, a, b): | |
359 | + plane_source = self.plane_source | |
360 | + plane_source.SetOrigin(self.plane_widget.GetOrigin()) | |
361 | + plane_source.SetPoint1(self.plane_widget.GetPoint1()) | |
362 | + plane_source.SetPoint2(self.plane_widget.GetPoint2()) | |
363 | + plane_source.SetNormal(self.plane_widget.GetNormal()) | |
364 | + self.plane_actor.VisibilityOn() | |
365 | + | |
366 | + self.plane.SetNormal(plane_source.GetNormal()) | |
367 | + self.plane.SetOrigin(plane_source.GetOrigin()) | |
368 | + | |
369 | + ps.Publisher().sendMessage('Render volume viewer', None) | |
370 | + | ... | ... |