-
TECHNISCHES GEBIET
-
Dies betrifft im Allgemeinen Eingabegerät-Stabilisierungstechniken in einer erweiterten und/oder virtuellen Realitätsumgebung.
-
HINTERGRUND
-
Ein Augmented-Reality(AR)- und/oder Virtual-Reality(VR)-System kann eine dreidimensionale (3D) immersive virtuelle Realitätsumgebung generieren. Ein Benutzer kann diese immersive virtuelle 3D-Realitätsumgebung durch Interagieren 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, durch die ein Benutzer bei der Betrachtung eines Anzeigegeräts durchschaut, oder externer tragbarer Geräte, die Sensoren, Handschuhe mit Sensoren und andere dieser Geräte beinhalten. Sobald der Benutzer in die virtuelle 3D-Realitätsumgebung eingetaucht ist, kann er sich durch physische Bewegung und/oder Manipulation eines elektronischen Geräts durch die virtuelle Umgebung bewegen, um mit der virtuellen Umgebung zu interagieren und die Interaktion mit der virtuellen Umgebung zu personalisieren.
-
KURZDARSTELLUNG
-
In einem Aspekt, ein Computerprogrammprodukt, umfassend ein nicht flüchtiges Speichermedium, beinhaltet das Computerprogrammprodukt Code, der, wenn er durch Verarbeitungsschaltungen eines Computersystems ausgeführt wird, die Verarbeitungsschaltungen zur Durchführung eines Verfahrens veranlasst, das das Empfangen, durch Verarbeitungsschaltungen eines Computersystems, von ersten Bewegungsdaten beinhalten kann, die eine erste (6DOF)-Bewegung mit sechs Freiheitsgraden eines Eingabegeräts anzeigen, die von einem Benutzer in einer physischen Umgebung gehalten wird, die von dem Benutzer besetzt ist. Das Verfahren kann zudem Erzeugen eines Skalierungsfaktors durch die Verarbeitungsschaltungen beinhalten, der auf der ersten 6DOF-Bewegung des Eingabegeräts innerhalb der physischen Umgebung basiert. Das Verfahren kann des Weiteren beinhalten, dass die Verarbeitungsschaltung nach Empfangen der ersten Bewegungsdaten zweite Bewegungsdaten empfängt, die eine zweite 6DOF-Bewegung des Eingabegeräts innerhalb der physischen Umgebung über einen Zeitraum anzeigen. Das Verfahren kann des Weiteren in Reaktion auf Empfangen der zweiten Bewegungsdaten einen Objektbewegungsvorgang durch die Verarbeitungsschaltung ausführen, um eine skalierte Bewegung eines Objekts innerhalb einer virtuellen Umgebung zu erzeugen, wobei der Objektbewegungsvorgang eine Bewegung des Objekts innerhalb der virtuellen Umgebung, die der zweiten 6DOF-Bewegung entspricht, mit dem Skalierungsfaktor multipliziert, um die skalierte Bewegung des Objekts innerhalb der virtuellen Umgebung zu erzeugen.
-
Die Details von einer oder mehreren Implementierungen sind in den zugehörigen Zeichnungen und der nachfolgenden Beschreibung dargelegt. Andere Merkmale werden anhand der Beschreibung und Zeichnungen sowie anhand der Ansprüche ersichtlich.
-
Figurenliste
-
- 1A zeigt ein Diagramm, das eine erste 6DOF-Position eines Eingabegeräts gemäß einer exemplarischen Implementierung veranschaulicht.
- 1B zeigt ein Diagramm, das eine zweite 6DOF-Position eines Eingabegeräts gemäß einer exemplarischen Implementierung veranschaulicht.
- 1C zeigt ein Diagramm, das exemplarische 6DOF-Bewegungs- und Skalierungsfaktoren gemäß einer exemplarischen Implementierung veranschaulicht.
- 2 zeigt eine exemplarische Implementierung eines virtuellen Realitätssystems, das eine am Kopf befestigte Anzeige und ein tragbares elektronisches Gerät gemäß hierin beschriebenen Implementierungen beinhaltet.
- 3A und 3B zeigen perspektivische Ansichten eines exemplarischen, am Kopf befestigten Anzeigegeräts, während 3C ein exemplarisches tragbares elektronisches Gerät gemäß hierin beschriebenen Implementierungen veranschaulicht.
- 4A und 4B zeigen Blockschaltbilder eines am Kopf befestigten elektronischen Geräts und eines tragbaren elektronischen Geräts, gemäß den hierin beschriebenen Ausführungsformen
- 5 zeigt ein Ablaufdiagramm, das den Betrieb eines virtuellen Realitätssystems gemäß einer exemplarischen Implementierung veranschaulicht.
- 6A-6D zeigen Drittpersonenansichten, die Bewegung und Skalierung eines Benutzers und/oder virtueller Merkmale einer erweiterten Realitäts- und/oder virtuellen Realitätsumgebung gemäß hierin beschriebenen Implementierungen veranschaulichen.
- 7 stellt ein Beispiel eines Computergeräts und eines mobilen Computergeräts dar, die zur Implementierung der hierin beschriebenen Techniken verwendet werden können.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Ein Benutzer, der in eine erweiterte und/oder virtuelle Realitätsumgebung eingetaucht ist, der beispielsweise ein am Kopf befestigtes Anzeigegerät (HMD) trägt, kann die virtuelle Umgebung (z. B. dreidimensionale (3D) virtuelle Umgebung) erforschen und mit der virtuellen Umgebung durch unterschiedliche Arten von Eingaben interagieren. Die Bezugnahme auf eine virtuelle Umgebung kann eine physische Umgebung beinhalten, die durch virtuelle Elemente erweitert wird. Diese Eingaben können z. B. physische Interaktionen beinhalten, wie z. B. die Manipulation eines elektronischen Geräts, wie z. B. einem Eingabegerät, das von dem HMD getrennt ist, wie z. B. durch einen von dem elektronischen Gerät ausgesandten Strahl oder Strahlenbündel und/oder einen virtuellen Strahl, der in der virtuellen Umgebung basierend auf Manipulation des elektronischen Geräts wiedergegeben wird, eine Bewegung des elektronischen Geräts, eine Berührung, die auf einer berührungsempfindlichen Oberfläche des elektronischen Geräts und dergleichen angewendet wird, und/oder eine Manipulation des HMD selbst. Ein Benutzer kann eine oder mehrere dieser unterschiedlichen Arten von Interaktionen umsetzen, um eine bestimmte Aktion in der virtuellen Umgebung auszuführen, wie z. B. ein Bewegen durch die virtuelle Umgebung hindurch, und Bewegen oder Übergehen oder Teleportieren, beispielsweise von einem ersten Bereich der virtuellen Umgebung zu einem zweiten Bereich der virtuellen Umgebung oder von einer ersten virtuellen Umgebung zu einer zweiten virtuellen Umgebung.
-
Techniken zum Steuern der Bewegung von Gegenständen in einer virtuellen Umgebung, die hierin offenbart werden, beinhalten Definieren einer Bewegung eines Objekts in einer virtuellen Umgebung basierend auf einem Skalierungsfaktor, der basierend auf einer vorangegangenen Bewegung eines von einem Benutzer gehaltenen Eingabegeräts erzeugt wird. In diesem Sinne bewegt ein Benutzer ein Eingabegerät auf einem (6DOF)-Bewegungspfad mit sechs Freiheitsgraden, um erste Bewegungsdaten zu erzeugen. Basierend auf dem 6DOF-Bewegungspfad erzeugt ein Computersystem einen Skalierungsfaktor, der anzeigt, wieviel Wackel-Reduktion in der nachfolgenden Bewegung verwendet wird. Dementsprechend führt das Computersystem in Reaktion auf Empfangen von zweiten Bewegungsdaten, die einen neuen 6DOF-Bewegungspfad anzeigen, einen Objektbewegungsvorgang durch, um eine skalierte Bewegung des Objekts in der virtuellen Umgebung zu erzeugen.
-
1A und 1B zeigen Diagramme, die eine (6DOF)-Position mit sechs Freiheitsgraden eines getragenen Eingabegeräts gemäß einer exemplarischen Implementierung veranschaulichen. Ein Benutzer kann ein getragenes Eingabegerät 12 verwenden, um verschiedene Gesten oder Bewegungen auszuführen, um mit einer virtuellen Umgebung zu interagieren, die dem Benutzer z. B. über ein HMD präsentiert werden kann. Bei Verwendung oder Betrieb des Eingabegeräts 12 kann das Eingabegerät 12 im Laufe der Zeit Zustände ändern, wobei ein Zustand des Eingabegeräts 12 mindestens eines von (oder beide) Folgendem beinhalten kann: eine Position (oder Position) des Eingabegeräts 12, die durch dreidimensionale Positionskoordinaten (x-, y- und z-Koordinaten) identifiziert werden kann, und eine Orientierung des Eingabegeräts 12, das eine Winkelposition (Neigung, Gieren, Rollen) oder eine Orientierungsrichtung des Eingabegeräts (z. B. in welche Richtung das Eingabegerät 12 weist) sein kann. Beispielsweise kann die Orientierung des Eingabegeräts 12 als ein Punkt auf einer Einheitskugel identifiziert werden, auf den das Eingabegerät 12 weist. Beispielsweise kann sich das Eingabegerät 12 zum Zeitpunkt t1 in dem Zustand 1 befinden, der eine Position von (x1, y1, z1) und eine Orientierung von Orientierung 1 beinhalten kann. Zum Zeitpunkt t2 hat sich das Eingabegerät 12 bewegt und befindet sich nun in dem Zustand 2 mit Position 2 von (x2, y2, z2) und einer Orientierung von Orientierung 2.
-
In manchen Fällen kann eine relativ kleine Bewegung (z. B. eine kleine Zustandsänderung) das Eingabegerät 12 in der physischen Umgebung 10 zu großen und in einigen Fällen unbeabsichtigten Bewegungen oder Veränderungen in der virtuellen Umgebung führen. Beispielsweise kann der Benutzer eine Taste oder einen Auslöser auf dem Eingabegerät 12 auswählen oder betätigen, um einen Strahl aus dem Eingabegerät 12 hervorzubringen oder zu generieren, wobei der Strahl auf ein Gebäude oder ein anderes Objekt weisen kann, der in der virtuellen Umgebung bewegt werden soll. Allerdings kann eine kleine (z. B. unbeabsichtigte) Bewegung des Eingabegeräts (z. B. eine zitternde oder leicht instabile Hand) zu einer großen Bewegung des Strahlenendes oder des Gebäudes oder Objekts führen, das in der virtuellen Umgebung weit von dem Eingabegerät 12 entfernt sein kann. Diese relativ kleinen Bewegungen des Eingabegeräts in der physischen Umgebung können durch Wackeln oder unbeabsichtigte Bewegungen oder Zittern hervorgerufen werden. Es kann wünschenswert sein, das Eingabegerät zu stabilisieren, z. B. durch Filtern oder Dämpfen (z. B. Reduzieren) zumindest einiger Bewegungen des Eingabegeräts 12 in der physischen Umgebung, die in der virtuellen Umgebung registriert werden.
-
Nach einer exemplarischen Implementierung kann ein Skalierungsfaktor (oder Gewichtungsfaktor) bestimmt werden. Und z. B. wird ggf. nur ein Teil einer Bewegung (oder eine Zustandsänderung) des Eingabegeräts 12 in der physischen Umgebung in der virtuellen Umgebung gemäß dem Skalierungsfaktor registriert. Registrieren (z. B. innerhalb eines Virtual Reality Systems oder HMD) der Bewegung des Eingabegeräts in der virtuellen Umgebung kann z. B. Anzeigen der Bewegung des Eingabegeräts 12 in der virtuellen Umgebung oder Anzeigen von Änderungen in der virtuellen Umgebung basierend auf der Bewegung des Eingabegeräts 12 in der physischen Umgebung oder Verarbeiten von Änderungen in der virtuellen Umgebung basierend auf der Bewegung des Eingabegeräts 12 in der physischen Umgebung beinhalten. Auf diese Weise kann durch Registrieren in der virtuellen Umgebung nur ein Teil (z. B. basierend auf dem Skalierungsfaktor) der Bewegung des Eingabegeräts 12 in der physischen Umgebung stabilisiert werden, die Bewegung des Eingabegeräts 12 (oder die Ergebnisse der Bewegung des Eingabegeräts 12 in der physischen Umgebung) stabilisiert werden und/oder das Wackeln oder die Instabilität des Eingabegeräts reduziert werden, z. B. zumindest für einige Bewegungen des Eingabegeräts 12 in der physischen Umgebung.
-
Gemäß einer exemplarischen Implementierung kann mindestens ein Filter vorgesehen werden, mit dem die Bewegung des Eingabegeräts 12 in der physischen Umgebung, die in der virtuellen Umgebung registriert wird, gedämpft oder reduziert werden kann. Gemäß einer exemplarischen Implementierung kann der Filter einen Skalierungsfaktor (der auch als Gewichtungsfaktor bezeichnet werden kann) beinhalten, z. B. zwischen 0 und 1. Gemäß einer exemplarischen Implementierung kann der Skalierungsfaktor basierend auf einer kumulativen Bewegungsgröße (z. B. kumulative Zustandsänderung) des Eingabegeräts 12 in der physischen Umgebung seit einem Anfangszustand des Eingabegeräts ausgewählt oder bestimmt werden. So kann z. B. ein Anfangszustand (z. B. einschließlich einer Anfangsposition und/oder einer Anfangsorientierung) des Eingabegeräts 12 bestimmt werden, wenn eine Geste von dem Benutzer mithilfe des Eingabegeräts 12 gestartet wird. Wenn eine neue Geste gestartet wird, wird ein anderer Anfangszustand bestimmt. Eine Geste kann z. B. gestartet werden, wenn, als veranschaulichendes Beispiel dienend, an dem Eingabegerät 12 eine Eingabe, eine Schaltfläche oder ein Auslöser ausgewählt oder betätigt wird, oder wenn eine schnelle oder spezifische Bewegung mit dem Eingabegerät begonnen wird.
-
Die hier beschriebene(n) Dämpfungs- oder Stabilisierungstechnik(en) können während einer aktiven Geste aktiv sein und beginnen, nachdem z. B. zu Beginn der Geste ein Anfangszustand des Eingabegeräts 12 bestimmt wurde. So können die hier beschriebene(n) Dämpfungs- oder Stabilisierungstechnik(en) aktiv (oder in Betrieb) sein, z. B. nachdem ein Benutzer einen Auslöser gedrückt oder eine Schaltfläche betätigt/gedrückt hat, um z. B. ein Objekt zum Ziehen oder Bewegen auszuwählen. So können die hier beschriebenen Dämpfungs- oder Stabilisierungstechniken aktiv sein, sobald ein Benutzer einen Auslöser gedrückt hat (oder eine andere Auswahl getroffen hat), um das Eingabegerät (beispielsweise) in den Ziehmodus oder in einen anderen Modus zu versetzen, um ein Objekt in der virtuellen Umgebung zu manipulieren oder zu steuern. Wenn das Eingabegerät 12 verwendet wird, um ein Objekt in der virtuellen Umgebung zu bewegen oder zu manipulieren, kann dies auch den zusätzlichen Vorteil bieten, dass das Gewicht des Objekts, das manipuliert oder gezogen wird, basierend auf der Verzögerung (oder dem Nachlauf) beim Registrieren der Bewegung in der virtuellen Umgebung basierend auf der physischen Bewegung des Eingabegeräts in der physischen Umgebung (z. B. basierend auf der Verwendung eines Filters oder eines Skalierungsfaktors) simuliert wird.
-
Eine kumulative Bewegung (oder kumulative Bewegungsgröße) des Eingabegeräts 12 in der physischen Umgebung kann z. B. als Bewegungsgröße bestimmt werden, die durch das Eingabegerät 12 in der physischen Umgebung seit einem Anfangszustand des Eingabegeräts 12 aufgetreten ist. So kann z. B. die kumulative Bewegung eine kumulative Zustandsänderung des Eingabegeräts 12 seit einem Anfangszustand (z. B. seit Beginn der Geste) beinhalten. Eine kumulative Bewegung (oder kumulative Bewegungsgröße) kann beispielsweise als eine kumulative Zustandsänderung des Eingabegeräts in der physischen Umgebung basierend auf einem Anfangszustand des Eingabegeräts 12 in der physischen Umgebung und einem aktuellen Zustand des Eingabegeräts 12 in der physischen Umgebung bestimmt werden. Beispielsweise kann in einem einfachen Beispiel eine kumulative Zustandsänderung bestimmt werden, indem der aktuelle Zustand des Eingabegeräts von dem Anfangszustand des Eingabegeräts subtrahiert wird.
-
In einem anderen anschaulichen Beispiel kann eine Orientierungsänderung als lineare Änderung des Winkels oder der Phase zwischen den beiden Orientierungen (erste Orientierung und zweite Orientierung) des Eingabegeräts
12 in der physischen Umgebung bestimmt werden. Ebenso kann eine Positionsänderung (von einer ersten Position bis zu einer zweiten Position) des Eingabegeräts
12 in der physischen Umgebung bestimmt werden, z. B. als der lineare Abstand zwischen den beiden Positionen des Eingabegeräts
12 (z. B. Position
2, Position
1). Wenn also z. B. die erste Position die Position
1 (
x1,
y1,
z1) und die zweite Position des Eingabegeräts
12 in der physischen Umgebung die Position
2 (
x2,
y2,
z2) ist, kann der lineare Abstand (die Positionsänderung) des Eingabegeräts
12 als Quadratwurzel aus der Summe der Quadrate bestimmt werden:
-
Nach einer exemplarischen Implementierung können zum Reduzieren des Wackelns oder zum Unterstützen der Stabilisierung des Eingabegeräts in Abhängigkeit von der (Menge der) 6DOF-Bewegung des Eingabegeräts 12 in der physischen Umgebung seit einem Anfangszustand verschiedene Skalierungsfaktoren verwendet werden. Beispielsweise kann ein niedrigerer (oder kleinerer) Skalierungsfaktor verwendet werden, wenn die 6DOF-Bewegung klein oder kleiner als ein Schwellenwert ist, während ein höherer (oder größerer) Skalierungsfaktor verwendet werden kann, wenn die 6DOF-Bewegung des Eingabegeräts 12 in der physischen Umgebung größer als der Schwellenwert ist. Beispielsweise kann ein Skalierungsfaktor von 0,2 verwendet werden, wenn die 6DOF-Bewegung kleiner als ein erster Schwellenwert ist (z. B. weniger als 3 Zoll beträgt), und ein Skalierungsfaktor von 0,6, wenn die 6DOF-Bewegung größer als der erste Schwellenwert ist. Zusätzliche Schwellenwerte und zusätzliche Skalierungsfaktoren können verwendet werden. Dies sind nur einige exemplarische Skalierungsfaktoren, wobei andere verwendet werden können. Dies sind einige Beispiele für statische Filter oder statische Skalierungsfaktoren, bei denen der Skalierungsfaktor fest oder statisch ist. Es kann jedoch auch ein dynamischer Filter oder ein dynamischer Skalierungsfaktor verwendet werden, z. B. wenn sich der Skalierungsfaktor linear oder nicht linear ändert, z. B. erhöht, wenn sich die 6DOF-Bewegung ändert.
-
1C zeigt ein Diagramm, das exemplarische Filter und Skalierungsfaktoren gemäß einer exemplarischen Implementierung veranschaulicht. Das in 1C dargestellte Beispiel stellt die Verwendung von drei Filtern dar. So wird z. B., wie im veranschaulichenden Beispiel von 1C dargestellt, ein statischer Filter 20 mit einem festen/statischen Skalierungsfaktor von N (z. B. 0,2) für die kumulative Bewegung oder die kumulative Zustandsänderung des Eingabegeräts 12 in der physischen Umgebung verwendet, die kleiner als der Abstand A (z. B. 8 Zentimeter) ist. Für eine 6DOF-Bewegung des Eingabegeräts zwischen Abstand B und C (z. B. 8 Zentimeter und 20 Zentimeter) wird ein dynamischer Filter 22 mit einem linear variierenden Skalierungsfaktor verwendet, der zwischen N und M (z. B. 0,2 und 0,6) variiert. Und ein statischer Filter 24 mit einem statischen/fixierten Skalierungsfaktor von F (z. B. 0,6) wird für die 6DOF-Bewegung des Eingabegeräts in der physischen Umgebung verwendet, die größer als C (z. B. 20 Zentimeter) ist.
-
Auf diese Weise wird bei kleinen Bewegungen (wie z. B. Wackeln oder unbeabsichtigtes Schütteln des Eingabegeräts 12 in der physischen Umgebung) die Bewegung oder Zustandsänderung des Eingabegeräts 12 typischerweise klein sein, z. B. kleiner als der erste Schwellenwert (z. B. 3 Zoll), wobei nur 20 % (bezogen auf den Skalierungsfaktor = 0,2) einer ersten 6DOF-Bewegung des Eingabegeräts in der physischen Umgebung in der virtuellen Umgebung registriert werden. Wenn die 6DOF-Bewegung (z. B. Positions- oder Orientierungsänderung des Eingabegeräts 12 seit einem Anfangszustand) zunimmt (z. B. größer als 8 cm oder größer als 20 cm), steigt der Skalierungsfaktor für die Eingabegerätdämpfung (entweder durch den dynamischen Filter 22 oder den statischen Filter 24), wodurch ein größerer Teil der 6DOF-Bewegung des Eingabegeräts 12 registriert wird. Wie bereits erwähnt, kann die 6DOF-Bewegung die Änderung der 6DOF-Position des Eingabegeräts 12 in der physischen Umgebung über einen aktuellen oder jüngsten Zeitraum sein (z. B. die Änderung der Position oder die Änderung der Orientierung des Eingabegeräts 12 in der physischen Umgebung seit dem letzten Frame, der auf der Anzeige des HMD angezeigt wird).
-
Eine aktuelle Änderung der 6DOF-Position des Eingabegeräts 12 kann z. B. dadurch bestimmt werden, dass eine aktuelle Änderung der 6DOF-Position (z. B. aktuelle Änderung in Position oder Orientierung) des Eingabegeräts 12 in der physischen Umgebung gemäß der aktuellen 6DOF-Position (z. B. aktuellen Position oder aktuellen Orientierung) des Eingabegeräts in der physischen Umgebung und (oder in Bezug auf) eine vorherige 6DOF-Position (während eines vorhergehenden Zeitraums, einer vorhergehenden Abtastzeit oder eines vorhergehenden Frames) des Eingabegeräts in der physischen Umgebung bestimmt wird. Beispielsweise kann eine aktuelle Änderung der 6DOF-Position bestimmt werden, indem zwei entsprechende Positionswerte (in der x-, y- oder z-Achse) von der aktuellen und vorherigen 6DOF-Position subtrahiert werden. Die Änderung der 6DOF-Position des Eingabegeräts 12 kann als eine Änderung der 6DOF-Position des Eingabegeräts 12 seit einer anfänglichen 6DOF-Position (die z. B. mithilfe des Eingabegeräts den Beginn einer Geste darstellen kann) bestimmt werden, wobei die anfängliche 6DOF-Position vor der vorherigen 6DOF-Position liegen kann. In der Nähe des Beginns der Geste können die vorherige 6DOF-Position und die anfängliche 6DOF-Position dieselbe 6DOF-Position sein. So kann z. B. eine 6DOF-Bewegung bestimmt werden, indem eine Änderung der 6DOF-Position des Eingabegeräts 12 in der physischen Umgebung basierend auf der anfänglichen 6DOF-Position des Eingabegeräts und der aktuellen 6DOF-Position des Eingabegeräts bestimmt wird, und eine aktuelle Bewegung oder eine aktuelle Zustandsänderung kann z. B. basierend auf einer vorherigen 6DOF-Position des Eingabegeräts und der aktuellen 6DOF-Position des Eingabegeräts bestimmt werden.
-
Gemäß einer exemplarischen Implementierung kann der Skalierungsfaktor bestimmen, wie viel von der aktuellen Bewegung (z. B. Bewegung des Eingabegeräts 12 in physischer Umgebung über einen jüngsten oder aktuellen Zeitraum) oder der aktuellen Änderung der 6DOF-Position (z. B. Positionsänderung oder Orientierungsänderung des Eingabegeräts 12, wie z. B. eine Zustandsänderung des Eingabegeräts 12 seit Anzeige des letzten Frames auf dem HMD) in der virtuellen Umgebung registriert wird. In einem Beispiel kann der Skalierungsfaktor mit der aktuellen Änderung der 6DOF-Position oder der aktuellen Bewegung in der physischen Umgebung multipliziert werden, um den Betrag der Änderung der 6DOF-Position oder der Bewegung des Eingabegeräts 12 zu bestimmen, der in der virtuellen Umgebung registriert wird. Wenn z. B. das Eingabegerät 12 während eines aktuellen oder jüngsten Zeitraums (z. B. seit dem letzten Frame) von x=0 auf x=3 cm nach rechts verschoben wurde und ein Skalierungsfaktor von 0,2 ausgewählt wurde, bedeutet dies, dass die Bewegung des Eingabegeräts = (Skalierungsfaktor) (aktuelle Positionsänderung) = (0,2) (3 cm) = 0,6 cm Bewegung in der virtuellen Umgebung ist. Das bedeutet, dass 0,6 cm der Bewegung des Eingabegeräts in der x-Achse in der virtuellen Umgebung registriert werden.
-
In einer exemplarischen Implementierung kann der Umfang der Änderung der 6DOF-Position (z. B. Positionsänderung oder Orientierungsänderung), die in der virtuellen Umgebung registriert werden soll, durch ein (auf Basis des Skalierungsfaktors) gewichtete lineare Interpolation zwischen der aktuellen 6DOF-Position und der vorherigen 6DOF-Position des Eingabegeräts 12 bestimmt werden, wobei ein kleinerer Skalierungsfaktor bedeutet, dass die Interpolation stärker zugunsten des vorherigen Zustands gewichtet wird (wodurch in der virtuellen Umgebung weniger der aktuellen Bewegung oder weniger der aktuellen Änderung der 6DOF-Position seit dem vorherigen Zustand registriert wird), wobei ein größerer Skalierungsfaktor bedeutet, dass die Interpolation stärker zugunsten der aktuellen 6DOF-Position gewichtet wird (wodurch in der virtuellen Umgebung mehr von der aktuellen Bewegung oder der aktuellen Zustandsänderung registriert wird). So kann z. B. bei kleinen kumulativen Bewegungen/Änderungen der 6DOF-Position ein größerer Skalierungsfaktor verwendet werden, um dadurch die in der virtuellen Umgebung registrierten aktuellen Bewegungen zu dämpfen oder zu reduzieren. Auch wenn die kumulative Bewegung oder die kumulative Änderung der 6DOF-Position des Eingabegeräts 12 in der physischen Umgebung zunimmt, kann ein größerer Skalierungsfaktor verwendet oder ausgewählt werden, um die Dämpfung zu reduzieren, wodurch mehr von der aktuellen Bewegung oder der aktuellen Zustandsänderung des 6DOF-Positions-Eingabegeräts in der physischen Umgebung in der virtuellen Umgebung registriert werden kann. Der Prozess zum Bestimmen einer kumulativen Änderung der 6DOF-Position des Eingabegeräts 12, zum Bestimmen einer aktuellen Änderung der 6DOF-Position des Eingabegeräts, zum Bestimmen eines Skalierungsfaktors und der Registrierung eines Teils der aktuellen Bewegung oder der aktuellen Änderung der 6DOF-Position basierend auf dem Skalierungsfaktor kann in jedem Frame wiederholt werden (oder kann für jeden Frame wiederholt werden, der dem Benutzer über das HMD angezeigt wird).
-
In der in 2 dargestellten exemplarischen Implementierung hält ein Benutzer, der ein HMD 100 trägt, ein tragbares elektronisches Gerät 102. Das tragbare elektronische Gerät 102 kann beispielsweise als ein Eingabegerät bezeichnet werden, kann beispielsweise ein Smartphone, ein Controller, eine Gyromaus, ein Joystick oder ein anderes tragbares elektronisches Gerät(e) sein, das zur Interaktion in der von dem HMD 100 erzeugten virtuellen Umgebung mit dem HMD 100 gepaart werden und mit diesem kommunizieren kann. Das tragbare elektronische Gerät 102 kann beispielsweise über eine drahtgebundene oder eine drahtlose Verbindung, wie beispielsweise eine WLAN- oder Bluetooth-Verbindung, mit dem HMD 100 betriebsfähig verbunden oder gepaart werden. Durch das Paaren oder betriebsfähige Verbinden des tragbaren elektronischen Geräts 102 und des HMD 100 kann eine Kommunikation und ein Austausch von Daten zwischen dem tragbaren elektronischen Gerät 102 und dem HMD 100 bereitgestellt werden, und dem tragbaren elektronischen Gerät 102 kann es ermöglicht werden, als ein Controller zum Interagieren in der durch das HMD 100 generierten immersiven virtuellen Umgebung zu fungieren. Das heißt, dass eine Manipulation des tragbaren elektronischen Geräts 102, wie z. B. zum Generieren eines virtuellen Strahls oder Strahlenbündels, der von dem tragbaren elektronischen Gerät 102 ausgesendet wird, der auf ein virtuelles Objekt oder Merkmal zur Auswahl gerichtet ist, und/oder dass eine Eingabe, die auf einer Berührungsoberfläche des tragbaren elektronischen Geräts 102 empfangen wird, und/oder dass eine Bewegung des tragbaren elektronischen Geräts 102, in eine entsprechende Auswahl oder Bewegung oder eine andere Art von Interaktion in der immersiven virtuellen Umgebung, die durch das HMD 100 erzeugt wird, übersetzt werden kann. Beispielsweise kann das HMD 100 zusammen mit dem tragbaren elektronischen Gerät 102, wie zuvor beschrieben, eine virtuelle Umgebung generieren, und das tragbare elektronische Gerät 102 kann manipuliert werden, um, wie zuvor beschrieben, eine Änderung der Skalierung oder Perspektive des Benutzers in Bezug auf die virtuellen Merkmale in der virtuellen Umgebung, zu bewirken.
-
3A und 3B zeigen perspektivische Ansichten eines exemplarischen HMD, wie beispielsweise des HMD 100, das von dem Benutzer in 1 getragen wird, wobei 3C ein exemplarisches tragbares elektronisches Gerät, wie beispielsweise das in 1 dargestellte tragbare elektronische Gerät 102, veranschaulicht.
-
Das tragbare elektronische Gerät 102 kann ein Gehäuse 103, in dem interne Komponenten des Geräts 102 aufgenommen sind, und eine Benutzeroberfläche 104 auf einer Außenseite des Gehäuses 103, die dem Benutzer zugänglich ist, beinhalten. Die Benutzeroberfläche 104 kann eine berührungsempfindliche Oberfläche 106 beinhalten, die konfiguriert ist, Benutzer-Berührungseingaben zu empfangen. Die Benutzeroberfläche 104 kann auch andere Komponenten, wie beispielsweise Schaltflächen, Knöpfe, Joysticks und dergleichen, zur Manipulation durch den Benutzer beinhalten. In manchen Implementierungen kann mindestens ein Teil der Benutzeroberfläche 104 als Touchscreen konfiguriert werden, wobei dieser Teil der Benutzeroberfläche 104 konfiguriert ist, dem Benutzer Elemente der Benutzeroberfläche anzuzeigen und zudem Berührungseingaben des Benutzers auf der berührungsempfindlichen Oberfläche 106 zu empfangen. Das tragbare elektronische Gerät 102 kann außerdem eine Lichtquelle 108 beinhalten, die konfiguriert ist, über einen Port in dem Gehäuse 103 selektiv Licht auszustrahlen, und andere Manipulationsgeräte 105, die von dem Benutzer manipulierbar sind.
-
Das HMD 100 kann ein Gehäuse 110 beinhalten, das mit einem Rahmen 120 mit einem Audioausgabegerät 130 verbunden ist, einschließlich beispielsweise in Kopfhörern montierten Lautsprechern, die ebenfalls mit dem Rahmen 120 verbunden sind. In 3B zeigt einen vorderen Abschnitt 110a des Gehäuses 110 von einem Basisabschnitt 110b des Gehäuses 110 weggedreht, sodass einige der in Gehäuse 110 aufgenommenen Komponenten sichtbar sind. Eine Anzeige 140 kann an einer nach innen zeigenden Seite des vorderen Abschnitts 110a des Gehäuses 110 angebracht sein. Linsen 150 können in dem Gehäuse 110 zwischen den Augen des Benutzers und der Anzeige 140 angebracht sein, wenn sich der vordere Abschnitt 110a in der geschlossenen Position gegenüber dem Basisabschnitt 110b des Gehäuses 110 befindet. In einigen Implementierungen kann das HMD 100 ein Sensorsystem 160 mit verschiedenen Sensoren und ein Steuersystem 170 mit einem Prozessor 190 und verschiedenen Steuersystemgeräten beinhalten, um den Betrieb des HMD 100 zu erleichtern.
-
In einigen Implementierungen kann das HMD 100 eine Kamera 180 beinhalten, um Standbilder und bewegte Bilder zu erfassen. Die durch die Kamera 180 aufgenommenen Bilder können dazu verwendet werden, eine physische Position des Benutzers und/oder des tragbaren elektronischen Geräts 102 in der realen Umgebung zu verfolgen, und/oder können dem Benutzer auf der Anzeige 140 in einem Durchlaufmodus angezeigt werden, sodass der Benutzer die virtuelle Umgebung vorübergehend verlassen und in die physische Umgebung zurückkehren kann, ohne das HMD 100 abzunehmen oder die Konfiguration des HMD 100 anderweitig zu verändern, um das Gehäuse 110 aus der Sichtlinie des Benutzers zu entfernen.
-
In einigen Implementierungen kann das HMD 100 ein Blickverfolgungsgerät 165 beinhalten, um einen Blick der Augen des Benutzers zu erkennen und zu verfolgen. Das Blickverfolgungssystem 165 kann z. B. einen Bildsensor 165A oder mehrere Bildsensoren 165A beinhalten, um Bilder von den Augen des Benutzers, z. B. einen bestimmten Teil der Augen des Benutzers, wie z. B. die Pupille, zu erfassen, um die Richtung und Bewegung des Blicks des Benutzers zu erkennen und zu verfolgen. In einigen Implementierungen kann das HMD 100 konfiguriert werden, den erkannten Blick als eine Benutzereingabe zu verarbeiten, die in eine entsprechende Interaktion in der immersiven virtuellen Erfahrung umgesetzt wird.
-
Ein Blockschaltbild eines Systems, das Teleportation und Skalierung in einer erweiterten und/oder virtuellen Realitätsumgebung ermöglicht, ist in 4A dargestellt. Das System kann ein erstes elektronisches Gerät 400 in Verbindung mit einem zweiten elektronischen Gerät 402 beinhalten. Das erste elektronische Gerät 400 kann, wie zuvor in Bezug auf 2, 3A und 3B beschrieben, z. B. ein HMD sein, wodurch eine immersive virtuelle Umgebung generiert wird, während das zweite elektronische Gerät 402, wie zuvor in Bezug auf 2 und 3C beschrieben, z. B. ein tragbares elektronisches Gerät, d. h. in Kommunikation mit dem ersten elektronischen Gerät 400, sein kann, um die Interaktion des Benutzers mit der immersiven virtuellen Umgebung, die durch das erste elektronische Gerät 400 generiert wird, zu erleichtern.
-
Das erste elektronische Gerät 400 kann ein Sensorsystem 460 und ein Steuersystem 470 beinhalten, die jeweils dem Sensorsystem 160 und dem Steuersystem 170 ähneln können, die jeweils in 3A und 3B dargestellt werden. Das Sensorsystem 460 kann eine oder mehrere unterschiedliche Arten von Sensoren beinhalten, darunter beispielsweise einen Lichtsensor, einen Audiosensor, einen Bildsensor, einen Abstands-/Näherungssensor, und/oder andere Sensoren und/oder unterschiedliche Kombination(en) von Sensoren, darunter auch beispielsweise einen Bildsensor, der positioniert ist, um den Blick der Augen eines Benutzers zu erkennen und nachzuverfolgen, wie z. B. das in 3B dargestellte Blickverfolgungsgerät 165. Das Steuersystem 470 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. Das Sensorsystem 460 und/oder das Steuersystem 470 können abhängig von einer bestimmten Implementierung weitere oder weniger Geräte beinhalten. Die in dem Sensorsystem 460 und/oder Steuersystem 470 enthaltenen Elemente können eine andere physische Anordnung (z. B. an einer anderen physischen Position) innerhalb z. B. eines HMD, bei dem es sich um ein anderes als das in 3A und 3B dargestellte HMD 100 handelt, aufweisen. Das erste elektronische Gerät 400 kann zudem einen Prozessor 490 in Kommunikation mit dem Sensorsystem 460 und dem Steuersystem 470, einen Arbeitsspeicher 480 und ein Kommunikationsmodul 450 beinhalten, das eine Kommunikation zwischen dem ersten elektronischen Gerät 400 und einem anderen externen Gerät, wie beispielsweise dem zweiten elektronischen Gerät 402, ermöglicht.
-
Der Prozessor 490 beinhaltet einen oder mehrere Verarbeitungschips und/oder -Baugruppen. Der Arbeitsspeicher 480 beinhaltet flüchtigen Arbeitsspeicher (z. B. RAM) und nicht flüchtigen Arbeitsspeicher, wie beispielsweise ein oder mehrere ROMs, Festplattenlaufwerke, Halbleiterlaufwerke und dergleichen. Der Prozessor 490 und der Arbeitsspeicher 480 bilden zusammen Steuerschaltungen, die konfiguriert und ausgeführt sind, verschiedene hierin beschriebene Verfahren und Funktionen auszuführen. In einigen Implementierungen können eine oder mehrere von den Komponenten des ersten elektronischen Benutzergeräts 400 Prozessoren (z. B. Prozessor 490) sein oder beinhalten, die konfiguriert sind, in dem Arbeitsspeicher 480 gespeicherte Anweisungen zu verarbeiten.
-
4B zeigt ein Diagramm, das eine ausführlichere Ansicht des Arbeitsspeichers 480 des ersten elektronischen Geräts 400 veranschaulicht, 4B veranschaulicht exemplarische Anweisungen, die in dem Arbeitsspeicher 480 gespeichert sind, einschließlich eines kumulativen Bewegungsdatenmanagers 481, eines Skalierungsfaktormanagers 483, eines aktuellen Bewegungsdatenmanagers 485 und eines Objektbewegungsmanagers 487. Des Weiteren ist, wie in 1 dargestellt, der Arbeitsspeicher 480 konfiguriert, verschiedene Daten zu speichern, die in Bezug auf die jeweiligen Manager, die diese Daten verwenden, beschrieben werden.
-
Der bisherige Bewegungsdatenmanager 481 ist konfiguriert, kumulative Bewegungsdaten 482 zu empfangen, die eine erste 6DOF-Bewegung eines Eingabegeräts anzeigen, das von einem Benutzer in einer physischen Umgebung gehalten wird, die von einem Benutzer besetzt ist. Beispielsweise können die vorhergehenden Bewegungsdaten 482 eine anfängliche 6 DOF-Position und eine endgültige 6 DOF-Position über ein bestimmtes Zeitintervall darstellen. In einigen Implementierungen können die bisherigen Bewegungsdaten 482 eine euklidische Länge repräsentieren.
-
Der Skalierungsfaktormanager 483 ist konfiguriert, die Skalierungsfaktordaten 484, einschließlich eines Skalierungsfaktors, basierend auf den vorherigen Bewegungsdaten 482 zu generieren. Beispielsweise ist der Skalierungsfaktormanager 483 in einigen Implementierungen konfiguriert, wie in 1B dargestellt, einen Skalierungsfaktor zu erzeugen. In einigen Implementierungen ist der Skalierungsfaktormanager 483 konfiguriert, einen Skalierungsfaktor, wie in 1B dargestellt, zu erzeugen, der auf einem einzelnen Schwellenwert und nicht auf zwei Schwellenwerten basiert. In einigen Implementierungen ist der Skalierungsfaktormanager 483 konfiguriert, zusätzlich oder anstelle der räumlichen Verschiebung einen Skalierungsfaktor zu erzeugen, der auf der Winkelverschiebung basiert.
-
Der aktuelle Bewegungsdatenmanager 485 ist konfiguriert, aktuelle Bewegungsdaten 486 zu empfangen, die eine zweite 6DOF-Bewegung eines Eingabegeräts anzeigen, das von einem Benutzer in einer physischen Umgebung gehalten wird, die von einem Benutzer besetzt ist. Die aktuellen Bewegungsdaten 486 können z. B. eine 6 DOF-Position am Anfang einer Geste und eine 6 DOF-Position am Ende einer Geste darstellen. In einigen Implementierungen können die aktuellen Bewegungsdaten 486 eine euklidische Länge repräsentieren.
-
Der Objektbewegungsmanager 485 ist konfiguriert, in Reaktion auf Empfangen der aktuellen Bewegungsdaten 486 einen Objektbewegungsvorgang durchzuführen, um Objektbewegungsdaten 488 zu erzeugen, die, wie durch die aktuellen Bewegungsdaten 488 basierend auf dem Skalierungsfaktor 484 dargestellt, ein Teil der zweiten 6DOF-Bewegung sind.
-
Wie unter erneuter Bezugnahme auf 4A ersichtlich, kann das zweite elektronische Gerät 402 ein Kommunikationsmodul 306 beinhalten, das eine Kommunikation zwischen dem zweiten elektronischen Gerät 402 und einem anderen Gerät, wie beispielsweise dem ersten elektronischen Gerät 400, ermöglicht. Zusätzlich zu dem Datenaustausch zwischen dem ersten elektronischen Gerät 400 und dem zweiten elektronischen Gerät 402 kann das Kommunikationsmodul 406 auch konfiguriert sein, wie zuvor beschrieben, einen Strahl oder ein Strahlenbündel auszustrahlen, um ein elektronisches Signal zu übermitteln. Das zweite elektronische Gerät 402 kann ein Sensorsystem 404 mit einem Bildsensor und einem Audiosensor, wie beispielsweise in einer Kamera und einem Mikrofon, einer IMU, z. B. einen Beschleunigungssensor und/oder ein Gyroskop und/oder ein Magnetometer, einen Berührungssensor, wie z. B. einen, der in einer berührungsempfindlichen Oberfläche eines getragenen elektronischen Geräts oder Smartphones vorhanden ist, und andere dieser Sensoren und/oder verschiedene Kombinationen von Sensoren beinhalten. Ein Prozessor 409 kann in Kommunikation mit dem Sensorsystem 404 und einem Controller 405 des zweiten elektronischen Geräts 402 stehen, wobei der Controller 405 Zugriff auf einen Arbeitsspeicher 408 hat und den gesamten Betrieb des zweiten elektronischen Geräts 402 steuert.
-
Wie bereits erwähnt, kann ein Controller, wie z. B. das zuvor beschriebene tragbare elektronische Gerät 102, von einem Benutzer zur Interaktion und Navigation in der virtuellen Umgebung manipuliert werden. Beim Navigieren in der virtuellen Umgebung kann der Benutzer das tragbare elektronische Gerät 102 auf ein auszuwählendes virtuelles Merkmal richten oder darauf zeigen, und das System kann einen virtuellen Strahl generieren, der beispielsweise auf Orientierungsinformationen basiert, die von den Sensoren des tragbaren elektronischen Geräts 102 generiert werden, um das virtuelle Merkmal und/oder den von dem Benutzer auszuwählenden Ort zu identifizieren. In einigen Implementierungen kann die Lichtquelle 108 einen Strahl oder ein Strahlenbündel auf ein virtuelles Merkmal oder den Gegenstand richten, der bzw. das ausgewählt werden soll, und der Strahl oder das Strahlenbündel, das bzw. der von der Lichtquelle 108 generiert wird, kann von dem System (z. B. von einer Kamera auf dem HMD 100) erkannt werden und eine Wiedergabe des erkannten Strahls oder Strahlenbündels kann dem Benutzer in der virtuellen Umgebung zur Auswahl des virtuellen Merkmals angezeigt werden.
-
5 zeigt ein Ablaufdiagramm, das ein exemplarisches Verfahren 500 veranschaulicht. Das Verfahren 500 kann von Software-Konstrukten ausgeführt werden, die in Verbindung mit 4A und 4B beschrieben werden, die in Arbeitsspeicher 480 des ersten elektronischen Geräts 400 residieren und von dem Prozessor 490 ausgeführt werden.
-
Bei 502 empfängt das erste elektronische Gerät 400 vorherige Bewegungsdaten, die eine erste Bewegung (6DOF) mit sechs Freiheitsgraden eines Eingabegeräts anzeigen, das von einem Benutzer in einer physischen Umgebung gehalten wird, die von dem Benutzer besetzt ist.
-
Bei 504 erzeugt das erste elektronische Gerät 400 einen Skalierungsfaktor basierend auf der ersten 6DOF-Bewegung des Eingabegeräts innerhalb der physischen Umgebung.
-
Bei 506 empfängt das erste elektronische Gerät 400 nach Empfangen der kumulierten Bewegungsdaten aktuelle Bewegungsdaten, die eine zweite 6DOF-Bewegung des Eingabegeräts innerhalb der physischen Umgebung über einen Zeitraum anzeigen;
-
Bei 508 führt das erste elektronische Gerät 400 in Reaktion auf Empfangen der aktuellen Bewegungsdaten einen Objektbewegungsvorgang durch, um eine 6DOF-Bewegung eines Objekts innerhalb einer virtuellen Umgebung zu erzeugen, die von dem Benutzer auf einer Anzeige betrachtet wird. Die 6DOF-Bewegung des Objekts innerhalb der virtuellen Umgebung ist ein Teil der zweiten 6DOF-Bewegung des Eingabegeräts, basierend auf dem Skalierungsfaktor.
-
Wie in 6A dargestellt, kann sich ein Benutzer in einer virtuellen Umgebung an einer Position A in der virtuellen Umgebung (die als virtuelle Position bezeichnet werden kann) dafür entscheiden, sich zu einer Position B in der virtuellen Umgebung (die auch als virtuelle Position bezeichnet werden kann) zu bewegen, indem er beispielsweise, wie zuvor beschrieben, einen von dem tragbaren elektronischen Gerät 102 generierten virtuellen Strahl, wie in 6B dargestellt, auf ein virtuelles Merkmal 650 an der virtuellen Position B richtet. Bei weiterer Manipulation des tragbaren elektronischen Geräts 102, z. B. durch Loslassen einer Taste, die den Strahl auf das virtuelle Merkmal 650 an der virtuellen Position B lenkt, kann der Benutzer, wie in 6C dargestellt, in die virtuelle Position B bewegt, teleportiert oder transportiert werden. In dem in 6A-6C dargestellten Beispiel hat sich der Benutzer nicht dafür entschieden, seine Skalierung oder Perspektive im Verhältnis zu den virtuellen Merkmalen in der virtuellen Umgebung, wie zuvor beschrieben, anzupassen. In diesem Beispiel wird der Benutzer also auf die virtuelle Position B bewegt, teleportiert oder transportiert, und zwar im Wesentlichen in der gleichen Größenordnung (relativ zu den Merkmalen in der virtuellen Umgebung) wie an der virtuellen Position A.
-
In einigen Implementierungen kann die Bewegung des Benutzers von der virtuellen Position A zu der virtuellen Position B in Reaktion auf die Eingabe des Benutzers, z. B. über das tragbare elektronische Gerät 102, im Wesentlichen unmittelbar erfolgen, wobei sich der Benutzer in einem bestimmten Augenblick an der virtuellen Position A und im nächsten Augenblick an der virtuellen Position B befindet, sodass sich die Bewegung von der virtuellen Position A zu der virtuellen Position B für den Benutzer im Wesentlichen als augenblicklich anfühlt. In einigen Implementierungen kann der Benutzer eine dynamische virtuelle Animation der Bewegung des Benutzers von der virtuellen Position A zu der virtuellen Position B erfahren, als ob der Benutzer tatsächlich durch die Luft und/oder über das Gelände von der virtuellen Position A zu der virtuellen Position B reist, was dem Benutzer eine stärker vernetzte virtuelle Erfahrung beim Bewegen von der virtuellen Position A zu der virtuellen Position B bietet.
-
In einigen Implementierungen, kann, unabhängig davon, ob die Bewegung des Benutzers von der virtuellen Position A zu der virtuellen Position B im Wesentlichen unmittelbar erfolgt, oder ob der Benutzer eine dynamische virtuelle Animation erfährt, wenn er sich von der virtuellen Position A zu der virtuellen Position B bewegt, der Benutzer an der virtuellen Position B ankommen und zu einem allmählichen, anstatt zu einem abrupten Stopp kommen. Dieser allmähliche Stopp (anstatt einer abrupten Ankunft oder eines abrupten Stopps), der ggf. ein gewisses Gefühl für das Momentum des Benutzers beim Übergang von der virtuellen Position A zu der virtuellen Position B aufrechterhält, kann dem Benutzer einen natürlicheren Übergang in die virtuelle Umgebung an der virtuellen Position B ermöglichen.
-
In manchen Situationen kann der Benutzer seine Skalierung im Verhältnis zu den virtuellen Merkmalen in der virtuellen Umgebung erhöhen oder verringern oder die Größe der virtuellen Merkmale in der virtuellen Umgebung im Verhältnis zum Benutzer skalieren (d. h. vergrößern oder verkleinern). Diese virtuelle Skalierung der Größe des Benutzers in Bezug auf die virtuelle Umgebung oder die virtuelle Skalierung der virtuellen Merkmale in der virtuellen Umgebung in Bezug auf den Benutzer kann durchgeführt werden, wenn auch von einer ersten virtuellen Position oder einem Ort zu einer zweiten virtuellen Position oder einem zweiten virtuellen Ort in der virtuellen Umgebung gewechselt wird, sodass die Perspektive oder Ansicht des Benutzers entsprechend der Auswahl des Benutzers skaliert oder angepasst werden kann. Eine exemplarische Implementierung eines Virtual Reality-Systems, das es dem Benutzer ermöglicht, sich von einem ersten virtuellen Ort zu einem zweiten virtuellen Ort zu bewegen (z. B. zu teleportieren oder transportieren), und/oder eine Größe des Benutzers relativ zu den virtuellen Merkmalen der virtuellen Umgebung zu skalieren (oder eine Größe der virtuellen Merkmale in der virtuellen Umgebung relativ zum Benutzer zu skalieren), sodass die Perspektive oder Ansicht des Benutzers auf die neu ausgewählte skalierte Größe skaliert wird, wird in 5A dargestellt.
-
Wie in 6D dargestellt, kann ein Benutzer, der an der ersten virtuellen Position A relativ zu einem Merkmal 550 an einer zweiten virtuellen Position B positioniert ist, z. B. das tragbare elektronische Gerät 102 manipulieren, um anzuzeigen, dass sich der Benutzer zu dem Merkmal 650 an der zweiten Position B bewegen möchte. Diese Manipulation des tragbaren elektronischen Geräts 102 kann z. B. dazu führen, dass das Gerät einen Strahl 600 generiert, der auf das Merkmal 650 an der zweiten virtuellen Position B fokussiert ist und anzeigt, dass der Benutzer sich entsprechend dem gewählten Merkmal 650 zu der zweiten virtuellen Position B bewegen (z. B. teleportieren oder transportieren) will.
-
7 stellt ein Beispiel eines generischen Computergeräts 700 und eines generischen mobilen Computergeräts 750 dar, das mit den hierin beschriebenen Techniken verwendet werden kann. Computergerät 700 dient zur Darstellung verschiedener digitaler Computer, wie zum Beispiel Laptops, Desktops, Workstations, persönlicher digitaler Assistenten, Fernseher, Server, Blade Server, Mainframes und anderer geeigneter Computergeräte. Computergerät 750 soll verschiedene Formen mobiler Geräte, wie z. B. persönliche digitale Assistenten, Mobiltelefone, Smartphones und andere ähnliche Computergeräte, darstellen. Die hier dargestellten Komponenten, deren Verbindungen, Beziehungen und Funktionen sollen lediglich als Beispiel dienen und Implementierungen der in diesem Dokument beschriebenen und/oder beanspruchten Erfindungen in keiner Weise einschränken.
-
Das Computergerät 700 beinhaltet einen Prozessor 702, einen Arbeitsspeicher 704, ein Speichergerät 706, eine Hochgeschwindigkeits-Schnittstelle 708, die verbunden ist mit Arbeitsspeicher 704, Hochgeschwindigkeits-Erweiterungsanschluss 710 und eine Niedergeschwindigkeits-Schnittstelle 712 zum Anschluss an den Niedergeschwindigkeits-Bus 714 und das Speichergerät 706. Der Prozessor 702 kann ein halbleiterbasierter Prozessor sein. Der Arbeitsspeicher 704 kann ein halbleiterbasierter Arbeitsspeicher sein. Sämtliche der Komponenten 702, 704, 706, 708, 710 und 712 sind mithilfe verschiedener Busse miteinander verbunden und können, je nach Eignung, an einer gemeinsamen Hauptplatine oder auf andere Weise angebracht sein. Der Prozessor 702 kann Ausführungsanweisungen innerhalb des Computergeräts 700, einschließlich Anweisungen, verarbeiten, die im Arbeitsspeicher 704 oder in dem Speichergerät 706 gespeichert sind, um die grafischen Informationen für ein GUI auf einem externen Eingabe-/Ausgabegerät, z. B. auf der mit der Hochgeschwindigkeits-Schnittstelle 708 gekoppelten Anzeige 716 anzuzeigen. In anderen Implementierungen können, je nach Eignung, mehrere Prozessoren bzw. mehrere Busse gemeinsam mit mehreren Arbeitsspeichern und Speichertypen verwendet werden. Außerdem können mehrere Computergeräte 700 verbunden sein, wobei jedes Gerät Teile der nötigen Operationen (z. B. als Serverbank, Gruppe von Blade-Servern oder Multiprozessor-System) bereitstellt.
-
Der Arbeitsspeicher 704 speichert Informationen innerhalb des Computergeräts 700. In einer Implementierung ist der Arbeitsspeicher 704 ein flüchtiges Speichergerät oder flüchtige Speichergeräte. In einer anderen Implementierung ist der Arbeitsspeicher 704 ein nicht flüchtiges Speichergerät oder nicht flüchtige Speichergeräte. Der Arbeitsspeicher 704 kann auch in einer anderen Form von computerlesbarem Medium, z. B. als magnetischer oder optischer Datenträger, vorliegen.
-
Das Speichergerät 706 kann Massenspeicher für das Computergerät 700 bereitstellen. In einer Ausführungsform kann das Speichergerät 706 ein computerlesbares Medium , zum Beispiel ein Diskettengerät, ein Festplattengerät, ein optisches Datenträgergerät oder ein Bandlaufwerk, ein Flash-Speicher oder ein anderes ähnliches Solid-State-Speichergerät oder eine Reihe von Geräten, zum Beispiel Geräte in einem Speichernetzwerk oder andere Konfigurationen, sein oder enthalten. Ein Computerprogrammprodukt kann physisch in einem Informationsträger enthalten sein. Das Computerprogrammprodukt kann zudem Anweisungen enthalten, die, wenn sie ausgeführt werden, eine oder mehrere Verfahren, wie das zuvor beschriebene, ausführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie z. B. der Arbeitsspeicher 704, das Speichergerät 706 oder der Prozessorspeicher 702.
-
Der Hochgeschwindigkeits-Controller 708 verwaltet bandbreitenintensive Operationen für das Computergerät 700, während der Niedergeschwindigkeits-Controller 712 weniger bandbreitenintensive Operationen verwaltet. Diese Zuordnung von Funktionen ist lediglich exemplarisch. In einer Implementierung ist der Hochgeschwindigkeits-Controller 708 an den Arbeitsspeicher 704, die Anzeige 716 (z. B. durch einen Grafikprozessor oder - beschleuniger) und an die Hochgeschwindigkeits-Erweiterungsanschlüsse 710 gekoppelt, die verschiedene Erweiterungskarten aufnehmen können (nicht dargestellt). In der Implementierung ist der Niedergeschwindigkeits-Controller 712 an das Speichergerät 706 und an den Niedergeschwindigkeits-Erweiterungsanschluss 714 gekoppelt. Der Niedergeschwindigkeits-Anschluss, der verschiedene Kommunikationsanschlüsse einschließen kann (z. B. USB, Bluetooth, Ethernet, Wireless Ethernet), kann mit einem oder mehreren Eingabe-/ Ausgabegeräten, wie z. B. einer Tastatur, einem Zeigegerät, einem Scanner oder einem Netzwerkgerät, wie z. B. einem Switch oder Router, z. B. über einen Netzwerkadapter, verbunden sein.
-
Das Computergerät 700 kann, wie in der Figur dargestellt, in einer Reihe unterschiedlicher Formern implementiert werden. Es kann zum Beispiel als Standardserver 720 oder mehrmals in einer Gruppe jener Server implementiert sein. Es kann zudem als Teil eines Rackserversystems 724 implementiert sein. Außerdem kann es in einem PersonalComputer, wie z. B. Laptop-Computer 722, implementiert sein. Alternativ können Komponenten von Computergerät 700 mit anderen Komponenten in einem Mobilgerät (nicht dargestellt), z. B. Gerät 750, kombiniert sein. Jedes dieser Geräte kann ein oder mehrere Computergeräte 700, 750 beinhalten, und ein gesamtes System kann aus mehreren Computergeräten 700, 750 bestehen, die miteinander kommunizieren.
-
Das Computergerät 750 beinhaltet neben anderen Komponenten einen Prozessor 752, einen Speicher 764, ein Eingabe-/Ausgabegerät, wie z. B. eine Anzeige 754, eine Verbindungsschnittstelle 766, und einen Sendeempfänger 768. Das Gerät 750 kann außerdem mit einem Speichergerät, zum Beispiel einem Microdrive oder anderem Gerät, ausgestattet sein, um zusätzlichen Speicher bereitzustellen. Sämtliche der Komponenten 750, 752, 764, 754, 766 und 768 sind mithilfe verschiedener Busse miteinander verbunden, und mehrere der Komponenten können, je nach Eignung, an einer gemeinsamen Hauptplatine oder auf andere Weise angebracht sein.
-
Der Prozessor 752 kann Anweisungen im Computergerät 750, darunter auch im Speicher 764 gespeicherte Anweisungen, ausführen. Der Prozessor kann als Chipset aus Chips implementiert werden, die separate und mehrere analoge und digitale Prozessoren beinhalten. Der Prozessor kann zum Beispiel für die Koordination der anderen Komponenten des Geräts 750 sorgen, zum Beispiel die Kontrolle von Benutzeroberflächen, Anwendungen, die vom Gerät 750 ausgeführt werden, und die drahtlose Kommunikation durch Gerät 750.
-
Der Prozessor 752 kann mit einem Benutzer über die Steuerschnittstelle 758 und die mit einer Anzeige 754 gekoppelte Anzeigeschnittstelle 756 kommunizieren. Die Anzeige 754 kann z. B. eine TFT-LCD- (Dünnfilmtransistor-Flüssigkristallanzeige) oder eine OLED-Anzeige (organische Leuchtdiodenanzeige) oder eine andere angemessene Anzeigetechnologie sein. Die Anzeigeschnittstelle 756 kann eine geeignete Schaltung umfassen, die die Anzeige 754 dazu bringt, einem Benutzer grafische und andere Informationen zu präsentieren. Die Steuerschnittstelle 758 kann Befehle von einem Benutzer empfangen und diese für das Senden an Prozessor 752 umwandeln. Zusätzlich kann eine externe Schnittstelle 762 für eine Kommunikation mit dem Prozessor 752 sorgen, zum Beispiel, um eine Nahbereichskommunikation des Geräts 750 mit anderen Geräten zu ermöglichen. Die externe Schnittstelle 762 kann zum Beispiel in einigen Implementierungen eine drahtgebundene Kommunikation bereitstellen, oder in anderen Implementierungen eine drahtlose Kommunikation, zudem können mehrere Schnittstellen verwendet werden.
-
Der Speicher 764 speichert Informationen innerhalb des Computergeräts 750. Der Arbeitsspeicher 764 kann als ein computerlesbares Medium bzw. als eines von mehreren computerlesbaren Medien, als flüchtiger Arbeitsspeicher bzw. als flüchtige Arbeitsspeicher oder als ein nicht flüchtiger Arbeitsspeicher bzw. als nicht flüchtige Arbeitsspeicher implementiert werden. Erweiterungsspeicher 774 kann ebenfalls bereitgestellt und mit dem Gerät 750 über Erweiterungsschnittstelle 772 verbunden werden, die zum Beispiel eine SIMM (Single In Line Memory Module)-Kartenschnittstelle beinhalten kann. Ein derartiger Erweiterungsspeicher 774 kann zusätzlichen Speicherplatz für Gerät 750 bereitstellen oder kann auch Anwendungen oder andere Informationen für Gerät 750 speichern. Insbesondere kann Erweiterungsspeicher 774 Anweisungen zum Ausführen oder Ergänzen der zuvor beschriebenen Prozesse sowie sichere Informationen beinhalten. Somit kann der Erweiterungsspeicher 774 z. B. als Sicherheitsmodul für Gerät 750 bereitgestellt werden und mit Anweisungen programmiert sein, die die sichere Verwendung von Gerät 750 erlauben. Außerdem können über die SIMM-Karten sichere Anwendungen bereitgestellt werden, zusammen mit zusätzlichen Informationen, wie z. B. die Ablage von Informationen zur Identifizierung auf der SIMM-Karte in einer Weise, die nicht gehackt werden kann.
-
Der Arbeitsspeicher kann, wie nachfolgend erläutert, beispielsweise Flash-Speicher und NVRAM-Speicher beinhalten. In einer Implementierung ist ein Computerprogrammprodukt physisch in einem Informationsträger enthalten. Das Computerprogrammprodukt enthält Anweisungen, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren, wie die zuvor beschriebenen, durchführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie z. B. der Arbeitsspeicher 764, der Erweiterungsspeicher 774 oder der Prozessorspeicher 752, das beispielsweise über den Sendeempfänger 768 oder die externe Schnittstelle 762 empfangen werden kann.
-
Gerät 750 kann über die Kommunikationsschnittstelle 766, die bei Bedarf eine digitale Signalverarbeitungsschaltung beinhalten kann, drahtlos kommunizieren. Die Verbindungsschnittstelle 766 kann Verbindungen mit verschiedenen Kommunikationstypen oder -protokollen aufbauen, darunter auch unter anderem GSM-Sprachanrufe, SMS, EMS, oder MMS-Messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000 oder GPRS. Eine derartige Kommunikation kann zum Beispiel über Funkfrequenzempfänger 768 erfolgen. Zusätzlich kann eine Kurzstreckenkommunikation stattfinden, wie z. B. unter Verwendung eines Bluetooth-, WLAN- oder anderen derartigen Sendeempfängern (nicht dargestellt). Außerdem kann GPS (globale Positionsbestimmungssystem)-Empfängermodul 770 zusätzliche mit der Navigation und dem Standort verbundene drahtlose Daten für Gerät 750 bereitstellen, die ggf. von Anwendungen verwendet werden können, die auf Gerät 750 ausgeführt werden.
-
Das Gerät 750 kann zudem unter Verwendung des Audio-Codec 760, der gesprochene Informationen von einem Benutzer empfangen und diese in nutzbare digitale Informationen konvertieren kann, hörbar kommunizieren. Der Audio-Codec 760 kann ebenfalls akustische Töne, beispielsweise durch einen Lautsprecher, z. B. in einem Mobilteil von Gerät 750, für einen Benutzer erzeugen. Diese Audiodaten können Audiodaten von Sprachanrufen sein, Tonaufnahmen (z. B. Sprachnachrichten, Musikdateien, usw.) und darüber hinaus Audiodaten beinhalten, die von Anwendungen erzeugt werden, die auf Gerät 750 ausgeführt werden.
-
Das Computergerät 750 kann, wie in der Figur dargestellt, in einer Reihe unterschiedlicher Formen implementiert werden. Es kann zum Beispiel als Mobiltelefon 780 implementiert werden. Es kann außerdem als Teil eines Smartphones 782, persönlichen digitalen Assistenten oder eines anderen ähnlichen Mobilgeräts implementiert werden.
-
Verschiedene Implementierungen der hier beschriebenen Systeme und Techniken können in digitalen elektronischen Schaltungen, integrierten Schaltkreisen, speziell konzipierten ASICs (anwendungsspezifischen integrierten Schaltungen), Computerhardware, Firmware, Software und/oder in Kombinationen davon ausgeführt werden. Diese verschiedenen Implementierungen können eine Implementierung in einem oder mehreren Computerprogrammen einschließen, die auf einem programmierbaren System ausführbar und/oder interpretierbar sind, das mindestens einen programmierbaren Prozessor beinhaltet, bei dem es sich ggf. um einen Spezial- oder Universalprozessor handelt, und der zum Empfangen von Daten und Anweisungen von und zum Übertragen von Daten und Anweisungen an ein Speichersystem, an mindestens ein Eingabegerät und mindestens ein Ausgabegerät gekoppelt ist.
-
Diese Computerprogramme (auch bekannt als Programme, Software, Anwendungen oder Code) beinhalten Maschinenanweisungen für einen programmierbaren Prozessor und können in eine hochrangige verfahrens- und/oder objektorientierte Programmiersprache und/oder in eine Assembler-/Maschinensprache umgesetzt werden. Die hierin verwendeten Begriffe „maschinenlesbares Medium“ „computerlesbares Medium“ beziehen sich auf jedes Computerprogrammprodukt, jede Vorrichtung und/oder jedes Gerät (z. B. magnetische Platten, optische Platten, Arbeitsspeicher, programmierbare Logikgeräte (PLDs)), die dazu verwendet werden, Maschinenanweisungen und/oder Daten an einen programmierbaren Prozessor, einschließlich eines maschinenlesbaren Mediums, das Maschinenanweisungen als maschinenlesbares Signal entgegennimmt, zu senden. Der Begriff „maschinenlesbares Signal“ bezieht sich auf jedes Signal, das dazu verwendet wird, Maschinenanweisungen und/oder Daten an einen programmierbaren Prozessor zu senden.
-
Um die Interaktion mit einem Benutzer zu ermöglichen, können die hier dargestellten Systeme und Techniken auf einem Computer mit einem Anzeigegerät umgesetzt werden (z. B. einem CRT-(Kathodenstrahlröhren) oder LCD- (Flüssigkristallanzeige)-Monitor, einschließlich einer Tastatur und eines Zeigegerätes (z. B. einer Maus oder eines Trackballs), mit denen der Benutzer Eingaben in den Computer vornehmen kann. Es können auch andere Geräte verwendet werden, um die Interaktion mit einem Benutzer zu ermöglichen; zum Beispiel kann es sich bei der Rückmeldung an den Benutzer um jegliche Art von sensorischer Rückmeldung (z. B. visuelle, akustische oder taktile Rückmeldung) handeln; auch die Eingaben des Benutzers können in beliebiger Form, d. h. auch akustisch, sprachlich oder taktil, empfangen werden.
-
Die hier beschriebenen Systeme und Techniken können in einem Computersystem umgesetzt werden, das eine Backend-Komponente (z. B. einen Datenserver) oder eine Middleware-Komponente (z. B. einen Anwendungsserver) oder eine Frontend-Komponente (z. B. einen Client-Computer mit einer grafischen Benutzeroberfläche oder einen Web-Browser beinhaltet, durch den der Benutzer mit einer hier dargestellten Implementierung des Gegenstandes interagieren kann), oder eine beliebige Kombination jener Backend-, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation (z. B. ein Kommunikationsnetzwerk) verbunden sein. Beispiele von Kommunikationsnetzwerken beinhalten ein lokales Netzwerk („LAN“), ein Großraumnetzwerk („WAN“) und das Internet.
-
Das Computersystem kann Client und Server beinhalten. Ein Kunde 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 eine Client-Server-Beziehung zueinander aufweisen.
-
Eine Reihe von Ausführungsformen wurde beschrieben. Dennoch ist zu verstehen, dass unterschiedliche Modifikationen vorgenommen werden können, ohne vom Gedanken und Umfang der Erfindung abzuweichen.
-
Außerdem erfordern die in den Figuren dargestellten logischen Abläufe nicht die bestimmte dargestellte Reihenfolge oder sequenzielle Reihenfolge, um wünschenswerte Ergebnisse zu erzielen. Darüber hinaus können andere Schritte bereitgestellt oder Schritte aus den beschriebenen Abläufen eliminiert werden, und andere Komponenten können zu den beschriebenen Systemen hinzugefügt werden oder aus diesen entfernt werden. Dementsprechend befinden sich andere Ausführungsformen innerhalb des Umfangs der folgenden Ansprüche.
-
Implementierungen der verschiedenen hierin beschriebenen Techniken können in Digitalelektronikschaltungen oder in Computerhardware, -firmware, -software oder in Kombinationen davon implementiert werden. Implementierungen können als ein Computerprogrammprodukt implementiert werden, d. h. als ein in einem Informationsträger physisch verkörpertes Computerprogramm, wie z. B. in einem maschinenlesbaren Speichergerät (computerlesbares Medium) zur Verarbeitung oder zum Steuern des Betriebs von Datenverarbeitungsgeräten, wie z. B. einem programmierbaren Prozessor, einem Computer oder mehreren Computern. So kann ein computerlesbares Speichermedium konfiguriert werden, Anweisungen zu speichern, die, wenn sie ausgeführt werden, einen Prozessor (z. B. einen Prozessor auf einem Host-Gerät, einen Prozessor auf einem Client-Gerät) veranlassen, einen Prozess auszuführen.
-
Ein Computerprogramm, wie beispielsweise das bzw. die vorstehend beschriebenen Computerprogramm(e), kann in jeder beliebigen Form von Programmiersprache geschrieben sein, darunter auch in kompilierten und interpretierten Sprachen, und kann in jeder beliebigen Form eingesetzt werden, darunter auch als unabhängiges Programm oder als Modul, Komponente, Subroutine oder als andere für eine Computerumgebung geeignete Einheit. Ein Computerprogramm kann in einem Computer oder mehreren Computern an einem Standort oder verteilt über mehrere Standorte und verbunden durch ein Kommunikationsnetzwerk zur Verarbeitung eingesetzt werden.
-
Verfahrensschritte können von einem oder mehreren programmierbaren Prozessoren durchgeführt werden, die ein Computerprogramm ausführen, um Funktionen durch Verarbeiten von Eingabedaten und Erzeugen von Ausgaben auszuführen. Die Verfahrensschritte können zudem durch eine Spezial-Logikschaltung, z. B. FPGA (feldprogrammierbare Universalschaltung) oder eine ASIC (anwendungsspezifische integrierte Schaltung) durchgeführt und eine Vorrichtung als solche implementiert werden.
-
Prozessoren, die für die Ausführung eines Computerprogramms geeignet sind, beinhalten beispielsweise sowohl Universal- als auch Spezial-Mikroprozessoren sowie alle Arten von einem oder mehreren Prozessoren jeglicher Art von digitalen Computern. In der Regel empfängt ein Prozessor Anweisungen und Daten von einem Nur-Lese-Speicher oder einem Direktzugriffsspeicher oder auch von beiden. Computerelemente können mindestens einen Prozessor zum Ausführen von Anweisungen und eine oder mehrere Speichergeräte zum Speichern von Anweisungen und Daten beinhalten. Im Allgemeinen kann ein Computer auch ein oder mehrere Massenspeichergeräte zum Speichern von Daten, wie z. B. magnetische, magneto-optische Datenträger oder optische Datenträger, beinhalten oder operativ damit gekoppelt sein, um Daten davon zu empfangen oder darauf zu übertragen oder beides. Informationsträger, die für das Verkörpern von Computerprogrammanweisungen und -daten geeignet sind, beinhalten alle Formen von nicht flüchtigen Speichern, einschließlich beispielsweise Halbleiterspeichergeräte, wie z. B. EPROM, EEPROM und Flashspeicher; magnetische Datenträger, z. B. interne Festplatten oder Wechselplatten; magneto-optische Datenträger; und CD-ROMs und DVD-ROMs. Der Prozessor und der Arbeitsspeicher können mit Spezial-Logikschaltungen ergänzt werden oder darin integriert sein.
-
Um eine Interaktion mit einem Benutzer bereitzustellen, können Implementierungen auf einem Computer mit einem Anzeigegerät, z. B. einem Kathodenstrahlröhre (CRT)-Monitor, einem Leuchtdioden (LED)- oder Flüssigkristallanzeige (LCD)-Monitor zum Anzeigen von Informationen für den Benutzer und einer Tastatur und einem Zeigegerät, z. B. einer Maus oder einem Trackball, über die der Benutzer Eingaben in den Computer vornehmen kann, implementiert werden. Es können auch andere Arten von Geräten verwendet werden, um für eine Interaktion mit einem Benutzer zu sorgen; beispielsweise kann eine dem Benutzer gelieferte Rückmeldung in beliebiger Form von sensorischer Rückmeldung, z. B. als visuelle Rückmeldung, akustische Rückmeldung oder taktile Rückmeldung, vorliegen; ebenso kann die Eingabe von dem Benutzer in beliebiger Form, darunter auch als akustische, taktile oder Spracheingabe, empfangen werden.
-
Implementierungen können in einem Computersystem implementiert werden, das eine Backend-Komponente, z. B. einen Datenserver, oder eine Middleware-Komponente, z. B. einen Applikationsserver, oder eine Frontend-Komponente, z. B. einen Client-Computer mit grafischer Benutzeroberfläche oder einen Webbrowser beinhaltet, mit dem bzw. der ein Benutzer mit einer Implementierung oder einer Kombination jener Backend-, Middleware- oder Frontend-Komponente interagieren kann. Komponenten können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation, wie z. B. ein Kommunikationsnetzwerk, miteinander vernetzt sein. Beispiele von Kommunikationsnetzwerken beinhalten ein lokales Netzwerk („LAN“) und ein Großraumnetzwerk („WAN“), wie z. B. das Internet.
-
Obgleich bestimmte charakteristische Merkmale der beschriebenen Implementierungen, wie hierin beschrieben, veranschaulicht wurden, werden Fachleuten auf dem Gebiet nunmehr viele Modifikationen, Substitutionen, Änderungen und Äquivalente ersichtlich sein. Deshalb sollte davon ausgegangen werden, dass die hinzugefügten Ansprüche für die Abdeckung aller jener Modifikationen und Änderungen, die in den Rahmen der Implementierung fallen, bestimmt sind. Es versteht sich, dass diese lediglich als Beispiele und in keiner Weise als Einschränkung vorgestellt wurden, und dass verschiedene Änderungen in Form und Details vorgenommen werden können. Alle Teile der hier beschriebenen Vorrichtung oder des hier beschriebenen Verfahrens können in jeder beliebigen Kombination zusammengeführt werden, mit Ausnahme von Kombinationen, die sich gegenseitig ausschließen. Die hierin beschriebenen Implementierungen können verschiedene Kombinationen und/oder Subkombinationen von Funktionen, Komponenten und/oder Merkmalen der verschiedenen beschriebenen Implementierungen beinhalten.