Auf dieser Seite

Texture QML Type

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

Import Statement: import QtQuick3D
Inherits:

Object3D

Inherited By:

CubeMapTexture

Eigenschaften

Ausführliche Beschreibung

Eine Textur ist technisch gesehen ein beliebiges Pixelarray (1D, 2D oder 3D) sowie die dazugehörigen Einstellungen, wie z. B. Verkleinerungs- und Vergrößerungsfilter, Skalierung und UV-Transformationen.

Der Typ „Texture“ in „ Qt Quick 3D “ stellt ein zweidimensionales Bild dar. Er wird in der Regel verwendet, um dreidimensionale Geometrie abzubilden bzw. diese zu umhüllen, um zusätzliche Details zu simulieren, die in 3D nicht effizient modelliert werden können. Er kann auch verwendet werden, um andere Lichteffekte wie beispielsweise Reflexionen zu simulieren.

Während „Texture“ selbst immer eine 2D-Textur darstellt, stehen über Unterklassen von „Texture“ auch andere Texturarten zur Verfügung. Um beispielsweise eine Cube-Map-Textur mit 6 Flächen zu erstellen, verwenden Sie den Typ „ CubeMapTexture “.

Beim Rendern der Geometrie wird jede Stelle auf ihrer Oberfläche durch Transformation und Interpolation der für die Scheitelpunkte des Meshes festgelegten UV-Koordinaten (Texturkoordinaten) auf eine entsprechende Stelle in der Textur abgebildet. Das Fragment-Shader-Programm, das zum Rendern des aktiven Materials verwendet wird, nimmt dann in der Regel an den angegebenen Koordinaten Abtastungen der Materialtextur(en) vor und nutzt die abgetasteten Daten für seine Lichtberechnungen.

Hinweis: Ein Material kann mehrere Texturen verwenden, um die gewünschte Interaktion mit Licht in der 3D-Szene zu erzielen. Es kann die Farbe jedes Texels auf der Geometrieoberfläche darstellen, aber auch andere Eigenschaften der Oberfläche. Beispielsweise kann eine „Normal Map“ die Abweichung von den Geometrie-Normalen für jedes Texel auf der Oberfläche darstellen und so die Lichtinteraktion mit feineren Details auf der Oberfläche, wie Rissen oder Unebenheiten, nachbilden. Siehe das Beispiel für ein „Principled Material“, um ein Material mit mehreren Textur-Maps zu veranschaulichen.

Texturobjekte können Bilddaten aus folgenden Quellen beziehen:

  • einer Bild- oder Texturdatei mithilfe der Eigenschaft „ source “,
  • einer „ Qt Quick “- Item, unter Verwendung der Eigenschaft „ sourceItem “,
  • oder durch Setzen der Eigenschaft „ textureData “ auf eine Unterklasse des Elements „ TextureData “, um benutzerdefinierte Texturinhalte festzulegen.

Im folgenden Beispiel wird das Bild „madewithqt.png“ auf das Standard-Kugelnetz abgebildet und die UV-Koordinaten so skaliert, dass das Bild auf der Kugeloberfläche gekachelt wird.

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

Mit Qt-Logo erstellt

Kugel mit Qt-Logo als Texturkarte

Siehe auch „Qt Quick 3D “ – Beispiel für prozedurale Texturen.

Dokumentation zu den Eigenschaften

autoOrientation : bool [since 6.2]

Diese Eigenschaft legt fest, ob eine Texturtransformation – wie beispielsweise das Spiegeln der V-Texturkoordinate – automatisch auf Texturen angewendet wird, bei denen dies typischerweise relevant ist.

Standardmäßig ist diese Eigenschaft auf „true“ gesetzt.

Bestimmte Arten von Texturdaten, wie beispielsweise 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, weisen im Vergleich zu Texturen, die aus Bilddateien wie .png oder .jpg geladen werden, häufig eine andere Ausrichtung der Y-Achse auf. Daher würde eine solche Textur im Vergleich zu einer Textur, deren Quelle auf eine reguläre Bilddatei gesetzt ist, „auf dem Kopf stehend“ erscheinen. Um dies zu beheben, wird bei jeder betroffenen Textur eine implizite UV-Transformation durchgeführt, als ob die Eigenschaft „ flipV “ auf „true“ gesetzt wäre. Wenn dies nicht gewünscht ist, setzen Sie diese Eigenschaft auf „false“.

Hinweis: Diese Eigenschaft wirkt sich aus, wenn die Textur in Kombination mit einem „DefaultMaterial“ oder „ PrincipledMaterial “ verwendet wird. „ Custom materials “ stellen ihren eigenen Shader-Code bereit; daher werden Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert und müssen durch den von der Anwendung bereitgestellten Shader-Code implementiert werden.

Diese Eigenschaft wurde in Qt 6.2 eingeführt.

Siehe auch „ flipV “.

flipU : bool

Diese Eigenschaft legt fest, ob horizontal gespiegelte Texturkoordinaten verwendet werden sollen.

Der Standardwert ist „false“.

Hinweis: Diese Eigenschaft wirkt sich aus, wenn die Textur in Kombination mit einem „DefaultMaterial“ oder „ PrincipledMaterial “ verwendet wird. „ Custom materials “ stellen ihren eigenen Shader-Code bereit, sodass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und die Umsetzung dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt.

Siehe auch „ flipV “.

flipV : bool

Diese Eigenschaft legt fest, ob vertikal gespiegelte Texturkoordinaten verwendet werden sollen.

Der Standardwert ist „false“.

Hinweis: Diese Eigenschaft wirkt sich aus, wenn die Textur in Kombination mit einem „DefaultMaterial“ oder „ PrincipledMaterial “ verwendet wird. „ Custom materials “ stellen ihren eigenen Shader-Code bereit, sodass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und die Implementierung dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt.

Siehe auch „ flipU “.

generateMipmaps : bool

Diese Eigenschaft legt fest, ob Mipmaps für Texturen generiert werden, die selbst keine Mipmap-Ebenen bereitstellen. Die Verwendung von Mipmaps in Verbindung mit Mip-Filterung sorgt bei der Darstellung von Texturen aus der Entfernung für eine bessere Bildqualität als das Rendern ohne Mipmaps, kann jedoch zu Leistungseinbußen führen (sowohl bei der Initialisierung des Bildes als auch während des Renderns).

Standardmäßig ist diese Eigenschaft auf „false“ gesetzt.

Hinweis: Damit die generierten Mipmaps verwendet werden können,muss ein „ mipFilter “-Modus festgelegt werden.

Hinweis: Diese Eigenschaft ist nicht anwendbar, wenn der Texturinhalt auf einem „ Qt Quick “-Element basiert, auf das die Eigenschaft „ sourceItem “ verweist. Die Mipmap-Erzeugung für dynamische Texturen ist aufgrund der Auswirkungen auf die Leistung nicht möglich. Daher wird der Wert dieser Eigenschaft für solche Texturen ignoriert.

Siehe auch „ mipFilter “.

indexUV : int

Diese Eigenschaft legt den UV-Koordinatenindex fest, der von dieser Textur verwendet wird. Da „ QtQuick3D “ derzeit zwei UV-Sätze (0 oder 1) unterstützt, wird der Wert auf diesen Bereich begrenzt.

Der Standardwert ist 0.

magFilter : enumeration

Diese Eigenschaft legt fest, wie die Textur abgetastet wird, wenn sie „vergrößert“ wird, 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 hier „ Texture.None “verwendet wird , wird standardmäßig stattdessen „ Texture.Linear “ verwendet.

Siehe auch „ minFilter “ und „ mipFilter “.

mappingMode : enumeration

Diese Eigenschaft legt fest, welche Abbildungsmethode beim Abtasten dieser Textur verwendet werden soll.

KonstanteBeschreibung
Texture.UVDer Standardwert. Geeignet für Grundfarbe, Diffus, Deckkraft und die meisten anderen Textur-Maps. Führt ein Standard-UV-Mapping durch. Der gleiche Bildausschnitt erscheint immer am gleichen Scheitelpunkt, es sei denn, die UV-Koordinaten werden transformiert und animiert.
Texture.EnvironmentBei Verwendung für „ specular reflection “ wird das Bild so auf das Material projiziert, als würde es reflektiert. Die Verwendung dieses Modus für andere Arten von Textur-Maps erzeugt einen Spiegeleffekt.
Texture.LightProbeDies ist die Standardeinstellung für HDRI-Kugeltexturen, die von Lichtproben 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 nächstgelegenen Texel und interpoliert sie bilinear.

Hinweis: Wird hier „ Texture.None “verwendet , wird standardmäßig stattdessen „ Texture.Linear “ verwendet.

Siehe auch „ magFilter “ und „ mipFilter “.

mipFilter : enumeration

Diese Eigenschaft legt fest, wie die Textur-Mipmaps abgetastet werden, wenn ein Texel weniger als ein Pixel umfasst.

Der Standardwert ist „ Texture.None “.

KonstanteBeschreibung
Texture.Nonedeaktiviert die Verwendung von Mipmap-Abtastung.
Texture.NearestVerwendet Mipmapping und nimmt den Wert des nächstgelegenen Texels abtastend auf.
Texture.LinearVerwendet Mipmapping und interpoliert zwischen mehreren Texel-Werten.

Hinweis: Diese Eigenschaft hat keine Auswirkung auf Texturen, die keine Mipmaps enthalten.

Siehe auch minFilter und magFilter.

pivotU : real

Diese Eigenschaft legt die Position des Drehpunkts U fest, die bei der Anwendung eines „ rotationUV “ verwendet wird.

Der Standardwert ist 0,0.

Hinweis: Diese Eigenschaft ist wirksam, wenn die Textur in Kombination mit einem „DefaultMaterial“ oder einem „ PrincipledMaterial “ verwendet wird. „ Custom materials “ stellen ihren eigenen Shader-Code bereit, sodass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und die Implementierung dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt.

Siehe auch „ rotationUV “.

pivotV : real

Diese Eigenschaft legt die Position des Drehpunkts V fest, die bei der Anwendung eines „ rotationUV “ verwendet wird.

Der Standardwert ist 0,0.

Hinweis: Diese Eigenschaft ist wirksam, wenn die Textur in Kombination mit einem „DefaultMaterial“ oder einem „ PrincipledMaterial “ verwendet wird. „ Custom materials “ stellen ihren eigenen Shader-Code bereit, sodass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und die Umsetzung dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt.

Siehe auch „ pivotU “ und „ rotationUV “.

positionU : real

Diese Eigenschaft versetzt die U-Koordinatenabbildung von links nach rechts.

Der Standardwert ist 0,0.

Hinweis: Diese Eigenschaft wirkt sich aus, wenn die Textur in Kombination mit einem „DefaultMaterial“ oder „ PrincipledMaterial “ verwendet wird. „ Custom materials “ stellen ihren eigenen Shader-Code bereit, sodass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und die Umsetzung dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt.

Siehe auch „ positionV “.

positionV : real

Diese Eigenschaft versetzt die V-Koordinaten-Zuordnung 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-Positions (0, 0) en beziehen sich daher auf die linke untere Ecke der Bilddaten.

Hinweis: Diese Eigenschaft wirkt sich aus, wenn die Textur in Kombination mit einem „DefaultMaterial“ oder „ PrincipledMaterial “ verwendet wird. „ Custom materials “ stellen ihren eigenen Shader-Code bereit, sodass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und die Umsetzung dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt.

Siehe auch „ positionU “.

rotationUV : real

Diese Eigenschaft dreht die Textur um den Drehpunkt. Die Drehung wird mithilfe von Euler-Winkeln definiert; 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 “ stellen ihren eigenen Shader-Code bereit, sodass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und die Umsetzung dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt.

Siehe auch „ pivotU “ und „ pivotV “.

scaleU : real

Diese Eigenschaft legt fest, wie die U-Texturkoordinate beim Abbilden auf die UV-Koordinaten eines Meshes skaliert wird.

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

Der Standardwert ist 1,0.

Hinweis: Diese Eigenschaft wirkt sich aus, wenn die Textur in Kombination mit einem „DefaultMaterial“ oder „ PrincipledMaterial “ verwendet wird. „ Custom materials “ stellen ihren eigenen Shader-Code bereit; daher werden Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert und müssen durch den von der Anwendung bereitgestellten Shader-Code implementiert werden.

Siehe auch „ tilingModeHorizontal “.

scaleV : real

Diese Eigenschaft legt fest, wie die V-Texturkoordinate beim Abbilden auf die UV-Koordinaten eines Meshes skaliert wird.

Die Skalierung des V-Werts bei vertikaler Kachelung legt fest, 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 einem „ PrincipledMaterial “ verwendet wird. „ Custom materials “ stellen ihren eigenen Shader-Code bereit, sodass Transformationen wie die durch diese Eigenschaft konfigurierte ignoriert werden und die Umsetzung dem von der Anwendung bereitgestellten Shader-Code überlassen bleibt.

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, für die dieselben Regeln gelten wie für andere Quelleneigenschaften, z. B. Image.source. Bei „Texture“ werden nur die Schemata qrc und file unterstützt. Wenn kein Schema vorhanden ist und der Wert ein relativer Pfad ist, wird davon ausgegangen, dass er relativ zum Speicherort der Komponente (d. h. der Datei „ .qml “) ist.

Die Quelldatei kann jedes gängige Bilddateiformat haben supported by Qt. Darüber hinaus unterstützt „Texture“ dieselben Schemata compressed texture file types wie QtQuick::Image.

Hinweis: Beim Einlesenvon Texturdaten aus Bilddateien wie .png oder .jpg werden die Pixelzeilen innerhalb der Textur in einer von der Rendering-Engine Qt Quick 3D definierten Reihenfolge gespeichert. 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 eine vertikale Spiegelung im Fragment-Shader-Code, um identische Ergebnisse auf dem Bildschirm zu erzielen. Dies wird durch die Eigenschaft „ autoOrientation “ gesteuert und kann bei Bedarf deaktiviert werden.

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

Siehe auch „ sourceItem“ , „ textureData “, „ autoOrientation “ und „ flipV “.

sourceItem : Item

Diese Eigenschaft definiert ein Element, das als Texturquelle verwendet werden soll. Durch die Verwendung dieser Eigenschaft können beliebige 2D- Qt Quick -Inhalte als Texturquelle genutzt werden, indem dieses Element als Offscreen-Ebene gerendert wird.

Handelt es sich bei dem Element um ein „ texture provider “, wird keine zusätzliche Textur verwendet.

Ist diese Eigenschaft gesetzt, wird der Wert von ` source ` ignoriert. Eine Textur sollte eine einzige Methode zur Bereitstellung von Bilddaten verwenden und nur eine der Eigenschaften „source“, „sourceItem“ oder „ textureData “ festlegen.

Hinweis: Derzeit werden Eingabeereignisse nur dann an das als Texturquelle verwendete Element weitergeleitet, wenn der Benutzer darauf beschränkt ist, jeweils nur mit einer „sourceItem“-Instanz zu interagieren. Mit anderen Worten: Sie können dasselbe „Item“ für mehrere Texturen gemeinsam nutzen, können dann aber keine Multi-Touch-Interaktion mit demselben „Item“ auf mehreren Texturen gleichzeitig durchführen. Daher ist es am besten, für jede Textur-Instanz eine separate 2D-Subscene-Instanz zu verwenden, wenn Sie vorhaben, interaktive Elemente darin zu bearbeiten.

Hinweis: Von der Verwendung dieser Eigenschaft in einer Textur, auf die von mehreren Fenstern aus verwiesen wird, wird dringend abgeraten. Dies schließt auch die Verwendung über „ View3D::importScene “ ein. Da die durch diese Eigenschaft erstellte Quelltextur nur für einen Render-Thread zugänglich ist, schlägt der Versuch, sie zwischen mehreren „ QQuickWindow “-Instanzen gemeinsam zu nutzen, fehl – es sei denn, die Render-Schleife „ basic “ von „ Qt Quick “ wird anstelle der standardmäßigen „ threaded “-Schleife verwendet. Weitere Informationen zu den „ Qt Quick “-Render-Loops finden Sie unter „Qt Quick -Scene-Graph “.

Hinweis: Eine Textur, die die Ergebnisse eines Offscreen-Render-Durchgangs von „ Qt Quick “ enthält, weist effektiv eine andere Ausrichtung der Y-Achse auf als eine Textur, die ihren Inhalt über die Eigenschaft „source“ erhält. Bei Verwendung in Kombination mit „DefaultMaterial“ oder „ PrincipledMaterial “ ist dies für die Anwendung völlig transparent, da die erforderlichen UV-Transformationen automatisch angewendet werden, solange die Eigenschaft „ autoOrientation “ auf „true“ gesetzt ist; daher sind keine weiteren Maßnahmen erforderlich, unabhängig davon, wie die Textur bereitgestellt wurde. Bei der Entwicklung von „ custom materials “ muss der Autor des Shader-Codes dies jedoch beim Abtasten der Textur und bei der Arbeit mit UV-Koordinaten berücksichtigen.

Siehe auch source, textureData und autoOrientation.

textureData : TextureData

Diese Eigenschaft enthält einen Verweis auf eine „ TextureData “-Komponente, die den Inhalt und die Eigenschaften der Rohtexturdaten definiert.

Wird diese Eigenschaft verwendet, wird der Wert von „ source “ ignoriert. Eine Textur sollte nur eine Methode zur Bereitstellung von Bilddaten verwenden und nur eine der Eigenschaften „source“, „ sourceItem “ oder „textureData“ setzen.

Siehe auch „ source“ , „ sourceItem “ und „Qt Quick 3D – Beispiel für prozedurale Texturen“.

textureProvider : RenderExtension [since 6.7]

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

Hinweis: Die von „ RenderExtension “ erstellte Textur muss über „ registering “ der Engine zur Verfügung gestellt werden.

Diese Eigenschaft wurde in Qt 6.7 eingeführt.

Siehe auch „ TextureProviderExtension “, „ RenderExtension “ und „ QSSGRenderExtensionHelpers “.

tilingModeDepth : enumeration

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

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

KonstanteBeschreibung
Texture.ClampToEdgeDie Textur wird nicht gekachelt, stattdessen wird der Wert am Rand verwendet.
Texture.MirroredRepeatDie Textur wird wiederholt und über die Z-Achse gespiegelt.
Texture.RepeatDie Textur wird entlang der Z-Achse wiederholt.

tilingModeHorizontal : enumeration

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

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

KonstanteBeschreibung
Texture.ClampToEdgeDie Textur wird nicht gekachelt, sondern es wird stattdessen der Wert am Rand verwendet.
Texture.MirroredRepeatDie Textur wird wiederholt und über die X-Achse gespiegelt.
Texture.RepeatDie Textur wird entlang der X-Achse wiederholt.

Siehe auch „ scaleU “.

tilingModeVertical : enumeration

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

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

KonstanteBeschreibung
Texture.ClampToEdgeDie Textur wird nicht gekachelt, sondern es wird stattdessen der Wert am Rand verwendet.
Texture.MirroredRepeatDie Textur wird wiederholt und über die Y-Achse gespiegelt.
Texture.RepeatDie Textur wird entlang der Y-Achse wiederholt.

Siehe auch „ scaleV “.

© 2026 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.