Преобразование 3D-модели в поле вокселя

Мне нужно написать код для преобразования массива квадроциклов в поле вокселя. Сделать это должно быть легко, но сделать это быстро не будет так тривиально.

кто-нибудь знает какие-либо библиотеки или исходный код, которые я могу использовать? Уверен, кто-то делал это раньше.

edit: Алгоритм должен также заполнить внутреннюю часть модели вокселами. Просто оболочка не годится.

2 ответов


ссылка вокселирования, опубликованная @Alexandre C., выглядит хорошо.

вот краткий обзор того, как мы решили эту проблему при преобразовании регулярных моделей quad/triangle в кубический массив индексов значений преломления/Эпсилона для моделирования фотоники/EM.

  1. создайте дерево BSP вашей сцены. (Да, действительно)
  2. итерация через регулярные промежутки времени через X,Y, Z в пространстве модели или решения. (Интервал на каждой оси должен быть равен к желаемым размерам вокселя.)
  3. в каждой точке вашего цикла x/y/z проверьте точку против дерева BSP. Если он находится внутри сущности, создайте воксель в этой точке и установите его атрибуты (цвет, координаты текстуры и т. д.) На основе исходной модели (как указано в вашем узле BSP). (Оптимизация Подсказка: если ваш внутренний цикл находится вдоль оси Y (вертикальной оси), и вы создаете местность или XZ-ориентированную поверхность, вы можете выйти из цикла Y когда вы создаете воксел.)

  4. сохранить

  5. профит!

построение BSP-это единственная полусложная часть (и это намного проще, чем кажется на первый взгляд), но это было задокументировано по всему интернету. Это будет работать практически для любой формы модели, а также дает вам хорошее дерево, которое вы можете использовать для обнаружения столкновений и определения видимости, среди прочего.

кроме того, обратите внимание, что весь этот процесс должен происходить во время компиляции или с помощью специального инструмента (который, очевидно, создать файл, содержащий дерево и поле вокселей, которые вы будете использовать во время выполнения). Если вы используете XNA, довольно легко импортировать что-либо в конвейер содержимого.


Регистрация марширующих кубов алгоритм. Я думаю, вам нужно обратить его в контексте вашей проблемы!;)