1) Depende de la implementación de yoru. Tendrá que tener una estructura de datos donde pueda buscar los valores en cada esquina (vértice) del voxel o cubo. Puede ser una imagen en 3D (es decir, una textura 3D en OpenGL), o puede ser una estructura de datos de matriz personalizada o cualquier otro formato que desee.
2) Debe comprobar los vértices del cubo. Hay diferentes optimizaciones sobre esto, pero en general, comience con la primera esquina, y simplemente verifique los valores de las 8 esquinas del cubo.
3) La mayoría de los algoritmos (rápidos) crean una máscara de bits para usar como una tabla de búsqueda en una matriz estática de opciones. Solo hay tantas opciones posibles para esto.
4) Una vez que haya creado los triángulos de triTable, puede usar OpenGL para representarlos.
Digamos que tengo datos de una nube de puntos de una manzana. ¿Cómo procedo?
Esto no va a funcionar con los cubos de marcha. Marchar cubos requiere datos de voxel, por lo que necesitaría usar algún algoritmo para poner la nube de puntos de datos en un volumen cúbico. Gaussian Splatting es una opción aquí.
Normalmente, si está trabajando desde una nube de puntos y desea ver la superficie, debería observar los algoritmos de reconstrucción de superficie en lugar de los cubos de marcha.
Si desea obtener más información, le recomiendo leer algunos libros sobre técnicas de visualización. Una buena es de la gente de Kitware - The Visualization Toolkit.
Es posible que desee echar un vistazo a VTK. Tiene una implementación en C++ de Marching Cubes, y está completamente abierto.
puede un 6 glQuads igual a un voxel? en caso afirmativo, ¿cómo es la construcción de vóxeles reletive? ¿Mi punto es el centro del cubo? – noob88
@ noob88: No, en realidad no. Su "cubo" debería ser un objeto compuesto por 8 pionts. Los 6 glQuads podrían ser las caras del cubo/vóxel, y los vértices que estás usando podrían ser tus 8 puntos. Sin embargo, crearía una estructura de datos diferente para contener esto. Algo tan simple como una matriz multidimensional funciona. –
ya veo ... creo que necesito tiempo para ponerlo a prueba primero, ¿puedo tener su contacto? si tuviese más problemas, espero que pueda obtener su ayuda. – noob88