Моделирование движения кабельной линии подводного аппарата в пакете
Blender Game Engine
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. Приборостроение. 2017. № 3
51
Моделирование кабеля.
В Интернете имеются примеры моделирования
протяженных гибких объектов (цепей, веревок и пр.), выполненные в пакете
BGE
. Как правило, в таких примерах для разработки ПО используют библиотеку
BPY
(речь о которой пойдет далее), их исходный код недоступен, что делает не-
возможным практическое применение этих примеров.
Рассмотрим модель кабеля ТНПА, выполненную авторами в среде разра-
ботки пакета
BGE
(версия 2.76).
Кабель моделируется в виде последовательности одинаковых объектов
(далее — элементов кабеля), представляющих собой жесткие нерастяжимые ци-
линдрические стержни конечной длины и диаметра, связанные между собой шаро-
выми шарнирами, которые обеспечивают поворот в точке связи вокруг трех пер-
пендикулярных осей (3D-шарниры). Априори предполагается, что линейные пере-
мещения в 3D-шарнирах отсутствуют. Для моделирования эффектов запутывания
кабеля разрешены соударения элементов кабеля с другими объектами, в том числе
соударения друг с другом. Также имеется специальный объект (
Root
), играющий
роль порождающего элемента при создании (разматывании) кабеля и поглощаю-
щего элемента при его наматывании. Для объекта
Root
задана запрещающая маска
соударений, т. е. этот объект не участвует в соударениях с остальными элементами
кабеля и другими объектами сцены. Связь кабеля с ТНПА моделируется 3D-
шарниром, соединяющим первый в последовательности элемент кабеля с объектом
сцены, выполняющим роль ТНПА, а связь кабеля с носителем — аналогичным 3D-
шарниром, соединяющим последний элемент кабеля с объектом
Root
.
Особенность рассматриваемой модели — в качестве объекта
Root
был ис-
пользован элемент малой длины — по сравнению с номинальной длиной обыч-
ного элемента кабеля. Это позволило существенно снизить нагрузки, возника-
ющие в 3D-шарнирах при создании или уничтожении очередного элемента и
устранить явление разрушения кабеля в результате разрыва связей между эле-
ментами в процессе разматывания или наматывания кабеля.
Рассмотрим алгоритмы, моделирующие поэлементное разматывание и
наматывание кабеля. Назовем «концевым» 3D-шарнир, связывающий объект
Root
с кабелем, элементом
Old
— последний элемент кабеля. Таким образом,
«концевой» шарнир в текущий момент времени связывает объект
Root
с эле-
ментом
Old
. Разматывание очередного элемента кабеля реализуется в несколько
этапов. На первом этапе объект
Root
поворачивается вокруг «концевого» шар-
нира в положение, при котором продольные оси объекта
Root
и элемента
Old
коллинеарны. С помощью операции мгновенного копирования объекта
Root
создается новый объект (
New
), полностью тождественный объекту
Root
по раз-
мерам, позиции и ориентации. Создается 3D-шарнир, связывающий объект
New
с элементом
Old
, и удаляется «концевой» шарнир. Объект
New
перемещается на
расстояние всей длины вдоль продольной оси объекта
Root
, при этом происхо-
дит соответствующее перемещение и всего кабеля, рассчитываемое в пакете
BGE
в автоматическом режиме; вновь создается «концевой» шарнир между объекта-
ми
Root
и
New
; первый этап завершен (рис. 1).