DE102019118838A1 - Virtuelle photogrammetrie - Google Patents

Virtuelle photogrammetrie Download PDF

Info

Publication number
DE102019118838A1
DE102019118838A1 DE102019118838.5A DE102019118838A DE102019118838A1 DE 102019118838 A1 DE102019118838 A1 DE 102019118838A1 DE 102019118838 A DE102019118838 A DE 102019118838A DE 102019118838 A1 DE102019118838 A1 DE 102019118838A1
Authority
DE
Germany
Prior art keywords
point
scene
edge
light field
computer system
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
DE102019118838.5A
Other languages
English (en)
Inventor
Dmitry Duka
Rev Lebaredian
Jonathan Small
Ivan SHUTOV
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102019118838A1 publication Critical patent/DE102019118838A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • A63F13/525Changing parameters of virtual cameras
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/85Providing additional services to players
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C11/00Photogrammetry or videogrammetry, e.g. stereogrammetry; Photographic surveying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/593Depth or shape recovery from multiple images from stereo images
    • G06T7/596Depth or shape recovery from multiple images from stereo images from three or more stereo images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/24Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/56Particle system, point based geometry or rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

Mehrere Einzelaufnahmen einer Szene werden in einer ausführenden Anwendung (z.B. einem Videospiel) aufgenommen. Wenn jede Einzelaufnahme aufgenommen wird, werden die zugehörigen Farbwerte pro Pixel und ein Abstands- oder Tiefenwert z pro Pixel gespeichert. Auf die Tiefeninformationen aus den Einzelaufnahmen wird zugegriffen, und es wird eine Punktwolke erstellt, die die Tiefeninformationen darstellt. Aus der Punktwolke wird eine Netzstruktur aufgebaut. Das/die Lichtfeld(er) auf der/den Oberfläche(n) der Netzstruktur wird/werden berechnet. Ein Oberflächenlichtfeld wird als Textur dargestellt. Ein Renderer verwendet das Oberflächenlichtfeld mit Geometrieinformationen, um die in den Einzelaufnahmen aufgenommene Szene wiederzugeben. Die reproduzierte Szene kann manipuliert und aus verschiedenen Perspektiven betrachtet werden.

Description

  • HINTERGRUND
  • Die In-Game-Fotografie ist eine relativ neue Kunstform, in der Screenshots von Videospielen zum Beispiel so gestellt und gestaltet werden, wie es ein echter Fotograf könnte. Nvidia Ansel ist ein Beispiel für eine In-Game-Kamera-Funktion, mit der Benutzer professionelle Fotos von Szenen in Spielen machen können.
  • ZUSAMMENFASSUNG
  • In der realen Photogrammetrie werden mehrere Fotos eines Objekts aus verschiedenen Winkeln aufgenommen, aus denen dann eine virtuelle dreidimensionale (3D-) Version des Objekts erstellt werden kann, das manipuliert und aus verschiedenen Perspektiven betrachtet werden kann. In der virtuellen Photogrammetrie wird eine virtuelle Kamera (z.B. bereitgestellt von Nvidia Ansel) anstelle einer realen Kamera von einem Benutzer gesteuert, um Screenshots aufzunehmen, und diese Screenshots werden dann weiter bearbeitet. Im Wesentlichen werden Fotos in einer virtuellen Welt, wie beispielsweise einem Videospiel, aufgenommen.
  • Offenbart werden Verfahren, Systeme und Techniken zur Implementierung einer virtuellen Photogrammetrie.
  • In Ausführungsformen gemäß der vorliegenden Erfindung werden Einzelaufnahmen (Screenshots) einer Szene innerhalb der ausführenden Anwendung (z.B. eines Videospiels) aufgenommen. Während die Einzelaufnahmen aufgenommen werden, kann die virtuelle Welt angehalten (eingefroren) werden, so dass Einzelaufnahmen aus verschiedenen Perspektiven aufgenommen werden können. Wenn jede Einzelaufnahme aufgenommen wird, werden zugehörige Farbwerte (z.B. Rot-, Grün- und Blauwerte) pro Pixel und ein Abstandswert z pro Pixel (die Entfernung von der virtuellen Kamera zum Pixel) gespeichert. Aus den Einzelaufnahmen kann eine Punktwolke mit Tiefeninformationen erstellt werden. Aus der Punktwolke kann dann eine Netzstruktur aufgebaut werden. Das/die Lichtfeld(er) auf der/den Oberfläche(n) der Netzstruktur kann/können dann berechnet werden. In einer Ausführungsform wird ein Lichtfeld unter Verwendung von sphärischen Harmonischen als Kompressionsmechanismus berechnet.
  • In einer Ausführungsform kann ein Oberflächenlichtfeld als Textur dargestellt werden. Ein Renderer kann das Oberflächenlichtfeld mit Geometrieinformationen verwenden, um die in den Einzelaufnahmen aufgenommene Szene in virtuellem 3D wiederzugeben. Die reproduzierte Szene kann manipuliert und aus verschiedenen Perspektiven betrachtet werden. Im Wesentlichen wird eine virtuelle 3D-Einzelaufnahme aus mehreren Einzelaufnahmen erstellt.
  • Die 3D-Einzelaufnahmen können auf verschiedene Weise vorteilhaft eingesetzt werden. Anwendungsfälle sind unter anderem, ohne darauf beschränkt zu sein: Aktivieren von 360-Grad-Stereo mit Positionstracking; Teilen einer Szene (z.B. Teilen eines statischen Teils eines Spiels in einer Social-Networking-Anwendung); Importieren einer Szene in eine andere Anwendung; Verwenden einer Szene als Quellmaterial in einer anderen Anwendung; Erstellen eines Datensatzes (Bibliothek) von virtuellen Objekten, die in verschiedenen Anwendungen verwendet werden können; und 3D-Drucken.
  • Die virtuelle Photogrammetrie in Ausführungsformen gemäß der Erfindung bietet eine Plattform, die es weniger erfahrenen Nutzern genauso wie erfahrenen Fachleuten wie Videospielern ermöglicht, Inhalte leicht zu erstellen und zu teilen.
  • Diese und andere Aufgaben und Vorteile der verschiedenen Ausführungsformen gemäß der vorliegenden Erfindung werden von Fachleuten nach dem Lesen der folgenden detaillierten Beschreibung von Ausführungsformen, die in den verschiedenen Figuren dargestellt sind, erkannt werden.
  • Figurenliste
  • Die beigefügten Zeichnungen, die in diese Beschreibung aufgenommen sind und einen Teil dieser Beschreibung bilden, und in denen gleiche Zahlen gleiche Elemente darstellen, veranschaulichen Ausführungsformen der vorliegenden Offenbarung und dienen zusammen mit der detaillierten Beschreibung dazu, die Prinzipien der Offenbarung zu veranschaulichen.
    • 1 ist ein Flussdiagramm eines Beispiels eines virtuellen Photogrammetrieverfahrens, gemäß Ausführungsformen der Erfindung.
    • 2 ist ein Flussdiagramm eines Beispiels eines Verfahrens zum Erzeugen einer Netzstruktur, gemäß Ausführungsformen der Erfindung.
    • 3 ist ein Flussdiagramm eines Beispiels eines Verfahrens zur Implementierung eines Lochfüllers, gemäß Ausführungsformen der Erfindung.
    • 4 ist ein Flussdiagramm eines Beispiels eines Verfahrens zur Verwendung von sphärischen Harmonischen, gemäß Ausführungsformen der Erfindung.
    • 5 ist ein Blockdiagramm eines Beispiels einer Rechenvorrichtung oder eines Computersystems, das in der Lage ist, Ausführungsformen gemäß der Erfindung auszuführen.
  • DETAILLIERTE BESCHREIBUNG
  • Auf die verschiedenen Ausführungsformen der vorliegenden Offenbarung wird nun ausführlich Bezug genommen, für die Beispiele in den beigefügten Zeichnungen dargestellt sind. Obwohl in Verbindung mit diesen Ausführungsformen beschrieben, versteht es sich, dass sie nicht dazu bestimmt sind, die Offenbarung auf diese Ausführungsformen zu beschränken. Im Gegenteil, die Offenbarung soll Alternativen, Änderungen und Äquivalente umfassen, die in den Inhalt und Umfang der Offenbarung einbezogen werden können. Darüber hinaus werden in der folgenden detaillierten Beschreibung gemäß den vorliegenden Offenbarung zahlreiche spezifische Details dargelegt, um ein umfassendes Verständnis der vorliegenden Offenbarung zu ermöglichen. Es versteht sich dabei, dass die vorliegende Offenbarung ohne diese spezifischen Details ausgeführt werden kann. In anderen Fällen wurden bekannte Verfahren, Prozesse, Komponenten und Schaltungen nicht detailliert beschrieben, um nicht unnötigerweise Aspekte der vorliegenden Offenbarung zu verdecken.
  • Einige Teile der folgenden detaillierten Beschreibungen werden in Form von Prozeduren, Logikblöcken, Verarbeitungen und anderen symbolischen Darstellungen von Operationen an Datenbits in einem Computerspeicher dargestellt. Diese Beschreibungen und Darstellungen sind Mittel, mit dem die Fachkräfte der Datenverarbeitungsbranche die Substanz ihrer Arbeit am effektivsten an andere Fachkräfte weitergeben können. In der vorliegenden Anwendung ist ein Verfahren, ein Logikblock, ein Prozess oder dergleichen als eine selbstkonsistente Folge von Schritten oder Anweisungen konzipiert, die zu einem gewünschten Ergebnis führen. Die Schritte sind diejenigen, die physikalische Manipulationen physikalischer Größen nutzen. In der Regel, wenn auch nicht notwendigerweise, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die in einem Computersystem gespeichert, übertragen, kombiniert, verglichen und anderweitig verarbeitet werden können. Es hat sich als sinnvoll erwiesen, diese Signale, vor allem aus Gründen der allgemeinen Nutzung, als Transaktionen, Bits, Werte, Elemente, Symbole, Zeichen, Samples, Pixel oder dergleichen zu bezeichnen.
  • Es ist jedoch zu beachten, dass alle diese und ähnliche Begriffe mit den entsprechenden physikalischen Größen zu verknüpfen sind und lediglich praktische Bezeichnungen für diese Größen sind. Sofern aus den folgenden Diskussionen nicht ausdrücklich etwas anderes hervorgeht, wird erkannt werden, dass in der gesamten vorliegenden Offenbarung Diskussionen, die Begriffe wie „Berechnen“, „(Unter-)Teilen“, „Vernetzen“, „(Ent-)Projizieren“, „Schneiden“, „Triangulieren“, „Speichern“, „Speichern“, „Konvertieren“, „Rendern“, „Sampling“, „(Wieder-)Triangulation“, „ Codieren“, „Bestimmen“, „Speichern“, „Speichern“, „Multiplizieren“ verwenden,“ „Teilen“, „Abfragen“, „Darstellen“, „Produzieren“, „Testen“, „Clippen“, „Transformieren“, „Mipmapping“, „Casting“, „Konstruieren“, „Reproduzieren“, „Erfassen“, „Pausieren“, „Rechnen“, „Rechnen“, „Zugreifen“, „Rechnen“, „Erzeugen“, „Kopieren“ oder dergleichen, sich auf Handlungen und Prozesse einer Vorrichtung oder eines Computersystems oder ähnlicher elektronischer Rechengeräte oder Prozessoren beziehen. Ein Computersystem oder eine ähnliche elektronische Rechenvorrichtung verarbeitet und transformiert Daten, die als physische (elektronische) Größen dargestellt werden, in Speichern, Registern oder anderen derartigen Informationsspeicher-, Übertragungs- oder Anzeigevorrichtungen.
  • Die hierin beschriebenen Ausführungsformen können im allgemeinen Kontext von computerausführbaren Anweisungen diskutiert werden, die sich auf einem computerlesbaren Speichermedium befinden, wie beispielsweise Programmmodulen, die von einem oder mehreren Computern oder anderen Geräten ausgeführt werden. So können beispielsweise computerlesbare Speichermedien, ohne Einschränkung, nichtflüchtige Computerspeichermedien und Kommunikationsmedien umfassen. Zu den Programmmodulen gehören im Allgemeinen Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., die bestimmte Aufgaben erfüllen oder bestimmte abstrakte Datentypen implementieren. Die Funktionalität der Programmodule kann beliebig kombiniert oder in verschiedenen Ausführungsformen verteilt werden.
  • Computerspeichermedien umfassen flüchtige und nichtflüchtige, wechselbare und nicht wechselbare Medien, die in einem Verfahren oder einer Technologie zur Speicherung von Informationen wie computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen oder anderen Daten implementiert sind. Computerspeichermedien beinhalten, sind aber nicht beschränkt auf, Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), elektrisch löschbares programmierbares ROM (EEPROM), Flash-Speicher (z.B. ein Solid-State-Laufwerk) oder andere Speichertechnologie, Compact-Disc-ROM (CD-ROM), Digital Versatile Disks (DVDs) oder andere optische Speicher, Magnetkassetten, Magnetband, Magnetplattenspeicher oder andere Magnetspeichervorrichtungen oder jedes andere Medium, das zum Speichern der gewünschten Informationen verwendet werden kann und auf das zugegriffen werden kann, um diese Informationen abzurufen.
  • Kommunikationsmedien können computerausführbare Anweisungen, Datenstrukturen und Programmmodule beinhalten und umfassen alle Informationsbereitstellungsmedien. Als Beispiel und nicht als Einschränkung umfassen Kommunikationsmedien drahtgebundene Medien wie ein drahtgebundenes Netzwerk oder eine direkte Verbindung und drahtlose Medien wie Akustik, Hochfrequenz (RF), Infrarot und andere drahtlose Medien. Kombinationen aus einer der oben genannten Möglichkeiten können auch in den Anwendungsbereich von computerlesbaren Medien fallen.
  • 1 ist ein Flussdiagramm 100 eines Beispiels für ein virtuelles Photogrammetrieverfahren, gemäß Ausführungsformen der Erfindung. Das Flussdiagramm 100 kann als computerausführbare Anweisungen implementiert werden, die sich auf einem computerlesbaren Speichermedium befinden (z.B. im Speicher des Computersystems 500 in 5).
  • In Block 102 von 1 werden mehrere Einzelaufnahmen (Screenshots; z.B. Tiefen- und Farbbildaufnahmen) einer Szene innerhalb einer ausführenden Anwendung (z.B. eines Videospiels) aufgenommen. Während die Einzelaufnahmen aufgenommen werden, kann die virtuelle Welt angehalten (eingefroren) werden, so dass Einzelaufnahmen aus verschiedenen Perspektiven aufgenommen werden können.
  • Obwohl Einzelaufnahmen aus verschiedenen Perspektiven aufgenommen werden, um die Szene aufzunehmen, muss die Szene nicht aus allen Richtungen (Winkeln) aufgenommen werden. So ist es beispielsweise nicht notwendig, die Szene aus allen Richtungen aufzunehmen, wenn die Absicht besteht, die Szene nur aus einem bestimmten Winkel oder einer Reihe von Winkeln zu betrachten oder zu rekonstruieren. Somit werden in einer Ausführungsform nur eine Einzelaufnahme im vorgesehenen Betrachtungswinkel und Einzelaufnahmen in ausgewählten Winkeln nahe/um den beabsichtigten Betrachtungswinkel aufgenommen.
  • In einer Ausführungsform werden Einzelaufnahmen in Reaktion auf eine Benutzereingabe aufgenommen (mit anderen Worten, Einzelaufnahmen werden manuell aufgenommen). In einer Ausführungsform werden Einzelaufnahmen automatisch aufgenommen. Eine Kombination aus manuellen und automatischen Funktionen kann verwendet werden, um Einzelaufnahmen aufzunehmen.
  • In Block 104 werden bei der Aufnahme jeder Einzelaufnahme zugehörige Farbwerte (z.B. rote, grüne, blaue (RGB) Werte) pro Pixel und ein Abstands- oder Tiefenwert z pro Pixel (der Abstand der virtuellen Kamera zum Pixel) gespeichert.
  • In Block 106 wird auf die Tiefeninformationen aus den Snapshots zugegriffen und eine Punktwolke konstruiert, die die Tiefeninformationen darstellt.
  • In Block 108 wird aus der Punktwolke eine Netzstruktur aufgebaut. In Ausführungsformen wird die Netzstruktur vereinfacht, das Netz parametrisiert (z.B. UVgemappt) und aus dem parametrisierten Netz wird ein Multi-Sample-Atlas erstellt (siehe weiter unten).
  • In Block 110 wird/werden das/die Lichtfeld(er) auf der/den Oberfläche(n) der Netzstruktur berechnet. In einer Ausführungsform wird ein Lichtfeld unter Verwendung von sphärischen Harmonischen (SH) als Kompressionsmechanismus berechnet.
  • In einer weiteren Ausführungsform werden die Lichteigenschaften für eine Reihe von festen Richtungen gespeichert. Wenn dann Licht / Farbe für eine bestimmte Richtung wiedergegeben wird, kann es durch Interpolation von Werten für benachbarte (z.B. die nächstgelegene) Richtungen, die gespeichert wurden, reproduziert werden.
  • SH kann zur Codierung des einfallenden Lichts an einem Punkt verwendet werden. Diese Informationen können beispielsweise verwendet werden, um das Oberflächenerscheinungsbild basierend auf Materialparametern und Blickrichtung zu bewerten. In Ausführungsformen wird nicht das einfallende Licht gespeichert, sondern das von einer Oberfläche emittierte oder reflektierte Licht. So wird SH verwendet, um das endgültige Aussehen der Oberfläche zu speichern. Wenn die Oberfläche dann auf einem Bildschirm gezeichnet wird, kann ihre Farbe direkt mit SH dekodiert werden, ohne weitere Berechnungen durchführen zu müssen.
  • In Block 112 wird in einer Ausführungsform ein Oberflächenlichtfeld als Textur dargestellt.
  • In Block 114 verwendet ein Renderer in einer Ausführungsform das Oberflächenlichtfeld mit Geometrieinformationen, um die in den Einzelaufnahmen aufgenommene Szene in virtuellem 3D wiederzugeben. Im Wesentlichen wird eine virtuelle 3D-Einzelaufnahme aus mehreren Einzelaufnahmen erstellt. Die reproduzierte Szene kann aus verschiedenen Perspektiven (z.B. als Reaktion auf Benutzereingaben) angezeigt, manipuliert und betrachtet werden.
  • Im Folgenden wird näher auf die Operationen eingegangen, die in dem soeben beschriebenen Verfahren durchgeführt wurden.
  • Aufnahme von Einzelaufnahmen innerhalb einer Anwendung
  • (Blöcke 102 und 104 von Figure 1)
  • Der 3D-Rekonstruktionsprozess verwendet Aufnahmen aus mehreren Ansichten. Jede Aufnahme enthält Informationen über die Kamera (wie Position, Ausrichtung und/oder Projektion) sowie Tiefen- und Farbinformationen (z.B. RGB) pro Pixel.
  • Die Qualität der Aufnahmen ist ein wesentlicher Faktor für die Qualität der Rekonstruktion. Wenn beispielsweise ein Teil der zu rekonstruierenden Szene oder des zu rekonstruierenden Objekts („Modell“) nicht erfasst wird, kann dies einen leeren Bereich erzeugen; oder wenn ein Teil des Modells aus großer Entfernung erfasst und somit mit einer niedrigen Frequenz abgetastet ist, kann die Qualität der Rekonstruktion beeinträchtigt werden.
  • Im Aufnahmemodus wird ein Benutzer in einer Ausführungsform dadurch geführt, dass er die Möglichkeit hat, die Qualität jedes Pixels zu sehen, das auf die Szene projiziert wird, die er gerade betrachtet, so wie sie in den bereits gemachten Aufnahmen enthalten ist.
  • So kann beispielsweise im Aufnahmemodus die Farbe eines Pixels je nach Qualität des Pixels von seiner normalen Farbe auf beispielsweise mehr Rot geändert werden. Wenn also Teile der Projektion nicht gerötet sind, weiß der Benutzer, dass diese Teile nicht erfasst wurden. Dies kann für den Benutzer akzeptabel sein (z.B. will der Benutzer diesen Teil der Szene nicht), oder es kann verwendet werden, um dem Benutzer anzuzeigen, dass eine Aufnahme dieses Teils erforderlich ist.
  • Zu wissen, dass ein Pixel Teil einer Aufnahme ist, ist nützlich, und es kann auch nützlich sein, die Qualität der Aufnahme eines Pixels anzuzeigen. Die Qualität kann in diesem Zusammenhang sein, dass ein Sample von geringerer Qualität ist, wenn es sich in einem Gradienten befindet, der in Bezug auf die Kamera sehr hochkant ist. Das heißt, wenn die Normale an der Position des Pixels auf dem Netz ausreichend senkrecht zur Blickrichtung ist, kann die Qualität dieses Pixels als niedriger angesehen werden, als wenn die Blickrichtung kollinear oder kollinear mit der Normalen wäre.
  • Ein weiteres Maß für die Qualität ist die Auflösung des Samplings. Wenn eine einzelne Aufnahme eines Objekts gemacht wird, dann wird die Qualität reduziert, wenn man sich dem Objekt nähert, da es nun mehr Informationen über einen kleineren Teil des Objekts gibt. Das bedeutet, dass in dem obigen Beispiel die Rötung mit abnehmendem Abstand zum Objekt abnehmen würde. Dies ist relevant für eine Situation, in der eine Textur auf einem Objekt aus der Ferne erfasst wird, dann die aufgenommene Textur auf dem rekonstruierten Modell des Objekts platziert wird und das Texturobjekt aus einer kürzeren Entfernung betrachtet wird. Infolgedessen würde die Texturqualität durch Unterabtastung beeinträchtigt. Andererseits, wenn ein Screenshot einer hochauflösenden Textur auf einem Dreieck den gesamten Bildschirm einnimmt und nicht nur eine kleine Anzahl von Pixeln (z.B. drei Pixel), wie es bei einer Aufnahme aus der Ferne der Fall wäre, dann wird die Textur mit einer höheren Auflösung aufgenommen und die Qualitätsminderung wird geringer sein, wenn man sich dem Objekt nähert.
  • Es wird ein Beispiel betrachtet, in dem ein Auto erfasst wird. Eine einzelne Aufnahme von der Vorderseite des Fahrzeugs kann so vorgenommen werden, dass das gesamte Fahrzeug im Blickfeld ist. Diese Pixel werden dunkler rot sein, aber Pixel, die von einer Oberfläche in einem schrägeren Winkel kommen (z.B. die Motorhaube des Autos), werden heller rot sein, da ihre Qualität geringer ist. Mit zunehmender Schräglage des Winkels nimmt die Oberfläche weniger Platz auf dem Bildschirm ein und es können mehr Informationen (z.B. Geometriedetails und Texturdetails aus der Tiefe bzw. Bilderfassung) verloren gehen. Keines der Pixel an der Seite des Fahrzeugs ist rot, weil es nicht aufgenommen wurde. Wenn die Aufnahme von der Seite statt von vorne erfolgen würde, würde die Aufnahme bei Betrachtung von vorne gerötet werden. Eine Annäherung an ein Rad führt beispielsweise dazu, dass die Rötung heller wird (weil die Qualität aus dieser Perspektive geringer ist als aus der frontalen Perspektive). Wenn das Rad aus einer direkten Perspektive erfasst wird, wird es ein dunkleres Rot sein.
  • Zu den Vorteilen der gerade beschriebenen Ansätze gehören: Der Benutzer hat die Kontrolle darüber, welche Teile des Modells aufgenommen werden; der Benutzer kann während der Aufnahme sehen, welche Teile des Modells nicht abgedeckt wurden; und es ist möglich, einen Hinweis auf die Qualität einer bestimmten Aufnahme zu sehen.
  • Erzeugen einer Punktwolke aus Einzelaufnahmedaten
  • (Block 106 von Figur 1)
  • In Ausführungsformen ist ein Punktsatz ein abstrakter Datentyp, der einen n-dimensionalen (z.B. 3D) Punkt beinhalten kann.
  • In Ausführungsformen ist eine Darstellung ein Octree, mit Blättern, die einen oder mehrere Punkte enthalten, die sich alle in einem achsenorientierten Begrenzungsrahmen (Aabb) -Knoten über ihm im Octree befinden müssen. Zeiger können verwendet werden, um Referenzen auf Knoten im Octree darzustellen, und ein Knoten in einem Octree enthält den Typ des Knotens (z.B. einen Blattknoten oder einen inneren Knoten).
  • In Ausführungsformen gemäß der Erfindung wird anstelle von Zeigern eine spezielle Kodierung verwendet, die die Auswahl einer Größe für die Speicherung einer solchen Darstellung ermöglicht. Für eine universell einsetzbare Darstellung können 32 Bit verwendet werden. Dadurch wird die Größe um die Hälfte reduziert, die normalerweise für Zeiger in einem 64-Bit-System benötigt wird. Dadurch wird auch vermieden, dass jeder Knoten speichert, welcher Typ von Knoten er ist, was den Overhead weiter reduziert. Darüber hinaus werden der Overhead und die Ineffizienz bei der Speicherung von Blättern und Knoten durch die dynamische Zuordnung vermieden, bei der der Platz für den Overhead des Allokators verbraucht wird und der Bezugsort nicht ideal ist.
  • Die Kodierung des Knotentyps kann somit aus dem Knoten entfernt werden. Die Referenz weiß stattdessen, worauf sie zeigt. Es gibt mindestens drei Referenztypen: Nichts, Blattknoten und innerer Knoten.
  • In einer Ausführungsform wird anstelle eines Zeigers der Index eines bestimmten Knotens innerhalb der Referenz zusammen mit dem Typ kodiert. Die eigentlichen Knoten werden in einer anderen, indizierbaren Darstellung gespeichert, z.B. in einem Array. Eine Alternative ist es, Blöcke fester Größe in Zweierpotenzen einzusetzen und den Block getrennt vom Index innerhalb eines Blocks nachzuschlagen.
  • Ein Beispiel für eine Möglichkeit, dies in C++ zu beschreiben, ist in Tabelle 1 dargestellt.
    Figure DE102019118838A1_0001
    Figure DE102019118838A1_0002
  • Ein Blatt kann viele Punkte halten. Wenn ein Blatt voll ist, kann es in eine „OctNode“ mit „LeafNodes“ (Tabelle 1) darunter unterteilt werden.
  • Mehrere Punkte können den gleichen Wert haben, aber nicht mehr als „NOT_USED“ (Tabelle 1). Dies kann nützlich sein, wenn zusätzliche Daten mit der Position gespeichert werden, wenn die Klasse PointSet (Tabelle 1) als eine Möglichkeit verwendet wird, Daten schnell aus einer Punktwolke nachzuschlagen und einige Punkte mit unterschiedlichen Daten an der gleichen Position sind.
  • Diese Ansätze bieten eine Reihe von Vorteilen: mehr Kontrolle über die Größe einer Referenz (sie muss nicht pointergroß sein), abhängig von den Anforderungen des verwendeten Octrees; die Speicherung ist für den Knotentyp in einem Knoten nicht erforderlich; mehrere Punkte an der gleichen Position sind erlaubt; und Knotentypen werden in Vektoren gespeichert, was für die Speichernutzung besser ist, die Fragmentierung reduziert und die Cache-Kohärenz verbessert.
  • Konstruieren eines Netzes aus der Punktwolke
  • (Block 108 von Figur 1)
  • Das Vernetzen von großen Szenen, die auf einer größeren Anzahl (z.B. Hunderten) von Screenshots basieren, kann viel Speicherplatz erfordern. In einer Ausführungsform wird dies durch Unterteilung einer Meshing-Domäne in mehrere sich überlappende Blöcke und anschließende parallele Vernetzung in den Blöcken (z.B. auf unterschiedlicher Hardware) erreicht.
  • In einer Ausführungsform wird eine quadtree-basierte Lösung verwendet, um Polygone aus dem Tiefenpuffer zu entfernen und ein Polygon (z.B. ein Quad oder Dreieck) zu unterteilen. Diese Methode ist einfach und schnell.
  • In einer weiteren Ausführungsform wird eine Voronoi-basierte Rekonstruktion verwendet. Aus allen Ansichten wird eine Punktwolke erzeugt, und dann werden benachbarte Punkte verbunden, um eine endgültige Oberfläche zu erhalten. Dazu kann ein lokales zweidimensionales (2D) Voronoi-Diagramm verwendet werden. Jeder Punkt in der Punktwolke enthält eine Normale, die aus den Aufnahmeinformationen berechnet werden kann.
  • 2 ist ein Flussdiagramm 200 eines Beispiels eines Verfahrens zum Erzeugen einer Netzstruktur, gemäß Ausführungsformen der Erfindung. Das Flussdiagramm 200 kann als computerausführbare Anweisungen implementiert werden, die sich auf einem computerlesbaren Speichermedium befinden (z.B. im Speicher des Computersystems 500 in 5).
  • In Block 202 von 2 wird für jeden Punkt in der Punktwolke ein Polygon erzeugt, das um den Punkt zentriert und senkrecht zur Normale für diesen Punkt ist.
  • In Block 204 wird das Polygon gegenüber einem Nachbarpunkt abgeschnitten, indem eine Schnittebene in der Mitte des Segments platziert wird, das den jeweiligen Punkt und den Nachbarpunkt verbindet.
  • In Block 206 wird jedes Polygon, das sich aus den Operationen von Block 204 ergibt, trianguliert, um die Netzstruktur zu erzeugen. Triangulation oder Triangulierung ist die Zerlegung, Umwandlung oder Abbildung eines Polygons in einen Satz von Dreiecken. In Ausführungsformen ist jedes Polygon nicht separat trianguliert. Wie im Folgenden beschrieben, enthält jedes Polygon Informationen über seine Nachbarn, so dass die Polygone für eine gesamte Struktur in eine andere Darstellung umgewandelt oder abgebildet werden können, insbesondere in eine Gruppe von Dreiecken aufgrund der direkten Beziehung zwischen einem Voronoi-Diagramm und einer Delaunay-Triangulation.
  • Genauer gesagt, wird in einer Ausführungsform für jeden Punkt in der Punktwolke ein Polygon (z.B. ein Basisquad) so erzeugt, dass es um einen Punkt und senkrecht zur Punktnormale zentriert ist. Dann wird dieses Polygon gegen Nachbarpunkte geschnitten, indem eine Schnittebene in der Mitte des Segments platziert wird, die den Basispunkt mit einem benachbarten verbindet. Die ID (Index) eines Punktes, der einen Schnitt gebildet hat, wird gespeichert.
  • In dieser Ausführungsform ist jedes resultierende Polygon eine Voronoi-Zelle, und es enthält alle Punktindizes, die es bilden. Diagramme der Zellen können in eine Delaunay-Triangulation umgewandelt werden, da eine Beziehung zwischen einem Voronoi-Diagramm und einer Delaunay-Triangulation besteht.
  • Zur Verbesserung der Qualität kann eine adaptive Punktwolkengenerierung eingesetzt werden. Ein Punkt wird aus einer Eingangspunktwolke abgetastet, wenn es keine Punkte in einer Nachbarschaft gibt oder mit einer Wahrscheinlichkeit, die von normalen Vektorschwankungen abhängt. Dies verbessert die Abtastung an den Kanten.
  • Der Voronoi-basierte Ansatz ist schnell und zeigt gute Ergebnisse auf Oberflächen mit geringer Krümmung und geringem Rauschen in der Punktwolke.
  • Der soeben beschriebene Voronoi-basierte Ansatz kann eine Oberfläche mit mehreren Löchern erzeugen. Um die Anzahl der Löcher in der resultierenden Oberfläche zu reduzieren, kann ein Lochfüller implementiert werden, um Schlingen zu finden, die weniger Kanten als ein Schwellenwert enthalten, und dann verwendet werden können, um diese Schlingen neu zu triangulieren.
  • 3 ist ein Flussdiagramm 300 eines Beispiels für ein Verfahren zur Implementierung eines Lochfüllers, gemäß Ausführungsformen der Erfindung. Das Flussdiagramm 300 kann als computerausführbare Anweisungen implementiert werden, die sich auf einem computerlesbaren Speichermedium befinden (z.B. im Speicher des Computersystems 500 in 5).
  • In Block 302 von 3 wird jede Kante von Dreiecken in der Netzstruktur überprüft, um festzustellen, ob es eine benachbarte Kante eines benachbarten Dreiecks gibt. Wenn es keine benachbarte Kante gibt, dann wird die Kante als eine Randkante an einer Kante eines Lochs in der Netzstruktur identifiziert.
  • In Block 304 werden Kanten, die als Randkanten identifiziert wurden, zu Schlingen geformt, wobei jede der Schlingen einem entsprechenden Loch in der Netzstruktur entspricht.
  • In Block 306 wird jede der Schlingen trianguliert.
  • Genauer gesagt, ist in einer Ausführungsform ein Lochfüller wie folgt implementiert. Auf alle Netzdreiecke wird zugegriffen und alle Netzdreiecke werden ausgewertet. Jede Kante eines Dreiecks wird überprüft, um festzustellen, ob es eine ähnliche Kante in einem anderen Dreieck gibt. Wenn es keine andere solche Kante gibt, dann liegt die Kante auf einem Rand eines Lochs. Aus allen Randkanten wird dann ein Diagramm erstellt. Schlingen, die Löcher im Eingabefeld sind, können mit einer Tiefensuche gefunden werden. Jede Schlinge wird dann trianguliert. In einer solchen Ausführungsform werden zur Qualitätsverbesserung nur Schlingen trianguliert, die eine Anzahl von Kanten aufweisen, die kleiner als ein vordefinierter Schwellenwert sind.
  • Ein dritter Ansatz basiert auf einer signierten Distanzfunktion (SDF), die aus einer Punktwolke generiert ist, und ist mit einem Verfahren wie Marching Cubes, SurfaceNet oder Dual Contouring vernetzt. Um die Verarbeitung zu beschleunigen, kann eine Octree-Suchstruktur verwendet werden. SurfaceNet weist eine gute Qualität auf und benötigt weniger Berechnungen.
  • In einer Ausführungsform von SurfaceNet wird jeder Vertex als Mittelpunkt eines Voxels erzeugt, der einen SDF-Zeichenwechsel aufweist. Um die Qualität zu verbessern, wird dann eine zusätzliche Verarbeitung auf solche Knoten angewendet.
  • Für jeden Voxel, der einen SDF-Vorzeichenwechsel aufweist, berechnet Dual Contouring Schnittpunkte von Voxelkanten mit einer SDF-Nullwertfläche und berechnet auch Normalvektoren an diesen Punkten. Diese Punkte werden dann zur Berechnung der endgültigen Oberflächenpunkte verwendet, um eine spezielle Funktion zu minimieren.
  • In Ausführungsformen gemäß der vorliegenden Erfindung wird ein Ansatz verwendet, der weniger komplex ist als das Dual Contouring. In diesen Ausführungsformen werden die Punkte, an denen sich Kanten mit einer SDF-Nullwertfläche schneiden, wie beim Dual Contouring berechnet. Ein Endpunkt, der der Massenschwerpunkt der berechneten Punkte ist, kann dann bestimmt werden. Ein endgültiges Netz kann durch Verbinden der im vorherigen Schritt berechneten Eckpunkte von Voxeln erzeugt werden, die eine gemeinsame Kante teilen, die einen Vorzeichenwechsel aufweist. Die Qualität des resultierenden Netzes kann durch einen Octree verbessert werden, um eine höhere Voxelauflösung dort zu erreichen, wo sie benötigt wird.
  • Der SDF-Ansatz zeigt gute Ergebnisse. Zusätzliche Qualitätssteigerungen bei der Netzrekonstruktion können durch eine mehrstufige SDF-Restauration erreicht werden.
  • Anstelle eines Triangulators, der Schlingen als äußere Schlingen oder Löcher klassifiziert haben muss, kann ein Klassifizierer verwendet werden. Der Klassifikator findet Schlingen aus einer Polygonsuppe der Kanten und bestimmt dann über Fläche und Einschluss, welche Löcher und welche äußere Schlingen sind. Der Klassifikator ordnet auch Löcher der äußeren Schlinge zu, zu der sie gehören. Sie kann als Stufe vor der Triangulation in einem dreiecksbasierten Ansatz verwendet werden.
  • Boolesche Vereinigung der Darstellung von Ansichtsvolumina
  • Wie vorstehend beschrieben, werden mehrere Ansichten einer Szene aufgenommen, und jede Aufnahme enthält Informationen über die Kamera (wie Position, Ausrichtung, Projektions- und Tiefeninformationen). In Ausführungsformen wird aus den Mehrfachaufnahmen eine 3D-Rekonstruktion der Szene erstellt. In Ausführungsformen wird mit den Mehrfachaufnahmen eine Darstellung erzeugt, mit der schnell Informationen über die Szene abgefragt werden können. In Ausführungsformen wird ein Satz von Ansichten und/oder Screenshots von einer Reihe von Punkten im Raum erzeugt, und der Satz von Ansichten/ Screenshots kann für einen Betrachter, der die Szene betrachtet, erneut abgespielt werden. In letzteren Ausführungsformen kann es vorkommen, dass ein 3D-Modell nicht in die Darstellung einbezogen wird; stattdessen werden Bilder ausgewählt (möglicherweise während der Fahrt), um die Ansicht der Kamera darzustellen, die verwendet wird, um die aufgenommene Szene zu betrachten. In Ausführungsformen wird SDF zur Darstellung der gesamten Szene verwendet, wobei in diesem Fall ein 3D-Modell möglicherweise nicht in die Darstellung einbezogen wird.
  • Eine Möglichkeit, dies zu tun, besteht darin, jede Ansicht (Kombination aus Kamera und Tiefenpuffer) so zu behandeln, dass sie ein Stück leeren Raumes definiert. Es kann schnell bestimmt werden, ob sich ein Punkt im realen Raum innerhalb dieses Volumens befindet, indem man ihn in den Pixelraum des Tiefenpuffers projiziert und seine Tiefe gegen die Tiefenpuffer-/Nahschnittebene testet. So beschreibt die Ansicht im Wesentlichen ein aus dem „festen Raum“ herausgearbeitetes leeres Volumen.
  • Mehrere Ansichten können verwendet werden, um eine 3D-Approximation einer aufgenommenen Szene zu beschreiben. Durch die Boolesche Vereinigung aller von allen Ansichten beschriebenen Volumina wird das erzeugte Volumen eine 3D-Darstellung der Szene enthalten. Je mehr Ansichten, die verschiedene Teile der Szene betrachten, desto mehr wird die Darstellung herausgearbeitet sein. Bereiche in der realen Szene, die nicht erfasst werden, können als gefüllt erscheinen, d.h. in einem Ansatz werden Teile des Volumens, die nicht erfasst wurden, konservativ als solide angesehen. Dies kann je nach Nutzung von Vorteil sein. Dadurch entsteht immer eine geschlossene Oberfläche: Da jedes Ansichtsvolumen geschlossen ist, muss daher auch die Vereinigung geschlossen sein.
  • Um festzustellen, ob sich ein Punkt im realen Raum innerhalb oder außerhalb des von allen Ansichten definierten Raums befindet (die Boolesche Vereinigung der von jeder Ansicht definierten Volumen), wird der Punkt gegen jede Ansicht getestet. Wenn sich ein Punkt innerhalb einer Ansicht befindet, muss er innerhalb der Vereinigung sein; und wenn er außerhalb aller Ansichten liegt, ist er außerhalb der Vereinigung.
  • Wenn es viele Ansichten gibt, kann eine räumliche Hierarchie (z.B. ein Aabb-Baum der Volumina) verwendet werden, um schnell zu entscheiden, in welchen Ansichten sich ein Punkt befinden könnte.
  • Diese Technik bietet eine Reihe von Vorteilen. Das resultierende Volumen wird immer geschlossen. Der Test für innen und außen ist schnell, einfach und klar definiert. Ein Bestimmen, ob sich ein Punkt innerhalb oder außerhalb einer Ansicht befindet, ist O(1): eine Matrix Multiplikation, eine Teilung und ein Sample. Ein Bestimmen der Booleschen Vereinigung mehrerer Ansichten ist O(n), wobei n die Anzahl der Ansichten ist, oder 0(log2(n)) mit hierarchischer Begrenzung. Die Darstellung ist kompakt und stellt keine Annäherung an die Darstellung dar. Die Grundwahrheitsdaten können direkt bei dem Sampling verwendet werden. Die Darstellung ist sehr kompatibel mit Grafikprozessoren (GPUs) und entspricht fast genau der Hardware (eine Projektion und ein Tiefenpuffer Sample/Test).
  • Volumetrisches Sampling des Ansichtsraums
  • Die obige Diskussion über die Boolesche Vereinigung der Ansichtsvolumendarstellung beschreibt einen Mechanismus zum schnellen Bestimmen einer 3D-Darstellung einer Sammlung von Ansichten, die durch die Kamera (Position, Ausrichtung, Projektion) und den Tiefenpuffer definiert sind. In dieser Diskussion ist die Darstellung implizit: Sie bietet einen Mechanismus, um schnell festzustellen, ob sich ein bestimmter Punkt im realen Raum entweder innerhalb oder außerhalb der Vereinigung der Volumen befindet. Hier wird diskutiert, wie man damit eine explizite Darstellung erzeugt und für volumetrische Abfragen verwendet.
  • Ein Mechanismus zur Erzeugung einer volumetrischen Darstellung ist der Marching Cubes-Algorithmus. Um diesen Algorithmus nutzen zu können, ist es sinnvoll, ein Aabb gegen das Volumen zu testen.
  • Für einen Algorithmus des Dual-Contour-Marching-Cubes (eine Version von Marching-Cubes, die Ecken und Kanten berücksichtigen kann) wird ein Abstand zu einer Oberfläche entlang einer Kardinalachse gemessen und die Normale an diesem Schnittpunkt bestimmt.
  • Konzeptionell definieren Stumpf- und Tiefenpuffer für jede Ansicht ein Volumen. Diese Volumen des kombinierten Stumpf- und Tiefenpuffers können im Folgenden als „Ansichtsvolumen“ bezeichnet werden. Die Darstellung des Ansichtsvolumens ist relativ kompakt und eignet sich zum Ausstrahlen von Strahlen und zum Bestimmen von Normalen an Schnittpunkten. Ein Strahlenwurf kann beschleunigt werden, indem die Tiefenwerte in Mipmaps gespeichert werden, die die Tiefenausdehnung eines Pixels enthalten. Die Normale wird dann bestimmt, indem die Normale des Dreiecks berechnet wird, das zuerst vom Strahl getroffen wird (die Dreiecke sind zwei pro Pixel definiert). Ein Volumen kann aus den mehreren Aufnahmen erstellt werden, indem man eine Vereinigung aller dieser Ansichtsvolumen durchführt. Dadurch entsteht immer eine geschlossene Oberfläche: Da jedes Ansichtsvolumen geschlossen ist, muss daher auch die Vereinigung geschlossen sein.
  • Ein Aabb kann gegen das Ansichtsvolumen getestet werden. Dies ermöglicht die Verwendung der gleichen Logik wie zuvor beschrieben, um zu bestimmen, ob sich das Aabb innerhalb oder außerhalb befindet. Nämlich, wenn es sich innerhalb (oder teilweise innerhalb) einer Ansicht befindet, ist das Ergebnis innerhalb/teilweise innerhalb. Wenn es außerhalb aller Ansichten liegt, ist es außerhalb. Ein Punkt befindet sich innerhalb dieses Volumens, wenn er sich innerhalb der Ebenen des Volumens und auch im Tiefenpuffer befindet. Dies kann für einen Punkt im realen Raum berechnet werden, indem man ihn zu einem Pixelraum umwandelt. Wenn der Pixelflächenpunkt außerhalb des Stumpfes liegt (z.B. abgeschnitten), ist er trivial außerhalb. Er befindet sich im Tiefenpuffer, wenn er kleiner oder größer als der Wert an dieser Pixelposition im Tiefenpuffer ist, abhängig von der Tiefenreihenfolge des Tiefenpuffers. Damit ein Punkt im Inneren sein kann, muss er sich also im Ansichtsstumpf und im Tiefenpuffer befinden.
  • Um den Test durchzuführen, wird ein Aabb ungefähr in den Schneideraum projiziert, abgeschnitten, und dann wird das resultierende Rechteck aus Texeln verwendet, um zu testen, ob es einen möglichen Schnittpunkt gibt. Wenn es einen möglichen Schnittpunkt gibt, kann das Aabb des realen Raums gegen jede geeignete Darstellung im realen Raum des darunter liegenden Tiefenpuffers getestet werden. So könnte beispielsweise jedes Pixel im Tiefenpuffer als zwei Dreiecke im realen Raum dargestellt werden.
  • Ein effizienter Weg, dies zu tun, ist, die Ecken des Aabb im realen Raum zu nehmen und sie in den Kameraraum zu verwandeln, während ihr Kameraraum Aabb bestimmt wird. Mit dem Kameraraum Aabb kann das Minimum und Maximum des Aabb in den Ansichtsschneideraum umgewandelt werden. Dieses Volumen ist typischerweise größer als das ursprüngliche Aabb, aber es ist konservativ, so dass es immer das Volumen des AAbb im realen Raum enthält. Eine imaginäre Linie im Schneidraum kann vom minimalen bis zum maximalen Punkt verlängert werden. Das Volumen wird in w (oder z) abgeschnitten. Wenn diese Linie außerhalb des Ansichtsvolumens abgeschnitten ist, dann ist der Stumpf nach außen gerichtet und der Test ist abgeschlossen. Anschließend wird das Aabb durch w (bekanntermaßen größer als 0,0f) geteilt und in 2D normalisierten Gerätekoordinaten (NDC) abgeschnitten.
  • Das Ergebnis ist ein Rechteck, das sich vollständig im NDC befindet. Dies definiert die Pixel, die der Aabb kontaktieren könnte (und weil es eine konservative Bestimmung ist, einige, die er nicht kontaktieren kann).
  • Ein engeres NDC/Pixel-Raumrechteck kann erhalten werden, wenn Aabb transformiert und abgeschnitten wird, und dann zur Berechnung der Grenzen verwendet wird. Dies erfordert jedoch ein komplexeres und damit rechenintensives Schneiden und würde acht Teilungen erfordern, auch ohne Schneiden und wenn alle Punkte innerhalb liegen. Die oben beschriebene näherungsweise Technik benötigt nur zwei Divisionen.
  • Der gerade beschriebene Prozess kann für jeden Punkt durchgeführt werden, und auch kann ein Aabb Millionen von Pixeln abdecken, wenn es in den NDC/Pixelraum projiziert wird und sich vollständig innerhalb oder außerhalb befindet, so dass der Prozess durch Reduzierung der Anzahl der Tests verkürzt werden kann.
  • In einer Ausführungsform wird zur Reduzierung der Anzahl der Tests eine Form des Mipmapping auf dem Tiefenpuffer verwendet, wobei jedes „Pixel“ jeder Mipmap den Minimal- und Maximalwert der von ihnen abgedeckten Tiefenpufferwerte enthält. Die Mipmap-Generierung kann schnell durchgeführt werden, indem Minimal-/Maximalwerte für die detaillierteste erforderliche Mipmap-Ebene erzeugt werden und dann die nächstkleinere Ebene erzeugt wird, indem das Minimum/Maximum der vier Pixel darunter genommen wird. Dies beschleunigt die Leistung erheblich, da nach der Projektion des Aabb in den Pixelraum zuerst die nächstgelegene Mipmap-Ebene für diese Größe getestet wird. Wenn die Tiefenausdehnung des Aabb nicht mit der der zugehörigen Texel übereinstimmt, lässt sich der Schnittpunkt leicht berechnen.
  • Mit dem realen Aabb im NDC/Pixel-Raum kann die Achse mit der größten Länge gefunden werden. Diese Achse kann verwendet werden, um die detaillierteste Mipmap auszuwählen, bei der ein einzelnes Sample die Gesamtheit des Pixelraumrechtecks enthält. Der Tiefenbereich des Aabb kann dann im Pixelraum gegen den Mipmap-Tiefenbereich getestet werden. Wenn es keine Überlappung gibt, kann das Aabb als innerhalb oder außerhalb des Volumens bestimmt werden. Wenn dies nicht feststellen kann, ob sich der Aabb innerhalb oder außerhalb des Volumens befindet, dann iteriert der Prozess rekursiv zur nächstdetaillierten Mipmap, wobei Pixel verworfen werden. Dies wird wiederholt, bis die Position des Aabb in Bezug auf das Volumen (z.B. innerhalb oder außerhalb des Volumens) eindeutig bestimmt werden kann. Wenn nicht, dann kann der Test mit der nächstgrößeren Mipmap eine Stufe höher wiederholt werden, wobei bei einem Schnittpunkt bis zum Tiefenpuffer vorgegangen wird und der Tiefenpuffer nur dort getestet wird, wo sich die Tiefenbereichswerte schneiden. Wenn die höchste Detaillierungsstufe (der Tiefenpuffer) erreicht ist, werden die tatsächlichen Dreiecke gegen das Aabb getestet.
  • Es ist auch möglich, einen anspruchsvolleren Schnitttest zu verwenden, bei dem jeder Tiefenbereich in einer Mipmap ein achtseitig konvexes Volumen im realen Raum definiert. Das Testen auf die Schnittmenge dieser Volumen (mit Separation Axis Test (SAT), Xeno, Gilbert-Johnson-Keerthi (GJK), etc.) kann zu weniger Gesamttests führen.
  • Der Basistest funktioniert jedoch gut mit GPU-Hardware. Der Basistest kann mit einer Okklusionsabfrage des Aabb im realen Raum gegen den Tiefenpuffer durchgeführt werden: Wenn alle Pixel potentiell zeichnungsfähig sind, dann ist er innerhalb des Volumens; und wenn keine gezeichnet sind, dann ist er außerhalb. „Vordere“ und „hintere“ Flächen werden separat gezeichnet. Optional wird die Anzahl der Pixel, die der Grafikprozessor potentiell zeichnen wird, durch Rendern ohne Tiefenprüfung bestimmt. Das Abschneiden der nahen Schnittebene wird speziell behandelt, da beim Abschneiden der nahen Schnittebene kein Schnittpunkt zurückgegeben werden kann.
  • Die vorstehend beschriebenen Methoden bieten folgende Vorteile: schnelle Ablehnungstests entweder innen oder außen; der Tiefenpuffer wird nur dort getestet, wo es einen wahrscheinlichen Schnittpunkt gibt (bestimmt durch Tiefenbereichsüberlappung); der Darstellungsüberhang (typischerweise 2 * 1/3 * Tiefenkartengrößen) ist relativ gering; es funktioniert gut mit GPUs; Tiefenbereichs-Mipmaps können auf GPUs erzeugt werden; Sampling dagegen kann auf einer GPU durchgeführt werden; und es bietet das Potenzial, direkt auf einer GPU mit einem/mehreren Okklusionsabfrage-Test(s) vollständig zu testen.
  • Initiale Octree-Generierung
  • Wie vorstehend beschrieben, wird in Ausführungsformen eine Struktur erstellt, die das Ansichtsvolumen darstellt, anstatt alle Ansichten zu einer einzigen Darstellung zu kombinieren (z.B. mit adaptiver vorzeichenbehafteter Abstandsfunktion). In der Codebasis ist dies der Typ ViewVolume. Das Ansichtsvolumen besteht zunächst aus dem Tiefenpuffer und den zugehörigen Matrizen für die Projektionsansicht zur Zuordnung von realem Raum und Pixelraum.
  • Die ViewVolumes werden über eine Vereinigung kombiniert. Dies kann geschehen, indem man jedes der ViewVolumes sampelt und die Ergebnisse kombiniert. Eine Methode des Samplings besteht darin, das Ansichtsvolumen gegen einen Begrenzungsrahmen (Aabb im Code) zu testen. Das Ergebnis des Tests kann relativ einfach sein: Der Aabb befindet sich vollständig außerhalb des ViewVolume; der Aabb befindet sich vollständig innerhalb des ViewVolume; oder der Aabb schneidet irgendwie die Grenze mit dem Inneren oder dem Äußeren (z.B. schneidet er den Stumpf und/oder den Tiefenpuffer).
  • Diese Tests können mit folgenden Beobachtungen als Vereinigung kombiniert werden: a) wenn sich ein Aabb vollständig innerhalb eines ViewVolume befindet, dann ist das Aabb innerhalb der Vereinigung; b) wenn sich ein Aabb außerhalb aller ViewVolumes befindet, dann ist das Aabb außerhalb der Vereinigung; und c) wenn keiner von diesen wahr ist, dann muss das Aabb die Grenze der Vereinigung enthalten.
  • Damit können mit Hilfe eines Octree die Aabbs, die die Oberfläche enthalten, adaptiv bestimmt werden. Zunächst wird ein Aabb verwendet, das groß genug ist, um alle ViewVolumes zu enthalten. Dieses Aabb wird dann gegen die ViewVolumes getestet.
  • Wenn das Ergebnis a) oder b), wie oben beschrieben, ist, stoppt der Prozess. Wenn das Ergebnis c) ist, dann kehrt der Prozess eine Ebene des Octree nach unten zurück und wird wiederholt, bis eine Genauigkeit bestimmt wird, die einem Schwellenwert genügt.
  • Diese Methode kann verwendet werden, um eine Punktwolke von Aabb-Zentren zu erzeugen, die der Vereinigung von ViewVolumes genau folgt.
  • Eine Projektion eines Aabb in den Pixelraum eines Ansichtsvolumens kann eine sehr große Fläche erzeugen. Um die Leistung zu verbessern, kann der oben beschriebene Mipmapping-Ansatz verwendet werden.
  • Erzeugen einer Oberfläche
  • Dieser Ansatz kann verwendet werden, um eine Fläche in ein Dreiecksnetz zu verwandeln. In einer Ausführungsform geschieht dies mit einer Version eines Marching Cubes-Algorithmus.
  • Der oben beschriebene Octree Mechanismus kann als Grundlage für den Marching Cubes Algorithmus verwendet werden. Der Octree wird nach unten rekurriert, bis eine gewünschte Voxelgröße erreicht ist. Der hierin zuvor beschriebene Mechanismus oder die Octree Dezimierung erzeugt im Wesentlichen die konservative Kruste von Voxeln der Vereinigung der ViewVolumes. Die Kruste beinhaltet die Voxel, die die benötigten Marching Cubes Voxel definieren. Daher ist es nicht notwendig, andere Auswertungen im Zusammenhang mit Marching Cubes-Implementierungen durchzuführen, wie z.B. einen Punkt in der Oberfläche zu nehmen und nach seiner Oberfläche zu suchen und dann über sie zu gehen.
  • Bei Marching Cubes werden die Ecken des Cubes über eine Strecke gesampelt. Wenn negative Zahlen innerhalb und positive Zahlen außerhalb liegen, dann muss das Aabb mindestens einen positiven und einen negativen Winkel aufweisen, damit es Teil der Oberfläche sein kann.
  • Die ViewVolume Vereinigung hat keinen Abstand zur Oberfläche. Es kann jedoch bestimmt werden, ob sich ein Punkt innerhalb oder außerhalb befindet. Diese Bestimmung entscheidet, welche Oberfläche des Marching Cube für einen Voxel verwendet werden soll. Wenn das Ziel darin besteht, dass die Oberfläche nahe an der tatsächlichen Oberfläche der Vereinigung liegt, dann wird der Schnittpunkt entlang der Kanten der Marching Cubes exakt bestimmt. Dieser Wert kann durch das Ausstrahlen von Strahlen entlang der Kanten des Würfels bestimmt werden. Ein Strahl wird entlang der Kante von außen nach innen gerichtet (bestimmt durch die Bestimmung von Innen-/Außen an den Ecken). Treffer aus einer Teilmenge von ViewVolumes werden empfangen. Um die Vereinigung herzustellen, ist der tiefste Schnittpunkt derjenige auf dieser Oberfläche.
  • Damit erhält man folgende Informationen für Marching Cubes: die Position (innen oder außen) an den Ecken und den Schnittpunkt mit der Oberfläche entlang der sich schneidenden Kanten.
  • Um die Leistung und die Einfachheit des Netzes zu erhöhen, enthält eine Implementierung eine Karte von Kantenschnittpunkten, da jede Kante bis zu viermal gemeinsam genutzt werden kann. Das bedeutet auch, dass Vertices in einem ausgegebenen Netz korrekt geteilt werden.
  • Adaptives Produzieren einer Oberfläche
  • In einer Ausführungsform wird ein Maß für die Flachheit verwendet, um zu bestimmen, ob ein Octree Knoten geteilt werden soll. Genauer gesagt, werden bei der Bestimmung, ob ein Knoten geteilt werden soll, alle Samples betrachtet, eine Normale pro Sample bestimmt (z.B. durch Hauptachsenbestimmung, Mittelung der Normalen von Stützdreiecken usw.) und die Ausdehnung der Punkte in Richtung der Normalen gemessen, um zu bestimmen, wie „flach“ die Oberfläche innerhalb des Voxels ist. Wird diese Oberfläche als sehr flach identifiziert (z.B. ist die Ausdehnung kleiner als ein definierter Schwellenwert), kann die enthaltene Oberfläche mit einem relativ flachen Polygon approximiert werden. Nachfolgend werden weitere Informationen gegeben.
  • Ein DepthViewVolume ist eine Implementierung des ViewVolume, das Mipmaps des Tiefenpuffers enthält. In den Mipmaps enthält jedes Pixel eine Tiefenausdehnung, die die minimalen und maximalen Tiefenwerte für die Mipmap mit mehr Details darüber beschreibt, und so weiter. Jedes der Tiefenausdehnungspixel kann als ein sehr kleiner Stumpf betrachtet werden, wobei der Ansichtspunkt der Scheitelpunkt der Pyramide ist, und wobei der Ansichtspunkt und die nahen und fernen Tiefenausdehnungen die nahe und ferne Ebene beschreiben. Da sie sich auf ein Pixel beziehen (entweder in einer Mipmap oder im Tiefenpuffer), werden diese Pixel hier als Frustals bezeichnet.
  • Um das Konzept der Flachheit darzustellen, wird das Konzept einer Platte (SlabViewVolume) vorgestellt. Bei einer gegebenen Sammlung von Tiefenpunkten ist eine Platte eine Ebene im realen Raum und hat eine Breite. Alle Punkte im Tiefenpuffer für ein Frustal liegen innerhalb der durch die Ebene und deren Breite definierten Platte. Die Breite kann als Maß für die Flachheit betrachtet werden. Bei der Berechnung der Ebenen wird die Ebene mit der minimalen Breite gefunden. Wenn die Breite Null ist, dann liegen alle Punkte genau innerhalb der Ebene.
  • Die Frustalplatten werden entweder direkt aus dem Tiefenpuffer oder aus einer höherwertigen detaillierten Mipmap berechnet, falls vorhanden. Die nächsttiefere Ebene kann angenähert werden, indem man die vier detaillierteren Frustalplatten nimmt und eine neue Frustalplatte berechnet, die alle Ecken der detaillierteren Platten enthält. Dies ist eine Annäherung; alternativ kann die Platte aus den Tiefenpufferwerten berechnet werden.
  • So kann beim Traversieren der Octree-Tiefe an jeder Octree-Zelle ein Maß dafür ermittelt werden, wie flach sie ist, wenn sie sich an der Grenze der Vereinigung der Ansichtsvolumina befindet.
  • Obwohl der Tiefenpuffer über ein einzelnes ViewVolume zusammenhängend ist, ist dies zwischen ViewVolumes möglicherweise nicht gegeben. Das ist auch nur für die Tiefenpufferoberfläche definiert, nicht für den Rest des Stumpfes. So kann bei der Berechnung der Ebenheit über ein Aabb über mehrere ViewVolumes hinweg auch der Vereinigungsaspekt berücksichtigt werden. Die Vereinigung kann konkav sein und/oder getrennte Abschnitte haben. Um die Berechnung zu vereinfachen, wenn die Vereinigung nicht trivial ist, kann die Flachheit über eine Näherung der Platte im realen Raum berechnet werden. Außerdem darf der Flachheitswert nur verwendet werden, wenn mindestens eine Ansicht des Aabb vollständig innerhalb des Frustrums lag, um die Kontinuität zu gewährleisten.
  • Bestimmung der Lichteigenschaften auf der Netzfläche
  • (Block 110 von Figur 1)
  • Delighting (dt. Delighting)
  • Delighting wandelt eine Textur in eine Form um, die das Objekt darstellt, als ob sich das Objekt in einer Umgebung ohne gerichtetes Licht befände, indem Schatten und andere visuelle Hinweise auf gerichtetes Licht aus den ursprünglichen Aufnahmen entfernt werden. Der Prozess des Delighting kann beispielsweise eine lineare Belichtungskorrektur, eine nichtlineare Belichtungskorrektur und eine Vignettkorrektur beinhalten. Die nichtlineare Belichtungskorrektur kann wie die lineare Belichtungskorrektur sein, jedoch mit kubischer Anpassung.
  • Zu den Aspekten und Zielen von Delighting zählen Chroma und Lightness (z.B. Maximierung von Chroma und Lightness), die Lichtführung aus der spiegelnden Reprojektion, die Erzeugung von spiegelnden Masken und das Delighting von Samples.
  • Delighting kann verwendet werden, um die gesamte Beleuchtung, einschließlich der Schatten, aus einer Szene zu entfernen.
  • Alternativ kann das Delighting auch dazu verwendet werden, nur die Farbe eines Umgebungslichts aus einer Szene zu entfernen. Zum Beispiel, wenn ein Objekt aus einer Szene aufgenommen wird (z.B. in einem Videospiel), leitet das menschliche visuelle System die Farbe des Objekts relativ zur Farbe der Beleuchtung in der Szene ab. Wenn das Objekt als 3D-Modell aus der Szene extrahiert wird, kann das Objekt für einen Betrachter seltsam erscheinen, als ob das Objekt selbst die Eigenschaften der Farben besitzt, die von der Beleuchtung in der Szene stammen. In einer Ausführungsform wird dies durch eine Korrektur der Beleuchtung der eingegebenen aufgenommenen Bilder (z.B. am Anfang der Verarbeitungsleitung) überwunden. In einer weiteren Ausführungsform wird dies durch eine Korrektur der Beleuchtung auf den Ausgangstexturen diffuser und spiegelnder Texturen bei Verwendung von Lichtannäherung (z.B. am Ende der Rohrleitung) überwunden. Letztere Ausführungsform ist vorteilhaft schnell und kontrollierbar und liefert qualitativ hochwertige Ergebnisse.
  • Belichtungskompensation beim Delighting
  • Wenn die Renderings mit einem Farbtonmapping versehen sind, das mit einer Kombination aus Belichtungseinstellung und Film-/Sensoreigenschaften auf einer herkömmlichen (z.B. Film-)Kamera vergleichbar ist, kann sich die Belichtung zwischen verschiedenen Aufnahmen ändern (z.B. weil bei einigen Aufnahmen mehr von dem Bild sehr hell ist als bei anderen). Die Filmeigenschaften ändern sich normalerweise nicht zwischen den Aufnahmen, aber wenn diese Transformation nicht invertiert wird, wird sie in die resultierende Rekonstruktion einbezogen.
  • Als Teil der Belichtungskompensation beim Delighting ist es daher sinnvoll, zu versuchen, die Pixelfarbwerte in Bildern äquivalenter zu gestalten. In einigen Szenarien ist es möglich, die Belichtungsinformationen im Rahmen der Bildaufnahme zu erfassen. Die Belichtungsinformationen können auch mit verschiedenen Algorithmen allein aus den Bildern approximiert werden. Durch das Entfernen von Belichtungseffekten kann die Ausgabe in verschiedenen Szenarien genauer wiedergegeben werden, wodurch ein qualitativ hochwertigeres Ergebnis erzielt wird, indem die Belichtung nicht berücksichtigt wird oder indem verhindert wird, dass unterschiedliche Belichtungen zwischen den Aufnahmen Inkonsistenzen hervorrufen, wenn sie miteinander vermischt werden.
  • Aufnahme von Material und Licht
  • SH-Transformationen können anstelle von Delighting zur Bestimmung des Oberflächenlichtfeldes verwendet werden. Für jeden Punkt können Informationen darüber, wie die Lichtreflexion (Reflexionsgrad) aus mehreren Winkeln aussieht, mit SH zu einer Funktion kombiniert werden, die dem Reflexionsgrad nahe kommt (Interpolation plus Kompression über SH).
  • SH kann zur Aufnahme von niederfrequenten Lichteffekten verwendet werden. SH wirkt wie ein Tiefpassfilter. Reflexionen können dann mit anderen Techniken unter Verwendung einer vorhandenen Modellgeometrie und Umgebungskarte hinzugefügt werden. Delighting kann auch mit einer Frequenzdarstellung durchgeführt werden.
  • In Ausführungsformen wird SH verwendet, um das Oberflächenerscheinungsbild wiederherzustellen, mit dem Informationen über die Farbe bestimmter Punkte kodiert werden, wenn diese Punkte aus einer bestimmten Richtung sichtbar sind. Für SH werden mehrere Bilder so aufgenommen, dass jeder einzelne Punkt in mehreren Bildern aus mehreren Richtungen sichtbar ist. Somit beinhaltet die Eingabe für SH für die Wiederherstellung für jeden Punkt eine Reihe von Samples, die jeweils Informationen über die Farbe des Punktes enthalten, wenn er aus jeder Richtung sichtbar ist. In einer Ausführungsform werden SH-Koeffizienten basierend auf der Minimierung des quadrierten Fehlers zwischen Abtastwerten und einem mit SH ausgewerteten Wert rekonstruiert.
  • In Ausführungsformen werden die aktuellen SH-Ansätze durch eine hemisphärische Basis (hemisphärische Harmonische) oder Wavelets anstelle von sphärischen Harmonischen verbessert.
  • Einzelaufnahmen können für jede Richtung in einem SH-Atlas aufgenommen und farblich kodiert werden. Ein SH-Atlas kann zur Erzeugung von diffusen/spiegelnden Texturen und zur Erfassung anderer Materialeigenschaften auf verschiedene Weise verwendet werden, wie z.B.: a) Ableitung von Materialparametern durch Erhebung von Statistiken über die Form der sphärischen Harmonischen, wie z.B. Abweichung von einem Mittelwert oder einer Breite einer spiegelnden Highlight-Lampe auf einer Oberfläche von SH; und b) Ableitung von Materialparametern durch ein neuronales Netzwerk, trainiert auf einem Datensatz mit sphärischer Harmonischen, der sphärische Harmonischen enthält, die unter unterschiedlichen Lichtverhältnissen aus verschiedenen Materialien mit bekannten Eigenschaften aufgenommen wurden.
  • SH kann verwendet werden, um z.B. Richtungsinformationen über einfallendes Licht an einem Punkt zu speichern. Diese Informationen können zur Beurteilung der Oberflächenbeschaffenheit zusammen mit zusätzlichen Daten, wie beispielsweise den Materialeigenschaften, verwendet werden.
  • In Ausführungsformen wird nicht das einfallende Licht gespeichert, sondern Licht, das von einem Punkt nur dann abgegeben oder reflektiert wird, wenn der Punkt sichtbar ist. In Ausführungsformen wird SH verwendet, um das endgültige Aussehen des Punktes zu speichern. Wenn eine Aufnahme anschließend wiedergegeben wird, ist die Richtung, aus der jeder sichtbare Punkt betrachtet wird, bekannt oder kann bestimmt werden. So wird in einer Ausführungsform die Farbe eines Punktes aus SH nur mit der bekannten Richtung dekodiert. Ein solcher Ansatz ist von Vorteil, da ansichtsabhängige Details (z.B. Reflexionen und Lichter) reproduziert werden können, ohne Oberflächeneigenschaften wie das Reflexionsvermögen kennen oder bestimmen zu müssen.
  • 4 ist ein Flussdiagramm 400 eines Beispiels für ein Verfahren zur Verwendung von SH, gemäß Ausführungsformen der Erfindung. Das Flussdiagramm 400 kann als computerausführbare Anweisungen implementiert werden, die sich auf einem computerlesbaren Speichermedium befinden (z.B. im Speicher des Computersystems 500 in 5).
  • In Block 402 von 4 wird auf einen Multi-Sample-Atlas (siehe weiter unten) als Eingabe zugegriffen. In einer Ausführungsform beinhaltet der Multi-Sample-Atlas eine Reihe von Farbmustern von Punkten auf einer Netzoberfläche, wenn diese Punkte aus verschiedenen Richtungen sichtbar sind.
  • In Block 404 werden für jeden der Punkte Gewichtskoeffizienten bis zu einer bestimmten Ordnung von SH für jeden Farbkanal bestimmt (z.B. berechnet). Höhere SH-Ordnungen erhöhen die Detailgenauigkeit, die erfasst und gespeichert werden kann. In einer Ausführungsform wird eine maximale Ordnung von acht verwendet, die qualitativ hochwertige Ergebnisse liefert und gleichzeitig Rechenressourcen schont.
  • In Block 406 wird jeder Koeffizient in einem geeigneten Kanal einer 2D-Gleitkomma-RGB-Textur gespeichert. Ein geeignetes Texel kann entsprechend der UV-Koordinate des jeweiligen Punktes auf dem Netz ausgewählt werden. Die Anzahl der Koeffizienten kann durch Erhöhung der Anzahl der verwendeten Texturen erhöht werden. In einer Ausführungsform werden die Koeffizienten im SH-Atlas gespeichert.
  • Da Teile des Netzes in einer Texturkarte mit einem gewissen Abstand zueinander angeordnet sind, sind einige Teile der Textur nicht mit einem SH-Koeffizienten assoziiert. Wenn das Modell gerendert wird, können diese leeren Räume also Artefakte erzeugen, es sei denn, sie werden berücksichtigt. In Block 408 wird in einer Ausführungsform ein Nachbearbeitungsschritt durchgeführt, um dies zu beheben. Eine Liste von Randtexel (Texel mit Daten, die ein benachbartes Texel ohne Daten haben) wird erstellt. Die Daten für jedes Randtexel werden in seinen leeren Nachbarn kopiert, und dann wird die Liste der Randtexel aktualisiert. Dieser Schritt wird wiederholt, bis alle Texel gefüllt sind.
  • In Block 410 wird für jeden zu rendernden Punkt die Ansichtsrichtung bestimmt, auf Gewichtskoeffizienten für diese Richtung wird über Texturkarten zugegriffen, und die Daten werden zum Bestimmen der endgültigen Farbe des gerenderten Punktes verwendet.
  • Multi-Sample-Atlas
  • Jede Aufnahme mehrerer Ansichten einer Szene kann Informationen über die Kamera (wie Position, Ausrichtung und Projektion), Tiefeninformationen und Farbinformationen enthalten.
  • Ein parametrisiertes 3D-Modell der Szene kann erstellt werden. Mit dieser Parametrisierung kann ein Texturatlas für den realen Raum erstellt werden (siehe weiter unten). Texturkarten, die aus den Ansichten samplen, können dann erstellt werden.
  • In Ausführungsformen wird ein Multi-Sample-Atlas als Darstellung verwendet, der einen minimalen Satz von Informationen für dieses Sampling speichert. Der Multi-Sample-Atlas kann für jedes Texel des Atlas Samples enthalten, die mit diesem Texel verbunden sind. Ein Texel kann Nullmuster oder eine Anzahl von Mustern bis zur Anzahl der Ansichten pro Texel haben. Dies lässt sich relativ kompakt darstellen, indem für jede Scanlinie die Anzahl der Samples pro Texel und dann separat, in der Reihenfolge, alle Samples pro Texel gespeichert werden.
  • In einer Ausführungsform werden die Samples, die in den Multi-Sample-Atlas aufgenommen werden sollen, wie folgt bestimmt. Wenn eine Ansicht gesampelt wird, wird eine Position im realen Raum in den Ansichtsraum der Ansicht projiziert. Wenn sich die Position nicht innerhalb der Ansicht befindet, gibt es kein Sample. Anschließend wird geprüft, ob sich das Sample auf der Oberfläche befindet, indem der Abstand des Samples zum Tiefenpuffer überprüft wird. Wenn das Sample zu weit von der Oberfläche entfernt ist (z.B. gemessen an einem definierten Schwellenabstand), kann es nicht einbezogen werden. Andere Filter können verwendet werden, um zu bestimmen, ob ein Sample aufgenommen werden soll, wie z.B. ein Vergleich der Qualität des Samples oder eine Bestimmung, wie genau die Normale des Samples mit der aus dem Modell übereinstimmt. Der Test mit der Normale ist nützlich, da er die Wahrscheinlichkeit verringert, dass ein Sample auf der falschen Seite einer dünnen Oberfläche einbezogen wird.
  • Die Darstellung kann serialisiert werden, und dann können Algorithmen darauf angewendet werden, um Ergebnisse zu produzieren. Der Datensatz enthält also nur die interessierenden Samples und eventuell weitere vorberechnete Daten, um nachfolgende Algorithmen für eine Ausgabe von Ergebnissen zu steuern.
  • Es gibt mehrere Möglichkeiten, die Sample-Daten zu speichern. Bei der Farbsampling wird im Beispiel von Tabelle 2 eine flexible Möglichkeit gezeigt, 64 Bit pro Sample zu speichern.
    Figure DE102019118838A1_0003
  • Durch das Halten von drei Qualitätsmetriken und dem Ansichtsindex ist es möglich, die Ansichtsrichtung zu berechnen, ohne z.B. den Tiefenpuffer zu haben oder ohne andere Daten, die einer Ansicht zugeordnet sind.
  • Dadurch ergeben sich eine Reihe von Vorteilen: Das Laden des Multi-Sample-Atlas ist schneller als das Laden jeder Bild-/Tiefenkarte, jedes Projekts, jedes Samples usw.; und der Datensatz ist kleiner, da er nur Samples enthält, die sich in Ansichten befinden und nur in der Auflösung des Sampling des Atlas.
  • Darstellung von Oberflächenlichtfeldern
  • (Block 112 von Figur 1)
  • Spiegel-Fitting als Annäherung an die ansichtabhängige Beleuchtung
  • Jede Aufnahme von mehreren Ansichten einer Szene kann Informationen über die Kamera (wie Position, Ausrichtung, Projektion) sowie Tiefen- und Farbinformationen enthalten. So kann beispielsweise die ungefähre Position/Typ/Farbe von Lichtquellen aus den Aufnahmen berechnet werden.
  • Ein Modell mit einer UV-Parametrisierung und dem Multi-Sample-Atlas kann verwendet werden, um alle mit jeder Ansicht assoziierten Farbpixel für ein Texel für jedes Texel des Texturatlasses zu finden.
  • Das Modell kann so dargestellt werden, dass die Beleuchtung mit der Originalaufnahme übereinstimmt. Eine Möglichkeit dazu sind die Sample-Farben. Wichtig ist in diesem Zusammenhang die Beleuchtung, die von der Ansicht abhängig ist, wie z.B. Effekte wie Spiegelungen oder Umgebungskarten. Die Diffusion und Abschattung der ursprünglichen Aufnahme ist unabhängig von der Ansicht im rekonstruierten Modell korrekt.
  • Ein Ansatz zur Darstellung dieser Beleuchtung besteht darin, die Farbe basierend auf der Blickrichtung vom Texel zum Betrachter zu variieren. Im Allgemeinen gibt es zwei Freiheitsgrade, und die Farbe wird basierend auf einer Halbkugel um das Texel nachgeschlagen.
  • Ein weiterer Ansatz basiert auf der Beobachtung, dass die meisten ansichtsabhängigen Beleuchtungen als Phong-Shading oder eine ähnliche 3D-Oberflächen-Shading-Technik geschätzt werden können. Dies ist vielleicht nicht der Fall bei der Umgebungsmapping, aber in der Tat wird die Technik das mit einem spiegelnden Blob approximieren. Unter der Annahme, dass die Beleuchtung phongähnlich ist, können die für das Beleuchtungsmodell benötigten Daten nur aus dem Normale, der diffusen Farbe, der spiegelnden Farbe und dem Materialglanz für jedes Texel berechnet werden.
  • Die spiegelnde Farbe des Materials kann berechnet werden, indem jedes Licht und jedes Sample ausgewertet wird und die Samples betrachtet werden, die heller sind als die diffuse Farbe. Wenn die Farbe abgeschnitten ist, kann dies berücksichtigt werden. Ein Kanal wurde wahrscheinlich abgeschnitten, wenn sein Wert nahe bei eins liegt. Um die Farbe zu bestimmen, wird das Verhältnis zwischen den Farbkanälen bestimmt. Wenn die anderen nicht abgeschnittenen Kanäle durch die maximale Intensität der nicht abgeschnittenen Kanäle dividiert werden, wird erwartet, dass das Verhältnis ungefähr gleich bleibt. Das Verhältnis für alle nicht abgeschnittenen Kanäle wird bestimmt und mit der Stärke des größten nicht abgeschnittenen Kanals gewichtet. Das Ergebnis ist eine normierte Farbe, die um eine ähnlich bestimmte Intensität skaliert wird, indem die Spiegelberechnung basierend auf der Ansichtsposition und dem größten Kanalwert durchgeführt wird.
  • Die spiegelnde Glanzstärke kann berechnet werden, indem die Form der Intensität bei Änderung der Ansichtsrichtung auf den Samples ausgewertet und die Leistungskurve angepasst wird, um eine ungefähre Glanzstärke zu erzeugen.
  • Umgebende Texelwerte und ein Glättungsverfahren können verwendet werden, wenn Hochfrequenzrauschen unerwünschte Artefakte erzeugt.
  • Es ist auch möglich, die oben genannte phong-ähnliche Methodik mit einer vorgegebenen und/oder benutzerdefinierten spiegelnden Glanzstärke zu verwenden.
  • Die Normale kann auf verschiedene Weise berechnet werden, einschließlich der Anpassung an die Sampledaten. Dies hat den Vorteil, dass man möglicherweise Daten aus der Normalen-Karte des Originalmodells übernehmen kann. Sie kann auch aus dem Tiefenpuffer von Aufnahmen berechnet werden, wobei ein gewichteter Durchschnitt über mehrere Ansichten verwendet wird.
  • Der oben genannte Ansatz ist relativ einfach zu implementieren, benötigt weniger Speicherplatz und liefert im Allgemeinen vernünftige Ergebnisse. Weitere Vorteile sind: Es werden nur drei Texturen (diffuse, normale und spiegelnde Farbe/Glanz) benötigt (oder nur zwei, wenn die spiegelnde Farbe fest oder im Modell kodiert ist); hochfrequente Glanzeffekte werden verarbeitet; und er kann effizient auf Hardware mit Pixel-Shadern (z.B. auf mobilen Geräten) ausgeführt werden.
  • Konvertierung und Rendering
  • (Block 114 von Figur 1)
  • Resampling von Modellattributen mit dem Atlas im realen Raum
  • In einigen Fällen handelt es sich bei dem Modell um eine sehr hohe Polygonversion mit assoziierten Daten. Um eine Version dieses Modells für ein niedrigeres Polygon zu erstellen, können die zugehörigen Daten als Texturkarte auf das niedrigere Polygonmodell angewendet werden.
  • Wenn auf die Daten aus dem Quellendatensatz über eine Position im realen Raum zugegriffen werden kann, ist es möglich, die Anzahl der Polygone im Originalmodell zu reduzieren, ohne eine Parametrisierung zu berücksichtigen. Nach der Erstellung eines Modells mit einem niedrigen Polygon kann eine UV-Parametrierung, z.B. mit Hilfe eines Isochart-Texturatlas, berechnet werden. Die Leistung vieler Polygonreduktionstechniken, wie z.B. die metrische Kantenentfernung mit quadratischem Fehler, kann vereinfacht und verbessert werden, indem keine anderen Parameter als die Form des Modells berücksichtigt werden müssen.
  • Mit einem parametrisierten Niederpolygonmodell können auf zugehörige Parameter (wie Farbe oder Normale, etc.), oder auf Daten, die dem Modell im realen Raum zugeordnet sind (z.B. eine Punktwolke von Farben), aus dem Originalmodell zugegriffen werden.
  • Um dies zu erreichen, wird ein Bild von der Größe eines gewünschten Texturatlasses gerendert und an jedem Texel eine Position im realen Raum hinterlegt. Die UV-Werte steuern die Vertex-Positionen der Dreiecke des Netzes, und die Position im realen Raum wird interpoliert oder über baryzentrische Koordinaten pro Pixel berechnet. Am Ende des Renderings beinhaltet ein Texturatlas im realen Raum die zugehörige Position dieses Texels im realen Raum.
  • Damit wird die eigentliche Texturkarte von Sollwerten erzeugt, indem man jeden Satz Texel aus dem Texturatlas des realen Raums nimmt und die zugehörigen Daten im ursprünglichen Datensatz nachschlägt.
  • Ein parametrisiertes 3D-Modell der Szene kann erstellt werden. Mit dieser Parametrisierung kann der Texturatlas des realen Raumes gerendert werden. Texturkarten, die aus den Ansichten entnommen werden, können dann erstellt werden.
  • Die soeben beschriebene Methodik bietet eine Reihe von Vorteilen: Sie trennt die UV-Parametrisierung von der Vereinfachung; indem sie eine UV-Mapping des Originalmodells nicht berücksichtigen muss, ist die Vereinfachung weniger kompliziert, schneller und die Art der Vereinfachung nicht eingeschränkt; es ist nicht notwendig, ein sehr hohes Polygonmodell zu parametrisieren (UV-Map), was zeitaufwendig sein kann; ein Lookup muss nur einmal für jedes resultierende Texel durchgeführt werden; und der Texturatlas im realen Raum kann auch andere Informationen aufnehmen und kann in anderen Berechnungen verwendet werden.
  • Qualitätsmaße für unterschiedliche UV-Parametrierung
  • In Ausführungsformen beinhalten Qualitätsmaßnahmen für die variierende UV-Parametrisierung eine Steuerung des UV-Mappings über die Standardabweichung der Samples von einem Dreieck im UV-Raum.
  • Texturabbildungsoberfläche
  • Beim UV-Mapping wird ein Scanline-Renderer verwendet, um die Farben zu bestimmen, die auf jedes Pixel der Texturkarte angewendet werden sollen. Dem Renderer werden die Koordinaten im UV-Raum der Dreiecke zugeführt. Während er rastert, berechnet er, welche Pixel welchem UV-Raum und welchem Primitiv zugeordnet sind. Mit diesen Informationen können baryzentrische Koordinaten verwendet werden, um den Pixel im UV-Raum der Dreiecksprimitive zu bestimmen, und dann können diese Informationen verwendet werden, um den mit dem UV verbundenen Punkt im realen Raum zu berechnen. Mit einem Punkt im realen Raum kann eine zugehörige Farbe bestimmt werden.
  • Die Position im realen Raum und die Farbe für jeden Punkt im Ansichtsvolumen können in einem Octree gespeichert werden. Beim Rastern kann dann der Octree nach dem nächstgelegenen Punkt abgefragt und die zugehörige Farbe verwendet werden.
  • Um den Farbnachschlageabschnitt von der Scanlinienrasterung zu vereinfachen/entkoppeln, wird der Scanlinienrasterizer so eingerichtet, dass er eine XMVECTOR-Karte (Tabelle 1 oben) rastert, wobei die x,y,z-Werte der Position im realen Raum entsprechen und w das Primitiv (z.B. Dreieckindex) enthält, dem er zugeordnet ist. Mit diesen Informationen ist es möglich, baryzentrische Koordinaten aus der Position im realen Raum und der Position der Vertices im realen Raum zu bestimmen. Dies kann verwendet werden, um den normalen Vertex zu interpolieren, die UVs zu berechnen oder für andere Zwecke.
  • Eine gute Farbe für Pixel im Atlas ist die Farbe des als nächstgelegenes gesetzten Pixels. Um sinnvolle Werte für alle Pixel zu bestimmen, kann die Klasse PointSet verwendet werden, die für die Bestimmung der nächstliegenden Farbe verwendet wird. Alle Punkte des Kantensatzes des Umrisses der gerasterten Dreiecke werden zu einer Octree-Struktur hinzugefügt. Dann wird jedes Pixel des Texturatlas im realen Raum getestet, um zu prüfen, ob es gerastert wurde. Wenn es gerastert wurde, wird die Klasse PointSet verwendet, um den nächstgelegenen Punkt mit einer festgelegten Farbe zu suchen, der in dieses Pixel kopiert wird.
  • Die Verwendung der nächstgelegenen Position im realen Raum zur Auswahl der Farbe des Texturatlasses ist schnell und einfach.
  • Eine Normale im realen Raum kann auch bei der Rasterung des UV-Netzes berechnet werden. Dies kann mit der Normale des oder der nächstgelegenen Punkte verglichen werden. Der Punkt in einem Bereich, der die ähnlichste Normale aufweist, schließt eine Wahl des Punktes auf der falschen Seite eines dünnen Laminars aus.
  • Ein Samplen der Originalbilder anstelle eines Nachschlagens von Samples in einem Octree, das ausschließlich auf Entfernung basiert, bietet Vorteile, wie z.B. das einfache Auffinden benachbarter Pixel und das Bestimmen, welche Pixel von höherer oder niedrigerer Qualität sind. Beispielsweise enthalten Pixel, die im Vergleich zur Kamera mehr „an der Kante“ sind, eher Pixelfarben, die stärker gefiltert sind und somit weniger Informationen enthalten. Betrachtet wird zum Beispiel eine Darstellung einer Kugel, die mit einer hochfrequenten Textur abgebildet ist. In der Richtung vom Zentrum der Kugel zu ihrem Rand werden Pixel-Samples in der Aufnahme zu einer Mischung aus einer wachsenden Anzahl von Texeln aus der Texturabbildung der Kugel. Außerdem können Pixel an der Kante das Anti-Aliasing beeinflussen, da Anti-Aliasing Samples kombiniert, die sich auf der Kugel befinden und andere, die es nicht sind.
  • Pixel in der Nähe einer Silhouettenkante sind wahrscheinlich keine hochwertigen Samples, wegen Filterung und auch weil sie wahrscheinlich Elemente trennen, die nicht verbunden sind. Um dies zu bewältigen, werden die Kante und Ebenheit eines Pixels durch zwei Neun-Tap-Filter gemessen. Dieses Qualitätsmaß wird dann als Wert im Alpha eines Pixels gespeichert.
  • Für jedes Pixel des Texturatlasbildes im realen Raum gibt es x,y,z-Werte und einen Primitivindex. Die Normale für jedes Primitiv wird für eine schnelle und einfache Suche vorberechnet.
  • In Ausführungsformen werden die x,y,z-Werte für jeden Pixel des realen Raums verwendet. Jede Ansicht kann getestet werden, um festzustellen, ob er sich bei der Projektion innerhalb des Ansichtsstumpfes befindet. Wenn er sich im Inneren befindet, kann seine Tiefe getestet werden. Der Farbpuffer kann gesampelt werden, und das Punktprodukt der Normalen mit den Normalen der Pixel kann als Maß für die Qualität verwendet werden.
  • Mit einem Satz von Samples, zusammen mit Qualitätsmaßen (wie Pixelqualität, Punktprodukte von Normalen, die einem am nächsten kommen, usw.), können die Samples ausgewählt werden, die akzeptiert und abgelehnt werden sollen. Samples können auch basierend auf der Qualität vermischt werden, wobei die höherwertigen Samples höhere Gewichtungen erhalten.
  • Beispiel eines Computersystems
  • 5 ist ein Blockdiagramm, das ein exemplarisches Rechensystem 500 veranschaulicht, auf dem Ausführungsformen gemäß der vorliegenden Erfindung implementiert werden können. Das Computersystem 500 kann ein Computer, eine Videospielplattform oder -konsole, eine drahtloses Kommunikationsgerät (z.B. ein Smartphone) sein, ist aber nicht darauf beschränkt. Im Allgemeinen ist das Computersystem 500 eine Art Gerät, das grafische Daten verarbeitet und/oder anzeigt.
  • Im Beispiel von 5 beinhaltet das Computersystem 500 eine Benutzerschnittstelle 504, eine Zentraleinheit (CPU) 506, eine Speichersteuerung 508, einen Speicher 510, eine Grafikverarbeitungseinheit (GPU) 512, einen GPU-Cache 514, eine Anzeigeschnittstelle 516 und eine Anzeige 518, von denen jede mit den anderen Komponenten über den Bus 520 kommunizieren kann. Ein Computersystem, auf dem Ausführungsformen gemäß der vorliegenden Erfindung implementiert werden können, kann neben den gerade aufgeführten Komponenten auch andere Komponenten beinhalten, oder es kann nicht alle aufgeführten Komponenten beinhalten.
  • Der Speicher 510 ist sowohl für die CPU 506 als auch für die GPU 512 zugänglich. Insbesondere ist der Speicher 510 für die CPU 506 zugänglich, auch wenn sich die GPU 512 in einem ungültigen Zustand befindet. Ein ungültiger Zustand kann z.B. dann eintreten, wenn die GPU abstürzt, blockiert, einfriert oder blockiert.
  • In einer Ausführungsform weist die GPU 512 eine hochparallele Struktur auf. So kann beispielsweise die GPU 512 mehrere Verarbeitungselemente (z.B. Pipelines) beinhalten, die für einen parallelen Betrieb konfiguriert sind. Jede Pipeline kann mehr als eine Verarbeitungseinheit oder Stufe beinhalten.
  • Die CPU 506 kann eine oder mehrere Softwareanwendungen ausführen. Die Softwareanwendungen, die auf der CPU 506 ausgeführt werden, beinhalten unter anderem ein Betriebssystem und eine Anwendung, wie beispielsweise eine Anwendung oder mehrere Anwendungen, die die oben beschriebenen Funktionen, Methoden und Techniken ausführen. Die Softwareanwendungen, die auf der CPU 506 ausgeführt werden, können eine oder mehrere Grafik-Rendering-Anweisungen beinhalten, die den Grafikprozessor 512 anweisen, Grafikdaten auszuführen und an die Anzeige 518 weiterzugeben. In einigen Beispielen können die Softwareanweisungen mit einer grafischen Anwendungsprogrammierschnittstelle (API)) übereinstimmen. Die CPU 506 gibt einen Befehlsstrom mit einem oder mehreren Grafik-Renderingbefehlen (z.B. Zeichenbefehle) an die GPU 512 aus, um die GPU zu veranlassen, das Rendern der Grafikdaten ganz oder teilweise durchzuführen. Die CPU 506 kann auch andere Arten von Befehlen an die GPU 512 ausgeben, wie z.B., aber nicht beschränkt auf Rechenbefehle (z.B. allgemeine Rechenbefehle, Zustandsprogrammierbefehle, Speicherübertragungsbefehle usw.). In einer Ausführungsform empfängt ein GPU-Treiber die Anweisungen von der Softwareanwendung über die API und steuert den Betrieb der GPU 512 zur Ausführung der Anweisungen.
  • Während die vorstehende Offenbarung verschiedene Ausführungsformen unter Verwendung spezifischer Blockdiagramme, Flussdiagramme und Beispiele darlegt, kann jede Blockdiagrammkomponente, jeder Flussdiagrammschritt, jede Operation und/oder jede Komponente, die hierin beschrieben und/oder veranschaulicht wird, einzeln und/oder gemeinsam unter Verwendung einer Vielzahl von Hardware-, Software- oder Firmware-Konfigurationen (oder einer beliebigen Kombination derselben) implementiert werden. Darüber hinaus sollte jede Offenbarung von Komponenten, die in anderen Komponenten enthalten sind, als Beispiel betrachtet werden, da viele andere Architekturen implementiert werden können, um die gleiche Funktionalität zu erreichen.
  • Die hierin beschriebenen bzw. veranschaulichten Prozessparameter und die Reihenfolge der Schritte sind nur beispielhaft dargestellt und können beliebig variiert werden. Während beispielsweise die hierin veranschaulichten und/oder beschriebenen Schritte in einer bestimmten Reihenfolge gezeigt oder diskutiert werden können, müssen diese Schritte nicht unbedingt in der dargestellten oder diskutierten Reihenfolge durchgeführt werden. Die hierin beschriebenen und/oder veranschaulichten exemplarischen Verfahren können auch einen oder mehrere der hierin beschriebenen oder veranschaulichten Schritte unterlassen oder zusätzliche Schritte zusätzlich zu den offenbarten beinhalten.
  • Beispiele
  • Beispiel 1. Ein Verfahren, umfassend:
    • Zugreifen auf Informationen, die im Speicher eines Computersystems gespeichert sind, wobei die Informationen Einzelaufnahmen von einem oder mehreren Objekten in einer Szene umfassen, die mit einer Softwareanwendung erzeugt wurden, worin die Einzelaufnahmen aus verschiedenen Perspektiven in Bezug auf die Szene aufgenommen werden;
    • Erzeugen einer Punktwolke basierend auf den Einzelaufnahmen;
    • Erzeugen einer Netzstruktur basierend auf der Punktwolke;
    • Bestimmen eines Lichtfeldes auf einer Oberfläche der Netzstruktur; und
    • Speichern der Netzstruktur und des Lichtfeldes im Speicher eines Computersystems.
  • Beispiel 2. Das Verfahren von Beispiel 1, wobei die Informationen weiter Farbwerte pro Pixel in den Einzelaufnahmen und einen Tiefenwert pro Pixel in den Einzelaufnahmen umfassen.
  • Beispiel 3. Das Verfahren nach Beispiel 1, wobei das Bestimmen eines Lichtfeldes die Verwendung von sphärischen harmonischen Transformationen umfasst.
  • Beispiel 4. Das Verfahren nach Beispiel 1, weiter umfassend eine Wiedergabe der Szene in virtuellen drei Dimensionen unter Verwendung des Lichtfeldes und der Netzstruktur.
  • Beispiel 5. Das Verfahren nach Beispiel 4, weiter umfassend ein Anzeigen der reproduzierten Szene aus unterschiedlichen Perspektiven als Reaktion auf Benutzereingaben.
  • Beispiel 6. Das Verfahren nach Beispiel 1, wobei die Anwendung ein Videospiel umfasst.
  • Beispiel 7. Das Verfahren nach Beispiel 1, wobei das Erzeugen einer Netzstruktur umfasst:
    • für jeden Punkt in der Punktwolke, Erzeugen eines Polygons, das um einen jeweiligen Punkt zentriert ist und senkrecht zur Normalen für den jeweiligen Punkt steht;
    • Schneiden des Polygons gegen einen Nachbarpunkt durch Platzieren einer Schnittebene in der Mitte des Segments, das den jeweiligen Punkt mit dem Nachbarpunkt verbindet; und
    • Triangulieren jedes Polygons, das sich aus dem Schneiden ergibt, um die Netzstruktur zu erzeugen.
  • Beispiel 8. Das Verfahren nach Beispiel 7, weiter umfassend:
    • Überprüfen jeder Kante von Dreiecken in der Netzstruktur, um zu bestimmen, ob es eine benachbarte Kante eines benachbarten Dreiecks gibt, wobei, wenn es nicht die benachbarte Kante gibt, dann die Kante als eine Randkante an einer Kante eines Lochs in der Netzstruktur identifiziert wird;
    • Ausbilden von Schlingen, die Kanten umfassen, die aufgrund der Prüfung als Randkanten identifiziert wurden, wobei jede der Schlingen einem entsprechenden Loch in der Netzstruktur entspricht; und
    • Triangulieren jeder der Schlingen.
  • Beispiel 9. Ein Computersystem, umfassend:
    • einen Prozessor;
    • eine mit dem Prozessor gekoppelte Anzeige; und
    • einen Speicher, der mit dem Prozessor gekoppelt ist, wobei in dem Speicher Anweisungen gespeichert sind, die, wenn sie von dem Computersystem ausgeführt werden, bewirken, dass das Computersystem Operationen ausführt, die Folgendes umfassen:
      • Zugreifen auf im Speicher gespeicherte Informationen, wobei die Informationen Einzelaufnahmen von einem oder mehreren Objekten in einer mit einer Softwareanwendung erzeugten Szene umfassen, wobei die Einzelaufnahmen aus verschiedenen Perspektiven in Bezug auf die Szene aufgenommen werden;
      • Erzeugen einer Punktwolke basierend auf den Einzelaufnahmen;
      • Erzeugen einer Netzstruktur basierend auf der Punktwolke;
      • Bestimmen eines Lichtfeldes auf einer Oberfläche der Netzstruktur; und Speichern der Netzstruktur und des Lichtfeldes.
  • Beispiel 10. Das Computersystem nach Beispiel 9, wobei die Informationen weiter Farbwerte pro Pixel in den Einzelaufnahmen und einen Tiefenwert pro Pixel in den Einzelaufnahmen umfassen.
  • Beispiel 11. Das Computersystem nach Beispiel 9, wobei das Lichtfeld unter Verwendung von sphärischen harmonischen Transformationen erzeugt wird.
  • Beispiel 12. Das Computersystem von Beispiel 9, wobei das Verfahren ferner ein Darstellen und Anzeigen der Szene in virtuellen drei Dimensionen unter Verwendung des Lichtfeldes und der Netzstruktur umfasst.
  • Beispiel 13. Das Computersystem nach Beispiel 9, wobei das Verfahren weiter umfasst:
    • für jeden Punkt in der Punktwolke, Erzeugen eines Polygons, das um einen jeweiligen Punkt zentriert ist und senkrecht zur Normalen für den jeweiligen Punkt steht;
    • Schneiden des Polygons gegen einen Nachbarpunkt durch Platzieren einer Schnittebene in der Mitte des Segments, das den jeweiligen Punkt mit dem Nachbarpunkt verbindet; und
    • Triangulieren jedes Polygons, das sich aus dem Schneiden ergibt, um die Netzstruktur zu erzeugen.
  • Beispiel 14. Das Computersystem von Beispiel 13, wobei das Verfahren weiter umfasst:
    • Überprüfen jeder Kante von Dreiecken in der Netzstruktur, um zu bestimmen, ob es eine benachbarte Kante eines benachbarten Dreiecks gibt, wobei, wenn es keine benachbarte Kante gibt, die Kante als eine Randkante an einer Kante eines Lochs in der Netzstruktur identifiziert wird;
    • Ausbilden von Schlingen, die Kanten umfassen, die aufgrund der Prüfung als Randkanten identifiziert wurden, wobei jede der Schlingen einem entsprechenden Loch in der Netzstruktur entspricht; und Triangulieren jeder der Schlingen.
  • Beispiel 15. Ein nichtflüchtiges, computerlesbares Speichermedium mit computerausführbaren Anweisungen, die, wenn sie ausgeführt werden, ein Verfahren durchführen, das Folgendes umfasst:
    • Zugreifen auf Informationen, die im Speicher eines Computersystems gespeichert sind, wobei die Informationen Einzelaufnahmen von einem oder mehreren Objekten in einer Szene umfassen, die mit einer Softwareanwendung erzeugt wurden, wobei die Einzelaufnahmen aus verschiedenen Perspektiven in Bezug auf die Szene aufgenommen werden;
    • Erzeugen einer Punktwolke basierend auf den Einzelaufnahmen;
    • Erzeugen einer Netzstruktur basierend auf der Punktwolke;
    • Bestimmen eines Lichtfeldes auf einer Oberfläche der Netzstruktur; und
    • Speichern der Netzstruktur und des Lichtfeldes im Speicher eines Computersystems.
  • Beispiel 16. Das nicht-flüchtige, computerlesbare Speichermedium nach Beispiel 15, wobei die Informationen weiter Farbwerte pro Pixel in den Einzelaufnahmen und einen Tiefenwert pro Pixel in den Einzelaufnahmen umfassen.
  • Beispiel 17. Das nichtflüchtige, computerlesbare Speichermedium nach Beispiel 15, wobei das Bestimmen eines Lichtfeldes die Verwendung von sphärischen harmonischen Transformationen umfasst.
  • Beispiel 18. Das nichtflüchtige, computerlesbare Speichermedium nach Beispiel 15, wobei das Verfahren weiter ein Rendern und Anzeigen der Szene in virtuellen drei Dimensionen unter Verwendung des Lichtfeldes und der Netzstruktur umfasst.
  • Beispiel 19. Das nicht-flüchtige, computerlesbare Speichermedium nach Beispiel 15, wobei das Verfahren weiter umfasst:
    • für jeden Punkt in der Punktwolke, Erzeugen eines Polygons, das um einen jeweiligen Punkt zentriert ist und senkrecht zur Normalen für den jeweiligen Punkt steht;
    • Schneiden des Polygons gegen einen Nachbarpunkt durch Platzieren einer Schnittebene in der Mitte des Segments, das den jeweiligen Punkt mit dem Nachbarpunkt verbindet; und
    • Triangulieren jedes Polygons, das sich aus dem Schneiden ergibt, um die Netzstruktur zu erzeugen.
  • Beispiel 20. Das nicht-flüchtige, computerlesbare Speichermedium nach Beispiel 19, wobei das Verfahren ferner umfasst:
    • Überprüfen jeder Kante von Dreiecken in der Netzstruktur, um zu bestimmen, ob es eine benachbarte Kante eines benachbarten Dreiecks gibt, wobei, wenn es nicht die benachbarte Kante gibt, dann die Kante als eine Randkante an einer Kante eines Lochs in der Netzstruktur identifiziert wird;
    • Ausbilden von Schlingen, die Kanten umfassen, die aufgrund der Prüfung als Randkanten identifiziert wurden, wobei jede der Schlingen einem entsprechenden Loch in der Netzstruktur entspricht; und
    • Triangulieren jeder der Schlingen.
  • Obwohl der Gegenstand in einer für strukturelle Merkmale und/oder methodische Handlungen spezifischen Sprache beschrieben wurde, ist es verständlich, dass der in der Offenbarung definierte Gegenstand nicht unbedingt auf die oben beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr werden die oben beschriebenen Besonderheiten und Handlungen als exemplarische Formen der Umsetzung der Offenbarung offenbart.

Claims (11)

  1. Beansprucht wird:
  2. Ein Verfahren, umfassend: Zugreifen auf Informationen, die im Speicher eines Computersystems gespeichert sind, wobei die Informationen Einzelaufnahmen von einem oder mehreren Objekten in einer Szene umfassen, die mit einer Softwareanwendung erzeugt wurden, wobei die Einzelaufnahmen aus verschiedenen Perspektiven in Bezug auf die Szene aufgenommen werden; Erzeugen einer Punktwolke basierend auf den Einzelaufnahmen; Erzeugen einer Netzstruktur basierend auf der Punktwolke; Bestimmen eines Lichtfeldes auf einer Oberfläche der Netzstruktur; und Speichern der Netzstruktur und des Lichtfeldes im Speicher eines Computersystems.
  3. Das Verfahren nach Anspruch 1, wobei die Informationen weiter Farbwerte pro Pixel in den Einzelaufnahmen und einen Tiefenwert pro Pixel in den Einzelaufnahmen umfassen.
  4. Das Verfahren nach Anspruch 1 oder 2, wobei das Bestimmen eines Lichtfeldes ein Verwenden von sphärischen harmonischen Transformationen umfasst.
  5. Das Verfahren nach einem der Ansprüche 1 bis 3, weiter umfassend eine Wiedergabe der Szene in virtuellen drei Dimensionen unter Verwendung des Lichtfeldes und der Netzstruktur.
  6. Das Verfahren nach Anspruch 4, weiter umfassend ein Anzeigen der reproduzierten Szene aus verschiedenen Perspektiven in Reaktion auf Benutzereingaben.
  7. Das Verfahren nach einem der vorhergehenden Ansprüche, wobei die Anwendung ein Videospiel umfasst.
  8. Das Verfahren nach einem der vorhergehenden Ansprüche, wobei das Erzeugen einer Netzstruktur umfasst: für jeden Punkt in der Punktwolke, Erzeugen eines Polygons, das um einen jeweiligen Punkt zentriert ist und senkrecht zur Normalen für den jeweiligen Punkt steht; Schneiden des Polygons gegen einen Nachbarpunkt durch Platzieren einer Schnittebene in der Mitte des Segments, das den jeweiligen Punkt mit dem Nachbarpunkt verbindet; und Triangulieren jedes Polygons, das sich aus dem Schneiden ergibt, um die Netzstruktur zu erzeugen.
  9. Das Verfahren nach Anspruch 7, weiter umfassend: Überprüfen jeder Kante von Dreiecken in der Netzstruktur, um zu bestimmen, ob es eine benachbarte Kante eines benachbarten Dreiecks gibt, wobei die Kante, wenn es keine benachbarte Kante gibt, als eine Randkante an einer Kante eines Lochs in der Netzstruktur identifiziert wird; Bilden von Schlingen, die Kanten umfassen, die aufgrund der Überprüfung als Randkanten identifiziert wurden, wobei jede der Schlingen einem entsprechenden Loch in der Netzstruktur entspricht; und Triangulieren jeder der Schlingen.
  10. Ein Computersystem, umfassend: einen Prozessor; eine mit dem Prozessor gekoppelte Anzeige; und Speicher, der mit dem Prozessor gekoppelt ist, wobei in dem Speicher Anweisungen gespeichert sind, die, wenn sie von dem Computersystem ausgeführt werden, bewirken, dass das Computersystem das Verfahren nach einem der Ansprüche 1 bis 8 ausführt.
  11. Ein nichtflüchtiges, computerlesbares Speichermedium mit computerausführbaren Anweisungen, die, wenn sie ausgeführt werden, das Verfahren nach einem der Ansprüche 1 bis 8 durchführen.
DE102019118838.5A 2018-07-13 2019-07-11 Virtuelle photogrammetrie Pending DE102019118838A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862697934P 2018-07-13 2018-07-13
US62/697,934 2018-07-13
US16/434,972 2019-06-07
US16/434,972 US10984587B2 (en) 2018-07-13 2019-06-07 Virtual photogrammetry

Publications (1)

Publication Number Publication Date
DE102019118838A1 true DE102019118838A1 (de) 2020-01-16

Family

ID=69138852

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019118838.5A Pending DE102019118838A1 (de) 2018-07-13 2019-07-11 Virtuelle photogrammetrie

Country Status (3)

Country Link
US (2) US10984587B2 (de)
CN (1) CN110728740B (de)
DE (1) DE102019118838A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10803561B2 (en) * 2017-06-02 2020-10-13 Wisconsin Alumni Research Foundation Systems, methods, and media for hierarchical progressive point cloud rendering
CN108211354A (zh) * 2017-12-29 2018-06-29 网易(杭州)网络有限公司 3d游戏场景中虚拟资源的生成方法及装置
US10924721B2 (en) * 2018-12-20 2021-02-16 Intel Corporation Volumetric video color assignment
CN112184901B (zh) * 2020-09-08 2024-04-19 北京三快在线科技有限公司 一种深度图确定方法及装置
US20220165029A1 (en) * 2020-11-25 2022-05-26 Insurance Services Office, Inc. Computer Vision Systems and Methods for High-Fidelity Representation of Complex 3D Surfaces Using Deep Unsigned Distance Embeddings
WO2022133569A1 (en) * 2020-12-22 2022-06-30 Prevu3D Inc. Methods and system for reconstructing textured meshes from point cloud data
US11682136B2 (en) 2021-01-07 2023-06-20 Htc Corporation Display method, display system and non-transitory computer readable storage medium
CN112733852B (zh) * 2021-01-20 2024-04-26 闻泰通讯股份有限公司 区域确定方法、装置、计算机设备和可读存储介质
EP4040397A1 (de) * 2021-02-08 2022-08-10 Reactive Reality AG Verfahren und computerprogrammprodukt zur erzeugung einer 3d-darstellung eines objekts
WO2022268711A2 (en) * 2021-06-25 2022-12-29 Signify Holding B.V. Rendering a visual representation of a luminaire by re-using light values
US20230030247A1 (en) * 2021-07-29 2023-02-02 Alt Llc Method of asynchronous reprojection of an image of a 3d scene

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6009188A (en) * 1996-02-16 1999-12-28 Microsoft Corporation Method and system for digital plenoptic imaging
US6208347B1 (en) * 1997-06-23 2001-03-27 Real-Time Geometry Corporation System and method for computer modeling of 3D objects and 2D images by mesh constructions that incorporate non-spatial data such as color or texture
US6975329B2 (en) * 2002-12-09 2005-12-13 Nvidia Corporation Depth-of-field effects using texture lookup
US7542034B2 (en) * 2004-09-23 2009-06-02 Conversion Works, Inc. System and method for processing video images
US20080246836A1 (en) * 2004-09-23 2008-10-09 Conversion Works, Inc. System and method for processing video images for camera recreation
US20080259073A1 (en) * 2004-09-23 2008-10-23 Conversion Works, Inc. System and method for processing video images
EP1851727A4 (de) * 2005-02-23 2008-12-03 Craig Summers Automatische szenenmodellierung für die 3d-kamera und 3d-video
GB0704319D0 (en) 2007-03-06 2007-04-11 Areograph Ltd Image capture and playback
US9123159B2 (en) * 2007-11-30 2015-09-01 Microsoft Technology Licensing, Llc Interactive geo-positioning of imagery
IL190111A0 (en) * 2008-03-11 2008-12-29 Oren Cohen Method and system for representing game data in a generic form
US8319825B1 (en) * 2008-06-16 2012-11-27 Julian Urbach Re-utilization of render assets for video compression
US8810590B2 (en) * 2008-07-11 2014-08-19 Advanced Micro Devices, Inc. Method and apparatus for spatial binning on a GPU and global path planning to avoid spatially binned objects
US8542231B2 (en) * 2009-06-29 2013-09-24 Crytek Gmbh Method, computer graphics image rendering system and computer-readable data storage medium for computing of indirect illumination in a computer graphics image of a scene
US20120028707A1 (en) * 2010-02-24 2012-02-02 Valve Corporation Game animations with multi-dimensional video game data
US9381429B2 (en) * 2010-02-24 2016-07-05 Valve Corporation Compositing multiple scene shots into a video game clip
US20120021828A1 (en) * 2010-02-24 2012-01-26 Valve Corporation Graphical user interface for modification of animation data using preset animation samples
US20120021827A1 (en) * 2010-02-25 2012-01-26 Valve Corporation Multi-dimensional video game world data recorder
US20110222757A1 (en) * 2010-03-10 2011-09-15 Gbo 3D Technology Pte. Ltd. Systems and methods for 2D image and spatial data capture for 3D stereo imaging
US9171394B2 (en) * 2012-07-19 2015-10-27 Nvidia Corporation Light transport consistent scene simplification within graphics display system
US9182812B2 (en) * 2013-01-08 2015-11-10 Ayotle Virtual sensor systems and methods
US9466143B1 (en) * 2013-05-03 2016-10-11 Exelis, Inc. Geoaccurate three-dimensional reconstruction via image-based geometry
US9786062B2 (en) * 2013-05-06 2017-10-10 Disney Enterprises, Inc. Scene reconstruction from high spatio-angular resolution light fields
EP3032495B1 (de) * 2014-12-10 2019-11-13 Dassault Systèmes Texturierung eines 3D-modellierten Objekts
GB2536061B (en) * 2015-03-06 2017-10-25 Sony Interactive Entertainment Inc System, device and method of 3D printing
US10198872B2 (en) * 2015-08-10 2019-02-05 The Board Of Trustees Of The Leland Stanford Junior University 3D reconstruction and registration of endoscopic data
CN105825544B (zh) * 2015-11-25 2019-08-20 维沃移动通信有限公司 一种图像处理方法及移动终端
US10706621B2 (en) * 2015-11-30 2020-07-07 Photopotech LLC Systems and methods for processing image information
US10306156B2 (en) * 2015-11-30 2019-05-28 Photopotech LLC Image-capture device
US10114467B2 (en) * 2015-11-30 2018-10-30 Photopotech LLC Systems and methods for processing image information
EP3188033B1 (de) * 2015-12-31 2024-02-14 Dassault Systèmes Rekonstruktion eines 3d-modellierten objekts
CN105791881A (zh) * 2016-03-15 2016-07-20 深圳市望尘科技有限公司 一种基于光场摄像机的三维场景录播的实现方法
GB2552935B (en) * 2016-08-04 2020-01-01 Sony Interactive Entertainment Inc Device and method of analysing an object for 3D printing
US11043026B1 (en) * 2017-01-28 2021-06-22 Pointivo, Inc. Systems and methods for processing 2D/3D data for structures of interest in a scene and wireframes generated therefrom
CN108876926B (zh) * 2017-05-11 2021-08-10 京东方科技集团股份有限公司 一种全景场景中的导航方法及系统、ar/vr客户端设备
GB2564401B (en) * 2017-07-06 2020-10-07 Sony Interactive Entertainment Inc System and method of enhancing a 3D printed model
GB2564155B (en) * 2017-07-06 2020-10-14 Sony Interactive Entertainment Inc System and method of 3D print modelling
WO2020009800A1 (en) * 2018-07-02 2020-01-09 Magic Leap, Inc. Methods and systems for interpolation of disparate inputs

Also Published As

Publication number Publication date
US10984587B2 (en) 2021-04-20
US20200020155A1 (en) 2020-01-16
CN110728740A (zh) 2020-01-24
US11625894B2 (en) 2023-04-11
US20210201576A1 (en) 2021-07-01
CN110728740B (zh) 2023-09-05

Similar Documents

Publication Publication Date Title
DE102019118838A1 (de) Virtuelle photogrammetrie
DE102019103059B4 (de) Hieb- und stichfester Strahl-Dreieck-Schnittpunkt
DE60107130T2 (de) Sichtbarkeitsprojektion und Bildrekonstruktion für Oberflächenelemente
DE102019101873A1 (de) Abfragespezifische Verhaltensmodifizierung von Baumtraversierung
DE60100452T2 (de) Dynamische einstellung von muster zum pixel filterung in antwort auf benutzereingang und/oder sensoreingang
DE102019103058A1 (de) Verfahren für fortgesetzte begrenzungsvolumenhierarchietraversierung auf schnittpunkte ohne shader-intervention
DE102016103870A1 (de) Systeme und Verfahren zur weichen Schattierung in 3D-Rendering
DE102019102821A1 (de) Verfahren zur behandlung von ungeordneten opak- und alphastrahl/primitiv-schnittpunkten
JP4391775B2 (ja) グラフィクスオブジェクトの、複数のポイントを含む3dモデルをレンダリングする方法及び装置
DE102019103326A1 (de) Robuste, effiziente multiprozessor-koprozessor-schnittstelle
DE102021205824A1 (de) Techniken zur traversierung von bei raytracing verwendeten daten
DE102021205758A1 (de) Hardware-beschleunigung für strahlverfolgung mit transformationen in alternativen weltraum
DE102017108096A1 (de) System, verfahren und computerprogrammprodukt zum rendern bei variablen abtastraten mittels projektiver geometrischer verzerrung
DE102015113240A1 (de) System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters
DE69924699T2 (de) Verfahren zur Schaffung von als Oberflächenelemente dargestellten grafischen Objekten
DE112005002076T5 (de) Unterteilung von Geometriebildern in Grafikhardware
DE102016103854A1 (de) Graphikverarbeitung mit direktionalen Darstellungen der Beleuchtung an Sondenpositionen innerhalb einer Szene
DE102021115407A1 (de) Hardwarebeschleunigung zur strahlverfolgung von primitiven, die vertices teilen
DE102021114847A1 (de) Verbesserte techniken zum traversieren von strahlverfolgungs-beschleunigungsstrukturen
DE102010048486A1 (de) Bildverarbeitungstechniken
DE112022003721T5 (de) Mikro-netze, eine strukturierte geometrie für computergrafik
DE102021115353A1 (de) Strahlverfolgung-hardwarebeschleunigung zur unterstützung von bewegungsunschärfe und sich bewegender/verformender geometrie
DE102013222685A1 (de) System, Verfahren und Computer-Programm-Produkt zum Abtasten einer hierarchischen Tiefe-Karte
DE102020108358A1 (de) Wiedergeben von szenen mit einer kombination aus strahlverfolgung und rasterung
EP2528042B1 (de) Verfahren und Vorrichtung zum Re-Meshing von 3D-Polygonmodellen

Legal Events

Date Code Title Description
R012 Request for examination validly filed