Commit f9191b324a5a2df396fdeb878932f1106ceb1d40

Authored by tfmoraes
1 parent 99677689

ENH: Improved the raycasting quality

Showing 1 changed file with 12 additions and 4 deletions   Show diff stats
invesalius/data/volume.py
@@ -343,7 +343,7 @@ class Volume(): @@ -343,7 +343,7 @@ class Volume():
343 image2 = convolve 343 image2 = convolve
344 344
345 composite_function = vtk.vtkVolumeRayCastCompositeFunction() 345 composite_function = vtk.vtkVolumeRayCastCompositeFunction()
346 - composite_function.SetCompositeMethodToClassifyFirst() 346 + composite_function.SetCompositeMethodToInterpolateFirst()
347 347
348 gradientEstimator = vtk.vtkFiniteDifferenceGradientEstimator() 348 gradientEstimator = vtk.vtkFiniteDifferenceGradientEstimator()
349 gradientEstimator.SetGradientMagnitudeScale(1) 349 gradientEstimator.SetGradientMagnitudeScale(1)
@@ -352,9 +352,9 @@ class Volume(): @@ -352,9 +352,9 @@ class Volume():
352 #volume_mapper.AutoAdjustSampleDistancesOff() 352 #volume_mapper.AutoAdjustSampleDistancesOff()
353 volume_mapper.SetInput(image2.GetOutput()) 353 volume_mapper.SetInput(image2.GetOutput())
354 volume_mapper.SetVolumeRayCastFunction(composite_function) 354 volume_mapper.SetVolumeRayCastFunction(composite_function)
355 - volume_mapper.SetGradientEstimator(gradientEstimator) 355 + #volume_mapper.SetGradientEstimator(gradientEstimator)
356 volume_mapper.IntermixIntersectingGeometryOn() 356 volume_mapper.IntermixIntersectingGeometryOn()
357 - 357 +
358 #Cut Plane 358 #Cut Plane
359 CutPlane(image2.GetOutput(), volume_mapper) 359 CutPlane(image2.GetOutput(), volume_mapper)
360 360
@@ -369,13 +369,21 @@ class Volume(): @@ -369,13 +369,21 @@ class Volume():
369 369
370 volume_properties.SetInterpolationTypeToLinear() 370 volume_properties.SetInterpolationTypeToLinear()
371 volume_properties.SetColor(self.color_transfer) 371 volume_properties.SetColor(self.color_transfer)
372 - self.volume_properties = volume_properties  
373 372
374 try: 373 try:
375 volume_properties.SetScalarOpacity(self.opacity_transfer_func) 374 volume_properties.SetScalarOpacity(self.opacity_transfer_func)
376 except NameError: 375 except NameError:
377 pass 376 pass
378 377
  378 + # Using these lines to improve the raycasting quality. These values
  379 + # seems related to the distance from ray from raycasting.
  380 + # TODO: Need to see values that improve the quality and don't decrease
  381 + # the performance. 2.0 seems to be a good value to pix_diag
  382 + pix_diag = 2.0
  383 + volume_mapper.SetImageSampleDistance(0.25)
  384 + volume_mapper.SetSampleDistance(pix_diag / 5.0)
  385 + volume_properties.SetScalarOpacityUnitDistance(pix_diag)
  386 +
379 self.volume_properties = volume_properties 387 self.volume_properties = volume_properties
380 388
381 volume = vtk.vtkVolume() 389 volume = vtk.vtkVolume()