Цветные модельки

Garey

ninjaCow
Сообщения
451
Реакции
1,111
Помог
11 раз(а)
Автор статьи: Garey

Привет! в данной статье я расскажу как переделать модельку игрока так что-бы клиент (либо сервер) мог задавать цвет модельки с помощью команд bottomcolor/topcolor аналогично мультиплеерным моделям из Half-Life

Для этого нам надо будет переименовать текстурку игрока названием DM_Base.bmp и переставить индексы цветов которые должны заменяться в определенную зону в файле.

0. Рекомендуемые программы:
  1. Компилятор studiomdl.exe и декомпилятор MDL by Kratisto (Если будет использоваться уже готовая моделька)
  2. GIMP (или Photoshop)
  3. Milkshape 3D
  4. ASeprite
    * XnView

Насчет первых трех более менее понятно, что за программы, а вот последняя это редактор спрайтов, но там очень хороший редактор цветовых палит который мы и будем использовать.

Я буду использовать свобоный редактор GIMP и если вы пользуетесь Photoshop'ом то там должен быть похожий функционал, если его нет то можно скачать программу с официального сайта: https://www.gimp.org

Milkshape 3d Используется для перераспределения текстур если в вашей моделе используется больше одной - из нескольких в одну.

XnView используется для того чтобы преобразовать из любого цветного в цветное 256 цветов ( Можете использовать любую другую )

Компилятор, декомпилятор и ASeprite я запаковал в архив и вы можете скачать их в конце поста


1. Декомпиляция модели:

Данный шаг можно пропустить если у вас модель уже имеется в формате SMD либо если вы уже умеете декомпилировать модели

1.1 Создаем папку где будет декомпилярованные ресурсы модельки и копируем туда .mdl модельку
1.2 Открываем decompiler.bat и перетаскиваем mdl из новой папки в окно и жмем Enter
1.3 На вопрос какой тип модельки - выбираем Reference (1) и жмем Enter и ждем пока моделька декомпилится​

Моделька должна сдекомпилироваться, 1-ый этап закончен


2. Объединение и перераспределение текстур в модели

Если текстур в модельке использовано более одной и эти текстуры должны участвовать в перераспределении цветов - объединяем эти текстуры в одну, для этого с начало открываем любой редактор изображений (можно даже Paint) и размещаем текстуры из каждого файла в один файл и переименовываем готовый файл в имя: DM_Base.bmp
Пример до и после:
57dd6a8171633_2016-05-2706_27_58.png.ea1889cb08c8ee76519abcc95ec0cead.png 57dd6b2e7e7d1_2016-05-2706_28_10.png.f23ffc8cb3a00611855a83b742d47ebf.png

2.1 Далее надо будет перераспределить текстуру в Milkshape 3D:
  • Импортируем smd файл или файлы(если модель разбита на несколько групп)
  • Нажимаем справа на вкладку Materials и вместо родных текстур меняем все на DM_Base.bmp созданный ранее:
  • Теперь наносим текстуру на модель - Выделяем нужную группу (если их несколько) и Жмем Ctrl+T, масштабируем и двигаем ее на нужную область текстуры как все закончено, закрываем окошко.
    57dd6b7e43a32_2016-05-2706_34_59.png.454b0ee063e9ff6017ce471f16c65d2a.png
  • Все тоже самое проделать для каждой группы - каждой модельки.

3. Ограничиваем количество цветов:

  • С начало открываем GIMP (либо Photoshop хотя не уверен есть ли там такая функция)
  • Открываем ранее созданый DM_Base.bmp
  • Переведите изображение в режим RGB (Изображение->Режим->RGB)
  • Далее опять переведите в режим Индексированный (Изображение->Режим->Индексированный)
  • Выбираем создать оптимальную палитру и выбираем Максимальное число цветов - 128 (неуверен есть ли такая функция в Photoshop)
  • Сохраняем (Экспортируем в BMP)

4. Переиндексация цветов в ASeprite
  • Открываем DM_Base.bmp
    *Если будет ругаться и не сможет откройте например в XnView и преобразуйте в цветное 256 цветов
  • Теперь видна палитра изображения и непосредственно само изображение
  • Теперь с помощью левого окошка (где палитра) перераспределите нужные цвета в Индексы 160-191( bottomcolor ), 192-223(topcolor)

Для этого можно сначало выделить все цвета и рассортировать их по нужному параметру например по освещености для этого выделяем все цвета и нажимамем на маленькую стрелочку и выбираем Sort by Luminance на картинке все цвета поплывут для того чтобы все цвета перераспределились - нажимаем Remap

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

- Перетащите цвета в начала диапазнов для bottom и topcolor(160 и 192), рассортируйте по яркости и неиспользуемые цвета преобразуйте в градиент от вашего цвета до черного для этого выделите последний используемый цвет и растяните выделение дл 191 или 223 и нажмите на стрелочку -> Gradient

Результат должен выглядеть примерно так:
57dd6bc47e329_2016-05-2707_22_31.png.890f12002c4875a12d03646754ff988f.png


5. Компилируем модельку обратно в MDL

  • Открываем Compiler.bat
  • Открываем папку куда мы декомпилировали и перетаскиваем файл *.qc в окошко

Смотрим результат в игре:
57dd6c69ad80d_BeFunkyCollage.jpg.7eee34ac6a5c5ab55d801ec6c8ec9d2c.jpg
 

Download all Attachments

Сообщения
67
Реакции
85
Garey, Это гениально.
Большое спасибо за статью.
 

Garey

ninjaCow
Сообщения
451
Реакции
1,111
Помог
11 раз(а)
igor_grusha, оказывается можно, в аттаче пример цветной модельки дигла, у себя на клиенте просто менять topcolor/bottomcolor команды, вероятно на сервере просто infokey также менять topcolor/bottomcolor :-) (в примере только topcolor)
 

Вложения

Сообщения
723
Реакции
610
Помог
13 раз(а)
Не совсем понятно работа с прогой asprite. Видео или картинками покажите лучше.
 
Сообщения
723
Реакции
610
Помог
13 раз(а)
Все сделал. Но на скинах не работает установка цветов. (Работает только на первом скине)

$texturegroup skinfamilies
{
{ "DM_Base.bmp" }
{ "DM_Base_skin1.bmp" }
{ "DM_Base_skin2.bmp" }
{ "DM_Base_skin3.bmp" }
{ "DM_Base_skin4.bmp" }
}
 

Garey

ninjaCow
Сообщения
451
Реакции
1,111
Помог
11 раз(а)
Vaqtincha, Назови текстурку как "Remap#_LLL_MMM_HHH####"
LLL-MMM будут пороги для палитры topcolor
MMM-HHH для bottomcolor.
# - любые символы, поидее вместо "_" тоже можно любой символ. Главное чтобы текстура была 22 символа длинной, начиналась с "Remap",
К примеру: "RemapA_160_191_223_asd"
 
Сообщения
723
Реакции
610
Помог
13 раз(а)
Garey, сайлент уже подсказал про ремап. Я просто переименовал все текстуры на DM_Base (благо паранойя вювер этого позволяет) в игре работает но будет утечка из-за этого пришлось делать костыль.
28 Ноя 2022
Правда не очень поняли для чего нужен remap вообще.
 

Download all Attachments

Сообщения
723
Реакции
610
Помог
13 раз(а)
isya04, Свободном доступе нету.
 
Сообщения
29
Реакции
3
Короче был создан 2 плагина на основе статьи
я правильно понял или не правильно, что на основе статьи, Ваши плагины делают это всё автоматически и не нужно править модели в ручную? Или всё же нужно делать всё также по гайду?
 
Сообщения
926
Реакции
548
Помог
13 раз(а)
я правильно понял или не правильно, что на основе статьи, Ваши плагины делают это всё автоматически и не нужно править модели в ручную? Или всё же нужно делать всё также по гайду?
Модели в любом случае нужно править
Плагин лишь управляет "состоянием" модели, пускай это и некорректно звучит
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу