Автор Тема: Рендер тени в Vice City  (Прочитано 18785 раз)

Оффлайн xanser

  • Главный Модератор
  • Опытный
  • *****
  • Сообщений: 498
  • Репутация: +43/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #15 : Апрель 20, 2014, 11:28:38 am »
Зачетное исследование

Оффлайн DK

  • Новичек
  • **
  • Сообщений: 222
  • Репутация: +313/-0
    • dk22pac
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #16 : Апрель 21, 2014, 03:03:29 pm »
Эти тени - примитивный шадоу-маппинг. Создается камера, позицинируется относительно педа, туда рендерится пед. Полученное изображение обрабатывается (вроде инвертируются цвета (так, чтобы образ педа стал белым, всё остальное - чёрное), блурится), далее рисуется почти так же, как стандартные проекции в игре (те, что под фонарями) - создается меш, который "стелят" по полигонам коллизии обьектов карты.
Пример реализации таких теней есть в примерах RenderWare Graphics, R* совсем немножко его переделали.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

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

Оффлайн xanser

  • Главный Модератор
  • Опытный
  • *****
  • Сообщений: 498
  • Репутация: +43/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #17 : Май 30, 2014, 03:27:32 pm »
... тень задается в опкоде 02E5: $SHADOYEXP = create_cutscene_object #SPECIAL03

С малой долей вероятности предположу, что если Shaggy прав, то может быть это происходит в RwObjectCreateLights

Код: ASM
  1. 0x4562FC @@opcode_02E5
  2.          -> 0x45630F call CreateCutsceneObject
  3.                           -> 0x4068FD call sub_4E03E0
  4.                                            -> 0x4E042C call RwObjectCreateLights

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

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #18 : Май 30, 2014, 03:32:33 pm »
ВОТ! Я это и хотел сказать! Просто я даун, и из этого вытекае всё остальное ::)

Оффлайн DK

  • Новичек
  • **
  • Сообщений: 222
  • Репутация: +313/-0
    • dk22pac
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #19 : Июнь 02, 2014, 02:55:59 am »
Что ещё интересно,
В VC класс этих теней назывался CCutsceneShadow, а в SA уже переименовали в CRealTimeShadow (в SA эти тени не только у обьектов катсцен, но и у педов).
А в SA Mobile эти тени прикрепили ещё и к транспорту.

По вайсу вроде правильно написали.
Код: ASM
  1. 0x4562FC @@opcode_02E5
  2.          -> 0x45630F call CCutsceneMgr::CreateCutsceneObject(int)
  3.                           -> 0x4068FD call CCutsceneObject::CreateShadow(void)
  4.                                            -> 0x4E042C call CCutsceneShadow::Create(RwObject *,int,bool,int,bool)
« Последнее редактирование: Июнь 02, 2014, 03:09:34 am от DK »
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

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

Оффлайн xanser

  • Главный Модератор
  • Опытный
  • *****
  • Сообщений: 498
  • Репутация: +43/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #20 : Июнь 02, 2014, 10:45:13 am »
Неужели осталось подставить нужный RwObject, и все станет с тенями, пешеходы и даже машины и здания

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #21 : Июнь 02, 2014, 02:31:15 pm »
Порой лучшие моды являются лишь парой строк кода.

P.S. Это ко мне не относится. Я даже самые простые вещи умудряюсь преобразовывать в жуткий гемор :'(

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #22 : Сентябрь 11, 2014, 03:03:04 pm »
Ниужели ни у кого руки так и не дошли?  :'(

Оффлайн xanser

  • Главный Модератор
  • Опытный
  • *****
  • Сообщений: 498
  • Репутация: +43/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #23 : Сентябрь 29, 2014, 05:29:02 am »
Я думаю, тема не закрыта, возможность очень интересная.

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #24 : Апрель 05, 2015, 02:50:10 am »
RwObject - это struct объекта/педа/тачки или что-то другое?

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +33/-0
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #25 : Апрель 06, 2015, 12:37:37 am »
RwObject - Это из движка RWG.

Оффлайн былтаков

  • Призрак
  • Сообщений: 23
  • Репутация: +2/-0
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #26 : Апрель 11, 2015, 08:00:52 pm »

вобщем вот какая штука у Санька случайно получилась - он запихал пепелац через MVL - и получилась динамическая тень - погрузчик тоже вставлен через MVL - но у него тень как у всех стандартных моделек - кстати если просто заменять модель пепелаца на любую другую - не меняя настроек - будет реально рендериться тень другой модели

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #27 : Апрель 15, 2015, 08:47:16 pm »
Ну, MVL - это другая история. Там своя система рендера тени.
Просто тут дошли до момента
-> 0x4E042C call CCutsceneShadow::Create(RwObject *,int,bool,int,bool), поэтому я и хотел узнать, RwObject - это struct объекта или что, т.к. думал, как это реализовать через CLEO.
Но пока так и не вдуплил

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +33/-0
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #28 : Апрель 15, 2015, 09:05:09 pm »
Все это из RWG движка, качай и рассматривай, там еще и документации были, вот ссылка. Т.е это основной графический движок вайса.

Оффлайн Prographer

  • Прохожий
  • *
  • Сообщений: 89
  • Репутация: +7/-0
  • Говнокодим, грабим, убиваем
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #29 : Апрель 16, 2015, 10:47:52 am »
Эти тени - примитивный шадоу-маппинг. Создается камера, позицинируется относительно педа, туда рендерится пед. Полученное изображение обрабатывается (вроде инвертируются цвета (так, чтобы образ педа стал белым, всё остальное - чёрное), блурится), далее рисуется почти так же, как стандартные проекции в игре (те, что под фонарями) - создается меш, который "стелят" по полигонам коллизии обьектов карты.
Пример реализации таких теней есть в примерах RenderWare Graphics, R* совсем немножко его переделали.
DK, можешь поподробнее рассказать о методах создания теней в играх? Какие методы наименее ресурсозатратны, а какие наоборот?