Войти
ПрограммированиеТерминыГрафика

Depth Of Field (DOF) — Глубина Резко Изображаемого Пространства

Depth Of Field (DOF) — Глубина Резко Изображаемого Пространства (ГРИП) или Глубина Резкости — одномерная величина, определяющая разницу между максимальным и минимальным расстоянием до наблюдателя, которое определяется наблюдателем как резкое. Термин пришёл в компьютерную графику из фотографии, где резкое изображение получается на тех участках, где световое пятно от точки в пространстве меньше зерна светочувствительного элемента, в следствии чего у наблюдателя возникает ощущение «резкости».

На самом деле, в оптике возможно только одно расстояние, при котором точка в пространстве передаётся в виде точки на светочувствительный элемент, так что «глубина» резкости на самом деле физически не существует и является следствием несовершенства техники и глаза наблюдателя.

Частным случаем ГРИП является гиперфокал, когда в область резко изображаемого пространства попадает всё, начиная с определённого расстояния до бесконечности.

Основными техниками для получения эффекта ограниченной ГРИП в компьютерной графике являются следующие:

Релизация ГРИП методом накопляющего буфера.

void DisplayHelper(float xoff, float yoff) {

  glClearColor(0.0,0.0,0.0,0.0);

  glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); 

  glMatrixMode(GL_PROJECTION);

  glLoadIdentity();

  glFrustum(…);

  glViewport(…);

  glMatrixMode(GL_MODELVIEW);

  glLoadIdentity();  

  gluLookAt(2.0+xoff,1.0,1.0+yoff, // немного изменяем положение камеры

            0,1,0, // Но смотрим на ту-же точку в пространстве

            0,1,0); // Сохраняя ориентацию камеры той-же

  glEnable(GL_DEPTH_TEST); 

  .. // Рисуем сцену
} 
 

void DisplayFunc() {

  if (do_depth_of_field) {

    glClear(GL_ACCUM_BUFFER_BIT);

    for (i=0;i<3;i++) {

      for (j=0;j<3;j++) {

        DisplayHelper(0.02*(float)i,0.02*(float)j);

        glAccum(GL_ACCUM, 1.0/9.0);

      }

    }

    glAccum(GL_RETURN, 1.0);

  } else {

    DisplayHelper(0.0,0.0);

  }

  glutSwapBuffers();

} 

Что такое Depth Of Field (DOF) — Глубина Резко Изображаемого Пространства?

11 октября 2009 (Обновление: 19 ноя. 2009)