-
QUERVERWEIS AUF VERWANDTE ANMELDUNG
-
Diese Anmeldung beansprucht den Nutzen der am 4. Januar 2017 eingereichten, vorläufigen US-Anmeldung mit der Seriennummer 62/442,366 und dem Titel „CLOUD GENERATION OF CONTENT TO BE STREAMED TO VR/AR PLATFORMS USING CLOUD SERVERS AND RENDERING OF STEREOSCOPIC 360-DEGREE PANORAMAS USING RAYMARCHING AND DEPTH INFORMATION“, die in üblicher Weise dieser Anmeldung zugeordnet ist und hierin durch Bezugnahme zur Gänze einbezogen wird.
-
TECHNISCHES GEBIET
-
Diese Anmeldung ist allgemein auf Rendering und insbesondere auf ein Rendering stereoskopischer Bilder gerichtet.
-
HINTERGRUND
-
Viele computergrafische Bilder entstehen durch mathematisches Modellieren der Wechselwirkung von Licht mit einer dreidimensionalen (3D-) Szene aus einem bestimmten Blickwinkel. Dieser Prozess, der als „Rendering“ bezeichnet wird, erzeugt ein zweidimensionales (2D-) Bild der Szene aus dem gegebenen Blickwinkel und ist analog zu einem Aufnehmen einer realen Szene.
-
Mit zunehmender Nachfrage nach Computergrafik und insbesondere nach Echtzeit-Computergrafik wurden Computersysteme mit Grafikverarbeitungs-Subsystemen zur Beschleunigung des Rendering-Prozesses verbreitet. In diesen Computersystemen wird der Rendering-Prozess zwischen einer universellen Zentralverarbeitungseinheit (CPU) eines Computers und dem Grafikverarbeitungs-Subsystem, das architektonisch um eine Grafikverarbeitungseinheit (GPU) zentriert ist, aufgeteilt. Typischerweise führt die CPU übergeordnete Operationen durch, wie z.B. ein Bestimmen einer Position, einer Bewegung und einer Kollision von Objekten in einer bestimmten Szene. Aus diesen übergeordneten Operationen generiert die CPU einen Satz von Rendering-Befehlen und Daten, die das/die gewünschte(n) Rendering-Bild(er) definieren. Beispielsweise können Rendering-Befehle und Daten eine Szenengeometrie, eine Beleuchtung, eine Schattierung, eine Texturierung, eine Bewegung und/oder Kameraparameter für eine Szene definieren. Das Grafikverarbeitungs-Subsystem erstellt ein oder mehrere gerenderte Bilder aus dem Satz von Rendering-Befehlen und Daten.
-
Mit dem beschleunigten Rendering, das von diesen Computersystemen bereitgestellt wird, nutzen verschiedene Anwendungen, wie beispielsweise Videospiele, ein Cloud-basiertes Rendering. Durch diese Technologie können Benutzer auf ihren Computergeräten, einschließlich von Virtual Reality-Kopfvorrichtungen wie beispielsweise einer am Kopf getragenen Anzeige bzw. einem Head Mounted Display (HMD), ein virtuelles Grafikerlebnis genießen. Die Cloud-basierte Plattform ermöglicht es den Nutzern auch, bei Turnieren oder Sportveranstaltungen über ein Kommunikationsnetzwerk aus der Ferne gegen andere anzutreten. Neben denen, die aktiv an einem Videospiel oder einer Anwendung teilnehmen, können passive Zuschauer, die zusehen, aber nicht spielen oder aktiv teilnehmen, bei Videospielturnieren oder anderen eSport-Events ein laufendes Spiel auf ihrem Computergerät aus der Sicht eines der Spieler betrachten.
-
KU RZBESCH REI BU NG
-
In einem Aspekt stellt die Erfindung ein Verfahren zur Bereitstellung stereoskopischer Bilder bereit. In einem Ausführungsbeispiel beinhaltet das Verfahren: (1) Erzeugen eines monoskopischen Satzes gerenderter Bilder und (2) Umwandeln des Satzes gerenderter Bilder in ein stereoskopisches Bildpaar unter Verwendung von Tiefeninformationen aus dem monoskopischen Satz von gerenderten Bildern und Raymarching.
-
In einem weiteren Aspekt stellt die Erfindung einen Broadcaster für eine virtuelle Ansicht bereit. In einem Ausführungsbeispiel beinhaltet der Broadcaster für eine virtuelle Ansicht: (1) einen Cloud-basierten Renderer, der dazu konfiguriert ist, einen monoskopischen Satz gerenderter Bilder von 360 Grad zu erzeugen und Raymarching und Tiefeninformationen zu verwenden, um den Satz gerenderter Bilder in ein stereoskopisches Bildpaar von 360 Grad zu konvertieren, und (2) einen Bildprozessor, der dazu konfiguriert ist, das stereoskopische Bildpaar für die Videoübertragung zu kodieren.
-
In einem nochmals weiteren Aspekt stellt die Erfindung einen Cloud-basierten Renderer bereit. In einem Ausführungsbeispiel beinhaltet der Cloud-basierte Renderer (1) einen Speicher und (2) zumindest einen Prozessor, der mit dem Speicher gekoppelt und dazu konfiguriert ist, ein Kubusabbild unter Verwendung von Raymarching und einem Tiefenpuffer des Kubusabbilds in ein stereoskopisches Paar von Kubusabbildern zu konvertieren.
-
Figurenliste
-
Nachstehend wird auf die folgende Beschreibung in Verbindung mit den beigefügten Zeichnungen Bezug genommen, in welchen:
- 1 ein Blockdiagramm eines Ausführungsbeispiels eines Broadcastingsystems für eine virtuelle Ansicht, das in Übereinstimmung mit den Prinzipien der Erfindung aufgebaut ist, veranschaulicht;
- 2 ein Blockdiagramm eines Ausführungsbeispiels eines Broadcastingsystems für eine virtuelle Ansicht, das in Übereinstimmung mit den Prinzipien der Erfindung aufgebaut ist, das den Betriebsablauf zum Bereitstellen eines Virtuellansichtsstroms eines stereoskopischen Bildpaars für eine Client-Rechenvorrichtung veranschaulicht;
- 3A, 3B, 3C und 3D Diagramme veranschaulichen, die die Anwendung von Raymarching auf ein Kubusabbild gemäß den Prinzipien der Erfindung zeigen;
- 4 ein Ausführungsbeispiel eines Verfahrens zum Bereitstellen eines stereoskopischen Panoramas aus einem monoskopischen Satz gerenderter Bilder, das in Übereinstimmung mit den Prinzipien der Erfindung ausgeführt wird, veranschau licht;
- 5 ein Diagramm eines Beispiels einer omnidirektionalen Stereo (ODS)-Projektion, die in Übereinstimmung mit den Prinzipien der Erfindung bei dem Umwandeln eines monoskopischen Satzes gerenderter Bilder in ein stereoskopisches Bildpaar verwendet wird, veranschaulicht;
- 6 ein Diagramm eines Beispiels eines Verwendens von Geometrie zum Bestimmen einer Ansichtsrichtung in Bezug auf ein Kubusabbild in Übereinstimmung mit den Prinzipien der Erfindung veranschaulicht;
- 7 ein Diagramm eines Beispiels eines Entfernens von Verzerrungen aus einem stereoskopischen Kubusabbild in Übereinstimmung mit den Prinzipien der Erfindung veranschaulicht; und
- 8 ein Diagramm eines Beispiels für ein Anwenden von Transluzenz in Stereo in Übereinstimmung mit den Prinzipien der Erfindung veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG
-
Mit dem jüngsten Wachstum im Bereich der Virtual-Reality-Headsets sind 360-Grad-Panoramafotos und -Videos immer beliebter geworden. Es gibt zwei Arten solcher Panoramen: monoskopische und stereoskopische. Monoskopische Panoramen sind in der Regel einfach zu erfassen, zu verarbeiten und anzuzeigen, aber sie weisen offensichtlich keinerlei Tiefeninformationen auf. Stereoskopische Panoramen sind viel komplizierter zu erfassen oder zu generieren.
-
Eine Möglichkeit, umgebende Tiefe in nur zwei Bildern zu erfassen, besteht darin, die Objekte so auf die Bilder zu projizieren, dass jede Spalte von Bildpixeln einem Satz von Strahlen entspricht, die von einem Punkt auf einem Projektionskreis, dessen Durchmesser gleich dem Augenabstand (interpupillary distance; IPD) ist, ausgehen. Dies kann mit einer normalen perspektivischen Projektion verglichen werden, bei der alle Strahlen von dem gleichen Punkt ausgehen: der Kameramitte. Ein Projektionskreis ist ein Kreis mit einem Durchmesser gleich dem IPD, der ein Projektionszentrum zur Berechnung der regelmäßigen perspektivischen Projektion umgibt. Der Projektionskreis entspricht Augenpositionen, wenn man seinen Kopf dreht, wobei das Projektionszentrum der Drehpunkt ist.
-
Wenn Stereopanoramen aus Fotos oder gerenderten Bildern zusammengesetzt werden, sollte die Anzahl der Bilder, die entlang der horizontalen Richtung aufgenommen wird, maximiert werden, und sollte jedes Bild von einem anderen Punkt auf dem vorgenannten Kreis aus aufgenommen werden. Dann können die zentralen vertikalen Bänder dieser Bilder zusammengefügt und gemischt werden, um eine Annäherung an die beabsichtigte spezielle Projektion zu erhalten. Für ein ideales Ergebnis sollte die Anzahl von Eingangsbildern für jedes Auge gleich der Breite des Ausgangspanoramas in Pixeln sein - was natürlich unpraktisch ist. Die Verwendung von weniger Bildern erzeugt jedoch ein Panorama, das bei Betrachtung in einer Richtung, die nicht senkrecht zu einem beliebigen Quellenbildpaar (rechts und links) ist, eine inkorrekte Tiefendarstellung aufweist. Eine beliebige Anzahl von Quellenbildern, die für das Echtzeit-Rendering geeignet sind, erzeugt offensichtlich eine inkorrekte Tiefe in den meisten Blickrichtungen, einhergehend mit signifikanten Stitching-Artefakten auf nahegelegenen Objekten, die als Ghosting sichtbar sind.
-
Es wird hierin erkannt, dass Rendering-Verfahren, die nicht an eine reguläre perspektivische Projektion - wie z.B. Raytracing oder Raymarching mit analytischer Szenendarstellung - gebunden sind, verwendet werden können, um eine Projektion ohne Stitching-Artefakte zu erzeugen, einschließlich der für Stereopanoramen erforderlichen Kreisprojektion. Unter Verwendung der offenbarten Rendering-Prozesse kann ein Blickwinkel verschoben werden, wobei Strahlen ausgehend von Punkten auf einem Projektionskreis nachverfolgt werden. Das ursprüngliche gerenderte Bild (nichtkreisförmig) aus der ursprünglichen Perspektive wird als Quellendaten zum Nachverfolgen von Strahlen ausgehend von den Punkten auf dem Projektionskreis verwendet.
-
Die Erfindung stellt einen (Rund-) Sender bzw. Broadcaster für eine virtuelle Ansicht oder Virtuellansichtsbroadcaster bereit, der einen Satz gerenderter Bilder, einschließlich deren Tiefenpuffer, verwendet, um eine regelmäßige perspektivische Projektion, die von einem Punkt nahe an dem Projektionszentrum des ursprünglichen Umgebungsabbilds oder Bilder ausgeht, allerdings nicht notwendigerweise mit dem exakten Zentrum übereinstimmt, zu berechnen. Der Satz gerenderter Bilder kann ein monoskopischer Satz gerenderter Bildern von 360 Grad sein, wie z.B. ein monoskopisches Kubusabbild. In ähnlicher Weise können dann zwei Projektionen, eine pro Auge, für jede Position und Orientierung eines Benutzers berechnet werden, wie beispielsweise ausgehend vom Kopf eines Benutzers, der ein HMD trägt.
-
Der offenbarte Broadcaster für eine virtuelle Ansicht berechnet ein stereoskopisches Panorama mit einer perfekten oder nahezu perfekten Kreisprojektion unter Verwendung eines Algorithmus, der den monoskopischen Satz gerenderter Bilder und deren Tiefenpuffer verwendet. Ein Renderer kann eine Szenengeometrie, eine Szenenbeschreibung usw. verwenden, um den monoskopischen Satz von Bildern darzustellen. Der monoskopische Satz von gerenderten Bildern kann ein Kubusabbild mit sechs quadratischen Bildern sein, die jeweils eine perspektivische Projektion einer Ansicht hin zu einer der Hauptachsen repräsentieren. Jede der Seiten bzw. Flächen des Kubusabbilds enthält Informationen über die Tiefe. Bei einem beliebigen Strahl können Oberflächeninformationen durch Auffinden des Schnittpunkts des Strahls mit den durch die Tiefenpuffer des Kubusabbilds beschriebenen Oberflächen bestimmt werden.
-
In einem Ausführungsbeispiel wird Raymarching verwendet, um jeden Strahl, der einem Ausgangspixel in dem Panorama entspricht, ausgehend von seinem eigenen Pixelpunkt, d.h. dem eigenen Blickpunkt jedes Pixels, auszusenden. In einigen Ausführungsbeispielen kann das Raymarching durch Verwenden eines Tiefenansichtsabbilds durchgeführt werden. In einigen Ausführungsbeispielen reichen zehn Abgriffe einer Tiefen-Mipmap aus, um die zu verwendende Oberfläche zu bestimmen. Eine Tiefen-Mipmap, die auch als ein MIP-Abbild bezeichnet wird, sind vorberechnete, optimierte Sequenzen von Bildern, wobei jede der Sequenzen von Bildern eine progressiv niedrigere Auflösung des gleichen Bilds ist. In Ausführungsbeispielen, die einen Tiefenpuffer verwenden, werden Mipmaps durch Auffinden der nächstgelegenen Oberfläche unter den Eingangspixeln höherer Auflösung, die zum Berechnen eines einzelnen Ausgangspixels mit niedrigerer Auflösung verwendet werden, erzeugt. Dies ist anders als bei Farb-Mipmaps, bei denen Farbpixel in der Regel einfach gemittelt werden. 3A bis 3D sind ein Beispiel für den Einsatz von Mipmaps während des Raymarchings.
-
Ein Unterschied zwischen der Berechnung einer regulären perspektivischen Projektion und einem stereoskopischen Panorama besteht darin, dass für jeden Ausgangspixel der gewünschte Strahlenursprung und die gewünschte Strahlenrichtung berechnet wird. Für die Berechnung der regulären perspektivischen Projektion ist der Ursprung das Projektionszentrum (Augenposition) und kann die Richtung unter Verwendung von Sicht- und Projektionsmatrizen und Pixelkoordinaten berechnet werden. Für die Berechnung des stereoskopischen Panoramas kann die Richtung basierend auf den Ausgangspixelkoordinaten in dem Panorama berechnet werden, und wird der Strahlursprung basierend auf dem Panoramazentrum und der Richtung berechnet und befindet sich auf dem Projektionskreis. Folglich kann dann, wenn Panoramaansichten berechnet werden, unabhängig davon, ob die Projektion oder das Layout von monoskopisch gerenderten Ansichten ein Kubus oder ein Äquirekt bzw. Gleichwinkel ist, das offenbarte Verfahren, das offenbarte System oder die offenbarte Vorrichtung für jeden Ausgangspixel eine Blickrichtung bestimmen, in welcher der Pixel entspricht. Beispielsweise kann mit einer äquirektangularen bzw. gleichwinkligen Projektion für ein x, y eine Pixelpositionsgeometrie dazu verwendet werden, die Blickrichtung zu bestimmen.
-
Für stereoskopische Panoramen liegt ein Projektionspunkt auf dem Projektionskreis. Da der Projektionskreis in der horizontalen Ebene liegt, ist ein Projektionspunkt dort, wo die Projektion eines Richtungsvektors auf die horizontale Ebene tangential zu dem Projektionskreis ist. Bei einer gegebenen Richtung kann der Projektionspunkt so eingestellt werden, dass er auf dem Projektionskreis liegt. Es gibt zwei Projektionspunkte auf dem Projektionskreis, die durch den Durchmesser getrennt sind. Einer der Projektionspunkte ist für das linke Auge und einer für das rechte Auge. In Bezug auf ein Kubusabbild kann Geometrie dazu verwendet werden, eine Blickrichtung zu bestimmen. Die nachstehend diskutierte 6 stellt ein Beispiel bereit.
-
Nachdem der Strahlenursprung und die Richtung bestimmt sind, wird das Raymarching eingesetzt. Das heißt, der Strahl wird auf das Umgebungsabbild oder die Bilder projiziert, und die Tiefenpuffer werden entlang des Strahls abgetastet, bis ein Schnittpunkt zwischen dem Strahl und der impliziten Oberfläche, die durch den Tiefenpuffer kodiert wird, gefunden wird.
-
In einigen Ausführungsbeispielen kann der Strahlursprung möglicherweise nicht mit einem der Projektionszentren der Bilder übereinstimmen, und kann es aufgrund von Parallaxe und Okklusion zu wenige Informationen über die Szene geben. Einfach ausgedrückt, wenn Sie ein Bild von einem Baum machen, wissen Sie nicht, was sich direkt hinter diesem Baum befindet - aber das kann für andere Standpunkte wichtig sein. Um zu kompensieren ist der offenbarte Broadcaster für eine virtuelle Ansicht oder ein Teil davon so konfiguriert, dass dann, wenn die Basis ein Satz von Bildern ist, diese Bilder aus leicht unterschiedlichen Blickwinkeln aufgenommen werden können, was die Wahrscheinlichkeit, dass jede benötigte Oberfläche in zumindest einem Bild zu finden ist, erheblich erhöht. Falls ein Kubusabbild verwendet wird, kann eine zweite Ebene dieses Kubusabbilds gerendert werden. Dieses mehrschichtige Rendering ist als Tiefenpeeling bekannt und kann zusätzliche Daten zur Verarbeitung von Okklusionen bereitstellen. Dann kann der Raymarching-Algorithmus die richtige Ebene auswählen, z.B. basierend auf der Ähnlichkeit zwischen dem aktuellen Punkt auf dem Strahl und beiden Tiefenwerten in den Kubusabbild oder anderen Informationen wie Oberflächenorientierung oder Tiefengrad ienten.
-
Nun auf die Figuren zurückkommend, veranschaulicht 1 ein Blockdiagramm eines Ausführungsbeispiels eines Broadcastingsystems für eine virtuelle Ansicht 100, das in Übereinstimmung mit den Prinzipien der Erfindung aufgebaut ist. Das Broadcastingssystem für eine virtuelle Ansicht 100 beinhaltet einen Broadcaster für eine virtuelle Ansicht 110, Computer- bzw. Rechenvorrichtungen 120, 130, 140, 150, 160 und ein Kommunikationsnetzwerk 170. Die Rechenvorrichtungen 120, 130, 140, 150, 160 werden zusammenfassend als Rechenvorrichtungen 120-160 bezeichnet und sind über das Kommunikationsnetzwerk 170 kommunikativ mit dem Broadcaster für eine virtuelle Ansicht 110 verbunden. Das Kommunikationsnetzwerk 170 kann ein herkömmliches Netzwerk, wie beispielsweise das Internet, sein, das es verbundenen Rechenvorrichtungen ermöglicht, miteinander zu kommunizieren.
-
Der Broadcaster für eine virtuelle Ansicht 110 ist dazu konfiguriert, Ströme bzw. Streams virtueller Ansichten eines stereoskopischen Bildpaars aus einem monoskopischen Satz gerenderter Bilder zu erzeugen. Der monoskopische Satz gerenderter Bilder kann von einer virtuellen Kamera erzeugt werden, die in einer Anwendung positioniert ist. In einem Ausführungsbeispiel kann Spieleverlagen oder anderen Anwendungsentwicklern ein bestimmter Code bereitgestellt werden, den sie in ihr Spiel oder in ihre Anwendung integrieren können, um darin virtuelle Kameras zu installieren. Der angegebene Code kann mit einem Renderer des Broadcasters für eine virtuelle Ansicht 110 übereinstimmen, um die gerenderten Bilder bereitzustellen, wenn eine bestimmte virtuelle Kamera ausgewählt wird. Der Broadcaster für eine virtuelle Ansicht 110 kann eine Auswahleingabe von einem Kameraselektor empfangen, um die zu verwendende virtuelle Kamera zu bestimmen. In einigen Ausführungsbeispielen können mehrere Auswahleingaben für verschiedene virtuelle Kameras empfangen werden, und kann der Broadcaster für eine virtuelle Ansicht 100 gleichzeitig die virtuellen Ansichten für die ausgewählten mehreren virtuellen Kameras erzeugen. Der Kameraselektor kann eine bestimmte Person oder eine Rechenvorrichtung derselben sein, die dazu verwendet wird, dem Broadcaster für eine virtuelle Ansicht 100 die Auswahleingabe zur Verfügung zu stellen. Die Rechenvorrichtung kann eine der Rechenvorrichtungen 120-160 sein.
-
Der Broadcaster für eine virtuelle Ansicht 110 kann auf einem Server oder auf mehreren Servern einer Cloud-Rechenplattform implementiert werden. Der Broadcaster für eine virtuelle Ansicht 100 stellt einen Satz monoskopisch gerenderter Bilder bereit, die dann verwendet werden, um ein stereoskopisches Bildpaar für 360 Grad virtueller Ansichten zu erzeugen. Demgemäß kann der Broadcaster für eine virtuelle Ansicht 100 eine Erfahrung virtueller Ansichten aus einer Anwendung heraus erzeugen, die keine Virtual Reality-Anwendung ist.
-
Der Broadcaster für eine virtuelle Ansicht 110 kann zumindest eine CPU und mehrere GPUs beinhalten. In dem veranschaulichten Ausführungsbeispiel beinhaltet der Broadcaster für eine virtuelle Ansicht 110 einen Renderer 111, einen Bildprozessor 112, einen Videosender 113, einen Speicher 114 und eine Anwendungs-Engine 115. Der Speicher 114 kann ein konventioneller Speicher oder Speicher sein, der typischerweise für Server verwendet wird. Die Anwendungs-Engine 115 enthält die Betriebsanweisungen, die den Algorithmen zur Erzeugung von Szenen entsprechen, wie z.B. eine Game Engine, die Szenen aus einem Videospiel liefert.
-
Der Renderer 111 erzeugt einen Satz monoskopisch gerenderter Bilder und konvertiert die monoskopischen Bilder mit Raymarching in ein stereographisches Bildpaar. Der Renderer 111 kann ein Cloud-basierter Renderer sein, der den Satz monoskopisch gerenderter Bilder von verschiedenen virtuellen Kameras, die in einer Anwendung positioniert sind, erzeugt. In einem Ausführungsbeispiel entsprechen die gerenderten Bilder sechs Flächen eines Kubusabbilds für einen virtuellen Kamerastandort. Der Renderer 111 kann andere gerenderte Bilder erzeugen, die kombiniert werden können, um eine virtuelle Ansicht von 360 Grad zu ermöglichen. In einigen Ausführungsbeispielen können die gerenderten Bilder für gleichwinklige Ansichten anstelle von Kubusabbildern verwendet werden. Die gerenderten Bilder entsprechen Anwendungsdaten, die von beispielsweise den Rechenvorrichtungen 120-160 der virtuellen Betrachter empfangen werden. Die Anwendungsdaten können Szenendaten beinhalten. In einigen Ausführungsbeispielen können die Anwendungsdaten Richtungsinformationen beinhalten, die eine Blickrichtung angeben, in welche bzw. die ein virtueller Betrachter blickt, auswählt, zeigt, usw..
-
Wie vorstehend erwähnt wurde, kann der Renderer 111 den Satz monoskopisch gerenderter Bilder durch Rendern von sechs Bildern, die am Kamerastandort einen Kubus bilden, bereitstellen. Das Kubusabbild wird dann zum Texturieren einer Szene der Anwendung verwendet. Die Texturierung von Kubusabbildern ist eine Form der Texturabbildung, die einen 3D-Richtungsvektor verwendet, um in eine Textur zu indizieren, die aus sechs quadratischen 2D-Texturen besteht, die wie die Flächen eines Kubus angeordnet sind. Da das Rendern von Kubusabbildern komplexer ist als das Rendern normaler Ansichten in 2D-Texturen, werden häufig GPUs mit einer CPU eingesetzt. Beispielsweise kann die Nvidia GridTM-Technologie verwendet werden, um die hierin offenbarten Renderer und Rendering-Verfahren bereitzustellen, um das Rendern der Bilder, wie z.B. das Rendern von Kubusabbildern, zu unterstützen. Nvidia GridTM stammt von der Nvidia Corporation aus Santa Clara, Kalifornien, und stellt eine Grafikvirtualisierungsplattform bereit, die es ermöglicht, die Leistungsfähigkeit der Nvidia-GPU-Technologie für virtuelle Desktops und Anwendungen zu nutzen. Der Renderer 111 kann zusätzliche Komponenten wie beispielsweise einen Speicher und eine Kommunikationsschnittstelle beinhalten.
-
Der Bildprozessor 112 kodiert das stereoskopische Bildpaar in Ströme virtueller Ansichten zur Übertragung. Der Bildprozessor 112 kann darüber hinaus zusätzliche Funktionen wie beispielsweise eine Umformatierung und eine Bildverarbeitung bereitstellen. Das kodierte stereoskopische Bildpaar wird dann dem Videosender 113 bereitgestellt und an die Rechenvorrichtungen 120-160 gesendet. Der Videosender 113 kann eine konventionelle Vorrichtung sein, die kodierte Einzelbilder empfängt und als Videostream überträgt. Anstatt in dem Broadcaster für eine virtuelle Ansicht 110 enthalten zu sein, kann der Videosender 113 in einigen Ausführungsbeispielen konventionell mit dem Broadcaster für eine virtuelle Ansicht 100 gekoppelt und zur Übertragung der Ströme virtueller Ansichten des stereoskopischen Bildpaares verwendet werden. Der Videosender 113 ist ein Video-Proxy-Server.
-
Die Ströme virtueller Ansichten von stereoskopischen Bildern, die den verschiedenen Rechenvorrichtungen 120-160 zur Verfügung gestellt werden, können von derselben virtuellen Kamera stammen und können derselbe Videostream sein. In einigen Ausführungsbeispielen kann ein virtueller Betrachter deren tatsächliche Ansicht basierend auf den Richtungsinformationen bestimmen, die durch ihre jeweiligen Rechenvorrichtungen 120-160, wie beispielsweise eine HMD, bereitgestellt werden.
-
Die Rechenvorrichtungen 120-160 können VR-Kopfbedeckungen, Smartphones, Desktop-Computer, Laptops, Computer-Pads, Tablets usw. sein. Die Rechenvorrichtungen 120-160 können Thin Clients sein, die mit dem Broadcaster für eine virtuelle Ansicht 110 kommunizieren und ihm ausreichend Anwendungsdaten für Rendering und Stitching zur Verfügung stellen. Jede oder zumindest einige der Rechenvorrichtungen 120-160 können verschiedene Arten von Vorrichtungen sein. Beispielsweise können die Rechenvorrichtungen 120-140 VR-Kopfbedeckungen sein, kann die Rechenvorrichtung 150 ein Laptop sein, und kann die Rechenvorrichtung 160 ein Nvidia SHIELD Tablet sein.
-
2 veranschaulicht ein Blockdiagramm eines Ausführungsbeispiels eines Broadcastingsystems für virtuelle Ansichten 200, das in Übereinstimmung mit den Prinzipien der Erfindung aufgebaut ist und den Betriebsablauf zum Bereitstellen von Strömen virtueller Ansichten eines stereoskopischen Bildpaares an eine Client-Rechenvorrichtung veranschaulicht. Das Broadcastingsystem für virtuelle Ansichten 200 beinhaltet einen Broadcaster für eine virtuelle Ansicht 210, einen Videosender 220 und eine Client-Rechenvorrichtung 230. In einigen Ausführungsbeispielen ist der Broadcaster für eine virtuelle Ansicht 110 von 1 als der Broadcaster für eine virtuelle Ansicht 210 konfiguriert und arbeitet als solcher.
-
Der Broadcaster für eine virtuelle Ansicht 210 ist dazu konfiguriert, einen Strom einer virtuellen Ansicht eines stereoskopischen Bildpaars für die Client-Rechenvorrichtung 230 zu erzeugen. Das stereoskopische Bildpaar kann von einer oder mehreren virtuellen Kameras stammen, die in einer Anwendung basierend auf Anwendungsdaten positioniert sind. In einem Ausführungsbeispiel ist der Broadcaster für eine virtuelle Ansicht 210 eine Cloud-basierte Vorrichtung, wie beispielsweise ein Cloud-Server (oder Server), der (bzw. die) Inhalte in der Cloud erzeugt (bzw. erzeugen), die an die Client-Rechenvorrichtung 230 gestreamt werden. Der Broadcaster für eine virtuelle Ansicht 210 kann auf einem oder mehreren Netzwerkservern (z.B. Cloud-Servern) implementiert sein, um Inhalte in einer Echtzeit- (oder Semi-Echtzeit-) Content-Engine zu rendern und einen Satz monoskopisch gerenderter Bilder zu erstellen, die zum Erzeugen eines 360-Grad-Videos zum Streamen eines stereoskopischen Bildpaares an virtuelle Betrachter in Echtzeit oder Semi-Echtzeit verwendet werden. Echtzeit ist eine Ebene der Reaktionsfähigkeit, die von einem Benutzer als ausreichend unmittelbar wahrgenommen wird oder die es einem Prozessor ermöglicht, mit der Verarbeitung einer Eingabe Schritt zu halten. In einigen Ausführungsbeispielen können die Eingangsdaten innerhalb von Millisekunden verarbeitet werden, so dass sie praktisch sofort als Rückmeldung zur Verfügung stehen. Der Broadcaster für eine virtuelle Ansicht 210 beinhaltet einen Renderer 211 und einen Bildprozessor 218. In einigen Ausführungsbeispielen beinhaltet der Broadcaster für eine virtuelle Ansicht 210 auch den Videosender 220. Der Renderer 211 kann ein Cloud-basierter Renderer sein.
-
Der Renderer 211 erzeugt gerenderte Datensätze von monoskopischen Bildern und wandelt die monoskopisch gerenderten Bilder in ein stereoskopisches Bildpaar um. Der Renderer 211 verwendet bildbasiertes Raymarching, um den monoskopischen Satz gerenderter Bilder mit Farbe und Tiefe in das stereoskopische Bildpaar zu konvertieren. Das Raymarching kann eine perfekte oder nahezu perfekte kreisförmige Projektion mit kleineren Artefakten aufgrund von Disokklusion, die mit verfügbaren Umgehungsbearbeitungen für die Artefakte behoben werden können, bereitstellen. Nach dem Raymarching kann der Renderer 211 zusätzliche Rendering-Schritte durchführen, wie z.B. die Anwendung einer transluzenten Geometrieverarbeitung und von Posttransluzenzeffekten (Tone Mapping) auf jedes der stereoskopischen Bildpaare.
-
Der Renderer 211 kann die Bilder für Anwendungen oder Technologien erzeugen, die mehrere in Echtzeit generierte Darstellungen erfordern, wie beispielsweise für ein VR- oder AR-Display. Die Datensätze können mehreren Ansichten (z.B. Kubusansichten) entsprechen. Somit kann der Renderer 211 sechs gerenderte Bilder zeichnen, die zur Bereitstellung von 360-Grad-Ansichten verwendet werden können. Am Beispiel einer Spielanwendung kann der Renderer 211 die sechs gerenderten Bilder erzeugen, indem er die Rendering-Funktion einer Game Engine sechsmal aufruft.
-
Der Renderer 211 beinhaltet eine Zentralverarbeitungseinheit (CPU) 212, die mit mehreren Grafikverarbeitungseinheiten (GPUs) 213, 215, 217 gekoppelt ist. Die Anzahl der CPUs oder GPUs kann in verschiedenen Renderer-Ausführungsbeispielen variieren. Die GPUs können so konfiguriert sein, dass sie ganze, separate Panorama-Ansichten darstellen, oder jede GPU kann einen Frame bzw. ein Einzelbild derselben Ansicht darstellen. In einigen Ausführungsbeispielen kann der Broadcaster für eine virtuelle Ansicht 210 mehrere Renderer oder einen einzelnen Renderer mit mehreren CPUs beinhalten, die jeweils mit mehreren GPUs gekoppelt sind.
-
Der Renderer 211 beinhaltet einen Speicher 214, der eine Reihe von Betriebsanweisungen enthält, die den Betrieb des Renderers 211 steuern. Die Reihe der Betriebsanweisungen entspricht Algorithmen, die den Rendering-Prozess in Übereinstimmung mit dem hierin offenbarten stereoskopischen Rendering ausrichten. Der Speicher 214 kann mit der CPU 212 und den GPUs gekoppelt sein und mit der CPU 212 und den GPUs 213, 215, 217 zusammenarbeiten, um das stereoskopische Bildpaar darzustellen. Der Renderer 211 kann darüber hinaus andere Komponenten, wie beispielsweise eine Anwendungsmaschine, gekoppelt mit der CPU 212, dem Speicher 214 oder den GPUs 213, 215, 217, die zur Erzeugung der gerenderten Bilder verwendet werden, beinhalten oder mit diesen interagieren.
-
Die CPU 212 ist dazu konfiguriert, mit den GPUs 213, 215, 217 zusammenzuarbeiten, um den monoskopischen Satz gerenderter Bilder zu erzeugen. Die CPU 212 kann Szeneninformationen zur weiteren Verarbeitung an die GPUs 213, 215, 217 senden, um Bilder oder Einzelbilder für einen bestimmten Blickwinkel zu erzeugen. Beispielsweise kann die CPU 212 Anwendungsdaten von der Client-Rechenvorrichtung 230 verwenden, um Szeneninformationen wie Eckpunkt- bzw. Vertexpositionen, Dreiecksverbindungen, Texturen, Materialeigenschaften, Lichtquellen usw. zu bestimmen und diese Informationen an die GPUs 213, 215, 217 weiterzugeben, um die Pixel der gerenderten Bilder zu malen. In einigen Ausführungsbeispielen kann die Client-Rechenvorrichtung 230 Aktions- oder Bewegungsinformationen, die sich indirekt auf die Vertexpositionen auswirken, über das Kommunikationsnetzwerk 170 senden. Somit können die Anwendungsdaten des Client-Rechenvorrichtung 230 nur einen Teil der Szenendaten beinhalten.
-
Der Renderer 211 sendet das erzeugte stereoskopische Bildpaar an den Bildprozessor 218. Das stereoskopische Bildpaar kann ein stereoskopisches Bildpaar von 360 Grad sein. Der Bildprozessor 218 führt eine Kompression durch und kodiert in einen Videostrom zur Übertragung, Umformatierung und Bildverarbeitung auf dem stereoskopischen Bildpaar. Der Bildprozessor 218 kann einen Encoder beinhalten, der in Standardprotokoll-Videoströme wie beispielsweise H.264, HVEC, etc. kodiert. Der Bildprozessor 218 sendet dann die kodierten Ströme virtueller Ansichten des stereoskopischen Bildpaares zum Streaming an den Videosender 220.
-
Der Videosender 220 empfängt den kodierten Videostrom und überträgt den virtuellen Ansichtsstrom des stereoskopischen Bildpaars an die Client-Rechenvorrichtung 230. Der Videosender 220 kann ein Video-Proxy-Server sein. Die Client-Rechenvorrichtung 230 kann eine der Rechenvorrichtungen 120-160 von 1 sein.
-
Die Client-Rechenvorrichtung 230 zeigt eine virtuelle Ansicht unter Verwendung des virtuellen Videostroms des stereoskopischen Bildpaars, das von dem Videosender 220 empfangen wurde, an. Die Client-Rechenvorrichtung kann auch Anwendungsdaten an den Broadcaster für eine virtuelle Ansicht 210 senden, die für die Echtzeit-Generierung und -Verarbeitung von Inhalten verwendet werden.
-
3A, 3B, 3C und 3D veranschaulichen Diagramme, die die Anwendung von Raymarching auf ein Kubusabbild in Übereinstimmung mit den Prinzipien der Erfindung zeigen. Ein Renderer wie hierin offenbart kann das Raymarching durchführen, um ein monoskopisches Kubusabbild in ein stereoskopisches Kubusabbild zu konvertieren.
-
3A veranschaulicht eine zweidimensionale Ansicht eines Kubusabbilds 310. Innerhalb des Kubusabbilds 310 befindet sich ein Projektionskreis 320 mit einem Projektionszentrum 325. Das Kubusabbild 310 weist mehrere Flächen auf, wobei die Fläche 315 bezeichnet ist. Mehrere Strahlen, allgemein als Strahlen 340 bezeichnet, sind als von mehreren Projektionspunkten auf dem Projektionskreis 320 ausgehend und Frustum- bzw. Stumpfgrenzen der Flächen des Kubusabbilds 310 überschreitend gezeigt. Alle der Strahlen 340 stammen aus dem Projektionskreis 320, aber einige von ihnen gehen nur bis zu einer Fläche des Kubusabbilds 310, während andere sich zwischen mehreren Flächen des Kubusabbilds 310 kreuzen. In einem dreidimensionalen Kubusabbild kann ein einzelner Strahl durch drei verschiedene Flächen eines Kubusabbilds verlaufen.
-
3B veranschaulicht ein Beispiel für einen Querschnitt eines Frustums bzw. Stumpfes 360 einer Kubusabbildfläche, wie beispielsweise der Fläche 315. Der Stumpf 360 hat einige Bildpunkte bzw. Pixel in der horizontalen Dimension (drei sind in 3B bezeichnet), jedes eine mit seinem eigenen Stumpf. Für jeden Pixel gibt es einen Tiefenwert, der die Entfernung zu einer Oberfläche repräsentiert. Während des Raymarchings sucht der Renderer nach der Oberfläche, die sich zuerst mit dem projizierten Strahl schneidet. Der Strahl in 3B bis 3D kann einer der Strahlen 340 von 3A sein.
-
3C veranschaulicht den Stumpf 360, der in einen Postprojektionsraum transformiert wurde, um die Arbeit mit ihm zu erleichtern: Pixel entsprechen Boxen anstelle von generischen Stümpfen. In 3C ist der Tiefenpuffer ein einfaches Höhenabbild. Der Renderer kann das Höhenabbild verwenden, indem er jede Oberfläche entlang des Strahls mit dem Strahl selbst vergleicht.
-
3D stellt eine effizientere Nutzung von Tiefeninformationen bereit. In 3D sind zwei Mipmap-Ebenen mit geringerer Auflösung, 1 (rot) und 2 (grün), hinzugefügt. Mit den zusätzlichen Mipmap-Ebenen kann der Renderer die Oberflächen von Ebene 2 durchlaufen, bis er von dem Strahl getroffen wird. Dann wechselt der Renderer auf die Oberflächen der Ebene 1, bis er von dem Strahl getroffen wird. Schließlich wechselt der Renderer zu Oberflächen der Ebene 0, bis der letzte Treffer gefunden wird.
-
Normalerweise erfolgt das Raymarching mit einer Ansicht, bei der ein Strahl projiziert und durchlaufen wird, bis eine Oberfläche gefunden wird. Der offenbarte Rendering-Prozess kann einen Strahl auf einmal durch ein ganzes Kubusabbild führen. Der Raymarching-Algorithmus erkennt, mit welcher Fläche zu beginnen ist, führt dann Raymarching in dieser Fläche durch, und dann für eine andere Fläche, wenn der Strahl diese Fläche hin zu der anderen Fläche verlässt. Die erste Fläche, mit der zu beginnen ist, kann die Fläche sein, die den Strahlursprung innerhalb der Stümpfe der Flächen aufweist; und dann beginnt das Raymarching mit dieser Fläche. Wenn der Strahlursprung in der Nähe des Zentrums des Kubusabbilds liegt, außerhalb der Stümpfe, dann ist die erste Fläche die Fläche, die sich zuerst mit dem Strahl schneidet. In einigen Ausführungsbeispielen kann ein einfacher Raybox-Schnittalgorithmus verwendet werden, um diese Fläche und den Schnittpunkt zu finden, weil die nahen Ebenen der sechs Stümpfe einen Kubus bilden. Jeder Strahl beginnt an einer bestimmten Stelle in einer Fläche, und sobald der Strahl auf eine Wand trifft, wie beispielsweise eine Wand, die Flächen trennt, wird der Raymarching-Prozess für diesen spezifischen Strahl auf diese andere Fläche umgestellt. Der Raymarching-Algorithmus hat Zugriff auf alle sechs Flächen eines Kubusabbilds und kennt die Geometrie, die sie verbindet. Somit können die Strahlen sequentiell über ein Kubusabbild hinweg von einem Strahl zum anderen verarbeitet werden. In einigen Ausführungsbeispielen können die Strahlen parallel verarbeitet werden. Das Umschalten zwischen den verschiedenen Flächen kann in einem Shader-Programm für jeden einzelnen Strahl erfolgen.
-
4 veranschaulicht ein Ausführungsbeispiel eines Verfahrens 400 zum Bereitstellen eines stereoskopischen Panoramas aus einem monoskopischen Kubusabbild. Das Verfahren 400 kann von einem hierin offenbarten Broadcaster für eine virtuelle Ansicht durchgeführt werden. In einigen Ausführungsbeispielen kann ein Renderer, wie beispielsweise ein Cloud-basierter Renderer, zumindest einige der Schritte des Verfahrens 400 ausführen. Für einige der Schritte kann eine Anwendungs-Engine, wie z.B. eine Game-Engine, verwendet werden. Die Schritte des Verfahrens 400 entsprechen einem Algorithmus, der stereoskopische Bilder aus monoskopischen Bildern erzeugt, wie hierin offenbart. Das Verfahren 400 beginnt in Schritt 405 mit der Absicht, eine opake Geometrie in ein Kubusabbild zu rendern.
-
In einem Schritt 410 wird die opake Geometrie in ein Kubusabbild gerendert. Ein konventionelles Verfahren des Renderns eines Kubusabbilds kann verwendet werden. In einem Schritt 420 werden Prätransluzenzeffekte auf das gerenderte Kubusabbild angewendet. Die Prätransluzenzeffekte können eine Umgebungsokklusion der Bildschirmoberfläche (screen space ambient occlusion; SSAO) und Bildschirmoberflächenreflexionen (screen space reflections; SSR) beinhalten.
-
In einem Schritt 430 wird aus dem gerenderten monoskopischen Kubusabbild unter Verwendung von Raymarching und unter Verwendung der Tiefeninformationen aus dem Kubusabbild ein stereoskopisches Paar von Kubusabbildern erzeugt. In einem Ausführungsbeispiel wird das stereoskopische Paar von Kubusabbildern aus der gerenderten monoskopischen Kubusabbild extrapoliert. Ein Renderer kann das gerenderte monoskopische Kubusabbild mit Raymarching in das stereoskopische Kubusabbilderpaar konvertieren. Wie in 3A bis 3D dargestellt ist, findet Raymarching eine Oberfläche, die durch einen Tiefenpuffer repräsentiert wird, der sich mit einem projizierten Strahl schneidet. Der Raymarching-Algorithmus kann sich in einer Anwendungs-Engine befinden. In einigen Ausführungsbeispielen kann die Raymarching-Funktion als eine Bibliothek extrahiert und separat von einer Anwendungsmaschine bereitgestellt werden.
-
In einem Schritt 440 wird die Transluzenz in beide Kubusabbilder des stereoskopischen Bildpaars gerendert. In einem Ausführungsbeispiel wird die Transluzenz nach dem Raymarching mit einem Vertex-Shader gerendert, um mit der Kreisprojektion übereinzustimmen. In diesen Ausführungsbeispielen stehen Geometrieinformationen für transluzente Objekte zur Verfügung. In dem Vertex-Shader wird die Geometrie, wie z.B. die Position der Eckpunkte der Geometrie, um die vertikale Achse gedreht, die durch die Mitte des Projektionskreises verläuft und der Betrachterposition entspricht. Die gedrehte Geometrie kann dann gerastert, wie gewohnt (d.h. konventionell) schattiert und in die Flächen des Kubusabbilds geschrieben werden. Das Ausmaß der Drehung kann durch den Abstand zum Objekt bestimmt sein. Die Drehung soll dem Projektionskreis entsprechen, der durch das Raymarching erhalten wird. 8 zeigt ein Beispiel für den Umgang mit Transluzenz in Stereo und die Anpassung an den Projektionskreis.
-
Das Verfahren 400 fährt mit Schritt 450 fort, in dem Posttransluzenzeffekte auf beide Kubusabbilder des stereoskopischen Paars angewendet werden. Tone Mapping ist ein Beispiel für die anwendbaren Posttransluzenzeffekte.
-
In einem Schritt 460 werden Projektionen für Streaming generiert. Die Projektionen werden für beide stereoskopischen Bildpaare erzeugt. Für das Streaming können verschiedene Arten von Projektionen erzeugt werden, darunter gleichwinklige, Boggs Eumorphic, Kubusabbilder und Pyramiden. In einem Schritt 470 werden die Projektionen dann kodiert und an Client-Rechenvorrichtungen, wie beispielsweise HMDs, übertragen. Das Verfahren endet dann in einem Schritt 480.
-
5 veranschaulicht ein Diagramm eines Beispiels einer omnidirektionalen Stereoprojektion in Übereinstimmung mit den Prinzipien der Erfindung. 5 veranschaulicht einen Projektionskreis 510 mit einem Projektionszentrum 520 und mehreren Strahlen, die von Projektionspunkten auf dem Projektionskreis 510 ausgehen, die einer Kreisprojektion approximieren. Zur Berechnung einer regulären perspektivischen Projektion ist der Ursprung das Projektionszentrum 520 (Augenposition) und kann die Richtung aus den Ansichts- und Projektionsmatrizen und Pixelkoordinaten berechnet werden. Unter Verwendung der offenbarten Rendering-Prozesse kann ein Blickwinkel verschoben werden, wobei Strahlen von mehreren Punkten auf dem Projektionskreis 510 nachverfolgt werden. Das originale gerenderte Bild (nichtkreisförmig) aus der ursprünglichen Perspektive wird als Quellendaten zur Nachverfolgung von Strahlen aus Punkten auf dem Projektionskreis 510 verwendet. Ein paar der Projektionspunkte, 530 und 550, sind in 5 dargestellt. Der Projektionspunkt 530 ist ein Projektionspunkt für eine Sicht des linken Auges und der Projektionspunkt 550 ist ein Projektionspunkt für eine Sicht des rechten Auges. Die linken und rechten Projektionspunkte 530, 550 entsprechen der gleichen Blickrichtung und sind gegenüberliegende Punkte auf dem Projektionskreis 510.
-
Ein Unterschied zwischen der Berechnung einer regulären perspektivischen Projektion aus dem Projektionszentrum 520 und einem stereoskopischen Panorama besteht in der Berechnung des gewünschten Strahlursprungs und der Strahlrichtung für jeden Ausgangspixel. Zum Berechnen des stereoskopischen Panoramas kann die Richtung basierend auf den Ausgangspixelkoordinaten in dem Panorama berechnet werden, und wird der Strahlursprung basierend auf dem Panoramazentrum und der Richtung berechnet, in der sich der Strahlursprung auf dem Projektionskreis 510 befindet. Beispielsweise kann der Projektionspunkt 530 oder 550 der Strahlursprung auf dem Projektionskreis 510 sein. Folglich kann dann, wenn Panoramaansichten berechnet werden, das offenbarte Verfahren unabhängig davon, ob die Projektion oder das Layout der gerenderten Ansichten ein Kubus oder gleichwinklig ist, für jeden Ausgangspixel eine Blickrichtung bestimmen, in welcher der Pixel entspricht. Beispielsweise kann mit einer äquirektangularen Projektion für ein x, y eine Pixelpositionsgeometrie dazu verwendet werden, die Blickrichtung zu bestimmen. Bei Stereopanoramen liegt der Projektionspunkt auf dem Projektionskreis. Bei einer gegebenen Richtung wird der Projektionspunkt so eingestellt, dass er auf dem Projektionskreis 510 liegt.
-
6 veranschaulicht ein Diagramm 600, das ein Beispiel für das Bestimmen von Pixelfarben für ein linkes und ein rechtes Auge in Bezug auf ein Kubusabbild in Übereinstimmung mit den Prinzipien der Erfindung darstellt. Das Diagramm 600 veranschaulicht die Verwendung von ODS zum Projizieren von Strahlen in einem Kubusabbild, um die Farbe für einen Linksaugenpixel 633 und einen Rechtsaugenpixel 635 an einem einzigen Punkt auf der Fläche eines monoskopischen Kubusabbilds 630 zu bestimmen. Die Farben des Linksaugenpixels und des Rechtsaugenpixels für jeden Punkt auf jeder Fläche des Kubusabbilds 630 können ebenfalls bestimmt werden. Vorteilhafterweise kann die ODS-Projektion mit Raymarching von einem Renderer dazu verwendet werden, ein gerendertes monoskopisches Kubusabbild in ein stereoskopisches Kubusabbild zu konvertieren. Ein Renderer, wie beispielsweise der Renderer 211 in 2, kann dazu konfiguriert sein, die Schritte auszuführen, die dem durch das Diagramm 600 dargestellten Algorithmus entsprechen.
-
Das Diagramm 600 beinhaltet einen Projektionskreis 610 mit einem Projektionszentrum 620, das innerhalb eines Kubusabbilds 630 positioniert ist. Eine einzelne Seite der Fläche 631 des Kubusabbilds 630 ist in 6 bezeichnet. An einem einzigen Punkt auf der Fläche 631 befinden sich ein Linksaugenpixel 633 und ein Rechtsaugenpixel 635. Um zu bestimmen, welche Farbe für den Linksaugenpixel 633 und den Rechtsaugenpixel 635 an der Stelle auf der Fläche 631 sichtbar sein soll, wird eine Projektionslinie 640 von dem Punkt der Fläche 631 zu dem Projektionszentrum 620 gezogen. Projektionspunkte auf dem Projektionskreis 610 für das linke Auge und das rechte Auge werden dann durch den Schnittpunkt einer senkrechten Linie 642 auf dem Projektionskreis 610 bestimmt. Die senkrechte Linie 642 steht senkrecht zu der Projektionslinie 640 durch das Projektionszentrum 620. Projektionspunkte für das linke Auge 612 und das rechte Auge 614 befinden sich auf dem Projektionskreis 610, wo die senkrechte Linie 642 den Projektionskreis 610 schneidet. Ausgehend von dem Linksaugenprojektionspunkt 612 und dem Rechtsaugenprojektionspunkt 614 werden Strahlen in der gleichen Richtung wie der der Projektionslinie 640 von dem Projektionszentrum 620 zu dem Punkt auf der Vorderseite 631 des Linksaugenpixels 633 und des Rechtsaugenpixels 635 nachverfolgt. Mit anderen Worten sind die Strahlen der Projektionspunkte 612 und 614 parallel zu der Blickrichtung der Projektionslinie 641. Wenn die Strahlen auf ein erstes Objekt treffen, dann wird die Farbe dieses Objekts für den Linksaugenpixel 633 bzw. den Rechtsaugenpixel 635 verwendet. Wenn beispielsweise der Linksaugenstrahl 652 auf das Objekt 662 trifft, wird die Farbe dieses Objekts 662 für den Linksaugenpixel 633 verwendet. Ähnlich hierzu wird dann, wenn der Rechtsaugenstrahl 654 auf das Objekt 664 trifft, die Farbe dieses Objekts 664 für den Rechtsaugenpixel 635 verwendet. Dieser Vorgang wird für jede Augenposition jeder Blickrichtung für jeden Pixel auf dem Kubusabbild wiederholt.
-
7 veranschaulicht ein Diagramm 700 eines Beispiels zur Entfernung von Verzerrungen aus einem stereoskopischen Kubusabbild in Übereinstimmung mit den Prinzipien der Erfindung. Verzerrungen können an einigen Stellen auftreten, wenn Strahlen von einem Projektionskreis mit dem IPD-Durchmesser nachverfolgt werden. Für Pixel, die in einem Kubusabbild nahe beieinander liegen, können unterschiedliche Farben erzielt werden, was zu Verzerrungen aus Richtungen von oben und von unten führt, die oft als Spiralverzerrung bezeichnet werden. Ein Renderer, wie beispielsweise der Renderer 211 in 2, kann dazu konfiguriert sein, die Schritte auszuführen, die dem durch das Diagramm 700 dargestellten Algorithmus entsprechen.
-
Um Verzerrungen aus Richtungen von oben und unten zu entfernen, wird der Durchmesser des Projektionskreises schrittweise von dem ursprünglichen Durchmesser einer IPD für horizontale Strahlen auf null für vertikale Strahlen reduziert. Um diese allmähliche Reduzierung darzustellen, beinhaltet das Diagramm 700 einen ersten Projektionskreis 710, einen zweiten Projektionskreis 712 und einen dritten Projektionskreis 714. Die horizontalen Strahlen 730 und 732 werden von dem ersten Projektionskreis 710, der der ursprüngliche Projektionskreis mit dem ursprünglichen Durchmesser von IPD ist, ausgehend nachverfolgt. Für Strahlen, die auf- und abwärts verfolgt werden, zusammen dargestellt durch Strahlen 740, die in dem Diagramm 700 abwärts gehen, wird der Durchmesser des Projektionskreises für diese Strahlen schrittweise reduziert. In dem Diagramm 700 ist dies durch die Strahlen 740 dargestellt, die von dem zweiten Projektionskreis 712 und dem dritten Projektionskreis 714 ausgehend projiziert werden, so dass die Strahlen als von dem gleichen Projektionspunkt aus projiziert werdend erscheinen.
-
8 veranschaulicht ein Diagramm 800 eines Beispiels für die Anwendung von Transluzenz in Stereo in Übereinstimmung mit den Prinzipien der Erfindung. Da zum Rendern von Transluzenz eindeutige Tiefeninformationen benötigt werden, kann Transluzenz nicht vor dem Raymarching in ein Kubusabbild gerendert werden. Nach dem Raymarching stehen jedoch Tiefeninformationen für jede Oberfläche zur Verfügung und kann die Transluzenz für ein stereoskopisches Kubusabbild wie hierin offenbart gerendert werden.
-
Das Diagramm 800 beinhaltet einen Projektionskreis 810 mit einem Projektionszentrum 820. Das Diagramm 800 beinhaltet auch ein Objekt 830, das ein ursprüngliches monoskopisches Objekt ist, und Darstellungen des rechten und des linken Auges des Objekts, die jeweils als ein Rechtsaugenobjekt 840 und ein Linksaugenobjekt 850 bezeichnet sind. Bei der Umwandlung des Originalobjekts 830 zu dem Rechtsaugenobjekt 840 und dem Linksaugenobjekt 850 unter Verwendung von Strahlen aus dem Projektionskreis 810 werden die Vertices des Originalobjekts 830 entsprechend einem von dem Abstand abhängigen Ausmaß um die vertikale Achse gedreht.
-
Das Diagramm 800 veranschaulicht ein Beispiel für das Anpassen der Position von Vertices, um ein gerendertes monoskopisches Bild in Stereo umzuwandeln. Vor der Umwandlung in Stereo unter Verwendung des Originalobjekts 830 werden die Positionen der Vertices des Originalobjekts 830 durch Rotation so angepasst, dass jedes Auge eine andere Version des Objekts 830 erhält. Beispielsweise werden für das rechte Auge die Vertices nach links und für das linke Auge die Vertices nach rechts verschoben.
-
Beispielsweise ist ein Punkt auf dem ursprünglichen Objekt
830, der als
p gezeigt ist, von einem Projektionspunkt
812 aus sichtbar, wie durch eine erste Projektionslinie
813, die von p bis zu dem Projektionspunkt
812 gezogen wurde, gezeigt ist. Der Radius von dem Projektionszentrum
820 bis zu dem Projektionspunkt
812 ist ½ IPD. Eine zweite Projektionslinie
814, die ausgehend von dem Projektionszentrum
820 gezogen ist und parallel zu der ersten Projektionslinie
813 verläuft, zeigt an, wo der Punkt p tatsächlich auf dem Kubusabbild erscheinen wird. Daher muss der Punkt
p zwischen dem Punkt
p und dem Projektionszentrum
820 (p0) um einen Winkel alpha um die Mittelachse gedreht werden. Der Sinus von alpha entspricht dem Radius geteilt durch den Abstand zwischen dem Punkt
p und dem Projektionszentrum
820, wie durch die nachstehende Gleichung 1 dargestellt wird.
-
Im Vergleich zu herkömmlichen Methoden unterscheiden sich die offenbarten Vorrichtungen, Schemata und Rendering-Methoden dadurch, dass zusätzlich zu Farbinformationen auch Tiefeninformationen verwendet werden, was es ermöglicht, die Bilder auf verschiedene Standpunkte und nicht nur in unterschiedliche Blickrichtungen zu reprojizieren.
-
Dies ist eine Verbesserung der traditionellen Wege zur Aufnahme von Stereopanoramen, bei denen normalerweise eine kleine Anzahl von Bildern zusammengefügt wird und die defekte Tiefe sowie Stitching-Artefakte als etwas verworfen werden, mit dem man eben zu leben hat. Die Erfindung bietet den Vorteil, weniger, eine monoskopische Ansicht, zu rendern und dann die monoskopische Ansicht in eine stereoskopische umgewandelt wird. Regelmäßige Rasterisierung kann dann verwendet werden, um Projektionen verzerrungsfrei zu rendern.
-
Traditionell werden einige Bildverarbeitungsalgorithmen verwendet, die versuchen, die Stitching-Artefakte zu reduzieren, indem sie Bilder mit Hilfe von Algorithmen des computerisierten Sehens, wie beispielsweise optischem Fluss, analysieren. Auch wenn sie effektiv sind, benötigen diese Bildverarbeitungsalgorithmen viele Eingangsbilder, um ein gutes Ergebnis zu erzielen, und dauert die Analyse sehr lange. Einige VR HMD-Treiber können eine Reprojektionstechnik verwenden, um die von der Anwendung gerenderten Bilder an eine geringfügig neuere Ausrichtung der HMD anzupassen. Dies kann als „Zeitverzug“ bezeichnet werden. Es werden jedoch nur Farbinformationen verwendet und es wird versucht, den Reprojektions-Shader so schnell wie möglich zu machen, so dass dieses nur die Projektionsorientierung und nicht den Blickwinkel korrigieren kann.
-
Der hierin offenbarte, verbesserte Rendering-Prozess ermöglicht die Erzeugung eines Paares stereoskopischer Bilder in Echtzeit, während nur ein monoskopischer Satz von Bildern, wie beispielsweise ein Kubusabbild, gerendert wird, wodurch die Rendering-Kosten relativ niedrig gehalten werden und ein Panorama mit hochwertigem Stereoeffekt erzeugt wird. Zur weiteren Qualitätsverbesserung kann ein zweilagiges Kubusabbild verwendet werden. In einigen Ausführungsbeispielen kann der offenbarte Rendering-Prozess für Nvidia Ansel Stereo-Panoramen verwendet werden, indem das Spiel eine Ansel-Runtime mit seinen Parametern für Tiefenpuffer und Tiefenprojektion zur Verfügung stellt. Ansel ist ein fortschrittliches virtuelles Fotografiewerkzeug für Spiele, mit dem Benutzer verschiedene Arten von Bildern aus Spielen aufnehmen können, darunter regelmäßige Bildschirmaufnahmen, hochauflösende Bildschirmaufnahmen, Mono- und Stereo-360-Grad-Panoramen. Mit Ansel kann ein Benutzer Bildschirmaufnahmen von jeder beliebigen Position aus erstellen, diese mit Nachverarbeitungsfiltern anpassen, HDR-Bilder in High-Fidelity-Formaten aufnehmen und sie mit seinem Mobiltelefon, PC oder VR-Headset in 360 Grad teilen.
-
Demgemäß können das vorstehend beschriebene System, die Vorrichtungen und die Verfahren oder zumindest ein Teil derselben in verschiedenen Prozessoren, wie beispielsweise digitalen Datenprozessoren oder Computern, verkörpert sein oder von diesen ausgeführt werden, wobei die Computer programmiert sind oder ausführbare Programme von Sequenzen von Softwareanweisungen speichern, um einen oder mehrere der Schritte der Verfahren durchzuführen. Die Softwareanweisungen solcher hierin offenbarten Programme können Algorithmen repräsentieren und in maschinenausführbarer Form auf nichtflüchtigen digitalen Datenspeichermedien, z.B. magnetischen oder optischen Platten, Direktzugriffsspeicher (RAM), magnetischen Festplatten, Flashspeichern und/oder Nur-Lese-Speicher (ROM) kodiert sein, um es verschiedenen Arten von digitalen Datenverarbeitungssystemen oder Computern zu ermöglichen, einen, mehrere oder alle Schritte eines oder mehrerer der hierin beschriebenen Verfahren oder Komponenten der hierin beschriebenen Vorrichtungen durchzuführen.
-
Bestimmte hierin offenbarte Ausführungsbeispiele können sich ferner auf Computerspeicherprodukte mit einem nichtflüchtigen, computerlesbaren Medium beziehen, auf dem sich ein Programmcode zur Durchführung verschiedener computerimplementierter Operationen befindet, die die Vorrichtungen, die Systeme oder die Schritte der hierin beschriebenen Verfahren verkörpern. Das hierin verwendete nichtflüchtige Medium bezieht sich auf alle computerlesbaren Medien mit Ausnahme von flüchtigen, propagierenden Signalen. Beispiele für nichtflüchtige computerlesbare Medien sind unter anderem: magnetische Medien wie Festplatten, Disketten und Magnetbänder; optische Medien wie CD-ROMs; magneto-optische Medien wie Floptical Disks; und Hardwarevorrichtungen, die speziell zum Speichern und Ausführen von Programmcode konfiguriert sind, wie ROM- und RAM-Vorrichtungen. Beispiele für Programmcode sind sowohl Maschinencode, wie er von einem Compiler erzeugt wird, als auch Dateien mit höherem Code, die von dem Computer unter Verwendung eines Interpreters ausgeführt werden können.
-
Der Fachmann auf dem Gebiet der Technik, auf das sich diese Anmeldung bezieht, wird wertschätzen, dass andere und weitere Hinzufügungen, Weglassungen, Ersetzungen und Änderungen an den beschriebenen Ausführungsbeispielen vorgenommen werden können.