3.2. Объемные данные Объемные данные — это данные, заданные в виде трехмерной матрицы значений. Традиционно эти данные получаются в медицине с помощью методов магнитно-резонансной томографии или рентгеновской компьютерной томографии. Однако природа этих данных может быть любая. Возможны геопривязанные объемные данные — когда ячейки объема расположены через равные интервалы по долготе, широте и глубине.
Такие данные могут возникать в результате бурения в узлах периодической решетки и измерения каких-либо параметров почвы, например, температуры. Также объемные данные получаются с помощью метода сейсмотомографии, который сейчас активно развивается [101, 102]. По аналогии с медицинской томографией сейсмотомография позволяет получить распределение некоторых пространственных характеристик земной коры путем анализа данных с сети сейсмостанций, регистрирующих сейсмические волны от землетрясений.
Землетрясения создают продольные и поперечные волны, которые обозначают буквами P и S соответственно. Скорости распространения сейсмических волн различны и зависят от модуля упругости и плотности среды. Это позволяет идентифицировать некоторые характеристики земной коры на пути следования сейсмических волн. Результатом обработки множества данных является трехмерная матрица (воксельный массив), в ячейках которой записано значение отношения скоростей P-волн и S-волн в данной точке. Каждая ячейка матрицы (воксель) имеет координаты: долгота, широта, глубина.
3.2.1. Прямой объемный рендеринг Существует 2 основных метода для рендеринга объемных данных: генерация полигональной сетки по объемным данным (алгоритм marching cubes [103]) и прямой объемный рендеринг [104].
Для визуализации объемных данных на виртуальном глобусе был предложен алгоритм на основе прямого объемного рендеринга.
Рассмотрим сначала, как работает прямой объемный рендеринг на основе обзорной работы [105].
Для хранения объемных данных на видеокарте используется 3D-текстура. В ней содержится не цвет, а скалярное значение (плотность). В случае сейсмотомографии — это значение параметра Vp/Vs, приведенное к интервалу [0; 255]. Отдельно задается передаточная функция (transfer function), которая ставит в соответствие плотности цвет (RGB) и прозрачность (A) и хранится на видеокарте в виде 1D-текстуры.
Считается, что каждая ячейка объема испускает свет и поглощает свет. Чтобы определить цвет пикселя итогового изображения пускается луч из камеры через центр пикселя, и интегрируются оптические свойства объема вдоль хода луча. Интеграл берется численно следующим образом.
Через равные интервалы берется значение из 3D-текстуры с учетом трилинейной фильтрации. На основе этого значения с помощью передаточной функции вычисляется цвет (RGB) и прозрачность (A). Цвета последовательно смешиваются от задних к передним или наоборот (рис. 3 .40). Формула смешивания от задних к передним:
| (3.17)
| Суммирование ведется от до 0. и — цвет и прозрачность в точке объема i. — накопленный цвет.
| Рис. 3.40. Бросание лучей
|
| 3D-текстура привязывается к полигональной модели прямоугольного параллелепипеда, и интеграл считается для каждого пикселя параллелепипеда. Параллелепипед погружается в трехмерную сцену, где могут находиться и другие объекты.
Существуют также разновидности прямого объемного рендеринга:
проекция максимума интенсивности: цвета не смешиваются вдоль луча, а берется цвет точки с максимальной плотностью;
освещение: в каждой точки вычисляется нормаль по градиенту, и цвет считается с учетом освещения (косинус угла между нормалью и источником света);
изоповерхность: берутся только точки, значение плотности которых равно заданному.
Существуют модификации базового алгоритма для увеличения быстродействия [106], для улучшения качества визуализации [107], устранения визуальных артефактов [108], для мультиобъемного рендеринга [109].
3.2.2. Алгоритм визуализации объемных данных на глобусе Была поставлена задача разработать алгоритм для визуализации объемных данных на виртуальном глобусе.
Будем рассматривать частный случай, когда объем ограничен двумя параллелями, двумя меридианами и двумя уровнями высоты.
Для небольших объемов (с площадью крышки несколько десятков квадратных километров) можно считать Землю локально плоской и выводить объем традиционным способом в виде прямоугольного параллелепипеда (рис. 3 .41). Сначала рендерятся подземные объемные данные, а затем трехмерный рельеф в режиме прозрачности с помощью алгоритма, описанного в параграфе 2.2.
| Рис. 3.41. Визуализация результатов сейсмической томографии в районе Ключевской группы вулканов на Камчатке за 2004 год, по данным И. Ю. Кулакова (ИНГГ СО РАН)
|
| Для больших объемов уже необходимо учитывать форму Земли. В географических координатах (долгота, широта, высота) данные имеют прямоугольный вид: координаты ячеек объема расположены в узлах равномерной сетки. Но эти объемные данные необходимо вписать в часть объема глобуса, ограниченную параллелями, меридианами и высотами (рис. 3 .42).
Предлагается модификация алгоритма прямого объемного рендеринга для рендеринга объемных данных на глобусе.
| Рис. 3.42. Форма объема
|
| 1. Сначала генерируется полигональная поверхность объёма с заданным уровнем приближения к поверхности эллипсоида. Далее эта поверхность рендерится в 2 прохода.
2. Во время первого прохода происходит рендеринг в текстуру задней части поверхности. Текстура имеет формат RGB и содержит числа с плавающей точкой. В текстуру записываются декартовы координаты фрагментов задней части поверхности (рис. 3 .43).
| Рис. 3.43. Проход 1: рендеринг задней поверхности объема в текстуру
| 3. Во время второго прохода рендерится уже передняя часть поверхности объёма. Вычисляются декартовы координаты фрагмента, которые являются координатами точки входа луча в объем. Также во фрагментный шейдер передается текстура, полученная во время первого прохода. Из нее берутся декартовы координаты точки выхода луча из объема.
4. Зная координаты точки входа луча и точки выхода луча, можно с заданным шагом пройтись вдоль луча и получить декартовы координаты промежуточных точек (рис. 3 .44).
| Рис. 3.44. Проход 2: рендеринг объемных данных
| 5. Декартовы координаты каждой из промежуточных точек можно преобразовать в географические координаты на основе формул из статьи [110], которые обеспечивают точность в 1см для высот меньше 1000км:
,
| (3.18)
| ,
| (3.19)
| ,
| (3.20)
| ,
| (3.21)
| ,
| (3.22)
| ,
| (3.23)
| ,
| (3.24)
| ,
| (3.25)
| ,
| (3.26)
| где (x; y; z) – декартовы координаты точки, и – экваториальный и полярный радиусы Земли, – вспомогательные переменные, lat – широта, lon – долгота, h – высота.
6. Пользуясь начальным условием, что наш объём ориентирован вдоль параллелей и меридианов, из географических координат точки можно получить текстурные координаты в 3D-текстуре. Тем самым задача сводится к оригинальному прямому объемному рендерингу: происходит чтение плотности из текстуры, вычисление цвета с помощью передаточной функции и смешивание цветов от дальних точек к ближним по формуле ( 3 .17).
Результат применения алгоритма представлен на рисунке 3 .45 на примере восточной части Евразии. Использовался объем размером матрицы 241х241х24. Шаг по долготе и широте 0.25, шаг по глубине 25 км. Для наглядности была использована передаточная функция с двумя пиками красного и синего цвета для показа двух изоповерхностей.
| Рис. 3.45. Визуализация результатов сейсмической томографии в восточной части Евразии, по данным д.г.-м.н. И.Ю. Кулакова (ИНГГ СО РАН)
| 3.2.3. Анимация изменений в объеме В отличие от медицинской томографии получение данных с сейсмостанций ведется непрерывно. В ходе сейсмических и вулканических процессов характеристики и структура земной коры меняются. Эти изменения можно наблюдать, сравнивая данные сейсмотомографии за разные промежутки времени. Особенно явно видны изменения в области активной вулканической деятельности.
Пусть дана последовательность временных фреймов для одного и того же географического объема с одним и тем же размером матрицы. Фреймы можно показывать последовательно, один за другим. Либо можно сделать интерполяцию во времени для каждого вокселя, пользуясь тем, что количество вокселей одинаково во всех фреймах.
В обоих случаях нужно учесть важный момент. Ячейки объема содержат значения, отнормированные к диапазону [0; 255], а передаточная функция отображает это отнормированное значение в цвет. Для одного объема нормировка происходит с учетом минимального и максимального значения плотности для этого объема. Но для последовательности фреймов нужно брать минимальное и максимальное значения по всех фреймов, т.к. значения могут колебаться от фрейма к фрейму. Это гарантирует, что на всех фреймах одному и тому же значению плотности будет соответствовать один и тот же цвет.
Анимация последовательности фреймов тестировалась на объемных данных под Ключевской группой вулканов (рис. 3 .41). Размер матрицы каждого фрейма 121х81х46, шаг по долготе и широте — 1”, по глубине — 1 км. Объем расположен не полностью под поверхностью эллипсоида, a поднимается над ним на высоту 5 км. Большая часть надземного объема заполнена пустыми значениями. Меньшая часть содержится внутри вулкана. Всего в последовательности 40 фреймов за 10 лет.
|