Antialiasing

Aus CINEMA 4D Wiki

Wechseln zu: Navigation, Suche

Read this article in English

Ohne Antialiasing

Inhaltsverzeichnis

Übersicht

Mit Antialiasing

Antialiasing bedeutet Entrastern. Um Stufenerscheinungen im erzeugten Bild zu reduzieren, sendet das Renderprogramm deutlich mehr Suchstrahlen in die Szene, als das Ausgabeformat Pixel hat. Aus den Rückgabewerten der Suchstrahlen ermittelt das Renderprogramm anschließend einen Mittelwert. Auf diese Weise wird die Auflösung der Ausgabe scheinbar erhöht. Störende Stufungen an diagonalen Strukturen und das Objektkanten- und das Texturflimmern in Animationen lassen sich weitgehend unterdrücken. Werden innerhalb eines Pixels zum Beispiel 2x2 = 4 Suchstrahlen ausgesandt, spricht man von einem 2x2-Antialiasing.

C4D bietet ein adaptives Antialiasing. Adaptiv bedeutet in diesem Zusammenhang, dass der Renderer den Antialiasing-Aufwand an die Verhältnisse im Bild anpassen kann. Im Vergleich zu einem nicht-adaptiven Antialiasing kann mit diesem Ansatz ein erheblicher Teil der Berechnungszeit eingespart werden.

Es gibt folgende zwei Möglichkeiten beim C4D-Antialiasing:

Modus Bestes

Vergleichstafel verschiedener Antialiaseinstellungen

Dies ist das „klassische“ Antialiasing-Verfahren in der adaptiven C4D-Variante. Die Szene wird entsprechend den Parametervorgaben des Anwenders mit Suchstrahlen abgetastet, deren waagerechte und senkrechte Verteilung feiner ist, als das Raster des zu erzeugenden Bildes.

 Schwellwert Während der Antialiasingprozeß innerhalb eines Pixels abläuft, vergleicht der Algorithmus das momentane Zwischenergebnis ständig mit den bereits berechneten Nachbarpixeln. Falls der zur Zeit in der Berechnung befindliche Mittelwert dem Farbwert der Nachbarpixel ausreichend „ähnelt", wird das Antialiasing abgebrochen. Es wird einfach vermutet, dass die Pixel sich wohl farblich ähneln. Dies ist meistens eine gute Entscheidung, seltener nicht. Steht der Schwellwert z. B. auf 5 Prozent so wird der Antialiasingprozeß abgebrochen, sobald die farbliche Abweichung des derzeit bearbeiteten Pixels von seinen Nachbarpixeln kleiner ist, als 5 Prozent. Es werden jedoch mindestens so viele Subpixel-Abtastungen vorgenommen, wie unter Minwert eingetragen ist. Wird keine ausreichende Ähnlichkeit erzielt, so ist der Maxwert das endgültige Abbruchkriterium. Mit Hilfe dieses Verfahrens können detailarme Flächen erheblich schneller abgearbeitet werden.
 Minwert Hier steht die Mindestzahl für die Subpixel-Abtastung. Bei 2x2 zum Beispiel werden mindestens 4 Subpixel pro Bildpixel berechnet. Dabei spielen alle anderen Antialiasing-Einstellungen keine Rolle. Der sich ergebende Farbwert für das Pixel ist der Mittelwert dieser 4 Abtastungen.
 Maxwert Maximalzahl für die Subpixel-Abtastung. Steht hier zum Beispiel 4x4, so wird spätestens nach 16 Abtastungen innerhalb eines Bildpixels das Antialiasing abgebrochen - auch wenn das Antialiasing noch nicht akzeptabel ist.

Modus Geometrie

Geometrieantialiasing ist speziell für die Konturen von Objekten gedacht. Das Renderprogramm tastet die Szene systematisch pixelzeilenweise von links nach rechts und von oben nach unten ab. Werden nun von einem Suchstrahl zum nächsten zwei verschiedene Objekte gefunden, hat der Raytracer einen Objektwechsel und somit eine Kontur entdeckt. Diese Situation stellt ein großes Risiko für unschöne „Treppchenbildung“ an der Kontur dar. Deshalb untersucht der Algorithmus den Übergang zwischen den beiden Objekten genauer. Er versucht zu ermitteln, welcher Anteil des in Bearbeitung befindlichen Pixels noch zum ersten Objekt gehört und welcher Anteil bereits zum Zweiten. Dazu sendet er in der Nähe des Übergangs zwischen den beiden Objekten einige Suchstrahlen aus. Sobald die Position des Übergangs innerhalb des Pixels ausreichend genau ermittelt wurde, ist die Berechnung des anteilig gewichteten Farbmittelwerts für dieses Pixel möglich.

Das Geometrieantialiasing kann als Ergänzung zum Bestes-Antialiasing gesehen werden. Es wird automatisch mit jeder Bestes-Einstellung eingeschaltet. Selbst mit den Parametern Minwert 1, Maxwert 1 und dem Schwellwert 100% wird das Geometrie-Antialiasing voll aktiv, obwohl diese Antialiasingeinstellung ansonsten natürlich unwirksam ist. Außerdem eignet es sich wegen seiner hohen Geschwindigkeit gut zum Aufhübschen schneller Testrender.

Spiegelungen und Transparenzen

Das Geometrie-Antialiasing erkennt ausschließlich Konturen von Objekten, die der Raytracer direkt sieht, also nicht durch eine Transparenz hindurch oder in einem Spiegel. Sollen derartige Konturen antialiasiert werden, so ist dies ausschließlich über den Modus Bestes auf die gesamte Ausgabe oder durch ein - mit Hilfe eines Render-Tags - erzwungenes Antialiasing möglich. Dieses Render-Tag muß dann auf das Transparenz-Objekt bzw. das Spiegelobjekt angewandt werden - nicht auf das zu antialisierende Objekt. Derartige (indirekte) Konturen werden dann nicht mehr durch den oben beschriebenen Geometrie-Antialiasing-Algorithmus behandelt, sondern gewissermaßen als Textur auf dem Spiegel bzw. auf der Transparenz interpretiert und durch den adaptiven Antialiaser des Bestes-Modus verarbeitet.

Hinsichtlich der Qualität gibt es in Cinema 4D für Objektkonturen nichts besseres, als das Geometrie-Antialiasing. Falls dieses hinter Transparenzen und Spiegeln durch das Bestes-Antialiasing ersetzt werden muss, sind unter Umständen sehr hohe Antialiasing-Parameter erforderlich, um ähnlich gute Ergebnisse zu erzielen. In solchen Situationen empfiehlt es sich natürlich, diese hohen Parameter per Render-Tag auf die Transparenz bzw. den Spiegel zu begrenzen.

Render-Tag

Cinema-4D erlaubt es dem Nutzer, Antialiasing-Einstellungen objektweise vorzunehmen. Dies ermöglicht erfahrenen Anwendern den Antialiasing-Aufwand und die damit verbundene Renderzeit noch weiter zu optimieren. Die zugehörigen Einstellungen werden im Render-Tag eingegeben, welches dem entsprechenden Objekt zugeordnet werden muß. Außerdem ist es dann erforderlich, in den allgemeinen Render-Voreinstellungen (nicht im Render-Tag) das Antialiasing auf Beste zu stellen. Die Eingaben unter Minwert, Maxwert und Schwellwert stehen dann für das Antialiasing aller Objekte ohne eigenes Render-Tag.

Achtung: Ist ein Objekt durch eine Transparenz hindurch oder in einer Spiegelung zu sehen, muß dem transparenten bzw. dem spiegelnden Objekt der gewünschte Antialiasing-Wert zugewiesen werden. Also jeweils dem Objekt, auf das der Suchstrahl auf dem Weg zum Objekt zuerst trifft.

Textur-Antialiasing

Texturen können den Detailgrad einer Szene nahezu beliebig erhöhen. Dies kann dazu führen, dass sich aus Sicht des Raytracers auf der Fläche eines einzigen Pixels ein kompliziertes Muster befindet. Aufgabe des Antialiasers ist es ja, aus der Pixelfläche - also in diesem Fall dem komplizierten Muster - einen ausreichend genauen Mittelwert zu bilden. Gelingt dies nicht, weichen die fehlerhaft gemittelten Pixel im Farbwert von ihren Nachbarn ab. Bestimmende Faktoren für diese Fehler sind die zufällige Lage des Pixels im Raum bzw. Zoom und Betrachtungswinkel der Kamera. Bei Standbildern kommt es dadurch zu fleckigen Flächen und bei Animationen zu sichtbarem Texturflimmern.

Der Antialiaser verknüpft und bewertet die Ergebnisse der einzelnen Abtastungen nach Algorithmen, die durch den Anwender ausgewählt werden können. Dieser Vorgang wird als Texturfilterung bezeichnet und ist Teil des Antialiasingprozesses. Folgende Möglichkeiten stehen zur Wahl:

 Standbild Neutrale Standardeinstellung.
 Animation Dieser Unschärfefilter verringert Artefakte, die durch eine nachfolgende diskrete Cosinus-Transformation (JPEG-Kompression) verursacht würden.
 Mischen Mischt die Filter Standbild und Animation in einem einstellbarem Verhältnis.
 Sinc Die Nachbarpixel innerhalb des Filterfensters werden anhand einer Sinus-Cardinalis-Kurve gewichtet.
 Rechteck Eine wählbare Zahl von Nachbarpixeln innerhalb des Filterfensters wird zur Mittelwertbildung herangezogen. Die Pixel werden alle gleich (voll) gewichtet.
 Kegel Die Nachbarpixel innerhalb des Filterfensters werden linear mit zunehmenden Abstand abnehmend gewichtet.
 Catmull Die Nachbarpixel innerhalb des Filterfensters werden per Catmull-Kurve gewichtet.
 PAL/NTSC Dieser Unschärfefilter verringert die Zeilenauflösung mit dem Ziel, eine durch die Farbfernseh-Übertragungsverfahren PAL bzw. NTSC übertragbare Frequenzbandbreite (etwa 5 MHz) zu erreichen. Auf diese Weise kann die Übersteuerung von Videoverstärkern und die daraus resultierende Artefaktbildung (Mehrfachkonturen) vermieden werden.
Für S-VHS-Aufnahmen empfiehlt Maxon jedoch den Standbild-Filter.

Eine genaue Mittelwertbildung lässt sich mit dem bislang dargestellten Antialiasing-Verfahren dadurch erreichen, das eine große Zahl von Suchstrahlen auf der Fläche eines Pixels ausgesandt wird. Bei beliebig komplizierten Texturen ergeben sich so beliebig viele Suchstrahlen und letztlich beliebig lange Rechenzeiten. Aufwand und Zeitbedarf stehen unter Umständen in keinem effektiven Verhältnis mehr zu der Aufgabe des Antialiasers, ein einziges Pixel einzufärben.

Mip-Mapping & Co - Antialiasing im Voraus

Einen Ausweg aus diesem Dilemma bietet die Idee, für das Antialiasing niedrig aufgelöste Texturen zu verwenden. Hierzu werden von den vorhandenen Texturen bereits vor Beginn des Renderns niedriger aufgelöste Varianten erzeugt. Diese wertet der Raytracer nur dann aus, wenn mehrere Suchstrahlen innerhalb eines einzelnen Pixels ausgesandt werden - also beim Antialiasing. Der Raytracer sieht innerhalb eines Pixels dann gewissermaßen eine verschwommene Variante der Textur, was einem Mittelwert oft schon sehr nahe kommt.

Bei C4D wurde eine Vielzahl an Varianten dieses Prinzips implementiert, unter anderem das bekannte Mip-Mapping. Die entsprechenden Einstellungen sind im Materialeditor angelegt. Um sie zu finden, wählt man einen texturfähigen Materialkanal aus (z. B. Farbe), lädt oder erzeugt eine Textur und sieht dann unter dem Auswahlknopf Interpolation nach.

Antialiasing und Renderzeit

Innerhalb von Cinema 4D kann eine Vielzahl iterativer Prozesse aktiviert werden, die, jeweils auf bestimmte optische Phänomene hin ausgerichtet, ihren jeweiligen Anteil zum Bild beisteuern. Das Antialiasing kann dabei als oberste Prozessschicht angesehen werden. Alle tiefer liegenden Renderprozesse haben einen Anteil an der Einfärbung eines bearbeiteten Pixels. Letztlich wird das Resultat der Ergebnisse aller tiefer liegenden Renderprozesse vom Antialiasing-Algorithmus entgegengenommen. Dieser entscheidet dann adaptiv, ob weitere Subpixel abgearbeitet werden müssen.

Beispielsweise wird bei der Berechnung der Global Illumination (GI, Streulichtberechnung) eine bestimmte Zahl von Suchstrahlen vom Objekt aus in die Szene gesandt. Steht der Suchstrahlenwähler bei der stochastischen GI auf 32, so werden mit jedem Aufruf des GI-Prozesses 32 Strahlen ausgesandt (Optimierungen vernachlässigt). Ist das Antialiasing dabei ausgeschaltet (Keines), so werden diese 32 Suchstrahlen 1 x pro Pixel ausgesandt. Bei aktiviertem (Bestes)-4x4-Antialiasing kann es dagegen vorkommen, dass der GI-Prozess 16 Mal aufgerufen wird, was 16 x 32 = 512 GI-Suchstrahlen zur Folge hätte. Durch die höhere Antialiasing-Einstellung verringerten sich also nicht nur die auf Aliasing zurückzuführenden Darstellungsmängel, sondern auch die relative Qualität der Global Illumination.

Das Ziel der Parametereinstellung ist ein ökonomischer Einsatz des Renderers, um in möglichst kurzer Zeit die erwartete Ausgabequalität zu erzielen. Dabei können Effekte auftreten, die sich als Zeitfresser darstellen und die von weniger erfahrenen Anwendern noch nicht erkannt werden. Stellt man beispielsweise in einem frühen Projektstadium ohne Antialiasing die GI-Parameter bereits auf die endgültig gewünschte Qualität ein, so kann dies beim finalen Rendering unter einem 8x8- oder 16x16-Antialiasing zu einer stark übertriebenen GI-Qualität und damit, z. B. beim Rendern von Animationen, zu erheblichen Zeitverlusten führen.

Tipps

Bewegungsunschärfe

Wird Bewegungsunschärfe eingesetzt, können die Antialiasing-Einstellungen oft erheblich reduziert und die Renderzeiten wieder verringert werden.

Einfache Antialiasing-Einstellung für Anfänger

In der Praxis kann Cinema 4D auch mit kleinen Antialiasing-Parametern sehr gute Ergebnisse liefern (z. B. Minwert = 1x1 und Maxwert = 2x2). Höhere Werte führen selten zu sichtbar besseren Ergebnissen, verlängern jedoch die Renderzeit. In Einzelfällen können jedoch auch extreme Einstellungen erforderlich sein. Erfahrene Cinema-4D-Anwender jonglieren in solchen Situationen mit vielen Parametern oder weichen in die Nachbearbeitung aus. Anfänger wären jedoch vielleicht für eine Methode dankbar, die auch bei nicht optimaler Effizienz die erwartete Qualität in einer halbwegs akzeptablen Zeit liefert. Die im Folgenden beschriebene Herangehensweise stellt den Versuch einer solchen Methode dar. Als Antialiasing-Modus wird Bestes gewählt. Die Parameter sind für Minwert 1x1 und für Maxwert 16x16. Beide Werte werden danach nicht mehr verändert.

Jetzt lässt sich die Qualität der Ausgabe sehr einfach und sicher kontrollieren, in dem ausschließlich der Parameter Schwellwert verändert wird. Es gibt keine Qualitätsprobleme bei Transparenzen oder Spiegelungen.

Dabei bedeuten dann:

  • 50% für schnelle Tests
  • 5% für sehr gute Qualität
  • 0% für maximale Qualität unter allen Bedingungen

Weblinks

Persönliche Werkzeuge