- Как настроить уровень детализации
- Как настроить уровень детализации
- Как настроить уровень детализации
- Inventor
- Редактирование представлений с уровнем детализации
- Редактирование представлений с уровнем детализации
- Копирование представлений с уровнем детализации
- Удаление представлений с уровнем детализации
- Переименование представлений с уровнем детализации
- Создайте и активируйте представление с уровнем детализации во вставленном узле
- OpenSceneGraph: Уровни детализации (LOD) и фоновая загрузка объектов
- Введение
- 1. Использование уровней детализации (LOD)
- 2. Техника фоновой загрузки узлов сцены
- 3. Динамическая (runtime) загрузка модели
- Заключение
Как настроить уровень детализации
Чтобы настроить детализацию журналов программы, выполните следующие действия:
- В дереве Консоли управления выполните следующие действия:
- если вы хотите настроить уровень детализации журналов для нераспределенного Сервера безопасности, раскройте узел нужного Сервера безопасности;
- если вы хотите настроить уровень детализации журналов для Серверов безопасности профиля, раскройте узел Профили и в нем раскройте узел профиля, для Серверов безопасности которого вы хотите настроить уровень детализации журналов.
- Выберите узел Настройка .
- Раскройте блок параметров Диагностика .
- Нажмите на кнопку Настройка в блоке параметров Детализация журналов.
Откроется окно Параметры диагностики .
Если вы выбрали несколько событий в окне, то уровень детализации изменится на Пользовательский . Программа будет записывать основные события в работе программы, а также подробную информацию для указанных вами событий.
Если вы выбрали все события в окне, то уровень детализации изменится на Максимальный . Программа будет записывать в журналы подробную информацию о всех событиях.
Ведение подробных журналов программы может замедлять работу программы.
В подробные журналы могут быть записаны конфиденциальные данные из содержимого сообщений.
Если необходимо сбросить настроенную детализацию журнала, нажмите на кнопку Сбросить .
Программа изменит уровень детализации на Минимальный . В журналы будут записываться только основные события в работе программы: результат проверки объектов, результат загрузки обновлений баз и результат добавления ключа.
Если программа работает на сервере Microsoft Exchange в составе группы DAG, уровень детализации, настроенный на одном из серверов Microsoft Exchange, автоматически распространяется на остальные серверы Microsoft Exchange, входящие в эту группу DAG. На остальных серверах Microsoft Exchange в составе этой группы DAG настраивать уровень детализации не требуется.
Источник
Как настроить уровень детализации
Чтобы настроить детализацию журналов программы, выполните следующие действия:
- В дереве Консоли управления выполните следующие действия:
- если вы хотите настроить уровень детализации журналов для нераспределенного Сервера безопасности, раскройте узел нужного Сервера безопасности;
- если вы хотите настроить уровень детализации журналов для Серверов безопасности профиля, раскройте узел Профили и в нем раскройте узел профиля, для Серверов безопасности которого вы хотите настроить уровень детализации журналов.
- Выберите узел Настройка .
- Раскройте блок параметров Диагностика .
- Нажмите на кнопку Настройка в блоке параметров Детализация журналов.
Откроется окно Параметры диагностики .
Если вы выбрали несколько событий в окне, то уровень детализации изменится на Пользовательский . Программа будет записывать основные события в работе программы, а также подробную информацию для указанных вами событий.
Если вы выбрали все события в окне, то уровень детализации изменится на Максимальный . Программа будет записывать в журналы подробную информацию о всех событиях.
Ведение подробных журналов программы может замедлять работу программы.
В подробные журналы могут быть записаны конфиденциальные данные из содержимого сообщений и сетевых запросов.
Если необходимо сбросить настроенную детализацию журнала, нажмите на кнопку Сбросить .
Программа изменит уровень детализации на Минимальный . В журналы будут записываться только основные события в работе программы: результат проверки объектов, результат загрузки обновлений баз и результат добавления ключа.
Если программа работает на сервере Microsoft Exchange в составе группы DAG, уровень детализации, настроенный на одном из серверов Microsoft Exchange, автоматически распространяется на остальные серверы Microsoft Exchange, входящие в эту группу DAG. На остальных серверах Microsoft Exchange в составе этой группы DAG настраивать уровень детализации не требуется.
Источник
Как настроить уровень детализации
Чтобы настроить детализацию журналов программы, выполните следующие действия:
- В дереве Консоли управления выполните следующие действия:
- если вы хотите настроить уровень детализации журналов для нераспределенного Сервера безопасности, раскройте узел нужного Сервера безопасности;
- если вы хотите настроить уровень детализации журналов для Серверов безопасности профиля, раскройте узел Профили и в нем раскройте узел профиля, для Серверов безопасности которого вы хотите настроить уровень детализации журналов.
- Выберите узел Настройка .
- Раскройте блок параметров Диагностика .
- Нажмите на кнопку Настройка в блоке параметров Детализация журналов.
Откроется окно Параметры диагностики .
Если вы выбрали несколько событий в окне, то уровень детализации изменится на Пользовательский . Программа будет записывать основные события в работе программы, а также подробную информацию для указанных вами событий.
Если вы выбрали все события в окне, то уровень детализации изменится на Максимальный . Программа будет записывать в журналы подробную информацию о всех событиях.
Ведение подробных журналов программы может замедлять работу программы.
В подробные журналы могут быть записаны конфиденциальные данные из содержимого сообщений.
Если необходимо сбросить настроенную детализацию журнала, нажмите на кнопку Сбросить .
Программа изменит уровень детализации на Минимальный . В журналы будут записываться только основные события в работе программы: результат проверки объектов, результат загрузки обновлений баз и результат добавления ключа.
Если программа работает на сервере Microsoft Exchange в составе группы DAG, уровень детализации, настроенный на одном из серверов Microsoft Exchange, автоматически распространяется на остальные серверы Microsoft Exchange, входящие в эту группу DAG. На остальных серверах Microsoft Exchange в составе этой группы DAG настраивать уровень детализации не требуется.
Источник
Inventor
Не удалось извлечь оглавление
Редактирование представлений с уровнем детализации
Автор:
После создания представления с уровнем детализации и сохранения его в узле оно может быть активировано в любой используемой сборке.
Редактирование представлений с уровнем детализации
Редактировать можно любое созданное или скопированное представление с уровнем детализации.
- Откройте сборку, которая содержит редактируемое представление с уровнем детализации.
- В браузере разверните папку «Представления» и «Уровень детализации».
- При необходимости активируйте позиционное представление или видовое представление.
- Щелкните правой кнопкой мыши представление с уровнем детализации, которое будет редактироваться, и выберите «Активизировать».
- Если необходимо, щелкните правой кнопкой мыши компоненты и выберите команду «Подавить» для подавления или снимите флажок для отмены подавления.
- По окончании сохраните файл.
Копирование представлений с уровнем детализации
Копировать можно любое представление с уровнем детализации, включая системные по умолчанию. Системные представления с уровнем детализации по умолчанию невозможно изменять, но копию можно редактировать.
- Откройте сборку, содержащую представление с уровнем детализации, которое нужно скопировать.
- В браузере разверните папку «Представления» и «Уровень детализации».
- Щелкните правой кнопкой мыши соответствующее представление с уровнем детализации и выберите «Копировать». Копия добавляется с таким же именем, как у оригинала, но только с увеличенным на 1.
- При необходимости щелкните копию и переименуйте ее.
- Щелкните правой кнопкой мыши копию и выберите «Активизировать».
- Если необходимо, подавите или восстановите компоненты и сохраните файл.
Удаление представлений с уровнем детализации
Удалить можно любое представление с уровнем детализации, кроме системных по умолчанию и активных представлений.
- Откройте сборку, содержащую представление с уровнем детализации, которое нужно удалить.
- В браузере разверните папку «Представления» и «Уровень детализации».
- Щелкните правой кнопкой мыши удаляемое представление с уровнем детализации и выберите «Удалить».
Переименование представлений с уровнем детализации
Переименовать можно любое представление с уровнем детализации, кроме системных по умолчанию.
- Откройте сборку, содержащую представление с уровнем детализации, которое нужно переименовать.
- В браузере разверните папку «Представления» и «Уровень детализации».
- Щелкните представление с уровнем детализации, которое нужно переименовать, и введите описательное имя.
Создайте и активируйте представление с уровнем детализации во вставленном узле
Сборка может ассоциативно обращаться к представлению с уровнем детализации во вставленном узле на любой глубине в иерархии сборки. Все настройки уровня детализации ниже экземпляра вставленного узла управляются представлением узла.
Создайте представление с уровнем детализации во вставленном узле.
- Выберите
«Открыть» и укажите файл сборки. - Дважды щелкните узел, чтобы его открыть.
- Разверните папку «Представления» и «Уровень детализации».
- Создайте новое представление с уровнем детализации с помощью одного из указанных методов.
- Щелкните правой кнопкой мыши папку «Уровень детализации» в браузере и выберите команду «Создать уровень детализации».
- Щелкните правой кнопкой мыши представление с уровнем детализации в браузере и выберите «Копировать».
При необходимости щелкните имя представления и присвойте ему описательное имя.
Активируйте представление с уровнем детализации во вставленном узле.
- Откройте файл сборки, содержащий вставленный узел.
- Разверните браузер и, выполнив прокрутку, перейдите к сборке, представление которой необходимо активировать.
- Разверните папку «Представления», а затем «Уровень детализации».
- Щелкните правой кнопкой мыши соответствующее представление с уровнем детализации и выберите «Активизировать».
Источник
OpenSceneGraph: Уровни детализации (LOD) и фоновая загрузка объектов
Введение
Одной из интереснейших задач, решаемых посредством трехмерной графики является создание «больших миров» — протяженных сцен, содержащих большое число объектов с возможностью неограниченного перемещения по сцене. Решение этой задачи упирается в понятные ограничения, присущие аппаратному обеспечению компьютера.
Типичный пример: «большой мир» при визуализации железной дороги на движке OSG. Не хватает только лангольеров, пожирающих мир за поездом.
1. Использование уровней детализации (LOD)
Техника использования уровней детализации позволяет отображать один и тот же объект более или менее детально, в зависимости от расстояния от него до наблюдателя. Использование этой техники основано на том простом соображении, что мелкие детали трехмерной модели неразличимы на большом расстоянии, значит нет необходимости в их прорисовке. С одной стороны этот прием позволяет уменьшить общее количество геометрических примитивов, выводимых в буфер кадра, а с другой — не терять в дальности отображения объектов сцены, что очень полезно при создании больших открытых миров.
OSG предоставляет инструменты для реализации этого приема через класс osg::LOD, наследуемый от всё того же osg::Group. Этот класс позволяет представить один и тот же объект в нескольких уровнях детализации. Каждый уровень детализации характеризуется минимальной и максимальной дистанцией до наблюдателя, при соблюдении которой происходит переключение отображения объекта в этом уровне детализации.
osg::LOD позволяет задавать данный диапазон сразу при задании дочерней ноды, или позже, применением методы setRange()
Продолжаем мучать цессну и проиллюстрируем описанную технику примером
main.h
main.h
Для начала загружаем модель
Теперь необходимо генерировать несколько (ограничимся для примера двумя) моделек, с более низким уровнем детализации. Для этого скопируем загруженную ноду дважды, применяя методику так называемого «глубокого» копирования класса, для ноды реализуемого методом clone()
Теперь редуцируем геометрию этих моделей, используя класс osgUtil::Simplifer. Степень упрощение модели задается методом setSampleRatio() данного класса — чем меньше передаваемый параметр, тем менее детальной будет модель после применения процедуры редукции
Когда у нас есть модельки разного уровня детализации мы можем зарядить их в корневую ноду, созданную как умный указатель на osg::LOD. Для каждого уровня детализации задаем дистанцию отображения этого уровня
Под FLT_MAX понимается в некотором роде «бесконечно» большое расстояние до наблюдателя. После запуска вьювера получаем следующую картину
Уровень детализации 3
Уровень детализации 2
Уровень детализации 1
Видно, как при отдалении камеры от объекта снижается детальность отображаемой геометрии. Применяя этот прием можно добиться высокой реалистичности сцены при малом расходе ресурсов.
2. Техника фоновой загрузки узлов сцены
В движке OSG представлены классы osg::ProxyNode и osg::PagedLOD, предназначенный для баллансировки нагрузки при рендеринге сцены. Оба класса наследуются от osg::Group.
Узел типа osg::ProxyNode уменьшает время запуска приложения до начала рендеринга, если в сцене огромное количество загружаемых с диска и отображаемых моделей. Он работает как интерфейс к внешним файлам, позволяя выполнять отложенную загрузку моделей. Для добавления дочерних узлов используется метод setFileName() (вместо addChild) чтобы установить имя файла модели на диске и загрузить его динамически.
Узел osg::PagedNode наследует методы osg::LOD и загружает и выгружает уровни детализации таким образом, чтобы избежать перегрузки конвейера OpenGL и обеспечить плавную отрисовку сцены.
3. Динамическая (runtime) загрузка модели
Посмотрим, как происходит процесс загрузки модели с применением osg::ProxyNode.
main.h
main.cpp
Процесс загрузки здесь немного отличается
Вместо явной загрузки модели коровы мы указываем корневой ноде имя файла, где содержится модель и индекс дочерней ноды, куда следует поместить эту модель после её загрузки. При выполнении программы мы получи такой результат
Видно, что точка обзора выбрана не лучшим образом — камера упирается прямо в зеркальный бок коровы. Это произошло потому, что модель загрузилась уже после запуска рендера и инициализации камеры, когда нода 0 ещё не была видна. Вьювер просто не смог просчитать необходимые параметры камеры. Однако, модель загрузилась и мы может настроить режим её отображения путем манипуляций мышью
Что происходит в рассмотренном примере? osg::ProxyNode и osg::PagedLOD работают в данном случае как контейнеры. Внутренний менеджер данных OSG будет посылать запросы и загружать данные в граф сцены по мере того, как возникнет необходимость в файлах моделей и уровнях детализации.
Данный механизм работает в нескольких фоновых потоках и управляет загрузкой статических данных, расположенных в файлах на диске и динамических данных, генерируемых и добавляемых в процессе выполнения программы.
Движок автоматически обрабатывает узлы, не отображаемые в текущем вьюпорту и удаляет их из графа сцены когда рендер перегружен. Однако, такое поведение не затрагивает узлы osg::ProxyNode.
Как и прокси-узел, класса osg::PagedLOD также имеет метод setFileName() для задания пути к загружаемой модели, однако для его необходимо установить диапазон дистанции видимости, как для узла osg::LOD. При условии, что у нас имеется файл cessna.osg и низкополигональная модель уровня L1 мы можем организовать выгружаемую ноду следующим образом
Нужно понимать, что узел modelL1 не может быть выгружен из памяти, так как это обычный дочерний не прокси-узел.
При рендеринге внешне не видна разница между osg::LOD и osg::PagedLOD, если использовать только один уровень детализации модели. Интересной идеей будет организовать громадный кластер моделей Cessna, используя класс osg::MatrixTransform. Для этого можно использовать например такую функцию
Пример программы реализующей фоновую загрузку 10000 самолетов
main.h
main.cpp
Предполагается, что самолеты будут располагаться на плоскости с интервалом в 50 единиц координат. При загрузке мы увидим, что загружаются только те цессны, что попадаю в кадр. Те самолеты, что исчезают из кадра пропадают из дерева сцены.
Заключение
Этот урок в цикле об OpenSceneGraph будет последним, выполненным в формате «How To». В рамках двенадцати статей удалось уместить базовые принципы работы и использования OpenSceneGraph на практике. Очень надеюсь, что данный движок стал более понятен русскоязычному разработчику.
Это не означает, что я закрываю тему OpenSceneGraph на ресурсе, напротив, будущие статьи планируется посвятить более продвинутым техникам и приемам применения OSG в разработке графических приложений. Но для этого следует накопить хороший материал и переработать массу англоязычных источников, а на это требуется время.
Но я не прощаюсь, благодарю за внимание и до новых встреч!
Источник