C3D Collision Detection: представление нового компонента в составе C3D Toolkit

Сергей Белёв, старший математик-программист, C3D Labs, знакомит с новым компонентом C3D Toolkit — модулем C3D Collision Detection, рассказывает о том, что детектор столкновений представляет собой изнутри, и о том, какие возможности он предоставляет пользователям.

Детектор столкновений — новый компонент инструмента C3D Toolkit. В статье перечислим математические задачи, которые поставлены перед детектором, узнаем его основной функционал, рассмотрим несложный пример, демонстрирующий интерфейс модуля, и обратимся к планам и дорожной карте.

Обнаружение столкновений подразумевает постановку следующих математических задач. Первая — это возможность уметь находить пересечения между собой среди множества объектов и делать это быстро, без поиска самого пересечения. Требуется оперативно отвечать на соответствующий вопрос — «да, пересекаются» / «нет, не пересекаются». Следующая задача состоит в классификации касаний между собой этого множества объектов. Каждое касание является пересечением, но не наоборот, и важно уметь выделять этот частный случай пересечения. Помимо этого, актуальна задача поиска минимального расстояния между сборками тел и телами, а также задача классификации взаимного расположения объектов. Примером служит детектирование «вложения тел» («тело в теле»), недавно внедренное нами в ответ на многочисленные запросы пользователей. Важно отметить, что все эти задачи нужно уметь решать как в статике, так и в динамике.

1c.png

Модуль C3D Collision Detection, во-первых, реализует «эффективные» алгоритмы решения всех поставленных задач — как в статических сценах, например контроль зазоров, так и в динамических сценах, в частности контроль соударений между элементами сборки. Во-вторых, у нас есть возможность тонкой настройки всех формулируемых задач — можно даже создавать их комбинации. В-третьих, исходя из необходимости быстро детектировать касание/пересечение, применяется принципиально иной подход, чем в булевой операции: мы не строим какие-либо дополнительные объекты.

Основной функционал модуля позволяет решать все перечисленные задачи. Его первая реализация появилась в 2001 году, и более чем за 20 лет произведено множество оптимизаций для его совершенствования. Кардинальное отличие модуля от тех же булевых операций — это производительность. Он решает поставленные задачи быстро. Модуль поддерживает как полигональные сетки, так и твердые тела в граничном представлении (B-rep).

2c.png

Есть несколько особенностей, присущих данному компоненту. Модуль C3D Collision Detection позволяет добавлять копии тел (инстансы), объединять тела в компоненты таким образом, чтобы, например, не детектировать касание/пересечение между телами, входящими в один компонент. Также он позволяет гибко настраивать поиск касаний/пересечений или их отсутствие и работает как в статике, так и в динамике. Отдельное преимущество — точные и приближенные вычисления.

Наши планы и дорожная карта во многом опираются на содержание многочисленных запросов пользователей. Прежде всего, в соответствии с их пожеланиями, в ближайшее время будет создан новый API в стиле C3D Solver. К этому API будет добавлена система журналирования, также в стиле C3D Solver. На данном этапе развития детектора касание детектируется, но преимущественно в типовых случаях. Так как множество запросов относятся именно к касанию, то в рамках развития модуля мы добавим функционал, который позволит получить максимально подробную информацию о том, что происходит в сцене, анализируемой детектором. И еще одна важная деталь — это настраиваемые параметры детектирования. Новый API будет позволять задавать точность детектирования, величину проникновения зазоров и константы, которые отличают касание от пересечения. Также планируется оптимизация внутренних алгоритмов детектора (продвинутое кэширование, дальнейшее внедрение алгоритмов клиппирования и т. д.).

3c.png
Дорожная карта ориентирована на срок до конца года

Источник:  https://c3dlabs.ru/blog/products/c3d-collision-detection-predstavlenie-novogo-komponenta-yadra-c3d/

Читайте также:

Комментарии (0)

Оставьте комментарий

 
Текст сообщения*
Защита от автоматических сообщений
 
Авторизуйтесь или Зарегистрируйтесь, чтобы оставить комментарий.