Интерполяция методом кригинг

advertisement
Вопрос 2.7
Вопрос 2.8
Интерполяция методом кригинг
Интерполяция методом кригинг производится следующим образом: каждое
значение рассчитываемой функции вычисляется как линейная комбинация от известных
(исходных) точек (значений). При этом весовые коэффициенты вычисляются с помощью
системы линейных уравнений кригинга. Так как все расчеты с помощью кригинга в
десятки раз быстрее обычной интерполяции, то при расчете геокубов имеет смысл
делать шаг геологической решетки по оси Z равным (или меньше) шагу каротажной
кривой. Однако скорость интерполяции при использовании кригинга в большей степени
зависит от числа точек, по которым задаются входные данные, что налагает
определенные ограничения на объем обрабатываемой информации.
Основные параметры кригинга:
Простой – выбор этого пункта означает, что интерполируемая функция “колеблется”
вокруг известной горизонтальной плоскости (графика постоянной функции). Поэтому
необходимо значение этой постоянной функции, а также отклонения, задавать вручную
в поле Среднее и Вариация соответственно. Значение Среднее должно соответствовать
средней глубине маркеров. Оно вводится либо вручную, либо включается режим
Использовать стат. оценку и тогда это значение вычисляется автоматически.
Отклонение Вариация должно быть не меньше коэффициента Порог, которое
указывается на вкладке Модель,в ином случае расчет не возможен;
Обычный – выбор этого пункта означает, что интерполируемая функция
“колеблется” вокруг неизвестной горизонтальной плоскости (графика постоянной
функции). Отличие от Простого заключается в том, что Обычный неизвестное значение
постоянной функции “вычисляет” самостоятельно.
Универсальный (чаще всего используется) – выбор этого пункта означает, что
интерполируемая функция “колеблется” вокруг графика неизвестной линейной
функции. Попутно кригинг коэффициенты этой неизвестной функции “вычисляет”.
С внешним дрейфом – выбор этого пункта означает, что интерполируемая функция
“колеблется” относительно графика функции вида C +a* D(x,y), где С и a –неизвестные
константы, а D(x,y) – известная функция, т.е. в нашем случае - это структурная
поверхность (горизонт), которая будет являться трендом для интерполируемого
горизонта. Т.е. в тех точках, где расстояние до скважины больше значения Радиуса,
будут браться значения трендового горизонта. Горизонт (в качестве трендовой функции
D(x,y)) задается в соответствующей вкладке диалога – Внешн. дрейф:
Во вкладке Модель указываются коэффициенты Скачок в нуле (C0) , Радиус (A) и
Порог (C), которые были получены при подборе модели на вариограмме (смотреть
выше).
Есть два способа задать эти коэффициенты: ввести значения вручную с клавиатуры (в
соответствующих полях диалога) или указать поля базы данных, в которых находятся эти
значения (в этом случае, необходимо включить режим Брать параметры модели из
БД):
В том случае, если среда изотропная (пространственная структура данных не зависит
от направления), то модель вариограммы имеет одно сечение. Соответственно
коэффициенты по оси X и по оси Y идентичны.
В том случае, если среда анизотропная (пространственная структура данных
различна по оси X и по оси Y), то следует включить режим Анизотропия, а затем задать
параметры Угол (в градусах, в соответствии с направлением той оси, относительно
которой модель будет изотропной, этот угол отсчитывается против часовой стрелки
относительно оси X) и Коэф. Y/X (степень сжатия параметра по новой оси Y).
Для того, чтобы активировать эту вкладку, необходимо включить режим
Использовать окрестности. При этом вычисления выполняются не по всей области, а
последовательно по отдельным регионам. Для того, чтобы на границах регионов не
было невязок при соединении их в одну область, расчет ведется в регионе чуть
большего размера (с нахлестом на другие регионы):
В поле Миним. число точек в окрестности задается минимальное количество точек,
которое должно попадать в один регион. Это значение задается вручную, но если в поле
Тип кригинга во вкладке Кригинг был задан вид расчета обычный, то количество точек,
участвующих в расчете (т.е. число, введенное в поле Миним. число точек в
окрестности), не должно быть меньше 2. А при задании расчета универсальный – не
менее 3.
Вопрос 2.9
3.1 Введение
Однажды данные изображения ввели в компьютер, ничего кроме чисел, которые могут
манипулировать со всеми возможностями арифметики и логики компьютера. Когда мы
используем изображения как переменные, мы называем действия, выполняемые над ними,
алгебраическими. Алгебраическое действие может быть одного из двух типов, точечное или
матричное. Оба действия могут описываться следующим выражением:
X оператор Y = Z
X и Y может быть изображениями или скаляры (числа), и Z должен быть изображением. Действие
точечное выполняется между каждым соответственным элементом X и Y. Вид матрицы действия
более комплексен и содержит детальные серии шагов, которые будут обсуждаться позже. Мы
делаем предположение, что как X, так и Y, если это изображения, имеют одно разрешение, или
пространственную резолюцию. Выравнивание, как линейный процесс, иллюстрировано
графически на рис. 3.1.
3.1 Линейные алгебраические действия над изображениями.
Отметим, что изображения представлены, как массив чисел, которые пространственно
организуются в изображение такого же рода. Как пример линейного алгебраического действия,
например, мы имеем два изображения того же места действия. В одном из изображений мы
видим комнату, возможно помещение склада. В остальном изображении мы видим помещение
склада с человеком. Если мы позволяем изображению запоминаться в глобальной переменной
изображения X и остальному в Y, и мы предполагаем, что оператор - вычитание, то изображение Z
- результат алгебраическое действие - это представление всего (черный) со значениями только в
расположениях пикселя, которые были различны между X и Y. Мы можем также предположить,
что переменные ряда (Number_of_Rows, Number_of_Columns) и столбца доступны также как
глобальные переменные.
Рисунок 3.2 иллюстрирует результаты вычитания изображения, где второе изображение вычтено
из первого.
3.2 Пример вычитания изображения.
Как дальнейший пример алгебры пикселя, рассматривается контроль яркости вашего монитора.
Этот контроль масштабирует полную яркость показа соразмерно к его установке. Таким же
образом, мы можем множить каждый пиксель в изображении константой, увеличивать или
уменьшать значение и, соответственно, полную яркость изображения.
3.2 Арифметические Операции
Арифметические операции между изображениями включают дополнение, вычитание,
умножение, и дивизию. Во всех случаях, мы заменяем оператор в следующем выражении
желаемым действием:
X оператор Y = Z
Наш стандартный ряд значения пикселя составляет 0 - 255, значения, возможные в 1 байте
данных. Если операционная продукция - число вне этого ряда, мы должны или масштабировать
полный набор результата, или выполнить операцию транзакции, в которой отрицательные числа
установлены к нулю и большие положительные установлены к 255. Ясно, самый простой подход выполнять транзакцию. Вычитание изображения полезно для обнаружения отличий между
последовательностями изображения того же места действия. Процесс часто используется для
системы обнаружения движения.
3.3 Логические Операции
Логические операции - это операции, выполняемые над пикселями изображения. Стандартные
логические операторы И, ИЛИ, и НЕ применены, поскольку они представлены с арифметическими
операциями, обсуждаемыми выше. Комбинации этих действий дадут любую логическую функцию
(NAND, NOR, XOR, IOR, и так далее), хотя больше всего в программах с действиями над
изображением используется XOR из-за его понятного эффекта замаскирования. Логические
операции самые легкие для понимания в терминах двумерных изображений. Так как двумерное
изображение содержит только значения пикселя рисунка пером, бинарные операции будут иметь
неотложную визуальную уместность. Примеры элементарных логических операций
предоставлены на рис. 3.3.
Рисунок 3.3 Логические операции на двумерных изображениях.
3.4 Действия с матрицами
Много изображающих методов требуют, что с изображением работали как с матрицей. В
предыдущих главах мы применили действия пикселя к соответствию пикселя в выравнивании
изображения. Если действие - это дополнение или вычитание, действия над матрицами
идентичны.
Однако, если действие - это умножение, метод, обсуждаемый в главе 3.2, назван точечным.
Точечное действие часто используется, чтобы исправить проблемные ответы сенсорного массива,
где изображение калибрования генерируется, каждое значение пикселя высчитано как фактор
исправления умножения. Изображения, полученные с помощью датчика, могут умножаться на
изображение калибрования, чтобы исключить или смягчить индивидуальные несходства пикселя
и сделать изображение последовательным через все пиксели. Однако, при обсуждающемся
действии над матрицей, умножение изображений обычно понимается как перекрестный продукт,
или продукт вектора. Перекрестный продукт двух изображений существенно отличен от продукта
точки и требует понимания умножения вектора. Придумайте вектор как существование единой
вертикальной линии (вектор ряда) или горизонтального столбца (вектор столбца) изображения.
Профилирование - это процесс рассмотрения или извлечения вектора от изображения.
Умножение вектора ряда и вектора столбца приводит к скалярному числу. Причина этого в
определении математики умножения вектора и мы не должны исследовать этого в дальнейшем.
Важно только, что мы понимаем, как это сделано. Рассмотрим следующий пример:
Для умножения вектора мы берем соответственные элементы каждого вектора, поскольку мы
продвигаемся слева направо на векторе ряда и сверху вниз на векторе столбца. Мы тогда
добавляем каждую из сумм, чтобы получить результат, который является (2 x 4) + (2 x 3) + (3 x7) +
(8 x 1) = 43. Если мы желаем взять перекрестный продукт двух изображений, т.е., умножение
матриц, мы умножаем каждый из векторов ряда первого изображения на каждый вектор столбца
второго. Оба изображения должны иметь ту же пространственную резолюцию, или измерение,
как горизонтально, так и вертикально. Если изображения составляют 4 к 4, то мы будем иметь 16
значений после вычислений, и эти значения - это пиксели результирующего изображения.
Например
Первый ряд первого изображения умножаем на первый столбец второго изображения, чтобы
получить первый элемент изображения результата от умножения вектора. Отметьте, что индекс
для результата является [1, 1]. Индекс каждого элемента в изображении результата говорит нам,
какая это пара ряда-столбца, чтобы получить значение для нужного пикселя. Чтобы получить
значение [3, 4] пикселя, мы должны третий ряд первого изображения перемножить с четвертым
столбцом второго изображения. Образец кода предоставлен функцией cross_multiply, которая
перемножает два изображения. Функция имеет доступ к глобальным переменным матрицы,
содержащим изображения (X и Y) и запоминающим результат (Z).
Вопрос 2.10
Трехмерные системы обеспечивают такую дисциплину работы с тремя координатами, при
которой любое изменение одного вида автоматически приводит к соответствующим изменениям
на всех остальных видах.
Последовательность построения может быть разной. Последовательность построений может быть
следующей: сначала строится 3D вид, а затем автоматически генерируются 2D виды. Некоторые
системы способны преобразовывать сборочные чертежи механизма ортогональной проекции в 3d
вид этого изделия в разобранном состоянии.
Трехмерное моделирование особенно успешно применяется для создания сложных чертежей,
при проектировании размещения заводского оборудования, трубопроводов, различных
строительных сооружений, в тех приложениях, где необходимо обеспечить адекватные зазоры
между компонентами.
Возможность генерировать траектории движения инструмента и имитация функционирования
роботов делает 3D моделирование неотъемлемой частью интеграции САПР/АСТПП.
В некоторых системах 3D имеются средства автоматического анализа физических характеристик,
таких как вес, моменты инерции и средства решения геометрических проблем сложных
сопряжений и интерпретации. Поскольку в 3D системах существует автоматическая связь между
данными различных геометрических видов изображения, 3D моделирование полезно в тех
приложениях, где требуется многократное редактирование 3D образа на всех этапах процесса
проектирования.
Методы трехмерного моделирования делятся на 3 вида:
- Каркасное (проволочное) моделирование;
- Поверхностное (полигональное) моделирование;
- Твердотельное (сплошное, объемное) моделирование.
КАРКАСНОЕ МОДЕЛИРОВАНИЕ. Каркасная модель полностью описывается в терминах точек и
линий. Это моделирование самого низкого уровня и имеет ряд серьезных ограничений,
большинство из которых возникает из-за недостатка информации о гранях, которые заключены
между линиями, и невозможности выделить внутреннюю и внешнюю область изображения
твердого объемного тела.
Однако каркасная модель требует меньше памяти и вполне пригодна для решения задач,
относящихся к простым. Каркасное представление часто используется не при моделировании, а
при отображении моделей как один из методов визуализации.
Наиболее широко каркасное моделирование используется для имитации траектории движения
инструмента, выполняющего несложные операции по 2.5 или 3 осям. Понятие 2.5 оси связано с
тем, что более простые системы могут обрабатывать информацию о формах только с постоянным
поперечным сечением. Такую форму можно построить следующим образом – сначала создается
вид XY, а затем каждой точке приписываются два значения координаты Z, характеризующие
глубину изображения.
Недостатки каркасной модели:
- Неоднозначность – для того, чтобы представить модель в каркасном виде, нужно представить
все ребра (это эффект может привести к непредсказуемым результатам. Нельзя отличить видимые
грани от невидимых. Операцию по удалению невидимых линий можно выполнить только в
ручную с применением команд редактирования каждой отдельной линии, но результат этой
работы равносилен разрушению всей созданной каркасной конструкции, т.к. линии невидимы в
одном виде и видимы в другом);
- Невозможность распознавания криволинейных граней – мнимые ребра (боковые поверхности
цилиндрической формы реально не имеют ребер, хотя на изображении есть изображение
некоторых мнимых ребер, которые ограничивают такие поверхности. Расположение этих мнимых
ребер меняется в зависимости от направления вида, поэтому эти силуэты не распознаются как
элементы каркасной модели и не отображаются на них);
- Невозможность обнаружить взаимное влияние компонент (каркасная модель не несет
информации о поверхностях, ограничивающих форму, что обуславливает невозможность
обнаружения нежелательных взаимодействий между гранями объекта и существенно
ограничивает использование каркасной модели в пакетах, имитирующих траекторию движения
инструмента или имитацию функционирования робота, так как при таком моделировании не
могут быть выявлены на стадии проектирования многие коллизии, появляющиеся при
механической сборке);
- Трудности, связанные с вычислением физических характеристик;
- Отсутствие средств выполнения тоновых изображений (основным принципом техники
выполнения тоновых изображений, т.е. обеспечение плавных переходов различных цветов и
нанесение светотени, является то, что затенению подвергаются грани, а не ребра).
ПОВЕРХНОСТНОЕ МОДЕЛИРОВАНИЕ.
Поверхностное моделирование определяется в терминах точек, линий и поверхностей. При
построении поверхностной модели предполагается, что технические объекты ограничены
поверхностями, которые отделяют их от окружающей среды. Такая оболочка изображается
графическими поверхностями. Поверхность технического объекта снова становится ограниченной
контурами, но эти контуры уже являются результатом 2-х касающихся или пересекающихся
поверхностей. Точки объектов - вершины, могут быть заданы пересечением трех поверхностей.
Поверхностное моделирование имеет следующие преимущества по сравнению с каркасным:
- способность распознавания и изображения сложных криволинейных граней;
- изображение грани для получения тоновых изображений;
- особые построения на поверхности (отверстия);
- возможность получения качественного изображения;
- обеспечение более эффективных средств для имитации функционирования роботов.
В основу поверхностной модели положены два основных математических положения:
- Любую поверхность можно аппроксимировать многогранником, каждая грань которого является
простейшим плоским многоугольником;
- Наряду с плоскими многоугольниками в модели допускаются поверхности второго порядка и
аналитически неописываемые поверхности, форму которых можно определить с помощью
различных методов аппроксимации и интерполяции.
В отличие от каркасного моделирования каждый объект имеет внутреннюю и внешнюю часть.
ТИПЫ ПОВЕРХНОСТЕЙ
-Базовые геометрические поверхности (к этой категории относятся плоские поверхности, которые
можно получить, начертив сначала отрезок прямой, а затем применить команду, которая
разворачивает в пространстве образ этого отрезка на заданное расстояние; таким же образом
можно разворачивать и поверхности);
-Поверхности вращения, которые создаются вращением плоской грани вокруг определенной оси;
-Поверхности сопряжений и пересечений;
- Аналитически описываемые поверхности (каждая такая поверхность определяется одним
математическим уравнением с неизвестными X,Y,Z). Эти неизвестные обозначают искомые
координаты поверхности.
- Скульптурные поверхности (поверхности свободных форм или произвольные поверхности).
Методы геометрического моделирования скульптурных поверхностей сложной технической
формы применяют в областях, в которых проектируются динамические поверхности или
поверхности, к которым предъявляются повышенные эстетические требования.
Динамические поверхности подразделяются на 2 класса: омываемые средой (внешние обводы
самолетов, подводных лодок), трассирующие среду (воздушные и гидравлические каналы,
турбины). При проектировании скульптурных поверхностей применяют каркасно-кинематический
метод, основанный на перемещение некоторых образующих по направляющим или путем
построения сплайнов, продольных образующих кривых между точками, определенными в
трехмерном пространстве. Методы отображения скульптурных поверхностей в значительной
степени связаны с возможностями графических устройств. При этом отображение самой
поверхности не играет существенной роли, так как основное назначение этих методов визуальная
проверка корректности, гладкости и эстетичности полученной поверхности. В настоящее время
модели скульптурных поверхностей широко используются при проектировании и производстве
корпусом автомобилей, самолетов, предметов домашнего обихода.
- Составные поверхности. Составную поверхность можно полностью определить, покрыв его
сеткой четырехугольных кусков, то есть участками, ограниченными параллельными продольными
и поперечными линиями на поверхности. Каждый кусок имеет геометрическую форму
топологического прямоугольника, который отличается от обычного тем, что его стороны не
обязательно являются прямыми и попарно перпендикулярными. Границы кусков представляют
собой непрерывные кривые и обеспечивают гладкость поверхности, натянутой на сетку.
Внутренняя область каждого куска определяется методом интерполяции. Изображение составной
поверхности может быть получено на экране дисплея либо с помощью построения по точкам
сплайновых кривых, либо путем создания многогранного каркаса, на который система будет
автоматически аппроксимировать натяжение гладкой криволинейной поверхности.
ТВЕРДОТЕЛЬНОЕ МОДЕЛИРОВАНИЕ.
Твердотельная модель описывается в терминах того трехмерного объема, который занимает
определяемое ею тело. Твердотельное моделирование является самым совершенным и самым
достоверным методом создания копии реального объекта.
Преимущества твердотельных моделей:
- Полное определение объемной формы с возможностью разграничивать внутренний и внешние
области объекта, что необходимо для взаимовлияний компонент.
- Обеспечение автоматического удаления скрытых линий.
- Автоматическое построение 3D разрезов компонентов, что особенно важно при анализе
сложных сборочных изделий.
- Применение методов анализа с автоматическим получением изображения точных весовых
характеристик методом конечных элементов.
- Получение тоновых эффектов, манипуляции с источниками света.
Методы создания трехмерных твердотельных моделей подразделяются на два класса:
- Метод конструктивного представления (C-Rep);
- Метод граничного представления (B-Rep).
МЕТОД КОНСТРУКТИВНОГО ПРЕДСТАВЛЕНИЯ.
Метод конструктивного представления заключается в построении твердотельных моделей, из
базовых составляющих элементов, называемых твердотельными примитивами, и определяемых
формой, размерами, точкой привязки и ориентацией.
Модель конструктивной геометрии представляет собой бинарный древовидный граф G=(V,U) , где
V – множество вершин – базовые элементы формы – примитивы, из которых конструируется
объект, а U– множество ребер, которые обозначают теоретико-множественные операции,
выполняемые над соответствующими базовыми элементами формы.
Каждый примитив модели задан множеством атрибутов:
A=<X,Y,Z,Lx,Ly,Lz,Sx,Sy,...Sn,> где X,Y,Z - где координаты точки привязки локальной СК к системе
целого объекта; Lx,Ly,Lz - углы поворота, Sx,Sy,...Sn - метрические параметры объекта.
Булевы операции являются существующим инструментарием для построения модели c-rep при
определении взаимоотношений между соседними примитивами. Булевы операции базируются
на понятиях алгебраической теории множеств, и имеют обычный смысл, когда применяются к
твердотельным объектам. Наиболее часто следующие операции: пересечение, объединение и
разность.
МЕТОД ГРАНИЧНОГО ПРЕДСТАВЛЕНИЯ.
Граничное представление – описание границ объекта или точного аналитического задания
граней, описывающих тело. Это единственный метод, позволяющий создать точное, а не
приближенное представление геометрического твердого тела. При таком подходе от
пользователя требуется задание контуров или границ объекта, а также эскизы разных видов
объектов, и указание линий связей между этими видами, чтобы можно было установить взаимное
соответствие.
ПЛЮСЫ И МИНУСЫ.
Каждый из двух названных методов имеет свои достоинства и недостатки, по сравнению с другим.
Система с c-rep представлением имеет преимущества при первоначальном формировании
модели, так как поострить объемную модель правильной формы из объемных примитивов с
использованием булевых операций достаточно просто. Кроме того, этот метод обеспечивает
более компактное описание модели в БД. Однако b-rep представление является актуальным при
создании сложных форм, которые воссоздать с помощью c-rep метода очень трудоемко. В c-rep
методе модель хранится в виде комбинации данных и логических процедур, при этом требуется
меньше памяти, но большим оказывается объем вычислений при воспроизведении модели. С
другой стороны модели c b-rep представлением хранит точное описание границ модели, для этого
нужно больше памяти, но не требуется почти никаких вычислений для воссоздания изображения.
Относительным достоинством систем с b-rep является сравнительная простота преобразования
граничного представления в соответствующую каркасную модель и обратно. Причина такой
простоты заключается в том, что описание границ подобно описанию каркасной модели, а это
облегчает преобразование модели из одной формы в другую, и делает системы с b-rep
представлением совместимыми с уже имеющимися системами.
Примеры систем твердотельного моделирования: PowerShape, SolidEdge, T-Flex CAD. CATIA,
CADDS5, EUCLID.
ГИБРИДНОЕ МОДЕЛИРОВАНИЕ.
В виду относительного характера преимуществ и недостатков методов c-rep и b-rep были
разработаны гибридные системы, которые сочетают в себе оба метода. Гибридное
моделирование, реализованное в системах CADDS5, UG/Solid Modeling, Euclid, CATIA позволяет
сочетать каркасную, поверхностную и твердотельную геометрию и использовать комбинации
жестко размерного моделирования (с явным заданием геометрии) и параметрического
моделирования.
Конечно, лучше бы использовать единственную стратегию моделирования для всех продуктов, но,
во-первых, часто приходится использовать ранее наработанные данные, либо данные,
импортируемые из других систем, а они могут иметь разные представления. Во-вторых, в какие –
то моменты эффективнее работать с проволочными моделями или 3 D геометрией, описанной
поверхностью. И наконец, часто бывает проще иметь различные представления для разных
компонентов. Например, листовое покрытие выгоднее моделировать поверхностью, а для
трубопроводов использовать осесимметричное представление.
Вопрос 3.1 Назначение и функции библиотек GLScene, FireMonkey (FMX), ODE, GLBASS,
PhysX NVIDIA, Graphics32, OpenAL. Основные типы базовых графических объектов GLScene.
Назначение и функции библиотек GLScene
GLScene — графический движок, написанный для использования на языке программирования
Delphi и использующий библиотеку OpenGL в качестве интерфейса программирования
приложений. С его помощью программирование трёхмерной графики становится более простым
и быстрым. Последние версии движка также доступны для использования в Lazarus.
GLScene позволяет программистам создавать 3D-объекты OpenGL в design-time с использованием
интерфейса, показаного на картинке. Большое количество объектов и дополнительных
визуальных компонентов VCL помогает программистам создавать мощные 3D-приложения для
Delphi.
Поддерживаемые для загрузки форматы файлов: 3ds, obj, vrml, smd, md2, md3, nmf, oct, lwo, b3d,
gl2, gls, ms3d, Nurbs, lod, и некоторые другие.
Поддерживаемые для сохранения форматы файлов: obj и smd.
Поддерживаемая физика: ODE, Newton Game Dynamics. Также есть небольшой собственный
движок расчёта столкновений с учётом законов сохранения импульса DCE.
Основные типы базовых графических объектов GLScene
TGLCamera — объект камера. Это точка, из которой смотрят на трёхмерный мир. Камере можно
задавать положение и целевой объект, на который она смотрит. Варьируя её параметр
FocalLength, можно изменять фокусное расстояние камеры. Параметры DepthOfView и
NearPlaneBias отсекают дальние и ближние объекты. Отсечение дальних объектов может сильно
повысить скорость работы.
Таким образом, поле зрения камеры — это усечённый конус, ограниченный с обеих сторон
параметрами DepthOfView и NearPlane, угол которого задан через параметр FocalLength.
TGLSceneViewer — объект просмотрщик трёхмерного мира. Его нужно кинуть на форму и
установить ему свойство Camera, то есть указав камеру, с которой надо смотреть на мир. После
этого он будет показывать то, что видит указанная камера.
TGLDummyCube — объект, не содержащий графики, но имеющий позицию (position), ротацию в
виде векторов направления (direction) и верха (up) и масштаб (scale). При помощи этих свойств
объекту можно придавать различные положения в пространстве. А используя несколько
TGLDummyCube’ов, прикреплённых друг к другу, можно создавать сложные пространственные
конструкции, как, например, скелет, в котором кости прикриплены друг к другу. Кроме того
TGLDummyCube удобен для использования в качестве целевого объекта камеры TGLCamera.
TGLMaterialLibrary — библиотека материалов. Находящиеся в ней материалы переносятся в
видеопамять видеокарты. Все материалы могут использоваться разными объектами GLScene
одновременно. Каждый материал может иметь свою текстуру или использовать текстуры других
материалов со своими настройками её отображения. Таким образом, например, загрузив текстуру
машины зелёного цвета, можно использовать её в другом материале, но изменив её цвет на,
скажем, синий.
TGLFreeForm — статичная трёхмерная модель. Используется, чтобы загрузить, например, здания,
ландшафты, деревья и прочие подобные объекты. Чтобы загрузить 3D-модель в GLScene
достаточно двух строчек кода:
// Указываем какую библиотеку материалов использовать.
GLFreeForm1.MaterialLibrary := GLMaterialLibrary1;
// Загружаем 3D-модель.
GLFreeForm1.LoadFromFile('mymodel.3ds');
Также надо добавить в uses модуль загрузчика моделей. Для моделей 3ds это GLFile3DS, для
моделей smd — GLFileSMD, и т. д. по аналогии. После загрузки модель полностью попадает в
видеопамять, и процессорное время на её отображение практически не тратится. При изменении
матрицы этого объекта, в видеопамять пересылается только новая матрица.
TGLActor — анимированная трёхмерная модель. Используется, чтобы загрузить модели людей,
монстров, других движущихся объектов. Загрузка аналогична загрузке модели в TGLFreeForm.
Чтобы запустить анимацию достаточно двух строчек.
// Грузим модель со скелетной анимацией 'mymodel.smd'.
GLActor1.LoadFromFile('mymodel.smd');
// Добавляем анимацию ходьбы из файла 'walk.smd'.
GLActor1.AddDataFromFile('walk.smd');
// Переключаемся на анимацию ходьбы 'walk'.
GLActor1.SwitchToAnimation('walk');
// Запускаем проигрывание анимации в циклическом режиме.
GLActor1.AnimationMode := aamLoop;
В отличие от моделей, находящихся в TGLFreeForm, здесь рендеринг частично возложен на
центральный процессор. Когда происходит анимирование модели со скелетной анимацией, то
для каждого положения каждой кости в каждый момент времени происходит перерасчёт
положения вершин модели, после чего они пересылаются в видеопамять и отображаются на
экране. Этот подход более медленный, но зато позволяет добиться практически идеальной
плавности движений.
TGLPoints — позволяет рисовать на экране точки. Добавлять точки нужно в список Positions. Чтобы
точки были цветными, нужно добавлять цвета в список Colors. Если в него добавлен только один
цвет, то все точки будут этого цвета. Если количество цветов равно количеству точек, то каждая
точка будет своего цвета.
TGLLines — позволяет рисовать линии и сплайны. Линии задаются точками, добавлять которые
можно в список Nodes через процедуру NodesAdd. Линии по заданным точкам рисуются в
зависимости от способа отображения LineSplineMode. Если это lsmSegments, то каждые две точки
означают отдельную линию. Если lsmLines, то линии проводятся от точки к точке. Если какой-то
другой режим, то по точкам рисуется сплайн, то есть плавная линия, проходящая через все
заданные точки. Плавность линии зависит от параметра Division. Чем он больше, тем линия
плавнее. Если в опции LinesOption включён параметр loUseNodeColorForLines, то для каждой точки
линии можно будет использовать свой цвет. Цвета задаются в NodeColor.
Также есть возможность выделять разными способами точки по которым строятся линии. Способ
задаётся в параметре LineNodesAspect.
lnaInvisible — выделение отсутствует.
lnaAxes — выделение осями.
lnaCube — выделение кубами
lnaDodecahedron — выделение двенадцатигранниками.
TGLLightSource — источник освещения, который освещает всю трёхмерную сцену. Их в OpenGL
может быть максимум восемь. Поэтому в GLScene их тоже восемь. Светит данный источник
освещения или нет, определяется параметром Shining (светимость).
За цвет освещения отвечают три параметра: Ambient, Diffuse и Specular. Ambient — это общее
освещение сцены, не зависящее от положения источника света, как освещённость в тени в
солнечный день. Diffuse — направленный свет, зависит от положения источника. То есть, если
поверхность отвёрнута от него, то он её не освещает. Specular — зеркальный свет. Зависит ещё и
от нормали поверхности. С его помощью можно делать яркие блики, как например яркая точка на
железном блестящем шарике от лампочки.
За ослабление яркости света в зависимости от удаления от источника отвечают три параметра:
ConstAttenuation, LinearAttenuation, QuadraticAttenuation. Первый — это постоянное ослабление (в
общем не зависит от расстояния, а просто можно считать, что управляет яркостью источника
света), второй — линейное ослабление, третий — квадратичное.
Источник света может быть прожектором. Для этого его параметр SpotDirection нужно выставить в
lsSpot и указать параметры прожектора. SpotDirection — указывает направление света
прожектора. SpotCutOff — угол конуса прожектора. Если он равен 180 градусам, то считается, что
это не прожектор, а обычный источник освещения. Если меньше 90, то прожектор.
SpotExponent — коэффициент изменения яркости от центральной точки пятна прожектора до его
краёв.
FireMonkey (FMX) — GUI-библиотека, использующая возможности графического процессора.
Является кроссплатформенной: поддерживаются Windows, Mac OS и Apple iOS.
Под названием VG-Scene разрабатывалась Евгением Крюковым (компания KSDev)[1] из Улан-Удэ[2].
В 2011 году американская компания Embarcadero Technologies купила права на библиотеку и
включила её в состав своих продуктов. FireMonkey входит, параллельно с традиционной Visual
Component Library, в состав Delphi XE2, C++Builder XE2 и RAD Studio XE2, включая RadPHP и
Embarcadero Prism.
Используя возможности Pixel Shader 2.0 FireMonkey позволяет обогащать графический интерфейс
программ широким набором визуальных эффектов. Даёт возможность строить пользовательские
масштабируемые векторные и 3D-интерфейсы.
Позволяет отделить пользовательский интерфейс от бизнес-логики и механизмов доступа к
данным (см. Model-View-Controller), что в частности позволяет размещать невизуальные части
приложения в облачных сервисах: Amazon или Azure.
Если попытаться в двух словах описать основную часть продукта — то это сценарный компонент (к
примеру — главный компонент от GLScene), векторный, только 2D. Имеются свои компоненты, а
главное — мощное средство их редактирования со скинами. То есть с помощью встроенного
редактора вы можете создать свой уникальный компонент, на базе одного или нескольких
базовых. Имеются встроенные разнообразные методы анимирования компонентов, работа с
векторной графикой.
PhysX - кроссплатформенный физический движок для симуляции ряда физических
явлений, а также комплект средств разработки (SDK) на его основе. Первоначально
разрабатывался компанией Ageia для своего физического процессора PhysX. После того,
как Ageia была приобретена nVidia, движок перешёл в собственность компании nVidia,
которая продолжает его дальнейшую разработку. nVidia адаптировала движок для
ускорения физических расчётов на своих графических чипах с архитектурой CUDA. PhysX
может также производить вычисления с использованием обычного процессора. В
настоящее время PhysX доступен на следующих платформах: Windows, Linux, Mac OS X,
Wii, PlayStation 3, Xbox 360 (аппаратное ускорение возможно только на платформе
Windows). Движок используется во многих играх и активно предлагается для продажи
(лицензирования) всем желающим.
Подпрограммное обеспечение PhysX SDK позволяет разработчикам игр избегать
написания собственного программного кода для обработки сложных физических
взаимодействий в современных компьютерных играх. 20 июля 2005 года компания Sony
лицензировала PhysX SDK для использования в своей игровой приставке седьмого
поколения PlayStation 3.[1] PhysX SDK может использоваться не только в среде Microsoft
Windows, но также и в Linux, однако поддержка процессора PhysX пока работает только
для Windows.
В отличие от большинства других физических движков, которые поставляются и
устанавливаются вместе с игрой, PhysX SDK необходимо установить отдельно. Он
устанавливается как отдельный драйвер. Если на компьютере установлена плата PhysX, то
драйвер PhysX SDK при работе будет использовать её ресурсы. Если же PhysX отсутствует,
то вычислительные задачи будут переноситься на центральный процессор.[2]
Физический движок PhysX SDK состоит из трёх главных компонентов по обработке физики:
обработка твёрдых тел (англ. rigid body);
обработка тканей (англ. cloth);
обработка жидкостей (англ. fluid);
После установки драйвера PhysX SDK присутствует возможность просмотреть работу этих
трёх компонентов движка в действии.
OpenAL (англ. Open Audio Library) — свободно распространяемый кроссплатформенный
интерфейс программирования приложений (API) для работы с аудиоданными. Ключевой
особенностью является работа со звуком в 3D пространстве и использование эффектов
EAX. Поддерживается компанией Creative.
Основные функции библиотеки OpenAL - исходные объекты, аудиобуферы, и
единственный слушатель. Исходные объекты включают в себя указатель на буфер,
скорость, позицию, направление и интенсивность звука. Слушатель содержит скорость,
позицию, направление и общее усиление звука в целом. Буферы содержат аудиоданные в
формате PCM в 8-ми либо 16-битном варианте, а также в моно или стерео. Функция
рендеринга звука производит необходимые вычисления, такие как определение
расстояния, Эффекта Доплера, и так далее.
Для конечного пользователя результат обработки этих компонентов OpenAL даёт
совершенно естественное звучание при перемещении персонажей в трёхмерном
виртуальном мире. А программист может задействовать OpenAL в своей готовой
трёхмерной OpenGL-программе почти без труда.
В отличие от спецификаций OpenGL, спецификации OpenAL включают в себя два API: ядро,
включающее в себя вызовы функций OpenAL, и ALC (Audio Library Context) — API,
используемый для управления контекстом рендеринга, контролем использования
ресурсов и задействования блокировок в мультипоточных вычислениях. Также существует
ALUT — библиотека, предоставляющая функции высокого уровня для упрощения
написания программы, она аналогична библиотеке GLUT у OpenGL.
OpenAL расширяем: программисты, либо компании, не входящие в число разработчиков
OpenAL, могут добавлять в него свои расширения. Например для того чтобы «научить»
библиотеку задействовать функции своих устройств с закрытыми спецификациями.
Расширения могут быть повышены до уровня ARB, то есть войти в спецификации OpenAL в
её новой версии.
Для расширенной обработки цифрового сигнала или аппаратного ускорения звука могут
быть задействованы EFX (Effects Extension) или EAX.
Download