Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Тема 2

.pdf
Скачиваний:
5
Добавлен:
05.06.2015
Размер:
856.2 Кб
Скачать

Оглавление

Тема 2. Инструментальные средства анализа научных данных методом визуализации

2.1 Общие характеристики инструментальных средств.

Как было указано в параграфе 1.2., процесс решения задачи анализа тех или иных научных данных методом научной визуализации включает в себя 2-а этапа. На первом этапе осуществляется разработка и реализация алгоритма визуализации исходных данных. Этот алгоритм реализуется с использованием компьютера.

Реализация осуществляется путем написания прикладной программы визуализации на некотором входном языке программирования используемого инструментального средства (совокупности средств) в виде некоторого программного продукта (совокупности программных продуктов). Соответственно в прикладной программе визуализации должны быть описаны используемые шаги конвейера визуализации (отметим, что в общем случае, в прикладной программе визуализации могут описываться не все шаги конвейера визуализации, подобные ситуации рассмотрены ниже при описании примеров инструментальных средств). Отметим также, что прикладная программа визуализации может быть непосредственно написана человеком, решающим задачу анализа данных, либо он использует «чужую», написанную ранее прикладную программу.

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

1.функциональные процедуры задание исходных данных;

2.функциональные процедуры фильтрации;

3.функциональные процедуры мэппинга;

4.функциональные процедуры рендеринга.

Прикладная программа визуализации обрабатывается компьютером и инициирует выполнение этих функциональных процедур при реализации соответствующих шагов алгоритма визуализации. Результаты выполнения функциональных процедур доступны прикладной программе визуализации для последующего использования (рис.2.1).

Рис. 2.1

Результатом выполнения функциональных процедур 1-й группы является представление исходных данных в памяти компьютера (компьютерная модель этих данных).

Результатом выполнения функциональных процедур 2-й группы является компьютерная модель отфильтрованных данных.

Результатом выполнения функциональных процедур 3-й группы является компьютерная модель пространственной сцены.

Результатом выполнения функциональных процедур 4-й группы является проекционное графического изображение на используемом графическом терминале.

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

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

Рассмотрим примеры программных продуктов, которые могут быть использованы в качестве инструментальных средств (причем как автономно, так и совместно) для решения прикладных задач анализа данных методом научной визуализации.

2.2 Программный продукт 3ds Max

3ds Max — широко известный программный продукт, обладающий развитыми функциональными возможностями для моделирования и визуализации произвольных сложных пространственных сцен, которые могут быть использованы при написании сложных прикладных программ визуализации.

Разработка 3ds Max (тогда этот программный продукт назывался 3d Studio Max) была начата в 1993 году, когда входящей в состав компании Autodesk группе Kinetix поручили создать новый продукт на базе пакета 3d Studio для MS DOS. Главными особенностями программного продукта должны были стать: графический интерфейс, объектно-ориентированная архитектура и полная поддержка системой Windows.

Структура 1-й версии программного продукта, вышедшая в 1995 году, подразумевала, что любая функциональная процедура, задаваемая человеком, может быть выполнена дополнительным модулем (плагин). Следует отметить, что основные концепции программного продукта, в том числе объектноориентированная архитектура и «мертвая» привязка к платформе Windows актуальна и по сей день. Название программного продукта менялось, в настоящее время он называется 3ds Max.

Рассмотрим основные характеристики функциональных процедур 3ds Max, используемого в качестве инструментального средства при написании прикладных программ визуализации. В начале, рассмотрим основные характеристики входного языка программирования 3ds Max - языка MaxScript, используемого для написания прикладной программы визуализации.

Программирование на языке MaxScript

Язык Maxscript - язык программирования, созданный специально для работы в среде 3ds Max. Данный язык имеет простую структуру и синтаксис, он является языком интерпретируемого типа (программа на этом языке не требует компиляции и сборки исходного кода, а может выполняться сразу в режиме интерпретации). Программа на языке MaxScript представляет собой последовательность операторов. Можно выделить следующие типы операторов:

1.арифметические операторы

2.логические операторы

3.условные операторы

4.циклические операторы

5.операторы функций

При написании прикладной программы визуализации для инициации (вызова) той или иной функциональной процедуры используется синтаксическая конструкция в виде одного или нескольких операторов функции. Эта синтаксическая конструкция одного оператора в общем случае имеет вид:

1-й вариант: <название функции> _ <параметр 1>_ <параметр 2>_..._<параметр n>

2-й вариант: <название функции> _ <ключевое слово 1>:<параметр 1>_ <ключевое слово 2>:<параметр 2>_..._<ключевое слово n>:<параметр n>

В 1-м варианте порядок перечисления параметров важен, во 2-м варианте параметры перечисляются в произвольном порядке

Значения параметров текущей выполняемой функциональной процедуры в прикладной программе визуализации определенным образом связываются с результатом выполнения предыдущей функциональной процедуры.

Параметры могут представлять собой:

·Числовые значения

·Символьные значения

·Сложные типы данных MaxScript

Рассмотрим примеры использования этой синтаксической конструкции для вызова функциональных процедур. Начнем с рассмотрения функциональных процедур задания исходных данных.

Функциональные процедуры задания исходных данных

При использовании языка MaxScript функциональными процедурами задания исходных данных в 3ds Max являются процедуры открытия файла, чтения данных из файла, закрытия файла. Вызов функциональной процедуры осуществляется с помощью соответствующего оператора функции. В качестве таких операторов могут использоваться операторы:

openFile_”<наименование файла>” - оператор открытия текстового файла.

<readValue>_<наименования переменной – указателя на файл> - оператор чтения значения из файла.

<close>_<наименования переменной – указателя на файл> - оператор закрытия файла.

Пример 2.1.

Пусть в файле c:\\textfile.txt хранятся в виде данных численные значения координат десяти пространственных точек ( X Y Z). Задание исходных данных в этом случае будет состоять в открытие этого файла, считывании из него числовых значений координат точек и занесении их в массивы чисел ArrayX, ArrayY, ArrayZ . Приведем в качестве примера фрагмент прикладной программы визуализации.

…………………….

fs=openFile ”c:\\textfile.txt” --- открытие файла с именем ”c:\\textfile.txt” , и

присвоение переменной fs значения указателя на данный файл . Здесь в качестве параметра функции используется символьное значение ”c:\\textfile.txt” .

ArrayX = # ()

ArrayY = # ()

 

ArrayZ = # ()

 

for i = 1 to 10 do -----

оператор цикла,

( -----

где значение переменной i изменяется от 1 до 10

x = readValue fs ------

считывание текущего значения координаты x из файла

y = readValue fs ------

считывание текущего значения координаты y из файла

z = readValue fs ------

считывание текущего значения координаты z из файла

append ArrayX x ------

занесение текущего значения переменной x в массив

ArrayX

 

append ArrayY y ------

занесение текущего значения переменной y в массив

ArrayY

 

append ArrayZ z ------

занесение текущего значения переменной z в массив ArrayZ

)

 

 

close fs --- закрытие файла

……….

Функциональные процедуры фильтрации данных

В программном продукте 3ds Max отсутствуют программные средства которые можно было бы использовать в качестве программных функциональных процедур фильтрации. Поэтому эти функциональные процедуры необходимо

включать в тело прикладной программы визуализации, написанной на языке MaxScript. Для этого могут быть использованы различные типы операторов MaxScript, упомянутые выше.

Пример 2.2

Будем рассматривать в качестве исходных данных численные значения координат десяти пространственных точек из предыдущего примера. Пусть фильтрация исходных данных состоит в том, чтобы из числа исходных 10-ти точек нужно для последующей визуализации отобрать только те из них, которые лежат внутри куба. Грани этого куба параллельны координатным плоскостям, координаты левого нижнего угла (-5,-5,-5), координаты правого верхнего (5,5,5). Отфильтрованные данные заносятся в массивы ArrayX2, ArrayY2, ArrayZ2 соответственно. Фрагмент прикладной программы визуализации, описывающий функциональную процедуру фильтрации, будет иметь следующий вид:

……….

ArrayX2 = # ()

ArrayY2 = # ()

ArrayZ2 = # ()

for i = 1 to 10 do -----

оператор цикла,

(

----- где значение переменной i изменяется от 1 до 10

x

= ArrayX

[i] ------

 

присвоение переменной x значения текущего элемента

массива

 

 

 

y

= ArrayY

[i] ------

 

присвоение переменной y значения текущего элемента

массива z = ArrayZ [i]

------ присвоение переменной z значения текущего элемента

массива

 

 

 

if (x > -5 and x < 5 and y > -5 and y< 5 and z > -5 and z < 5) --- оператор условия

---проверка нахождения точки

---внутри куба

then

(

append ArrayX2 x ------ занесение выбранного значения переменной x в массив append ArrayY2 y ------ занесение выбранного значения переменной y в массив

append ArrayZ2 z ----- занесение выбранного значения переменной z в массив

)

)

……….

Следует отметить, что необязательно размещение функциональной процедуры фильтрации в теле прикладной программы (как мы это сделали в рассмотренном примере). Данная процедура может быть размещена в теле оператора функции и вызываться из прикладной программы визуализации с помощью этого оператора функции. Это замечание справедливо не только в отношении функциональных процедур фильтрации, но и любых других нештатных функциональных процедур, определяемых человеком.

Функциональные процедуры мэппинга

Отличительной чертой 3ds Max является богатый набор штатных функциональных процедур мэппинга. Напомним, что под функциональными процедурами мэппинга (как указывалось ранее, мы рассматриваем 3d мэппинг) понимаются процедуры формирования компьютерных представлений описаний пространственных сцен, которое включает в себя описание геометрии (геометрической модели) этой сцены и описание ее графических характеристик (текстуры).

Выше было отмечено, что геометрическая модель пространственной сцены представляет собой совокупность пространственных геометрических примитивов или/и сложных геометрических объектов (являющихся результатом выполнения некоторых геометрических операций над пространственными геометрическими примитивами или другими сложными объектами). В качестве таких геометрических примитивов в 3ds Max могут использоваться:

·cфера

·конус

·цилиндр

·параллелепипед

·тор

·пирамида

·призма

·многогранник

·отсек поверхности

·NURBS-поверхность

·поверхность Безье

Из этих примитивов можно формировать сложные пространственные геометрические объекты, которые, в свою очередь, могут использоваться как операнды других геометрических операций. В качестве таких геометрических операций в 3ds Max могут использоваться:

·сдвиг

·поворот

·масштабирование

·теоретико-множественное объединение

·теоретико-множественное пересечение

·теоретико-множественное вычитание

·лофтинг

·морфинг

·изгиб

·шум

·сглаживание

·сжатие

·растяжение

·скручивание

·скос

Для задания графических характеристик пространственной сцены в 3ds Max предоставляется возможность использовать обширную библиотеку различных текстур. Помимо этого с помощью программного средства «Редактор материалов» можно создавать и использовать нештатные текстуры.

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

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

Пример 2.3

<box> _height: <числовое значение> _ width: < числовое значение > _ length: < числовое значение > _ pos: [< числовое значение >,_ < числовое значение >_ < числовое значение >]

Эта функциональная процедура ставит в соответствие отфильтрованным данным компьютерное представление геометрической модели пространственной сцены в виде параллелепипеда (box). Задаваемые параметры:

height – высота параллелепипеда

width – ширина параллелепипеда

length – длина параллелепипеда

pos – координаты центра параллелепипеда

В прикладной программе значения этих параметров связываются определенным образом (так как это задано человеком) с отфильтрованными данными.

Пример 2.4

<sphere> _radius: <числовое значение> _ pos: [< числовое значение >,_ < числовое значение >_ < числовое значение >]

Эта функциональная процедура аналогична предыдущей. Она ставит в соответствие отфильтрованным данным компьютерное представление геометрической модели пространственной сцены в виде cферы (sphere). Задаваемые параметры:

radius – радиус сферы

pos – координаты центра сферы

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

Пример 2.5

<move> <указатель на геометрический объект – операнд операции> _[<числовое значение>, числовое значение >, числовое значение >]

Эта функциональная процедура ставит в соответствие ранее созданному геометрическому объекту компьютерное представление геометрической модели пространственной сцены в виде сдвинутого геометрического объекта. Задаваемые параметры:

1-е числовое значение - величина сдвига по оси x

2-е числовое значение - величина сдвига по оси y

3-е числовое значение - величина сдвига по оси z

Пример 2.6

<boolObj.createBooleanObject>_ <указатель на геометрический объект – 1-й

операнд операции>

<boolObj.SetOperandB> _<указатель на геометрический объект – 1-й операнд операции> _

<указатель на геометрический объект – 2-й операнд операции >_ 1

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

Инициация этой функциональной процедуры осуществляется с помощью двух операторов функций. 1-й оператор служит для задания 1-го операнда теоретикомножественной операции объединения (эта операция является двуместной). 2-й оператор служит для задания 2-го операнда теоретико-множественной операции объединения. В качестве операндов здесь могли бы выступать, например, ранее созданные сфера и параллелепипед. Здесь «1» - идентификатор теоретикомножественной операции объединения.