Varios métodos para mejorar la velocidad de renderizado 3D de vtk
: configúrelo usando SetAxisMagnificationFactor.
SetInput(reader.get salida());
setaxismaggregationfactor(0, 0.5);
setaxismaggregationfactor(1, 0.5);
setaxismaggregationfactor(2, 0.5); //Restablece el espacio en las direcciones x, y, z y, z.
Relaje moderadamente el espacio, reduzca la calidad de visualización de los gráficos y lea datos un poco más grandes.
2. Para los datos leídos, el uso del submuestreo
vtkImageShrink3D
puede acelerar la lectura de datos. Uso general: setshrinkfactors (3, 3, 3) y AveragingOn. El método SetShrinkFactors define la precisión de muestreo de x, Y, z Y, z. Si todos son 0, no es necesario utilizar esta función. ¿Qué pasa si el submuestreo es? Si es demasiado grande, los resultados del renderizado serán pobres. Se pueden utilizar algunas funciones de suavizado para la optimización y reducir el gradiente y la rugosidad de los datos. Por ejemplo, función suave gaussiana: establecer conexión de entrada (lector-obtener salida());
Establecer dimensión (3)
SetRadiusFactors(1, 1, 0)3.
Para el mapeo vtkVolumeRayCastMapper, use la función SetImageSampleDistance para establecer la distancia de muestra. Pero al mismo tiempo, la función de ajustar automáticamente el efecto de visualización está activada de forma predeterminada, por lo que para configurar la distancia de muestra, debe desactivar la función de ajuste automático, es decir, AutoAdjustSampleDistancesOff(). (Si todavía usas la función de ajuste automático, puedes usar.
SetAutoAdjustSampleDistances
(int) para configuraciones interactivas) como esta:
vtkVolumeRayCastMapper:
SetImageSampleDistance(2);
AutoAdjustSampleDistancesOff(); 4.
VtkLODProp3D puede agregar múltiples mapeadores. Al configurar la hora, puede decidir qué mapeador se muestra en un momento determinado. Un enfoque común es elegir un mapeador que sea interactivo pero que tenga poca precisión al girar, y un mapeador que requiera mucho tiempo pero que se dibuje con precisión y que se muestre cuando se detiene. Para RayCastMapper, no es necesario utilizar vtkLODProp3D. Como se muestra a continuación: