DE202017104928U1 - Manipulation virtueller Objekte anhand von Controllern mit sechs Freiheitsgraden in erweiterten bzw. virtuellen Realitätsumgebungen - Google Patents

Manipulation virtueller Objekte anhand von Controllern mit sechs Freiheitsgraden in erweiterten bzw. virtuellen Realitätsumgebungen Download PDF

Info

Publication number
DE202017104928U1
DE202017104928U1 DE202017104928.0U DE202017104928U DE202017104928U1 DE 202017104928 U1 DE202017104928 U1 DE 202017104928U1 DE 202017104928 U DE202017104928 U DE 202017104928U DE 202017104928 U1 DE202017104928 U1 DE 202017104928U1
Authority
DE
Germany
Prior art keywords
controller
coordinate system
axis
movement
respect
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.)
Active
Application number
DE202017104928.0U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE202017104928U1 publication Critical patent/DE202017104928U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04815Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04845Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0486Drag-and-drop
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B9/00Simulators for teaching or training purposes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B22/00Exercising apparatus specially adapted for conditioning the cardio-vascular system, for training agility or co-ordination of movements
    • A63B22/02Exercising apparatus specially adapted for conditioning the cardio-vascular system, for training agility or co-ordination of movements with movable endless bands, e.g. treadmills
    • A63B2022/0271Exercising apparatus specially adapted for conditioning the cardio-vascular system, for training agility or co-ordination of movements with movable endless bands, e.g. treadmills omnidirectional
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/211Input arrangements for video game devices characterised by their sensors, purposes or types using inertial sensors, e.g. accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/428Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving motion or position input signals, e.g. signals representing the rotation of an input controller or a player's arm motions sensed by accelerometers or gyroscopes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/01Indexing scheme relating to G06F3/01
    • G06F2203/012Walk-in-place systems for allowing a user to walk in a virtual environment while constraining him to a given position in the physical environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04806Zoom, i.e. interaction techniques or interactors for controlling the zooming operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Educational Technology (AREA)
  • Educational Administration (AREA)
  • Business, Economics & Management (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)
  • Position Input By Displaying (AREA)

Abstract

Computerprogrammprodukt, das in einem nicht flüchtigen, computerlesbaren Medium enthalten ist, wobei auf dem computerlesbaren Medium eine Sequenz von Anweisungen gespeichert ist, die, wenn sie von einem Prozessor ausgeführt wird, den Prozessor veranlasst, ein Verfahren auszuführen, das Verfahren umfassend: Erzeugen einer dreidimensionalen (3D) virtuellen Umgebung; Verfolgen einer Sechs-Grad-Freiheits-(6DOF)-Position und Ausrichtung eines ersten Controllers in einer physischen Umgebung; Verfolgen einer 6DOF-Position und Ausrichtung eines zweiten Controllers in der physischen Umgebung; Erkennen einer Auswahl eines virtuellen Objekts, das in der virtuellen Umgebung angezeigt wird; Erkennen einer Eingabe für das ausgewählte virtuelle Objekt anhand einer erfassten Bewegung des ersten Controllers in der physischen Umgebung in Bezug auf ein erstes Koordinatensystem und einer erfassten Bewegung des zweiten Controllers in der physischen Umgebung in Bezug auf ein zweites Koordinatensystem; Auflösen der erfassten Bewegung des ersten Controllers in Bezug auf das erste Koordinatensystem und der erfassten Bewegung des zweiten Controllers in Bezug auf das zweite Koordinatensystem auf eine Befehlsbewegung in Bezug auf ein gemeinsames Koordinatensystem; und Manipulieren des ausgewählten virtuellen Objekts in Reaktion auf die Befehlsbewegung.

Description

  • TECHNISCHES GEBIET
  • Dieses Dokument bezieht sich im Allgemeinen auf die Verarbeitung von Eingaben in einer erweiterten bzw. virtuellen Realitätsumgebung.
  • ALLGEMEINER STAND DER TECHNIK
  • Ein System erweiterter bzw. virtueller Realität (Augmented Reality – AR bzw. Virtual Reality – VR) kann eine dreidimensionale (3D) immersive Umgebung erzeugen. Ein Benutzer kann die erweiterte bzw. virtuelle Realitätsumgebung durch Interaktion mit verschiedenen elektronischen Geräten, wie beispielsweise einem Helm oder einem anderen am Kopf befestigten Gerät erfahren, einschließlich einer Anzeige, einer Brille oder einer Schutzbrille, die ein Benutzer bei der Betrachtung einer Anzeigevorrichtung durchschaut, oder externer tragbarer Geräte, die Sensoren, Handschuhe mit Sensoren und andere dieser Geräte beinhalten. Ist der Benutzer erst einmal in die erweiterte bzw. virtuelle Realitätsumgebung eingetaucht, kann er in der virtuellen Umgebung mit virtuellen Objekten, Elementen, Merkmalen und dergleichen auf unterschiedliche Weise interagieren, um virtuelle Objekte in der virtuellen Umgebung auszuwählen bzw. handzuhaben. Beispielsweise kann der Benutzer einen gewünschten Effekt in der virtuellen Umgebung durch Bearbeitung eines oder mehrerer externer elektronischer Geräte, physischer Bewegungen und/oder Gesten, Richtungsanzeigen bzw. Blickrichtung und dergleichen erzeugen, um mit der virtuellen Umgebung zu interagieren, diese individuell anzupassen und zu steuern.
  • KURZDARSTELLUNG DER OFFENBARUNG
  • In einem Aspekt kann ein Verfahren, das von einem Prozessor ausgeführt wird, basierend auf Befehlen eines Computerprogrammprodukts, das Erzeugen einer dreidimensionalen (3D) virtuellen Umgebung beinhalten; Verfolgen einer 6-Grad-Freiheits-(6DOF)-Position und Ausrichtung eines ersten Controllers in einer physischen Umgebung; Verfolgen einer 6DOF-Position und Ausrichtung eines zweiten Controllers in der physischen Umgebung; Erkennen einer Auswahl eines virtuellen Objekts, das in der virtuellen Umgebung angezeigt wird; Erfassen einer auf das ausgewählte virtuelle Objekt gerichteten Eingabe auf der Grundlage einer erfassten Bewegung des ersten Controllers in der physischen Umgebung in Bezug auf ein erstes Koordinatensystem und eine erfasste Bewegung des zweiten Controllers in der physischen Umgebung in Bezug auf ein zweites Koordinatensystem; Auflösen der erfassten Bewegung des ersten Controllers in Bezug auf das erste Koordinatensystem und der erfassten Bewegung des zweiten Controllers in Bezug auf das zweite Koordinatensystem zu einer Befehlsbewegung in Bezug auf ein gemeinsames Koordinatensystem; sowie Manipulieren des ausgewählten virtuellen Objekts in Reaktion auf den Befehl Bewegen.
  • In einem anderen Aspekt kann ein Verfahren, das von einem Prozessor ausgeführt wird, basierend auf Befehlen eines Computerprogrammprodukts, das Erfassen einer Auswahl eines virtuellen Objekts, das in einer virtuellen Umgebung angezeigt wird; Erfassen einer Eingabe, die für das ausgewählte virtuelle Objekt, das in der virtuellen Umgebung angezeigt wird, in Reaktion auf eine erfasste Bewegung eines ersten Controllers in Bezug auf ein erstes Koordinatensystem und eine erfasste Bewegung einer zweiten Controller in Bezug auf ein zweites Koordinatensystem, wobei der erste und der zweite Controller in einer physischen Umgebung arbeiten; Auflösen der erfassten Bewegung des ersten Controllers und der erfassten Bewegung des zweiten Controllers auf eine Befehlsbewegung in Bezug auf ein gemeinsames Koordinatensystem; sowie Drehen des ausgewählten virtuellen Objekts in der virtuellen Umgebung in Reaktion auf den Befehl Bewegen beinhalten.
  • In einem anderen Aspekt kann ein Computerprogrammprodukt in einem nicht flüchtigen, computerlesbaren Medium enthalten sein, wobei auf dem computerlesbaren Medium eine Sequenz von Anweisungen gespeichert ist. Wenn die Anweisungen von einem Prozessor ausgeführt werden, können diese den Prozessor dazu veranlassen, ein Verfahren auszuführen, das beinhaltet: das Erzeugen einer dreidimensionalen (3D) virtuellen Umgebung; Verfolgen einer 6-Grad-Freiheits-(6DOF)-Position und Ausrichtung eines ersten Controllers in einer physischen Umgebung; Verfolgen einer 6DOF-Position und Ausrichtung eines zweiten Controllers in der physischen Umgebung; Erkennen einer Auswahl eines virtuellen Objekts, das in der virtuellen Umgebung angezeigt wird; Erfassen einer auf das ausgewählte virtuelle Objekt gerichteten Eingabe auf der Grundlage einer erfassten Bewegung des ersten Controllers in der physischen Umgebung in Bezug auf ein erstes Koordinatensystem und eine erfasste Bewegung des zweiten Controllers in der physischen Umgebung in Bezug auf ein zweites Koordinatensystem; Auflösen der erfassten Bewegung des ersten Controllers in Bezug auf das erste Koordinatensystem und die erfasste Bewegung des zweiten Controllers in Bezug auf das zweite Koordinatensystem zu einer Befehlsbewegung in Bezug auf ein gemeinsames Koordinatensystem; sowie Manipulieren des ausgewählten virtuellen Objekts in Reaktion auf den Befehl Bewegen.
  • Die Details von einer oder mehreren Implementierungen sind in den begleitenden Zeichnungen und der nachfolgenden Beschreibung dargelegt. Andere Merkmale werden aus der Beschreibung und den Zeichnungen und aus den Ansprüchen ersichtlich.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt eine exemplarische Implementierung eines Virtual-Reality-Systems, das gemäß Implementierungen und Techniken, wie hierin beschrieben, ein am Kopf befestigtes Anzeigegerät (HMD) sowie ein oder mehrere tragbare elektronische Gerät(e) beinhaltet.
  • 2 veranschaulicht die jeweiligen Koordinatensysteme von mehreren 6-Grad-Freiheits-(6DOF)-Controllern, die gemäß den hierin beschriebenen Implementierungen in einer erweiterten bzw. virtuellen Realitätsumgebung arbeiten.
  • 39 veranschaulichen exemplarische Bewegungen von mehreren 6DOF-Controlleren und entsprechenden Bewegungen von virtuellen Objekten in einer erweiterten bzw. virtuellen Realitätsumgebung gemäß den hierin beschriebenen Implementierungen.
  • 10A10D veranschaulichen exemplarische Implementierungen der Verwendung von mehreren 6DOF-Controllern bei der Bearbeitung eines ausgewählten virtuellen Objekts in einer erweiterten bzw. virtuellen Realitätsumgebung gemäß den hierin beschriebenen Implementierungen.
  • 11A und 11B sind perspektivische Ansichten eines HMD-Beispiels gemäß den hierin beschriebenen Implementierungen.
  • 12 zeigt ein Blockdiagramm eines Systems einer erweiterten bzw. virtuellen Realität gemäß den hierin beschriebenen Implementierungen.
  • 13 zeigt ein Ablaufdiagramm eines Verfahrens gemäß hierin beschriebenen Implementierungen.
  • 14 zeigt ein Beispiel für ein Computergerät und ein mobiles Computergerät, die verwendet werden können, um die hier beschriebenen Techniken zu implementieren.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ein Benutzer, der in eine virtuelle Umgebung beispielsweise eines HMD-Geräts (Head Mount Display) eingetaucht ist, kann die virtuelle Umgebung erkunden und mit virtuellen Objekten, Elementen, Merkmalen und dergleichen durch verschiedene Arten von Eingaben interagieren. Diese Eingaben können beispielsweise eine Bearbeitung eines von dem HMD separaten elektronischen Geräts bzw. eine Bearbeitung des HMD selbst bzw. ein Richtungsblick der Augen bzw. eine Kopfbewegung oder eine Hand-/Arm-Bewegung und dergleichen beinhalten. Der Benutzer kann ein oder mehrere tragbare elektronische Geräte oder Controller, die mit dem HMD operativ verbunden oder mit diesem gekoppelt sind, manipulieren, um eine gewünschte Aktion in der virtuellen Umgebung zu bewirken. Ein Benutzer kann einen Controller auf verschiedenen Wegen manipulieren, wie beispielsweise durch Berührungseingaben auf einer Berührungsfläche des Controllers, Manipulieren von Eingabetasten und/oder Schaltern an dem Controller, physische Bewegung des Controllers selbst und dergleichen, um Eingaben zu liefern, die in der virtuellen Umgebung implementiert werden sollen. Beispielsweise kann der Controller in einigen Implementierungen so manipuliert werden, dass dem Benutzer eine visuelle Größe bzw. ein Aussehen bzw. eine Position mit virtuellen Inhalten in der virtuellen Umgebung angezeigt wird. Diese Fähigkeit kann Flexibilität und Komfort bei der Bereitstellung von Benutzereingaben bieten und das virtuelle Erlebnis des Benutzers verbessern.
  • In einem System und einem Verfahren kann gemäß den hierin beschriebenen Implementierungen die Bewegung mehrerer Controller und insbesondere die Drehung mehrerer Controller, die Benutzereingaben in einer virtuellen Realitätsumgebung bereitstellen, auf ein einziges Koordinatensystem gelegt werden, um das für die Implementierung Vorgesehene in Bezug auf ein bestimmtes virtuelles Objekt festzulegen.
  • Im Folgenden werden das oder die tragbaren elektronischen Geräte, die für eine Interaktion in einer erweiterten bzw. virtuellen Realitätsumgebung verwendet werden sollen, zur Vereinfachung der Erläuterung und Veranschaulichung als Controller bezeichnet. Die hierin beschriebenen Prinzipien werden ggf. auch auf andere Arten von externen elektronischen Geräten angewendet werden, die verwendet werden können, um mit virtuellen Objekten, virtuellen Merkmalen und dergleichen zu interagieren, die dem Benutzer für die Interaktion in einer erweiterten bzw. virtuellen Realitätsumgebung präsentiert werden.
  • Wie in der exemplarischen Implementierung in 1 dargestellt, hält ein Benutzer, der ein HMD 100 trägt, ein erstes tragbares elektronisches Handgerät A oder einen ersten Controller A in einer Hand und ein zweites tragbares elektronisches Gerät B oder einen zweiten Controller B in der anderen Hand. Bei einem oder beiden der Controller A, B kann es sich beispielsweise um eine Gyromaus, ein Smartphone, einen Controller, der für den Betrieb mit einem bestimmten System konfiguriert ist, oder eine andere Art von Controller handeln, der mit dem HMD 100 gepaart werden und mit diesem für die Interaktion in der immersiven virtuellen Umgebung, die durch das HMD 100 erzeugt wird, in Kommunikation stehen kann. In einigen Implementierungen kann eine 6DOF-Position und Ausrichtung der Controller A, B auf Basis verschiedener Sensoren verfolgt werden, die in den Controllern A, B enthalten sind. Diese Sensoren können beispielsweise eine Inertialmesseinheit beinhalten, die beispielsweise einen Beschleunigungssensor, ein Gyroskop, ein Magnetometer und dergleichen, wie z. B. in einem Gyroskop oder in einem auf diese Weise angepassten Smartphone, beinhalten. In einigen Implementierungen kann eine 6DOF-Position und Ausrichtung der Controller A, B auf der Grundlage einer Position der jeweiligen Controller A, B verfolgt werden, die von anderen Sensoren im System erfasst wird. Diese anderen Sensoren können beispielsweise Bildsensoren, die auf dem HMD 100 enthalten sind, zusammen mit Ausrichtungssensoren beinhalten, die in den Controllern A, B enthalten sind. Die Controller A, B können mit dem HMD 100, beispielsweise über eine drahtgebundene Verbindung, eine drahtlose Verbindung, wie beispielsweise eine WLAN- oder Bluetooth-Verbindung und dergleichen, betriebsfähig gekoppelt oder gepaart sein, um den Austausch von Daten und die Kommunikation zwischen den Controllern A, B und dem HMD 200 zu ermöglichen. Diese Verbindung zwischen dem HMD und den Controllern A, B kann es dem Benutzer ermöglichen, in der virtuellen Umgebung, die durch das HMD 200 erzeugt wird, durch Manipulieren eines oder beider der Controller A, B zu interagieren. Das heißt, ein Manipulieren einer oder beider Controller A, B, wie beispielsweise eine physische Bewegung bzw. eine Eingabe, die auf einer Berührungsfläche des Controllers A, B empfangen wird, oder ein virtueller Strahl oder ein Strahl, der von dem Controller A, B, an ein virtuelles Objekt in der virtuellen Umgebung gesendet wird, kann in eine entsprechende Interaktion oder Bewegung in der virtuellen Umgebung übersetzt werden.
  • Wie zuvor erläutert, können in einigen Implementierungen ein oder beide Controller A, B mit Gyromaus-Fähigkeiten ausgerüstet werden und im freien Raum operativ sein, um beispielsweise in der virtuellen Umgebung virtuelle Objekten auszuwählen, handzuhaben oder auf andere Weise mit denselben zu interagieren. Die Verwendung einer oder mehrerer Controller A, B mit Gyromaus-Fähigkeiten kann die verhältnismäßig genaue Verfolgung einer 6DOF-Position (Position und Ausrichtung) im dreidimensionalen Raum (3D) oder einer realen Umgebung zulassen, in welchen das System arbeitet.
  • Die Controller A, B können ein Gyroskop beinhalten, das ein Signal erzeugt, aus dem die Winkelbewegung der Controller A, B hervorgeht. Die erkannte Winkelbewegung der Controller A, B kann in der virtuellen Umgebung in Richtungsbewegung umgesetzt werden. In einigen Implementierungen können die Controller A, B zudem einen Beschleunigungssensor beinhalten, der ein Signal erzeugt, aus dem die Beschleunigung der Controller A, B hervorgeht, wie z. B. eine Beschleunigung in eine Richtung, die dem Richtungssignal entspricht, das durch das Gyroskop erzeugt wurde. In einigen Implementierungen können die Controller A, B außerdem ein Magnetometer beinhalten, das ein Signal erzeugt, aus dem die relative Position der Controller A, B in der realen Umgebung basierend auf der Stärke bzw. der Richtung eines ermittelten Magnetfelds hervorgeht. Die erfasste dreidimensionale Position der Controller A, B in der realen Umgebung, zusammen mit Informationen im Zusammenhang mit den Controllern A, B, die durch das Gyroskop bzw. den Beschleunigungssensor bzw. das Magnetometer geliefert werden, können eine 6DOF-Verfolgung der einzelnen Controller A, B bereitstellen. Dadurch kann das Manipulieren der Controller A, B durch den Benutzer in eine gezielte oder beabsichtigte Interaktion in der virtuellen Umgebung umgesetzt werden bzw. eine Aktion kann in der virtuellen Umgebung auf ein ausgewähltes virtuelles Objekt gerichtet werden.
  • In einigen Implementierungen können eine oder beide Controller A, B Manipulationsgeräte beinhalten, die konfiguriert sind, um verschiedene Arten von Benutzereingaben zu empfangen. Beispielsweise können die Controller A, B in einigen Implementierungen eine oder mehrere Berührungsfläche(n) beinhalten, die konfiguriert sind, beispielsweise eine Berührungseingabe, eine Touch-and-Drag-Eingabe, eine Pinch-and-Zoom-Eingabe und ähnliches zu empfangen. Die Controller A, B können zudem andere Manipulationsgeräte, wie beispielsweise eine oder mehrere Schaltflächen, einen oder mehrere Kippschalter, einen oder mehrere Steuerhebel und dergleichen beinhalten, die konfiguriert sind, Benutzereingaben zu empfangen.
  • Die so ausgestatteten Controller A, B können Benutzereingaben in einer Vielzahl von unterschiedlichen Eingabemodi empfangen, die in entsprechende Interaktionen in der virtuellen Umgebung umgesetzt werden. Diese Benutzer-Eingabemodi können z. B. eine physische Bewegung oder Geste der Controller A, B, basierend auf Position, Ausrichtung und Richtungsbewegung beinhalten, die von den Sensoren in den Controllern A, B erkannt und verfolgt werden. Diese Benutzereingabemodi können zudem eine Berührungseingabe (einschließlich Touch-and-Drag, Pinch-and-Zoom und dergleichen), die auf der Berührungsoberfläche der Controller A, B erfasst wurde, eine Auswahl, die auf einem der Manipulationsgeräte der Controller A, B empfangen wurde, und andere derartige Eingaben beinhalten. In einigen Implementierungen können die Controller A, B einen Benutzerbefehl, einschließlich einer Kombination dieser Benutzereingabemodi oder eine sequenzielle Anwendung dieser Benutzereingabemodi, erhalten.
  • Beim Interagieren in einer virtuellen Umgebung mit mehreren 6DOF-Controllern, wie z. B. dem ersten Controller A und dem zweiten Controller B kann, wie oben beschrieben, eine Möglichkeit, Objekte mit zwei 6DOF-Controllern umzusetzen, gleichmäßig zu skalieren und virtuelle Objekte zu drehen, dem Benutzer ermöglichen, mit dem ersten Controller A in einer Hand und dem zweiten Controller B in der anderen Hand, mit virtuellen Objekten auf natürliche Weise zu interagieren. In einem System und Verfahren gemäß den hier beschriebenen Implementierungen kann ein einzelnes, gleichbleibendes, allgemeines Koordinatensystem definiert werden, damit mehrere 6DOF-Controller in derselben virtuellen Umgebung (und in derselben realen Umgebung) betrieben werden können, wobei sich jeder der Controller unabhängig von dem anderen und innerhalb seiner eigenen jeweiligen Koordinatensysteme bewegt.
  • Wie oben beschrieben, können Virtual-Reality-6DOF-Controller, wie z. B. die oben beschriebenen ersten und zweiten Controller A, B, Informationen über die Position und Ausrichtung bereitstellen. Ein Controller, der durch den Benutzer zur Interaktion in der virtuellen Umgebung betrieben wird, kann manipuliert werden, um Position und Ausrichtung eines virtuellen Objekts in der virtuellen Umgebung direkt zu steuern. In ähnlicher Weise können Informationen über die Position und Ausrichtung mehrerer Controller, beispielsweise der oben beschriebenen ersten und zweiten Controller A, B verwendet werden, um eine Position eines virtuellen Objekts in der virtuellen Umgebung, beispielsweise basierend auf den durchschnittlichen Positionen der ersten und zweiten Controller A, B, wie in 7 dargestellt, zu steuern. In ähnlicher Weise können Informationen über die Position und Ausrichtung mehrerer Controller, beispielsweise der zuvor beschriebenen ersten und zweiten Controller A, B verwendet werden, um eine Skalierung des virtuellen Objekts, beispielsweise basierend auf einer bekannten Ausgangsposition der ersten und zweiten Controller A, B und erfassten Änderungen in der Position der ersten und zweiten Controller A, B, wie in 8 dargestellt, zu steuern. In einem System und Verfahren können gemäß den hier beschriebenen Implementierungen Informationen über die Position und Ausrichtung von mehreren Controllern, wie z. B. dem zuvor beschriebenen ersten und zweiten Controller A, B, verwendet werden, um, wie in 9 dargestellt, eine Drehung des virtuellen Objekts zu steuern.
  • Das Feststellen und Steuern der Ausrichtung eines virtuellen Objekts, beispielsweise in Reaktion auf eine Drehbewegung der ersten und der zweiten Controller A, B, beim Betreiben mehrerer Controller A, B, kann zusätzliche Herausforderungen oder ein Problem der Überbegrenzung darstellen. Das heißt, Position und Bewegung des ersten Controllers A können eine erste gezielte oder beabsichtigte Ausrichtung für das virtuelle Objekt implizieren, und Position und Bewegung des zweiten Controllers B können eine zweite gezielte oder beabsichtigte Ausrichtung für das virtuelle Objekt implizieren, die anders ist als die erste gezielte oder beabsichtigte Ausrichtung, die von dem ersten Controller A impliziert wird. In einigen Implementierungen können die beiden unterschiedlichen Koordinatensysteme, in welchen die zwei unterschiedlichen Controller A, B jeweils funktionieren, auf ein einzelnes, allgemeines Koordinatensystem gelegt werden. Ein Algorithmus kann die Position und Bewegung, insbesondere die Drehung, des ersten Controllers A und die Position und Bewegung, insbesondere die Drehung des zweiten Controllers B, auf dieses gemeinsame Koordinatensystem legen. Diese durch den Algorithmus zur Verfügung gestellte Auflösung kann eine gezielte oder beabsichtigte Eingabe durch die die Bewegung des ersten und zweiten Controllers A, B bestimmen, um eine Änderung der Ausrichtung des ausgewählten virtuellen Objekts auszuführen.
  • In diesem gemeinsamen Koordinatensystem kann eine erste Achse 1 des gemeinsamen Koordinatensystems durch einen Vektor bestimmt werden, der zwischen der Position des ersten Controllers A und einer Position des zweiten Controllers B zum gleichen Zeitpunkt verläuft. Die erste Achse 1 kann beispielsweise durch einen Vektor definiert werden, der, wie in 2 dargestellt, zwischen einem vordefinierten Mittelabschnitt A1 des ersten Controllers A und einem vordefinierten Mittelabschnitt B1 des zweiten Controllers B verläuft.
  • Eine zweite Achse 2 des gemeinsamen Koordinatensystems kann durch einen Durchschnitt einer Richtung des ersten Controllers A und einer Richtung des zweiten Controllers B zum gleichen Zeitpunkt definiert werden. Der Algorithmus kann diese Richtung dynamisch an aufeinanderfolgenden Zeitpunkten wählen, um eine Bewegungsrichtung der Controller A, B zu sein, die zur ersten Achse 1 am orthogonalsten verläuft, damit das zentrale Koordinatensystem so beständig bleiben kann, wie möglich. Beispielsweise kann die zweite Achse 2 dynamisch als X-, Y- oder Z-Achse des ersten Controllers A gewählt werden, je nachdem, welche der drei Achsen am orthogonalsten zur ersten Achse 1 verläuft. In einigen Implementierungen kann die orthogonalste Achse z. B. die orthogonalste der Achsen X, Y und Z des ersten Controllers A in diesem Beispiel sein, es kann die Achse sein, die die erste Achse 1 in einem Winkel schneidet, der einem rechten oder 90-Grad-Winkel am nächsten ist. In dem in 2 dargestellten Beispiel weisen der erste Controller A und der zweite Controller B im Wesentlichen in ähnliche Richtungen und interagieren z. B. mit virtuellen Objekten vor dem Benutzer. Im dem in 2 dargestellten Beispiel werden die Controller A und B vom Benutzer im Wesentlichen gerade und parallel gehalten, sodass die erste Achse 1 zwischen dem Mittelabschnitt A1 des ersten Controllers A und dem Mittelabschnitt B1 des zweiten Controllers B verläuft. In diesem Beispiel, basierend auf den relativen Positionen der ersten und zweiten Controller A, B und der ersten Achse 1, würde der Algorithmus entweder die Y- oder die Z-Achse als zweite Achse 2 wählen, da eine dieser Achsen die orthogonalste im Verhältnis zur ersten Achse 1 wäre.
  • Die dritte Achse 3 des gemeinsamen Koordinatensystems kann die Schnittmenge der ersten Achse 1 und der zweiten Achse 2 sein. Das heißt, die dritte Achse 3 kann einen dritten Vektor darstellen, der die Schnittmenge des Vektors ist, dargestellt durch die erste Achse 1 und den Vektor, dargestellt durch die zweite Achse 2.
  • 3 veranschaulicht ein Beispiel, in dem der Benutzer den ersten Controller A und den zweiten Controller B bewegen kann, um eine Drehung eines virtuellen Objekts z. B. im oder gegen den Uhrzeigersinn zu verursachen, wie z. B. eines virtuellen Lenkrades, eines virtuellen Vorwahlknopfes und der dergleichen. Die Bewegung des ersten und des zweiten Controllers A und B und die daraus resultierende Umdrehung des virtuellen Objekts kann beispielsweise auf einer Anzeige des HMD 100 angezeigt werden, das der Benutzer trägt. Im Beispiel von 3 sind der erste Controller A und der zweite Controller B im Wesentlichen vertikal ausgerichtet und weisen in im Wesentlichen ähnliche Richtungen, kurz vor Anfang der Bewegung. Die Bewegung des ersten Controllers A nach oben, wie durch den Pfeil A3 dargestellt, sowie die Bewegung des zweiten Controllers B nach unten, wie durch den Pfeil B3 dargestellt, kann zu einer Drehung des virtuellen Objekts im Uhrzeigersinn führen. Wieweit das virtuelle Objekt gedreht wird, kann, wie zuvor beschrieben, durch die Auflösung der Bewegung der ersten und zweiten Controller A, B durch den Algorithmus in einem gemeinsamen Koordinatensystem bestimmt werden.
  • 4 veranschaulicht ein Beispiel, in dem der Benutzer den ersten Controller A und den zweiten Controller B bewegen kann, um ein virtuelles Objekt zu drehen, z. B. von einer senkrechten, im Wesentlichen vertikalen Position, zu einer vorn übergeneigten oder im Wesentlichen horizontalen Position. Im Beispiel von 4 sind der erste Controller A und der zweite Controller B im Wesentlichen vertikal ausgerichtet und weisen in im Wesentlichen ähnliche Richtungen, kurz vor Anfang der Bewegung. Eine Drehbewegung des ersten Controllers A um die X-Achse, wie durch den Pfeil A4 dargestellt, und eine Drehbewegung des zweiten Controllers B um die X-Achse, wie durch den Pfeil B4 dargestellt, kann zu einer entsprechenden Drehbewegung des virtuellen Objekts führen. Wieweit das virtuelle Objekt gedreht wird, kann, wie zuvor beschrieben, durch die Auflösung der Drehbewegung des ersten und zweiten Controllers A, B durch den Algorithmus in einem gemeinsamen Koordinatensystem bestimmt werden.
  • 5 zeigt ein Beispiel, in dem der erste Controller A und der zweite Controller B vor Beginn der Drehbewegung in verschiedene Richtungen ausgerichtet sind. Im Beispiel in 5 ist der erste Controller A in eine erste Richtung (d. h. nach rechts in 5) und der zweite Controller B in eine zweite Richtung ausgerichtet (d. h. nach links in 5). In diesem Beispiel sind der erste und zweite Controller im Wesentlichen in entgegengesetzte Richtungen ausgerichtet; die zu beschreibenden Prinzipien können jedoch mit den Controllern A, B in unterschiedliche Richtungen weisend angewendet werden, die nicht unbedingt direkt entgegengesetzte Richtungen sein müssen. Eine Bewegung des ersten Controllers A nach oben, wie durch den Pfeil A5 dargestellt, und eine Bewegung des zweiten Controllers nach unten, wie durch den Pfeil B5 dargestellt, ohne eine Ausrichtung der Controller A, B, kann dazu führen, dass das virtuelle Objekt eine Kippbewegung macht. Wieweit das virtuelle Objekt gekippt werden kann, kann, wie zuvor beschrieben, durch die Auflösung der Drehbewegung des ersten und zweiten Controllers A, B durch den Algorithmus in einem gemeinsamen Koordinatensystem bestimmt werden.
  • 6 zeigt ein Beispiel dafür, dass ein virtuelles Objekt 200 vom Benutzer für die Interaktion mit dem ersten und zweiten Controller A, B gewählt wird. In diesem Beispiel wird der erste Controller A in eine erste Richtung ausgerichtet, während der zweite Controller B in eine zweite Richtung vor Beginn der Bewegung ausgerichtet wird. Eine Drehbewegung des ersten Controllers A im Uhrzeigersinn, wie durch den Pfeil A6 dargestellt, und eine Drehbewegung des zweiten Controllers B im Uhrzeigersinn, wie durch den Pfeil B6 dargestellt, kann zu einer Drehbewegung des virtuellen Objekts 200 führen. Wieweit das virtuelle Objekts 200 in Reaktion auf die Drehung des ersten und des zweiten Controllers A, B gedreht wird, kann, wie zuvor beschrieben, durch die Auflösung der erfassten Drehbewegung des ersten und zweiten Controllers A, B durch den Algorithmus innerhalb seines entsprechenden Koordinatensystems in einem gemeinsamen Koordinatensystem bestimmt werden.
  • Das heißt, bei Einrichtung des gemeinsamen Koordinatensystems für den ersten Controller A und den zweiten Controller B kann die erste Achse 1 des gemeinsamen Koordinatensystems durch eine Linie definiert werden, die zwischen dem Mittelteil A1 des ersten Controllers und dem Mittelteil B1 des zweiten Controllers B verläuft. Die zweite Achse kann dann durch den Algorithmus dynamisch zugeordnet werden, wenn sich der erste Controller A und der zweite Controller B unabhängig voneinander bewegen. Der Algorithmus kann die Richtung der zweiten Achse 2 dynamisch an aufeinanderfolgenden Zeitpunkten wählen, um mit der Bewegungsrichtung der Controller A, B übereinzustimmen, die zur ersten Achse 1 am orthogonalsten verläuft, damit das zentrale Koordinatensystem so beständig bleiben kann, wie möglich. Im Beispiel von 6 kann die zu dem Zeitpunkt dargestellte zweite Achse 2 beispielsweise die Z-Achse des ersten Controllers A sein. Die dritte Achse des gemeinsamen Koordinatensystems kann die Kreuzung der ersten Achse 1 und der zweiten Achse 2 für jeden Zeitpunkt sein.
  • Während sich der erste Controller A und der zweite Controller B jeweils bewegen, kann die Bewegung der Controller A, B vom System dynamisch erfasst und nachverfolgt werden. Die dynamisch erfassten Bewegungen der Controller A, B können zu einer einzigen Bewegung in Bezug auf das gemeinsame Koordinatensystem an jedem Zeitpunkt in der Zeit aufgelöst werden, wobei diese einzelne Bewegung auf das ausgewählte virtuelle Objekt 200 angewendet werden kann. Die Bewegung des ausgewählten virtuellen Objekts 200 kann dem Benutzer auf einer Anzeige des von ihm getragenen HMD 100 angezeigt werden.
  • Wie zuvor erwähnt, können in einigen Implementierungen die beiden getrennten Koordinatensysteme, in denen der erste Controller A und der zweite Controller B jeweils arbeiten, in einem einzigen gemeinsamen Koordinatensystem durch einen Algorithmus aufgelöst werden, der die Bewegungen der ersten und des zweiten Controllers A, B mittelt. Beispielsweise kann ein Übersetzungsbetrag, der auf das virtuelle Objekt 200 basierend auf der erfassten Bewegung des ersten und des zweiten Controllers A, B angewendet werden soll, auf der Grundlage einer durchschnittlichen Änderung der Positionen der Controller A, B bestimmt werden. In ähnlicher Weise kann eine Änderung der Skala, die auf das virtuelle Objekt 200 basierend auf der festgestellten Bewegung des ersten und zweiten Controllers A, B angewendet werden soll, auf der Grundlage einer Abstandsänderung zwischen den Controllern A, B bestimmt werden. Eine Dreheingabe, die auf das virtuelle Objekt 200 basierend auf der festgestellten Bewegung des ersten und des zweiten Controllers A, B angewendet werden kann, kann auf der Grundlage einer Änderung des Vektors zwischen den Controllern A, B bestimmt werden. Somit kann die Drehung des virtuellen Objekts primär durch die Drehung jeder der ersten und des zweiten Controllers A, B in Bezug auf das gemeinsame Koordinatensystem definiert werden. Bei der Bestimmung der gezielten oder beabsichtigten Aktion, die auf dem ausgewählten virtuellen Objekt 200 auf der Grundlage der festgestellten Bewegung des ersten und zweiten Controllers A, B zu treffen ist, können diese Aktionen einzeln (beispielsweise nacheinander) bzw. gleichzeitig implementiert werden.
  • Wie in 7 dargestellt, kann ein Übersetzungsbetrag eines virtuellen Objekts 200 in Reaktion auf eine Bewegung mehrerer Controller, z. B. des ersten und des zweiten Controllers A, B basierend auf einer durchschnittlichen Veränderung der Position der Controller A, B bestimmt werden. Im in 7 dargestellten Beispiel sind der erste Controller A und der zweite Controller B im Wesentlichen senkrecht ausgerichtet, und weisen kurz vor Beginn der Bewegung im Wesentlichen in ähnliche Richtungen. Die Bewegung des ersten Controllers A nach oben, wie durch den Pfeil A7 dargestellt, und die Bewegung des zweiten Controllers B nach oben, wie durch den Pfeil B7 dargestellt, kann zu einer entsprechenden Aufwärtsbewegung oder Aufwärtsübersetzung des virtuellen Objekts 200 führen. Der Grad der Aufwärtsbewegung des virtuellen Objekts 200 in Reaktion auf die Aufwärtsbewegung des ersten und des zweiten Controllers A, B kann auf einem Durchschnitt der Aufwärtsbewegung des ersten Controllers A und der Aufwärtsbewegung des zweiten Controllers B beruhen. Der Grad der Bewegung des ersten und zweiten Controllers A, B kann basierend auf einer bekannten Position des ersten Controllers A und des zweiten Controllers B kurz vor Beginn der Bewegung bestimmt und dynamisch aktualisiert werden. Eine bekannte Position des ersten Controllers A und des zweiten Controllers B wird, wie zuvor beschrieben, als die 6DOF-Bewegung der ersten und des zweiten Controllers A, B verfolgt.
  • Wie in 8 dargestellt, kann ein Skalierungsbetrag eines virtuellen Objekts 200 in Reaktion auf eine Bewegung mehrerer Controller, z. B. der ersten und des zweiten Controllers A, basierend auf einer durchschnittlichen Veränderung des Abstands zwischen den Controllern A, B bestimmt werden. Im in 8 dargestellten Beispiel sind der erste Controller A und der zweite Controller B im Wesentlichen senkrecht ausgerichtet, und weisen kurz vor Beginn der Bewegung im Wesentlichen in ähnliche Richtungen. Die Bewegung des ersten Controllers A in eine erste Richtung, durch den Pfeil A8 dargestellt, und die Bewegung des zweiten Controllers B in eine zweite Richtung, die sich von der ersten Richtung unterscheidet, z. B. entgegen der ersten Richtung ist, dargestellt durch den Pfeil B8, kann wiederum zu einer entsprechenden Skalierung, z. B. einer einheitlichen Skalierung des virtuellen Objekts 200, führen. Der Grad der Skalierung des virtuellen Objekts 200 in Reaktion auf die Bewegung des ersten Controllers A in die erste Richtung und des zweiten Controllers B in die zweite Richtung kann auf der erfassten Änderung des Abstands zwischen erster und zweiter Controller A, B beruhen. Beispielsweise kann der Abstand zwischen dem ersten und zweiten Controller A, B basierend auf einer bekannten Position des ersten Controllers A und des zweiten Controllers B kurz vor Beginn der Bewegung bestimmt und dynamisch aktualisiert werden. Eine bekannte Position des ersten Controllers A und des zweiten Controllers B wird, wie zuvor beschrieben, als die 6DOF-Bewegung des ersten und des zweiten Controllers A, B verfolgt. In dem in 8 dargestellten Beispiel sind der erste und zweite Controller A, B im Wesentlichen in entgegengesetzte Richtungen ausgerichtet; die in Bezug auf 8 beschriebenen Prinzipien können jedoch mit den Controllern A, B in unterschiedliche Richtungen weisend angewendet werden, die nicht unbedingt direkt entgegengesetzte Richtungen sein müssen.
  • Wie in 9 dargestellt, kann ein Grad der Drehung des virtuellen Objekts 200 in Reaktion auf die Bewegung von mehreren Controllern, wie z. B. dem ersten und dem zweiten Controller A, B, anhand einer Änderung des Vektors zwischen dem ersten Controller A und dem zweiten Controller B bestimmt werden. Wie zuvor erwähnt, kann die Bestimmung der gezielten oder beabsichtigten Skala des ausgewählten virtuellen Objekts 200 basierend auf der erfassten Bewegung des ersten Controllers A und der erfassten Bewegung des zweiten Controllers B, möglicherweise eine relativ einfache Anwendung dieser Grundsätze auf sequentielle Zeitpunkte während des Betriebs des ersten und des zweiten Controllers A, B für die Interaktion in der virtuellen Umgebung sein. Die Bestimmung der gezielten oder beabsichtigten Drehbewegung des ausgewählten virtuellen Objekts 200 aufgrund der erfassten Bewegung des ersten Controllers A und der erfassten Bewegung des zweiten Controllers B kann zusätzliche Herausforderungen darstellen. In einigen Implementierungen kann die Bestimmung der gezielten oder beabsichtigten Drehbewegung des ausgewählten virtuellen Objekts 200 aufgrund der erfassten Bewegung des ersten Controllers A und der erfassten Bewegung des zweiten Controllers B die Durchführung einer Quaternion basierend auf der vorherigen und aktuellen Achse zwischen den beiden Vektoren beinhalten.
  • Im Beispiel von 9 sind der erste Controller A und der zweite Controller B im Wesentlichen vertikal ausgerichtet und weisen kurz vor Anfang der Bewegung in im Wesentlichen ähnliche Richtungen. Die Bewegung des ersten Controllers A in eine erste Richtung, beispielsweise nach oben, wie durch den Pfeil A9 dargestellt, und die Bewegung des zweiten Controllers B in eine zweite Richtung, beispielsweise nach unten, wie durch den Pfeil B9 dargestellt, kann zu einer Drehung des virtuellen Objekts 200 im Uhrzeigersinn führen. Der Grad der Drehung des virtuellen Objekts 200, basierend auf der erfassten Bewegung des ersten und des zweiten Controllers A, B, kann durch die Implementierung einer Quaternion basierend auf einer vorherigen Vektorachse der Controller A, B und einer aktuellen Vektorachse der Controller A, B bestimmt werden. Durch die Beschränkung der Drehung jeder der Controller A, B, auf die daraus resultierende Achse kann ein Algorithmus angewendet werden, um eine Anpassungs-Quaternion aus der vorherigen Quaternion zur aktuellen Quaternion zu berechnen. Der imaginäre Teil des Protokolls der Anpassungs-Quaternion kann dann erhalten werden, woraus sich die Drehachse für die Anpassung ergibt. Die neue Einstellung kann eingeschränkt werden, indem man das exponentielle Skalarprodukt zwischen der vorherigen Achse und der Anpassungsachse nimmt.
  • Wie bereits erwähnt, kann die Bestimmung der gezielten oder beabsichtigten Drehbewegung des ausgewählten virtuellen Objekts 200 aufgrund der erfassten Bewegung des ersten Controllers A und der erfassten Bewegung des zweiten Controllers B die Umsetzung einer Quaternion beinhalten, basierend auf der vorherigen und aktuellen Achse zwischen den beiden Vektoren, mit der Drehung des virtuellen Objekts basierend auf der Ausrichtung des ersten und des zweiten Controllers A, B, realisiert durch Einschränken der Drehung beider Controller A, B. Die Einschränkung der Drehung beider Controller A, B kann durch die Berechnung einer Anpassungs-Quaternion, die von der vorherigen Quaternion zur aktuellen Quaternion geht, erzielt werden, wonach der imaginäre Teil des Protokolls der Anpassungs-Quaternion erhalten wird, der die Drehachse für die Anpassung definiert. Das System kann dann die neue Einstellung einschränken, indem das exponentielle Skalarprodukt zwischen der spezifizierten Achse und der Anpassungsachse genommen wird.
  • 10A zeigt eine Drittpersonansicht eines Benutzers in einem physischen Raum, der ein HMD 100 trägt und den ersten Controller A in einer Hand und den zweiten Controller B in der anderen Hand hält, und dabei eine virtuelle Umgebung erlebt, die durch das HMD 100 erzeugt wird. In dem in 10A dargestellten Beispiel wird zur Vereinfachung der Diskussion und Illustration ein Beispiel einer virtuellen Szene 400 gezeigt, die vom Benutzer betrachtet werden kann, wenn er die virtuelle Umgebung erlebt, während er das HMD 100 trägt. Der Benutzer kann eines der virtuellen Objekte auswählen, die in der virtuellen Szene 400 zur Interaktion bzw. Manipulation und dergleichen auf zahlreiche verschiedene Arten angezeigt werden. In dem Beispiel in 10B hat sich der Benutzer entschieden, mit einem virtuellen Lenkrad 420 zu interagieren, indem er z. B. virtuellen Kontakt mit dem virtuellen Lenkrad 420 aufgenommen hat, unter Verwendung von beispielsweise eines oder beider Controller A, B, wobei ein virtueller Strahl aus einem oder beiden Controller A, B auf das virtuellen Lenkrad 420 gerichtet wird und dergleichen. Sobald das virtuelle Objekt, in diesem Beispiel das virtuelle Lenkrad 420, vom Benutzer ausgewählt wurde, kann der Benutzer mit dem virtuellen Lenkrad 420 über den ersten Controller A und/oder den zweiten Controller B interagieren, indem er beispielsweise den ersten und/oder den zweiten Controller A, B bewegt oder Geräte auf einem oder beiden der Controller A, B bewegt oder manipuliert und dergleichen.
  • Beispielsweise kann das virtuelle Lenkrad 420, wie in 3 bzw. 9 dargestellt, in Reaktion auf eine Bewegung des ersten Controllers A und des zweiten Controllers B, wie in 10C dargestellt, im Uhrzeigersinn gedreht werden. Ein Grad der Drehung des virtuellen Lenkrads 420 kann, wie zuvor ausführlich in Bezug auf 3 und 9 beschrieben, anhand der erfassten Bewegung des ersten Controllers A, der erfassten Bewegung des zweiten Controllers B und der Auflösung der erfassten Bewegungen des ersten Controllers A und des zweiten Controllers B in einem gemeinsamen Koordinatensystem bestimmt werden. Diese Drehung des virtuellen Lenkrads 420 kann dem Benutzer auf einer Anzeige des von ihm getragenen HMD 100 angezeigt werden.
  • 10A10C zeigen, wie zuvor beschrieben, lediglich ein Beispiel für die Drehung eines virtuellen Objekts 420 in Reaktion auf die Drehbewegung des ersten Controllers A und des zweiten Controllers B. Neben der Übersetzung und Skalierung von virtuellen Objekten können, wie zuvor beschrieben, zahlreiche andere Bewegungen ausgewählter virtueller Objekte in Reaktion auf erfasste Bewegung ausgeführt werden. Insbesondere Drehbewegung mehrerer Controller, wie z. B. des ersten Controllers A und des zweiten Controllers B. Diese Bewegungen beinhalten z. B. Drehung um eine oder mehrere der Achsen X, Y oder Z, allein oder in Kombination, und sind zudem mit Übersetzung und Skalierung kombinierbar. Diese Bewegungen des virtuellen Objekts können in der virtuellen Umgebung in Reaktion auf entsprechende Bewegungen der ersten und/oder zweiten Controllers A, B nacheinander und/oder gleichzeitig erfolgen.
  • Wie zuvor beschrieben, können Position und Ausrichtung des ersten Controllers A und des zweiten Controllers B in einigen Implementierungen dynamisch verfolgt werden, während die Bewegungen des ersten und des zweiten Controllers A, B in dem gemeinsamen Koordinatensystem aufgelöst werden können, sodass Eingaben in der virtuellen Umgebung dynamisch angewendet werden können. Somit können sequentielle Bewegungen und Kombinationen von Bewegungen des ersten und zweiten Controllers A, B im gemeinsamen Koordinatensystem dynamisch aufgelöst werden. Dadurch kann eine im Wesentlichen endlose Sammlung von Bewegungen erkannt, verfolgt und in einem gemeinsamen Koordinatensystem aufgelöst und als Eingaben in der virtuellen Umgebung wiedergegeben werden. Beispielsweise kann dieses System und Verfahren in einer virtuellen Umgebung angewendet werden, in der ein Benutzer zum Beispiel eine Zeichnungsumsetzung oder eine Gemäldeumsetzung für eine Zeichnung, ein Gemälde und dergleichen auswählen kann.
  • Zum Beispiel kann ein Benutzer, wie in 10D dargestellt, mit einem Zeichenprogramm in einer erweiterten bzw. virtuellen Realitätsumgebung den ersten Controller A in einer sequentiellen Kombination von Bewegungen bewegen, darunter auch in zahlreichen sequentiellen Dreh- und translatorischen Bewegungen, wie durch die Strecke 450A dargestellt, um ein virtuelles Muster 460A zu generieren, das dem Benutzer in der durch das HMD 100 erzeugten virtuellen Umgebung angezeigt wird. In ähnlicher Weise kann der Benutzer den zweiten Controller B in einer sequentiellen Kombination von Bewegungen bewegen, darunter auch in zahlreichen sequentiellen Dreh- und translatorischen Bewegungen, wie durch die Strecke 460B dargestellt, um ein virtuelles Muster 460B zu generieren, das dem Benutzer in der durch das HMD 100 erzeugten virtuellen Umgebung angezeigt wird. Im Beispiel aus 10D wurde kein einzelnes virtuelles Objekt speziell für die Interaktion und/oder Manipulation durch den Benutzer über den ersten und zweiten Controller A, B ausgewählt. Daher können in dieser Situation Bewegungen der Controller A, B, wie zuvor beschrieben, verfolgt werden, um den gewünschten virtuellen Effekt anhand der erfassten Bewegung über die jeweiligen individuellen Koordinatensystemen der Controller A, B zu erzeugen.
  • 11A und 11B zeigen perspektivische Ansichten eines exemplarischen HMD, wie z. B. des HMD 100, das von dem Benutzer in 1 und 10A getragen wird. 12 zeigt ein Blockdiagramm eines Systems erweiterter bzw. virtueller Realität, einschließlich eines ersten elektronischen Geräts in Kommunikation mit mehreren unterschiedlichen zweiten elektronischen Geräten 302, zum Beispiel, eines ersten externen Geräts 302A und eines zweiten externen Geräts 302B. Das erste elektronische Gerät 300 kann z. B. ein HMD sein, das eine erweiterte bzw. virtuelle Realitätsumgebung erzeugt, während die zweiten elektronische Geräte 302 in Kommunikation mit dem ersten elektronischen Gerät 300 stehen können und ausgestattet sein können, die zuvor beschriebenen Fähigkeiten zu beinhalten.
  • Wie in 11A und 11B dargestellt, kann das exemplarische HMD ein Gehäuse 110 beinhalten, das an einen Rahmen 120 mit einem Audioausgabegerät 130, einschließlich z. B. Lautsprechern, die in Kopfhörern angebracht werden und mit dem Rahmen 120 verbunden sind, gekoppelt ist. In 11B wird ein Vorderteil 110a des Gehäuses 110 von einem Basisteil 110b des Gehäuses 110 weggedreht, sodass einige der im Gehäuse 110 enthaltenen Komponenten sichtbar sind. Eine Anzeige 140 kann auf einer dem Innenraum zugewandten Seite des vorderen Abschnitts 110a des Gehäuses 110 montiert sein. Objektive 150 können im Gehäuse 110 zwischen den Augen des Benutzers und der Anzeige 140 montiert sein, wenn sich der Vorderteil 110a in der geschlossenen Position gegenüber dem Basisteil 110b des Gehäuses 110 befindet. In einigen Implementierungen kann das HMD 100 ein Sensorsystem 160 mit verschiedenen Sensoren, wie, z. B. Audiosensor(en), Bild-/Licht-Sensor(en), Positionssensoren (z. B. inertiale Messeinheiten, einschließlich Gyroskop und Beschleunigungssensor) und dergleichen, beinhalten. Das HMD 100 kann zudem einen Controller 170 mit einem Prozessor 190 und verschiedene Steuergeräte zur einfacheren Bedienung des HMD 100 beinhalten.
  • In einigen Implementierungen kann das HMD 100 eine Kamera 180 beinhalten, um Standbilder und bewegte Bilder zu erfassen. Die von der Kamera 180 erfassten Bilder können verwendet werden, um eine physische Position des Benutzers bzw. den Controller 102 nachzuverfolgen bzw. können dem Benutzer auf der Anzeige 140 in einem Durchlassmodus angezeigt werden. In einigen Implementierungen kann der HMD 100 ein Blickverfolgungsgerät 165 beinhalten, mit einem oder mehreren Bildsensoren 165A, um die Blickrichtung des Benutzers zu erkennen und nachzuverfolgen. In einigen Implementierungen kann die HMD 100 so konfiguriert werden, dass der erkannte Blick als eine Benutzereingabe verarbeitet wird, die in eine entsprechende Interaktion in der erweiterten bzw. der virtuellen Realitätsumgebung umgesetzt wird.
  • Wie in 12 dargestellt, kann das erste elektronische Gerät 300 ein Sensorsystem 370 und ein Steuersystem 380 beinhalten, die dem jeweils in 10A und 10B dargestellten Sensorsystem 160 und Steuersystem 170 ähnlich sein können. Das Sensorsystem 370 kann eine oder mehrere unterschiedliche Arten von Sensoren beinhalten, darunter beispielsweise einen Lichtsensor, einen Audiosensor, einen Bildsensor, eines Abstands-/Näherungssensor, einen Positionssensor (z. B. eine inertiale Messeinheit (IMU), einschließlich eines Gyroskops und Beschleunigungssensors) und/oder anderer Sensoren und/oder unterschiedlicher Kombination(en) von Sensoren, darunter auch beispielsweise einen Bildsensor, der positioniert ist, um die Blickrichtung eines Benutzers zu erkennen und nachzuverfolgen. Das Steuersystem 380 kann beispielsweise ein Einschalt-/Pausen-Steuergerät, ein Audio- und Video-Steuergerät, ein optisches Steuergerät, ein Übergangssteuergerät und/oder andere derartige Geräte und/oder unterschiedliche Kombination(en) von Geräten beinhalten. Sensorsystem 370 und/oder das Steuersystem 380 können abhängig von einer bestimmten Implementierung weitere oder weniger Geräte beinhalten und eine andere physische Anordnung aufweisen als die gezeigte. Das erste elektronische Gerät 300 kann zudem einen Prozessor 390 in Kommunikation mit dem Sensorsystem 370 und dem Steuersystem 380, einen Speicher 385 und ein Kommunikationsmodul 395 beinhalten, das eine Kommunikation zwischen dem ersten elektronischen Gerät 300 und einem anderen externen Gerät, wie beispielsweise dem zweiten elektronischen Gerät 302, ermöglicht.
  • Die zweiten elektronischen Geräte 302 (302A/302B) können ein Kommunikationsmodul 306 beinhalten, das die Kommunikation zwischen jedem der zweiten elektronischen Geräte 302 und einem anderen Gerät, wie zum Beispiel dem ersten elektronischen Gerät 300, ermöglicht. Die zweiten elektronischen Geräte 302 können jeweils ein Sensorsystem 304 mit einem Bildsensor und einem Audiosensor, wie beispielsweise in einer Kamera und einem Mikrofon, einer IMU, einem Berührungssensor, der in einer berührungsempfindlichen Oberfläche eines Controllers oder eines Smartphones enthalten ist, und andere dieser Sensoren und/oder verschiedener Kombinationen von Sensoren beinhalten. Ein Prozessor 309 kann mit dem Sensorsystem 304 und einer Steuereinheit 305 jedes einzelnen der zweiten elektronischen Geräte 302 in Verbindung stehen, wobei die Steuereinheit 305 Zugriff auf einen Speicher 308 hat und den Gesamtbetrieb jeder der zweiten elektronischen Geräte 302 steuert.
  • Ein Verfahren 900 zum Auflösen der Drehbewegung mehrerer Controller zu einem gemeinsamen Koordinatensystem zur Eingabe in eine erweiterte und/oder virtuelle Realitätsumgebung gemäß den hier beschriebenen Implementierungen wird in 13 dargestellt.
  • Nach der Initiierung eines Erlebnisses in der virtuellen bzw. erweiterten Realität (Block 910), kann eine Controller-Bewegung, beispielsweise eine Bewegung eines oder mehrerer 6DOF-Controller, die in der von dem HMD 100 erzeugten virtuellen Umgebung festgestellt werden, wie zuvor beschrieben, verfolgt werden (Block 920). Wenn in der virtuellen Umgebung mehrere Controller, beispielsweise der erste und der zweite Controller A und B, erkannt werden, kann die festgestellte Bewegung der mehreren Controller dynamisch verfolgt und auf ein einziges, gemeinsames Koordinatensystem, wie zuvor ausführlich in Bezug auf die 210C (Block 940) beschrieben, gelegt werden. Eine entsprechende Eingabe kann dann auf ein ausgewähltes virtuelles Objekt angewendet werden, basierend auf entweder der Bewegung der mehreren Controller, die auf das gemeinsame Koordinatensystem (Block 945) aufgelöst worden ist, oder basierend auf der festgestellten Bewegung eines einzelnen Controllers um sein jeweiliges Koordinatensystem (Block 950). Der Prozess kann fortgesetzt werden, bis das virtuelle Erlebnis (Block 960) beendet ist.
  • 14 zeigt ein Beispiel eines Computergeräts 1000 und eines mobilen Computergeräts 1050, die mit den hier beschriebenen Techniken verwendet werden können. Computergerät 1000 beinhaltet einen Prozessor 1002, einen Speicher 1004, ein Speichergerät 1006, eine Hochgeschwindigkeitsschnittstelle 1008, die sich mit Speicher 1004 und Hochgeschwindigkeitserweiterungsanschlüssen 1010 verbindet, und eine Niedergeschwindigkeitsschnittstelle 1012, die sich mit dem 1014 und Speichergerät 1006 verbindet. Alle Komponenten 1002, 1004, 1006, 1008, 1010 und 1012 sind unter Verwendung verschiedener Busse miteinander verbunden und können auf einer gängigen Hauptplatine oder gegebenenfalls in anderer Weise montiert sein. Der Prozessor 1002 kann Befehle zur Ausführung innerhalb des Computergerätes 1000 verarbeiten, darunter auch Befehle, die in dem Speicher 1004 oder auf dem Speichergerät 1006 gespeichert sind, um grafische Informationen für eine GUI auf einem externen Eingabe-/Ausgabegerät, wie z. B. auf Anzeige 1016, die mit Hochgeschwindigkeitsschnittstelle 1008 verbunden ist, anzuzeigen. In anderen Implementierungen können gegebenenfalls mehrere Prozessoren und/oder mehrere Busse zusammen mit mehreren Speichern und Speicherarten verwendet werden. Außerdem können mehrere Computergeräte 1000 verbunden sein, wobei jedes Gerät Teile der erforderlichen Operationen (z. B. als Serverbank, Gruppe von Blade-Servern oder Multiprozessorsystem) bereitstellt.
  • Der Speicher 1004 speichert Informationen in Computergerät 1000. In einer Implementierung handelt es sich bei dem Speicher 1004 um eine nicht flüchtige Speichereinheit oder -einheiten. In einer anderen Implementierung handelt es sich bei dem Speicher 1004 um eine nicht flüchtige Speichereinheit oder -einheiten. Der Speicher 1004 kann zudem in einer anderen Form von computerlesbarem Medium, zum Beispiel als magnetischer oder optischer Datenträger, vorliegen.
  • Das Speichergerät 1006 kann einen Massenspeicher für das Computergerät 1000 bereitstellen. In einer Implementierung kann das Speichergerät 1006 ein computerlesbares Medium, wie z. B. ein Diskettenlaufwerk, ein Festplattenlaufwerk, ein optisches Laufwerk, ein Magnetbandlaufwerk, ein Flash-Speicher oder ein anderes ähnliches Festkörper-Speichergerät oder eine Reihe von Geräten, einschließlich Geräten in einem Speichernetzwerk oder anderen Konfigurationen, sein oder beinhalten. Ein Computerprogrammprodukt kann physisch in einem Informationsträger enthalten sein. Das Computerprogrammprodukt kann zudem Befehle enthalten, die bei Ausführung ein oder mehrere Verfahren wie diejenigen, die vorstehend beschrieben wurden, ausführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie z. B. der Speicher 1004, das Speichergerät 1006 oder ein Speicher auf einem Prozessor 1002.
  • Der Hochgeschwindigkeitscontroller 1008 verwaltet bandbreitenintensive Operationen für das Computergerät 1000, während der Niedergeschwindigkeitscontroller 1012 weniger bandbreitenintensive Operationen verwaltet. Diese Zuordnung von Funktionen ist lediglich exemplarisch. In einer Implementierung ist der Hochgeschwindigkeitscontroller 1008 mit dem Speicher 1004, der Anzeige 1016 (z. B. durch einen Grafikprozessor oder -beschleuniger) und den Hochgeschwindigkeitserweiterungsanschlüssen 1010 gekoppelt, die verschiedene Erweiterungskarten aufnehmen können (nicht dargestellt). In der Implementierung ist der Niedergeschwindigkeitscontroller 1012 mit dem Speichergerät 1006 und dem Niedergeschwindigkeitserweiterungsanschluss 1014 gekoppelt. Der Niedergeschwindigkeitserweiterungsanschluss, der ggf. verschiedene Kommunikationsanschlüsse (z. B. USB, Bluetooth, Ethernet, Funkethernet) beinhaltet, kann, z. B. durch einen Netzwerkadapter, an ein oder mehrere Eingabe-/Ausgabegeräte, wie z. B. eine Tastatur, ein Zeigegerät, einen Scanner oder ein Netzwerkgerät wie einen Switch oder Router, gekoppelt sein.
  • Das Computergerät 1000 kann, wie in der Figur ersichtlich, in einer Reihe verschiedener Formen implementiert sein. Es kann zum Beispiel als Standardserver 1020 oder mehrmals in einer Gruppe derartiger Server implementiert sein. Es kann zudem als Bestandteil eines Rack-Serversystems 1024 implementiert sein. Darüber hinaus kann es in einem PC, wie z. B. in einem Laptopcomputer 1022, implementiert sein. Alternativ dazu können Komponenten von Computergerät 1000 mit anderen Komponenten in einem Mobilgerät (nicht dargestellt), wie z. B. Gerät 1050, kombiniert sein. Jedes dieser Geräte kann eine oder mehrere der Computergeräte 1000, 1050 enthalten, wobei sich ein gesamtes System aus mehreren Computergeräten 1000, 1050 zusammensetzen kann, die miteinander kommunizieren.
  • Das Computergerät 1050 beinhaltet neben anderen Komponenten einen Prozessor 1052, einen Speicher 1064, ein Eingabe-/Ausgabegerät, wie z. B. eine Anzeige 1054, eine Kommunikationsschnittstelle 1066 und einen Sendeempfänger 1068. Das Gerät 1050 kann darüber hinaus mit einem Speichergerät, wie z. B. einem Microdrive oder einem anderen Gerät ausgestattet sein, um zusätzlichen Speicher bereitzustellen. Alle Komponenten 1050, 1052, 1064, 1054, 1066 und 1068 sind unter Verwendung verschiedener Busse miteinander verbunden, wobei mehrere der Komponenten auf einer gängigen Hauptplatine oder gegebenenfalls in anderer Weise montiert sein können.
  • Der Prozessor 1052 kann Befehle in dem Computergerät 1050, darunter auch die im Speicher 1064 gespeicherten Befehle, ausführen. Der Prozessor kann als ein Chipsatz von Chips implementiert sein, die separate und mehrere analoge und digitale Prozessoren beinhalten. Der Prozessor kann beispielsweise für eine Koordinierung der anderen Komponenten des Geräts 1050, wie beispielsweise für eine Steuerung von Benutzeroberflächen, Anwendungen, die von Gerät 1050 ausgeführt werden, sowie eine drahtlosen Kommunikation durch Gerät 1050 sorgen.
  • Der Prozessor 1052 kann mit einem Benutzer über die Steueroberfläche 1058 und die mit einer Anzeige 1054 gekoppelte Anzeigeoberfläche 1056 kommunizieren. Die Anzeige 1054 kann zum Beispiel eine TFT-LCD-(Dünnfilmtransistor-Flüssigkristallanzeige) oder eine OLED-(organische Leuchtdioden)-Anzeige oder eine andere geeignete Anzeigetechnologie sein. Die Anzeigeoberfläche 1056 kann eine geeignete Schaltung umfassen, die die Anzeige 1054 dazu bringt, einem Benutzer grafische und andere Informationen zu präsentieren. Die Steueroberfläche 1058 kann Befehle von einem Benutzer empfangen und sie für das Senden an Prozessor 1052 umwandeln. Darüber hinaus kann eine externe Schnittstelle 1062 die Kommunikation mit dem Prozessor 1052 bereitstellen, zum Beispiel, um eine Nahbereichskommunikation des Geräts 1050 mit anderen Geräten zu ermöglichen. Die externe Schnittstelle 1062 kann in manchen Implementierungen beispielsweise eine drahtgebundene Verbindung oder in anderen Implementierungen eine drahtlose Verbindung sein, wobei auch mehrere Schnittstellen verwendet werden können.
  • Der Speicher 1064 speichert Informationen in Computergerät 1050. Der Speicher 1064 kann als ein oder mehrere computerlesbare Medien, flüchtige Speichergeräte oder nicht flüchtige Speichergeräte implementiert sein. Erweiterungsspeicher 1074 kann ebenfalls bereitgestellt und mit dem Gerät 1050 über die Erweiterungsschnittstelle 1072 verbunden sein, die zum Beispiel eine SIMM(Speichermodul mit einer Kontaktreihe)-Kartenschnittstelle beinhalten kann. Dieser Erweiterungsspeicher 1074 kann zusätzlichen Speicherplatz für Gerät 1050 bereitstellen oder auch Anwendungen oder andere Informationen für Gerät 1050 speichern. Insbesondere kann der Erweiterungsspeicher 1074 Befehle zum Ausführen oder Ergänzen der zuvor beschriebenen Prozesse, sowie sichere Informationen beinhalten. Somit kann Erweiterungsspeicher 1074 zum Beispiel als Sicherheitsmodul für Gerät 1050 bereitgestellt werden, und mit Befehlen programmiert sein, die die sichere Verwendung von Gerät 1050 gewährleisten. Zusätzlich dazu können über die SIMM-Karten sichere Anwendungen zusammen mit zusätzlichen Informationen wie dem Ablegen von Identifizierungsinformationen auf der SIMM-Karte auf eine Weise, die nicht gehackt werden kann, bereitgestellt werden.
  • Der Speicher kann, wie nachfolgend beschrieben, zum Beispiel Flashspeicher und/oder NVRAM-Speicher beinhalten. In einer Implementierung ist ein Computerprogrammprodukt in einem Informationsträger physisch enthalten. Das Computerprogrammprodukt enthält Befehle, die bei Ausführung ein oder mehrere Verfahren wie die vorstehend beschriebenen durchführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie z. B. der Speicher 1064, die Speichererweiterung 1074 oder der Speicher auf Prozessor 1052, der beispielsweise über den Sendeempfänger 1068 oder die externe Schnittstelle 1062 empfangen werden kann.
  • Das Gerät 1050 kann über Kommunikationsschnittstelle 1066 drahtlos kommunizieren, die bei Bedarf eine digitale Signalverarbeitungsschaltung beinhalten kann. Die Kommunikationsschnittstelle 1066 kann Kommunikationen mit verschiedenen Kommunikationstypen oder -protokollen bereitstellen, wie z. B. unter anderem GSM-Sprachanrufe, SMS, EMS oder MMS-Messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000 oder GPRS. Diese Kommunikation kann beispielsweise durch Funkfrequenz-Sendeempfänger 1068 stattfinden. Zudem kann eine Kurzstreckenkommunikation, z. B. unter Verwendung eines Bluetooth-, WLAN- oder eines anderen dieser Sendeempfänger (nicht dargestellt) stattfinden. Außerdem kann das GPS(Globale Positionsbestimmungssystem)-Empfängermodul 1070 zusätzliche navigations- und positionsbezogene drahtlose Daten für Gerät 1050 bereitstellen, die gegebenenfalls von Anwendungen verwendet werden können, die auf Gerät 1050 ausgeführt werden.
  • Das Gerät 1050 kann darüber hinaus unter Verwendung des Audiocodec 1060, welcher gesprochene Informationen von einem Benutzer empfangen und diese in nutzbare digitale Informationen konvertieren kann, hörbar kommunizieren. Der Audiocodec 1060 kann zudem hörbaren Ton für einen Benutzer, wie beispielsweise durch einen Lautsprecher, z. B. in einem Mobilteil von Gerät 1050, erzeugen. Diese Töne können Töne von Sprachtelefonanrufen beinhalten, sie können aufgezeichnete Töne (z. B. Sprachnachrichten, Musikdateien usw.), sowie Töne beinhalten, die von auf Gerät 1050 betriebenen Anwendungen erstellt wurden.
  • Das Computergerät 1050 kann, wie in der Figur dargestellt, in einer Reihe verschiedener Formen implementiert sein. Beispielsweise kann es als Mobiltelefon 1080 implementiert sein. Es kann außerdem als Teil eines Smartphones 1082, eines persönlichen digitalen Assistenten oder eines anderen ähnlichen Mobilgeräts implementiert sein.
  • Verschiedene Implementierungen der hier beschriebenen Systeme und Techniken können in digitalen elektronischen Schaltungen, integrierten Schaltungen, speziell konzipierten ASICs (anwendungsorientierten integrierten Schaltungen), Computerhardware, Firmware, Software und/oder Kombinationen derselben realisiert sein. Diese verschiedenen Implementierungen können eine Implementierung in einem oder mehreren Computerprogrammen beinhalten, die auf einem programmierbaren System ausführbar und/oder interpretierbar sind, das mindestens einen programmierbaren Prozessor beinhaltet, bei dem es sich um einen Spezial- oder Universalprozessor handeln kann und der zum Empfangen von Daten und Anweisungen von und zum Übertragen von Daten und Befehlen an ein Speichersystem, mindestens ein Eingabegerät und mindestens ein Ausgabegerät gekoppelt ist.
  • Diese Computerprogramme (auch bekannt als Programme, Software, Softwareanwendungen oder Code) beinhalten Maschinenbefehle für einen programmierbaren Prozessor und können in einer höheren prozeduralen und/oder objektorientierten Programmiersprache und/oder in Assembler-/Maschinensprache implementiert sein. Wie hierin verwendet, bezeichnen die Begriffe „maschinenlesbares Medium“, „computerlesbares Medium“ ein beliebiges Computerprogrammprodukt, eine beliebige Vorrichtung und/oder ein beliebiges Gerät (z. B. Magnetplatten, optische Platten, Speicher, programmierbare Logikbausteine (PLDs)), die verwendet werden, um einem programmierbaren Prozessor Maschinenbefehle und/oder Daten bereitzustellen, einschließlich eines maschinenlesbaren Mediums, das Maschinenbefehle als maschinenlesbares Signal empfängt. Der Begriff „maschinenlesbares Signal“ bezeichnet ein beliebiges Signal, das verwendet wird, um einem programmierbaren Prozessor Maschinenbefehle und/oder Daten bereitzustellen.
  • Um eine Interaktion mit einem Benutzer zu ermöglichen, können die hier beschriebenen Systeme und Techniken auf einem Computer implementiert werden, der ein Anzeigegerät (wie z. B. einen CRT-(Kathodenstrahlröhren) oder LCD-(Flüssigkristallanzeige)-Monitor), um dem Benutzer Informationen anzuzeigen, sowie eine Tastatur und ein Zeigegerät (z. B. eine Maus oder einen Trackball) aufweist, mittels denen der Benutzer eine Eingabe an dem Computer vornehmen kann. Es können zudem andere Arten von Geräten verwendet werden, um eine Interaktion mit einem Benutzer zu ermöglichen; beispielsweise kann eine an den Benutzer bereitgestellte Rückmeldung eine beliebige Form von sensorischer Rückmeldung (wie z. B. eine visuelle Rückmeldung, akustische Rückmeldung oder taktile Rückmeldung) sein; während die Eingabe vom Benutzer in beliebiger Form, darunter auch als akustische, taktile oder Spracheingabe, empfangen werden kann.
  • Die hier beschriebenen Systeme und Techniken können in einem Computersystem implementiert werden, das eine Backendkomponente (z. B. als Datenserver) beinhaltet, oder das eine Middlewarekomponente (z. B. einen Applikationsserver) beinhaltet, oder das eine Frontendkomponente (z. B. einen Clientcomputer mit einer grafischen Benutzeroberfläche oder einen Webbrowser beinhaltet, durch die bzw. den ein Benutzer mit den hier beschriebenen Systemimplementationen und Techniken interagieren kann) oder eine Kombination der besagten Backend-, Middleware- oder Frontendkomponenten beinhaltet. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation (wie z. B. ein Kommunikationsnetzwerk) miteinander verbunden sein. Beispiele von Kommunikationsnetzwerken beinhalten ein lokales Netzwerk („LAN“), ein Großraumnetzwerk („WAN“) und das Internet.
  • Das Computersystem kann Clients und Server beinhalten. Ein Client und ein Server befinden sich im Allgemeinen entfernt voneinander und interagieren typischerweise über ein Kommunikationsnetzwerk. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern ausgeführt werden und die eine Client-Server-Beziehung zueinander aufweisen.
  • In einigen Implementierungen kann das in 10 dargestellte Computergerät Sensoren beinhalten, die eine Schnittstelle zu einer virtuellen Realität (VR-Headset/HMD-Gerät 1090) aufweisen. Beispielsweise können ein oder mehrere Sensoren, die in einem Computergerät 1050 oder einem anderen in 10 dargestellten Computergerät enthalten sind, Eingaben in das VR-Headset 1090 oder im Allgemeinen Eingaben in einen VR-Raum bereitstellen. Die Sensoren können unter anderem einen Berührungsbildschirm, Beschleunigungssensor, Gyroskope, Drucksensoren, biometrische Sensoren, Temperatursensoren, Feuchtigkeitssensoren und Lichtsensoren beinhalten. Das Computergerät 1050 kann die Sensoren verwenden, um eine absolute Position und/oder eine festgestellte Drehung des Computergeräts im VR-Raum zu bestimmen, die dann als Eingabe in den VR-Raum verwendet werden kann. Beispielsweise kann das Computergerät 1050 als virtuelles Objekt, wie z. B. als Controller, Laserpointer, Tastatur, Waffe usw., in den VR-Raum integriert sein. Die Positionierung des Computergeräts bzw. virtuellen Objekts durch den Benutzer, wenn es in den VR-Raum integriert ist, kann es dem Benutzer ermöglichen, das Computergerät so zu positionieren, dass dieser das virtuelle Objekt auf bestimmte Weise im VR-Raum betrachten kann. Falls das virtuelle Objekt beispielsweise einen Laserpointer darstellt, kann der Benutzer das Computergerät so manipulieren, als ob es ein aktueller Laserpointer wäre. Der Benutzer kann das Computergerät nach links und rechts, nach oben und unten, in einem Kreis usw. verschieben und das Gerät in ähnlicher Weise wie einen Laserpointer verwenden.
  • In einigen Implementierungen können ein oder mehrere Eingabegeräte, die an dem Computergerät 1050 enthalten sind oder mit diesem verbunden sind, als Eingabe in den VR-Raum verwendet werden. Die Eingabegeräte können unter anderem einen Berührungsbildschirm, eine Tastatur, eine oder mehrere Tasten, ein Trackpad, ein Berührungsfeld (Touchpad), ein Zeigegerät, eine Maus, eine Steuerkugel (Trackball), einen Steuerhebel (Joystick), eine Kamera, ein Mikrofon, Kopfhörer oder Ohrhörer mit Eingabefunktion, einen Spielecontroller oder ein anderes anschließbares Eingabegerät beinhalten. Ein Benutzer, der mit einem Eingabegerät interagiert, das am Computergerät 1050 enthalten ist, wenn das Computergerät in den VR-Raum eingebunden ist, kann bewirken, dass eine bestimmte Aktion im VR-Raum erfolgt.
  • In einigen Implementierungen kann ein Berührungsbildschirm des Computergeräts 1050 als Berührungsfeld im VR-Raum dargestellt werden. Ein Benutzer kann mit dem Berührungsbildschirm des Computergerätes 1050 interagieren. Die Interaktionen werden beispielsweise im VR-Headset 1090 als Bewegungen auf dem gerenderten Berührungsfeld im VR-Raum dargestellt. Die gerenderten Bewegungen können Objekte im VR-Raum steuern.
  • In einigen Implementierungen können ein oder mehrere Ausgabegeräte, die auf dem Computergerät 1050 enthalten sind, einem Benutzer des VR-Headsets 1090 Ausgaben und/oder Rückmeldungen im VR-Raum bereitstellen. Die Ausgaben und Rückmeldungen können visuell, taktil oder akustisch erfolgen. Die Ausgaben und/oder Rückmeldungen können unter anderem Vibrationen beinhalten, eine oder mehrere Leuchtdioden oder Datenbestätigungssignale ein- und ausschalten oder blinken bzw. aufleuchten lassen, einen Alarm ertönen lassen, einen Klang wiedergeben, ein Lied wiedergeben und eine Audiodatei wiedergeben. Die Ausgabegeräte können Vibrationsmotoren, Vibrationsspulen, piezoelektrische Vorrichtungen, elektrostatische Vorrichtungen, Leuchtdioden (LEDs), Tastimpulse und Lautsprecher beinhalten, sind jedoch nicht auf diese beschränkt.
  • In einigen Implementierungen kann das Computergerät 1050 als ein anderes Objekt in einer computergenerierten 3D-Umgebung erscheinen. Interaktionen durch den Benutzer mit dem Computergerät 1050 (z. B. Drehen, Schütteln, Berühren eines Berührungsbildschirms, Wischen eines Fingers über einen Berührungsbildschirm) können als Interaktionen mit dem Objekt im VR-Raum interpretiert werden. Im Beispiel des Laserpointers in einem VR-Raum erscheint das Computergerät 1050 als virtueller Laserpointer in der computergenerierten 3D-Umgebung. Wenn der Benutzer das Computergerät 1050 manipuliert, sieht der Benutzer im VR-Raum die Bewegung des Laserpointers. Der Benutzer empfängt Rückmeldungen von Interaktionen mit dem Computergerät 1050 in der VR-Umgebung auf dem Computergerät 1050 oder auf dem HMD-Gerät 1090.
  • In einigen Implementierungen kann Computergerät 1050 einen Berührungsbildschirm beinhalten. Ein Benutzer kann zum Beispiel mit dem Berührungsbildschirm auf eine bestimmte Weise interagieren, wobei das, was auf dem Bildschirm passiert, das nachbilden kann, was in der VR-Umgebung passiert. Ein Benutzer kann zum Beispiel eine Zoom-Bewegung verwenden, um Inhalte, die auf dem Berührungsbildschirm angezeigt werden, zu vergrößern. Diese Zoom-Bewegung auf dem Berührungsbildschirm kann bewirken, dass Informationen, die in der VR-Umgebung bereitgestellt werden, vergrößert werden. In einem weiteren Beispiel kann das Computergerät als virtuelles Buch in einer computergenerierten 3D-Umgebung wiedergegeben werden. In der VR-Umgebung können die Seiten des Buches in der VR-Umgebung angezeigt werden und das Wischen eines Fingers des Benutzers über den Berührungsbildschirm kann als Wenden (Umblättern) einer Seite des virtuellen Buches interpretiert werden. Wenn die jeweilige Seite gewendet (umgeblättert) wird, sieht der Benutzer nicht nur, dass sich der Seiteninhalt ändert, ihm kann auch eine Audiorückmeldung, wie zum Beispiel der Klang des Umblätterns einer Seite in einem Buch, bereitgestellt werden.
  • In einigen Implementierungen können zusätzlich zu dem Computergerät ein oder mehrere Eingabegeräte (z. B. eine Maus, eine Tastatur) in einer computergenerierten 3D-Umgebung wiedergegeben werden. Die gerenderten Eingabegeräte (z. B. die gerenderte Maus, die gerenderte Tastatur) können verwendet werden, um sie im VR-Raum wiederzugeben, um Objekte im VR-Raum zu steuern.
  • Das Computergerät 1000 soll verschiedene Formen von digitalen Computern und Geräten, wie beispielsweise Laptops, Desktops, Workstations, persönliche digitale Assistenten, Server, Blade-Server, Mainframes und andere geeignete Computer, darstellen, ohne darauf beschränkt zu sein. Das Computergerät 1050 soll verschiedene Formen von Mobilgeräten, wie z. B. persönliche digitale Assistenten, Mobiltelefone, Smartphones und andere ähnliche Computergeräte, darstellen. Die hier gezeigten Komponenten, deren Verbindungen und Beziehungen und Funktionen sollen nur exemplarisch sein und Implementierungen der in diesem Dokument beschriebenen und/oder beanspruchten Erfindungen in keiner Weise einschränken.
  • Eine Anzahl von Ausführungsformen wurde beschrieben. Trotzdem versteht es sich, dass verschiedene Modifikationen durchgeführt werden können, ohne vom Sinn und Umfang der Patentschrift abzuweichen.
  • Außerdem erfordern die in den Figuren dargestellten logischen Abläufe nicht die bestimmte dargestellte Reihenfolge oder sequenzielle Reihenfolge, um wünschenswerte Ergebnisse zu erzielen. Darüber hinaus können andere Schritte vorgesehen oder Schritte aus den beschriebenen Abläufen eliminiert werden und andere Komponenten zu den beschriebenen Systemen hinzugefügt oder aus denselben entfernt werden. Dementsprechend befinden sich andere Ausführungsformen innerhalb des Umfangs der folgenden Ansprüche.
  • Während bestimmte charakteristische Merkmale der beschriebenen Implementierungen, wie hierin beschrieben, veranschaulicht wurden, werden Fachleuten auf dem Gebiet nunmehr zahlreiche Modifikationen, Substitutionen, Änderungen und Äquivalente ersichtlich werden. Es ist daher selbstverständlich, dass die beigefügten Ansprüche alle der besagten Modifikationen und Änderungen einbeziehen sollen, die unter den Schutzumfang der Erfindung fallen. Es sollte selbstverständlich sein, dass diese nur exemplarisch und nicht als Begrenzung präsentiert wurden und verschiedene Änderungen der Form und der Details vorgenommen werden können. Jeder Abschnitt der hierin beschriebenen Vorrichtung und/oder der Verfahren kann in jeder beliebigen Kombination, außer in sich gegenseitig ausschließenden Kombinationen, kombiniert werden. Die hierin beschriebenen Implementierungen können verschiedene Kombinationen und/oder Teilkombinationen der Funktionen, Komponenten und/oder Merkmale der unterschiedlichen beschriebenen Implementierungen beinhalten.

Claims (17)

  1. Computerprogrammprodukt, das in einem nicht flüchtigen, computerlesbaren Medium enthalten ist, wobei auf dem computerlesbaren Medium eine Sequenz von Anweisungen gespeichert ist, die, wenn sie von einem Prozessor ausgeführt wird, den Prozessor veranlasst, ein Verfahren auszuführen, das Verfahren umfassend: Erzeugen einer dreidimensionalen (3D) virtuellen Umgebung; Verfolgen einer Sechs-Grad-Freiheits-(6DOF)-Position und Ausrichtung eines ersten Controllers in einer physischen Umgebung; Verfolgen einer 6DOF-Position und Ausrichtung eines zweiten Controllers in der physischen Umgebung; Erkennen einer Auswahl eines virtuellen Objekts, das in der virtuellen Umgebung angezeigt wird; Erkennen einer Eingabe für das ausgewählte virtuelle Objekt anhand einer erfassten Bewegung des ersten Controllers in der physischen Umgebung in Bezug auf ein erstes Koordinatensystem und einer erfassten Bewegung des zweiten Controllers in der physischen Umgebung in Bezug auf ein zweites Koordinatensystem; Auflösen der erfassten Bewegung des ersten Controllers in Bezug auf das erste Koordinatensystem und der erfassten Bewegung des zweiten Controllers in Bezug auf das zweite Koordinatensystem auf eine Befehlsbewegung in Bezug auf ein gemeinsames Koordinatensystem; und Manipulieren des ausgewählten virtuellen Objekts in Reaktion auf die Befehlsbewegung.
  2. Computerprogrammprodukt nach Anspruch 1, wobei die Auflösung der erfassten Bewegung des ersten Controllers und der erfassten Bewegung des zweiten Controllers auf die Befehlsbewegung in Bezug auf das gemeinsame Koordinatensystem beinhaltet: Definition einer ersten Achse des gemeinsamen Koordinatensystems, wobei die erste Achse von einem zentralen Teil des ersten Controllers zu einem zentralen Teil des zweiten Controllers verläuft; Definition einer zweiten Achse des gemeinsamen Koordinatensystems, beinhaltend: Bestimmen, welche einer X-, Y- oder Z-Achse des ersten Koordinatensystems am orthogonalsten zur ersten Achse verläuft; und Einstellen der orthogonalsten der X-, Y- oder Z-Achse als zweite Achse des gemeinsamen Koordinatensystems; und Definieren einer dritten Achse des gemeinsamen Koordinatensystems, wobei die dritte Achse die Schnittmenge der ersten und der zweiten Achse ist.
  3. Computerprogrammprodukt von Anspruch 2, wobei die Definition der zweiten Achse des allgemeinen Koordinatensystems beinhaltet: Bestimmen, welche der X-, Y- oder Z-Achse des ersten Koordinatensystems am orthogonalsten zur ersten Achse verläuft; und Einstellen der orthogonalsten der X-, Y- oder Z-Achse als zweite Achse des gemeinsamen Koordinatensystems.
  4. Computerprogrammprodukt nach Anspruch 3, wobei die Definition der ersten Achse die dynamische Neudefinition der ersten Achse bei sequentiellen Zeitpunkten beinhaltet, während sich der erste und der zweite Controller in der physischen Umgebung und entsprechend in Bezug auf die virtuelle Umgebung bewegen.
  5. Computerprogrammprodukt nach Anspruch 4, wobei die Definition der zweiten Achse die dynamische Neudefinition der zweiten Achse bei sequentiellen Zeitpunkten beinhaltet, während sich der erste und der zweite Controller in der physischen Umgebung und entsprechend in Bezug auf die virtuelle Umgebung und während der dynamischen Neudefinition der ersten Achse bewegen.
  6. Computerprogrammprodukt nach Anspruch 5, wobei die Definition der dritten Achse die dynamische Neudefinition der dritten Achse bei sequentiellen Zeitpunkten beinhaltet, während sich der erste und der zweite Controller in der physischen Umgebung und entsprechend in Bezug auf die virtuelle Umgebung und während der dynamischen Neudefinition der zweiten Achse bewegen.
  7. Computerprogrammprodukt nach Anspruch 2, wobei die Erfassung einer Eingabe für das ausgewählte virtuelle Objekt auf der Grundlage der erfassten Bewegung des ersten Controllers in Bezug auf das erste Koordinatensystem und der erfassten Bewegung des zweiten Controllers in Bezug auf das zweite Koordinatensystem mindestens eines der Folgenden beinhaltet: Erfassen einer Drehbewegung des ersten Controllers über mindestens eine der X-, Y- oder Z-Achse des ersten Koordinatensystems; oder Erkennen einer Drehbewegung des zweiten Controllers über mindestens eine X-Achse, eine Y-Achse oder eine Z-Achse des zweiten Koordinatensystems.
  8. Computerprogrammprodukt nach Anspruch 7, wobei die Auflösung der erfassten Bewegung des ersten Controllers in Bezug auf das erste Koordinatensystems und der erfassten Bewegung des zweiten Controllers in Bezug auf das zweite Koordinatensystems zu der Befehlsbewegung in Bezug auf das gemeinsame Koordinatensystem beinhaltet: Bestimmen eines Drehbewegungsbefehls in Bezug auf das gemeinsame Koordinatensystem basierend auf mindestens einer der erfassten Drehbewegungen des ersten Controllers oder der erfassten Bewegung des zweiten Controllers; und Anwenden des Drehbewegungsbefehls zur Manipulation des vorgewählten virtuellen Objekts.
  9. Computerprogrammprodukt nach Anspruch 2, wobei die Erfassung einer Eingabe für das ausgewählte virtuelle Objekt auf der Grundlage der erfassten Bewegung des ersten Controllers in Bezug auf das erste Koordinatensystem und der erfassten Bewegung des zweiten Controllers in Bezug auf das zweite Koordinatensystem mindestens eines der Folgenden beinhaltet: Ermitteln einer Bewegung des ersten Controllers in Bezug auf mindestens eine der X-, Y- oder Z-Achse des ersten Koordinatensystems und in Bezug auf eine Position des zweiten Controllers; oder Ermitteln einer Bewegung des zweiten Controllers in Bezug auf mindestens eine der X-, Y- oder Z-Achse des zweiten Koordinatensystems und in Bezug auf eine Position des ersten Controllers.
  10. Das Computerprogrammprodukt nach Anspruch 9, wobei die Auflösung der erfassten Bewegung des ersten Controllers in Bezug auf das erste Koordinatensystems und der erfassten Bewegung des zweiten Controllers in Bezug auf das zweite Koordinatensystems auf die Befehlsbewegung in Bezug auf das gemeinsame Koordinatensystem beinhaltet: Bestimmen einer ausgewählten Bewegungsrichtung und eines ausgewählten Bewegungsgrads in Bezug auf das gemeinsame Koordinatensystem basierend auf mindestens einer der erfassten Drehbewegungen des ersten Controllers oder der erfassten Bewegung des zweiten Controllers; und Anwenden des ausgewählten Bewegungsgrads in der vorgewählten Bewegungsrichtung zur Manipulation des vorgewählten virtuellen Objekts.
  11. Computerprogrammprodukt nach Anspruch 1, wobei die Erzeugung der virtuellen 3D-Umgebung beinhaltet, dass die virtuelle Umgebung auf dem Anzeige eines am Kopf befestigten Anzeigegeräts (HMD) angezeigt wird, es sich bei dem ersten und dem zweiten Controller um mit der Hand gehaltene Controller handelt, sodass physische Bewegungen des ersten und zweiten Controllers in der physischen Umgebung Benutzerbefehlen entsprechen, die hinsichtlich eines ausgewählten virtuellen Objekts in der virtuellen Umgebung auszuführen sind.
  12. Computerprogrammprodukt, das in einem nicht flüchtigen, computerlesbaren Medium enthalten ist, wobei auf dem computerlesbaren Medium eine Sequenz von Anweisungen gespeichert ist, die, wenn sie von einen Prozessor ausgeführt werden, den Prozessor veranlassen, ein Verfahren auszuführen, das Verfahren umfassend: Erkennen einer Auswahl eines virtuellen Objekts, das in einer virtuellen Umgebung angezeigt wird; Erkennen einer gezielten Eingabe für das ausgewählte virtuelle Objekt, das in der virtuellen Umgebung angezeigt wird, in Reaktion auf eine erkannte Bewegung des ersten Controllers in Bezug auf ein erstes Koordinatensystem und einer erfassten Bewegung eines zweiten Controllers in Bezug auf ein zweites Koordinatensystem, wobei der erste Controller und der zweite Controller in einer physischen Umgebung betrieben werden; Auflösen der erfassten Bewegung des ersten Controllers und der erfassten Bewegung des zweiten Controllers auf eine Befehlsbewegung in Bezug auf ein gemeinsames Koordinatensystem; und Drehen des ausgewählten virtuellen Objekts in der virtuellen Umgebung in Reaktion auf die Befehlsbewegung.
  13. Das Computerprogrammprodukt nach Anspruch 12, wobei die Auflösung der erfassten Bewegung des ersten Controllers und der erfassten Bewegung des zweiten Controllers auf die Befehlsbewegung in Bezug auf das gemeinsame Koordinatensystem beinhaltet: Definieren einer ersten Achse des gemeinsamen Koordinatensystems, wobei die erste Achse von einem zentralen Teil des ersten Controllers zu einem zentralen Teil des zweiten Controllers verläuft; Definieren einer zweiten Achse des gemeinsamen Koordinatensystems, beinhaltend: Bestimmen, welche einer X-, Y- oder Z-Achse des ersten Koordinatensystems am orthogonalsten zur ersten Achse verläuft; und Einstellen der orthogonalsten der X-, Y- oder Z-Achse des ersten Koordinatensystems als zweite Achse des gemeinsamen Koordinatensystems; und Definieren einer dritten Achse des gemeinsamen Koordinatensystems, wobei die dritte Achse die Schnittmenge der ersten und der zweiten Achse ist.
  14. Computerprogrammprodukt nach Anspruch 13, wobei Definieren der ersten Achse die dynamische Neudefinition der ersten Achse bei sequentiellen Zeitpunkten beinhaltet, während sich der erste und der zweite Controller in der physischen Umgebung und entsprechend in Bezug auf die virtuelle Umgebung bewegen, Definieren der ersten Achse die dynamische Neudefinition der zweiten Achse bei sequentiellen Zeitpunkten beinhaltet, während sich der erste und der zweite Controller in der physischen Umgebung und entsprechend in Bezug auf die virtuelle Umgebung bewegen, während die erste Achse dynamisch neu definiert wird, und Definieren der dritten Achse die dynamische Neudefinition der dritten Achse bei sequentiellen Zeitpunkten beinhaltet, während sich der erste und der zweite Controller in der physischen Umgebung und entsprechend in Bezug auf die virtuelle Umgebung und während der dynamischen Neudefinition der zweiten Achse bewegen.
  15. Computerprogrammprodukt nach Anspruch 13, wobei die Erfassung einer Eingabe für das ausgewählte virtuelle Objekt in Reaktion der erfassten Bewegung des ersten Controllers und der erfassten Bewegung des zweiten Controllers mindestens eines der Folgenden beinhaltet: Erfassen einer Drehbewegung des ersten Controllers über mindestens eine der X-, Y- oder Z-Achse des ersten Koordinatensystems; oder Erkennen einer Drehbewegung des zweiten Controllers über mindestens eine X-Achse, eine Y-Achse oder eine Z-Achse des zweiten Koordinatensystems.
  16. Computerprogrammprodukt nach Anspruch 15, wobei die Auflösung der erfassten Bewegung des ersten Controllers in Bezug auf das erste Koordinatensystems und der erfassten Bewegung des zweiten Controllers in Bezug auf das zweite Koordinatensystems auf die Befehlsbewegung in Bezug auf das gemeinsame Koordinatensystem beinhaltet: Bestimmen eines Drehbewegungsbefehls in Bezug auf das gemeinsame Koordinatensystem basierend auf mindestens einer der erfassten Drehbewegungen des ersten Controllers oder der erfassten Bewegung des zweiten Controllers; und Anwenden des Drehbewegungsbefehls zur Manipulation des vorgewählten virtuellen Objekts.
  17. Computerprogrammprodukt nach Anspruch 12, das Verfahren ferner umfassend: Verfolgen einer Sechs-Grad-Freiheits-(6DOF)-Position und Ausrichten des ersten Controllers in der physischen Umgebung; Verfolgen einer 6DOF-Position und Ausrichten des zweiten Controllers in der physischen Umgebung; Erkennen der Bewegung des ersten Controllers basierend auf der 6DOF-Verfolgung des ersten Controllers; und Erkennen der Bewegung des zweiten Controllers basierend auf der 6DOF-Verfolgung des zweiten Controllers.
DE202017104928.0U 2016-08-23 2017-08-16 Manipulation virtueller Objekte anhand von Controllern mit sechs Freiheitsgraden in erweiterten bzw. virtuellen Realitätsumgebungen Active DE202017104928U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201662378370P 2016-08-23 2016-08-23
US62/378,370 2016-08-23

Publications (1)

Publication Number Publication Date
DE202017104928U1 true DE202017104928U1 (de) 2017-11-24

Family

ID=60662035

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202017104928.0U Active DE202017104928U1 (de) 2016-08-23 2017-08-16 Manipulation virtueller Objekte anhand von Controllern mit sechs Freiheitsgraden in erweiterten bzw. virtuellen Realitätsumgebungen

Country Status (7)

Country Link
US (1) US10642344B2 (de)
EP (1) EP3504608B1 (de)
JP (1) JP6820405B2 (de)
KR (1) KR102245245B1 (de)
CN (1) CN109643159B (de)
DE (1) DE202017104928U1 (de)
WO (1) WO2018039069A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11550430B2 (en) 2019-01-18 2023-01-10 Sony Group Corporation Information processing apparatus, information processing method, and recording medium

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198874B2 (en) 2016-05-13 2019-02-05 Google Llc Methods and apparatus to align components in virtual reality environments
US10345925B2 (en) * 2016-08-03 2019-07-09 Google Llc Methods and systems for determining positional data for three-dimensional interactions inside virtual reality environments
US10664993B1 (en) 2017-03-13 2020-05-26 Occipital, Inc. System for determining a pose of an object
US10429949B2 (en) * 2017-06-30 2019-10-01 Htc Corporation User interaction apparatus and method
CN116300091A (zh) 2018-07-23 2023-06-23 奇跃公司 用于使用位置向量解析半球模糊度的方法和***
US10909772B2 (en) * 2018-07-31 2021-02-02 Splunk Inc. Precise scaling of virtual objects in an extended reality environment
US10692299B2 (en) 2018-07-31 2020-06-23 Splunk Inc. Precise manipulation of virtual object position in an extended reality environment
WO2020044916A1 (ja) * 2018-08-29 2020-03-05 ソニー株式会社 情報処理装置、情報処理方法及びプログラム
EP3867734A4 (de) 2018-10-17 2022-07-13 Meta View, Inc. Mobile plattform als physikalische schnittstelle zur interaktion
US11644940B1 (en) 2019-01-31 2023-05-09 Splunk Inc. Data visualization in an extended reality environment
US11853533B1 (en) * 2019-01-31 2023-12-26 Splunk Inc. Data visualization workspace in an extended reality environment
US10922892B1 (en) * 2019-04-30 2021-02-16 Splunk Inc. Manipulation of virtual object position within a plane of an extended reality environment
US20200356765A1 (en) * 2019-05-08 2020-11-12 Ssam Sports, Inc. Solving magnetic interference in inertial sensors
US10928975B2 (en) * 2019-07-17 2021-02-23 Microsoft Technology Licensing, Llc On-the-fly adjustment of orientation of virtual objects
KR102570009B1 (ko) * 2019-07-31 2023-08-23 삼성전자주식회사 Ar 객체 생성 방법 및 전자 장치
US11054923B2 (en) * 2019-10-11 2021-07-06 Finch Technologies Ltd. Automatic switching between different modes of tracking user motions to control computer applications
KR102164371B1 (ko) * 2019-11-29 2020-10-12 주식회사 아이브이알시스템즈 가상정비훈련을 위한 가상객체와의 상호작용 구현 방법
CN110992757A (zh) * 2019-11-29 2020-04-10 北方工业大学 基于vr与人工智能的高危化学实验室防火安全培训方法
DE112021001071T5 (de) * 2020-02-19 2022-12-15 Fanuc Corporation Bediensystem für Industriemaschinen
EP4139013A4 (de) 2020-04-22 2024-05-29 Meta Platforms Technologies, LLC Personalisierte und angepasste fitnesstrainingsaktivität oder spiel mit virtueller und erweiterter realität, verfahren, vorrichtungen und systeme
US11448884B2 (en) * 2020-11-25 2022-09-20 Sony Interactive Entertainment Inc. Image based finger tracking plus controller tracking
CN113181619A (zh) * 2021-04-09 2021-07-30 青岛小鸟看看科技有限公司 一种运动训练方法、装置和***
CN113457157A (zh) * 2021-06-30 2021-10-01 网易(杭州)网络有限公司 游戏中虚拟道具的切换方法、装置以及触控终端
CN114003126A (zh) * 2021-09-26 2022-02-01 歌尔光学科技有限公司 虚拟现实设备的交互控制方法、装置及设备
WO2024020061A1 (en) * 2022-07-18 2024-01-25 Apple Inc. Devices, methods, and graphical user interfaces for providing inputs in three-dimensional environments

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6184867B1 (en) 1997-11-30 2001-02-06 International Business Machines Corporation Input for three dimensional navigation using two joysticks
US7219033B2 (en) 2005-02-15 2007-05-15 Magneto Inertial Sensing Technology, Inc. Single/multiple axes six degrees of freedom (6 DOF) inertial motion capture system with initial orientation determination capability
US8384665B1 (en) * 2006-07-14 2013-02-26 Ailive, Inc. Method and system for making a selection in 3D virtual environment
US9405372B2 (en) * 2006-07-14 2016-08-02 Ailive, Inc. Self-contained inertial navigation system for interactive control using movable controllers
CN101529364A (zh) 2006-10-27 2009-09-09 诺基亚公司 用于促进三维图形用户界面内的移动的方法和装置
WO2008083205A2 (en) * 2006-12-29 2008-07-10 Gesturetek, Inc. Manipulation of virtual objects using enhanced interactive system
JP5730463B2 (ja) * 2008-07-11 2015-06-10 任天堂株式会社 ゲームプログラムおよびゲーム装置
JP2010238015A (ja) * 2009-03-31 2010-10-21 Sega Corp 入力装置及びプログラム
EP2348383B1 (de) 2009-12-31 2017-07-12 Sony Computer Entertainment Europe Limited System und Verfahren zur virtuellen Interaktion
CN102918476B (zh) * 2010-02-05 2017-03-08 索尼电脑娱乐公司 用于利用位置、方向或动作与计算程序相接口的控制器
JP5735865B2 (ja) * 2011-06-17 2015-06-17 任天堂株式会社 ゲームシステムおよびゲームプログラム
GB2501929B (en) * 2012-05-11 2015-06-24 Sony Comp Entertainment Europe Apparatus and method for augmented reality
US9041622B2 (en) * 2012-06-12 2015-05-26 Microsoft Technology Licensing, Llc Controlling a virtual object with a real controller device
US20140168261A1 (en) * 2012-12-13 2014-06-19 Jeffrey N. Margolis Direct interaction system mixed reality environments
US9443354B2 (en) * 2013-04-29 2016-09-13 Microsoft Technology Licensing, Llc Mixed reality interactions
US10579207B2 (en) * 2014-05-14 2020-03-03 Purdue Research Foundation Manipulating virtual environment using non-instrumented physical object
US9741169B1 (en) * 2014-05-20 2017-08-22 Leap Motion, Inc. Wearable augmented reality devices with object detection and tracking
JP6355978B2 (ja) * 2014-06-09 2018-07-11 株式会社バンダイナムコエンターテインメント プログラムおよび画像生成装置
US9911235B2 (en) * 2014-11-14 2018-03-06 Qualcomm Incorporated Spatial interaction in augmented reality
US9696795B2 (en) * 2015-02-13 2017-07-04 Leap Motion, Inc. Systems and methods of creating a realistic grab experience in virtual reality/augmented reality environments
US10317989B2 (en) * 2016-03-13 2019-06-11 Logitech Europe S.A. Transition between virtual and augmented reality
US9983697B1 (en) * 2016-05-18 2018-05-29 Meta Company System and method for facilitating virtual interactions with a three-dimensional virtual environment in response to sensor input into a control device having sensors
US10078377B2 (en) * 2016-06-09 2018-09-18 Microsoft Technology Licensing, Llc Six DOF mixed reality input by fusing inertial handheld controller with hand tracking
US10249090B2 (en) * 2016-06-09 2019-04-02 Microsoft Technology Licensing, Llc Robust optical disambiguation and tracking of two or more hand-held controllers with passive optical and inertial tracking
US10146335B2 (en) * 2016-06-09 2018-12-04 Microsoft Technology Licensing, Llc Modular extension of inertial controller for six DOF mixed reality input

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11550430B2 (en) 2019-01-18 2023-01-10 Sony Group Corporation Information processing apparatus, information processing method, and recording medium

Also Published As

Publication number Publication date
JP2019532396A (ja) 2019-11-07
EP3504608A1 (de) 2019-07-03
US20180059777A1 (en) 2018-03-01
EP3504608B1 (de) 2021-10-06
JP6820405B2 (ja) 2021-01-27
CN109643159B (zh) 2022-08-02
WO2018039069A1 (en) 2018-03-01
KR102245245B1 (ko) 2021-04-27
US10642344B2 (en) 2020-05-05
KR20190031551A (ko) 2019-03-26
CN109643159A (zh) 2019-04-16

Similar Documents

Publication Publication Date Title
DE202017104928U1 (de) Manipulation virtueller Objekte anhand von Controllern mit sechs Freiheitsgraden in erweiterten bzw. virtuellen Realitätsumgebungen
DE202017105262U1 (de) Erzeugen virtueller Notationsoberflächen mit Gesten in einer erweiterten und/oder virtuellen Realitätsumgebung
DE202017105200U1 (de) Ziehen von virtuellen Elementen einer erweiterten und/oder virtuellen Realitätsumgebung
DE202017105307U1 (de) Umschalten aktiver Objekte in einer erweiterten Realitäts- und/oder virtuellen Realitätsumgebung
US11181986B2 (en) Context-sensitive hand interaction
DE202016008297U1 (de) Zweihändige Objektmanipulationen in der virtuellen Realität
DE202017104403U1 (de) Erkennen des Benutzerbewegungsbereichs für Virtual-Reality-Benutzeroberflächen
CN109074149B (zh) 用于增强或虚拟现实环境的头戴式参考系中的对象跟踪
DE202017105283U1 (de) Sitzungsende-Erkennung in einer Augmented- und/oder Virtual-Reality-Umgebung
DE202017104653U1 (de) Ermitteln von Positionsdaten für dreidimensionale Interaktionen in Virtual-Reality-Umgebungen
CN108697935B (zh) 虚拟环境中的化身
DE112006002954T5 (de) Virtuelles Schnittstellensystem
CN111771180B (zh) 增强现实环境中对象的混合放置
KR102684302B1 (ko) 가상 현실 (vr) 디바이스에 의해 디스플레이되는 가상 컨텐트를 네비게이트하는 방법 및 장치
US20190012060A1 (en) Volumetric multi-selection interface for selecting multiple objects in 3d space
DE202017104323U1 (de) Anzeige und Interaktion mit gescannter Umgebungsgeometrie in virtueller Realität
US10976890B2 (en) Intelligent command batching in an augmented and/or virtual reality environment
DE112020000573T5 (de) Anzeigen von darstellungen von umgebungen
WO2021020143A1 (ja) 画像処理装置、画像処理方法、及び記録媒体
KR102177734B1 (ko) 가상 현실에서의 홀드된 객체 안정화
DE112022003443T5 (de) Datenverarbeitungseinrichtung, datenverarbeitungsverfahren und programm
DE102023209265A1 (de) Bewegungsabbildung für kontinuierliche gesten
KR20180080906A (ko) 콘텐츠에 대한 사용자 제스처를 인식하는 방법 및 장치, 사용자 제스처에 대응하는 명령을 해석하는 방법 및 장치, 그리고 콘텐츠를 제어하는 방법 및 장치

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

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

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

R082 Change of representative

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

R207 Utility model specification
R081 Change of applicant/patentee

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

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

R082 Change of representative

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

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years