Кто-нибудь знает, какие структуры данных представления сетки (наполовину края, четыре края, крылатые края и т. Д.) Используют популярное программное обеспечение, такое как Lightwave 3D, Maya, Softimage, 3D-студия и другие?Структура данных сетки, используемая в популярном программном обеспечении 3D
ответ
Индексированная сетка, безусловно, самая популярная и используемая по меньшей мере Maya, LW, 3DS Max и Modo. Я не уверен в XSI и Cinema 4D (не смотрел их SDK не так много).
Wings3D использует крылатые края, как следует из названия, а также Mirai и Nendo, из которых он был основан. Это некоторые из исключительных случаев, но вы можете видеть, что они поддерживают только многосеточные сетки.
Одна из причин, по которой базовая индексированная структура сетки настолько популярна по сравнению с более фантастическими вариантами, такими как полукруг или рельеф с крылатым краем, потому что индексированная сетка отображается непосредственно на GPU. Эти пакеты часто сфокусированы на визуализации изменений в реальном времени, таких как деформации символов, поэтапно или иногда даже с топологическими изменениями. Наличие структуры данных, которая более непосредственно сопоставляется с графическим процессором, часто означает меньшее время, затрачиваемое на синхронизацию ваших структур данных с конкретными приложениями с тем, что находится на графическом процессоре, поэтому оно имеет тенденцию быть наиболее эффективным, если вы сосредоточены на визуализации/взаимодействии GPU в реальном времени в окне просмотра.
Другая причина заключается в том, что эти пакеты обрабатывают такой широкий диапазон ячеистых ячеек, включая некоторые сложные данные, такие как 6-кратные края, один многоугольник с несколькими отверстиями и т. Д. Индексированная сетка поддерживает все эти случаи.
Иногда определенная функция, такая как инструмент моделирования, который выполняет огромную сумму обработки (например, дециматор), может временно преобразовать индексированную сетку в другую структуру данных, такую как полукруглый rep, для этого одного алгоритма, конвертируя обратно в индексированную сетку, когда это будет сделано.
Большое спасибо за ваш ответ. Это действительно помогает мне. Похоже, у вас есть некоторый опыт по этому вопросу. –
Я провел много исследований в SDK этих пакетов, прежде чем задаваться вопросом о том, какой дизайн я должен использовать в качестве основного хранилища. Технически структуры, такие как крылатые края и полуребра, превосходят многие алгоритмические работы, включающие обход, обход края, обрушение, поиск кромок и т. Д., Но часто вы возвращаетесь к самому низкому общему знаменателю, который просто хочет сосредоточиться на эффективно привязывать к виду просмотра по кадровой основе. Поэтому обычно удобно придерживаться индексированной сетки как общего знаменателя ... –
... и временно конвертировать в другие повторы, когда ваша операция достаточно сложна, чтобы гарантировать ее. –