Автор Тема: Пора сделать нормальный танк  (Прочитано 18644 раз)

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Пора сделать нормальный танк
« : Ноябрь 26, 2013, 05:02:00 pm »
Давно вынашиваю мысль сделать рабочие гусеницы у танка. Пока в голову приходит только создать звено гусеницы в виде отдельного объекта и сложным алгоритмом двигать кучу звеньев относительно модели танка по двум сторонам в соответствии со скоростью танка.
Задача усложняется тем, что при шести звездах понадобится такое же проделывать с танками военных, что почти нереально, может стоит оставить танк только игроку, а военные заменить на БэТэРы.
Похожей привязкой я делал когда-то МАЗ с краном, который автор не разрешал вскрывать, модель не поддавалась взлому. МАЗ изначально был самосвалом, я сделал прозрачную текстуру кузова, чтобы он исчез и привязал на его место кран, работало вполне сносно, из трафика я его конечно исключил.
Может есть другие идеи по поводу гусениц, как-то же их делают в танковых симуляторах.
« Последнее редактирование: Март 12, 2017, 11:16:45 am от xanser »

Оффлайн graveman

  • Прохожий
  • *
  • Сообщений: 50
  • Репутация: +3/-0
  • Its cool! Man
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #1 : Ноябрь 26, 2013, 05:10:06 pm »
Смотря какие гусеницы - просто анимированные или как физические объекты. Если физический движок игры способен обрабатывать гибко сцепленные объекты, хотя я не уверен в этом. В GTA VC, по-моему, даже рэгдолл-смерти педов нет. Например, когда педа сбивает автомобиль, то мертвый пед как-будто лежит на плоскости, а должен по идее распластаться по капоту. По-ходу для гусениц придется дописывать физику.

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #2 : Ноябрь 26, 2013, 05:24:44 pm »
Хотя бы сделать имитацию гусениц, например 100 как будто бы сцепленных звеньев расположены под разными углами вокруг колес, можно расчитать градус каждого, привести в движение по скорости...

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #3 : Ноябрь 26, 2013, 05:32:41 pm »


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

Оффлайн Sanek777

  • Призрак
  • Сообщений: 32
  • Репутация: +6/-0
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #4 : Ноябрь 26, 2013, 10:50:05 pm »
Скрипт для управления вращением башни уже запилен , и при разработке танковой фишки будет польза с реализации такого способа .
А если уж менять танк на бэтэр , то стоит так же учесть характер вооружения машины .
БТР - 70 со скриптом RF 1 (The video's owner prevents external embedding)

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #5 : Ноябрь 27, 2013, 05:34:03 am »
Лучше вращение башни мышкой дописать туда же к гусеницам, не догружая лишним cleo-модом, достаточно привязать движение мышки к углу башни
0x936910 - [float] - Mouse X movement
0x936914 - [float] - Mouse Y movement

0x7E49C0 - [pointer] - Player's car pointer
  +0x5B0 - [float] - Rhino & Fire truck Cannon horisontal angle
  +0x5B4 - [float] - Fire truck Cannon vertical angle
« Последнее редактирование: Ноябрь 27, 2013, 05:37:54 am от xanser »

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #6 : Декабрь 08, 2013, 08:46:31 am »
Напишу дабл пост, поскольку пришла еще одна мысль.
Посмотрел на бульдозер из GTA 5, и похоже у него вращаются не сами гусеницы, а только их текстура вдоль одной из осей модели, т.е. если сделать хотя бы примитивные гусеницы одной затекстуренной лентой, то достаточно двигать координаты текстуры, чтобы получить видимость движения. Вроде задача кажется довольно простой, если добраться до UV маппинга прямо в игре.
У кого есть какая-то информация по этому поводу?

А это набросок на скорую руку вращения башни (и гидранта):
Код: C++
  1. void CannonMouseControl()
  2. {
  3.         int MouseSensitivity = 300;
  4.         float * fMouseX = (float *)(0x936910);
  5.         float * fMouseY = (float *)(0x936914);
  6.  
  7.         DWORD * dwPlayerCar = (DWORD *)(0x7E49C0);
  8.         BYTE  * bCarBlock = (BYTE *)(*dwPlayerCar);
  9.         DWORD * dwCarID = (DWORD *)(bCarBlock+0x5C);
  10.  
  11.         int CannonDirection = (*dwCarID==137)-(*dwCarID==162);
  12.         if (CannonDirection)
  13.         {
  14.                 float * fCannonAngleX = (float *)(bCarBlock+0x5B0);
  15.                 float * fCannonAngleY = (float *)(bCarBlock+0x5B4);
  16.                 *fCannonAngleX += (*fMouseX/MouseSensitivity)*CannonDirection;
  17.                 *fCannonAngleY += (*fMouseY/MouseSensitivity);
  18.         }
  19. }
  20.  
« Последнее редактирование: Декабрь 08, 2013, 12:54:51 pm от Sektor »

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #7 : Декабрь 09, 2013, 12:47:16 am »
Хороший набросок кода, зачетно!

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #8 : Декабрь 16, 2013, 09:08:46 am »
Я надеюсь, авторы этой модельки разрешат мне ее сконвертировать в вайс. Вот как я планирую двигать текстуру, единственно я не уверен, может ли движок на лету ее двигать или сначала идет загрузка модели и потом с ней уже ничего нельзя сделать. Еще интересует где хранится модель в памяти, если есть указатель на авто, можно ли сместиться на его модель?


Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #9 : Декабрь 16, 2013, 02:41:51 pm »
Код: C++
  1. 005BAA40         No Category     CVehicle::SetModelIndex (( uint ))

Скорее всего, нужно хвататься за этот метод и смотреть как там модель устанавливается, исходя из чего и.т.п.

Цитировать
Еще интересует где хранится модель в памяти, если есть указатель на авто, можно ли сместиться на его модель?
Скорее всего, может быть так:

1. В полях у машины, есть указатель на 3D модель.
2. Модели могут находиться в другом месте, типа как в менеджере.

Пока такие варианты думаю...
« Последнее редактирование: Декабрь 16, 2013, 02:45:03 pm от Sektor »

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #10 : Декабрь 19, 2013, 05:02:25 pm »
Тут http://www.gamemodding.net/ru/gta-san-andreas/gta-sa-other-transport/7883-t-90-iz-battlefield-3.html утверждается, что для SA запилили рабочие гусеницы через CLEO. Я не смог проверить, интересно как оно работает, на представленном видео я ничего не разглядел, может кто покажет?

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



Пытался связаться с авторами:
Авторы: DCS Ка-50: Чёрная акула
Конверт и доработка в GTA San Andreas:
s762x39s (s762x39s@mail.ru)
alkashbutovo (alkashbutovo@bk.ru)

Один адрес мертв, второй ответил, что не помнит про конверт и ему все равно, оригинальная модель получается вообще из игры DCS Ка-50: Чёрная акула, так что не вижу препятствий для конверта в вайс.

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #11 : Декабрь 21, 2013, 11:57:26 pm »
xanser Забыл все сказать, посмотри тут адреса RWG-шных функций, может помогут чем нибудь тебе для реализации твоей идеи.

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #12 : Декабрь 23, 2013, 05:16:05 am »
Я сравнил dff-файлы при смещении координат текстуры, слишком много адресов задействовано, я как-то рассчитывал обойтись двумя параметрами x и y.
У меня появился еще вариант, сделать анимацию спрайтами, т.е. менять у модели указатель на текстуру, а текстуры подставлять как в мультике покадрово. Кроме гусениц, можно так менять еще текстуры самого танка, можно сделать вращение колес у пассажирских самолетов, поездов, прицепов, если не через авто их делать, можно сделать развивающиеся флаги, много возможностей открывается. Осталось понять, как найти этот указатель.

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #13 : Декабрь 23, 2013, 06:59:56 pm »
Самые удобные - 2 варианта.
1) Добавить новые компоненты в иерархию автомобиля. Написать алгоритм движения этих компонентов.
Плюсы - самый простой вариант.
Минусы - надо создавать огромное кол-во компонентов, а это скажется и на размере файла модели.
2) Сделать анимацию текстурных координат.
Плюсы - фактически, не надо будет долго разбираться с самой моделью. Достаточно выделить отдельный компонент под гусеницы и применить к нему нужную текстуру.
Минусы - сложно сделать разную анимацию для одновременно созданных автомобилей. Текстурные координаты хранятся в обьекте геометрии, а он не клонируется для каждого созданного экземпляра модели. Это значит, что при изменении информации о текстурных координатах для модели одного автомобиля, эти же изменения коснутся других автомобилей с этой моделью. Решается данная проблема сохранением координат до рендера транспорта, и восстновлением после.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #14 : Декабрь 26, 2013, 12:05:26 pm »
Никак не могу найти адрес оффсета выстрела. По логике его должен определять в самой модели barrel_dummy c координатами примерно (0; 2.7395; 1.8027). Вращение башни, определяющей угол выстрела, должно быть вокруг windscreen_dummy, который явлется центром вращения (0; -1.3940; 1.0960). Но это все не работает от dff-модели и зашито в exe. Тем не менее, думаю эти координаты должны примерно совпадать, по крайней мере центр вращения, их разница должна давать радиус вращения. В игре координаты выстрела несколько смещены вперед-вверх от barrel_dummy. И все это пересчитывается через угол башни, я уже и в полярных координатах пробовал написать формулу, но так и не приблизился к нужным адресам  :-[