Donate with PayPal button New New

+ Ответить в теме
Страница 2 из 4 ПерваяПервая 1 2 3 4 ПоследняяПоследняя
Показано с 11 по 20 из 39

Тема: Скриптовая раскачка. Идеи и обсуждение

  1. #11
    Пользователь Аватар для Рома
    Регистрация
    17.10.2012
    Страна
    Адрес
    Уфа
    Возраст
    30
    Сообщений
    3,540

    По умолчанию

    А что, у многих локомотивов она уже убираемая ( любой лок, у которого есть дневная и ночная кабины)
    Путь длиной в тысячу миль пройден на треть.

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

    Donate with PayPal button N3v New New

     

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

    По умолчанию

    Попробовал я сам покататься на модифицированной качалке.
    Изменения в том, что я в зависимости от интервала скорости ставил ту или иную величину поправки к амплитуде. В итоге небольшая умеренная качка появилась на малых скоростях (там, где ее раньше не было и машина ехала не естественно ровно), а на большой скорости качка не стала чрезмерно выколбашивать кабину. В итоге качка как бы уравнялась - на маленьких скоростях чуть увеличилась, на больших скоростях поубавилась. Все изменения в коде пометил красным.

    Может кто-нибудь попробует на 2тэ116 или на каком нибудь другом локе, а потом отпишется тут как и что в итоге получилось?


    thread void K_loop() // качание
    {
    Bogey[] bog_l= GetBogeyList();
    float R_level=0;
    float J_level=0;
    float ampl_const = 0.00035; // амплитуду регулируем этой переменной.

    while(1)
    {
    float veh_vel=Math.Fabs(GetVelocity())*3.6; // для расчета амплитуды берем скорость

    if (veh_vel>30 and veh_vel<60) ampl_const = 0.00025;
    if (veh_vel>60) ampl_const = 0.00015;




    if(veh_vel>10) // с какой скорости начинаем качку
    {
    float maxAmpl=0.15*Math.Fmin(ampl_const*(veh_vel-20),0.045); //формула регулировки апмлитуды
    R_level=R_level+Math.PI*Math.Rand(0.10,0.15);
    int a= (int)(R_level/(2*Math.PI));
    R_level=R_level-2*a*Math.PI;

    float value1=maxAmpl* sin(R_level);

    SetMeshOrientation("default",0,value1,0);
    bog_l[0].SetMeshOrientation("default",0,-value1,0);
    bog_l[1].SetMeshOrientation("default",0,-value1,0);

    J_level=J_level+Math.PI*Math.Rand(0.11,0.13);
    a= (int)(J_level/(2*Math.PI));
    J_level=J_level-2*a*Math.PI;

    maxAmpl=maxAmpl*1.2;

    value1=maxAmpl*sin(J_level);
    SetMeshTranslation("default",0,0,value1);
    bog_l[0].SetMeshTranslation("default",0,0,-value1);
    bog_l[1].SetMeshTranslation("default",0,0,-value1);
    }
    else
    if(veh_vel<10)
    {
    SetMeshOrientation("default",0,0,0);
    SetMeshTranslation("default",0,0,0);
    }
    Sleep(0.05);
    }
    }
    Последний раз редактировалось proton2; 02.02.2013 в 17:20.
    Сделано наспех - сделано на смех!

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


  5. #13
    Пользователь Аватар для CFM
    Регистрация
    05.10.2009
    Страна
    Адрес
    Кишинёв
    Возраст
    34
    Сообщений
    1,345

    По умолчанию

    Боря, попробуй ввести увеличение амплитуды и частоты при проезде леверов. Как расширение можно создать маркеры состояния пути, в соответствии со значением которых выбиралась бы амплитуда и частота. Мысль - на деревянном пути ход мягче, поэтому амплитуда больше, а частота чуть меньше. На бетонных наоборот.
    А какие виды перемещений в этом скрипте? Вертикальные, горизонтальные поперечные? А вращательные вдоль оси кузова?
    [B]Уже давно не ищу чертежи и размеры кабины ТЭ10М[/B]

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

    По умолчанию

    Цитата Сообщение от CFM Посмотреть сообщение
    Боря, попробуй ввести увеличение амплитуды и частоты при проезде леверов. Как расширение можно создать маркеры состояния пути, в соответствии со значением которых выбиралась бы амплитуда и частота. Мысль - на деревянном пути ход мягче, поэтому амплитуда больше, а частота чуть меньше. На бетонных наоборот.
    А какие виды перемещений в этом скрипте? Вертикальные, горизонтальные поперечные? А вращательные вдоль оси кузова?
    Спасибо за идею! Однако я не умею считывать информацию о том, какой объект пути мы проехали. Если тут кто-нибудь это покажет, тогда нам всем будет что попробовать.

    Корпус, телеги и кабина вращаются на заданную величину вокруг оси У и одновременно подпрыгивают и опускаются по оси Z.
    Величина смещения и ротации рассчитывается в зависимости от скорости и величины поправки.
    Сделано наспех - сделано на смех!

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


  8. #15
    Разработчик Аватар для SHEP Rom
    Регистрация
    17.03.2011
    Страна
    Адрес
    Днепропетровщина
    Сообщений
    2,378

    По умолчанию

    proton2, попробуй вот такую настройку. Это настройка Вовиной конфигурации.
    Код:
    float sin(float x)
      {
      int a= (int)(x/(2*Math.PI));
      x=x-2*a*Math.PI;
      a=1;
      if(Math.PI<x and x<=2*Math.PI)
       {
       x=x-Math.PI;
       a=-a;
       }
      if(Math.PI/2<x and x<=Math.PI)
       {
       x=Math.PI-x;
       }
      return a*(x-x*x*x/6+x*x*x*x*x/120-x*x*x*x*x*x*x/5040+x*x*x*x*x*x*x*x*x/362880);
      }
     thread void K_loop()
     {
     Bogey[] bog_l=  GetBogeyList();
     float R_level=0;
     float J_level=0;
     bool IsNight=false;
     int j=0;
     Bogey[] bog=GetBogeyList();
     while(1)
      {
          j++;
       bool j_work=false;
       bool TZ_work=false;
       float veh_vel=Math.Fabs(GetVelocity())*3.6;
        if(veh_vel>10)
         {
          float maxAmpl=0.33*Math.Fmin(0.00015*(veh_vel-20),0.045); //амплитуду менять тут
          R_level=R_level+Math.PI*Math.Rand(0.07,0.12);
          int a= (int)(R_level/(2*Math.PI));
          R_level=R_level-2*a*Math.PI;
          float value1=maxAmpl* sin(R_level);
      
          SetMeshOrientation("default",0,value1,0);
          bog_l[0].SetMeshOrientation("default",0,-value1,0);
          bog_l[1].SetMeshOrientation("default",0,-value1,0);
    
          
          J_level=J_level+Math.PI*Math.Rand(0.06,0.11);
          a= (int)(J_level/(2*Math.PI));
          J_level=J_level-2*a*Math.PI;
          maxAmpl=maxAmpl*2.18;
          value1=maxAmpl*sin(J_level);
          SetMeshTranslation("default",0,0,value1);
          bog_l[0].SetMeshTranslation("default",0,0,-value1);
          bog_l[1].SetMeshTranslation("default",0,0,-value1);
         }
         else
          if(veh_vel>19)
          {
           SetMeshOrientation("default",0,0,0);
           SetMeshTranslation("default",0,0,0);
          }
    
          if(j>300)
          j=0;
       Sleep(0.035);
      }
     }
    Trainz 2012, T:ANE - AURAN Registered license. "Пилите, Шура, она золотая"

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


  10. #16
    Пользователь Аватар для CFM
    Регистрация
    05.10.2009
    Страна
    Адрес
    Кишинёв
    Возраст
    34
    Сообщений
    1,345

    По умолчанию

    Цитата Сообщение от proton2 Посмотреть сообщение
    Корпус, телеги и кабина вращаются на заданную величину вокруг оси У и одновременно подпрыгивают и опускаются по оси Z.
    Величина смещения и ротации рассчитывается в зависимости от скорости и величины поправки.
    Думаю, нужны поперечные горизонтальные перемещения (ось Х, да?).
    Кстати, я давно думал на одну тему. Огромный шаг в реалистичности был бы, если имитировать перемещения головы машиниста, вызванные ускорениями кабины по трём осям. Суть идеи в том, что на голову машиниста действуют две противоположные силы - ускорения перемещения кабины и обратного ускорения головы машиниста из-за инерции. Их результирует коэффициент упругости тела машиниста. Если бы оно было абсолютно упругим (жёстко связывало кабину и голову), то голова полностью повторяла бы ускорения кабины. Если бы оно было абсолютно неупругим (связь головы с кабиной отсутствовала), оно бы полностью подчинялось силе инерции и не повторяла бы перемещения кабины. Подбирая коэффициент, добиваемся оптимального соотношения сил.
    [B]Уже давно не ищу чертежи и размеры кабины ТЭ10М[/B]

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


  12. #17
    Пользователь Аватар для Nemo
    Регистрация
    10.03.2010
    Страна
    Возраст
    33
    Сообщений
    834

    По умолчанию

    А в чём, получается, состоит чисто техническое отличие в способах задания качки, для того чтобы голова машиниста двигалась и не двигалась?

  13. #18
    Пользователь Аватар для CFM
    Регистрация
    05.10.2009
    Страна
    Адрес
    Кишинёв
    Возраст
    34
    Сообщений
    1,345

    По умолчанию

    Ты имеешь в виду, почему сейчас кабина качается, а камера - нет?
    [B]Уже давно не ищу чертежи и размеры кабины ТЭ10М[/B]

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

    По умолчанию

    Цитата Сообщение от CFM Посмотреть сообщение
    почему сейчас кабина качается, а камера - нет?
    наклон камеры относительно горизонта не поддерживается. Но вот в 12ой версии кабина и камера качаются синхронно (если раскачивать кузов), в результате возникает "дрожание" (за счёт ошибок округления при рендеринге изменившегося положения камеры с положением камины). В 2010ой камера была неподвижной.

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

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


  16. #20
    Пользователь Аватар для CFM
    Регистрация
    05.10.2009
    Страна
    Адрес
    Кишинёв
    Возраст
    34
    Сообщений
    1,345

    По умолчанию

    Цитата Сообщение от TRam_ Посмотреть сообщение
    Так что да, в 12ке, если отвязать точку кабины от кузова, и написать алгоритм синхронизации кузова и кабины, можно раскачивать камеру (голову машиниста) отдельно от всего остального, двигая отвязанную точку привязки кабины.
    То есть на точку привязки кабины вешаются точки привязки камер? А на что вешаются остальные точки привязки кабины?
    [B]Уже давно не ищу чертежи и размеры кабины ТЭ10М[/B]

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

Ваши права

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