Od czytania papieru do strony 2, wydaje się, że ciężary objętości są przechowywane w rogach siatki, zamiast być ciężarem samej kostki, jak wolą normalne algorytmy w stylu Marching Cubes. Te grubości narożników określają punkt między krawędzią między 2 narożnikami, w którym następuje zmiana znaku z rogu do rogu. Krawędzie ze zmianami znaku przechowują również normalną krawędź, która jest linią kątową w reprezentacji 2D w OP. Ta normalna informacja jest definiowana podczas tworzenia woluminu (za pomocą dowolnego narzędzia edycyjnego lub metody tworzenia woluminu proceduralnego), a nie po wygenerowaniu powierzchni isosurface, jak można oczekiwać po algorytmie w stylu Marching Cubes. Te normalne dane „stwierdzają”, że linia / powierzchnia przechodząca przez punkt musi mieć określoną wartość normalną. W przypadkach, w których marszowe kostki wyginałyby linię w tym punkcie, aby połączyć się z innym punktem na sąsiedniej krawędzi, zarówno rozszerzone marszowe kostki, jak i podwójne konturowanie przedłużają linię / powierzchnię na zewnątrz, aż przecina się z linią / powierzchnią przechodzącą przez punkt na przylegająca krawędź, która ma inną wartość normalną. Umożliwia to tworzenie ostrych narożników na podstawie danych objętości, w których podstawowe algorytmy Marching Cubes zaokrągliłyby nieco powierzchnię. Nie do końca rozumiem, w jaki sposób QEF (kwadratowe funkcje błędów) odgrywają w tym rolę, z tym wyjątkiem, że wydaje się, że ułatwiają one obliczenie rozszerzonego punktu w sześcianie, w którym będzie znajdować się róg. Rozszerzone kostki marszowe i podwójne konturowanie wydłużają linię / powierzchnię na zewnątrz, aż przecina się z linią / powierzchnią przechodzącą przez punkt na sąsiedniej krawędzi, który ma inną wartość normalną. Umożliwia to tworzenie ostrych narożników na podstawie danych objętości, w których podstawowe algorytmy Marching Cubes zaokrągliłyby nieco powierzchnię. Nie do końca rozumiem, w jaki sposób QEF (kwadratowe funkcje błędów) odgrywają w tym rolę, z tym wyjątkiem, że wydaje się, że ułatwiają one obliczenie rozszerzonego punktu w sześcianie, w którym będzie znajdować się róg. Rozszerzone kostki marszowe i podwójne konturowanie wydłużają linię / powierzchnię na zewnątrz, aż przecina się z linią / powierzchnią przechodzącą przez punkt na sąsiedniej krawędzi, który ma inną wartość normalną. Umożliwia to tworzenie ostrych narożników na podstawie danych objętości, w których podstawowe algorytmy Marching Cubes zaokrągliłyby nieco powierzchnię. Nie do końca rozumiem, w jaki sposób QEF (kwadratowe funkcje błędów) odgrywają w tym rolę, z tym wyjątkiem, że wydaje się, że ułatwiają one obliczenie rozszerzonego punktu w sześcianie, w którym będzie znajdować się róg.
Zauważ, że mówiłem tutaj o liniach i krawędziach w sensie 2D, jak pokazano w OP. Musiałbym trochę przeczytać i pomyśleć, aby rozszerzyć to na 3D w celu generowania siatki wolumetrycznej.
Aby odpowiedzieć na drugą połowę twojego pytania na temat generowania normalnych i myślenia z proceduralnego punktu widzenia opartego na hałasie, wydaje się, że wypełniłbyś swoją objętość danymi szumu, następnie szukał krawędzi ze zmianami znaków, a następnie zbadał 4 kostki które dzielą krawędź, aby dowiedzieć się, jakie trójkąty zostaną wygenerowane, i obliczyć wierzchołek normalny, tak jak dla każdego innego przecięcia wielu trójkątów, biorąc średnią normalnych dla każdego trójkąta, który dzieli wierzchołek. Jest to z mojej strony bardzo spekulacyjne, ponieważ artykuł dotyczy głównie operacji CSG i objętości generowanych z siatek konwertowanych za pomocą skanowania, które mają dobrze zdefiniowane normalne na powierzchniach.
Mam nadzieję, że przynajmniej pierwsza część tej odpowiedzi dotyczy różnic w sposobie przedstawiania i wykorzystywania danych dotyczących masy w sposób zupełnie inny niż podstawowe kostki marszowe oraz dlaczego normalne dane muszą być tworzone dość wcześnie w procesie generowania objętości, gdzie przy podstawowych kostkach marszowych normalne są zwykle tworzone jako ostatni etap procesu generowania siatki.