DE102017118580A1 - Quadrangulierte geschichtete Tiefenbilder - Google Patents

Quadrangulierte geschichtete Tiefenbilder Download PDF

Info

Publication number
DE102017118580A1
DE102017118580A1 DE102017118580.1A DE102017118580A DE102017118580A1 DE 102017118580 A1 DE102017118580 A1 DE 102017118580A1 DE 102017118580 A DE102017118580 A DE 102017118580A DE 102017118580 A1 DE102017118580 A1 DE 102017118580A1
Authority
DE
Germany
Prior art keywords
ldi
data block
pixel
pixel samples
subset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102017118580.1A
Other languages
English (en)
Inventor
Matthew Milton Pharr
Manfred Ernst
Puneet Lall
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE102017118580A1 publication Critical patent/DE102017118580A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

In einem allgemeinen Aspekt kann ein computerimplementiertes Verfahren das Identifizieren einer Vielzahl von Pixelabtastwerten beinhalten, die in einer geschichteten Tiefenbild-(LDI)-Darstellung einer Szene für die Wiedergabe in einem dreidimensionalen (3D) Bild in einem virtuellen Realitätsraum (VR-Raum) enthalten sind, das Gruppieren einer Teilmenge der Vielzahl von Pixelabtastwerten in einen Datenblock durch einen Prozessor, einschließlich Extrahieren jedes Pixelabtastwertes, der in der Teilmenge der Vielzahl der Pixelabtastwerte enthalten ist, von der LDI-Darstellung der Szene für die Einbeziehung in den Datenblock auf Basis einer Fehlermetrik, die mit dem jeweiligen Pixelabtastwert verbunden ist, das Erstellen einer Textur-Map für einen Datenblock durch den Prozessor, wobei die Textur-Map mit dem Datenblock verbunden ist, das Speichern des Datenblocks und der Textur-Map, und das Auslösen einer Wiedergabe des 3D-Bildes im VR-Raum mithilfe des Datenblocks und der Textur-Map.

Description

  • TECHNISCHES GEBIET
  • Diese Beschreibung bezieht sich im Allgemeinen auf Szenendarstellungen in einem virtuellen Realitätsraum (VR).
  • ALLGEMEINER STAND DER TECHNIK
  • Bildbasierte Wiedergabe-(IBR)-Techniken können verwendet werden, um Objekte darzustellen und wiederzugeben. IBR-Techniken können bei der Wiedergabe geometrisch komplexer Szenen vorteilhaft sein. Außerdem oder alternativ können IBR-Techniken beim Schattieren geometrisch komplexer Szenen vorteilhaft sein (z. B. wenn globale Illuminationsalgorithmen verwendet werden).
  • In manchen Fällen, wenn sich die geometrische Komplexität eines Objekts erhöht, kann sich die Zeit, die für die Wiedergabe des Objekts erforderlich ist, ebenfalls erhöhen. Eine IBR-Technik kann zum Beispiel Textur-Mapping sein. In einem anderen Beispiel kann ein geschichtetes Tiefenbild („Layered Depth Image, LDI“) eine bildbasierte Technik sein, die für die Darstellung und Wiedergabe von Objekten mit komplexen Geometrien verwendet werden kann. Die Auswahl einer IBR-Technik für die Darstellung und Wiedergabe von Objekten kann auf der Komplexität des Objekts basieren. Die Auswahl der IBR-Technik kann so bestimmt werden, dass sie Bildwiedergabezeiten minimiert.
  • KURZDARSTELLUNG DER OFFENBARUNG
  • In einem allgemeinen Aspekt kann ein computerimplementiertes Verfahren das Identifizieren einer Vielzahl von Pixelabtastwerten beinhalten, die in einer geschichteten Tiefenbild(LDI)-Darstellung einer Szene für die Wiedergabe in einem dreidimensionalen (3D) Bild in einem virtuellen Realitätsraum (VR-Raum) enthalten sind, das Gruppieren einer Teilmenge der Vielzahl von Pixelabtastwerten in einen Datenblock durch einen Prozessor, wobei das Gruppieren das Extrahieren jedes Pixelabtastwertes, der in der Teilmenge der Vielzahl der Pixelabtastwerte enthalten ist, von der LDI-Darstellung der Szene für die Einbeziehung in den Datenblock auf Basis einer Fehlermetrik beinhaltet, die mit dem jeweiligen Pixelabtastwert verbunden ist, das Erstellen einer Textur-Map für einen Datenblock durch den Prozessor, wobei die Textur-Map mit dem Datenblock verbunden ist, das Speichern des Datenblocks und der zugehörigen Textur-Map, und das Auslösen einer Wiedergabe des 3D-Bildes im VR-Raum mithilfe des Datenblocks und der zugehörigen Textur-Map.
  • Implementierungen können eine oder mehrere der folgenden Merkmale allein oder in Kombination mit einer oder mehreren anderen Merkmalen umfassen. Der Prozessor kann zum Beispiel ein Grafikprozessor (GPU) sein. Das Auslösen der Wiedergabe des 3D-Bildes im VR-Raum mithilfe des Datenblocks und der zugehörigen Textur-Map kann das Auslösen einer Rasterisierung des Datenblocks und das Auslösen einer Anwendung der zugehörigen Textur-Map beinhalten. Der Datenblock kann durch eine planare Kachel dargestellt werden. Die Gruppierung einer Teilmenge der Vielzahl von Pixelabtastwerten in einen Datenblock kann ferner das Ermitteln beinhalten, ob die Fehlermetrik für einen Pixelabtastwert größer als ein Fehlerschwellenwert ist, sowie die Nichteinbeziehung des Pixelabtastwertes in die Teilmenge der Vielzahl von Pixelabtastwerten für die Gruppierung in den Datenblock auf Basis der Ermittlung, dass die Fehlermetrik für den Pixelabtastwert größer als der Fehlerschwellenwert ist. Der Fehlerschwellenwert kann auf einer Region rund um die ursprüngliche Kameraposition basieren, wo die LDI-Darstellung der Szene als gültig betrachtet wird.
  • Das Verfahren kann umfassen, dass eine Kandidatenebene oder eine planare Kandidatenkachel, die auf Basis eines Tiefenwertes, der mit einem Pixelabtastwert, insbesondere einem LDI-Pixelabtastwert, verbunden ist, und eines Wertes für eine Flächennormale, die dem Pixelabtastwert, insbesondere dem LDI-Pixelabtastwert, verbunden ist, erstellt wird, und die Pixelabtastwerte, insbesondere jene LDI-Pixelabtastwerte lokalisiert werden, die sich innerhalb einer Fehlermetrik der planaren Kandidatenkachel befinden.
  • Das Verfahren kann ferner das Optimieren, durch den Prozessor, von Parametern beinhalten, die mit dem Datenblock verbunden sind, wobei das Optimieren einen Gesamtpartitionierungsfehler für die Teilmenge der Vielzahl von Pixelabtastwerten minimiert, die in dem Datenblock enthalten sind. Die Gruppierung der Teilmenge der Vielzahl von Pixelabtastwerten kann durch einen Quadrangulierungsalgorithmus durchgeführt werden. Die Gruppierung der Teilmenge der Vielzahl von Pixelabtastwerten kann durch einen Partitionierungsalgorithmus durchgeführt werden.
  • In einem anderen allgemeinen Aspekt kann ein Computergerät einen Bildschirm beinhalten, der so konfiguriert ist, dass er Bilddaten anzeigt, eine Anzeigeschnittstelle, die so konfiguriert ist, dass sie dem Bildschirm Bilddaten bereitstellt, einen GPU-Puffer, der so konfiguriert ist, dass er Datenblöcke speichert, und einen Grafikprozessor (GPU). Der GPU kann so konfiguriert sein, dass er eine Vielzahl von Pixelabtastwerten identifiziert, die in einer geschichteten Tiefenbild(LDI)-Darstellung einer Szene für die Wiedergabe in einem dreidimensionalen (3D) Bild in einem virtuellen Realitätsraum (VR) enthalten sind, eine Teilmenge der Vielzahl von Pixelabtastwerten in einen Datenblock gruppiert, wobei das Gruppieren das Extrahieren jedes Pixelabtastwertes, der in der Teilmenge der Vielzahl der Pixelabtastwerte enthalten ist, von der LDI-Darstellung der Szene für die Einbeziehung in den Datenblock auf Basis einer Fehlermetrik, die mit dem jeweiligen Pixelabtastwert verbunden ist, beinhaltet, eine Textur-Map für einen Datenblock erstellt, wobei die Textur-Map mit dem Datenblock verbunden ist, den Datenblock und die zugehörige Textur-Map im GPU-Puffer speichert und eine Wiedergabe des 3D-Bildes im VR-Raum auslöst. Die Wiedergabe kann die Rasterisierung des Datenblocks und die Anwendung der zugehörigen Textur-Map beinhalten. Die GPU kann ferner so konfiguriert sein, dass sie das wiedergegebene 3D-Bild der Anzeigeschnittstelle als Bilddaten für die Anzeige auf dem Bildschirm bereitstellt.
  • Implementierungen können eine oder mehrere der folgenden Merkmale allein oder in Kombination mit einer oder mehreren anderen Merkmalen beinhalten. Der Datenblock kann zum Beispiel durch eine planare Kachel dargestellt werden. Die Gruppierung einer Teilmenge der Vielzahl von Pixelabtastwerten in einen Datenblock kann ferner das Ermitteln beinhalten, ob die Fehlermetrik für einen Pixelabtastwert größer als ein Fehlerschwellenwert ist, die Einbeziehung des Pixelabtastwertes in die Vielzahl der Pixelabtastwerte für die Gruppierung in den Datenblock auf Basis der Ermittlung, dass die Fehlermetrik für den Pixelabtastwert nicht größer ist als der Fehlerschwellenwert, und die Nichteinbeziehung des Pixelabtastwertes in die Teilmenge der Vielzahl von Pixelabtastwerten für die Gruppierung in den Datenblock auf Basis der Ermittlung, dass die Fehlermetrik für den Pixelabtastwert größer als der Fehlerschwellenwert ist. Der Fehlerschwellenwert kann auf einer Region rund um die ursprüngliche Kameraposition basieren, bei der die LDI-Darstellung der Szene als gültig betrachtet wird. Der GPU kann ferner so konfiguriert sein, dass er Parameter optimiert, die mit dem Datenblock verbunden sind, wobei das Optimieren einen Gesamtpartitionierungsfehler für die Teilmenge der Vielzahl von Pixelabtastwerten minimiert, die in dem Datenblock enthalten sind. Der GPU kann ferner so konfiguriert sein, dass er einen Quadrangulierungsalgorithmus beim Gruppieren der Teilmenge der Vielzahl von Pixelabtastwerten in den Datenblock durchführt. Der GPU kann ferner so konfiguriert sein, dass er einen Partitionierungsalgorithmus beim Gruppieren der Teilmenge der Vielzahl von Pixelabtastwerten in den Datenblock durchführt.
  • Das Verfahren kann einen Datenblock umfassen, der Bilddaten, insbesondere LDI-Pixelabtastwerte, umfasst. Die LDI-Pixelabtastwerte können eine beliebige Anzahl von Abtastwerten auf Basis einer Reihe von Schichten von Lichtstrahlen umfassen, die von einer Kamera projiziert werden. Das Verfahren kann ferner umfassen, dass die Gruppierung der Teilmenge der Vielzahl von LDI-Pixelabtastwerten durch einen Algorithmus durchgeführt wird, insbesondere einen Quadrangulierungsalgorithmus, um eine Ebene oder eine planare Kachel zu identifizieren, die mehrere LDI-Pixelabtastwerte beinhaltet.
  • In noch einem anderen allgemeinen Aspekt sind Befehle auf einem nicht transitorischen, maschinenlesbaren Medium gespeichert. Die Befehle können, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, ein Computergerät veranlassen, eine Vielzahl von Pixelabtastwerten, die in einer geschichteten Tiefen(LDI)-Darstellung einer Szene für die Wiedergabe in einem dreidimensionalen (3D)-Bild in einem virtuellen Realitätsraum (VR) enthalten sind, durch das Computergerät zu identifizieren, eine Teilmenge der Vielzahl der Pixelabtastwerte in einen Datenblock zu gruppieren, wobei das Gruppieren das Extrahieren jedes Pixelabtastwertes, der in der Teilmenge der Vielzahl der Pixelabtastwerte enthalten ist, von der LDI-Darstellung der Szene für die Einbeziehung in den Datenblock auf Basis einer Fehlermetrik beinhaltet, die mit dem jeweiligen Pixelabtastwert verbunden ist, eine Textur-Map für einen Datenblock zu erstellen, wobei die Textur-Map mit dem Datenblock verbunden ist, den Datenblock und die zugehörige Textur-Map zu speichern, und eine Wiedergabe des 3D-Bildes im VR-Raum mithilfe des Datenblocks und der zugehörigen Textur-Map durch das Computergerät auszulösen.
  • Implementierungen können eine oder mehrere der folgenden Merkmale allein oder in Kombination mit einer oder mehreren anderen Merkmalen beinhalten. Die Gruppierung der Teilmenge der Vielzahl von Pixelabtastwerten wird zum Beispiel durch einen Quadrangulierungsalgorithmus oder einen Partitionierungsalgorithmus durchgeführt. Die Befehle, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, das Computergerät veranlassen, eine Teilmenge der Vielzahl von Pixelabtastwerten in einen Datenblock zu gruppieren, beinhalten ferner Befehle, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, das Computergerät veranlassen, einen Fehlerschwellenwert auf Basis einer Region rund um eine ursprüngliche Kameraposition zu berechnen, bei der die LDI-Darstellung der Szene als gültig betrachtet wird, und einen Pixelabtastwert in die Teilmenge der Vielzahl von Pixelabtastwerten für die Gruppierung in einen Datenblock auf Basis der Ermittlung einzubeziehen, dass die Fehlermetrik für den Pixelabtastwert größer als der Fehlerschwellenwert ist. Die Befehle veranlassen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, ferner das Computergerät, Parameter, die mit dem Datenblock verbunden sind, zu optimieren, wobei das Optimieren einen Gesamtpartitionierungsfehler für die Teilmenge der Vielzahl von Pixelabtastwerten minimiert, die in dem Datenblock enthalten sind.
  • Die Details einer oder mehrerer Implementierungen sind in den nachstehenden zugehörigen Zeichnungen und der Beschreibung dargelegt. Weitere Merkmale ergeben sich aus der Beschreibung und den Zeichnungen, sowie aus den Ansprüchen.
  • KURZE BESCHREIBUNG DER FIGUREN
  • 1A zeigt ein Diagramm, das ein mobiles Computergerät veranschaulicht, das mithilfe eines Kabels mit einem VR-Headset (schnittstellenmäßig) verbunden ist.
  • 1B zeigt ein Diagramm, das ein mobiles Computergerät veranschaulicht, das mithilfe einer drahtlosen Verbindung mit einem VR-Headset (schnittstellenmäßig) verbunden ist.
  • 1C zeigt ein Diagramm, das ein VR-Headset veranschaulicht, das ein mobiles Computergerät beinhaltet (aufnimmt, umfasst).
  • 1D zeigt ein Diagramm, das einen Benutzer darstellt, der ein VR-Headset trägt.
  • 2 zeigt ein Blockdiagramm eines exemplarischen Systems für die Erstellung und Interaktion mit einer dreidimensionalen (3D) virtuellen Realtitätsumgebung (VR).
  • 3 zeigt ein Diagramm, das Objekte veranschaulicht, die, wie durch eine Kamera in einer Position betrachtet, in einer Szene enthalten sind.
  • 4 zeigt ein Diagramm, das exemplarische planare Kacheln veranschaulicht, wobei jede planare Kachel eine Vielzahl von LDI-Pixelabtastwerten beinhaltet.
  • 5 zeigt ein Ablaufdiagramm eines Beispiels eines Quadrangulierungsalgorithmus, der verwendet werden kann, um Punkte aus einer LDI-Darstellung einer Szene für die Einbeziehung in eine oder mehreren planaren Kacheln zu identifizieren und zu extrahieren.
  • 6 zeigt ein Ablaufdiagramm eines Beispiels eines Algorithmus, der verwendet werden kann, um eine LDI-Darstellung einer Szene zu zeichnen (neu zu zeichnen), die eine oder mehrere planare Kacheln beinhaltet.
  • 7 zeigt ein Ablaufdiagramm eines Beispiels eines Verfahrens, das einen Partitionierungsalgorithmus verwenden kann, um LDI-Pixelabtastwerte, die in einer LDI-Darstellung einer Szene enthalten sind, in eine Vielzahl von Clustern zu partitionieren.
  • 8A–C zeigt ein Ablaufdiagramm eines Beispiel eines Partitionierungsalgorithmus, der verwendet werden kann, um LDI-Pixelabtastwerte, die in einer LDI-Darstellung einer Szene enthalten sind, in eine Vielzahl von Clustern zu partitionieren.
  • 9 zeigt ein Ablaufdiagramm, das ein Verfahren für die Wiedergabe einer geschichteten Tiefenbild(LDI)-Darstellung einer Szene als dreidimensionales (3D) Bild in einem virtuellen Realitätsraum (VR) veranschaulicht.
  • 10 zeigt ein Beispiel eines Computergeräts und eines mobilen Computergeräts, die zur Implementierung der hier beschriebenen Techniken verwendet werden können.
  • Gleiche Bezugszeichen in den verschiedenen Zeichnungen verweisen auf gleiche Elemente.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ein geschichtetes Tiefenbild (LDI) kann eine pixelbasierte Darstellung eines Bildes sein. Jedes Pixel, das in einer LDI-Darstellung eines Objekts enthalten ist, kann eine beliebige Anzahl von Abtastwerten beinhalten. Jeder Abtastwert kann einen Farbwert, einen Tiefenwert und einen Flächennormalenwert beinhalten. Der Flächennormalenwert kann eine Orientierung für den Abtastwert bereitstellen. Jeder Abtastwert kann ein kleines, farbiges Flächenelement im Bildraum darstellen. Da LDIs Informationen über Objekte hinter denen speichern, die für die Kamera unmittelbar sichtbar sind, ist es möglich, neue Ansichten einer Szene von Blickpunkten aus zu erzeugen, die sich vom ursprünglichen Kamerablickpunkt unterscheiden, diesem jedoch nahe sind, da Informationen über Objekte verfügbar sind, die von diesen neuen Blickpunkten aus sichtbar sind.
  • Ein LDI kann eine Anordnung von Pixeln, von einer einzigen Kameraposition oder -perspektive aus gesehen, beinhalten. Die Anordnung von Pixeln kann mehrere Pixel entlang einer Sichtlinie der Kamera von einer bestimmten Kameraposition aus beinhalten. Eine Darstellung eines LDI-Pixel kann Farbinformationen beinhalten, die Alpha-Kanal-Informationen, Tiefeninformationen (einen Abstand zwischen dem Pixel und der Kamera) und andere Attribute beinhalten, die die Wiedergabe des LDI in einem dreidimensionalen (3D) Raum unterstützen können. Die Alpha-Kanal-Informationen können zum Beispiel verwendet werden, um einen Opazitätsgrad für das Pixel zu bestimmen.
  • Eine LDI-Darstellung eines Bildes kann mehrere Schichten an jeder Pixelstelle im Bild beinhalten, wobei sich jede Schicht in einem bestimmten Abstand von einer Kamera befindet. Jede Schicht kann eine Verteilung von Pixeln beinhalten, die für das Bild repräsentativ sind. In manchen Fällen kann die Verteilung der Pixel in Schichten, die am weitesten von der Kamera entfernt sind, dazu tendieren, dürftig auszufallen. Da jedes Pixel mehrere Attributwerte (z. B. Farbe und Tiefe) aufweisen kann, kann die Verwendung einer LDI-Darstellung eines Bildes die Wiedergabe mehrerer Ansichten des Bildes an neuen Kamerapositionen oder -perspektiven ermöglichen.
  • Die Verwendung einer LDI-Darstellung eines Objekts (oder Bildes) kann eine effektive Möglichkeit sein, das Projekt als dreidimensionales (3D) Objekt in einem virtuellen Realitätsraum (VR) für die Anzeige mit sechs Freiheitsgraden (6DOF) wiederzugeben. Die LDI-Darstellung des 3D-Objekts ermöglicht die Wiedergabe des Objekts aus verschiedenen Perspektiven im VR-Raum. Jedes Pixel, das im 3D-Objekt enthalten ist, kann im 3D-Raum aus einer anderen Perspektive gezeichnet (wiedergegeben) werden, wobei das Pixel in einen neuen Blickpunkt projiziert wird. Jedes Pixel kann zum Beispiel als eine Scheibe im VR-Raum betrachtet werden. Wenn sich der Blickpunkt für das Pixel im VR-Raum ändert, kann die Scheibe von jedem neuen Blickpunkt oder jeder neuen Perspektive im VR-Raum aus betrachtet werden.
  • In einigen Implementierungen kann ein VR-Headset einen Grafikprozessor (GPU) und einen Prozessor, einen Controller und/oder eine zentrale Verarbeitungseinheit (CPU) beinhalten, die die Wiedergabe des Bildes oder Objekts in 3D-im VR-Raum durchführen können. In diesen Implementierungen kann der GPU jedoch wegen der großen Anzahl an Pixeln (z. B. Millionen von Pixeln), die im 3D-Objekt enthalten sind, und der großen Menge von Daten, die mit dem 3D-Objekt verbunden sind, Probleme bei der Wiedergabe des 3D-Objekts im VR-Raum haben. Der GPU hat möglicherweise nicht genug Bandbreite, um die verschiedenen Perspektiven des 3D-Objekts im VR-Raum für die Anzeige mit 6DOF in Echtzeit wiederzugeben. Außerdem oder alternativ kann es sein, dass die Leistung einer Hardware-Rastereinrichtung, die im GPU enthalten ist, nicht ausreicht, um die verschiedenen Perspektiven des 3D-Objekts im VR-Raum für die Anzeige mit 6DOF in Echtzeit wiederzugeben.
  • Daher besteht ein Bedarf an effizienten Systemen und Verfahren für die Echtzeit-Wiedergabe eines Objekts als 3D-Objekt im VR-Raum in Fällen, in denen die Computerressourcen begrenzt sind.
  • 1A zeigt ein Diagramm, das ein mobiles Computergerät 104 veranschaulicht, das mithilfe eines Kabels 102 mit einem VR-Headset 108 (schnittstellenmäßig) verbunden ist. Das mobile Computergerät 104 kann sich mithilfe eines oder mehrerer Hochgeschwindigkeits-Kommunikationsprotokolle, wie z. B. USB 2.0, USB 3.0 und USB 3.1, mit dem VR-Headset 108 verbinden (kommunizieren). In manchen Fällen kann sich das mobile Computergerät 104 mithilfe einer Audio/Video-Schnittstelle, wie z. B. High-Definition Multimedia Interface (HDMI), mit dem VR-Headset 108 verbinden (kommunizieren). In manchen Fällen kann sich das mobile Computergerät 104 mithilfe eines alternativen DisplayPort-Modus für eine USB-Standardschnittstelle des Typs C mit dem VR-Headset 108 verbinden (kommunizieren). Der alternative DisplayPort-Modus kann eine USB-Hochgeschwindigkeitskommunikationsschnittstelle und DisplayPort-Funktionen beinhalten.
  • Das Kabel 102 kann an beiden Enden einen geeigneten Anschluss für das Anschließen an das VR-Headset 108 und das mobile Computergerät 104 beinhalten. Das Kabel kann zum Beispiel einen Universal Serial Bus(USB)-Anschluss an beiden Enden beinhalten. Die USB-Anschlüsse können derselbe Typ von USB-Anschluss sein oder die USB-Anschlüsse können jeweils unterschiedliche Typen von USB-Anschlüssen sein. Die verschiedenen Typen von USB-Anschlüssen können u. a. USB-Anschlüsse des Typs A, USB-Anschlüsse des Typs B, Micro-USB A-Anschlüsse, Micro-USB B-Anschlüsse, Micro-USB AB-Anschlüsse, fünfpolige USB Mini-b-Anschlüsse, vierpolige USB Mini-b-Anschlüsse, USB 3.0-Anschlüsse des Typs A, USB 3.0 B-Anschlüsse des Typs B, USB 3.0 Micro B-Anschlüsse und USB-Anschlüsse des Typs C beinhalten.
  • 1B zeigt ein Diagramm, das ein mobiles Computergerät 114 veranschaulicht, das mithilfe einer drahtlosen Verbindung 112 mit einem VR-Headset 118 (schnittstellenmäßig) verbunden ist, ohne dass ein Kabel (z. B. das Kabel 102, wie in 1A dargestellt) erforderlich ist. Das mobile Computergerät 114 kann sich mit dem VR-Headset 118 mithilfe der drahtlosen Verbindung 112 durch Implementierung eines oder mehrerer Hochgeschwindigkeits-Kommunikationsprotokolle, wie z. B. WLAN, Bluetooth oder Bluetooth Low Energy (LE), verbinden (kommunizieren).
  • 1C zeigt ein Diagramm, das ein VR-Headset 128 veranschaulicht, das ein mobiles Computergerät 124 beinhaltet (aufnimmt, umfasst). In einigen Implementierungen kann das VR-Headset 128 ein entfernbares Computergerät (z. B. das mobile Computergerät 124) beinhalten. Ein mobiles Computergerät eines Benutzers (z. B. das mobile Computergerät 124) kann in das (innerhalb des) VR-Headset 128 platziert werden, wenn der Benutzer in den VR-Raum eintauchen möchte. In manchen Fällen kann das mobile Computergerät 124 auch vom VR-Headset 128 entfernt werden, z. B. wenn ein Benutzer mit dem Eintauchen in den VR-Raum fertig ist.
  • In einigen Implementierungen kann ein mobiles Computergerät (z. B. das mobile Computergerät 124) dauerhaft in einem VR-Headset (z. B. dem VR-Headset 128) enthalten (integriert, untergebracht) sein. Das mobile Computergerät 124 kann in einem Gehäuse oder Rahmen des VR-Headsets 128 integriert (untergebracht, Teil desselben) sein. In einigen Implementierungen kann ein Anzeigegerät 126, das im mobilen Computergerät 124 enthalten ist, das Anzeigegerät für das VR-Headset 128 sein. Das mobile Computergerät 124 kann die Anzeige oder den Bildschirm (z. B. Anzeigegerät 126) für das Anzeigen durch einen Benutzer, wenn dieser mit einer computergenerierten 3D-Umgebung (einem VR-Raum) interagiert, bereitstellen. In einigen Implementierungen kann das VR-Headset 128 ein getrenntes Anzeigegerät beinhalten. In diesen Implementierungen kann das mobile Computergerät 124 mit dem getrennten Anzeigegerät, das Teil des VR-Headsets 128 ist, schnittstellenmäßig verbunden sein.
  • 1D zeigt ein Diagramm, das einen Benutzer 130 zeigt, der ein VR-Headset 138 trägt. Das VR-Headset 138 kann, wie in 1A–C dargestellt, das VR-Headset 108, das VR-Headset 118 oder das VR-Headset 128 sein. Unter Bezugnahme auf 1A–C kann zum Beispiel ein mobiles Computergerät, das mit dem VR-Headset 138 verbunden und/oder in diesem enthalten ist, eine oder mehrere Anwendungen ausführen, um eine computergenerierte 3D-Umgebung (einen VR-Raum oder ein VR-Erlebnis) für den Benutzer 130 bereitzustellen, während dieser das VR-Headset 138 trägt.
  • Unter Bezugnahme auf 1A–C kann in einigen Implementierungen jedes mobile Computergerät (z. B. das mobile Computergerät 104, das mobile Computergerät 114 und das mobile Computergerät 124) eine oder mehrere Anwendungen ausführen, die einem Benutzer ein VR-Erlebnis bereitstellen können.
  • 2 zeigt ein Blockdiagramm eines exemplarischen Systems 200 für die Erstellung und Interaktion mit einer dreimensionalen (3D) virtuellen Realtitätsumgebung (VR). 2 zeigt Komponenten, die in einem exemplarischen Computergerät 224 enthalten sein können, das mit einem VR-Headset 228 schnittstellenmäßig verbunden und/oder in demselben enthalten (untergebracht, integriert) ist. Unter Bezugnahme auf 1A–C kann das Computergerät 224 das mobile Computergerät 104, das mobile Computergerät 114, und/oder das mobile Computergerät 124 sein. Das VR-Headset 228 kann das VR-Headset 108, das VR-Headset 118 oder das VR-Headset 128 sein. Das Computergerät 224 kann Schaltungen und Software (Anwendungen) beinhalten, die Bilddaten und Informationen auf einem Anzeigegerät erzeugen und bereitstellen können, das im VR-Headset 228 enthalten ist. In einigen Implementierungen, wie in 2 dargestellt, kann ein Anzeigegerät (z. B. Bildschirm 226), das im Computergerät 224 enthalten ist, das Anzeigegerät für das VR-Headset 228 sein, wenn das Computergerät 224 im VR-Headset 228 enthalten (integriert, Teil desselben) ist. In einigen Implementierungen kann ein Bildschirm, der im VR-Headset 228 enthalten ist, das Anzeigegerät für das VR-Headset 228 sein. In diesen Implementierungen kann sich das Computergerät 224 mit dem Bildschirm, der im VR-Headset 228 enthalten ist, (schnittstellenmäßig) verbinden.
  • Das Computergerät 224 beinhaltet Kommunikationsmodule 204. Die Kommunikationsmodule 204 können u. a. ein USB-Kommunikationsmodul 206, ein WLAN-Kommunikationsmodul 208, ein Bluetooth-Kommunikationsmodul 210, einen Sendeempfänger 212 und ein Ethernet-Kommunikationsmodul 214 (z. B. IEEE 802.3) beinhalten. Die Kommunikationsmodule 204 können verwendet werden, um Verbindungen und Kommunikation zwischen dem Computergerät 224 und einem oder mehreren externen Netzwerken (z. B. Netzwerk 250), Systemen (z. B. Computersystem 252) und/oder Geräten aufzubauen.
  • Außerdem oder alternativ kann das Computergerät 224 eines oder mehrere Kommunikationsmodule 204 verwenden, um die Kommunikation mit (eine Verbindung zu) einem VR-Headset aufzubauen. In einigen Implementierungen können einer oder mehrere Anschlüsse, die im Computergerät 224 enthalten sind, mit Anschlüssen, die in einem VR-Headset enthalten sind, (schnittstellenmäßig) verbunden werden. Das (schnittstellenmäßige) Verbinden des Computergeräts 224 mit einem VR-Headset kann es zum Beispiel dem Computergerät 224 ermöglichen, Bilddaten und Informationen für ein Anzeigegerät bereitzustellen, das im VR-Headset enthalten ist, wenn das Anzeigegerät nicht im Computergerät 224 enthalten ist.
  • Das Computergerät 224 kann eine zentrale Verarbeitungseinheit (CPU) 216 und einen Grafikprozessor (GPU) 218 beinhalten. Die CPU 216 kann einen oder mehrere Prozessoren beinhalten, die allgemeine Computeroperationen für das Computergerät 224 durchführen können. Die CPU 216 kann zum Beispiel eine oder mehrere Anwendungen (z. B. eine VR-Anwendung 220) auf dem Computergerät 224 ausführen (laufen lassen). Die eine oder mehreren Anwendungen können in einem Speicher (z. B. Speicher 236) enthalten (gespeichert) sein. Die VR-Anwendung 220 kann zum Beispiel eine computergenerierte 3D-Umgebung (einen VR-Raum) wiedergeben (erstellen). Das Computergerät 224 und insbesondere die CPU 216 können ein Betriebssystem (BS) 230 ausführen.
  • Der GPU 218 kann einen oder mehrere Prozessoren beinhalten, die grafikspezifische Operationen auf dem Computergerät 224, wie z. B. Zeichnen, Skalieren und Drehen, durchführen können. Der GPU 218 kann zum Beispiel eine oder mehrere Anwendungen auf dem Computergerät 224 ausführen (laufen lassen). Der GPU 218 kann Bilddaten und Informationen für die Eingabe auf einer Anzeigeschnittstelle 238 für das nachfolgende Anzeigen auf einem Anzeigegerät (z. B. dem Bildschirm 226) vorbereiten.
  • Die Anzeigeschnittstelle 238 kann Daten, die für ein 3D-Bild repräsentativ sind, für die Anzeige auf einem Anzeigegerät vorbereiten. Wie hierin beschrieben, kann die Anzeigeschnittstelle 238 die Daten, die für das 3D-Bild repräsentativ sind, dem Bildschirm 226 in Implementierungen bereitstellen, in denen der Bildschirm 226 das Anzeigegerät für ein VR-Headset ist. In Implementierungen, in denen das Anzeigegerät für das VR-Headset nicht im Computergerät 224 enthalten ist, kann die Anzeigeschnittstelle 238 die Daten, die für das 3D-Bild repräsentativ sind, für einen Bildschirm oder ein Anzeigegerät bereitstellen, der/die im VR-Headset enthalten ist, sich jedoch nicht im Computergerät 224 befindet.
  • Bei einem Frame-Puffer 232 kann es sich um ein oder mehrere Speichergeräte handeln, die ein endgültiges wiedergegebenes Bild für die Anzeige auf einem Anzeigegerät (z. B. dem Bildschirm 226) speichern. Die Anzeigeschnittstelle 238 kann auf den Frame-Puffer 232 zugreifen und schnittstellenmäßig mit diesem verbunden sein, um die Daten, die für das 3D-Bild repräsentativ sind, dem Anzeigegerät (z. B. dem Bildschirm 202) bereitzustellen.
  • Bei einem GPU-Puffer 234 kann es sich um ein oder mehrere Speichergeräte handeln, die vorberechnete, mehrere LDI-Darstellungen einer Szene (mehrere LDIs) aus verschiedenen Blickpunkten oder Perspektiven speichern können, wobei jede der mehreren LDIs für verschiedene Teile der Szene zuständig ist. Der GPU 218 kann auf den GPU-Puffer 234 zugreifen, um eine LDI-Darstellung eines Bildes abzurufen. Der GPU 218 kann die LDI-Darstellung des Bildes für die Eingabe auf der Anzeigeschnittstelle 238 für die Anzeige auf dem Bildschirm 226 als ein Bild in einem 3D-VR-Raum wiedergeben. In einigen Implementierungen kann der GPU 218 den GPU-Puffer 234 beinhalten. In einigen Implementierungen kann auf den GPU-Puffer 234 über den GPU 218 zugegriffen werden und er kann schnittstellenmäßig mit ihm verbunden sein.
  • Das System 200 beinhaltet ein Computersystem 252, das ein oder mehrere Computergeräte (z. B. Server 254) und ein oder mehrere computerlesbare Speichergeräte (z. B. ein Repositorium oder eine Datenbank 256) beinhalten kann. Der Server 254 kann einen oder mehrere Prozessoren (z. B. Server-CPU 242) und ein oder mehrere Speichergeräte (z. B. Serverspeicher 244) beinhalten. Das Computergerät 224 kann mithilfe des Netzwerks 250 mit dem Computersystem 252 (und das Computersystem 252 kann mit dem Computergerät 224) kommunizieren. Der Server 254 kann ein Server-OS 246 und eine oder mehrere Serveranwendungen, einschließlich einer LDI-Anwendung 222 und einer LDI-Optimierungsanwendung 240, ausführen.
  • Die LDI-Anwendung 222 kann zum Beispiel bei Wiedergabe eines 3D-Bildes für den VR-Raum ein LDI für die Verwendung durch die VR-Anwendung 220 erzeugen oder erstellen. Die LDI-Optimierungsanwendung 240 kann zum Beispiel einen oder mehrere Algorithmen beinhalten, die auf ein LDI angewendet werden können, um die Wiedergabe des 3D-Bildes durch die VR-Anwendung 220 im VR-Raum zu optimieren (oder zu verbessern). Die Algorithmen und Verbesserungen werden später hierin näher beschrieben. In einigen Implementierungen kann der Server 254 eine Workstation sein. In einigen Implementierungen kann das Computersystem 252 in einem Rechenzentrum enthalten sein. In einigen Implementierungen können die LDI-Anwendung 222 und/oder die LDI-Optimierungsanwendung 240 im Computergerät 224 enthalten sein.
  • 3 zeigt ein Diagramm 300, das Objekte 302a–d veranschaulicht, die, wie durch eine Kamera 306 in einer Position 308 betrachtet, in einer Szene 304 enthalten sind. Das Diagramm 300 ist eine zweidimensionale Ansicht der Szene 304. Obgleich in zwei Dimensionen beschrieben, kann die hierin enthaltene Beschreibung von 3 auf eine 3D-Szene angewendet werden.
  • Die Kamera 306 kann jede Anordnung von Lichtstrahlen 310a–f von der Position 308 aus projizieren. Jeder Lichtstrahl 310a–f kann als Sichtlinie für die Kamera 306 in der Position 308 betrachtet werden. Ein Lichtstrahl kann sich mit einem einzelnen Objekt oder mehreren Objekten schneiden. Der Lichtstrahl 310a schneidet sich zum Beispiel mit Objekt 302c an Punkt 312a und schneidet sich mit keinen anderen Objekten in seiner Sichtlinie. Lichtstrahl 310b schneidet sich mit Objekt 302a an Punkt 314a, schneidet sich mit Objekt 302c an Punkt 312b und schneidet sich mit Objekt 302d an Punkt 316. Lichtstrahl 310c schneidet sich mit Objekt 302a an Punkt 314b und schneidet sich mit Objekt 302c an Punkt 312c. Lichtstrahlen 310d–f schneiden sich mit Objekt 302a an Punkten 314c–e und schneiden sich mit Objekt 302b an Punkten 318a–c. Jeder Punkt (Punkte 312a–c, Punkte 314a–e, Punkte 316 und Punkte 318a–c) kann als Abtastwert bezeichnet werden, der in einem LDI-Pixel enthalten ist. Die Szene 304 kann als LDI dargestellt werden, das eine Anordnung von LDI-Pixeln 320a–f (LDI-Pixelanordnung 322) beinhaltet. Unter Bezugnahme auf 2 kann zum Beispiel die LDI-Anwendung 222 die LDI-Darstellung von Szene 304 erstellen (erzeugen).
  • Die Zahl der Schnittpunkte entlang jedes Lichtstrahls kann als Zahl der Schichten für den Lichtstrahl bezeichnet werden. Unter Bezugnahme auf Lichtstrahlen 310a–f können zum Beispiel Punkte 314a–e und Punkt 312a als in einer ersten Schicht des LDI (Szene 304) betrachtet werden, Punkte 312b–c und Punkte 318a–c können als in einer zweiten Schicht des LDI (Szene 304) betrachtet werden, und Punkt 316 kann als in einer dritten Schicht des LDI (Szene 304) betrachtet werden.
  • Jedes LDI-Pixel 320a–f kann eine beliebige Anzahl von Abtastwerten aufweisen. Die beliebige Anzahl von Abtastwerten kann auf der Anzahl von Schichten für einen Lichtstrahl basieren, wobei jeder Lichtstrahl von null Punkten (oder Abtastwerten) bis zu mehreren Punkten (mehrere Schichten oder Abtastwerte) bereitstellen kann. Ein LDI-Pixel kann zum Beispiel keine Abtastwerte beinhalten, wenn sich ein Lichtstrahl mit keinen Objekten schneidet. LDI-Pixel 320a beinhaltet einen einzigen Abtastwert (Punkt 312a). LDI-Pixel 320c–f beinhalten jeweils zwei Punkte (oder Abtastwerte): Punkt 314b und Punkt 312c, Punkt 314c und Punkt 318a, Punkt 314d und Punkt 318b bzw. Punkt 314e und Punkt 318c. LDI-Pixel 320b beinhaltet drei Punkte (oder Abtastwerte): Punkt 314a, Punkt 312b und Punkt 316.
  • Jeder LDI-Pixelabtastwert kann einen Farbwert beinhalten. In einigen Implementierungen kann der Farbwert ein Drei-Byte-Wert sein (z. B. ein Byte für die rote (R) Farbkomponente, ein Byte für die blaue (B) Farbkomponente und ein Byte für die grüne (G) Farbkomponente). In einigen Implementierungen kann die Farbkomponente eines Farbwertes größer als ein Byte sein (z. B. jede Farbkomponente kann ein 32-Bit-Gleitwert (z. B. ein einzelner Präzisionswert im Gleitpunktformat) sein). Jeder LDI-Pixelabtastwert kann einen Tiefenwert beinhalten. Der Tiefenwert kann zum Beispiel eine Position für den Abtastwertpunkt innerhalb des LDI (z. B. den Abstand des Punktes von der Position 308 der Kamera 306) bereitstellen. Jeder LDI-Pixelabtastwert kann einen Wert für eine Flächennormale beinhalten. In einem 3D-VR-Raum entspricht zum Beispiel eine Flächennormale zu einer Fläche an einem bestimmten Punkt einem Vektor, der zu einer Tangentenebene an diesem bestimmten Punkt rechtwinklig ist. Der Tiefenwert und die Flächennormale können eine Position und eine Ausrichtung des LDI-Pixelabtastwertes in einem 3D-VR-Raum bereitstellen. Jeder LDI-Pixelabtastwert kann einen Subpixel-Positionswert beinhalten. Die Einbeziehung eines Subpixel-Positionswertes verwandelt ein LDI effektiv in eine Perspektive-Raum-Punktwolke mit voller Präzision für die Abtastwertpositionen im 3D-Raum. Jeder LDI-Pixelabtastwert kann zum Beispiel ein farbiges, kleines Flächenelement (z. B. eine Scheibe) darstellen, die in einem 3D-VR-Raum schwebt oder hängt.
  • In einigen Implementierungen kann ein LDI durch eine große Anzahl von LDI-Pixeln dargestellt werden. Wie in 3 dargestellt, kann ein LDI (und insbesondere ein LDI-Pixel) Informationen über einige Objekte (z. B. Lichtstrahlschnittpunkte) speichern, die hinter anderen Objekten liegen, die für eine Kamera in einer bestimmten Position sofort sichtbar sind. Neue Ansichten derselben Szene von verschiedenen Blickpunkten, die ggf. in der Nähe der ursprünglichen Kameraposition und des ursprünglichen Blickpunktes liegen, können erzeugt werden, da Informationen über Objekte verfügbar sind, die von diesen neuen Blickpunkten aus sichtbar sein können. Da die LDI-Pixelanordnung 322 Tiefeninformationen für jeden LDI-Abtastwert beinhaltet, der in einem LDI-Pixel enthalten ist, kann zum Beispiel die Szene 304 von einem anderen Blickpunkt neu erstellt (neu gezeichnet, neu erzeugt) werden.
  • Es können zum Beispiel Millionen von LDI-Pixeln erforderlich sein, um ein hochwertiges (z. B. hochauflösendes) Bild in einem 3D-VR-Raum zu erzeugen. Unter Bezugnahme auf 2 werden, wenn sich die Perspektivenansicht eines Benutzers im VR-Raum ändert, die LDI-Pixel durch den GPU 218, der ein Bild für die Anzeige im VR-Raum wiedergibt, neu gezeichnet. Das Neuzeichnen einer großen Anzahl von Pixeln kann die Zeit beeinflussen, die der GPU 218 benötigt, um eine LDI-Darstellung eines Bildes wiederzugeben. Außerdem oder alternativ dazu kann die Menge des Pufferspeichers, der zum Speichern jeder der vorberechneten LDI-Darstellungen eines Bildes aus mehreren verschiedenen Blickpunkten oder Perspektiven verwendet wird, ziemlich groß sein. Die Wiedergabezeit kombiniert mit dem Bedarf für eine große Menge an Pufferspeicher kann (z. B. unter Bezugnahme auf 1A–D des VR-Headsets 138, des VR-Headsets 108, des VR-Headsets 118 und/oder des VR-Headsets 128) die Leistung und Kosten des VR-Headsets negativ beeinflussen.
  • Außerdem kann ein GPU (z. B. der GPU 218) bei der parallelen Verarbeitung und Manipulation von Bilddatenblöcken effizient sein, im Gegensatz zur seriellen Verarbeitung von Millionen individueller Pixel von Bilddaten. In einigen Implementierungen kann es daher nützlich sein, mehrere LDI-Pixel in einen einzelnen Datenblock für eine verbesserte und schnellere Verarbeitung durch den GPU (z. B. den GPU 218) zu kombinieren. Eine LDI-Darstellung eines Bildes kann zum Beispiel in mehrere Datenblöcke aufgeteilt werden, indem LDI-Pixel in einer Gruppe kombiniert werden, die durch einen einzigen Datenblock dargestellt werden kann. Die Anzahl der Datenblöcke, die ggf. ein LDI darstellt, kann ausgewählt werden, um eine genaue Darstellung einer Szene bereitzustellen und gleichzeitig die Menge von Daten zu reduzieren, die für die LDI-Darstellung des Bildes erforderlich ist. Die Datenblöcke können das LDI, das der GPU 218 effizient verarbeiten kann, auf kompakte Weise darstellen.
  • Bildbasierte Prozesse und Verfahren können verwendet werden, um eine Szene für die Wiedergabe (das Zeichnen) in Echtzeit in 3D-in einem VR-Raum zu vereinfachen. Eine oder mehrere Softwareanwendungen, die auf einer Workstation, einem Computersystem oder einem oder mehreren Servern laufen (ausgeführt werden) und in einem Rechenzentrum enthalten sind, können eingegebene Szeneninformationen und Daten verarbeiten, die komplex sein können, und dabei eine weniger komplexe, vereinfachte Version der Szene für die Wiedergabe (das Zeichnen) in Echtzeit in 3D-in einem VR-Raum erzeugen. In manchen Fällen kann die vereinfachte Version der Szene für die Wiedergabe auf und das Anzeigen in einer Headbox oder einem VR-Headset gültig sein. Die Szene kann beim Betrachten in der Headbox gut oder akzeptabel aussehen. Unter Bezugnahme auf 2 können zum Beispiel die LDI-Anwendung 222 und die LDI-Optimierungsanwendung 240 die eingegebenen Szeneninformationen verarbeiten und die vereinfachte Version der Szene für die Wiedergabe (das Zeichnen) in Echtzeit in 3D-in einem VR-Raum durch die VR-Anwendung 220 erzeugen, die im Computergerät 224 enthalten ist.
  • Die LDI-Anwendung 222 kann zum Beispiel Bilder einer Szene von verschiedenen Positionen in einem Sichtfeld in einem VR-Headset (einer Headbox) (z. B. dem VR-Headset 228) erzeugen. Jedes Szenenbild kann eine Vielzahl von Pixelabtastwerten oder Punkten beinhalten, die zugehörige Farbinformationen, Tiefeninformationen und einen Wert für die Flächennormale beinhalten. Jedes Szenenbild kann in eine Datenstruktur (z. B. einem LDI) zusammengesetzt werden, die in einer Darstellung einer vereinfachten Version der Szene für die Wiedergabe (das Zeichnen) in Echtzeit in 3D-in einem VR-Raum durch die VR-Anwendung 220 verwendet werden kann. Die LDI-Optimierungsanwendung 240 kann zum Beispiel für jeden Pixelabtastwert ein Polygon als Annäherung für jeden Pixelabtastwert erstellen, der in der Datenstruktur (z. B. dem LDI) enthalten ist. In einigen Implementierungen kann, wie hierin näher beschrieben, ein Quadrangulierungsalgorithmus die Polygonannäherungen erstellen. In einigen Implementierungen kann, wie hierin näher beschrieben, ein iterativer Partitionierungsalgorithmusdie Polygonannäherungen erstellen. Die LDI-Optimierungsanwendung 240 kann eine Textur-Map für jedes Polygon erstellen. Jedes Polygon und die zugehörige Textur-Map können kombiniert werden, um ein Modell (vereinfachte Darstellung) der Szene für die Wiedergabe (das Zeichnen) in Echtzeit in 3D-in einem VR-Raum durch die VR-Anwendung 220 zu bilden, die im Computergerät 224 enthalten ist. Der Algorithmus, der von der VR-Anwendung 220 ausgeführt wird, wenn das Modell der Szene wiedergegeben wird, kann auf dem Algorithmus basieren, der zum Erstellen der Polygondarstellungen verwendet wurde.
  • Unter Bezugnahme auf 2 kann ein GPU (z. B. der GPU 218) verwendet werden, um eine LDI-Darstellung eines Bildes (eine Szene) für die Ausgabe auf einem Anzeigegerät wiederzugeben (zu erzeugen, zu zeichnen), das in einem VR-Headset enthalten ist. Der GPU (z. B. der GPU 218) kann mehrere vorberechnete LDI-Darstellungen eines Bildes (mehrere LDIs jeweils für verschiedene Teile eines Bildes oder einer Szene) von verschiedenen Blickpunkten oder Perspektiven wiedergeben. Die gespeicherten LDI-Darstellungen des Bildes können für die Ausgabe auf dem Anzeigegerät gedacht sein. Das Anzeigegerät kann dann entsprechende LDI-Darstellungen des Bildes im VR-Raum auf Basis eines entsprechenden Blickpunktes oder einer bestimmten Perspektive anzeigen.
  • Eine LDI-Darstellung eines Bildes (einer Szene) kann eine große Anzahl an Pixeln oder Scheiben beinhalten, die neu gezeichnet werden, wenn sich die Perspektive, aus der sie betrachtet werden, im VR-Raum ändert. Die große Anzahl von Pixeln und Scheiben und ihre zugehörigen Daten können die Zeit beeinflussen, die der GPU (z. B. der GPU 218) benötigt, um eine LDI-Darstellung in einem Bild wiederzugeben, sowie die Menge des Speichers (z. B. GPU-Puffer 234), der verwendet wird, um die vorberechneten mehreren LDI-Darstellungen des Bildes aus verschiedenen Blickpunkten oder Perspektiven zu speichern.
  • Ein GPU (z. B. der GPU 218) kann bei der Verarbeitung von Textur-gemappten Polygonen im Gegensatz zu individuellen Punkten effizient sein. In einigen Implementierungen können mehrere Pixel oder Scheiben in ein Textur-gemapptes Polygon für die Verarbeitung durch den GPU (z. B. den GPU 218) kombiniert werden. Die Aufteilung einer LDI-Darstellung eines Bildes in mehrere Textur-gemappte Polygone kann die Zeitdauer verringern, die der GPU (z. B. der GPU 218) zum Verarbeiten der Bilddaten benötigt. Die Anzahl der Textur-gemappten Polyogne kann ausgewählt werden, um eine genaue Darstellung eines Bildes bereitzustellen und gleichzeitig die Menge von Daten zu reduzieren, die für die LDI-Darstellung des Bildes erforderlich sind. Die Anzahl der Textur-gemappten Polygone kann das LDI auf effizientere Weise darstellen.
  • In einigen Implementierungen kann ein Quadrangulierungsalgorithmus eine LDI-Pixeldarstellung eines Bildes als Eingabe nehmen. Der Quadrangulierungsalgorithmus kann eine Ebene (eine planare Kachel in einem 3D-Raum) identifizieren, die mehrere LDI-Pixelabtastwerte beinhaltet. Die identifizierten mehreren LDI-Pixelabtastwerte können in einer Gruppe enthalten sein. Die Gruppe der LDI-Pixelabtastwerte in der Ebene (die planare Kachel in einem 3D-Raum) kann ein Viereck (oder ein Polygon) bilden. Der Quadrangulierungsalgorithmus kann insbesondere eine Gruppe von LDI-Pixelabtastwerten, die in einer Ebene (oder einer planaren Kachel) enthalten sind, in ein Textur-gemapptes Viereck (oder ein Textur-gemapptes Polygon) umwandeln.
  • Unter Bezugnahme auf 2 kann der Quadrangulierungsalgorithmus Teil der LDI-Optimierungsanwendung 240 sein, die im Computergerät 200 enthalten ist. Der Quadrangulierungsalgorithmus kann mehrere Textur-gemappte Vierecke erzeugen, die zum Beispiel im GPU-Puffer 234 gespeichert werden können. Jedes Textur-gemappte Viereck kann eine Textur-Map beinhalten, die auf eine Fläche des Vierecks angewandt (oder abgebildet) werden kann, wenn das Viereck als Teil des Bildes in einem 3D-VR-Raum neu gezeichnet wird. Das Textur-Mapping der Gruppe von LDI-Pixelabtastwerten, die im Viereck enthalten sind, kann Detail, Flächentextur und/oder Farbe zur Ebene (der planaren Kachel) im 3D-VR-Raum hinzufügen.
  • Außerdem kann der Quadrangulierungsalgorithmus einen oder mehrere LDI-Pixelabtastwerte im Bild identifizieren, die in keiner Ebene enthalten sind und daher nicht mit irgendwelchen anderen LDI-Pixeln gruppiert werden. Diese LDI-Pixelabtastwerte können als individuelle LDI-Pixel (oder Punkte) im GPU-Puffer 234 zusammen mit den Textur-gemappten Vierecken gespeichert werden. Ein LDI, das zwei Millionen LDI-Pixelabtastwerte beinhaltet (durch diese dargestellt wird), kann zum Beispiel in 50.000 Textur gemappte Vierecke und 50.000 LDI-Pixelabtastwerte umgewandelt werden. Die Darstellung eines LDI kann viel weniger individuelle LDI-Pixelabtastwerte beinhalten, was zu einer viel effizienteren Verarbeitung durch einen GPU (z. B. den GPU 218) führt. Der GPU 218 kann ein Textur-gemapptes Objekt (z. B. ein Viereck oder ein Polygon) effizienter in Echtzeit in einem VR-Raum wiedergeben als eine große Anzahl individueller LDI-Pixel. Die Verwendung eines Quadrangulierungsalgorithmus kann die Anzahl individueller LDI-Pixel verringern, die der GPU 218 in Echtzeit wiedergeben muss, um die hohe Framerate sicherzustellen, die erforderlich ist, um ein Bild im VR-Raum neu zu zeichnen, wenn sich eine Perspektive eines Benutzers im VR-Raum ändert.
  • 4 zeigt ein Diagramm 400, das exemplarische planare Kacheln veranschaulicht, wobei jede planare Kachel eine Vielzahl von LDI-Pixelabtastwerten beinhaltet. Das Diagramm 400 zeigt eine zweidimensionale Ansicht auf Basis der Szene 304, die in 3 dargestellt ist. Obgleich in zwei Dimensionen beschrieben, kann die hierin enthaltene Beschreibung von 4 auf eine 3D-Szene angewandt werden.
  • Unter Bezugnahme auf 3 kann zum Beispiel das Objekt 302a eine erste Farbe aufweisen, das Objekt 302b und das Objekt 302c können eine zweite Farbe aufweisen und das Objekt 302d kann eine dritte Farbe aufweisen. Eine planare Kachel 402 kann von den Punkten 314a–e erstellt werden. In dem in 4 dargestellten Beispiel weisen die Punkte 314a–e alle dieselbe Farbe (eine erste Farbe) auf. In dem in 4 dargestellten Beispiel weisen die Punkte 312a–c und die Punkte 318a–c alle dieselbe Farbe (eine zweite Farbe) auf. In einigen Implementierungen kann es sein, dass die Farbe in einer planaren Kachel keine einheitliche Farbe aufweist (z. B. weisen die Punkte, die in einer planaren Kachel enthalten sind, möglicherweise nicht dieselbe Farbe auf, oder die Punkte, die in einer planaren Kachel enthalten sind, sind möglicherweise nicht einheitlich). Die in einer planaren Kachel enthaltenen Punkte befinden sich in derselben Ebene.
  • Ein Quadrangulierungsalgorithmus kann zum Beispiel die Punkte 314a–e identifizieren, die LDI-Pixelabtastwerte für die LDI-Pixelanordnung 322 sind, und die Punkte 314a–e aus einer LDI-Darstellung der Szene 304 für die Einbeziehung in die planare Kachel 402 extrahieren. In dem in 4 dargestellten Beispiel kann der Quadrangulierungsalgorithmus ein Textur-gemapptes Viereck erstellen, das eine Textur-Map in der ersten Farbe beinhaltet. In Implementierungen, in denen die Farbe einer planaren Kachel nicht einheitlich ist, kann der Quadrangulierungsalgorithmus ein Textur-gemapptes Viereck erstellen, das eine Textur-Map beinhaltet, in der jedes Pixel, das in der Textur-Map enthalten ist, eine andere Farbe aufweist. Der Quadrangulierungsalgorithmus kann ein transparentes Pixel 406 in der Textur-Map für die planare Kachel 402 beinhalten. Das transparente Pixel 406 kann ein Loch (den Mangel an einem LDI-Pixelabtastwert) in der planaren Kachel 402 in diesem Punkt im LDI-Bild bewahren.
  • Eine planare Kachel 404 kann von den Punkten 312a–c und den Punkten 318a–c erstellt werden, die alle dieselbe Farbe (eine zweite Farbe) aufweisen. Der Quadrangulierungsalgorithmus kann zum Beispiel die Punkte 312a–c und die Punkte 318a–e identifizieren, die LDI-Pixelabtastwerte für die LDI-Pixelanordnung 322 sind, und die Punkte 312a–c und die Punkte 318a–c aus einer LDI-Darstellung der Szene 304 für die Einbeziehung in die planare Kachel 404 extrahieren. In dem in 4 dargestellten Beispiel kann der Quadrangulierungsalgorithmus ein Textur-gemapptes Viereck erstellen, das eine Textur-Map in der zweiten Farbe beinhaltet. In Implementierungen, in denen die Farbe einer planaren Kachel nicht einheitlich ist, kann der Quadrangulierungsalgorithmus ein Textur-gemapptes Viereck erstellen, das eine Textur-Map beinhaltet, in der jedes Pixel, das in der Textur-Map enthalten ist, eine andere Farbe aufweist.
  • Der Quadrangulierungsalgorithmus kann zum Beispiel den Punkt 316 aufgrund eines Mangels an Nähe zu anderen Punkten mit der dritten Farbe, die der Quadrangulierungsalgorithmus in eine planare Kachel gruppieren könnte, als individuellen Punkt identifizieren.
  • Wie unter Bezugnahme auf 2 ersichtlich, fährt der Quadrangulierungsalgorithmus mit dem Identifizieren und Extrahieren von Punkten aus der LDI-Darstellung einer Szene fort und erstellt zusätzliche planare Kacheln. Außerdem kann, während der Quadrangulierungsalgorithmus planare Kacheln erstellt, dieser auch individuelle Punkte identifizieren, die möglicherweise nicht in einer planaren Kachel enthalten sind. Die planaren Kacheln und die identifizierten individuellen Punkte können im GPU-Puffer 234 für die spätere Wiedergabe durch den GPU 218 und die VR-Anwendung 220 für die Anzeige auf dem Bildschirm 202 mithilfe der Anzeigeschnittstelle 238 gespeichert werden.
  • Ein Quadrangulierungsverfahren (oder -algorithmus) kann eines oder mehrere Kriterien verwenden, um zu bestimmen, wie LDI-Pixelabtastwerte gruppiert werden, die in einer bestimmten Ebene in einem einzigen Datenblock enthalten sind. Die Kriterien können zum Beispiel das Gruppieren von LDI-Pixelabtastwerten beinhalten, die sich in einer bestimmten Nähe zueinander in einem Datenblock befinden, der durch eine bestimmte Struktur dargestellt wird. Eine Gruppe von LDI-Pixelabtastwerten kann zum Beispiel in einer einzigen Ebene enthalten sein. Pixel, die in ein Quadrat von 16 Pixeln × 16 Pixeln fallen, das in der Ebene enthalten ist, können als Datenblock betrachtet werden. Mehrere Quadrate von 16 Pixeln × 16 Pixeln können Kacheln bilden, die die Ebene darstellen können. Daher kann der Quadrangulierungsalgorithmus eine Kachelstruktur verwenden, die die LDI-Pixelabtastwerte in einer Ebene in Kacheln von 16 Pixeln × 16 Pixeln gruppiert.
  • Ein Quadrangulierungsalgorithmus kann bei jeder Ebene der LDI-Darstellung der Szene implementiert werden. Der Quadrangulierungsalgorithmus kann Gruppen von LDI-Pixelabtastwerten extrahieren, die in derselben Ebene enthalten sind, und ein Textur-gemapptes Viereck für die Punkte erstellen. In vielen Fällen kann eine Ebene der LDI-Darstellung der Szene Pixelabtastwerte aus verschiedenen Schichten des LDI beinhalten.
  • Der Quadrangulierungsalgorithmus kann ein oder mehrere Kriterien verwenden, um zu bestimmen, wie die LDI-Pixelabtastwerte in der Ebene gruppiert werden. In einer ersten Implementierung kann der Quadrangulierungsalgorithmus für jede Ebene eine Kachelstruktur verwenden und dabei die LDI-Pixelabtastwerte in der Ebene zum Beispiel in Kacheln von 16 Pixeln × 16 Pixeln gruppieren. Der Quadrangulierungsalgorithmus kann Farb-Textur-Mapping für jede Gruppe von LDI-Pixelabtastwerten implementieren und dadurch ein Textur-gemapptes Viereck für die Gruppe der LDI-Pixelabtastwerte erstellen.
  • 5 zeigt ein Ablaufdiagramm eines Beispiels eines Quadrangulierungsalgorithmus 500, der verwendet werden kann, um Punkte aus einer LDI-Darstellung einer Szene für die Einbeziehung in eine oder mehrere planare Kacheln zu identifizieren und zu extrahieren. In einigen Implementierungen können die hierin beschriebenen Systeme, Verfahren, Algorithmen und Prozesse den Algorithmus 500 implementieren. Der Algorithmus 500 kann zum Beispiel unter Bezugnahme auf 1A–D, 2, 3 und 4 beschrieben werden. Wie unter Bezugnahme auf 2 ersichtlich, kann der Algorithmus 500 insbesondere durch die LDI-Optimierungsanwendung 240 durchgeführt (laufen gelassen, ausgeführt) werden.
  • Eine LDI-Darstellung einer Szene (z. B. ein Roh-LDI) wird in eine bestimmte Anzahl von Regionen (z. B. Bereiche) (z. B. Anzahl x der Regionen gleicher Größe (Block 502) geteilt (aufgeteilt). Für jeden LDI-Pixelabtastwert (z. B. Anzahl y der LDI-Pixelabtastwerte, wobei y gleich einer Gesamtzahl der LDI-Pixelabtastwerte im Roh-LDI ist) (Block 504) wird eine Region identifiziert, die dem LDI-Pixelabtastwert am nächsten liegt (Block 506), und der LDI-Pixelabtastwert ist in der identifizierten Region enthalten (Block 508). Nach Abschluss ist jeder LDI-Pixelabtastwert in einer Region enthalten. Die Auswahl der bestimmten Anzahl von Regionen kann auf einer optimalen Anzahl an Vierecken basieren, die ein GPU in Echtzeit in einem 3D-VR-Raum effizient wiedergeben kann. Die Auswahl der Größe einer Region kann auf einer Auflösung basieren, die für die Wiedergabe von Bildern (oder Szenen) im 3D-VR-Raum gewünscht wird. Außerdem kann eine Anzahl von LDI-Pixelabtastwerten, die für eine Szene gesammelt (erhalten) werden können, ebenfalls berücksichtigt werden.
  • In einigen Implementierungen kann jede Region eine andere Größe aufweisen. Eine Region, die sich in einem bestimmten Teil einer Szene (z. B. in der Mitte) befindet, kann zum Beispiel kleiner sein als eine Region, die sich in einem anderen Teil der Szene (z. B. an den Rändern) befindet.
  • Für jede Region (z. B. Anzahl x der Regionen) (Block 510) und für jeden LDI-Pixelabtastwert, der in der Region enthalten ist (z. B. wobei z gleich einer Anzahl der LDI-Pixelabtastwerte ist, die in einer Region enthalten sind) (Block 512), wird eine planare Kandidatenkachel für einen bestimmten LDI-Pixelabtastwert erstellt, der in den LDI-Pixelabtastwerten enthalten ist, die in einer bestimmten Region enthalten sind (Block 514). Die planare Kandidatenkachel wird auf Basis eines Tiefenwertes, der mit einem bestimmten LDI-Pixelabtastwert verbunden ist, und auf Basis eines Wertes für eine Flächennormale, die mit dem bestimmten LDI-Pixelabtastwert verbunden ist, erstellt. Sobald eine planare Kandidatenkachel für die bestimmte Region erstellt wird, wird eine Anzahl von LDI-Pixelabtastwerten, w, identifiziert. Die identifizierten LDI-Pixelabtastwerte sind LDI-Pixelabtastwerte in der bestimmten Region, die der planaren Kandidatenkachel, die sich innerhalb einer Fehlermetrik befindet, am nächsten sind (Block 516). Es wird dann ermittelt, ob die Anzahl der identifizierten LDI-Pixelabtastwerte, w, größer als eine Schwellenwertanzahl von Pixelabtastwerten ist (Block 518).
  • Wenn die Anzahl der identifizierten LDI-Pixelabtastwerte, w, größer als die Schwellenwertanzahl der Pixelabtastwerte ist, wird eine planare Kachel für die bestimmte Region, die den identifizierten LDI-Pixelabtastwert beinhaltet, erstellt und gespeichert (Block 520). Die planare Kandidatenkachel wird als planare Kachel für die Verwendung bei der Darstellung des LDI verwendet. Die planare Kachel kann zum Beispiel im GPU-Puffer 234 gespeichert werden. Außerdem wird ein Wert für den Ursprung der planaren Kachel in der LDI-Darstellung der Szene in Verbindung mit der planaren Kachel gespeichert. Außerdem wird ein Wert für eine Größe der planaren Kachel (z. B. kann die Größe einer planaren Kachel 16 Punkte mal 16 Punkte sein) in Verbindung mit der planaren Kachel gespeichert. Außerdem wird ein Wert für eine Tiefe, die mit jedem Punkt verbunden ist, der sich an jeder Ecke der planare Kachel befindet, in Verbindung mit der planaren Kachel gespeichert. Der Wert für die Tiefe, die mit jedem Eckpunkt verbunden ist, kann zum Beispiel ein Abstand zwischen dem Punkt und einer Kamera oder einem Blickpunkt sein.
  • Die mit jedem der identifizierten LDI-Pixelabtastwerte verbundenen Farben werden in eine Textur-Map für die planare Kachel kopiert (Block 522). Jeder der identifizierten LDI-Pixelabtastwerte wird aus dem LDI-Pixelabtastwert entfernt, der in dem Roh-LDI enthalten ist (Block 524).
  • Wenn die Anzahl der identifizierten LDI-Pixelabtastwerte, w, nicht größer als die Schwellenwertanzahl der Pixelabtastwerte ist, wird eine planare Kandidatenkachel für einen nächsten LDI-Pixelabtastwert erstellt, der in den LDI-Pixelabtastwerten enthalten ist, die in der bestimmten Region enthalten sind (Block 526 bis Block 514).
  • Sobald jeder LDI-Pixelabtastwert in jeder Region berücksichtigt wurde, bleibt eine Anzahl von planaren Kacheln übrig, die gleich oder kleiner als die Anzahl der Regionen ist, die in der Szene enthalten sind (z. B. Anzahl x der Regionen), und jegliche LDI-Pixelabtastwerte, die nicht in einer planaren Kachel enthalten waren. Sobald jeder LDI-Pixelabtastwert in jeder Region berücksichtigt wurde, werden Textur-Maps für die erstellten planaren Kacheln in einen Textur-Atlas für die Szene gepackt (Block 528). Der Textur-Atlas kann zum Beispiel im GPU-Puffer 234 in Verbindung mit der planaren Kacheldarstellung der LDI gespeichert werden. LDI-Pixelabtastwerte, die in keiner der erstellten planaren Kacheln enthalten sind, werden als Roh-LDI-Pixelabtastwerte für die Szene identifiziert (Block 530). Die LDI-Pixelabtastwerte werden zum Beispiel im GPU-Puffer 234 in Verbindung mit der planaren Kacheldarstellung des LDI gespeichert.
  • In einigen Implementierungen kann die Schwellenwertanzahl der LDI-Pixelabtastwerte auf Basis einer gewünschten Genauigkeit der Darstellung der Szene basieren, wenn die planaren Kacheln zum Neuzeichnen der Szene verwendet werden. Eine Schwellenwertanzahl der LDI-Pixelabtastwerte kann zum Beispiel bestimmt werden, um eine rissfreie Wiedergabe der Szene zu garantieren. Beim Zeichnen (Neuzeichnen) der Szene sollte die Platzierung und Neuzeichnung der planaren Kacheln in der LDI-Darstellung der Szene so sein, dass, wenn jede planare Kachel als zwei Dreiecke gezeichnet wird, die Scheitelpunkte der Dreiecke an den LDI-Pixelabtastwertgrenzen im Raum der LDI-Darstellung der Szene ausgerichtet sein sollten. Ein Benutzer, der die neu gezeichnete Szene betrachtet, könnte jede Falschausrichtung als „Riss“ in der Szene betrachten. Außerdem oder alternativ kann die Schwellenwertanzahl der LDI-Pixelabtastwerte auf Basis einer gewünschten oder Zielmenge von Daten bestimmt werden, die in einem Puffer (z. B. dem GPU-Puffer 234, wie in 2 dargestellt) gespeichert werden können.
  • In einigen Implementierungen kann eine Fehlermetrik eine Grenze bereitstellen, innerhalb welcher erstellte planare Kacheln einbezogen werden sollen. Wenn ein Benutzer, der in einem VR-Raum eingetaucht ist, eine Ansicht oder eine Perspektive einer 3D-Szene im VR-Raum wechselt, kann ein Quadrangulierungsalgorithmus eine LDI-Darstellung der Szene effizient verarbeiten, um die Perspektiven der 3D-Szene in Echtzeit im VR-Raum innerhalb einer Fehlermetrik einer Headbox wiederzugeben. Eine Headbox kann zum Beispiel eine Region rund um eine ursprüngliche Kameraposition (z. B. die Position 308 der Kamera 306, wie in 3 dargestellt) sein, wo eine LDI-Darstellung einer Szene als gültig betrachtet werden kann. Es kann davon ausgegangen werden, dass der Betrachter der Szene im VR-Raum sich nie aus der Headbox heraus bewegt. Daher wird, wenn die projizierte Stelle eines LDI-Pixelabtastwertes in einer planaren Kachel im Vergleich zur ursprünglichen Stelle des LDI-Pixelabtastwertes über einem bestimmten Schwellenwert liegt, der LDI-Pixelabtastwert nicht in die planare Kachel einbezogen.
  • Beim Zeichnen (Neuzeichnen) einer LDI-Darstellung einer Szene kann ein GPU (z. B. GPU 218, wie in 2 dargestellt) jede planare Kachel rasterisieren und eine Farb-Textur-Map, die im Textur-Atlas enthalten ist, auf jede rasterisierte planare Kachel anwenden. Dies führt zu einer verringerten Rechenkomplexität beim Zeichnen einer LDI-Darstellung einer Szene in einem 3D-VR-Raum in Echtzeit.
  • 6 zeigt ein Ablaufdiagramm eines Beispiels eines Algorithmus 600, der verwendet werden kann, um eine LDI-Darstellung einer Szene zu zeichnen (neu zu zeichnen), die eine oder mehrere planare Kacheln beinhaltet. Der Algorithmus 600 kann verwendet werden, um eine LDI-Darstellung einer Szene, die mithilfe eines Partitionierungsalgorithmus 500 (wie unter Bezugnahme auf 5 beschrieben) oder eines Partitionierungsalgorithmus 800 (wie unter Bezugnahme auf 8A–C beschrieben) partitioniert wurde, zu zeichnen (neu zu zeichnen). In einigen Implementierungen können die hierin beschriebenen Systeme, Verfahren, Algorithmen und Prozesse den Algorithmus 600 implementieren. Der Algorithmus 600 kann zum Beispiel unter Bezugnahme auf 1A–D, 2, 3 und 4 beschrieben werden. Unter Bezugnahme auf 2 kann der Algorithmus 600 insbesondere durch die LDI-Optimierungsanwendung 240 durchgeführt werden.
  • Für jede planare Kachel (z. B. Anzahl v der planaren Kacheln) (Block 602), kann eine 3D-Position jedes der Scheitelpunkte von zwei Dreiecken, die die planare Kachel in der LDI-Darstellung der Szene darstellen, berechnet werden (Block 604). Die 3D-Positionen können mithilfe von Werten berechnet werden, die in Verbindung mit der planaren Kachel gespeichert sind. Die 3D-Positionen können mithilfe des Wertes für den Ursprung der planaren Kachel in der LDI-Darstellung der Szene, des Wertes für die Größe der planaren Kachel und des Wertes für die Tiefe, die mit jedem Punkt verbunden ist, der sich an jeder Ecke der planaren Kachel befindet, berechnet werden. Außerdem können die 3D-Positionen mithilfe einer Projektionsmatrix für die LDI-Darstellung der Szene berechnet werden. Die Projektionsmatrix kann jeden der Scheitelpunkte der zwei Dreiecke, die die planare Kachel in der LDI-Darstellung der Szene darstellt, in den 3D-VR-Raum projizieren, der die LDI-Darstellung der Szene beinhaltet.
  • Die planare Kachel kann als zwei Dreiecke mit den Scheitelpunkten jedes Dreiecks an den LDI-Pixelabtastwertgrenzen in der LDI-Darstellung der Szene ausgerichtet gezeichnet werden (Block 606). Eine Textur-Map für die planare Kachel wird aus dem Textur-Atlas für die Szene geholt (erhalten, aufgerufen, abgerufen) (Block 608). Die Textur-Map wird auf die planare Kachel (Block 610) angewandt.
  • Sobald jede planare Kachel gezeichnet wurde, wird für jeden LDI-Pixelabtastwert, der mit der planaren Kacheldarstellung der Szene verbunden ist, die nicht in einer planaren Kachel enthalten war (Block 612), eine Position des LDI-Pixelabtastwertes in der LDI-Darstellung der Szene berechnet (Block 614). Der LDI-Pixelabtastwert wird berechnet (Block 616). Sobald jeder LDI-Pixelabtastwert gezeichnet wurde, ist die Zeichnung (Neuzeichnung) der LDI-Darstellung der Szene im 3D-VR-Raum abgeschlossen.
  • Der Algorithmus 600 kann ein zweistufiger Algorithmus (z. B. ein Soft-z-Algorithmus) sein. Ein zweistufiger Algorithmus kann beim Neuzeichnen der LDI-Darstellung der Szene im 3D-VR-Raum die Mischung der planaren Kacheln und LDI-Abtastwertpunkte erkennen.
  • In einigen Implementierungen kann ein iterativer Partitionierungsalgorithmus nach dem Zufallsprinzip eine Vielzahl von LDI-Pixelabtastwerten auswählen. Der Algorithmus kann die nach dem Zufallsprinzp ausgewählte Vielzahl von LDI-Pixelabtastwerten probeweise als Ebene betrachten. Der iterative Partitionierungsalgorithmus kann zum Beispiel einen bestimmten LDI-Pixelabtastwert, der in der Vielzahl von LDI-Pixelabtastwerten enthalten ist, auswählen. Der iterative Partitionierungsalgorithmus kann zu Beispiel einen LDI-Pixelabtastwert, der sich in einem Zentrum der Vielzahl von LDI-Pixelabtastwerten befindet, auswählen. Der iterative Partitionierungsalgorithmus kann zum Beispiel einen LDI-Pixelabtastwert auswählen, der als eine Norm der Vielzahl von Pixeln betrachtet wird. Der iterative Partitionierungsalgorithmus kann LDI-Pixelabtastwerte in einem Bereich oder einer Nachbarschaft rund um den ausgewählten LDI-Pixelabtastwert suchen (und identifizieren), wenn dieser eine Ebene festlegt oder bildet.
  • In einigen Implementierungen können Kriterien für einen LDI-Pixelabtastwert, der in einer umgebenden Nachbarschaft für den ausgewählten LDI-Pixelabtastwert einbezogen werden soll, vorher bestimmt werden. Für einen LDI-Pixelabtastwert, der in eine Nachbarschaft rund um den ausgewählten LDI-Pixelabtastwert einbezogen oder als Teil davon betrachtet werden soll, kann es zum Beispiel sein, dass sich der LDI-Pixelabtastwert innerhalb eines bestimmten Fehlerschwellenwertes befindet (z. B. je weiter weg vom ausgewählten LDI-Pixelabtastwert, desto größer ist ein Fehler, der mit einem bestimmten LDI-Pixelabtastwert verbunden ist). Der Fehlerschwellenwert kann so eingestellt werden, dass beliebig große Ebenen gebildet werden können, die verwendet werden können, um die 3D-Szene in Echtzeit im VR-Raum wiederzugeben. Außerdem kann die iterative Natur des Algorithmus Ebenen zum Beispiel innerhalb einer vorher festgelegten maximalen Anzahl von Ebenen neu anpassen. Die Neuanpassung der Ebenen kann eine optimale Passgenauigkeit oder einen besten Kandidaten für einen bestimmten Satz von Pixelabtastwerten bestimmen.
  • Im Gegensatz zu einem Quadrangulierungsalgorithmus kann ein Partitionierungsalgorithmus LDI-Pixelabtastwerte, die in einer LDI-Darstellung einer Szene enthalten sind, in eine oder mehrere Partitionen clustern (sammeln, gruppieren), sodass keine LDI-Pixelabtastwerte unberücksichtigt bleiben. Wie beim Quadrangulierungsalgorithmus kann der Partitionierungsalgorithmus als Teil einer größeren Bildverarbeitungspipeline verwendet werden, die eingegebene Szenen(Bild-)Informationen und Daten (z. B. eine LDI-Darstellung der Szene) in Partitionen verarbeiten kann, die jeweils zum Beispiel mithilfe von RGBA-Texturen (rote, grüne, blaue Alpha-Texturen, wobei alpha ein Opazitätskanal ist) in ein Textur-gemapptes Polygon verwandelt werden.
  • 7 zeigt ein Ablaufdiagramm eines Beispiels eines Verfahrens 700, das einen Partitionierungsalgorithmus 500 (wie unter Bezugnahme auf 5 beschrieben) oder einen Partitionierungsalgorithmus 800 (wie unter Bezugnahme auf 8A–C beschrieben) verwenden kann, um LDI-Pixelabtastwerte, die in einer LDI-Darstellung einer Szene enthalten sind, in eine Vielzahl von Clustern oder Partitionen zu partitionieren. Jedes Cluster kann als Datenblock betrachtet werden. In einigen Implementierungen können die hierin beschriebenen Systeme, Verfahren und Prozesse das Verfahren 700 implementieren. Das Verfahren 700 kann zum Beispiel unter Bezugnahme auf 1A–D, 2, 3 und 4 beschrieben werden. Unter Bezugnahme auf 2 kann das Verfahren 700 insbesondere durch die LDI-Optimierungsanwendung 240 durchgeführt werden.
  • Alle LDI-Pixelabtastwerte, die in einer LDI-Darstellung einer Szene enthalten sind, werden in eine Vielzahl getrennter Cluster (Block 702) partitioniert. Partitionierungsalgorithmus 500 (wie unter Bezugnahme auf 5 beschrieben) oder Partitionierungsalgorithmus 800 (wie unter Bezugnahme auf 8A–C beschrieben) können zum Beispiel verwendet werden. Jedes Cluster wird als eine planare Kachel (Block 704) dargestellt. Für jede planare Kachel (z. B. Anzahl t der planaren Kacheln) (Block 706) werden alle LDI-Pixelabtastwerte, die in ein Cluster partitioniert sind, das durch die planare Kachel dargestellt wird, der planaren Kachel zugewiesen (Block 708). Alle LDI-Pixelabtastwerte, die der planaren Kachel zugewiesen sind, werden in die planare Kachel (Block 710) projiziert. Die LDI-Pixelabtastwerte werden in Texturen auf der planaren Kachel (Block 712) rasterisiert. Ein grobes Dreiecksnetz wird aus den texturierten Ebenen erzeugt (Block 714).
  • Ein Partitionierungsalgorithmus kann alle LDI-Pixelabtastwerte, die in einer LDI-Darstellung einer Szene, S, enthalten sind, in eine Vielzahl getrennte Cluster (z. B. einen getrennten Satz von Clustern, C) partitionieren (segmentieren). Jedes individuelle Cluster, c, ist im getrennten Satz von Clustern, C (c ∊ C) enthalten. Jedes individuelle Cluster, c, hat eine zugehörige Position (c.position), einen zugehörigen Normalenvektor (c.normal) und einen zugehörigen Satz von Abtastwerten (c.abtastwerte ⊆ S).
  • Der Partitionierungsalgorithmus minimiert beim Zuweisen von LDI-Pixelabtastwerten zu Clustern Partitionierungsfehler. Außerdem oder alternativ dazu minimiert der Partitionierungsalgorithmus den Partitionierungsfehler beim Zuweisen von Parametern zu jedem Cluster.
  • In einigen Implementierungen kann Gleichung 1 einen Gesamtpartitionierungsfehler definieren. s∊SE(c, s). Gleichung 1
  • E(c, s) kann ein Maß eines Fehlers (eine Fehlermetrik) definieren, das mit der Zuweisung eines LDI-Pixelabtastwertes, s, zu einem Cluster, c, verbunden ist. Gleichung 2 ist eine exemplarische Gleichung für eine Fehlermetrik. Gleichung 2:
    Figure DE102017118580A1_0002
  • Wie beschrieben, kann eine Headbox eine Region des Raums (z. B. ein Begrenzungsfeld oder einen Bereich) definieren, von der eine LDI-Darstellung einer Szene von einem Benutzer betrachtet werden kann, während er in einem 3D-VR-Raum eingetaucht ist. Eine s.position ist eine Position eines LDI-Pixelabtastwertes, s, in der LDI-Darstellung der Szene. Eine c.position ist eine Position des Clusters, c, in der LDI-Darstellung der Szene. Eine headbox.mitte ist eine Position eines Punktes, der sich in einer Mitte der Region des Raums befindet, der als Headbox definiert ist.
  • headbox(c, s) kann eine Projektion eines LDI-Pixelabtastwertes, s, in eine planare Kachel definieren, die durch eine Position eines Clusters, c, definiert wird, wobei das Cluster, c, durch die planare Kachel dargestellt wird. Die Projektion des LDI-Pixelabtastwertes, s, in die planare Kachel kann ferner durch einen Normalenvektor (c.normal) des Clusters, c, definiert werden. Die Projektion des LDI-Pixelabtastwertes, s, kann in Richtung Mitte der Headbox erfolgen. Die Projektion eines LDI-Pixelabtastwertes, s, in eine planare Kachel kann zum Beispiel durch einen Schnittpunkt eines Liniensegments (oder Vektors) von der Projektion eines LDI-Pixelabtastwertes, s, in die planare Kachel (die s.position des LDI-Pixelabtastwertes) zu einem zentralen Punkt oder Bereich einer Headbox (der headbox.mitte) definiert werden. Die planare Kachel ist orthogonal zum Normalenvektor (c.normal) und geht durch die Position des Clusters (c.position).
  • Ein Abstimmungsparameter, λ, kann eine lokale Wichtigkeit eines Clusters, c, identifizieren. Ein Wert für den Abstimmungsparameter, λ, kann zum Beispiel ungefähr 0,3 betragen.
  • 8A–C zeigt ein Ablaufdiagramm eines exemplarischen Partitionierungsalgorithmus 800, der verwendet werden kann, um LDI-Pixelabtastwerte, die in einer LDI-Darstellung einer Szene enthalten sind, (wie unter Bezugnahme auf 7 und insbesondere Block 702 beschrieben) in eine Vielzahl von Clustern zu partitionieren. In einigen Implementierungen können die hierin beschriebenen Systeme, Verfahren, Algorithmen und Prozesse den Algorithmus 800 implementieren. Der Algorithmus 800 kann zum Beispiel unter Bezugnahme auf 1A–D, 2, 3 und 4 beschrieben werden. Wie unter Bezugnahme auf 2 ersichtlich, kann der Algorithmus 800 insbesondere durch die LDI-Optimierungsanwendung 240 durchgeführt werden.
  • Wie unter Bezugnahme auf 7 ersichtlich, werden alle LDI-Pixelabtastwerte, die in einer LDI-Darstellung einer Szene enthalten sind, in eine Vielzahl getrennter Cluster (Block 702) partitioniert. Der Partitionierungsalgorithmus 800 kann mehrere aufeinanderfolgende Schritte beinhalten, die ausgeführt werden, um alle LDI-Pixelabtastwerte, die in der LDI-Darstellung der Szene enthalten sind, in die Vielzahl von getrennten Clustern zu partitionieren. Diese Schritte können u. a. Zuweisungsschritte (Block 802, Block 804, Block 806 und Block 808), Aktualisierungsschritte (Block 812, Block 814 und Block 816) und Unterteilungsschritte (Block 822, Block 824, Block 826 und Block 828) beinhalten.
  • Ein erster Zuweisungsschritt legt eine Gesamtzahl getrennter Cluster, in die die LDI-Pixelabtastwerte, die in einem Roh-LDI enthalten sind, geteilt werden können, gleich einer vorher bestimmten kleinen Anzahl von Clustern, n (Block 802), fest. Ein inkrementeller Wert, i, für den Satz von Clustern, C, der die Anzahl n der Cluster, c, beinhaltet, ist auf gleich null (Block 804) eingestellt. Alle LDI-Pixelabtastwerte, die in einer LDI-Darstellung einer Szene enthalten sind, können zum Beispiel in n getrennte Cluster partitioniert werden (wobei zum Beispiel n = 50). Jedes Cluster, c(i) (für i = 0 bis i = (n – 1)), ist in einem Satz von Clustern, C (c(i) ∊ C) enthalten. Jedes Cluster, c(i), kann mithilfe einer Position eines nach dem Zufallsprinzip ausgewählten LDI-Pixelabtastwertes, der im Cluster, c(i), (die s.position des nach dem Zufallsprinzip ausgewählten LDI-Pixelabtastwertes) enthalten ist, und einer Flächennormalen für den nach dem Zufallsprinzip ausgewählten LDI-Pixelabtastwert (s.normal) initialisiert werden. Wie beschrieben, kann eine Flächennormale für einen Pixelabtastwert (oder Punkt) ein Vektor sein, der rechtwinklig zu einer Tangentenebene am bestimmten Pixelabtastwert (oder Punkt) angeordnet ist. Der nach dem Zufallsprinzip ausgewählte LDI-Pixelabtastwert kann der erste LDI-Pixelabtastwert sein, der einem bestimmten Cluster, c(i), zugewiesen (mit demselben verbunden) ist.
  • Ein LDI-Pixelabtastwert kann dem Cluster zugewiesen werden, wobei die berechnete Fehlermetrik minimal ist (z. B. die kleinste berechnete Fehlermetrik im Vergleich zur berechneten Fehlermetrik für den LDI-Pixelabtastwert, wenn anderen Clustern zugewiesen). Ein LDI-Pixelabtastwert, s, wird dem Cluster, c(i), zugewiesen, sofern die berechnete Fehlermetrik, E(c, s), für den LDI-Pixelabtastwert, s, wie dem Cluster, c(i), zugewiesen (in dieses platziert), die kleinste berechnete Fehlermetrik im Vergleich zur berechneten Fehlermetrik für den LDI-Pixelabtastwert s, wie anderen Clustern, außer dem Cluster, c(i), zugewiesen (in dieses platziert), ist (Block 806). Daher kann der Partitionierungsalgorithmus 800 Partitionierungsfehler beim Zuweisen von LDI-Pixelabtastwerten zu Clustern minimieren, indem er die berechnete Fehlermetrik, E(c, s), für den LDI-Pixelabtastwert, s, im Cluster, c(i), minimal hält.
  • Ein Wert für den vorher bestimmten Fehlermetrik-Schwellenwert, FehlSchwellenwert, kann auf Basis einer gewünschten Genauigkeit für die neu gezeichnete Szene bestimmt werden. Außerdem oder alternativ dazu kann ein Wert für den vorher bestimmten Fehlermetrik-Schwellenwert, FehlSchwellenwert, auf Basis einer Grenze bestimmt werden, die durch eine Headbox festgelegt wird. Außerdem oder alternativ dazu entspricht die berechnete Fehlermetrik, E(c, s) < dem vorher bestimmten Fehlermetrik-Schwellenwert, FehlSchwellenwert.
  • Der inkrementelle Wert, i, für den Satz von Clustern, C, der die Anzahl n der Cluster, c, beinhaltet, wird inkrementiert (Block 808). Die Teile des Algorithmus, wie in Block 806 und Block 808 vorgetragen, werden wiederholt, bis, in Block 810, ermittelt wird, dass i = (n – 1), woraufhin der Algorithmus 800 mit Block 812 fortgesetzt wird.
  • In einigen Implementierungen kann das Berechnen der Fehlermetrik, E(c, s), für alle LDI-Pixelabtastwerte, die in einer LDI-Darstellung einer Szene (z. B. ein Roh-LDI) enthalten sind, für alle Cluster (c(i) bis c(n)) ein kostspieliger Prozess für ein Computergerät (z. B. Computergerät 200 in 2) sein. Die Effizienz und Geschwindigkeit des Prozesses können aufgrund der Menge der erforderlichen Ressourcen (z. B. die CPU 216, der GPU 218, der Speicher 236) und Zeit, in der die Ressourcen möglicherweise genutzt werden müssen, um die Partitionierung durchzuführen, beeinträchtigt sein.
  • In einigen Implementierungen kann ein schnellerer und weniger kostspieliger Ansatz für die Zuweisung von LDI-Pixelabtastwerten zu Clustern das Identifizieren, für einen bestimmten LDI-Pixelabtastwert, s, nur einer Anzahl k von Clustern, Ck, beinhalten, deren Position, c.position, einer Position, s.position, des bestimmten LDI-Pixelabtastwertes, s, am nächsten ist. Von der Anzahl k der identifizierten Cluster, Ck, kann der bestimmte LDI-Pixelabtastwert, s, für die Einbeziehung in das Cluster, c, berücksichtigt werden (kann ihm zugewiesen werden), da die berechnete Fehlermetrik minimal ist (z. B. die kleinste berechnete Fehlermetrik im Vergleich zur berechneten Fehlermetrik für den LDI-Pixelabtastwert, wenn diese einer anderen der Anzahl k der Cluster, Ck, zugewiesen ist). Ein LDI-Pixelabtastwert, s, wird dem Cluster, c(i), zugewiesen, wobei c(i) in der Anzahl k der Cluster, Ck, (c(i) ∊ Ck), enthalten ist, wenn die berechnete Fehlermetrik, E(c, s), für den LDI-Pixelabtastwert, s, wie dem Cluster, c(i), zugewiesen (in dieses platziert), die kleinste berechnete Fehlermetrik im Vergleich zur berechneten Fehlermetrik für den LDI-Pixelabtastwert s, wie anderen Clusters, außer dem Cluster, c(i) zugewiesen (in dieses platziert), ist.
  • In manchen Fällen kann zum Beispiel k gleich sechzehn sein. Die Identifizierung einer Zahl k der Cluster, deren Position, c.position, einer Position, s.position, des bestimmten LDI-Abtastwertes, s, am nächsten ist, kann durch Konstruieren einer räumlichen Paritionierungsdatenstruktur (z. B. eines Baums mit k Dimensionen (ein k-d-Baum)) effizient durchgeführt werden. Die räumliche Paritionierungsdatenstruktur kann mithilfe aller Clusterzentren vor Start der Zuweisung der LDI-Pixelabtastwerte zu irgendeinem der Cluster konstruiert werden. Vor Start der Zuweisung der LDI-Pixelabtastwerte zu irgendeinen der Cluster kann der Partitionierungsalgorithmus zum Beispiel einen zentralen Punkt für jedes Clusters (z. B. c(i).mitte) bestimmen.
  • Ein inkrementeller Wert, i, für den Satz von Clustern, C, der die Anzahl n der Cluster, c, beinhaltet, ist auf gleich null eingestellt (Block 812). Die Parameter für Cluster, c(i), das im Satz von Clustern, C, enthalten ist, werden optimiert, um einen Gesamtpartitionierungsfehler für LDI-Pixelabtastwerte zu minimieren, die Cluster, c(i), zugewiesen sind.
  • In einigen Implementierungen kann ein Gesamtpartitionierungsfehler für LDI-Pixelabtastwerte, die einem Cluster, c(i), zugewiesen sind, mithilfe konvexer Optimierungsverfahren (z. B. einem Levenberg-Marquardt-Algorithmus (LMA), einem Damped Least-Squares (DLS)-Algorithmus) minimiert werden. Ein konvexes Optimierungsverfahren kann für jedes individuelle Cluster, c(i), das im getrennten Satz von Clustern, C (c(i) ∊ C) enthalten ist, der n Cluster beinhaltet, einen zugehörigen Normalenvektor (c(i).normal) für ein bestimmtes Cluster, c(i), und einen gewichteten Durchschnitt der Abtastwertpositionen für das bestimmte Cluster, c(i), als Anfangsbedingungen verwenden, um eine beste Position und einen besten Normalenvektor für jedes Cluster, c(i), bei Verwendung zur Darstellung des Roh-LDI zu bestimmen. Die beste Position und der beste Normalenvektor für ein Cluster, c(i), führen zur Minimierung eines Gesamtpartitionierungsfehlers für die LDI-Pixelabtastwerte, die dem Cluster, c(i) zugewiesen sind.
  • Der inkrementelle Wert, i, für den Satz von Clustern, C, der die Anzahl n der Cluster, c, beinhaltet, wird inkrementiert (Block 816). Die Teile des Algorithmus, wie in Block 814 und Block 816 vorgetragen, werden wiederholt, bis, in Block 818, ermittelt wird, dass i = (n – 1), woraufhin der Algorithmus 800 mit Block 820 fortgesetzt wird.
  • Als Nächstes erhöht der Partitionierungsalgorithmus 800 die Gesamtzahl der Cluster, die im getrennten Satz von Clustern, C, enthalten sind, iterativ von gleich der vorher bestimmten kleinen Anzahl von Clustern, n, bis zu einer maximalen Anzahl von Clustern (einer maximalen Zielclusterzahl, m). Eine Gesamtzahl von Clustern, n + i, kann zum Beispiel (von i = 0 bis i = (m – n – 1)) bis zu einer maximalen Zielclusterzahl, m, durch iteratives (wiederholtes) Aufteilen vorhandener Cluster, ständig vergrößert werden.
  • In einigen Implementierungen kann eine Prioritätswarteschlange von Clustern verwaltet werden, die die Gesamtzahl von Clustern beinhaltet, die in dem Satz von getrennten Clustern C, enthalten sind. Die Cluster, die in der Prioritätswarteschlange enthalten sind, können gemäß einem Gesamtpartitionierungsfehler geordnet werden (z. B. siehe Gleichung 1). Die Warteschlange kann aktualisiert werden, um zusätzliche Cluster zu beinhalten, die als Ergebnis der Aufteilung eines vorhandenen Clusters erstellt werden. Enthalten im Gesamtpartitionierungsfehler für ein Cluster, c(i), wobei c(i) ∊ C, eine Fehlermetrik ist, E(c(i), s(j)), die mit jedem LDI-Pixelabtastwert verbunden ist, s(j), wobei 0 ≤ j < der Gesamtzahl der LDI-Pixelabtastwerte ist, die mit dem Cluster c(i) verbunden (demselben zugewiesen) sind (z. B. siehe Gleichung 2). Wie unter Bezugnahme auf 2 ersichtlich, kann die LDI-Optimierungsanwendung 240 zum Beispiel den Paritionierungsalgorithmus 800 laufen lassen (ausführen) und dabei eine Prioritätswarteschlange der Cluster im GPU-Puffer 234 erstellen, verwalten und aktualisieren. In einigen Implementierungen kann die maximale Zielclusterzahl, m, auf Basis einer maximalen Anzahl von Datenböcken bestimmt werden, die der GPU 218 effizient wiedergeben kann. Außerdem kann die maximale Zielclusterzahl, m, ferner auf einer Menge des GPU-Pufferspeichers (z. B. des GPU-Puffers 234) basieren, der in einem Computergerät enthalten ist. Ein Wert für m kann zum Beispiel zwischen 3.000 und 20.000 liegen.
  • Ein inkrementeller Wert, i, wird auf gleich null eingestellt (Block 820). Wenn ermittelt wird, dass (n + i) < m (wobei n gleich der vorher bestimmten kleinen Anzahl der Cluster ist und m gleich einer maximalen Zielclusterzahl ist) (Block 822), wird ein Cluster, cp, (wobei cp ∊ C und 0 ≤ p ≤ (n + i – 1)) ausgewählt, dessen zugehöriger Gesamtpartitionierungsfehler
    Figure DE102017118580A1_0003
    maximiert wird, wobei cp.abtastwerte der Satz von LDI-Pixelabtastwerten ist, die mit dem Cluster, cp verbunden (in demselben enthalten) sind (Block 824). Der Partitionierungsalgorithmus 800 kann zum Beispiel auf die Prioritätswarteschlange der Cluster zugreifen, um zu ermitteln, ob das Cluster, cp, einen zugehörigen Gesamtpartitionierungsfehler aufweist, der größer als der (oder gleich dem) Partitionierungsfehler ist, der mit anderen Clustern verbunden ist, die in der Prioritätswarteschlange enthalten sind. Ein LDI-Pixelabtastwert, sq, der im Cluster, cp, enthalten ist, (sq ∊ cp.abtastwerte) und dessen zugehöriger Partitionierungsfehler für das Cluster, cp, maximiert ist, wird ausgewählt (Block 826). Ein neues Cluster, c(n+i) wird erstellt, das den LDI-Pixelabtastwert, sq (Block 828) beinhaltet. Das Cluster, c(n+i), hat eine zugehörige Position c(n+i).position = sq.position, einen zugehörigen Normalenvektor, c(n+i).normal = sq.normal, und einen zugehörigen Satz von Abtastwerten, c(n+i).abtastwerte, die anfänglich LDI-Pixelabtastwerte, sq, beinhalten.
  • Für jeden LDI-Pixelabtastwert, der im Cluster, cp, enthalten ist (mit Ausnahme des LDI-Pixelabtastwertes, sq, (z. B. Anzahl r der LDI-Pixelabastwerte)) (Block 830), wird ein zugehöriger Partitionierungsfehler für den LDI-Pixelabtastwert, sj, wobei 0 < j < (r – 1) and j ≠ q, für Cluster, cp, berechnet (z. B. E(cp, sj)) (Block 832). Ein zugehöriger Partitionierungsfehler für den LDI-Pixelabtastwert, sj, für Cluster, c(n+i), wird berechnet (z. B. E(cn+1, sj)) (Block 834). Der LDI-Pixelabtastwert, sj, wird dem Cluster zugewiesen (neu zugewiesen), dessen zugehöriger Partitionierungsfehler minimiert wird (Block 836). Wenn zum Beispiel E(cn+1, sj) < E(cp, sj), wird der LDI-Pixelabtastwert, sj, dem Cluster, c(n+i), neu zugewiesen. Der LDI-Pixelabtastwert, sj, ist nicht mehr mit dem Cluster, cp, verbunden (in demselben enthalten), und ist nun mit dem Cluster, c(n+i) verbunden (in demselben enthalten). In einem anderen Beispiel bleibt, sofern E(cn+1, sj) ≥ E(cp, sj), der LDI-Pixelabtastwert, sj, mit dem Cluster, cp verbunden (in demselben enthalten).
  • Sobald zugehörige Partitionierungsfehler für alle der LDI-Pixelabtastwerte, die im Cluster, cp, enthalten sind, berechnet und mit berechneten Partitionierungsfehlern für alle LDI-Pixelabtastwerte verglichen wurden, wenn diese in das Cluster, c(n+i), einbezogen hätten werden sollen, wird das Cluster, c(n+i), in den Satz von Clustern, C, (c(n+i) ∊ C) einbezogen (zu diesem hinzugefügt) (Block 838). Die Prioritätswarteschlange der Cluster wird zum Beispiel durch ein zusätzliches Cluster vergrößert. Die Anzahl der LDI-Pixelabtastwerte, die im Cluster, cp, enthalten sind (verbleiben), wird identifiziert (Block 840). Falls die Anzahl der LDI-Pixelabtastwerte, die im Cluster, cp, enthalten sind (verbleiben), gleich null ist (Block 842), wird das Cluster, cp, gelöscht und aus der Prioritätswarteschlange der Cluster (Block 844) entfernt. Falls die Anzahl der LDI-Pixelabtastwerte, die im Cluster, cp, enthalten sind (verbleiben), nicht gleich null ist (Block 846), verbleibt das Cluster, cp, in der Prioritätswarteschlange der Cluster.
  • Der inkrementelle Wert, i, wird inkrementiert (Block 816). Der Partitionierungsalgorithmus 800 wird mit Block 822 fortgesetzt. Wenn ermittelt wird, dass (n + i) < m (Block 822), werden die Schritte in Block 830 (die Schritte in Block 832, die Schritte in Block 834 und die Schritte in Block 836) und die Schritte in Blöcken 838 bis 846 wiederholt. Falls ermittelt wird, dass (n + i) nicht < m (Block 822) endet der Partitionierungsalgorithmus 800.
  • 9 zeigt ein Ablaufdiagramm, das ein Verfahren 900 für die Wiedergabe einer geschichteten Tiefenbild(LDI)-Darstellung einer Szene als dreidimensionales (3D) Bild in einem virtuellen Realitätsraum (VR) veranschaulicht. In einigen Implementierungen können die hierin beschriebenen Systeme, Verfahren, Algorithmen und Prozesse das Verfahren 900 implementieren. Das Verfahren 900 kann zum Beispiel unter Bezugnahme auf 1A–D, 2, 3, 4, 5, 6, 7 und 8A–C beschrieben werden.
  • Eine Vielzahl von Pixelabtastwerten, die in einer geschichteten Tiefenbild-(LDI)-Darstellung einer Szene für die Wiedergabe in einem dreidimensionalen (3D) Bild in einem virtuellen Realitätsraum (VR) enthalten ist, kann identifiziert werden (Block 902). Unter Bezugnahme auf 2 und wie hierin beschreiben kann die VR-Anwendung 220, die auf dem Computergerät 200 ausgeführt wird (läuft), zum Beispiel die Vielzahl von LDI-Pixelabtastwerten identifizieren. Eine Teilmenge der Pixelabtastwerte wird in einem Datenblock (Block 904) gruppiert. Wie unter Bezugnahme auf 2 ersichtlich und wie hierin beschreiben, kann die LDI-Optimierungsanwendung 240 zum Beispiel eine Teilmenge der Vielzahl von LDI-Pixelabtastwerten in einen Datenblock (z. B. in ein Cluster) gruppieren. Die Gruppierung kann das Extrahieren der Teilmenge der Vielzahl von Pixelabtastwerten aus der LDI-Darstellung der Szene für die Einbeziehung in den Datenblock auf Basis einer Nähe der Teilmenge der Vielzahl von Pixelabtastwerten zueinander beinhalten.
  • Eine Textur-Map für einen Datenblock wird erstellt (Block 906). Die Textur-Map kann mit dem Datenblock verbunden sein. Wie unter Bezugnahme auf 2 ersichtlich und wie hierin beschrieben, kann die LDI-Optimierungsanwendung 240 zum Beispiel die Textur-Map erstellen und dabei die Textur-Map mit dem Datenblock verbinden. Der Datenblock und die zugehörige Textur-Map werden gespeichert (Block 908). Wie unter Bezugnahme auf 2 ersichtlich und wie hierin beschrieben, kann die LDI-Optimierungsanwendung 240 zum Beispiel den Datenblock und die zugehörige Textur-Map im GPU-Puffer 234 speichern. Das 3D-Bild kann im VR-Raum mithilfe des Datenblocks und der zugehörigen Textur-Map (Block 910) wiedergegeben werden. Wie unter Bezugnahme auf 2 ersichtlich und wie hierin beschrieben, kann zum Beispiel der GPU 218 den Datenblock und die zugehörige Textur-Map wiedergeben und dabei die Wiedergabe der Anzeigeschnittstelle 238 für die Anzeige auf einem Bildschirm 202 als 3D-Bild in einem VR-Raum bereitstellen.
  • 10 zeigt ein Beispiel eines allgemeinen Computergerätes 1000 und eines allgemeinen mobilen Computergerätes 1050, die mit den hier beschriebenen Techniken verwendet werden können. Computergerät 1000 soll verschiedene Formen von Digitalcomputern darstellen, zum Beispiel Laptops, Desktops, Workstations, persönliche digitale Assistenten, Server, Blade-Server, Mainframes und andere geeignete Computer. Das Computergerät 1050 soll verschiedene Formen von Mobilgeräten, wie z. B. persönliche digitale Assistenten, Mobiltelefone, Smartphones und andere ähnliche Computergeräte, darstellen. Die hier gezeigten Komponenten, ihre Verbindungen und Beziehungen, sowie ihre Funktionen sollen nur exemplarisch sein und die Implementierungen der in diesem Dokument beschriebenen bzw. beanspruchten Erfindungen in keiner Weise einschränken.
  • Computergerät 1000 beinhaltet einen Prozessor 1002, einen Speicher 1004, ein Speichergerät 1006, eine Hochgeschwindigkeitsschnittstelle 1008, die sich mit Speicher 1004 und Hochgeschwindigkeitserweiterungsanschlüssen 1010 verbindet, und eine Niedergeschwindigkeitsschnittstelle 1012, die sich mit dem 1014 und Speichergerät 1006 verbindet. Alle Komponenten 1002, 1004, 1006, 1008, 1010 und 1012 sind unter Verwendung verschiedener Busse miteinander verbunden und können auf einer gängigen Hauptplatine oder gegebenenfalls in anderer Weise angebracht sein. Der Prozessor 1002 kann Befehle zur Ausführung innerhalb des Computergerätes 1000 verarbeiten, darunter auch Befehle, die in dem Speicher 1004 oder auf dem Speichergerät 1006 gespeichert sind, um grafische Informationen für eine GUI auf einem externen Eingabe-/Ausgabegerät, wie z. B. auf Anzeige 1016, die mit Hochgeschwindigkeitsschnittstelle 1008 verbunden ist, anzuzeigen. In anderen Implementierungen können mehrere Prozessoren und/oder mehrere Busse, wie jeweils anwendbar, zusammen mit mehreren Speichern und Speicherarten verwendet werden. Außerdem können mehrere Computergeräte 1000 verbunden sein, wobei jedes Gerät Teile der erforderlichen Operationen (z. B. als Serverbank, Gruppe von Blade-Servern oder Multiprozessorsystem) bereitstellt.
  • Der Speicher 1004 speichert Informationen in Computergerät 1000. In einer Implementierung handelt es sich bei dem Speicher 1004 um eine nicht flüchtige Speichereinheit oder -einheiten. In einer anderen Implementierung handelt es sich bei dem Speicher 1004 um eine nicht flüchtige Speichereinheit oder -einheiten. Der Speicher 1004 kann zudem in einer anderen Form von computerlesbarem Medium, zum Beispiel als magnetischer oder optischer Datenträger, vorliegen. Das Speichergerät 1006 kann einen Massenspeicher für das Computergerät 1000 bereitstellen. In einer Implementierung kann das Speichergerät 1006 ein computerlesbares Medium, wie z. B. ein Diskettenlaufwerk, ein Festplattenlaufwerk, ein optisches Laufwerk, ein Magnetbandlaufwerk, ein Flash-Speicher oder ein anderes ähnliches Festkörper-Speichergerät oder eine Reihe von Geräten, einschließlich Geräten in einem Speichernetzwerk oder anderen Konfigurationen, sein oder beinhalten. Ein Computerprogrammprodukt kann physisch in einem Informationsträger ausgeführt sein. Das Computerprogrammprodukt kann auch Befehle enthalten, die bei ihrer Ausführung ein oder mehrere Verfahren wie die oben beschriebenen ausführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie z. B. der Speicher 1004, das Speichergerät 1006 oder ein Speicher auf einem Prozessor 1002.
  • Der Hochgeschwindigkeits-Controller 1008 verwaltet bandbreitenintensive Operationen für das Computergerät 1000, während der Niedergeschwindigkeits-Controller 1012 weniger bandbreitenintensive Operationen verwaltet. Diese Zuweisung von Funktionen ist lediglich exemplarisch. In einer Implementierung ist der Hochgeschwindigkeits-Controller 1008 mit dem Speicher 1004, der Anzeige 1016 (z. B. durch einen Grafikprozessor oder -beschleuniger) und den Hochgeschwindigkeits-Erweiterungsanschlüsseln 1010 gekoppelt, die verschiedene Erweiterungskarten aufnehmen können (nicht dargestellt). In der Implementierung ist der Niedergeschwindigkeits-Controller 1012 mit dem Speichergerät 1006 und dem Niedergeschwindigkeitserweiterungsanschluss 1014 gekoppelt. Der Niedergeschwindigkeitserweiterungsanschluss, der verschiedene Kommunikationsanschlüsse (z. B. USB, Bluetooth, Ethernet, drahtloses Ethernet) beinhalten kann, kann an ein oder mehrere Ein-/Ausgabegeräte, wie z. B. eine Tastatur, ein Zeigegerät, einen Scanner oder ein Netzwerkgerät, wie z. B. einen Switch oder Router, z. B. durch einen Netzwerkadapter, gekoppelt sein.
  • Das Computergerät 1000 kann, wie in der Figur ersichtlich, in einer Reihe verschiedener Formen implementiert sein. Es kann zum Beispiel als Standardserver 1020 oder mehrmals in einer Gruppe derartiger Server implementiert sein. Es kann zudem als Bestandteil eines Rack-Serversystems 1024 implementiert sein. Darüber hinaus kann es in einem PC, wie z. B. in einem Laptopcomputer 1022, implementiert sein. Alternativ dazu können Komponenten von Computergerät 1000 mit anderen Komponenten in einem Mobilgerät (nicht dargestellt), wie z. B. Gerät 1050, kombiniert sein. Jedes dieser Geräte kann eine oder mehrere der Computergeräte 1000, 1050 enthalten, wobei sich ein gesamtes System aus mehreren Computergeräten 1000, 1050 zusammensetzen kann, die miteinander kommunizieren. Das Computergerät 1050 beinhaltet neben anderen Komponenten einen Prozessor 1052, einen Speicher 1064, ein Eingabe-/Ausgabegerät, wie z. B. eine Anzeige 1054, eine Kommunikationsschnittstelle 1066 und einen Sendeempfänger 1068. Das Gerät 1050 kann ebenfalls mit einem Speichergerät, wie z. B. einem Microdrive oder einem anderen Gerät ausgestattet sein, um zusätzlichen Speicher bereitzustellen. Alle Komponenten 1050, 1052, 1064, 1054, 1066 und 1068 sind unter Verwendung verschiedener Busse miteinander verbunden, wobei mehrere der Komponenten auf einer gängigen Hauptplatine oder gegebenenfalls in anderer Weise angebracht sein können.
  • Der Prozessor 1052 kann Befehle in dem Computergerät 1050, darunter auch die im Speicher 1064 gespeicherten Befehle, ausführen. Der Prozessor kann als Chipsatz von Chips implementiert werden, die separate und mehrere analoge und digitale Prozessoren beinhalten. Der Prozessor kann beispielsweise für eine Koordinierung der anderen Komponenten des Geräts 1050, wie beispielsweise für eine Steuerung von Benutzerschnittstellen, Anwendungen, die von Gerät 1050 ausgeführt werden, sowie einer drahtlosen Kommunikation durch Gerät 1050 sorgen.
  • Der Prozessor 1052 kann mit einem Benutzer über die Steuerschnittstelle 1058 und die mit einer Anzeige 1054 gekoppelte Anzeigeschnittstelle 1056 kommunizieren. Die Anzeige 1054 kann zum Beispiel eine TFT-LCD-(Dünnfilmtransistor-Flüssigkristallanzeige) oder eine OLED-Anzeige (organische Leuchtdiode) oder eine andere geeignete Anzeigetechnologie sein. Die Anzeigeschnittstelle 1056 kann eine geeignete Schaltung umfassen, die die Anzeige 1054 dazu bringt, einem Benutzer grafische und andere Informationen zu präsentieren. Die Steuerschnittstelle 1058 kann Befehle von einem Benutzer empfangen und sie für das Senden an Prozessor 1052 umwandeln. Zusätzlich kann eine externe Schnittstelle 1062 in Verbindung mit dem Prozessor 1052 vorgesehen sein, um eine Nahbereichskommunikation von Gerät 1050 mit anderen Geräten zu ermöglichen. Die externe Schnittstelle 1062 kann beispielsweise bei manchen Implementierungen eine drahtgebundene Verbindung oder bei anderen Implementierungen eine drahtlose Verbindung sein, wobei auch mehrere Schnittstellen verwendet werden können.
  • Der Speicher 1064 speichert Informationen in Computergerät 1050. Der Speicher 1064 kann als ein oder mehrere computerlesbare Medien, flüchtige Speichergeräte oder nicht flüchtige Speichergeräte implementiert sein. Erweiterungsspeicher 1074 kann ebenfalls bereitgestellt und mit dem Gerät 1050 über die Erweiterungsschnittstelle 1072 verbunden sein, die zum Beispiel eine SIMM(Speichermodul mit einer Kontaktreihe)-Kartenschnittstelle beinhalten kann. Dieser Erweiterungsspeicher 1074 kann zusätzlichen Speicherplatz für Gerät 1050 bereitstellen oder kann auch Anwendungen oder andere Informationen für Gerät 1050 speichern. Insbesondere kann der Erweiterungsspeicher 1074 Befehle zum Ausführen oder Ergänzen der oben beschriebenen Prozesse, sowie sichere Informationen beinhalten. Demnach kann Erweiterungsspeicher 1074 beispielsweise als ein Sicherheitsmodul für Gerät 1050 bereitgestellt und mit Befehlen programmiert sein, die eine sichere Benutzung von Gerät 1050 ermöglichen. Zudem können über die SIMM-Karten sichere Anwendungen zusammen mit zusätzlichen Informationen, wie dem Ablegen von Identifizierungsinformationen auf der SIMM-Karte auf eine Weise bereitgestellt werden, die sich nicht hacken lässt.
  • Der Speicher kann wie im Folgenden besprochen zum Beispiel Flashspeicher und/oder NVRAM-Speicher beinhalten. In einer Implementierung ist ein Computerprogrammprodukt physisch in einem Informationsträger enthalten. Das Computerprogrammprodukt enthält Befehle, die bei ihrer Ausführung ein oder mehrere Verfahren, wie die oben beschriebenen, ausführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie z. B. der Speicher 1064, die Speichererweiterung 1074 oder der Speicher auf Prozessor 1052, der beispielsweise über den Sendeempfänger 1068 oder die externe Schnittstelle 1062 empfangen werden kann.
  • Das Gerät 1050 kann über Kommunikationsschnittstelle 1066 drahtlos kommunizieren, die bei Bedarf eine digitale Signalverarbeitungsschaltung beinhalten kann. Die Kommunikationsschnittstelle 1066 kann Kommunikationen mit verschiedenen Kommunikationstypen oder -protokollen bereitstellen, wie z. B. unter anderem GSM-Sprachanrufe, SMS, EMS oder MMS-Messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000 oder GPRS. Diese Kommunikation kann beispielsweise durch Funkfrequenz-Sendeempfänger 1068 stattfinden. Zusätzlich kann eine Kurzstreckenkommunikation, wie z. B. unter Verwendung eines Bluetooth-, WLAN- oder anderen dieser Sendeempfänger (nicht dargestellt) stattfinden. Außerdem kann das GPS(Globale Positionierungssystem)-Empfängermodul 1070 zusätzliche navigations- und positionsbezogene drahtlose Daten für Gerät 1050 bereitstellen, die gegebenenfalls von Anwendungen verwendet werden können, die auf Gerät 1050 ausgeführt werden.
  • Das Gerät 1050 kann darüber hinaus unter Verwendung des Audiocodec 1060, welcher gesprochene Informationen von einem Benutzer empfangen und diese in nutzbare digitale Informationen konvertieren kann, hörbar kommunizieren. Der Audiocodec 1060 kann zudem hörbaren Ton für einen Benutzer, wie beispielsweise durch einen Lautsprecher, z. B. in einem Handgerät von Gerät 1050, erzeugen. Diese Töne können Töne von Sprachtelefonanrufen beinhalten, sie können aufgezeichnete Töne (z. B. Sprachnachrichten, Musikdateien usw.), sowie Töne beinhalten, die von auf Gerät 1050 betriebenen Anwendungen erstellt wurden.
  • Das Computergerät 1050 kann, wie in der Figur ersichtlich, in einer Reihe verschiedener Formen implementiert sein. Beispielsweise kann es als Mobiltelefon 1080 implementiert sein. Es kann außerdem als Teil eines Smartphones 1082, eines persönlichen digitalen Assistenten oder eines anderen ähnlichen Mobilgeräts implementiert sein.
  • Verschiedene Implementierungen der hier beschriebenen Systeme und Techniken können in digitalen elektronischen Schaltungen, integrierten Schaltungen, speziell konzipierten ASICs (anwendungsorientierten integrierten Schaltungen), Computerhardware, Firmware, Software und/oder Kombinationen derselben realisiert sein. Diese verschiedenen Implementierungen können eine Implementierung in einem oder mehreren Computerprogrammen beinhalten, die auf einem programmierbaren System ausführbar und/oder interpretierbar sind, das mindestens einen programmierbaren Prozessor beinhaltet, bei dem es sich um einen Spezial- oder einen Universalprozessor handeln kann und der zum Empfangen von Daten und Befehle von und zum Übertragen von Daten und Befehlen an ein Speichersystem, mindestens ein Eingabegerät und mindestens ein Ausgabegerät gekoppelt ist.
  • Diese Computerprogramme (auch bekannt als Programme, Software, Softwareanwendungen oder Code) beinhalten Maschinenbefehle für einen programmierbaren Prozessor und können in einer höheren prozeduralen und/oder objektorientierten Programmiersprache und/oder in Assembler-/Maschinensprache implementiert sein. Wie hierin verwendet, bezeichnen die Begriffe „maschinenlesbares Medium“, „computerlesbares Medium“ ein beliebiges Computerprogrammprodukt, eine beliebige Vorrichtung und/oder ein beliebiges Gerät (z. B. Magnetplatten, optische Platten, Speicher, programmierbare Logikbausteine (PLDs)), die verwendet werden, um einem programmierbaren Prozessor Maschinenbefehle und/oder Daten bereitzustellen, einschließlich eines maschinenlesbaren Mediums, das Maschinenbefehle als ein maschinenlesbares Signal empfängt. Der Begriff „maschinenlesbares Signal“ bezeichnet ein beliebiges Signal, das verwendet wird, um einem programmierbaren Prozessor Maschinenbefehle und/oder Daten bereitzustellen.
  • Um eine Interaktion mit einem Benutzer bereitzustellen, können die hier beschriebenen Systeme und Techniken auf einem Computer implementiert werden, der ein Anzeigegerät (wie z. B. einen CRT-(Kathodenstrahlröhre) oder LCD-(Flüssigkristallanzeige)-Monitor) aufweist, um dem Benutzer Informationen anzuzeigen, sowie eine Tastatur und ein Zeigegerät (z. B. eine Maus oder einen Trackball) aufweist, mittels denen der Benutzer eine Eingabe an dem Computer vornehmen kann. Es können auch andere Arten von Geräten verwendet werden, um für eine Interaktion mit einem Benutzer zu sorgen; beispielsweise kann eine an den Benutzer bereitgestellte Rückmeldung eine beliebige Form von sensorischer Rückmeldung (wie z. B. eine visuelle Rückmeldung, akustische Rückmeldung oder taktile Rückmeldung) sein; während die Eingabe vom Benutzer in beliebiger Form, einschließlich akustischer, Sprach- oder taktiler Eingabe, empfangen werden kann.
  • Die hier beschriebenen Systeme und Techniken können in einem Computersystem implementiert werden, das eine Backendkomponente (z. B. einen Datenserver) beinhaltet, oder das eine Middlewarekomponente (z. B. einen Applikationsserver) beinhaltet, oder das eine Frontendkomponente (z. B. einen Clientcomputer mit einer grafischen Benutzeroberfläche oder einem Webbrowser beinhaltet, durch die bzw. den ein Benutzer mit hier beschriebenen Systemimplementationen und Techniken interagieren kann) oder eine Kombination aus denselben Backend-, Middleware- oder Frontendkomponenten beinhaltet. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation (wie z. B. ein Kommunikationsnetzwerk) miteinander verbunden sein. Beispiele von Kommunikationsnetzwerken beinhalten ein lokales Netzwerk („LAN“), ein Großraumnetzwerk („WAN“) und das Internet.
  • Das Computersystem kann Clients und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen entfernt voneinander und interagieren typischerweise über ein Kommunikationsnetzwerk. Die Beziehung von Client und Server ergibt sich durch Computerprogramme, die auf den jeweiligen Computern ausgeführt werden und in einer Client-Server-Beziehung zueinander stehen.
  • In einigen Implementierungen kann das in 10 dargestellte Computergerät Sensoren beinhalten, die eine Schnittstelle zu einer virtuellen Realität aufweisen (HMD-Gerät 1090). Einer oder mehrere Sensoren, die in einem Computergerät 1050 oder einem anderen Computergerät, das in 10 dargestellt ist, enthalten sind, können dem HDMI-Gerät 1090 Eingaben bereitstellen, oder im Allgemeinen Eingaben für eine VR-Umgebung bereitstellen. Die Sensoren können u. a. einen Berührungsbildschirm, Beschleunigungssensoren, Gyroskope, Drucksensoren, biometrische Sensoren, Temperatursensoren, Feuchtesensoren und Umgebungslichtsensoren beinhalten. Das Computergerät 1050 kann die Sensoren verwenden, um eine absolute Position und/oder eine festgestellte Drehung des Computergerätes in der VR-Umgebung zu bestimmen, die dann als Eingabe in die VR-Umgebung verwendet werden kann. Das Computergerät 1050 kann zum Beispiel als virtuelles Objekt, wie z. B. als Steuergerät, Laserpointer, Tastatur, Waffe usw., in die VR-Umgebung integriert sein. Die Positionierung des Computergerätes oder des virtuellen Objekts durch den Benutzer, wenn es in der VR-Umgebung integriert ist, kann es dem Benutzer ermöglichen, das Computergerät so zu positionieren, dass dieser das virtuelle Objekt auf bestimmte Weise in der VR-Umgebung betrachten kann. Wenn zum Beispiel das virtuelle Objekt einem Laserpointer entspricht, kann der Benutzer das Computergerät so manipulieren, als wäre es ein tatsächlicher Laserpointer. Der Benutzer kann das Computergerät nach links und rechts, nach oben und unten, in einem Kreis usw. verschieben und das Gerät in ähnlicher Weise wie einen Laserpointer verwenden.
  • In einigen Implementierungen können eines oder mehrere Eingabegeräte, die im Computergerät 1050 enthalten oder mit diesem verbunden sind, als Eingabemedium für die VR-Umgebung verwendet werden. Die Eingabegeräte können unter anderem einen Berührungsbildschirm, eine Tastatur, eine oder mehrere Tasten, ein Trackpad, ein Touchpad, ein Zeigegerät, eine Maus, einen Trackball, einen Joystick, eine Kamera, ein Mikrofon, Kopfhörer oder Ohrhörer mit Eingabefunktion, einen Spielecontroller oder ein anderes anschließbares Eingabegerät beinhalten. Ein Benutzer, der mit einem Eingabegerät interagiert, das am Computergerät 1050 enthalten ist, wenn das Computergerät in der VR-Umgebung integriert ist, kann bewirken, dass eine bestimmte Aktion in der VR-Umgebung erfolgt.
  • In einigen Implementierungen kann ein Berührungsbildschirm des Computergerätes 1050 als Berührungsfeld in der VR-Umgebung wiedergegeben werden. Ein Benutzer kann mit dem Berührungsbildschirm des Computergerätes 1050 interagieren. Die Interaktionen werden zum Beispiel im HMD-Gerät 1090 als Bewegungen auf dem wiedergebenen Berührungsfeld in der VR-Umgebung dargestellt. Die wiedergebenen Bewegungen können Objekte in der VR-Umgebung steuern.
  • In einigen Implementierungen können eines oder mehrere Ausgabegeräte, die am Computergerät 1050 enthalten sind, eine Ausgabe und/oder Rückmeldung für einen Benutzer des HMD-Gerätes 1090 in der VR-Umgebung bereitstellen. Die Ausgabe und die Rückmeldung können visuell, taktil oder akustisch sein. Die Ausgabe und/oder Rückmeldung können unter anderem Vibrationen beinhalten, eine oder mehrere Leuchtdioden oder Datenbestätigungssignale ein- und ausschalten oder blinken bzw. aufleuchten lassen, einen Alarm ertönen lassen, einen Klang wiedergeben, ein Lied wiedergeben und eine Audiodatei wiedergeben. Die Ausgabegeräte können Vibrationsmotoren, Vibrationsspulen, piezoelektrische Vorrichtungen, elektrostatische Vorrichtungen, Leuchtdioden (LEDs), Tastimpulse und Lautsprecher beinhalten, sind jedoch nicht darauf beschränkt.
  • In einigen Implementierungen kann das Computergerät 1050 als ein anderes Objekt in einer computergenerierten 3D-Umgebung erscheinen. Interaktionen durch den Benutzer mit dem Computergerät 1050 (z. B. Drehen, Schütteln, Berühren eines Berührungsbildschirms, Wischen eines Fingers über einen Berührungsbildschirm) können als Interaktionen mit dem Objekt in der VR-Umgebung interpretiert werden. Im Beispiel des Laserpointers in einer VR-Umgebung erscheint das Computergerät 1050 als virtueller Laserpointer in der computergenerierten 3D-Umgebung. Wenn der Benutzer das Computergerät 1050 manipuliert, sieht der Benutzer in der VR-Umgebung die Bewegung des Laserpointers. Der Benutzer empfängt Rückmeldungen von Interaktionen mit dem Computergerät 1050 in der VR-Umgebung auf dem Computergerät 1050 oder auf dem HMD-Gerät 1090.
  • In einigen Implementierungen kann Computergerät 1050 einen Berührungsbildschirm beinhalten. Ein Benutzer kann zum Beispiel mit dem Berührungsbildschirm auf eine bestimmte Weise interagieren, wobei das, was auf dem Bildschirm passiert, das nachbilden kann, was in der VR-Umgebung passiert. Ein Benutzer kann zum Beispiel eine Zoom-Bewegung verwenden, um Inhalt, der auf dem Berührungsbildschirm angezeigt wird, zu vergrößern. Diese Zoom-Bewegung auf dem Berührungsbildschirm kann bewirken, dass Informationen, die in der VR-Umgebung bereitgestellt werden, vergrößert werden. In einem weiteren Beispiel kann das Computergerät als ein virtuelles Buch in einer computergenerierten 3D-Umgebung wiedergegeben werden. In der VR-Umgebung können die Seiten des Buches in der VR-Umgebung angezeigt werden und das Wischen eines Fingers des Benutzers über den Berührungsbildschirm kann als Wenden (Umblättern) einer Seite des virtuellen Buches interpretiert werden. Wenn die jeweilige Seite gewendet (umgeblättert) wird, sieht der Benutzer nicht nur, dass sich der Seiteninhalt ändert, ihm kann auch eine Audiorückmeldung wie zum Beispiel der Klang des Umblätterns einer Seite in einem Buch bereitgestellt werden.
  • In einigen Implementierungen können zusätzlich zu dem Computergerät eines oder mehrere Eingabegeräte (z. B. eine Maus, eine Tastatur) in einer computergenerierten 3D-Umgebung wiedergegeben werden. Die wiedergegebenen Eingabegeräte (z. B. die wiedergegebene Maus, die wiedergegebene Tastatur) können als wiedergegeben in der VR-Umgebung verwendet werden, um Objekte in der VR-Umgebung zu steuern.
  • Eine Reihe von Ausführungsformen wurde beschrieben. Trotzdem versteht es sich, dass verschiedene Modifikationen durchgeführt werden können, ohne vom Erfindungsgedanken und Umfang der Erfindung abzuweichen.
  • Außerdem erfordern die in den Figuren dargestellten logischen Abläufe nicht die bestimmte dargestellte Reihenfolge oder sequenzielle Reihenfolge, um wünschenswerte Ergebnisse zu erzielen. Darüber hinaus können andere Schritte vorgesehen oder Schritte aus den beschriebenen Abläufen eliminiert werden, während andere Komponenten zu den beschriebenen Systemen hinzugefügt oder aus denselben entfernt werden können. Dementsprechend befinden sich andere Ausführungsformen innerhalb des Umfangs der folgenden Ansprüche.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • IEEE 802.3 [0042]

Claims (28)

  1. Ein computerimplementiertes Verfahren, umfassend: Identifizieren einer Vielzahl von Pixelabtastwerten, die in einer geschichteten Tiefenbild-(LDI)-Darstellung einer Szene für die Wiedergabe in einem dreidimensionalen (3D) Bild in einem virtuellen Realitätsraum (VR) enthalten ist; Gruppieren einer Teilmenge der Vielzahl von Pixelabtastwerten in einen Datenblock durch einen Prozessor, wobei das Gruppieren das Extrahieren jedes Pixelabtastwertes, der in der Teilmenge der Vielzahl der Pixelabtastwerte von der LDI-Darstellung der Szene enthalten ist, für die Einbeziehung in den Datenblock auf Basis einer Fehlermetrik, die mit dem jeweiligen Pixelabtastwert verbunden ist, beinhaltet; Erstellen einer Textur-Map für einen Datenblock durch den Prozessor, wobei die Textur-Map mit dem Datenblock verknüpft ist; Speichern des Datenblocks und der zugehörigen Textur-Map; und Auslösen und Wiedergeben des 3D-Bildes im VR-Raum mithilfe des Datenblocks und der zugehörigen Textur-Map.
  2. Verfahren nach Anspruch 1, wobei der Prozessor ein Grafikprozessor (GPU) ist.
  3. Verfahren nach Anspruch 2, wobei das Auslösen der Wiedergabe des 3D-Bildes im VR-Raum mithilfe des Datenblocks und der zugehörigen Textur-Map Folgendes beinhaltet: Auslösen einer Rasterisierung des Datenblocks; und Auslösen einer Anwendung der zugehörigen Textur-Map.
  4. Verfahren nach Anspruch 1, wobei der Datenblock durch eine planare Kachel dargestellt wird.
  5. Verfahren nach Anspruch 1, wobei das Gruppieren einer Teilmenge der Vielzahl von Pixelabtastwerten in einem Datenblock ferner beinhaltet: Ermitteln, ob die Fehlermetrik für einen Pixelabtastwert größer als ein Fehlerschwellenwert ist; und Nichteinbeziehung des Pixelabtastwertes in die Teilmenge der Vielzahl von Pixelabtastwerten für die Gruppierung in den Datenblock auf Basis der Ermittlung, dass die Fehlermetrik für den Pixelabtastwert größer als der Fehlerschwellenwert ist.
  6. Verfahren nach Anspruch 5, wobei der Fehlerschwellenwert auf einer Region rund um die ursprüngliche Kameraposition basiert, in der die LDI-Darstellung der Szene als gültig betrachtet wird.
  7. Verfahren nach Anspruch 1, wobei eine Kandidatenebene oder eine planare Kandidatenkachel auf Basis eines Tiefenwertes, der mit einem Pixelabtastwert, insbesondere einem LDI-Pixelabtastwert, verbunden ist, und eines Wertes für eine Flächennormale, die mit dem Pixelabtastwert, insbesondere mit dem LDI-Pixelabtastwert, verbunden ist, erstellt wird, und die Pixelabtastwerte, insbesondere die LDI-Pixelabtastwerte, die sich innerhalb einer Fehlermetrik der Kandidatenebene oder planaren Kandidatenkachel befinden, lokalisiert werden.
  8. Verfahren nach Anspruch 1, ferner umfassend: Optimieren, durch den Prozessor, von Parametern, die mit dem Datenblock verbunden sind, wobei das Optimieren einen Gesamtpartitionierungsfehler für die Teilmenge der Vielzahl von Pixelabtastwerten minimiert, die in dem Datenblock enthalten sind.
  9. Verfahren nach Anspruch 1, wobei das Gruppieren der Teilmenge der Vielzahl von Pixelabtastwerten durch einen Quadrangulierungsalgorithmus durchgeführt wird.
  10. Verfahren nach Anspruch 1, wobei das Gruppieren der Teilmenge der Vielzahl von Pixelabtastwerten durch einen Partitionierungsalgorithmus durchgeführt wird.
  11. Verfahren nach Anspruch 1, wobei ein Datenblock Bilddaten, insbesondere LDI-Pixelabtastwerte, umfasst.
  12. Verfahren nach Anspruch 10, wobei die LDI-Pixelabtastwerte eine beliebige Anzahl von Abtastwerten auf Basis einer Anzahl von Schichten von Lichtstrahlen umfassen, die von einer Kamera projiziert werden.
  13. Verfahren nach Anspruch 1, wobei das Gruppieren der Teilmenge der Vielzahl von LDI-Pixelabtastwerten durch einen Algorithmus durchgeführt wird, um eine Ebene oder planare Kachel zu identifizieren, die mehrere LDI-Pixelabtastwerte beinhaltet, insbesondere mithilfe eines Quadrangulierungsalgorithmus.
  14. Ein Computergerät, umfassend: einen Bildschirm, der konfiguriert ist, Bilddaten anzuzeigen; eine Anzeigeschnittstelle, die konfiguriert ist, dem Bildschirm die Bilddaten bereitzustellen; einen GPU-Puffer, der konfiguriert ist, Datenblöcke zu speichern, und einen Grafikprozessor (GPU), der konfiguriert ist,: eine Vielzahl von Pixelabtastwerten zu identifizieren, die in einer geschichteten Tiefenbild-(LDI)-Darstellung einer Szene für die Wiedergabe in einem dreidimensionalen (3D) Bild in einem virtuellen Realitätsraum (VR-Raum) enthalten sind; eine Teilmenge der Vielzahl von Pixelabtastwerten in einen Datenblock zu gruppieren, wobei das Gruppieren das Extrahieren jedes Pixelabtastwertes, der in der Teilmenge der Vielzahl der Pixelabtastwerte von der LDI-Darstellung der Szene enthalten ist, für die Einbeziehung in den Datenblock auf Basis einer Fehlermetrik beinhaltet, die mit dem jeweiligen Pixelabtastwert verbunden ist; eine Textur-Map für einen Datenblock zu erstellen, wobei die Textur-Map mit dem Datenblock verbunden ist; den Datenblock und die zugehörige Textur-Map im GPU-Puffer zu speichern; eine Wiedergabe des 3D-Bildes im VR-Raum auszulösen, wobei die Wiedergabe Folgendes beinhaltet: Rasterisieren des Datenblocks; und Anwenden der zugehörigen Textur-Map; und der Anzeigeschnittstelle das wiedergegebene 3D-Bild als die Bilddaten für die Anzeige auf dem Bildschirm bereitzustellen.
  15. Computergerät nach Anspruch 14, wobei der Datenblock durch eine planare Kachel dargestellt wird.
  16. Computergerät nach Anspruch 14, wobei das Gruppieren einer Teilmenge der Vielzahl von Pixelabtastwerten in einem Datenblock ferner beinhaltet: Ermitteln, ob die Fehlermetrik für einen Pixelabtastwert größer als ein Fehlerschwellenwert ist; Einbeziehung des Pixelabtastwertes in die Teilmenge der Vielzahl von Pixelabtastwerten für die Gruppierung in einen Datenblock auf Basis der Ermittlung, dass die Fehlermetrik für einen Pixelabtastwert nicht größer als ein Fehlerschwellenwert ist; und Nichteinbeziehung des Pixelabtastwertes in die Teilmenge der Vielzahl von Pixelabtastwerten für die Gruppierung in den Datenblock auf Basis der Ermittlung, dass die Fehlermetrik für den Pixelabtastwert größer als der Fehlerschwellenwert ist.
  17. Computergerät nach Anspruch 16, wobei der Fehlerschwellenwert auf einer Region rund um eine ursprüngliche Kameraposition basiert, in der die LDI-Darstellung der Szene als gültig betrachtet wird.
  18. Computergerät nach Anspruch 14, wobei eine Kandidatenebene oder eine planare Kandidatenkachel auf Basis eines Tiefenwertes, der mit einem Pixelabtastwert, insbesondere einem LDI-Pixelabtastwert, verbunden ist, und eines Wertes für eine Flächennormale, die mit dem Pixelabtastwert, insbesondere dem LDI-Pixelabtastwert verbunden ist, erstellt wird, und die Pixelabtastwerte, insbesondere die LDI-Pixelabtastwerte, die sich innerhalb einer Fehlermetrik der Kandidatenebene oder der planaren Kandidatenkachel befinden, lokalisiert werden.
  19. Computergerät nach Anspruch 14, wobei der GPU ferner so konfiguriert ist, dass er: Parameter, die mit dem Datenblock verbunden sind, optimiert, wobei das Optimieren einen Gesamtpartitionierungsfehler für die Teilmenge der Vielzahl von Pixelabtastwerten, die in dem Datenblock enthalten sind, minimiert.
  20. Computergerät nach Anspruch 14, wobei der GPU ferner so konfiguriert ist, dass er: einen Quadrangulierungsalgorithmus beim Gruppieren der Teilmenge der Vielzahl von Pixelabtastwerten in den Datenblock durchführt.
  21. Computergerät nach Anspruch 14, wobei der GPU ferner so konfiguriert ist, dass er: einen Partitionierungsalgorithmus beim Gruppieren der Teilmenge der Vielzahl von Pixelabtastwerten in den Datenblock durchführt.
  22. Computergerät nach Anspruch 14, wobei ein Datenblock Bilddaten, insbesondere LDI-Pixelabtastwerte, umfasst.
  23. Computergerät nach Anspruch 14, wobei die LDI-Pixelabtastwerte eine beliebige Anzahl von Abtastwerten auf Basis einer Reihe von Schichten von Lichtstrahlen umfassen, die von einer Kamera projiziert werden.
  24. Computergerät nach Anspruch 14, wobei das Gruppieren der Teilmenge der Vielzahl von LDI-Pixelabtastwerten durch einen Algorithmus durchgeführt wird, um eine Ebene oder planare Kachel zu identifizieren, die mehrere LDI-Pixelabtastwerte beinhaltet, insbesondere mithilfe eines Quadrangulierungsalgorithmus.
  25. Ein nicht transitorisches, maschinenlesbares Medium, auf dem Befehle gespeichert sind, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, das Computergerät veranlassen: eine Vielzahl von Pixelabtastwerten, die in einer geschichteten Tiefenbild-(LDI)-Darstellung einer Szene enthalten ist, für die Wiedergabe in einem dreidimensionalen (3D) Bild in einem virtuellen Realitätsraum (VR) zu identifizieren; eine Teilmenge der Vielzahl von Pixelabtastwerten in einen Datenblock zu gruppieren, wobei das Gruppieren das Extrahieren jedes Pixelabtastwertes, der in der Teilmenge der Vielzahl der Pixelabtastwerte von der LDI-Darstellung der Szene enthalten ist, für die Einbeziehung in den Datenblock auf Basis einer Fehlermetrik, die mit dem jeweiligen Pixelabtastwert verbunden ist, beinhaltet; eine Textur-Map für einen Datenblock zu erstellen, wobei die Textur-Map mit dem Datenblock verknüpft ist; den Datenblock und die zugehörige Textur-Map zu speichern; und durch das Computergerät eine Wiedergabe des 3D-Bildes im VR-Raum mithilfe des Datenblocks und der zugehörigen Textur-Map auszulösen.
  26. Medium nach Anspruch 25, wobei das Gruppieren der Teilmenge der Vielzahl von Pixelabtastwerten durch einen Quadrangulierungsalgorithmus und/oder einen Partitionierungsalgorithmus durchgeführt wird.
  27. Medium nach Anspruch 25, wobei die Befehle, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, das Computergerät veranlassen, eine Teilmenge der Vielzahl von Pixelabtastwerten in einen Datenblock zu gruppieren, ferner Befehle beinhalten, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, das Computergerät veranlassen: einen Fehlerschwellenwert auf Basis einer Region rund um eine ursprüngliche Kameraposition zu berechnen, wo die LDI-Darstellung der Szene als gültig betrachtet wird; und einen Pixelabtastwert in die Teilmenge der Vielzahl von Pixelabtastwerten für die Gruppierung in den Datenblock auf Basis der Ermittlung einzubeziehen, dass die Fehlermetrik für den Pixelabtastwert größer als der Fehlerschwellenwert ist.
  28. Medium nach Anspruch 25, wobei die Befehle, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, ferner das Computergerät veranlassen: Parameter, die mit dem Datenblock verbunden sind, zu optimieren, wobei das Optimieren einen Gesamtpartitionierungsfehler für die Teilmenge der Vielzahl von Pixelabtastwerten, die in dem Datenblock enthalten sind, minimiert.
DE102017118580.1A 2016-08-24 2017-08-15 Quadrangulierte geschichtete Tiefenbilder Pending DE102017118580A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/246,040 2016-08-24
US15/246,040 US10325403B2 (en) 2016-08-24 2016-08-24 Image based rendering techniques for virtual reality

Publications (1)

Publication Number Publication Date
DE102017118580A1 true DE102017118580A1 (de) 2018-03-01

Family

ID=59702818

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202017104897.7U Active DE202017104897U1 (de) 2016-08-24 2017-08-15 Quadrangulierte geschichtete Tiefenbilder
DE102017118580.1A Pending DE102017118580A1 (de) 2016-08-24 2017-08-15 Quadrangulierte geschichtete Tiefenbilder

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE202017104897.7U Active DE202017104897U1 (de) 2016-08-24 2017-08-15 Quadrangulierte geschichtete Tiefenbilder

Country Status (5)

Country Link
US (1) US10325403B2 (de)
CN (1) CN107784683B (de)
DE (2) DE202017104897U1 (de)
GB (1) GB2558027B (de)
WO (1) WO2018038887A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10306180B2 (en) * 2016-10-21 2019-05-28 Liquidsky Software, Inc. Predictive virtual reality content streaming techniques
US10089796B1 (en) * 2017-11-01 2018-10-02 Google Llc High quality layered depth image texture rasterization
EP3598391B1 (de) * 2018-07-16 2023-09-06 Huawei Technologies Co., Ltd. Rendering mit variabler auflösung
US11363249B2 (en) 2019-02-22 2022-06-14 Avalon Holographics Inc. Layered scene decomposition CODEC with transparency
KR20210030147A (ko) * 2019-09-09 2021-03-17 삼성전자주식회사 3d 렌더링 방법 및 장치
US11593959B1 (en) * 2022-09-30 2023-02-28 Illuscio, Inc. Systems and methods for digitally representing a scene with multi-faceted primitives

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6580425B1 (en) 2000-02-28 2003-06-17 Mitsubishi Electric Research Laboratories, Inc. Hierarchical data structures for surface elements
US6853373B2 (en) * 2001-04-25 2005-02-08 Raindrop Geomagic, Inc. Methods, apparatus and computer program products for modeling three-dimensional colored objects
RU2216781C2 (ru) 2001-06-29 2003-11-20 Самсунг Электроникс Ко., Лтд Основанные на изображениях способ представления и визуализации трехмерного объекта и способ представления и визуализации анимированного объекта
US6954204B2 (en) * 2002-07-18 2005-10-11 Nvidia Corporation Programmable graphics system and method using flexible, high-precision data formats
EP2201784B1 (de) 2007-10-11 2012-12-12 Koninklijke Philips Electronics N.V. Verfahren und einrichtung zum verarbeiten einer tiefenkarte
EP2180449A1 (de) 2008-10-21 2010-04-28 Koninklijke Philips Electronics N.V. Verfahren und Vorrichtung zur Bereitstellung eines geschichteten Tiefenmodells einer Szene
US8379919B2 (en) * 2010-04-29 2013-02-19 Microsoft Corporation Multiple centroid condensation of probability distribution clouds
US20110304619A1 (en) * 2010-06-10 2011-12-15 Autodesk, Inc. Primitive quadric surface extraction from unorganized point cloud data
JP5462093B2 (ja) * 2010-07-05 2014-04-02 株式会社トプコン 点群データ処理装置、点群データ処理システム、点群データ処理方法、および点群データ処理プログラム
EP2562722B1 (de) 2011-08-24 2019-07-10 Karlsruher Institut für Technologie Verfahren und System zu Szenenansicht
KR20130074383A (ko) 2011-12-26 2013-07-04 삼성전자주식회사 다중-레이어 표현을 사용하는 영상 처리 방법 및 장치
KR20140121107A (ko) * 2013-04-05 2014-10-15 한국전자통신연구원 다시점 기반의 홀로그램 생성 방법 및 장치
US9417911B2 (en) * 2014-03-12 2016-08-16 Live Planet Llc Systems and methods for scalable asynchronous computing framework

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IEEE 802.3

Also Published As

Publication number Publication date
DE202017104897U1 (de) 2017-12-15
US20180061119A1 (en) 2018-03-01
CN107784683A (zh) 2018-03-09
GB201713374D0 (en) 2017-10-04
CN107784683B (zh) 2021-10-15
WO2018038887A1 (en) 2018-03-01
GB2558027B (en) 2021-02-10
US10325403B2 (en) 2019-06-18
GB2558027A (en) 2018-07-04

Similar Documents

Publication Publication Date Title
DE102017118580A1 (de) Quadrangulierte geschichtete Tiefenbilder
DE112020003794T5 (de) Tiefenbewusste Fotobearbeitung
DE112007002991B4 (de) Computergraphikschattenvolumen unter Verwendung von hierarchischem Okklusions-Culling
DE102017108096A1 (de) System, verfahren und computerprogrammprodukt zum rendern bei variablen abtastraten mittels projektiver geometrischer verzerrung
DE102017009121A1 (de) Priorisierendes kachelbasiertes virtuelle Realität-Videostreaming mittels adaptiver Ratenzuweisung
DE102015113240A1 (de) System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters
DE112014002469T5 (de) System, Verfahren und Computerprogrammprodukt zur Erzeugung von Bildern für eine augennaheLichtfeldanzeige
DE102016109905A1 (de) Stückweise lineare unregelmäßige Rasterisierung
DE102019118838A1 (de) Virtuelle photogrammetrie
DE112016005809T5 (de) Lichtfeld-Rendering eines Bildes unter Verwendung variabler Rechenkomplexität
DE202012013450U1 (de) Beschriftungspositionierbildwiedergabesystem zur Reduzierung des Kriechens bei Zoom-Aktivitäten
DE102013021046A1 (de) Erzeugung fehlerbefreiter Voxel-Daten
DE102021207678A1 (de) Streamen eines komprimierten lichtfelds
DE112019001702T5 (de) Verfahren, systeme, herstellungsgegenstände und vorrichtungen zur erzeugung digitaler szenen
US20210201574A1 (en) Methods and apparatus to facilitate 3d object visualization and manipulation across multiple devices
DE102015115576A1 (de) Grafikverarbeitungseinheit, ein Grafikverarbeitungssystem mit derselben, und ein dieselbe verwendendes Anti-Aliasing-Verfahren
DE102021104310A1 (de) Reservoir-basiertes räumlich-zeitliches resampling nach wichtigkeit unter verwendung einer globalen beleuchtungsdatenstruktur
DE102013215301A1 (de) System, Verfahren und Computerprogrammprodukt zum Extrudieren eines Modells durch eine zweidimensionale Szene
DE102021109050A1 (de) Durch ein neuronales generative adversarial netzwerk unterstützte videokompression und -übertragung
CN109145688A (zh) 视频图像的处理方法及装置
CN114419099A (zh) 捕捉待渲染虚拟对象的运动轨迹的方法
DE102013021044A1 (de) Erzeugung fehlerbefreiter Voxel-Daten
DE102023105068A1 (de) Bewegungsvektoroptimierung für mehrfach refraktive und reflektierende Schnittstellen
DE102022112488A1 (de) Projektive hash-karten
WO2019042272A2 (en) MULTIPLE VIEW RENDERING SYSTEM AND METHOD

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: MAIKOWSKI & NINNEMANN PATENTANWAELTE PARTNERSC, DE