Модуль 3D-визуализации SimInTech предназначен для динамического рендеринга объектов в
трехмерном пространстве. Функционал модуля позволяет работать как со стандартными примитивами
(сфера, конус и т.д.), так и с объектами, загруженными из файла.
Существует три способа создания окна модуля 3D-визуализации (число создаваемых окон не
ограничено):
- При помощи скриптовых функций языка программирования (Viewer3DCreate,
Viewer3DCreateWindow). Данные функции в качестве результата возвращают идентификатор (ID)
созданного окна 3D-визуализации, при помощи которого осуществляется дальнейшая работа с
экземпляром модуля.
- Из главного меню SimInTech («Инструменты 3D» – «Создать окно 3D-визуализации»). В данном
случае для работы с модулем ID окна можно получить двумя способами:
- При помощи скриптовой функции Viewer3DGetWindowList, которая возвращает массив ID
всех существующих окон 3D-визуализации.
- При помощи функции «ID окна в буфер» меню «Инструменты» окна 3D-визуализации.
(Рисунок 1)
Рисунок 1. Получение ID окна 3D-визуализации
- При установке на схемное окно SimInTech стандартного блока «Визуализация 3D -
Просмотрщик» библиотеки «Визуализация 3D» выполняется автоматическое создание экземпляра
модуля 3D-визуализации. Особенность данного способа заключается во взаимодействии модуля
со стандартными блоками «Визуализация 3D - Объект», расположенными на схеме SimInTech и
являющимися подчиненными по отношению к базовому блоку «Визуализация 3D - Просмотрщик».
При этом каждому блоку «Визуализация 3D - Объект» на окне 3D-модели соответствует
определенный 3D-объект. Для организации иерархии и относительного движения 3D-объектов
блоки «Визуализация 3D - Объект» могут быть подчиненными не только по отношению к базовому
блоку «Визуализация 3D - Просмотрщик», но и друг к другу (при этом 3D-объект создается в
локальной системе координат объекта-родителя). Данный подход позволяет выполнять рендеринг
3D-объектов в соответствии с иерархией на схеме SimInTech, а также визуализацию поля
распределения того или иного параметра системы (Рисунок 2). ID окна при необходимости может
быть получен согласно п. 2.
Рисунок 2. Пример визуализации
Окно модуля 3D-визуализации состоит из четырех основных секций
(
Рисунок 3):
- Главное меню. Содержит структурированный перечень всех функций модуля
3D-визуализации.
- Панель быстрого доступа. Обеспечивает быстрый доступ к базовым функциям модуля
3D-визуализации. На панели также располагается меню выбора параметра для
визуализации.
- Область рендеринга 3D-объектов. Предназначена для навигации по 3D-модели.
Направление координатных осей глобальной системы координат представлено на рисунке ниже
(Рисунок 4).
Шкала параметра для визуализации располагается в левой части области рендеринга
(Рисунок 2).
- Строка состояния. Служит для индикации некоторых параметров 3D-модели:
- Координаты выделенного 3D-объекта в глобальной системе координат (ГСК).
- Текущее значение кадровой частоты (FPS).
- Величина визуализируемого параметра в заданной точке.
Рисунок 3. Окно модуля 3D-визуализации
Рисунок 4. Направление координатных осей глобальной системы координат
Существует опционально отображаемая пятая секция окна модуля 3D-визуализации – Дерево
3D-объектов (Рисунок 5). Дерево содержит структурированный перечень всех 3D-объектов.
Рисунок 5. Дерево 3D-объектов
Как видно из рисунка выше, все 3D-объекты структурно делятся на три группы по способу их
создания:
- Динамические объекты со схемы. Иерархический список (дерево) 3D-объектов,
рендеринг которых выполнен по запросу блоков «Визуализация 3D - Объект» со схемы
SimInTech. Блокам расчетной схемы в соответствие создаются 3D-объекты по заданным
координатам и геометрии.
Для рендеринга 3D-объекта стандартный блок «Визуализация 3D -
Объект» обеспечен следующим набором свойств:
- Тип графического 3D-примитива. Тип создаваемого для блока 3D-объекта (сфера,
усеченный конус, цилиндр, параллелепипед, объект из файла). Для 3D-объекта из файла
доступны следующие форматы: *.stl, *.obj, *.objf, *.glsm.
- Координаты ЛСК 3D-объекта в ЛСК родителя. Координаты (X, Y, Z) локальной
системы координат (ЛСК), связанной с 3D-объектом, в ЛСК объекта-родителя.
- Углы Эйлера ЛСК 3D-объекта в ЛСК родителя, °. Углы Эйлера (угол прецессии,
угол нутации, угол собственного вращения) локальной системы координат, связанной с
3D-объектом, в ЛСК объекта-родителя..
- Число элементов разбиения. Количество ячеек разбиения 3D-объекта.
- Координата X в ЛСК. Координаты опорных точек 3D-объекта по оси X в его ЛСК.
Число опорных точек зависит от типа геометрии и количества элементов разбиения. Для
случая сферы и объекта из файла число опорных точек равно N, для случая
усеченного конуса, цилиндра и параллелепипеда – N+1, где N – число
расчетных элементов (ячеек).
- Координата Y. Координаты опорных точек 3D-объекта по оси Y в его ЛСК.
- Координата Z. Координаты опорных точек 3D-объекта по оси Z в его ЛСК.
- Геометрия сечения. Задается геометрия поперечного сечения каждого расчетного
элемента (ячейки) 3D-объекта. Для сферы задается диаметр, для усеченного конуса –
наружный и внутренний диаметр нижнего сечения, наружный и внутренний диаметр верхнего
сечения, для цилиндра – наружный диаметр, для параллелепипеда – длина и ширина
сечения, для объекта из файла – углы Эйлера 3D-объекта в его ЛСК. Таким образом,
размерность массива для случая сферы должна быть равна N, для случая усеченного
конуса – N*4, для случая цилиндра – N, для случая параллелепипеда –
N*2, для случая объекта из файла – N*3.
- Число элементов разбиения 3D-объекта, при превышении которого использовать
наложение текстуры. При работе 3D-модели в режиме визуализации поля
распределения параметра использовать наложение текстуры для упрощения рендеринга, если
количество элементов разбиения 3D-объекта превышает заданное.
- Цвет 3D-объекта в режиме визуализации. В режиме визуализации поля
распределения параметра 3D-объекты со схемы окрашиваются в соответствии с заданной
опцией (использовать цвет 3D-объекта по умолчанию, использовать цвет 3D-объекта из
свойства блока, использовать цвет 3D-объекта в соответствии с величиной
параметра).
- Цвет 3D-объекта. Определяет цвет 3D-объекта в режиме визуализации поля
распределения параметра при использовании опции цвета из свойства.
- Значение параметра №1, е.и. Величина параметра для визуализации поля
распределения. Задается для каждого расчетного элемента (ячейки). Размерность должна
соответствовать N.
- Значение параметра №2, е.и. Величина параметра для визуализации поля
распределения.
- Значение параметра №3, е.и. Величина параметра для визуализации поля
распределения.
- Параметры визуализации. Служебное свойство, необходимое для хранения
атрибутов 3D-объекта.
В свойствах базового блока «Визуализация 3D - Просмотрщик» задаются следующие
настройки:
- Интервал перерисовки 3D-модели, с. Временной шаг, отвечающий за частоту
запроса данных модулем 3D-визуализации.
- Координаты ЛСК центра масс в ГСК. Координаты (X, Y, Z) локальной системы
координат, связанной с центром масс, в глобальной системе координат.
- Углы Эйлера ЛСК центра масс в ГСК, °. Углы Эйлера (угол прецессии, угол
нутации, угол собственного вращения) локальной системы координат, связанной с центром
масс, в глобальной системе координат.
- Имена визуализируемых параметров. Имена параметров, отображаемые в меню
выбора параметра для визуализации модуля 3D-визуализации.
- Динамические объекты из скрипта. Иерархический список (дерево) 3D-объектов,
рендеринг которых выполнен по запросу скриптовых функций языка программирования.
- Статические объекты загруженные. Иерархический список (дерево) 3D-объектов,
рендеринг которых выполнен по запросу пользователя непосредственно из модуля
3D-визуализации.
Встроенные инструменты модуля 3D-визуализации, вызов которых выполняется из панели быстрого
доступа и главного меню окна, обеспечивают реализацию следующего функционала:
- Навигация по 3D-модели. Вращение камеры вокруг вертикальной оси цели при помощи
одновременного нажатия левой кнопки мыши и движения курсора. По умолчанию цель камеры
располагается в начале координат ГСК. При параллельном нажатии клавиши Alt будет
выполнено перемещение ГСК в соответствующей плоскости. Вращение колеса мыши вперед
обеспечивает приближение камеры к цели, назад – отдаление. Нажатие кнопки Shift при
навигации снижает скорость движения камеры, Ctrl – увеличивает.
- Увеличить. Приближение камеры к цели.
- Уменьшить. Отдаление камеры от цели.
- Режим выделения 3D-объектов. Щелчок левой или правой кнопкой мыши по 3D-объекту
приводит к его выделению. Выделенные объекты окрашиваются в синий цвет. Доступен режим
мультивыделения при удерживании клавиши Ctrl. Выделение также доступно при работе с
деревом 3D-объектов. Для выделенных объектов доступны функции контекстного меню,
вызываемого по нажатию на правую кнопку мыши:
- Добавить объект. Рендеринг нового статического 3D-объекта в виде дочернего по
отношению к выделенному статическому.
- Удалить объект. Удаление выделенного статического 3D-объекта.
- Свойства. Вызов окна редактора свойств выделенного 3D-объекта.
- Окно свойств в SimInTech. Вызов окна редактирования свойств соответствующего
блока на схеме SimInTech (для 3D-объектов, рендеринг которых выполнен по запросу
блоков на схеме SimInTech).
При работе с модулем 3D-визуализации в
режиме выделения 3D-объектов
предусмотрен ряд дополнительных возможностей:
- Двойной щелчок левой кнопкой мыши по 3D-объекту при удерживании клавиши
Shift приведет к вызову окна редактирования свойств соответствующего блока
на схеме SimInTech (для 3D-объектов, рендеринг которых выполнен по запросу блоков на
схеме SimInTech).
- Щелчок левой кнопкой мыши по 3D-объекту приведет к подсветке на схеме SimInTech
соответствующего блока (для 3D-объектов, рендеринг которых выполнен по запросу
блоков на схеме SimInTech). Обратное действие, а именно выделение объекта на схеме
SimInTech, приведет к выделению соответствующего 3D-объекта.
- Двойной щелчок левой кнопкой мыши по 3D-объекту при удерживании клавиши Alt
приведет к вызову окна редактора свойств выделенного 3D-объекта.
- Двойной щелчок левой кнопкой мыши по 3D-объекту при удерживании клавиши Ctrl
приведет к установке выделенного 3D-объекта в качестве цели камеры. Для сброса
цели камеры следует выполнить ту же операцию при отсутствии выделенного объекта.
- Открыть. Загрузка статического 3D-объекта из файла. Доступные форматы: *.obj,
*.glsm, *.objf, *.stl.
- Сбросить вид. Возврат вида камеры к стандартному по умолчанию.
- Вид спереди. Приведение вида камеры к одной из стандартных изометрических
проекций.
- Вид сбоку. Приведение вида камеры к одной из стандартных изометрических
проекций.
- Вид сверху. Приведение вида камеры к одной из стандартных изометрических
проекций.
- Поверх всех окон. Установка ока модуля 3D-визуализации поверх остальных
окон.
- Дерево 3D-объектов. Показать/скрыть дерево 3D-объектов.
- Горизонтальная координатная сетка. Показать/скрыть горизонтальную координатную
сетку.
- Оси ГСК. Показать/скрыть координатные оси ГСК.
- Освещение. Включение/выключение освещения 3D-модели.
- Нодализационная сетка 3D-объектов. Показать/скрыть нодализационную сетку
3D-объектов.
- Скриншот в буфер. Сделать скриншот области рендеринга 3D-объектов и скопировать в
буфер обмена.
- ID окна в буфер. Скопировать ID текущего окна 3D-визуализации в буфер
обмена.
- Запрашивать данные с шагом. Инструмент отвечает за взаимодействие модуля
3D-визуализации со схемой SimInTech. При отключенной опции в процессе расчета данные со
схемы в модуль 3D-визуализации не поступают.
- Перерисовывать на каждом шаге. На каждом шаге обмена данными со схемой SimInTech
получать новые координаты и геометрию для соответствующих 3D-объектов и обновлять их
положение.
- Поле распределения параметра. Показать/скрыть поле распределения параметра.
Численные значения параметров для визуализации со схемы передаются в модуль 3D на каждом
шаге обмена данными. В процессе моделирования 3D-объекты, рендеринг которых выполнен по
запросу блоков со схемы SimInTech, окрашиваются в соответствии с выбранной опцией, текущим
значением визуализируемого параметра и выбранной цветовой кодировкой (Рисунок 2).
- Обновить примитивы. Запрос данных со схемы SimInTech и перерисовка 3D-объектов
(используется в процессе редактирования схемы SimInTech для обновления 3D-модели).
- Сохранять/Загружать конфигурацию. Функционал модуля 3D-визуализации в режиме
совместной работы со схемой SimInTech позволяет сохранять и загружать текущую конфигурацию
окна, включая все настройки (позиция камеры, положение окна, состояние кнопок и т.д.), и
статические примитивы, добавленные или загруженные в процессе работы с
3D-моделью.
Сохранение выполняется при уничтожении окна 3D-визуализации при условии
активной опции Сохранять/Загружать конфигурацию в файлы, имеющие расширение
*.3dconf.#, где # – порядковый номер окна 3D-визуализации.
Загрузка и применение
конфигурации осуществляются аналогично при создании окна.
- Параметры. Вызвать окно редактора параметров текущего экземпляра модуля
3D-визуализации. Редактор параметров позволяет устанавливать:
- Цвет фона 3D-модели.
- Размер горизонтальной координатной сетки вдоль оси X.
- Размер горизонтальной координатной сетки вдоль оси Z.
- Частота горизонтальной координатной сетки.
- Цвет 3D-объектов по умолчанию.
- Цвет выделенного 3D-объекта.
- Смещение 3D-модели вдоль оси X.
- Смещение 3D-модели вдоль оси Y.
- Смещение 3D-модели вдоль оси Z.
- Тип сортировки 3D-объектов при рендеринге. Отвечает за очередность рендеринга
3D-объектов.
- Сглаживание. Устранение эффекта «зубчатости», возникающего на краях
3D-объектов.
Следующий перечень свойств также доступен в окне параметров модуля
3D-визуализации при совместной работе со схемой SimInTech:
- Цветовая кодировка при визуализации поля распределения параметра.
- Признак пользовательского задания максимального и минимального значений
визуализируемого параметра.
- Минимальное значение визуализируемого параметра, е.и.
- Максимальное значение визуализируемого параметра, е.и.
- Число точек разбиения шкалы.
- Число значащих цифр подписей шкалы.
- Число десятичных знаков подписей шкалы.
Скриптовые функции языка программирования, позволяющие производить различные операции с
модулем 3D-визуализации, по функционалу подразделяются на пять типов:
- Работа с окном модуля 3D-визуализации:
- Viewer3DCreate
- Viewer3DCreateWindow
- Viewer3DDestroyWindow
- Viewer3DGetWindowList
- Viewer3DSetWindowSize
- Viewer3DSetWindowPosition
- Рендеринг и уничтожение 3D-объектов:
- Viewer3DPlotObject
- Viewer3DRemoveObject
- Viewer3DRemoveScriptObjects
- Положение 3D-объектов в ГСК и ЛСК:
- Viewer3DSetObjectPosition
- Viewer3DSetObjectGeom
- Viewer3DSetLCSPosition
- Viewer3DSetLCSAngles
- Внешний вид и атрибуты 3D-объектов:
- Viewer3DSetObjectScale
- Viewer3DSetObjectVisibility
- Viewer3DSetObjectTransparency
- Viewer3DShowObjectAxes
- Viewer3DSetObjectColor
- Viewer3DSetObjectTexture
- Viewer3DSetObjectName
- Работа с 3D-моделью:
- Viewer3DSetCameraPosition
- Viewer3DSetCameraTarget
- Viewer3DSetBackground
- Viewer3DSetAxesVisibility
- Viewer3DSetGridVisibility
- Viewer3DSetNodeGridVisibility
- Viewer3DPlotTextLabel
- Viewer3DSetTextLabel