Тип QML SceneEnvironment
Позволяет настроить, как рендерится сцена. Подробнее...
| Оператор импорта: | import QtQuick3D |
| Наследует: |
Свойства
- antialiasingMode : перечисление
- antialiasingQuality : перечисление
- aoBias : float
- aoDistance : float
- aoDither : bool
- aoSampleRate : int
- aoSoftness : float
- aoStrength : float
- backgroundMode : перечисление
- clearColor : цвет
- depthPrePassEnabled : bool
- depthTestEnabled : bool
- effects : Список<QtQuick3D::Effect>
- lightProbe : QtQuick3D::Texture
- probeExposure : float
- probeHorizon : float
- probeOrientation : вектор3d
- temporalAAEnabled : bool
- temporalAAStrength : float
- tonemapMode : перечисление
Подробное описание
SceneEnvironment определяет набор глобальных свойств для рендеринга сцены.
Документация по свойствам
[с 5.15] antialiasingMode : перечисление
Это свойство контролирует режим устранения ступенчатости, применяемый при рендеринге сцены.
Возможные значения:
| Константа | Описание |
|---|---|
SceneEnvironment.NoAA |
Устранение ступенчатости не применяется. |
SceneEnvironment.SSAA |
Применяется устранение ступенчатости с помощью сверхвыборки. |
SceneEnvironment.MSAA |
Применяется устранение ступенчатости с помощью многократной выборки. |
SceneEnvironment.ProgressiveAA |
Применяется устранение ступенчатости с помощью прогрессивного метода. |
Значение по умолчанию — SceneEnvironment.NoAA.
Сверхвыборка
Сцена рендерится в более высоком разрешении, а затем масштабируется до фактического разрешения.
Плюсы: Высокое качество. Устраняет ступенчатость всего содержимого сцены, а не только контуров геометрии.
Минусы: Обычно дороже, чем MSAA. Увеличивает использование видеопамяти. Поддерживается только с элементами View3D, у которых renderMode установлен в Offscreen, так как техника подразумевает рендеринг в текстуру сначала.
Многократная выборка
Края геометрии сверхвыбираются, что приводит к более плавным контурам. Однако этот метод не влияет на материалы внутри геометрии.
Плюсы: Работает с любым элементом View3D, независимо от renderMode. Хорошие результаты для контуров геометрии, где ступенчатость часто наиболее заметна; работает с быстрой анимацией без проблем. Производительность зависит исключительно от возможностей системы (GPU).
Минусы: Не помогает с проблемами текстур или отражений. Увеличивает использование видеопамяти. Может быть дорогостоящим для использования на менее мощном графическом оборудовании. При использовании элементов View3D с renderMode, отличным от Offscreen, MSAA может контролироваться только на уровне окна, его нельзя включать или отключать отдельно для отдельных элементов View3D.
Примечание: Для элементов View3D с renderMode, отличным от Offscreen, многократную выборку можно включить только через QSurfaceFormat объекта QQuickWindow или QQuickView. Это повлияет на все содержимое, как 2D, так и 3D, в этом окне.
Прогрессивное устранение ступенчатости
Это свойство включает и устанавливает уровень прогрессивного устранения ступенчатости, применяемого к сцене.
Когда все содержимое сцены перестаёт двигаться, камера слегка смещается между кадрами, а результат каждого нового кадра смешивается с предыдущими кадрами. Чем больше кадров вы накапливаете, тем лучше будет результат.
Плюсы: Предоставляет отличные результаты, когда все содержимое сцены неподвижно.
Минусы: Не срабатывает, если происходят какие-либо визуальные изменения. Дорого из-за необходимости накапливать и смешивать. Увеличивает использование видеопамяти.
Это свойство было добавлено в Qt 5.15.
[с 5.15] antialiasingQuality : перечисление
Это свойство устанавливает уровень устранения ступенчатости, применяемый к сцене. Поведение зависит от используемого antialiasingMode. При antialiasingMode, установленное в NoAA, это свойство не влияет.
Возможные значения:
| Константа | Описание |
|---|---|
SceneEnvironment.Medium |
SSAA: Устранение ступенчатости использует разрешение сверхвыборки 1,2x. MSAA: Устранение ступенчатости использует 2 образца на пиксель. ProgressiveAA: Устранение ступенчатости использует 2 кадра для конечного изображения. |
SceneEnvironment.High |
SSAA: Устранение ступенчатости использует разрешение сверхвыборки 1,5x. MSAA: Устранение ступенчатости использует 4 образца на пиксель. ProgressiveAA: Устранение ступенчатости использует 4 кадра для конечного изображения. |
SceneEnvironment.VeryHigh |
SSAA: Устранение ступенчатости использует разрешение сверхвыборки 2,0x. MSAA: Устранение ступенчатости использует 8 образцов на пиксель. ProgressiveAA: Устранение ступенчатости использует 8 кадров для конечного изображения. |
Значение по умолчанию — SceneEnvironment.High
Это свойство было добавлено в Qt 5.15.
aoBias : float
Это свойство определяет расстояние обрезания, предотвращающее проявление эффекта затенения объектов на близком расстоянии. Более высокие значения увеличивают расстояние между объектами, прежде чем будет виден эффект затенения.
Примечание: Если вы видите затенение объектов с эффектом затенения, где его быть не должно, немного увеличьте значение, чтобы удалить близкие результаты.
Значение по умолчанию — 0,0.
aoDistance : float
Это свойство определяет, насколько далеко распространяются тени затенения от объектов. Большие расстояния приводят к увеличению нагрузки на производительность.
Значение по умолчанию — 5,0.
aoDither : bool
При включении этого свойства края полос затенения разбрасываются для повышения плавности (с риском появления заметных шаблонных артефактов).
Примечание: Очень большие расстояния между плоскостями обрезки камеры могут вызвать проблемы с эффектом затенения. Если вы видите странные полосы в эффекте затенения, попробуйте настроить свойство clipFar вашей камеры, чтобы оно было ближе к вашему содержимому.
Значение по умолчанию — false.
См. также PerspectiveCamera.clipFar и OrthographicCamera.clipFar.
aoSampleRate : int
Это свойство определяет качество эффекта затенения (больше оттенков серого) за счёт производительности.
Значение должно быть 2, 3 или 4. Значение по умолчанию — 2.
aoSoftness : float
Это свойство определяет плавность краев затенения.
Значение должно быть между 0,0 и 50,0. Значение по умолчанию — 50,0.
aoStrength : float
Это свойство определяет количество эффекта затенения. Эффект затенения — это форма приближённого глобального освещения, которая вызывает недирекционное самозатенение, где объекты расположены близко друг к другу. Значение 100 приводит к полному затемнению теней; меньшие значения приводят к тому, что тени выглядят светлее. Значение 0 полностью отключает эффект затенения, улучшая производительность за счёт реалистичности визуального изображения 3D-объектов, рендерящихся в сцене.
Все значения, кроме 0, оказывают одинаковое влияние на производительность.
Значение по умолчанию — 0,0. Максимальное значение — 100,0.
backgroundMode : перечисление
Это свойство контролирует, будет ли и как очищаться фон сцены.
Примечание: Очистка не всегда выполняется: в зависимости от свойства renderMode элемент View3D может не выполнять никакой очистки самостоятельно, в этом случае SceneEnvironment.Transparent и SceneEnvironment.Color не имеют эффекта. Только режим Offscreen (рендеринг в текстуру) поддерживает все режимы очистки. В режиме Underlay используйте QQuickWindow::setColor() или Window.color для управления цветом очистки сцены Qt Quick. SkyBox обрабатывается по-другому, так как это подразумевает отрисовку фактической геометрии, поэтому работает одинаково во всех режимах рендеринга.
| Константа | Описание |
|---|---|
SceneEnvironment.Transparent |
Сцена очищается до прозрачного состояния. Это полезно для отрисовки 3D-контента поверх другого элемента. Этот режим не имеет эффекта, когда View3D использует режим рендеринга Underlay или Overlay. |
SceneEnvironment.Color |
Сцена очищается цветом, заданным свойством clearColor. Этот режим не имеет эффекта, когда View3D использует режим рендеринга Underlay или Overlay. |
SceneEnvironment.SkyBox |
Сцена не будет очищаться, а вместо этого будет отрисовываться SkyBox или Skydome. SkyBox определяется с помощью HDRI-карты, определённой в свойстве lightProbe. |
Значение по умолчанию — SceneEnvironment.Transparent
См. также QQuickWindow::setColor() и Window::color.
clearColor : color
Это свойство определяет цвет, который будет использоваться для очистки области просмотра при использовании SceneEnvironment.Color для свойства backgroundMode.
Значение по умолчанию — Qt::black
См. также backgroundMode.
depthPrePassEnabled : bool
При включенном значении рендерер выполняет предварительный проход по Z для непрозрачных объектов, что означает, что он рендерит их с простым шейдером и отключенной записью цвета, чтобы заполнить буфер глубины перед вызовом функций отрисовки для основных проходов рендеринга.
Это может улучшить производительность в зависимости от содержимого сцены. Обычно от этого выигрывают сцены с большим количеством перекрывающихся объектов и дорогими шейдерами фрагментов. В то же время стоит отметить, что рендерер выполняет сортировку непрозрачных объектов спереди назад, что само по себе помогает уменьшить излишнюю затенение фрагментов, и поэтому предварительный проход по Z не всегда приносит существенные улучшения.
На графических процессорах с архитектурой разбиения на плитки, которая характерна для мобильных и встраиваемых систем, рекомендуется установить это значение в false.
Значение по умолчанию — false.
Примечание: Это свойство не имеет эффекта, когда отключение проверки глубины.
depthTestEnabled : bool
Значение по умолчанию — true. По умолчанию рендерер классифицирует объекты сцены либо как opaque, либо как semi-transparent. Объекты (под-сетки с соответствующим материалом) в списке opaque рендерятся первыми с включенной проверкой и записью глубины, обеспечивая оптимальное Z-обрезание для типичных 3D-объектов, не имеющих полупрозрачных областей. Объекты в списке semi-transparent рендерятся с отключенной записью глубины, но при этом с включенной проверкой глубины (для проверки по отношению к непрозрачным объектам), в порядке от заднего к переднему (сортировка на основе расстояния центральной точки от камеры). Это позволяет правильно смешивать («просматривать сквозь») 3D-объекты, которые включают полупрозрачные области на своей поверхности, либо из-за непрозрачности узла (node opacity), либо из-за какого-либо цвета или карты текстуры в материале.
Когда это свойство установлено в false, буфер Z не записывается и не проверяется, проверка глубины пропускается, и все объекты, включая полностью непрозрачные, рендерятся за один раз, от заднего к переднему.
Установка этого свойства в false вряд ли будет необходима. Это может быть полезно в сценариях, где известно, что в двукратном подходе мало пользы, потому что либо непрозрачных объектов очень мало, либо они преобразуются таким образом, что один проход сортировки от заднего к переднему работает лучше.
Примечание: Установка этого свойства в false может вызвать ошибки рендеринга в определенных сценариях. Кроме того, некоторые функции, такие как тени, окклюзия окружающей среды, SCREEN_TEXTURE и DEPTH_TEXTURE в пользовательских материалах и эффектах, не будут работать корректно без включения использования буфера глубины.
Примечание: Этот флаг не контролирует наличие буфера глубины или глубины-значения. Такие буферы могут быть всё ещё выделены даже когда это значение установлено в false.
[с 5.15] effects : Список<QtQuick3D::Effect>
Это свойство содержит список пост-обработки эффектов, которые будут применяться ко всей области просмотра. Результат каждого эффекта передаётся следующему, поэтому порядок важен.
Это свойство было введено в Qt 5.15.
lightProbe : QtQuick3D::Texture
Это свойство определяет изображение, используемое для освещения сцены, либо вместо, либо дополнительно к стандартным источникам света.
Изображение предпочтительно представляет собой изображение с высоким динамическим диапазоном или предварительно сгенерированную кубовую карту. Предварительная обработка обеспечивает значительное повышение производительности во время выполнения, так как не тратится время на фильтрацию и создание mipmap. Если исходником является файл .hdr или другое изображение, основанная на графическом процессоре предварительная обработка происходит во время выполнения после загрузки файла изображения, что может быть потенциально длительным процессом, особенно на встраиваемом и мобильном оборудовании. Поэтому настоятельно рекомендуется, чтобы приложения предварительно обрабатывали изображения .hdr как минимум на этапе сборки, как описано здесь.
Примечание: Использование текстуры со свойством sourceItem не поддерживается в сочетании с этим свойством. Предварительная фильтрация всех уровней mipmap для динамического контента Qt Quick обычно нецелесообразна из-за влияния на производительность.
probeExposure : float
Это свойство изменяет количество света, излучаемого зондом освещения.
По умолчанию экспозиция установлена в 1,0.
probeHorizon : float
Это свойство при увеличении значений добавляет темноту (чёрный цвет) в нижнюю половину окружения, вынуждая освещение исходить в основном сверху изображения (и удаляя определенные отражения из нижней половины). Это свойство полезно для учёта плоскости земли, которая имела бы эффект затемнения отражения зонда освещения от земли. Это необходимо, поскольку вклады зонда освещения поступают непосредственно из изображения без учёта содержимого сцены.
Ожидаемый диапазон значений для свойства probeHorizon — от 0,0 до 1,0. Любое значение за пределами этого диапазона будет ограничено ожидаемым диапазоном.
По умолчанию probeHorizon установлен в 0,0, что означает, что весь зонд освещения используется без корректировки.
Примечание: Свойство probeHorizon влияет только на освещение материалов и не влияет на рендеринг небосвода.
probeOrientation : vector3d
Это свойство определяет ориентацию зонда освещения. Ориентация определяется в терминах углов Эйлера в градусах по осям X, Y и Z.
Примечание: Это значение дополняет то, как текстура lightProbe отображается в сочетании с любыми поворотами и смещениями текстур, установленными на текстуре lightProbe.
temporalAAEnabled : bool
При включении этого свойства будет использоваться временная антиалиасинг.
Камера слегка смещается между кадрами, и результат каждого нового кадра смешивается с предыдущим кадром.
Примечание: Временная антиалиасинг не имеет эффекта, когда antialiasingMode — MSAA.
Примечание: В сочетании с ProgressiveAA antialiasingMode временная антиалиасинг используется, когда сцена анимируется, а ProgressiveAA используется, когда анимации останавливаются.
Преимущества: Из-за подёргивания камеры он находит реальные детали, которые в противном случае были бы потеряны; мало влияет на производительность.
Недостатки: Быстро движущиеся объекты вызывают эффект «призрака» на один кадр.
[с 5.15] temporalAAStrength : float
Это свойство изменяет величину временного перемещения (антиалиасинг). Это влияет только тогда, когда свойство temporalAAEnabled имеет значение true.
Это свойство было введено в Qt 5.15.
См. также temporalAAEnabled.
[с 6.0] tonemapMode : перечисление
Это свойство определяет, как цвета тонируются перед рендерингом. Весь рендеринг в Qt Quick 3D выполняется в линейном цветовом пространстве и во многих случаях может привести к генерации значений цвета, которые не отображаются. tonemapMode определяет метод, который используется для переназначения цветов в отображаемый диапазон.
Значение по умолчанию — SceneEnvironment.TonemapModeLinear
| Константа | Описание |
|---|---|
SceneEnvironment.TonemapModeNone |
Все тонирование отключено. Этот режим полезен при применении эффектов пост-обработки. |
SceneEnvironment.TonemapModeLinear |
Применяется линейное тонирование. Цвета корректируются по гамма-кривой и возвращаются в цветовом пространстве sRGB. |
SceneEnvironment.TonemapModeAces |
Применяется тонирование по системе Academy Color Encoding System. |
SceneEnvironment.TonemapModeHejlDawson |
Применяется тонирование по методу Хеджа-Доусона. |
SceneEnvironment.TonemapModeFilmic |
Применяется тонирование по методу Filmic. |
Примечание: При использовании эффектов пост-обработки многие эффекты ожидают нетонированные линейные цветовые данные. В этом случае важно отключить встроенное тонирование, используя значение SceneEnvironment.TonemapModeNone.
Это свойство было добавлено в Qt 6.0.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qml-qtquick3d-sceneenvironment.html