DE102008031526A1 - Verfahren zum Aufbau einer Datenstruktur die bei einer nächste-Teilchen-Suche verwendet wird, Programm für dieselbe, und Speichermedium zum Speichern des Programms - Google Patents

Verfahren zum Aufbau einer Datenstruktur die bei einer nächste-Teilchen-Suche verwendet wird, Programm für dieselbe, und Speichermedium zum Speichern des Programms Download PDF

Info

Publication number
DE102008031526A1
DE102008031526A1 DE102008031526A DE102008031526A DE102008031526A1 DE 102008031526 A1 DE102008031526 A1 DE 102008031526A1 DE 102008031526 A DE102008031526 A DE 102008031526A DE 102008031526 A DE102008031526 A DE 102008031526A DE 102008031526 A1 DE102008031526 A1 DE 102008031526A1
Authority
DE
Germany
Prior art keywords
writing
particle
memory
particles
particle number
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.)
Ceased
Application number
DE102008031526A
Other languages
English (en)
Inventor
Takahiro Toride Harada
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.)
Prometech Software Inc
Original Assignee
Prometech Software Inc
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 Prometech Software Inc filed Critical Prometech Software Inc
Publication of DE102008031526A1 publication Critical patent/DE102008031526A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/56Particle system, point based geometry or rendering

Abstract

Ein Verfahren zum Aufbau einer Datenstruktur einer nächste-Teilchen-Suche wird von einer GPU oder einem anderen Streamprozessor ausgeführt, und berechnet eine Simulation eines physikalischen Objekts durch Umwandlung dreidimensionaler digitaler Bilddaten in zweidimensionale digitale Bilddaten. Eine Bucket-Textur wird verwendet, wenn eine GPU verwendet wird und die Bucket-Textur ist aus Buckets zur Unterteilung eines Speicherraums, der im Einklang mit einem Raum, in dem das physikalische Objekt auftritt, geschaffen ist, zusammengesetzt. In dem Fall einer GPU ist ein Schreib-Schritt vorgesehen, bei dem ein Vertex-Shader verwendet wird, um eine Teilchenkoordinate und die Teilchennummer des in dem Bucket gespeicherten Teilchens zu lesen und unter in einen zweidimensionalen Bildraum zu schreiben.

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. Gebiet der Erfindung
  • Die Vorliegende Erfindung betrifft ein Verfahren zum Aufbau einer Datenstruktur, die für eine nächste-Teilchen-Suche verwendet wird, wodurch ein Verfahren erhalten wird, um eine nächste-Teilchen-Suche durch ausschließliche Ausführung einer teilchenbasierten Simulation unter Verwendung einer GPU oder eines anderen Streamprozessors zu beschleunigen, und wodurch eine Kollisionsberechnung oder ähnliches von z. B. zahlreichen starren Körpern in Realzeit durchgeführt werden kann; und ein Programm des Verfahrens zum Aufbau einer Datenstruktur; und ein Speichermedium zu Speichern des Programms.
  • 2. Beschreibung der verwandten Technik
  • Eine „teilchenbasierte Simulation" ist ein Simulationsverfahren zur Durchführung von Berechnungen, die sich auf das Verhalten von jedem einer großen Anzahl von Teilchen bezieht, bei der das Objekt der Simulation eine Gruppe (Aggregation) von zahlreichen Teilchen ist. „Sphären" mit einem konstanten Durchmesser werden gewöhnlich als die Teilchen für die Berechnung durch den Computer verwendet. Wenn die Form des Objekts durch eine Aggregation von Sphären ausgedrückt wird, variiert das Maß der Approximation oder die räumliche Auflösung abhängig von den Verfahren der Bestimmung der Größe (Durchmesser) der Sphären. Das Variieren des Sphärendurchmessers und das Variieren der räumlichen Auflösung ermöglichen es, die Rechengenauigkeit und die Rechengeschwindigkeit bei der Computersimulationsberechnung zu steuern.
  • Die zuvor erwähnte teilchenbasierte Simulation ist in den letzten Jahren verwendet worden, um Kollisionen von zahlreichen starren Körpern zu berechnen, und um das Verhalten von Fluiden, korpuskularen Körpern und ähnlichem zu berechnen, und um die Simulation von Kollisionen, dem Fluß oder ähnlichem auf den Schirm einer Computeranzeigevorrichtung zu erforschen (Nicht-Patent Dokument 1 und weitere Publikationen). Die Ergebnisse dieser Forschung sind in M. Tanaka et al., „Development of a rigid-body calculation method using a particle method, and application thereof to computer graphics" Japan Gesellschaft mechanischer Ingenieure, Schriften der 19ten Computational Mechanics Conference, Seiten 701–702, 2006 beschrieben. Die Erforschung dieser Simulationstechniken ist wichtig für die Technologie, die die Grundlage der Computergraphiken (CG) bildet.
  • Bei der oben beschriebenen teilchenbasierten Simulationsforschung sind mannigfaltige Methoden zur Verwendung einer CPU zur Erzeugung eines Rechenalgorithmus in der Vergangenheit verwendet worden. Es hat jedoch nur eine geringe Forschungsaktivität betreffend teilchenbasierte Simulationen gegeben, bei denen eine GPU (graphische Prozeßeinheit) oder ein anderer Streamprozessor aktiv verwendet wurde. Zum Beispiel wurde bei einer vergangenen Forschung unter Verwendung einer GPU eine nächste-Teilchen-Suche von einer CPU ausgeführt, und die von der CPU erhaltenen Suchdaten wurden der GPU zur Bildbearbeitung übertragen. Gemäß dieser Technik wird die CPU als die Hauptrechenausführeinheit verwendet, der Rechenalgorithmus der nächste-Teilchen- Suche wurde von der CPU ausgeführt, und die GPU als eine Hilfsrechenausführeinheit führt nur ein Berechnungsalgorithmus zur Bilddarstellungsverarbeitung aus. Folglich war die herkömmliche Rechentechnik nicht sogestaltet, daß die Rechenalgorithmen der nächste-Teilchen-Suche und die Bildverarbeitung in der teilchenbasierten Simulation nur innerhalb der GPU gefolgert und ausgeführt wurden.
  • Da eine Konfiguration, bei der alle Berechnungen (Bildverarbeitung, Aufbau der Datenstruktur, die in der nächste-Teilchen-suche verwendet wird, und ähnliches) nur von der GPU erledigt wird, nicht bei der herkömmlichen teilchenbasierten Simulationsberechnung herangezogen wird, ist die Recheneffizienz nicht zufriedenstellend, die inhärente Bildverarbeitungsfähigkeit der GPU kann nicht adäquat gezeigt werden, und es ist unmöglich, eine Kollisonsberechnung von zahlreichen starren Körpern und anderen Realzeit starrer-Körper-Simulationen, Fluidsimulationen und ähnliches durchzuführen. Es besteht daher ein Bedarf, ein Verfahren zu entwickeln, um eine GPU oder ein anderer Streamprozessor zur Ausführung des Aufbaus einer Datenstruktur, die einer nächste-Teilchen-Suche zu verwenden, und die maximale Bildverarbeitungsleistungsfähigkeit der GPU zu demonstrieren.
  • KURZBESCHREIBUNG DER ERFINDUNG
  • Angesichts des oben erwähnten Problems liegt der vorliegenden Erfindung die Aufgabe zugrunde, ein Verfahren zum Aufbau einer Datenstruktur bereitzustellen, die bei einer nächst-Teilchen-Suche verwendet wird, wodurch der Aufbau der Datenstruktur, die in der nächste-Teilchen-Suche einer teilchenbasierten Simulation verwendet wird, von einer GPU oder einem anderen Streamprozessor abgeschlossen werden kann, die GPU oder ähnliches in wirksamer Weise verwendet werden kann, die maximale (Bild) Verarbeitungsleistungsfähigkeit der GPU demonstriert werden kann, eine Hochgeschwindigkeitsberechnung ermöglicht werden kann, und eine Rechenverarbeitung/Anzeigeverarbeitung durchgeführt werden kann, z. B. für eine Realzeit starrer-Körper-Simulation, Fluidkörpersimulation, oder ähnliches; und ein Programm für das Datenstrukturaufbauverfahren, und ein Speichermedium zum Speichern des Programms bereitzustellen.
  • Um die oben erwähnten Ziele zu erreichen, wird ein Verfahren zum Aufbau einer Datenstruktur, die in eine nächste-Teilchen-Suche verwendet wird, das Programm dazu, und das Speichermedium zum Speichern des Programms gemäß der vorliegenden Erfindung wie unten beschrieben aufgebaut.
  • Das Verfahren zum Aufbau einer Datenstruktur wird von einer Methode verwendet, die von einem graphischen Rechenprozessor wie etwa einer GPU oder ähnlichem ausgeführt wird, zur Berechnung einer Simulation eines physikalischen Objekts durch Umwandlung dreidimensionaler digitaler Bilddaten, welche von einem in einem Videospeicher erzeugten Bilddaten aufgebaut werden, in zweidimensionale digitale Bilddaten, wobei das physikalische Objekt als zahlreiche Teilchen gegeben ist, und es wird eine Methode zur Bestimmung eines Existenzzustands des physikalischen Objekts auf der Grundlage einer Speicher-Positions-Beziehung zwischen den zahlreichen Teilchen in einer dreidimensionalen Bilddatenstruktur in dem Videospeicher verwendet. Eine in der dreidimensionalen Bilddatenstruktur enthaltene Bucket-Textur ist aus einem Bucket zusammengesetzt, in dem ein im Einklang mit einem Raum, in dem das physikalische Objekt auftritt, geschaffener Speicherraum aufgeteilt wird, und eine den zahlreichen Teilchen zugeordnete Teilchennummer wird in jeweiligen von zahlreichen Buckets gespeichert; und ein Schreib-Schritt ist vorgesehen, bei dem die Teilchenkoordinate und die Teilchennummer des in dem Bucket gespeicherten Teilchens gelesen werden und unter Verwendung eines Vertexshaders von dem graphischen Rechenprozessor in einen zweidimensionalen Bildraum geschrieben werden. In dem Schreib-Schritt werden die Teilchennummer und die Teilchenkoordinate von jedem der Mehrzahl der Teilchen bei einem Rendering für eine Mehrzahl von Verarbeitungszyklen in einem einzelnen Zeitschritt einer Simulation eins nach dem anderen geschrieben, wenn eine Mehrzahl der Teilchen in dem Bucket vorhanden ist.
  • Wenn bei dem zuvor erwähnten Verfahren zum Aufbau einer Datenstruktur eine GPU als der graphische Rechenprozessor verwendet wird, wird die Auswahl eines beschriebenen Pixels und einer Teilchennummer des bei jedem Rendering für die Mehrzahl von Verarbeitungszyklen geschriebenen Teilchens, und die Auswahl eines Kanals in dem beschriebenen Pixel unter Verwendung von Funktionen eines Schablonentests, einer Farbmaske, und eines Tiefentests durchgeführt, die von der GPU vorbereitet sind.
  • Wenn ein Streamprozessor aufweisend eine GPU oder ähnliches verwendet wird, wird die Auswahl von der Teilchennummer und Speicherstelle der bei jedem Schritt für die Mehrzahl von Verarbeitungszyklen geschriebenen Teilchen, und die Auswahl der Speicherstelle im Speicher, die einem Voxel zugewiesen ist, ebenfalls unter Verwendung der Funktionen von einer Mehrzahl von Zählern durchgeführt werden, die von dem Streamprozessor vorbereitet sind.
  • Speziell ist das Verfahren zum Aufbau einer Datenstruktur, die in einer nächste-Teilchen-Suche verwendet wird, welche bei einer Methode verwendet wird, die von einem Streamprozessor ausgeführt wird, zur Berechnung einer Simulation eines physikalischen Objekts durch Umwandlung dreidimensionaler digitaler Bilddaten, welche von in einem Speicher erzeugten Datenarray aufgebaut werden, in zweidimensionale digitale Bilddaten. Ein Verfahren wird verwendet, bei dem das physikalische Objekt durch zahlreiche Teilchen angegeben ist, und der Existenzzustand des physikalischen Objekts auf Grundlage der Speicher-Positions-Beziehung zwischen den zahlreichen Teilchen in den dreidimensionalen Bilddaten in dem Speicher bestimmt wird. Ein in der dreidimensionalen Bilddatenstruktur enthaltendes Bucket-Array ist aus Buckets zur Zuweisung von Speicherräumen zusammengesetzt, die erzeugt werden, um Räumen zu entsprechen, in dem das physikalische Objekt auftritt, und die den zahlreichen Teilchen zugeordneten Teilchennummern werden jeweils für zahlreiche Buckets gespeichert. Das Verfahren weist einen Schreib-Schritt auf, bei dem die Teilchennummer und Teilchenkoordinaten eines in einem Bucket gespeicherten Teilchens von dem Streamprozessor gelesen werden und in ein Array in dem Memory geschrieben werden, indem eine Zersplitterungsoperation des Streamprozessors verwendet wird, und wenn eine Mehrzahl der Teilchen in einem Bucket in dem Schreib-Schritt vorhanden ist, werden die Teilchennummern und Teilchenkoordinaten der Mehrzahl von Teilchen in einen Kernel für eine Mehrzahl von Verarbeitungszyklen geteilt und eins nach dem anderen in einem einzelnen Zeitschritt der Simulation gelesen.
  • Bei den zuvor erwähnten Verfahren zum Aufbau einer Datenstruktur wird eine Teilchennummer von Teilchennummern, die in aufsteigender oder absteigender Ordnung vorliegen, aufeinanderfolgend getrennt für jeden von vier Kanälen oder ähnlichem gespeichert, die aus RGBA eines Pixels oder ähnlichem zusammengesetzt sind, in dem die Teilchennummer geschrieben wird, wenn vier der Teilchen in dem Bucket vorhanden sind.
  • Das zuvor erwähnte Verfahren zum Aufbau einer Datenstruktur umfaßt genauer gesagt die unten beschriebenen Schritte, wenn eine GPU als graphischer Rechenprozessor verwendet wird.
  • Das Verfahren umfaßt Schreiben einer Teilchennummer ib0 in den R Kanal und Durchführen von Rendering für eine erste Routine durch Initialisierung eines Tiefenbuffers bei einem Maximalwert, und akzeptieren von Elementen mit einem kleinen Wert unter Verwendung eines Tiefentests beim Schreiben in den Pixel in einem ersten Durchgang; Schreiben einer Teilchennummer ib1 in den G Kanal und Durchführen von Rendering für eine zweite Routine durch Verwendung einer Farbmaske, um ein Schreiben in den R Kanal zu verhindern, und Verwenden eines Schablonentests beim Schreiben in den Pixel in einem zweiten Durchgang; Schreiben einer Partikelnummer ib2 in den B Kanal und Durchführung von Rendering für eine dritte Routine durch Verwenden einer Farbmaske, um ein Schreiben in die R und B Kanäle zu verhindern, und Verwenden eines Schablonentests beim Schreiben in den Pixel in einem dritten Durchgang; und Schreiben einer Teilchennummer ib3 in dem A-Kanal und Durchführen von Rendering für eine vierte Routine durch Verwenden einer Farbmaske, um Schreiben in die R, G und B Kanäle zu verhindern, und Verwenden eines Schablonentests beim Schreiben in den Pixel in einem vierten Durchgang; wobei die Teilchennummern der vier Teilchen ib0, ib1, ib2, und ib3 sind (wobei ib0 < ib1 < ib2 < ib3 in dem Fall der aufsteigenden Ordnung; und ib0 > ib1 > ib2 > ib3 in dem Fall der absteigenden Ordnung).
  • Im allgemeinen, wenn ein Streamprozessor verwendet wird, wird ein einem Voxel zugeteilter Speicher anstelle des zuvor erwähnten Pixels (beschriebenen Pixels) verwendet, eine Speicherstelle in dem Speicher, die für einen Voxel zugeteilt ist, wird anstelle des zuvor erwähnten Kanals verwendet, und entsprechende Zählfunktionen werden anstelle der Funktionen des zuvor erwähnten Tiefentests, der Farbmaske und des Schablonentests, die von der GPU vorbereitet sind, verwendet.
  • Speziell umfaßt das Verfahren Schreiben einer Teilchennummer ib0 in die erste Speicherstelle und Durchführen eines Kernels für eine erste Routine durch Initialisierung des Zählers auf Null, und Akzeptieren von anfänglichem Schreiben in die erste Speicherstelle beim Beschreiben des für den Voxel zugeordneten Speichers in einem ersten Durchgang; Schreiben einer Teilchennummer ib1 in die zweite Speicherstelle und Ausführen eines Kernels für eine zweite Routine unter Verwendung des Zählers, um ein Schreiben in die erste Speicherstelle zu verhindern, und Schreiben eines nächsten Wertes in die zweite Speicherstelle beim Beschreiben des für den Voxel zugeordneten Speichers in einem zweiten Durchgang; Schreiben einer Teilchennummer ib2 in die dritte Speicherstelle und Ausführen eines Kernels für eine dritte Routine unter Verwendung des Zählers, um ein Schreiben in die erste und zweite Speicherstelle zu verhindern, und Schreiben eines nächsten Wertes in die dritte Speicherstelle beim Beschreiben des dem Voxel zugeteilten Speichers in einem dritten Durchgang; und Schreiben einer Partikelnummer ib3 in die vierte Speicherstelle und Ausführung eines Kernels für eine vierte Routine unter Verwendung des Zählers zum Verhindern des Beschreibens der ersten, zweiten und dritten Speicherstellen, und Schreiben eines nächsten Werts in die vierte Speicherstelle beim Beschreiben des dem Voxel zugeteilten Speichers bei einem vierten Durchgang; wobei die Teilchennummern der vier Teilchen ib0, ib1, ib2, und ib3 sind (wobei ib0 < ib1 < ib2 < ib3 in dem Fall der aufsteigenden Ordnung; und ib0 > ib1 > ib2 > ib3 in dem Fall der absteigenden Ordnung).
  • Bei den zuvor erwähnten Verfahren zum Aufbau einer Datenstruktur ist das physikalische Objekt aus zahlreichen starren Körpern zusammengesetzt, und eine Berechnung einer auf einer Kollisionsberechnung der zahlreichen starren Körper basierenden Simulation wird ausgeführt.
  • Bei dem zuvor erwähnten Verfahren zum Aufbau einer Datenstruktur ist die zuvor erwähnte GPU als ein Beispiel eines Streamprozessors ein graphischer Rechenprozessor.
  • Das Programm zum Ausführen einer Datenstruktur, die bei der zuvor beschriebenen nächste-Teilchen-Suche gemäß der vorliegenden Erfindung verwendet wird, ist ein Programm zur Ausführung von Routinen und ähnlichem, die das oben beschriebene nächste-Teilchen-Suchverfahren bilden, durch einen Streamprozessor, der eine GPU oder ähnliches umfaßt.
  • Die folgenden Wirkungen werden durch die vorliegende Erfindung erhalten.
  • Bei einem Verfahren zur Simulation eines physikalischen Phänomens auf einem Computer durch Anwenden einer teilchenbasierten Simulation zur Approximation eines starren Körpers, eines Fluidkörpers, eines korpuskularen Körpers, oder ähnlichem und der Implementierung eines Verfahrens zum Aufbau einer Datenstruktur, die in einer nächste-Teilchen-Suche verwendet wird, wird eine Konfiguration herangezogen, bei der die Routinen zur Ausführung von Berechnungen zum Aufbau der Datenstruktur, die in der nächste-Teilchen-Suche verwendet werden, von einer GPU oder einem anderen Streamprozessor vollbracht werden, die GPU oder ähnliche in wirksamer Weise verwendet wird, die maximale Bildberechnungsverarbeitungsleistungsfähigkeit der GPU gezeigt werden kann, und eine Hochgeschwindigkeitsberechnung durchgeführt werden kann, wodurch eine z. B. Realzeit starrer-Körper-Simulation, Fluidkörpersimulation, oder ähnliches, durchgeführt werden kann.
  • Die vorliegende Erfindung kann ebenfalls als eine wichtige elementare Technologie verwendet werden, die für ein Spiel oder ähnliches optimal ist, bei dem fließendes Wasser und andere Naturobjekte durch Verwendung einer starrer-Körper-Simulation, einer Fluidkörpersimulation, oder ähnlichem in einer Bildanzeige als eine Simulation CG ausgedrückt werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Diese und weitere Gegenstände und Merkmale der vorliegenden Erfindung gehen klarer aus der folgenden Beschreibung der bevorzugten Ausführungsformen hervor, die mit Bezug auf die beiliegenden Zeichnungen gegeben werden, wobei:
  • 1 ein Systemstrukturdiagramm ist, die den Grundaufbau des Computersystems zur Implementierung des Verfahrens zum Aufbau einer Datenstruktur, die in einer nächst-Teilchen-Suche verwendet wird, gemäß der vorliegenden Erfindung zeigt;
  • 2 ist ein Blockdiagramm, das den Grundaufbau des Inneren der in dem Computersystem einbauten GPU zeigt;
  • 3 ist ein Diagramm, das ein Wirkungsbild (CG) zeigt, das auf einer starrer-Körper-Simulation bezüglich dem physikalischen Phänomen des Fallens/der Kollisionen von 10.922 Toren basiert;
  • 4 ist ein Diagramm, das ein Wirkungsbild (CG) zeigt, das auf einer starrer-Körper-Simulation bezüglich des physikalischen Phänomens des Fallens/der Kollisionen von 16.384 Schachfiguren zeigt;
  • 5 ist ein Flußdiagramm, das den Rechenalgorithmus der Beschleunigung einer starrer-Körper-Simulation unter Verwendung der GPU zeigt;
  • 6 ist ein Flußdiagramm, das spezifische Details der Prozeßroutinen der Bucketkonstruktion zeigt;
  • 7 ist ein Flußdiagramm, das ein modifiziertes Beispiel des Rechenalgorithmus der Beschleunigung einer starrer-Körper-Simulation unter Verwendung der GPU zeigt;
  • 8 ist ein Diagramm, das ein Wirkungsbild (CG) zeigt, das auf einer Fluidkörpersimulation bezüglich des physikalischen Phänomens basiert ist, wenn eine Mehrzahl von sphärischen Fluidkörpern in einen Fluidkörper fällt; und
  • 9 ist ein Diagramm, das ein Wirkungsbild (CG) zeigt, das auf einer korpuskularen-Körpersimulation basiert, wenn ein korpuskularer Körper, der in einem trichterförmigen Gefäß enthalten ist, nach unten strömt, von einer Öffnung in dem Bodenende des Gefäßes nach außen fällt, und in einem unterhalb der Öffnung angeordneten Gefäß aufgenommen wird.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Bevorzugte Ausführungsformen der Erfindung werden hiernach basierend auf den beiliegenden Zeichnungen beschrieben. 1 zeigt den Grundaufbau des Computersystems zur Implementierung des Verfahrens zum Aufbau einer Datenstruktur, die in einer nächste-Teilchen-Suche gemäß der vorliegenden Erfindung verwendet wird.
  • Bei der Beschreibung der vorliegenden Ausführungsform wird ein Beispiel, bei dem z. B. eine GPU als der graphische Rechenprozessor verwendet wird, als die Hauptausführungsform beschrieben.
  • Das Computersystem 10 ist aufgebaut, indem z. B. ein PC (Personal Computer) verwendet wird, und ist mit einer CPU 11 und einer GPU12 als Rechenprozessoren ausgestattet. Das Computersystem 10 ist ebenfalls mit einem Hauptspeicher 13A und einem Videospeicher (VRAM) 13B als Speichervorrichtungen ausgestattet, und ist mit wenigstens einer Eingabevorrichtung 14 und einer Anzeigevorrichtung 15 als Peripheriegeräte ausgestattet. Die CPU 11, die GPU 12, der Hauptspeicher 13A, die Eingabevorrichtung 14, und die Anzeigevorrichtung 15 sind miteinander über einen Bus 16 verbunden. Die Eingabevorrichtung 14 ist mit dem Bus 16 über ein Eingabeinterface 17 verbunden, und die Anzeigevorrichtung 15 ist mit dem Bus 16 über ein Ausgabeinterface 18 verbunden. Der Videospeicher 13B ist direkt mit der GPU 12 verbunden. Daten werden mit dem Videospeicher 13B über die GPU 12 ausgetauscht.
  • Die CPU (zentrale Rechenprozeßvorrichtung) 11 ist ein gewöhnlicher, z. B. in einem PC oder ähnlichem eingebauter Rechenprozessor. Die GPU (graphische Prozeßeinheit) 12 ist ein „graphischer Rechenprozessor" und führt Bildberechnungsprozesse aus. Die GPU 12 wird als parallele Rechenvorrichtung verwendet, die aus einer Mehrzahl von intern untergebrachten Prozessoren besteht. Eine Nvidia „GeForce 7900GTX" wird z. B. als die GPU 12 verwendet. Das als die GPU 12 verwendete Produkt ist nicht als solches eingeschränkt, und ein Prozessor oder weiterer Streamprozessor zur Bildverarbeitung, der eine ähnliche Struktur/ähnliche Funktionen aufweist, kann ebenfalls verwendet werden. Die GPU 12 führt ein nächstes-Teilchen-Suchprogramm 13A-1 aus, das in dem Hauptspeicher 13A gespeichert ist und implementiert eine nächste-Teilchen-Suchberechnung in einer Teilchen-basierten Simulation. Das nächste-Teilchen-Suchprogramm 13A-1 führt den Aufbau einer Datenstruktur aus, die bei einer nächste-Teilchen-Suche verwendet wird. Die GPU 12 führt ebenfalls ein übliches Bildverarbeitungsprogramm 13A-2 aus, das in dem Hauptspeicher 13A gespeichert ist, implementiert eine Bildverarbeitung unter Verwendung von in Pixeln gespeicherten Bilddaten, welche durch Berechnung der nächste-Teilchen-Suche erhalten werden, und verwendet die erzeugten Bilddaten, um auf dem Schirm der Anzeigevorrichtung 15 zu zeichnen (zur Anzeige wiederzugeben). Ein CG Bild wird an dem Schirm der Anzeigevorrichtung 15 auf Grundlage der Teilchen-basierten Simulationsberechnungen angezeigt.
  • Bei der Beschreibung der hiernach gegebenen vorliegenden Ausführungsform wird eine Berechnung einer Realzeitsimulation eines starren Körpers beschrieben, die auf der Ausführung von Kollisionsberechnungen von zahlreichen starren Körpern auf der Grundlage der Teilchen-basierte Simulation beruht. Bei der Berechnung dieser Simulation wird das Verfahren zum Aufbau der Datenstruktur zur Verwendung bei der nächste-Teilchen-Suche nur von der GPU 12 ausgeführt.
  • Der Grundaufbau der relevanten Teile des Inneren der zuvor erwähnten GPU 12 ist schematisch in 2 gezeigt. Die GPU 12 ist mit einer Mehrzahl von Prozessoren 21 ausgestattet, die parallel angeordnet sind, und das Rendering zur Anzeige (Zeichnen) wird basierend auf der parallelen Rechenverarbeitung von den Prozessoren ausgeführt. Gemäß dem Verfahren zum Aufbau (Bucket-Aufbau) der in einer nächste-Teilchensuche gemäß der vorliegenden Ausführungsform verwendeten Datenstruktur, insbesondere, wenn z. B. vier Teilchen in einem einzelnen Bucket vorhanden sind, werden die Teilchennummern und Teilchenkoordinaten der vier Teilchen in jeden der Kanäle RGBA eines einzelnen Pickels in vier wiederholten Renderings zur Verarbeitung geschrieben. Die Bildberechnungsverarbeitung wird durch den Bucket-Aufbauprozeß in der GPU 12 beschleunigt. Genauer gesagt, wenn die GPU 12 eine „GeForce 7900GTX" ist, weist die GPU 12 acht Vertexshader (VS) 22 auf, die in einer vorderen Phase parallel angeordnet sind, und 24 Fragment-Shader (FS) 23, die in einer folgenden Phase parallel angeordnet sind. Das von den Vertexprozessoren (21) ausgeführte Programm ist ein Vertexshader 22, und das von den Fragment-Prozessoren (21) durchgeführte Programm ist ein Fragment-Shader 23.
  • Bei der obigen Beschreibung sind die Vertexprozessoren Prozessoren, die parallel angeordnet sind, und sind Prozessoren, die darauf spezialisiert sind, simultan Koordinatenumwandlung (Umwandlung von eingegebenen Vertexkoordinaten in Koordinaten des Raums des wiederzugebenden Bildes) von zahlreichen Vertices zu verarbeiten. Die GPU 12 kann im Vergleich mit einer CPU Vertexkoordinatenumwandlung mit einer hohen Geschwindigkeit berechnen. Der Betrieb eines Vertexprozessors wird durch einen Vertexshader spezifiziert.
  • Die GPU 12 ist weiter mit einer Tiefentest-Funktionaleinheit 24, einer Farbmasken-Funktionaleinheit 25 und einer Marixen/Schablonentest-Funktionaleinheit 26 ausgestattet. Der Block 27 stellt eine Shader-Befehlsverteilungseinheit dar.
  • Das nächste-Teilchen-Suchprogramm 13A-1 zum Ausführen des Verfahrens zum Aufbau einer Datenstruktur, die in einer nächste-Teilchen-Suche gemäß der vorliegenden Ausführungsform verwendet wird, wird folglich nur von der GPU 12 unter Verwendung der zuvor erwähnten inneren Struktur der GPU 12 ausgeführt.
  • Eine Ausführungsform der starrer-Körper-Simulation der Kollisionen von zahlreichen starren Körpern wird als nächstes beschrieben. Die Details des Verfahrens zum Aufbau einer Datenstruktur, die in einer nächste-Teilchen-Suche verwendet wird, die basierend auf der Ausführung des nächste-Teilchen-Suchprogramms 13A-1 implementiert wird, wird durch diese Beschreibung der starrer-Körper-Simulation ersichtlich.
  • Beispiele für die zahlreichen starren Körper umfassen zahlreiche Torus-Teile oder zahlreiche Schachfiguren. Beispiele der als Ergebnisse der starrer-Körper-Simulation der vorliegenden Ausführungsform erhaltenen CG sind in den 3 und 4 gezeigt. 3 zeigt ein Effektbild (CG), das auf Kollisionsberechnung einer starrer-Körper-Simulation basiert, die sich auf das physikalische Phänomen des Fallens/der Kollisionen von 10922 Toren bezieht; und 4 zeigt ein Wirkungsbild (CG), das auf der Kollisionsberechnung einer starrer-Körper-Simulation basiert, die sich auf das pysikalische Phänomen des Fallens/der Kollisionen von 16384 Schachfiguren bezieht.
  • Bei den Kollisionsberechnungen der zahlreichen starren Körper wie oben beschrieben werden die Formen der zahlreichen starren Körper alle in genäherter Weise als Aggregationen von gleich großen Sphären (Teilchen) ausgedrückt und behandelt, indem eine Teilchen-basierte Methode (Teilchen-basierte Simulation) angewandt wird. Die Formen der auf den Sphären basierenden starren Körper werden basierend auf einem Polygonmodell der starren Körper approximiert, und werden unter Verwendung einer Voxelisierungsmethode unter Verwendung einer GPU („Fast solid voxelization using graphics hardware," Transactions of JSCES, Seite 20060023, 2006) erzeugt, die z. B. von den Erfindern der vorliegenden Erfindung und anderen vorgeschlagen wurde. Die Größe der verwendeten Sphären (räumliche Auflösung) wird in geeigneter Weise unter Berücksichtigung der Rechengenauigkeit und der Rechengeschwindigkeit bestimmt.
  • Bei der Kollisionsberechnung von zahlreichen starren Körpern, bei der die starren Körper approximativ als eine Aggregation von Sphären ausgedrückt werden, werden (1) die Berechnung eines jeden starren Körpers, (2) die Erfassungsverarbeitung (Berechnung des Abstands zwischen Sphären, die die starren Körper bilden) von Kollisionen zwischen starren Körpern, und (3) Antwort-Verarbeitung (Berechnung von Kraft und Moment, die auf die Sphäre wirken) basierend auf der Kollision ausgeführt. Die Konzepte dieser Berechnungen werden unten beschrieben.
  • (1) Berechnung des starren Körpers:
  • Die physikalischen Größen, die zur Berechnung eines starren Körpers erforderlich sind, sind die Schwerpunktskoordinaten, die translatorische Geschwindigkeit, ein Quater nion, das einen Betrag der Drehung anzeigt, die Winkelgeschwindigkeit, und der Trägheitstensor.
  • (Formel 1)
    • x:
      Koordinaten des Schwerpunkts
      v:
      translatorische Geschwindigkeit
      q:
      Quaternion, das den Betrag der Drehung anzeigt
      w:
      Winkelgeschwindigkeit
      I:
      Trägheitstensor
  • Die Berechnung der Bewegung dieser starren Körper wird aufgeteilt in die Berechnung der Translationsbewegung und die Berechnung der Rotationsbewegung. Die Details der Berechnung der Translationsbewegung sind in (Formel 2) gezeigt, und die Details der Berechnung der Rotationsbewegung sind in (Formel 3) gezeigt.
  • (Formel 2)
  • Die auf einen starren Körper wirkende Kraft F ist unterteilt in die Kraft Fc, die aufgrund der Kollision auftritt, und die weitere äußere Kraft Fe, wie in GI. (1) gezeigt. F = Fc + Fe (1)
  • Die zeitliche Ableitung des Impulses P der Translationsbewegung eines starren Körpers wird, wie in GI. 2 gezeigt, unter Verwendung der auf den starren Körper wirkenden Kraft F berechnet. dP/dt = F (2)
  • Die Geschwindigkeit v des Schwerpunkts wird aus P = Mv berechnet (worin M die Masse des starren Körpers ist), indem der Impuls P der Translationsbewegung verwendet wird. Wenn die Geschwindigkeit v des Schwerpunkts verwendet wird, ist die zeitliche Ableitung der Schwerpunktsposition x des starren Körpers durch GI. (3) angezeigt. dx/dt = v (3)
  • (Formel 3)
  • Die auf den starren Körper wirkende Kraft F verursacht eine Rotationsbewegung des starren Körpers, und ändert den Drehimpuls L. Die zeitliche Ableitung des Drehimpulses L wird durch GI. (4) angezeigt. r ist der Vektor von dem Schwerpunkt des starren Körpers zum Angriffspunkt der Kraft. dL/dt = r × F (4)
  • Die Winkelgeschwindigkeit w wird durch GI. (5) unter Verwendung des Drehimpulses L berechnet. w = I(t)–1L (5)
  • In GI. (5), ist I(t)–1 ist die inverse Matrix des Trägheitstensors zur Zeit t. Die inverse Matrix I(t)–1 wird durch GI. (6) unter Verwendung der inversen Matrix I(0)–1 des Trägheitstensors I(0) des starren Körpers im Anfangszustand berechnet. I(t)–1 = R(t)I(0)–1R(t)T (6)
  • In GI. (6), R(t) und R(t)T sind die Rotationsmatrix und die transponierte Matrix zur Zeit t. Eine Aktualisierung des Quaternions q erfolgt unter Verwendung der von GI. (5) berechneten Winkelgeschwindigkeit w. Die Änderung dq des Quaternions wird aus der Winkelgeschwindigkeit w durch GI. (7) berechnet. dq = [cos(θ/2), a sin (θ/2)] (7)
  • Die Drehachse a und der Drehwinkel θ darin werden durch die Gleichungen (8) und (9) berechnet. a = w/|w| (8) θ = |wdt| (9)
  • Das Quaternion q(t + dt) nach dt wird durch GI. (10) unter Verwendung von q(t) zur Zeit t und dq von GI. (7) berechnet. q(t + dt) = dq × q(t) (10)
  • (2) Kollisionserfassungsverarbeitung:
  • Der Abstand zwischen den Sphären, die die starren Körper bilden, wird berechnet, um eine Kollision eines starren Körpers zu erfassen. Zwei Sphären werden als kollidierend betrachtet, wenn der Abstand zwischen den Sphären geringer als der Durchmesser der Sphären wird. Bei der Erfassung von Kollisionen zwischen zahlreichen starren Körpern muß die zuvor erwähnte Abstandsberechnung bezüglich aller Sphären durchgeführt werden, die alle der starren Körper bilden. Der Rechenaufwand ist proportional zum Quadrat der Anzahl von Sphären, und mit dem Ansteigen der Anzahl der starren Körper steigt die Anzahl der Sphären und ebenfalls der Rechenaufwand. Daher wird zur Verringerung des Rechenaufwands bei dem Aufbau der Kollisionserfassungsverarbeitung gemäß der vorliegenden Ausführungsform ein imaginärer Raum (3-dimensionaler Datenspeicherraum im Speicher), in welchem die zahlreichen starren Körper existieren, in ein Raster (dreidimensionales Raumgitter) unterteilt das als „Buckets (oder Grids)" bezeichnet wird, und zahlreiche Sphären, die die zahlreichen starren Körper anzeigen, werden jeweils in den Buckets gespeichert. Ein einzelnes Bucket bildet einen einzelnen Würfel, und in einem Fall, bei dem eine dreidimensionale Datenstruktur verwendet wird, wobei die Länge von einer Seite eines Buckets die gleiche Länge wie der Durchmesser einer Sphäre ist, sind die Sphären, die potentiell mit einer bestimmten Sphäre i kollidieren können, auf die Sphären eingeschränkt, die in den 33 Buckets benachbart dem Bucket gespeichert sind, in welchem die Sphäre i gespeichert ist. Eine Kollisionserfassung wird basierend auf dem Aufbau der Buckets wie oben beschrieben durchgeführt, wodurch der Rechenaufwand verringert wird, und die Berechnungskosten merklich verringert werden können. Die Details des Bucketaufbaus gemäß der vorliegenden Ausführungsform werden hiernach beschrieben.
  • (3) Auf der Kollision basierende Antwort
  • Bei einer Kollisionsantwort, wird die auf die Sphäre aufgebrachte Kraft berechnet, die einen einzelnen starren Körper bildet. Bei der Berechnung der Kollisionskraft werden eine Feder und eine in einer finite Elemente Methode verwendete Dämpfung in Beziehung zu zwei miteinander in Kontakt stehenden Sphären verwendet. Die Details der Kollisionskraftberechnung sind in (Formel 4) gezeigt.
  • (Formel 4)
  • Eine abstoßende Kraft proportional zur Größe der Eindrückung (Indentation), und eine Dämpfungskraft proportional zu der Relativgeschwindigkeit wirken auf die kollidierenden Sphären, wobei κ die Federkonstante und η der Dämpfungskoeffizient ist. Wenn zwei Sphären i und j vorhanden sind, und deren Durchmesser d beträgt, tritt eine Kollision auf, wenn der Abstand |rij| zwischen den zwei Sphären kleiner als d ist, und die Kraft fs aufgrund der Elastizität gemäß GI. (11), und die Dämpfungskraft fd aufgrund der Dämpfung gemäß GI. (12) wirken auf die Sphären. fs = – κ(d – |rij|)rij/|rij| (11) fd = –η(vj – vi) (12)
  • Gemäß den Gleichungen (11) und (12), ist rij = ri – ri, und ri und rj sind die Ortsvektoren der Sphären i, j.
  • Die Reibungskraft ft in der Scherrichtung wird durch GI. (13) als eine Kraft proportional zu der Geschwindigkeit vt in der Scherrichtung berechnet. ft = ktvt (13)
  • Die auf die Sphäre i wirkende Kraft fi wird durch GI. (14) berechnet. fi = fs + fd + ft (14)
  • Die auf den starren Körper aufgrund der Kollision wirkende Kraft Fc und Drehmoment Tc werden durch Gleichungen (15) und (16) berechnet, in dem jeweils die auf die Sphäre i wirkende Kraft fi verwendet wird.
    Figure 00160001
  • In GI. (16) ist r'i der relative Ortsvektor einer Sphäre bezüglich des Schwerpunkts eines starren Körpers.
  • Die Beschleunigung eines Verfahrens zum Aufbau einer Datenstruktur oder einer Verwendung in der nächste-Teilchen-Suche auf der Basis der alleinigen Verwendung der GPU 12 wird als nächstes beschrieben. Gemäß der vorliegenden Ausführungsform werden die zuvor erwähnten Berechnungen bezüglich der Kollisionen der zahlreichen starren Körper alle von der GPU 12 durchgeführt. Die Geschwindigkeit der oben erwähnten Berechnungen kann dadurch erhöht werden. Der auf dem nächste-Teilchen-Suchprogramm 13A-1 in der GPU basierende Rechenalgorithmus wird beschrieben.
  • Die für den zuvor erwähnten Rechenalgorithmus vorbereitete Datenstruktur wird zuerst beschrieben.
  • Wenn die oben erwähnen Berechnungen von der GPU 12 durchgeführt werden, werden die zuvor erwähnten physikalischen Größen gespeichert und als eine Mehrzahl von in dem Videospeicher 136 enthaltenen Texturen 13B-1 (in 1 gezeigt) gehalten.
  • Speziell werden zwei in dem Videospeicher 136 gespeicherte Texturen 13B-1 für jedes von Schwerpunktskoordinate, Quaternion, Impuls für Translationsbewegung und Drehimpuls für jeden starren Körper verwendet, um die starrer-Körper-Berechnung durchzuführen. Eine in dem Videospeicher 136 gespeicherte einzelne Textur 13B-1 wird für jede der Schwerpunktskoordinate, der Geschwindigkeit, das Bucket, der auf jede Sphäre wirkende Kraft, und der auf jede Sphäre für jede Sphäre wirkende Moment verwendet, um die Kollisionsberechnung durchzuführen.
  • In dem Fall der vorliegenden Ausführungsform wird ein dreidimensionaler Raum angenommen, und ein drei-dimensionales Raumgitter, d. h., Bucket, in welches der dreidimensionale Raum wie oben beschrieben unterteilt ist, wird in der Kollisionsberechnung der zahlreichen starren Körper bereitgestellt, die auf der Teilchen-basierten Simulation basiert. In eine dreidimensionale Textur kann jedoch nicht von einer GPU 12 geschrieben werden, die gegenwärtig verwendet werden kann. Daher wird bei der vorliegenden Ausführungsform ein dreidimensionales Bucket bestehend aus (L × L × L) Gridnummern ausgedrückt, indem eine einzelne zweidimensionale Textur verwendet wird, gebildet durch Schichten (D × D) der notwendigen Anzahl von zweidimensionalen Grids. In diesem Fall, wenn die Indices an dem dreidimensionalen Bucket (i, j, k) sind, und die Indices der zweidimensionalen Textur (s, t) sind, bestehen die durch die Gleichungen (17), und (18) gebildeten Beziehungen zwischen den zwei Typen von Indices. s = i + L(k – D[k/D]) (17) t = j + Lf[k/D] (18)
  • In den Gleichungen sind i, j, k und s, t Werte, die jeweils in den Bereichen [0, L – 1] und [0, D × L – 1] enthalten sind.
  • Der Berechnungsalogrithmus der Beschleunigung unter Verwendung der GPU 12 wird als nächstes mit Bezug auf das Flußdiagramm in 5 beschrieben.
  • Wenn die Zeiteinheit zur Durchführung eines Rechenzyklus (Simulation) zum Zeichnen auf dem Anzeigeschirm der Anzeigevorrichtung 15 ein einzelner Zeitschritt ist, wird die Berechnung in dem einzelnen Zeitschritt in den acht unten aufgeführten Stufen durchgeführt.
    • Stufe 1: Berechnung der physikalischen Größen der Sphären (Schritt S11)
    • Stufe 2: Bucketkonstruktion (Schritt S12)
    • Stufe 3: Kollisionserfassung (Schritt S13)
    • Stufe 4: Kollisionsantwort (Berechnung von auf die Sphären wirkenden Kraft und Drehmoment (Schritt S14)
    • Stufe 5: Berechnung des Translationsimpulses der starren Körper (Schritt S15)
    • Stufe 6: Berechnung des Drehimpulses der starren Körper (Schritt S16)
    • Stufe 7: Berechnung der Schwerpunktskoordinaten der starren Körper (Schritt S17)
    • Stufe 8: Berechnung des Quaternions der starren Körper (Schritt S18)
  • Die Renderingverarbeitung zur Anzeige wird durchgeführt, indem die Schwerpunktskoordinate und das Quaternion des starren Körpers, die durch die oben erwähnten Berechnungen (Simulation) erhalten wurden, verwendet werden, und das Ergebnisbild der Simulation wird gezeichnet (Schritt S19). In einem nachfolgenden Feststellungsschritt S20 wird eine Feststellung getroffen, ob die Simulation fortgeführt wird, und wenn das Ergebnis JA ist, kehrt der Prozeß zu Schritt S11 zurück, und die Schritte S11 bis S19 werden wiederholt. Wenn das Ergebnis NEIN ist, wird die Simulation beendet. Wie oben beschrieben, werden die acht Stufen der Rechenschritte S11 bis S18 in der Zeit eines einzelnen Zeitschritts für die Renderingverarbeitung (Schritt S19) für einen Anzeigezyklus ausgeführt.
  • Bei der obigen Beschreibung wird die Prozeßberechnung der nächste-Teilchen-Suche bei der Berechnung der „Bucketkonstruktion" durchgeführt, die in Schritt S12 ausgeführt wird. Diese Berechnung wird folglich nur von der GPU 12 ausgeführt, wodurch die Berechnung beschleunigt werden kann. Eine genaue Beschreibung der Bucketkonstruktion wird unten gegeben.
  • Die Details der Berechnungen in den Schritten S11 bis S19 werden unten beschrieben.
  • Schritt S11: Berechnung der physikalischen Größen einer Sphäre.
  • Die Schwerpunktskoordinaten und Geschwindigkeiten der die starren Körper bildenden Sphären werden berechnet, um eine Kollisionsberechnung der zahlreichen starren Körper durch die Teilchenmethode durchzuführen. Die Details der Berechnung bezüglich der Geschwindigkeit und der Schwerpunktskoordinate einer Sphäre sind in (Formel 5) gezeigt.
  • (Formel 5)
  • Die Schwerpunktskoordinate, das Quaternion, die Geschwindigkeit, und die Winkelgeschwindigkeit des starren Körpers j sind jeweils Xj, Qj, Vj, und Wj.
  • Wenn ri der relative Ortsvektor der Mitte der Sphäre i bezüglich dem Schwerpunkt des starren Körpers in einem nicht-rotierten Zustand ist, wird der relative Ort und Vektor r'i in einem Zustand der Rotation durch das Quaternion Qj durch GI. (19) berechnet. r'i = QjriQjT (19)
  • Wenn xi, vi die Schwerpunktskoordinate und die Geschwindigkeit der Sphäre i ist, die Konstituent des starren Körpers j ist, werden xi und vi durch die Gleichungen (20) und (21) berechnet. xi = Xj + r'i (20) vi = Vj + Wj×r'i (21)
  • Schritt S12: Bucketkonstruktion
  • Der Ausdruck „Bucketkonstruktion" bezeichnet die Verarbeitung zum Speichern aller Nummern der zahlreichen Sphären (Teilchen), die zum Ausdrücken eines jeden der zahlreichen starren Körper in dreidimensionalen Raumgrids vorbereitet sind, d. h., Buckets, vorbereitet als Elemente, in welche Raum als eine Datenstruktur innerhalb des Videospeichers 13B aufgeteilt ist, wie zuvor beschrieben. Speziell ist die Bucketkonstruktion die Verarbeitung zum Speichern einer Nummer, die jeder der zahlreichen Sphären zugeordnet ist, in jede der zahlreichen Buckets und ist die Verarbeitung zur Verteilung von Daten, die sich auf jede der zahlreichen Sphären beziehen.
  • Eine Schreibfunktion (Rendering für die Verarbeitung) durch einen Vertex (Vertex) Shader wird bei der zuvor erwähnten Verarbeitung bezüglich der Bucketkonstruktion verwendet. Die Schreibfunktion ist eine Funktion, wodurch ein Vertex in eine Koordinate geschrieben werden kann, die als eine Eingabe bezeichnet ist. Mit anderen Worten hat ein Vertexshader eine Funktion, die als Vertex-Textur fetch (VTF) bezeichnet ist, zum Zugriff auf eine Textur des Videospeichers 13B, und durch die Verwendung dieser Funktion des Vertexshaders kann auf die Koordinate einer Sphäre Bezug genommen werden. Die oben beschriebene Datenverteilungsverarbeitung kann in der GPU 12 durchgeführt werden, indem ein Vertex an der Koordinate des Buckets, das der Koordinate der Sphäre entspricht, plaziert wird.
  • Wenn die Anzahl der Sphären n (i0, i1, ..., in-1) beträgt, werden die gleiche Zahl n (p0, p1, ..., pn-1) von Vertices wie die Anzahl von Sphären vorbereitet. Eine einzelne Sphäre ist mit jedem Vertex korreliert. Die Nummern der Sphären, die den Vertices p0, p1, ..., pn-1, entsprechen, sind i0, i1, ..., in-1. Die Sphärennummern sind zum Beispiel in der Ordnung (aufsteigende Ordnung) i0 < i1' < ... < in-1, angeordnet. Die Anordnung der Sphären kann ebenfalls in absteigender Ordnung vorgenommen werden.
  • Nimmt man die oben beschriebene Korrelation an, nimmt der Vertexshader Bezug auf die Koordinaten aller Sphären aus dem zuvorigen Zeitschritt unter Verwendung des zuvor erwähnten Vertex-Textur fetch (VTF), berechnet die Koordinaten der Buckettextur auf der Grundlage der Koordinaten, und gibt die Nummern der Sphären der Koordinaten aus, wodurch die Nummer der Sphäre in die Buckettextur geschrieben werden kann.
  • In dem Fall der oben beschriebenen Verarbeitung kann die Bucketkonstruktion nur korrekt durchgeführt werden, wenn eine einzelne Sphäre innerhalb eines Buckets vorhanden ist, wohingegen die Bucketkonstruktion nicht korrekt durchgeführt werden kann, wenn mehrere Sphären innerhalb eines einzelnen Buckets vorhanden sind. Wenn die Möglichkeit besteht, daß vielfache Sphären in einem einzelnen Bucket vorhanden sind, müssen die Sphären eine nach der anderen in Abfolge in dem Bucket speichert werden, während auf die Nummern der Anzahl von Sphären, die in dem Bucket gespeichert sind, Bezug genommen wird, um eine richtige Bucketkonstruktion durchzuführen. Durch die von der GPU 12 verwendete Parallelverarbeitung kann nur eine Nummer in jede Bucket nach der Parallelverarbeitung geschrieben werden, da eine geschriebene Sphärennummer nicht Referenz bei dem Rendering für einen Verarbeitungszyklus sein kann. Wenn z. B. vier Sphären in einem einzelnen Bucket vorhanden sind, da vier Vertices in den gleichen Pixel geschrieben sind, wird die Nummer einer einzelnen Sphäre zuletzt in das Pixel geschrieben.
  • Bei der Bucketkonstruktion gemäß der vorliegenden Ausführungsform wird eine Konfiguration herangezogen, bei der eine Mehrzahl von Sphären in einem einzelnen Bucket bj gespeichert werden können. Dieses Verfahren wird mit Bezug auf das Flußdiagramm in 6 beschrieben.
  • Es wird hierin ein Fall betrachtet, bei dem ein Maximum von vier Sphären in das Bucket bj passen. Die Nummern der vier Sphären sind ib0, ib1, ib2, und ib3 und die Werte der Kanäle RGBA werden in einen einzelnen Pixel geschrieben. Die Nummern der vier Sphären sind in Ordnung (aufsteigender Ordnung) angeordnet, bei der ib0 < ib1 < ib2 < ib3 gilt. Die Nummern der vier Sphären können ebenfalls in absteigender Ordnung vorliegen. Bei der Bucketkonstruktion wird das Schreiben für einen Pixel in vier Schreiben von Sphärennummern unterteilt, wodurch die GPU 12 ebenfalls verwendet wird, wenn das Maximum von vier Sphären in einem einzelnen Bucket vorhanden sind. Mit anderen Worten, wenn vier Sphären in einem Bucket bj vorhanden sind, wird die Bucketkonstruktion basierend auf der GPU 12 durchgeführt, indem das Schreiben in vier Schreibvorgänge (Renderings zur Verarbeitung) in einem einzelnen Zeitschritt unterteilt wird.
  • Bei den zuvor erwähnten Vertexshadern (VS) 22 wird die Koordinate der Sphäre, die einem Vertex entspricht, verwendet, um die In-Bucketkoordinate der Koordinate zu berechnen, und die Nummer der Sphäre wird zu den Fragmentshadern (FS) 23 überführt. Bei den Fragmentshadern (FS) 23 wird die Nummer der Sphäre als „Farbe" oder „Tiefe" geschrieben.
  • Die Verarbeitungsdetails der Bucketkonstruktion S12 wird speziell mit Bezug auf 6 beschrieben. Der Schritt der Bucketkonstruktion S12 ist aus den Schritten S101 bis S104 ist aus vier Schritten zusammengesetzt, die in Folge durchgeführt werden.
  • Das erste Schreiben (Schritt S101) in einen einzelnen Pixel in dem ersten Durchgang ist ein Schritt zum Schreiben der Sphärennummer ib0 in den R Kanal. Die Sphärennummer ib0 ist die kleinste Nummer unter den vier Sphären. Speziell wird diese Sphärennummer geschrieben, wenn der Pixel die kleinste Tiefe hat, und das Rendering für die erste Verarbeitung wird durchgeführt. In dem Fall des Schreibens dieser Sphärennummer ib0, wird zuerst eine Farbmaske zur Auswahl des R Kanals gesetzt (Schritt S31). Ein Tiefentest wird gesetzt (S32), der Tiefenbuffer wird dann initiiert auf den auf den Maximalwert (Schritt S33), der so gesetzte Tiefentest wird verwendet, um Elemente zu akzeptieren, die den kleinsten Wert haben, und das Schreiben (Vertexrendering S34) wird ermöglicht.
  • Das Schreiben (Schritt102) in den gleichen Pixel in dem zweiten Durchgang ist ein Schritt zum Schreiben der Sphärennummer ib1 in den G-Kanal, so daß der in den R-Kanal geschriebene Wert nicht überschrieben wird. Bei diesem Schreiben wird ein Schreiben in die Kanäle RBA durch die Verwendung einer Farbmaske zur Auswahl des G-Kanals verhindert (Schritt S41). Der gleiche Tiefenbuffer wie der bei der dem ersten Durchgang wird verwendet, und der Tiefentest wird so gesetzt, um Elemente zu akzeptieren, die einen größeren Wert haben (Schritt S42). Da jedoch die größte Sphärennummer ib3 dadurch in den G-Kanal des zuvor erwähnten Pixel geschrieben würde, wird ein Schablonentest verwendet, um dieses Schreiben zu verhindern (Schritt S43). Bei dem Schablonentest wird der Schablonenbuffer auf Null initialisiert, Schritt (S44), und eine Einstellung wird gemacht, so daß der Wert durch den Schablonentest erhöht wird. Wenn der Wert in dem Schablonentest 1 oder höher ist, wird eine Einstellung gemacht, so daß das Schreiben fehlgeht (Schritt S43). Eine Sphärennummer, für die das Schreiben fehlgeht, wird dadurch davon abgehalten, in den Pixel geschrieben zu werden, nachdem der Schreibvorgang einmal für den Pixel durchgeführt worden ist. Die Sphärennummer ib1 wird so in den G-Kanal geschrieben (Schritt S45), in dem zweiten Durchgang des Schreibens in den gleichen Pixel.
  • Die gleiche Vorgehensweise wie oben beschrieben wird dann für den Fall des Schreibens der Pixelnummer ib2 in den B-Kanal beim dritten Durchgang (Schritt S103) durchgeführt, und des Schreibens der Sphärennummer ib3 beim vierten Durchgang (Schritt S104) in den gleichen Pixel, und die Sphärennummer ib2 und die Sphärennummer ib3 werden in den B-Kanal bzw. in den A-Kanal beschrieben. Der Schritt S103 des dritten Durchgangs weist jeweils die Schritte S51 bis S53 der Einstellung einer Farbmaske zur Auswahl des B-Kanals, das Leeren des Schablonenbuffers, und das Vertexrendering (Schreiben) auf. Schritt S104 des vierten Durchgangs weist die jeweils die Schritte S61 bis S63 des Einstellens einer Farbmaske zur Auswahl des A-Kanals, des Leerens des Schablonenbuffers, und des Vertexrenderings (Schreibens) auf.
  • Wie oben beschrieben wird bei der Konstruktion einer in der nächste-Teilchen-Suche, in der die GPU 12 verwendet wird, d. h. bei der Bucketkonstruktion in einem Fall, in dem eine Mehrzahl (z. B. vier) von Sphären in einem Bucket vorhanden sind, das Speichern in dem Bucket (das Schreiben der Sphärennummern in die Kanäle RGBA des Pixels) in das Rendering für eine Mehrzahl (z. B. vier) von Instanzen der Verarbeitung unterteilt, wenn die Nummern der Sphären in einem einzelnen Bucket gespeichert werden und mit einem Pixel korreliert werden. Bei dem Rendering für eine einzelne Instanz der Verarbeitung wird die Nummer einer einzelnen Sphäre in einen einzelnen Kanal des Pixels gemäß der zuvor erwähnten Regel geschrieben. Die zuvor erwähnte Regel bezüglich der Auswahl der Schreibkanäle und der Schreibordnung der Sphärennummern bei jedem Rendering wird durch die Verwendung des Tiefentests, der Farbmaske, und des Schablonentests bestimmt, die Funktionen der GPU 12 sind.
  • Schritt S13: Kollisionsberechnung
  • Bei dieser Kollisionsberechnung wird eine Suche nach einer Sphäre durchgeführt, die in der Nähe vorhanden ist, wo die Möglichkeit einer Kollision mit einer bestimmten Sphäre i besteht. Bei dieser Suche wird eine als eine Koordinatentextur der Sphäre erzeugte Buckettextur als Eingabe bestimmt, und die Verarbeitung wird unter Verwendung eines Fragmentshaders durchgeführt. Durch diese Verarbeitung wird Bezug auf ein Bucket genommen, wodurch die Nummern der in den 33 Buckets, die das Bucket umgeben, in welcher die bestimmte Sphäre gespeichert ist, erhalten werden, und diese Nummern werden verwendet, um Bezug auf die Textur zu nehmen, für welche die Koordinate der Sphäre gespeichert ist, wodurch die Sphärenkoordinate (Zentrumskoordinaten der Sphäre) erhalten werden. Die Abstände zwischen den Sphären und der Sphäre i werden berechnet, indem die Sphärenkoordinate von jeder Sphäre verwendet wird, und die Kollisionsberechnung wird durchgeführt.
  • Schritt S14: Kollisionsantwort (Berechnung der auf die Sphären wirkenden Kraft und Drehmoment)
  • Für zwei Sphären, für die eine Kollision festgestellt wurde, können die auf die Sphären wirkenden Kräfte, und die durch die Kräfte auf die starren Körper ausgeübten Momente aus GI. (12) berechnet werden, indem die Koordinaten (Ortsvektoren) der zwei Sphären, die Geschwindigkeiten (Geschwindigkeitsvektoren) der zwei Sphären, und die relativen Ortsvektoren bezüglich der Schwerpunktskoordinaten der starren Körper verwendet werden.
  • Schritte S15, S16: Berechnung der Translationsimpulse und Drehimpulse der starren Körper.
  • In Schritt S14 werden, da die auf die Sphäre wirkenden Kräfte und auf die starren Körper durch die Kräfte ausgeübten Drehmomente berechnet werden, diese Werte unter Verwendung der zuvor erwähnten Gleichungen (15) und (16) kombiniert, und die auf die starren Körper wirkenden Kräfte werden berechnet. Der Translationsimpuls und Drehimpuls der starren Körper werden dann unter Verwendung der zuvor erwähnten Gleichungen (2) und (4) aktualisiert.
  • Schritte S17, S18: Berechnung der Schwerpunktskoordinaten und der Quaternien der starren Körper.
  • Die Schwerpunktskoordinate des starren Körpers wird unter Verwendung der zuvor erwähnten GI. (3) berechnet. Bei der vorliegenden Ausführungsform wird die Ausgabe zu einer weiteren starren-Körper-Schwerpunktskoordinatentextur durchgeführt, indem die Schwerpunktskoordinaten- und die Schwerpunktsgeschwindigkeits-Textur des starren Körpers als Eingabe verwendet wird. Die Aktualisierung der Quaternien der starren Körper wird unter Verwendung der zuvor erwähnten GI. (10) berechnet. Bei der vorliegenden Ausführungsform wird der Wert, auf den die andere starre Körper-Quaternion-Textur aktualisiert wird, weiter unter Verwendung der Quaternien- und der Winkelgeschwindigkeit-Texturen der starren Körper als Eingaben geschrieben.
  • Schritt S19: Renderingverarbeitung (Rendering zur Anzeige)
  • Das Rendering zum Zeichnen der Anzeige auf dem Schirm der Anzeigevorrichtung 15 auf der Basis der in (Formel 6) unten gezeigten Berechnung wird durchgeführt, indem die Schwerpunktskoordinaten und Quaternien der starren Körper wie oben beschrieben berechnet werden.
  • (Formel 6)
  • Wenn der relative Ortsvektor ri von der Mitte des starren Körpers, wenn der Vertex i nicht rotiert ist, anfänglich um den gegenwärtigen Betrag der Drehung des starren Körpers unter Verwendung des Quaternions Q rotiert wird, und dann um die Schwerpunktskoordinate x des starren Körpers bewegt wird, wird der gegenwärtige relative Ortsvektor r' des Vertex i durch GI. (22) berechnet. r'i = X + QriQT (22)
  • Die Modellansichtsprojektionsmatrix M wird dann verwendet, um in die Koordinate r'' in dem gegenwärtig ausgegebenen Koordinatensystem umzuwandeln, auf der Basis von GI. (23). r'' = Mr'i (23)
  • Bei der von der GPU 12 durchgeführten Berechnung werden die acht oben beschriebenen Algorithmenstufen im wesentlichen wiederholt, wodurch ein Bild einer Kollisionssimulation der zahlreichen starren Körper in Realzeit auf dem Anzeigeschirm der Anzeigevorrichtung 15 angezeigt werden kann.
  • 7 zeigt ein modifiziertes Beispiel des Berechnungsalgorithmus der Beschleunigung der starrer-Körper-Simulation, die in 5 gezeigt ist. Bei dem in 7 gezeigten Prozeßfluß werden die gleichen Bezugszeichen verwendet, um Schritte anzuzeigen, die im wesentlichen die gleichen sind wie die in 5 gezeigten Schritte. Gemäß dem in 7 gezeigten Berechnungsalgorithmus kann ein Aufbau herangezogen werden, bei dem die Berechnung S15 des Translationsimpulses der starren Körper, die Berechnung S16 der Schwerpunktskoordinaten der starren Körper, die Berechnung S17 des Drehimpulses der starren Körper und die Berechnung S18 der Quaternien der starren Körper simultan durch Parallelverarbeitung ausgeführt werden. Hierin wird die Parallelverarbeitung in der GPU 12 verwendet. Der Fluß von weiteren Prozessen ist der gleiche wie in 5 gezeigt. Durch diesen Aufbau kann die Zeit in einem einzelnen Zeitschritt bei dem Rechnungsalgorithmus der starrer-Körper-Simulation weiter verringert werden, und eine nochmals weitere Beschleunigung kann erreicht werden.
  • Bei der starrer-Körper-Simulation des Fallens/der Kollisionen von 10.922 Toren, die in 3 gezeigt ist, betrug die erforderliche Zeit für einen einzelnen Zeitschritt 16,6 Millisekunden, und die Bildwechselsequenz während des Renderings betrug 23 FPS. Bei der starren-Körpersimulation des Fallens/der Kollisionen von 16.384 Schachfiguren, die in 4 gezeigt ist, betrug die für einen einzelnen Teilschritt erforderliche Zeit 12,8 Millisekunden, und die Bildwechselfrequenz während des Renderings betrug 21.2 FPS.
  • Die als „Quaternien" bezeichnete physikalische Größe wurde verwendet, um bei der Beschreibung der oben gegebenen Ausführungsform die Orientierung eines starren Körpers anzuzeigen. Aber eine „Rotationsmatrix" kann ebenfalls und anstelle eine Quaternions zur Berechnung verwendet werden. Ein „Quaternion" und eine „Rotationsmatrix" sind beide physikalische Größen, die die „Orientierung eines Gegenstands" anzeigen.
  • Das Verfahren zum Aufbau einer Datenstruktur, die in der nächste-Teilchen-Suche einer teilchenbasierten Simulation in der zuvor beschriebenen Ausführungsform verwendet wurde, wurde für eine starrer-Körper-Simulation bezüglich Kollisionen von zahlreichen starren Körpern angewendet, aber das Verfahren zum Aufbau einer Datenstruktur gemäß der vorliegenden Erfindung ist als solche nicht eingeschränkt, und kann ebenfalls zum Ausdrücken der Fluidbewegung eines Fluidkörpers oder korpuskularen Körpers, oder für ein natürliches Objekt, wie in den 8 und 9 gezeigt, verwendet werden.
  • 8 ist ein Diagramm, das ein Effektbild einer Simulation zeigt, die die Zustandsänderung eines Fluidkörpers zeigt, wenn eine Mehrzahl von sphärischen Fluidkörpern (Tropfen) in ein Wasser oder einen weiteren Fluidkörper fällt. 9 ist ein Diagramm, das ein Effektbild einer Simulation zeigt, die die Zustandsänderung zeigt, wenn ein korpuskularer Körper, der in einem trichterförmig geformten Gefäß enthalten ist, nach unten strömt, von einer Öffnung in dem unteren Ende des Gefäßes nach außen fällt, und in einem Gefäß aufgenommen wird, das unterhalb der Öffnung angeordnet ist.
  • Das zuvor beschriebene Verfahren zum Aufbau einer Datenstruktur, die in einer nächste-Teilchen-Suche verwendet wird, wird durch Ausführen des nächste-Teilchen-Suchprograrnms 13A-1, das in 1 gezeigt ist, von der GPU 12 implementiert. Das nächste-Teilchen-Suchprogramm 13A-1, das sich auf das Verfahren zum Aufbau einer Datenstruktur bezieht, die in einer nächste-Teilchen-Suche verwendet wird, ist als solche in einer CD-ROM oder einem anderen Speichermedium abgespeichert, und kann als alleinstehendes Programmprodukt ausgelegt sein.
  • Bei der Beschreibung der Ausführungsform wurde ein Beispiel beschrieben, bei dem ein Shader (shader) bei der Ausführung des Programms durch die GPU verwendet wurde. Dies war als ein Beispiel für den Gebrauch eines Programmmodells, das für die graphischen Funktionen einer GPU spezialisiert ist. Die vorliegende Erfindung ist jedoch nicht durch diesen Aufbau eingeschränkt. Der zuvor erwähnte übliche Streamprozessor, der eine GPU einschließt, kann als der graphische Rechenprozessor verwendet werden, und das Ausführen kann durchgeführt werden, indem ein übliches Programmiermodell als das Programmiermodell verwendet wird.
  • Das Programm kann im allgemeinen installiert werden, indem CUDA, CTM, Brook, oder ein anderes Programmiermodell neben dem zuvor erwähnten Shader in dem Streamprozessor verwendet wird, der die GPU 12 umfaßt. Bei der Installation des Shaders in der GPU gemäß der zuvor beschriebenen Ausführungsform werden Scheiben, Voxel, und Daten bezüglich der Teilchen in dem Rechenraum in dem Videospeicher 13B als Texturen 136-1 abgespeichert. „Arrays" werden im allgemeinen anstelle von Texturen verwendet, wenn CUDA oder ähnliches als die Programminstallation verwendet wird.
  • Wenn eine GPU als der graphische Rechenprozessor bei dem Verfahren zum Aufbau einer Datenstruktur verwendet wird, werden die Auswahl einer Teilchenkoordinate und einer Teilchennummer des bei jedem Rendering für die Mehrzahl der Prozesszyklen geschriebenen Teilchens, und die Auswahl eines Kanals in dem beschriebenen Pixel unter Verwendung der Funktionen eines Schablonentests, einer Farbmaske, und eines Tiefentests durchgeführt, die von dem graphischen Rechenprozessor vorbereitet werden.
  • Alternativ, wenn ein Streamprozessor als der graphische Rechenprozessor verwendet wird, wird eine Speicherangabe anstelle der vorerwähnten Pixel (beschriebenen Pixel) verwendet, eine Speicherstelle in dem Speicher für einen Voxel wird anstelle des zuvor erwähnten Kanals verwendet, und von dem Streamprozessor vorbereitete Zählfunktionen werden anstelle der Funktionen der oben erwähnten Tiefentests, Farbmaske und Schablonentests verwendet, welche von der GPU 12 vorbereitet wurden. Die Zählfunktion anstelle des zuvor erwähnten Tiefentests, der Farbmaske und des Schablonentests.
  • Wenn ein Streamprozessor als der graphische Rechenprozessor verwendet wird, werden folglich die Auswahl der Teilchennummer und die Speicherstelle der bei den Schritten einer Mehrzahl von Verarbeitungszyklen geschriebenen Teilchen und die Auswahl der Speicherstelle in dem Speicher für den Voxel unter Verwendung der Zählfunktionen durchgeführt, die von dem Streamprozessor vorbereitet sind.
  • Wie zuvor beschrieben umfaßt das Verfahren zum Aufbau einer Datenstruktur, d. h., der Schritt des Paketaufbaus S12, der in 6 gezeigt ist, die unten beschriebenen Schritte, wenn das Programm unter Verwendung der GPU 12 als dem graphischen Rechenprozessor installiert wird.
  • Das Verfahren umfaßt einen Schritt (S101) des Schreibens einer Teilchenzahl ib0 in dem R Kanal und Durchführung von Rendering für eine erste Routine durch Initialisierung eines Tiefenbuffers bei einem Maximalwert, und der Akzeptanz von Elementen mit einem kleinen Wert unter Verwendung eines Tiefentests beim Schreiben in den Pixel in einem ersten Durchgang; einen Schritts (S102) des Schreibens einer Teilchennummer ib1 in den G Kanal und des Durchführen von Rendering für eine zweite Routine unter Verwendung einer Farbmaske, um ein Schreiben in dem R Kanal zu verhindern, und der Verwendung eines Schablonentests oder ähnlichem beim Schreiben in den Pixel in einem zweiten Durchgang; einen Schritt (S103) des Schreibens einer Teilchennummer ib2 in den B Kanal und Durchführung von Rendering für eine dritte Routine durch Verwendung einer Farbmaske, um ein Schreiben in den R- und den G-Kanal zu verhindern, und Verwendung eines Schablonentests beim Schreiben in den Pixel in einem dritten Durchgang; und einen Schritt (S104) des Schreibens einer Partikelnummer ib3 in den A-Kanal und das Durchführung von Rendering für eine vierte Routine unter Verwendung einer Farbmaske, um ein Schreiben in dem R, G und B-Kanal zu verhindern, und die Verwendung eines Schablonentests beim Schreiben in den Pixel in einem vierten Durchgang; wobei die Teilchennummern der vier Teilchen ib0, ib1, ib2, und ib3 sind (wobei ib0 < ib1 < ib2 < ib3).
  • Die Verarbeitung bezüglich dem zuvor erwähnten Schritt der Paketkonstruktion S12 wird im allgemeinen beschrieben als das Einbringen der Unterteilung des Schreibens in vier Schritten (S101 bis S104), wenn ein Maximum von vier Werten durch den Streamprozessor geschrieben werden. Ein einzelner Wert, der noch nicht geschrieben worden ist, wird in jedem der vier Schritte geschrieben.
  • Wenn das Programm unter Verwendung der zuvor erwähnten GPU 12 installiert ist, werden der "Tiefentext", „Farbmaske" und „Schablonentest" verwendet, die graphisch spezifische Funktionen der GPU 12 sind.
  • Die „Tiefentest" Funktion führt eine Verarbeitung zum „Entfernen vorherig geschriebener Werte" durch. Die „Farbmasken" Funktion führt eine Verarbeitung zur „Auswahl einer Schreibbestimmung" durch. Die „Schablonentest" Funktion führt eine Verarbeitung durch, um „nur einem Wert zu erlauben, in einem einzelnen Schritt geschrieben zu werden".
  • Neben der Verarbeitung zur „Schreiben der Partikelnummer in den Schreibbestimmungsspeicher der Daten in einem Schritt", werden „der Tiefenbuffer" und der „Schablonenbuffer" ebenfalls aktualisiert.
  • Wenn der zuvor erwähnte Streamprozessor, der die GPU 12 umfaßt, verwendet wird, wird das als ein CUDA bezeichnete Programmmodell im allgemeinen bei der Programminstallation verwendet. Wenn CUDA verwendet wird, können der „Tiefentest", die „Farbmaske" und der „Schablonentest", die Graphikfunktionen der GPU 12 sind, nicht verwendet werden. Daher werden Schreibbestimmungsspeicher und Zähler vorbereitet, wenn CUDA verwendet wird, um Funktionen zu schaffen, die den zuvor erwähnten Graphikfunktionen äquivalent sind.
  • Gemäß den oben beschriebenen Zählern wird die Verarbeitung („Tiefentest” Funktion) zum „Entfernen vorherig vorgeschriebener Wert" durch einen Zähler durchgeführt, und die Verarbeitung („Farbmasken” Funktion) zum „Auswählen einer Schreibbestimmung" und die Verarbeitung („Schablonentest” Funktion), um „nur einem Wert zu erlauben, in einem Schritt geschrieben zu werden" werden durchgeführt.
  • Weiter werden neben der Verarbeitung zum „Schreiben der Teilchennummer in dem Schreibbestimmungsspeicher der Daten in einem Schritt" die „Zähler" ebenfalls aktualisiert. Das „Aktualisieren der Zähler" bezeichnet das nur einmalige inkrementieren der Zähler.
  • Wie oben beschrieben, wenn eine GPU oder ein weiterer Streamprozessor verwendet wird, und CUDA als das Programmiermodell installiert ist, werden in dem Videospeicher geschaffene Arrays anstelle von Texturen verwendet. Eine Textur ist ein Konzept, das in „im Videospeicher geschaffenen Arrays" enthalten ist. „Im Videospeicher erzeugte Arrays" kann allgemein interpretiert werden als „in einem zugewiesenen Speicher erzeugte Arrays".
  • Bei einer GPU oder einem anderen Streamprozessor, wenn das Programm unter Verwendung von CUDA anstelle von Shadern als das Programmiermodell installiert wird, wird eine Speicherstelle anstelle von einem Pixel (geschriebenen Pixel) verwendet, eine Speicherstelle in dem Speicher für ein Voxel wird anstelle eines Kanals verwendet, und entsprechende Zählfunktionen werden anstelle der Funktionen des Tiefentests, der Farbmaske und des Schablonentests verwendet.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • - M. Tanaka et al., „Development of a rigid-body calculation method using a particle method, and application thereof to computer graphics" Japan Gesellschaft mechanischer Ingenieure, Schriften der 19ten Computational Mechanics Conference, Seiten 701–702, 2006 [0003]
    • - „Fast solid voxelization using graphics hardware,” Transactions of JSCES, Seite 20060023, 2006 [0044]

Claims (22)

  1. Verfahren zum Aufbau einer Datenstruktur, die in einer nächste-Teilchen-Suche verwendet wird, welche bei einer von einer GPU (graphische Prozesseinheit) ausgeführten Methode zur Berechnung einer Simulation eines physikalischen Objekts durch Umwandlung dreidimensionaler digitaler Bilddaten, welche von in einem Videospeicher erzeugten Bilddaten aufgebaut werden, in zweidimensionale digitale Bilddaten verwendet wird, wobei: eine Technik verwendet wird, um das physikalische Objekt als zahlreiche Teilchen anzugeben und einen Existenzzustand des physikalischen Objekts auf der Grundlage einer Speicher-Positionsbeziehung zwischen den zahlreichen Teilchen in einer drei-dimensionalen Bilddatenstruktur in dem Videospeicher zu bestimmen; eine in der dreidimensionalen Bilddatenstruktur enthaltene Bucket-Textur aus einem Bucket zusammengesetzt ist, in dem ein im Einklang mit einem Raum, in dem das physikalische Objekt auftritt, geschaffener Speicherraum aufgeteilt wird, und eine den zahlreichen Teilchen zugeordnete Teilchennummer in jeweiligen von zahlreichen Buckets gespeichert wird; ein Schreib-Schritt vorgesehen ist, bei dem eine Teilchenkoordinate und die Teilchennummer des in dem Bucket gespeicherten Teilchens gelesen werden und unter Verwendung eines Vertexshaders der GPU von der GPU in einen zweidimensionalen Bildraum geschrieben werden; und die Teilchennummer und Teilchenkoordinate von jedem der Mehrzahl von Teilchen bei einem Rendering für eine Mehrzahl von Verarbeitungszyklen in einem einzelnen Zeitschritt einer Simulation eins nach dem anderen geschrieben werden, wenn eine Mehrzahl der Teilchen bei dem Schreib-Schritt in dem Bucket vorhanden ist.
  2. Verfahren nach Anspruch 1, bei dem die Auswahl eines beschriebenen Pixels und eine Teilchennummer des bei jedem Rendering für die Mehrzahl von Verarbeitungszyklen geschriebenen Teilchens, und eine Auswahl eines Kanals in dem beschriebenen Pixel unter Verwendung von Funktionen eines Schablonentests, einer Farbmaske, und eines Tiefentests durchgeführt werden, die von der GPU vorbereitet sind.
  3. Verfahren nach Anspruch 2, bei dem eine Teilchennummer von Teilchen, für die Teilchennummern in aufsteigender oder absteigender Ordnung vorliegen, getrennt voneinander für jeden von vier Kanälen aufeinanderfolgend gespeichert werden, die von RGBA eines Pixels zusammengesetzt sind, für welchen die Partikelnummer geschrieben wird, wenn vier der Teilchen in dem Bucket vorhanden sind.
  4. Verfahren nach Anspruch 3, aufweisend: Schreiben einer Teilchennummer ib0 in den R Kanal und Durchführen von Rendering für eine erste Routine durch Initialisierung eines Tiefenbuffers bei einem Maximalwert, und akzeptieren von Elementen mit einem kleinen Wert unter Verwendung eines Tiefentests beim Schreiben in den Pixel in einem ersten Durchgang; Schreiben einer Teilchennummer ib1 in den G Kanal und Durchführen von Rendering für eine zweite Routine durch Verwendung einer Farbmaske, um ein Schreiben in den R Kanal zu verhindern, und Verwenden eines Schablonentests beim Schreiben in den Pixel in einem zweiten Durchgang; Schreiben einer Partikelnummer ib2 in den B Kanal und Durchführung von Rendering für eine dritte Routine durch Verwenden einer Farbmaske, um ein Schreiben in die R und B Kanäle zu verhindern, und Verwenden eines Schablonentests beim Schreiben in den Pixel in einem dritten Durchgang; und Schreiben einer Teilchennummer ib3 in dem A-Kanal und Durchführen von Rendering für eine vierte Routine durch Verwenden einer Farbmaske, um Schreiben in die R, G und B Kanäle zu verhindern, und Verwenden eines Schablonentests beim Schreiben in den Pixel in einem vierten Durchgang; wobei die Teilchennummern der vier Teilchen ib0, ib1, ib2, und i3 sind (wobei ib0 < ib1 < ib2 < ib3 in dem Fall der aufsteigenden Ordnung; und ib0 > ib1 > ib2 > ib3 in dem Fall der absteigenden Ordnung).
  5. Verfahren nach Anspruch 1, bei dem das physikalische Objekt aus zahlreichen starren Körpern zusammengesetzt ist, und eine Berechnung einer auf einer Kollisionsberechnung der zahlreichen starren Körper basierenden Simulation ausgeführt wird.
  6. Programm zum Aufbau einer Datenstruktur, die in eine nächste-Teilchen-Suche verwendet wird, welche bei einem von einer GPU (graphische Prozeßeinheit) ausgeführten Programms zur Berechnung einer Simulation eines physikalischen Objekts durch Umwandlung dreidimensionaler digitaler Bilddaten, die von in einem Videospeicher geschaffenen Bilddaten erzeugt wurden, in zweidimensionale digitale Bilddaten verwendet wird, wobei das Programm die GPU veranlaßt, Routinen auszuführen, die aufweisen: Angeben des physikalischen Objekts als zahlreiche Teilchen, und Bestimmen eines Existenzzustands des physikalischen Objekts auf der Basis einer Speicher-Positionsbeziehung zwischen den zahlreichen Teilchen in einer dreidimensionalen Bilddatenstruktur in dem Videospeicher; Veranlassen, daß eine in der drei dimensionalen Bilddatenstruktur enthaltende Bucket-Textur als Komponente ein Bucket hat, in dem ein im Einklang mit einem Raum, in dem das physikalische Objekt auftritt, geschaffener Speicherraum aufgeteilt wird, und eine den zahlreichen Teilchen zugeordnete Teilchennummer in jeweiligen der zahlreichen Buckets gespeichert wird; Durchführen einer Schreibroutine der Verwendung eines Vertexshaders zum Lesen der Teilchenkoordinate und einer Teilchennummer des in dem Bucket gespeicherten Teilchens und Schreiben der Teilchenkoordinate und der Teilchennummer in einen zweidimensionalen Bildraum; und Schreiben der Teilchennummer und Teilchenkoordinate von jedem der Mehrzahl von Teilchen eins nach dem anderen bei einem Rendering für eine Mehrzahl von Verarbeitungszyklen in einem einzelnen Zeitschritt einer Simulation, wenn eine Mehrzahl der Teilchen in dem Bucket bei dem Schreib-Schritt in der Schreibroutine vorhanden ist.
  7. Programm nach Anspruch 6, bei dem die Auswahl eines beschriebenen Pixels und eine Teilchennummer des bei jedem Rendering für die Mehrzahl von Verarbeitungszyklen geschriebenen Teilchens, und eine Auswahl eines Kanals in dem beschriebenen Pixel unter Verwendung von Funktionen eines Schablonentests, einer Farbmaske, und eines Tiefentests durchgeführt werden, die von der GPU vorbereitet sind.
  8. Programm nach Anspruch 7, bei dem die GPU verursacht wird, eine Routine auszuführen, bei der eine Teilchennummer von Teilchen, für die Teilchennummern in aufsteigender oder absteigender Ordnung vorliegen, getrennt voneinander für jeden von vier Kanälen aufeinanderfolgend gespeichert werden, die von RGBA eines Pixels zusammengesetzt sind, für welchen die Partikelnummer geschrieben wird, wenn vier der Teilchen in dem Bucket vorhanden sind.
  9. Programm nach Anspruch 8, bei dem das Programm die GPU verursacht, Routinen auszuführen, die aufweisen: Schreiben einer Teilchennummer ib0 in den R Kanal und Durchführen von Rendering für eine erste Routine durch Initialisierung eines Tiefenbuffers bei einem Maximalwert, und akzeptieren von Elementen mit einem kleinen Wert unter Verwendung eines Tiefentests beim Schreiben in den Pixel in einem ersten Durchgang; Schreiben einer Teilchennummer ib1 in den G Kanal und Durchführen von Rendering für eine zweite Routine durch Verwendung einer Farbmaske, um ein Schreiben in den R Kanal zu verhindern, und Verwenden eines Schablonentests beim Schreiben in den Pixel in einem zweiten Durchgang; Schreiben einer Partikelnummer ib2 in den B Kanal und Durchführung von Rendering für eine dritte Routine durch Verwenden einer Farbmaske, um ein Schreiben in die R und B Kanäle zu verhindern, und Verwenden eines Schablonentests beim Schreiben in den Pixel in einem dritten Durchgang; und Schreiben einer Teilchennummer ib3 in dem A Kanal und Durchführen von Rendering für eine vierte Routine durch Verwenden einer Farbmaske, um Schreiben in die R, G und B Kanäle zu verhindern und Verwenden eines Schablonentests beim Schreiben in den Pixel in einem vierten Durchgang; wobei die Teilchennummern der vier Teilchen ib0, ib1, ib2, und ib3 sind (wobei ib0 < ib1 < ib2 < ib3 in dem Fall der aufsteigenden Ordnung; und ib0 > ib1 > ib2 > ib3 in dem Fall der absteigenden Ordnung).
  10. Das Programm zum Aufbau einer Datenstruktur, die in einer nächste-Teilchen-Suche verwendet wird, nach Anspruch 6, bei dem das physikalische Objekt aus zahlreichen starren Körpern zusammengesetzt ist, und die Berechnung einer auf einer Kollisionsberechnung der zahlreichen starren Körper basierende Simulation von der GPU ausgeführt wird.
  11. Computer-lesbares Speichermedium zum Speichern des Programms zum Aufbau einer in einer nächste-Teilchen-Suche verwendeten Datenstruktur nach einem der Ansprüche 6 bis 10.
  12. Verfahren zum Aufbau einer Datenstruktur, die in einer nächste-Teilchen-Suche verwendet wird, welche bei einer von einem Streamprozessor ausgeführten Methode zur Berechnung einer Simulation eines physikalischen Objekts durch Umwandlung dreidimensionaler digitaler Bilddaten, welche von in einem Speicher erzeugten Daten-Array aufgebaut werden, in zweidimensionale digitale Bilddaten verwendet wird, wobei: eine Technik verwendet wird, um das physikalische Objekt als zahlreiche Teilchen anzugeben und einen Existenzzustand des physikalischen Objekts auf der Grundlage einer Speicher-Positionsbeziehung zwischen den zahlreichen Teilchen in einer drei-dimensionalen Bilddatenstruktur in dem Speicher zu bestimmen; ein in der dreidimensionalen Bilddatenstruktur enthaltenes Bucket-Array aus einem Bucket zusammengesetzt ist, in dem ein im Einklang mit einem Raum, in dem das physikalische Objekt auftritt, geschaffener Speicherraum aufgeteilt wird, und eine den zahlreichen Teilchen zugeordnete Teilchennummer in jeweiligen von zahlreichen Buckets gespeichert wird; ein Schreib-Schritt vorgesehen ist, bei dem eine Teilchenkoordinate und die Teilchennummer des in dem Bucket gespeicherten Teilchens gelesen werden und unter Verwendung einer Zersplitterungsoperation des Streamprozessors von dem Streamprozessor in ein Array in dem Speicher geschrieben werden; und die Teilchennummer und Teilchenkoordinate von jedem der Mehrzahl von Teilchen für eine Mehrzahl von Verarbeitungszyklen in einem einzelnen Zeitschritt einer Simulation eins nach dem anderen in einen Kernel geschrieben werden, wenn eine Mehrzahl der Teilchen bei dem Schreib-Schritt in dem Bucket vorhanden ist.
  13. Verfahren nach Anspruch 12, bei dem die Auswahl von geschriebenen Daten und eine Teilchennummer des geschriebenen Teilchens bei jedem Schritt für die Mehrzahl von Verarbeitungszyklen, und eine Auswahl einer Mehrzahl von Speicherstellen in einem für einen Voxel zugeordneten Speicher unter Verwendung von Zählfunktionen durchgeführt werden, die von dem Streamprozessor vorbereitet sind.
  14. Verfahren nach Anspruch 13, bei dem eine Teilchennummer von Teilchen, für die Teilchennummern in aufsteigender oder absteigender Ordnung vorliegen, getrennt voneinander für jede der ersten bis vierten Speicherstellen aufeinanderfolgend gespeichert werden, für welche die Partikelnummer geschrieben wird, wenn vier der Teilchen in dem Bucket vorhanden sind.
  15. Verfahren nach Anspruch 13, aufweisend: Schreiben einer Teilchennummer ib0 in die erste Speicherstelle und Durchführen eines Kernels für eine erste Routine durch Initialisierung des Zählers auf Null, und Akzeptieren von anfänglichem Schreiben in die erste Speicherstelle beim Beschreiben des für den Voxel zugeordneten Speichers in einem ersten Durchgang; Schreiben einer Teilchennummer ib1 in die zweite Speicherstelle und Ausführen eines Kernels für eine zweite Routine unter Verwendung des Zählers, um ein Schreiben in die erste Speicherstelle zu verhindern, und Schreiben eines nächsten Wertes in die zweite Speicherstelle beim Beschreiben des für den Voxel zugeordneten Speichers in einem zweiten Durchgang; Schreiben einer Teilchennummer ib2 in die dritte Speicherstelle und Ausführen eines Kernels für eine dritte Routine unter Verwendung des Zählers, um ein Schreiben in die erste und zweite Speicherstelle zu verhindern, und Schreiben eines nächsten Wertes in die dritte Speicherstelle beim Beschreiben des dem Voxel zugeteilten Speichers in einem dritten Durchgang; und Schreiben einer Partikelnummer ib3 in die vierte Speicherstelle und Ausführung eines Kernels für eine vierte Routine unter Verwendung des Zählers zum Verhindern des Beschreibens der ersten, zweiten und dritten Speicherstellen, und Schreiben eines nächsten Werts in die vierte Speicherstelle beim Beschreiben des dem Voxel zugeteilten Speichers bei einem vierten Durchgang; wobei die Teilchennummern der vier Teilchen ib0, ib1, ib2, und ib3 sind (wobei ib0 < ib1 < ib2 < ib3 in dem Fall der aufsteigenden Ordnung; und ib0 > ib1 > ib2 > ib3 in dem Fall der absteigenden Ordnung).
  16. Verfahren nach Anspruch 12, bei dem das physikalische Objekt aus zahlreichen starren Körpern zusammengesetzt ist, und eine Berechnung einer auf einer Kollisionsberechnung der zahlreichen starren Körper basierenden Simulation ausgeführt wird.
  17. Programm zum Aufbau einer Datenstruktur, die in eine nächte-Teilchen-Suche verwendet wird, welche bei einem von einem Streamprozessor ausgeführten Programm zur Berechnung einer Simulation eines physikalischen Objekts durch Umwandlung dreidimensionaler digitaler Bilddaten, die von in einem Speicher erzeugten Daten-Array aufgebaut werden, in zweidimensionale digitale Bilddaten verwendet wird, wobei das Programm den Streamprozessor veranlaßt, Routinen auszuführen, die aufweisen: Angeben des physikalischen Objekts als zahlreiche Teilchen, und Bestimmen eines Existenzzustands des physikalischen Objekts auf der Basis einer Speicher-Positionsbeziehung zwischen den zahlreichen Teilchen in einer dreidimensionalen Bilddatenstruktur in dem Speicher; Veranlassen, daß ein in der dreidimensionalen Bilddatenstruktur enthaltendes Bucket-Array als Komponente ein Bucket hat, in dem ein im Einklang mit einem Raum, in dem das physikalische Objekt auftritt, geschaffener Speicherraum aufgeteilt wird, und eine den zahlreichen Teilchen zugeordnete Teilchennummer in jeweiligen der zahlreichen Buckets gespeichert wird; Durchführen einer Schreibroutine des Verwendens einer Zerspliltteungsoperation des Streamprozessors zum Lesen der Teilchenkoordinate und einer Teilchennummer des in dem Bucket gespeicherten Teilchens und Schreiben der Teilchenkoordinate und der Teilchennummer in ein Array in dem Speicher durch den Streamprozessor; und Schreiben der Teilchennummer und Teilchenkoordinate von jedem der Mehrzahl von Teilchen eins nach dem anderen in einen Kernel für eine Mehrzahl von Verarbeitungszyklen in einem einzelnen Zeitschritt einer Simulation, wenn eine Mehrzahl der Teilchen in dem Bucket bei dem Schreib-Schritt in der Schreibroutine vorhanden ist.
  18. Programm nach Anspruch 17, bei dem die Auswahl von geschriebenen Daten und eine Teilchennummer des geschriebenen Teilchens bei jedem Schritt für die Mehrzahl von Zyklen der Verarbeitung, und eine Auswahl einer Mehrzahl von Speicherstellen in einem für einen Voxel zugeordneten Speicher unter Verwendung von Zählfunktionen durchgeführt werden, die von dem Streamprozessor vorbereitet sind.
  19. Programm nach Anspruch 18, bei dem eine Teilchennummer von Teilchen, für die Teilchennummern in aufsteigender oder absteigender Ordnung vorliegen, getrennt voneinander für jede der ersten bis vierten Speicherstelle aufeinanderfolgend gespeichert werden, für welche die Partikelnummer geschrieben wird, wenn vier der Teilchen in dem Bucket vorhanden sind.
  20. Programm nach Anspruch 19, bei dem das Programm die GPU verursacht, Routinen auszuführen, die aufweisen: Schreiben einer Teilchennummer ib0 in die erste Speicherstelle und Durchführen eines Kernels für eine erste Routine durch Initialisierung des Zählers auf Null, und Akzeptieren von anfänglichem Schreiben in die erste Speicherstelle beim Beschreiben des für den Voxel zugeordneten Speichers in einem ersten Durchgang; Schreiben einer Teilchennummer ib1 in die zweite Speicherstelle und Ausführen eines Kernels für eine zweite Routine unter Verwendung des Zählers, um ein Schreiben in die erste Speicherstelle zu verhindern, und Schreiben eines nächsten Wertes in die zweite Speicherstelle beim Beschreiben des für den Voxel zugeordneten Speichers in einem zweiten Durchgang; Schreiben einer Teilchennummer ib2 in die dritte Speicherstelle und Ausführen eines Kernels für eine dritte Routine unter Verwendung des Zählers, um ein Schreiben in die erste und zweite Speicherstelle zu verhindern, und Schreiben eines nächsten Wertes in die dritte Speicherstelle beim Beschreiben des dem Voxel zugeteilten Speichers in einem dritten Durchgang; und Schreiben einer Partikelnummer ib3 in die vierte Speicherstelle und Ausführung eines Kernels für eine vierte Routine unter Verwendung des Zählers zum Verhindern des Beschreibens der ersten, zweiten und dritten Speicherstellen, und Schreiben eines nächsten Werts in die vierte Speicherstelle beim Beschreiben des dem Voxel zugeteilten Speichers bei einem vierten Durchgang; wobei die Teilchennummern der vier Teilchen ib0, ib1, ib2, und ib3 sind (wobei ib0 < ib1 < ib2 < ib3 in dem Fall der aufsteigenden Ordnung; und ib0 > ib1 > ib2 > ib3 in dem Fall der absteigenden Ordnung).
  21. Das Programm zum Aufbau einer Datenstruktur, die in einer nächste-Teilchen-Suche verwendet wird, nach Anspruch 12, bei dem das physikalische Objekt aus zahlreichen starren Körpern zusammengesetzt ist, und die Berechnung einer auf einer Kollisionsberechnung der zahlreichen starren Körper basierende Simulation ausgeführt wird.
  22. Computer-lesbares Speichermedium zum Speichern des Programms zum Aufbau einer in einer nächste-Teilchen-Suche verwendeten Datenstruktur nach einem der Ansprüche 17 bis 21.
DE102008031526A 2007-07-17 2008-07-03 Verfahren zum Aufbau einer Datenstruktur die bei einer nächste-Teilchen-Suche verwendet wird, Programm für dieselbe, und Speichermedium zum Speichern des Programms Ceased DE102008031526A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2007185978 2007-07-17
JP2007-185978 2007-07-17

Publications (1)

Publication Number Publication Date
DE102008031526A1 true DE102008031526A1 (de) 2009-04-16

Family

ID=39737244

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202008018183U Expired - Lifetime DE202008018183U1 (de) 2007-07-17 2008-07-03 Computerprogrammprodukt zum Aufbau einer Datenstruktur, die bei einer nächste-Teilchen- Suche verwendet wird, Speichermedium mit dem gespeicherten Proramm und ein solches Speichermedium aufweisendes Computersystem
DE102008031526A Ceased DE102008031526A1 (de) 2007-07-17 2008-07-03 Verfahren zum Aufbau einer Datenstruktur die bei einer nächste-Teilchen-Suche verwendet wird, Programm für dieselbe, und Speichermedium zum Speichern des Programms

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE202008018183U Expired - Lifetime DE202008018183U1 (de) 2007-07-17 2008-07-03 Computerprogrammprodukt zum Aufbau einer Datenstruktur, die bei einer nächste-Teilchen- Suche verwendet wird, Speichermedium mit dem gespeicherten Proramm und ein solches Speichermedium aufweisendes Computersystem

Country Status (7)

Country Link
US (1) US8089485B2 (de)
JP (1) JP5227103B2 (de)
KR (1) KR100999384B1 (de)
CN (1) CN101350106B (de)
DE (2) DE202008018183U1 (de)
FR (1) FR2919087A1 (de)
GB (1) GB2452127B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017101567A1 (de) 2017-01-26 2018-07-26 Bundesrepublik Deutschland, Vertreten Durch Den Bundesminister Für Wirtschaft Und Energie, Dieser Vertreten Durch Den Präsidenten Der Bundesanstalt Für Materialforschung Und -Prüfung (Bam) Verfahren zum simulieren eines auftreffens von partikeln oder strahlung auf einem objekt, computerprogramm dafür, computersystem zur ausführung des computerprogramms, und verwendung eines computers

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9308444B2 (en) * 2009-12-25 2016-04-12 Intel Corporation Graphical simulation of objects in a virtual environment
JP5183698B2 (ja) * 2010-01-22 2013-04-17 キヤノン株式会社 粒子挙動解析方法、粒子挙動解析装置、及び解析プログラム
US20110202327A1 (en) * 2010-02-18 2011-08-18 Jiun-Der Yu Finite Difference Particulate Fluid Flow Algorithm Based on the Level Set Projection Framework
US9954718B1 (en) 2012-01-11 2018-04-24 Amazon Technologies, Inc. Remote execution of applications over a dispersed network
US8924515B1 (en) 2012-02-29 2014-12-30 Amazon Technologies, Inc. Distribution of applications over a dispersed network
CN102663149B (zh) * 2012-03-01 2015-06-24 浪潮(北京)电子信息产业有限公司 一种确定微、纳电子结构的方法及装置
NL2008632C2 (nl) * 2012-04-12 2013-10-16 Consultatie Implementatie Tech Beheer B V Mobiele inrichting en werkwijze voor het analyseren van ademmonsters.
CN103679780B (zh) * 2013-08-22 2016-06-22 中国人民解放军信息工程大学 一种空间目标实时模拟方法
KR102114245B1 (ko) 2014-04-10 2020-06-05 삼성전자 주식회사 그래픽스 상태 관리 장치 및 방법
CN105468545B (zh) * 2014-09-05 2019-04-26 联想(北京)有限公司 一种图像数据处理方法及电子设备
CN104240285A (zh) * 2014-09-16 2014-12-24 无锡梵天信息技术股份有限公司 利用vtf技术处理cpu大批量数据传入gpu的方法
US10386410B2 (en) 2016-12-12 2019-08-20 Samsung Electronics Co., Ltd. Highly flexible performance counter and system debug module
US10645357B2 (en) * 2018-03-01 2020-05-05 Motorola Mobility Llc Selectively applying color to an image
CN109711525A (zh) * 2018-12-12 2019-05-03 湖北航天技术研究院总体设计所 一种用于sph算法的邻近粒子搜索方法及系统
CN112887699B (zh) * 2021-01-11 2023-04-18 京东方科技集团股份有限公司 图像显示方法和装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3358169B2 (ja) 1996-08-30 2002-12-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 鏡面レンダリング方法及び装置
JP2000357481A (ja) * 1999-06-14 2000-12-26 Jeol Ltd 走査型荷電粒子ビーム装置における試料像観察方法
US20040004612A1 (en) * 2002-07-08 2004-01-08 Lockheed Martin Corporation Method and system for processing graphics simulation data
US7215340B2 (en) * 2002-07-19 2007-05-08 Mitsubishi Electric Research Laboratories, Inc. Object space EWA splatting of point-based 3D models
KR100568563B1 (ko) 2003-11-04 2006-04-07 강문구 입자동역학 해석기법과 볼륨렌더링 기법을 이용한 실시간 유체유동 시뮬레이션 및 렌더링 방법
KR100634534B1 (ko) 2005-01-22 2006-10-13 삼성전자주식회사 3차원 그래픽스 환경 상에서의 충돌 처리 방법 및 장치
US20060177122A1 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Method and apparatus for particle manipulation using graphics processing
JP4740610B2 (ja) * 2005-02-28 2011-08-03 独立行政法人理化学研究所 数値計算処理装置
US20060274085A1 (en) * 2005-06-03 2006-12-07 Pixar Methods and Apparatus For Structuring Geometric Models
CN100354894C (zh) * 2005-11-10 2007-12-12 北京航空航天大学 基于图形处理单元gpu的粒子系统实现方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Fast solid voxelization using graphics hardware," Transactions of JSCES, Seite 20060023, 2006
M. Tanaka et al., "Development of a rigid-body calculation method using a particle method, and application thereof to computer graphics" Japan Gesellschaft mechanischer Ingenieure, Schriften der 19ten Computational Mechanics Conference, Seiten 701-702, 2006

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017101567A1 (de) 2017-01-26 2018-07-26 Bundesrepublik Deutschland, Vertreten Durch Den Bundesminister Für Wirtschaft Und Energie, Dieser Vertreten Durch Den Präsidenten Der Bundesanstalt Für Materialforschung Und -Prüfung (Bam) Verfahren zum simulieren eines auftreffens von partikeln oder strahlung auf einem objekt, computerprogramm dafür, computersystem zur ausführung des computerprogramms, und verwendung eines computers
US11144686B2 (en) 2017-01-26 2021-10-12 Bundesrepublik Deutschland, Vertreten Durch Den Bundesminister Für Wirtschaft Und Energie Method for simulating the incidence of particles or radiation on an object, computer program therefor, computer system for executing the computer program, and use of a computer

Also Published As

Publication number Publication date
CN101350106B (zh) 2011-06-08
JP2009043245A (ja) 2009-02-26
CN101350106A (zh) 2009-01-21
GB2452127A (en) 2009-02-25
DE202008018183U1 (de) 2012-04-18
US8089485B2 (en) 2012-01-03
KR20090008159A (ko) 2009-01-21
US20090021518A1 (en) 2009-01-22
JP5227103B2 (ja) 2013-07-03
GB2452127B (en) 2012-09-19
GB0813147D0 (en) 2008-08-27
KR100999384B1 (ko) 2010-12-09
FR2919087A1 (fr) 2009-01-23

Similar Documents

Publication Publication Date Title
DE102008031526A1 (de) Verfahren zum Aufbau einer Datenstruktur die bei einer nächste-Teilchen-Suche verwendet wird, Programm für dieselbe, und Speichermedium zum Speichern des Programms
DE202017105403U1 (de) Befehlssatzarchitektur für neuronale Netze
DE102018117813A1 (de) Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk
DE60033250T2 (de) System und Verfahren zur Darstellung mit Strahlverfolgung
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE102019103178A1 (de) Verfahren für vorankommen und programmierbare timeouts von baumtraversierungsmechanismen in hardware
DE112006003728T5 (de) Verfahren zum Simulieren eines deformierbaren Objekts unter Verwenden eines geometrisch motivierten Models
DE202017105598U1 (de) System zum tiefen Verstärkungslernen für Robotermanipulation
DE102018130924A1 (de) Systeme und Verfahren zur dynamischen Gesichtsanalyse mittels eines rekurrenten neuronalen Netzes
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE102018114929A1 (de) System und Verfahren für augennahes Lichtfeldrendering für eine interaktive dreidimensionale Computergraphik mit weitem Blickfeld
DE102013020614A1 (de) Mit Mehrfachauflösung konsistente Rastereinteilung
DE102008034518B4 (de) Verfahren zur Konstruktion einer Fläche einer auf einer Partikelmethode basierenden Fluidkörpersimulation und Speichermedium mit Programm dafür
DE102012213643A1 (de) Multitthread-Physik-Engine mit Impulsweiterleitung
DE102018009315A1 (de) Verfahren tiefgehenden Lernens zum Trennen von Reflexions- und Übertragungsbildern, die an einer halbreflektierenden Oberfläche in einem Computerbild einer Realweltszene sichtbar sind
DE69924230T2 (de) Verfahren zur Modellierung von durch Oberflächenelemente dargestellten grafischen Objekten
DE102019106996A1 (de) Darstellen eines neuronalen netzwerks unter verwendung von pfaden innerhalb des netzwerks zum verbessern der leistung des neuronalen netzwerks
DE102020118860A1 (de) Techniken zum vorladen von texturen beim rendering von graphik
DE102019134020A1 (de) Dekompprimierungstechniken zur verarbeitung komprimierter daten, die für künstliche neuronale netzwerke geeignet sind
DE102019101871A1 (de) Verfahren und Vorrichtung zum Gewinnen von Abtastpositionen von Textuieroperationen
DE102018128699A1 (de) Einstellen einer Winkelabtastrate während eines Renderings unter Verwendung von Blickinformationen
EP2457219B1 (de) Verfahren und anordnung zur generierung von darstellungen anisotroper eigenschaften sowie ein entsprechendes computerprogramm und ein entsprechendes computerlesbares speichermedium
DE19637463A1 (de) Verfahren zur Anzeige von geometrischen Objektoberflächen
DE102020108526A1 (de) Adaptive pixelabtastreihenfolge für zeitlich dichtes rendern
DE102020101525A1 (de) Blind-spot-faltungsarchitekturen und bayessche bildwiederherstellung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06T0015700000

Ipc: G06T0013200000

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final

Effective date: 20121127