Texture QML Type

Definiert eine Textur zur Verwendung in 3D-Szenen. Mehr...

Import Statement: import QtQuick3D
Inherits:

Object3D

Inherited By:

CubeMapTexture

Eigenschaften

Detaillierte Beschreibung

Eine Textur ist technisch gesehen eine beliebige Anordnung von Pixeln (1D, 2D oder 3D) und die zugehörigen Einstellungen, wie Verkleinerungs- und Vergrößerungsfilter, Skalierung und UV-Transformationen.

Der Typ Textur in Qt Quick 3D stellt ein zweidimensionales Bild dar. Er wird in der Regel verwendet, um dreidimensionale Geometrie abzubilden oder zu umhüllen, um zusätzliche Details zu emulieren, die in 3D nicht effizient modelliert werden können. Sie kann auch verwendet werden, um andere Beleuchtungseffekte, wie z. B. Reflexionen, zu emulieren.

Während Texture selbst immer eine 2D-Textur darstellt, sind auch andere Arten von Texturen über Unterklassen von Texture verfügbar. Um zum Beispiel eine Cube-Map-Textur mit 6 Flächen zu erstellen, verwenden Sie den Typ CubeMapTexture.

Wenn die Geometrie gerendert wird, wird jede Stelle auf ihrer Oberfläche in eine entsprechende Stelle in der Textur transformiert, indem die UV-Koordinaten (Texturkoordinaten), die für die Mesh-Eckpunkte festgelegt wurden, transformiert und interpoliert werden. Das Fragment-Shader-Programm, das zum Rendern des aktiven Materials verwendet wird, wird dann normalerweise die Textur(en) des Materials an den angegebenen Koordinaten abtasten und die abgetasteten Daten in seinen Lichtberechnungen verwenden.

Hinweis: Ein Material kann mehrere Texturen verwenden, um die gewünschte Interaktion mit dem Licht in der 3D-Szene zu erreichen. Es kann die Farbe jedes Texels auf der Geometrieoberfläche darstellen, aber auch andere Attribute der Oberfläche. Zum Beispiel kann eine "Normal Map" die Abweichung von den Geometrienormalen für jedes Texel auf der Oberfläche darstellen und so die Lichtinteraktion mit feineren Details auf der Oberfläche, wie Rissen oder Unebenheiten, nachahmen. Eine Demonstration eines Materials mit mehreren Textur-Maps finden Sie im Beispiel für ein prinzipielles Material.

Texturobjekte können Bilddaten aus folgenden Quellen beziehen:

  • einer Bild- oder Texturdatei unter Verwendung der Eigenschaft source,
  • einer Qt Quick Item unter Verwendung der Eigenschaft sourceItem,
  • oder durch Einstellen der Eigenschaft textureData auf eine Elementunterklasse TextureData zur Definition der benutzerdefinierten Texturinhalte.

Im folgenden Beispiel wird das Bild "madewithqt.png" auf das Standard-Sphere-Mesh abgebildet und die UV-Koordinaten skaliert, um das Bild auf der Sphere-Oberfläche zu kacheln.

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

Das Ergebnis sieht wie folgt aus:

OriginalbildAuf eine Kugel abgebildet

Siehe auch Qt Quick 3D - Beispiel für eine prozedurale Textur.

Eigenschaft Dokumentation

autoOrientation : bool [since 6.2]

Diese Eigenschaft legt fest, ob eine Texturtransformation, wie z. B. das Spiegeln der V-Texturkoordinate, automatisch für Texturen angewendet wird, bei denen dies typischerweise relevant ist.

Standardmäßig ist diese Eigenschaft auf true gesetzt.

Bestimmte Arten von Texturdaten, wie z. B. komprimierte Texturen, die über die Eigenschaft source aus einer .ktx- oder .pkm-Datei geladen werden, oder Texturen, die durch das Rendern einer Qt Quick -Szene über die Eigenschaft sourceItem erzeugt werden, haben oft eine andere Y-Achsenausrichtung als Texturen, die aus Bilddateien wie .png oder .jpg geladen werden. Daher würde eine solche Textur im Vergleich zu einer Textur, deren Quelle auf eine reguläre Bilddatei eingestellt ist, "auf dem Kopf stehend" erscheinen. Um dies zu beheben, erhält jede qualifizierte Textur eine implizite UV-Transformation, als ob die Eigenschaft flipV auf true gesetzt wäre. Wenn dies nicht erwünscht ist, setzen Sie diese Eigenschaft auf false.

Hinweis: Diese Eigenschaft ist wirksam, wenn die Textur in Kombination mit einem DefaultMaterial oder PrincipledMaterial verwendet wird. Custom materials stellt seinen eigenen Shader-Code zur Verfügung, so dass Transformationen, wie die durch diese Eigenschaft konfigurierte, ignoriert werden und vom Shader-Code der Anwendung implementiert werden müssen.

Diese Eigenschaft wurde in Qt 6.2 eingeführt.

Siehe auch flipV.


flipU : bool

Diese Eigenschaft legt die Verwendung der horizontal gespiegelten Texturkoordinaten fest.

Der Standardwert ist false.

Hinweis: Diese Eigenschaft ist wirksam, wenn die Textur in Kombination mit einem DefaultMaterial oder PrincipledMaterial verwendet wird. Custom materials stellt seinen eigenen Shader-Code zur Verfügung, so dass Transformationen, wie die durch diese Eigenschaft konfigurierte, ignoriert werden und vom Shader-Code der Anwendung implementiert werden müssen.

Siehe auch flipV.


flipV : bool

Diese Eigenschaft legt die Verwendung der vertikal gespiegelten Texturkoordinaten fest.

Der Standardwert ist false.

Hinweis: Diese Eigenschaft ist wirksam, wenn die Textur in Kombination mit einem DefaultMaterial oder PrincipledMaterial verwendet wird. Custom materials stellt seinen eigenen Shader-Code zur Verfügung, so dass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und es dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt, sie zu implementieren.

Siehe auch flipU.


generateMipmaps : bool

Diese Eigenschaft bestimmt, ob Mipmaps für Texturen erzeugt werden, die selbst keine Mipmap-Ebenen bereitstellen. Die Verwendung von Mipmaps zusammen mit Mip-Filterung führt zu einer besseren visuellen Qualität bei der Betrachtung von Texturen aus der Entfernung im Vergleich zum Rendering ohne Mipmaps, kann aber zu Leistungseinbußen führen (sowohl bei der Initialisierung des Bildes als auch beim Rendering).

Standardmäßig ist diese Eigenschaft auf false gesetzt.

Hinweis: Es ist notwendig, einen mipFilter Modus zu setzen, damit die generierten Mipmaps verwendet werden können.

Hinweis: Diese Eigenschaft ist nicht anwendbar, wenn der Texturinhalt auf einem Element Qt Quick basiert, auf das die Eigenschaft sourceItem verweist. Die Erzeugung von Mipmaps für dynamische Texturen ist aufgrund der Leistungseinbußen nicht durchführbar. Daher wird der Wert dieser Eigenschaft für solche Texturen ignoriert.

Siehe auch mipFilter.


indexUV : int

Diese Eigenschaft legt den von dieser Textur verwendeten UV-Koordinatenindex fest. Da QtQuick3D im Moment 2 UV-Sets (0 oder 1) unterstützt, wird der Wert auf den Bereich gesättigt sein.

Der Standardwert ist 0.


magFilter : enumeration

Diese Eigenschaft legt fest, wie die Textur abgetastet wird, wenn sie "vergrößert" ist, d.h. wenn ein Texel mehr als ein Pixel im Bildschirmbereich abdeckt.

Der Standardwert ist Texture.Linear.

KonstanteBeschreibung
Texture.Nearestverwendet den Wert des nächstgelegenen Texels.
Texture.Linearnimmt die vier nächstgelegenen Texel und interpoliert sie bilinear.

Hinweis: Wenn Sie hier Texture.None verwenden, wird stattdessen der Wert Texture.Linear verwendet.

Siehe auch minFilter und mipFilter.


mappingMode : enumeration

Diese Eigenschaft legt fest, welche Methode des Mappings beim Sampling dieser Textur verwendet werden soll.

KonstanteBeschreibung
Texture.UVDer Standardwert. Geeignet für Grundfarbe, Diffus, Deckkraft und die meisten anderen Textur-Maps. Führt Standard-UV-Mapping durch. Der gleiche Teil des Bildes wird immer auf dem gleichen Vertex erscheinen, es sei denn, die UV-Koordinaten werden transformiert und animiert.
Texture.EnvironmentBei Verwendung von specular reflection wird das Bild auf das Material projiziert, als ob es reflektiert werden würde. Die Verwendung dieses Modus für andere Arten von Texturkarten führt zu einem Spiegeleffekt.
Texture.LightProbeDie Standardeinstellung für HDRI-Sphärenmaps, die von Lichtsonden verwendet werden. Dieser Modus muss für Texturobjekte, die mit der Eigenschaft lightProbe verknüpft sind, nicht manuell eingestellt werden, da er automatisch impliziert wird.

minFilter : enumeration

Diese Eigenschaft legt fest, wie die Textur abgetastet wird, wenn sie "minimiert" ist, d. h. wenn ein Texel weniger als ein Pixel im Bildschirmbereich abdeckt.

Der Standardwert ist Texture.Linear.

KonstanteBeschreibung
Texture.Nearestverwendet den Wert des nächstgelegenen Texels.
Texture.Linearnimmt die vier am nächsten liegenden Texel und interpoliert sie bilinear.

Hinweis: Wenn Sie hier Texture.None verwenden, wird stattdessen der Wert Texture.Linear verwendet.

Siehe auch magFilter und mipFilter.


mipFilter : enumeration

Diese Eigenschaft bestimmt, wie die Textur-Mipmaps abgetastet werden, wenn ein Texel weniger als ein Pixel abdeckt.

Der Standardwert ist Texture.None.

KonstanteBeschreibung
Texture.Nonedeaktiviert die Verwendung von Mipmap-Sampling.
Texture.Nearestverwendet Mipmapping und tastet den Wert des nächstgelegenen Texels ab.
Texture.Linearverwendet Mipmapping und interpoliert zwischen mehreren Texelwerten.

Hinweis: Diese Eigenschaft hat keine Auswirkungen auf Texturen, die keine Mipmaps haben.

Siehe auch minFilter und magFilter.


pivotU : real

Diese Eigenschaft legt die Pivot-U-Position fest, die beim Anwenden einer rotationUV verwendet wird.

Der Standardwert ist 0.0.

Hinweis: Diese Eigenschaft ist wirksam, wenn die Textur in Kombination mit einem DefaultMaterial oder PrincipledMaterial verwendet wird. Custom materials stellen ihren eigenen Shader-Code zur Verfügung, so dass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und es dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt, sie zu implementieren.

Siehe auch rotationUV.


pivotV : real

Diese Eigenschaft legt die Pivot-V-Position fest, die beim Anwenden einer rotationUV verwendet wird.

Der Standardwert ist 0.0.

Hinweis: Diese Eigenschaft ist wirksam, wenn die Textur in Kombination mit einem DefaultMaterial oder PrincipledMaterial verwendet wird. Custom materials stellen ihren eigenen Shader-Code zur Verfügung, so dass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und es dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt, sie zu implementieren.

Siehe auch pivotU und rotationUV.


positionU : real

Diese Eigenschaft verschiebt die U-Koordinatenzuordnung von links nach rechts.

Der Standardwert ist 0,0.

Hinweis: Diese Eigenschaft ist wirksam, wenn die Textur in Kombination mit einem DefaultMaterial oder PrincipledMaterial verwendet wird. Custom materials stellt ihren eigenen Shader-Code zur Verfügung, so dass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und es dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt, sie zu implementieren.

Siehe auch positionV.


positionV : real

Diese Eigenschaft verschiebt die V-Koordinatenzuordnung von unten nach oben.

Der Standardwert ist 0.0.

Hinweis: Qt Quick 3D verwendet Vertex-Daten im OpenGL-Stil, unabhängig von der zur Laufzeit verwendeten Grafik-API. Die UV-Position (0, 0) bezieht sich daher auf die untere linke Ecke der Bilddaten.

Hinweis: Diese Eigenschaft ist wirksam, wenn die Textur in Kombination mit einem DefaultMaterial oder PrincipledMaterial verwendet wird. Custom materials stellt ihren eigenen Shader-Code zur Verfügung, so dass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und es dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt, diese zu implementieren.

Siehe auch positionU.


rotationUV : real

Diese Eigenschaft rotiert die Textur um den Drehpunkt. Dieser wird mit Hilfe von Eulerwinkeln definiert und bei einem positiven Wert erfolgt die Drehung im Uhrzeigersinn.

Der Standardwert ist 0,0.

Hinweis: Diese Eigenschaft ist wirksam, wenn die Textur in Kombination mit einem DefaultMaterial oder PrincipledMaterial verwendet wird. Custom materials stellt ihren eigenen Shader-Code zur Verfügung, so dass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und es dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt, sie zu implementieren.

Siehe auch pivotU und pivotV.


scaleU : real

Diese Eigenschaft legt fest, wie die U-Texturkoordinate beim Mapping auf die UV-Koordinaten eines Meshes skaliert werden soll.

Die Skalierung des U-Wertes bei horizontaler Kachelung bestimmt, wie oft die Textur von links nach rechts wiederholt wird.

Der Standardwert ist 1.0.

Hinweis: Diese Eigenschaft ist wirksam, wenn die Textur in Kombination mit einem DefaultMaterial oder PrincipledMaterial verwendet wird. Custom materials stellt seinen eigenen Shader-Code zur Verfügung, so dass Transformationen, wie die durch diese Eigenschaft konfigurierte, ignoriert werden und vom Shader-Code der Anwendung implementiert werden müssen.

Siehe auch tilingModeHorizontal.


scaleV : real

Diese Eigenschaft legt fest, wie die V-Texturkoordinate beim Mapping auf die UV-Koordinaten eines Meshes skaliert werden soll.

Die Skalierung des V-Wertes bei der Verwendung von vertikalen Kacheln bestimmt, wie oft eine Textur von unten nach oben wiederholt wird.

Der Standardwert ist 1.0.

Hinweis: Diese Eigenschaft ist wirksam, wenn die Textur in Kombination mit einem DefaultMaterial oder PrincipledMaterial verwendet wird. Custom materials stellt seinen eigenen Shader-Code zur Verfügung, so dass Transformationen, wie die durch diese Eigenschaft konfigurierte, ignoriert werden und vom Shader-Code der Anwendung implementiert werden müssen.

Siehe auch tilingModeVertical.


source : url

Diese Eigenschaft enthält den Speicherort einer Bild- oder Texturdatei, die die von der Textur verwendeten Daten enthält.

Die Eigenschaft ist eine URL, mit den gleichen Regeln wie andere Quelleneigenschaften, wie Image.source. Bei Textur werden nur die Schemata qrc und file unterstützt. Wenn kein Schema vorhanden ist und der Wert ein relativer Pfad ist, wird angenommen, dass er relativ zum Speicherort der Komponente (d. h. der Datei .qml ) ist.

Die Quelldatei kann jedes konventionelle Bilddateiformat supported by Qt haben. Darüber hinaus unterstützt Texture die gleiche compressed texture file types wie QtQuick::Image.

Hinweis: Texturdaten, die aus Bilddateien wie .png oder .jpg gelesen werden, beinhalten die Speicherung der Pixelreihen innerhalb der Textur in einer Reihenfolge, die von der Qt Quick 3D Rendering-Engine definiert wird. Wenn die Quelldatei ein Container für - möglicherweise komprimierte - Texturdaten ist, können solche Transformationen nicht auf der Ebene der Pixeldaten erfolgen. Beispiele hierfür sind .ktx- oder .pkm-Dateien. Stattdessen aktiviert die Textur implizit die vertikale Spiegelung im Fragment-Shader-Code, um identische Ergebnisse auf dem Bildschirm zu erhalten. Dies wird durch die Eigenschaft autoOrientation gesteuert und kann, falls gewünscht, deaktiviert werden.

Hinweis: Einige Texturkomprimierungstools wenden möglicherweise eine automatische vertikale Spiegelung (Flipping) auf die Bilddaten an. In modernen Werkzeugen ist dies oft eine Option, die aktiviert werden kann. Es ist wichtig, die in der Asset-Konditionierungspipeline verwendeten Einstellungen zu kennen, da eine unerwartet gespiegelte Textur und damit eine falsche Texturierung von Objekten ihre Ursache im Asset selbst haben kann, außerhalb der Kontrolle der Anwendung und der Rendering-Engine. Wenn das Asset es erfordert, können Anwendungen die Eigenschaft flipV immer selbst festlegen.

Siehe auch sourceItem, textureData, autoOrientation, und flipV.


sourceItem : Item

Diese Eigenschaft definiert ein Objekt, das als Quelle für die Textur verwendet werden soll. Mit dieser Eigenschaft kann jeder 2D-Inhalt Qt Quick als Texturquelle verwendet werden, indem das Element als Offscreen-Ebene gerendert wird.

Wenn es sich bei dem Element um texture provider handelt, wird keine zusätzliche Textur verwendet.

Wenn diese Eigenschaft gesetzt ist, wird der Wert von source ignoriert. Eine Textur sollte eine Methode verwenden, um Bilddaten bereitzustellen, und nur eine von source, sourceItem oder textureData setzen.

Hinweis: Derzeit werden Eingabeereignisse nur dann an das Element weitergeleitet, das als Texturquelle verwendet wird, wenn der Benutzer auf die Interaktion mit jeweils einer sourceItem-Instanz beschränkt ist. Mit anderen Worten: Sie können dasselbe Item auf mehrere Texturen aufteilen, aber dann können Sie keine Multi-Touch-Interaktion mit demselben Item auf mehreren Texturen zur gleichen Zeit haben. Daher ist es am besten, für jede Textur-Instanz eine separate 2D-Subszenen-Instanz zu verwenden, wenn Sie darin interaktive Elemente manipulieren wollen.

Hinweis: Von der Verwendung dieser Eigenschaft in einer Textur, die von mehreren Fenstern referenziert wird, wird dringend abgeraten. Dies schließt die Verwendung über View3D::importScene ein. Da die durch diese Eigenschaft erstellte Quelltextur nur von einem Render-Thread zugänglich ist, wird der Versuch, sie zwischen mehreren QQuickWindow Instanzen zu teilen, fehlschlagen, es sei denn, die basic Render-Schleife von Qt Quick wird anstelle der Standard threaded verwendet. Siehe Qt Quick Scene Graph für weitere Informationen über die Qt Quick Renderschleifen.

Hinweis: Eine Textur, die die Ergebnisse eines Qt Quick Offscreen-Rendering-Durchgangs enthält, hat in der Tat eine andere Y-Achsen-Ausrichtung als eine Textur, die ihren Inhalt über die Quelleigenschaft erhält. Bei Verwendung in Kombination mit DefaultMaterial oder PrincipledMaterial ist dies für die Anwendung transparent, da die notwendigen UV-Transformationen automatisch angewendet werden, solange die Eigenschaft autoOrientation auf true gesetzt ist, so dass keine weiteren Maßnahmen erforderlich sind, unabhängig davon, wie die Textur bezogen wurde. Bei der Entwicklung von custom materials muss dies jedoch vom Autor des Shader-Codes berücksichtigt werden, wenn er die Textur abtastet und mit UV-Koordinaten arbeitet.

Siehe auch source, textureData, und autoOrientation.


textureData: TextureData

Diese Eigenschaft enthält einen Verweis auf eine Komponente TextureData, die den Inhalt und die Eigenschaften von Texturrohdaten definiert.

Wenn diese Eigenschaft verwendet wird, dann wird der Wert von source ignoriert. Eine Textur sollte eine Methode verwenden, um Bilddaten bereitzustellen, und nur eine von source, sourceItem oder textureData setzen.

Siehe auch source, sourceItem, und Qt Quick 3D - Beispiel für eine prozedurale Textur.


textureProvider : RenderExtension [since 6.7]

Diese Eigenschaft enthält die RenderExtension, die die QRhiTexture bereitstellt, die von diesem Element verwendet wird.

Hinweis: Die durch RenderExtension erstellte Textur muss durch registering in der Engine verfügbar gemacht werden.

Diese Eigenschaft wurde in Qt 6.7 eingeführt.

Siehe auch RenderExtension und QSSGRenderExtensionHelpers.


tilingModeDepth : enumeration

Diese Eigenschaft steuert, wie die Textur gemappt wird, wenn der Z-Skalierungswert größer als 1 ist.

Standardmäßig ist diese Eigenschaft auf Texture.Repeat gesetzt.

KonstanteBeschreibung
Texture.ClampToEdgeTextur wird nicht gekachelt, sondern der Wert an der Kante wird stattdessen verwendet.
Texture.MirroredRepeatDie Textur wird wiederholt und an der Z-Achse gespiegelt.
Texture.RepeatTextur wird an der Z-Achse wiederholt.

tilingModeHorizontal : enumeration

Steuert, wie die Textur abgebildet wird, wenn der U-Skalierungswert größer als 1 ist.

Standardmäßig ist diese Eigenschaft auf Texture.Repeat eingestellt.

KonstanteBeschreibung
Texture.ClampToEdgeDie Textur wird nicht gekachelt, sondern der Wert an der Kante wird stattdessen verwendet.
Texture.MirroredRepeatDie Textur wird wiederholt und an der X-Achse gespiegelt.
Texture.RepeatDie Textur wird an der X-Achse wiederholt.

Siehe auch scaleU.


tilingModeVertical : enumeration

Diese Eigenschaft steuert, wie die Textur abgebildet wird, wenn der Skalierungswert V größer als 1 ist.

Standardmäßig ist diese Eigenschaft auf Texture.Repeat eingestellt.

KonstanteBeschreibung
Texture.ClampToEdgeDie Textur wird nicht gekachelt, sondern der Wert an der Kante wird stattdessen verwendet.
Texture.MirroredRepeatDie Textur wird wiederholt und an der Y-Achse gespiegelt.
Texture.RepeatDie Textur wird an der Y-Achse wiederholt.

Siehe auch scaleV.


© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.