Ссылка на вокселяцию, размещенную @Alexandre C. выглядит хорошо.
Вот краткий обзор того, как мы решили эту проблему при преобразовании правильных моделей квадрантов/треугольников в кубический массив индексов значений преломления/эпсилона для моделирования фотоники/ЭМ.
- Создайте дерево BSP вашей сцены. (Да, действительно)
- Итерации через X, Y, Z через вашу модель или пространство для решения. (Интервал в каждой оси должен быть равен требуемым размерам вокселей.)
В каждой точке вашего цикла x/y/z проверьте точку на дереве BSP. Если он находится внутри объекта, создайте вокзал в этой точке и установите его атрибуты (цвет, координаты текстур и т. Д.) На основе исходной модели (как указано на вашем узле BSP). (Совет оптимизации: Если ваш внутренний цикл находится по оси Y (вертикальная ось), и вы создаете ландшафт или ориентированную на XZ поверхность, вы можете выйти из цикла Y всякий раз, когда вы создаете воксел.)
Сохранить
- Прибыль!
Строительство BSP - единственная полузасушливая часть (и это намного проще, чем на первый взгляд), но она была задокументирована ying-yang по всему Интернету. Это будет работать практически для любой формы модели, а также даст вам хорошее дерево, которое вы можете использовать для обнаружения столкновений и определения видимости, среди прочего.
Также обратите внимание, что весь этот процесс должен выполняться во время компиляции или с помощью специального инструмента (который, очевидно, будет создавать файл, содержащий поле дерева и воксела, которое вы будете использовать во время выполнения). Если вы используете XNA, довольно легко импортировать что-либо в конвейер контента.
Возможно, вам будет полезно указать, что вы подразумеваете под ["quad"] (http://en.wikipedia.org/wiki/Quad). – 2010-11-27 18:16:21
Некоторые быстрые google для 'voxelization' показывают много вещей. Посмотрите на это http://www.cs.princeton.edu/~min/binvox/ – 2010-11-27 18:21:47
@Sven в графике, `quad` обычно означает форму, определенную четырьмя копланарными вершинами. – 2010-11-27 20:30:59