Предположим, у меня есть физический примитив, который я собираюсь назвать «проводом», обернутый вокруг 2D-среды (как описано в этом вопросе ).
Вот иллюстрация того, как это может выглядеть:
В примере на рисунке: коробка тянется вверх (удерживается) за провод, а коробка тянет провод вниз. Объект на пружине выталкивается проволокой вниз, но также подталкивает проволоку вверх.
Хотя я еще не понял, как это реализовать, предположим, что провод будет свободно скользить по точкам, вокруг которых он намотан.
В двумерном физическом моделировании (т.е. основанном на кадре), как вы рассчитываете силы (или импульсы), чтобы применить к объектам, которые прикреплены или обернуты проволокой, как это?
Как я упоминал в своем первом вопросе , я представляю, что если бы единственным нестатическим объектом «на» проводе была масса на конце, то сила была бы идентична соединению фиксированной длины между массой и точкой до что на проводе.
источник
F = T * cos(angle between wire and spring axis)
. Какой именно угол? Также: я не думаю, что (в симуляции) есть разумный способ, чтобы провод «знал», что к этому объекту прикреплена пружина.Я определенно ценю ваше разочарование в этих проводных темах, это трудная проблема для решения. У нас никогда не получалось, чтобы столкновение работало идеально, но симуляция ограничений определенно выполнима и проста.
Проводное ограничение фактически практически идентично обычному ограничению расстояния. Вместо двух точек ограничения у вас есть n + 1 для провода с n сегментами, по одному для каждой вершины - в конечных точках якобиан идентичен ограничению расстояния (т.е. это что-то вроде d / | d |, где d - вектор между точками), а для внутренних узлов якобиан имеет вид (a / | a | - b / | b |), где a и b - векторы от узла к соседним узлам. (Извините, это было пару лет с тех пор, как я коснулся этого ...)
Вы не можете подделать это а-ля "только последний сегмент является динамическим", потому что, как в вашем примере, объекты могут взаимодействовать с другими сегментами, но вам нужно только моделировать массы на концах веревки - внутренне веревка может быть безмассовым Импульсы ограничения, рассчитанные в каждом узле, должны быть применены к объекту, который сталкивается в этом узле.
Вот несколько связанных документов:
Первые три относительно недавние и должны сильно помочь. На странице 75 нижнего документа описывается «многолинейное» ограничение, которое по сути является проводным.
Удачи :)
raigan
источник
Основная идея заключается в том, что длина веревки остается неизменной. Если его подтолкнуть вверх, вам нужно будет создать «точку разделения» там. Затем веревка определяет, с какой стороны она прикреплена, потому что она не может «расти» в этом направлении. Поскольку он прикреплен к чему-то справа, кусок веревки слева станет короче, а участок между точкой разделения и прикрепленной точкой станет немного длиннее. Затем, как сказал Найл, рассчитайте натяжение проволоки. Как бы я это сделал - это рассчитать натяжение каждого «кусочка» веревки. Затем вы можете использовать это, чтобы определить задействованные силы.
Надеюсь это поможет.
источник