1) To zależy od wdrożenia yoru. Musisz mieć strukturę danych, w której możesz sprawdzić wartości w każdym rogu (wierzchołku) woksela lub kostki. Może to być obraz 3D (tj. Tekstura 3D w OpenGL) lub może to być niestandardowa struktura danych macierzy lub dowolny inny format, jaki sobie życzysz.
2) Musisz sprawdzić wierzchołki sześcianu. Są na tym różne optymalizacje, ale ogólnie zacznij od pierwszego rogu i po prostu sprawdź wartości wszystkich 8 rogów sześcianu.
3) Większość (szybkich) algorytmów tworzy maskę bitową, która będzie używana jako tablica przeglądowa w statycznej tablicy opcji. Jest tylko tyle możliwych opcji.
4) Po utworzeniu trójkątów z tabeli trójwymiarowej można użyć OpenGL, aby je renderować.
Załóżmy, że mam dane chmury punktów jabłka. jak mogę kontynuować?
To nie zadziała z maszerującymi kostkami. Kostki marszowe wymagają danych wokseli, więc musisz użyć jakiegoś algorytmu, aby umieścić chmurę punktów w sześciennej objętości. Opcja Gaussa Splatting jest tutaj opcją.
Normalnie, jeśli pracujesz z chmurą punktów i chcesz zobaczyć powierzchnię, powinieneś spojrzeć na algorytmy rekonstrukcji powierzchni zamiast maszerujących kostek.
Jeśli chcesz dowiedzieć się więcej, zdecydowanie polecam lekturę książek na temat technik wizualizacji. Dobry jest od ludzi Kitware - The Visualization Toolkit.
Być może zechcesz rzucić okiem na VTK. Ma implementację C++ Marching Cubes i jest w pełni otwarta.
Czy 6 glQuads równa wokselu? jeśli tak, w jaki sposób relacja voxel jest reletatywna? czy mój punkt jest środkiem sześcianu? – noob88
@ noob88: Nie, niezupełnie. Twój "sześcian" musiałby być jakimś obiektem składającym się z 8 pionów. 6 glQuads może być twarzami kostki/woksela, a wierzchołki, których używasz, mogą być twoimi 8 punktami. Zrobiłbym jednak inną strukturę danych, żeby to zatrzymać. Działa coś tak prostego jak wielowymiarowa tablica. –
Widzę .. Myślę, że potrzebuję czasu, aby go przetestować 1. Mogę mieć twój kontakt? Czy mam dalsze problemy, mam nadzieję, że mogę uzyskać pomoc .. – noob88