-
Gebiet der Erfindung
-
Die
vorliegende Erfindung bezieht sich allgemein auf das Gebiet der
Datenkompression und insbesondere auf das Komprimieren von 3D Multimedia Transfers über eine
Netzwerkverbindung.
-
Stand der
Technik
-
3D
Multimedia umfasst Videokonferenzen, interaktive Spiele, Webseiteninhalte,
audio/visuelle (A/V) Aufzeichnungen, um nur einige zu nennen (nachstehend
im Sammelbegriff als „A/V-Daten" bezeichnet). A/V-Daten
erfordern sowohl umfangreichen Speicherplatz als auch eine beträchtliche
Bandbreite, um die Daten über
ein Netzwerk zu übertragen.
Da die meisten Datenempfänger
nicht über
eine Bandbreite verfügen,
die für
den Empfang der A/V-Daten in ihrer ursprünglichen Form ausreicht, werden
diese herkömmlicherweise über einen örtlichen
Hochgeschwindigkeitsbus oder eine spezielle Hochgeschwindigkeitsdatenverbindung
abgerufen.
-
Als
Beispiel seien Computerspiele angeführt. Zu den Spielen zählen einfache
Einzelbenutzer-Simulatoren für
Flipper, Kartenspiele, Glücks-
und Kampfspiele, etc. oder komplexere Spiele für mehrere Spieler, bei denen
jeder an die Reihe kommt, gegen das System antritt und letztendlich
die Ergebnisse verglichen werden. Zu den wohlbekannten Hightech-Spielsystemen
gehören
Nintendo® und
die Sony PlayStation®. Diese und andere Spielsysteme
setzen die Geometrie ein, um zwei- oder dreidimensionale Objekte
innerhalb von Spielmodellen zu beschreiben. Insbesondere komplexe
Objektoberflächen
werden gewöhnlich
dargestellt durch eine Kombination aus einer oder mehr Basisobjektformen,
z.B. Splines, NURBs (non-uniform rational splines), Texturabbildungen
und Tesselation kongruenter Dreiecke. Typischerweise wird ein beliebiges
Objekt durch Dreiecks-Tesselation definiert, wobei jedem Dreieck räumliche
Koordinatentupel X, Y (und vielleicht Z), Farbe, Normale und andere
Attribute zugehörig
sind. Wenn diese Informationen mit Hunderten oder Tausenden von
Polygonen in mäßig komplexen
Objekten vervielfacht werden, summieren sie sich zu Daten, welche
aus zweckgemäßen Graphiksystemen und örtlichen
Speichern von Graphikdaten abgerufen werden müssen. Die Erfordernisse für den Datentransfer
verbieten es, gegen entfernte Spieler anzutreten. Zwar wurden einige
Spiele entworfen, um mittels eines Modems einen Fernspieler direkt
zu einem Spiel aufzurufen und dieses auszutragen, aber diese Lösung war
oft schwerfällig,
langsam und inkonsistent; eine Übertragung
von reichem Inhalt war nicht durchführbar.
-
Ein
weiteres Beispiel sind Anwendungen für Videokonferenzen. Ebenso
wie bei Spielen geht es bei diesen Anwendungen um den Transfer von
großen
Datenvolumen. Jedoch müssen
diese Anwendungen die Daten an entfernte Orten (z.B. zu Konferenzteilnehmern) übertragen.
Deshalb besitzen sie die erforderlichen Hochgeschwindigkeitsdatenverbindungen,
z.B. mindestens eine 128 Kbit ISDN Verbindung zu dem Fernteilnehmer
oder vorzugsweise ein T1 oder eine schnellere Rahmenrelaisverbindung.
Leider sind diese flotten Verbindungs-Backbones Benutzern nicht allgemein
zugänglich
und erfordern zur Aufrechterhaltung eines aktiven Links eine komplexe
technische Unterstützung.
Außerdem
hat das Abhalten von Konferenzen mit den Modemspielen die Einschränkung gemein,
direkte Verbindungen von Benutzer zu Benutzer zu benötigen.
-
Mit
dem jüngsten
Aufkommen von überall
erhältlichen
preiswerten Internetverbindungen, ist das Herstellen einer Kommunikationsverbindung
zwischen mehreren Fernteilnehmern in einem Netzwerk verhältnismäßig unkompliziert
geworden. Dies hat das Interesse daran verstärkt, diese allgemein verfügbaren Links
für die Übertragung
von A/V-Daten zu nutzen. Bedingt durch die Kosten und die technische Komplexität bei der
Aufrechterhaltung von ISDN-, Rahmenrelais- und anderen Hochgeschwindigkeitsverbindungen
handelt es sich bei den Internetverbindungen gemeinhin leider um
verhältnismäßig langsame,
auf Modems basierenden Verbindungen. Da Modemverbindungen allgemein
nur eine durchschnittliche Bitrate von 14–40 Kbits pro Sekunde erzielen, sind
sie nicht in der Lage, in angemessener Zeit reichen Spielinhalt,
Konferenzdaten oder andere A/V-Daten zu übertragen. Dieses Problem verschärft sich
mit jedem zusätzlichen
Fernteilnehmer, da A/V-Daten dann an mehrere Empfänger verteilt
werden müssen
und dadurch weitere Bandbreiten-Ressourcen aufbrauchen.
-
Im
Bemühen,
die durch die Bandbreite bedingten Einschränkungen zu verringern und einen Nutzen
aus den zwar einfach verfügbaren,
aber langsamen Netzwerkverbindungen zu ziehen, wurden Anstrengungen
zur Kompression von A/V-Daten unternommen. Beispielsweise wurden
Daten- und Geometriekompression bereits eingesetzt, um Informationsinhalte
in 2D und 3D Modellen zu reduzieren. Zu den früheren Kompressionsversuchen
zählen
Bildkompression (z.B. JPEG), das Definieren von Objekten mit gemeinsamen
Merkmalen (z.B. gemeinsamen Kanten), kleine Texturabbildungen für große Bereiche,
etc. Beispiele für
einige dieser und für
andere Techniken sind in US Patent Nr. 5740409 zu finden, welches
einen 3D Graphikbeschleuniger für
komprimierte Geometrie lehrt, und in US Patenten Nr. 5793371, 5867167
und 5870094, welche verschiedene Methoden für effizienteres Kodieren von
3D Modellen lehren. Diese Kompressionstechniken sind sowohl auf
A/V-Spieldaten (welche Modelle verwenden) leicht anwendbar als auch
auf andere A/V-Daten, welche Daten in einem kompatiblen komprimierbaren
Format darstellen, z.B. die digitale MPEG (Moving Picture Experts
Group) Videokodierung.
-
Zusätzlich zur
Geometriekompression wurden auch universale Datenkompressionsverfahren auf
A/V-Daten angewandt. Zu derartigen Techniken zählen die Huffman-Kodierung
(s. Huffman: „A
Method For Construction of Minimum Redundancy Codes", Proceedings IRE,
40, 10 Seiten: 1098–1100 (Sept.
1952)), die Tunstall-Kodierung (s. die Doktorthese von Tunstall: „Synthesis
of Noiseless Compression Codes",
Georgia Institute of Technology (Sept. 1967)) und die Lempel-Ziv-Kodierung
(s. „A
Universal Algorithm For Sequential Data Compression", IEEE Transactions
on Information Theory, IT-23, 3, Seiten 337–343 (Mai, 1977)) und Lauflängenkodierung
von Modelldaten (s. z.B. US Patent Nr. 3656178). Diese universalen
Kompressionstechniken sind auf alle Datenformate anwendbar.
-
In „Higher
Bandwidth X", ACM
Multimedia, Proceedings of the International Conference, New York,
NY, USA, 15. Oktober 1994 (15.10.1994), Seiten 89–96, XP000618613
offenbart J. Danskin ein Verfahren zum Transfer objektbezogener
Daten, wobei absolute Koordinaten (X, Y) des Objekts zu relativen
Koordinaten (ΔX, ΔY) transformiert
werden und dann unter Verwendung eines separaten Modells dritten
Grades für
jede der Koordinaten eine Voraussage gemacht wird.
-
Ferner
offenbart
EP 0 889
440 A2 Verfahren und Systeme zur Kompression und zur Dekompression
von 3D Geometriedaten, welche regelmäßig gekachelte Oberflächenabschnitte
enthalten, wobei das offenbarte Kompressionsverfahren das Darstellen
eines Oberflächenabschnitts
als „Eckpunktraster" beinhaltet; dies
umfasst das Spezifizieren eines Erweiterungswerts umfasst und das
Kodieren der Eckpunktparameterwerte von Eckpunkten innerhalb des
Oberflächenabschnitts.
-
Überdies
offenbart
EP 0 536
801 A2 ein Verfahren zur Kompression einer Mehrzahl von
Datenwerten umfassend die Schritte des Berechnens der Unterschiede
zwischen benachbarten Datenwerten, des Identifizierens einer Mehrzahl
häufig
vorkommender Unterschiede, des Aufspürens der Häufigkeit des Vorkommens der
identifizierten Unterschiede, des Erzeugens einer ersten Kodierung
für die
identifizierten Unterschiede, wobei die Länge der Kodierung auf der Häufigkeit
des Vorkommens basiert, des Erzeugens einer zweiten Kodierung für jene Unterschiede,
die nicht die identifizierten Unterschiede sind, und für jeden
errechneten Unterschied, des Kodierens des errechneten Unterschieds
mittels der ersten Kodierung, wenn der errechnete Unterschied ein
identifizierter Unterschied ist, und des Kodierens des errechneten
Unterschieds mittels der zweiten Kodierung, wenn der errechnete
Unterschied nicht ein identifizierter Unterschied ist, um die Kompression
der Daten durchzuführen.
-
Schließlich offenbart
EP 0 757 332 A2 ein Kompressionsverfahren,
bei welchem dreidimensionale Geometrie zunächst als verallgemeinertes
Dreieckgitter dargestellt und eine Datenstruktur verwendet wird,
welche jedem Fall eines Eckpunkts in einem linearen Strom gestattet,
einen Durchschnitt zweier Dreiecke zu spezifizieren.
-
Leider
ist selbst nach Anwendung universaler und geometrischer Kompression
noch immer eine beträchtliche
Datenmenge vorhanden, welche vor Spielen, Konferenzen, Betrachtung
von 3D Multimedia und Teilnahme an interaktiven 3D Chat Rooms transferiert
werden muss, und es hat den Anschein, dass weitere Anwendungen für A/V-Daten
so funktionieren, als ob sie ihre Daten aus örtlichen Speichern oder Hochgeschwindigkeitsverbindungen
abrufen. Deshalb ist eine weitere Datenreduktion erforderlich.
-
Diese
Probleme werden durch die Erfindung gelöst, wie sie in den Ansprüchen spezifiziert
ist, gemäß welchen
der Transfer von objektbezogenen Daten durch Transferieren von Informationen,
welche Schätzfunktionen
identifizieren, anstatt durch Transferieren von Positionsdaten für jeden
einzelnen Punkt des Objekts erfolgt.
-
Ein
auf einer Rechnereinrichtung implementiertes Verfahren zur Kompression
eines Datenmodells, welches durch mehrere Datenpunkte definiert ist
und von einem Anbieter zu einem Empfänger transferiert wird. Kennzeichnenderweise
kommunizieren der Anbieter und der Empfänger über ein Netzwerk miteinander.
Für einen
ersten Datenpunkt und einen zweiten Datenpunkt, welche in dem Modell definiert
sind, werden erste Offsets anhand des ersten Datenpunkts für den zweiten
Datenpunkt bestimmt. Daraufhin kann der zweite Datenpunkt im Bezug
auf die bestimmten ersten Offsets erneut kodiert werden. Die ersten
Offsets werden kodiert, damit sie weniger Speicherplatz benötigen als
für den
ersten Datenpunkt erforderlich ist, was ihren schnelleren Transfer
ermöglicht.
Zweite Offsets können
aus den ersten Offsets für
einen dritten, innerhalb des Modells definierten Datenpunkt kaskadenartig
erhalten werden.
-
Weitere
Kompressionsverfahren und -vorrichtungen werden offenbart.
-
Kurzbeschreibung der Zeichnungen
-
1 zeigt
einen Inhaltanbieter, der mit mehreren Inhaltsempfängern kommuniziert.
-
2 veranschaulicht
ein Dreieck mit in einem 3D Raum definierten Eckpunkten.
-
3 veranschaulicht
das Anwenden von Schätzfunktionen,
um künftige
Eckpunktstellen für eine
Rotation des Dreiecks aus 2 im Uhrzeigersinn
zu schätzen.
-
4 stellt
in einem Schaubild lineare Bewegung als Basis für eine Schätzfunktion dar.
-
5 stellt
in einem Schaubild eine schwankende Bewegung als Basis für eine Schätzfunktion dar.
-
6 veranschaulicht
physische Verformung als Basis für
eine Schätzfunktion.
-
7 veranschaulicht
eine allgemeine Umgebung, in welcher die Erfindung oder Teile derselben
praktisch angewandt werden können.
-
Detaillierte Beschreibung
-
Obwohl
die vorliegende Erfindung auf eine breite Palette von Anwendungsprogrammen,
Diensten und Vorrichtungen anwendbar ist, welche (wie A/V-Daten) die Übertragung
von reichem Inhalt über ein
Netzwerk erfordern, konzentriert sich die folgende Beschreibung
auf die Lieferung von reichen Multimedia Inhalten aus einer Spiele-Umgebung an Spieler,
die über
das Netzwerk verteilt sind. Das Spiele-Paradigma wurde gewählt, da
es die Lieferung von A/V-Daten in einer Form lehrt, wie sie auch
für andere Anwendungen,
z.B. für
Videokonferenzen, erforderlich ist; gleichzeitig erläutert sie
die logistische Komplexität,
die bei Vorhandensein vieler Teilnehmer, welche interaktiv Einfluss
auf die Lieferung von A/V-Daten nehmen, inhärent ist.
-
1 zeigt
einen Spielinhaltanbieter 100, welcher mit mehreren Benutzern/Spielern 102–108 über ein öffentlich
zugängliches
Netzwerk 110 wie das Internet kommuniziert. Ebenfalls dargestellt
ist ein Koordinator 112, welcher, wie nachstehend erläutert, die
Spielaktivität
koordinieren kann. Zum besseren Verständnis wird davon ausgegangen,
dass es sich bei dem zur Verfügung
gestellten Inhalt um ein dreidimensionales Spiel handelt (daher auch
die Bezeichnung der Benutzer auch als Spieler). Es wird angenommen,
dass das Spiel ein 3D Modell enthält, in welchem Objekte innerhalb
des Modells Attribute besitzen, wie Position, Farbe, Beschaffenheit,
Beleuchtung, Ausrichtung, etc., und in welchen die Objekte letztendlich
durch ein oder mehr Dreiecke definiert sind. Allerdings ist die
vorliegende Erfindung, wie aus der folgenden Beschreibung sehr schnell hervorgeht,
mit sämtlichen
Formen von multimedialer Inhaltslieferung anwendbar und kann mit
diesem genutzt werden.
-
Wie
dargestellt, befinden sich mehrere Spieler 102–108 in
Kommunikation mit einem Inhaltanbieter. In einer Ausführungsform
verwenden die Spieler einen Internetbrowser als Spielvorrichtung,
wobei der Browser ein installiertes Plugin hat (z.B. eine Hilfsanwendung),
welche bei der Verarbeitung des von dem Anbieter übertragenen
Inhalts hilft. Anstelle eines Browsers können auch andere Netzwerkanwendungsprogramme,
z.B. entsprechende Spielanwendungen, benützt werden. Der Einfachheit
halber wird davon ausgegangen, dass der Anbieter 100 als
zentraler Datenverteilungspunkt für die Spieldaten fungiert und
an jeden Spieler 102–108 alle
erforderlichen Daten überträgt. Selbstverständlich ist
die Spielsoftware konfigurierbar, so dass Spieler einander direkt Informationen
senden können
oder sich ein Spieler oder eine andere Stelle im Netzwerk als Verteilungspunkt
für andere
Spieler einsetzen lasst (z.B. zwecks Verteilung der Verarbeitungslast).
-
Ebenfalls
dargestellt ist ein Spielkoordinator 112, welcher als zentraler
Punkt zum Start von Spielen oder Einstieg in laufende Spiele verwendet
werden kann. Ein solcher Koordinator ist nützlich in einem Rahmen wie
dem Internet, weil an Spieler durch ihren Internetserviceanbieter
routinemäßig Zufallsnetzwerkadressen
vergeben werden. Da eine Netzwerkverbindung zwischen Computern im
allgemeinen verlangt, dass die Computer gegenseitig ihre Netzwerkadressen
kennen, kann ein bekannter Koordinator solche Verbindungen erleichtern,
in dem er Spielern gestattet, mit ihm in Kontakt zu treten und die
ihnen derzeitig zugeordnete Netzwerkadresse bekanntzugeben. Daraufhin
kann der Koordinator interessierte Spieler an einen oder mehrere
Inhaltanbieter (z.B. 100) weiterleiten. Ein Koordinator
kann auch gebraucht werden, um Identitäten von Spielern vor Inhaltanbietern
zu verbergen, etwa durch Verbergen der Netzwerkadresse, oder um
die Spielerregistrierung bei verschiedenen Anbietern zu koordinieren.
Viele Gesellschaften stellen jetzt „Hubs" zur Verfügung, um die Teilnahme an Spielen
zu erleichtern, siehe z.B. die MSN Spielzone (die frühere Internetspielzone)
der Microsoft Corporation von Redmond Washington unter http://games.msn.com
oder http://www.microsoft.com/games.
-
Kontaktiert
ein Spieler einen Anbieter, versucht dieser typischerweise den Spielinhalt
an den Spieler zu übertragen.
Falls der Browser des Spielers noch nicht für den Empfang eines derartigen
Inhalts konfiguriert ist, kann dies eine automatische Benachrichtigung
an den Spieler auslösen,
das erforderliche Plugin, den benötigten Treiber oder andere
Daten zu installieren, welche für
das Spiel des Anbieters notwendig sind.
-
Sobald
ein Spieler mit einem Inhaltanbieter in Kommunikation getreten ist,
muss der Anbieter den Spielinhalt an den Spieler senden. Wie oben
erläutert,
wurden verschiedene Methoden verwendet, um die Datenmenge zu verringern,
die tatsächlich
an solche Spieler gesendet werden muss. Eine beträchtliche
Menge dieser Daten beinhaltet das Übertragen von Koordinatenwerten
für Objekte
innerhalb eines 3D Modells. Es ist von Vorteil, den Raum, welcher
zur Speicherung derartiger Koordinaten benötigt wird, weiter zu verringern.
-
2 veranschaulicht
ein typisches Dreieck 200 mit drei Eckpunkten 202, 204, 206,
welche entsprechend einem Koordinatensystem für ein bestimmtes Modell definiert
sind. Obgleich die Erfindung auf 2-, 3- oder n-dimensionale Koordinaten
anwendbar ist, wird der Einfachheit halber angenommen, dass jeder
Eckpunkt im 3D Raum durch ein Koordinatentupel X, Y und Z definiert
ist.
-
Typischerweise
werden Eckpunktwerte mittels 32-Bit ANSI/IEEE-754-1985 Gleitkommazahlen kodiert
(ein Standard, welcher von dem Institute for Electrical and Electronic
Engineers (IEEE) und dem American National Standards Institue (ANSI))
ausgegeben wird). Demnach benötigt
jedes 3D Tupel 96 Bits zur Kodierung seiner Koordinaten. Es wird
angenommen, dass die Eckpunkte benützt werden, um Dreiecke für Objekte
mit kongruenter Tesselation innerhalb eines 3D Modells oder Spiels
zu definieren. Obwohl andere Formen, die nicht dreieckig sind, verwendet
werden können,
um Objekte zu definieren, wird von der Dreieck-Tesselation ausgegangen,
da diese ein gängiges
Erfordernis zur Hardwarewiedergabe darstellt.
-
Um
die Übertragungslast
zwischen dem Inhaltanbieter und Datenempfängern zu reduzieren, wird die
standardmäßige 32-Bit
IEEE Darstellung durch ein spezielles Kodierformat ersetzt. Anstatt
allen Eckpunkten verschiedene Koordinatentupels zuzuteilen, werden
einige Eckpunkte mittels Offsets von anderen Eckpunkten kodiert.
Die Basis für
die Offsets kann, wie oben erläutert,
auf einer Kombination von Objektgeometrie, vorausgesagter Bewegung
für das Objekt
und anderen Faktoren beruhen. (Einige dieser Grundlagen können nach
Wunsch verwendet werden.
-
Wenn
beispielsweise ein bestimmter Bereich eines Objekts eine bestimmte
Art gleichförmiger
Bewegung durchläuft,
z.B. eine Linear- oder Rotationsbewegung, dann kann ein Schlüsseleckpunkt
für ein Objekt
oder einen Bereich desselben definiert werden, und bei den übrigen Eckpunkten
für das
Objekt oder den Bereich kann es sich um funktionell zugeordnete
Werte in Entsprechung zu dem Schlüsseleckpunkt und der Analyse
der Bewegung handeln. Während
sich die Erläuterung
auf einen Inhaltanbieter konzentriert, welcher die Modellaktivität analysiert und
die Ausgabe an einen Empfänger
entsprechend formatiert, ist zu beachten, dass die selben Techniken
natürlich
auch durch einen Empfänger
angewandt werden können,
um komprimierte Daten an den Anbieter zurückzusenden. Bewegung ist jedoch nicht
notwendig; diese Techniken finden sowohl auf statische als auch
sich verändernde
Modelle Anwendung. Auch unbewegliche Objekte werden durch Dreiecke
dargestellt, und folglich lassen sich Dreieckpositionen voraussagen
(und zwar mit hoher Genauigkeit, da keine Bewegung vorhanden ist).
-
3 zeigt
beispielsweise eine Kodierung für
das in 2 dargestellte Dreieck 200, wobei die Positionswerte
für den
zweiten Eckpunkt S 254 und den dritten Eckpunkt T 256 als
Funktion eines Wurzel-Eckpunkts R 252 berechnet werden.
(Ein „Wurzel"-Eckpunkt ist ein
(z.B. durch typische Koordinatenwerte) vollständig definierter Eckpunkt,
von dem aus andere Eckpunkte definiert werden. Angenommen, das Dreieck
durchläuft
eine geringfügige
Rotation im Uhrzeigersinn, so dass sich die Eckpunkte RST in Positionen
RA 258 („A" für
aktuell), SA 260 und TA 262 drehen.
Zu beachten gilt, dass diese Erläuterung
zwei Zeitpunkte betrifft, wobei das Dreieck zum Zeitpunkt t = 0
vor der Rotation steht und die Eckpunkte RST aufweist, wohingegen
es zum Zeitpunkt t = 1 die Rotation abgeschlossen hat und die Eckpunkte
RASATA besitzt.
-
Es
ist jedoch anzumerken, dass das Konzept der Zeit für ein gegebenes
Modell willkürlich
ist. Insbesondere werden Schätzfunktionen
dadurch beschrieben, dass sie die Position bei dem nächsten Zeitrahmen
oder Zeitpunkt voraussagen. Jedoch kann sich eine Anzahl positioneller
Berechnungen einschieben, bevor der „nächste" Zeitpunkt erreicht ist. Insbesondere
kann die Anzahl sich einschiebender Schritte variieren, oder eine
Funktion kann erforderlich sein, um direkt zu einem bestimmten Zeitrahmen
zu springen. Ein Grund für
eine derartige Variabilität
besteht in der Aufrechterhaltung der Synchronisation zwischen Empfängern, welche
Netzwerkverbindungen mit unterschiedlichen/-m Geschwindigkeiten/Durchsatz
benützen.
-
Das
Gesamtproblem hierbei besteht darin, wie die Veränderung der Eckpunktwerte für das Dreieck
zu kodieren sind. Anstatt das Dreieck RASATA mit den standardmäßigen IEEE
Gleitkommawerten zu kodieren, welche 3 × 32 Bits pro Eckpunkt bzw.
288 Bits erfordern, wird jeder RASATA Eckpunkt mit
einem Deltawert kodiert. Dieser Wert bezieht sich nicht darauf,
dass eine Veränderung
der Position für
den Eckpunkt zwischen zwei Rahmen aufgezeichnet wird. Stattdessen
wird in einer Ausführungsform
eine Post-Rotationsposition RA 258 für Eckpunkt
R 252 bestimmt, indem zuerst eine Schätzfunktion A() 270 auf
Eckpunkt R 252 angewandt wird. Die Schätzfunktion berücksichtigt
Faktoren wie die Geometrie und Bewegung des Dreiecks, um daraus
eine geschätzte Position
für andere
Eckpunkte abzuleiten.
-
Das
Ergebnis dieser Funktion 270 ist eine geschätzte Stelle
RE 264 („E" für „estimated", dt. „geschätzt") für RA 258. Wie gezeigt, besteht eine
Ungleichheit zwischen der geschätzten 264 und
der aktuellen 258 Eckpunktposition. Angenommen, dass sowohl
ein Inhaltanbieter als auch ein Inhaltempfänger eine Bibliothek mit Schätzfunktionen
oder zustandbasierten Analyseprogrammen teilen, um Schätzfunktionen
adaptiv durchzuführen,
so kann die künftige
RA Position für Eckpunkt R mit einem Fehlerkorrektur
Delta (Δ)-Wert
für die
Ungleichheit, z.B. Δ1 = RA – RE, kodiert werden. Ist, wie veranschaulicht,
RA = RE, dann ist Δ1 gleich
Null. Ein Empfänger/Decoder muss
lediglich die richtige Funktion 270 und den entsprechenden Δ-Wert kennen,
um festzustellen, dass RA = A(R) + Δ1.
-
Ebenso
wie bei der Kodierung von RA kann eine künftige Position
SA 260 für Eckpunkt S 254 geschätzt und
als Deltawert kodiert werden. Anstatt SA auf
Grundlage von S zu schätzen,
kann SA durch Anwendung einer Schätzfunktion
B() 272 auf RA geschätzt werden,
woraus sich SE = B(A(R) + Δ1)
ergibt. Wie veranschaulicht, geht aus dieser Berechnung eine geschätzte Stelle
SE 266 nahe SA 260 hervor. Ebenso
wie bei RA kann ein Deltawert Δ2 definiert werden,
um den geschätzten
Wert SE zu korrigieren, und als der Wert
für SA gespeichert werden. Wenn ein Empfänger/Decoder
versucht, Eckpunkt SA zu rekonstruieren,
ist ihm dies aufgrund der bereits erhaltenen Informationen zur Rekonstruktion
von Eckpunkt RA möglich. Dies heißt, dass
SA = B(A(R) + Δ1) + Δ2,
da der Wert von R 252 ja bekannt ist.
-
Ein ähnliches
Verfahren ist zur Bestimmung einer künftigen Position von TA 262 für Eckpunkt T 256 anwendbar,
wobei eine Schätzfunktion
C() 274 auf SA 260 angewandt
wird, um TA 262 aus SA 260 kaskadenartig
zu bestimmen. Somit ist TA = C(B(A(R) + Δ1)
+ Δ2) + Δ3. Alles, was benötigt wird, um das Dreieck zum
Zeitpunkt t = 1 zu dekodieren, ist der ursprüngliche Wert eines „Wurzel"-Knotens R 252 von dem
Dreieck zum Zeitpunkt t = 0, die Deltawerte und die anzuwendende
Funktion. Für
komplexe Objekte mit mehreren Dreiecken kann eine Kette derartiger Schätzkorrekturen
aufgespürt
werden.
-
Bisher
ist es jedoch eine Vermutung, dass die Deltawerte präzise genug
sind, um das Speichern eines Wertes zwecks exakter Rekonstruktion
der Eckpunktstellen RA, SA und
TA zu gestatten. Da ein Ziel darin besteht,
die Übertragungserfordernisse
zu verringern, werden Deltawerte mit einer Bitgröße kodiert, die unter den 32-Bit
Standardzahlen liegt (wenn dem nicht so wäre, bestünde keine Notwendigkeit für Δ-Schätzpositionen).
Mit jeder verketteten Schätzung
kann sich der Fehler vergrößern, und
letztendlich die Δ-Präzision übertreffen.
Wenn dies geschieht, wird ein neuer „Wurzel"-Knoten als Basis für nachfolgende Eckpunktschätzungen
benützt.
-
Durch
Kodierung von Eckpunktpositionen als Deltawerte innerhalb einer
bestimmten Δ-Präzision können Positionen
mit beliebig weniger Bits kodiert werden als unter dem ANSI/IEEE-754-1985
32-Bit Format verlangt. Das Ergebnis daraus ist, Δ Bitgrößenerfordernisse
und die Häufigkeit,
mit der ein neuer Wurzelknoten benötigt wird (z.B. potentiell
eine vollständige
96-Bit Eckpunktkodierung), aufeinander abzustimmen. Je geringer
die Δ Präzision,
desto häufiger
die Wurzelknoten. (Anzumerken ist, dass eine Annahme lautet, die
Auswahl einer geeigneten Schätzfunktion 270, 272, 274 erzeuge
letztendlich einen Wert, welcher die verfügbare Δ Präzision übertrifft. Dies ist nicht unbedingt
so und hängt
von der Präzision
der Schätzfunktionen
ab.) Des Weiteren können
Deltawerte als ganzzahlige Offsets kodiert werden (wodurch einige
Rundungsfehler zugelassen werden), und so wird die Zahl der Bits
reduziert, welche zur Kodierung der Werte notwendig sind.
-
Zu
beachten gilt, dass die exakte Rekonstruktion von Eckpunktwerten
nicht immer wünschenswert
ist. Beispielsweise ist es selbstverständlich, dass bei gewissen Objekten,
wie z.B. einer entfernten Hintergrundszenerie, eine akkurate Eckpunktkonstruktion
nicht so bedeutsam ist wie für
weniger entfernte Objekte im Vordergrund. Demzufolge können Δ-Werte auf eine Präzision von
nur wenigen (z.B. 4–8)
Bits eingeschränkt
sein und Rundungsfehler verwendet werden, um rekonstruierte Werte
zur Verfügung
zu stellen, welche sich aktuellen Eckpunktpositionen annähern. Ebenso
wie bei der vorigen Fehleranhäufung
können
Rundungsfehler aufgespürt werden,
um zu erkennen, wenn ein neuer Wurzelknoten für die Hintergrundszenerie transferiert
werden muss. Alternativ dazu kann ein Staffelungsfaktor in die für die entfernte
Szenerie verwendeten Δ-Werte eingegliedert
werden. Ein derartiger Wert erhöht
die Bitgröße der Deltawerte
effektiv durch Senken der Präzision.
Beispielsweise kann die Z (Tiefe)-Koordinate als ein Multiplikator
des Δ-Werts
benützt
werden, so dass der Multiplikator desto größer ist, je weiter ein Objekt
von einer gegenwärtigen
Sichtperspektive aus entfernt liegt. Auf diese Weise kann der effektive
Bereich der Δ-Werte
beliebig groß sein,
bei einer entsprechenden Präzisionsabnahme.
-
Nicht
erläutert
wurden bisher besondere Schätzfunktionen.
Dies ist teilweise dadurch begründet,
dass derartige Funktionen in Entsprechung zum Anwendungskontext
stark variieren müssen.
Im Wesentlichen berücksichtigen
diese Funktionen die Geometrie eines Objekts (oder eines Teilbereichs
desselben) und die Art einer Bewegung, welche das Objekt durchläuft, um
aus diesen Daten die künftigen Positionen
für Objekteckpunkte
vorauszusagen. Wie oben erläutert,
können
diese Voraussagen verkettet sein. Die folgenden FIG. veranschaulichen
typische Objektbewegungen, welche als Basis für Voraussagefunktionen dienen
können.
Selbstverständlich
dienen diese einfachen Beispiele lediglich der Veranschaulichung,
und komplexere Funktionen sind anwendbar und werden bei besonderen
Voraussetzungen von Modellen angewandt.
-
Bei 4 handelt
es sich um ein Schaubild, welches eine lineare Bewegung darstellt.
Wie gezeigt, wird die Bewegung eines Objekts 300 im Hinblick
auf seine Veränderung
an Höhe 302 im
Verlauf der Zeit 304 aufgespürt. Objekt 300 verändert seine Höhe im Bezug
auf die Zeit sachte. Wenn ein Inhaltanbieter 100 (1)
das Objekt 300 kodieren will, kann eine Feststellung erfolgen,
dass das Objekt (oder ein Teilbereich desselben) eine lineare Bewegung
durchläuft.
Daraufhin kann der Anbieter eine Funktion anwenden, z.B. A() 256,
welche die lineare Bewegung des Objekts nützt, um künftige räumliche Positionen für die Eckpunkte
des Objekts vorauszusagen, während
sich das Objekt im Lauf der Zeit bewegt. Somit können Deltawerte eingesetzt
werden, anstatt alle Eckpunkte mittels 32-Bit IEEE-754 Gleitkommawerten
kodieren zu müssen.
Wie oben erläutert
können
die Deltawerte mit beliebig wenig Bits kodiert werden.
-
Anstatt
nur eine einzige Funktion für
die lineare Bewegungsschätzung
zur Verfügung
zu haben, kann eine Tabelle mit Schätzformeln sowohl bei dem Inhaltanbieter
als auch bei dem Datenempfänger
gespeichert werden. Diese Formeln können entsprechend typischen
Modelleigenschaften und unterschiedlichen Bewegungsarten indiziert
werden, so dass sie sich auf verschiedene Datentransfers anwenden
lassen, z.B. multimedialen Inhalts, Spiele, etc. Angenommen, dass
mehrere Formeln bestehen, welche sich auf lineare Bewegung beziehen,
kann ein Inhaltanbieter eine Schätzung
unter Verwendung mehrer Funktionen berechnen (z.B. parallel), um
zu ermitteln, welche Funktion die „beste" Schätzung
ergibt (z.B. ein Ergebnis mit minimalen Fehler bezüglich aktueller
Koordinaten SA 264, TA 268).
Ein Indexeintrag in die Formeltabelle kann in einen Datenstrom eingebettet
werden, der an einem Empfänger gesandt
wird.
-
5 stellt
in einem Schaubild eine einfache oszillierende Bewegung als Basis
für eine
Schätzfunktion
dar. Gezeigt wird ein Schaubild für ein Objekt mit Höhenwerten,
welche zwischen einer höheren 310 und
einer niedrigeren 312 Höhenposition schwanken.
-
Ebenso
wie bei der linearen Bewegung ist ein Inhaltanbieter in der Lage
festzustellen, dass ein Objekt (oder ein Teilbereich davon) eine
schwankende Bewegung durchläuft.
Daraufhin kann der Anbieter eine Funktion anwenden, z.B. A() 256,
welche das Schwanken ausnützt,
um künftige
räumliche
Positionen für
die Eckpunkte des Objekts vorauszusagen, während sich das Objekt im Laufe
der Zeit fortbewegt. Anstatt alle Eckpunkte mit 32-Bit IEEE-754 Gleitkommawerten
kodieren zu müssen,
können
Deltawerte eingesetzt werden. Wie oben erörtert, können die Deltawerte mit beliebig
wenig Bits kodiert werden.
-
Da
die schwankende Bewegung eine Form zyklischer Bewegung darstellt,
muss der Anbieter lediglich komprimierte Daten übertragen, welche einem Zyklus
entsprechen, und zwar gemeinsam mit einer eingebetteten Nachricht
an den Datenempfänger,
dass diese Daten einem Zyklus entsprechen. Der Empfänger kann
dann die Verantwortung für
die Wiedergabe des Zyklus ohne einen weiteren Eingang von dem Anbieter übernehmen,
bis der Empfänger
selbst oder irgendein anderer Handelnder das Objekt beeinflusst/mit
diesem interagiert.
-
Wie
bei der linearen Bewegung können
Einträge
in eine Tabelle mit Schätzformeln
für verschiedene
zyklische Bewegungen vorgenommen werden, und aus den Verfügbaren wird
dann die beste Schätzfunktion
gewählt.
-
6 veranschaulicht
physische Verformung als Basis für
eine Schätzfunktion.
Dargestellt ist eine Stange 330, welche gebogen wird und
dann in ihre ursprüngliche
Lage 330 zurückschnappt.
Mit gestrichelten Linien sind zwei Zwischenbiegepositionen 332, 334 dargestellt.
-
Ebenso
wie bei den anderen Bewegungsbeispielen, ist ein Inhaltanbieter
in der Lage festzustellen, dass ein Objekt (oder ein Teilbereich
desselben) verformt wird. Jedoch kann die Verformung eines Objekts,
z.B. durch Biegen, Drücken
und Verdrehen, eine nicht gleichmäßige Bewegung von Schlüsselpositionen
innerhalb des Objekts hervorrufen. Beispielsweise durchläuft der
Mittelpunkt 336 der Stange, wie gezeigt, nur eine geringe
bis gar keine Bewegung, während
die Stange verbogen wird, wohingegen sich die dargestellten Endpunkte 338, 340 stärker bewegen.
-
Anstatt
jeden Eckpunkt der Stange 330 mit herkömmlichen IEEE-754 Werten zu
kodieren, erkennt ein Anbieter, dass die Eckpunkte des Objekts eine
Verlagerung in verschiedenen Stufen durchlaufen und nützt diese
Information zur Kodierung der Bewegung mit Deltawerten unterschiedlicher
Größe. Dies
bedeutet, dass der mittlere Eckpunkt einen sehr kleinen Deltawert
erfordert, etwa von nur einigen Bits, wohingegen die Endeckpunkte
höhere
Präzision (mehr
Bits) verlangen, damit ihre Bewegung richtig kodiert wird.
-
So
kann ein Anbieter Flags in einen Datenstrom einbetten, um die Größe der Deltawerte
für verschiedene
Bereiche des Objekts 330 anzuzeigen. Insbesondere lassen
sich Objekteckpunkte für
eine bestimmte Deltagröße gruppieren
und gemeinsam übertragen,
wodurch sich die Anzahl der Flags, die übertragen werden müssen, verringert.
Als weitere Optimierung können
Deltawerte (wie oben erläutert) auch
als ganzzahlige Werte kodiert werden, was zu einer erheblichen Verringerung
der Transfererfordernisse führt.
Eine andere Optimierung besteht in der Erkenntnis, dass für eine Bewegung,
wie das Beugen eines Objekts, nicht alle Eckpunkte an einen Empfänger übertragen
werden müssen.
Beispielsweise müssen
lediglich die Position und die Deltawerte für die Endpunkte 338, 340 gesendet
werden, da sich die ursprüngliche
Position und die Deltaposition für
Zwischenpunkte entlang der Länge
des Objekts interpolieren lassen.
-
7 und
die folgende Erläuterung
sind dazu bestimmt, eine kurze, allgemeine Beschreibung einer geeigneten
Rechnerumgebung zu liefern, in welcher sich die Erfindung implementieren
lässt.
Die Beschreibung der Erfindung kann unter Bezugnahme auf verschiedene
High-Level-Programmmodule und/oder Low-Level-Hardwarekontexte erfolgen. Fachleute
auf diesem Gebiet erkennen, dass Programmmodulreferenzen mit Low-Level-Anweisungen getauscht
werden können.
-
Programmmodule
umfassen Verfahren, Funktionen, Programme, Komponenten, Datenstrukturen
und dergleichen, welche spezielle Aufgaben ausführen oder bestimmte abstrakte
Datentypen implementieren. Die Module können sowohl in Rechnersysteme
mit einem oder mit mehreren Prozessoren als auch in Handgeräte und steuerbare
Verbrauchergeräte
eingegliedert werden. Selbstverständlich können Module auf einem einzelnen
Rechnereinrichtung implementiert oder über eine verteilte Netzwerkumgebung
bearbeitet werden, in welcher sich Module sowohl in örtlichen
als auch in entfernten Speichervorrichtungen befinden können.
-
Ein
beispielhaftes System für
die Implementierung der Erfindung umfasst eine Rechnereinrichtung 402 mit
einem Systembus 404, um verschiedene Komponenten innerhalb
der Rechnereinrichtung miteinander zu koppeln. Der System 404-Bus
kann einem beliebigen von mehreren Busstrukturtypen entsprechen,
einschließlich
einem Speicherbus oder Speichercontroller, einem peripheren Bus
und einem lokalen Bus, in welchen eine beliebige aus der Vielzahl
herkömmlicher
Busstrukturen Anwendung findet, z.B. PCI, AGP, VESA, Microchannel,
ISA und EISA, um nur einige zu nennen. Anzumerken ist, dass nur
ein einziger Bus dargestellt ist, obwohl mehrere Busse typischerweise
Leistungsverbesserungen erzielen. Kennzeichnenderweise ist an den
Bus 402 ein Prozessor 406 angebunden, ein Speicher 408,
Speichereinrichtungen (z.B. feste 410, austauschbare 412,
optische/mit Laser 414), eine Videoschnittstelle 416,
Eingangs/Ausgangs-Schnittstellenports 418 und eine Netzwerkschnittstelle 420.
-
Der
Prozessor 406 kann irgendeiner der zahlreichen, im Handel
erhältlichen
Prozessoren sein, einschließlich
Intel Prozessoren oder DEC Alpha, PowerPC, programmierbare Gate-Arrays,
Signalprozessoren oder dergleichen. Dual- oder Quad-Prozessoren und andere
Multi-Prozessor-Architekturen sind ebenfalls einsetzbar. Der Systemspeicher
umfasst einen Speicher mit wahlfreiem Zugriff (RAM/Random Access
Memory) 422 und einen statischen oder reprogrammierbaren
Nurlesespeicher (ROM/Read Only Memory) 424. Ein in dem ROM
gespeichertes Basis-Eingabe-Ausgabe-System (BIOS) enthält Programmroutines
für den
Informationstransfer zwischen Komponenten 402 des Geräts oder
zur Geräteinitialisierung.
-
Der
Festspeicher 410 bezeichnet gemeinhin die Festplatte und
andere halbpermanent angeschlossene Medien, wohingegen ein austauschbarer Speicher 412 allgemein
auf ein Device Bay verweist, in welches austauschbare Medien, wie
eine Floppy Disk, entfernbar eingesteckt werden. Der optische/Laser-Speicher 414 beinhaltetet
Vorrichtungen, die auf CD-ROM,
DVD oder CD-RW Technologie beruhen, und ist üblicherweise an den Systembus 404 mittels
einer Gerätschnittstelle 426, 428, 430 gekoppelt.
Die Speichersysteme und zugehörigen
computerlesbaren Medien bieten Speicherung von Daten und ausführbare Anweisungen
für die
Rechnereinrichtung 402. Anzumerken ist, dass weitere Speicheroptionen
Magnetkassetten, Bänder,
Flash-Speicherkarten, Memory Sticks, digitale Video Disks und Ähnliches
umfassen.
-
Die
beispielhafte Rechnereinrichtung 402 ist in der Lage, eine
Anzahl von Programmmodulen in RAM 422, ROM 424 und
Speichereinrichtungen 410, 412, 414 zu
speichern und diese auszuführen.
Kennzeichnenderweise enthalten Programmmodule ein Betriebssystem 432,
Anwendungsprogramme 434 (z.B. einen Webbrowser oder ein
Netzwerkanwendungsprogramm), etc. und Anwendungsdaten 436. Das
Programmmodul oder eine andere Systemausgabe kann durch das Videosystem 416 verarbeitet werden
(z.B. durch ein Wiedergabegerät
für 2D und/oder
3D Graphiken), welches an den Systembus 404 und eine Ausgabeeinrichtung 438 gekoppelt
ist. Zu den typischen Ausgabeeinrichtungen zählen Monitore, Flachbildschirme,
Flüssigkristallbildschirme und
Aufzeichnungsgeräte
wie Videokassettenrekorder.
-
Bei
einem Benutzer der Rechnereinrichtung 402 handelt es sich
typischerweise um eine Person, die mit der Rechnereinrichtung mittels
Bedienung einer Eingabevorrichtung 440 kommuniziert. Zu
den gängigen
Eingabevorrichtungen gehören
Tastatur, Maus Tablett, berührungssensitive
Oberflächen,
digitaler Stift, Joystick, Mikrophon, Gamepad, Satellitenschüssel, etc.
Eingaben können
auch durch Manipulation einer virtuellen Umgebung vorgenommen werden
oder mittels Verarbeitung der Ausgabe aus einer Datendatei oder
einer anderen Rechnereinrichtung.
-
Von
der Rechnereinrichtung 402 wird erwartet, dass sie in einer
Netzwerkumgebung unter Verwendung logischer Verbindungen zu einer
oder mehreren entfernten Rechnereinrichtungen funktioniert. Bei
einer derartigen entfernten Rechnereinrichtung 442 kann
es sich um einen Webserver oder ein anderes Programmmodul handeln,
welches ein Netzwerkprotokoll (z.B. HTTP, File Transfer Protocol
(FTP), Gopher, Wide Area Information Server (WAIS)), einen Router,
eine Partnervorrichtung oder einen anderen gängigen Netzwerkknoten benützt und
typischerweise viele oder alle der für die Rechnereinrichtung 402 erläuterten
Elemente umfasst. Die Rechnereinrichtung 402 besitzt eine
Netzwerkschnittstelle 420 (z.B. eine Ethernet-Karte), welche
an den Systembus 404 gekoppelt ist, um eine Kommunikation mit
der Ferneinrichtung 442 zu ermöglichen. Sowohl die örtliche
Rechnereinrichtung 402 als auch die entfernte Rechnereinrichtung 442 können kommunikativ an
ein Netzwerk 444 gekoppelt sein, wie an ein WAN, LAN, an
Gateway, Internet oder an einen anderen öffentlichen oder privaten Datenweg.
Selbstverständlich
können
auch andere Kommunikationsverbindungen zwischen den Rechnereinrichtungen
verwendet werden, z.B. ein Modem 446, welches an einen Schnittstellenport 418 gekoppelt
ist.
-
Entsprechend
den Gepflogenheiten von Fachleuten auf dem Gebiet der Computer-Hard- und -Softwareprogrammierung
wird die vorliegende Erfindung unter Bezugnahme auf Handlungen und
symbolische Darstellungen von Vorgängen beschrieben, welche zuweilen
als von Rechnern ausgeführt
bezeichnet werden. Selbstverständlich
umfassen diese Handlungen und symbolisch dargestellten Vorgänge sowohl
die Verarbeitung von elektrischen Signalen, welche Datenbits darstellen,
durch den Prozessor 406, was eine Transformation oder Reduktion
der elektrischen Signaldarstellung bewirkt, als auch den Erhalt
von Datenbits an Speicherstellen im Speicher 408 und den
Speichersystemen 410, 412, 414, um die
Funktionsweise des Computersystems und/oder die Verarbeitung von
Signalen zu rekonfigurieren oder in anderer Weise zu verändern. Die
Speicherstellen, an denen Datenbits erhalten werden, sind physische
Stellen mit besonderen elektrischen, magnetischen oder optischen
Eigenschaften, welche den Datenbits entsprechen.
-
Nachdem
die Prinzipien der Erfindung anhand der dargestellten Ausführungsformen
beschrieben und veranschaulicht wurden, ist ersichtlich, dass sich
diese Ausführungsformen
in ihrer Anordnung und in ihren Details modifizieren lassen, und
zwar ohne Abweichung von besagten Prinzipien.
-
Obwohl
sich die vorstehende Beschreibung – aus Gründen der Anschaulichkeit – auf die
Kompression von Gleitkommawerten für Eckpunkte konzentriert hat,
versteht es sich von selbst, dass beispielsweise die selben Techniken
und Analysen auch auf andere numerische Werte angewandt werden können, welche
zwischen einem Inhaltanbieter und einem Spieler (z.B. zur Kompression
von Soundeffekten) transportiert werden müssen. In Anbetracht der breiten
Vielfalt wechselnder Anwendungen für die Erfindung dienen die
detaillierten Ausführungsformen
nur der Veranschaulichung und sollten nicht als Einschränkung der
Tragweite der Erfindung verstanden werden. Vielmehr werden als Erfindung
alle derartigen Modifikationen, wie sie in die Tragweite der folgenden
Ansprüche
fallen können,
und Äquivalente dazu
beansprucht.