Движение "лицом вперед"22.10.2024, 16:38. Показов 8507. Ответов 97
Метки нет (Все метки)
Добрый день
Есть 3D сцена, в процессе симуляции объекты движутся под действием приложенных сил. Объект может иметь опцию типа "face forward" которая заставляет его по(д)ворачиваться по направлению движения, т.е. - объект движется со скоростью v, известен вектор face. При необходимости поворачиваем объект так чтобы эти направления совпадали. При плавных изменениях вектора скорости все хорошо. И тут мелкая неприятность: а если объект был неподвижен (или почти неподвижен)? Очевидно разворот должен занять некоторое время, и как он должен происходить? Объект сначала делает "поворот на месте" и только потом движется? Или начинает двигаться лицом вперед и по ходу дела поворачивается? И просто "задать время поворота" наверно не очень хорошо, оно будет никак не связано со скоростью. Как бы Вы управляли объектом? Если нужны доп опции - то какие (чем меньше тем лучше). Или все должно делаться автоматычно? Спасибо
0
|
|
| 22.10.2024, 16:38 | |
|
Ответы с готовыми решениями:
97
Движение вперёд
Движение объекта вперед/назад по таймеру |
| 17.11.2024, 14:34 [ТС] | ||
|
Не по теме: Кстати, очень верное наблюдение: задача гораздо ближе к ТАУ чем к физике ![]() Опять возникает тот же эффект: ну вот есть же очевидный, напрашивающийся, "бросающийся в глаза" (и.т.п) вариант, пусть не решение. Почему его никто не предлагает? Не могу объяснить
0
|
||
|
27 / 64 / 4
Регистрация: 10.06.2023
Сообщений: 1,063
|
|
| 17.11.2024, 15:16 | |
|
По-моему, мы потеряли объект разговора. Продолжать можно только, если появиться конкретный пример движения: движущийся предмет, траектория или цель движения, система организации движения и др. условия движения. Все остальное необходимое можно сконструировать. Но ограничиться, просто сказав " чайник" - недостаточно.
0
|
|
|
821 / 580 / 75
Регистрация: 20.09.2014
Сообщений: 3,827
|
|
| 17.11.2024, 22:19 | |
|
Даже если просто землю заменить на космос, явления движения очень сильно меняются, это даже по голливудским фильмам относительно верно осознаётся. При этом очень важно понимать, а не не долбить всем мозги на форуме.
0
|
|
| 18.11.2024, 22:01 [ТС] | ||
|
Может смущает что "у чайника нет двигателя/колес/ног и двигаться он не может!". Ну так это просто (популярная) тестовая 3D модель, юзер заменит ее на нужную. Никому нет дела какую математику/модель Вы реализуете "под капотом". Никаких ограничений здесь не налагается. Мне нравится автобус, трехколесный велик тоже годится, а "маневровый двигатель" - просто отлично, смачно звучит. Но в любом случае это уже часть решения, к постановке отношения не имеет. Мне неловко читать Ваши неуклюжие отмазки про "конкретные (физические) ограничения", "систему организации движения", космос и Голливуд.
0
|
||
|
27 / 64 / 4
Регистрация: 10.06.2023
Сообщений: 1,063
|
|
| 19.11.2024, 09:50 | |
|
Понятнее не стало! А зачем чайник движется! Существует ли какая-то цель движения? Или это что-то вроде броуновского движения? Не хватает конкретики!
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||
| 19.11.2024, 11:15 | ||
|
0
|
||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||
| 19.11.2024, 13:10 | ||
|
Попробуем начать сначала. Тема: Движение "лицом вперед" Вопрос: Объект сначала делает "поворот на месте" и только потом движется? Или начинает двигаться лицом вперед и по ходу дела поворачивается? Ответ: Зависит от. Если это автобус, то движется по окружности, пока вектор face не будет направлен на цель. Дальше движется прямо. Радиус окружности и скорость выбираем произвольно (любой радиус и любая скорость одинаково хорошо подходят под условия задачи). Законы физики игнорируем. Если это колобок в пакмане, то сначала разворачивается на месте, затем движется прямо. Угловую скорость поворота и скорость движения выбираем произвольно (см. выше).
0
|
||
|
27 / 64 / 4
Регистрация: 10.06.2023
Сообщений: 1,063
|
|
| 19.11.2024, 14:07 | |
|
Очень не хотелось подводить черту под обсуждением, которое могло бы быть интересным, но четкой постановки задачи или вопроса я не вижу. Пытающихся что-то сказать, упрекают в попытках конкретизировать задачу. Естественно, что попытки ответить на не сформулированный вопрос превращаются в объект критики.
0
|
|
| 20.11.2024, 11:53 [ТС] | |||
|
Я-то рассчитываю/хочу чтобы обсуждалось это (вопросы выше). Понятно что понадобится какая-то "модель" поведения объекта - ну так предлагайте, это и нужно. Но вместо этого "а куда/зачем идет чайник?" Ну елы-палы ![]()
0
|
|||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||||
| 20.11.2024, 12:54 | ||||
|
Если это сумма всех сил, действующих на тело, то позицию тела можно вычислить в любой момент. При этом, какой частью вперёд будет двигаться тело, от нас не зависит. Если это сила тяги двигателя, то нужно описание модели и чертёж конкретного тела.
0
|
||||
| 21.11.2024, 15:59 [ТС] | ||||||||
|
- (на каждом шаге) находим угол между текущими вектором face и силы F. Если нулевой - просто применяем силу, иначе поворачиваем face, максимально на угол dAmax (заданный параметром) до тех пор пока не достигнем совпадения. Сила всегда прилагается по направлению face. Если что не так - поправьте. Теперь чем не нравится. Никак не учитывается (текущая) скорость v. Нормальное приложение силы (как движком так и без него)
Заметим что можно достичь поворота используя вектор силы (без "волевых" поворотов) просто направив силу перпендикулярно скорости
0
|
||||||||
|
27 / 64 / 4
Регистрация: 10.06.2023
Сообщений: 1,063
|
|
| 21.11.2024, 18:19 | |
|
Наконец-то, похоже на постановку задачи. Отсутствует или я не увидел - цель движения.
0
|
|
| 22.11.2024, 15:18 [ТС] | ||||
|
Не по теме:
А зачем вообще делаются компьютерные анимации? Ну хотя бы: цель чайника - доставить свежий чай (из можжевеловых веточек) какому-нибудь "ежику в тумане". Для 3D артистов/дизайнеров это может быть предметом тщательного изучения/обсуждения - но не для нас. А если имелось ввиду нечто другое - так извольте пояснить.Постановка никак не менялась. Заметим что решение (пост #33 что я цитирую в посте #71) полностью в рамках темы, никаких запросов на "большую физику" там нет. И это правильно. Нужен "контроллер" который не противоречит физике, здравому смыслу и житейскому опыту. Научными проблемами я не занимаюсь
0
|
||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|||||
| 22.11.2024, 16:37 | |||||
|
В первом приближении (туповатый ИИ) будет менять угол между текущими вектором face и силы F пропорционально углу межу face и направлением на цель. Для выбора скорости нужна какая-то мотивация. Иначе, подойдёт любая скорость. Есть два варианта. Либо мы накладываем на чайник физический запрет движения не носиком вперёд (например, большое "боковое сопротивление") или смиряемся с тем, что чайник может двигаться боком. Либо мы забиваем на законы физики и задаём законы движения чайника (не используем силы, меняем непосредственно скорость).
0
|
|||||
|
821 / 580 / 75
Регистрация: 20.09.2014
Сообщений: 3,827
|
|
| 22.11.2024, 18:36 | |
|
Цель движения TargetPosition, TargetSpeed, TargetForce - это результат вычисления регулятора, или ИИ по-простому.
Но еще очень важно, что цели подчинены другу другу вот таким интересным образом: TargetPosition является для нас конечной целью, но ей подчинены две другие цели - TargetSpeed, TargetForce. При этом цели TargetSpeed подчинена цель TargetForce. Подчинение означает, что цель будет достигаться, но при условии, что будет сначала достигнута подчиненная цель. То есть во времени сначала достигается цель TargetForce, мгновенно (Force = TargetForce), потом через некоторое время достигается скорость и потом достигается положение. Эту забавную и сложную для нуба задачку решают два уравнения регулятора движения, приведенные выше. Это уравнения системы подчиненного регулирования. https://yandex.ru/search/?clid... u&lr=10761 Пример подчиненного регулирования: капитану гребной лодки нужно переместиться из точки А в точку Б, он может командовать двумя рядами гребцов, чтобы поворачивать налево или направо или плыть вперёд. У капитана есть TargetPosition, данный ему из адмиралтейской ставки. Он должен задать скорость TargetSpeed криками команде гребцов. А галерные рабы дают команды своим мышцам TargetForce. Капитан даёт команды "Не грести!" (TargetSpeed = 0), "Гребите медленно!" (TargetSpeed = 20), "Гребите быстро!" (TargetSpeed=100).
0
|
|
| 22.11.2024, 21:54 [ТС] | ||||
|
Мои соображения. Нужна "модель", иначе в этих 3 соснах-векторах легко заблудиться. Напр такой тезис: объект (движущийся "лицом вперед") имеет "руль" (ну или умеет рулить). Вот правда дальше далеко не все ясно
0
|
||||
|
821 / 580 / 75
Регистрация: 20.09.2014
Сообщений: 3,827
|
||
| 23.11.2024, 09:06 | ||
|
Igor3D, трудно самому придумать эту теорию, которая называется ТАУ (теория автоматического управления).
Вот вам вся математика физики движения в гугл-таблице: https://docs.google.com/spread... sp=sharing 1. Сначала чайник поворачивается, стартуя с угла -10 градусов до угла 360 градусов с лимитированным крутящим моментом и угловой скоростью. 2. На 25 секунде TargetAngle внезапно меняется с 360 на 300 и чайнику приходится снова включать моторы, что повернуться чуть обратно. 3. На 50-й секунде на чайник начинает действовать внешний крутящий момент ExternalTorque и действует до 75-й секунды. Чайник чуть тряхнуло, но он удержался на позиции , благодаря умному регулятору. Ниже под таблицей можно посмотреть графики. Вы можете обратить внимание, что волшебным образом Speed стремится к TargetSpeed, а Angle к TargetAngle, ну а про Torque и TargetTorque и говорить нечего, они у нас просто совпадают. Я всего лишь использовал уравнения движения и уравнения регулятора отсюда: Регулятор скорости немного несовершенный, поэтому мы видим при t=50...75 чайник немного отклоняет от позиции. Это выглядит как будто сила сдвигает тело, но оно пытается удержать позицию, но не может, но и не сносит его совсем. Это называют статической ошибкой регулятора. Можно немного усовершенствовать регулятор (это не является тайной как) и тогда будет вообще чисто, то есть чайник тряхнет, отклонится положение, но он рано или поздно вернётся на заданное положение. Но мне кажется это вам не нужно, это добавит некоторую изюминку в ваш движок или что у вас там. Добавлено через 10 минут Ну и посмотрите на график Torque=TargetTorque. Эка его колбасит, этот крутящий момент. Разве можно представить, чтобы вы такое сообразили с нуля?
0
|
||
|
27 / 64 / 4
Регистрация: 10.06.2023
Сообщений: 1,063
|
|
| 23.11.2024, 10:04 | |
|
Дали бы ссылку, где это все изложено целиком. Это похоже на часть описания: только запись примера движения и не поощряемая ссылка на поиск.
0
|
|
|
821 / 580 / 75
Регистрация: 20.09.2014
Сообщений: 3,827
|
|
| 23.11.2024, 10:13 | |
|
0
|
|
| 24.11.2024, 10:01 [ТС] | ||
|
- прилагаем силу в нужном направлении, это меняет скорость. И поворачиваем face на угол между старым и новым векторами скорости. Что за "нужное направление" - надо еще разобраться, но уже хорошо заметен пробой: угол поворота может быть слишком мал или вообще нулевой Заметим что при "нормальном" движении (уже носиком вперед, скорость меняется плавно) эта схема отработает хорошо (впрочем как и предыдущая).
0
|
||
| 24.11.2024, 10:01 | |
|
Движение квадрата по горизонтальной прямой вперёд-назад Кнопка на движение вперед (Игра под Андроид) Движение по списку вперёд/назад, доступ к текущему элементу Графика, ООП: движение креста по синусоиде слева направо, вперед и назад Выдача кредита физическим лицом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|