Алгоритм
Вы ищете способ определить, лежит ли точка внутри вогнутой оболочки. Этого можно добиться, расширив алгоритм Point in Polygon до трех измерений.
Идея состоит в том, что вы проводите луч через точку и вычисляете пересечения с корпусом (полигонами) вашего объема. Если количество пересечений луча и треугольника по обе стороны от точки нечетно, она лежит внутри объема.
Если производительность является проблемой, упрощенные ограничивающие объемы все же могут быть полезны. Если вычисление пересечений лучей и многоугольников требует больших затрат, вы должны сначала проверить, лежит ли точка внутри аппроксимированной оболочки для сетки, которая имеет более низкую стоимость производительности (например, ограничивающие рамки, выпуклые оболочки). Таким образом, вы можете сбросить баллы раньше.
Вот еще одно подробное объяснение алгоритма Point in Polygon и реализация на C:
Выбор правильной среды программирования
Я не уверен, почему именно вы хотите использовать XNA или даже Unity для этой задачи. Конечно, оба предлагают возможность загрузки 3D-моделей, но определенно есть более простые и эффективные альтернативы.
Для вышеупомянутого алгоритма вам нужен доступ к позициям вершин и определениям треугольников модели, не более того. Если FBX не является обязательным требованием, я бы посоветовал изучить формат файла Wavefront OBJ. Это текстовый формат, простой для понимания/разбора и поддерживаемый практически всеми профессиональными приложениями для 3D-моделирования.
Если FBX требуется, вы все равно можете попытаться проанализировать их самостоятельно или просто использовать существующий 3D-конвертер.
person
Lucius
schedule
23.01.2013