Gamedev LectureСтатьи

Лекция #10. Цвет. Цветовые пространства. (миним трэш-лекция) [лектор - xmvlad]

Автор:

<xmvlad> тема: Цвет, цветовые пространства. <xmvlad> для начала немного теории... Свет - электромагнитная волна, основная характеристика, которая нас будет
  волновать - длина волны.
<xmvlad> свет, определенно длины волны, вещь, редкая :) но существует, например - излучение лазеров. Чаще всего
  свет представляет из себя поток с различными длинами волн

  • ag|evil has left #gamedev_lecture
  • <dR|hardcoding> (некогерентное излучение)
    <xmvlad> для описания этого потока используются энергетические спектральные кривые, I(a) - значение функции,
      мощностной вклад волн с длиной a в общий волновой поток
    <xmvlad> в глазу человеа расположены "колбочки" и "палочки", колбочки бывают трех типов, одни чувствительны к
      волнам короткой длины(синий цвет), средней длины(желто-зеленый) цвет, и волнам большой длиной волны(красный
      цвет)
    <xmvlad> таким образом :) глаз человека ставит в соответствие спектральной функции "три числа" получаемые
      следующим образом: R = sum [I(a)*Pr(a)] d a, аналогично для G, B. sum - интеграл по видимому диапазону
      волн(a), I(a) - мощностной вклад(интенсивность) волны с длиной a, Pr(a) - весовая функция "колбочек"
      чувствительных к красному цвету для волны длины a
    <xmvlad> соответственно, для  G = sum [I(a)*Pg(a)] d a,  B = sum [I(a)*Pb(a)] d a, Pg, Pb - весовые функции для
      колбочек чувствительных к зеленому и синему цвету соответственно.
    <xmvlad> и все было бы, хорошо, но не все цвета представимы RGB моделью, поэтому в 1931 г организация CIE
      приняла стандартные кривые (Pr, Pg, Pb) для идеального гипотетического наблюдателя
    <xmvlad> и назвала все это - модель CIE XYZ
    <xmvlad> формулы такие же как и для RGB, только вместо Pr, Pg, Pb(кривых чувствительности различных типов
      колбочек), ввели другие, и обозвали их - x, y, z
    <xmvlad> в модели XYZ, координата Y совпадает с кривой чувствительности глаза к свету
    <xmvlad> часто бывает необходимо отделить информация об интенсивности цвета
    <xmvlad> непосредственно от самого цвета
    <xmvlad> для этого вводятся хроматические координаты xy, по сути это просто _нормализованная_ модель XYZ, в
      которой отсутсвует информация об интенсивности цвета
    <xmvlad> x = X/(X + Y + Z)
    <xmvlad> y = Y/(X + Y + Z)
    <xmvlad> стоит заметить, что модель  (x,y,Y) (хроматические  координаты x, y + Y - интенсивность), позволяет однозначно восстановить значени XYZ
    <xmvlad> цветовые пространства XYZ и RGB, связаны линейной зависемостью, поэтому для перевода из одного
      пространства в другое достаточно вектор RGB/XYZ умножить на матрицу преобразования
    <xmvlad> так с цветом немного разобрались.. теперь про небо :)
    <xmvlad> разглогольствовать долго не буду :) дока - http://www.cs.utah.edu/~shirley/papers/sunsky/sunsky.pdf
    <xmvlad> пара кусков для референса из OpenMountains http://www.everfall.com/paste/id.php?d7q14bxik

    полная версия:
    http://www.everfall.com/paste/id.php?dirs4l2bi5xk

    31 января 2006

    Комментарии [1]