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

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Рендер тени в Vice City
« : Апрель 18, 2014, 01:42:17 am »
Создавал подобную тему на sannybuilder.com , но там тему по Вайсу мало кто просматривал. Здесь в основном ковыряют Вайс, поэтому мб это принесет плоды?

Возможно многие заметили, что в катсценах Vice City модели актеров имеют собственные динамические тени(хотя на скрине это не очень хорошо и видно):

Вопрос(очевиден  ;D): возможно ли каким-либо способом "заставить игру подумать", что игровой актер - "катсценовый"? Иначе говоря, возможно ли заменить стандартный рендер теней актеров(педов, если вам так нравится) на динамический? Или просто активировать такой рендер(даже без замены)?

Вот что ответил DK22Pac там же, на sannybuilder.com:
Цитировать
В SA эти тени (HQ тени) включаются, если поставить в настройках высокое качество изображения.
Там эти тени создаются через ту же процедуру, что и LQ тени. Там как-то текстура формируется на основе положения костей педа.
Надо смотерть как именно это происходит.


Но мне кажется, он слишком глубоко копнул. Я имел ввиду - мб в Вайсе у объектов есть какой-то флаг, отвечающий за определение игрой объекта, как объекта для катсцен или обычной игры? Как видно из скрина, это не связано с самой катсценой, т.к. игрок в кадре, и байкер вдали не имеют динамической тени(хотя байкер стоит далеко, и тень вообще не рендерится). Т.к. даже в катсцене продолжается разделение объектов на специальные с динамической тенью и обычные со статичной.

Да, я знаю про Maxo's Vehicle Loader, но и Maxo, как мне кажется - глубоко копнул с созданием собственной тени с блэкджеком и багами. А так можно было бы всё сделать средствами игры.

Сам я далеко не ленив в моддинге Вайса, но попросту не специализируюсь в анализе IDA db и т.д. Поэтому спрашиваю здесь - где есть люди, уже разбирающиеся в этом.
« Последнее редактирование: Апрель 18, 2014, 01:46:58 am от Shaggy »

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #1 : Апрель 18, 2014, 01:19:18 pm »
Классные тени, раньше не замечал, хорошо бы правда их перетащить на педов. Даже для катсцен это довольно редкое явление. Прогнал через mission loader, но удалось разглядеть только в этих местах:


Оффлайн Eden

  • Призрак
  • Сообщений: 40
  • Репутация: +9/-0
    • embium
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #2 : Апрель 18, 2014, 05:02:24 pm »
Может ответ кроется в самой катсценовской анимации? Ибо, насколько мне не изменяет память, у белого Мерса седана, из начала игры, в одной из катсцен, вроде как - есть своя тень, хотя я могу ошибаться. Кстати, в оригинальном вайсе, свои "псевдодинамические" тени, имеют так-же фонарные и светофорные столбы, где тень аккуратненько передвигается за солнцем, но это гораздо более примитивный механизм.
« Последнее редактирование: Апрель 18, 2014, 05:09:34 pm от Eden »
Империя - это закон,
Закон - священен!

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #3 : Апрель 18, 2014, 05:47:05 pm »
В MVL, есть тени, я точно помню. Но это какой-то maxo- вроде как сделал, как то давно обращался к нему в ЛС, через один американский форум, вроде бы шла беседа, а потом в игнор меня пустил. Но это было еще в 2012 году.

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #4 : Апрель 18, 2014, 06:09:07 pm »
Для начала надо проверить, что тени действительно динамические, а не подрисованные, уж слишком мало их. Попробовать поменять модели в сценах, попробовать вставить обычных педов в сцены, если получится. Вроде я также встречал самодельные сцены, посмотреть там. Узнать, что влияет, скелет, анимация, или есть функция тени, которая активируется только в сцене. Нужна какая-то зацепка. Еще я видел сцены, где тень должна быть, но ее нет, возможно из-за поверхности, попробовать перенести сцену туда, где тень точно видно. Те кто умеет, попробуйте погонять сцены, хорошо бы камеру еще повернуть, посмотреть с другого угла, если она не привязана к сцене конечно.
« Последнее редактирование: Апрель 18, 2014, 06:16:09 pm от xanser »

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #5 : Апрель 19, 2014, 12:58:46 am »
Стриптизерша слишком далеко(дальность прорисовки тени у катсцен-актеров небольшая), а вот как скривило Томаса - мы видим и на тени:


А теперь видно и стриптизершу:


А вот скрины для сомневающихся: откройте их ссылки для сравнения: один и два, и убедитесь, что моя супер пупер профессиональная КАСТОМНАЯ анимация отображается на тени(длинная рука очень слабо видна, т.к. кости друг от друга далеко(об этом - ниже), а вот как дрыгаются ляжки - можно отлично видеть на тени):



Это и несколько подобных опытов еще полгода-год назад дали такую инфу:
1) Дело либо в файле DFF(но епть, он же заблокирован!) катсцен-модели, либо во флаге катсцен-актера(спец флаг для модели)
2) тень рисуется по скелету, как и в СА, что еще раз говорит о первом варианте первого пункта. У авто в катсценах тоже есть "скелет", а именно - его дамми, имеющие специфические названия. Чем дальше кости друг от друга - тем слабее и "худее" тень. Оптимально - Стандартные размеры педов, а не такие:



3) Работает только на катсцен-моделях(см самый первый скрин в теме). Ни на кого больше не влияет
4) В катсценах камера блокируется намертво: единственное, что удавалось сделать - это убрать widescreen и вернуть камеру игроку(но вертеть нельзя). Единственный выход - писать скрипт камеры.
ИИИИИИ пункт 5) Повторю - анима отрисовывается по скелету. Еще на форумсах это пытались разобрать, и заметили, что у низких катсцен-персов - низкая тень, у высоких - высокая(заменяли верзилу BJ Smith из заставки Sunshine Autos на бабку из такси)

« Последнее редактирование: Апрель 19, 2014, 05:36:04 pm от Shaggy »

Оффлайн Eden

  • Призрак
  • Сообщений: 40
  • Репутация: +9/-0
    • embium
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #6 : Апрель 19, 2014, 10:47:24 am »
Ну значит надо вскрыть катсцен аниму, сверить ее с обычной, стандартной, скажем бега ГГ и если ничего особенного, что, насколько я понял, уже не требуется в проверке - искать способ открытия катсценовских педов :D Но по мне так странно, если разрабы решили прикрутить эти тени в катсценах, может имеет смысл то, что в режиме реального времени - в вайсе, с крутящейся камерой и прочим, эти тени работали неправильно?
« Последнее редактирование: Апрель 19, 2014, 10:49:44 am от Eden »
Империя - это закон,
Закон - священен!

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #7 : Апрель 19, 2014, 05:38:27 pm »
...или сильно нагружали игру... Как будет время - попробую еще поэкспериментировать с катсценами

P.S. Перезалил скрины, т.к. они глючили
« Последнее редактирование: Апрель 19, 2014, 06:06:32 pm от Shaggy »

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #8 : Апрель 19, 2014, 08:46:38 pm »



Видать, тени имеют лимит по высоте, но это не страшно - ведь обычно никто не использует модели персонажей больше стандартных - это я один такой дегенерат  ;D
« Последнее редактирование: Апрель 19, 2014, 08:48:57 pm от Shaggy »

Оффлайн Eden

  • Призрак
  • Сообщений: 40
  • Репутация: +9/-0
    • embium
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #9 : Апрель 19, 2014, 08:50:22 pm »
Не думаю, что у того-же Maxo работает другой принцип отрисовки теней, нежели в катсценах оригинала. Возможно, в своих библиотеках, он перенес катсценовские тени на всех педов, чисто манипулируя флагами. Все-таки, мне кажется, что теория про спец. названия костей у катсценовских педов не верна, ибо база определения педов и их костей в игре универсальная и на всех одна, вряд-ли разрабы стали-бы так заморачиваться и пилить отдельные определения, для небольшой доли педов с тенями. Скорее всего, тут дело именно в флагах.
Империя - это закон,
Закон - священен!

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #10 : Апрель 19, 2014, 09:07:51 pm »
1)Нет, ты неправ насчет Maxo - он даже показывал, что отрисовывает тени своим способом(путем создания второй игровой камеры)
2)Да, ты прав насчет того, что дело не в модели:
Это обычная игровая модель без изменений(как у игрока):



Итог: Очевидно - дело во флагах в памяти для модели

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #11 : Апрель 19, 2014, 11:48:55 pm »
BREAKING NEWS:
Если лень читать - читай итог в конце.

Итак, тени не зависят ни от актера, ни от анимации, и вообще ни от чего, о чем в этой теме говорилось.

Я более сотни раз сейчас перезапускал игру, проверяя те или иные теории. Долго объяснять, так что вот лишь факты:
1) Cutscene анимацию можно активировать на любом стандартном педе, даже на игроке, важно лишь, чтобы загрузка была такая:

load_special_actor 3 'NAMEACTOR'
load_requested_models
а потом после
02E4: load_cutscene_data 'STRIPA'
0244: set_cutscene_pos 0@ 1@ 2@ // set cutscene center coordinates
прописать:
02E5: $SHADOYEXP = create_cutscene_object #SPECIAL03
02E6: set_cutscene_anim $SHADOYEXP 'NAMEACTOR'
перед тем, как
02E7: start_cutscene Важно лишь то, чтобы в загрузке и в активации анимации название "NAMEACTOR" совпадало. Т.е. если вы загружаете чувака(даже из траффика) "COP", то и активировать анимацию вы должны "COP", а для этого в файле анимации этой cutscene (у меня в примере "STRIPA") должна быть анимация "COP".

2)На актере, созданном опкодом 009A
$SHADOYEXP = Actor.Create(CivMale, #SPECIAL04, 0@, 1@, 2@)- нельзя активировать cutscene аниму, т.е. на нем нельзя
02E6: set_cutscene_anim $SHADOYEXP 'BURGER' - это можно делать только на созданном таким опкодом актером:
02E5: $SHADOYEXP = create_cutscene_object #SPECIAL03
"Но это просто разбор cutscene, при чем тут тени?" - спросите вы.
А при том, что: чтобы вы не творили с катсценой, тени у актеров будут всегда. Дело просто в одной маленькой детали:

Цитировать
load_special_actor 3 'NAMEACTOR'

02E5: $SHADOYEXP = create_cutscene_object #SPECIAL03


Немного справки: в вайсе одновременно в одной катсцене может быть 21 cutscene объект(про тачки пока не знаю).
Так вот, если загружать под числами 1-11, то тени будут, если - 12-21 их нет.


Немного пруфов:


1)ОДИН раз загружается
load_special_actor 3 'BURGER'а потом
$SHADOYEXP = Actor.Create(CivMale, #SPECIAL03, 0@, 1@, 2@) // СОЗДАЕМ ОБЫЧНОГО ИГРОВОГО АКТЕРА С ОБЫЧНОЙ ТЕНЬЮ
02E5: $SHADOYEXP1 = create_cutscene_object #SPECIAL03 // А ЭТОТ ПАРЕНЬ ПОЛУЧИТ ДИНАМИЧЕСКУЮ ТЕНЬ
02E6: set_cutscene_anim $SHADOYEXP1 'BURGER' // ЭТО АКТИВИРУЕТСЯ ТОЛЬКО НА АКТЕРЕ, СОЗДАННОМ С ПОМОЩЬЮ ОПКОДА 02E5:, ИНАЧЕ - ВЫЛЕТ


2) А сейчас мы cutscene актеру присвоили номер >11 , и тени у него больше нет вообще


3)Как ни мотай камеру - тень у актера-игрока хорошая, и глюков нет, так что хз почему Рокстары удалили(или не делали) это для игровых челов:

4)И дальность прорисовки тени тоже норм(опять см. тень актера-игрока):


Так что итог: тень задается в опкоде
02E5: $SHADOYEXP = create_cutscene_object #SPECIAL03если номер спец-актера от 1 до 11

ТАК ЧТО ТЕПЕРЬ ДЕЛО ЗА ТЕМИ, КТО РАЗБИРАЕТСЯ И МОЖЕТ РАСКОВЫРЯТЬ УСТРОЙСТВО ОПКОДА 02E5, В Т.Ч. - КАК ОН ЗАДАЕТ ТЕНЬ
« Последнее редактирование: Апрель 19, 2014, 11:57:36 pm от Shaggy »

Оффлайн Eden

  • Призрак
  • Сообщений: 40
  • Репутация: +9/-0
    • embium
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #12 : Апрель 20, 2014, 01:58:50 am »
Тогда интересует другой вопрос.. а как-же машины и их тени? Если в СА тот-же принцип, что и в ВС в катсценах, то как перенести эти тени на тачки? Или, все-таки, в ВС есть тени на тачках в катсценах? У меня просто ориг. вайса нет, не могу проверить :)
Империя - это закон,
Закон - священен!

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #13 : Апрель 20, 2014, 02:40:33 am »
Проверил - нет у тачек тени. Всё что я написал - верно для актеров, т.е. для
023C: load_special_actor 1 'CSPLAY'а тачки загружаются, как объект, т.е.
02F3: load_object #CUTOBJ01 'HLRYCAR', хотя анимация им присваивается также, как и актерам, т.е.
02E6: set_cutscene_anim $125 'CSPLAY'
02E6: set_cutscene_anim $214 'HLRYCAR'



Короче теперь дело за теми, кто понимает IDA db , и кто расскажет, как же активирует тень опкод
02E6: set_cutscene_anim $125 'CSPLAY' и почему это работает для актеров 1-11, но не работает - для 12-21
« Последнее редактирование: Апрель 20, 2014, 08:43:36 pm от Shaggy »

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #14 : Апрель 20, 2014, 09:33:31 am »
Кто разбирается - покопайтесь в функциях

004A6510
RenderEffects
 004A6190
Render2DStuff
0056CC40
CShadows::RenderStoredShadows
 0056C690
CShadows::RenderStaticShadows