Ця симуляція моделює шматок тканини як систему «маса-пружина»: сітку точкових мас, з'єднаних пружинами, що опираються розтягуванню, зсуву та згинанню. Тканина звисає з поперечини, надимається під вітром і драпірується по рухомій сфері. Саме така модель стоїть за одягом і прапорами у відеоіграх та анімаційних фільмах, бо вона дає переконливі складки й хвилі та працює в реальному часі.
x' = x + (x - x_prev) * damping + a * dt² — крок Верле, де x — поточна позиція, x_prev — попередня, а a — прискорення від гравітації та вітру. Корекція пружини: Δ = ((len - rest) / len) * 0.5 * k, де len — поточна відстань, rest — природна довжина, а k — жорсткість.
Модель тканини «маса-пружина» популяризував Ксав'є Прово 1995 року, додавши обмеження «суперпружності», щоб тканина більше не могла розтягуватися нереалістично далеко — цей прийом і досі застосовують у сучасних ігрових рушіях.
Тривимірна симуляція тканини на основі системи пружин: кожна точка тканини з'єднана розтяжними та вигинальними пружинами. Реалістична реакція на вітер, силу тяжіння та зіткнення з об'єктами.
Тканина моделюється як сітка точок, з'єднаних силами пружини Гука. Пружини розтягнення утримують тканину цілою; пружини вигину опираються складанню. Метод інтегрування Верле поширює сили в часі.
Клацніть і перетягніть, щоб потягнути тканину. Використовуйте повзунок вітру для розвіювання. Прикріпіть різні кути, щоб побачити, як тканина звисає та складається.
Ту ж саму систему пружних коливань, що і тканина, використовують у відеоіграх для симуляції волосся, м'язів та органічних поверхонь. В ігровій серії Assassin's Creed таким чином симулюється рух плащів і прапорів.
Ця симуляція моделює шматок тканини як систему «маса-пружина»: сітку 30 на 24 точкових мас, з'єднаних пружинами, що опираються розтягуванню, зсуву та згинанню. Тканина звисає з поперечини, а її рух у часі обчислюється методом інтегрування Верле, який виводить швидкість із різниці між поточною та попередньою позицією вузла. Після кожного кроку пружинні обмеження «розслабляються» за дванадцять ітерацій, тоді як вітер і рухома сфера штовхають тканину у переконливі складки й драпірування в реальному часі.
Позиційний розв'язувач тканини на пружинах. Три родини пружин — структурні сусіди, зсувні діагоналі та згинальні зв'язки через одну клітинку — утримують сітку разом. Інтегрування Верле просуває кожен вузол, обмеження ітеративно підтягуються до природної довжини, а вузли, що входять у сферу, проєктуються назад на її поверхню.
Повзунки задають Gravity (гравітацію), Wind X, Wind Z (вітер), Stiffness (жорсткість пружин), Damping (згасання) та Sphere radius (радіус сфери зіткнення). Перетягуйте вузол тканини лівою кнопкою миші, щоб тягнути тканину; перетягування правою кнопкою обертає камеру, а прокрутка масштабує. Reset перебудовує тканину, а Freeze призупиняє фізику.
Модель тканини «маса-пружина» популяризував Ксав'є Прово 1995 року, додавши обмеження «суперпружності», щоб тканина не могла розтягуватися нереалістично далеко — цей прийом і досі застосовують у сучасних ігрових рушіях.
Вона представляє тканину як сітку точкових мас, з'єднаних пружинами. Тут сітку з 30 на 24 вузли з'єднують структурні, зсувні та згинальні пружини, що опираються розтягуванню, зсуву й складанню. Спільна поведінка цих пружин дає хвилі, складки й драпірування, які ви бачите, без моделювання тканини як суцільного матеріалу.
Вона використовує інтегрування Верле. Кожен вузол зберігає поточну та попередню позицію, а швидкість виводиться з різниці між ними. Додається прискорення від гравітації та вітру, після чого дванадцять проходів «розслаблення» обмежень підтягують з'єднані вузли до їхньої природної довжини. Кадр поділено на п'ять фізичних підкроків для стабільності.
Gravity задає силу тяжіння, що тягне кожен вузол униз, тоді як Wind X і Wind Z прикладають горизонтальну силу з вбудованою турбулентністю. Stiffness визначає, наскільки сильно пружини опираються розтягуванню, Damping задає, скільки енергії втрачається за крок, а Sphere radius змінює розмір рухомої кулі для зіткнень, по якій драпірується тканина.
Це радше правдоподібне наближення, ніж точна модель. Моделі «маса-пружина» відтворюють якісний вигляд драпірування та надимання тканини й широко застосовуються в іграх та кіно, але вони не відтворюють справжню жорсткість матеріалу так, як методи скінченних елементів. Параметри тут підібрані для стабільного, привабливого руху, а не у виміряних фізичних одиницях.
Корекція однієї пружини може порушити сусідні, бо вузли спільні. Багаторазове «розслаблення» обмежень — тут дванадцять разів за крок — дає змогу корекціям поширюватися сіткою, тож усе полотно сходиться до узгодженої форми. Більше ітерацій дає жорсткішу, менш розтяжну тканину ціною додаткових обчислень.
Ця симуляція моделює шматок тканини за допомогою системи «маса-пружина»: сітки точкових мас, з'єднаних структурними, зсувними та згинальними пружинами, що опираються розтягуванню, зсуву й складанню. Інтегрування Верле просуває кожен вузол у часі, виводячи швидкість із різниці між поточною та попередньою позицією, а ітеративне розслаблення обмежень утримує довжини пружин близькими до їхніх природних значень. Змінюючи гравітацію, вітер, жорсткість і згасання, можна побачити, як це впливає на драпірування, хвилі й реакцію тканини на зіткнення.
Моделі тканини «маса-пружина» є основним інструментом симуляції тканини в реальному часі у відеоіграх та анімаційному кіно з середини 1990-х років — їх застосовують і в одязі персонажів у AAA-ігрових рушіях, і в струменистих плащах та прапорах блокбастерної комп'ютерної графіки.
Симуляція тканини «маса-пружина» представляє тканину як сітку точкових мас, з'єднаних віртуальними пружинами. Пружини підтримують відстані між сусідніми вузлами — структурні пружини опираються горизонтальному й вертикальному розтягуванню, зсувні пружини опираються діагональній деформації, а згинальні пружини опираються складанню. Коли прикладаються сили на кшталт гравітації та вітру, вузли рухаються, а спільна дія пружин створює реалістичні складки, хвилі й драпірування.
Натисніть лівою кнопкою миші й перетягніть безпосередньо по тканині, щоб потягнути окремі вузли й змінити форму полотна. Використовуйте праву кнопку миші, щоб обертати камеру навколо сцени, і прокручуйте колесо миші для масштабування. Повзунки на панелі зліва дозволяють у реальному часі регулювати Gravity, Wind X, Wind Z, Stiffness, Damping і радіус сфери (Sphere radius). Кнопка Reset перебудовує тканину з нуля, а Freeze призупиняє фізику, щоб можна було розглянути окремий кадр.
Інтегрування Верле — це чисельний метод, який обчислює наступну позицію частинки з її поточної та попередньої позицій, неявно кодуючи швидкість без окремого її зберігання. Формула оновлення: x_new = x + (x - x_prev) * damping + acceleration * dt^2. Оскільки швидкість ніколи не зберігається як окрема змінна, дрейф енергії мінімізується, і симуляція лишається стабільною навіть при відносно великих кроках часу, потрібних для роботи в реальному часі. Ця симуляція ділить кожен кадр анімації на п'ять кроків Верле для додаткової стабільності.
Сітка з 30 на 24 вузли використовує три родини пружин, щоб імітувати механічні властивості тканого полотна. Структурні пружини з'єднують безпосередньо сусідні вузли по горизонталі й вертикалі, не даючи тканині розтягуватися вздовж ниток. Зсувні пружини з'єднують діагональних сусідів, опираючись внутрішньоплощинному зсуву, через який сітка могла б скластися у паралелограм. Згинальні пружини пропускають один вузол у кожному напрямку осей і опираються різкому складанню тканини вздовж одного краю. Разом три родини пружин відтворюють характерну ієрархію жорсткості справжніх тканих текстилів.
Кожна ітерація розслаблення обмежень перевіряє, чи не опинився якийсь вузол тканини всередині рухомої сфери. Якщо відстань від вузла до центру сфери менша за радіус сфери плюс невеликий відступ (0.15 одиниці), вузол проєктується радіально назовні на поверхню сфери. Оскільки ця перевірка виконується всередині циклу з дванадцяти ітерацій розслаблення, корекція поширюється на сусідні вузли через пружинні обмеження, дозволяючи тканині плавно драпіруватися по сфері, а не проходити крізь неї.
Симуляція переконливо відтворює якісну поведінку справжньої тканини, але є наближенням, а не строгою фізичною моделлю. Справжню механіку тканини краще описують континуальні методи скінченних елементів, що враховують виміряні властивості матеріалу, такі як модуль Юнга та коефіцієнт Пуассона. Моделі «маса-пружина» можуть демонструвати числові артефакти, як-от небажану суперпружність або нестабільність при високій жорсткості. Стаття Ксав'є Прово 1995 року вирішувала проблему суперпружності, обмежуючи видовження пружини щонайбільше 10% понад природну довжину — цей евристичний прийом ця симуляція не застосовує, обираючи інтерактивну чутливість замість строгої точності.
Основоположну роботу з тканини «маса-пружина» для комп'ютерної графіки опублікував Ксав'є Прово 1995 року в статті «Deformation Constraints in a Mass-Spring Model to Describe Rigid Cloth Behaviour». Прово запропонував структуру з трьох родин пружин і крок корекції після інтегрування, що запобігає нереалістичному розтягуванню. Раніша робота Бріна, Гауса та Возні (1994) моделювала ткане полотно за допомогою енергій взаємодії частинок, але формулювання Прово з пружинами стало домінувати завдяки своїй простоті та придатності для реального часу. Position-Based Dynamics — наступний підхід Мюллера та ін. (2007) — ще більше покращив стабільність і тепер поширений в ігрових рушіях.
Симуляція відтворює кілька фізично спостережуваних явищ у текстилі: катенарну криву, яку утворює тканина, підвішена в двох чи більше нерухомих точках, те, як спричинені вітром коливання поширюються поперечними хвилями по полотну, анізотропну жорсткість тканого матеріалу (міцнішого вздовж ниток, ніж по діагоналі), та контактне драпірування, яке спостерігається, коли тканина спадає на опуклий об'єкт. Ці явища мають значення для дизайну одягу, тканинних архітектурних конструкцій, інженерії парашутів і оснащення вітрил.
Поширене хибне уявлення полягає в тому, що вища жорсткість завжди дає реалістичніший результат. У симуляціях «маса-пружина» дуже високі значення жорсткості роблять систему чисельно жорсткою — пружини коливаються настільки швидко, що інтегратору потрібні надзвичайно малі кроки часу, щоб лишатися стабільним, а при фіксованому кроці симуляція вибухає або неконтрольовано вібрує. Справжня тканина жорстка вздовж ниток, але значно піддатливіша поза площиною; мистецтво налаштування симуляції тканини полягає в тому, щоб обрати значення жорсткості, які виглядають правильно й лишаються стабільними при обраному кроці часу, а не в максимізації параметра жорсткості.
Сучасні застосування охоплюють кілька галузей. Ігрові рушії, такі як Unreal Engine та Unity, включають позиційні або GPU-прискорені розв'язувачі тканини для одягу персонажів, прапорів та м'яких об'єктів. Кіно- та VFX-індустрія використовує високоточні розв'язувачі тканини на основі скінченних елементів (наприклад, Fizt від Pixar та його наступники) для симуляції костюмів в анімаційних фільмах. В аерокосмічній галузі симуляції розгортання парашутів і подушок безпеки використовують моделі тканини з взаємодією рідини й конструкції. Інструменти САПР для дизайну одягу (CLO3D, Marvelous Designer) дозволяють дизайнерам драпірувати й підганяти цифровий одяг ще до розкрою тканини, заощаджуючи матеріал і скорочуючи цикли прототипування.
Активні напрями досліджень включають нейронні симулятори тканини, які навчаються поведінки полотна на наборах даних скінченних елементів і працюють на порядки швидше під час висновування, уможливлюючи високоточну симуляцію одягу в реальному часі на мобільних пристроях. Диференційовна симуляція тканини — де градієнти проходять крізь фізичний розв'язувач — дозволяє градієнтну оптимізацію викройок одягу, параметрів матеріалу та стратегій маніпулювання текстилем роботами. Дослідники також вивчають методи підпростору, які стискають динаміку тканини в простір низької розмірності, вивчений з офлайн-симуляцій, а також об'єднання тканини з волоссям, рідиною та твердими тілами в єдиних симуляційних середовищах для віртуальної примірки та застосунків доповненої реальності.