среда, 15 октября 2008 г.

Пример 3: Спинакер

В данном примере будет продемонстрировано использование возможностей модуля физического моделирования Tension для создания формы спинакера. Готовая модель паруса будет перенесена в программу 3DS Max в виде NURBS поверхности.
Задача делится на три этапа: создание шаблона паруса; построение окончательной модели; экспорт.

1 Как и почему.

Рассмотрим чертеж спинакера, найденный в Интернете [Рис.1].

Его форма имитирует результат воздействия виртуальной ветровой нагрузки на плоский эластичный треугольный элемент. Однако эта форма не дает точного представления о том, как будет выглядеть парус в условиях реальной работы. Добавятся изменения, зависящие от силы ветра, условий закрепления паруса и особенностей его конструкции.
В идеале, чтобы получить модель надутого ветром спинакера, мы должны вначале создать плоскую эластичную заготовку (назовем ее шаблон 1), приложить к ней виртуальную ветровую нагрузку и получить таким образом модель готового изделия (шаблон 2), соответствующую Рисунку 1. Затем мы должны определить точки ее крепления, задать реальную ветровую нагрузку и получить окончательную модель.
В нашем примере мы используем Рисунок 1 сразу для построения шаблона 2. Мы построим такой же, как на Рисунке, контур и подберем виртуальную нагрузку, при котором высота “пуза” паруса будет соответствовать Рисунку.
Получив шаблон 2, мы зададим условия закрепления паруса, откорректируем его конструкцию, установим реальную ветровую нагрузку и получим готовую модель.

2 Построение шаблона.

Запускаем программу rZeppelin, соглашаемся с параметрами исходной сетки в стартовом диалоге.
Нажимаем на панели инструментов кнопку Edit mode, щелкаем на вершине 1 [ Рис.2].


В появившемся окне Edit Dialog [Рис.3] указываем величину изменения координаты
Y (-10000) и Z(-5000), нажимаем OK.

Затем выбираем вершину 2, указываем изменение координат: X (700), Y(-2000), Z(-500), включаем флажок Bezier vertex,в поле Size указываем 0.6 , жмем OK. То же проделываем с вершиной 3, указывая изменение координаты X (-700). Наконец, выбираем вершину 4, меняем координату Z(2500), включаем флажок Arc vertex, нажимаем ОК.
В результате у нас должна получиться фигура, изображенная на Рис. 4.


Открываем диалог установок физического моделирования Tension->Settings…
В разделе Forces (Силы) нам нужно выбрать тип виртуальной нагрузки для создания выпуклой формы паруса. Для этой цели больше подходит тип Pneumo, при котором нагрузка в каждой точке поверхности перпендикулярно ей. Установим ее значение равным 20000, обнулим значение вертикальной нагрузки (Vertical force). Значение предварительного напряжения (Pretension) оставим без изменений.
Чтобы в результате расчета контур остался неподвижным, отметим флажок Fixed borders в разделе Constraints.
Нажимаем OK, выходим из диалога.
Теперь начинаем моделировать поверхность паруса. Нажимаем на кнопку Tension на панели инструментов. При каждом нажатии наблюдаем, как заданные усилия изменяют форму сетки. Когда формообразование прекратится, опять войдем в диалог Tension->Settings…, изменим значение Calculation quality [1-100000] (Качество расчета) на 10, и несколько раз повторим операцию расчета.
Цель этих действий – улучшение качества модели. Поскольку модель симметрична относительно вертикальной оси, развернем ее так, как показано на рис. 5 , чтобы вершины 5 и 6 визуально совпали. Теперь, вращая колесико мыши для увеличения отдельных частей изображения можно наблюдать за степенью несовпадения симметричных вершин. При качестве, равном 10, несовпадение составляет приблизительно 1 мм, что равно погрешности изготовления паруса. Однако рекомендую точность шаблона сделать с запасом (до 1000), так как она повлияет на точность окончательной модели.


Закончив построение, сохраним результат как шаблон: Tension->Settings… -> Fix current shape as the template.

3 Настройки модели.

Обозначим углы паруса как статичные. Для начала в диалоге Tension->Settings… снимем флажок Fixed borders. Вершины 5 и 6 уже являются статичными и обозначены квадратиками. Последовательно щелкнем правой кнопкой мыши по вершине 1 [ Рис.2] и на вершинах 2 и 3. Две последние после этого потеряют статус статичных.
Теперь нам нужно назначить условия закрепления вершин 5 и 6.
В реальных условиях, точка 5 крепится к тросу, именуемому спинакер-шкот и закрепляемому в задней части корпуса судна; точка 6- к мачте, называемой спинакер-гик и имеющей две оттяжки для жесткого закрепления [Рис.6]. Также возможно крепление двух нижних краев паруса к спинакер-шкоту.
В первом случае точку 6 можно считать неподвижной, а точку 5 – ограниченно подвижной в плоскости xoy (поскольку спинакер-шкот почти перпендикулярен поверхности паруса). Во втором случае обе точки ограниченно подвижные в плоскости xoy.
Выберем второй вариант крепления.
Нажимаем кнопку Edit mode, щелкаем на вершине 5. В разделе Tension открывшегося диалога снимаем флажки Fixed coordinates; X, Y. Таким образом, под воздействием ветра вершина 5 сможет передвигаться в плоскости xoy, но останется неподвижной относительно оси Z.
То же проделываем с точкой 6.
Замечание: в процессе расчета мы должны будем выбрать момент, чтобы сделать эти углы опять неподвижными – то есть сымитируем натяжение спинакер-шкотов. Здесь никаких правил нет: фиксировать можно когда угодно.
Теперь мы должны усилить углы паруса. Эти участки испытывают самые большие ветровые нагрузки, и без усиления могут значительно деформироваться, стать остроугольными
Для усиления на углах паруса нашиваются дополнительные слои ткани. В программе
rZeppelin возможно сымитировать такую конструкцию. В режиме Edit mode щелкаем по угловой прямоугольной ячейке мембраны, примыкающей к точке 5. В открывшемся диалоге устанавливаем в поле Layers[1-10] значение 6, OK. Затем в примыкающих ячейках устанавливаем количество слоев 4, и, наконец, во внешних пяти ячейках устанавливаем значение 2 [Рис 7]. Таким же образом усиливаем угол 6. На углу 1 две примыкающие ячейки делаем шестислойными, шесть окружающих - двухслойными.
Теперь перейдем к окончательным настройкам в диалоге Tension.


Шаблон паруса, экспортированный в 3DSMax


Значение предварительного напряжения Pretension изменим с 0.7 до 0.99, что обозначает уменьшение от сил предварительного натяжения до минимума. Вертикальную силу оставим нулевой, а силу Pneumo уменьшим с 20000кг/м2 до 200кг/м2, что приблизительно равно давлению ветра при скорости 15-17 м/сек.
В разделе Materials: Young module Gpa устанавливаются значения модуля упругости в Гигапаскалях для материалов троса (обозначаются жирной зеленой линией) и мембраны. К сожалению, точных значений для парусной ткани и шкотов я не нашел. Поэтому в качестве материала шкотов выбрана сталь с модулем 150 Gpa, а в качестве материала паруса – кевлар с модулем порядка 100 Gpa.

4 Построение модели.

Начинаем расчет модели, нажимая кнопку Tension панели инструментов.
Когда координата X точки 5 стала равной 7400, я сделал точки 5 и 6 статичными. Одновременно я откорректировал координаты точки 6, чтобы она стала симметричной точке 5, и установил показатель Calculation quality на 10.
На расчет модели требуется больше времени, чем на шаблон. Скорость расчета тем быстрее, чем более интенсивные нагрузки прикладываются и чем сильнее величина предварительного натяжения. Поэтому шаблон был рассчитан быстро и точно. Рекомендую минуту вести расчет при Calculation quality= 10, и по две-три минуты – при Calculation quality= 100 и 1000.Этого достаточно, чтобы после экспорта в NURBS поверхность выглядела гладкой.
Следует заметить, что при отсутствии предварительного натяжения, больших значениях модуля упругости и малых силах воздействия добиться идеальной симметрии модели, как это было сделано на шаблоне, достаточно сложно. Здесь как в реальной жизни – при слабом ветре или ослабленных шкотах парусу сложно принять правильную форму. Отсюда совет – если нужна точность - “напрягайте” модель сильнее.
Результат расчета представлен на Рис 8 .


5 Экспорт в 3DSMax.

Для экспорта поверхности нажимаем кнопку Create export data панели инструментов Устанавливаем флажок в поле 3DSMax NURBS point surface, нажимаем кнопку копирования. Выходим из диалога.

Открываем 3DSMax, заходим в MAXScript->New Script, вставляем скопированный текст в открывшееся окно и затем сохраняем его. Далее выполняем: MAXScript->Run Script…
Результат выполнения скрипта представлен на Рис. 10.
6 Анализ результатов.

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




Возможные варианты.

Вариант1.



До изобретения тканевых материалов с высоким модулем упругости паруса испытывали заметные деформации в местах местного усиления или на стыках полотнищ. Не будем задаваться техническими вопросами, просто сымитируем эффект. Принципиально два момента:
1 Редактирование ребер сетки в режиме Edit mode для добавления тросов усиления.
2 Добавление вертикальных рядов сетки в местах прохождения тросов усиления, чтобы места перегиба ткани выглядели острыми. Чтобы добавить вертикальный ряд, в режиме Edit mode выделяем вершину на левом ребре от ячейки, которую хотим разделить пополам. В Edit dialog отмечаем флажок add column.

Комментариев нет: