Estoy usando this marching cube algorithm para dibujar isosuperficies 3D (portado en C#, dando como resultado MeshGeomtry3D
s, pero por lo demás lo mismo). Las superficies resultantes se ven muy bien, pero tardan mucho tiempo en calcularse.¿Cómo acelerar los cubos de marcha?
¿Hay alguna forma de acelerar la marcha de los cubos? El más obvio es simplemente reducir la tasa de muestreo espacial, pero esto reduce la calidad de la malla resultante. Me gustaría evitar esto.
Estoy considerando un sistema de dos pasos, donde el primer pase muestrea el espacio mucho más grueso, eliminando volúmenes donde la intensidad del campo está muy por debajo de mi nivel iso. ¿Es esto sabio? ¿Cuáles son las trampas?
Editar: el código se ha perfilado, y la mayor parte del tiempo de CPU se divide entre la rutina de cubos de marcha y el cálculo de intensidad de campo para cada esquina de celda de la grilla. Los cálculos de campo están fuera de mi control, por lo que agilizar la rutina de cubos es mi única opción ...
Todavía me atrae la idea de intentar eliminar el espacio muerto, ya que esto reduciría el número de llamadas a ambos sistemas considerablemente.
¿Ha perfilado el código? – AShelly