2012-04-18 6 views
1

Я пишу инструмент, помогающий с моддингом новых персонажей в игру Crusader Kings II, и я немного застрял в окраске волос и бород.Как смешивать цвета, подобные этому?

Игра начинается с текстурой, как это:

http://serayen.com/ck2/bearduncoloured.png

Затем он смешивает его с тремя цветами - тень, основа, а изюминкой, такие как:

  • Dark : 10, 10, 10
  • Основа: 125, 85, 56
  • Выделение: 255, 255, 255

Какие результаты в этом:

http://serayen.com/ck2/beardcoloured.png

Какой купажа он используется? Как я буду делать это на C#?

+0

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

ответ

0

Решил сделать полный ответ, поскольку его легче форматировать и приводить примеры здесь.

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

Так я предполагаю, что их алгоритм:

(pixel(x,y).color * dark.color * THRESHDARK - min(pixel(x,y).intensity, THRESHDARK) //dark blending + 
(pixel(x,y).color * base.color * (pixel(x,y).intensity - THRESHDARK)/(THRESHLIGHT-THRESHDARK)) //middle blending + 
(pixel(x,y).color * highlight.color * pixel(x,y).intensity - THRESHLIGHT) //light blending 

Или что-то подобное. Надеюсь это поможет.

+0

Если это умножение похоже на то, как Photoshop делает это, то это будет немного темнее, чем заканчивается игра. Кроме того, какова интенсивность пикселей в этом примере? Я попытался реализовать это в программе, но не мог понять, что это было. – Measter

+0

Извините, что это был скорее приблизительный пример. Как я уже сказал, будет очень сложно отлично воспроизвести свои ценности из-за взвешивания и т. Д., Но вы, вероятно, можете приблизиться к проб и ошибок. В этом примере интенсивность пикселя вычисляется путем усреднения значений для компонент r, g и b в этом пикселе. Есть несколько лучших способов получить интенсивность пикселей, из-за того, что глаз поднимает свет по-разному, но простое среднее - хорошее начало –

 Смежные вопросы

  • Нет связанных вопросов^_^