Может ли кто-нибудь дать короткое и приятное объяснение (или предложить хорошее учебное пособие) о том, как направить луч на октодерево вокселя без рекурсия?
У меня есть сложная модель, запеченная в октодерево, и мне нужно найти лучший / ближайший лист, который пересекает луч. Стандартный итеративный обход дерева при детализации:
Всегда возвращает лист, но в тех случаях, когда дерево хранит, скажем, ландшафт, ближайший к нему узел источник луча не обязательно содержит наиболее подходящий лист. Это не удивительно - более высокие объекты в более удаленных узлах не будут протестированы с использованием этого подхода.
Я могу сделать это рекурсивно, найдя все пересекающиеся листья в дереве, отсортировав их по расстоянию и выбрав ближайший к лучу. должность. Однако это происходит медленно и требует рекурсии.
Я немного читал об использовании линейного алгоритма Брезенхема для обхода дерева, который, кажется, требует, чтобы каждый узел содержал указатели на соседних соседей, но я не понимаю, как это сделать. реализовать это полезным способом.
Есть предложения? Я могу подделать стек в HLSL, используя массив фиксированной длины или структуру с элементом для каждой потенциальной записи стека, но требования к памяти для этого могут стать критическими при достаточно большом дереве.
Справка.