DE112020002550T5 - Virtual-Reality-Simulationen unter Verwenden von Oberflächen-Tracking - Google Patents

Virtual-Reality-Simulationen unter Verwenden von Oberflächen-Tracking Download PDF

Info

Publication number
DE112020002550T5
DE112020002550T5 DE112020002550.0T DE112020002550T DE112020002550T5 DE 112020002550 T5 DE112020002550 T5 DE 112020002550T5 DE 112020002550 T DE112020002550 T DE 112020002550T DE 112020002550 T5 DE112020002550 T5 DE 112020002550T5
Authority
DE
Germany
Prior art keywords
pose
obstacle
leading
following
sweep
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
DE112020002550.0T
Other languages
English (en)
Inventor
Gordon Yeoman
Michael Sauter
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 DE112020002550T5 publication Critical patent/DE112020002550T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality

Abstract

Die Offenbarung stellt ein System zum Rendern einer Virtual-Reality-(VR)-Szene sowie ein Verfahren und ein Computerprogrammprodukt bereit, um eine folgende Pose in einem VR-Simulator während eines Simulationsschritts zu bestimmen. In einem Beispiel umfasst das Verfahren: (1) Berechnen einer oder mehrerer aktueller Kandidatenposen unter Verwenden von Eingabeparametern, wobei jede der aktuellen Kandidatenposen eine zeitliche Projektion einer folgenden Pose entlang einer jeweiligen Sweep-Richtung in Richtung zu einer führenden Pose ist, und wobei sich ein Hindernis zwischen der folgenden Pose und der führenden Pose befindet, (2) Auswählen einer Zielpose aus der einen oder den mehreren aktuellen Kandidatenposen, (3) Anpassen der Zielpose basierend auf physikalisch basierten Beschränkungen und den Eingabeparametern, wobei die physikalisch basierten Beschränkungen eine Oberfläche des Hindernisses verwenden, und (4) Rendern einer neuen folgenden Pose basierend auf der verbesserten Zielpose.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht die Rechte der U.S. Non-Provisional Anmeldung mit der Nummer 16/888,408 , eingereicht von Gordon Yeoman, et al. am 29. Mai 2020, mit dem Titel „VIRTUAL REALITY SIMULATIONS USING SURFACE TRACKING“, welche die Rechte der U. S. Provisional Anmeldung mit der Nummer 62/854,850 beansprucht, eingereicht von Gordon Yeoman, et al. am 30. Mai 2019, mit dem Titel „VIRTUAL REALITY SIMULATIONS USING SURFACE TRACKING“, die dieser Anmeldung gemeinhin zugeordnet und hierin durch Bezugnahme aufgenommen ist.
  • TECHNISCHES GEBIET
  • Diese Anwendung bezieht sich im Allgemeinen auf eine Virtual-Reality-Simulation (dt auch Simulation einer virtuellen Realität) und insbesondere auf eine Simulation von Bewegungen von Objekten in einer Virtual-Reality-Umgebung (dt. auch Umgebung in einer virtuellen Realität), wobei die Objekte mit Hindernissen interagieren.
  • HINTERGRUND
  • In Virtual-Reality (VR)-Systemen werden Sensoren eingesetzt, um die Bewegung eines Benutzers zu verfolgen, damit diese Bewegung in einer simulierten Umgebung nachgebildet werden kann. Objekte, Figuren, Tiere, Pflanzen und andere Hindernisse, die in der simulierten Umgebung eines VR-Simulators angezeigt werden, sind in der Regel nicht im physischen Raum des Benutzers vorhanden, z. B. in der Umgebung des Benutzers. Infolgedessen kann ein Benutzer in seinem physischen Raum eine Bewegung machen, die die Illusion der simulierten Umgebung zerstören könnte. So kann ein Benutzer beispielsweise seine Hand nach vorne stoßen, ohne auf ein Hindernis in seinem physischen Raum zu stoßen, während seine Hand in der simulierten Umgebung eine Wand vor ihm durchstößt. Diese unrealistische Erscheinung in der simulierten Umgebung kann das virtuelle Erlebnis des Benutzers beeinträchtigen.
  • ZUSAMMENFASSUNG
  • Gemäß einem Aspekt stellt die Offenbarung ein Verfahren bereit, um eine folgende (engl. follower, dt. auch nachfolgende) Pose in einem Virtual Reality (VR)-Simulator während eines Simulationsschrittes zu bestimmen. In einem Beispiel umfasst das Verfahren: (1) Berechnen einer oder mehrerer aktueller Kandidatenposen unter Verwenden von Eingabeparametern, wobei jede der aktuellen Kandidatenposen eine zeitliche Projektion einer folgenden Pose entlang einer jeweiligen Sweep-Richtung (engl. sweep, dt. auch Verschiebung, Bewegung (in der virtuellen Realität entlang einer Richtung oder eines Pfades)) in Richtung einer führenden (engl. leader) Pose ist, und wobei ein Hindernis zwischen der folgenden Pose und der führenden Pose angeordnet ist, (2) Auswählen einer Zielpose aus der einen oder den mehreren aktuellen Kandidatenposen, (3) Anpassen (engl. refine, dt. auch Weiterentwickeln, Verbessern) der Zielpose unter Verwenden von physikbasierten Beschränkungen und der Eingabeparameter, wobei die physikbasierten Beschränkungen eine Oberfläche des Hindernisses verwenden, und (4) Rendern einer neuen folgenden Pose basierend auf der angepassten Zielpose.
  • Gemäß einem weiteren Aspekt stellt die Offenbarung ein Computerprogrammprodukt bereit, das eine Reihe von Betriebsanweisungen aufweist, die auf einem nichtflüchtigen computerlesbaren Medium gespeichert sind und wenn sie durch eine Datenverarbeitungsvorrichtung ausgeführt werden, die Datenverarbeitungsvorrichtung anweisen, Operationen durchzuführen, um eine folgende Pose in einem VR-Simulator während eines Simulationsschritts zu bestimmen. In einem Beispiel umfassen die Operationen: (1) Berechnen einer oder mehrerer Kandidatenposen, wobei jede der Kandidatenposen eine zeitliche Projektion einer folgenden Pose entlang einer jeweiligen Schwenkrichtung in Richtung einer führenden Pose ist, und wobei sich ein Hindernis zwischen der folgenden Pose und der führenden Pose befindet, (2) Auswählen einer Zielpose aus der einen oder den mehreren Kandidatenposen, (3) Anpassen der Zielpose unter Verwendung von physikbasierten Beschränkungen, und (4) Rendern einer neuen folgenden Pose basierend auf der angepassten Zielpose.
  • Gemäß einem weiteren Aspekt stellt die Offenbarung ein System zum Rendern einer VR-Szene bereit. In einem Beispiel umfasst das System: (1) ein VR-Steuergerät, das so betrieben werden kann, dass es Benutzerparameter überträgt, die der Bewegung eines Benutzers entsprechen, und (2) einen VR-Simulator, der so betrieben werden kann, dass er die Benutzerparameter und Anwendungsparameter empfängt und verwendet, um eine Szene einer simulierten Umgebung unter Verwenden von von einem oder mehreren Bewegungsalgorithmen basierend auf einer Interaktion einer führenden Pose mit einem Hindernis zu rendern, wobei die führende Pose die Bewegung des Benutzers in der simulierten Umgebung repräsentiert und das Hindernis zumindest teilweise zwischen einer folgenden Pose und der führenden Pose in der simulierten Umgebung liegt.
  • Figurenliste
  • Es wird nun auf die folgenden Beschreibungen in Verbindung mit den beigefügten Zeichnungen verwiesen:
    • 1A zeigt ein Diagramm einer beispielhaften Analyse von Kandidatenposen in einer 2D-Umgebung;
    • 1B zeigt ein Diagramm einer beispielhaften Analyse von Kandidatenposen in einer 3D-Umgebung;
    • 2 ist eine Illustration, die ein beispielhaftes Verfahren zum Bestimmen einer finalen Pose visuell repräsentiert;
    • 3 ist eine beispielhafte Darstellung eines Verfahrens zur Analyse von Ghosting (engl. ghosting, dt. auch Geistereffekt) einer finalen Pose;
    • 4 ist eine beispielhafte Darstellung eines Anpassen (engl. refining, dt. auch Feinabstimmen, Präzisieren) einer Zielpose;
    • 5 zeigt beispielhaft ein Flussdiagramm eines Verfahrens zum Bestimmen eines Typs eines Bewegungsalgorithmus für die Bewegung eines Objekts in einer simulierten Umgebung;
    • 6 zeigt ein Flussdiagramm eines Beispiels für ein Verfahren zum Bestimmen einer Zielpose, wenn zwischen der folgenden Pose und der führenden Pose ein Hindernis vorhanden ist; und
    • 7 zeigt ein Blockdiagramm zur Demonstration eines Virtual-Reality-Oberflächen-Trackingsystems (engl. surface tracking, dt. auch Oberflächen(nach)verfolgung, oder Nachführen an einer Oberfläche).
  • DETAILLIERTE BESCHREIBUNG
  • Ein VR-Simulator kann eine VR-Umgebung darstellen, d. h. eine simulierte Umgebung mit verschiedenen Arten von Einstellungen, Orten, Szenen usw., die einem Benutzer über eine VR-Anzeige bereitgestellt wird, und es einem Benutzer ermöglichen, eine Vielzahl von Aktionen und Bewegungen, d. h. Bewegungen, im physischen Raum durchzuführen, die in der simulierten Umgebung nachgebildet werden. Bei der VR-Anzeige kann es sich um ein VR-Headset, eine Brille oder eine andere Art von Anzeige handeln, die zweidimensionale (2D) oder dreidimensionale (3D) simulierte Umgebungen darstellen kann. Die Bewegungen eines Benutzers können von einem oder mehreren VR-Steuergeräten erfasst werden, wie z. B. einem Headset, das Augen- und Kopfbewegungen verfolgt, einem Handheld-Steuergerät, einer Kamera, einem haptischen Gerät und anderen Arten von Körper- und Sensorsteuergeräten.
  • Da ein VR-Simulator eine simulierte Umgebung schaffen kann, die sich von der physischen Umgebung des Benutzers unterscheidet, z. B. der physische Raum um den Benutzer herum, kann der Benutzer eine Bewegung in der physischen Umgebung initiieren, die in der simulierten Umgebung unrealistisch ist, wie z. B. das Bewegen seiner Hand durch ein Hindernis in der simulierten Umgebung. Ein Hindernis kann ein Objekt, eine Figur, ein Tier, eine Pflanze, eine Flüssigkeit oder eine andere Art von physikalisch basierten Objekten sein, die die Bewegung eines anderen Objekts verhindern oder beeinflussen können. Die oben erwähnte Wand ist ein Beispiel für ein Hindernis, das in der simulierten Umgebung vorhanden sein kann.
  • Während die Simulation einer unrealistischen Bewegung, wie z. B. das Zeigen der Hand des Benutzers, die sich durch eine feste Wand bewegt, das VR-Erlebnis des Benutzers unterbrechen kann, kann das Verhindern, dass der Benutzer die Bewegung in der simulierten Umgebung vollendet, auch das VR-Erlebnis negativ beeinflussen, indem es Desorientierung bewirkt. Wenn zum Beispiel die Hand des Benutzers in seinem physischen Raum nach vorne gestoßen wird, kann die simulierte Umgebung simulieren, dass die Hand des Benutzers an einer Wand einen Zentimeter vor dem Benutzer stoppt. Eine andere unbefriedigende Lösung besteht darin, die Hand des Benutzers durch das Hindernis in der simulierten Umgebung bewegen zu lassen, während Objekte, die der Benutzer halten oder tragen kann, durch das Hindernis aufgehalten werden. Diese Art der Bewegungsführung kann als „Jointed Picking“ mit Penetrationsvermeidung bezeichnet werden. Durch die Modifikation der Interaktion von Objekten und Hindernissen in simulierten Umgebungen kann die virtuelle Erfahrung des Benutzers verbessert werden.
  • Die Offenbarung stellt Systeme und Verfahren bereit, die es ermöglichen, die Bewegung eines Objekts in einer virtuellen Umgebung zu steuern, um zu verhindern, dass das Objekt in ein Hindernis in der virtuellen Umgebung eindringt. Anstatt in das Hindernis einzudringen, bewegen die hier offenbarten Merkmale das Objekt entlang einer Oberfläche des Hindernisses, die für einen Benutzer glaubhaft und plausibel erscheint. Es werden hier Verfahren offenbart, die eine Kombination aus Starrkörperalgorithmen und geometrischen Abfragen verwenden, um potentielle Bewegungen zu berechnen, die auf der Approximation der Bewegung eines Benutzers (wie sie von einem Sensor verfolgt wird) beruhen, während physikbasierte Beschränkungen von Hindernissen innerhalb der simulierten Umgebung beibehalten werden. Eine Beschränkung ist ein Faktor, der die Bewegung von Objekten in der simulierten Umgebung kontrolliert. Ähnlich wie eine Leitplanke auf einer Autobahn kann eine Beschränkung die Bewegung entlang eines bestimmten Pfades kontrollieren. Die physikbasierten Beschränkungen können die Beschränkungen des sich bewegenden Objekts oder Charakters (z. B. Geschwindigkeit und Impuls), die Beschränkungen der Interaktion mit der Oberfläche eines Hindernisses (z. B. Oberflächensteifigkeit, Sprungkraft und Textur), externe Beschränkungen, Beschränkungen für starre Körper (z. B. dürfen sich starke Körper nicht unter geringer Kraft verbiegen) und andere physikbasierte Beschränkungen, die in einem VR-Simulator verfügbar sind, umfassen. Ein Beispiel für eine externe Beschränkung ist, dass eine Hand nicht gezwungen werden kann, sich auf unnatürliche Weise zu verbiegen, wenn sie auf ein Hindernis trifft. Eine simulierte Hand, die mit einem Arm verbunden ist, kann den Beschränkungen entsprechen, die durch die Parameter für die Positionierung der Finger, des Handgelenks und des Arms sowie durch das Drehmoment und die Flexibilität festgelegt sind. Die Einschränkungen können Regeln folgen, die vom Benutzer, von einer Anwendung oder von einem VR-Simulator festgelegt werden. Die Beschränkungen müssen nicht dem realen Leben entsprechen; die auf der Physik basierenden Beschränkungen können von der Anwendung, die in der simulierten Umgebung läuft, festgelegt werden. Bei der Anwendung kann es sich um eine Videospielanwendung handeln.
  • Bei der Erstellung einer simulierten Umgebung findet ein VR-Simulator einen Ausgleich zwischen einer vom Benutzer gewünschten Bewegung und den durch ein Hindernis festgelegten Beschränkungen, z. B. die Kraft der Bewegung des Benutzers und die Kontaktkraft des Hindernisses, das die Bewegung verhindert, wie z. B. das Drücken einer Hand gegen eine Wand. Eine Technik basierend auf einer führenden und einer nachfolgenden Pose ist eine der Techniken, die gemäß den Prinzipien der Offenbarung verwendet werden kann. Eine folgende Pose ist die Position, der Ort und die Orientierung eines Objekts an einem Startpunkt. Eine führende Pose ist die Position, der Ort und die Orientierung eines Objekts an dem Punkt, der durch die Bewegung des Benutzers angefordert wird. An einem Punkt in der Simulation wird zum Beispiel die Hand einer Figur über einer Tischplatte gehalten. Diese Position und Orientierung der Hand ist die folgende Pose. Der Benutzer bewegt seine Hand nach unten. In der simulierten Umgebung ist die führende Pose die simulierte Hand, die nun unterhalb der Tischplatte positioniert und orientiert ist, z. B. der Zielpunkt der Bewegung. Die folgende Pose ist die Position, der Ort und die Orientierung des Objekts, das für den Benutzer auf der VR-Anzeige gerendert wird. Die führende Pose wird zur Nachführung der Bewegung von Objekten verwendet und wird normalerweise nicht für den Benutzer gerendert.
  • Der VR-Simulator kann die folgende Pose so lange bewegen, bis sie auf ein Hindernis, in diesem Fall die Tischplatte, trifft, d. h. sich mit diesem schneidet. Die Richtung, in der die folgende Pose bewegt wird, ist die Sweep-Richtung. Das Ergebnis ist, dass die folgende Pose nun gegen das Hindernis stößt, was als Blockierungspose bezeichnet wird. Diese Art von Lösung kann einschränkend sein. Befindet sich die simulierte Hand des Benutzers beispielsweise in der Nähe einer Kante der Tischplatte, ist es für den Benutzer besser, wenn sich die simulierte Hand leicht zur Seite bewegt und um die Ecke der Tischplatte gleitet, z. B. in einer so genannten Streichpose (engl. stroking pose), bei der die Bewegung über die Oberfläche des Hindernisses streicht. Bei der Streichpose bewegt sich die folgende Pose knapp außerhalb der Oberfläche des Hindernisses entlang der Oberfläche des Hindernisses, während sich die führende Pose knapp über, an oder knapp unter der Oberfläche des Hindernisses befinden kann. Ein Beispiel: Ein Benutzer fährt mit seiner Hand über die Oberfläche eines Autos. Dies kann zu einem flüssigeren visuellen Erlebnis für den Benutzer führen.
  • Die Kombination von Blockierungsposen und Streichposen ermöglicht es der folgenden Pose, der führenden Pose in einer physikalisch plausiblen Weise innerhalb der simulierten Umgebung zu folgen. Blockierungsposen, die unter Verwendung von Blockierungsalgorithmen implementiert werden, können bewirken, dass die folgende Pose an dem initialen Blockierungspunkt des Hindernisses hängenbleibt. Werden ausschließlich Blockierungsalgorithmen verwendet, kann die nachfolgende Pose der seitlichen Bewegung der führenden Pose nicht folgen. Streichposen, die unter Verwendung von Streichalgorithmen implementiert werden, können bewirken, dass die folgende Pose der seitlichen Bewegung der führenden Pose folgt, während diese die Oberflächenbegrenzung des Hindernisses nicht einhält. Daher kann die Bewegung die Beschränkungen der Blockierungsalgorithmen und der Streichalgorithmen einhalten.
  • Gemäß einigen Aspekten kann die Verwendung von Blockierungsalgorithmen ohne Streichalgorithmen von Vorteil sein, z. B. in Fällen, in denen das Hindernis die Größe der folgenden Pose hat oder kleiner ist als diese. So kann es beispielsweise effizienter sein, eine sich bewegende Hand an einem kleinen Steuergerät zu stoppen (zu blockieren), als zu versuchen, sie um das Steuergerät herum zu bewegen (zu öffnen). Dies lässt sich durch die Verwendung eines Sweep-Modus-Verhältnisses zwischen der Größe des sich bewegenden Objekts, z. B. der Hand, und der Größe des Hindernisses, z. B. des Steuerknopfs, bestimmen. Technisch gesehen lässt sich das Sweep-Modus-Verhältnis als ein Radius einer Begrenzungskugel des Hindernisses definieren, der mit einem Radius einer Begrenzungskugel der folgenden Geometrie verglichen (als Zähler in einem Verhältnis gesetzt) werden kann. Ist das Sweep-Modus-Verhältnis größer als ein Sweep-Modus-Parameter, z. B. 1,0 oder eine andere reelle Zahl, können die Blockier- und Streichalgorithmen verwendet werden. Wenn das Sweep-Modus-Verhältnis gleich oder kleiner als der Sweep-Modus-Parameter ist, kann der Blockierungsalgorithmus ohne den Streichalgorithmus verwendet werden. Dieser Aspekt kann die Berechnungskomplexität für die zu simulierende Bewegung reduzieren.
  • Ein VR-Simulator kann so konfiguriert sein, dass er die verschiedenen Schritte des offenbartes Verfahrens zur Bewegung eines Objekts in der simulierten Umgebung durchführt. Während sich der Benutzer bewegt, kann der VR-Simulator die visuelle Darstellung in der simulierten Umgebung in kleinen Schritten generieren, die Simulationsschritte genannt werden. Die Anzahl der Simulationsschritte kann von mehreren Faktoren abhängen, wie z.B. der Menge der verfügbaren Computersystemressourcen (je mehr Ressourcen verfügbar sind, desto mehr Schritte können innerhalb eines Zeitraums generiert werden), der von der Anwendung eingestellten visuellen Qualität (je höher die visuelle Qualität, desto mehr Rechenressourcen werden verwendet) und der Anzahl der Aktualisierungen, die an der visuellen Darstellung über eine Zeitdauer, z.B. Sekunden, vorgenommen werden, wie von der Anwendung oder dem Benutzer angefordert (je höher die Anzahl der Aktualisierungen, desto mehr Rechenressourcen können verwendet werden).
  • Der VR-Simulator kann einen Parameter, wie z. B. Bilder pro Sekunde (FPS), verwenden, um anzuzeigen, wie viele visuelle Darstellungen, d. h. Szenen, pro Sekunde für die Ausgabe auf der VR-Anzeige generiert werden sollen. Typische Bereiche für die FPS sind 60 FPS bis 120 FPS, wobei einige VR-Simulatoren auch niedrigere oder höhere FPS verwenden können. Das bedeutet, dass der VR-Simulator zwischen 60 und 120 Aktualisierungen der Szene pro Sekunde ausgeben kann. Die Anzahl der Simulationsschritte, die der VR-Simulator während einer bestimmten Zeitspanne, z. B. Sekunden, verwendet, kann auf die FPS eingestellt werden. Andere Faktoren, wie die Optimierung des VR-Simulators und die verfügbaren Rechenressourcen, können die Anzahl der Simulationsschritte höher oder niedriger anpassen. Wenn der VR-Simulator den Simulationsschritt inkrementiert, können neue Informationen unter Verwendung der aktuell angeforderten Bewegung des Benutzers berechnet und eine neue Szene auf der VR-Anzeige ausgegeben werden.
  • Der VR-Simulator kann die Szene generieren, d. h. rendern, oder ein separates Rendering-System verwenden. Ein Renderer generiert ein Bild oder eine Szene aus Szenendaten, die die simulierte 2D- oder 3D-Umgebung repräsentieren, und kann die gerenderte Szene an ein Anzeigegerät oder einen Speicher ausgeben. Ein Renderer kann als Softwareanwendung, als Prozessor, als Computersystem, das Anweisungen empfängt und die Szene ausgibt, oder als eine Kombination davon implementiert werden. Bei dem Prozessor kann es sich um einen Parallelprozessor, z. B. eine Grafikverarbeitungseinheit (GPU), oder um einen seriellen Prozessor, z. B. eine zentrale Verarbeitungseinheit (CPU), handeln. Es kann auch eine Kombination aus einem oder mehreren Prozessoren verwendet werden.
  • Zum Beispiel kann der Rendering-Prozess zwischen einer allgemeinen CPU und einem Grafikverarbeitungs-Subsystem aufgeteilt werden, das architektonisch um eine GPU zentriert ist. Die CPU kann High-Level-Operationen durchführen, wie z. B. das Bestimmen der Position, der Bewegung und der Kollision von Objekten und Hindernissen in einer bestimmten Szene. Aus diesen High-Level-Operationen generiert die CPU einen Satz von Rendering-Befehlen und Daten, die das gewünschte gerenderte Bild oder die gewünschten Bilder definieren. Die Rendering-Befehle und -Daten können Szenengeometrie, Beleuchtung, Schattierung, Texturierung, Bewegung und/oder Kameraparameter für eine Szene definieren. Aus dem Satz von Rendering-Befehlen und -Daten kann das Grafikverarbeitungs-Subsystem eine oder mehrere gerenderte Szenen erzeugen.
  • Der Renderer kann Raytracing-Rendering-Techniken zum Rendern verwenden. Raytracing ist ein Beispiel für eine Technik, die zum Rendern von Szenen in einer Rendering-Pipeline verwendet wird, insbesondere wenn die Szenen eine komplexe Beleuchtung umfassen. Raytracing beschreibt eine beliebige Anzahl von Techniken, die zur effizienten Auflösung der Sichtbarkeit entlang einer geraden Linie zwischen zwei beliebigen Punkten in einer Szene verwendet werden, wobei die Sichtbarkeitsinformationen zur Auflösung des Lichttransports und der Lichtinteraktionen mit Materialien in der Szene verwendet werden. Zum Beispiel kann Raytracing eine Linie, d.h. einen Strahl, von der Sichtperspektive eines Benutzers zu einem Objekt innerhalb der Szene verlängern und dann einen zweiten Strahl von diesem Objekt zu einer Lichtquelle oder zu einem anderen Objekt der Szene bestimmen. Diese Strahlen können dann verwendet werden, um die Lichtmenge zu bestimmen, die auf die Objekte trifft (einschließlich indirekter Beleuchtung und Reflexionen), den Winkel des Lichts zur Sichtperspektive des Benutzers und die Art und Weise, wie die Farbe, die Textur und andere Merkmale von Objekten und Hindernissen für den Benutzer repräsentiert werden.
  • Die Verarbeitung der Strahlen für das Raytracing-Rendering kann parallel von einem einzigen Prozessor oder von mehreren Prozessoren, wie z. B. verschiedenen GPUs, durchgeführt werden und ist sowohl für lokale als auch für entfernte Rechner anwendbar. Als solches kann das Rendern von einem Cloud-basierten Renderer durchgeführt werden, der gerenderte Einzelbilder für entfernte Benutzer bereitstellt. Parallel, wie hier verwendet, umfasst zumindest teilweise parallel und zeigt an, dass die Verarbeitung auf parallelen Pfaden, aber nicht notwendigerweise simultan erfolgt.
  • Ein Cloud-basierter Renderer kann auf einem Server oder auf mehreren Servern einer Cloud-Computing-Plattform implementiert werden, die den einen oder die mehreren Prozessoren und zusätzliche Komponenten, wie einen Speicher und eine Kommunikationsschnittstelle, umfassen. Ein Bildprozessor kann gerenderte Szenen von dem Cloud-basierten Renderer empfangen und die Szenen in einen oder mehrere Videostreams kodieren, die einem Videosender zur Übertragung an Geräte, wie z. B. VR-Anzeigen, über ein Kommunikationsnetzwerk bereitgestellt werden. Durch diese auf der Cloud basierende Technologie können Benutzer einen Videostream empfangen und eine virtuelle Grafikerfahrung auf ihren Rechengeräten genießen. So kann beispielsweise eine Videospielanwendung Eingaben für einen Cloud-basierten Renderer bereitstellen, der das Spiel auf den Geräten eines oder mehrerer Nutzer rendert und streamt. Auch Eingaben von einem VR-Steuergerät können für das Rendering und das Game-Streaming empfangen werden. Das Game-Streaming ermöglicht es einem Benutzer, ein Spiel, das aus der Ferne gerendert wird, über sein Eingabegerät, wie z. B. ein VR-Steuergerät, zu steuern und zu spielen. Die auf der Cloud basierende Rendering-Plattform und das Game-Streaming können es den Nutzern ermöglichen, aus der Ferne über ein Kommunikationsnetzwerk gegen andere in einem Videospiel anzutreten.
  • Unabhängig davon, ob die Simulation basierend auf einem Cloud-basierten Renderer oder einem Renderer in der Nähe der VR-Anzeige oder des Steuergeräts durchgeführt wird, kann die Bewegung eines Objekts durch zwei separate Posen in der simulierten Umgebung repräsentiert werden. Eine folgende Pose bleibt typischerweise auf der Außenseite der Oberfläche des Hindernisses und ist die ursprüngliche Position und Orientierung des sich bewegenden Objekts für einen aktuellen Simulationsschritt. Eine führende Pose repräsentiert das Ergebnis der Bewegung, wenn keine Einschränkungen bestehen. Darüber hinaus verwendet die Offenbarung Kandidatenposen, d. h. potenzielle Posen, die durch geometrische Abfragen bestimmt werden, wie z. B. Sweeps. Die Kandidatenposen werden verwendet, um eine ungefähre Zielpose zu berechnen, die dann durch die Simulation der Starrkörperphysik angepasst wird und zu einer angepassten Zielpose führt. Wie bei den Kandidatenposen wird auch die ungefähre Zielpose unter Verwendung geometrischer Abfragen berechnet. Die Bewegung der folgenden Pose zur angepassten Zielpose wird durch eine Simulation basierend auf Starrkörperphysik (StarrkörperphysikSimulation) erreicht. Die Starrkörperphysiksimulation kann in ihren Algorithmen Kräfte, Gelenkbewegungen und Geschwindigkeitsfaktoren verwenden, um die folgende Pose in die angepasste Zielpose zu bringen. Eine Physik-Engine, wie die Physik-Engine 740 von 7, kann verwendet werden, um die Starrkörperphysiksimulation bereitzustellen.
  • In einem einzigen Simulationsschritt, der vom VR-Simulator ausgeführt wird, wird die folgende Pose in Richtung der Zielpose bewegt. Abhängig von der Größe des Simulationsschritts, der Geschwindigkeit der Bewegung und den verschiedenen verwendeten Beschränkungen kann die folgende Pose die Zielpose nicht erreichen und daher auf einem Teil des Weges zur Zielpose anhalten. Die folgende Pose kann der führenden Pose hinterherlaufen, z. B. wenn die Bewegung innerhalb der Beschränkungen der simulierten Umgebung ausreichend schnell ist, so dass die folgende Pose die führende Pose nicht erreicht. In einem nachfolgenden Simulationsschritt kann eine neue führende Pose bestimmt werden, zusammen mit entsprechenden neuen Kandidatenposen, und somit eine neue Zielpose ausgewählt werden. Wenn ein Benutzer beispielsweise seine Faust sehr schnell bewegt, kann die Szene so aktualisiert werden, dass die Faust einen Teil des Weges zu der Stelle zurückgelegt hat, an die der Benutzer seine Faust bewegt hat. In einem nachfolgenden Simulationsschritt kann unter Verwenden von der dann aktuellen Position der Faust eine neue Zielpose ausgewählt werden.
  • Innerhalb des Simulationsschritts kann der VR-Simulator die folgende Pose durch die Bewegung der führenden Pose gemäß vier Berechnungsphasen steuern. Die erste Phase kann darin bestehen, die Bewegung von der folgenden Pose zur führenden Pose zu sweepen (dt. entlang eines Pfades oder in einer Richtung verschieben oder bewegen) und den Schnittpunkt und die geometrische Normale, d. h. die Schnittpunktnormale, jedes Hindernisses aufzuzeichnen, das den Sweep (dt. auch Bewegung) blockiert. Auf diese Weise kann eine Kandidatenpose approximiert werden, die nahe an der führenden Pose liegt, während die Beschränkung der Oberflächenblockierung durch das Hindernis beibehalten wird.
  • Die erste Phase kann effizienter sein, indem eine Kandidatenpose ausgewählt wird, die nahe an der führenden Pose liegt, im Gegensatz zu einer Kandidatenpose, die der führenden Pose am nächsten ist. Das Ziel ist es, eine Kandidatenpose aus dem Pool der Kandidatenposen zu identifizieren und auszuwählen, die die verschiedenen Beschränkungen innerhalb einer geringeren Anzahl von Sweeps ausreichend erfüllt. Die bloße Auswahl einer Zielpose aus den Kandidatenposen, die der führenden Pose am nächsten liegt, kann zu visuellen Artefakten führen, z. B. wenn eine andere Kandidatenpose ausgewählt wird oder wenn ein zyklisches Flipping (dt. auch Springen) zwischen zwei oder mehr ähnlich nahen Kandidatenposen stattfindet. Die Erstellung eines gewichteten Durchschnitts der Kandidatenposen kann ebenfalls zu visuellen Artefakten führen, wie z. B. Zittern. Das Zittern kann durch die Anwendung zusätzlicher Techniken zur zeitlichen Glättung reduziert werden.
  • In der ersten Phase können eine oder mehrere Kandidatenposen berechnet werden, wobei jede Kandidatenpose eine zeitliche Projektion der folgenden Pose entlang einer jeweiligen Sweep-Richtung ist. Für die Berechnung der Kandidatenposen werden zunächst Sweep-Richtungen ausgewählt.
  • Ein Sampling (dt. auch Abtastung) der Hindernisfläche, die die führende Pose umgibt, kann aus der Schnittnormalen und der Richtung des ursprünglichen Sweeps (von der folgenden Pose) ausgewählt werden, indem aus verschiedenen Richtungen zu der führenden Pose hin bewegt wird. Um die zeitliche Kohärenz zu erhöhen, kann die Normale mit den Normalen früherer Simulationsschritte gemischt (engl. blended, dt. auch kombiniert, angeglichen) werden, wobei die Anzahl der zu prüfenden früheren Simulationsschritte durch den Algorithmus der zweiten Phase, die simulierte Umgebung, die Anwendung oder den Benutzer bestimmt werden kann, z. B. die letzten zwei oder fünf Simulationsschritte. Bei diesen Sampling-Sweeps können mehrere Kandidatenposen ermittelt werden, bei denen die folgende Pose nahe an der Außenfläche des Hindernisses liegt. Jeder Sweep kann eine Kandidatenpose bereitstellen. Die ausgewählten Sweep-Richtungen können Richtungen entlang der ursprünglichen Sweep-Richtung (Blockierungsalgorithmus), Richtungen senkrecht zur Schnittpunktnormale und andere gemischte oder gemittelte Richtungen um die Normalen herum (Streichalgorithmus) umfassen. Eine ausgewählte Sweep-Richtung kann entlang der Schnittpunktnormale liegen. Nach Auswahl der Sweep-Richtungen werden die Kandidatenposen durch Sweepen entlang der ausgewählten Sweep-Richtungen berechnet. Die Berechnung der Kandidatenposen kann eine Verarbeitung umfassen, die den Übergang von der folgenden Pose zu den Kandidatenposen glättet. 1A und 1B stellen eine visuelle Darstellung bereit, die ein Beispiel für verschiedene Sweep-Richtungen zeigt.
  • In einer zweiten Phase wird eine ungefähre Zielpose bestimmt. Zur Berechnung der ungefähren Zielpose kann der Abstand zur führenden Pose für jede der Kandidatenposen berechnet werden. Diese Abstände können als Gewichte verwendet werden, um die Abtast-Sweep-Richtungen der Kandidatenposen zu mischen. Die ungefähre Zielpose kann einen Ausgleich (dt. auch Kompromiss) zwischen Distanzminimierung und zeitlicher Kohärenz darstellen. Um die zeitliche Kohärenz zu erhöhen, kann die gemischte Sweep-Richtung mit den entsprechenden Sweep-Richtungen früherer Simulationsschritte gemischt werden, wobei die Anzahl der zu überprüfenden Simulationsschritte spezifiziert werden kann. Die überlagerte Sweep-Richtung kann dann als finale Sweep-Richtung verwendet werden, um eine finale Kandidatenpose zu berechnen, die als ungefähre Zielpose bezeichnet wird.
  • In einer dritten Phase wird die ungefähre Zielpose angepasst, um eine angepasste Zielpose bereitzustellen. Ein Starrkörperalgorithmus kann verwendet werden, um die ungefähre Zielpose, wie in 4 repräsentiert, so zu Anpassen, dass sie nahe an oder auf der Oberfläche des Hindernisses liegt. Dies kann erreicht werden, indem ein System von mit Gelenkten verbundenen (dt. auch gelenkigen) Starrkörpern eingeführt wird, um die Geometrie der folgenden Pose zu repräsentieren, und diese mit Starrkörperalgorithmen zeitlich vorwärts simuliert wird, bis ein stabiler Zustand erreicht ist. Genauer gesagt kann das Ensemble der gelenkig verbundenen Starrkörper gegen die Oberflächennormale mit einem gemeinsamen Antrieb angetrieben (dt. auch bewegt) werden, der eine seitliche Bewegung relativ zur Oberflächennormale verhindert, z. B. eine Streichbewegung.
  • Die Analyse von der folgenden Pose zur Zielpose kann eine Bewegung in 2D oder 3D repräsentieren. Darüber hinaus kann die ungefähre Zielpose entlang einer oder mehrerer der Dimensionsachsen rotiert werden, z. B. unter einer angelegten Rotationskraft, um den Abstand zwischen der ungefähre Zielpose und der führenden Pose zu verringern. Der Rotationsaspekt der aufgebrachten Rotationskraft kann durch Verwenden der Starrkörperphysik modelliert werden, um die ungefähre Zielpose mit einer linearen Kraft zu schieben, die bei Kontakt mit dem Hindernis zu einer Rotationskraft führen kann, um die Orientierung der ungefähren Zielpose relativ zur Oberfläche des Hindernisses zu ändern. Die rotierte ungefähre Zielpose wird zu einer angepassten Zielpose. Die lineare Bewegung des starren Körpers kann so eingeschränkt werden, dass er sich entlang der Richtung der Rotationskraft bewegt. Durch Projektion des starren Körpers in die Zukunft in einem oder mehreren Simulationsschritten kann das Gleichgewicht der angepassten Zielpose so berechnet werden, als ob sie gegen die Oberfläche des Hindernisses gedrückt worden wäre. So kann beispielsweise eine ausgestreckte Hand, deren Fingerspitzen in Richtung eines Hindernisses gestreckt sind, durch eine Reihe von Simulationsschritten so rotiert werden, dass die Handfläche gegen die Oberfläche des Hindernisses drückt und nicht die Fingerspitzen. Dies kann eine realistischere Bewegung bereitstellen, um die visuelle Qualität für den Benutzer zu Anpassen.
  • Die simulierte Umgebung kann die Orientierung der führenden Pose in der angepassten Zielpose beibehalten wollen. Eine Winkel-Antriebskraft (engl. angular, dt. auch angewinkelt, in einem Winkel, Drehkraft) kann verwendet werden, um die angepasste Zielpose zur der Orientierung der führenden Pose hin zu schieben oder zu drehen. Die simulierte Umgebung kann die von der Anwendung bereitgestellten Parameter verwenden, um die lineare / rotierende Kraft und die Winkel-Antriebskraft auf der angepassten Zielpose abzustimmen. Zum Beispiel kann die Berührung eines Touchscreens in der simulierten Umgebung dazu führen, dass der Winkel-Antrieb dominiert, um die Orientierung der führenden Pose beizubehalten, da es wahrscheinlich ist, dass der Benutzer beabsichtigt, den Bildschirm mit seinen Fingerspitzen zu berühren, während die Rotationskraft dominieren kann, wenn eine Tür aufgedrückt wird, bei der es wahrscheinlich ist, dass der Benutzer beabsichtigt, mit der Handfläche gegen die Tür zu drücken. In einigen Fällen kann die Orientierung auch durch äußere Beschränkungen beeinflusst werden. Beispielsweise kann eine Hand aufgrund der Positionierungs-, Drehmoment- und Flexibilitätsparameter der Finger, des Handgelenks, des Arms und des Körpers, an dem die Hand befestigt ist, so rotieren, dass die Handfläche zur Tür zeigt, oder auch nicht.
  • In einer vierten Phase kann die berechnete angepasste Zielpose im stationären Zustand für die folgende Pose verwendet werden. Der Algorithmus der vierten Phase kann in einigen Aspekten zulassen, dass die seitliche Bewegung über die angepasste Zielpose hinausgeht (Overshoot-Bewegung), wenn diese Überschreitung es der folgenden Pose ermöglicht, Hindernisse, wie z. B. Kanten, leichter zu passieren, z. B. um zu verhindern, dass die folgende Pose an einem Hindernis hängenbleibt. Gemäß einem weiteren Aspekt kann die Kontaktreibung zwischen der Oberfläche des Hindernisses und der Die Kontaktreibung zwischen der Oberfläche des Hindernisses und der folgenden Pose reduziert werden, z. B. auf Null, um Nebeneffekte durch Rollen, Festkleben oder andere reibungsbedingte Kräfte zu vermeiden, die die angepasste Zielpose beeinflussen können. Wenn die angepasste Zielpose mit dem Hindernis interagiert, kann die Kontaktrestitution reduziert werden, um Kontaktsprünge zu vermeiden. Der Parameter für den Reibungskoeffizienten und den Kontaktrestitutionskoeffizienten kann auf verschiedene Werte angepasst werden, um das von der simulierten Umgebung beabsichtigte Ergebnis zu erzielen.
  • Die vierte Phase kann Antriebe (engl. drives, dt. auch Bewegungen) von Starrkörpergelenken verwenden, um das Gelenkensemble, das die folgende Pose repräsentiert, für einen einzigen Simulationsschritt zeitlich vorwärts zu bewegen. Genauer gesagt kann die folgende Pose von ihrem aktuellen Zustand in Richtung der angepassten Zielpose bewegt werden und als neue folgende Pose an den nächsten Simulationsschritt weitergegeben werden.
  • Wenn sich die führende Pose von einer Position mit Hindernissen zu einer Position ohne Hindernisse bewegt, kann ein Bewegungsalgorithmus zur direkten Nachführung verwendet werden, um die Rechenressourcen zu minimieren. Unter Verwendung des Algorithmus zur direkten Nachführung kann sich die folgende Pose in einer approximativen Orientierung der führenden Pose befinden. Es kann ein Übergangsalgorithmus verwendet werden, um einen sanften Übergang von der folgenden Pose zur führenden Pose bereitzustellen. Dieser Algorithmus kann Werte für die direkte Nachführung verwenden, z. B. einen Zeitparameter, so dass die folgende Pose weiterhin die hier beschriebenen Blockierungs- und Streichalgorithmen, z. B. die Algorithmen der ersten bis vierten Phase, verwendet, um die führende Pose zu verfolgen, bis die angegebene Zeit verstrichen ist, und dann kann die folgende Pose auf den Algorithmus für die direkte Nachführung umschalten. Gemäß einem weiteren Aspekt können die Werte der direkten Nachführung einen konstanten Geschwindigkeitsparameter umfassen, der verwendet werden kann, um die nachfolgende Pose in Richtung der führenden Pose zu bewegen. Dies kann plötzliche Sprünge der folgenden Pose verhindern.
  • Ein Ghosting-Schwellenwert kann ebenfalls verwendet werden. In Situationen, in denen sich eine führende Pose durch ein Hindernis bewegt hat, sich derzeit nicht innerhalb eines Hindernisses befindet und die folgende Pose und die führende Pose das Hindernis zwischen sich haben, kann der Ghosting-Schwellenwert anzeigen, ob sich die folgende Pose in einem Schnappalgorithmus direkt zur führenden Pose bewegt, z. B. durch eine sofortige Bewegung, oder ob die folgende Pose an der Oberfläche des Hindernisses anhält. 3 stellt ein Beispiel für die Verwendung eines Ghosting-Schwellenwerts bereit.
  • Der Ghosting-Schwellenwert definiert die Dicke bzw. den Abstand, den die folgende Pose durch ein Hindernis hindurchgehen kann, um an der führenden Pose einzurasten. Die Ghosting-Dicke bezieht sich auf die durch das Hindernis zurückgelegte Strecke, die nicht mit dem Abstand zwischen der folgenden Pose und der führenden Pose identisch sein kann. Wenn die Ghosting-Dicke durch das Hindernis gleich oder kleiner als der Ghosting-Schwellenwert ist, kann die folgende Pose an der führenden Pose einrasten, d. h. das Hindernis wird ignoriert. Andere Faktoren, wie z. B. externe Beschränkungen, können eine solche Bewegung verhindern. Wenn die Ghosting-Dicke durch das Hindernis größer ist als der Ghosting-Schwellenwert, dann wird die folgende Pose daran gehindert, sich in Richtung der führenden Pose zu bewegen.
  • Das Verfahren kann in seinen verschiedenen Aspekten einen oder mehrere oder eine Kombination von Parametern als Eingaben verwenden, um die finale angepasste Zielpose zu bestimmen. Die Parameter können in einem Satz von Parametern gruppiert werden, die die Sweeps beschreiben, die zur Berechnung der Kandidatenposen verwendet werden können, z. B. die Anzahl der Kandidatenposen, die zu verwendenden gemischten Sweep-Winkel und die Anzahl der vorherigen Simulationsschritte, die bei der zeitlichen Glättung verwendet werden. Ein zweiter Satz von Parametern kann den Starrkörperalgorithmus beschreiben, der zur Berechnung der angepassten Zielpose verwendet werden kann, z. B. die zu verwendenden physikalischen Werte und Parameter, wie der Wert der Schwerkraft und der Wert eines Magnetfelds. Ein dritter Satz von Parametern kann den Starrkörperalgorithmus beschreiben, der die folgende Pose von der aktuellen Position zur angepassten Zielpose bewegen kann, z. B. kann die Entfernung, um die folgende Pose innerhalb des Simulationsschritts zu bewegen, vom FPS-Parameter abhängig sein.
  • Zu den Figuren: 1A zeigt ein Diagramm, das als Analyse von Kandidatenposen 100 bezeichnet wird und ein Beispiel für ein Verfahren zur Analyse von Kandidatenposen in einer 2D-Umgebung, die ein Hindernis 110 umfasst, visuell darstellt. Die Analyse von Kandidatenposen 100 zeigt drei Sweep-Richtungen zusätzlich zur ursprünglichen Sweep-Richtung zwischen führender Pose 115 und ursprünglicher folgender Pose 120. In einer 3D-Umgebung, wie in 1B gezeigt, können zusätzliche Sweep-Richtungen analysiert werden. Für eine 3D-Umgebung können zum Beispiel zehn Sweeps verwendet werden. Die Durchführung einer großen Anzahl von Sweeps kann rechnerisch unpraktisch sein. Daher kann die Anzahl der zu analysierenden Sweep-Richtungen auf historischen Daten basieren und ein ausgewogenes Verhältnis zwischen Ergebnissen und Verarbeitungszeit bereitstellen. Die gleiche Anzahl von Sweep-Richtungen kann unabhängig von der Form des Hindernisses 100 verwendet werden. Beispielsweise kann die gleiche Anzahl von Sweep-Richtungen für ein konvexes Hindernis und ein konkaves Hindernis verwendet werden. Alternativ dazu kann die Anzahl der zu verwendenden Sweeps basierend auf der Form des Hindernisses variieren.
  • Ein Sweep wird durchgeführt, indem die Form oder Geometrie der ursprünglichen folgenden Pose 120 in ihrer aktuellen Orientierung entlang des Vektors projiziert wird, der von der ursprünglichen folgenden Pose 120 zur führenden Pose 115 verläuft. Die führende Pose 115 ist die gewünschte Position der Figur oder des Objekts, z. B. wenn der Benutzer seine Hand durch das Hindernis 110 nach vorne stößt. Die ursprüngliche folgende Pose 120 ist die Position der Figur oder des Objekts, das manipuliert oder bewegt wird, z. B. die Hand eines Avatars.
  • Die führende Pose 115 befindet sich innerhalb der Oberflächenbeschränkungen des Hindernisses 110 und die ursprüngliche folgende Pose 120 befindet sich oberhalb des Hindernisses 110. Die ursprüngliche folgende Pose 120 kann nicht direkt an die Position der führenden Pose 115 bewegt werden, da dies die auf der Physik basierenden Beschränkungen des Hindernisses 110 verletzen und die visuelle Erfahrung des Benutzers beeinträchtigen würde, z. B. die VR-Illusion zerstören würde. Daher werden Kandidatenposen, aus denen eine Zielpose ausgewählt werden kann, unter Verwendung temporärer folgender Posen und Sweep-Richtungen errechnet.
  • Temporäre folgende Posen 122, 124, 126, die verwendet werden, um die Kandidatenposen entlang ausgewählter Sweep-Richtungen zu generieren, können bestimmt werden, indem die führende Pose 115 entlang senkrechter Richtungen von der Schnittpunktnormalen 142 bewegt wird, bis die führende Pose 115 vollständig außerhalb der Oberfläche des Hindernisses 110 liegt. Die Schnittpunktnormale 142 ist eine Normale auf derselben Seite des Hindernisses 110 wie die ursprüngliche folgende Pose 120. Die resultierenden temporären Posen der folgenden Pose 122, 124, 126 können außerhalb der Geometrie des Hindernisses 110 berechnet werden, indem eine Begrenzungskugel um das Hindernis 110 und eine Begrenzungskugel um die ursprüngliche folgende Pose 120 berechnet wird, die Radien der beiden Begrenzungskugeln addiert werden und die temporären Posen der folgenden Pose 122, 124, 126 außerhalb der Summe der Radien angeordnet werden.
  • Kandidatenposen können berechnet werden, indem die temporären folgenden Posen 122, 124, 126 entlang der ausgewählten Sweep-Richtungen senkrecht zur Schnittpunktnormalen 142 zurück zur führenden Pose 115 bewegt werden, bis die jeweiligen temporären folgenden Posen die Oberfläche des Hindernisses 110 schneiden. Aus den sich schneidenden Oberflächen können die Oberflächennormalen 144 und 146 bestimmt werden. Beim Bewegen kann die temporäre folgende Pose 122 eine berechnete Kandidatenpose 132 erzeugen, die mit der Schnittflächennormale 142 assoziiert ist, die temporäre folgende Pose 124 kann eine berechnete Kandidatenpose 134 erzeugen, die mit der Oberflächennormale 144 assoziiert ist, und die folgende Pose 126 kann eine berechnete Kandidatenpose 136 erzeugen, die mit der Oberflächennormale 146 assoziiert ist. Eine negative Sweep-Richtung, repräsentiert durch die Oberflächennormale 148, wird ignoriert, da sich die ursprüngliche folgende Pose 120 in der Nähe der Oberflächennormale 142 befindet und eine Kandidatenpose in Bezug auf die Oberflächennormale 148 dazu führen würde, dass diese Kandidatenpose durch das Hindernis hindurch wandert (engl. ghosted, dt. auch sich mit Geistereffekt hindurch bewegt). Ghosting-Szenarien werden weiter in 3 beschrieben.
  • Die resultierenden Kandidatenposen sind die berechnete Kandidatenpose 132, die berechnete Kandidatenpose 134 und die berechnete Kandidatenpose 136. Durch zusätzliche Analyse wird eine der berechneten Kandidatenposen 132, 134 und 136 als Zielpose ausgewählt. Die Zielpose kann als ungefähre Zielpose in ihrer aktuellen Orientierung verwendet oder weiter angepasst werden und als Bewegungsziel für die ursprüngliche folgende Pose 120 verwendet werden.
  • 1B zeigt ein Diagramm, das als Analyse von Kandidatenposen 160 bezeichnet wird und ein beispielhaftes Verfahren zur Analyse von Kandidatenposen in einer 3D-Umgebung visuell repräsentiert. Die Analyse von Kandidatenposen 160 umfasst ein Hindernis 162, das als massiver Quader dargestellt ist, eine führende Pose 164, die innerhalb des Hindernisses 162 dargestellt ist, und eine folgende Pose 166. Unter Verwendung der aktuellen Position der führenden Pose 164 können zehn Sweep-Richtungen für zehn Kandidatenposen identifiziert werden. Sweep 170 zeigt die Richtung des primären Sweeps von der folgenden Pose 166 zur führenden Pose 164 und wird als erste Sweep-Richtung verwendet. Sweep 172 ist die Oberflächennormale des Hindernisses 162 an dem Schnittpunkt, an dem Sweep 170 das Hindernis 162 schneidet. Sweep 172 wird als zweite mögliche Sweep-Richtung verwendet.
  • Sweep 174, Sweep 176, Sweep 178 und Sweep 180 bilden eine Ebene, deren Normale die Sweep 172 ist. Diese fünf Sweep-Richtungen können auch dazu verwendet werden, das kartesische Koordinatensystem zu definieren, das für die weitere Analyse verwendet wird. Sweep 174 und Sweep 178 stehen senkrecht zu einer Ebene, die durch die Sweeps 172, 176 und 180 gebildet wird, wobei die jeweiligen Vektoren in entgegengesetzte Richtungen weisen. Ebenso stehen Sweep 180 und Sweep 176 senkrecht zu einer durch die Sweeps 172, 174 und 178 gebildeten Ebene, wobei die jeweiligen Vektoren in entgegengesetzte Richtungen weisen.
  • Sweep 182 wird durch Mittelung der Sweep-Richtungen von Sweep 172, Sweep 174 und Sweep 180 errechnet. Dadurch wird der Sweep 182 in einem Winkel von fünfundvierzig Grad zu den kartesischen Sweep-Richtungen angeordnet. Auf diese Weise können die Kandidatenposen die durch das Hindernis 162 und den Sweep 172 definierte ungefähre Hemisphäre samplen, wobei die Hemisphäre unter Verwendung der Oberflächenform des Hindernisses 162 angepasst werden kann. Sweep 184, Sweep 186 und Sweep 188 werden in ähnlicher Weise unter Verwendung der jeweils anderen kartesischen Sweeps berechnet. Sweep 184 wird aus einem Durchschnitt von Sweep 172, Sweep 174 und Sweep 176 errechnet. Sweep 186 wird aus einem Mittelwert von Sweep 172, Sweep 176 und Sweep 178 berechnet. Sweep 188 wird aus einem Mittelwert von Sweep 172, Sweep 178 und Sweep 180 berechnet.
  • 2 ist eine beispielhafte Darstellung von vier Diagrammen, die zusammen als Analyse 200 einer finalen Pose bezeichnet werden und ein Verfahren zum Bestimmen einer finalen Pose visuell repräsentieren. Die vier Diagramme zeigen eine zeitlich gestaffelte Simulation in vier Schritten. Diagramm 201 repräsentiert die ursprüngliche folgende Pose 230, Diagramm 202 repräsentiert einen ersten Simulationszwischenschritt mit einer folgenden Pose 232, Diagramm 203 repräsentiert einen zweiten Simulationszwischenschritt mit einer folgenden Pose 234, und Diagramm 204 repräsentiert einen letzten Simulationsschritt mit einer folgenden Pose 236. Die Diagramme 201, 202, 203, 204 repräsentieren dieselbe simulierte Umgebung mit einer führenden Pose 210, die innerhalb der Oberflächenbegrenzung eines Hindernisses 212 positioniert ist, und einer angepassten Zielpose 220, die durch die hierin beschriebenen Verfahren berechnet wurde.
  • Diagramm 201 repräsentiert die ursprüngliche folgende Pose 230 und die angepasste Zielpose 220, die aus zuvor bestimmten Kandidatenposen ausgewählt wurde. Diagramm 202 repräsentiert die Bewegung der folgenden Pose 232 in Richtung der angepassten Zielpose 220, wobei beispielsweise Blockierungs- und Streichalgorithmen verwendet werden. Die folgende Pose 232 verletzt die Oberfläche des Hindernisses 212 nicht. Darüber hinaus wurde die folgende Pose 232 durch eine Rotationskraft rotiert, die beispielsweise durch eine Starrkörperinteraktion ausgeübt wird.
  • Diagramm 203 repräsentiert die folgende Pose 234, die in die Orientierung der angepassten Zielpose 220 zurückrotiert wurde. Da sich das Hindernis 212 nicht mehr zwischen der folgenden Pose 234 und der angepassten Zielpose 220 befindet, ist die Winkel-Bewegungskraft jetzt größer als die Rotationskraft, die in Diagramm 202 angewendet wurde. Diagramm 204 repräsentiert die folgende Pose 236, die mit der angepassten Zielpose 220 konvergiert. Für die finale Analyse der Pose 200 kann eine Operation einer Physik-Engine, wie z. B. „drive to pose“, eingesetzt werden.
  • Für die Analyse der finalen Pose 200 können die folgende Pose und die Zielpose als ein einzelnes Objekt oder als ein System von Zwangskörpern oder ein Ensemble von Teilen, die eine komplizierte Form bilden, verarbeitet werden. Die folgenden Posen können zum Beispiel eine Hand repräsentieren, die aus mehreren Teilen besteht, die jeweils ihre eigene Zielpose enthalten. Die Anzahl der benötigten Zielposen hängt von der Anzahl der Teile ab, die die Hand repräsentieren. Der Daumen kann durch zwei Teile repräsentiert werden, jeder Finger kann durch drei Teile repräsentiert werden und die Handfläche durch einen einzigen Teil der Hand. Dementsprechend würden 15 folgende Posen und Zielposen verwendet werden, um die finale Pose zu bestimmen und realistisch zu definieren, wie die Finger einer Hand auf einer Oberfläche des Hindernisses 212 reagieren würden.
  • 3 zeigt zwei Diagramme, die zusammen als Analyse der finalen Pose 300 mit Ghosting bezeichnet werden und ein Verfahren zur Analyse des Ghosting der finalen Pose repräsentieren. Diagramm 310 demonstriert eine folgende Pose 312, eine führende Pose 314 und ein dazwischen liegendes Hindernis 316. Das Hindernis 316 hat eine Ghosting-Dicke, die durch die gestrichelte Linie 318 repräsentiert wird.
  • Das Diagramm 320 demonstriert die folgende Pose 312, die führende Pose 314 und ein dazwischen liegendes Hindernis 315. Das Hindernis 315 hat eine Ghosting-Dicke, die durch die gestrichelte Linie 319 repräsentiert wird. Unter Verwendung eines Ghosting-Schwellenwerts, der mit der durch die gestrichelten Linien 318 und 319 repräsentierten Ghosting-Dicke verglichen wird, kann bestimmt werden, ob die folgende Pose 312 in Diagramm 310 oder 320 an der führenden Pose 314 einrastet oder ob Blockierungs- und Streichalgorithmen verwendet werden, um die folgende Pose 312 zu bewegen. In den Diagrammen 310 und 320 ist der Abstand zwischen der folgenden Pose 312 und der führenden Pose 314 gleich und wird normalerweise nicht für die Ghosting-Analyse verwendet. Beispielsweise kann der Wert der gestrichelten Linie 318 kleiner als der Ghosting-Schwellenwert sein und der Schnappalgorithmus kann in Diagramm 310 verwendet werden. Im Gegensatz dazu kann der Wert der gestrichelten Linie 319 größer sein als der Ghosting-Schwellenwert und der Schnappalgorithmus wird nicht verwendet. Bei Aspekten, bei denen die Ghosting-Analyse anzeigt, dass ein Schnappalgorithmus verwendet werden kann, d.h. der Ghosting-Abstand kleiner als der Ghosting-Schwellenwert ist, können andere Beschränkungen, wie z.B. externe Beschränkungen, verwendet werden, um die Verwendung des Schnappalgorithmus zu verhindern.
  • 4 zeigt beispielhaft zwei Diagramme, die zusammen als Analyse der angepassten Zielpose 400 bezeichnet werden und die Anwendung einer Rotationskraft auf eine Zielpose repräsentieren, z. B. eine Hand, die von Fingerspitzen bis hin zu Handfläche gegen eine Tischplatte rotiert. Diagramm 410 zeigt eine ungefähre Zielpose 420 entlang der Sweep-Richtung 424 für die führende Pose 426 innerhalb des Hindernisses 430. Das Diagramm 440 zeigt beispielhaft eine angepasste Zielpose 450, die sich aus der Anwendung einer Rotationskraft auf die ungefähre Zielpose 420 ergibt. Die Rotationskraft ist in diesem Beispiel größer als eine Winkel-Antriebskraft, um die angepasste Zielpose 450 in der gleichen Orientierung wie die führende Pose 426 zu halten. Andere Beschränkungen können beim Bestimmen der angepassten Zielpose 450 berücksichtigt werden, z. B. Oberflächenreibung (gemessen durch den Reibungskoeffizienten), Kontaktrestitution (gemessen durch den Restitutionskoeffizienten), externe Beschränkungen (wie bewegliche Verbindungen der folgenden Pose), Starrkörperbeschränkungen und andere Umgebungsbeschränkungen (wie eine simulierte Umgebung des Außenraums (engl. outer space), Wasser und andere Umgebungen).
  • Für die Analyse der angepassten Zielpose 400 können die Zielposen als ein einzelnes Objekt oder als ein System von beschränkten Körpern verarbeitet werden, wie oben in Bezug auf die Analyse der finalen Pose 200 beschrieben. Dementsprechend können die ungefähre Zielpose 420 und die angepasste Zielpose 450 durch mehrere Systeme repräsentiert werden, die miteinander verbunden sind, um realistisch zu definieren, wie die Finger einer Hand auf der Oberfläche des Hindernisses 430 aufliegen würden.
  • 5 zeigt ein beispielhaftes Flussdiagramm eines Verfahrens 500 zum Bestimmen eines einen Typs eines Bewegungsalgorithmus zum Bewegen eines Objekts in einer simulierten Umgebung. Bei dem Objekt kann es sich beispielsweise um die Hand eines Benutzers handeln, die der Benutzer in seinem physischen Raum bewegt. Das Verfahren 500 bestimmt den Typ des Bewegungsalgorithmus oder der Algorithmen, die für die Bewegung von folgender Pose zu führender Pose zu verwenden sind, um die tatsächliche Handbewegung in der simulierten Umgebung zu replizieren. Der Typ des Bewegungsalgorithmus kann ein direkter, blockierender, streichender, schnappender, übergehender Algorithmus oder eine Kombination aus einem oder mehreren dieser Bewegungsalgorithmen sein. Das Verfahren 500 kann von einem Computersystem ausgeführt werden, das in der Lage ist, Objektbewegungen in einer simulierten Umgebung zu analysieren und dabei physikalisch basierte Beschränkungen anzuwenden, z. B. das in 7 gezeigte Rechensystem. Das Verfahren 500 beginnt in Schritt 505.
  • Im Entscheidungsschritt 510 wird bestimmt, ob die Bewegung der folgenden Pose zur führenden Pose durch ein Hindernis blockiert wird. Wenn das Ergebnis des Bestimmungsschritts nein ist, d.h. die Bewegung nicht blockiert ist, geht das Verfahren 500 zu Schritt 520 über, wo ein direkter Bewegungsalgorithmus verwendet wird. Beim Umschalten von einem anderen Typ von Bewegungsalgorithmus auf den direkten Bewegungsalgorithmus können Parameter verwendet werden, um zu bestimmen, ob für den Übergang ein oder mehrere zusätzliche Bewegungsalgorithmen verwendet werden sollen. Beispielsweise können Zeitverzögerung, Entfernungsparameter oder beides verwendet werden, um zu bestimmen, welcher Übergangsalgorithmus von Vorteil ist, wenn von einem Blockierungs-/Streichalgorithmus auf den direkten Bewegungsalgorithmus umgeschaltet wird. Der Zeitverzögerungsparameter kann einen Zeitwert, eine Anzahl von Simulationsschritten, eine Anzahl von Einzelbildern und andere Werte spezifizieren, die verwendet werden können, um den Wechsel des Bewegungsalgorithmus zu verzögern, um einen sanfteren visuellen Bewegungsübergang bereitzustellen. Der Entfernungsparameter kann verwendet werden, um anzuzeigen, wie weit sich ein Objekt bewegen kann, bevor vom Blockierungs-/Streichalgorithmus auf den direkten Bewegungsalgorithmus umgeschaltet wird.
  • Wenn das Ergebnis von Entscheidungsschritt 510 „ja“ ist, d.h. ein Hindernis vorliegt, geht das Verfahren 500 zu Entscheidungsschritt 530 über. In Entscheidungsschritt 530 wird bestimmt, ob ein Streichalgorithmus erforderlich ist. Die Bestimmung kann basierend auf der Größe des Hindernisses und der Größe des zu bewegenden Objekts erfolgen. Für die Größenanalyse kann ein Vergleich zwischen einem Sweep-Modus-Verhältnis und einem Sweep-Modus-Parameter verwendet werden. Das Sweep-Modus-Verhältnis ist ein Verhältnis zwischen der Größe des Hindernisses und der Größe des bewegten Objekts (oder der Größe der Begrenzungskugeln für das jeweilige Objekt und das Hindernis), d. h. eine Analyse der Größe des bewegten Objekts im Vergleich zur Größe des Hindernisses. Das Sweep-Modus-Verhältnis kann anzeigen, ob der Blockierungsalgorithmus oder eine Kombination aus Blockierungs- und Streichalgorithmus verwendet werden kann, um die Bewegung der folgenden Pose in Richtung der führenden Pose zu bestimmen.
  • Wenn bestimmt wird, dass der Streichalgorithmus erforderlich ist, fährt das Verfahren 500 mit Schritt 540 fort, in dem Blockierungs- und Streichalgorithmen verwendet werden. Das Ergebnis des Entscheidungsschritts 530 kann „Ja“ lauten, wenn das Sweep-Modus-Verhältnis „größer als“ als der Sweep-Modus-Parameter ist. Somit ist das Hindernis im Vergleich zum sich bewegenden Objekt groß genug, um die Verwendung von Blockierungs- und Streichalgorithmen zu rechtfertigen, z. B. eine Hand, die eine Tischplatte berührt.
  • Wenn bestimmt wird, dass der Streichalgorithmus nicht benötigt wird, fährt das Verfahren 500 mit Schritt 550 fort, wo der Blockierungsalgorithmus verwendet wird. Das Ergebnis des Entscheidungsschritts 530 kann „Nein“ lauten, wenn das Verhältnis des Sweep-Modus „kleiner oder gleich“ dem Sweep-Modus-Parameter ist. In diesem Fall ist das Hindernis im Vergleich zum sich bewegenden Objekt nicht groß genug, und der Blockierungsalgorithmus wird von sich aus verwendet. Zum Beispiel, eine Hand, die einen Steuerknopf berührt. Am Ende der Schritte 520, 540 und 550 geht das Verfahren 500 zu Schritt 560 über und endet.
  • Bei der Erstellung einer simulierten Umgebung kann ein Standard-Nachführungsalgorithmus, z. B. ein direkter Bewegungsalgorithmus, verwendet werden, um eine folgende Pose zu einer führenden Pose zu bewegen, wenn es kein Hindernis zwischen den beiden Posen gibt. In Situationen, in denen sich ein Hindernis oder ein Teil eines Hindernisses zwischen der folgenden Pose und der führenden Pose befindet, kann ein standardmäßiger Algorithmus für die direkte Nachführung nicht verwendet werden. 6 zeigt ein beispielhaftes Flussdiagramm eines Verfahrens 600 zum Bestimmen einer Zielpose, wenn sich zwischen der folgenden Pose und der führenden Pose ein Hindernis befindet. Das Verfahren 600 berechnet mehrere Kandidatenposen, wählt eine Zielpose aus und angepasst die Zielpose unter Verwendung von Umgebungsbeschränkungen. Das Verfahren 600 kann von einem Computersystem ausgeführt werden, das in der Lage ist, die Bewegung von Objekten in einer simulierten Umgebung zu analysieren und dabei physikalisch basierte Beschränkungen anzuwenden, z. B. das in 7 gezeigte Rechensystem. Das Verfahren 600 beginnt mit Schritt 605.
  • In Schritt 610 werden eine oder mehrere Sweep-Richtungen berechnet. Sweep-Richtungen können von der folgenden Pose zur führenden Pose berechnet werden, wobei die Oberflächennormalen des Hindernisses als Richtlinie verwendet werden. 1A und 1B stellen Beispiele für die Berechnung von Sweep-Richtungen für simulierte 2D- und 3D-Umgebungen bereit.
  • Kandidatenposen werden in Schritt 620 unter Verwendung der Sweep-Richtungen bestimmt. Die Sweep-Richtungen können verwendet werden, um die Kandidatenposen nahe an einer Oberfläche des Hindernisses zu platzieren, ohne die auf der Physik basierenden Beschränkungen der Oberfläche zu verletzen. In einigen Aspekten können die Kandidatenposen Algorithmen zur Überblendung und Mittelwertbildung verwenden. Algorithmen zur Überblendung und Mittelwertbildung können beispielsweise in Szenarien verwendet werden, in denen aufgrund einer unregelmäßig geformten Oberfläche des Hindernisses mehrere Kandidatenposen nahe beieinander liegen oder sich gegenseitig überlappen. Die Algorithmen zur Überlagerung und Mittelwertbildung können eine Kandidatenpose erzeugen, die das visuelle Erlebnis angepasst. Darüber hinaus können die Kandidatenposen ähnlich gelegene Kandidatenposen aus früheren Simulationsschritten miteinander vermischen, um eine zeitliche Konsistenz zwischen den Simulationsschritten bereitzustellen. Die zeitliche Konsistenz kann den visuellen Eindruck Anpassen, wenn sich das Objekt bewegt.
  • In Schritt 630 wird eine ungefähre Zielpose aus den Kandidatenposen ausgewählt. Die Auswahl der ungefähren Zielpose kann Informationen aus früheren Simulationsschritten sowie andere Faktoren verwenden, um die am besten passende Kandidatenpose zu bestimmen. Zeitliche Kohärenz, z. B. die Verringerung des Zitterns oder der Sprunghaftigkeit der Objekte in der VR-Szene, ist ein Faktor, der bei der Auswahl der ungefähre Zielpose verwendet werden kann, um das visuelle VR-Erlebnis für den Benutzer aufrechtzuerhalten. Die zeitliche Kohärenz kann angepasst werden, indem die Sweep-Richtungen für die Kandidatenposen aus früheren Simulationsschritten mit den Sweep-Richtungen für die berechneten Kandidatenposen während des aktuellen Simulationsschritts gemischt (dt. auch verblendet, aufeinander abgestimmt) werden. Zur Auswahl der ungefähren Zielpose können auch ein oder mehrere zusätzliche Faktoren in der Analyse verwendet werden. Beispielsweise können eine oder mehrere Sweep-Richtungen zur Berechnung von Kandidatenposen überlagert werden, aus denen die ungefähre Zielpose ausgewählt werden kann. Die zusätzliche Überblendung kann eine flüssigere Bewegung bereitstellen, wie sie vom Benutzer wahrgenommen wird. Unter Verwendung von Sweep-Richtungen kann auch ein weiteres Blending (dt. auch Mischen, aufeinander Abstimmen) durchgeführt werden. Zwei oder mehr Sweep-Richtungen können gemischt werden, um eine finale Sweep-Richtung zu bestimmen. Dies kann nützlich sein, wenn sich die führende Pose schnell bewegt und die folgende Pose die führende Pose weiter verfolgt, können kleine Richtungsänderungen zwischen den beiden Posen innerhalb des Simulationsschritts gemischt und geglättet werden.
  • In einem Schritt 640 wird die ungefähre Zielpose zu einer angepassten Zielpose angepasst. Die ungefähre Zielpose kann durch Anwendung von Rotationskräften, Winkel-Antriebskräften und anderen Beschränkungen angepasst werden. Die angepasste Zielpose kann zu einer angepassten Position und einer angepassten Orientierung führen. Die angepasste Zielpose kann so orientiert werden, dass sie die führende Pose nachahmt, sofern nicht eine andere Kraft oder Beschränkung eine solche Orientierung verhindert.
  • Das Anpassen kann das Hinzufügen einer seitlichen Bewegung umfassen, um die angepasste Zielpose zu erhalten. Die seitliche Bewegung kann eine feder- oder dämpferähnliche Anpassungslogik bereitstellen, die eine gewisse Flexibilität in der Bewegung ermöglicht, z. B. um kleine Kanten des Hindernisses herum. Die seitliche Bewegung kann auch dazu beitragen, ein flüssigeres visuelles Erlebnis über mehrere Simulationsschritte hinweg bereitzustellen, indem sie für zeitliche Kohärenz sorgt. Die seitliche Bewegung kann eine Überschießbewegung umfassen, so dass die Zielpose aufgrund von Hindernissen und Umgebungsbeschränkungen über eine Kandidatenpose hinausschießt, z. B. an ihr vorbeigeht.
  • Die Reibungskoeffizienten und die Kontaktrestitutionskoeffizienten des sich bewegenden Objekts und des Hindernisses können angepasst werden. Beispielsweise können die entsprechenden Koeffizienten auf Null reduziert werden, um zusätzliche Komplexität zu vermeiden, wenn das bewegte Objekt die Oberfläche des Hindernisses berührt. Alternativ dazu können die Koeffizienten teilweise reduziert werden, um die Auswirkungen dieser Beschränkungen auf den Gesamtprozess zu verringern.
  • Die ungefähre Zielpose kann auch durch eine Rotationskraft gedreht und orientiert werden, wenn sie gegen die Oberfläche des Hindernisses stößt, z. B. eine Hand, die sich von den Fingerspitzen zur Handfläche gegen eine Tür dreht. Auf die ungefähre Zielpose kann auch eine Winkel-Antriebskraft einwirken, die die ungefähre Zielpose dazu zwingt, sich der Orientierung der führenden Pose anzunähern, z. B. die Hand mit den Fingerspitzen gegen das Hindernis auszurichten. Die Rotationskraft und die Winkel-Antriebskraft werden durch den VR-Simulator gegeneinander ausgeglichen. Wenn die jeweilige Kraft dominiert, kann die ungefähre Zielpose ihre Orientierung ändern. Externe Beschränkungen sind ein weiteres Beispiel für eine Modifikation der ungefähren Zielpose. Eine externe Beschränkung kann bewegliche Verbindungen zum Objekt, zur Fluiddynamik und zu anderen simulierten Umgebungsfaktoren sein.
  • Die ungefähre Zielpose kann als einzelne starre Figur oder als mehrteilige Darstellung von gelenkigen starren Körpern repräsentiert sein. In einer mehrteiligen Darstellung kann die ungefähre Zielpose als flexibles Objekt fungieren und als eine sich anpassende Hand reagieren, wobei sich die Knöchel bewegen, wenn die Hand auf die Oberfläche eines Hindernisses drückt.
  • Die folgende Pose wird in Schritt 650 zur angepassten Zielpose bewegt. Das Ausmaß der Bewegung der folgenden Pose zur angepassten Zielpose kann von der Bewegungsgeschwindigkeit des Benutzers und der Größe der Simulationsschritte (z. B. gemessen in FPS) abhängen. Andere Beschränkungen der simulierten Umgebung, z. B. ob sich die folgende Pose in der Luft oder unter Wasser bewegt, können sich ebenfalls auf den Umfang der Bewegung auswirken. Die folgende Pose kann sich teilweise oder ganz bis zur angepassten Zielpose bewegen. Die folgende Pose und die Zielpose können als starres Objekt oder als flexibles Objekt mit einem System von gebundenen Körpern repräsentiert werden. Basierend auf der angepassten Zielpose kann eine neue nachfolgende Pose gerendert werden. Zum Beispiel kann die angepasste Zielpose oder ein Zustand zwischen der vorherigen folgenden Pose und der angepassten Zielpose als neue folgende Pose gerendert werden. Das Verfahren 600 geht weiter zu Schritt 660 und endet.
  • 7 ist eine beispielhafte Darstellung eines Blockdiagramms zur Demonstration eines VR-Oberflächen-TrackingSystems 700. Das VR-Oberflächen-Trackingsystem 700 kann als Teil eines VR-Simulators verwendet werden, um die Bewegung eines Objekts durch die simulierte Umgebung zu verfolgen und die Bewegung des Objekts anzupassen, wenn es auf Hindernisse innerhalb der simulierten Umgebung trifft. Das VR-Oberflächen-Trackingsystem 700 umfasst ein VR-Steuergerät 710, eine VR-Anzeige 715 und einen VR-Simulator 720. Das VR-Steuergerät 710, die VR-Anzeige 715 und der VR-Simulator 720 können separate Geräte sein, die über drahtgebundene oder drahtlose Verbindungen miteinander verbunden sind. Beispielsweise kann der VR-Simulator 720 oder zumindest ein Teil davon auf einer auf Cloud basierenden Plattform implementiert sein und zum Bereitstellen von Game-Streaming verwendet werden. Der VR-Simulator 720 kann auch mit der VR-Anzeige 715 und dem VR-Steuergerät 710 zu einem einzigen integrierten VR-Gerät kombiniert werden, das in der Lage ist, die beschriebenen Prozesse und Funktionen auszuführen.
  • Das VR-Steuergerät 710 ist in der Lage, die Bewegungen des Benutzers zu detektieren und diese Bewegungen an den VR-Simulator 720 zu übermitteln. Das VR-Steuergerät 710 kann Teil der VR-Anzeige 715 sein, wie z. B. ein VR-Headset, das Augen- und Kopfbewegungen detektieren kann. VR-Steuergerät 710 kann auch ein oder mehrere separate Steuergeräte sein, z. B. ein Handsensor, eine oder mehrere Kameras, ein Bewegungsmelder und andere haptische und Körpersensor-Geräte. Dementsprechend repräsentiert VR-Steuergerät 710 ein oder mehrere VR-Steuergeräte.
  • Die VR-Anzeige 715 ist in der Lage, eine simulierte Szene vom VR-Simulator 720 zu empfangen und darzustellen. Die VR-Anzeige 715 kann eine oder mehrere verschiedene Anzeigen, Monitore und andere Geräte sein, die eine 2D- oder 3D-Szene anzeigen können. Die VR-Anzeige 715 kann mit einem Gerät zur Datenspeicherung assoziiert sein, wie z.B. einer Festplatte, einem Cloud-Speicher, einem Server, einem USB-Speicher und anderen Speichermedien.
  • Der VR-Simulator 720 kann als Hardware, Software oder eine Kombination davon implementiert werden. VR-Simulator 720 kann eine Softwareanwendung sein, die auf einer GPU, CPU oder einem anderen Prozessor ausgeführt wird oder in die Schaltungsanordnung eines Computersystems eingebettet ist. VR-Simulator 720 kann null, einen oder mehrere solcher Prozessoren verwenden. VR-Simulator 720 kann auch als Softwareanwendung gekapselt sein, zum Beispiel in einer Anwendungsbibliothek, einer dynamischen Verbindung (DLL), einer Anwendungsfunktion, einem Anwendungsmodul, einer Grafikbibliothek oder einem Treiber, einem ROM-Modul und einem Codesegment.
  • Der VR-Simulator 720 kann sich in einem Server, einem Datenzentrum, einer Cloud-Umgebung oder einem anderen Computersystem befinden, zum Beispiel in einem Laptop, einem Tablet und einem Smartphone. Der VR-Simulator 720 kann sich in der Nähe des VR-Steuergeräts 710 und der VR-Anzeige 715 befinden, weiter entfernt sein, Teil des VR-Steuergeräts 710 oder der VR-Anzeige 715 sein, oder eine Kombination davon. Die Kommunikation zwischen dem VR-Simulator 720, dem VR-Steuergerät 710 und dem VR-Display 715 kann über verschiedene konventionelle Übertragungsstandards erfolgen und drahtgebunden, drahtlos oder über andere konventionelle Übertragungsmittel erfolgen.
  • VR-Simulator 720 umfasst einen Posenanalysator 730, eine Physik-Engine 740 und einen Renderer 750. Der VR-Simulator kann Eingabeparameter von dem VR-Steuergerät 710 empfangen, wie z. B. Parameter, die sich auf die Bewegung des Benutzers beziehen, und Eingabeparameter von einer Anwendung, wie z. B. Blockierungsschwellenwerte, FPS, seitliche Überschwingungsparameter, Ghosting-Schwellenwerte und andere Parameter. Bei der Anwendung kann es sich um eine Videospielanwendung handeln. In einigen Aspekten wird die Anwendung auf dem VR Steuergerät 710 ausgeführt und die Anwendungsparameter werden vom VR Steuergerät 710 empfangen. In anderen Aspekten kann die Anwendung auf dem VR-Simulator ausgeführt werden und die Anwendungsparameter werden von der Anwendung empfangen. Gemäß einem weiteren Aspekt kann die Anwendung auf einem anderen Computersystem ausgeführt werden, und die Anwendungsparameter können von dem anderen Computersystem empfangen werden. Beispielsweise kann der VR-Simulator 720 von der entsprechenden Anwendungsquelle die simulierten Umgebungsparameter, die Starrkörperphysikwerte, die Szenengeometrie, den Ghosting-Schwellenwert, den Wert für die seitliche Bewegung, die angestrebten FPS, die Zeitverzögerung, den Entfernungsparameter und andere Eingabewerte und Parameter empfangen.
  • Der Posenanalysator 730 kann die Szenengeometrie zusammen mit der simulierten Umgebung und der Bewegung des Benutzers verwenden, um die folgende Pose und die führende Pose für den aktuellen Simulationsschritt zu bestimmen. Durch die Analyse der VR-Geometrie kann detektiert werden, ob ein Hindernis die folgende Pose unter Verwendung von direkter Nachführung zur führenden Pose blockiert. Der Posenanalysator 730 kann dann einen oder mehrere Bewegungsalgorithmen verwenden, wie den Blockierungsalgorithmus, den Streichalgorithmus, den Streichalgorithmus, den Übergangsalgorithmus und den Algorithmus für die direkte Nachführung, um Kandidatenposen für die angeforderte Bewegung zu berechnen. Der Posenanalysator 730 kann eine Kandidatenpose als ungefähre Zielpose auswählen und die Zielpose Anpassen, indem er null, eine oder mehrere Beschränkungen und Kräfte auf die ungefähre Zielpose anwendet. Das Ergebnis ist eine angepasste Zielpose, die dem Renderer 750 für die folgende Pose bereitgestellt werden kann. Der Posenanalysator 730 kann die angepasste Zielpose gemäß den hier offenbart dargestellten Verfahren bereitstellen, wie in 5 und 6 repräsentiert. Der Posenanalysator 730 kann mit der Physik-Engine 740 kooperieren, um die angepasste Zielpose zu berechnen. Bei der Physik-Engine 740 kann es sich um eine herkömmliche Physik-Engine handeln, die in VR-Simulatoren verwendet wird.
  • Der Renderer 750 kann die Informationen über die angepasste Zielpose vom Posenanalysator 730 zusammen mit anderen unterstützenden Informationen empfangen und eine Szene für den aktuellen Simulationsschritt rendern (dt. Bildsynthese für die Darstellung auf Anzeige durchführen). Der Renderer 750 kann bestimmen, wieviel Bewegung die folgende Pose innerhalb des aktuellen Simulationsschritts erfährt. Unter Verwenden von der Geschwindigkeit der Bewegung, den simulierten Umgebungsfaktoren und anderen Bewegungsfaktoren kann die folgende Pose teilweise in Richtung der führenden Pose oder vollständig in der führenden Pose gerendert werden. Der Renderer 750 kann dann die Szene an die VR-Anzeige 715 zur Betrachtung ausgeben.
  • Der Renderer 750 kann ein Cloud-basierter Renderer sein, der Game-Streaming für die VR-Anzeige 715 bereitstellt. Eine oder mehrere Komponenten des VR-Simulators 720 können auch auf Cloudbasiert sein. Zum Beispiel können der Pose-Analysator 730, die Physik-Engine 740 und der Renderer 750 auf einem oder mehreren Cloud-basierten Servern implementiert sein.
  • Ein Teil der oben beschriebenen Geräte, Systeme oder Verfahren kann in verschiedenen digitalen Datenprozessoren oder Computern verkörpert sein oder von diesen ausgeführt werden, wobei die Computer programmiert sind oder ausführbare Programme von Sequenzen von Softwareanweisungen speichern, um einen oder mehrere der Schritte der Verfahren durchzuführen. Die Softwareanweisungen solcher Programme können Algorithmen repräsentieren und in maschinenausführbarer Form auf nichtflüchtigen digitalen Datenspeichermedien kodiert sein, z. B. auf magnetischen oder optischen Platten, Random-Access-Memory (RAM), magnetischen Festplatten, Flash-Speichern und/oder Festwertspeichern (ROM), um verschiedene Arten von digitalen Datenprozessoren oder Computern in die Lage zu versetzen, einen, mehrere oder alle Schritte eines oder mehrerer der oben beschriebenen Verfahren oder Funktionen, Systeme oder Geräte durchzuführen.
  • Die digitalen Datenprozessoren oder Computer können einen oder mehrere GPUs, eine oder mehrere CPUs, einen oder mehrere andere Prozessortypen oder eine Kombination davon umfassen. Die digitalen Datenprozessoren und Computer können sich in unmittelbarer Nähe zueinander, in der Nähe eines Benutzers, in einer Cloud-Umgebung, einem Datenzentrum oder in einer Kombination davon befinden. Beispielsweise können einige Komponenten in der Nähe des Benutzers und einige Komponenten in einer Cloud-Umgebung oder einem Datenzentrum untergebracht sein.
  • Die GPUs können auf einem einzelnen Halbleitersubstrat verkörpert werden, das in einem System mit einem oder mehreren anderen Geräten wie zusätzlichen GPUs, einem Speicher und einer CPU enthalten ist. Die GPUs können auf einer Grafikkarte enthalten sein, die ein oder mehrere Speichergeräte umfasst und so konfiguriert ist, dass sie mit einer Hauptplatine eines Computers verbunden werden kann. Bei den GPUs kann es sich um integrierte GPUs (iGPUs) handeln, die zusammen mit einer CPU auf einem einzigen Chip untergebracht sind. Die Prozessoren oder Computer können Teil von GPU-Schränken sein, die sich in einem Datenzentrum befinden. Die GPU-Schränke können High-Density (HD)-GPU-Schränke sein, die Hochleistungs-GPU-Rechenknoten und Speicher-Knoten umfassen.
  • Teile von offenbarten Ausführungsbeispielen können sich auf Computer-Speicherprodukte mit einem nichtflüchtigen computerlesbaren Medium beziehen, auf dem sich Programmcode befindet, um verschiedene computerimplementierte Verfahren durchzuführen, die einen Teil einer Vorrichtung, eines Geräts verkörpern oder die Schritte eines hierin dargelegten Verfahrens ausführen. Nichtflüchtig bezieht sich hier auf alle computerlesbaren Medien mit Ausnahme von flüchtigen, sich ausbreitenden Signalen. Beispiele für nichtflüchtige computerlesbare Medien umfassen unter anderem: magnetische Medien wie Festplatten, Disketten und Magnetbänder; optische Medien wie CD-ROMs; magneto-optische Medien wie floptische Disketten; und Hardware-Geräte, die speziell für die Speicherung und Ausführung von Programmcode konfiguriert sind, wie ROM- und RAM-Geräte. Beispiele für Programmcode umfassen sowohl Maschinencode, wie er von einem Compiler erzeugt wird, als auch Dateien mit höherem Code, der vom Computer unter Verwendung eines Interpreters ausgeführt werden kann.
  • Bei der Auslegung der Offenbarung sollten alle Begriffe soweit wie möglich im Einklang mit dem Kontext interpretiert werden. Insbesondere sollten die Begriffe „umfasst“ und „enthaltend“ so ausgelegt werden, dass sie sich auf Elemente, Komponenten oder Schritte in einer nicht ausschließlichen Weise beziehen und anzeigen, dass die referenzierten Elemente, Komponenten oder Schritte vorhanden sein oder unter Verwendung von oder in Kombination mit anderen Elementen, Komponenten oder Schritten, die nicht ausdrücklich referenziert sind, auftreten können.
  • Fachleute auf dem Gebiet, auf das sich diese Anmeldung bezieht, werden verstehen, dass andere und weitere Ergänzungen, Streichungen, Ersetzungen und Änderungen an den beschriebenen Ausführungsbeispielen vorgenommen werden können. Es ist auch zu verstehen, dass die hier verwendete Terminologie nur zur Beschreibung bestimmter Ausführungsbeispiele dient und nicht als einschränkend zu verstehen ist, da der Umfang der vorliegenden Offenbarung nur durch die Ansprüche begrenzt wird. Sofern nicht anders definiert, haben alle hier verwendeten technischen und wissenschaftlichen Begriffe die gleiche Bedeutung, wie sie von einem Fachmann auf dem Gebiet, zu dem diese Offenbarung gehört, allgemein verstanden wird. Obwohl alle Verfahren und Materialien, die den hierin beschriebenen ähnlich oder gleichwertig sind, auch in der Praxis oder bei der Prüfung der vorliegenden Offenbarung verwendet werden können, wird hier eine begrenzte Anzahl von exemplarischen Verfahren und Materialien beschrieben.
  • Es wird darauf hingewiesen, dass die hier und in den beigefügten Ansprüchen verwendeten Singularformen „ein/eine“ und „die/der/das“ Pluralbezüge umfassen, sofern der Kontext nicht eindeutig etwas anderes angibt.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 16/888408 [0001]
    • US 62/854850 [0001]

Claims (23)

  1. Verfahren zum Bestimmen einer folgenden Pose in einem Virtual-Reality- (VR) Simulator während eines Simulationsschrittes, umfassend: Berechnen einer oder mehrerer aktueller Kandidatenposen unter Verwendung von Eingabeparametern, wobei jede der aktuellen Kandidatenposen eine zeitliche Projektion einer folgenden Pose entlang einer jeweiligen Sweep-Richtung in Richtung einer führenden Pose ist, und wobei sich ein Hindernis zwischen der folgenden Pose und der führenden Pose befindet; Auswählen einer Zielpose aus der einen oder mehreren aktuellen Kandidatenposen; Anpassen der Zielpose unter Verwendung von physikalisch basierten Beschränkungen und der Eingabeparameter, wobei die physikalisch basierten Beschränkungen eine Oberfläche des Hindernisses verwenden; und Rendern einer neuen folgenden Pose basierend auf der verbesserten Zielpose.
  2. Verfahren nach Anspruch 1, wobei die jeweilige Sweep-Richtung unter Verwenden einer Schnittnormalen, die der folgenden Pose zugeordnet ist, und von Richtungen, die senkrecht zur Schnittnormalen stehen, bestimmt wird.
  3. Verfahren nach Anspruch 1, wobei sich die führende Pose innerhalb einer Begrenzung der Oberfläche des Hindernisses befindet.
  4. Verfahren nach Anspruch 1, wobei der VR-Simulator zumindest teilweise auf einer oder mehreren Grafikverarbeitungseinheiten (GPU) ausgeführt wird.
  5. Verfahren nach Anspruch 1, wobei die Eingabeparameter von einem VR-Steuergerät und einer Softwareanwendung empfangen werden.
  6. Verfahren nach Anspruch 1, wobei die Eingabeparameter eine oder mehrere der folgenden Posen, die führende Pose, das Hindernis, einen Reibungskoeffizienten der Oberfläche, einen Kontaktrestitutionskoeffizienten der Oberfläche, eine externe Beschränkung, Werte eines Starrkörperalgorithmus oder einen Wert für eine direkte Nachführung umfassen.
  7. Verfahren nach Anspruch 1, wobei das Berechnen einen Blockierungsalgorithmus verwendet, wenn ein Sweep-Modus-Verhältnis gleich oder kleiner als ein Sweep-Modus-Parameter ist, und den Blockierungsalgorithmus und einen Streichalgorithmus verwendet, wenn das Sweep-Modus-Verhältnis größer als der Sweep-Modus-Parameter ist.
  8. Verfahren nach Anspruch 1, wobei das Auswählen weiter umfasst: Mischen früherer Kandidatenposen, die in früheren Simulationsschritten berechnet wurden, mit der einen oder mehreren aktuellen Kandidatenposen.
  9. Verfahren nach Anspruch 1, wobei das Auswählen weiter umfasst: Mischen der jeweiligen Sweep-Richtungen von jeder der einen oder mehreren Kandidatenposen, und Einschließen einer Kandidatenpose, die die gemischte jeweilige Sweep-Richtung verwendet, als eine der einen oder mehreren Kandidatenposen.
  10. Verfahren nach Anspruch 1, wobei das Anpassen weiter umfasst: Rotieren der Zielpose unter Einwirkung einer Rotationskraft, wenn sich die Zielpose in der Nähe der Oberfläche des Hindernisses befindet.
  11. Verfahren nach Anspruch 10, wobei das Anpassen weiter umfasst: Reduzieren der aufgebrachten Rotationskraft durch eine Winkel-Antriebskraft der Zielpose.
  12. Verfahren nach Anspruch 1, wobei das Anpassen unter Verwendung einer oder mehrerer externer Beschränkungen, einer seitlichen Bewegung, eines Reibungskoeffizienten der Oberfläche des Hindernisses oder eines Kontaktrestitutionskoeffizienten der Oberfläche des Hindernisses erfolgt.
  13. Verfahren nach Anspruch 1, wobei das Rendern weiter umfasst: Umschalten auf einen Algorithmus zur direkten Nachführung, wenn sich das Hindernis nicht mehr zwischen der folgenden Pose und der führenden Pose befindet.
  14. Verfahren nach Anspruch 1, wobei die Zielpose und die verbesserte Zielpose ein flexibles Objekt mit mehreren beschränkten Körpern repräsentieren.
  15. Verfahren nach Anspruch 14, wobei jeder der mehreren beschränkten Körper eine eindeutige Zielpose und eine eindeutige verbesserte Zielpose hat.
  16. Computerprogrammprodukt, bei welchem eine Vielzahl von Arbeitsanweisungen auf einem nichtflüchtigen computerlesbaren Medium gespeichert sind, und welches eine Datenverarbeitungsvorrichtung anweist, wenn es ausgeführt wird, Operationen durchzuführen, um während eines Simulationsschritts eine folgende Pose in einem Virtual-Reality- (VR-) Simulator zu bestimmen, wobei die Operationen umfassen: Berechnen einer oder mehrerer Kandidatenposen, wobei jede der Kandidatenposen eine zeitliche Projektion einer folgenden Pose entlang einer jeweiligen Sweep-Richtung in Richtung einer führenden Pose ist, und wobei sich ein Hindernis zwischen der folgenden Pose und der führenden Pose befindet; Auswählen einer Zielpose aus der einen oder den mehreren Kandidatenposen; Anpassen der Zielpose unter Verwendung von physikalisch basierten Beschränkungen; und Rendern einer neuen folgenden Pose basierend auf der angepassten Zielpose.
  17. System zum Rendern einer Virtual-Reality- (VR) Szene, umfassend: ein VR-Steuergerät, das betrieben werden kann, um Benutzerparameter zu übertragen, die einer Bewegung eines Benutzers entsprechen; und einen VR-Simulator, der betrieben werden kann, um die Benutzerparameter und Anwendungsparameter zu empfangen und zu verwenden, um eine Szene einer simulierten Umgebung zu rendern, basierend auf einer Interaktion einer führenden Pose mit einem Hindernis, wobei die führende Pose die Bewegung des Benutzers in der simulierten Umgebung repräsentiert und das Hindernis zumindest teilweise in der simulierten Umgebung zwischen einer folgenden Pose und der führenden Pose liegt.
  18. System nach Anspruch 17, wobei der VR-Simulator eins oder mehrere von einer Grafikverarbeitungseinheit (GPU) oder einer Zentraleinheit (CPU) verwendet.
  19. System nach Anspruch 17, wobei die Operationen des VR-Simulators als eins oder mehrere von einer Anwendungsbibliothek, einer Dynamic Link Library (DLL), einer Funktion, einem Modul, einer Grafikbibliothek, einem ROM-Modul und einem Codesegment gekapselt sind.
  20. System nach Anspruch 17, weiter umfassend: eine VR-Anzeige, die so betrieben werden kann, dass sie die Szene von dem VR-Simulator empfängt.
  21. System nach Anspruch 17, wobei der VR-Simulator weiter umfasst: einen Posenanalysator, der betrieben werden kann, um Kandidatenposen unter Verwendung von der folgenden Pose, der führenden Pose, zuvor berechneten Kandidatenposen, den Benutzerparametern und den Anwendungsparametern zu berechnen; und einen Renderer, der betrieben werden kann, um die Szene unter Verwenden von einer Ausgabe des Posenanalysators zu generieren.
  22. System nach Anspruch 17, wobei sich der VR-Simulator in einer Cloud-Umgebung befindet.
  23. System nach Anspruch 17, wobei die Bewegungsalgorithmen einen Blockierungsalgorithmus, einen Streichalgorithmus, einen direkten Algorithmus, einen Übergangsalgorithmus und einen Schnappalgorithmus umfassen.
DE112020002550.0T 2019-05-30 2020-05-29 Virtual-Reality-Simulationen unter Verwenden von Oberflächen-Tracking Pending DE112020002550T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962854850P 2019-05-30 2019-05-30
US62/854,850 2019-05-30
US16/888,408 US11398047B2 (en) 2019-05-30 2020-05-29 Virtual reality simulations using surface tracking
US16/888,408 2020-05-29
PCT/US2020/035405 WO2020243629A1 (en) 2019-05-30 2020-05-29 Virtual reality simulations using surface tracking

Publications (1)

Publication Number Publication Date
DE112020002550T5 true DE112020002550T5 (de) 2022-02-24

Family

ID=73551334

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020002550.0T Pending DE112020002550T5 (de) 2019-05-30 2020-05-29 Virtual-Reality-Simulationen unter Verwenden von Oberflächen-Tracking

Country Status (4)

Country Link
US (1) US11398047B2 (de)
CN (1) CN114175103A (de)
DE (1) DE112020002550T5 (de)
WO (1) WO2020243629A1 (de)

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040104935A1 (en) * 2001-01-26 2004-06-03 Todd Williamson Virtual reality immersion system
US7381152B2 (en) 2001-07-23 2008-06-03 Southwest Research Institute Virtual reality system locomotion interface utilizing a pressure-sensing mat
EP1631937B1 (de) * 2003-06-12 2018-03-28 Honda Motor Co., Ltd. Zielorientierungschätzung mittels verwendung von tiefenmesssystem
US9600067B2 (en) 2008-10-27 2017-03-21 Sri International System and method for generating a mixed reality environment
US9069164B2 (en) * 2011-07-12 2015-06-30 Google Inc. Methods and systems for a virtual input device
KR102271198B1 (ko) 2013-03-15 2021-06-29 매직 립, 인코포레이티드 디스플레이 시스템 및 방법
US9192874B2 (en) * 2013-03-15 2015-11-24 Crayola, Llc Digital coloring tools kit with dynamic digital paint palette
US10019843B2 (en) * 2013-08-08 2018-07-10 Facebook, Inc. Controlling a near eye display
JP5850970B2 (ja) * 2014-04-09 2016-02-03 株式会社東芝 情報処理装置、映像投影装置、情報処理方法及びプログラム
US10684485B2 (en) 2015-03-06 2020-06-16 Sony Interactive Entertainment Inc. Tracking system for head mounted display
US9747717B2 (en) 2015-05-13 2017-08-29 Intel Corporation Iterative closest point technique based on a solution of inverse kinematics problem
JP7349992B2 (ja) * 2017-09-05 2023-09-25 コヴィディエン リミテッド パートナーシップ ロボット手術システムのための衝突処理アルゴリズム
US11354459B2 (en) * 2018-05-08 2022-06-07 Microsoft Technology Licensing, Llc Computer vision and speech algorithm design service
US11007642B2 (en) * 2018-10-23 2021-05-18 X Development Llc Machine learning methods and apparatus for automated robotic placement of secured object in appropriate location

Also Published As

Publication number Publication date
US20200380714A1 (en) 2020-12-03
WO2020243629A1 (en) 2020-12-03
US11398047B2 (en) 2022-07-26
CN114175103A (zh) 2022-03-11

Similar Documents

Publication Publication Date Title
DE60308541T2 (de) Mensch-maschine-schnittstelle unter verwendung einer deformierbaren einrichtung
DE60201692T2 (de) Auf 3D Objekten angewendetes 2D Bildverarbeitungsverfahren
DE69734658T2 (de) Verfahren und system für virtuelle kinematographie
DE112019005750T5 (de) Erlernen des Erzeugens synthetischer Datensätze zum Trainieren neuronalerNetze
DE69732211T2 (de) Bildverarbeitungseinheit für spiele
US20130218542A1 (en) Method and system for driving simulated virtual environments with real data
Oliva et al. NEOGEN: Near optimal generator of navigation meshes for 3D multi-layered environments
EP2405419A2 (de) Benutzereingabevorrichtung und Verfahren zur Interaktion mit grafischen Bildern
JPH0785312A (ja) 3次元動画作成装置
US10192342B1 (en) Using stand-in camera to determine grid for rendering an image from a virtual camera
Kulpa et al. Imperceptible relaxation of collision avoidance constraints in virtual crowds
DE69837165T2 (de) Verfahren und gerät für automatische animation von dreidimensionalen grafischen szenen für verbesserte 3-d visualisierung
CN114630738B (zh) 用于模拟感测数据和创建感知的系统和方法
DE102014114131A1 (de) Verfahren zur Informationsverarbeitung und elektronisches Gerät
DE112017008230T5 (de) Verfahren und vorrichtung zum abbilden einer virtuellen umgebung auf eine physische umgebung
DE112020002550T5 (de) Virtual-Reality-Simulationen unter Verwenden von Oberflächen-Tracking
EP3716014A1 (de) Übertragen eines zustands zwischen vr-umgebungen
DE102023105068A1 (de) Bewegungsvektoroptimierung für mehrfach refraktive und reflektierende Schnittstellen
Prima et al. Virtual camera movement with particle swarm optimization and local regression
DE102017007714A1 (de) Verbessertes Bemalen von Objekten durch die Verwendung von Perspektiven oder Transfers in einer digitalen Medienumgebung
Carozza et al. An immersive hybrid reality system for construction training
Dal Bianco et al. Preserving the motion features in nonavoiding collision crowds
Lan Simulation of Animation Character High Precision Design Model Based on 3D Image
DE102018006838A1 (de) Dynamisches Mapping von virtuellen und physischen Interaktionen
Will et al. An Optimized Marker Layout for 3D Facial Motion Capture.

Legal Events

Date Code Title Description
R012 Request for examination validly filed