-
TECHNISCHES GEBIET
-
Diese Anmeldung richtet sich allgemein auf das Rendern eines Bildes und insbesondere auf das Rendern eines Hintergrundes in einem Bild.
-
HINTERGRUND
-
Bei Computergrafik, z. B. einem nicht in Echtzeit durchgeführten physikalisch basierten Rendern (Physically Based Rendering), verwendet man für Hintergründe gewöhnlich aufgenommene (z. B. HDR-(High-Dynamic-Range)-Fotos) oder gerenderte (z. B. ein Himmelsmodell) Bilder. Diese Bilder können als eine Umgebungskarte, die als ein Rundum-Hintergrundbild und eine Lichtquelle einer Szene dient, und/oder als eine Rückplatte, die als ein Hintergrundbild mit fester Perspektive dient, verwendet werden. Diese Bilder werden als „Hintergrundbilder“ bezeichnet.
-
Wenn Hintergrundbilder verwendet werden, um eine Szene zu umgeben und zu beleuchten, wirken Merkmale in den Hintergrundbildern nicht überzeugend, da ein virtueller Blickpunkt, z. B. Kameraposition, der Szene von der ursprünglichen Position abweicht, d. h. der Position, in der der Hintergrund aufgenommen oder erzeugt wurde. Wenn sich zum Beispiel eine Position einer Kamera, die die Szene betrachtet, bewegt und sich von der ursprünglichen Position entfernt, verschieben sich einige der Merkmale in den Hintergrundbildern, die näher an der Kamera liegen, nicht relativ zu denen, die weiter entfernt sind, wie sie es im wirklichen Leben tun würden. Außerdem erscheinen alle Oberflächen im Hintergrundbild diffus, d. h. es treten keine Reflexions- und Brechungseffekte auf.
-
Dies liegt daran, dass es sich bei den Hintergrundbildern um zweidimensionale (2D) Bilder handelt, weshalb der einzige Blickpunkt für korrektes Sehen der Hintergrundbilder die ursprüngliche Position ist, und die Umgebung in den Hintergrundbildern ist per Definition in der Unendlichkeit. Richtungsdaten zum korrekten Beleuchten der Szene wären nur von der ursprünglichen Position aus verfügbar. Dadurch werden die Hintergrundbilder bei Projektion in den Welt-Raum blickunabhängig und parallaxenfrei und könnten keine neuen Beleuchtungsinformationen liefern.
-
Die oben genannten Probleme treten auch auf, wenn matte Objekte als Teil von Hintergrundbildern verwendet werden. Matte Objekte sind Platzhalter-Geometrien, die als ein Ersatz für ausgewählte Objekte in den Hintergrundbildern hinzugefügt werden. Sie werden verwendet, um Wechselwirkungen zwischen computergenerierten („synthetischen“) Vordergrundobjekten und dem Hintergrund zu simulieren, wie z. B. Vordergrundobjekten, die Schatten auf ein mattes Objekt werfen, oder den in einem matten Objekt gesehenen Reflexionen von Vordergrundobjekten. Da das Erscheinungsbild von matten Objekten aus den Pixeln der Hintergrundbilder abgeleitet wird, wirken die matten Objekte ebenfalls diffus und nicht überzeugend und haben keine Parallaxe, wenn der Blickpunkt von der ursprünglichen Position abweicht. Man beachte, dass sich der Blickpunkt unter Berücksichtigung von Reflexion und Brechung immer von der ursprünglichen Position unterscheidet.
-
Figurenliste
-
Es wird nun auf die folgenden Beschreibungen Bezug genommen, die anhand der begleitenden Zeichnungen gegeben werden, in denen:
- 1 ein Flussdiagramm eines Verfahrens zur Verwendung eines Lichtfeldes als Hintergrund beim Rendern gemäß den Prinzipien der Offenbarung veranschaulicht; und
- 2 ein Blockdiagramm eines Beispiel-Computersystems veranschaulicht, das konfiguriert ist, um das Verfahren zur Verwendung eines Lichtfeldes als Hintergrund beim Rendern gemäß den Prinzipien der Offenbarung, wie z. B. im Kontext von 1 erörtert, durchzuführen.
-
DETAILLIERTE BESCHREIBUNG
-
Das vorgestellte Verfahren und das vorgestellte System überwinden alle oben genannten Probleme, indem sie ein 4-dimensionales (4D) Lichtfeld als Hintergrund einer Szene anstelle eines 2D-Hintergrundbildes verwenden. Die Realisierung der Berechnung eines Lichtfeldes erfordert enorme Mengen an Rechenleistung, Datenspeicherung und Zeit (auch mit der gegenwärtig verfügbaren Hardware); das vorgestellte Verfahren und das vorgestellte System berechnen und speichern das Lichtfeld, bevor eine Szene gerendert wird. Um die Zeit zum Speichern und Zugreifen auf das Lichtfeld während des Rendervorgangs zu verkürzen, können das vorgestellte Verfahren und das vorgestellte System einen modifizierten Video-Codec verwenden, um das Lichtfeld als 2D-Bilder zu komprimieren und zu dekomprimieren.
-
Während des Renderns greifen das vorgestellte Verfahren und das vorgestellte System auf das gespeicherte 4D-Lichtfeld zu und verwenden es als Hintergrund für die Szene. Das vorgestellte Verfahren und das vorgestellte System werfen Strahlen in die Szene, um eine Wechselwirkung von Licht mit einem Vordergrund und dem Hintergrund der Szene zu simulieren. Wenn die Strahlen auf den Hintergrund treffen oder die Szene verlassen, schlagen das vorgestellte Verfahren und das vorgestellte System Werte aus dem 4D-Lichtfeld nach, um den Beitrag des 4D-Lichtfeldes zu der Wechselwirkung zu bestimmen.
-
Das vorgestellte Verfahren und das vorgestellte System verbessern das Rendern der Wechselwirkung von Licht mit dem Vordergrund und dem Hintergrund der Szene drastisch, da Daten für mehr (oder alle) Blickrichtungen für Hintergrund-Nachschlagen aus dem 4D-Lichtfeld verfügbar werden. Kamera- bzw. virtuelle Blickpunkt-Drehungen und -Bewegungen (innerhalb der Grenzen des Lichtfeldes) werden auch mit voller Parallaxe möglich, wobei alle blickabhängigen Effekte intakt sind. Und da das Lichtfeld blickabhängige Beleuchtungsinformationen erfasst, erscheinen matte Objekte nicht mehr diffus, sondern wie im wirklichen Leben glänzend oder reflektierend. Um die Konvergenz der Strahlen zu der korrekten Lösung zu beschleunigen, können das vorgestellte Verfahren und das vorgestellte System Techniken wie z. B. Next Event Estimation („Nächstes-Ereignis-Schätzung“), Light Tracing („Lichtnachverfolgung“) und Photon Mapping („Photonen-Abbildung“) beim Nachverfolgen und Bestimmen von Gewichten der Strahlen verwenden.
-
1 veranschaulicht eine Ausführungsform eines Verfahrens 100 zum Rendern einer Szene unter Verwendung eines 4D-Lichtfeldes als Hintergrund einer Szene. In einer Ausführungsform, in der das Lichtfeld alle Richtungen abdeckt, kann es als eine Umgebungskarte verwendet werden und sowohl als sichtbarer Hintergrund als auch als Lichtquelle (zum Beleuchten der Szene) dienen. In einer anderen Ausführungsform, in der das 4D-Lichtfeld von einer Parallelebenen-Varietät ist und somit nur einen Quadranten abdeckt, kann es als eine Rückplatte verwendet werden, die als Hintergrundbild mit fester Perspektive dient. Das Verfahren kann von einem Renderer wie z. B. einem physikalisch basierten Renderer durchgeführt werden, der mit Bezug auf 2 näher beschrieben wird. Das Verfahren beginnt im Schritt 110.
-
Im Schritt 120 wird ein 4D-Lichtfeld bereitgestellt, das einen Hintergrund der Szene repräsentiert. Das Lichtfeld kann aus einer Szene oder einem Bild aus dem wirklichen Leben erfasst werden oder synthetisch erzeugt werden. In einer Ausführungsform wird das Lichtfeld erzeugt, indem für jede Fläche eines die Szene umgebenden Kastens ein 2D-Array (wie x*y) bereitgestellt wird, das aus ebenen, flachen 2D-Fotos mit einer Auflösung u*v besteht, die mit 6*x*y Kameras aufgenommen wurden. In einer anderen Ausführungsform wird das Lichtfeld erzeugt, indem für jeden Punkt auf einer Kugel, die die zu rendernde Szene umgibt, ein 2D-Bild gespeichert wird; die 2D-Bilder müssen nicht flach sein und könnten auf eine Halbkugel abgebildet werden. Zugriff auf die Lichtfelddaten kann als Strahl parametrisiert werden, z. B. ein Paar von 3D-Positionen und eine Einheitsrichtung, und die letztere kann in Polarkoordinaten ausgedrückt werden. Diese Informationen können leicht auf die native Parametrisierung des Lichtfeldes abgebildet werden, die normalerweise eine 2D-Position auf der das Lichtfeld umgebenden Oberfläche und eine Richtung oder ein Paar von 2D-Koordinaten ist. Man beachte, dass Lichtfeld-Parametrierung nicht auf das obige Verfahren beschränkt ist und andere Parametrierverfahren verwendet werden können.
-
Da das Lichtfeld als ein Strom von 2D-Bildern berechnet und gespeichert wird, kann es komprimiert und auf einer Platte gespeichert und während des Renderns unter Verwendung vorhandener Bildkomprimierungs-Technik und Textur-Hardware-Dekomprimierung auf GPUs live dekomprimiert und entpackt werden. Man beachte, dass selbst wenn das Lichtfeld nicht als ein Strom von 2D-Bildern erzeugt wird, es dennoch als solcher behandelt werden kann, indem ein modifizierter Video-Codec wie z. B. der High Efficiency Video Codec (H.265 und MPEG-H Part 2) oder auf Vektorquantisierung basierende Methoden verwendet werden. Die verwendeten Kompressionstechniken sind eine verlustbehaftete Kompression und können Datenreduktion um mehrere Größenordnungen erreichen.
-
In einer Ausführungsform kann das Lichtfeld verlustlos komprimiert werden. In einer derartigen Ausführungsform kann es möglich sein, gängige Algorithmen und vorhandene Pakete zu verwenden, die bei normaler Dateikompression verwendet werden, z. B. ZIP und dergleichen. Manche Vorverarbeitungs-Transformationen, z. B. eine, die Wavelets verwendet, können ebenfalls angewendet werden, um die Kompression effizienter zu machen.
-
Mit dem leicht zugreifbaren Lichtfeld beginnt das Verfahren 100, ein Bild einer Szene zu rendern. Im Schritt 130 werden Informationen für die zu rendernde Szene (Szeneninformationen) empfangen. Die Szeneninformationen können von einem Speichermedium oder unter Verwendung einer Anwendungsprogrammierschnittstelle direkt von einer Anwendung empfangen werden. Die Informationen können im Allgemeinen Vordergrund-Informationen beinhalten, die den Vordergrund der Szene repräsentieren, wie zum Beispiel mindestens ein (synthetisches) Vordergrundobjekt der Szene, sowie Hintergrund-Informationen, die den Hintergrund der Szene repräsentieren, einschließlich eines matten Objekts darin. Die Vordergrund-Informationen können Szenengeometrie, Materialinformationen und Textur beinhalten, und die Hintergrund-Informationen können das 4D-Lichtfeld und Hintergrundbilder beinhalten.
-
Im Schritt 140 beginnt das Verfahren 100, Lichttransportpfade zu erzeugen, indem Strahlen in die Szene geworfen werden. Die Strahlen werden in die Szene geworfen, um zu simulieren, wie Licht mit der Szene wie z. B. deren Vordergrund und Hintergrund wechselwirkt. Während das Licht durch die Szene wandert, wechselwirkt es mit den Lichtquellen, Hintergründen und Vordergrund- und Hintergrundobjekten der Szene. Die Strahlen werden unter Verwendung einer Monte-Carlo- oder Quasi-Monte-Carlo-Methode erzeugt und gesampled.
-
In einer Ausführungsform können die Strahlen von einem virtuellen Blickpunkt aus, z. B. einem Blickpunkt einer Kamera, die die Szene betrachtet, auf ein Pixel in der Szene geworfen werden. In einer anderen Ausführungsform können die Strahlen von dem Lichtfeld / Hintergrund der Szene oder sowohl von dem virtuellen Blickpunkt als auch dem Lichtfeld / Hintergrund aus geworfen werden, wie z. B. bei bidirektionaler Pfadnachverfolgung (Path Tracing) oder Photon Mapping. Man beachte, dass in der vorliegenden Offenbarung Strahlen nicht nur Primärstrahlen umfassen, d. h. solche, die von einem virtuellen Blickpunkt oder einem Lichtfeld / einer Lichtquelle herrühren, sondern auch Sekundärstrahlen, d. h. solche, die von einem früheren Schnittpunkt aus in eine neue Richtung geworfen werden.
-
Im Schritt 150 werden die Strahlen nachverfolgt, während sie in der Szene herumspringen. Das Nachverfolgen beinhaltet das Sammeln von Gewichten der Strahlen, während sie Lichttransportpfade aufbauen, indem sie von den Oberflächen der Objekte im Vordergrund, d. h. synthetischen Objekten, reflektiert oder gebrochen werden. Jedes Segment eines Lichttransportpfades wird als Licht/Augen-Teilpfad bezeichnet, und sie können verbunden werden, um eine Anzahl von vollständigen Pfaden zu bilden. Beiträge zum endgültigen Bild werden erzeugt, indem die Bildposition irgendeiner Wechselwirkung zwischen einem Strahl und der Szene bestimmt wird und bestimmt wird, ob diese Wechselwirkung von der Kameraposition aus sichtbar ist, z. B. einem virtuellen Blickpunkt.
-
Wenn die Strahlen von einem virtuellen Blickpunkt oder dem Lichtfeld aus geworfen werden, werden die Strahlen nachverfolgt, bis sie auf den Hintergrund (z. B. Grenzen des Lichtfeldes) oder ein mattes Objekt darin treffen, die Szene verlassen (z. B. Strahlen treffen auf nichts) oder wenn der Renderer bestimmt, dass der Pfad es nicht mehr wert ist, verlängert zu werden. Zum Beispiel kann der Renderer die Nachverfolgung nach dem Zufallsprinzip basierend auf „Russischem Roulette“ beenden oder wenn eine bestimmte (konfigurierbare) Anzahl von Wechselwirkungen mit der Szene erzeugt worden ist. Anstatt darauf zu warten, dass die Strahlen irgendetwas treffen, z. B. Hintergrund- oder matte Objekte, kann das Verfahren 100 Techniken wie z. B. Next Event Estimation (NEE) oder andere Techniken des Importance-Sampling (Wichtigkeits-Sampling) verwenden, um die zukünftigen Positionen der Strahlen aktiv zu schätzen und die Konvergenz schneller zu erreichen. In einer Ausführungsform kann das Verfahren 100 NEE verwenden, um Schnittpositionen der Strahlen mit dem Hintergrund basierend auf der Richtung der Strahlen, bevor die Strahlen tatsächlich den Hintergrund treffen oder die Szene verlassen, zu schätzen.
-
Wenn die Strahlen sowohl von dem Lichtfeld als auch von dem virtuellen Blickpunkt aus geworfen werden, werden Präfixe der Teilpfade entweder miteinander verbunden, um vollständige Pfade zu erzeugen, z. B. durch Nachverfolgen von Strahlen zwischen Verbindungspunkten, um gegenseitige Sichtbarkeit zu bestimmen, oder durch Verbinden von benachbarten Punkten mittels Nächster-Nachbar-Nachschlag-Methoden, oder als nicht verbindbar angesehen, z. B. aufgrund von Verdeckung. Bidirektionale Pfadnachverfolgung und Photon Mapping sind Beispiele für Techniken, die Strahlen nachverfolgen, die sowohl von dem Lichtfeld als auch von dem virtuellen Blickpunkt aus geworfen werden.
-
Man erkennt, dass die Schritte 140 und 150 parallel durchgeführt werden können, indem Wellenfronten verwendet werden, die aus vielen Strahlen bestehen, z. B. Werfen und Nachverfolgen von Tausenden von Strahlen von virtuellen Blickpunkten aus auf Tausende von Auftreffpunkten.
-
Im Schritt 160 wird ein Beitrag des Hintergrundes zu der Wechselwirkung von Licht mit dem Vordergrund und dem Hintergrund der Szene bestimmt. Der Beitrag des Hintergrundes zu der Wechselwirkung wird durch Multiplikation der aus Nachverfolgung der Strahlen gesammelten Gewichte mit den aus dem 4D-Lichtfeld an Schnittpunkten mit den Strahlen nachgeschlagenen Werten bestimmt. Wenn die Strahlen von dem virtuellen Blickpunkt aus geworfen werden, werden die Werte basierend darauf, wie (Richtung) und wo (Ort) die Strahlen den Hintergrund schneiden, aus dem 4D-Lichtfeld nachgeschlagen. Wenn die Strahlen von dem Hintergrund oder sowohl von dem virtuellen Blickpunkt als auch dem Hintergrund aus geworfen werden, kann der Beitrag des Hintergrundes mittels der Positionen und Richtungen in Bezug auf das Lichtfeld, von wo aus die Strahlen geworfen werden, bestimmt werden. Die Position und Richtung können unabhängig oder in Verbindung mittels gebräuchlicher Importance-Sampling-Methoden bestimmt werden, um schnelle Konvergenz zu erreichen.
-
Im Ausführungsbeispiel ist die Lichtquelle ein Teil des Hintergrundes, der durch das 4D-Lichtfeld repräsentiert wird. In einer Ausführungsform ist die Lichtquelle möglicherweise nicht ein Teil des Hintergrundes, sondern ein Teil eines synthetischen Objekts in der Szene, zum Beispiel eines Scheinwerfers eines Autos. In diesem Beispiel kann ein Lichtfeld einmal für den Scheinwerfer erzeugt werden, indem alle Linsen und Reflektoren im Inneren berücksichtigt werden und anstelle des Scheinwerfers in der Szene verwendet werden.
-
Sobald die Beiträge bestimmt sind, werden sie im Schritt 170 in einen Framebuffer (Bildspeicher) eines Speichers des Renderers geschrieben. Sie werden beim Rendern einer endgültigen Farbe eines Pixels in der Szene verwendet. Das Verfahren 100 endet im Schritt 175. Man erkennt, dass die Schritte 140-160 wiederholt werden können, bis genügend Samples (d. h. Lichttransportpfade) angesammelt worden sind, um an der konvergierten Lösung anzukommen.
-
2 veranschaulicht ein Blockdiagramm eines Beispiel-Computergrafik-Render-Computersystems 200, das konfiguriert ist, um das Verfahren zum Rendern einer Szene unter Verwendung eines 4D-Lichtfeldes als Hintergrund gemäß den Prinzipien der Offenbarung, wie z. B. im Kontext von 1 erörtert, anzuwenden.
-
Ausführungsformen des Systems 200 können eine Zentralverarbeitungseinheit (CPU) 210, z. B. als Host-Prozessor konfiguriert, und ein Speichermedium 215 wie z. B. Hauptspeicher 220 (z. B. Direktzugriffsspeicher, RAM) und Sekundärspeicher 225 beinhalten. Das Speichermedium 215 kann nichtflüchtig Steuerlogik-Software, z. B. ein Computerprogrammerzeugnis, sowie Daten speichern, die einen Vordergrund und einen Hintergrund der Szene repräsentieren, wie z. B. Szeneninformationen 205, welche Szenengeometrie, Materialinformationen, Hintergrundbilder und ein 4D-Lichtfeld beinhalten. Der Hauptspeicher 220 kann die endgültigen Werte von Pixeln in der Szene in einem Framebuffer 222 speichern, nachdem der Beitrag des Lichtfeldes zu der Wechselwirkung von Licht mit dem Vordergrund und Hintergrund der Szene bestimmt worden ist. Nicht einschränkende Beispiele für den Hauptspeicher 220 umfassen z. B. Direktzugriffsspeicher (RAM). Nicht einschränkende Beispiele für den Sekundärspeicher 225 umfassen Festplattenlaufwerke, Wechselspeicherlaufwerke wie z. B. Diskettenlaufwerke, ein Magnetbandlaufwerk oder ein CD-Laufwerk.
-
Ausführungsformen des Systems 200 können auch eine Grafikverarbeitungseinheit (GPU) 230 beinhalten. In manchen Ausführungsformen kann die GPU 230 eine Vielzahl von Ray-Casting-Modulen („Strahlenwurf-Modulen“) und Ray-Tracing-Modulen („Strahlnachverfolgungs“-Modulen) beinhalten, um die Durchführung von Schritten eines Render-Verfahrens wie z. B. des Verfahrens 100 zu erleichtern. In manchen Ausführungsformen können diese Module weiterhin konfiguriert sein, um den Beitrag eines Hintergrund/4D-Lichtfeldes zu der Wechselwirkung zwischen dem Vordergrund und dem Hintergrund der Szene zu bestimmen. In anderen Ausführungsformen des Systems 200 kann die CPU 210 konfiguriert sein, um die Bestimmung durchzuführen.
-
Ausführungsformen des Systems 200 können eine Anzeige 240 enthalten, z. B. einen Computermonitor oder eine andere Benutzeroberfläche. In manchen Ausführungsformen des Systems 200 kann ein Kommunikationsbus 250 irgendwelche von der CPU 210, dem Hauptspeicher 220 und dem Sekundärspeicher 225, der GPU 230 und der Anzeige 240 miteinander verbinden.
-
In manchen Ausführungsformen können sich die Ray-Casting-Module und Ray-Tracing-Module auf einer einzigen Halbleiterplattform befinden, um die GPU 230 zu bilden. In manchen Ausführungsformen kann die einzelne Halbleiterplattform der GPU 230 eine einheitliche halbleiterbasierte integrierte Schaltung (IC) wie z. B. ein anwendungsspezifisches System auf einem Chip (ASIC) enthalten. Ausführungsformen der einzelnen Halbleiterplattform können Multi-Chip-Module mit erhöhter Konnektivität beinhalten, die auf dem Chip ausgeführte Operationen simulieren, um Verbesserungen gegenüber herkömmlichen CPU- und Bus-Implementierungen zu erzielen. In anderen Ausführungsformen können sich eine oder mehrere Komponenten des Systems 200 getrennt oder in verschiedenen Kombinationen auf verschiedenen Halbleiterplattformen befinden. Ausführungsformen des Systems 200 können feldprogrammierbare Gate-Arrays (FPGAs) enthalten.
-
Computerlesbare Anweisungen wie z. B. Computerprogrammerzeugnisse einschließlich Computersteuerungslogik-Algorithmen können nichtflüchtig in dem Speichermedium 215 gespeichert sein, z. B. entweder dem Hauptspeicher 220 oder dem Sekundärspeicher 225 oder beiden. Die Anweisungen können bei ihrer Ausführung einen Prozessor wie z. B. die CPU 210 und/oder die GPU 230 veranlassen, verschiedene Schritte des Verfahrens zum Rendern einer Szene unter Verwendung eines 4D-Lichtfeldes als Hintergrund durchzuführen, wie z. B. irgendwelche der im Kontext von 1 offenbarten Schritte.
-
Nicht einschränkende Ausführungsbeispiele des Computersystems 200 umfassen allgemeine Computersysteme, ein Platinensystem und ein Spielekonsolensystem für Unterhaltungszwecke, ein anwendungsspezifisches System oder ein anderes Computersystem, das einem Fachmann in der relevanten Technik vertraut ist. Zum Beispiel kann das Computersystem 200 in Form eines Desktop-Computers, Laptop-Computers, Persönlichen Digitalen Assistenten (PDA), eines Mobiltelefongeräts, eines Fernsehers usw. verkörpert sein. In manchen Ausführungsformen kann das Computersystem 200 zu Kommunikationszwecken mit einem Netz gekoppelt sein, z. B. einem Telekommunikationsnetz, Lokalen Netz (LAN), Drahtlosnetz, Weitverkehrsnetz (WAN) wie z. B. dem Internet, Peer-to-Peer-Netz, Kabelnetz usw.
-
Der Fachmann, auf den sich diese Anmeldung bezieht, wird erkennen, dass andere und weitere Hinzufügungen, Weglassungen, Ersetzungen und Änderungen an den beschriebenen Ausführungsformen vorgenommen werden können.