Зчитавши папір до сторінки 2, здається, що об'ємні ваги зберігаються в кутах сітки, а не вага самого куба, як вважають за краще звичайні алгоритми стилю Marching Cubes. Ці кутові ваги визначають точку між ребром між двома кутами, де відбувається зміна знаку від кута до кута. Краї зі змінами знаків також зберігають нормальну для краю, яка є кутовою лінією у вашому двовимірному поданні в ОП. Ця нормальна інформація визначається під час створення тома (будь-яким інструментом редагування чи процедурним методом створення томів), не після того, як буде створена ізоповерхня, як можна було б очікувати алгоритмом стилю Marching Cubes. Ці нормальні дані "констатують", що лінія / поверхня, що проходить через точку, повинна мати заздалегідь задане нормальне значення. У випадках, коли маршові кубики будуть згинати лінію в цій точці, щоб поєднатися з іншою точкою на сусідньому краї, розширені маршируючі кубики і подвійний контур продовжують лінію / поверхню, поки вона не перетинається з лінією / поверхнею, що проходить через точку на сусідній край, який має інше нормальне значення. Це дозволяє створити гострі кути з даних про обсяг, де основні алгоритми маршируючих кубів дещо закругляють поверхню. Я не зовсім розумію, як грають QEF (квадратичні функції помилок), за винятком того, що, здається, вони полегшують обчислення розширеної точки в кубі, де буде розташований кут. Розширені маршируючі кубики та подвійний контур розширюють лінію / поверхню, поки вона не перетинається з лінією / поверхнею, що проходить через точку на сусідньому краї, яка має інше нормальне значення. Це дозволяє створити гострі кути з даних про обсяг, де основні алгоритми маршируючих кубів дещо закругляють поверхню. Я не зовсім розумію, як грають QEF (квадратичні функції помилок), за винятком того, що, здається, вони полегшують обчислення розширеної точки в кубі, де буде розташований кут. Розширені маршируючі кубики та подвійний контур розширюють лінію / поверхню, поки вона не перетинається з лінією / поверхнею, що проходить через точку на сусідньому краї, яка має інше нормальне значення. Це дозволяє створити гострі кути з даних про обсяг, де основні алгоритми маршируючих кубів дещо закругляють поверхню. Я не зовсім розумію, як грають QEF (квадратичні функції помилок), за винятком того, що, здається, вони полегшують обчислення розширеної точки в кубі, де буде розташований кут.
Зауважте, що я тут говорив про лінії та ребра в 2D-сенсі, як зображено представленням в ОП. Мені довелося б ще трохи прочитати та подумати, щоб розширити це на 3D для об'ємної генерації сітки.
Щоб вирішити другу половину вашого питання про те, як генерувати нормали, і думаючи з точки зору процедурної точки зору, спричиненого шумом, здається, ви б наповнили гучність даними про шум, потім шукайте краї зі змінами знаків, а потім вивчіть 4 кубики які ділять ребро, щоб зрозуміти, де будуть утворюватися трикутники, і обчислити вершину нормально, як і для будь-якого іншого перетину декількох трикутників, беручи середнє значення нормалів для кожного трикутника, що ділиться вершиною. З мого боку це дуже спекулятивно, оскільки в роботі розглядається здебільшого операції з CSG та обсяги, згенеровані із сканованих конвертованих сіток, обидва з яких мають чітко визначені норми на поверхні.
Я сподіваюсь, що принаймні перша частина цієї відповіді стосується відмінностей у представленні та використанні даних про вагу таким чином, що зовсім відрізняється від базових маршових кубиків, і чому звичайні дані повинні бути створені досить рано в процесі генерації обсягу, де з базовими маршируючими кубами нормали зазвичай створюються як останній етап у процесі створення сітки.