Auf dieser Seite

Bewährte Verfahren für Anti-Aliasing

Qt Quick 3D Es gibt verschiedene Möglichkeiten, Aliasing (die gezackten Kanten) beim Rendern von 3D-Modellen zu bekämpfen. Jede Technik hat ihre eigenen Vorteile und Einschränkungen. Es können mehrere Techniken kombiniert werden, was jedoch mit zusätzlichen Leistungseinbußen verbunden ist.

Aliasing im Allgemeinen

Aliasing tritt auf, wenn das Original mehr Informationen enthält, als wir mit den Pixeln auf dem Bildschirm darstellen können. Anti-Aliasing-Verfahren lassen sich in drei Kategorien einteilen:

  • Verfahren, die zusätzliche Informationen für ein einzelnes Pixel ermitteln und diese alle gleichzeitig darstellen.
  • Bildeffekte, die versuchen, Stellen zu identifizieren, an denen das Bild unschön aussieht, und die Probleme unter den Teppich zu kehren.
  • Techniken, die von Künstlern eingesetzt werden, um die Einschränkungen zu umgehen.

Obwohl Anti-Aliasing ein nützliches Werkzeug beim Rendern von Grafiken ist, kann es die Leistung Ihrer Anwendung beeinträchtigen, wenn es nicht sinnvoll eingesetzt wird. In den folgenden Abschnitten werden verschiedene Anti-Aliasing-Techniken beschrieben, aus denen Sie wählen können. Wenn Sie verstehen, welche Technik für Ihre Probleme am besten geeignet ist, können Sie ein Gleichgewicht zwischen visueller Qualität und ausreichender Rendergeschwindigkeit herstellen.

Geometrie-Aliasing

Standardmäßig wird die gesamte Geometrie Pixel für Pixel auf dem Bildschirm gerendert. Wie Sie auf der linken Seite der Abbildung unten sehen können, entstehen dadurch scharfe Kanten, die bei hohem Kontrast leicht auffallen können – hier besonders deutlich bei Schwarz-Weiß-Darstellungen.

Vergleich von fünf Antialiasing-Verfahren an gedrehten Quadraten, Kreisen und Text

Wirksame Techniken zur Reduzierung von Aliasing bei Geometrie

Die korrekteste Lösung hierfür ist die Verwendung von Multisample-Anti-Aliasing, da dabei geometrische Details nur bei Bedarf in größerer Auflösung erfasst werden. Auch die Verwendung von Temporal Anti-Aliasing oder Progressive Anti-Aliasing kann das Problem auf korrekte Weise mindern.

Schließlich können Sie in bestimmten Fällen eine Silhouetten-Opazitätskarte verwenden, um die Kanten der Geometrie zu glätten.

Textur-Aliasing

Wenn eine Textur unterabgetastet wird, werden weniger Pixel als im Original angezeigt, was je nach Auswahl der Pixel zu unerwünschten Artefakten führt. Dieser Effekt verstärkt sich, wenn sich das Modell bewegt, da zu unterschiedlichen Zeitpunkten unterschiedliche Pixel ausgewählt werden. Beachten Sie im folgenden Bild, wie die Linie zwischen E3 und F3 fehlt, zwischen G3 und H3 deutlich zu sehen ist, dann für die nächsten 5 Spalten wieder fehlt und so weiter.

Vergleich von vier Antialiasing-Verfahren bei sich in die Ferne erstreckenden Gittertexturen

Wirksame Techniken zur Reduzierung von Aliasing bei Texturen

Die einfachste (und wohl auch beste) Lösung für dieses Problem ist die Verwendung von Mipmapping in der Bildtextur selbst. Alternative Lösungen sind der Einsatz von Temporal AA oder Progressive AA, um mehr Informationen aus der Textur zu gewinnen.

Die Verwendung von Multisample-Anti-Aliasing behebt dieses Problem nicht.

Reflexions-Aliasing

Ähnlich wie beim Textur-Aliasing führt ein Material, das die Umgebung reflektiert, zu einer Unterabtastung des Bildes. In manchen Fällen, wie links im Bild unten zu sehen, wird deutlich, dass feine Details übersprungen werden.

Vergleich von vier Verfahren zur Reduzierung von Reflexions-Aliasing

Wirksame Techniken zur Reduzierung von Aliasing bei Reflexionen

Die korrekteste Lösung in diesem Fall ist die Verwendung von Temporal AA oder Progressive AA, um die zusätzlichen Informationen zu ermitteln.

Eine einfache alternative Lösung, die akzeptabel sein könnte, besteht darin, das Material weniger glänzend und rauer zu gestalten. In diesem Fall werden automatisch Mipmaps der Umgebung mit niedrigerer Auflösung verwendet, wodurch die scharfen Details miteinander verschmelzen.

Anti-Aliasing-Techniken in Qt Quick 3D

Hinweis: Sehen Sie sich das Antialiasing-Beispiel und das Szenen-Effekte-Beispiel an, um einige dieser Funktionen live auszuprobieren. Beachten Sie jedoch, dass moderne Fenstersysteme oft so konfiguriert sind, dass sie bei Anschluss eines hochauflösenden Bildschirms eine High-DPI-Skalierung durchführen. Das bedeutet, dass der Inhalt jedes auf dem Bildschirm angezeigten Fensters mit einer höheren Auflösung gerendert und anschließend vom System-Compositor oder einer anderen Komponente der Plattform herunter skaliert wird. Dies ist im Grunde eine Form des Supersample-Anti-Aliasing. Das Aktivieren von Antialiasing-Techniken in „ Qt Quick 3D “ führt daher möglicherweise nur zu geringfügigen oder manchmal kaum wahrnehmbaren Verbesserungen, da das Aliasing durch die automatische Skalierung des Fenstersystems bereits bis zu einem gewissen Grad beseitigt wurde. Bei der Bereitstellung derselben Anwendung auf einem anderen System kann es jedoch durchaus vorkommen, dass dieses System eine Plattform oder einen Bildschirm verwendet, bei dem eine solche Skalierung nicht vorhanden ist, sodass Aliasing und gezackte Kanten von Haus aus stärker sichtbar sind. Entwicklern wird empfohlen, das mögliche Vorhandensein oder Fehlen einer Skalierung für hohe DPI-Werte in ihren Zielumgebungen zu berücksichtigen und die Antialiasing-Einstellungen unter diesem Gesichtspunkt zu testen und anzupassen.

Nachfolgend finden Sie eine Beispieldarstellung der Sponza-Szene mit aktivierten Antialiasing-Methoden. Die Screenshots wurden ohne jegliche Systemskalierung des Fensters (keine High-DPI-Skalierung) aufgenommen, sodass die Effekte der verschiedenen Methoden deutlicher zu erkennen sind.

Verwendetes AAErgebnis
Kein AA

Architekturszene ohne Kantenglättung, die gezackte Kanten zeigt

Supersample-AA, hoch (1,5x)

Architekturszene mit Supersample-Antialiasing bei 1,5-facher Auflösung

Multisample-AA, hoch (4x)

Architekturszene mit Multisample-Antialiasing bei 4x

FXAA

Architekturszene mit schnellem, approximativem Antialiasing

Zeitbasierte Bildverbesserung, Standardstärke (0,3)

Architekturszene mit zeitlichem Antialiasing

Multisample-Anti-Aliasing

Multisample-AA (MSAA) wird entweder auf den Farbpuffer des Elements „ View3D “ angewendet (dies ist die Standardeinstellung) oder, falls ein „ renderMode “ verwendet wird, das nicht „ Offscreen “ ist, auf das gesamte „ Qt Quick “-Fenster (QQuickWindow, QQuickView, Window, ApplicationWindow).

Die Kanten der Geometrie werden hochgesampelt, was zu glatteren Konturen führt. Diese Technik hat jedoch keine Auswirkungen auf die Materialien innerhalb der Geometrie.

  • Vorteile: Gute Ergebnisse bei Geometriesilhouetten, wo Aliasing oft am deutlichsten sichtbar ist. Funktioniert problemlos bei schnellen Animationen. Viele neuere GPUs unterstützen 2x oder 4x MSAA ohne Leistungseinbußen.
  • Nachteile: Die Nutzung kann ressourcenintensiv sein, insbesondere auf älterer mobiler und eingebetteter Hardware. Hilft nicht bei Problemen mit Texturen oder Reflexionen.

Wenn der „ View3D “ die Standard- renderMode -Einstellung „ Offscreen “ verwendet, hat der „ View3D “ selbst die volle Kontrolle über das Multisample-Antialiasing. Anwendungen können dies über die Eigenschaften „ antialiasingMode “ und „ antialiasingQuality “ der Umgebung (SceneEnvironment oder ExtendedSceneEnvironment) konfigurieren, die mit dem „ View3D “ verknüpft ist.

Das folgende Beispiel fordert das häufig verwendete 4x MSAA an, da „antialiasingQuality“ standardmäßig auf „ SceneEnvironment.High “ gesetzt ist.

View3D {
    environment: SceneEnvironment {
        antialiasingMode: SceneEnvironment.MSAA
    }
}

MSAA wird nicht von Qt selbst implementiert, sondern von der zugrunde liegenden 3D-API ausgeführt. Daher können Leistung und Qualität je nach Hardware und deren 3D-API-Implementierungen variieren.

Zeitliches Anti-Aliasing

Temporäres AA wird auf den Farbpuffer des „ View3D “ angewendet. Die Kamera wird zwischen den Einzelbildern sehr leicht verschoben, und das Ergebnis jedes neuen Einzelbilds wird mit dem vorherigen Einzelbild überblendet.

  • Vorteile: Durch die leicht wackelnde Kamera werden echte Details erkannt, die sonst verloren gegangen wären. Geringe Auswirkungen auf die Leistung.
  • Nachteile: Sich schnell bewegende Objekte verursachen Geisterbilder über ein Einzelbild hinweg.

Temporales AA hat keine Wirkung, wenn es mit Multisample-AA kombiniert wird. Es kann jedoch mit progressivem AA kombiniert werden.

Um das zeitliche Anti-Aliasing zu steuern, verwenden Sie die Eigenschaften „ temporalAAEnabled “ und „ temporalAAStrength “ der Umgebung.

View3D {
    environment: SceneEnvironment {
        temporalAAEnabled: true
    }
}

Progressives Anti-Aliasing

Progressives AA wird auf den Farbpuffer des ` View3D` angewendet. Wenn sich alle vom ` View3D ` gerenderten Inhalte in der Szene nicht mehr bewegen, wird die Kamera zwischen den Einzelbildern ganz leicht verschoben, und das Ergebnis jedes neuen Einzelbilds wird mit den vorherigen Einzelbildern überblendet. Je mehr Einzelbilder Sie ansammeln, desto besser sieht das Ergebnis aus.

  • Vorteile: Liefert detailreiche statische Bilder ohne Leistungseinbußen.
  • Nachteile: Wirkt nicht, wenn visuelle Veränderungen stattfinden. 8x PAA benötigt eine Achtelsekunde für die Fertigstellung des Renderings (bei 60 fps), was möglicherweise wahrnehmbar ist.
View3D {
    environment: SceneEnvironment {
        antialiasingMode: SceneEnvironment.ProgressiveAA
    }
}

Verwenden Sie „ antialiasingQuality “, um festzulegen, wie viele Frames miteinander überblendet werden sollen (2, 4 oder 8).

Supersample-Anti-Aliasing

Supersample-AA wird auf den Farbpuffer eines „ View3D “ angewendet. Dabei wird ein Farbpuffer (Textur) erstellt, der größer ist als seine normale Größe, und anschließend heruntergerechnet. Dies bedeutet einen erhöhten Ressourcenverbrauch, und bei großen Größen kann der Skalierungsvorgang rechenintensiv sein.

  • Vorteile: Bietet Anti-Aliasing für die gesamte Szene ohne Einschränkungen bei der Animation.
  • Nachteile: Kann die Leistung erheblich beeinträchtigen, wenn Ihre Szene bereits durch die Füllrate des Grafiksystems begrenzt ist, insbesondere bei älterer mobiler und eingebetteter Hardware.
View3D {
    environment: SceneEnvironment {
        antialiasingMode: SceneEnvironment.SSAA
    }
}

Verwenden Sie „ antialiasingQuality “, um den Größenmultiplikator (1,2, 1,5 oder 2,0) einzustellen.

Mipmaps

Beim Mipmapping wird die Textur zusammen mit ihren vorberechneten Versionen mit niedrigerer Auflösung gespeichert. Immer wenn die Textur in einer kleineren Größe angezeigt wird, verwendet das Rendering-System automatisch diese Bilder mit niedrigerer Auflösung (die viele Details in weniger Pixeln zusammenfassen).

  • Vorteile: Geringe Auswirkungen auf die Leistung. Verbessert die Bildqualität von Texturen erheblich.
  • Nachteile: Erfordert die potenziell aufwendige Erstellung der Mipmap-Kette oder, bei einigen Bildcontainerformaten, die Vorabgenerierung der Mipmap-Bilder im Bild-Asset selbst. Verbraucht 33 % mehr Grafikspeicher als dasselbe Bild ohne Mipmaps.

Damit Qt Mipmaps für ein „ Texture “ generiert und die Verwendung der Mipmap-Kette beim Textur-Sampling in den Grafik-Shadern ermöglicht, setzen Sie die Eigenschaften „ mipFilter “ und „ generateMipmaps “.

Texture {
    source: "image.png"
    mipFilter: Texture.Linear
    generateMipmaps: true
}

Spiegelungs-Anti-Aliasing

Artefakte, die durch die spiegelnde Beleuchtung entstehen, lassen sich durch Aktivieren des „Specular Anti-Aliasing“ reduzieren. Diese Artefakte zeigen sich typischerweise als helle Punkte, die unter Umständen flackern.

Spiegelungs-AA deaktiviertSpiegelungs-AA aktiviert

Architekturansicht mit spiegelnden Lichtreflexen ohne Anti-Aliasing

Architekturaufnahme mit geglätteten Spiegelungen und Anti-Aliasing

View3D {
    environment: SceneEnvironment {
        specularAAEnabled: true
    }
}

Hinweis: Materialien mit einer sehr glatten Oberfläche können beim Aktivieren von Specular AA so aussehen, als hätten sie eine „ more rough “-Oberfläche. Dies ist auf die zugrunde liegenden Beleuchtungsberechnungen zurückzuführen.

Schnelles approximatives Anti-Aliasing

ExtendedSceneEnvironment bietet eine weitere Methode des Anti-Aliasing in Form eines Nachbearbeitungseffekts. Um FXAA zu aktivieren, setzen Sie „ fxaaEnabled “ auf „true“.

import QtQuick3D.Helpers

View3D {
    environment: ExtendedSceneEnvironment {
        fxaaEnabled: true
    }
}

Von Künstlern verwendete Tricks

Opazitätskarten für Silhouetten

Wenn Ihr Modell eine einheitliche Silhouette aufweist, können Sie eine Opazitätskarte anwenden, die den äußeren Rand der Geometrie transparent macht. Durch die Verwendung eines Farbverlaufs für die Opazität lässt sich der Rand des Objekts sanft ausblenden. Doch selbst wenn Ihre Opazitätskarte innerhalb eines Pixels direkt von vollständig undurchsichtig zu vollständig transparent übergeht, liefert das Ergebnis dennoch Kanten mit Anti-Aliasing, wie im obigen Beispiel zu sehen ist. Das liegt daran, dass Bildkarten, einschließlich Opazitätskarten, bilineare Interpolation verwenden.

  • Vorteile: Kann weichere Übergänge als normales Anti-Aliasing darstellen. Kann pro Modell statt pro Ebene angewendet werden.
  • Nachteile: Kann nicht verwendet werden, wenn sich die Silhouette des Objekts jemals ändern wird. Mehrere sich überlappende Modelle, die Transparenz nutzen, beanspruchen Füllratenleistung, die oft knapp bemessen ist.

Materialien oder Geometrie ändern

Wie in der Abbildung zum Thema „Reflexions-Aliasing“ oben gezeigt, besteht die einfachste Lösung für Probleme manchmal darin, das Artwork zu ändern. Wenn an der Ecke Ihres Modells störende Spiegelungen auftreten, fragen Sie sich: Kann ich das Material weicher gestalten? Kann ich die Geometrie anpassen, um den Reflexionswinkel zu glätten oder zu ändern? Kann ich die Umgebungskarte bearbeiten, um scharfe Übergänge zu reduzieren?

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