Конвертирование лиц из Gothic I в Gothic II и обратно

Конвертирование лиц из Gothic I в Gothic II и обратно

Введение

Данная статья посвящена конвертированию, нередко у модостроителей возникает необходимость вставить в свое творение(мод) какого-либо НПЦ из другой части игры. Эта же необходимость, возникла и у меня при разработке модификации Stronghand (alpha).

Статья разделена на 2 части:

И так начнем.

Главной задачей в этом деле является внешность НПЦ, а главной узнаваемой частью тела НПЦ является его лицо . :)

И хоть в Г1 и Г2а текстуры лиц абсолютно одинаковые, но в скриптологии Gothic I и Gothic II способ задания внешнего вида НПЦ существенно отличается, также же как и измененная нумерация текстур лиц.

Для начала рассмотрим общий формат текстуры, не отличающийся в Gothic I и Gothic II.

Итак, текстура лица представляет собой графический файл с разрешением «256*128», изначально в формате «*.TGA», а впоследствии компилированный в понятный для игры формат «*.TEX» с префиксом »-C» перед расширением файла, но это нам мало интересно. :)

Важнее имя файла текстуры, например: «HUM_HEAD_V0_C0-C.TEX», далее будем рассматривать ИМЯ ТЕКСТУРЫ с нужными нам данными без префикса и расширения, т.е. «HUM_HEAD_V0_C0».

  • «HUM_HEAD» - означает принадлежность к модели головы.
  • «_V0» - номер ТЕКСТУРЫ головы, далее ЛИЦО (Используется в Gothic I и Gothic II)
  • «_C0» - номер ПАЛИТРЫ цвета кожи, далее ПАЛИТРА (Используется только в Gothic I, подробнее ниже)

Функция Mdl_SetVisualBody

Основная функция Mdl_SetVisualBody, используемая в обеих частях игры, но в Gothic I напрямую, а в Gothic II через дополнительную внешнюю функцию B_SetNpcVisual.

Используя описание Vam’а под редакцией TycoooN’a, это выглядит так:

void Mdl_SetVisualBody (c_npc self, string body, int bodytex, int COLOR, string head, int HTEX, int ttex, int armor);

Установить параметры изображения НПС self, где :

  • body – имя mesh файла модели тела,
  • bodytex – номер текстуры тела,
  • COLOR – номер палитры цвета кожи,
  • head – имя MMS файла модели головы,
  • HTEX – номер текстуры головы,
  • ttex – номер текстуры зубов,
  • armor – номер(инстанция) одетой брони (-1 – брони нет).

В Г1 в отличие от Г2а ЛИЦО задается двумя числами т.к. ТЕКСТУРА ЛИЦА взаимосвязана с ПАЛИТРОЙ, которая также привязана к ТЕКСТУРЕ ТЕЛА НПЦ, т.е в Г1 у одной ТЕКСТУРЫ ЛИЦА и ТЕКСТУРЫ ТЕЛА должна быть общая ПАЛИТРА.

В Г2а перестали использовать нумерацию ПАЛИТРЫ, переведя все исчисление только на нумерацию ТЕКСТУР, т.е. в Г2а ПАЛИТРА всегда имеет нулевое значение как и ТЕКСТУРА ТЕЛА, поэтому для любой ТЕКСТУРЫ ТЕЛА, независимо от оттенка кожи (ПАЛИТРЫ), можно подставить любую ТЕКСТУРУ ЛИЦА.

Задание внешности

Задание внешности в Г1:

Mdl_SetVisualBody (НПЦ, МОДЕЛЬ_ТЕЛА, ТЕКСТУРА_ТЕЛА, ПАЛИТРА, МОДЕЛЬ_ГОЛОВЫ, ТЕКСТУРА_ЛИЦА, ТЕКСТУРА_ЗУБОВ, ДОСПЕХИ);

Задание внешности в Г2а:

B_SetNpcVisual(НПЦ, ПОЛ, МОДЕЛЬ_ГОЛОВЫ, ТЕКСТУРА_ЛИЦА, ТЕКСТУРА_ТЕЛА, ДОСПЕХИ);

Как видно, в Г2а многое было упрощено через внешнюю функцию B_SetNpcVisual, далее ниже представлены примеры задания внешности Торуса в Г1 и Г2а.

Еще ниже представлена ТАБЛИЦА КОНСТАНТ, которые используются в Г2а для задания ТЕКСТУРЫ ЛИЦА, хотя вместо констант можно писать и простые числа.

И в самом низу идут две ТАБЛИЦЫ ПЕРЕКОДИРОВКИ лиц из формата Г1 в Г2а и наоборот.

Пример из Готики 1 (Торус):

Mdl_SetVisualBody (self,"hum_body_Naked0",0,3,"Hum_Head_Fighter", 12,0,GRD_ARMOR_H);

Итак в данном случае у Торуса в Г1 ТЕКСТУРА ЛИЦА имеет номер 12, с ПАЛИТРОЙ номер 3. В таблице перекодировки (Г1 в Г2а) находим, что в Г2а это соответствует текстуре номер 4

Пример из Готики 2 (Торус):

B_SetNpcVisual(self,MALE,"Hum_Head_Fighter",Face_B_Thorus,BodyTex_B,ITAR_Thorus_Addon);

Теперь попробуем перекодировать из формата Г2а в формат Г1.

В Данном случае у Торуса ТЕКСТУРА ЛИЦА имеет константу Face_B_Thorus, что равно 4, если смотреть таблицу констант, (см. пример выше), теперь ищем в таблице перекодировки (Г2а в Г1), соответствующую ТЕКСТУРУ Г2а и получаем для Г1 ТЕКСТУР 12 и ПАЛИТРУ 3. Найдя необходимые текстуры и палитры, дело закончено остается вставить нужное в игру.

Автор

Материал составлен и подготовлен Ukur (aka BlackWolf)

© 2008 Mighty DWARF

/var/www/wogru_main/data/www/mod.worldofgothic.ru/data/pages/textures/faces-convert-1.txt · Последние изменения: 09-01-2009 08:14 (внешнее изменение)

Проект портала World of Gothic RU. © 2005-2009 marazmus, MaGoth и команда World of Gothic RU.
Копирование материалов сайта разрешено только при явном согласии авторов материалов.
При копировании материалов прямая ссылка на сайт обязательна.

Rambler's Top100 Рейтинг Ролевых Ресурсов