DE69924700T2 - Verfahren zur Darstellung von durch Oberflächenelemente repräsentierten grafischen Objekten - Google Patents

Verfahren zur Darstellung von durch Oberflächenelemente repräsentierten grafischen Objekten Download PDF

Info

Publication number
DE69924700T2
DE69924700T2 DE69924700T DE69924700T DE69924700T2 DE 69924700 T2 DE69924700 T2 DE 69924700T2 DE 69924700 T DE69924700 T DE 69924700T DE 69924700 T DE69924700 T DE 69924700T DE 69924700 T2 DE69924700 T2 DE 69924700T2
Authority
DE
Germany
Prior art keywords
elements
representation
surface element
objects
cell
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69924700T
Other languages
English (en)
Other versions
DE69924700D1 (de
Inventor
Hanspeter Somerville Pfister
Jeroen Van Baar
Collin E. Osterbaan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE69924700D1 publication Critical patent/DE69924700D1/de
Application granted granted Critical
Publication of DE69924700T2 publication Critical patent/DE69924700T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft allgemein Grafiksysteme und spezieller das Wiedergeben von graphischen Objekten, die durch verbundene, nulldimensionale Punkte dargestellt werden.
  • HINTERGRUND DER ERFINDUNG
  • In der Computergrafik kann man Objekte im dreidimensionalen Raum in vielen unterschiedlichen Methoden darstellen, indem verschiedene einfache graphische Elemente verwendet werden. Die bekannten Darstellungen, die im Allgemeinen genutzt werden, um graphische Objekte darzustellen, sind die implizierte, die geometrische, die volumetrische und die Partikeldarstellung.
  • Implizite Darstellung
  • In einer impliziten Darstellung kann das graphische Objekt aus beliebigen mathematischen und/oder physikalischen Funktionen erzeugt werden. Um zum Beispiel die Konturen einer Hohlkugel zu zeichnen, gibt man in die Bildberechnungs-Funktionseinheit einfach die Funktion x2 + y2 + z2 = r ein (in kartesischen Koordinaten), wobei für eine massive Kugel die Funktion x2 + y2 + z2 ≤ r ist. Farbe und andere Materialeigenschaften können in ähnlicher Weise synthetisch erzeugt werden. Es können Funktionen verwendet werden, um verschiedene geometrische Formen, physikalische Objekte und reale oder imaginäre Modelle zu beschreiben. Implizite Funktionen sind zum Synthetisieren von komplexen Objekten, zum Beispiel eine menschliche Abbildung, nicht geeignet.
  • Geometrische Darstellung
  • Klassisch wurden dreidimensionale Objekte geometrisch als ein Netz von vieleckigen Seitenflächen modelliert. In der Regel sind die Polygone Dreiecke. Die Größe jeder Seitenfläche wird so gemacht, dass sie dem Krümmungsgrad des Objekts im Bereich der Seitenfläche entspricht. Viele Polygone werden benötigt, wenn das Objekt einen hohen Krümmungsgrad aufweist, weniger für relativ flache Bereiche. Polygon-Modelle werden in vielen Anwendungen wie virtuelle Trainingsumgebungen, dreidimensionale Modellier-Tools und Videospiele verwendet. Als ein charakteristisches Merkmal befassen sich geometrische Darstellungen nur mit den Oberflächenmerkmalen von graphischen Objekten.
  • Es treten jedoch Probleme auf, wenn ein Polygon verformt wird, weil die Größe der Seitenflächen nicht mehr mit den örtlichen Krümmungsgraden im deformierten Objekt übereinstimmt. Außerdem kann eine Verformung die relative Auflösung lokaler Bereiche verändern. In jedem Fall wird es notwendig, das Objekt entsprechend der verformten Krümmung neu zu vernetzen. Weil erneutes Vernetzen (Polygonisierung) hinsichtlich der Berechnungszeit kostspielig ist, wird es meistens als ein Vorbearbeitungsschritt durchgeführt. Folglich sind Polygon-Modelle für Objekte, die dynamisch verformt werden müssen, nicht gut geeignet.
  • Volumetrische Darstellung
  • In einer anderen Darstellung wird das Objekt im dreidimensionalen Raum abgetastet, um eine volumetrische Datenmenge, zum Beispiel eine MRI- oder CT-Aufnahme zu erzeugen. Jede Abtastung wird Raumpunkt genannt. Eine typische Datenmenge kann Millionen von Raumpunkten enthalten. Um eine volumetrische Datenmenge wiederzugeben, wird das Objekt typischerweise segmentiert. Es können Isoflächen identifiziert werden, um auf spezifische volumetrische Bereiche zu fokussieren. Zum Beispiel kann eine volumetrische Datenmenge des menschlichen Kopfes die Raumpunkte entsprechend den stofflichen Eigenschaften wie Knochen- und Weichgewebe segmentieren.
  • Wegen der großen Anzahl von Raumpunkten ist das physikalisch basierte Modellieren und die Verformung von volumetrischen Datenmengen rechnerisch noch ein sehr teuerer Arbeitsgang. Oftmals ist man nur an Oberflächenmerkmalen interessiert, wobei das Innere des Objekts effektiv ignoriert werden kann.
  • Als Beispiel wird im US-Patent 4 953 087 die Verwendung eines Oberflächengenerators vorgeschlagen, der das Teilungswürfel-Verfahren ausführt, um eine Anzahl von gerichteten Punkten zu erzeugen, die die Oberfläche von Scheibchen tomographischer Daten definieren.
  • Partikel-Darstellung
  • Eine Partikel-Darstellung von Objekten wird oft verwendet, um Fluidströmungen zum Beispiel in Windkanal-Simulationen zu modellieren. Den Partikeln werden bestimmte Eigenschaften wie Richtungsgeschwindigkeit gegeben, um einzelne Partikel durch die Fluidströmung zu verfolgen oder um sich von der gesamten Strömung ein Bild zu machen.
  • Eine andere Anwendung der Partikel-Darstellung besteht in der Vorstellung von „wolkenähnlichen" Objekten wie Rauch, Staub oder Nebel. Auf Licht aussendende Partikel kann ein Schattierungsmodell angewendet werden, um wolkenähnliche Objekte wiederzugeben. Außerdem können Partikel mit Hilfe von Energiefunktionen auf Unterräume beschränkt werden, um Flächen zu modellieren. Ein Vorteil von Partikel-Wolken ist, dass die Wolken sehr verformbar sind. Nachteilig ist, dass die Partikel in der Wolke unverbunden sind und sich individuell verhalten, wenn sie Kräften ausgesetzt werden. Außerdem sind Partikel ganz ungeeignet, um Oberflächenstrukturen von massiven Objekten oder Modellen darzustellen.
  • Überlegungen zur Modellierung
  • Es ist eine Anzahl von Verfahren zum nicht-physikalischen und physikalischen Modellieren von graphischen Objekten in den verschiedenen Darstellungen bekannt. Modelle, die nicht-physikalisch basiert sind, verwenden oft Kurvenlineale, Bézier-Kurven und dergleichen. Dort werden Steuerpunkte manipuliert, um den gewünschten Verformungsgrad zu erreichen.
  • Die physikalischen Verfahren fallen allgemein in zwei Kategorien, die Mechanik starrer Körper und die dynamische Verformung. Die Mechanik starrer Körper löst in der Regel Differentialgleichungen, die aus der Newtonschen Mechanik folgen. In Computersystemen können numerische Integratoren verwendet werden, um die Differentialgleichungen zu lösen. Dynamische Verformung kann durch Finite-Elemente-Methoden (FEM) oder Masse-Feder-Systeme modelliert werden.
  • Überlegungen zur Wiedergabe
  • Die Wiedergabezeit für diese konventionellen Darstellungselemente hängt von der Komplexität der zu modellierenden Objekte ab. Zum Beispiel ist die Größe der Polygone bei einer geometrischen Darstellung eines komplexen Objekts typischerweise sehr klein, etwa die Größe eines Pixels, und das Objekt wird durch viele Polygone dargestellt. Die Polygone werden in der Regel mit Scheitelpunkten dargestellt, die ein Dreieck bilden.
  • Um ein Polygon wiederzugeben, wird an der Projektion des Dreiecks eine Bildrasterwandlung (rasterisiert) durchgeführt, um die Intensität jedes Pixels, das in die Projektion fällt, zu berechnen. Dies ist eine relativ zeitaufwändige Operation, wenn etwa ein Pixel oder weniger durch das Polygon erfasst ist. Das Ersetzen der Polygone durch Punktmuster und das Projizieren der Punktmuster auf den Bildschirm kann ein effizienteres Verfahren zur Wiedergabe von Objekten sein.
  • Zur Wiedergabe von Volumina ist eine Anzahl von Verfahren bekannt. Im Allgemeinen ist Volumen-Rendering sehr komplex. Wenn die Anzahl von Raumpunkten nicht begrenzt ist, kann eine Echtzeit-Wiedergabe zeitaufwändig sein.
  • Ein Echtzeit-Wiedergabesystem, beschrieben in dem US-Patent Nr. 5 781 194 „Real-time Projection of Voxel-based Object" („Echtzeit-Projektion eines Objekts auf der Basis von Raumpunkten"), am 14. Juli 1998 an Ponomarov et al. erteilt, konstruiert eine Kette von Oberflächen-Raumpunkten mittels Zuwachsvektoren zwischen Oberflächen-Raumpunkten. Diese Darstellung ist erfolgreich beim Modellieren und Anzeigen von Objekten, die sehr detaillierte Oberflächenbereiche zeigen. Das Modellieren der Bewegung eines starren Körpers wird mit Hilfe von Scripting-Mechanismen vorgenommen, denen es an Realismus fehlt, weil keine physikalisch-basierten Verfahren verwendet werden. Dieses Herangehen schließt die Möglichkeit einer realistischen Verformung von Objekten nicht ein. Die Objekte wirken wie starre Körper im Raum, die nicht auf Kollisionen und andere verformende Kräfte reagieren.
  • Im Stand der Technik wurden diskrete Partikel oder Punkte als ein Meta-Darstellungselement in graphischen Systemen verwendet, siehe Levoy et al. „The Use of Points as a Display Primitive" („Die Verwendung von Punkten als ein Anzeige-Darstellungselement"), Technischer Bericht 85-022 der Universität von North Carolina, 1985. Sie haben ein Verfahren zum Umwandeln eines Objekts in eine Punktdarstellung beschrieben. Dort weist jeder Punkt eine Position und eine Farbe auf. Sie beschreiben außerdem ein Verfahren zum Wiedergeben der Punkte als eine glatte Oberfläche.
  • Die Punkte werden als nulldimensionale Abtastwerte der Dichte modelliert und mittels einer Objekt-Ordnung-Projektion wiedergegeben. Bei einer Wiedergabe können sich mehrere Punkte auf das gleiche Pixel projizieren, und die Intensitäten dieser Punkte müssen gefiltert werden können, um eine endgültige Intensität für das in Betracht gezogene Pixel zu erzielen. Dieses Filtern wird vorgenommen, indem eine Wägung der Intensität, die die dem Abstand von der projizierten Punktposition auf dem Bildschirm zu dem entsprechenden Pixel-Mittelpunkt proportional ist, vorgenommen wird. Das Abwägen wird mit einem Gauß-Filter modelliert. Ein verbesserter Tiefenpuffer (Z-Puffer) berücksichtigt Tiefenvergleiche mit einer Toleranz, die das Mischen von Punkten in einem kleinen Bereich von Tiefenwerten ermöglicht. Als ein Vorteil erlaubt es ihre Punktdarstellung einem, das Objekt von jedem Betrachtungspunkt wiederzugeben.
  • In einem anderen Verfahren, wie es von Grossman et al. in „Sample Rendering" (Wiedergabe von Mustern) in Proceedings of the Eurographics Workshop ´98, Rendering Techniques 1998, Drettakis, G., Max, N. (die Redaktion), Seiten 181-192, Juli 1998 beschrieben wird, werden die Punktmuster erzielt, indem senkrechte Projektionen von Dreiecksnetzen auf einem gleichseitigen Dreieckgitter abgetastet werden. Für jedes Dreieck des Gitters, das durch die Projektion des Dreiecksnetzes erfasst ist, wird ein Abtastpunkt hinzugefügt. Es wurde ein gleichseitiges Dreiecksgitter gewählt, um eine angemessene Abtastung zur Verfügung zu stellen, die dicht genug ist, um zu garantieren, dass jedes Pixel durch mindestens einen Abtastwert erfasst ist.
  • Alle diese bekannten Darstellungen haben gewisse Einschränkungen. Deshalb ist das, was gewünscht wird, eine Darstellung, die die besten Merkmale kombiniert und das Modellieren und Wiedergeben vereinfacht.
  • Zusammenfassung der Erfindung
  • Es ist ein Verfahren zur Wiedergabe einer Darstellung eines graphischen Objekts vorgesehen. Eine Oberfläche des Objekts wird in eine Vielzahl von Zellen eingeteilt, die eine Gitterauflösung aufweisen, die auf eine Bildebenenauflösung bezogen ist. In dem Speicher wird auf der Oberfläche des Objekts ein einzelnes, nulldimensionales Oberflächenelement für jede Zelle angeordnet. Die Oberflächenelemente in benachbarten Zellen werden durch Verknüpfungen verbunden. Attribute des Teils des in der Zelle enthaltenen Objekts werden jedem Oberflächenelement und jeder Verknüpfung zugeordnet. Die jedem Oberflächenelement zugewiesenen Objektattribute werden auf die Bildebene projiziert.
  • Die jedem Oberflächenelement zugewiesenen Objektattribute können umfassen eine Position des Oberflächenelements auf der Oberfläche des Objekts, Farbe, Opazität sowie Flächennormale des Teils des Objekts, der in der entsprechenden Zelle enthalten ist. Die Projektion kann in einer Objektordnung mittels Interpolation nächster Nachbarn sein.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Es zeigen
  • 1 ein Oberflächenelement (Surfel), das jeweils durch Synthese, Umwandlung, Kartierung und Extraktion aus impliziten, Polygon-, Raumpunkt- und Partikel-Darstellungen erzeugt werden kann;
  • 2a und 2b ein Gitter, das eine Bildebenenauflösung aufweist, die in ein Objekt projiziert wird, um benachbarte Zellen zu definieren;
  • 3 ein Netz aus 6-benachbarten, 8-fach verbundenen Oberflächenelementen;
  • 4 ein Blockdiagramm von Oberflächenelement-Datenstrukturen;
  • 5 ein Blockdiagramm von Oberflächenelement-Attributen;
  • 6 das Blockdiagramm einer Oberflächenelement-Liste;
  • 7 ein Polygon zur Abtastumwandlung eines Polygons in Oberflächenelemente;
  • 8 ein Polygon mit innen und außen liegenden Oberflächenelementen;
  • 9 das Ablaufdiagramm eines Dreieck-Rasterisierungs-Verfahrens, bei dem Abstandskarten verwendet werden;
  • 10 einen Tri-Streifen von Polygonen;
  • 11 eine graphische Darstellung, die projizierte Abstände darstellt;
  • 12a und 12b graphische Darstellungen für innen liegende und außen liegende, projizierte Punkte;
  • 13 eine graphische Darstellung einer Oberflächenelement-Zelle, die durch eine ebene Fläche eingeteilt ist;
  • 14 die graphische Darstellung eines zu surfelisierenden beliebigen Polygons;
  • 15 ein Blockdiagramm von Zuständen starrer Körper;
  • 16 das Ablaufdiagramm eines Verfahrens, um die Modellierung eines Oberflächenelement-Objekts als starren Körper durchzuführen;
  • 17 ein Diagramm von dynamischen Zuständen eines verformbaren Oberflächenelement-Objekts;
  • 18 das Netz eines Oberflächenelement-Objekts, das als ein Masse-Feder-System modelliert ist;
  • 19 ein Verfahren zum Summieren von Kräften auf einem Oberflächenelement-Objekt;
  • 20 das Ablaufdiagramm eines Prozesses zum Verformen eines Oberflächenelement-Objekts;
  • 21 ein Verfahren zum Erzeugen eines dynamischen Zustandsvektors;
  • 22a, 22b und 22c Flächennormalen während der Verformung;
  • 23 das Ablaufdiagramm einer Wiedergabe-Pipeline für Oberflächenelemente;
  • 24a–c zeigen Wiedergabe-Artefakte;
  • 25 eine graphische Darstellung, die eine Scher-Verzerrungs-Faktorenzerlegung zeigt;
  • 26a und 26b graphische Darstellungen von Raumpunkt-Scheibchen vor und nach dem Scheren;
  • 27 eine graphische Darstellung, die das Verzerren an einer Bildebene darstellt;
  • 28 die graphische Darstellung eines durch Scherung verzerrten Pixelgitters;
  • 29a, 29b und 29c graphische Darstellungen von skalierten Oberflächenelementen; und
  • 30a und 30b Oberflächenelemente durch schnelles Volumen-Rendering.
  • AUSFÜHRLICHE BESCHREIBUNG VON BEVORZUGTEN AUSFÜHRUNGEN
  • 1. Einleitung und Überblick
  • Wir beschreiben das Erzeugen, Modellieren und Wiedergeben von graphischen Objekten, die als Oberflächenelemente oder „Surfel" dargestellt werden. Wir definieren Oberflächenelemente als verbundene, nulldimensionale Punktmuster in einem dreidimensionalen Oberflächenelement-Gitter. Das dreidimensionale Gitter gemäß unserer Erfindung ist eine Projektion der Bildebenenauflösung in den Objektraum, die zu einem dreidimensionalen Volumen mit einem Abstand der Oberflächenelemente in Pixelgröße führt. Im Gegensatz dazu werden im Stand der Technik Darstellungselemente in der Regel im Objektraum abgetastet.
  • Jedes Oberflächenelement projiziert sich auf ein Pixel der Bildebene. Das Oberflächenelement ist irgendwo in einer „Zelle" angeordnet, die durch acht Knoten definiert ist, die ganzzahlige Gitterpositionen sind. Dies ist analog zu der Definition von Pixeln auf der Bildebene, wo die Schnittpunkte der horizontalen und vertikalen Abtastlinien als die ganzzahlige Pixel-Position betrachtet werden und die Fläche zwischen vier solchen Positionen als das Pixel bezeichnet wird.
  • Ein Oberflächenelement speichert Informationen (Attribute) über seine Position, Farbe, Opazität und Flächennormale an der Punktposition. Zusätzliche Attribute wie Geschwindigkeit und Ruhemasse können Oberflächenelementen zugeschrieben werden, die physikalische Objekte oder Modelle darstellen.
  • Benachbarte Oberflächenelement werden durch „Verknüpfungen" miteinander verbunden. Die Ruhelänge einer Verknüpfung definiert den relativen Abstand der Oberflächenelemente. Es ist anzumerken, dass die Oberflächenelemente irgendwo in einer Zelle angeordnet sein können. Zusätzliche Attribute wie Elastizität und Dämpfung können Verknüpfungen in dem Fall zugeschrieben werden, wo das Objekt verformbar ist. Die Oberflächenelemente und Verknüpfungsattribute speichernden Datenstrukturen ist eine Liste von Informationseinheiten, die durch Zeiger verbunden sind. Wir sagen, dass sechs benachbarte Oberflächenelemente „8-fach verbunden" sind.
  • Unsere Darstellung kombiniert Objektraum und Bildraum, indem eine Eins-zu-Eins-Kartierung zwischen Oberflächenelementen und Pixeln definiert wird. Oberflächenelemente werden entsprechend der Bildschirmauflösung erzeugt. Somit wird, wenn jedes Oberflächenelement auf ein Pixel abbildet, kein Detail berücksichtigt, das kleiner als ein Pixel ist.
  • Unser Grund zum Kombinieren von Objektraum und Bildraum ist die Bereitstellung einer Wiedergabe, die einfach, effizient und schnell ist.
  • Oberflächenelemente können als allgemeines Darstellungselement verwendet werden. Wir stellen Verfahren zur Verfügung, um Oberflächenelemente aus Darstellungen nach dem Stand der Technik (implizit, geometrisch, Raumpunkt und Partikel) zu erzeugen. Wir schlagen einen Projektionsprozess mit Objektordnung vor, indem die Interpolation nächster Nachbarn genutzt wird, um Oberflächenelemente auf ihre entsprechenden Pixel zu projizieren.
  • In unserer Darstellung können Oberflächenelement-Objekte sich gegenseitig beeinflussen, was zu „physikalisch glaubwürdigen Verformungen" führt. Um eine Verformung zu ermöglichen, kann ein Oberflächenelement-Objekt als ein Masse-Feder-System modelliert werden, bei dem jedes Oberflächenelement einer Masse zugeordnet ist und durch Federn mit benachbarten Oberflächenelementen verbunden wird.
  • Wir beschreiben auch Verfahren zur Erhöhung der Bildqualität, wenn auf Grund von Oberflächenelementen, die zum Beispiel durch Rotation oder inneren und äußeren Kräften aus ihren Zellen heraus „gezogen" werden, in der Oberfläche „Löcher" erscheinen. Diese Verfahren schließen eine Scherverzerrung einer Betrachtungstransformation, das Supersampling oder eine Skalierung des Objekts sowie schnelles Volumen-Rendering ein.
  • 1.1. Oberflächenelemente
  • Wie in 1 gezeigt ist, beschreiben wir ein graphisches Darstellungselement, das verwendet werden kann, um Objekte darzustellen, zu modellieren und wiederzugeben. Wir nennen dieses Primitive (Darstellungselement) ein Oberflächenelement oder kurz „Surfel" 100. Oberflächenelemente können auf die oben erörterten Darstellungen bezogen sein, nämlich implizite Funktionen 101, Polygone 102, Raumpunkte 103 und Partikel 104. Wir definieren das Oberflächenelement 100 als ein nulldimensionales Punktmuster in einer durch ein dreidimensionales Gitter definierten Zelle, das die Auflösung einer Bildebene aufweist. Attribute wie Position, Farbe und Masse können Oberflächenelementen zugeordnet werden.
  • Eine Vielzahl von Oberflächenelementen kann miteinander verbunden werden, um eine zweidimensionale Kopie, z.B. eine beliebige, zweidimensionale Fläche des Objekts zu bilden. Kopien von Oberflächenelementen können miteinander verbunden werden, um eine komplexere, zweidimensionale Kopie zu bilden. Die Kopie kann beliebige Objekte, real oder vorgestellt, „skizzieren".
  • 1.2 Bildschirmauflösung
  • Gemäß 2a können Oberflächenelemente 100 (fest) irgendwo in Zellen 200, die durch acht Knoten 201 (offen) definiert werden, das sind ganzzahlige Gitterpositionen, angeordnet werden. Gemäß 2b weist jedes Oberflächenelement sechs benachbarte Oberflächenelemente auf, eins für jede den Flächen von jeder Zelle 200 benachbarten Zelle. Die Gitterpositionen entsprechen nach Größe und Örtlichkeit den Pixeln 202 einer Bildebene 203. Mit anderen Worten, das Gitter, welches die Grenzen an den Örtlichkeiten der nulldimensionalen Oberflächenelemente definiert, ist auf die Auflösung einer Bildebene oder eines Anzeigeschirms festgelegt.
  • Abtastung gemäß der Bildschirmauflösung schafft eine direkte Zuordnung zwischen Objektraum und Bildraum. Dadurch, dass Oberflächenelemente auf diese Art und Weise definiert werden, wird eine Verformung von Objekten leichter in dem Sinn, dass ständiges Resampling nicht benötigt wird. Eine Bearbeitung von „dreieck-rasterisierten" Objekten verbraucht weniger Zeit. Ein Oberflächenelement-Gitter mit Abstand in Pixelgröße liefert auch die Möglichkeit, Oberflächenelemente mit Versetzungen zu speichern und eine vorher berechnete, durch Betrachtung transformierte Versetzung zu nutzen, um die Oberflächenelement-Objekte effizient wiederzugeben.
  • 1.3 Oberflächenelement-Verknüpfungen
  • Wie in 3 gezeigt ist, stellen wir ein graphisches Objekt als eine dreidimensionale Sammlung von Oberflächenelementen 100 dar, die durch Verknüpfungen 300 verbunden sind. Deshalb sind sechs benachbarte Oberflächenelemente 8-fach verbunden. Mit anderen Worten, wenn sich das Oberflächenelement irgendwo in einer Zelle befindet, verbindet sich das Oberflächenelement durch die sechs Flächen der Zelle und entlang der Diagonalen. Die verbindenden Verknüpfungen entlang der Diagonale verhindern, dass das Netz „zusammenbricht". Die 6-benachbarten, 8-fach verbundenen Oberflächenelemente stellen die Oberfläche oder zweidimensionale Kopie eines graphischen Objekts dar.
  • In Tabelle A werden Polygone, Raumpunkte und Partikel im Stand der Technik mit Oberflächenelementen gemäß unserer Erfindung verglichen. Die Tabelle zeigt, dass unsere Oberflächenelemente Attribute aufweisen, die den bekannten Darstellungselementen nach dem Stand der Technik ähnlich sind.
  • Tabelle A
    Figure 00150001
  • In mancher Hinsicht hat ein Oberflächenelement die Attribute eines Pixels von einem umgeformten Polygon, wenn dieses die Größe von etwa einem Pixel aufweist. Ein Oberflächenelement kann auch als ein extrahierter, 8-fach verbundener Oberflächen-Raumpunkt betrachtet werden, wobei die Zelle, in der das Oberflächenelement angeordnet ist, eine Dimension von 1*1*1 Pixel hat und sechs benachbarte Oberflächenelemente aufweist. Ein Oberflächenelement-Objekt kann auch als Abbildung einer Partikelwolke gedacht sein, die auf der Auflösung des Bildschirms oder Bildgitters definiert ist.
  • Oberflächenelemente weisen auch Unterschiede auf. Zum Beispiel sind Oberflächenelemente Raumpunkte und Partikel, deren Geometrie voneinander verschieden ist. Oberflächenelemente sind bezüglich eines Gitters ungleiche Polygone und Partikel. Oberflächenelemente sind ungleiche Raumpunkte und Partikel in der Weise wie sie verknüpft sind. Und Oberflächenelemente sind ungleiche Polygone und Raumpunkte in der Weise wie sie verformt sind.
  • Im Vergleich mit Darstellungselementen im Stand der Technik ist der wichtigste Unterschied in der Art und Weise, wie wir Oberflächenelemente definieren, dass sie entsprechend der Bildschirmauflösung abgetastet werden. Raumpunkte und Partikel werden normalerweise entsprechend der Objektauflösung abgetastet. Polygone können in Bildschirmauflösung abgetastet werden. Das Abtasten muss jedoch direkt vor einer Projektion oder Wiedergabe vorgenommen werden, wenn das Objekt verformt wird. Für Oberflächenelemente kann das Abtasten auf Bildschirmauflösung einmal in einem Vorbearbeitungsschritt vorgenommen werden.
  • Beim Abtasten mit Bildschirmauflösung gemäß unserer Erfindung umfassen graphische Objekte gerade genug Oberflächenelemente, um die Oberfläche des Objekts durch eine einfache Projektion von jedem Oberflächenelement auf jedes nächste Pixel zu rekonstruieren. Zum Beispiel wird ein rechtwinkliges Oberflächenelement-Polygon von 100*100 Oberflächenelementen auf dem Bildschirm eine Bildebene von 100*100 Pixel erzeugen. Wir bilden Oberflächenelemente direkt zu Pixeln ab. Der Beitrag eines Oberflächenelements zum Bildschirm wird nicht kleiner oder größer als ein Pixel sein.
  • 2. Datenstrukturen von Oberflächenelement-Objekten
  • Wie in 4 gezeigt ist, weist jedes Oberflächenelement 100 eine Menge von zugeordneten Oberflächenelement-Attributen 401 und jede Verknüpfung 300 Verknüpfungsattribute 403 auf. Die zum Modellieren und Wiedergeben des Objekts verwendeten Attribute sind in 5 ausführlicher dargestellt.
  • Die Oberflächenelement-Attribute 401 können die Position (x), Versetzung (o), Farbe (rgb), Opazität (α), Normale (n), Winkelgeschwindigkeit (ω), Normale (n), Ruhemasse (m) und bis zu acht Verknüpfungen umfassen. Die Verknüpfungsattribute 403 können Ruhelänge (l), Federkonstante (e), Dämpfungskonstante (d) sowie linke und rechte Oberflächenelement-Zeiger (pl und pr) umfassen.
  • Der Grund, weshalb die Normale mit jedem Oberflächenelement gespeichert wird, ist die Vermeidung einer Interpolation der Normalen während der Wiedergabe. Stattdessen wird die Normale interpoliert, während die Oberflächenelemente erzeugt werden. Das Speichern der Normalen ist ein Kompromiss zwischen der Wiedergabegeschwindigkeit und der für die Oberflächenelement-Objekte benötigten Speicher-Kapazität.
  • Jedes Oberflächenelement kann außerdem zusätzliche Attribute aufweisen, die den dynamischen Zustand des Oberflächenelement-Objekts beim Modellieren beschreiben, wobei diese mit Bezug auf die 15 und 17 ausführlicher beschrieben werden.
  • 2.1 Oberflächenelement-Liste
  • Wie in 6 gezeigt ist, organisieren wir die Daten von Oberflächenelementen als eine sequenzielle Liste 600, um eine Durchlaufung während der Bearbeitung möglichst gering zu halten. In der Liste 600 sind zwei benachbarte Oberflächenelemente der Liste im Oberflächenelement-Objekt benachbart. Um die Liste 600 zu erzeugen, beginnen wir an einem gewissen Oberflächenelement So. Beginnend mit Oberflächenelement S0 als einem „ersten" Oberflächenelement an der Position (x, y) wird jedes benachbarte Oberflächenelement der Liste hinzugefügt, die mit dem letzten Oberflächenelement Sn endet. Wir greifen auf die Oberflächenelemente in der Liste 600 zu durch Versetzungen. Eine Versetzung ist der Differenzvektor zwischen zwei Oberflächenelement-Positionen.
  • Die Versetzung zu einem vorherigen Oberflächenelement wird gespeichert, um die Fähigkeit zur schnellen Projektion von Oberflächenelementen zu schaffen. Wenn die Versetzung gespeichert ist, kann die Notwendigkeit zur Berechnung der Betrachtungskoordinaten von jedem Oberflächenelement unter Verwendung der Betrachtungsmatrix weggelassen werden. Dadurch, dass Versetzungen gespeichert werden, können die Oberflächenelemente als eine sequenzielle Liste oder Reihenfolge gespeichert werden. Oberflächenelemente, die in der Liste benachbart liegen, sind auch im Objekt benachbart.
  • Weil die Oberflächenelemente 8-fach verbunden sind, werden die Versetzungen entweder {±1,0,0}, {0,±1,0} oder {0,0,±1}, wenn die Oberflächenelemente im Pixelabstand positioniert sind. Die Versetzungen können für eine spezielle Betrachtung vorher berechnet und in einer Verweistabelle gespeichert werden. Objektkoordinaten von Oberflächenelementen können dadurch erzeugt werden, dass zu vorherigen Positionen von Oberflächenelementen in der verknüpften Liste 600 Versetzungen hinzugefügt werden.
  • Welches Oberflächenelement zuerst gewählt wird, kann von dem Objekt abhängen. Zum Beispiel kann für eine Kugel das erste Oberflächenelement an der „Oberseite" der Kugel sein und die Liste „umwickelt" die Kugel. Es soll angemerkt werden, dass „linke" und „rechte" benachbarte Oberflächenelemente auch in der Liste benachbart sein können, jedoch könnten die „auf" und „ab" benachbarten Oberflächenelemente irgendwo in der sequenziellen Liste angeordnet sein. In dem Fall, dass die benachbarten Oberflächenelemente in der Liste im Objekt nicht benachbart sind, könnten die Oberflächenelemente irgendwo in der Liste 600 angeordnet sein.
  • Weil Oberflächenelemente als nulldimensionale Punkte in einer sechsseitigen „Zelle", d.h. einem dreidimensionalen Gitter mit einem Zwischenraum in Größe eines Pixels definiert sind, wird die Versetzung zwischen den Zellen von benachbarten Oberflächenelementen für viele Oberflächenelemente die gleiche sein. Um eine Projektion auf die Bildebene zu beschleunigen, wird jede Versetzung nur einmal zu einer Bildschirm-Raum-Versetzung transformiert und anschließend in einer Verweistabelle gespeichert. Die Verweistabelle kann vorher berechnet werden. Während Projektionen können jegliche Betrachtungskoordinaten von jedem Oberflächenelement herausgefunden werden, indem die Verweistabelle genutzt wird.
  • 3. Erzeugen von Oberflächenelementen und Oberflächenelement-Objekten
  • Zum Erzeugen von Oberflächenelementen und Oberflächenelement-Objekten beschreiben wir eine Anzahl von möglichen Verfahren.
  • 3.1 Synthese
  • Die Synthese von impliziten Oberflächen kann typischerweise für Objekte wie Kugeln, Ebenen und Würfel oder andere Objekte verwendet werden, die analytisch definiert werden können. Das Erzeugen von synthetischen Oberflächenelement-Objekten gemäß unserer Datendarstellung sollte einem gewöhnlichen Fachmann nach ausführlicher Prüfung der Datenstrukturen, die wir hier beschrieben haben, ersichtlich werden. Das Schlüsselkonzept besteht darin, dass die Synthese der Oberflächenelemente in einer Bildebenenauflösung besteht und benachbarte Oberflächenelemente durch Verknüpfungen verbunden werden.
  • 3.2 Umwandlung
  • Beliebige geometrische Objekte wie Polygone erfordern eine Umsetzung zum Erzeugen von Polygonen. Wir nennen diesen Prozess Umwandlung.
  • 7 zeigt die Reihenfolge, in der Oberflächenelemente für eine einzelne zweidimensionale Ebene 710 erzeugt werden können, beginnend an einer Gitterposition (x, y), der (x + 1, y) und so weiter folgt. Die Pfeile 711 zeigen die Reihenfolge des Erzeugens, vor und zurück, Reihe für Reihe, indem wechselnde Richtungen für benachbarte Reihen verwendet werden. Die erste Reihe wird das Erzeugen von Oberflächenelementen von links nach rechts beginnen. Die Oberflächenelemente in der nächsten Reihe werden von rechts nach links erzeugt werden. Diese Ordnung hält die Versetzung jedes Oberflächenelements innerhalb der Einheitsschritte für jede Richtung. Die Oberflächenelemente werden für die Liste 600 aufeinander folgend erzeugt, und die Versetzungen zwischen den Zellen von benachbarten Oberflächenelementen ist in x,y entweder (1,0,0) oder (0,1,0).
  • 3.2.1 Umwandlung unter Verwendung eines dreidimensionalen, digitalen Differenzialanalysators
  • Eine dreidimensionale Abtastumwandlung kann genutzt werden, um ein Polygon-Objekt im Stand der Technik in ein Oberflächenelement-Objekt gemäß unserer Erfindung umzuwandeln. Wir haben ein Verfahren wie es von Kaufman et al. in „3D Scanconversion Process for Voxel-based Graphics" („Verfahren zur dreidimensionalen Abtastumwandlung für Grafik auf Basis von Raumpunkten"), Proceedings of the 1986 Workshop on Interactive 3D Graphics (Tätigkeitsbericht des Workshops 1986 zur interaktiven, dreidimensionalen graphischen Darstellung), Crow. F., Pizer, S.M. (die Redaktion), Seiten 45-75 beschrieben wird, angepasst. Das Verfahren von Kaufman wandelt Polygone in Raumpunkte um. Kaufman nutzt einen Algorithmus, der Kreise parallel zu einer Hauptebene zeichnet. Die Kreise werden in zwei Bereichen, einem äquatorialen Bereich und einem Polbereich gezeichnet, während Symmetrie genutzt wird, um den Algorithmus zu vereinfachen, indem beide Halbkugeln gleichzeitig erzeugt werden. Im Gegensatz dazu wandeln wir Polygone in sechs benachbarte, 8-fach verbundene Oberflächenelemente um, die in einer sequenziellen Liste gespeichert werden.
  • Unsere dreidimensionale Abtastumwandlung von Polygonen nutzt die dreidimensionale Abtastumwandlung von Linien für die Ecken des Polygons. Die Oberflächenelement-Durchläufe zwischen den Ecken werden gefüllt, um eine optimale Vernetzungsmöglichkeit zu schaffen. Unser Verfahren erfordert es, dass Polygon-Ecken in y sortiert werden, weil die Abtastlinien parallel zu der y-Koordinatenachse liegen.
  • Das DDA-Verfahren wurde ursprünglich entwickelt, um Linien auf einer zweidimensionalen Anzeige zu rasterisieren. Für eine spezielle Linie werden die Pixel-Positionen des Anfangs- und Endpunktes sowie Δx und Δy berechnet. Das Δx und das Δy werden dann durch das größte der beiden Δ geteilt, und die Anzahl der von dem Prozess benötigten Schritte wird entsprechend diesem größten Δ eingestellt. Für jeden Schritt in die Richtung des größten Δ wird eine Pixel-Position entsprechend dem Δ in der anderen Richtung berechnet. Dieses Verfahren ist einfach und effizient.
  • Gemäß 7 wird das DDA-Verfahren wie folgt auf ein Polygon 700 angewandt. Eine der drei Ecken des Dreiecks 700 wird als „Basisecke" 701 gewählt, während die übrig bleibenden zwei Ecken 702 und 703 als „Führungsecken" gewählt werden. Eine zu der Basisecke parallele Linie 704 wird jedes Mal, wenn der Prozess einen weiteren Zusatzschritt benötigt, entlang den Führungsecken dreidimensional rasterisiert.
  • Unser Prozess ist unterschiedlich zum Algorithmus von Kaufmann, weil unsere Basisecke im dreidimensionalen Raum beliebig ausgerichtet sein kann. Im Algorithmus von Kaufmann ist die Basisecke zur y-Koordinatenachse immer parallel, es sei denn, das Polygon deckt sich mit der xz-Koordinatenebene, wobei in diesem Fall die Basisecke auch zur x- oder z-Koordinatenachse parallel ist.
  • Eine Flächennormale des Polygons wird berechnet, um zu erfassen, ob Polygone parallel zu Ebenen sind, die durch die Hauptachse bedeckt werden. In diesem Fall können gewisse Optimierungen für den Prozess durchgeführt werden.
  • Für die Basisecke 701 werden die Werte von Δx, Δy und Δz berechnet und das Maximum Δmax dieser drei Δ bestimmt. Es wird eine Gesamtsumme der drei Zuwächse 1) xincr = Δx/Δmax, 2) yincr = Δy/Δmax und 3) zincr = Δz/Δmax berechnet.
  • Geht man in Richtung des maximalen Δ entlang von x, y oder z vor, führt dies zu einer Abtastposition im dreidimensionalen Raum entlang der Basisecke. Zur Abtastumwandlung des Dreiecks 700 werden die Δ auch in x-, y- und z-Richtung der beiden Führungsecken bestimmt. Wiederum wird eine Gesamtsumme von drei Zuwächsen pro Ecke berechnet, wobei aber dieses Mal die Δ durch das maximale Δ von beiden Führungsecken geteilt werden. Der Grund dafür ist zu gewährleisten, dass die Schritte entlang der Führungsecken die Orientierung der Basisecke für jede der parallelen Ecken, die durch Abtasten umgewandelt werden, beibehalten werden.
  • Nach jedem Zuwachsschritt entlang der beiden Führungsecken wird eine dreidimensionale Rasterisierung der zur Basisecke parallelen Ecke durchgeführt. Jeder Zuwachsschritt entlang der Führungsecken führt zu einer Abnahme der Länge dieser Ecke. An jeder Abtastposition, die während einer dreidimensionalen Rasterisierung gefunden wurde, wird für diese Position ein Oberflächenelement gespeichert.
  • Gemäß 8 werden Oberflächenelemente, die addiert wurden, um eine 8-fache Vernetzungsmöglichkeit zu bewirken, nur zu der Innenseite des Dreiecks 700 addiert. In 8 kann entweder das Oberflächenelement 801 oder 802 der Liste 600 hinzugefügt werden. Um zu bestimmen, welches Oberflächenelement sich im Inneren befindet, wird die Position der Spitze 710 im Verhältnis zur Basisecke 701 bestimmt. Dies kann dadurch erreicht werden, dass ein Innenrichtungsvektor 720 definiert wird, der zur Spitze 710 und senkrecht zur Basisecke zeigt. Entsprechend diesem Innenrichtungsvektor 720 wird eins der zwei Oberflächenelemente als Anwärter, in diesem Beispiel das Oberflächenelement 801 ausgewählt.
  • Jedes Mal, wenn ein Oberflächenelement zu der sequenziellen Liste hinzugefügt wird, wird seine Position in einer Hash- Tabelle entsprechend seiner Position gespeichert. Bevor Oberflächenelemente hinzugefügt werden, wird in der Hash-Tabelle eine Prüfung vorgenommen, um zu bestimmen, ob an dieser Position bereits ein Oberflächenelement existiert.
  • 3.2.2 Umwandlung mittels Abstandskarten
  • Im Stand der Technik wurden Abstandskarten verwendet, um Oberflächen-Raumpunkte in abgetasteten Volumen exakt darzustellen. Eine Abstandskarte für ein Volumen ist selbst ein dreidimensionales Volumen. Für jede Gitterposition speichert die Abstandskarte die kleinsten Abstände zur Oberfläche eines Objekts. Diese Abstände können entweder aus einer analytischen Beschreibung berechnet oder aus binären Segmentdaten in einem Volumen gewonnen werden.
  • Eine Abstandskarte weist Eigenschaften auf, die für die exakte Rekonstruktion einer Objektoberfläche aus dem Volumen sorgen. Der Gradient der Abstandskarte liefert die Richtung der Flächennormalen. Das Vorzeichen der Abstände unterscheidet das Innere und das Äußere des Volumens. Die Oberfläche des Objekts befindet sich in einem Nullabstand in der Abstandskarte. Die Abstandskarte ändert sich gleichmäßig über die Oberfläche der Objekte, womit hohe Ortsfrequenzen vermieden werden und somit eine Oberflächenrekonstruktion ermöglicht wird, indem relativ preisgünstige Rekonstruktionsfilter verwendet werden.
  • 9 zeigt die Schritte für einen Prozess 900, um ein Objekt mittels Abstandskarten als Oberflächenelemente darzustellen. Im Schritt 910 werden Oberflächen-Polygone (z.B. Dreiecke 1000 wie 10 dargestellt) aus abgetasteten Volumendaten 901 abgeschätzt. Die Polygone 1000 können mittels Tri-Streifen gespeichert werden. Jedes Polygon in einem Dreiecknetz besteht aus drei Spitzen, z.B. 10011003. Zum Speichern von n Dreiecken werden n + 2 Knoten benötigt.
  • Im Schritt 920 werden die Daten von Tri-Streifen gelesen und im Schritt 930 ein Umgrenzungskasten für den Tri-Streifen bestimmt. Ein Volumen mit einem Abstand in der Größe eines Pixels wird um den Tri-Streifen herum entsprechend dem Umgrenzungskasten im Schritt 940 definiert. Die Abmessungen des Volumens sind etwas größer als die des Umgrenzungskastens, um zu verhindern, dass sich Tri-Streifen mit irgendeiner der Grenzen des Volumens decken. Dieser Zustand erlaubt es einem zu bestimmen, wo sich die Oberfläche des Objekts befindet, was nachstehend weiter beschrieben werden wird.
  • Im Schritt 950 wird der kleinste Abstand zu den Dreiecken für jede ganzzahlige Gitterpunktposition des Volumens bestimmt, wie es nachstehend ausführlich beschrieben wird. Im Schritt 960 durchläuft man das Volumen und addiert Oberflächenelemente für diese Gitterpunkte, die einen Abstand von gleich oder kleiner als 1/2√2 enthalten. Dies ist ein halbes Mal so viel wie die Flächendiagonale einer Zelle, die ein Oberflächenelement enthält. Wir wählen einen Maßstabsfaktor von 1/2√2, um zu vermeiden, dass Löcher erzeugt werden wie es nachstehend ausführlicher beschrieben wird.
  • Abstandsberechnungen
  • Zur Berechnung eines Abstands für jedes Dreieck im Tri-Streifen 1000 wird ein untergeordnetes Volumen (vergrößerter Umgrenzungskasten), der Teil des größeren Volumens ist, um das Dreieck herum definiert wie es oben angegeben ist, siehe auch 11. Für jede Gitterposition des untergeordneten Volumens wird der Abstand zu dem Dreieck berechnet. Das Verfahren berechnet den dreidimensionalen, nächsten Abstand vom Punkt P zu einem Dreieck 1100 mit den Spitzen V0, V1, V2 und einer Normalen N.
  • Zur Berechnung des dreidimensionalen Abstands von dem Punkt P zu dem Dreieck bestimmt man, ob sich die senkrechte Projektion von Punkt P auf die durch das ebene Dreieck definierte Ebene innerhalb dieses Dreiecks befindet oder nicht. Wenn sich die Projektion von P außerhalb des Dreiecks befindet, dann ist der dreidimensionale nächste Abstand die Größe des Vektors von P senkrecht zu einer der Ecken oder Spitzen. Wenn sich die Projektion von P innerhalb des Dreiecks befindet, dann ist der dreidimensionale nächste Abstand die Größe des Vektors von P zu seinem projizierten Punkt P' im Dreieck. Um die Projektion von P auf die Dreiecksebene zu bestimmen, wird P auf die Normale N projiziert, indem das skalare Produkt von P1 und N berechnet wird. Der projizierte Vektor wird von P subtrahiert, was den projizierten Punkt P' ergibt.
  • Die 12a und 12b stellen die zweidimensionale Projektion des Dreiecks 1100 dar. Der projizierte Punkt P' befindet sich innerhalb des Dreiecks in 12a. Alle Vektoren senkrecht zu den Ecken zeigen in diesem Fall ebenfalls nach innen. In 12b zeigt der Vektor senkrecht zur Ecke V0V1, mit dem deutlich hervortretenden Pfeil dargestellt, nach außen, wogegen die anderen beiden Vektoren nach innen zeigen. Die Figur stellt außerdem dar, dass P' der Ecke V0V1 am nächsten liegt. Für den dreidimensionalen Fall wird dies wie folgt bestimmt.
  • Die Vektoren PVi und VjVi, wobei Vj der Endpunkt und Vi der Anfangspunkt einer Ecke ist, definieren eine Ebene, für die eine Normale N' festgelegt ist. Diese Normale wird in Richtung der „Innenseite" des Dreiecks zeigen, wenn P' innen ist; andererseits wird die Normale von dem Dreieck weg zeigen. Dies kann ermittelt werden, indem das Vorzeichen des skalaren Produkts der Dreiecknormalen N und N' verwendet wird. Der Anhang A führt die Schritte einzeln als symbolischen Code im C-Typ für diese Berechnung auf.
  • Die Abstandsberechnungen werden für alle Gitterpositionen der Untervolumen, für jedes Dreieck in dem Streifen und für alle Dreieckstreifen des Objekts durchgeführt. Da sich Untervolumen überlappen werden, können einige Positionen mehrfache Abstände berechnen lassen. In diesem Fall wird der kleinste Abstand verwendet.
  • Das Oberflächenobjekt ist an den Positionen örtlich festgelegt, wo die Abstände Null sind. Dieser Nullabstand könnte irgendwo innerhalb der Zelle sein, die durch acht Gitterpositionen umgrenzt ist. So werden beim Durchqueren des Volumens Oberflächenelemente immer dann addiert, wenn man im Volumen auf ein absolutes Minimum beim Abstand trifft. Deshalb sollte das Objekt nicht mit einer beliebigen der Grenzen des Volumens zusammenfallen. Um zu gewährleisten, dass Oberflächenelemente in 8-facher Vernetzungsmöglichkeit addiert werden, wird für jede Gitterposition im Abstand von 1/2√2 oder näher zur Oberfläche ein Oberflächenelement addiert werden.
  • 13 veranschaulicht den Grund, warum wir den Wert 1/2√2 wählen. Wir betrachten eine sechsseitige Zelle 1300 in dem durch die acht Gitterpunkte 13011308 umgrenzten Volumen. Die Zelle 1300 ist diagonal durch eine Objektfläche 1310 geteilt, der nur die diagonalen (ungeraden) Gitterpunkte fehlen. Mit anderen Worten, der Abstand an den diagonalen Gitterpunkten ist fast, aber nicht genau Null. Oberflächenelemente müssen an diesen Positionen erzeugt werden. Diese Oberflächenelemente sind jedoch nicht 8-fach verbunden und folglich müssen entweder an geraden Positionen 1302 und 1306 oder Positionen 1304 und 1308 außerdem zusätzliche Oberflächenelemente erzeugt werden. Wenn zum Beispiel die Oberfläche die Zelle „links von" den ungeraden Gitterpunkten schneidet, dann ist der Abstand in den Gitterpunkten 1304 und 1308 etwas weniger als 1/2√2, und es werden für diese Positionen Oberflächenelemente hinzugefügt, um eine 8-fache Vernetzungsmöglichkeit zu bewirken.
  • Wenn die Oberfläche die ungeraden Gitterpunkte jedoch exakt durchschneidet und der Abstand an diesen Punkten Null ist, und der Abstand für die geraden Gitterpunkte 1/2√2 ist, dann müssen Oberflächenelemente an allen acht Gitterpositionen hinzugefügt werden. Dies ist der schlechteste Fall. Wenn dies der Fall für die gesamte Oberfläche des Objekts ist, dann weist die resultierende Oberfläche eine gewisse Dicke auf, z.B. die Länge einer Flächendiagonalen der Zelle: √2.
  • 3.3.3 DDA im Vergleich mit Abstandskarten
  • Der Vorteil der dreidimensionalen DDA Dreieck-Rasterisierung ist ihre Einfachheit. Das Verfahren kann mit ganzzahliger Arithmetik durchgeführt werden, um neue Positionen entlang einer Linie zu berechnen. Eine Dreieck-Rasterisierung unter Verwendung von Abstandskarten ist komplexer und auch speicherintensiver. Die Volumen, die zum Berechnen von Abständen verwendet werden, müssen während der Dreieck-Rasterisierung im Speicher gespeichert werden. Diese Volumen können sehr groß werden.
  • Obwohl eine Abstandskarten verwendende Umwandlung jemanden zum Berechnen des Abstands zu einem Dreieck für jede ganzzahlige Gitterposition erforderlich macht, wird eine Zelle des Volumens durchaus nicht mehr als einmal durchquert, womit die Notwendigkeit wegfällt, zu prüfen, ob ein Oberflächenelement bereist existiert. Diese Prüfung wird zur Umwandlung mit dreidimensionalem DDA benötigt.
  • Um die Liste von Oberflächenelementen zur Wiedergabe effizient zu durchqueren, speichern wir, wie oben angegeben, die Oberflächenelemente aufeinander folgend in der Liste 600. Das Anwenden des dreidimensionalen DDA-Verfahrens führt zu einer sequenziellen Liste von Oberflächenelementen für jedes Dreieck, indem mit jedem Zuwachsschritt von „links-nach-rechts" nach „rechts-nach-links" einfach die Richtung der Abtastumwandlung gewechselt wird. Bei einer Dreieck-Rasterisierung mittels Abstandskarten ist die Reihenfolge, in der die Oberflächenelemente zu der Liste hinzugefügt werden, entsprechend der Reihenfolge, in der das Volumen durchquert wird, was scheibchenweise und für Oberflächenelemente innerhalb jedes Scheibchens erfolgt.
  • 14 zeigt, wie das dreidimensionale DDA-Verfahren erweitert werden kann, um ein beliebiges Polygon 1400 in Oberflächenelementen darzustellen, solange das Polygon nach außen gewölbt ist. Um dieses Ziel zu erreichen, sind die Spitzen 14011406 des Polygons in einer gewissen Reihenfolge, zum Beispiel im Uhrzeigersinn drehend, angeordnet. Es werden eine Basisecke 1410 und zwei Führungsecken 14111412 gewählt. Wenn die Linie der Dreieck-Rasterisierung die Spitze 1405 erreicht, ersetzt die Führungsecke 1413 die Ecke 1412. Entsprechend ersetzt die Ecke 1414 die Ecke 1411, wenn die Spitze 1402 erreicht ist, und schließlich wird die Ecke 1415 verwendet.
  • Abstandskarten können auch mit beliebigen, nach außen gewölbten Polygonen verwendet werden. Es kann das gleiche Verfahren zum Berechnen der dreidimensionalen Abstände für Dreiecke angewandt werden. Dies bringt die zusätzlichen Kosten einer Prüfung der Gitterposition gegenüber mehreren Ecken und Spitzen, um die nächste Ecke oder Spitze zu bestimmen.
  • 3.3 Gewinnung von Oberflächenelementen aus Raumpunkten
  • Oberflächenelemente können wie folgt aus einer Menge von Volumendaten erzeugt werden. In einem ersten Schritt wird die Abtastrate der Raumpunkte auf die Auflösung der Bildebene verändert. In einem zweiten Schritt werden Raumpunkte auf einer Flächenumgrenzung des Objekts herausgezogen und die herausgezogenen Raumpunkte anschließend zu Punktmustern oder Oberflächenelementen umgewandelt. In einem dritten Schritt werden 6-fach benachbarte Oberflächenelemente durch Verknüpfungen verbunden. Dieser Schritt kann das Herausziehen von zusätzlichen Raumpunkten erforderlich machen, um eine 8-fache Vernetzungsmöglichkeit zu bewirken. In einem letzten Schritt können beliebige Spalten in einer Oberfläche auf Grund fehlender Volumendaten durch Interpolation gefüllt werden.
  • 3.4 Kartieren einer Partikelwolke in Oberflächenelemente
  • Eine Partikelwolke kann wie folgt in Oberflächenelemente kartiert werden. Zuerst wird ein Gitter mit der Bildschirmauflösung um die Wolke herum angeordnet. Jede Zelle wird geprüft. Wenn die Zelle genau ein Partikel enthält, kann das Partikel direkt auf ein Oberflächenelement kartiert werden. Wenn eine Zelle mehr als ein Partikel enthält, müssen die Partikel zu einem einzigen Oberflächenelement verschmolzen werden. Wenn eine Zelle keine Partikel enthält, muss ein Oberflächenelement aus Partikel in benachbarten Zellen interpoliert werden.
  • 3.5 Erzeugen von Detailniveaus
  • Die Darstellungen von Oberflächenelementen können auf unterschiedlichen Detailniveaus liegen, um das „Zoomen" zu vereinfachen, d.h. das Verändern des Abstands zwischen der Bildebene und dem Objekt während einer Projektion. Danach, oder während Oberflächenelemente erzeugt werden, kann ein Filter angewandt werden, um unterschiedliche Detailniveaus zu erzeugen. Typisch ist, dass dies als Vorbearbeitungsschritt vor einer Wiedergabe vorgenommen wird. Filtern und Verringern der Abtastrate kann Oberflächenelement-Objekte mit geringerer (gröberer) Auflösung erzeugen, Erhöhen der Abtastrate und Filtern kann Oberflächenelement-Objekte mit höherer (feinerer) Auflösung erzeugen. Zum Beispiel können die den vier, in 2a dargestellten, benachbarten Oberflächenelementen 100 zugeschriebenen Werte zu einem Oberflächenelement eines Objekts mit niedrigerem Detailniveau gemittelt werden. Es können andere Filter- oder Abtastverfahren auf unterschiedliche Kombinationen von Oberflächenelementen angewandt werden, um die verschiedenen Detailniveaus, z.B. 16, 4, 1, 1/4, 1/16, 1/256 und so weiter zur Verfügung zu stellen.
  • 4. Physikalisch basiertes Modellieren von graphischen Objekten
  • Bei der physikalisch basierten, realistischen Simulation einer gegenseitigen Beeinflussung zwischen graphischen Objekten werden bezeichnenderweise zwei Arten einer Modellierung genutzt: Mechanik starrer Körper und dynamische Verformung.
  • Bei der Mechanik starrer Körper bleiben graphische Objekte, während sie äußeren Kräften oder einem Moment ausgesetzt sind, starr. Parameter wie die Position, die Orientierung, die Geschwindigkeit, der Massenmittelpunkt und Trägheitsfaktoren werden genutzt, um den Pfad von Objekten durch Raum und Zeit entsprechend der Newtonschen Mechanik zu simulieren. Als eine Charakteristik der Mechanik starrer Körper bleibt die Gestalt der Objekte jederzeit unverändert.
  • Darüber hinaus kann die Mechanik erzwungen oder ungezwungen sein. Bei der erzwungenen Mechanik starrer Körper kann es zwischen Objekten wechselseitige Einwirkungen, z.B. Kollisionen geben. Bei der ungezwungenen Mechanik starrer Körper bewegen sich die Objekte unabhängig von den Bewegungen anderer Objekte.
  • Bei dynamischer Verformung sind Objekte inneren und äußeren Kräften aus Masse, Position und Geschwindigkeit von eventuell jedem Oberflächenelement in dem Objekt ausgesetzt. Wir nutzen ein Masse-Feder-System, um physikalisch basiertes Modellieren einer dynamischen Verformung auf Oberflächenelement-Objekte anzuwenden. Die Oberflächenelemente sind Punktmassen, und die Verknüpfungen, die die Oberflächenelemente verbinden, wirken wie Federn, um wirklichkeitsnahes, physikalisches Verhalten der Massen zu modellieren.
  • 4.1 Mechanik starrer Körper mit Oberflächenelement-Objekten
  • Eine Simulation der physikalisch basierten Mechanik starrer Körper befasst sich mit dem Verhalten von Objekten wie sie sich in der realen Welt entsprechend den Naturgesetzen verhalten würden. Wir ahmen wirklichkeitsnahes Verhalten nach, wenn die Objekte Kräften wie Schwerkraft und Moment ausgesetzt sind. Wenn das Verhalten ungezwungen ist, können sich Oberflächenelement-Objekte irgendwo völlig frei bewegen, ohne von Kollisionen mit anderen Objekten betroffen zu sein. Wir erweitern dieses Modell außerdem, um Simulationen eines erzwungenen starren Körpers wie Kollisionen zu verarbeiten.
  • Wir führen die Mechanik starrer Körper an Oberflächenelement-Objekten unter Verwendung eines Zustands starrer Körper gemäß 15 durch.
  • Position und Orientierung
  • Wir beschreiben die Position eines starren Oberflächenelement-Objekts zu einem gewissen Zeitpunkt t als einen Vektor x(t): (x,y,z). Dieser Vektor bestimmt die seitliche Verschiebung des Objekts vom Ursprung des Koordinatensystems eines „Milieu-Raums" in eine aktuelle Position des Objekts. Die Orientierung des Objekts ist durch ein Tupel von vier Variablen definiert, das „Quaternio" genannt wird. Dieses Tupel spiegelt eine Rotationsmatrix R(t), eine 3*3-Matrix wider, die das Objekt um die drei Achsen seines eigenen örtlichen Koordinatensystems rotiert. Die Gleichung p(t) = R(t)p0 + x(t)definiert die Position eines Punktes p0 auf der Oberfläche des starren Oberflächenelement-Objekts in seinem örtlichen Koordinatensystem zu einem Punkt p im Koordinatensystem des Milieu-Raumes.
  • Anstelle von normalen Rotationsmatrizen nutzen wir Quaternionen. Ein Quaternio ist eine Liste von vier Zahlen, die als q(t)= (qs, qx, qy, qz) geschrieben werden. Wir teilen den Quaternio in einen Realteil qs und einen Imaginärteil (x,y,z). Wir nutzen Quaternionen aus zwei Gründen.
  • Erstens benötigen Quaternionen nur vier Variable anstelle von neun für Rotationsmatrizen; somit ist die Größe des Zustandsvektors kleiner und es sind weniger Berechnungen erforderlich. Zweitens sind die Variablen einer numerischen Verschiebung ausgesetzt, weil wir den Zustandsvektor numerisch integrieren, um die Lösung über die Zeit zu verbessern, was bedeutet, dass sich numerische Fehler anhäufen. Quaternionen erfahren eine weitaus geringere Verschiebung als Rotationsmatrizen. Außerdem können wir, weil die Größe eines Quaternios normiert ist, den Fehler leicht überdecken, indem der Quaternio erneut normiert wird.
  • Quaternionen haben weitere Vorteile. Das Teilen des Quaternios in einen Realteil und einen Imaginärteil unterstützt die Erkennung des Rotationswinkels und der Rotationsachse. Quaternionen sind normiert, dies bedeutet, dass ihre Größe eins entspricht. Der Imaginärteil definiert eine Achse, um die herum das Objekt rotiert wird. Der Rotationsteil ist im Bogenmaß dargestellt. Zum Beispiel wird eine Rotation im Bogenmaß 0 um eine Einheitsachse u dargestellt durch:
    cos(Θ/2), sin(Θ/2)u
  • Quaternionen werden bei einer numerischen Integration genutzt. Wenn wir die aktuelle Rotationsmatrix zur Wiedergabe benötigen, transformieren wir den Quaternio in die Rotationsmatrix. Wir transformieren die Matrix in einen Quaternio zurück, wenn wir mittels Integration eine Menge von Differentialgleichungen lösen müssen.
  • Geschwindigkeit und Winkelgeschwindigkeit
  • Die Position des Objekts über die Zeit ist von seiner Geschwindigkeit abhängig. Wir bestimmen die Geschwindigkeit des Objekts, indem die Ableitung von x(t) genutzt wird. v(t) = x'(t) = dx/dt
  • Wenn die Orientierung des Oberflächenelement-Objekts fixiert ist, dann ist die Bewegung des Objekts durch den Milieu-Raum auf Grund seiner linearen Geschwindigkeit. Wenn das Objekt rotiert wird, bestimmen wir den analogen Parameter für q'(t) ebenso wie wir x'(t) gefunden haben.
  • Wir nennen ω(t) die Winkelgeschwindigkeit des Oberflächenelement-Objekts, wobei ω(t) ein Vektor ist, dessen Richtung die Achse angibt, um die sich das Oberflächenelement-Objekt dreht. Die Größe von ω(t), |ω(t)|, legt fest, wie schnell sich das Objekt dreht. Die Ableitung q'(t) von q(t) wird durch Erzeugen eines Quaternios aus ω(t) gefunden, indem der Imaginärteil als ω(t) genommen wird und ein Realteil mit Nullwert addiert wird: qw(t) = (0, ωx, ωy, ωz) q'(t) = 1/2 qw(t) q(t)wobei gw(t)q(t) die Multiplikation der Quaternionen qw(t) und q'(t) ist.
  • Zusammen genommen sind Position, Orientierung, Geschwindigkeit und Winkelgeschwindigkeit im Zustandsvektor für Simulationen starrer Körper eingeschlossen. Der Zustandsvektor enthält eine Gesamtmenge von dreizehn Variablen: x(t) = qs,qx,qy,qz,Xx,Xy,Xz,Vx,Vy,Vzxyz
  • Diese dreizehn Variablen werden in jedem Zeitschritt bei einer Integration aktualisiert. Wenn wir die Differentialgleichung, die das Verhalten eines Oberflächenelement-Objekts beschreibt, d.h. die Werte im Zustandsvektor über die Zeit, aufstellen, können wir diese Gleichung durch Verwendung von numerischer Integration lösen: x'(t) = f(x, t)wobei die Funktion f die Ableitung von x(t) ausrechnet. Die Funktion f beschreibt den Zustand des Zustandsvektors x nach der Zeit t. Sobald wir die Funktion f kennen, können wir die neue Position, die Orientierung, die Geschwindigkeit und die Winkelgeschwindigkeit des Oberflächenelement-Objekts in dem Milieu-Raum ableiten. Um die Funktion f zu lösen, berechnen wir die Ableitung des Zustandsvektors x.
  • Andere Größen
  • Wir nutzen einige zusätzliche Zustandsvariablen, um x'(t) aus x(t) zu berechnen. Wir rechnen eine neue Geschwindigkeit des Oberflächenelement-Objekts aus, wenn das Objekt einer Beschleunigung ausgesetzt ist. Beispielhafte Kräfte sind die Schwerkraft oder Kräfte, die sich aus der Eingabe eines Benutzers ergeben. Für die Geschwindigkeit v, die der Beschleunigung a entspricht, verwenden wir: F = ma oder a = F/m
  • Um die Beschleunigung a zu berechnen, müssen wird die Masse des Oberflächenelement-Objekts kennen. Weil sich die Masse der Oberflächenelement-Objekte während unserer Simulationen nicht verändert, können wir die Gesamtmasse des Oberflächenelement-Objekts ausrechnen, indem die Masse aller Oberflächenelemente in einem Vorprozesszustand der Simulation summiert wird.
  • Das Äquivalent der Kraft F zur Berechnung der Winkelbeschleunigung ist ein Moment. Das Moment ist an einem Objekt wirksam, das es rotieren lässt. Wenn diese Kraft mit dem Massenmittelpunkt fluchtet, passiert nichts; sobald aber die Kraft auf einen Punkt irgendwo sonst an dem Objekt aufgebracht ist, wird sie das Objekt zum Rotieren veranlassen.
  • Um die Winkelbeschleunigung zu berechnen, nutzen wir die Ableitung der Winkelgeschwindigkeit. Wir verwenden eine der Masse analoge Einheit zum Bestimmen der Winkelbeschleunigung aus dem Moment T(t), welches auf das Oberflächenelement-Objekt wirksam ist. Diese Entität ist eine 3*3 Matrix, die Trägheitstensor I(t) genannt wird. Der Tensor wird in der Regel vor dem Start einer Simulation berechnet, weil er sich über die Zeit nicht ändert. Der Tensor beschreibt, wie die Masse des Oberflächenelement-Objekts über das Volumen des Objekts verteilt ist. Praktisch kann diese 3*3 Matrix zu einem Vektor von 3 Eingaben hergeleitet werden.
  • Um einen Ausdruck für die Winkelbeschleunigung abzuleiten, nutzen wir ein Winkelmoment L(t): L(t) = I(t) ω(t)und seine Ableitung L'(t) = T(t),um einen Ausdruck für ω'(t)
    Figure 00370001
    abzuleiten.
  • Simulation starrer Körper
  • Gemäß 16 wird der starre Zustand 1600 eines Objekts 1601, der von der Zeit abhängig ist, zu einem Zustandsvektor 1602 kopiert. Der Zustandsvektor dient als Eingabe für den numerischen Integrator 1610, der einen neuen Zustandsvektor 1603 für einen gewissen Zeitschritt h erzeugt. Der Zustandsvektor 1603 wird zurück in den Zustand 1600 des Oberflächenelement-Objekts kopiert, so dass die neue Position und Orientierung des Objekts nach Raum und Zeit für nachfolgende Bearbeitungsschritte bekannt ist.
  • Erfassung von Kollisionen und Kontaktkräfte
  • Wir beschreiben jetzt eine ungezwungene Bewegung von starren Oberflächenelement-Objekten. Wenn wir wollen, dass Objekte auf Kollisionen reagieren, berechnen wir den Austausch von Energie und Moment zwischen zwei Objekten gemäß physikalischer Gesetze. Dies führt zu einem Verhalten des starren Körpers, bei dem Objekte nach einer Kollision einem neuen Pfad durch den Raum folgen werden. Berechnete Kräfte werden durch Objekte nicht aufgenommen, alle Kräfte werden verwendet, um das Objekt in eine neue Orientierung und mit einer neuen Geschwindigkeit zu lenken. Wo Materialeigenschaften die dynamische Verformung von Objekten zulassen, berechnen wir außerdem den Austausch von Energie, weil Energie während einer Kollision abgeleitet und aufgenommen werden kann.
  • Die Erfassung von Kollisionen zwischen zwei Oberflächenelement-Objekten kann einen hohen Anteil an programmtechnischem Organisationsaufwand zur Berechnung erforderlich machen, weil man jedes Oberflächenelement in einem Objekt mit allen Oberflächenelementen in dem anderen Objekt vergleichen muss. Um dieses Problem zu vermeiden, erzeugen wir für jedes Oberflächenelement-Objekt einen Polyeder-Umgrenzungskasten, zum Beispiel ein 12-seitiges Dodekaeder für eine Kugel. Ein Umgrenzungskasten mit einer angemessenen Menge von Polygonen kann die Oberfläche eines Oberflächenelement-Objekts mit einiger Präzision annähern, und die Anzahl von Polygonen, die auf Kollision geprüft werden müssen, kann verringert werden.
  • Wenn wir zwischen zwei Oberflächenelement-Objekten eine Kollision detektieren, bestimmen wir interessierende Bereiche (Polygone) auf der Oberfläche der Objekte und beginnen unsere Suche nach den aktuellen, kollidierenden Oberflächenelementen, um dadurch die Anfangsaufgabe der Prüfung jedes Oberflächenelements mit jedem anderen Oberflächenelement zu reduzieren. Wenn wir die Oberflächenelemente herausgefunden haben, die an der Kollision teilnehmen, können wir aus den Attributen im Zustandsvektor des Oberflächenelement-Objekts Kontaktkräfte ableiten.
  • Nachdem wir Kontaktkräfte auf dem Oberflächenelement-Niveau bestimmt haben, können wir die Änderungen des Zustands ausrechnen, die sich aus einer Kollision ergeben, wie eine neue Geschwindigkeit oder Orientierung. Wir können außerdem die Verformung des Oberflächenelement-Objekts beginnen, indem zum Beispiel ein Masse-Feder-System verwendet wird, das als Nächstes beschrieben wird.
  • 4.2 Dynamische Modellierung von Verformung in Oberflächenelement-Objekten
  • Die Modellierung starrer Körper verarbeitet nicht die dynamische Verformung von Objekten. Wenn Objekte ihre Gestalt entsprechend von Kräften, die auf die Objekte wirken, ändern, nutzen wir ein Modell, das einzelne Oberflächenelemente innerhalb eines Oberflächenelement-Objekts verarbeitet. Da Oberflächenelement-Objekte aus diskreten Punktmustern konstruiert sind, wird die Simulation einer dynamischen Verformung von Oberflächenelement-Objekten durch Simulation der Bewegung jedes Oberflächenelements in dem Objekt vorgenommen.
  • Insbesondere weist jedes Oberflächenelement eine Position, Geschwindigkeit, Kraft und Masse, die gemäß 17 auf das Oberflächenelement wirken, auf. Somit definieren wir für jedes Oberflächenelement: x'(t) = v(t) v'(t) = f/m = a
  • Diese sind die gleichen wie für oben erwähnte Mechanik starrer Körper.
  • Außerdem machen wir, analog zur Mechanik starrer Körper, eine Momentaufnahme des Zustands eines Oberflächenelement-Objekts, um Simulationen erzeugen zu können. Wir erzeugen einen Zustandsvektor, der den Zustand jedes einzelnen Oberflächenelements, das in dem Oberflächenelement-Objekt vorhanden ist, widerspiegelt. Wie bei der Mechanik starrer Körper, geben wir diesen Zustandsvektor in einen numerischen Integrator ein, um einen neuen Zustandsvektor auszurechnen, der den neuen Zustand von jedem Oberflächenelement am Ende eines Zeitintervalls h widerspiegelt.
  • 17 zeigt die Variablen 1700, die wir während der Verformungssimulation jedem Oberflächenelement 1701 eines Oberflächenelement-Objekts 1702 zuordnen. Weil Oberflächenelemente als nulldimensionale Punkte modelliert werden, besteht keine Notwendigkeit, die Orientierung eines Oberflächenelements zu speichern. Die zeitabhängigen Inhalte des Oberflächenelement-Zustandes definieren den Zustandsvektor: x(t) = (xx,xy,xz,vx,vy,vz)
  • Es treten Kräfte in Erscheinung, wenn Oberflächenelemente verschoben werden, was eine Unterbrechung in dem natürlichen Abstand zwischen zwei Oberflächenelementen verursacht, was durch Oberflächenelement-Verknüpfungen modelliert wird. Eine solche Verschiebung von Oberflächenelementen kann das Ergebnis von Kollisionen zwischen Oberflächenelement-Objekten oder durch Eingabe des Benutzers sein.
  • 4.2.1 Masse-Feder-Systeme
  • 18 zeigt den Teil 1800 eines Oberflächenelement-Objekts, das als ein Gittermuster von Oberflächenelementen 1801, die durch Verknüpfungen 1802 in einem Masse-Feder-System verbunden sind, modelliert ist. Die Oberflächenelemente 1801 tragen eine Masse, und die Verknüpfungen verbreiten eine Kraft über das Objekt. Wenn die Kraft vorübergehend ist, wird das Objekt versuchen, sich selbst zurück in die Form zu bewegen, die es hatte, bevor die Kraft aufgebracht wurde. In diesem Fall besitzt das Objekt ein Erinnerungsvermögen.
  • Das Erinnerungsvermögen wird in den Verknüpfungen gespeichert. Wenn wir ein Oberflächenelement-Objekt erzeugen, bestimmen wir den natürlichen Abstand zwischen zwei Oberflächenelementen, die sich eine gemeinsame Verknüpfung teilen. Dies ist die Ruhelänge 420, die als eines der Attribute einer Oberflächenelement-Verknüpfung, siehe 4, gespeichert wird. Eine Störung des Abstandes zwischen zwei, sich eine Verknüpfung teilenden Oberflächenelementen bedeutet eine Verletzung der natürlichen Verknüpfungslänge. Dies führt zur Erzeugung von Kräften auf dem Oberflächenelement-Niveau. Wir nennen dies eine binäre Kraft, weil die Kraft für ein einzelnes Oberflächenelement ausgerechnet wird. Dies kann vorgenommen werden, indem das Hooke'sche Gesetz für Federn angewandt wird. fi = [ks(|d| – l0) + kd|d'|]d* fj = –fi wobei fi die Kraft ist, die auf das Oberflächenelement i wirksam ist, ks die elastische Komponente der Verknüpfung und kd der Dämpfungsfaktor ist. Die Ruhelänge ist l0. Weil die Verknüpfung zwei Oberflächenelemente verbindet, können wir die entgegen gesetzte Kraft auf das Oberflächenelement j am anderen Ende anwenden. Wenn wir d = (xi – xj) ausrechnen, definieren wir einen Vektor zwischen beiden Endpunkten der Verknüpfung.
  • Der Wert |d| definiert die Länge dieses Vektors, während der Einheitsvektor in dieser Richtung d* = d/|d| ist. Schließlich ist |d'| die augenblickliche Änderung der Verknüpfungslänge. Diese wird ausgerechnet, indem die Geschwindigkeiten subtrahiert werden und das Ergebnis mit dem Einheitsvektor von d: (vi – vj)d* multipliziert wird.
  • Die Größe (|d| – l0) wird Null, wenn die Ruhelänge l0 nicht verletzt ist. Wenn dieser Wert nicht Null ist, wird er von dem Elastizitätsfaktor der Verknüpfung abhängig sein, der die Größe der Verletzung multipliziert.
  • Wenn zwei sich eine Verknüpfung teilende Oberflächenelemente in unterschiedliche Richtungen bewegen, werden wir eine Änderung im Abstand zwischen den beiden Oberflächenelementen bekommen. Wenn dieser Abstand unterschiedlich zur Ruhelänge ist, wirken auf beide Oberflächenelemente Kräfte, weil die natürliche Länge der Verknüpfung gestört ist. Die Verknüpfung wird versuchen, die beiden Oberflächenelemente wieder zurück an der Stelle zu speichern.
  • 19 stellt ein Verfahren 1900 dar, das verwendet werden kann, um die Kräfte für ein Oberflächenelement, das mit bis zu acht anderen Oberflächenelementen verbunden ist, zu summieren. Das Verfahren sucht jedes Oberflächenelement in der sequenziellen Liste 600 (6) auf und prüft auf vorhandene Verknüpfungen.
  • Wenn wir eine Verknüpfung finden, wird die Funktion Compute_Force aufgerufen, um die Kraft zu berechnen, die auf beide, durch eine gemeinsame Verknüpfung verbundene Oberflächenelemente wirksam ist. Nachdem wir jede Kraft in jedem einzelnen Oberflächenelement bestimmt haben, erzeugen wir die Ableitung für den Integrator.
  • Sowohl der elastische Faktor als auch der Dämpfungsfaktor in der Verknüpfung kann verwendet werden, um Stoffeigenschaften des modellierten Oberflächenelement-Objekts abzustimmen. Diese Größen können durch eine Näherungsmethode herausgefunden werden, indem das natürliche Spannungsverhalten berücksichtigt und folglich der elastische Faktor gewählt wird.
  • Das Dämpfen sollte im Verhältnis zu dem Elastizitätsfaktor sein, um zu verhindern, dass das Material wegen Schwingungen zerbricht. Ein System soll kritisch gedämpft werden, wenn kd = 2√(m'ks) ist. Der Wert m' ist die äquivalente Masse. Weil die Verknüpfung durch ein Oberflächenelement an jedem Ende der Verknüpfung gewichtet wird, können wir annehmen, dass die Verknüpfung nur diese zwei Massen „sieht", d.h. m' = m/2 ist. In Wirklichkeit wird die äquivalente Masse höher sein, weil Verknüpfungen ihren Beitrag zu anderen Oberflächenelementen über den Integrator weiterleiten.
  • Es sollte darauf geachtet werden, beide Faktoren zu wählen. Wenn Elastizität und Dämpfung nicht genau angepasst sind, können Schwingungen auftreten, die eine Kettenreaktion von Kräften verursachen können, die sich bei jedem Integrationsschritt verstärkt, wobei die Oberfläche im Endergebnis abreißt. Dies passiert, wenn der Dämpfungsfaktor nicht ausreichend ist, um Oberflächenelemente, die sich voneinander weg bewegen, zu steuern.
  • Durchführung einer Simulation
  • 20 zeigt einen Prozess 2000 zur physikalisch basierten, dynamischen Verformung von Oberflächenelement-Objekten, die zum Beispiel durch Kollisionen verursacht ist. Ein Oberflächenelement-Objekt 2001 umfasst eine Vielzahl von Oberflächenelementen 2002, die durch Verknüpfungen 2003 verbunden sind. Weil wir in einem Oberflächenelement-Objekt viele Oberflächenelemente haben, verknüpfen wir die Zustandsvektoren von jedem Oberflächenelement, um einen großen Zustandsvektor 2010 von Oberflächenelement-Positionen und Geschwindigkeiten für das komplette Oberflächenelement-Objekt 2001 zu bilden.
  • Dies führt zu einem kombinierten Zustandsvektor der Länge 6n, wobei n die Anzahl von Oberflächenelementen in dem Objekt ist. Die Kräfte werden durch das Verfahren 1900 summiert und im Schritt 2020 integriert, um einen neuen Zustandsvektor 2030 zu erzeugen, der verwendet werden kann, um die Zustände der einzelnen Oberflächenelemente 2002 zu aktualisieren.
  • 21 stellt ein Umhüllungsverfahren 2100 dar, das mit dem Verfahren 2000 von 20 verwendet werden kann. Dieses Verfahren erzeugt den Zustandsvektor 2010 und ruft den Prozess 1900 auf, der die Kräfte an jedem Oberflächenelement summiert. Die Umhüllung 2100 ruft außerdem den Integrator 2020 auf. Die Fehlerskala misst die Größe eines zulässigen Fehlers.
  • 4.2.2 Bestimmung von Oberflächenelement-Normalen nach einer Verformung
  • Weil Oberflächenelemente beim Verformen nicht mehr auf das Pixelgitter eingeschränkt sind, müssten wir Versetzungen von Oberflächenelementen und Normale nach einer Verformung erneut berücksichtigen. Oberflächenelement-Versetzungen können sich verändern, weil die Versetzungen den Abstand zu dem vorherigen Oberflächenelement in der sequenziellen Liste messen, wobei diese für beliebige Oberflächenelemente, die neue Positionen aufweisen, erneut ausgerechnet werden können.
  • Ein größeres Problem ist die Tatsache, dass sich Normale von Oberflächenelementen während der Simulation einer Verformung gemäß 22a–c nicht verändern. 22a zeigt einen Abschnitt 2210 eines durch Oberflächenelemente dargestellten Polygons mit den Oberflächenelement-Normalen 2211. Mit dem verformten Abschnitt 2220 gemäß 22 sind die Normalen 2211 der Oberflächenelemente unverändert wie vor der Simulation. Dies würde klar zu einer falschen Darstellung führen, wenn das Oberflächenelement-Objekt wiedergegeben wird. Die korrekten Normalen 2221 für den Abschnitt sind in 22c gezeigt.
  • Die Normalen 2221 können aus den Tangentialebenen, die durch die verformten Oberflächenelemente verlaufen, gefunden werden. Weil die Oberflächenelemente verbunden sind, können zwei nicht in einer Geraden liegende Vektoren, die in der Tangentialebene liegen, für die zwei nächsten benachbarten Oberflächenelemente gefunden werden. Das am nächsten liegende, benachbarte Oberflächenelement kann aus den Oberflächenelement-Verknüpfungen gefunden werden.
  • 5. Wiedergabe von Oberflächenelementen
  • Nachdem Oberflächenelement-Objekte modelliert worden sind, können sie auf einer Anzeigevorrichtung oder einem Drucker wiedergegeben werden. Wie oben angegeben, haben Oberflächenelemente eine starke Ähnlichkeit mit (Oberflächen-) Raumpunkten. Beide sind auf einem Gitter definiert. Die typische Definition von Raumpunkten betrachtet sie als Werte oder Abtastwerte, die an den ganzzahligen Gitterpositionen eines Volumens angeordnet sind. Jedes Oberflächenelement projiziert sich nach dieser Erfindung auf ein Pixel auf der Bildebene. Insgesamt nutzen wir einen Projektionsprozess mit Wiedergabe in Objekt-Reihenfolge. Wegen der Eins-zu-Eins-Kartierung von Oberflächenelementen in Pixel wird keine Rasterisierung benötigt.
  • Wir erleichtern das Zoomen, d.h. das Verändern des Abstands zwischen dem Oberflächenelement-Objekt und der Bildebene, dadurch, dass Darstellungen von Oberflächenelementen auf verschiedenen Detailniveaus ausgeführt werden. In diesem Fall wird, wenn sich mehr oder weniger als ein Pixel auf ein Pixel projiziert, eine Darstellung mit entsprechendem Detailniveau ausgewählt, um die Eins-zu-Eins-Kartierung zwischen Oberflächenelementen und Pixeln beizubehalten.
  • 23 zeigt eine Wiedergabe-Pipeline 2300 für Oberflächenelement-Objekte. Die Pipeline 2300 weist fünf Stufen 23012305 auf, die in entsprechenden Koordinatenräumen arbeiten. Bei Wiedergabe kann jedes Oberflächenelement S als ein 13-Tupel-Vektor mit S = {x, y, z, ox, oy, oz, nx, ny, nz, r, g, b, α}definiert werden, wobei xyz die Position der Oberflächenelemente, o die Versetzung, n die Oberflächen-Normale und rgb die Farbe der Oberflächenelemente und α die Opazität des Oberflächenelements, siehe 4, ist.
  • Der Renderer 2300 startet mit dem ersten Oberflächenelement in der Liste 600 von 6. Wenn dieses Oberflächenelement nicht auf Grund der Kameraposition begrenzt ist, dann wird die Position des Oberflächenelements entsprechend einer Betrachtungsmatrix M von Milieu-Koordinaten in Betrachtungskoordinaten transformiert.
  • Weil nur Parallelprojektion in Betracht gezogen wird, sind die Transformationen affin, und es wird keine perspektivische Division benötigt. Für das erste Oberflächenelement werden die Betrachtungskoordinaten gegenüber den durch die Kamera festgelegten Beschneidungsgrenzen beschnitten. Die Beschneidungsgrenzen umfassen eine nahe und eine ferne Ebene sowie die Dimensionen der Betrachtungs-Schnittstelle, die mit der Kamerabeschreibung bereitgestellt werden. Wenn sich das Oberflächenelement innerhalb dieser Beschneidungsgrenzen befindet, wird es auf den Tiefenpuffer geprüft.
  • Um die Beleuchtung einer Oberfläche durch eine Lichtquelle zu simulieren, werden Schattierungsberechnungen für die Oberflächenelemente durchgeführt. Eine Möglichkeit der Modellierung der Beleuchtung einer Lichtquelle besteht durch die Anwendung eines örtlichen Beleuchtungsmodells für jedes Oberflächenelement. Die besten Ergebnisse mit einem örtlichen Beleuchtungsmodell werden mit dem bekannten, von uns verwendeten Phong-Shading erreicht. Das Phong-Shading nutzt in seinen Berechnungen die Materialeigenschaften der Objekte, um ein hochqualitatives Schattieren für Objekte zur Verfügung zu stellen.
  • 5.1 Projektion in Objektordnung
  • Um zu bestimmen, auf welches Pixel sich ein Oberflächenelement projiziert, führen wir eine Interpolation 0. Ordnung oder Interpolation nächster Nachbarn durch. Der Mittelpunkt eines Pixels (x, y) wird als bei (x + 0,5; y + 0,5) liegend betrachtet. Eine Interpolation nächster Nachbarn bedeutet in diesem Fall, dass eine Pixelposition dadurch gefunden wurde, dass nur der ganzzahlige Teil der Betrachtungskoordinaten x und y des Oberflächenelements berücksichtigt wird.
  • Die Betrachtungskoordinaten jedes aufeinander folgenden Oberflächenelements werden durch Transformation der Versetzung des Oberflächenelements zu einer Bildschirmraum-Versetzung gefunden. Die Betrachtungskoordinaten des in Betracht kommenden Oberflächenelements sind dann im Verhältnis zu denen des vorherigen Oberflächenelements. Wie oben angegeben, werden viele dieser Versetzungen die gleichen sein, so dass bereits transformierte Versetzungen in einer Verweistabelle gespeichert und bei Bedarf wieder gefunden werden können. Die Berechnung eines Index in diese Verweistabelle erfordert weniger Berechnungen als die Berechnung der die Betrachtungsmatrix direkt nutzenden Betrachtungskoordinaten. Das Transformieren von homogenen Koordinaten in Betrachtungskoordinaten direkt mit Parallelprojektion erfordert eine Gesamtmenge von 18 Operationen (Multiplikationen und Additionen).
  • Die Nutzung der Versetzung zum Bestimmen der Betrachtungskoordinaten eines Oberflächenelements erfordert die Transformation des ersten Oberflächenelements mittels Betrachtungsmatrix. Für rechtwinklige Projektionen können jeweils die nächsten Betrachtungskoordinaten des Oberflächenelements herausgefunden werden, indem die durch Betrachtung transformierte Versetzung addiert wird. Für Oberflächenelemente, die eine 8-fache Vernetzungsmöglichkeit aufweisen, sind die möglichen Versetzungskombinationen {±1,0,0}, {0,±1,0}, {0,0,±1}.
  • Die durch Betrachtung transformierte Versetzung kann vorher berechnet und in einer Verweistabelle gespeichert werden, die mit einem einzigartigen Index versehen ist, zum Beispiel: Index = ox + 3oy + 5oz + 5,wobei o Versetzung bedeutet. Dieser Verweis erfordert nur 2 Multiplikationen und 3 Additionen. Weitere 3 Additionen werden benötigt, um die durch Betrachtung transformierte Versetzung hinzuzufügen, damit die Betrachtungskoordinaten erhalten werden, so dass eine Gesamtmenge von 8 Operationen pro Oberflächenelement benötigt wird.
  • 5.2 Gezackte Ecken, Treppchenstrukturen und Löcher
  • Die aus Darstellungen von Oberflächenelementen erzeugten Bilder leiden an Überlappungs-Artefakten, wie gezackte Ecken und Überlappungseffekte 2400 gemäß 24a. Dafür gibt es zwei Gründe. Erstens werden Oberflächenelemente als Punktmuster betrachtet, die in einer Zelle mit Pixeldimensionen angeordnet sind. Die Abtastrate der Projektion ist nicht hoch genug, um die Form ohne die gezackten Ecken zu rekonstruieren.
  • Zweitens projiziert sich nur ein Oberflächenelement auf ein Pixel, obwohl für gewisse Orientierungen eines Objekts sich mehrere Oberflächenelemente auf ein Pixel projizieren werden, so dass eventuell nur eines mit seinem Wert zu dem Pixel beitragen wird. Die anderen Oberflächenelemente werden durch den Tiefenpuffer eliminiert. Gezackte Ecken sind ein bekanntes Problem bei der Verwendung des Tiefenpuffers. Die „Zäckchen" und Treppchenstrukturen können auch an Bereichen mit hohen Raumfrequenzen in der Farbe des Objekts auftreten. Überlappungs-Artefakte können durch ein schnelles Volumen-Rendering-Verfahren reduziert werden, das nachstehend ausführlicher beschrieben wird.
  • Gemäß 24b und 24c sind Löcher ein weiteres Problem bei der Wiedergabe von verformten Oberflächenelementen mittels Projektion durch Interpolation nächster Nachbarn. Löcher treten auf, wenn ein Objekt um eine Achse, die meistens zur Betrachtungsrichtung parallel ist, rotiert wird oder wenn das Objekt verformt wird. Für das Problem der „Löcher" stellen wir die folgenden Lösungen bereit.
  • In 24b ist das Gitter mit unterbrochener Linie mit offenen Oberflächenelementen die ursprüngliche Position, und das Gitter mit durchgezogener Linie mit festen Oberflächenelementen ist die Position nach einer Umorientierung. Nach der Orientierung weist die mittlere Gitterposition (Pixel) kein entsprechendes Oberflächenelement mehr auf. Dies würde zu einem Loch in dem wiedergegebenen Bild führen. In 24c ist ein Abschnitt des Gitters in zwei Richtungen verformt, was ein Loch an der Bildschirmposition des Pixels hinterlässt.
  • Löcher sind ein ernsthafter Nachteil für unsere Ein-zu-Eins-Bildebene zum Kartieren von Oberflächenelementen, weil die Löcher mittels benachbarter Oberflächenelemente „gefüllt" werden müssen. Dies kann mehrere Operationen pro Oberflächenelement erforderlich machen, so dass die Verarbeitungszeit zunehmen wird. In der nachstehenden Beschreibung stellen wir für das Problem der „Löcher" Lösungen bereit.
  • 5.3 Wiedergabe von Oberflächenelementen durch Scher-Verzerrung
  • Bei der einen Lösung werden Oberflächenelement-Objekte mittels Scher-Verzerrungs-Faktorenzerlegung wiedergegeben. Die Scher-Verzerrungs-Faktorenzerlegung basiert auf der Beobachtung, dass die Betrachtungstransformation in zwei getrennte Stufen geteilt werden kann, wobei dem Scheren eine Verzerrung folgt: Mview = P·S·Mwarp wobei P die Permutationsmatrix genannt wird, S die Schermatrix und M die Verzerrungsmatrix ist. Im verschobenen Objektraum ist die Projektion auf die Basisebene senkrecht zu einer so genannten Basisebene.
  • Wie in 25 gezeigt ist, umfasst die Faktorenzerlegung im Allgemeinen drei Schritte. Erstens wird für ein beliebiges Volumen 2500 eine Hauptachse (x0), die meistens parallel zur Betrachtungsachse 2501 ist, bestimmt und eine Basisebene 2502 oder ein Zwischenbild definiert, für welches die Hauptachse senkrecht ist. Diese Achse ist der Betrachtungsrichtung für die Basisebene zugeordnet. Eine Definition der Koordinaten in diesem Raum wird durch eine Permutation unter Verwendung von P durchgeführt. Der Raum wird vertauschter Raum genannt. Die Basisebene deckt sich mit einer der Flächen des Umgrenzungskastens und daher mit einem Teil des Objekts.
  • Eine Definition der Betrachtungsrichtung, die senkrecht zu der Basisebene und jedem Raumpunktscheibchen liegt, erfordert es, dass das Objekt abgeschert wird, wie es in den 26a–b dargestellt ist. In den 26a–b ist die Linie 2601 die Betrachtungsrichtung, und die parallelen Linien 2602 sind Scheibchen. Die Scherung wird gemäß –Vx/Vz berechnet. In dem dreidimensionalen Raum wird die Scherung ebenso für die y-Richtung durchgeführt. Die Objektkoordinaten werden mittels S in den abgescherten Koordinatenraum transformiert. Die Scherung eines Volumens erfordert das Resampling der Raumpunkte.
  • Zweitens wird das Objekt auf die Basisebene 2502 projiziert, was ein Zwischenbild ergibt. Mit Objekten, für die die Scher-Verzerrungs-Transformation ursprünglich entwickelt wurde, können einige Eigenschaften des abgescherten Volumens ausgenutzt werden, was die Wiedergabegeschwindigkeit erhöht. Eine solche Eigenschaft ist, dass Scheibchen parallel zu Pixel-Durchläufen auf der Basisebene liegen.
  • Drittens wird gemäß 27 das Zwischenbild zum endgültigen Bild entsprechend der Verzerrungsmatrix verzerrt. In 27 ist Pfeil 2701 die Scherung, Pfeil 2702 die Projektion, Pfeil 2703 die Verzerrung, das Oval 2700 das Objekt, das im Original eine Kugel ist, die Linie 2704 die Basisebene und die Linie 2705 die Bildebene.
  • Wir wenden eine Faktorenzerlegung durch Scher-Verzerrung auf Oberflächenelemente wie folgt an. Der Scherschritt verändert die Form eines Objekts. Im Basisebenen-Bild werden jedoch keine Löcher vorhanden sein. Dies kann unter Verwendung von 26 erläutert werden. Die Neigung der Betrachtungsrichtung im zweidimensionalen Raum hat ihren maximalen Wert von 1,0, wenn Vx und Vz gleich sind. Mit anderen Worten, der Winkel der Betrachtungsrichtung zu der zum Objekt senkrechten Richtung beträgt maximal 45°, weil eine andere Hauptachse als die zu dem Objekt senkrechte Achse genommen wird, wenn der Winkel größer wird.
  • Weil Objekte entsprechend der Neigung abgeschert werden, ist die Scherung in einer Richtung ebenfalls maximal 1,0 und deshalb wird jedes Pixel von einem Oberflächenelement einen Beitrag erhalten, wie es in den 28a–b dargestellt ist, wobei die Linien 2801 Basisebenen, die Pfeile 2802 Betrachtungsrichtungen sind, das Gitter 2810 sich im Objektraum befindet und das Gitter 2802 das Pixelgitter in dem abgescherten Raum ist. Die Durchführung der verschiedenen Stufen der Scher-Verzerrung führt schließlich zu der Betrachtungstransformation.
  • Löcher im endgültigen Bild können dadurch verhindert werden, dass das Bild der Basisebene, das keine Löcher enthält, so definiert wird, dass es eine Textur-Map ist. Diese Textur-Map wird anschließend beim Textur-Mapping einer Ebene verwendet, die verzerrt werden wird, um zum endgültigen Bild zu werden. Diese Verzerrung kann als eine in ihrem Objektraum definierte, gewisse Ebene gedacht sein, die entsprechend der Verzerrungsmatrix transformiert ist. Die transformierte und mit Textur-Mapping versehen Ebene wird anschließend auf dem Bildschirm wiedergegeben.
  • 5.4 Skalierung
  • Um zu garantieren, dass jedes Pixel, das innerhalb der Ausdehnung des Oberflächenelement-Objekts auf der Bildebene liegt, zumindest ein mit ihm assoziiertes Oberflächenelement aufweisen wird, während eine Filterung nächster Nachbarn beibehalten wird, kann das Objekt auch skaliert werden. Diese Skalierung sollte gleichmäßig sein, um den Abstand in Größe eines Pixels in allen drei Richtungen beizubehalten. Was bestimmt werden muss, ist der Maßstabsfaktor, mit dem das Objekt minimal skaliert werden sollte.
  • Das Muster von Löchern in einem Objekt wird vom Drehwinkel abhängig sein. Die Muster, die für Drehungen zwischen 45° und 90° erscheinen, sind die gleichen wie die Muster, die für Drehungen zwischen 0° und 45° erscheinen, mit der Ausnahme, dass sie in Bezug auf die Linie der Drehung von 45° gespiegelt sind. Dies ist für die volle Drehung von 360° zutreffend, wobei für jedes Drehungsintervall von 45° das Muster von Löchern wieder erscheinen wird, entweder genau das gleiche wie das Muster für das Intervall von 0° bis 45° oder wie ein gespiegeltes Muster.
  • Jetzt kann der Maßstabsfaktor bestimmt werden, indem ein Pixel mit einer Zelle betrachtet wird, die ein darauf abgebildetes Oberflächenelement enthält. Die zweidimensionale Projektion der Zelle stimmt genau mit der Größe des Pixels überein, wenn die Zelle nicht rotiert wird. Wenn jedoch die zweidimensionale Projektion der Zelle um den Mittelpunkt des Pixels rotiert wird, werden sich die Ecken der Zelle außerhalb der Pixelgrenzen befinden, siehe 29a–c.
  • In 29a ist ein Oberflächenelement auf ein Pixel abgebildet; in 29b ist das Oberflächenelement um 45 Grad gedreht und in 29c ist das Oberflächenelement um 1/2√2 skaliert.
  • Der größte Abstand der Ecke der zweidimensionalen Projektion einer Zelle zu den Pixelgrenzen wird bei einer Drehung von 45° auftreten. Vorausgesetzt, dass ein Pixel ein Einheitsquadrat ist, ist der Abstand vom Mittelpunkt des Pixels zur Ecke in diesem Fall 1/2√2. Um zu sichern, dass sich die Ecken der Projektion auf den Pixelgrenzen befinden, muss der Maßstabsfaktor ebenfalls 1/2√2 sein. Wenn mit diesem Faktor skaliert wird, beträgt der Abstand vom Mittelpunkt des Pixels zu den Ecken der Projektion der Zelle 1/2. Dies garantiert, dass für jedes Pixel im Umfang eines Objekts zumindest ein Oberflächenelement je Pixel zu einem Wert beitragen wird.
  • Deutlich wird, dass eine Skalierung zu einem kleineren Objekt auf dem Bildschirm führt, womit ein größeres Objekt erzeugt werden sollte, um die Größe des Objekts beizubehalten. Zum Beispiel wird eine Kugel mit dem Radius von 100 Oberflächenelementen ohne Skalierung einen Radius von 100 Pixeln aufweisen. Wenn die Kugel skaliert ist, dann wird der Radius der Kugel 100·√2 sein müssen, um eine wiedergegebene Kugel mit einem Radius von 100 Pixeln zu erhalten.
  • Das Prinzip der Erzeugung eines Objekts mit höherer Auflösung und anschließender Wiedergabe einer kleineren Auflösung des Objekts ist dem Supersampling gleichwertig. Hier wird das Wort Skalierung verwendet, um anzudeuten, dass Supersampling auf Oberflächenelement-Objekte angewandt wird.
  • 5.5 Schnelles Volumen-Rendering
  • Die dritte Lösung für Glättung und das Problem von Löchern ist die Verwendung von schnellem Volumen-Rendering, wie es in den 30a und 30b gezeigt ist. In 30 bildet sich das Pixelgitter 3000 auf Oberflächenelemente 3001 ab. An der Gitterstelle 3002 gibt es ein „Loch". In 30b sind die Oberflächenelemente im Verhältnis vergrößert, um das Loch zu füllen.
  • Beim schnellen Volumen-Rendering wird der Beitrag eines Oberflächenelements zu mehrfachen Pixeln entsprechend einem Rekonstruktionskern vergrößert oder „ausgebreitet". Der Prozess basiert auf Verfahren aus der digitalen Bildverarbeitung, bei der eine Rekonstruktionsfunktion verwendet wird, um das Signal aus abgetasteten Daten zu rekonstruieren.
  • Um einen Abtastwert herum ist eine Einheitskugel (die Einheitskugel des Bereichs) definiert. Die Kugel stellt einen Rekonstruktionskern im dreidimensionalen Raum dar. Wenn der Abtastwert auf den Bildschirm projiziert wird, ist der Umfang der Kugel ein Kreis. Für jedes Pixel (x, y) innerhalb des Kreises wird ein Beitrag des Abtastwertes berechnet, indem der Rekonstruktionskern längs der z-Achse, d.h. die Betrachtungsachse, integriert wird. Mit Ausnahme einer Versetzung sind die Umfänge für Abtastwerte alle ähnlich, und deshalb können die Integrationen durch eine so genannte allgemeine Footprint-Tabelle ersetzt werden.
  • Die Integration des Rekonstruktionsfilters wird durch eine Gaußsche Verteilungsfunktion der Form
    Figure 00560001
    approximiert. Diese Funktion ist rotationssymmetrisch und linear trennbar, was bedeutet, dass die Funktion in jeder Richtung getrennt integriert werden kann und die Ergebnisse multipliziert werden können, um die gesamte Integration zu erhalten. Diese Eigenschaften werden benötigt, um eine allgemeine Footprint-Tabelle mittels einer Gaußschen Verteilungsfunktion aufzubauen.
  • Zum Aufbau der allgemeinen Tabelle, wird der dreidimensionale Kern, d.h. die Einheitsbereichskugel auf eine Ebene projiziert, wobei diese Projektion ein Kreis, der Einheitsbereichskreis, ist. Der Einheitsbereichskreis wird dann auf einer Tabelle mit vielen Eingaben, z.B. 100*100, mittels Gaußschem Filter abgetastet, wobei Tabelleneingaben, die nicht in den Einheitsbereichskreis fallen, einen Nullwert besitzen.
  • Da ein Volumen nicht zwangsläufig in allen drei Richtungen den gleichen Abstand aufweist, kann die Einheitsbereichskugel für eine spezielle Betrachtung zu einem Ellipsoid transformiert werden, und deshalb kann die Projektion des Filters für eine spezielle Betrachtung eine Ellipse werden. Anstatt einer Verwendung der allgemeinen Footprint-Tabelle für die Ellipse, wird einmal aus der allgemeinen Footprint-Tabelle eine so genannte, durch Betrachtung transformierte Footprint-Tabelle aufgebaut.
  • Um die durch Betrachtung transformierte Tabelle zu verwenden, muss der Renderer zwei Berechnungen durchführen. Erstens wird für die durch Betrachtung transformierte Tabelle der Umfang in Pixeln zu berechnen sein. Zweitens wird eine Abbildung von der durch Betrachtung transformierten Footprint-Tabelle auf die allgemeine Footprint-Tabelle zu berechnen sein.
  • Der Umfang in Pixeln wird berechnet, indem die Breite des Kerns oder die Ausbreitung genutzt wird. Die Abbildung von der durch Betrachtung transformierten Tabelle auf die allgemeine Tabelle ist entweder eine Abbildung von Kreis auf Kreis oder in dem Fall, wo die Einheitsbereichskugel für eine spezielle Betrachtung zu einem Ellipsoid transformiert wurde, ist die Abbildung von Ellipse auf Kreis.
  • Bei einer Wiedergabe wird die durch Betrachtung transformierte Tabelle an der Bildposition des Abtastwertes zentriert. Es wird ein zusätzlicher Parameter benötigt, um die durch Betrachtung transformierte Footprint-Tabelle zu nutzen, wobei dies die Dimension der Tabelle ist. Die Dimension ist anders als der Umfang der Tabelle. Die Dimension der Tabelle bestimmt die Anzahl von Eingaben für die durch Betrachtung transformierte Tabelle. Die Dimension der durch Betrachtung transformierten Tabelle sollte größer sein als die Anzahl von Pixeln, die sie überdeckt, andererseits werden im Bild Überlappungs-Artefakte auftreten. Durch Betrachtung transformierte Tabellen sowohl mit einem großen Umfang als auch einer großen Dimension werden zu einem verschwommenen Bild des Objekts führen. Die durch Betrachtung transformierte Footprint-Tabelle wird abgetastet für jeden Pixelmittelpunkt der Pixel, die im Umfang der durch Betrachtung transformierten Footprint-Tabelle liegen, und das Gewicht an der speziellen Tabelleneingabe wird verwendet, um den Beitrag zu einem Pixel zu berechnen.
  • Wir wenden das allgemeine schnelle Volumen-Rendering-Verfahren wie folgt auf Oberflächenelemente an. In Volumina ist, wie in 30a dargestellt, der Gitterabstand nicht zwangsläufig in allen drei Richtungen gleich und ist vom Typ der Erfassung abhängig. Außerdem ist die Auflösung der ausgegebenen Abtastwerte (Pixel) normalerweise höher als die Auflösung der eingegebenen Abtastwerte (Raumpunkte). Aus diesem Grund sind in der Formel der Gittermaßstabfaktor und das Pixel-Raumpunkt-Verhältnis für die Berechnung des Umfangs der durch Betrachtung transformierten Tabelle verantwortlich.
  • Für Oberflächenelemente sind diese beiden Faktoren jedoch beide gleich eins. Deshalb kann die Dimension der durch Betrachtung transformierten Footprint-Tabellen verhältnismäßig klein sein. Ein Rekonstruktionskern mit einer radialen Größe von 1,5 wird eine Bildschirmgröße von 3 Pixeln ergeben. Dimensionen von 5*5 bis 10*10 sind für auf Oberflächenelemente angewandtes schnelles Volumen-Rendering ausreichend.
  • Der Renderer beginnt dadurch, dass ein Oberflächenelement auf den Bildschirm projiziert wird und die durch Betrachtung transformierte Footprint-Tabelle an der x,y-Position auf dem Bildschirm zentriert wird. Für jedes Pixel, das in den Umfang der Tabellen fällt, wird die Tabelleneingabe für dieses Pixel bestimmt, wobei das Gewicht an dieser Eingabe auf den Wert des Pixels angewandt wird.
  • Vergleich zwischen Scher-Verzerrung, Skalierung und schnellem Volumen-Rendering
  • Eine Scher-Verzerrung hat den Vorteil, dass die Projektion des Objekts auf die Basisebene immer mit einem dreidimensionalen Gitter durchgeführt wird, das mit der Basisebene fluchtet. Um zu verhindern, dass in dem endgültigen Bild Löcher erscheinen, muss das verzerrte Bild der Basisebene die Werte seiner Pixel interpolieren. Ein Nachteil der Scher-Verzerrung ist, dass jedes Objekt in einer Szene zu einem getrennten Bild wiedergegeben werden muss und die resultierenden Bilder gemischt werden müssen, um eine endgültige Szene zusammenzusetzen. Dies ist komplex und erfordert programmtechnischen Organisationsaufwand.
  • Die Skalierung des Objekts vor einer Wiedergabe kann bewirken, dass sich mehrere Oberflächenelemente auf ein einzelnes Pixel projizieren. Der ursprüngliche Wiedergabeprozess wird angewandt, um die Objekte mit der Eigenschaft wiederzugeben, dass schließlich nur ein Oberflächenelement mit seinem Wert zu dem Pixel beitragen wird und das Oberflächenelement dasjenige mit dem kleinsten Tiefenwert sein wird. Wir sind der Überzeugung, dass eine Skalierung des Objekts mit einem Faktor von 1/2√2 mindestens ein Oberflächenelement je Pixel ergibt. Eine Skalierung macht die Erzeugung von anfänglich größeren Objekten erforderlich, da die Skalierung zu kleineren auf der Bildebene führen wird.
  • Unsere letzte Lösung für das Problem von Löchern ist schnelles Volumen-Rendering des Beitrags eines Oberflächenelements auf eine Nachbarschaft von Pixeln. Der Wert eines Oberflächenelements wird entsprechend einem mit jedem Oberflächenelement assoziierten Filter gewichtet und die gewichteten Werte werden den Pixeln zugeordnet. Das Bild ergibt sich durch Summieren aller Beiträge zu den Pixeln. Somit werden Löcher durch den Beitrag von umgebenden Oberflächenelementen zu dem Pixel gefüllt, vorausgesetzt, dass die Verbreitung der umgebenden Oberflächenelemente groß genug ist. Schnelles Volumen-Rendering bewirkt eine Randglättung der gezackten Ecken und Treppchen auf der Oberfläche des Objekts, weil schnelles Volumen-Rendering von Natur aus die Farben eines Objekts verwischt. Wenn die Verbreitung eines Oberflächenelements zu groß wird, wird die Größe der Unschärfe ebenfalls zu groß werden.
  • Das schnelle Volumen-Rendering-Verfahren kann verwendet werden, um die Darstellung von Oberflächenelementen mit einem schnellen Wiedergabeverfahren und der Fähigkeit, Objekte ohne konstantes Resampling zu verformen, zur Verfügung zu stellen. Weil am Anfang die Oberflächenelemente eines Objekts 8-fach und deshalb meistens nur im Abstand von maximal einem Pixel voneinander verbunden sind, können die zum schnellen Volumen-Rendering verwendeten Tabellen verhältnismäßig klein gehalten werden. Tabellen mit Umfängen von 6*6 und 8*8 Pixel sind genug, um die Löcher auszufüllen.
  • Wenn das Objekt verformt wird, um zu bewirken, dass große Löcher in seiner Oberfläche auftreten, muss es dem Resampling nicht unmittelbar unterzogen werden. Zuerst kann der Umfang des schnellen Volumen-Rendering-Kerns vergrößert werden, um die größeren Löcher zu füllen. Umfänge, die zu groß sind, verlangsamen die Wiedergabe erheblich, und deshalb könnte gelegentliches Resampling des Objekts oder die örtliche Erzeugung von Oberflächenelementen an Positionen großer Löcher in einer Oberfläche erforderlich werden.

Claims (20)

  1. Verfahren zum Darstellen einer Repräsentation eines graphischen Objekts (101, 102, 103, 104) in einem Speicher, welches aufweist: Teilen einer Oberfläche des Objekts (101, 102, 103, 104) in eine Vielzahl von Zellen (200) mit einer auf eine Bildebenenauflösung bezogenen Gitterauflösung; Speichern eines einzelnen nulldimensionalen Oberflächenelements (100) in dem Speicher für jede Zelle (200), die sich an der Oberfläche des Objekts befindet; Verbinden der Oberflächenelemente in benachbarten Zellen (200) durch Verbindungen (300), Zuweisen von Attributen (401) des Teils des Objekts, der in der Zelle (200) enthalten ist, zu jedem Oberflächenelement (100) und jeder Verbindung (300); Projizieren der mit jedem Oberflächenelement (100) assoziierten Attribute (401) auf die Bildebene (203); dadurch gekennzeichnet, dass das Teilen der Oberfläche des Objekts in die Vielzahl von Zellen in einer solchen Weise durchgeführt wird, dass eine Eins-Zu-Eins-Kartierung zwischen Oberflächenelementen (100) und Elementen (202) der Bildebene (203) definiert ist.
  2. Verfahren nach Anspruch 1, bei dem die jedem Oberflächenelement zugewiesenen Objektattribute eine Position des Oberflächenelements auf der Oberfläche des Objekts, eine Farbe, Opazität, und die Oberflächennormale des Teils des Objekts, der in der entsprechenden Zelle enthalten ist, enthalten.
  3. Verfahren nach Anspruch 1, bei dem das Projizieren in einer Objektfolge unter Verwendung der Interpolation der nächsten Nachbarn ist.
  4. Verfahren nach Anspruch 1, bei dem jedes Oberflächenelement durch einen Vektor S = {x, y, z, ox, oy, oz, nx, ny, nz, r, g, b, α}dargestellt wird, wobei x, y, z eine Position des Oberflächenelements sind, o eine Versetzung zu einem benachbarten Oberflächenelement ist, n, eine Oberflächennormale ist und r, g, b Farben des Oberflächenelements sind.
  5. Verfahren nach Anspruch 1, bei dem die Oberflächenelemente in einer Liste gespeichert sind.
  6. Verfahren nach Anspruch 5, weiterhin aufweisend: Durchlaufen der Liste in Aufeinanderfolge und Transformieren der Position jedes Oberflächenelements von einem Weltraum-Koordinatensystem in ein Betrachtungsraum-Koordinatensystem unter Verwendung einer Betrachtungsmatrix M.
  7. Verfahren nach Anspruch 6, bei dem die Transformation affin ist.
  8. Verfahren nach Anspruch 6, bei dem das Betrachtungsraum-Koordinatensystem gegenüber einer nahen Grenze und einer entfernten Grenze begrenzt ist.
  9. Verfahren nach Anspruch 1, weiterhin aufweisend den Schritt: Eliminieren versteckter Oberflächenelemente unter Verwendung eines Tiefenpuffers.
  10. Verfahren nach Anspruch 1, weiterhin aufweisend die Schritte: Wiederorientieren der Oberflächenelementdarstellung, um eine unterschiedliche Betrachtung des Objekts zu reflektieren, wobei die wiederorientierte Darstellung Löcher enthält und jedes Loch eine Zelle ist, der ein Oberflächenelement fehlt; und Füllen der Löcher unter Verwendung einer Scher/Verformungs-Faktorenzerlegung.
  11. Verfahren nach Anspruch 6 oder 10, bei dem die Betrachtungsmatrix deformiert ist: Mview = P·S·Mwarp worin P eine Permutationsmatrix ist, S eine Schermatrix ist und Mwarp eine Verformungsmatrix ist und die Projektion ist orthogonal zu einer Basisebene.
  12. Verfahren nach Anspruch 1, weiterhin aufweisend die Schritte: Wiederorientieren der Oberflächenelementdarstellung, um eine unterschiedliche Ansicht des Objekts zu reflektieren, wobei die wiederorientierte Darstellung Löcher enthält und jedes Loch eine Zelle ist, der ein Oberflächenelement fehlt; und Skalieren des Oberflächenelements in eine Größe, in der jede Zelle zumindest ein Oberflächenelement für irgendeine Orientierung des Objekts enthält.
  13. Verfahren nach Anspruch 12, bei dem das Skalieren durch einen Faktor von ½√2 erfolgt.
  14. Verfahren nach Anspruch 1, weiterhin aufweisend die Schritte: Bewegen der Oberflächenelementdarstellung, um eine Verformung des Objekts zu reflektieren, wobei die verformte Darstellung Löcher enthält und jedes Loch eine Zelle ist, der zumindest ein Oberflächenelement fehlt; und Spreizen eines Beitrags jedes Oberflächenelements während des Projizierens gemäß einem Rekonstruktionskern.
  15. Verfahren nach Anspruch 14, bei dem der Kern als eine Einheitskugel definiert ist, und das Spreizen des Beitrags erfolgt entsprechend einer Gaußschen Filterfunktion der Form
    Figure 00640001
    .
  16. Verfahren nach Anspruch 15, bei dem die Einheitskugel in ein Ellipsoid für eine besondere Orientierung verformt wird, und das Projizieren der Kugel auf die Bildebene ist eine Ellipse für die entsprechende Ansicht.
  17. Verfahren nach Anspruch 1, bei dem die Gitterauflösung größer als die Bildebenenauflösung für einen niedrigeren Pegel der Detaildarstellung des Objekts ist, und die Gitterauflösung gleich der Bildebenenauflösung für einen identischen Pegel der Detaildarstellung des Objekts ist, und die Gitterauflösung kleiner als die Bildebenenauflösung für einen höheren Pegel der Detaildarstellung des Objekts ist.
  18. Verfahren nach Anspruch 17, bei dem Attribute von benachbarten Oberflächenelementen kombiniert werden.
  19. Verfahren nach Anspruch 18, bei dem der Durchschnitt von Farbattributen von vier benachbarten Oberflächenelementen gebildet wird.
  20. Verfahren nach Anspruch 17, bei dem die Gitterauflösung proportional zu einem Abstand zwischen dem Objekt und der Bildebene ist.
DE69924700T 1999-01-29 1999-12-30 Verfahren zur Darstellung von durch Oberflächenelemente repräsentierten grafischen Objekten Expired - Lifetime DE69924700T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US240640 1999-01-29
US09/240,640 US6448968B1 (en) 1999-01-29 1999-01-29 Method for rendering graphical objects represented as surface elements

Publications (2)

Publication Number Publication Date
DE69924700D1 DE69924700D1 (de) 2005-05-19
DE69924700T2 true DE69924700T2 (de) 2006-02-09

Family

ID=22907344

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69924700T Expired - Lifetime DE69924700T2 (de) 1999-01-29 1999-12-30 Verfahren zur Darstellung von durch Oberflächenelemente repräsentierten grafischen Objekten

Country Status (5)

Country Link
US (1) US6448968B1 (de)
EP (1) EP1024457B1 (de)
JP (1) JP3285565B2 (de)
AT (1) ATE293269T1 (de)
DE (1) DE69924700T2 (de)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6885378B1 (en) * 2000-09-28 2005-04-26 Intel Corporation Method and apparatus for the implementation of full-scene anti-aliasing supersampling
US7295200B2 (en) * 2000-11-07 2007-11-13 F. Poszat Hu, Llc Computer generated hologram display system
US20020075290A1 (en) * 2000-12-20 2002-06-20 Microsoft Corporation Incremental and interruptible layout of visual modeling elements
US7103527B2 (en) * 2000-12-20 2006-09-05 Microsoft Corporation Negotiated interconnection of visual modeling elements
US6795089B2 (en) 2000-12-20 2004-09-21 Microsoft Corporation Dynamic, live surface and model elements for visualization and modeling
US7320120B2 (en) * 2000-12-20 2008-01-15 Microsoft Corporation Pluggable notations and semantics for visual modeling elements
EP1456830A1 (de) * 2001-11-14 2004-09-15 The Henry M. Jackson Foundation Haptische schnittstelleneinrichtung für eine mehrfachberührungsanzeige
US7019760B2 (en) * 2002-01-02 2006-03-28 Xerox Corporation Method and apparatus for fast computation of associative operations over fixed size regions of a digital image
JP3855053B2 (ja) * 2003-01-30 2006-12-06 国立大学法人 東京大学 画像処理装置、画像処理方法、及び画像処理プログラム
US20050017968A1 (en) * 2003-07-21 2005-01-27 Stephan Wurmlin Differential stream of point samples for real-time 3D video
KR100559730B1 (ko) * 2003-09-22 2006-03-15 삼성전자주식회사 기록 시스템을 위한 데이터 부호화/복호화 방법 및 장치
US7385603B2 (en) * 2004-06-30 2008-06-10 Warner Bros. Entertainment, Inc. Method for simulating motion of cloth
US7230620B2 (en) * 2004-08-05 2007-06-12 Mitsubishi Electric Research Laboratories, Inc. Rendering deformable and animated surface reflectance fields
DE102005038205B4 (de) 2005-08-12 2012-07-19 Airbus Operations Gmbh Windkanal mit einem darin angeordneten Modell, insbesondere einem Modell eines Luftfahrzeugs, zur Erfassung und Auswertung einer Vielzahl von Messdaten sowie Verfahren
JP4783100B2 (ja) * 2005-09-12 2011-09-28 独立行政法人理化学研究所 境界データのセル内形状データへの変換方法とその変換プログラム
US7884835B2 (en) * 2005-10-12 2011-02-08 Autodesk, Inc. Techniques for projecting data sets between high-resolution and low-resolution objects
US8786613B2 (en) 2006-04-08 2014-07-22 Alan Millman Method and system for interactive simulation of materials and models
WO2007117586A2 (en) * 2006-04-08 2007-10-18 Allan Millman Method and system for interactive simulation of materials
US20080012853A1 (en) * 2006-07-14 2008-01-17 William Geiger Generating mesh from implicit surface
US9007388B1 (en) 2006-09-28 2015-04-14 Pixar Caching attributes of surfaces without global parameterizations
US8189006B1 (en) * 2006-09-28 2012-05-29 Pixar Caching attributes of surfaces without global parameterizations
US20090232355A1 (en) * 2008-03-12 2009-09-17 Harris Corporation Registration of 3d point cloud data using eigenanalysis
US20090232388A1 (en) * 2008-03-12 2009-09-17 Harris Corporation Registration of 3d point cloud data by creation of filtered density images
US20090231327A1 (en) * 2008-03-12 2009-09-17 Harris Corporation Method for visualization of point cloud data
US9336624B2 (en) 2008-10-07 2016-05-10 Mitsubishi Electric Research Laboratories, Inc. Method and system for rendering 3D distance fields
CN101764946B (zh) * 2008-11-04 2013-06-05 新奥特(北京)视频技术有限公司 一种将字幕对象的矢量轮廓离散化为直线段的方法
CN101764944B (zh) * 2008-11-04 2013-03-06 新奥特(北京)视频技术有限公司 根据内外边属性对字幕对象矢量轮廓进行归并整理的方法
CN101764938B (zh) * 2008-11-04 2013-06-05 新奥特(北京)视频技术有限公司 一种基于相邻四像素等高线距离的边缘反走样处理方法
CN101764948B (zh) * 2008-11-04 2013-06-05 新奥特(北京)视频技术有限公司 一种字幕对象矢量轮廓中自相交封闭轮廓的分割方法
CN101764939B (zh) * 2008-11-04 2013-05-01 新奥特(北京)视频技术有限公司 一种基于像素空间掩码矩阵的纹理贴图方法
CN101764942B (zh) * 2008-11-04 2013-03-06 新奥特(北京)视频技术有限公司 一种像素空间掩码矩阵的像素面积的确定方法
CN101764945B (zh) * 2008-11-04 2013-05-01 新奥特(北京)视频技术有限公司 一种基于贝塞尔曲线封闭轮廓的字幕渲染方法
CN101764943B (zh) * 2008-11-04 2013-08-14 新奥特(北京)视频技术有限公司 根据交点分割字幕对象矢量轮廓中二次贝塞尔曲线的方法
CN101764937B (zh) * 2008-11-04 2013-06-05 新奥特(北京)视频技术有限公司 确定像素空间掩码矩阵的像素到最外侧边距离的方法
US20100208981A1 (en) * 2009-02-13 2010-08-19 Harris Corporation Method for visualization of point cloud data based on scene content
US8290305B2 (en) * 2009-02-13 2012-10-16 Harris Corporation Registration of 3D point cloud data to 2D electro-optical image data
US20110115812A1 (en) * 2009-11-13 2011-05-19 Harris Corporation Method for colorization of point cloud data based on radiometric imagery
US20120303289A1 (en) * 2009-12-02 2012-11-29 Anders Ohrn Combined on-lattice/off-lattice optimization method for rigid body docking
US20110200249A1 (en) * 2010-02-17 2011-08-18 Harris Corporation Surface detection in images based on spatial data
US9401046B2 (en) * 2011-02-07 2016-07-26 Intel Corporation Micropolygon splatting
JP5833958B2 (ja) * 2012-03-14 2015-12-16 富士フイルム株式会社 画像処理装置および方法並びにプログラム
CN107038741B (zh) * 2016-11-21 2020-08-11 上海咔咖文化传播有限公司 三维渲染二维光影的方法
JP6281006B1 (ja) * 2017-03-30 2018-02-14 株式会社スクウェア・エニックス 交差判定プログラム、交差判定方法及び交差判定装置
US11107100B2 (en) 2019-08-09 2021-08-31 International Business Machines Corporation Distributing computational workload according to tensor optimization
CN111862071B (zh) * 2020-07-29 2024-03-05 南通大学 一种基于ct图像测量腰1椎体ct值的方法
CN112595634B (zh) * 2020-12-14 2021-09-24 青岛理工大学 一种三维颗粒材料的内部变形分析实验装置及方法
CN115441178B (zh) * 2022-08-08 2023-10-20 哈尔滨哈玻拓普复合材料有限公司 一种球形天线罩单元板块的几何划分方法
CN116975335B (zh) * 2023-09-25 2023-12-26 瀚博半导体(上海)有限公司 图像扭曲运算的顺序仿存方法、装置、介质及电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4831528A (en) * 1987-11-09 1989-05-16 General Electric Company Apparatus and method for improvement of 3D images derived from tomographic data
US4953087A (en) * 1988-10-24 1990-08-28 General Electric Company Three-dimensional images obtained from tomographic data having unequally spaced slices
US5627949A (en) * 1991-12-19 1997-05-06 Letcher, Jr.; John S. System of relational entities for object-oriented computer-aided geometric design
US5544283A (en) * 1993-07-26 1996-08-06 The Research Foundation Of State University Of New York Method and apparatus for real-time volume rendering from an arbitrary viewing direction
US6064393A (en) * 1995-08-04 2000-05-16 Microsoft Corporation Method for measuring the fidelity of warped image layer approximations in a real-time graphics rendering pipeline
US5886702A (en) * 1996-10-16 1999-03-23 Real-Time Geometry Corporation System and method for computer modeling of 3D objects or surfaces by mesh constructions having optimal quality characteristics and dynamic resolution capabilities
US6069634A (en) * 1997-01-08 2000-05-30 Mitsubishi Electric Information Technology Center America, Inl System for rapidly deforming a graphical object

Also Published As

Publication number Publication date
DE69924700D1 (de) 2005-05-19
JP2000222603A (ja) 2000-08-11
US6448968B1 (en) 2002-09-10
ATE293269T1 (de) 2005-04-15
EP1024457A3 (de) 2002-07-17
EP1024457B1 (de) 2005-04-13
EP1024457A2 (de) 2000-08-02
JP3285565B2 (ja) 2002-05-27

Similar Documents

Publication Publication Date Title
DE69924700T2 (de) Verfahren zur Darstellung von durch Oberflächenelemente repräsentierten grafischen Objekten
DE69924699T2 (de) Verfahren zur Schaffung von als Oberflächenelemente dargestellten grafischen Objekten
DE69924230T2 (de) Verfahren zur Modellierung von durch Oberflächenelemente dargestellten grafischen Objekten
DE60026197T2 (de) Detailgerichtete hierarchische Distanzfelder in der Objektmodellierung
DE60107130T2 (de) Sichtbarkeitsprojektion und Bildrekonstruktion für Oberflächenelemente
DE112007002991B4 (de) Computergraphikschattenvolumen unter Verwendung von hierarchischem Okklusions-Culling
DE102020000810A1 (de) 3D-Objektrekonstruktion unter Nutzung einer fotometrischen Netzdarstellung
US6342886B1 (en) Method for interactively modeling graphical objects with linked and unlinked surface elements
DE69907415T2 (de) Bestimmung sichtbarer objekte für interaktive visualisation
DE102019103059A1 (de) Hieb- und stichfester Strahl-Dreieck-Schnittpunkt
DE602004011749T2 (de) Umschlagsdeformation mittels unterteilten Oberflächen
US7230624B2 (en) Method and apparatus for modeling and real-time rendering of surface detail
DE102017009910A1 (de) Bearbeiten von Digitalbildern unter Nutzung eines neuronalen Netzwerkes mit einer netzwerkinternen Erstellungsschicht
DE19654807A1 (de) System und Verfahren zum Erzeugen von Haar unter Verwendung texturierter unscharfer Segmente in einem Computergrafiksystem
DE19654809A1 (de) System und Verfahren zum Erzeugen von Haar mit einem Computergrafiksystem
DE112012005657T5 (de) Computerprogrammprodukt und Verfahren zum Erzeugen und Simulieren eines Modells eines Objekts
DE19606357A1 (de) Bildverarbeitungsverfahren zur Darstellung von spiegelnden Objekten und zugehörige Vorrichtung
DE102016103854A1 (de) Graphikverarbeitung mit direktionalen Darstellungen der Beleuchtung an Sondenpositionen innerhalb einer Szene
US6480190B1 (en) Graphical objects represented as surface elements
DE19708679A1 (de) Bilddarstellungsverfahren und Vorrichtung zur Durchführung des Verfahrens
Deussen et al. An illustration technique using hardware-based intersections and skeletons
DE602004012341T2 (de) Verfahren und System zur Bereitstellung einer Volumendarstellung eines dreidimensionalen Objektes
DE60024514T2 (de) Aufzeichnungsmedium, Verfahren und Einrichtung zur Bildverarbeitung mit integrierten Daten zur Formmodellierung
DE60026785T2 (de) Bildverarbeitungsgerät
DE60030401T2 (de) Anzeigetechniken für dreidimensionale virtuelle Realität

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)