Модуль 3D-визуализации

Модуль 3D-визуализации SimInTech предназначен для динамического рендеринга объектов в трехмерном пространстве. Функционал модуля позволяет работать как со стандартными примитивами (сфера, конус и т.д.), так и с объектами, загруженными из файла.

Существует три способа создания окна модуля 3D-визуализации (число создаваемых окон не ограничено):
  1. При помощи скриптовых функций языка программирования (Viewer3DCreate, Viewer3DCreateWindow). Данные функции в качестве результата возвращают идентификатор (ID) созданного окна 3D-визуализации, при помощи которого осуществляется дальнейшая работа с экземпляром модуля.
  2. Из главного меню SimInTech («Инструменты 3D» – «Создать окно 3D-визуализации»). В данном случае для работы с модулем ID окна можно получить двумя способами:
    1. При помощи скриптовой функции Viewer3DGetWindowList, которая возвращает массив ID всех существующих окон 3D-визуализации.
    2. При помощи функции «ID окна в буфер» меню «Инструменты» окна 3D-визуализации. (Рисунок 1)

      Рисунок 1. Получение ID окна 3D-визуализации

  3. При установке на схемное окно SimInTech стандартного блока «Визуализация 3D - Просмотрщик» библиотеки «Визуализация 3D» выполняется автоматическое создание экземпляра модуля 3D-визуализации. Особенность данного способа заключается во взаимодействии модуля со стандартными блоками «Визуализация 3D - Объект», расположенными на схеме SimInTech и являющимися подчиненными по отношению к базовому блоку «Визуализация 3D - Просмотрщик». При этом каждому блоку «Визуализация 3D - Объект» на окне 3D-модели соответствует определенный 3D-объект. Для организации иерархии и относительного движения 3D-объектов блоки «Визуализация 3D - Объект» могут быть подчиненными не только по отношению к базовому блоку «Визуализация 3D - Просмотрщик», но и друг к другу (при этом 3D-объект создается в локальной системе координат объекта-родителя). Данный подход позволяет выполнять рендеринг 3D-объектов в соответствии с иерархией на схеме SimInTech, а также визуализацию поля распределения того или иного параметра системы (Рисунок 2). ID окна при необходимости может быть получен согласно п. 2.

    Рисунок 2. Пример визуализации

Окно модуля 3D-визуализации состоит из четырех основных секций (Рисунок 3):
  1. Главное меню. Содержит структурированный перечень всех функций модуля 3D-визуализации.
  2. Панель быстрого доступа. Обеспечивает быстрый доступ к базовым функциям модуля 3D-визуализации. На панели также располагается меню выбора параметра для визуализации.
  3. Область рендеринга 3D-объектов. Предназначена для навигации по 3D-модели. Направление координатных осей глобальной системы координат представлено на рисунке ниже (Рисунок 4). Шкала параметра для визуализации располагается в левой части области рендеринга (Рисунок 2).
  4. Строка состояния. Служит для индикации некоторых параметров 3D-модели:
    1. Координаты выделенного 3D-объекта в глобальной системе координат (ГСК).
    2. Текущее значение кадровой частоты (FPS).
    3. Величина визуализируемого параметра в заданной точке.

Рисунок 3. Окно модуля 3D-визуализации

Рисунок 4. Направление координатных осей глобальной системы координат

Существует опционально отображаемая пятая секция окна модуля 3D-визуализации – Дерево 3D-объектов (Рисунок 5). Дерево содержит структурированный перечень всех 3D-объектов.

Рисунок 5. Дерево 3D-объектов

Как видно из рисунка выше, все 3D-объекты структурно делятся на три группы по способу их создания:
  1. Динамические объекты со схемы. Иерархический список (дерево) 3D-объектов, рендеринг которых выполнен по запросу блоков «Визуализация 3D - Объект» со схемы SimInTech. Блокам расчетной схемы в соответствие создаются 3D-объекты по заданным координатам и геометрии.

    Для рендеринга 3D-объекта стандартный блок «Визуализация 3D - Объект» обеспечен следующим набором свойств:

    1. Тип графического 3D-примитива. Тип создаваемого для блока 3D-объекта (сфера, усеченный конус, цилиндр, параллелепипед, объект из файла). Для 3D-объекта из файла доступны следующие форматы: *.stl, *.obj, *.objf, *.glsm.
    2. Координаты ЛСК 3D-объекта в ЛСК родителя. Координаты (X, Y, Z) локальной системы координат (ЛСК), связанной с 3D-объектом, в ЛСК объекта-родителя.
    3. Углы Эйлера ЛСК 3D-объекта в ЛСК родителя, °. Углы Эйлера (угол прецессии, угол нутации, угол собственного вращения) локальной системы координат, связанной с 3D-объектом, в ЛСК объекта-родителя..
    4. Число элементов разбиения. Количество ячеек разбиения 3D-объекта.
    5. Координата X в ЛСК. Координаты опорных точек 3D-объекта по оси X в его ЛСК. Число опорных точек зависит от типа геометрии и количества элементов разбиения. Для случая сферы и объекта из файла число опорных точек равно N, для случая усеченного конуса, цилиндра и параллелепипеда – N+1, где N – число расчетных элементов (ячеек).
    6. Координата Y. Координаты опорных точек 3D-объекта по оси Y в его ЛСК.
    7. Координата Z. Координаты опорных точек 3D-объекта по оси Z в его ЛСК.
    8. Геометрия сечения. Задается геометрия поперечного сечения каждого расчетного элемента (ячейки) 3D-объекта. Для сферы задается диаметр, для усеченного конуса – наружный и внутренний диаметр нижнего сечения, наружный и внутренний диаметр верхнего сечения, для цилиндра – наружный диаметр, для параллелепипеда – длина и ширина сечения, для объекта из файла – углы Эйлера 3D-объекта в его ЛСК. Таким образом, размерность массива для случая сферы должна быть равна N, для случая усеченного конуса – N*4, для случая цилиндра – N, для случая параллелепипеда – N*2, для случая объекта из файла – N*3.
    9. Число элементов разбиения 3D-объекта, при превышении которого использовать наложение текстуры. При работе 3D-модели в режиме визуализации поля распределения параметра использовать наложение текстуры для упрощения рендеринга, если количество элементов разбиения 3D-объекта превышает заданное.
    10. Цвет 3D-объекта в режиме визуализации. В режиме визуализации поля распределения параметра 3D-объекты со схемы окрашиваются в соответствии с заданной опцией (использовать цвет 3D-объекта по умолчанию, использовать цвет 3D-объекта из свойства блока, использовать цвет 3D-объекта в соответствии с величиной параметра).
    11. Цвет 3D-объекта. Определяет цвет 3D-объекта в режиме визуализации поля распределения параметра при использовании опции цвета из свойства.
    12. Значение параметра №1, е.и. Величина параметра для визуализации поля распределения. Задается для каждого расчетного элемента (ячейки). Размерность должна соответствовать N.
    13. Значение параметра №2, е.и. Величина параметра для визуализации поля распределения.
    14. Значение параметра №3, е.и. Величина параметра для визуализации поля распределения.
    15. Параметры визуализации. Служебное свойство, необходимое для хранения атрибутов 3D-объекта.

    В свойствах базового блока «Визуализация 3D - Просмотрщик» задаются следующие настройки:

    1. Интервал перерисовки 3D-модели, с. Временной шаг, отвечающий за частоту запроса данных модулем 3D-визуализации.
    2. Координаты ЛСК центра масс в ГСК. Координаты (X, Y, Z) локальной системы координат, связанной с центром масс, в глобальной системе координат.
    3. Углы Эйлера ЛСК центра масс в ГСК, °. Углы Эйлера (угол прецессии, угол нутации, угол собственного вращения) локальной системы координат, связанной с центром масс, в глобальной системе координат.
    4. Имена визуализируемых параметров. Имена параметров, отображаемые в меню выбора параметра для визуализации модуля 3D-визуализации.
  2. Динамические объекты из скрипта. Иерархический список (дерево) 3D-объектов, рендеринг которых выполнен по запросу скриптовых функций языка программирования.
  3. Статические объекты загруженные. Иерархический список (дерево) 3D-объектов, рендеринг которых выполнен по запросу пользователя непосредственно из модуля 3D-визуализации.
Встроенные инструменты модуля 3D-визуализации, вызов которых выполняется из панели быстрого доступа и главного меню окна, обеспечивают реализацию следующего функционала:
  1. Навигация по 3D-модели. Вращение камеры вокруг вертикальной оси цели при помощи одновременного нажатия левой кнопки мыши и движения курсора. По умолчанию цель камеры располагается в начале координат ГСК. При параллельном нажатии клавиши Alt будет выполнено перемещение ГСК в соответствующей плоскости. Вращение колеса мыши вперед обеспечивает приближение камеры к цели, назад – отдаление. Нажатие кнопки Shift при навигации снижает скорость движения камеры, Ctrl – увеличивает.
  2. Увеличить. Приближение камеры к цели.
  3. Уменьшить. Отдаление камеры от цели.
  4. Режим выделения 3D-объектов. Щелчок левой или правой кнопкой мыши по 3D-объекту приводит к его выделению. Выделенные объекты окрашиваются в синий цвет. Доступен режим мультивыделения при удерживании клавиши Ctrl. Выделение также доступно при работе с деревом 3D-объектов. Для выделенных объектов доступны функции контекстного меню, вызываемого по нажатию на правую кнопку мыши:
    1. Добавить объект. Рендеринг нового статического 3D-объекта в виде дочернего по отношению к выделенному статическому.
    2. Удалить объект. Удаление выделенного статического 3D-объекта.
    3. Свойства. Вызов окна редактора свойств выделенного 3D-объекта.
    4. Окно свойств в SimInTech. Вызов окна редактирования свойств соответствующего блока на схеме SimInTech (для 3D-объектов, рендеринг которых выполнен по запросу блоков на схеме SimInTech).
    При работе с модулем 3D-визуализации в режиме выделения 3D-объектов предусмотрен ряд дополнительных возможностей:
    1. Двойной щелчок левой кнопкой мыши по 3D-объекту при удерживании клавиши Shift приведет к вызову окна редактирования свойств соответствующего блока на схеме SimInTech (для 3D-объектов, рендеринг которых выполнен по запросу блоков на схеме SimInTech).
    2. Щелчок левой кнопкой мыши по 3D-объекту приведет к подсветке на схеме SimInTech соответствующего блока (для 3D-объектов, рендеринг которых выполнен по запросу блоков на схеме SimInTech). Обратное действие, а именно выделение объекта на схеме SimInTech, приведет к выделению соответствующего 3D-объекта.
    3. Двойной щелчок левой кнопкой мыши по 3D-объекту при удерживании клавиши Alt приведет к вызову окна редактора свойств выделенного 3D-объекта.
    4. Двойной щелчок левой кнопкой мыши по 3D-объекту при удерживании клавиши Ctrl приведет к установке выделенного 3D-объекта в качестве цели камеры. Для сброса цели камеры следует выполнить ту же операцию при отсутствии выделенного объекта.
  5. Открыть. Загрузка статического 3D-объекта из файла. Доступные форматы: *.obj, *.glsm, *.objf, *.stl.
  6. Сбросить вид. Возврат вида камеры к стандартному по умолчанию.
  7. Вид спереди. Приведение вида камеры к одной из стандартных изометрических проекций.
  8. Вид сбоку. Приведение вида камеры к одной из стандартных изометрических проекций.
  9. Вид сверху. Приведение вида камеры к одной из стандартных изометрических проекций.
  10. Поверх всех окон. Установка ока модуля 3D-визуализации поверх остальных окон.
  11. Дерево 3D-объектов. Показать/скрыть дерево 3D-объектов.
  12. Горизонтальная координатная сетка. Показать/скрыть горизонтальную координатную сетку.
  13. Оси ГСК. Показать/скрыть координатные оси ГСК.
  14. Освещение. Включение/выключение освещения 3D-модели.
  15. Нодализационная сетка 3D-объектов. Показать/скрыть нодализационную сетку 3D-объектов.
  16. Скриншот в буфер. Сделать скриншот области рендеринга 3D-объектов и скопировать в буфер обмена.
  17. ID окна в буфер. Скопировать ID текущего окна 3D-визуализации в буфер обмена.
  18. Запрашивать данные с шагом. Инструмент отвечает за взаимодействие модуля 3D-визуализации со схемой SimInTech. При отключенной опции в процессе расчета данные со схемы в модуль 3D-визуализации не поступают.
  19. Перерисовывать на каждом шаге. На каждом шаге обмена данными со схемой SimInTech получать новые координаты и геометрию для соответствующих 3D-объектов и обновлять их положение.
  20. Поле распределения параметра. Показать/скрыть поле распределения параметра. Численные значения параметров для визуализации со схемы передаются в модуль 3D на каждом шаге обмена данными. В процессе моделирования 3D-объекты, рендеринг которых выполнен по запросу блоков со схемы SimInTech, окрашиваются в соответствии с выбранной опцией, текущим значением визуализируемого параметра и выбранной цветовой кодировкой (Рисунок 2).
  21. Обновить примитивы. Запрос данных со схемы SimInTech и перерисовка 3D-объектов (используется в процессе редактирования схемы SimInTech для обновления 3D-модели).
  22. Сохранять/Загружать конфигурацию. Функционал модуля 3D-визуализации в режиме совместной работы со схемой SimInTech позволяет сохранять и загружать текущую конфигурацию окна, включая все настройки (позиция камеры, положение окна, состояние кнопок и т.д.), и статические примитивы, добавленные или загруженные в процессе работы с 3D-моделью.

    Сохранение выполняется при уничтожении окна 3D-визуализации при условии активной опции Сохранять/Загружать конфигурацию в файлы, имеющие расширение *.3dconf.#, где # – порядковый номер окна 3D-визуализации.

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

  23. Параметры. Вызвать окно редактора параметров текущего экземпляра модуля 3D-визуализации. Редактор параметров позволяет устанавливать:
    1. Цвет фона 3D-модели.
    2. Размер горизонтальной координатной сетки вдоль оси X.
    3. Размер горизонтальной координатной сетки вдоль оси Z.
    4. Частота горизонтальной координатной сетки.
    5. Цвет 3D-объектов по умолчанию.
    6. Цвет выделенного 3D-объекта.
    7. Смещение 3D-модели вдоль оси X.
    8. Смещение 3D-модели вдоль оси Y.
    9. Смещение 3D-модели вдоль оси Z.
    10. Тип сортировки 3D-объектов при рендеринге. Отвечает за очередность рендеринга 3D-объектов.
    11. Сглаживание. Устранение эффекта «зубчатости», возникающего на краях 3D-объектов.

      Следующий перечень свойств также доступен в окне параметров модуля 3D-визуализации при совместной работе со схемой SimInTech:

    12. Цветовая кодировка при визуализации поля распределения параметра.
    13. Признак пользовательского задания максимального и минимального значений визуализируемого параметра.
    14. Минимальное значение визуализируемого параметра, е.и.
    15. Максимальное значение визуализируемого параметра, е.и.
    16. Число точек разбиения шкалы.
    17. Число значащих цифр подписей шкалы.
    18. Число десятичных знаков подписей шкалы.

Скриптовые функции языка программирования, позволяющие производить различные операции с модулем 3D-визуализации, по функционалу подразделяются на пять типов:

  1. Работа с окном модуля 3D-визуализации:
    1. Viewer3DCreate
    2. Viewer3DCreateWindow
    3. Viewer3DDestroyWindow
    4. Viewer3DGetWindowList
    5. Viewer3DSetWindowSize
    6. Viewer3DSetWindowPosition
  2. Рендеринг и уничтожение 3D-объектов:
    1. Viewer3DPlotObject
    2. Viewer3DRemoveObject
    3. Viewer3DRemoveScriptObjects
  3. Положение 3D-объектов в ГСК и ЛСК:
    1. Viewer3DSetObjectPosition
    2. Viewer3DSetObjectGeom
    3. Viewer3DSetLCSPosition
    4. Viewer3DSetLCSAngles
  4. Внешний вид и атрибуты 3D-объектов:
    1. Viewer3DSetObjectScale
    2. Viewer3DSetObjectVisibility
    3. Viewer3DSetObjectTransparency
    4. Viewer3DShowObjectAxes
    5. Viewer3DSetObjectColor
    6. Viewer3DSetObjectTexture
    7. Viewer3DSetObjectName
  5. Работа с 3D-моделью:
    1. Viewer3DSetCameraPosition
    2. Viewer3DSetCameraTarget
    3. Viewer3DSetBackground
    4. Viewer3DSetAxesVisibility
    5. Viewer3DSetGridVisibility
    6. Viewer3DSetNodeGridVisibility
    7. Viewer3DPlotTextLabel
    8. Viewer3DSetTextLabel