Ссылка на вокселляцию, опубликованная @Alexandre C., выглядит хорошо.
Вот краткий обзор того, как мы решили эту проблему при преобразовании регулярных моделей квадрациклов / треугольников в кубический массив показателей преломления / эпсилона для моделирования фотоники / ЭМ.
- Создайте BSP дерево вашей сцены. (Да, действительно)
- Итерация через регулярные интервалы по X, Y, Z по всей вашей модели или области решения.(Интервал по каждой оси должен быть равен желаемым размерам вокселей.)
В каждой точке вашего цикла x / y / z отметьте точку относительно дерева BSP.Если он внутри сущности, создайте воксель в этой точке и установите его атрибуты (цвет, координаты текстуры и т. Д.) На основе исходной модели (на которую ссылается ваш узел BSP). ( Совет по оптимизации : Если ваш самый внутренний цикл находится вдоль оси Y (вертикальная ось), и вы создаете ландшафт или поверхность, ориентированную на XZ, вы можете выйти из цикла Y при каждом созданиивоксел.)
Сохранить
- Прибыль!
Построение BSP - единственная сложная часть(и это намного проще, чем кажется на первый взгляд), но это было задокументировано во времена инь-ян по всей сети.Это будет работать практически для любой формы модели, а также даст вам хорошее дерево, которое вы можете использовать, среди прочего, для обнаружения столкновений и определения видимости.
Также обратите внимание, что весь этот процесс должен происходить во время компиляции илииспользуя специальный инструмент (который, очевидно, создаст файл, содержащий дерево и поле вокселей, которые вы будете использовать во время выполнения).Если вы используете XNA, довольно просто импортировать что-либо в конвейер контента.