-
QUERVERWEIS AUF ZUGEHÖRIGE ANMELDUNG
-
Die vorliegende Erfindung basiert auf den japanischen Patentanmeldungen Nr.
2012-262679 , angemeldet am 30. November 2012, und Nr. 2013-148510, angemeldet am 17. Juli 2013; auf die dortigen Offenbarungsgehalte wird vollinhaltlich Bezug genommen.
-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung betrifft eine 3D-Bilderzeugungsvorrichtung und ein 3D-Bilderzeugungsverfahren, wobei eine Steuereinheit einen Renderbefehl an eine Rendereinheit überträgt, um eine Eckpunktattributtransformation an einem Objekt durchzuführen, welches mit dem Renderbefehl angewiesen worden ist, und um das Objekt zu rendern.
-
STAND DER TECHNIK
-
Es ist eine herkömmliche Technologie einer dreidimensionalen Computergrafik bekannt (nachfolgend mit 3DCG bezeichnet), welche ein Objekt (virtuelles Gebilde) rendert, das in einem virtuellen dreidimensionalen Raum verwaltet wird, indem das Objekt auf eine Bildschirmebene eines Computers mittels Berechnung projiziert wird. Die 3DCG benötigt viele arithmetische Ressourcen. Von daher wird eine Reihe von Prozessen, welche für das Rendern relevant sind, nicht nur alleine von einer zentralen Verarbeitungseinheit (CPU) durchgeführt. Üblicherweise ist eine Grafikverarbeitungseinheit (GPU), welche eine ausgewählte Hardwareressource ist, enthalten, so dass die CPU und die GPU zusammenarbeiten können, um eine Abfolge von Prozessen durchzuführen, welche für das Rendern relevant sind (siehe beispielsweise Patentliteratur 1).
-
DRUCKSCHRIFTLICHER STAND DER TECHNIK
-
PATENTLITERATUR
-
- Patentliteratur 1: JP 2007-334739 A
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Eine derartige 3DCG rendert Objekte unter Verwendung einer CPU, welche einen Renderbefehl an eine GPU für jedes Objekt überträgt. Die GPU führt eine Eckpunktattributtransformation an dem Objekt durch, welches mit dem Renderbefehl angewiesen worden ist, und rendert das Objekt, an welchem die Eckpunktattributtransformation durchgeführt wurde. Bei einer Technik der Übertragung des Renderbefehls für jedes Objekt führt ein Anstieg der Anzahl von Objekten (Objektzahl), die zu rendern sind, nicht nur zu einem linearen Anstieg der Zeit, welche die GPU für den Mehraufwand eines Funktionsaufrufs verbraucht, der mit dem Renderbefehl ausgegeben wird, sondern auch zur Abnahme der Rendergeschwindigkeit.
-
Um dem Nachlassen der Rendergeschwindigkeit zu begegnen, ist eine Technologie verfügbar, um so viele Objekte wie möglich in einem Prozess der Erzeugung von Grafikdaten, welche als Fundament eines dreidimensionalen Bilds dienen, zu verknüpfen. Es können aber Objekte, deren Aktionen (Verhalten) identisch zueinander sind, miteinander verknüpft werden, jedoch Objekte, deren Aktionen unterschiedlich zueinander sind, können nicht verknüpft werden. Dies schränkt eine Verbesserung bei der Abnahme der Rendergeschwindigkeit ein. Zusätzlich wird der Prozess der Erzeugung von Grafikdaten komplizierter.
-
Es ist eine Aufgabe der vorliegenden Erfindung, eine 3D-Bilderzeugungsvorrichtung und ein 3D-Bilderzeugungsverfahren zu schaffen, jeweils in der Lage, die Rendergeschwindigkeit zu erhöhen, ohne dass der Prozess der Erzeugung von Grafikdaten als ein Fundament eines dreidimensionalen Bilds beeinflusst wird.
-
Zur Lösung der obigen Aufgabe ist ein Beispiel der vorliegenden Erfindung wie folgt vorgesehen: Eine Steuereinheit überträgt einen Renderbefehl, der das Rendern eines Objekts anweist, welches ein dreidimensionales Bild bildet. Bei Empfang des Renderbefehls von der Steuereinheit führt eine Rendereinheit eine Eckpunktattributtransformation an einem Objekt durch, welches von dem Renderbefehl angewiesen worden ist, und rendert das Objekt. Hierbei verknüpft ein Verknüpfungsabschnitt Gitter einer Mehrzahl von Objekten, welche eine vorbestimmte Verknüpfungsbedingung erfüllen. Die Steuereinheit führt weiterhin vorab eine Eckpunktattributtransformation an der Mehrzahl von Objekten (auch als Verknüpfungsgruppe bezeichnet) durch, deren Gitter von dem Verknüpfungsabschnitt verknüpft worden sind, und überträgt einen Renderbefehl. Dieser Renderbefehl weist das Rendern der Mehrzahl von Objekten (auch als Nachtransformationsverknüpfungsgruppe bezeichnet) an, an welchen die Eckpunktattributtransformation durchgeführt worden ist, indem die Mehrzahl von Objekten als ein einziges Objekt betrachtet wird. Bei Empfang dieses Renderbefehls von der Steuereinheit rendert die Rendereinheit gleichzeitig die Mehrzahl von Objekten, welche als das einzelne Objekt angesehen worden sind und die von dem Renderbefehl angewiesen worden sind.
-
Im Gegensatz zu einer bestehenden Technik, bei der ein Renderbefehl für jedes Objekt übertragen wird, führt eine Steuereinheit vorab eine Eckpunktattributtransformation an einer Mehrzahl von Objekten durch, deren Gitter verknüpft worden sind, betrachtet die Mehrzahl von Objekten, an welchen die Eckpunktattributtransformation durchgeführt worden ist, als ein Objekt und überträgt den Renderbefehl, der das Rendern des Objekts anweist. Dies kann die Zeit verkürzen, welche eine Rendereinheit für den Mehraufwand eines Funktionsaufrufs verwendet, der mit dem Renderbefehl ausgegeben wird, und die Rendergeschwindigkeit erhöhen. Dies macht es nicht notwendig, so viele Objekte wie möglich bei einem Prozess der Erzeugung von Grafikdaten zu verknüpfen, welche das Fundament eines dreidimensionalen Bilds darstellen. Daher wird der Prozess der Erzeugung von Grafikdaten überhaupt nicht beeinflusst.
-
Es sei beispielsweise das Verhältnis einer Mehraufwandszeit bezüglich einer Gesamtprozesszeit angenommen; die Mehraufwandszeit wird für den Mehraufwand eines Funktionsaufrufs verwendet, der mit einem Renderbefehl ausgegeben wird, wohingegen die Gesamtprozesszeit für eine Serie von Prozessen aufgewendet wird, welche für das Rendern relevant sind. Kurz gesagt, ein relativ kleines Verhältnis von Mehraufwandszeit gegenüber Gesamtprozesszeit zeigt sich beim Rendern eines Objekts mit relativ komplexer Form oder einer relativ großen Anzahl von Eckpunkten. Im Gegensatz hierzu zeigt sich ein relativ großes Verhältnis von Mehraufwandszeit gegenüber der Gesamtprozesszeit beim Rendern eines Objekts mit relativ einfacher Form oder einer relativ geringen Anzahl von Eckpunkten. Das obige Beispiel der vorliegenden Erfindung kann somit effektiv beim Rendern einer großen Anzahl von Objekten sein, welche jeweils eine relativ kleine Anzahl von Eckpunkten haben.
-
KURZE BESCHREIBUNG DER ZEICHNUNG
-
Der voranstehende Gegenstand der vorliegenden Erfindung, weitere Gegenstände hiervon und Merkmale und Vorteile hiervon ergeben sich aus der nachfolgenden Beschreibung unter Bezugnahme auf die beigefügte Zeichnung.
-
1 ist ein Funktionsblockdiagramm, das eine Ausführungsform der vorliegenden Erfindung zeigt;
-
2 ist eine Darstellung, die den Aufbau einer Szeneriegrafik zeigt;
-
3 ist ein Flussdiagramm, welches einen von einer CPU durchgeführten Durchlaufprozess beschreibt;
-
4 ist ein Flussdiagramm, welches einen von der CPU durchgeführten Renderbefehlsübertragungsprozess zeigt;
-
5 ist ein Flussdiagramm, das einen von einer GPU durchgeführten Renderprozess zeigt;
-
6A ist eine Darstellung, welche einen Prozessablauf gemäß einer Grafikpipeline zeigt;
-
6B ist eine Darstellung, welche den Prozessablauf gemäß der Grafikpipeline zeigt;
-
7 ist eine Darstellung, welche eine Form zur Verknüpfung von Gittern zeigt;
-
8 ist eine Darstellung, welche eine Renderzeit angibt;
-
9 ist eine Darstellung, welche Simulationsergebnisse und Messergebnisse einer Belastung der CPU zeigt;
-
10 ist eine Darstellung, welche Messergebnisse einer Belastung an der GPU zeigt;
-
11 ist eine Darstellung, die eine tatsächliche Prozesszeit zeigt;
-
12 ist eine Darstellung, die eine Form zur Klassifizierung von Objekten in Verknüpfungsgruppen zeigt; und
-
13 ist eine Darstellung, welche Messergebnisse einer Prozesszeit zeigt.
-
AUSFÜHRUNGSFORMEN ZUR DURCHFÜHRUNG DER ERFINDUNG
-
Bezug nehmend auf die Zeichnung wird eine Ausführungsform der vorliegenden Erfindung nachfolgend beschrieben. Eine 3D-Bilderzeugungsvorrichtung 1 enthält eine zentrale Verarbeitungseinheit (CPU) 2 (Steuereinheit, -vorrichtung oder -mittel), eine Grafikverarbeitungseinheit (GPU) 3 (Rendereinheit, -vorrichtung oder -mittel), einen Speicher mit wahlfreiem Zugriff (RAM) 4, ein Video-RAM (VRAM) 5) und einen Lesespeicher (ROM) 6. Die CPU 2 kann als Verknüpfungsabschnitt, -einheit, -vorrichtung oder -mittel bezeichnet werden. In der vorliegenden Anmeldung kann der japanische Begriff „Shudan” eine „Vorrichtung” oder ein „Mittel” auf Englisch bezeichnen.
-
Das ROM 6 speichert Grafikdaten (dreidimensionale Modelldaten). Die Grafikdaten sind Daten, welche das Fundament eines dreidimensionalen Bilds sind, und enthalten eine Mehrzahl von Elementdateneinheiten, die das dreidimensionale Bild darstellen. Die CPU 2 liest (übernimmt) die Grafikdaten vom ROM 6 und bildet auf der Grundlage der gelesenen Grafikdaten eine Szeneriegrafik im RAM 4. Die Szeneriegrafik hat eine Baumstruktur mit Objekten, welche hierarchisch in Gruppen klassifiziert sind. Jeder der Knoten der Szeneriegrafik enthält Informationen über eine Form eines Objekts, Informationen über Oberflächenmerkmale und Informationen betreffend eine Modellumwandlung (Lage, Ausrichtung, Vergrößerung oder Verkleinerung). In der vorliegenden Anmeldung wird „Information” sowohl als nicht zählbares als auch zählbares Substantiv verwendet.
-
Unter Verwendung von Grafikdaten, die in einer externen Speichereinheit gespeichert sind, beispielsweise einer Festplatteneinheit oder einem CD-ROM, kann die CPU 2 eine Szeneriegrafik im RAM 4 auf der Grundlage von Grafikdaten bilden, welche von der externen Speichereinheit gelesen worden sind. Wenn die Grafikdaten verwendet werden, die auf einem Server eines Netzwerks gespeichert sind, kann die CPU 2 die Szeneriegrafik im RAM 4 auf der Grundlage der Grafikdaten bilden, welche vom Server über eine Kommunikationsverbindung heruntergeladen worden sind. Teile der Grafikdaten können im RAM 4 gespeichert werden. Die CPU 2 kann die Grafikdaten vom RAM lesen und die Szeneriegrafik im RAM 4 auf der Grundlage der gelesenen Grafikdaten bilden.
-
Nach Bildung einer Szeneriegrafik im RAM 4 führt die CPU 2 einen Durchlaufprozess, der nachfolgend noch beschrieben wird, an der gebildeten Szeneriegrafik durch. In dem Durchlaufprozess entscheidet die CPU 2, ob jedes aller Objekte, welche zu der Szeneriegrafik gehören, in einer Verknüpfungsgruppe, welche noch zu beschreiben ist, enthalten ist (eine Verknüpfungsbedingung erfüllt). Für ein Objekt, für das entschieden worden ist, dass es nicht in der Verknüpfungsgruppe enthalten ist, überträgt die CPU 2 einen Renderbefehl, der das Rendern des Objekts anweist, an die GPU 3. Im Gegensatz hierzu verknüpft die CPU 2 für eine Mehrzahl von Objekten, welche als zur Verknüpfungsgruppe gehörend entschieden worden sind, Gitter der Mehrzahl von Objekten in der Verknüpfungsgruppe und führt vorab eine Eckpunktattributtransformation an der Mehrzahl von Objekten durch, deren Gitter verknüpft worden sind (vor der Übertragung des Renderbefehls). Die CPU 2 überträgt an die GPU 3 einen Renderbefehl, der das Rendern einer Mehrzahl von Objekten anweist, an welchen die Eckpunktattributtransformation durchgeführt worden ist, indem die Mehrzahl von Objekten als ein einzelnes Objekt betrachtet wird.
-
Bei Empfang des Renderbefehls von der CPU 2 führt die GPU 3 einen später noch zu beschreibenden Renderprozess durch. Im Renderprozess entscheidet die GPU 3, ob das Objekt, welches von dem Renderbefehl angewiesen worden ist, ein Objekt ist, an welchem die Eckpunktattributtransformation durchgeführt worden ist. Die GPU 3 führt die Eckpunktattributtransformation an dem Objekt durch, welches von dem Renderbefehl angewiesen worden ist, und rendert das Objekt, an welchem die Eckpunktattributtransformation durchgeführt worden ist.
-
Beim Rendern eines Objekts führt die GPU 3 ein Auffüllen und eine Bildanzeige durch. Zum Auffüllen berechnet die GPU 3 einen Pixelwert und die Helligkeit eines jeden Pixels, welches innerhalb der Eckpunkte eines Objekts liegt, das auf ein Koordinatensystem auf einem zweidimensionalen Bildschirm projiziert worden ist, berechnet eine Tiefe eines jeden Objekts und speichert die Ergebnisse der Berechnungen als Bilddaten im VRAM 5. Als Bildanzeige liest die GPU 3 die im VRAM 5 gespeicherten Bilddaten und gibt die gelesenen Bilddaten als ein Videosignal an eine Anzeigeeinheit 7. Wenn beispielsweise die 3D-Bilderzeugungsvorrichtung 1 zur Verwendung in einem Fahrzeug ausgelegt ist, zeigt die Anzeigeeinheit 7 eine grafische Anzeige. Die grafische Anzeige stellt verschiedene Informationen zur Verfügung, beispielsweise ein Blinksignal, eine Anzeigenadel, eine Skala, ein Instrumentenbrett, eine Fahrspur, eine Turn-by-turn-Anzeige (TBT). Die von der grafischen Anzeige dargestellten Informationen enthalten eine große Anzahl von Renderzielobjekten. Jedes der Objekte hat eine relativ einfache Form, beispielsweise eine Rechteckform, und eine geringe Anzahl von Eckpunkten. Ein mit der 3D-Bilderzeugungsvorrichtung 1 ausgestattetes Fahrzeug kann als Trägerfahrzeug oder Eigenfahrzeug bezeichnet werden.
-
2 zeigt ein Beispiel eines Aufbaus einer Szeneriegrafik, die im RAM 4 gebildet wird. 2 drückt ein Modell der genannten grafischen Anzeige mit einer Geschwindigkeitsanzeige und einer Entfernungsanzeige aus. Die Geschwindigkeitsanzeige enthält eine Anzeigenadel und Ziffern; die Entfernungsanzeige enthält Buchstaben, Ziffern und eine Anzeigenadel. Gemäß einer vorhandenen Technik überträgt die CPU 2 einen Renderbefehl an die GPU 3 für jedes Objekt in Form von Anzeige (1), Geschwindigkeitsanzeige (2), Anzeigenadel (3), Ziffern (4), Entfernungsanzeige (5), Buchstaben (6), Ziffern (7) und Anzeigenadel (8). Bei sequenziellem Empfang der Renderbefehle, welche das Rendern von Anzeige (1), Geschwindigkeitsanzeige (2), Anzeigenadel (3), Ziffern (4), Entfernungsanzeige (5), Buchstaben (6), Ziffern (7) und Anzeigenadel (8) anweisen, führt die GPU 3 sequenziell eine Eckpunktattributtransformation an jedem der Objekte durch und rendert sequenziell jedes der Objekte, an welchen die Eckpunktattributtransformation durchgeführt worden ist.
-
Im Gegensatz hierzu ist bei einer Technik gemäß der vorliegenden Ausführungsform vorab eine Verknüpfungsbedingung vorgeschrieben, und die vorgeschriebene Verknüpfungsbedingung ist in der CPU 2 gespeichert. Die CPU 2 verknüpft Gitter einer Mehrzahl von Objekten, welche die Verknüpfungsbedingung erfüllen, und führt eine Eckpunktattributtransformation an jedem der Mehrzahl von Objekten durch, deren Gitter verknüpft worden sind, und zwar vorab (vor der Übertragung eines Renderbefehls). Die CPU 2 betrachtet die Objekte, welche die Verknüpfungsbedingung erfüllen, beispielsweise die Ziffern (4), Buchstaben (6) und Ziffern (7), als ein Teil. Wenn die Gitter der Objekte verknüpft werden, führt die CPU 2 die Eckpunktattributtransformation an jedem der Objekte durch, deren Gitter verknüpft worden sind. Danach betrachtet die CPU 2 die Mehrzahl von Objekten, an welchen die Eckpunktattributtransformation durchgeführt worden ist, als ein einzelnes Objekt und überträgt einen Renderbefehl. Beim sequenziellen Empfang der Renderbefehle, welche das Rendern von Anzeige (1), Geschwindigkeitsanzeige (2), Anzeigenadel (3), Entfernungsanzeige (5) und Anzeigenadel (8) anweisen, führt die GPU 3 sequenziell die Eckpunktattributtransformation an jedem der Objekte durch und rendert sequenziell jedes der Objekte, an welchem die Eckpunktattributtransformation durchgeführt worden ist. Im Gegensatz hierzu empfängt die GPU 3 weiterhin einen Renderbefehl, der das Rendern der Objekte der Ziffern und Buchstaben (4, 6 und 7) anweist, welche als ein einzelnes Teil betrachtet werden. Diese Objekte wurden bereits von der CPU 2 der Eckpunktattributtransformation unterzogen, und somit geht die GPU 3 zum Rendern weiter, ohne irgendeine Eckpunktattributtransformation durchzuführen. Die Technik der vorliegenden Ausführungsform unterscheidet sich von einer bekannten Technik des Übertragens eines Renderbefehls für jedes der Objekte darin, dass: eine Eckpunktattributtransformation vorab an jedem aus einer Mehrzahl von betreffenden Objekten durchgeführt wird, deren Gitter verknüpft worden sind; und ein Renderbefehl übertragen wird, der das Rendern der Mehrzahl von betreffenden Objekten anweist, an welchen die Eckpunktattributtransformation durchgeführt worden ist, indem die Mehrzahl von betreffenden Objekten als ein einzelnes Objekt betrachtet wird. Im Vergleich zu einer bekannten Technik des Übertragens des Renderbefehls für jedes der Objekte kann die Zeit, welche die Rendereinheit für den Mehraufwand eines Funktionsaufrufs verwendet, der mit einem Renderbefehl ausgegeben wird, stärker verkürzt werden und die Rendergeschwindigkeit kann erhöht werden (siehe nachfolgend zu beschreibende 8).
-
Nachfolgend wird eine Verknüpfungsbedingung beschrieben, anhand der Gitter von Objekten verknüpft werden.
-
(1) Objekte, die sich auf das gleiche Material (Textur) beziehen, werden in die gleiche Verknüpfungsgruppe klassifiziert. Was als Textur bezeichnet wird, ist die Festsetzung des Materials einer Objektoberfläche als Farbe, Transparenz, Reflexionsvermögen, Brechungsindex, Ungleichmäßigkeiten. Genauer gesagt, die Textur bezeichnet ein metallisches (metallartiges) Material, ein glasiges (glasartiges) Material oder ein hölzernes (oberflächenraues) Material.
-
(2) Ein Objekt gehört zu einer einzelnen Verknüpfungsgruppe.
-
Bezug nehmend auf die 3 bis 13 wird nachfolgend die Arbeitsweise der voranstehenden Konfiguration beschrieben.
-
Es sei festzuhalten, dass ein Flussdiagramm oder der Ablauf des Flussdiagramms bei der vorliegenden Erfindung Abschnitte (auch als Schritte bezeichnet) enthält, von denen jeder beispielsweise mit S1 oder T1 bezeichnet ist. Weiterhin kann jeder Abschnitt in unterschiedliche Unterabschnitte unterteilt werden, wohingegen verschiedene Abschnitte zu einem einzelnen Abschnitt kombiniert werden können. Weiterhin kann jeder der so gebildeten Abschnitte auch als eine Vorrichtung, ein Modul, ein Mittel oder eine Einheit bezeichnet werden.
-
Gemäß der Technik der vorliegenden Ausführungsform führt die CPU 2 einen Durchlaufprozess und einen Renderbefehlsübertragungsprozess durch, wohingegen die GPU 3 einen Renderprozess durchführt. Der Durchlaufprozess beinhaltet einen Verknüpfungsabschnitt/-schritt und einen Eckpunktattributtransformationsabschnitt/-schritt.
-
Der Renderbefehlsübertragungsprozess enthält einen Renderbefehlsübertragungsabschnitt/-schritt. Der Renderprozess enthält einen Renderabschnitt/-schritt.
-
Nach Beginn des Durchlaufprozesses bestimmt die CPU 2 ein Objekt einer Durchlaufbestimmung (S1). Danach bestimmt die CPU 2, ob das Objekt der Durchlaufbestimmung ein Objekt ist, das sich in einer Verknüpfungsgruppe befindet, die eine bestimmte Verknüpfungsbedingung erfüllt (eine Bedingung, dass das gleiche Material vorliegt) (S2). Wenn die CPU 2 entscheidet, dass das Gitter des Objekts die vordefinierte Verknüpfungsbedingung erfüllt und das Objekt das Objekt ist, welches in der Verknüpfungsgruppe enthalten ist (S2: JA), entscheidet die CPU 2, ob das Objekt ein Objekt ist, welches als Erstes in der Verknüpfungsgruppe erscheint (S3).
-
Wenn die CPU 2 entscheidet, dass das Objekt ein Objekt ist, welches als Erstes innerhalb der Verknüpfungsgruppe erscheint (S3: JA), wird ein repräsentatives Gitter der Verknüpfungsgruppe in einem Renderzielgitterarray gespeichert (S34) und eine Eckpunktattributtransformation durchgeführt (S5 bis S7). Im Gegensatz hierzu führt, selbst wenn die CPU 2 entscheidet, dass das Objekt nicht das Objekt ist, welches als Erstes innerhalb der Verknüpfungsgruppe erscheint (Objekt, welches an zweiter Stelle oder später erscheint) (S3: NEIN), die CPU 2 die Eckpunktattributtransformation durch (S5 bis S7). Die CPU 2 führt die Eckpunktattributtransformation durch, welche beinhaltet: Eckpunkttransformation; Eckpunktfarb-/-alphatransformation; und UV-Koordinatentransformation: Die Eckpunkttransformation ist ein Vorgang der Transformation von Koordinatendaten eines Eckpunkts durch Bewegen, Vergrößern, Verkleinern oder Drehen. Die Eckpunktfarb-/-alphatransformation ist ein Prozess der Durchführung einer Transformation durch Reflexion einer Farbe oder der Transparenz an einem Objekt. Die UV-Koordinatentransformation ist ein Prozess der Durchführung einer Transformation durch Zuordnen einer Position eines Bilds einem Eckpunkt in einer Ebene eines dreidimensionalen Raums zur Verbindung des Bilds mit der Ebene.
-
Anhand der 6A und 6B erfolgt nachfolgend eine Beschreibung. In den 6A und 6B ist ein Gitter 1 von einem Objekt, welches als Erstes innerhalb einer Verknüpfungsgruppe erscheint, das heißt, ist ein Gitter eines Verknüpfungsrepräsentanten. Gitter 2 und 3 sind von Objekten, welche an zweiter Stelle und später innerhalb der Verknüpfungsgruppe erscheinen, das heißt, sind Gitter von Verknüpfungsmitgliedern (anders als der Verknüpfungsrepräsentant). In diesem Fall ist die Anzahl von Indizes (Anzahl von Eckpunkten) des Gitters 1, welches der Verknüpfungsrepräsentant ist, die Anzahl von Indizes, die nach Abschluss der Verknüpfung zu erreichen ist (Dummy-Eckpunkte werden berücksichtigt); die Anzahl von Indizes eines jeden der Gitter 2 und 3, welche Verknüpfungsmitglieder sind, ist die Anzahl von Indizes eines jeden der Gitter. Die Gitter 2 und 3, welche die Verknüpfungsmitglieder sind, zeigen jeweils einen Zeiger, der den Verknüpfungsrepräsentanten angibt. Sowohl die Eckpunktattributarrays als auch die Indexarrays der Gitter 2 und 3 werden „NULL”. Genauer gesagt, die CPU 2 verknüpft die Gitter 1 bis 3 gemäß den 6A und 6B und führt eine Eckpunktattributtransformation an den drei Objekten gleichzeitig durch, deren Gitter 1 bis 3 verknüpft worden sind.
-
Nachdem die CPU 2 so eine Eckpunktattributtransformation an einer Mehrzahl von Objekten durchgeführt hat, welche zur Verknüpfungsgruppe gehören, setzt die CPU 2 ein Flag, welches anzeigt, ob die Sichtbarkeit nicht „0” ist (S8). Die CPU 2 entscheidet dann, ob das Objekt das letzte in der Szeneriegrafik ist (S9). Wenn die Entscheidung gemacht wird, dass das Objekt nicht das letzte in der Szeneriegrafik ist (S9: NEIN), kehrt die Steuerung zu S1 zurück, um S1 und die nachfolgenden Schritte wiederholt durchzuführen. Wenn im Gegensatz dazu die CPU 2 entscheidet, dass das Objekt das letzte in der Szeneriegrafik ist (S9: JA), beendet die CPU 2 den Durchlaufprozess. Wenn das Gitter eines Objekts eine vordefinierte Verknüpfungsbedingung nicht erfüllt, entscheidet die CPU 2, dass das Objekt nicht dasjenige ist, welches in der Verknüpfungsgruppe enthalten ist (S2: NEIN), und entscheidet, ob das Objekt das letzte in der Szeneriegrafik ist (S9).
-
Nachfolgend beginnt die CPU 2 die Durchführung eines Renderbefehlsübertragungsprozesses an jedes der Objekte, an welchen vorab die Eckpunktattributtransformation durchgeführt wurde (deren Gitter verknüpft wurden). Die CPU 2 referenziert die Information zuerst an einem individuellen Originalgitter (S11) und entscheidet, ob die Sichtbarkeit des Originalgitters „0” ist oder nicht (S12). Wenn die CPU 2 entscheidet, dass die Sichtbarkeit des Originalgitters nicht „0” ist (S12: NEIN), kopiert die CPU 2 den Eckpunkt in ein vorläufiges Verknüpfungseckpunktarray zum Rendern (S13) und entscheidet, ob das Originalgitter das letzte in der Verknüpfungsgruppe ist (S14). Wenn die CPU 2 entscheidet, dass die Sichtbarkeit des Originalgitters „0” ist (S12: JA), kopiert die CPU 2 den Eckpunkt nicht in das vorläufige Verknüpfungseckpunktarray zum Rendern, aber entscheidet, ob das Originalgitter das letzte in der Verknüpfungsgruppe ist (S14).
-
Wenn die CPU 2 entscheidet, dass das Originalgitter das letzte innerhalb der Verknüpfungsgruppe ist (S14: JA), überträgt die CPU 2 einen Renderbefehl, der das Rendern eines jeden der Objekte, an welchen vorab die Eckpunktattributtransformation durchgeführt wurde, anweist, an die GPU 3 (S15). Wenn die CPU 2 entscheidet, dass das Originalgitter nicht das letzte innerhalb der Verknüpfungsgruppe ist (S14: NEIN), führt die CPU 2 die Steuerung nach S11 zurück und führt wiederholt S11 und die nachfolgenden Schritte durch. Es sei festzuhalten, dass auch an einem Objekt, an welchem die Eckpunktattributtransformation nicht durchgeführt wurde (dessen Gitter nicht verknüpft wurde), die CPU 2 einen Renderbefehl, der das Rendern des Objekts anweist, an welchem die Eckpunktattributtransformation nicht durchgeführt wurde, an die GPU 3 überträgt.
-
Die GPU 3 führt einen Renderprozess gemäß 5 durch. Nach Beginn des Renderprozesses führt die GPU 3 eine Eckpunktattributtransformation durch, welche eine Eckpunkttransformation, Eckpunktfarb-/-alphatransformation und UV-Koordinatentransformation enthält (T1 bis T3). Die GPU 3 rendert dann Objekte, an welchen die Eckpunktattributtransformation durchgeführt wurde (T4). Es sei festzuhalten, dass die GPU 3 die Eckpunktattributtransformation an einem Objekt durchführt, an welchem die CPU 2 die Eckpunktattributtransformation nicht durchgeführt hat, jedoch keine Eckpunktattributtransformation an einem Objekt durchführt, an welchem die CPU 2 die Eckpunktattributtransformation vorab durchgeführt hat.
-
Anhand von 7 wird die voranstehende Reihe von Prozessen nachfolgend erläutert. Eine Pipeline einer dreidimensionalen Computergrafik enthält eine Erzeugungsstufe (G) zur Erstellung von Daten, die zum Rendern notwendig sind, eine Durchlaufstufe (T) zur Ausgabe einer Renderanweisung, eine Transformationsstufe (X oder X-Ausbildung) zur Durchführung einer Eckpunktattributtransformation, eine Abtastumwandlungsstufe (X) zur Berechnung von Pixelwerten oder Helligkeitspegeln von Pixeln, die innerhalb der Gitter eines jeden Objekts vorhanden sind, und eine Anzeigestufe (D) zum Rendern der Objekte. Die Stufe G und die Stufe T werden von der CPU 2 verarbeitet, wohingegen die Stufen X, S und D von der GPU 3 verarbeitet werden.
-
Die Beschreibung erfolgt beispielhaft für den Fall, bei dem die CPU 2 Folgendes durchführt: Ausgeben einer Anweisung, welche das Rendern einer Anzeigenadel 11 unter der Bedingung „Kurve 90° und 50% blickdicht” anweist; Ausgabe einer Anweisung, welche das Rendern eines Rings 12 unter der Bedingung „100% blickdicht” anweist; und Ausgeben einer Anweisung, welche das Rendern eines Bilds 13 der Außenseite eines Fahrzeugs anweist, das mit einer in das Fahrzeug eingebauten Kamera ausgestattet ist, und zwar unter der Bedingung „100% blickdicht”. Das Bild 13 ist beispielsweise eine Nachtansicht (Technologie der Aufnahme eines Fußgängers oder Wildtiers, welche im Scheinwerferlicht kaum zu identifizieren sind, indem mit Nah-Infrarot bestrahlt wird) oder eine Heckansicht (Technologie der Bilderzeugung von hinterhalb eines Fahrzeugs zur Parkunterstützung und der Anzeige des Bilds). Bei einer vorhandenen Technik überträgt die CPU 2 nach Ausgabe der Anweisungen, welche das Rendern der entsprechenden Objekte anweisen, sequenziell Renderbefehle, welche das Rendern der Anzeigenadel 11, das Rendern des Rings 12 und das Rendern des Bilds 13 anweisen, an die GPU 3. Beim sequenziellen Empfang der Renderbefehle, die das Rendern der Anzeigenadel 11, das Rendern des Rings 12 und das Rendern des Bilds 13 anweisen, führt die GPU 3 eine Eckpunktattributtransformation an jedem der Objekte durch und rendert jedes der Objekte, an welchen die Eckpunktattributtransformation durchgeführt worden ist.
-
Bei der Technik gemäß der vorliegenden Ausführungsform verknüpft die CPU 2, wenn entschieden wird, dass die Anzeigenadel 11 und der Ring 12 eine Verknüpfungsbedingung erfüllen, das Gitter der Anzeigenadel 11 und das Gitter des Rings 12 und führt vorab eine Eckpunktattributtransformation sowohl an der Anzeigenadel 11 als auch dem Ring 12 durch. Kurz gesagt, die CPU 2 führt die Eckpunktattributtransformation an der Anzeigenadel 11 und die Eckpunktattributtransformation an dem Ring 12 durch und betrachtet dann die Anzeigenadel 11 und den Ring 12 als ein einzelnes betreffendes Objekt. Die CPU 2 überträgt dann einen Renderbefehl, der das Rendern des betreffenden Objekts anweist, an die GPU 3.
-
Das heißt, eine bekannte Technik veranlasst die GPU 3, die Eckpunktattributtransformation sowohl an der Anzeigenadel 11 als auch an dem Ring 12 durchzuführen. Im Gegensatz hierzu erlaubt die Technik der vorliegenden Ausführungsform, dass die CPU 2 die Eckpunktattributtransformation sowohl an der Anzeigenadel 11 als auch dem Ring 12 durchführt, die Anzeigenadel 11 und den Ring 12 als ein Objekt betrachtet und den Renderbefehl überträgt.
-
8 zeigt ein theoretisches Modell der Leistungsverbesserung, welche durch die Technik der vorliegenden Ausführungsform realisiert wird. Bei einer vorhandenen Technik benötigt die GPU 3 eine bestimmte Zeit (Mehraufwand) jedes Mal dann, wenn die GPU 3 einen Renderbefehl von der CPU 2 aufruft, um ein Objekt zu rendern. Jedes Mal dann, wenn die GPU 3 den Renderbefehl empfängt, führt die GPU 3 eine Eckpunktattributtransformation durch und rendert das Objekt (Hauptprozess). Im Gegensatz hierzu führt gemäß der Technik der vorliegenden Ausführungsform gemäß obiger Beschreibung die CPU 2 als einen speziellen Prozess die Verknüpfung von Gittern einer Mehrzahl von Objekten durch, welche eine Verknüpfungsbedingung erfüllen (eigener Prozess der Gitterverknüpfung), und führt die Eckpunktattributtransformation an der Mehrzahl von Objekten durch, deren Gitter verknüpft wurden. 8 zeigt den Fall, bei dem die CPU 2 die Gitter von drei Objekten verknüpft hat. Die Anzahl von Objekten, deren Gitter verknüpft werden, kann eine beliebige Anzahl von Objekten sein, solange die Objekte die Verknüpfungsbedingung erfüllen.
-
Die Prozesszeit, die für die Eckpunktattributtransformation notwendig ist, welche gemäß der Technik der vorliegenden Ausführungsform durchgeführt wird, hängt von der Anzahl von Eckpunkten ab, welche die Gegenstände der Berechnung sind. Die arithmetischen Ausdrücke (1) und (2) gemäß nachfolgender Darstellung drücken die Prozesszeit aus, welche für die Eckpunktattributtransformation notwendig ist, und sind von dem theoretischen Modell abgeleitet. Hierbei bezeichnet „oh” eine Mehraufwandszeit pro Objekt, „obj” bezeichnet die Anzahl von Objekten und „v” bezeichnet die Anzahl von Eckpunkten pro Objekt. Aus Gründen der Kürze sei der Wert „v” für alle Objekte innerhalb einer Szeneriegrafik konstant. Die Mehraufwandszeit soll ein bestimmter Wert sein, und ein Hauptprozess und ein spezieller Prozess sollen eine lineare Funktion von „v” liefern. Es sei angenommen, dass „m” eine Steigung der linearen Funktion bezeichnet, welche vom Hauptprozess geliefert wird, und „s” eine Steigung der linearen Funktion bezeichnet, welche vom speziellen Prozess geliefert wird. Mit anderen Worten, „m” bezeichnet eine Prozesszeit pro Eckpunkt, notwendig innerhalb des Hauptprozesses, und „s” bezeichnet eine Prozesszeit pro Eckpunkt, benötigt innerhalb des speziellen Prozesses. Die Technik der vorliegenden Ausführungsform fügt allen Objekten, welche einer Verknüpfungsgruppe zugehörig sind, zwei Dummy-Eckpunkte hinzu. Ein Dummy-Eckpunkt wird einem Objekt hinzuaddiert, das eine geradzahlige Anzahl von Eckpunkten hat. Aus Gründen der Kürze sei angenommen, dass die Anzahl von Eckpunkten aller Objekte eine ganze Zahl ist und (v + 3) Eckpunkte pro Objekt zu behandeln sind
-
Es sei angenommen, dass „t-before” eine Prozesszeit bezeichnet, welche von der vorhandenen Technik benötigt wird, und „t-after” eine Prozesszeit bezeichnet, welche von der Technik der vorliegenden Ausführungsform benötigt wird; die Prozesszeiten lassen sich wie folgt ausdrücken: t-before = (oh + m × v) × obj (1) t-after = oh + s(v + 3) × obj + m(v + 3) × obj (2)
-
Die Anzahl aller Eckpunkte eines Modells (ausgedrückt als v × obj) kann als konstant bleibend angenommen werden, ungeachtet dessen, ob die Technik der vorliegenden Ausführungsform angewendet wird. Die arithmetischen Ausdrücke (3) und (4) gemäß nachfolgender Beschreibung lassen sich von den jeweiligen arithmetischen Ausdrücken (1) und (2) ableiten. Im Ergebnis können die Prozesszeiten, welche von der vorhandenen Technik und der Technik der vorliegenden Ausführungsform benötigt werden, mit linearen Funktionen ausgedrückt werden. Genauer gesagt, die Prozesszeiten können wie folgt ausgedrückt werden: t-before = oh × obj + m(v × obj) (3) t-afer = 3(s + m) × obj + oh + (s + m) × v × obj (4)
-
Wenn die Prozesszeit der Technik der vorliegenden Ausführungsform kürzer als die Prozesszeit der vorhandenen Technik ist, kann von der Technik der vorliegenden Ausführungsform gesagt werden, dass sie effektiv ist. Mit anderen Worten, wenn eine Bedingung einen nachfolgenden arithmetischen Ausdruck (5) erfüllt, kann von der Technik der vorliegenden Ausführungsform gesagt werden, dass sie effektiv ist. obj ≥ (oh + s × v × obj)/{oh – 3(s + m)} (5)
-
Der Erfinder et al. haben die Prozesszeit unter Verwendung einer tatsächlichen Vorrichtung gemessen, um zu verifizieren, ob die Leistungseigenschaft mit derjenigen in Übereinstimmung ist, welche durch die obige theoretische Analyse erhalten wird. Ein dreidimensionaler Modus mit „4000” Eckpunkten wurde bereitgestellt. Als Messbedingung wurde die Anzahl von Objekten auf „1”, „10”, „100”, „125”, „200”, „250”, „500” und „1000” gesetzt. Eine Objektstruktur wurde so eingestellt, dass ein Produkt aus Anzahl der Objekten und Anzahl der Eckpunkte pro Objekt konstant war. Die Prozesszeit wurde unter Verwendung sowohl einer vorhandenen Technik als auch der Technik der vorliegenden Ausführungsform gemessen, und die der CPU 2 bzw. GPU 3 auferlegten Belastungen wurden gemessen. Eine längere Zeit ist die tatsächliche Prozesszeit. Zur Simulation unter Verwendung der arithmetischen Ausdrücke (3) und (4) wurden oh, m und s gemessen. In den 9 bis 11, auf welche später Bezug genommen wird, bezeichnet „vorher” ein Messergebnis unter Verwendung der vorhandenen Technik, und „nachher” bezeichnet ein Messergebnis unter Verwendung der Technik der vorliegenden Ausführungsform.
-
9 zeigt Ergebnisse von Simulationen und Messergebnisse der Belastung der CPU 2. Die Werte oh, m und s, die in den Simulationen verwendet wurden, sind 0.16 [ms], 0.00077 [ms] und 0.0035 [ms]. Die Werte wurden unter Verwendung der tatsächlichen Vorrichtung gemessen. Die in 9 gezeigten Ergebnisse demonstrieren, dass das theoretische Modell die Messungen korrekt beschreibt. Soweit die tatsächliche Vorrichtung, die hierbei verwendet wurde, betroffen ist, kann man von der Technik der vorliegenden Ausführungsform sagen, dass sie wirksam arbeitet, wenn obj > 97 gemäß dem arithmetischen Ausdruck (5) erfüllt ist. Die Messergebnisse zeigen, dass, wenn die Anzahl von Objekten annähernd „100” übersteigt, die Technik der vorliegenden Ausführungsform effektiv wird.
-
Das theoretische Modell berücksichtigt die Belastung der GPU 3 nicht. 10 zeigt die Messergebnisse der Belastung an der GPU 3. Die Eigenschaft der Belastung der GPU 3 muss weiter untersucht werden. Gemäß den Messergebnissen, die momentan vorliegen, wird die durch die vorhandene Technik verursachte Belastung als 30 [ms] ausgedrückt und die von der Technik der vorliegenden Ausführungsform verursachte Belastung als 35 [ms]. 11 zeigt die tatsächliche Prozesszeit (die längere von Belastung an der CPU 2 und Belastung an der GPU 3). Die Ergebnisse von 11 zeigen, dass, wenn die Anzahl von Objekten „200” übersteigt, die Technik der vorliegenden Ausführungsform als effektiv betrachtet werden kann. Wenn somit die Bedingungen für eine Optimierung, beispielsweise die Anzahl von Eckpunkten und die Anzahl von Objekten, erfüllt sind, kann von der Technik der vorliegenden Ausführungsform gesagt werden, dass sie effektiv ist. Wie oben erwähnt, enthält eine grafische Anzeige eine Vielzahl von Objekten mit relativ einfachen Formen (einer geringen Anzahl von Eckpunkten), so dass die Bedingungen für eine Optimierung relativ leicht erfüllbar sind.
-
Ein Beispiel eines vorteilhaften Effekts, der sich zeigt, wenn die genannte Technik der vorliegenden Ausführungsform bei einem Prototyp angewendet wird, wird nachfolgend beschrieben. Der Prototyp beinhaltet einen Renesas SH7769, ein ROM mit einer Speicherkapazität von 128M Byte, ein DVGA (1280 × 480) und ein 12.3-Inch TFT-Display. Die Inhalte umfassen vier Anzeigen (Geschwindigkeitsanzeige, Entfernungsanzeige, Kraftstoffanzeige und Wassertemperaturanzeige), eine Kontrollleuchte (Warnlampe), ein Registermenü und eine Fahrunterstützungssystemanzeige. In dem dreidimensionalen Modell beträgt die Anzahl von Objekten „154” und die Anzahl von Eckpunkten „14960”.
-
Aufgrund der Anwendung einer Mehrzahl von Optimierungstechniken kann eine Aufwertung in Form von 17.2 [ms] erwartet werden, was jedoch unbefriedigend ist. Aufgrund der Technik der vorliegenden Ausführungsform können bei dieser Gelegenheit gemäß 12 123 Objekte von 154 Objekten in acht Gruppen unterteilt werden. Als Prozesszeit kann eine Zeitverringerung (0.16 [ms]) als Mehraufwand pro Objekt erwartet werden. Der vorteilhafte Effekt der Technik der vorliegenden Ausführungsform kann als 18.4 [ms] ausgedrückt werden ((123 – 8) × 0.16 [ms]). Insgesamt kann eine Verringerung der Prozesszeit von 35.6 [ms] (17.2 + 18.4 [ms]) erwartet werden. Um diesen vorteilhaften Effekt zu bestätigen, wurden die Prozesszeiten des Renderns bei der vorhandenen Technik und der Technik der vorliegenden Ausführungsform entsprechend gemessen. Der Anzeigezustand war der Zustand, der die in den Spezifikationen höchstzulässige Last bedeutet. Die Messergebnisse gemäß 13 zeigen, dass die Last an der CPU 2 verringert werden kann, ohne dass sich ein nachteiliger Effekt an der Belastung der GPU 3 ergibt. Eine hohe Wiederholrate ist erwünscht (insbesondere bei der Anzeige der Tachonadel, welche sich schnell bewegt), um eine ruckfreie Anzeige zu realisieren. Unter Berücksichtigung der Sehfähigkeiten eines Menschen ist ein Minimum von 30 [fps] zu erzielen. Um 30 [fps] zu erzielen, wurde die Belastung an der CPU 2 auf 33 [ms] oder weniger bestätigt. Die Technik der vorliegenden Ausführungsform kann hierzu beitragen.
-
Wie bisher beschrieben, verknüpft bei der vorliegenden Ausführungsform die CPU 2 in der 3D-Bilderzeugungsvorrichtung 1 Gitter einer Mehrzahl von Objekten, welche eine vorbestimmte Verknüpfungsbedingung erfüllen, und führt vorab eine Eckpunktattributtransformation an der Mehrzahl von Objekten durch, deren Gitter verknüpft wurden. Die CPU 2 betrachtet die Mehrzahl von Objekten, an welchen die Eckpunktattributtransformation durchgeführt worden ist, als ein Objekt und überträgt einen Renderbefehl, der das Rendern des Objekts anweist, an die GPU 3. Die GPU 3 rendert die Mehrzahl von Objekten, welche als das eine Objekt betrachtet werden, gleichzeitig unter Anweisung des Renderbefehls, der von der CPU 2 empfangen wurde. Folglich kann eine Zeit, welche die GPU 3 als Mehraufwand für einen Funktionsaufruf verwendet, der mit dem Renderbefehl ausgegeben wird, unterdrückt werden und die Rendergeschwindigkeit kann erhöht werden. In diesem Fall müssen nicht so viele Objekte wie möglich in einem Prozess zur Erzeugung von Grafikdaten als Fundament eines dreidimensionalen Bilds verknüpft werden. Der Prozess der Erzeugung der Grafikdaten bleibt unbeeinflusst.
-
Was die Verknüpfungsbedingung betrifft, so sind Objekte, welche das gleiche Material zeigen, in der gleichen Verknüpfungsgruppe enthalten. Ob Objekte das gleiche Material zeigen, wird als ein Kriterium betrachtet, um die Gitter der Objekte zu verknüpfen.
-
Die vorliegende Erfindung ist nicht auf die bisher beschriebene Ausführungsform begrenzt, sondern kann wie nachfolgend erläutert modifiziert oder erweitert werden.
-
Die Anzeigeeinheit 7 ist nicht auf eine grafische Anzeige eines Fahrzeugs beschränkt, sondern kann jegliche andere Anzeigeeinheit in einem Fahrzeug sein. Das ausbildende Merkmal ist nicht auf dasjenige beschränkt, welches das Rendern an der Anzeigeeinheit, beispielsweise der grafischen Anzeige eines Fahrzeugs, durchführt, sondern kann auch auf Gebieten angewendet werden, welche nicht einem Fahrzeug zugeordnet sind, beispielsweise bei einer dreidimensionalen Simulation, elektronischen Veröffentlichungen oder auf dem Unterhaltungsgebiet.
-
Obgleich die vorliegende Erfindung unter Bezugnahme auf Ausführungsformen hiervon beschrieben wurde, versteht sich, dass die Erfindung nicht auf die Ausführungsformen und Aufbauten beschränkt ist. Die vorliegende Erfindung soll verschiedene Abwandlungen und äquivalente Anordnungen mit abdecken. Weiterhin sind neben den verschiedenen Kombinationen und Konfigurationen andere Kombinationen und Konfigurationen einschließlich mehr, weniger oder nur eines einzelnen Elements ebenfalls im Rahmen und Umfang der vorliegenden Erfindung.