Spec-Zone.ru › Qt

Тип QML Texture

Определяет текстуру для использования в 3D-сценах. Подробнее...

Заявление об импорте: import QtQuick3D
Наследует:

Object3D

  • Список всех членов, включая унаследованные

Свойства

  • autoOrientation : bool
  • flipU : bool
  • flipV : bool
  • generateMipmaps : bool
  • indexUV : int
  • magFilter : перечисление
  • mappingMode : перечисление
  • minFilter : перечисление
  • mipFilter : перечисление
  • pivotU : float
  • pivotV : float
  • positionU : float
  • positionV : float
  • rotationUV : float
  • scaleU : float
  • scaleV : float
  • source : url
  • sourceItem : Item
  • textureData : TextureData
  • tilingModeHorizontal : перечисление
  • tilingModeVertical : перечисление

Подробное описание

Текстура — это, по сути, любой массив пикселей (1D, 2D или 3D) и связанные с ним настройки, такие как фильтры уменьшения и увеличения, масштабирование и преобразования UV.

Тип Texture в Qt Quick 3D представляет собой двумерное изображение. Он обычно используется для отображения/обертывания вокруг трехмерной геометрии, чтобы эмулировать дополнительные детали, которые невозможно эффективно смоделировать в 3D. Он также может использоваться для имитации других эффектов освещения, таких как отражения.

При отрисовке геометрии каждая точка на её поверхности преобразуется в соответствующую точку на текстуре путём преобразования и интерполяции координат UV (координаты текстуры), заданных для вершин сетки. Затем программа фрагментного шейдера, используемая для отрисовки активного материала, обычно будет брать образец материала по данным координатам и использовать полученные данные в расчетах освещения.

Примечание: Один материал может использовать несколько текстур, чтобы обеспечить нужное взаимодействие со светом в 3D-сцене. Он может представлять цвет каждого текселя на поверхности геометрии, но также и другие атрибуты поверхности. Например, «карта нормалей» может представлять отклонение от нормалей геометрии для каждого текселя на поверхности, моделируя взаимодействие света с более мелкими деталями поверхности, такими как трещины или неровности. См. пример материала с несколькими картами текстур.

Объекты текстуры могут получать данные изображения из:

  • изображения или файла текстуры, используя свойство source,
  • элемента Qt Quick Item, используя свойство sourceItem,
  • или, установив свойство textureData на подкласс элемента TextureData для определения пользовательского содержимого текстуры.

В следующем примере изображение «madewithqt.png» отображается на стандартной сфере, а координаты UV масштабируются для того, чтобы изображение повторялось на поверхности сферы.

Model {
    source: "#Sphere"
    materials: [ PrincipledMaterial {
            baseColorMap: Texture {
                source: "madewithqt.png"
                scaleU: 4.0
                scaleV: 4.0
            }
        }
    ]
}

Результат выглядит следующим образом:

Исходное изображение Отображено на сфере

См. также Пример динамической текстуры Qt Quick 3D и Пример процедурной текстуры Qt Quick 3D.

Документация по свойствам

[с 6.2] autoOrientation : bool

Это свойство определяет, применяется ли преобразование текстуры, например, инвертирование вертикальной координаты текстуры, автоматически для текстур, для которых это обычно актуально.

По умолчанию это свойство установлено в true.

У некоторых типов данных текстуры, таких как сжатые текстуры, загруженные через свойство source из файла .ktx или .pkm, или текстуры, сгенерированные путем отрисовки сцены Qt Quick через свойство sourceItem, часто имеет другую ориентацию оси Y по сравнению с текстурами, загруженными из файлов изображений, таких как .png или .jpg. Поэтому такая текстура будет отображаться «вверх ногами» по сравнению с текстурой, у которой источник установлен на обычный файл изображения. Для исправления этого, любая соответствующая текстура получает неявное преобразование UV так, как будто свойство flipV было установлено в true. Если этого не требуется, установите это свойство в false.

Примечание: Это свойство эффективно, когда текстура используется в сочетании с DefaultMaterial или PrincipledMaterial. Пользовательские материалы Custom materials предоставляют свой собственный код шейдера, поэтому такие преобразования, как настроенные этим свойством, игнорируются, и их реализация зависит от кода шейдера, предоставленного приложением.

Это свойство было добавлено в Qt 6.2.

См. также flipV.

flipU : bool

Это свойство устанавливает использование горизонтально инвертированных координат текстуры.

Значение по умолчанию — false.

Примечание: Это свойство эффективно, когда текстура используется в сочетании с DefaultMaterial или PrincipledMaterial. Пользовательские материалы Custom materials предоставляют свой собственный код шейдера, поэтому такие преобразования, как настроенные этим свойством, игнорируются, и их реализация зависит от кода шейдера, предоставленного приложением.

См. также flipV.

flipV : bool

Это свойство устанавливает использование вертикально инвертированных координат текстуры.

Значение по умолчанию — false.

Примечание: Это свойство эффективно, когда текстура используется в сочетании с DefaultMaterial или PrincipledMaterial. Пользовательские материалы Custom materials предоставляют свой собственный код шейдера, поэтому такие преобразования, как настроенные этим свойством, игнорируются, и их реализация зависит от кода шейдера, предоставленного приложением.

См. также flipU.

generateMipmaps : bool

Это свойство определяет, генерируются ли mipmaps для текстур, которые сами не предоставляют уровни mipmap. Использование mipmaps вместе с фильтром mip дает лучшее качество изображения при просмотре текстур на расстоянии по сравнению с рендерингом без них, но это может повлиять на производительность (как при инициализации изображения, так и при рендеринге).

По умолчанию это свойство установлено в false.

Примечание: Для использования сгенерированных mipmaps необходимо установить режим mipFilter.

Примечание: Это свойство неприменимо, когда содержимое текстуры основано на элементе Qt Quick, на который ссылается свойство sourceItem. Генерация mipmap для динамических текстур нецелесообразна из-за влияния на производительность. Поэтому значение этого свойства игнорируется для таких текстур.

См. также mipFilter.

indexUV : int

Это свойство устанавливает индекс координаты UV, используемый этой текстурой. Поскольку QtQuick3D поддерживает сейчас 2 набора UV (0 или 1), значение будет ограничено диапазоном.

Значение по умолчанию — 0.

magFilter : перечисление

Это свойство определяет, как текстура обрабатывается, когда тексель занимает более одного пикселя.

Значение по умолчанию — Texture.Linear.

Константа Описание
Texture.Nearest использует значение ближайшего текселя.
Texture.Linear берет четыре ближайших текселя и выполняет билинейную интерполяцию.

Примечание: Использование Texture.None здесь по умолчанию будет Texture.Linear.

См. также minFilter и mipFilter.

mappingMode : перечисление

Это свойство определяет метод отображения, используемый при выборке этой текстуры.

Константа Описание
Texture.UV Значение по умолчанию. Подходит для базового цвета, рассеянного цвета, непрозрачности и большинства других текстур. Выполняет стандартное отображение UV. Одна и та же часть изображения всегда будет отображаться на одной и той же вершине, если только координаты UV не преобразуются и не анимируются.
Texture.Environment Используется для отражения от глянцевой поверхности, что приводит к тому, что изображение проецируется на материал, как если бы оно отражалось. Использование данного режима для других типов текстур обеспечивает эффект зеркала.
Texture.LightProbe По умолчанию для HDRI-сферических карт, используемых зондами света. Этот режим не нужно вручную устанавливать для объектов Texture, связанных с свойством lightProbe, так как он подразумевается автоматически.

minFilter : перечисление

Это свойство определяет, как текстура сэмплируется, когда тексель охватывает более одного пикселя.

Значение по умолчанию — Texture.Linear.

Константа Описание
Texture.Nearest использует значение ближайшего текселя.
Texture.Linear берет четыре ближайших текселя и выполняет билинейную интерполяцию.

Примечание: Использование Texture.None здесь по умолчанию перейдет к Texture.Linear.

См. также magFilter и mipFilter.

mipFilter : перечисление

Это свойство определяет, как сэмплируются mip-уровни текстуры, когда тексель охватывает менее одного пикселя.

Значение по умолчанию — Texture.None.

Константа Описание
Texture.None отключает использование сэмплирования mip-уровней.
Texture.Nearest использует mip-уровни и сэмплирует значение ближайшего текселя.
Texture.Linear использует mip-уровни и интерполирует между значениями нескольких текселей.

Примечание: Это свойство не будет иметь эффекта на текстуры, которые не имеют mip-уровней.

См. также minFilter и magFilter.

pivotU : float

Это свойство устанавливает позицию оси U для центра вращения, которая используется при применении rotationUV.

Значение по умолчанию — 0.0.

Примечание: Это свойство эффективно, когда текстура используется совместно с DefaultMaterial или PrincipledMaterial. Пользовательские материалы предоставляют собственный код шейдера, поэтому такие преобразования, как настроенные этим свойством, игнорируются, и их реализация возлагается на код шейдера, предоставляемый приложением.

См. также rotationUV.

pivotV : float

Это свойство устанавливает позицию оси V для центра вращения, которая используется при применении rotationUV.

Значение по умолчанию — 0.0.

Примечание: Это свойство эффективно, когда текстура используется совместно с DefaultMaterial или PrincipledMaterial. Пользовательские материалы предоставляют собственный код шейдера, поэтому такие преобразования, как настроенные этим свойством, игнорируются, и их реализация возлагается на код шейдера, предоставляемый приложением.

См. также pivotU и rotationUV.

positionU : float

Это свойство смещает отображение координаты U слева направо.

Значение по умолчанию — 0.0.

Примечание: Это свойство эффективно, когда текстура используется совместно с DefaultMaterial или PrincipledMaterial. Пользовательские материалы предоставляют собственный код шейдера, поэтому такие преобразования, как настроенные этим свойством, игнорируются, и их реализация возлагается на код шейдера, предоставляемый приложением.

См. также positionV.

positionV : float

Это свойство смещает отображение координаты V снизу вверх.

Значение по умолчанию — 0.0.

Примечание: Qt Quick 3D использует данные вершин в стиле OpenGL, независимо от используемого в реальном времени графического API. Позиция UV (0, 0) поэтому относится к нижнему левому углу данных изображения.

Примечание: Это свойство эффективно, когда текстура используется совместно с DefaultMaterial или PrincipledMaterial. Пользовательские материалы предоставляют собственный код шейдера, поэтому такие преобразования, как настроенные этим свойством, игнорируются, и их реализация возлагается на код шейдера, предоставляемый приложением.

См. также positionU.

rotationUV : float

Это свойство вращает текстуру вокруг точки вращения. Оно определяется с помощью углов Эйлера, и положительное значение означает вращение по часовой стрелке.

Значение по умолчанию — 0.0.

Примечание: Это свойство эффективно, когда текстура используется совместно с DefaultMaterial или PrincipledMaterial. Пользовательские материалы предоставляют собственный код шейдера, поэтому такие преобразования, как настроенные этим свойством, игнорируются, и их реализация возлагается на код шейдера, предоставляемый приложением.

См. также pivotU и pivotV.

scaleU : float

Это свойство определяет масштабирование координаты U текстуры при отображении на UV-координаты меша.

Масштабирование значения U при использовании горизонтального чередования определяет, сколько раз текстура повторяется слева направо.

Значение по умолчанию — 1.0.

Примечание: Это свойство эффективно, когда текстура используется совместно с DefaultMaterial или PrincipledMaterial. Пользовательские материалы предоставляют собственный код шейдера, поэтому такие преобразования, как настроенные этим свойством, игнорируются, и их реализация возлагается на код шейдера, предоставляемый приложением.

См. также tilingModeHorizontal.

scaleV : float

Это свойство определяет масштабирование координаты V текстуры при отображении на UV-координаты меша.

Масштабирование значения V при использовании вертикального чередования определяет, сколько раз текстура повторяется снизу вверх.

Значение по умолчанию — 1.0.

Примечание: Это свойство эффективно, когда текстура используется совместно с DefaultMaterial или PrincipledMaterial. Пользовательские материалы предоставляют собственный код шейдера, поэтому такие преобразования, как настроенные этим свойством, игнорируются, и их реализация возлагается на код шейдера, предоставляемый приложением.

См. также tilingModeVertical.

source : url

Это свойство содержит расположение файла изображения или текстуры, содержащего данные, используемые текстурой.

Свойство представляет собой URL-адрес, с теми же правилами, что и другие свойства source, такие как Image.source. В случае с Texture поддерживаются только схемы qrc и file. Если схема отсутствует, и значение является относительным путем, предполагается, что оно относительно расположения компонента (т.е. файла .qml).

Файл источника может иметь любой стандартный формат изображения поддерживаемый Qt. Кроме того, Texture поддерживает те же типы сжатых файлов текстур, что и QtQuick::Image.

Примечание: Данные текстуры, считываемые из файлов изображений, таких как .png или .jpg, включают хранение строк пикселей в текстуре в порядке, определенном движком рендеринга Qt Quick 3D. Когда исходный файл является контейнером для — возможно, сжатых — данных текстуры, такие преобразования не могут происходить на уровне данных пикселей. Примерами таких файлов являются .ktx или .pkm. Вместо этого Texture неявно включает вертикальное отражение в коде фрагментного шейдера для получения идентичных результатов на экране. Это контролируется свойством autoOrientation и может быть отключено при необходимости.

Примечание: Некоторые инструменты сжатия текстур могут применять автоматическое вертикальное зеркальное отображение (переворот) данных изображения. В современных инструментах это часто является параметром по умолчанию. Важно быть осведомлённым о настройках, используемых в процессе подготовки активов, потому что неожиданно перевёрнутая текстура, а следовательно, и неправильная текстурирование объектов, может иметь корень проблемы в самом активе, вне контроля приложения и движка рендеринга. Когда это необходимо, приложения всегда могут установить свойство flipV.

См. также sourceItem, textureData, autoOrientation и flipV.

sourceItem : Элемент

Это свойство определяет Элемент, используемый в качестве источника текстуры. Использование этого свойства позволяет использовать любой 2D контент Qt Quick в качестве источника текстуры, рендеринга этого элемента как отдельного слоя.

Если элемент является поставщиком текстуры, дополнительная текстура не используется.

Если это свойство установлено, значение source будет игнорироваться. Текстура должна использовать один метод для предоставления данных изображения и установить только одно из свойств: source, sourceItem или textureData.

Примечание: В настоящее время события ввода передаются элементу, используемому в качестве источника текстуры, только если пользователь ограничен взаимодействием с одной инстанцией sourceItem за раз. Другими словами: вы можете использовать один и тот же элемент для нескольких текстур, но не можете иметь многократное взаимодействие с одним и тем же элементом на нескольких текстурах одновременно. Поэтому лучше использовать отдельный экземпляр подсцены 2D для каждого экземпляра текстуры, если ожидается манипулирование интерактивными элементами внутри.

Примечание: Использование этого свойства в текстуре, на которую ссылаются из нескольких окон, категорически не рекомендуется. Это включает использование через View3D::importScene. Поскольку источник текстуры, созданный этим свойством, доступен только одному потоку рендеринга, попытка совместного использования между несколькими экземплярами QQuickWindow потерпит неудачу, если не используется basic цикл рендеринга Qt Quick вместо стандартного threaded. См. Qt Quick Граф сцены для получения дополнительной информации о циклах рендеринга Qt Quick.

Примечание: Текстура, содержащая результаты прохождения рендеринга Qt Quick вне экрана, фактически будет иметь ориентацию оси Y, отличную от текстуры, которая получает своё содержимое через свойство source. При использовании в сочетании с DefaultMaterial или PrincipledMaterial, это прозрачно для приложения, так как необходимые преобразования UV применяются автоматически, если свойство autoOrientation установлено в true. Однако при разработке настраиваемых материалов автору кода шейдера необходимо учитывать это при выборке из текстуры и работе с координатами UV.

См. также source, textureData и autoOrientation.

textureData : TextureData

Это свойство содержит ссылку на компонент TextureData, который определяет содержимое и свойства исходных данных текстуры.

Если это свойство используется, то значение source будет проигнорировано. Текстура должна использовать один метод для предоставления данных изображения и установить только одно из свойств: source, sourceItem или textureData.

См. также source, sourceItem и Qt Quick 3D - Пример процедурной текстуры.

tilingModeHorizontal : перечисление

Управляет способом отображения текстуры, когда значение масштабирования U больше 1.

По умолчанию это свойство установлено в Texture.Repeat.

Постоянная Описание
Texture.ClampToEdge Текстура не повторяется, используется значение на краю.
Texture.MirroredRepeat Текстура повторяется и зеркально отображается по оси X.
Texture.Repeat Текстура повторяется по оси X.

См. также scaleU.

tilingModeVertical : перечисление

Это свойство управляет способом отображения текстуры, когда значение масштабирования V больше 1.

По умолчанию это свойство установлено в Texture.Repeat.

Постоянная Описание
Texture.ClampToEdge Текстура не повторяется, используется значение на краю.
Texture.MirroredRepeat Текстура повторяется и зеркально отображается по оси Y.
Texture.Repeat Текстура повторяется по оси Y.

См. также scaleV.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qml-qtquick3d-texture.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API