3D выборка текстур в OpenGL

В настоящее время я пытаюсь научиться литье лучей на 3D-текстуре, используя что-то вроде glTexImage3D, Я следовал этому руководству с самого начала. Моя конечная цель - создать программу, которая может работать так:

Вот этот

Насколько я понимаю, это было сделано с использованием метода лучевого вещания, и модель импортируется в виде 3D-текстуры. Задачи лучевого вещания и выборки текстур выполнялись в фрагментном шейдере. Я надеюсь, что смогу повторить эту программу на практике. Не могли бы вы ответить на мои вопросы?

  1. Какой формат файла следует использовать для импорта 3D-текстуры?
  2. Какие функции GLSL я должен использовать для определения расстояния между моим лучом и текстурой?
  3. В чем различия выборки трехмерных текстур и объемного рендеринга?
  4. Существуют ли доступные онлайн-учебники для меня?
  5. Как я могу создать свою собственную 3D текстуру? (Можно ли сделать один с помощью блендера?)

1 ответ

Решение

1. Какой формат файла следует использовать для импорта 3D-текстуры?

Не имеет значения, OpenGL не работает с форматами файлов.

2. Какие функции glsl я должен использовать для определения расстояния между моим лучом и текстурой?

Там нет "готово использовать" функцию радиопередачи. Вы должны реализовать Raycaster самостоятельно. Т.е. между начальной и конечной точкой сэмплируйте текстуру вдоль линии (луча) и интегрируйте сэмплы до конечного значения цвета.

3. В чем различия выборки трехмерных текстур и рендеринга объема?

Выборка трехмерной текстуры не сильно отличается от выборки 2D, 1D, кубической карты или любой другой топологии текстуры. Для данного вектора A восстанавливается определенный вектор B, а именно либо значение выборки, которое ближе всего к местоположению, на которое указывает A (ближайшая выборка), либо интерполированное значение.

4. Существуют ли доступные онлайн-учебники для меня?

http://www.real-time-volume-graphics.org/?page_id=28

5. Как я могу создать свою собственную 3D текстуру? (Можно ли сделать один с помощью блендера?)

Вы, конечно, можете использовать Blender, например, выпекая объемные данные, такие как плотность тумана. Но весь предмет слишком широк, чтобы быть здесь достаточно освещенным.

Другие вопросы по тегам