1) Это зависит от вашей реализации. Вам понадобится структура данных, в которой вы можете искать значения в каждом углу (вершине) вокселя или куба. Это может быть трехмерное изображение (т.е. трехмерная текстура в OpenGL), или это может быть настроенная структура данных массива, или любой другой формат, который вы пожелаете.
2) Вам нужно проверить вершины куба. Для этого есть разные оптимизации, но в общем случае начните с первого угла и просто проверьте значения всех 8 углов куба.
3) Большинство (быстрых) алгоритмов создают битовую маску для использования в качестве таблицы поиска в статическом массиве опций. Есть только так много возможных вариантов для этого.
4) Как только вы сделали треугольники из triTable, вы можете использовать OpenGL для их рендеринга.
Допустим, у меня есть данные об облаке точек яблока. как мне поступить?
Это не сработает с марширующими кубиками. Для марширующих кубов требуются данные вокселей, поэтому вам нужно использовать некоторый алгоритм, чтобы поместить облако точек данных в кубический объем. Gaussian Splatting является одним из вариантов здесь.
Обычно, если вы работаете с облаком точек и хотите увидеть поверхность, вам следует взглянуть на алгоритмы восстановления поверхности вместо марширующих кубов.
Если вы хотите узнать больше, я настоятельно рекомендую прочитать некоторые книги по технике визуализации. Хороший пример от ребят из Kitware - Набор инструментов визуализации .
Возможно, вы захотите взглянуть на VTK . Он имеет реализацию C ++ Marching Cubes и является полностью открытым исходным кодом.