• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

Новости:

Форум Quest3D восстановлен!

Главное меню

движение в направлении курсора

Автор Droni, 29 мая 2011, 17:55:34

« назад - далее »

Droni

#15
Цитата: dfx от 01 июня 2011, 20:19:09
К вектору позиции добавляй дельта-вектор * скорость * TC и объект будет двигаться в сторону указателя.
Незнаю насколько это оптимально, но дельта вектор можно найти вычитанием из спроэцированной на плоскость позиции курсора, позицию модели, а потом нормализовав получившийся вектор.
dfx, я правильно собрал??? И что с этим сделать, или куда подсоединить, чтобы модель двигалась в направлении курсора??? я куда только не тыкал эту конструкцию((((((

dfx

#16
Цитироватьdfx, я правильно собрал??? И что с этим сделать, или куда подсоединить, чтобы модель двигалась в направлении курсора??? я куда только не тыкал эту конструкцию((((((

Сама последовательность вычислений правильная. Но невидно куда ты ее в итоге прикручиваешь.

Смотри вложение - там таже самая конструкция, что и у тебя, но объект движется в указанную точку.
пс. Коменты было лень проставлять, сори.

Droni

Я разобрался с примером: в нем, в итоге, Position vector - это конечное положение 3d объекта. А проблема в том, что к newtonBody не подсоединишь его также к MatrixMotion. Мой newtonBody передвигается с помощью Set Speed (vector). И я не могу понять, как в такой ситуации задать направление двмжения newtonBody.

Ruslan

Смотри команды, в канале Newton Body Command

dfx

значит просто передавай дельту в сетспид. Должно работать. Я завтра посмотрю, что там с ньютоном.

Droni

если передавать в  сет спид, то не работает. А если set/add force, то объект вначале двигается в нужном направлении, а потом, при изменении позиции мыши, ведет себя неодекватно(((

Ruslan

#21
1)  Что бы объект "парил" в воздухе, и не терся об ленд, ему можно назначить силу,  действующую вверх, обратную гравитации.
2)  Объект прежде чем двигать опять же это применить силу в нужном направлении, можно повернуть на относительный угол. (все это есть в Newton Body Command)
Угол между векторами можно узнать с помощью Dot product

Вес естественно имеет большое значение, так что нужно вектор сначала нормализовать, а уж затем умножать на некий коэффициент, который можно подобрать вручную.

Вариантов, как такое реализовать много, и каждый будет уместен в том или ином случае, здесь же исходных данных мало, что бы выбрать оптимальное решение.

dfx

Цитироватьесли передавать в  сет спид, то не работает. А если set/add force, то объект вначале двигается в нужном направлении, а потом, при изменении позиции мыши, ведет себя неодекватно(((

На данный момент у меня такой загруз, что поэксперементировать со сценой никак не могу выкроить время(

С физикой схема сложнее будет, чем просто добавление вектора -
1. Если нужна остановка объекта в указанной точке, то надо ставить условие, что бы объект стал снижать скорость заранее, что бы не проехать ее, либо применять противоположную силу, что бы его резко тормознуть, но это будет не естественно смотреться.
2. Когда меняешь позицию цели, объект будет заносить из-за инерции(если он, конечно, имеет массу), поэтому вектор движения, возможно, придется постоянно корректировать, либо делать так, что бы объект продолжал двигаться со старым направлением, но снизил скорость до 0, а только потом стал передвигаться в новую позицию.

Сможешь выложить тестовую сценку, где есть только то, что нужно для моделирования ситуации?

Droni

Вобщем, я сделал почти то, что хотел. Только надо что - то сделать с инерцией- уж больно сильно заносит, ничего не могу поделать((( И у меня возник ещё вопросик :
А реально сделать тоже самое, что и в стандартном примере "Pathfinding", только с ньютоновскими телами???

Ruslan

не плохо получилось, что бы уменьшить инерцию, нужно как советовал dfx в процессе анализировать расстояние и в соответствии копенсировать прикладываемую силу.

dfx

#25
Посмотрел сценку. Мне инерция понравилась :) Немного сложности в управление добавляет.
Но, честно говоря, я немного по иному представлял то, чего нужно добиться. Тут получается, что нужно анализировать не расстояние, а скорость и ее направление относительно позиции цели. Если объект движется в противоположную сторону от цели, то надо прикладывть бОльшую силу, направленную в сторону цели.

Незнаю, что я сделал, но инерция заметно поубавилась ;D Смущает то, что скорость пришлось поднять в разы. Позже еще поэкперементирую.

Droni

#26
Всё, теперь работает ;). Инерции почти вообще нет,А скорость  вроде как можно вообще любую ставить, даже на маленькой отлично работает))))