DE102014007914A1 - Graphisches Darstellen von Straßen und Routen unter Benutzung von Hardware-Tesselierung - Google Patents

Graphisches Darstellen von Straßen und Routen unter Benutzung von Hardware-Tesselierung Download PDF

Info

Publication number
DE102014007914A1
DE102014007914A1 DE102014007914.7A DE102014007914A DE102014007914A1 DE 102014007914 A1 DE102014007914 A1 DE 102014007914A1 DE 102014007914 A DE102014007914 A DE 102014007914A DE 102014007914 A1 DE102014007914 A1 DE 102014007914A1
Authority
DE
Germany
Prior art keywords
road
curve
tessellation
segment
parameterization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102014007914.7A
Other languages
English (en)
Inventor
Quirin Meyer
Mario Pörner
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.)
Elektrobit Automotive GmbH
Original Assignee
Elektrobit Automotive GmbH
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 Elektrobit Automotive GmbH filed Critical Elektrobit Automotive GmbH
Priority to DE102014007914.7A priority Critical patent/DE102014007914A1/de
Priority to US14/721,583 priority patent/US9483872B2/en
Priority to JP2015106057A priority patent/JP6009039B2/ja
Priority to CN201510279596.8A priority patent/CN105320518B/zh
Publication of DE102014007914A1 publication Critical patent/DE102014007914A1/de
Pending legal-status Critical Current

Links

Images

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
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/38Electronic maps specially adapted for navigation; Updating thereof
    • G01C21/3804Creation or updating of map data
    • G01C21/3807Creation or updating of map data characterised by the type of data
    • G01C21/3815Road data
    • G01C21/3819Road shape data, e.g. outline of a route
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30181Earth observation
    • G06T2207/30184Infrastructure

Abstract

Es wird eine technische Lösung zum graphischen Darstellen von Straßen-Segmenten unter Einsatz von Hardware-Tesselierung bereitgestellt, wobei jedem Straßensegment kartographische Daten zugeordnet sind, welche wenigstens einen zweidimensionalen oder dreidimensionalen Straßenverlauf des Straßen-Segments beschreiben. Ein Verfahrensaspekt umfasst die Schritte des stückweisen Zerlegens der Parametrisierung des Straßensegments in voneinander unabhängige Kurven-Segmente, des Bereitstellens wenigstens eines Tesselierungsfaktors für jedes Kurven-Segment, wobei der wenigstens eine Tesselierungsfaktor angibt, in wie viele Untersegmente ein jedes Kurven-Segment in Richtung des Straßenverlaufs zu unterteilen ist, des Erzeugens eines Tesselierungsmusters für jedes Kurven-Segment in Abhängigkeit des wenigstens einen Tesselierungsfaktors und des Erzeugens von auf einem Bildschirm darstellbaren Primitiven auf der Grundlage des erzeugten Tesselierungsmusters und des parametrisierten Straßenverlaufs.

Description

  • Die vorliegende Offenbarung betrifft allgemein die Darstellung von kartographischen Daten unter Verwendung von Hardware-Tesselierung. Konkret wird eine Lösung zum graphischen Darstellen von Straßensegmenten auf der Grundlage kartographischer Daten, die wenigstens einen zweidimensionalen oder dreidimensionalen Straßenverlauf der Straßensegmente beschreiben, angegeben.
  • Hintergrund
  • Digitale Kartendaten umfassen in der Regel Straßenkantendaten und Straßenknotendatendaten, um ein Straßennetz wiederzugeben. Eine Straßenkante repräsentiert innerhalb des Straßennetzes ein Straßensegment zwischen zwei aufeinanderfolgenden Kreuzungen oder Abzweigungen. Ein Straßenknoten repräsentiert eine Kreuzung oder eine Abzweigung im Straßennetz.
  • Die graphische Darstellung eines Straßennetzes besteht im Wesentlichen in der konkreten visuellen Wiedergabe des Straßenverlaufes einzelner Straßen des Straßennetzes. Ähnliches gilt für die Darstellung einer berechneten Route im Zuge einer Routenberechnungsfunktion, bei der der Straßenverlauf der berechneten Route (ganz oder stückweise) dargestellt wird. Der Straßenverlauf beschreibt den Kurvenverlauf von Straßen, Straßensegmenten oder Routen innerhalb eines kartographischen Koordinatensystems.
  • Zur Beschreibung des Straßenverlaufes sind in den digitalen Kartendaten sogenannte Formpunkte (shape points) hinterlegt. Ein jedes Straßensegment (bzw. eine jede Straßenkante) ist dabei mit einer Abfolge von Formpunkten verknüpft, welche den Kurvenverlauf des Straßensegments beschreiben. Jeder Formpunkt repräsentiert eine Position bezüglich eines kartographischen Koordinatensystems (z. B. geographische Länge und geographische Breite).
  • Bei gegenwärtigen Darstellungsverfahren werden zur graphischen Darstellung von Straßensegmenten oder Routen die den Straßensegmenten oder Routen zugeordneten Formpunkte verwendet. Der Straßenverlauf wird entsprechend den Positionen der Formpunkte dargestellt, wobei der Straßenverlauf zwischen jeweils benachbarten Formpunkten linear interpoliert wird.
  • Ein Beispiel einer derartigen graphischen Darstellung von Straßensegmenten mittels linearer Interpolation zwischen benachbarten Formpunkten ist in 1A und 1B gezeigt. 1A zeigt einen Ausschnitt eines Straßennetzes bestehend aus den Straßensegmenten 60, 63, 64, welche jeweils am Knoten 62 münden. Da die Straßensegmente eine starke Krümmung aufweisen, führen die zwischen den Formpunkten 60a, 60b, 63a, 63b, 64a und dem Knotenpunkt 62 linear interpolierten Kurvenverläufe zu kantigen und nicht glatten Übergängen. Wie unmittelbar aus der rechten Darstellung von 1A ersichtlich wird, entstehen an den Punkten 60b, 62, 63a, 64a markante Übergänge, welche den realen Kurvenverlauf stark verzerrt widergeben.
  • Eine Möglichkeit, den Kurvenverlauf glatter erscheinen zu lassen, besteht darin, weitere Formpunkte bereitzustellen, um die Abstände benachbarter Formpunkte weiter zu verkleinern, wie in der linken Zeichnung von 1B schematisch dargestellt ist. Hierbei wurden zusätzliche Formpunkte (dargestellt durch die kleinen Kreise) zwischen den bestehenden Formpunkten 60a, 60b, 63a, 63b, 64a, 64b eingefügt. In der Tat kann der Kurvenverlauf glatter und somit realistischer dargestellt werden, wie aus der rechten Darstellung in 1B unmittelbar ersichtlich ist.
  • Der Nachteil einer derartigen Lösung ist jedoch, dass die in den Kartendaten bereitzustellende Information weiter zunimmt, wodurch noch mehr Speicherplatz benötigt wird. Ferner steigt mit zunehmender Anzahl an Formpunkten die Verarbeitungszeit pro darzustellendem Frame, da bei der graphischen Darstellung jeder Formpunkt separat prozessiert werden muss. Dies geht zu Lasten der graphischen Darstellungsgeschwindigkeit. Eine langsame graphische Darstellung ist jedoch nicht erwünscht, da für eine flüssige Darstellung Kartendaten in der Regel mehrmals pro Sekunde graphisch aktualisiert werden müssen. Aus Performance-Gründen wird daher eine geringere Anzahl an Formpunkten gewählt und somit eine geringere Qualität der graphischen Darstellung von Kartendaten akzeptiert.
  • Kurzer Abriss
  • Der vorliegenden Offenbarung liegt daher die Aufgabe zugrunde, ein verbessertes graphisches Darstellungsverfahren bereitzustellen, welches insbesondere die Darstellung von Straßen und Routen weiter verbessert.
  • Gemäß einem ersten Aspekt der vorliegenden Offenbarung wird ein computerimplementiertes Verfahren zum graphischen Darstellen von Straßensegmenten unter Einsatz von Hardware-Tesselierung bereitgestellt, wobei jedem Straßensegment kartographische Daten zugeordnet sind, welche wenigstens einen zweidimensionalen oder dreidimensionalen Straßenverlauf des Straßensegments beschreiben. Das Verfahren umfasst hierbei die Schritte des Bereitstellens einer Parametrisierung, welche den Straßenverlauf eines Straßensegments beschreibt, des stückweisen Zerlegens der Parametrisierung des Straßensegments in voneinander unabhängige Kurven-Segmente, des Bereitstellens wenigstens eines Tesselierungsfaktors für jedes Kurven-Segment, wobei der wenigstens eine Tesselierungsfaktor angibt, in wie viele Untersegmente ein jedes Kurven-Segment in Richtung des Straßenverlaufs zu unterteilen ist, des Erzeugens eines Tesselierungsmusters für jedes Kurven-Segment in Abhängigkeit des wenigstens einen Tesselierungsfaktors und des Erzeugens von auf einem Bildschirm darstellbaren Primitiven auf der Grundlage des erzeugten Tesselierungsmusters und des parametrisierten Straßenverlaufs.
  • Ein Straßensegment kann einen Straßenabschnitt oder einen Routenabschnitt zwischen zwei aufeinanderfolgenden Kreuzungen oder Abzweigungen eines Straßennetzes beschreiben. Ein Straßennetz oder eine Route kann somit durch graphische Darstellung der zum Straßennetz oder zur Route gehörigen Straßensegmente graphisch dargestellt werden.
  • Der Straßenverlauf kann den Kurvenverlauf (z. B. die geometrische Form) eines Straßensegmentes oder einer Straße bezüglich eines vorgegebenen kartographischen Koordinatensystems beschreiben. In anderen Worten kann der Straßenverlauf eine Kurvigkeit eines Straßensegments wiedergeben. Die Kurvigkeit eines Straßensegmentes beschreibt in einer Variante das Verhältnis aus den Winkeländerungen eines Straßensegmentes bezogen auf die Straßensegmentlänge. Bei Berücksichtigung des Terrains in den Kartendaten kann der Straßenverlauf auch dreidimensional sein. Ein Kurvenverlauf eines jeden Straßensegments kann durch in den kartographischen Daten abgespeicherten Formpunkten (sog. shape points) beschrieben werden. Konkret kann jedes Straßensegment aus einer Serie von Formpunkten beschrieben werden. Jeder Formpunkt wird durch seine geographische Position (Länge, Breite und ggf. Höhe) innerhalb des kartographischen Koordinatensystems beschrieben.
  • Die graphische Darstellung von Straßensegmenten oder Straßen kann Vektorgraphikbasiert erfolgen. Ein jedes Straßensegment kann hierbei mit Hilfe von Primitiven graphisch dargestellt werden. Mit anderen Worten kann jedes Straßensegment aus Primitiven zusammengesetzt oder aufgebaut werden. Unter Primitiven versteht man elementare graphische Elemente, umfassend Punkte, Linien, Dreiecke, Rechtecke und/oder Polygone. Zur graphischen Darstellung können insbesondere Dreiecke als Primitive eingesetzt, da jede beliebige darzustellende Fläche (Oberfläche) aus Dreiecken darstellbar ist. Ferner sind Graphikprozessoren (Graphical Processing Units oder GPUs) häufig für die Darstellung von Dreieck-Primitiven optimiert. Es versteht sich, dass für die graphische Darstellung von Straßensegmenten anstelle von Dreiecken auch andere Primitive, wie beispielsweise Rechtecke, verwendet werden können.
  • Jedes Straßensegment kann aus den für die Kurven-Segmente erzeugten Primitiven zusammengesetzt und graphisch dargestellt werden. Die Erzeugung von Primitiven zur graphischen Darstellung eines Straßensegmentes hängt hierbei vom erzeugten Tesselierungsmuster ab. Das Tesselierungsmuster kann angeben, in wie viele Primitive ein parametrisiertes Straßensegment (Kurven-Segment) zerlegt werden soll. Es kann auch angeben, welche Primitive (z. B. Dreiecke) für die Zerlegung verwendet werden sollen. Das Tesselierungsmuster kann somit den Grad der Zerlegung (feinmaschige Zerlegung mit vielen Primitiven oder grobmaschige Zerlegung mit wenigen Primitiven) und die Art der Zerlegung (Rechtecke, Dreiecke, usw.) festlegen.
  • Der Kurvenverlauf eines jeden Kurven-Segments kann somit durch die erzeugten Primitive linear interpoliert werden. Die Güte der Interpolation kann hierbei von der Anzahl der erzeugten Primitive in Richtung des Kurvenverlaufs abhängen. Die Anzahl der Primitive in Richtung des Kurvenverlaufs des Kurven-Segments kann dabei durch den dem Straßenverlauf zugeordneten Tesselierungsfaktor festgelegt werden.
  • Ein dem Straßenverlauf zugeordneter Tesselierungsfaktor kann für jedes Kurven-Segment dynamisch berechnet werden. Er kann hierbei wenigstens in Abhängigkeit des Kurvenverlaufes eines jeden Kurven-Segmentes (individuell) berechnet werden. Er kann derart berechnet werden, dass für Kurven-Segmente mit hoher Kurvigkeit ein größerer Tesselierungsfaktor bereitgestellt wird als für Kurven-Segmente mit geringer Kurvigkeit. Dadurch kann erreicht werden, dass Kurven-Segmente mit hoher Kurvigkeit durch viele Primitive in Richtung des Straßenverlaufs dargestellt werden, während Kurven-Segmente mit geringer Kurvigkeit mit Hilfe weniger Primitive graphisch dargestellt werden. Durch die Verwendung eines großen Tesselierungsfaktors (und damit die Verwendung einer feinmaschigen Tesselierung) kann für Kurven-Segmente mit hoher Kurvigkeit sichergestellt werden, dass die graphische Darstellung mittels Primitiven den realen Kurvenverlauf des Kurven-Segmentes möglichst gut interpoliert und eine glatte graphische Kurven-Darstellung gewährleistet ist. Andererseits benötigen Kurven-Segmente mit geringer Kurvigkeit oder beinahe linearem Verlauf nur wenige Primitive, um eine glatte graphische Kurven-Darstellung zu erreichen. Somit kann durch die Kurven-Segment-abhängige Erzeugung des dem Kurvenverlauf zugeordneten Tesselierungsfaktors festgelegt werden, mit welcher Detailgenauigkeit ein jedes Kurven-Segment graphisch dargestellt werden kann.
  • Zum Berechnen des dem Straßenverlauf zugeordneten Tesselierungsfaktors kann der auf einen Bildschirm (oder ein sonstiges optisches Ausgabemedium) projizierte Kurvenverlauf des Kurven-Segments herangezogen werden. Der projizierte Kurvenverlauf kann sich je nach Blickwinkel von einem realen Kurvenverlauf eines Straßensegmentes unterscheiden. Beispielsweise kann ein Kurven-Segment mit hoher realer Kurvigkeit bei seitlicher Betrachtungsweise annähernd linear am Bildschirm dargestellt werden. Für ein derartiges Segment wird keine hohe Detailgenauigkeit bei der graphischen Darstellung benötigt, womit ein geringer Tesselierungsfaktor entlang des Straßenverlaufs bereitgestellt werden kann.
  • Gemäß einer Implementierung kann der dem Straßenverlauf zugeordnete Tesselierungsfaktor für ein in einem Parameterintervall [ti, ti+1] parametrisiertes Kurven-Segment F →i gemäß der Gleichung utess = 2 × log(δ)/log(ε0) berechnet werden, wobei utess den Tesselierungsfaktor bezeichnet, δ einen voreingestellten Genauigkeitswert angibt, und wobei ε0 aus einem Anfangspunkt S →0 = F →(ti), einem Endpunkt S →2 = F →(ti+1) und einem Punkt S →1 = F →(1/2(ti + ti+1)) der Parametrisierung F →i berechnet wird, indem ein Abstand einer den Anfangspunkt S →1 und Endpunkt S →2 verbindenden Geraden zum Punkt S →1 berechnet wird. S →1, S →2, und S →3 können hierbei auf Bildschirmkoordinaten projizierte Werte der Parameterkurve sein. Ferner kann der voreingestellte Genauigkeitswert δ in Pixel angegeben sein. Er kann auf einen Pixel-Bruchteil (z. B. ein halbes Pixel) festgesetzt sein. Es versteht sich, dass der voreingestellte Genauigkeitswert auch einen anderen Wert (beispielsweise ein Pixel) annehmen kann.
  • Alternativ oder zusätzlich zur Kurvenverlauf-abhängigen Berechnung kann der dem Straßenverlauf zugeordnete Tesselierungsfaktor auch in Abhängigkeit eines Betrachtungsfeldes für die darzustellenden Kurven-Segmente berechnet werden. Beispielsweise können Kurven-Segmente, die sich, von einem Betrachter aus gesehen, weiter entfernt befinden, gröber tesseliert werden (und damit mit einer geringeren Detailgenauigkeit graphisch dargestellt werden) als Kurven-Segmente in einer unmittelbaren Umgebung des Betrachters.
  • Da Straßen und Routen am Bildschirm nicht lediglich als eindimensionale Linien, sondern als zweidimensionale graphische Objekte mit einer bestimmten (variablen) Straßenbreite dargestellt werden, kann ein weiterer Tesselierungsfaktor für eine zum Straßenverlauf senkrechte Richtung (also entlang der Straßenbreite) bereitgestellt werden. Der der Straßenbreite zugeordnete Tesselierungsfaktor kann hierbei einen konstanten Wert annehmen. Der Tesselierungsfaktor kann beispielsweise den Wert 1 annehmen. In diesem Fall erfolgt in Richtung der Straßenbreite keine Tesselierung (also keine weitere Zerlegung in Primitive). Selbstverständlich kann gemäß einer alternativen Variante der Tesselierungsfaktor in Richtung der Straßenbreite auch einen anderen Wert annehmen. In beiden Fällen hängt der Tesselierungsfaktor in Richtung der Straßenbreite nicht vom Kurvenverlauf der Kurven-Segmente ab.
  • Der Schritt des Erzeugens eines Tesselierungsmusters kann den Unterschritt umfassen: Erzeugen von Abtastpunkten in Abhängigkeit des wenigstens einen bereitgestellten Tesselierungsfaktors, wobei die erzeugten Abtastpunkte den Grad der Unterteilung eines Kurven-Segments entlang des Straßenverlaufes angeben. Der Schritt des Erzeugens kann ferner ein Erzeugen von Abtastpunkten in Abhängigkeit des der Straßenbreite zugeordneten Tesselierungsfaktors umfassen, welcher den Grad der Unterteilung der Breite des Kurven-Segments angibt. Der Schritt des Erzeugens kann ferner ein Erzeugen eines zweidimensionalen Musters auf Basis der Abtastpunkte umfassen. Das Tesselierungsmuster kann aus Dreiecken bestehen, wobei die Abtastpunkte die Eckpunkte des Dreieckmusters bilden.
  • Der Schritt des Erzeugens von darstellbaren Primitiven kann die folgenden Unterschritte umfassen: Durchführen einer Koordinatentransformation, welche die Parametrisierung des Straßenverlaufs auf Koordinaten des Bildschirm-Raums abbildet; Berechnen von Vertices, indem die transformierte Parametrisierung an den Abtastpunkten entlang des Straßenverlaufs ausgewertet wird; und Erzeugen von graphisch darstellbaren Primitiven auf Basis der erzeugten Vertices.
  • Der Schritt des Berechnens von Vertices kann ferner umfassen: Berechnen von Vertices, indem die transformierte Parametrisierung an den Abtastpunkten entlang des Straßenverlaufs ausgewertet wird, und indem die für die Straßenbreite bereitgestellten Vertices entlang eines Normalenvektors, welcher in der Bildschirmebene liegt und senkrecht zum Straßenverlauf steht, ausgewertet werden.
  • Der Schritt des Bereitstellens einer Parametrisierung eines Straßenverlaufs für ein Straßensegment kann den Schritt des Berechnens einer Parametrisierung für das Straßensegment auf der Grundlage von vorab gespeicherten, den Straßenverlauf markierenden Formpunkten (sog. shape points) umfassen. Die Parametrisierung kann dabei derart berechnet werden, dass die parametrisierte Kurve die Formpunkte interpoliert. Die Parametrisierung kann on-the-fly (also während der graphischen Darstellung) berechnet werden. Es ist aber auch denkbar, dass die Parametrisierung bei der Kompilierung der Kartendaten erzeugt wird und in den Kartendaten hinterlegt ist.
  • Alternativ hierzu kann eine Parametrisierung der Straßensegmente auch von einem Kartenanbieter bereitgestellt werden. In diesem Fall umfasst das Bereitstellen der Parametrisierung ein Auslesen und Hochladen der Parametrisierungen in einen Arbeitsspeicher oder in einen Graphikspeicher zur weiteren Verarbeitung.
  • Gemäß einer Variante kann die Parametrisierung mit Hilfe von quadratischen B-Splines erfolgen, welche über nicht-uniform verteilte Knotenpunkte und Kontrollpunkte, den sogenannten de-Boor Punkten, beschrieben werden (im Folgenden quadratische NUBS genannt). Die Parametrisierung des Straßenverlaufes eines Straßensegmentes mittels NUBS kann auf Basis der für das Straßensegment bereitgestellten Formpunkte erfolgen, wie bereits oben beschrieben. Alternativ hierzu kann die Kurven-Parametrisierungen auch mittels Bézier-Kurven oder kubischer NUBS oder anderweitig durchgeführt werden.
  • Der Schritt des stückweisen Zerlegens der Parametrisierung des Straßensegments in voneinander unabhängige Straßensegmente kann ein Zerlegen der den Straßenverlauf des Straßensegments beschreibenden NUBS in voneinander unabhängige quadratische Polynome umfassen. Jedes Polynom kann hierbei eine kleinste Einheit bilden, aus welcher der das Straßensegment beschreibende NUBS zusammengesetzt wird. Jedes Polynom ist beispielsweise über ein Knotenintervall Ii = [ti, t1+1] aufeinanderfolgender benachbarter Knoten definiert. Es kann den lokalen Kurvenverlauf zwischen zwei aufeinanderfolgenden Knoten repräsentieren. Jedes Polynom im Intervall Ii kann hierbei mit Hilfe eines Knotenvektors s →i = [ti-1, ti, ti+1, ti+2], welcher lediglich vier Knoten umfasst, und drei de-Boor-Punkte d →i-2, d →i-1, d →i vollständig und eindeutig beschrieben werden. Der Vorteil einer Zerlegung des NUBS in stückweise quadratische Polynome ist, dass für jedes Knotenintervall Ii eine lokale Darstellung des B-Splines möglich ist und jede Zerlegung unabhängig von benachbarten Zerlegungen tesseliert werden kann. Die Tesselierung und insbesondere der Tesselierungsgrad können hierbei für jedes Segment entsprechend seiner Kurvigkeit unterschiedlich sein. Es kann hierbei eine Anpassung an die Kurvigkeit des Polynoms stattfinden, wie bereits oben diskutiert. Insbesondere verhindert die stückweise Zerlegung eines B-Splines, dass die Tesselierung von langen Straßensegmenten oder Routensegmenten aufgrund hardwarebedingter oberer Grenzen für die Tesselierung nicht genügend fein werden kann.
  • Andererseits kann jedes Straßensegment durch die für die Tesselierung bereitgestellten quadratischen Polynome sukzessive zusammengesetzt werden. Die einem jeden quadratischen Polynom eines Straßensegments zuordenbaren de-Boor Punkte d →i-2, d →i-1, d →i und Knotenvektor s →i = [ti-1; t1, ti+1; ti+2] können hierfür zur weiteren graphischen Verarbeitung (d. h. Tesselierung und Erzeugen von graphisch darstellbaren Primitiven) in einen Arbeitsspeicher, Graphikspeicher oder anderweitig zwischengespeichert werden. Die Speicherung kann mittels eines Vertex-Attribut-Arrays und eines Index-Arrays erfolgen. Der Vertex-Attribut-Array kann die Knotenvektoren und die de-Boor-Punkte für alle quadratischen Polynome des darzustellenden Straßensegments umfassen. Der Vertex-Attribut-Array kann hierbei die Knotenvektoren und die de-Boor-Punkte gemäß der Anordnung V = [d →0, d →1, d →2, s →0, d →3, s →1, d →4, s →2, d →5, s →3, ..., d →n-1, s →n-3] abspeichern, wobei n die Anzahl der Knoten ist. Ferner kann der Index-Attribut-Array auf die Vertex-Attribut-Array Einträge referenzierende Indices gemäß der Anordnung I = [(0, 1, 2, 3); (1, 2, 4, 5); (2, 4, 6, 7); (4, 6, 8, 9); ..., (2n – 6, 2n – 4, 2n – 2, 2n – 1)], umfassen, wobei n die Anzahl der Knoten ist. Die vorliegende Abspeicherung ist vorteilhaft, da Knotenvektoren und de-Boor-Punkte, welche zur Beschreibung benachbarter Polynome sich teilweise wiederholen, nur einmal abgespeichert werden müssen, wodurch Speicherplatz gespart wird.
  • Gemäß einem zweiten Aspekt wird ein Computerprogrammprodukt mit Programmcode zum Durchführen des Verfahrens bereitgestellt, wenn das Computerprogrammprodukt auf einer Computereinrichtung ausgeführt wird. Das Computerprogrammprodukt kann hierbei auf einem computerlesbaren Aufzeichnungsmedium abgespeichert sein.
  • Gemäß einem dritten Aspekt wird ein Graphik-Modul zur graphischen Darstellung von Straßensegmenten unter Einsatz von Hardware-Tesselierung bereitgestellt, wobei jedem Straßensegment kartographische Daten zugeordnet sind, welche wenigstens einen zweidimensionalen oder dreidimensionalen Straßenverlauf eines jeden Straßensegments beschreiben, wobei das Graphik-Modul umfasst: eine Einheit, welche dazu ausgebildet ist, eine Parametrisierung bereitzustellen, welche den Straßenverlauf eines Straßensegments beschreibt; eine Einheit, welche dazu ausgebildet ist, die Parametrisierung des Straßensegments in voneinander unabhängige Kurven-Segmente zu zerlegen; eine Einheit, welche dazu ausgebildet ist, wenigstens einen Tesselierungsfaktor für jedes Kurven-Segment bereitzustellen, wobei der wenigstens eine Tesselierungsfaktor angibt, in wie viele Untersegmente ein jedes Kurven-Segment in Richtung des Straßenverlaufs zu unterteilen ist; eine Tesselierungseinheit, welche dazu ausgebildet ist, ein Tesselierungsmuster für jedes Kurven-Segment in Abhängigkeit des wenigstens einen Tesselierungsfaktors zu erzeugen; und eine Einheit, welche dazu ausgebildet ist, an einem Bildschirm darstellbare Primitive auf der Grundlage des erzeugten Tesselierungsmusters und des parametrisierten Straßenverlaufs zu erzeugen.
  • Das Graphik-Modul kann ferner eine Speichereinheit umfassen, welche dazu ausgebildet ist, wenigstens einen Index-Array und einen Vertex-Attribut-Array abzuspeichern, wobei der Vertex-Attribut-Array Vertex-Attribute für die Parametrisierung eines Straßensegments umfasst.
  • Gemäß einem vierten Aspekt wird ein Navigationssystem bereitgestellt, welches das oben genannte Graphik-Modul sowie einen Bildschirm umfasst, welcher zum Anzeigen der erzeugten Primitiven ausgebildet ist.
  • Beschreibung der Zeichnungen
  • Weitere Aspekte, Vorteile und Einzelheiten der vorliegenden Offenbarung ergeben sich aus der nachfolgenden Beschreibung der Ausführungsbeispiele in Zusammenhang mit den Figuren. Es zeigen:
  • 1A/1B graphische Darstellungen von Straßen- bzw. Routenabschnitten;
  • 2 ein Blockdiagramm einer Vorrichtung zur Implementierung eines Verfahren zum graphischen Darstellen von kartographischen Daten gemäß einem Ausführungsbeispiel;
  • 3 ein weiteres Blockdiagramm, welches eine Implementierung einer Hardware-Tesselierungsfunktionalität innerhalb einer Graphikpipeline zeigt;
  • 4 ein Ablaufdiagramm eines Verfahrens zum graphischen Darstellen von Straßensegmenten mit Hilfe einer Hardware-Tesselierungsfunktionalität gemäß einem weiteren Ausführungsbeispiel;
  • 5 eine Darstellung, welche eine Zerlegung von Straßensegmenten gemäß einem weiteren Ausführungsbeispiel zeigt;
  • 6 ein Ausführungsbeispiel eines Parametrisierungsverfahrens für die graphische Darstellung von Straßensegmenten; und
  • 7 ein Modell zur Berechnung eines Tesselierungsfaktors gemäß einem weiteren Ausführungsbeispiel.
  • Detaillierte Beschreibung
  • Die vorliegende Offenbarung wird unter zur Hilfenahme schematischer Blockdiagramme und Ablaufdiagramme erläutert. Die diesen Diagrammen zugrunde liegende technische Lehre kann sowohl in Hardware als auch Software oder einer Kombination aus Hardware und Software implementiert werden. Zu solchen Implementierungen zählen auch digitale Signalprozessoren (DSP), anwendungsspezifische integrierte Schaltkreise (ASIC) und andere Schalt- oder Rechenkomponenten.
  • Die vorliegende Offenbarung zur graphischen Darstellung von Kartendaten, insbesondere von Straßensegmenten, wird beispielhaft im Rahmen des OpenGL-Standard der Kronos Group näher beschrieben. OpenGL (”Open Graphics Library”) ist eine Plattform- und Programmiersprachen-unabhängige Graphik-Programmierschnittstelle (Application Programming Interface oder kurz API), welche zur graphischen Darstellung komplexer zweidimensionaler und dreidimensionaler Objekt mit Hilfe eines Graphikmoduls (beispielsweise Graphikkarte oder Graphikchip) vorgesehen ist. Es handelt sich somit um eine Software-Graphikschnittstelle, welche als Abstraktionsschicht zwischen einem Anwendungsprogramm und dem Graphikmodul liegt und die Anbindung von Anwendungsprogrammen an das Graphikmodul unterstützt.
  • Zur Erläuterung der vorliegenden Offenbarung wird im Folgenden daher teilweise auf die Terminologie von OpenGL zurückgegriffen. Es versteht sich, dass die vorliegende Erfindung nicht von den Einzelheiten der verwendeten Graphik-Schnittstelle abhängt. Beispielsweise ist auch denkbar, dass als Software-Graphikschnittstelle DirectX (genauer: DirectDraw oder Direct3D) oder Quarz zum Einsatz kommen.
  • 2 zeigt in Form eines Blockdiagramms ein Ausführungsbeispiel einer Vorrichtung 1000 zur Implementierung des hier beschriebenen Verfahrens zur graphischen Darstellung von Kartendaten, insbesondere von Straßensegmenten. Die Vorrichtung 1000 kann Teil eines Navigationsgeräts (beispielsweise eines portablen Navigationsgeräts (PND) oder eines in einem Kraftfahrzeug fest verbautem Navigationsgerät), eines Routenplaners, eines Smartphones, eines Personal Digital Assistant (PDA), eines Personal Computers (PC), eines Notebooks oder eines anderen portablen oder in einer Maschine (z. B. in einem Kraftfahrzeug) implementierbaren elektronischen Gerätes sein.
  • Die Vorrichtung 1000 umfasst eine Kernfunktionalität 1010 in Form einer zentralen Datenverarbeitungseinheit (Central Processing Unit, CPU) und/oder in Form eines Software-Moduls (SW-Modul), eine Einheit 1011 zur Erzeugung einer Parametrisierung, eine Einheit 1012 zur Zerlegung der erzeugten Parametrisierung, eine Graphikprozessoreinheit 1020 (nachfolgend GPU genannt), einen Graphikspeicher 1020a einen Bildschirm 1030, einen Arbeitsspeicher 1040 und einen Datenspeicher 1050. Optional hierzu kann die Vorrichtung 1000 auch eine Sensoreinheit 1060, eine Eingabeeinheit 1070 und eine Kommunikationsschnittstelle 1080 umfassen. Die optionalen Komponenten der Vorrichtung 1000 sind in 2 mit gestrichelten Linien angedeutet.
  • Die Einheiten 1011 und 1012, die GPU 1020, der Graphikspeicher 1020a, der Arbeitsspeicher 1040, der Datenspeicher 1050, die Sensoreinheit 1060, die Eingabeeinheit 1070, die Kommunikationsschnittstelle 1080 und die Kernfunktionalität 1010 stehen miteinander in kommunizierender Verbindung, um zu verarbeitende und verarbeitete Daten miteinander auszutauschen.
  • Die Kommunikationsschnittstelle 1080 ist dazu ausgebildet, eine drahtgebundene und/oder eine drahtlose (z. B. über LTE oder GPRS) Verbindung zu externen Geräten eines Kommunikationsnetzwerkes aufzubauen. Die Vorrichtung 1000 kann über die Kommunikationsschnittstelle 1080 mit einem beliebigen externen Gerät Daten (in beide Richtungen) austauschen. Beispielsweise können über die Kommunikationsschnittstelle 1080 aktualisierte Kartendaten von einem Kartendatenserver zum Update eines in der Vorrichtung 1000 gespeicherten Kartendatenmaterials abgerufen werden. Es ist aber auch denkbar, dass die über die Kommunikationsschnittstelle 1080 empfangenen Kartendaten sofort zur graphischen Darstellung weiterverarbeitet werden.
  • Die Eingabeeinrichtung 1070 ist dazu ausgebildet, Benutzereingaben im Zuge einer Interaktion zwischen einem Benutzer und der Vorrichtung 1000 entgegenzunehmen. Benutzereingaben können Dateneingaben sein, wie beispielsweise eine Eingabe eines Startpunktes, eines Zielpunktes oder eines Zwischenstopps. Benutzereingaben können aber auch Auswahloperationen (z. B. Auswahl von angezeigten Icons, Menüs oder Untermenüs) und Steuerbefehle sein, welche beispielsweise angeben, wie kartographische Daten am Bildschirm 1030 dargestellt werden sollen (z. B. Zoom-Befehle oder Befehle mit der die Perspektive für graphische Darstellungen geändert wird). Die Eingabe kann hierbei durch Betätigen von Eingabetasten, durch Bildschirmberührung und/oder sprachbasiert erfolgen. Entsprechend kann die Eingabeeinheit einen berührungsempfindlichen Bildschirm, eine Tatstatur, eine Maus, ein Joystick und/oder eine Spracherkennungseinheit umfassen, welche in der Lage ist, Spracheingaben zu verstehen und in entsprechende Steuerbefehle umzuwandeln.
  • Die Sensoreinrichtung 1060 kann einen satellitenbasierten Positionssensor (z. B. einen Sensor zum Empfangen eines GPS-, Galileo und/oder Glonass-Signalen) umfassen, um die jeweils aktuelle geographische Position der Vorrichtung 1000 zu erfassen. Zusätzlich oder alternativ hierzu kann die Sensoreinrichtung 1060 auch relative Positionssensoren umfassen, wie beispielsweise ein Odometer und ein Gyroskop, um die Position der Vorrichtung 1000 zu erfassen. Bei Verwendung relativer Positionssensoren wird die absolute Position der Vorrichtung nach Koppelnavigationsprinzipien bestimmt. Die aktuelle Position wird beispielsweise im Zuge einer Navigation benötigt.
  • Der Datenspeicher 1050 ist dazu ausgebildet, kartographische Daten in digitalisierter Form abzuspeichern. Die digital bereitgestellten kartographischen Daten sind hierbei in einer Datenbank gemäß einem vorgegeben Format organisiert und strukturiert. Beispielsweise kann als Kartendatenformat das Navigation Data Standard-Kartendatenformat (kurz NDS-Kartendatenformat) verwendet werden. Alternativ hierzu kann auch ein anderes Kartendatenformat verwendet werden. Die vorliegende Lösung hängt nicht von den Details des Kartendatenformats ab.
  • Die abgespeicherten kartographischen Daten umfassen wenigstens Straßenkantendaten und Straßenknotendaten. Straßenkantendaten repräsentieren reale Straßensegmente eines Straßennetzes zwischen benachbarten Kreuzungen oder Abzweigungen. Straßenknotendaten, repräsentieren Kreuzungen bzw. Abzweigungen wie eingangs bereits erwähnt. Straßenkantendaten und Straßenknotendaten können mit einer Reihe von Attributen versehen, welche beispielsweise die Zahl der Fahrspuren, die Breite der Straßen, die Topologie der Kreuzung (z. B. Kreisverkehr, T-Kreuzung, Unterführung, Überführung, usw.) und die Anzahl der in der Kreuzung mündenden Straßen wiedergeben. Derartige Attributinformationen können beim graphischen Darstellen eines Straßennetzes bzw. von einzelnen Straßen oder Kreuzungen herangezogen werden, um eine realistische graphische Darstellung zu erzeugen.
  • Ferner umfassen die kartographischen Daten Formpunkte (sog. shape points), welche den Straßenkanten zugeordnet sind. Wie bereits eingangs erwähnt, sind die Formpunkte dafür vorgesehen, den Straßenverlauf (z. B. den Kurvenverlauf) von Straßensegmenten festzulegen. Hierzu ist jede ein Straßensegmentrepräsentierenden Straßenkante eine Folge von Formpunkten zugeordnet, welche den Kurvenverlauf (also die geometrische Form) des Straßensegmentes bezüglich eines geographischen Koordinatensystems angibt. Mit anderen Worten wird der Straßenverlauf eines jeden Straßensegments durch die dem Straßensegment zugeordnete Folge an Formpunkten parametrisiert. Alternativ oder zusätzlich zu den Formpunkten können die kartographischen Daten konkrete Kurvenparametrisierungen umfassen, welche den Kurvenverlauf eines jeden Straßensegments beschreiben. In einem derartigen Fall können anstelle der Formpunkte die Parameterkurven aus dem Datenspeicher ausgelesen, prozessiert und der GPU 1020 zur graphischen Darstellung am Bildschirm 1030 übergeben werden.
  • Der Bildschirm 1030 ist dazu ausgebildet, kartographische Daten einem Nutzer visuell zur Verfügung zu stellen. Konkret zeigt der Bildschirm 1030 die von der GPU 1020 verarbeiteten kartographischen Daten an. Der Bildschirm 1030 kann als berührungsempfindlicher Bildschirm ausgebildet sein. Zusätzlich zu dem Bildschirm 1030 oder alternativ hierzu kann auch ein Projektor zu Ausgabe der von der GPU 1020 bereitgestellten Bilddaten vorgesehen sein.
  • Die Einheit 1011 ist dazu ausgebildet, eine Kurven-Parametrisierung für Straßensegmente bzw. berechnete Routen auf Basis der abgespeicherten Straßenkantendaten (und Straßenknotendaten) zu erzeugen. Die Einheit 1011 kann hierbei eine zweidimensionale oder dreidimensionale Parameterkurve erzeugen. Gemäß einer Variante ist die Einheit 1011 dazu ausgebildet, eine Kurven-Parametrisierungen für Straßensegmente auf der Basis von den Straßensegmenten zuordenbaren abgespeicherten Formpunkten zu erzeugen. Jede Kurven-Parametrisierung gibt hierbei den Kurvenverlauf (bzw. die Kurvigkeit) eines Straßensegments wieder. Das in der Einheit 1011 durchgeführte Parametrisierungsverfahren auf Basis von Formpunkten wird mit Hilfe der 4 und 5 weiter unten näher beschrieben.
  • Gemäß einer Ausführung kann die Parametrisierung der Straßensegmente auch entfallen, sofern die kartographischen Daten bereits geeignete Parametrisierungen zur graphischen Darstellung von Straßensegmenten umfassen. In diesem Fall kann die Parametrisierung eines jeden Straßensegments direkt aus dem Datenspeicher 1050 ausgelesen und zur weiteren Verarbeitung der Zerlegungseinheit 1012 übergeben werden.
  • Die Einheit 1012 ist dazu ausgebildet, die durch die Einheit 1011 erzeugte Parametrisierung (oder die in den kartographischen Daten hinterlegten und ausgelesenen Kurven-Parametrisierungen) in eine Vielzahl voneinander unabhängiger Kurven-Segmenten zu zerlegen. Die Zerlegung von Parametrisierungen wird anhand der 4 und 5 weiter unten ausführlicher diskutiert. Die zerlegten Kurven werden dann der GPU 1020 zur graphischen Darstellung übergeben.
  • Die Einheiten 1011 und 1012 können als eigenständige Einheiten ausgebildet sein. Sie können aber auch Teil der Kernfunktionalität 1010 sein, wie durch die gestrichelte Linie in 2 angedeutet. Ferner kann die Kernfunktionalität zur Bildberechnung weiterer graphischer Objekte, wie beispielsweise POIs, dreidimensionaler Stadtmodelle, usw., vorgesehen sein, sofern derartige Objekte zusammen mit den Straßensegmenten oder Routen am Bildschirm 1030 dargestellt werden sollen (und sofern die kartographischen Daten derartige Informationen umfassen). Die Kernfunktionalität 1010 berechnet die Vertices der darzustellenden Objekte und übergibt sie der GPU 1020 zur graphischen Darstellung. Als Vertex wird in der Computergraphik ein Punkt eines darzustellenden Objektes bezeichnet. Dieser kann mit einem Satz von Attributen verknüpft sein, welche beispielsweise Positionsinformationen (bezüglich eines vorgegebenen globalen Koordinatensystems), Normalenvektorinformationen, Texturierungsinformationen, usw. umfassen.
  • Der Graphikspeicher 1020a ist als eigenständiger, vom Arbeitsspeicher 1040 unabhängiger Speicher ausgebildet. Er ist zum Puffern von anzuzeigenden Graphikdaten (Graphikframes) und/oder zum Puffern von durch die Kernfunktionalität 1010 und/oder durch die Einheit 1012 bereitgestellten Vertexdaten vorgesehen. In einer alternativen Ausgestaltung kann der Graphikspeicher 1020a auch ein Teil des Arbeitsspeichers 1040 sein.
  • Die GPU 1020 ist dazu ausgebildet, die Graphikausgabe von kartographischen Daten am Bildschirm 1030 zu steuern. Konkret ist die GPU 1020 dazu ausgebildet, eine Bildschirmausgabe auf der Basis der durch die Kernfunktionalität 1010 und/oder Einheit 1012 bereitgestellten Bilddaten (Vertexdaten) zu berechnen. Zu diesem Zwecke implementiert die GPU 1020 eine Vielzahl an Graphikfunktionen, welche zur graphischen Darstellung von Objekten herangezogen werden und in Zusammenhang mit 3 noch ausführlicher beschrieben werden. Ferner umfasst die GPU 1020 eine Tesselierungseinheit, welche dazu ausgelegt ist, Tesselierungsfunktionen wie durch Standard OpenGL 4.0 (oder höheren Versionen) oder ähnliche Graphik-APIs, wie beispielsweise Direct3D 11, spezifiziert, durchzuführen.
  • Die Funktionsweise der GPU 1020 wird nun anhand von 3 und der dort dargestellten Graphikpipeline näher erläutert. Unter Graphikpipeline (häufig auch als Rendering-Pipeline bezeichnet) versteht man auf dem Gebiet der Computergraphik eine Abfolge von Graphikverarbeitungsschritten, nach denen im Graphikprozessor implementierte Graphikfunktionen ausgeführt bzw. abgearbeitet werden, um ein grafisches Objekte auf einem Bildschirm 1030 oder einem anderen visuellen Ausgabemedium graphisch darzustellen.
  • Wie aus der vereinfachten Graphikpipeline-Darstellung in 3 ersichtlich, implementiert die GPU 1020 mehrere Shaders sowie eine Tesselierungseinheit. Ein Shader ist ein programmierbares Hardware- oder Software-Modul, welches bestimmte Funktionen oder Effekte der graphischen Darstellung (Rendering-Effekte) innerhalb der Graphikpipeline implementiert. Beispielsweise können Shader zur Erzeugung von 3D-Effekten programmiert werden. Konformität und Ansteuerung der einzelnen Shader erfolgt hierbei durch eine Graphik-Programmierschnittstelle (Graphik-API, wie beispielsweise OpenGL), welche eine Abstraktionsschicht zwischen GPU 1020 und Anwendungsprogramm darstellt.
  • Konkret umfasst die Graphikpipeline einen Vertex Shader 1021, eine Clipping- und Rasterisierungs-Stufe 1025 (clipping and rasterization stage), einen optional vorgesehenen Geometrie-Shader 1026 (geometry shader) sowie einen Fragment-Shader 1027. Ferner umfasst die GPU 1020 eine zur Implementierung einer Tesselierungsfunktion vorgesehene Tesselierungseinheit 1023, einen Tesselierungs-Steuerungs-Shader 1022 (tesselation control shader) und einen Tesselierungs-Auswertungs-Shader 1024 (tesselation evaluation shader).
  • Die Funktionen des Vertex-Shaders 1021 (z. B. Koordinatentransformation einzelner Vertices), der Clipping- und Rasterisierungs-Stufe 1025, des Geometrie-Shaders 1026 und des Fragment-Shaders 1027 entsprechen jeweils den Funktionen der entsprechenden Shaders in Graphikpipelines früheren OpenGL Versionen und sind dem Fachmann hinreichend bekannt. Sie werden daher nicht weiter erläutert. Mit OpenGL 4.0 (und höheren Versionen) werden der Tesselierungs-Steuerungs-Shader 1022, die Tesselierungseinheit 1023, und der Tesselierungs-Auswertungs-Shader 1024 neu in die OpenGL Graphikpipeline eingeführt. Ihre Funktionen werden im Folgenden näher beschrieben.
  • Der programmierbare Tesselierungs-Steuerungs-Shader 1022 ist in der Graphikpipeline zwischen Vertex-Shader 1021 und Tesselierungseinheit 1023 angeordnet. Der Tesselierungs-Steuerungs-Shader 1022 ist dazu ausgebildet, einen Tesselierungsfaktor für einen Patch bereitzustellten. Ein Patch bezeichnet hierbei einen neuen Primitiven-Typ, welcher in Zusammenhang mit der Implementierung der Tesselierungs-Funktionalität in die Graphikpipeline eingeführt wurde. Ein Patch bezeichnet eine (durch den Vertex-Shader bereitgestellte) Ansammlung von Vertices, die ein graphisches Element darstellen. Der durch den Shader 1022 bereitgestellte Tesselierungsfaktor gibt an, in wie viele Untereinheiten (Untersegmente) ein Patch durch die nachfolgende Tesselierungseinheit 1023 zerlegt werden soll.
  • Neben dem Tesselierungsfaktor werden im Tesselierungs-Steuerungs-Shader 1022 weitere Tesselierungsparameter bereitgestellt, welche beispielsweise die Art der Tesselierung (z. B. Zerlegung der Patches in Dreieck-Primitive oder Rechteck-Primitive) und einen (zweidimensionalen) Bereich (Domäne genannt) für die Tesselierung festlegen, wobei der Bereich rechtwinklig oder dreieckförmig (baryzentrisch) sein kann. Durch die Wahl eines bestimmten Bereiches wird ein Koordinatensystem für die Tesselierung festgelegt, wobei für jede Koordinate ein äußerer Tesselierungsfaktor bereitgestellt wird. Für die Domäne können ferner innerer Tesselierungsfaktoren bereitgestellt werden, welche angeben, wie die Domäne im Innenbereich tesseliert wird.
  • Für die Tesselierung von Kurven-Segmenten gemäß der vorliegenden Offenbarung wird eine rechtwinklige Domäne gewählt und der innere Tesselierungsfaktor mit dem äußeren Tesselierungsfaktor gleichgesetzt (im Folgenden nur Tesselierungsfaktor genannt). Die Bereitstellung eines Kurven-Segment abhängigen Tesselierungsfaktors wird in Zusammenhang mit 7 weiter unten ausführlicher beschrieben.
  • Die nicht-programmierbare Tesselierungseinheit 1023 ist dazu ausgebildet, auf Basis der im Tesselierungs-Steuerungs-Shader 1022 festgelegten Tesselierungsfaktoren und Tesselierungsparameter ein Tesselierungsmuster zu erzeugen. Konkret erzeugt die Tesselierungseinheit 1023 Abtastpunkte und legt fest, wie die Abtastpunkte miteinander verbunden werden, um ein Tesselierungsmuster zu erzeugen.
  • Der programmierbare Tesselierungs-Auswertungs-Shader 1024 ist dazu ausgebildet, auf Basis des durch die Tesselierungseinheit 1023 bereitgestellten Tesselierungsmusters (also Abtastpunkte und Art der Verbindung der Abtastpunkte) und den Attributen des Patches (Ortskoordinaten, Normalenvektor, usw.) Vertex-Positionen für die Abtastpunkte zu berechnen. Insbesondere ist der Tesselierungs-Auswertungs-Shader 1024 auch dazu ausgelegt interpolierte Attribute für die Vertex-Positionen bereitzustellen.
  • Mit Hilfe von 4 wird nun ein Ausführungsbeispiel eines Verfahrens zum graphischen Darstellen von Straßensegmenten unter Einsatz der oben beschriebenen Hardware-Tesselierung näher erläutert.
  • Gemäß einem ersten Schritt S100 wird mittels der Einheit 1011 eine Parametrisierung bereitgestellt, welche den Straßenverlauf eines am Bildschirm 1030 darzustellenden Straßensegments beschreibt. Die parametrisierte Kurve gibt den realen Straßenverlauf (also den Kurvenverlauf) des Straßensegments wieder. Das Bereitstellen umfasst das Erzeugen einer geeigneten Parametrisierung des graphisch darzustellenden Straßensegmentes auf Basis der dem Straßensegment zugeordneten Formpunkte (und der dem Straßensegment zuordenbaren Straßenknotendaten). Die Berechnung der Parametrisierung kann für jedes Straßensegment nach Laden der Formpunkte (in den Arbeitsspeicher 1040) unmittelbar (sozusagen ”on-the-fly”) berechnet werden. Eine geeignete und ressourcenschonende Parametrisierung, welche während des graphischen Darstellungsverfahrens ausgeführt werden kann, wird in Zusammenhang mit 5 detaillierter beschrieben.
  • Alternativ hierzu kann die Parametrisierung des Straßenverlaufs durch einen Kartendatenanbieter vorab bereitgestellt werden. In diesem Fall umfasst das Bereitstellen lediglich ein Auslesen und Laden der Parametrisierung (bzw. der die Parametrisierung beschreibenden Parameter) in den Arbeitsspeicher 1040. Die im Arbeitsspeicher 1040 zwischengespeicherten Daten können dann der Zerlegungseinheit 1012 zur weiteren Verarbeitung zugeführt werden.
  • In einem weiteren Schritt S110 wird mittels der Einheit 1012 der parametrisierte Straßenverlauf des Straßensegments in voneinander unabhängige Kurven-Segmente zerlegt. Die Zerlegung kann hierbei in Abhängigkeit des parametrisierten Kurvenverlaufs entlang des Straßensegments erfolgen. Konkret kann die Zerlegung des parametrisierten Straßenverlaufs eines Straßensegmentes derart erfolgen, dass jedem Kurven-Segment ein lokaler Kurvenverlauf des Straßensegmentes innerhalb eines vorgegebenen Parameterintervalls entspricht. Das vorgegebene Parameterintervall kann jeweils über zwei aufeinanderfolgende Parameterknoten festgelegt sein.
  • In einem darauffolgenden dritten Schritt S120 wird mittels des Tesselierungs-Steuerungs-Shaders 1022 wenigstens ein Tesselierungfaktor für jedes Kurven-Segment bereitgestellt. Der wenigstens eine Tesselierungsfaktor gibt an, in wie viele Untersegmente ein jedes Kurven-Segment in Richtung des Straßenverlaufs zu unterteilen (tesselieren) ist. Das Bereitstellen des Tesselierungsfaktors umfasst die Berechnung eines Tesselierungsfaktors im Tesselierungs-Steuerungs-Shader 1022 in Abhängigkeit der Kurvigkeit eines jeden Kurven-Segments. Die Bereitstellung des Tesselierungsfaktors hängt somit vom Krümmungsgrad eines jeden zerlegten Kurven-Segments ab und kann zwischen benachbarten Kurven-Segmenten innerhalb des Straßensegmentes variieren. Weist beispielsweise ein Kurven-Segment einen hohe Krümmungsgrad (hohe Kurvigkeit) auf, so ist der bereitgestellte Tesselierungsfaktor größer, womit eine feinere Unterteilung des Kurven-Segments in Straßenverlaufsrichtung einhergeht. Mit anderen Worten wird durch einen größeren Tesselierungsfaktor eine feinere Tesselierung des Kurven-Segmentes erreicht, wodurch der Kurvenverlauf auf dem Bildschirm feiner (also mit höherer Detailgenauigkeit) graphisch dargestellt werden kann. Die in Abhängigkeit der Kurvigkeit eines jeden Kurven-Segmentes dynamische Berechnung des Tesselierungsfaktors wird in Zusammenhang mit 6 im Detail beschrieben.
  • Im nächsten Schritt S130 wird mittels der Tesselierungseinheit 1023 ein Tesselierungsmuster auf der Grundlage des bereitgestellten Tesselierungsfaktors (und weiterer Tesselierungsparameter wie oben beschrieben) erzeugt. Zur Parametrisierung der Tesselierung wird eine rechtwinklige Einheitsdomäne gewählt, welche in Abhängigkeit des Tesselierungsfaktors in eine Vielzahl von Dreiecken zerlegt wird. Es wird eine Zerlegung in Dreiecke vorgenommen, da die GPU 1020 für die Darstellung von Dreiecken optimiert ist und eine beliebige darzustellende Fläche eines graphischen Objektes am besten durch Dreiecke darstellbar ist. Es versteht sich, dass anstelle von Dreiecken auch eine rechteckförmige oder anderweitige Zerlegung vorgenommen werden könnte.
  • In einem darauffolgenden Schritt S140 werden dann auf der Grundlage des erzeugten Tesselierungsmusters und des parametrisierten Straßenverlaufs am Bildschirm 1030 darstellbare Primitive erzeugt. Besteht das Tesselierungsmuster aus einem Dreiecksnetz, so werden auf Basis der Parametrisierung und des Musters Vertices für Dreieck-Primitive berechnet, mit deren Hilfe das darzustellende Kurven-Segment am Bildschirm 1030 graphisch dargestellt wird. Jedes am Bildschirm 1030 dargestellte Kurven-Segment wird somit aus einer Vielzahl von Dreieck-Primitiven zusammengesetzt, wobei die Anzahl der verwendeten Dreiecke die Feinheit der Kurvenwiedergabe bestimmt und durch den Tesselierungsfaktor bestimmt wird.
  • Im Folgenden wird nun ein Parametrisierungsverfahren zur Bereitstellung einer Parametrisierung der Straßenverläufe von Straßensegmenten näher beschrieben. Die Parametrisierung erfolgt auf der Grundlage von Formpunkten, welche für jedes Straßensegment in den kartographischen Daten bereitgestellt sind. Das Parametrisierungsverfahren kann im Zusammenhang mit dem in 4 dargestellten Verfahren durchgeführt werden.
  • Für die Parametrisierung (Erzeugung einer Parameterkurve) des Straßenverlaufs auf der Grundlage bereitgestellter Formpunkte werden beispielhaft quadratische B-Splines mit nicht-uniform verteilten Knoten t, (im Folgenden quadratische nicht-uniforme B-Splines oder quadratische NUBS genannt) verwendet. Der Kurvenverlauf eines quadratischer NUBS kann hierbei mit Hilfe von n Kontrollpunkten d →i (mit i = 0, ... n – 1), den sogenannten de-Boor-Punkten, und n + 3 Knoten, welche die Bedingung t0 ≤ t1 ... ≤ tn+2 erfüllen, beschrieben werden. Ein quadratischer NUBS ist dann eine im eindimensionalen Parameterraum [t2, tn] definierte Parameterkurve F→, welche einen Parameterwert u aus dem durch die Knoten vorgegebenen eindimensionalen Parameterraum [t2, tn] in einen zwei oder dreidimensionalen Raum Rk (k legt die Raumdimension fest) gemäß der Zuordnungsvorschrift
    Figure DE102014007914A1_0002
    abbildet, wobei N 2 / i(u) Basisfunktionen der Parametrisierung darstellen, welche über Knotenintervalle gemäß den nachfolgenden Gleichungen
    Figure DE102014007914A1_0003
    definiert sind.
  • Die erste Ableitung eines quadratischen NUBS ist ein linearer NUBS und ist wie folgt definiert:
    Figure DE102014007914A1_0004
  • Im Folgenden wird nun die Berechnung von NUBS aus einer Folge von Formpunkten beschrieben. Bei der Berechnung der quadratischen NUBS aus Formpunkten wird vorausgesetzt, dass die parametrisierte Kurve die Folge der Formpunkte interpoliert. Interpolation bedeutet in diesem Zusammenhang, dass die Parameterkurve genau durch die Formpunkte verläuft und diese nicht lediglich approximiert. Es wäre aber auch denkbar, die Parameterkurve derart zu berechnen, dass sie die Formpunkte lediglich approximiert.
  • Zur Berechnung der de-Boor-Punkte di und der Knoten ti aus den Formpunkten wird eine B-Spline-Interpolationstechnik mit chordaler Parametrisierung und einem gemittelten Knotenvektor verwendet. Unter der Annahme, dass ein Straßensegment aus n – 2 Formpunkten p →j besteht, wobei 0 < j < n – 2, werden zunächst mit Hilfe chordaler Parametrisierung Parameterwerte ui gemäß den folgenden Gleichungen bestimmt:
    Figure DE102014007914A1_0005
  • Aus den Parameterwerten ui werden dann die Knoten ti der Parametrisierung gemäß den folgenden Gleichungen berechnet: t0 = 0 (5) t1 = 1 t2 = 2 ti+2 = ti+1 + 1 / 2(ui-1 + ui), mit 1 ≤ i < n – 2 tn = n tn+1 = n + 1 tn+2 = n + 2.
  • Die Knotensequenz (t0, ..., tn+2) wird auch als Knotenvektor bezeichnet. Der gemäß der obigen Gleichung berechnete Knotenvektor ist in der Literatur als gemittelter Knotenvektor bekannt.
  • Mit Hilfe des Knotenvektors kann dann das lineare Gleichungssystem F →(uj)d →i = p →j 6) mit 0 < j < n – 2 zur Berechnung der de-Boor-Punkte d →i aufgestellt werden.
  • Wie unmittelbar ersichtlich ist, besitzt das lineare Gleichungssystem n – 2 Gleichungen und n unbekannte de-Boor-Punkte d →i. Dies bedeutet, dass das lineare Gleichungssystem unterbestimmt ist und somit keine eindeutige Lösung hat.
  • Das Gleichungssystem kann durch Festlegung einer oder mehrere Randbedingungen näher bestimmt werden. Als Randbedingung wird festgelegt, dass die erste Ableitung der Parametrisierung am Start- und Endpunkt die Gleichungen
    Figure DE102014007914A1_0006
    erfüllen, wodurch ein glatter Übergang zwischen benachbarten Segmenten erreicht wird. Durch Aufnahme der Randbedingungen in das vorhergehende Gleichungssystem entsteht ein Gleichungssystem, welches in einer Matrix-Vektor-Schreibweise wie folgt geschrieben werden kann:
    Figure DE102014007914A1_0007
  • Da die Basisfunktionen N →i 2(ui) jeweils lokal definiert sind und für viele Parameterwerte ui den Wert Null annehmen (siehe Gleichung 2), sind viele (außerdiagonale) Einträge der Matrix Null. Somit stellt A eine dünn besetzte Matrix dar, welche durch Standardmethoden auf effiziente Weise gelöst werden kann. Durch Lösung des obigen Gleichungssystems können die de-Boor-Punkte d →i ermittelt werden.
  • Insgesamt stellt das hier beschriebene Parametrisierungsverfahren ein sehr effizientes und ressourcenschonendes Verfahren dar, welches während des Betriebs eines Navigationsgeräts (also nach Hochladen der Formpunkte aus der Kartendatenbank) durchgeführt werden kann. Es versteht sich, dass das vorgestellte Parametrisierungsverfahren mit Hilfe von NUBS auch dazu geeignet ist, während einer Kompilierung von Kartendaten abzulaufen. Die Parametrisierungen (de-Boor-Punkte und Knotenvektor) können dann direkt in der Kartendatenbank abgespeichert werden und im Rahmen einer späteren graphischen Darstellung aufgerufen werden.
  • Mit Hilfe von 5 wird das stückweise Zerlegen der bereitgestellten Parameterkurve für ein Straßensegment in Kurven-Segmente weiter erläutert.
  • Der Vorteil der hier verwendeten Parametrisierung mit Hilfe von quadratischen NUBS ist, dass jeder quadratische NUBS stückweise in quadratische Polynome zerlegt werden kann. Konkret kann die NUBS-Parametrisierung eines jeden Straßensegments (mit n – 2 Formpunkten) in n – 2 B-Spline-Segmente (also Kurven-Segmente) aufgeteilt werden, wobei das Kurven-Segment im Intervall [ti, ti+1] als quadratisches Polynom gemäß der Darstellung F →i:u ↦ N ~i-2(u)·d →i-2 + N ~ 2 / i-1(u)·d →i-1 + N ~ 2 / i(u)·d →i, (9) interpretierbar ist. Die dazugehörigen Basis-Funktionen Ni-2, Ni-1, Ni sind hierbei in der Form
    Figure DE102014007914A1_0008
    darstellbar, wobei 2 ≤ i ≤ n + 1 ist. Es ist zu beachten, dass die stückweise quadratische Polynomdarstellung gemäß der obigen Gleichungen der Darstellung in der Gleichung 2 entspricht.
  • 5 verdeutlicht beispielhaft das stückweise Zerlegen einer Parameterkurve 80 in quadratische Polynome. Eine in 5 dargestellte Kurve 80 zeigt einen Ausschnitt einer NUBS-Parametrisierung eines Straßensegmentes, welches in drei voneinander unabhängige Kurven-Segmente 81, 82, 83 zerlegt werden kann. Jedes der drei Segmente 81, 82, 83 beschreibt einen ganz bestimmten lokalen Kurvenverlauf der Parameterkurve. Während Segment 81 einen konkaven Kurvenverlauf beschreibt, weisen die Segmente 82 und 83 jeweils einen konvexen Kurvenverlauf auf.
  • Der in 5 dargestellte Graph 90 unterhalb der Kurve 80 zeigt die für die Kurven-Segmente 81, 82, 83 jeweils benötigten Basisfunktionen Ni in Abhängigkeit der Knotenwerte ti. Das Segment 81 beschreibt den Kurvenverlauf über dem Parameterinterval [t2, t3] (markiert durch Balken 92a) und wird durch ein quadratisches Polynom beschrieben, welches mit Hilfe der de-Boor-Punkten (d →0, d →1, d →2) und den durch Balken 71a markierten vier Knotenwerten (t1, t2, t3, t4) vollständig beschrieben werden. Genauso werden die auf den Parameterintervallen [t3, t4] bzw. [t4, t5] definierten Kurven-Segmente 82 und 83 (siehe Balken 92b, 92c in Graph 90) durch die drei de-Boor-Punkte (d →1, d →2 ,d →3) bzw. (d →2, d →3 ,d →4) und die Knotenwerte (t2, t3, t4, t5) bzw. (t3, t4, t5, t6) beschrieben (Balken 71b, 71c). Aus dieser Darstellung folgt allgemeiner, dass eine auf der Grundlage von n – 2 Formpunkten parametrisierte Kurve in n – 2 voneinander unabhängige, quadratische Polynome zerlegt werden kann, die für das i-te Knotenintervall [ti, ti+1] durch lediglich drei de-Boor-Punkte (d →i-2, d →i-1, d →i) sowie aus einem Knotenvektor mit vier Einträgen s →i = [ti-1, ti, ti+1, ti+2] vollständig dargestellt werden kann. Hier zeigt sich der Vorteil der verwendeten quadratischen Parametrisierung gegenüber anderen Kurvenparametrisierungen, wie beispielsweise kubische B-Splines oder Bézier-Kurven, welche zur Segment-weisen Beschreibung einen wesentlichen größeren Parametersatz brauchen und damit bei der Prozessierung wesentlich mehr Prozessorressourcen und Speicherressourcen beanspruchen.
  • Ein weiterer Vorteil der hier beschriebenen Zerlegung der Parametrisierung besteht darin, dass die Tesselierung (insbesondere der Grad der Tesselierung) an die Kurvigkeit der einzelnen Kurven-Segmente individuell angepasst werden kann.
  • Zur individuellen Tesselierung und graphischen Darstellung eines jeden Kurven-Segmentes werden die ein jedes Kurven-Segment beschreibenden drei de-Boor-Punkte (d →i-2, d →i-1, d →i) und der Knotenvektor s →i = [ti-1, ti, ti+1, ti+2] als Vertex-Attribute einem Patch zugeordnet. Mit anderen Worten repräsentiert ein Patch jeweils ein zerlegtes Kurven-Segment. Die Vertex-Attribute eines jeden Patches werden für die Tesselierung in den Graphikspeicher 1020a geladen. Wie aus der Zerlegung in 5 ersichtlich, wiederholen sich die Vertex-Attribute der aufeinanderfolgenden Kurven-Segmenten repräsentierenden Patches teilweise. Beispielsweise müssen zur graphischen Verarbeitung der Segmente 81, 82, 83 die Knotenvektoren s →2, s →3, s →4 und die de-Boor-Punkte (d →0, d →1, d →), (d →1, d →2 ,d →3) und (d →2, d →3d →4) in die GPU 1020 geladen werden. Allgemeiner formuliert wird zur graphischen Darstellung eines Straßensegmentes, welches in n – 2 Kurven-Segmente (Patches) zerlegt wurde, ein Vertex-Attribut-Array V' der Form V' = [(d →0, d →1, d →2, s →0), (d →1, d →2, d →3, s →1), (d →1, d →2, d→3, s →1), ..., (d →n-3, d →n-2, d →n-3, s →n-3)] (11) im GPU-Speicher 1020a abgespeichert werden. Zu beachten ist, dass sich die Vektoren d →i und s →i in ihrer Dimension unterscheiden. Während s →i einen vierdimensionalen Vektor darstellt, bilden die de-Boor-Punkte d →i lediglich zweidimensionale oder dreidimensionale Vektoren (bei 3D Parametrisierung). Da alle Vertex-Attribute eines Patches dieselbe Dimension aufweisen müssen, wird die Dimension der de-Boor-Punkte d →i an die Dimension der Knotenvektoren angepasst, indem die zweidimensionalen oder dreidimensionalen de-Boor-Punkte d →i in den Vertex-Attribut-Array V' kopiert werden und die fehlenden Einträge mit Null besetzt werden.
  • Wie aus Gleichung (11) abgeleitet werden kann, werden die de-Boor-Punkte d →i und Knotenwerte im Vertex-Attribut-Array teilweise dreimal wiederholt. Um eine unnötige Beanspruchung und Verschwendung des Graphikspeichers 1020a zu vermeiden, wird jeder NUBS mit Hilfe des nachfolgenden Vertex-Attribut-Arrays V und Index-Arrays I dargestellt.
  • Im Vertex-Attribut-Array V werden die de-Boor-Punkte d →i und die Knotenvektoren s →i der Kurven-Segmente eines Straßensegments gemäß der Darstellung V = [d →0, d →1, d →2, s →0, d →3, s →1, d →4, s →2, d →5, s →3, ..., d→n-1, s→n-3] (12) miteinander verschachtelt, wobei die Zuordnung der Attribute innerhalb des Vertex-Attribut-Arrays der nachfolgenden rekursiven Zuordnungsvorschrift V[0] = d →0, V[1] = d →1, V[2] = d →2, V[3] = s →0 V[2i] = d →i+1, und V[2i+1] = s →i-1 wobei 2 ≤ i ≤ n – 1 (13) folgt. Es ist zu bemerken, dass im so erhaltenen Vertex-Attribut-Array jedes Attribut nur einmal abgespeichert wird, wodurch GPU-Speicherressourcen wesentlich eingespart werden können.
  • Um andererseits aus dem Vertex-Attribut-Array V Vertex-Attribute eines einzelnen Kurven-Segments zu erhalten, muss auf die richtigen Einträge im Vertex-Attribut-Array Vzugegriffen werden. Der Zugriff wird über den Index-Array I festgelegt. Gemäß der obigen Vertex-Attribut-Array Darstellung V definieren die Array-Einträge V[0], V[1], V[2] und V[3] das erste Kurven-Segment eines NUBS, die Einträge V[1], V[2], V[4] und V[5] das darauffolgende zweite Kurven-Segment, und die Einträge V[2(i – 1)], V[2i], V[2(i+1)] und V[2(i+1) + 1] mit 2 ≤ i < n – 1 jedes weitere Segment.
  • Die so gewonnene Indizes-Folge wird in dem Index-Array I = [(0, 1, 2, 3); (1, 2, 4, 5); (2, 4, 6, 7); (4, 6, 8, 9); ..., (2n – 6, 2n – 4, 2n – 2, 2n – 1)], (14) abgespeichert, wobei die Klammern lediglich zur Unterscheidung der einzelnen Patches (bzw. Kurven-Segmente) verwendet werden. Daraus können die Indizes zum Indizieren des Vertex-Attribut-Arrays V gewonnen werden, wobei beginnend mit dem ersten Patch gilt: I[0] = 0, I[1] = 1, I[2] = 2, I[3] = 3 für den ersten Patch, I[4] = 1, I[5] = 2, I[6] = 4, I[7] = 5 für den zweiten Patch, und I[4i] = 2(i – 1), I[4i + 1] = 2(i), I[4i+2] = 2(1+1); I[4i+3] = 2(1+2) mit 2 <= i <= n – 1, (14') für jeden weiteren Patch.
  • Es wird nun in Zusammenhang mit den 6 und 7 die graphische Darstellung von NUBS mit Hilfe der in der GPU 1020 implementierten Tesselierungsfunktion näher beschrieben.
  • Die Tesselierungsfunktion wird anhand des in 6 dargestellten und in Zusammenhang mit der 3 weiter oben kurz besprochenen programmierbaren Tesselierungs-Steuerungs-Shader 1022, der Tesselierungseinheit 1033 und des Tesselierungs-Auswertungs-Shaders 40 implementiert.
  • Hauptaufgabe des programmierbaren Tesselierungs-Steuerungs-Shader 1022 ist die Bereitsellung von wenigstens einem Tesselierungsfaktor für die Tesselierungseinheit 1023. Ferner werden im Shader 1022 die Art der Tesselierung und die Domäne für die Tesselierung festgelegt. Es wird eine rechtwinklige Einheitsdomäne 35 festgelegt, die mit Hilfe von (u, v)-Koordinaten beschrieben wird und dessen Kanten sich entlang der u-Koordinate und entlang der v-Koordinate jeweils von 0 bis 1 erstrecken. Die u-Koordinate zeigt hierbei in Richtung eines Straßenverlaufs der parametrisierten Kurven-Segmente, während die senkrecht zur u-Koordinate stehende v-Koordinate in Richtung der Straßenbreite zeigt (in Übereinstimmung mit OpenGL werden die Koordinaten mit u und v bezeichnet, es versteht sich, dass die Koordinaten auch anders bezeichnet werden könnten). Für die Koordinaten u, v wird jeweils ein Tesselierungsfaktor bereitgestellt.
  • Im Folgenden wird nun die Bereitstellung eines Tesselierungsfaktors für die Koordinaten u und v näher beschrieben. In diesem Zusammenhang sei nochmals erwähnt, dass die graphische Darstellung einer Straße oder Route als zweidimensionales Objekt mit einem Straßenverlauf und einer Straßenbreite in erster Linie durch den Straßenverlauf (also durch den gegebenen Kurvenverlauf) bestimmt wird. Die Breite der Straße kann näherungsweise als konstant entlang des Straßenverlaufes angenommen werden. Entsprechend wird dem mit der Breite verknüpften Tesselierungsfaktor (der Tesselierungsfaktor in v-Richtung) ein konstanter Wert zugeordnet. Vorzugsweise wird als Tesselierungsfaktor in v-Richtung der Wert 1 festgesetzt, wodurch die Tesselierungseinheit 1023 in v-Richtung lediglich zwei Abtastpunkte erzeugt. Somit wird in v-Richtung eine konstante Tesselierung vorgenommen.
  • In Richtung des Straßenverlaufes, also in u-Richtung, erfolgt die Bereitstellung des Tesselierungsfaktors in Abhängigkeit der Kurvigkeit eines jeden Kurven-Segmentes. Mit anderen Worten umfasst die Bereitstellung eine individuelle Berechnung des Tesselierungsfaktors für jeden Patch. Wie in 6 dargestellt (siehe Pfeil) wird jeder Patch, welcher jeweils einen kleinstmöglichen unabhängigen Ausschnitt der NUBS Parametrisierung darstellt und aus den drei de-Boor-Punkten (d →i-2, d →i-1, d →i) sowie dem Knotenvektor s →i = (ti-1, ti, ti+1, ti+2) eindeutig darstellbar ist, dem Shader 1022 übergeben.
  • Die Berechnung des Tesselierungsfaktors wird mit Hilfe der schematischen Zeichnung in 7 erläutert. 7 zeigt exemplarisch den i-ten Patch 50a einer Parametrisierung eines Straßensegments 50, wobei der i-te Patch 50a den Kurvenverlauf über dem Parameterintervall [ti, ti+1] repräsentiert. Ferner zeigt 7 die für die Berechnung des Tesselierungsfaktors herangezogenen Punkte S →0, S →1 und S →2, welche durch Auswerten der Parametrisierung Fi an den Parameterwerten ti, ½(ti + ti+1) und ti+1 erhalten werden.
  • Es ist zu beachten, dass die in 7 dargestellten und für die Berechnung des Tesselierungsfaktor verwendeten Punkte S →0, S →1 und S →2 in Bildschirmkoordinaten vorliegen (screen space coordinates). Zum Berechnen der Punkte S →0, S →1 und S →2 wird die Parmeterkurve Fi zunächst in Augkoordinaten (eye space coordinates) transformiert und anschließend am Kurvenanfang ti, auf halber Intervallstrecke (also bei ½(ti + ti+1)) und am Kurvenende ti+1 gemäß den nachfolgenden Gleichungen e →0 = F →i(ti), e →2 = F →i(ti+1) e →1 = F →i(1/2(ti + ti+1)) (15) ausgewertet. Die auf der Parameterkurve liegenden Punkte e →0, e →1, und e →2 werden dann auf zweidimensionale Bildschirmkoordinaten S →0, S →1, und S →2 projiziert. Liegt eine dreidimensionale Parametrisierung vor, wird die Projektion gemäß den Gleichungen n →i = [ei,x, ei,y, ei,z, 1]T·P n →i = ni/ni,w si = [(ni,x + 1)· w / 2, (ni,y + 1) h / 2]T (16) durchgeführt, wobei P eine 4×4 Projektionsmatrix darstellt, ni,w die vierte Komponente des Vektors n →i bezeichnet sowie wund h die Bildschirmbreite und Bildschirmhöhe angeben. Der Index i nimmt in Gleichung 16 die Werte (0, 1, 2) an, d. h. die Index-Werte der zu projizierenden Punkte e →0, e →1, und e →2. Im Übrigen steht ”T” für transponiert.
  • Mit Hilfe der berechneten Punkte S →0, S →1, S →2 wird ein senkrechter Abstand ε0 zwischen einer den Anfangspunkt S →0 und den Endpunkt S →2 verbindenden Geraden gi zu einem Mittelpunkt S →1 berechnet (siehe 7). Der ermittelte Abstand ε0 wird in Pixel gemessen. ε0 ist hierbei ein Maß für einen Fehler, wenn das durch F →i parametrisierte Kurven-Segment durch die durch den Anfangspunkt S →0 und Endpunkt S →2 verlaufende Gerade g angenähert werden würde.
  • Es kann gezeigt werden, dass durch geeignete weitere Unterteilungen des Kurven-Segments Fi innerhalb des Parameterintervalls [ti, ti+1] unter Anwendung bekannter NUBS-Unterteilungsalgorithmen der Fehler kontinuierlich abnimmt, wobei nach m Unterteilungen ein Fehlerwert für die Abweichung der tesselierten Kurve gemäß der Gleichung ε = (ε0 2)m (17) abgeschätzt werden kann. Das Kurven-Segment F →i soll dabei so oft unterteilt werden bis ein vorbestimmter Fehler δ unterschritten wird, d. h. bis die Ungleichung (ε 2 / 0)m < δ (18) erfüllt ist, wobei δ einen Pixelwert darstellt. Der Wert δ kann beispielsweise einem halben Pixel im Bildschirmraum entsprechen.
  • Nach m Unterteilungen werden für einen Patch insgesamt 22m+1 + 1 Abtastpunkte in Richtung des Straßenverlaufs (also für die u-Koordinate) erzeugt. Ferner werden utess = 22m+1 (19) Unterteilungen in Richtung des Kurvenverlaufs erzeugt. Utess wird hierbei als Tesselierungsfaktor bezeichnet und gibt die Anzahl der Unterteilungen für das betrachtete Kurven-Segment F →i in Richtung des Kurvenverlaufs an.
  • Durch Logarithmieren von Gleichung (19) folgt m = log2(utess) – 1 (20)
  • Durch Substituieren von m in Gleichung (18) mit Hilfe der Gleichung (20) kann eine Abschätzung für den Tesselierungsfaktor utess gemäß der Gleichung vtess = 2 log(δ) / log(ε0) (21) erhalten werden. Gemäß der Gleichung (21) kann der Tesselierungsfaktor auch einen rationalen Wert annehmen kann. Da moderne GPUs auch rationale Tesselierungsfaktoren unterstützen, können derartige Werte zur Tesselierung herangezogen werden, wodurch ein nahtloser Übergang zwischen Tesselierungsfaktoren aufeinanderfolgender Patches möglich ist.
  • Insgesamt kann mittels Gleichung (21) ein Tesselierungsfaktor für jedes Kurven-Segment individuell aus den beiden Parametern ε0 und δ abgeschätzt werden, wobei δ einen fest vorgegebenen Wert darstellt, und wobei ε0 aus den drei ausgewerteten und transformierten Punkten S →0, S →1, und S →2 berechnet wird. Mit der in Gleichung (21) gegebenen Abschätzung kann der Tesselierungsfaktor für jedes Kurven-Segment dynamisch bestimmt werden, ohne dass hierfür ein Ressourcen-verbrauchendes iteratives Berechnungsverfahren für jeden Patch individuell durchgeführt werden muss.
  • Zurück zu 6: Sind durch den Tesselierung-Steuerungs-Shader 1022 die Tesselierungsfaktoren für beide Koordinaten (u, v) der Einheitsdomäne festgelegt, so werden diese der Tesselierungseinheit 1023 zugeführt. Wie in 6 dargestellt werden für die bereitgestellte Einheitsdomäne zwei Abtastpunkte in v-Richtung entsprechend dem Tesselierungsfaktor vtess = 1 bereitgestellt, wohingegen in u-Richtung 22m+1 + 1 Abtastpunkte entsprechend dem Tesselierungsfaktor utess = 22m+1 erzeugt werden.
  • Die Abtastpunkte sind in dem in 5 gezeigten Tesselierungsmuster als Knoten entlang der beiden Koordinaten (u, v) dargestellt. Unter der Vorgabe, dass die Einheitsdomäne in Dreiecksflächen tesseliert wird (dies kann durch die Tesselierungsparameter festgelegt werden), kann mit Hilfe der Knoten ein Tesselierungsmuster erzeugt werden, welches die Einheitsdomäne als Netz mit 22m+1 + 1 Dreiecken darstellt. Für den in 6 gezeigten exemplarischen Fall ist der Tesselierungsfaktor utess = 6, wobei der rechtwinklige Einheitsbereich in 6 Untersegmente in u-Richtung unterteilt ist und insgesamt aus 12 Dreiecken aufgebaut wird.
  • Der programmierbare Tesselierungs-Auswertungs-Shader 1024 ist schließlich dazu ausgebildet, für jeden Patch auf Basis des bereitgestellten Tesselierungsmusters (also auf Basis der berechneten Abtastpunkte und der Art der Verbindung der Abtastpunkte) und den im Patch enthaltenen Vertex-Attributen (d. h. den de-Boor-Punkten, Knotenvektor) graphisch darstellbare Primitive zu erzeugen, mit deren Hilfe der Kurvenverlauf eines jeden Patches am Bildschirm 1030 dargestellt werden kann.
  • Zur Erzeugung der graphisch darstellbaren Primitive (im vorliegenden Fall Dreiecke) müssen die Vertex-Positionen der Primitive berechnet werden. Für den Patch 50a, der den Kurvenverlauf eines Straßensegments mit Hilfe der (transformierten) Parameterfunktion Fi im Parameterbereich [ti, ti+1] definiert, wird zur Erzeugung der Vertex-Positionen der Dreieck-Primitive entlang der Richtung des Kurvenverlaufes die Parametrisierung Fi(u'0) mit den Parameterwerten u'0 = (1 – u0)·ti + u0·ti+1 (22) ausgewertet, wobei u0 die im Tesselierungsmuster bereitgestellten Abtastpunkte im Intervall [0, 1] annehmen kann. Somit wird im Intervall [ti, ti+1] die Parametrisierung F →i(u'0) mit der im Tesselierungsmuster vorgegebenen Unterteilungsfeinheit ausgewertet. Das bedeutet, dass für einen hohen Tesselierungsfaktor mit vielen Abtastpunkten u0 viele Vertices F →i(u'0) im Intervall [ti, ti+1] berechnet werden. Da die Vertices F →i(u'0) die Eckpunkte der zu erzeugenden Dreieck-Primitive darstellen, und da die Dreieckkanten durch lineare, benachbarte Vertices verbindende Geraden dargestellt sind (lineare Interpolation zwischen benachbarten Vertices), wird klar, dass ein Kurven-Segment mit großer Kurvigkeit nur dann mit Hilfe von Dreieckprimitiven genügend gut dargestellt werden kann, wenn die entlang der Richtung des Kurvenverlaufes bereitgestellten Vertices im Intervall [ti, ti+1] möglichst nah aufeinander folgen. Dies wird durch einen hohen Tesselierungsfaktor erreicht.
  • Da ferner Straßen als zweidimensionale graphische Objekte und nicht nur als eindimensionale Kurven am Bildschirm 1030 dargestellt werden, wird für jeden Parameterwert u'0 auch ein Vertex erzeugt, der bezüglich des Vertex F →i(u'0) entlang des Normaleneinheitsvektors b →/|b|, welcher senkrecht auf F →i(u'0) steht, gemäß der Darstellung
    Figure DE102014007914A1_0009
    verschoben ist. v0 nimmt hierbei die Werte 0 oder 1 an. λ ist ein dynamisch anpassbarer Parameter, mit dessen Hilfe die darzustellende Dicke der Straße oder Route skaliert werden kann. Der Normalenvektor b berechnet sich in bekannter Weise gemäß dem Gradienten
    Figure DE102014007914A1_0010
  • Die durch den Tesselierungs-Auswertungs-Shader 1024 in Richtung des Straßenverlaufes und senkrecht zum Straßenverlauf auszugebenden Vertices ergeben sich somit nach Gleichung 23. Aus den Vertices können dann die graphisch darstellbaren Dreieck-Primitive für den Patch 50a konstruiert werden, wie in 6 dargestellt.
  • Somit kann jedes Kurven-Segment aus einem Satz von Dreiecken graphisch am Bildschirm 1030 dargestellt werden. Oder in anderen Worten, ein jedes Kurven-Segment kann in einen Satz von darstellbaren Dreieckprimitiven zerlegt werden. Insbesondere kann die Zerlegung eines jeden Kurven-Segmentes individuell eingestellt werden und für jedes Kurven-Segment entsprechend der Kurvigkeit (und/oder des Betrachtungswinkels) angepasst werden. Kurven-Segmente die auf dem Bildschirm 1030 mit starken Kurvenkrümmungen dargestellt werden sollen, werden stärker tesseliert und somit in ein feineres Netz von Dreieck-Primitiven zerlegt, während für Kurven-Segmente mit geringer Kurvenkrümmung eine gröbere Tesselierung bereitgestellt werden kann. Auf diese Weise wird sichergestellt, dass jedes Kurven-Segment unabhängig von seiner Kurvigkeit als möglichst glatte Kurve am Bildschirm 1030 erscheint, wodurch die Darstellung von Straßensegmenten, Straßennetzen und Routen am Bildschirm 1030 wesentlich verbessert wird. Insbesondere wird durch die dynamische Anpassung der Tesselierung sichergestellt, dass eine möglichst optimale und effiziente graphische Darstellung erreicht wird. Insbesondere kann eine realistische Darstellung von Straßensegmenten erreicht werden, ohne hierfür eine große Anzahl von Formpunkten auswerten zu müssen.
  • Ferner wird durch die hier beschriebene Parametrisierung, Zerlegung der Straßenverläufe und die Datenorganisation im Graphikspeicher sichergestellt, dass Rechenressourcen und Speicherressourcen möglichst effizient und schonen beansprucht werden. Insbesondere ist mit der hier beschriebenen Parametrisierung, eine Parametrisierung von Straßensegmenten auf der Grundlage von Formpunkten zum Zeitpunkt der graphischen Darstellung möglich (on-the-fly).

Claims (25)

  1. Verfahren zum graphischen Darstellen von Straßensegmenten unter Einsatz von Hardware-Tesselierung, wobei jedem Straßensegment kartographische Daten zugeordnet sind, welche wenigstens einen zweidimensionalen oder dreidimensionalen Straßenverlauf des Straßensegments beschreiben, wobei das Verfahren die folgenden Schritte umfasst: – Bereitstellen einer Parametrisierung, welche den Straßenverlauf eines Straßensegments beschreibt; – stückweises Zerlegen der Parametrisierung des Straßensegments in voneinander unabhängige Kurven-Segmente; – Bereitstellen wenigstens eines Tesselierungsfaktors für jedes Kurven-Segment, wobei der wenigstens eine Tesselierungsfaktor angibt, in wie viele Untersegmente ein jedes Kurven-Segment in Richtung des Straßenverlaufs zu unterteilen ist; – Erzeugen eines Tesselierungsmusters für jedes Kurven-Segment in Abhängigkeit des wenigstens einen Tesselierungsfaktors; und – Erzeugen von auf einem Bildschirm (1030) darstellbaren Primitiven auf der Grundlage des erzeugten Tesselierungsmusters und des parametrisierten Straßenverlaufs.
  2. Verfahren nach Anspruch 1, wobei ein Straßensegment aus den für die Kurven-Segmente erzeugten Primitiven zusammengesetzt und graphisch dargestellt wird.
  3. Verfahren nach Anspruch 1 oder 2, wobei der Kurvenverlauf eines jeden Kurvensegmentes durch die erzeugten Primitive linear interpoliert wird.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei ein dem Straßenverlauf zugeordnete Tesselierungsfaktor wenigstens in Abhängigkeit eines Kurvenverlaufs des Kurven-Segmentes berechnet wird.
  5. Verfahren nach Anspruch 4, wobei zum Berechnen des dem Straßenverlauf zugeordneten Tesselierungsfaktors der auf einen Bildschirm (1030) projizierte Kurvenverlauf des Kurven-Segments herangezogen wird.
  6. Verfahren nach Anspruch 4 oder 5, wobei ein dem Straßenverlauf zugeordneter Tesselierungsfaktor für ein in einem Parameterintervall [ti, ti+1] parametrisierten Kurven-Segment F →i gemäß der Gleichung utess = 2 × log(δ)/log(ε0) berechnet wird, wobei utess den Tesselierungsfaktor bezeichnet, δ einen voreingestellten Genauigkeitswert angibt, und wobei ε0 aus einem Anfangspunkt S →0 = F(ti), einem Endpunkt S →2 = F →i(ti+1) und einem Punkt S →1 = F →i (1/2(ti + ti+1)) der Parametrisierung F →i berechnet wird, indem ein Abstand einer den Anfangspunkt S →1 und Endpunkt S →2 verbindenden Geraden zum Punkt S →1 berechnet wird.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei der dem Straßenverlauf zugeordnete Tesselierungsfaktor ferner in Abhängigkeit eines Betrachtungsfelds für die darzustellenden Kurven-Segmente berechnet wird.
  8. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend Bereitstellen eines weiteren Tesselierungsfaktors, welcher einer Straßenbreite senkrecht zur Richtung des Straßenverlaufs zugeordnet ist.
  9. Verfahren nach Anspruch 8, wobei der der Straßenbreite zugeordnete Tesselierungsfaktor einen konstanten Wert annimmt.
  10. Verfahren nach einem der vorhergehenden Ansprüche, wobei der Schritt des Erzeugens eines Tesselierungsmusters umfasst: – Erzeugen von Abtastpunkten in Abhängigkeit des wenigstens einen bereitgestellten Tesselierungsfaktors, wobei die Abtastpunkte den Grad der Unterteilung des Kurven-Segmentes entlang des Straßenverlaufs angeben.
  11. Verfahren nach Anspruch 10, wobei der Schritt des Erzeugens von darstellbaren Primitiven umfasst: – Durchführen einer Koordinatentransformation, welche die Parametrisierung des Straßenverlaufs auf Koordinaten des Bildschirm-Raums abbildet; – Berechnen von Vertices, indem die transformierte Parametrisierung an den Abtastpunkten entlang des Straßenverlaufs ausgewertet wird; und – Erzeugen von graphisch darstellbaren Primitiven auf Basis der erzeugten Vertices.
  12. Verfahren nach Anspruch 11, wobei der Schritt des Berechnens von Vertices ferner umfasst: – Berechnen von Vertices, indem die transformierte Parametrisierung an den Abtastpunkten entlang des Straßenverlaufs ausgewertet wird, und indem die für die die Straßenbreite bereitgestellten Vertices entlang eines Normalenvektors, welcher in einer Bildschirmebene liegt und senkrecht zum Straßenverlauf steht, ausgewertet wird.
  13. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Parametrisierung auf der Grundlage von vorab gespeicherten, den Straßenverlauf markierenden Formpunkten berechnet wird.
  14. Verfahren nach Anspruch 13, wobei die Parametrierung auf Basis der Formpunkte derart erfolgt, dass die parametrisierte Kurve die Formpunkte interpoliert.
  15. Verfahren nach Anspruch 13 oder 14, wobei die Parametrisierung auf der Grundlage der Formpunkte on-the-fly berechnet wird.
  16. Verfahren nach einem der vorhergehenden Ansprüche, wobei der Straßenverlauf eines jeden Straßensegments durch einen quadratischen B-Spline parametrisiert wird, der über nicht-uniform verteilte Knotenpunkte und de-Boor Punkte beschrieben wird.
  17. Verfahren nach Anspruch 16, wobei jeder nicht-uniforme B-Spline eines Straßensegments in voneinander unabhängige quadratische Polynome zerlegt wird, wobei jedes Polynom über ein Knotenintervall Ii = [ti; ti + 1] definiert ist und durch einen Knotenvektor s →i = (ti-1 ti, ti+1, ti+2) und drei de-Boor Punkte d →i-2, d →i-1, d →i beschrieben wird.
  18. Verfahren nach Anspruch 17, wobei jeder nicht-uniforme B-Spline eines Straßensegments mit Hilfe eines Index-Arrays und eines die Knotenvektoren und de-Boor Punkte umfassenden Vertex-Attribut-Arrays beschrieben wird.
  19. Verfahren nach Anspruch 18, wobei der Vertex-Attribut-Array die Knotenvektoren und die de-Boor Punkte für alle quadratischen Polynome des darzustellenden Straßensegmente ohne rekursive Wiederholung von Knotenvektoren und de-Boor Punkten gemäß der Anordnung V = d →0, d →1, d →2, s →0, d →3, s →1, d →4, s →2, d →5, ..., d →n-1, s →n-3] umfasst, wobei n die Zahl der Knoten ist.
  20. Verfahren nach Anspruch 18, wobei der Index-Array Indizes der Vertex-Attribut-Array Einträge gemäß der Anordnung I = [(0, 1, 2, 3); (1, 2, 4, 5); (2, 4, 6, 7); (4, 6, 8, 9); ..., (2n – 6, 2n – 4, 2n – 2, 2n – 1)]. umfasst, wobei n die Zahl der Knoten ist.
  21. Computerprogrammprodukt mit Programmcode zum Durchführen des Verfahrens nach wenigstens einem der vorhergehenden Ansprüche, wenn das Computerprogrammprodukt auf einer Computereinrichtung ausgeführt wird.
  22. Computerprogrammprodukt nach Anspruch 21, welches auf einem computerlesbaren Aufzeichnungsmedium abgespeichert ist.
  23. Graphik-Modul zur graphischen Darstellung von Straßensegmenten unter Einsatz von Hardware-Tesselierung, wobei jedem Straßensegment kartographische Daten zugeordnet sind, welche wenigstens einen zweidimensionalen oder dreidimensionalen Straßenverlauf eines jeden Straßensegments beschreiben, wobei das Graphik-Modul umfasst: – eine Einheit (1011), welche dazu ausgebildet ist, eine Parametrisierung bereitzustellen, welche den Straßenverlauf eines Straßensegments beschreibt; – eine Einheit (1012), welche dazu ausgebildet ist, die Parametrisierung des Straßensegments in voneinander unabhängige Kurven-Segmente zu zerlegen; – eine Einheit (1022), welche dazu ausgebildet ist, wenigstens einen Tesselierungsfaktor für jedes Kurven-Segment bereitzustellen, wobei der wenigstens eine Tesselierungsfaktor angibt, in wie viele Untersegmente ein jedes Kurven-Segment in Richtung des Straßenverlaufs zu unterteilen ist; – eine Tesselierungs-Einheit (1023), welche dazu ausgebildet ist, ein Tesselierungsmuster für jedes Kurven-Segment in Abhängigkeit des wenigstens einen Tesselierungsfaktors zu erzeugen; und – eine Einheit (1024), welche dazu ausgebildet ist, an einem Bildschirm (1030) darstellbare Primitive auf der Grundlage des erzeugten Tesselierungsmusters und des parametrisierten Straßenverlaufs zu erzeugen.
  24. Graphik-Modul nach Anspruch 23, ferner umfassend eine Speichereinheit (1020a), welche dazu ausgebildet ist, wenigstens einen Index-Array und einen Vertex-Attribut-Array abzuspeichern, wobei der Vertex-Attribut-Array Parameterdaten für die Parametrisierung eines Straßensegments umfasst.
  25. Navigationsgerät (1000) umfassend: – das Graphik-Modul gemäß einem der Ansprüche 23 und 24; und – einen Bildschirm (1030), welcher dazu ausgebildet ist, die erzeugten Primitive anzuzeigen.
DE102014007914.7A 2014-05-27 2014-05-27 Graphisches Darstellen von Straßen und Routen unter Benutzung von Hardware-Tesselierung Pending DE102014007914A1 (de)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE102014007914.7A DE102014007914A1 (de) 2014-05-27 2014-05-27 Graphisches Darstellen von Straßen und Routen unter Benutzung von Hardware-Tesselierung
US14/721,583 US9483872B2 (en) 2014-05-27 2015-05-26 Graphical representation of roads and routes using hardware tessellation
JP2015106057A JP6009039B2 (ja) 2014-05-27 2015-05-26 ハードウエアテッセレーションを用いた道路と経路のグラフィック表示方法
CN201510279596.8A CN105320518B (zh) 2014-05-27 2015-05-27 使用镶嵌对路段进行图形表示的方法和装置及导航装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102014007914.7A DE102014007914A1 (de) 2014-05-27 2014-05-27 Graphisches Darstellen von Straßen und Routen unter Benutzung von Hardware-Tesselierung

Publications (1)

Publication Number Publication Date
DE102014007914A1 true DE102014007914A1 (de) 2015-12-03

Family

ID=54481003

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014007914.7A Pending DE102014007914A1 (de) 2014-05-27 2014-05-27 Graphisches Darstellen von Straßen und Routen unter Benutzung von Hardware-Tesselierung

Country Status (4)

Country Link
US (1) US9483872B2 (de)
JP (1) JP6009039B2 (de)
CN (1) CN105320518B (de)
DE (1) DE102014007914A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102013207658A1 (de) * 2013-04-26 2014-10-30 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Bestimmen eines Fahrspurverlaufes einer Fahrspur
US11367354B2 (en) * 2017-06-22 2022-06-21 Apollo Intelligent Driving Technology (Beijing) Co., Ltd. Traffic prediction based on map images for autonomous driving
CN108492369B (zh) * 2018-03-05 2022-09-27 中交一公局第五工程有限公司 汽车实验场高速环道曲线段路基三维填筑施工方法
US10818080B2 (en) * 2018-07-25 2020-10-27 Disney Enterprises, Inc. Piecewise-polynomial coupling layers for warp-predicting neural networks
CN111238505B (zh) * 2018-11-29 2023-11-24 沈阳美行科技股份有限公司 一种道路地图的道路线段描画方法、装置及相关系统
CN116310214A (zh) * 2023-02-28 2023-06-23 中国公路工程咨询集团有限公司 公路养护路面三维模型简化方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6600485B1 (en) * 1998-07-03 2003-07-29 Sega Enterprises, Ltd. Polygon data generation method and image display apparatus using same
US20090237401A1 (en) * 2008-03-20 2009-09-24 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
US20100082248A1 (en) * 2008-10-01 2010-04-01 Navteq North America, Llc Creating Geometry for Advanced Driver Assistance Systems
US20130321422A1 (en) * 2012-06-05 2013-12-05 Aroon Pahwa System and method for loading and rendering curved features in a map
US8605085B1 (en) * 2009-10-15 2013-12-10 Nvidia Corporation System and method for perspective corrected tessellation using parameter space warping
US20140043330A1 (en) * 2012-08-09 2014-02-13 Qualcomm Incorporated Gpu-accelerated path rendering

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8402497A (nl) * 1984-08-14 1986-03-03 Philips Nv Voertuignavigatiesysteem voorzien van een adaptief traagheidsnavigatiesysteem gebaseerd op meting van de snelheid en de dwarsversnelling van het voertuig en voorzien van een correctie-eenheid voor het corrigeren van de gemeten waarden.
US4821214A (en) * 1986-04-17 1989-04-11 Brigham Young University Computer graphics method for changing the shape of a geometric model using free-form deformation
JPH08327380A (ja) * 1995-05-29 1996-12-13 Sony Corp ナビゲーション装置及び表示方法
US6029173A (en) 1997-11-26 2000-02-22 Navigation Technologies Corporation Method and system for representation and use of shape information in geographic databases
DE20022813U1 (de) 1999-04-15 2002-05-16 Siemens Ag Navigationsgerät
GB2388507B (en) * 2002-05-10 2005-11-09 Imagination Tech Ltd An interface and method of interfacing between a parametric modelling unit and a polygon based rendering system.
KR100506822B1 (ko) * 2003-11-08 2005-08-10 엘지전자 주식회사 3차원 다각형의 화면 표시방법
DE102004030709A1 (de) 2004-06-25 2006-01-19 Daimlerchrysler Ag Verfahren zur Bestimmung des Krümmungsverlaufs einer Wegstrecke
US20070018988A1 (en) 2005-07-20 2007-01-25 Michael Guthe Method and applications for rasterization of non-simple polygons and curved boundary representations
US8874477B2 (en) * 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
EP2011102B1 (de) * 2006-04-21 2011-10-12 Tac AB Produkt, vorrichtung und system zur steuerung physikalischer eigenschaften
DE102007009640A1 (de) 2007-02-26 2008-09-04 Deutsches Zentrum für Luft- und Raumfahrt e.V. Verfahren zur Hinterlegung von in digitalen Karten enthaltenen Fahrwegen
US8212807B2 (en) * 2007-08-30 2012-07-03 Harris Corporation Geospatial data system for selectively retrieving and displaying geospatial texture data based upon user-selected point-of-view and related methods
US8203552B2 (en) * 2007-08-30 2012-06-19 Harris Corporation Geospatial data system for selectively retrieving and displaying geospatial texture data in successive additive layers of resolution and related methods
US8044955B1 (en) 2007-08-31 2011-10-25 Adobe Systems Incorporated Dynamic tessellation spreading for resolution-independent GPU anti-aliasing and rendering
US8284192B2 (en) * 2008-11-07 2012-10-09 Landworks, Inc. Polygon dissection in a geographic information system
JP5294313B2 (ja) * 2008-11-07 2013-09-18 Necシステムテクノロジー株式会社 ベジェ曲線描画装置、ベジェ曲線描画方法およびプログラム
US20100214294A1 (en) 2009-02-20 2010-08-26 Microsoft Corporation Method for tessellation on graphics hardware
US8373702B2 (en) 2009-05-15 2013-02-12 Stmicroelectronics S.R.L. System and method for adaptive tessellation of a curve
DE102010048760A1 (de) 2010-09-17 2011-07-28 Daimler AG, 70327 Verfahren zur Erzeugung eines Straßenmodells
US20120330869A1 (en) * 2011-06-25 2012-12-27 Jayson Theordore Durham Mental Model Elicitation Device (MMED) Methods and Apparatus
CN103206957B (zh) * 2012-12-26 2016-03-02 辽宁师范大学 车辆自主导航的车道线检测与跟踪方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6600485B1 (en) * 1998-07-03 2003-07-29 Sega Enterprises, Ltd. Polygon data generation method and image display apparatus using same
US20090237401A1 (en) * 2008-03-20 2009-09-24 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
US20100082248A1 (en) * 2008-10-01 2010-04-01 Navteq North America, Llc Creating Geometry for Advanced Driver Assistance Systems
US8605085B1 (en) * 2009-10-15 2013-12-10 Nvidia Corporation System and method for perspective corrected tessellation using parameter space warping
US20130321422A1 (en) * 2012-06-05 2013-12-05 Aroon Pahwa System and method for loading and rendering curved features in a map
US20140043330A1 (en) * 2012-08-09 2014-02-13 Qualcomm Incorporated Gpu-accelerated path rendering

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WILKIE, D. [et al.]: Transforming GIS Data into Functional Road Models for Large-Scale Traffic Simulation. IEEE Transactions on Visualization and Computer Graphics, Vol. 18, 2012, S. 890-901. *

Also Published As

Publication number Publication date
CN105320518B (zh) 2018-08-31
US20150348318A1 (en) 2015-12-03
JP2015225670A (ja) 2015-12-14
CN105320518A (zh) 2016-02-10
JP6009039B2 (ja) 2016-10-19
US9483872B2 (en) 2016-11-01

Similar Documents

Publication Publication Date Title
DE102014007914A1 (de) Graphisches Darstellen von Straßen und Routen unter Benutzung von Hardware-Tesselierung
WO2018219522A1 (de) VERFAHREN UND VORRICHTUNG ZUR ERSTELLUNG EINER FAHRSPURGENAUEN STRAßENKARTE
DE202014010937U1 (de) Überlagerung zweidimensionaler Kartendaten auf einer dreidimensionalen Szene
DE19919891B4 (de) Vorrichtung zur Erzeugung von Signalen für Windgeräusch
DE202012013450U1 (de) Beschriftungspositionierbildwiedergabesystem zur Reduzierung des Kriechens bei Zoom-Aktivitäten
DE102005050846A1 (de) Perspektiveneditierwerkzeuge für 2-D Bilder
CN105513110A (zh) 基于gpu的宽度渐变线型地图符号绘制方法
DE102008012411A1 (de) Interaktive Methode zur integrierten Darstellung schematischer Netzpläne und geographischer Karten
DE102013021046A1 (de) Erzeugung fehlerbefreiter Voxel-Daten
DE202012013465U1 (de) Wiedergabe eines textbildes entlang einer linie
DE602004003111T2 (de) Tiefen-basiertes Antialiasing
DE102007043923A1 (de) System und Verfahren zum Berechnen von Verbundflächen unter Verwendung von 3D-Abtastdaten
DE202015009138U1 (de) Indexierte Einheitsgrößenparameter für Strichwiedergabe
DE202015009169U1 (de) Routing mit Dantenversionszusammenfügung
DE69915837T2 (de) Parametrische Flächenauswertung im Eigenraum der Unterteilungsmatrix eines irregulären Flächenstücks
DE112018000347T5 (de) Verfahren und System für automatische Erzeugung von Kurven mit Zwangsbedingungen für Computergraphik
DE102022107038A1 (de) Erzeugen eines verfeinerten kontrollnetzes zum erzeugen einer glatten oberfläche eines objekts
DE202014010846U1 (de) Farbverlauf von Wasser auf einer digitalen Karte
KR20140139194A (ko) 지형 모델의 생성 방법 및 장치
EP2344845B1 (de) Verfahren und navigationsvorrichtung zur dreidimensionalen perspektivischen darstellung einer geländetopographie auf einer zweidimensionalen anzeigeeinrichtung
EP2687819A1 (de) Aufbereitung von ortsbezogenen Daten
DE102021211162A1 (de) Verfahren und System zur Visualisierung und Simulation von Strömungsphänomenen
DE102012203117B4 (de) Verfahren und System zur Ermittlung eines Begrenzungsflächennetzes
DE60305027T2 (de) Verfahren zur Bereitstellung eines Vektorbildes mit entfernten versteckten Linien
DE102014017083A1 (de) Technik zum Abgleichen erfasster Positionen mit digitalem Kartenmaterial

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R082 Change of representative
R016 Response to examination communication