Donate with PayPal button New New

+ Ответить в теме
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 15

Тема: Как сделать анимацию форточки или шторки скриптом?

  1. #1
    Пользователь Аватар для proton2
    Регистрация
    21.09.2009
    Страна
    Адрес
    Saint-Petersburg
    Возраст
    44
    Сообщений
    1,164

    По умолчанию Как сделать анимацию форточки или шторки скриптом?

    Пожалуйста, помогите советом. Замучился подгонять точки привязки и pivot'ы с 50 - метровыми радиусами для того, чтобы сделать нормальное открывание форточки или шторки. Кто только придумал такую ерунду, как все хорошо было до Classic'a... Как я с этим намучился...

    Подскажите, можно ли как-то сделать открывание форточки скриптом? Чтобы поставить точку привязки куда нужно и не ловить pivot через 50 метров от кабины...
    Сделано наспех - сделано на смех!

  2. #Trainz
    Реклама
    Регистрация
    Постоянная
    Адрес
    Весь мир
    Возраст
    2010
    Сообщений
    Много

    Donate with PayPal button N3v New New

     

  3. #2
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

    надо делать невидимый рычаг, за который легко было бы схватиться, анимацию форточки в нужное число кадров. И задавать нужный кадр в обработчике рычгов.

  4. Сказал спасибо:


  5. #3
    Пользователь Аватар для amd103
    Регистрация
    09.01.2010
    Страна
    Адрес
    Ульяновск
    Возраст
    32
    Сообщений
    1,022

    По умолчанию

    Там все просто.

    В центре красной пентаграммой отмечена точка контрола, считаем, что её ось Z (то бишь та, вокруг которой идет вращение) направлена перпендикулярно экрану от нас, т. е. так:

    Продолжения остальных осей показаны на картинке.

    Координатой положения контрола является угол поворота (альфа). Измеряется он в радианах. Именно он задается в пределах вращения контрола (тег angles).

    Когда синенький радиус-вектор (r) совпадает с осью у, его угол равен нулю. Затем, поворачиваясь против часовой стрелки угол будет увеличиваться: когда r повернется на 90 градусов, угол станет равным пи / 2, т.е. 3.14 / 2, т.е. 1.57. И т.д.
    Если поворачивать по часовой стрелке, то подем также, но в минус, т.е. при 90 градусах будет -пи/2.
    Далее очевидно, что после поворота на круг (360 градусов) r вернется в исходное положение и его угол в радианах будет 2пи.
    Можно и дальше продолжать поворачиваться — будет 2пи + пи/2, 2пи + пи, 2пи + 3пи/2, 4пи и т.д. Или -2пи - пи/2, ...:

    ..., -9пи/2, -4пи, -5пи/2, -3пи, -3пи/2, -пи, -пи/2, 0, пи/2, пи, 3пи/2, 2пи, 5пи/2 и так далее, хоть до бесконечности.

    Т.к. полный круг равен 2пи, можно сокращенно записать альфа = что-то + 2пиk, где k — любое целое число.

    Из всего этого бесконечного интервала мы выделяем отрезок и пишем его в angles. Чтобы не возиться, берем около нуля.

    Градусы легко перевести в радианы и наоборот — градусы = радианы * 180 / пи.

    Скажем, ручка крана 395 поворачивается, дай бог памяти, на 135 градусов. Для простоты поворачиваем точку так, чтобы ось у совпадала с I положением, в angles тогда пишем 0 и 135 * 3.14 / 180 = 2.355.

    Итак, в общем, смысл значения в angles — предельные координаты контрола.
    Далее я так и буду это называть..

    Далее limits. В нем два числа, отвечающих за масштаб контрола. Так как с координатами возиться неудобно, лимитс задает, чему равно значение контрола в минимальной и максимальной координате. Промежуточные положения имеют соответственное промежуточные значения, прямо пропорциональные координате.
    Так что от значения координат значение контрола не зависит.

    И с этим делом связаны также notches. В нем пишется список значений в котором есть фиксированная позиция.

    Возьмем контрллер ЭР2Т, к примеру. Имеем 5 тормозных, 5 моторных и 0.
    Допустим, что интервалы между ними равны.
    Тогда в лимитс мы пишем -5, 5
    а в нотчес 0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0

    В notchesheight пишется высота зелененьких полосочек, обозначающих положения. Пишем нули, если они не нужны.
    Тег radius, кстати, задает на каком расстоянии от точки они отображаются.

    ---
    Что касается кнопок и окон, делаемых на поворачивающихся леверах.

    В этом случае точка находится на большом расстоянии от самой модели (по сравнению с расстоянием, на которое она перемещается при открывании/сдвиге).

    Смотрим на рисунок. Точка там, где звездочка, расстояние — r. Допустим, что при нулевом угле форточка закрыта, а при угле, равном альфа — открыта, при этом альфа нам неизвестен, а известно h, т.е. расстояние, которое проходит открываемая/нажимаемая мешь.

    Если считать точно, то альфа и h связаны так: h = r sin a. Однако, т.к. в данном случае r в разы больше h, очевидно, что h практически совпадает с дугой L. А по определению радианной меры угла длина дуги L = r * a, значит, a = L / r ≈ h / r.
    Итак, в angles будет 0, h / r

    ---
    Я не зря говорил, что в angles записаны координаты, и limits работает с ними как с координатами. Углы являются координатами у контролов типа левер, пулллевер, свитч. У пуллроуп в angles — метры, координаты сдвига, а у анимированных леверов angles вообще не используется, минимальное и максимальное значение в limits соответствуют нулевому и последнему кадру анимации.

  6. Сказали спасибо: (3)


  7. #4
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

    Цитата Сообщение от amd103 Посмотреть сообщение
    а у анимированных леверов angles вообще не используется
    да, эти лучше не делать. Если кабина анимирована, то анимированным ппц приходит (одна из причин, по которой забросил кабину для КДЭ161)

  8. #5
    Пользователь Аватар для amd103
    Регистрация
    09.01.2010
    Страна
    Адрес
    Ульяновск
    Возраст
    32
    Сообщений
    1,022

    По умолчанию

    Что с ними происходит?

  9. #6
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

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

  10. #7
    Пользователь Аватар для amd103
    Регистрация
    09.01.2010
    Страна
    Адрес
    Ульяновск
    Возраст
    32
    Сообщений
    1,022

    По умолчанию

    Т.е. коллижн-прокси не двигается, или как?

  11. #8
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

    да.

  12. #9
    Пользователь Аватар для amd103
    Регистрация
    09.01.2010
    Страна
    Адрес
    Ульяновск
    Возраст
    32
    Сообщений
    1,022

    По умолчанию

    Очень странно, а сама модель левера движется с анимацией?
    Ну а при SetMeshOrientation/Translation такой беды, надеюсь, нет?

  13. #10
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

    Цитата Сообщение от amd103 Посмотреть сообщение
    Ну а при SetMeshOrientation/Translation такой беды, надеюсь, нет?
    без понятия. Может и нету, когда делал кабину об этих функциях ещё не знал.

    а сама модель левера движется с анимацией?
    движется.

+ Ответить в теме

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения