Движение "лицом вперед"22.10.2024, 16:38. Показов 7552. Ответов 97
Метки нет (Все метки)
Добрый день
Есть 3D сцена, в процессе симуляции объекты движутся под действием приложенных сил. Объект может иметь опцию типа "face forward" которая заставляет его по(д)ворачиваться по направлению движения, т.е. - объект движется со скоростью v, известен вектор face. При необходимости поворачиваем объект так чтобы эти направления совпадали. При плавных изменениях вектора скорости все хорошо. И тут мелкая неприятность: а если объект был неподвижен (или почти неподвижен)? Очевидно разворот должен занять некоторое время, и как он должен происходить? Объект сначала делает "поворот на месте" и только потом движется? Или начинает двигаться лицом вперед и по ходу дела поворачивается? И просто "задать время поворота" наверно не очень хорошо, оно будет никак не связано со скоростью. Как бы Вы управляли объектом? Если нужны доп опции - то какие (чем меньше тем лучше). Или все должно делаться автоматычно? Спасибо
0
|
|
| 22.10.2024, 16:38 | |
|
Ответы с готовыми решениями:
97
Движение вперёд
Движение объекта вперед/назад по таймеру |
| 17.11.2024, 14:34 [ТС] | ||
|
Не по теме: Кстати, очень верное наблюдение: задача гораздо ближе к ТАУ чем к физике ![]() Опять возникает тот же эффект: ну вот есть же очевидный, напрашивающийся, "бросающийся в глаза" (и.т.п) вариант, пусть не решение. Почему его никто не предлагает? Не могу объяснить
0
|
||
|
27 / 63 / 4
Регистрация: 10.06.2023
Сообщений: 1,019
|
|
| 17.11.2024, 15:16 | |
|
По-моему, мы потеряли объект разговора. Продолжать можно только, если появиться конкретный пример движения: движущийся предмет, траектория или цель движения, система организации движения и др. условия движения. Все остальное необходимое можно сконструировать. Но ограничиться, просто сказав " чайник" - недостаточно.
0
|
|
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,820
|
|
| 17.11.2024, 22:19 | |
|
Даже если просто землю заменить на космос, явления движения очень сильно меняются, это даже по голливудским фильмам относительно верно осознаётся. При этом очень важно понимать, а не не долбить всем мозги на форуме.
0
|
|
| 18.11.2024, 22:01 [ТС] | ||
|
Может смущает что "у чайника нет двигателя/колес/ног и двигаться он не может!". Ну так это просто (популярная) тестовая 3D модель, юзер заменит ее на нужную. Никому нет дела какую математику/модель Вы реализуете "под капотом". Никаких ограничений здесь не налагается. Мне нравится автобус, трехколесный велик тоже годится, а "маневровый двигатель" - просто отлично, смачно звучит. Но в любом случае это уже часть решения, к постановке отношения не имеет. Мне неловко читать Ваши неуклюжие отмазки про "конкретные (физические) ограничения", "систему организации движения", космос и Голливуд.
0
|
||
|
27 / 63 / 4
Регистрация: 10.06.2023
Сообщений: 1,019
|
|
| 19.11.2024, 09:50 | |
|
Понятнее не стало! А зачем чайник движется! Существует ли какая-то цель движения? Или это что-то вроде броуновского движения? Не хватает конкретики!
0
|
|
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
||
| 19.11.2024, 11:15 | ||
|
0
|
||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
||
| 19.11.2024, 13:10 | ||
|
Попробуем начать сначала. Тема: Движение "лицом вперед" Вопрос: Объект сначала делает "поворот на месте" и только потом движется? Или начинает двигаться лицом вперед и по ходу дела поворачивается? Ответ: Зависит от. Если это автобус, то движется по окружности, пока вектор face не будет направлен на цель. Дальше движется прямо. Радиус окружности и скорость выбираем произвольно (любой радиус и любая скорость одинаково хорошо подходят под условия задачи). Законы физики игнорируем. Если это колобок в пакмане, то сначала разворачивается на месте, затем движется прямо. Угловую скорость поворота и скорость движения выбираем произвольно (см. выше).
0
|
||
|
27 / 63 / 4
Регистрация: 10.06.2023
Сообщений: 1,019
|
|
| 19.11.2024, 14:07 | |
|
Очень не хотелось подводить черту под обсуждением, которое могло бы быть интересным, но четкой постановки задачи или вопроса я не вижу. Пытающихся что-то сказать, упрекают в попытках конкретизировать задачу. Естественно, что попытки ответить на не сформулированный вопрос превращаются в объект критики.
0
|
|
| 20.11.2024, 11:53 [ТС] | |||
|
Я-то рассчитываю/хочу чтобы обсуждалось это (вопросы выше). Понятно что понадобится какая-то "модель" поведения объекта - ну так предлагайте, это и нужно. Но вместо этого "а куда/зачем идет чайник?" Ну елы-палы ![]()
0
|
|||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
||||
| 20.11.2024, 12:54 | ||||
|
Если это сумма всех сил, действующих на тело, то позицию тела можно вычислить в любой момент. При этом, какой частью вперёд будет двигаться тело, от нас не зависит. Если это сила тяги двигателя, то нужно описание модели и чертёж конкретного тела.
0
|
||||
| 21.11.2024, 15:59 [ТС] | ||||||||
|
- (на каждом шаге) находим угол между текущими вектором face и силы F. Если нулевой - просто применяем силу, иначе поворачиваем face, максимально на угол dAmax (заданный параметром) до тех пор пока не достигнем совпадения. Сила всегда прилагается по направлению face. Если что не так - поправьте. Теперь чем не нравится. Никак не учитывается (текущая) скорость v. Нормальное приложение силы (как движком так и без него)
Заметим что можно достичь поворота используя вектор силы (без "волевых" поворотов) просто направив силу перпендикулярно скорости
0
|
||||||||
|
27 / 63 / 4
Регистрация: 10.06.2023
Сообщений: 1,019
|
|
| 21.11.2024, 18:19 | |
|
Наконец-то, похоже на постановку задачи. Отсутствует или я не увидел - цель движения.
0
|
|
| 22.11.2024, 15:18 [ТС] | ||||
|
Не по теме:
А зачем вообще делаются компьютерные анимации? Ну хотя бы: цель чайника - доставить свежий чай (из можжевеловых веточек) какому-нибудь "ежику в тумане". Для 3D артистов/дизайнеров это может быть предметом тщательного изучения/обсуждения - но не для нас. А если имелось ввиду нечто другое - так извольте пояснить.Постановка никак не менялась. Заметим что решение (пост #33 что я цитирую в посте #71) полностью в рамках темы, никаких запросов на "большую физику" там нет. И это правильно. Нужен "контроллер" который не противоречит физике, здравому смыслу и житейскому опыту. Научными проблемами я не занимаюсь
0
|
||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
|||||
| 22.11.2024, 16:37 | |||||
|
В первом приближении (туповатый ИИ) будет менять угол между текущими вектором face и силы F пропорционально углу межу face и направлением на цель. Для выбора скорости нужна какая-то мотивация. Иначе, подойдёт любая скорость. Есть два варианта. Либо мы накладываем на чайник физический запрет движения не носиком вперёд (например, большое "боковое сопротивление") или смиряемся с тем, что чайник может двигаться боком. Либо мы забиваем на законы физики и задаём законы движения чайника (не используем силы, меняем непосредственно скорость).
0
|
|||||
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,820
|
|
| 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
|
||||
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,820
|
||
| 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 / 63 / 4
Регистрация: 10.06.2023
Сообщений: 1,019
|
|
| 23.11.2024, 10:04 | |
|
Дали бы ссылку, где это все изложено целиком. Это похоже на часть описания: только запись примера движения и не поощряемая ссылка на поиск.
0
|
|
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,820
|
|
| 23.11.2024, 10:13 | |
|
0
|
|
| 24.11.2024, 10:01 [ТС] | ||
|
- прилагаем силу в нужном направлении, это меняет скорость. И поворачиваем face на угол между старым и новым векторами скорости. Что за "нужное направление" - надо еще разобраться, но уже хорошо заметен пробой: угол поворота может быть слишком мал или вообще нулевой Заметим что при "нормальном" движении (уже носиком вперед, скорость меняется плавно) эта схема отработает хорошо (впрочем как и предыдущая).
0
|
||
| 24.11.2024, 10:01 | |
|
Движение квадрата по горизонтальной прямой вперёд-назад Кнопка на движение вперед (Игра под Андроид) Движение по списку вперёд/назад, доступ к текущему элементу Графика, ООП: движение креста по синусоиде слева направо, вперед и назад Выдача кредита физическим лицом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|