15. September 2022 Hyperganic Group GmbH H55785PC AB
Verfahren zum Erzeugen eines dreidimensionalen Modells eines Objektes zum Steuern eines 3D-Druckers
Gebiet der Erfindung
Die Erfindung betrifft ein Verfahren zum Erzeugen eines 3D-Modells eines physischen Objektes. Mittels aus dem erzeugten 3D-Modell abgeleiteten Steueranweisungen kann ein 3D-Drucker gesteuert werden, um das Objekt in dem 3D-Drucker zu drucken.
Hintergrund der Erfindung
Im Bereich des 3D-Drucks ist es bekannt, physische Objekte (d.h. in einem 3D- Drucker zu druckende Objekte) durch virtuelle 3D-Modelle zu repräsentieren. Beispielsweise ist es bekannt, die Oberfläche eines physischen Objektes in dem 3D- Modell anhand einer Anzahl von Dreiecken zu beschreiben - eine solche Art der Objektrepräsentation wird auch als Oberflächentriangulation bezeichnet. Eine alternative Art ein physisches Objekt mittels eines 3D-Modells zu repräsentieren, ist die Verwendung von Kurven, die die Oberflächen des physischen Objektes im 3D- Modell beschreiben, etwa Bezier-Kurven. Aus den 3D-Modellen können Druckdaten abgeleitet werden, die von dem 3D-Drucker interpretierbar sind, um das Objekt zu drucken.
Die genannten Arten der Objektrepräsentation eignen sich zwar, um in einer computergestützten Designanwendung möglichst realistische 3D-Modelle zu erzeugen. Nachteilig hierbei ist allerdings, dass beispielsweise Transformationen, die auf das
3D-Modell angewandt werden müssen, sehr rechenintensiv sind. Komplexe Operationen, etwa eine Simulation einer Deformation eines 3D-Modells aufgrund auf das 3D-Modell einwirkender äußerer Kräfte, sind noch rechenintensiver und können in vielen Fällen nur dann effizient durchgeführt werden, wenn ausreichend viel Arbeitsspeicher und Rechenleistung zur Verfügung stehen.
Ein weiterer Nachteil der genannten Objektrepräsentationen besteht darin, dass mit den 3D-Modellen nur die Oberfläche selbst beschrieben wird, nicht aber das innerhalb der Oberfläche liegende Volumen des Objektes. Dieser Nachteil hat zur Folge, dass innenliegende Volumenbereiche, die beispielsweise mit einem anderen Material gedruckt werden sollen, als unabhängige 3D-Modelle beschrieben werden müssen. Dasselbe gilt für Oberflächenbereiche, die zwar mit dem gleichen Material wie die übrigen Oberflächenbereiche aber mit einer anderen Farbe gedruckt werden sollen - hier muss jeder Oberflächenbereich, der eine andere Farbe ausweist als die benachbarten Oberflächenbereiche, in einem separaten 3D-Modell beschrieben werden. Für den Druck müssen dieses separaten 3D-Modelle zusammengeführt werden.
Aufgabe der Erfindung
Aufgabe der vorliegenden Erfindung ist daher, ein Verfahren zum Erzeugen eines 3D-Modells eines physischen Objektes (d.h. eines in einem 3D-Drucker zu druckenden Objektes) bereitzustellen, welches die vorstehend genannten Nachteile vermeidet und eine einfachere und flexiblere Manipulation des 3D-Modells ermöglicht.
Erfindungsgemäße Lösung
Die Aufgabe wird durch ein Verfahren mit den Merkmalen nach dem unabhängigen Patentanspruch gelöst. Vorteilhafte Weiterbildungen der Erfindung sind in den abhängigen Ansprüchen angegeben.
Bereitgestellt wird demnach ein Verfahren zum Erzeugen eines 3D-Modells eines physischen Objektes (d.h. ein in einem 3D-Drucker zu druckendes Objekt) zur Steuerung eines 3D-Druckers mittels aus dem erzeugten 3D-Modell abgeleiteten Steueran Weisungen zum Drucken des Objektes in dem 3D-Drucker, wobei eine Oberflächenrepräsentation des physischen Objektes in ein das 3D-Modell repräsentierendes Voxel-Modell umgewandelt wird, wobei die Oberflächenrepräsentation in eine Anzahl von Volumenbereichen unterteilt wird, wobei jeder Volumenbereich durch eine erste Baumstruktur repräsentiert wird, wobei die erste Baum Struktur zumindest einen Wurzelknoten umfasst, und eine vorbestimmte maximale erste Anzahl von Hierarchieebenen aufweist und jedem Knoten einer Hierarchieebene eine vorbestimmte zweite Anzahl von Unterknoten zuordenbar sind, wobei der Wurzelknoten den Volumenbereich repräsentiert, die Unterknoten des Wurzelknotens Teilvolumenbereiche des durch den Wurzelknoten repräsentierten Volumenbereichs repräsentieren, die Unterknoten eines Unterknotens Teilvolumenbereiche des durch den jeweiligen Unterknoten repräsentierten Teilvolumenbereichs repräsentieren, und der Volumenbereich und die Teilvolumenbereiche jeweils ein Voxel des Voxel-Modells repräsentieren, jedem Voxel ein Ab Standsattribut zugeordnet ist, in dem der Ab stand des jeweiligen Voxels zur Oberfläche des Objektes speicherbar ist, wobei beim Erzeugen des das 3D-Modell repräsentierenden Voxel-Modells für jedes Voxel ein minimaler Abstand zur Oberfläche des Objektes ermittelt wird, wobei für jedes Voxel, dessen betragsmäßiger minimale Abstand unterhalb eines vorbestimmten Schwellenwertes liegt, der Ab stand in dem Ab Standsattribut gespeichert wird,
für jedes Voxel, dessen betragsmäßiger minimaler Abstand oberhalb des vorbestimmten Schwellenwertes liegt, ein vorbestimmter Abstand in dem Abstandsattribut gespeichert wird, und für jeden Teilvolumenbereich der Abstand und / oder der vorbestimmte Abstand der jeweiligen Voxel nur dann gespeichert wird, wenn er (d.h. der Abstand bzw. der vorbestimmte Abstand) zusätzlich ein vorbestimmtes Speicherkriterium erfüllt, und wobei aus der ersten Baumstruktur und den in der ersten Baumstruktur gespeicherten Voxeln die Steueran Weisungen zur Steuerung des 3D-Druckers abgeleitet werden, wobei die Steueran Weisungen Informationen darüber umfassen, an welchen Bereichen in einem Druckraum des 3D-Druckers ein Druckmaterial zum Objekt gehört, wobei diese Bereiche durch jene Voxel bestimmt werden, zu denen ein Ab stand in dem Ab Standsattribut gespeichert ist, und die Steueranweisungen zur Übertragung an den 3D-Drucker bereitgestellt werden.
Im einer besonderen Ausprägung des erfindungsgemäßen Verfahrens kann die Anzahl von Volumenbereichen eins sein, d.h. mit dem einen Volumenbereich kann das gesamte Volumen des zu druckenden Objektes (also das gesamte zu druckende Objekt) beschrieben werden.
Bei größeren zu druckenden Objekten oder bei Objekten, die mit einer besonders hohen Auflösung (z.B. wegen einer besonders hohen Detailgenauigkeit) gedruckt werden müssen, kann es aber vorteilhaft sein, die Oberflächenrepräsentation des zu druckenden Objektes in mehrere Volumenbereiche zu unterteilen. Ein wesentlicher Vorteil besteht hierbei darin, dass die einzelnen Volumenbereiche parallel verarbeitet werden können, was sich insbesondere auf die Verarbeitungsgeschwindigkeit positiv auswirkt - Operationen, die auf dem Voxel-Modell angewandt werden, können so besonders performant durchgeführt werden.
Mit Hilfe der ersten Baumstruktur wird der Volumenbereich in eine Anzahl von Voxel (die Teilvolumenbereiche) unterteilt. Ein Voxel beschreibt hierbei einen quaderförmigen Ausschnitt des Volumenbereiches. In einer besonderen Ausgestaltung der Erfindung können die Voxel würfelförmig sein. Ein Voxel kann wiederum in eine Anzahl von Voxel (Teilvolumenbereiche der Teilvolumenbereiche) unterteilt sein.
Mit der Anzahl der Hierarchieebenen kann vorteilhafterweise die Granularität bzw. die Auflösung des Voxel-Modells "gesteuert" werden. Das bedeutet, dass bei einem durch den Wurzelknoten definierten konstanten Volumenbereich die Auflösung des Volumens mit zunehmender Anzahl der Hierarchieebenen zunimmt. Da jedes Voxel einen bestimmten Speicherbedarf aufweist (um die Informationen des Voxels zu speichern), kann mit Hilfe der Hierarchieebenen der Speicherbedarf für das gesamte Voxel-Modell ebenfalls "gesteuert" werden. Eine weitere Möglichkeit, den Speicherbedarf für ein Voxel-Modell zu steuern, wird weiter unten erläutert.
Der in dem Abstandsattribut gespeicherte Abstand gibt an, dass das jeweilige Voxel zur Oberfläche des zu druckenden Objektes gehört. Der in dem Ab Standsattribut gespeicherte vorbestimmte Abstand gibt an, dass das jeweilige Voxel nicht zur Oberfläche des zu druckenden Objektes gehört.
Der gespeicherte Abstand kann hierbei der minimale Abstand sein.
Das Speichern des Abstandes (bzw. des minimalen Abstandes) und des vorbestimmten Ab standes in dem Ab Standsattribut hat den Vorteil, dass bei einer Manipulation des Voxel-Modells nur jene Voxel verarbeitet werden müssen, die zur Oberfläche gehören. Die Voxel, die nicht zur Oberfläche gehören, können bei der Verarbeitung unberücksichtigt bleiben, was die Performance der Verarbeitung erheblich verbessern kann. Ein Beispiel für eine solche Verarbeitung bzw. Manipulation wäre etwa das Erzeugen einer Textur (beispielsweise einer dreidimensionalen Textur) an bzw. auf der Oberfläche des zu druckenden Objektes.
Werden für Voxel eines Teilvolumenbereichs der Abstand (bzw. der minimale Abstand) und / oder der vorbestimmte Abstand nur dann gespeichert, wenn sie (d.h. der Abstand bzw. der vorbestimmte Abstand) ein vorbestimmtes Speicherkriterium erfüllen, kann einerseits der Speicherbedarf für ein Voxel-Modell erheblich gesenkt werden. Andererseits kann auch die Performance der Verarbeitung noch weiter verbessert werden. Weisen beispielsweise alle Voxel eines Teilvolumenbereichs den selben vorbestimmten Abstand zur Oberfläche auf, dann kann auf das Speichern des vorbestimmten Abstandes in dem jeweiligen Ab Standsattribut verzichtet werden - der vorbestimmte Abstand zur Oberfläche kann dann bei Bedarf in jenem Voxel gespeichert werden, der diesen Teilvolumenbereich repräsentiert (d.h. in dem in der Hierarchie höher bzw. darüber liegenden Voxel). Bei der Verarbeitung des Voxel-Modells muss dann nur mehr dieses darüber liegende Voxel verarbeitet werden.
In einer Ausgestaltung der Erfindung kann es vorteilhat sein, wenn die vorbestimmte maximale Anzahl von Hierarchieebenen drei ist, sodass die erste Baumstruktur maximal drei Hierarchieebenen aufweist, wobei der Wurzelknoten die erste Hierarchieebene ist, die vorbestimmte Anzahl von Unterknoten 4096 ist, sodass j edem Knoten einer Hierarchieebene, mit Ausnahme der untersten Hierarchieebene, 4096 Unterknoten zuordenbar sind, die Knoten der zweiten Hierarchieebene 4096 erste Teilvolumenbereiche des Volumenbereichs repräsentieren, die Knoten der dritten Hierarchieebene jeweils 4096 zweite Teilvolumenberei- che des jeweiligen ersten Teilvolumenbereichs repräsentieren.
Jedem Knoten einer Hierarchieebene, mit Ausnahme der untersten Hierarchieebene, sind vorzugsweise 16 x 16 x 16 Unterknoten (16 Unterknoten in jedes Raumdimension x, y, z) zugeordnet. Alternativ können aber auch 32 x 32 x 4 Unterknoten (oder andere 4096 Unterknoten ergebende Kombinationen) zugordnet
sein. Vorteilhaft ist hierbei, dass damit auch bei lediglich drei Hierarchieebenen eine hohe Auflösung des Gesamtvolumens bzw. der jeweiligen Volumenbereiche erreicht wird.
Versuche haben gezeigt, dass die ersten Baum Strukturen, die jeweils einen Volumenbereich repräsentieren, ungefähr die gleiche Anzahl an Knoten (auf der zweiten und dritten Hierarchieebene) aufweisen (wenn nicht alle Knoten gemäß der unten genannten Speicherkriterien gespeichert werden), sodass für die Bearbeitung bzw. Berechnung der Anzahl von Volumenbereichen die ersten Baumstrukturen jeweils einem anderen Prozessorkem zugeordnet werden und gleichzeitig gewährleistet ist, dass alle Prozessorkerne ungefähr nach der gleichen Zeit die Berechnungen abgeschlossen haben. Damit können alle Prozessorkeme optimal ausgenutzt werden. Sind mehr erste Baum Strukturen zu verarbeiten als Prozessorkerne vorhanden sind, kann zudem vermieden werden, dass die Prozessorkerne ungleichmäßig ausgelastet sind.
4096 Unterknoten können bei 2 Byte pro Unterknoten in 8 kB Arbeitsspeicher (RAM) untergebracht werden. Es hat sich gezeigt, dass 4096 Unterknoten eine weitgehend optimale Ausnutzung des Arbeitsspeichers gewährleisten, also von dem 8 kB großen Arbeitsspeicher im Schnitt am wenigsten ungenutzt bleibt im Vergleich zu anderen Werten für die Anzahl von Unterknoten.
Es kann aber auch Vorteilhaft sein, wenn die Anzahl der ersten Teilvolumenbereiche und die Anzahl der zweiten Teilvolumenbereiche verschieden sind. Beispielsweise kann die zweite Hierarchieebene 8 erste Teilvolumenbereiche aufweisen und die dritte Hierarchieebene kann für jeden ersten Teilvolumenbereich jeweils 4096 zweite Teilvolumenbereiche aufweisen. Damit lässt sich ein 3D-Modell auf der zweiten Hierarchieebene mit einer relativ groben Auflösung beschreiben, während es sich auf der dritten Hierarchieebene mit einer hohen Auflösung beschreiben lässt.
In einer noch weiteren Ausgestaltung kann es vorteilhaft sein, wenn zumindest einigen Knoten der zweiten Hierarchieebene unterschiedlich viele Unterknoten (der dritten Hierarchieebene) zugeordnet werden. Beispielsweise können einigen Konten der zweiten Hierarchieebene jeweils 4096 Unterknoten zugeordnet werden, während den anderen Konten der zweiten Hierarchieebene beispielsweise jeweils 8, 64 oder 512 Unterknoten zugeordnet werden können. Damit können verschiedene Volumenbereiche des 3D-Modells mit unterschiedlicher räumlicher Auflösung repräsentiert werden.
Die vorgenannten Varianten hinsichtlich der Anzahl der jeweiligen Unterknoten können auch kombiniert werden.
Das vorbestimmte Speicherkriterium kann ausgewählt werden aus der Gruppe von Speicherkriterien zumindest umfassend der minimale Abstand des Voxels ist verschieden von den minimalen Abständen der übrigen Voxel des jeweiligen Teilvolumenbereiches (dann wird der Abstand und / oder der vorbestimmte Abstand für jedes Voxel des Teilvolumenbereichs gespeichert), die Differenz zwischen dem Voxel mit dem kleinsten minimalen Abstand und dem Voxel mit dem größten minimalen Abstand des jeweiligen Teilvolumenbereiches liegt oberhalb eines vorbestimmten zweiten Schwellenwertes (auch dann wird der Abstand und / oder der vorbestimmte Abstand für jedes Voxel des Teilvolumenbereichs gespeichert).
Sind die minimalen Abstände der Voxels eines Teilvolumenbereiches verschieden voneinander und liegt die Differenz des Voxels mit dem kleinsten minimalen Abstand und dem Voxel mit dem größten minimalen Abstand unterhalb des eines vorbestimmten zweiten Schwellenwertes, dann kann auf das Speichern des Abstandes und / oder des vorbestimmten Abstandes in den Voxeln des Teilvolumenbereiches verzichtet werden. In diesem Fall kann in dem darüber liegenden Voxel (d.h. in
dem dazugehörigen Voxel auf der darüber liegenden Hierarchieebene) ein gemeinsamer Abstand (z.B. ein Mittelwert der Abstände) bzw. der vorbestimmte Abstand gespeichert werden. Insbesondere für zusammenhängende große außerhalb bzw. innerhalb der Oberfläche des 3D-Modells liegende Volumenbereiche kann dies zu einer erheblichen Reduzierung des Speicherbedarf und der benötigten Rechenleistung führen.
Der zweite Schwellenwert kann der Druckauflösung des 3D-Druckers, vorzugsweise maximal der halben Druckauflösung des 3D-Druckers entsprechen. Damit kann der Speicherbedarf zum Speichern des 3D-Modells vorzugsweise dynamisch an die Druckauflösung verschiedener 3D-Drucker angepasst werden.
Vorteilhaft kann es sein, wenn der vorbestimmte Abstand einen vorbestimmten ersten Abstand (d+«>) und einen vorbestimmten zweiten Abstand (d., ) umfasst, wobei für Voxel, die außerhalb der Oberfläche des Objektes liegen, der vorbestimmten erste Abstand (d+«>) (der vorbestimmte erste Abstand ist für alle außerhalb der Oberfläche liegenden Voxel vorzugsweise identisch), und für Voxel, die innerhalb der Oberfläche des Objektes liegen, der vorbestimmten zweite Abstand (d., ) (der vorbestimmte zweite Abstand ist für alle innerhalb der Oberfläche liegenden Voxel vorzugsweise identisch) in dem Ab Standsattribut gespeichert wird. Ein Voxel liegt dann außerhalb bzw. innerhalb der Oberfläche des Objektes wenn es einen bestimmten Abstand zu Oberfläche aufweist.
Vorteilhaft ist es, wenn in dem Wurzelknoten die Position der ersten Baumstruktur im dreidimensionalen Raum bezogen auf das das 3D-Modell repräsentierende Vo- xel-Modell gespeichert wird. Mit der Position werden die Lage und die Ausrichtung des Voxel-Modells im dreidimensionalen Raum gespeichert. Bei bekannter größer der Voxel der Teilvolumenbereiche bzw. bei bekannter Auflösung der Teilvolumenbereiche und bei bekannter Größe der Teilvolumenbereiche kann anhand der
im Wurzelknoten gespeicherten Position für jedes Voxel die Position im dreidimensionalen Raum ermittelt werden, ohne dass für die Voxel die jeweilige Position gespeichert werden muss.
In einer Ausgestaltung der Erfindung kann jedem Voxel ein weiteres Attribut zuordenbar sein, wobei in dem weiteren Attribut eine Eigenschaft des jeweiligen Voxels gespeichert wird.
Die Eigenschaft kann ausgewählt werden aus der Gruppe zumindest umfassend Farbe, Material, und Kombinationen hiervon, wobei die Eigenschaften nicht auf die hier genannten Eigenschaften beschränkt sind.
Es hat sich als vorteilhaft erwiesen, wenn das weitere Attribut in einer zweiten Baumstruktur gespeichert wird, wobei die zweite Baumstruktur und die erste Baumstruktur denselben Volumenbereich repräsentieren.
Die Anzahl der Hierarchieebenen der ersten Baumstruktur und die Anzahl der Hierarchieebenen der zweiten Baumstruktur können hierbei identisch sein. Jedem Knoten einer Hierarchieebene der zweiten Baumstruktur ist eine vorbestimmte dritte Anzahl von Unterknoten zuordenbar.
Die vorbestimmte dritte Anzahl von Unterknoten kann verschieden zur vorbestimmten zweiten Anzahl von Unterknoten (der ersten Baumstruktur) ist.
Das Vorsehen einer weiteren Baumstruktur für ein weiteres Attribut hat den Vorteil, dass Eigenschaft der Voxel eines 3D-Modells in unterschiedlichen Auflösungen gespeichert werden können, was einen optimierten Speicherbedarf ermöglicht. Besteht ein zu druckendes Objekt beispielsweise nur aus zwei Materialien, wobei große zusammenhängende Volumenbereiche aus dem gleichen Material bestehen, kann diese Eigenschaft mit geringem Speicherbedarf effizient gespeichert werden (in der zweiten Baumstruktur mit geringer Auflösung). Die Abstände der Voxel zur
Oberfläche desselben zu druckenden Objektes können hingegen in der ersten Baumstruktur mit hoher Auflösung gespeichert werden.
Das Vorsehen einer weiteren Baumstruktur bietet auch hinsichtlich Verarbeitungseffizienz erhebliche Vorteile. Einerseits können bei auf ein 3D-Modell angewandte Transformationen die Baum Strukturen parallel verarbeitet werden. Andererseits können die Berechnungsoperationen minimiert werden, wenn jede Baumstruktur die für die jeweilige Eigenschaft der Voxel optimale Auflösung aufweist.
Die Steueran Weisungen können Informationen zu dem in dem weiteren Attribut gespeicherten Eigenschaften umfassen.
Die Gruppe der Speicherkriterien kann ferner umfassen, dass der Attributswert des weiteren Attributs verschieden ist von den Attributswerten des weiteren Attributs der übrigen Voxel des jeweiligen Teilvolumenbereiches. Damit können auch die weiteren Baum Strukturen hinsichtlich ihres Speicherbedarfs optimiert werden.
Kurzbeschreibung der Figuren
Weitere Einzelheiten und Merkmale des erfindungsgemäßen Verfahrens sowie konkrete, insbesondere vorteilhafte Ausgestaltungen des erfindungsgemäßen Verfahrens ergeben sich aus der nachfolgenden Beschreibung in Verbindung mit der Zeichnung. Es zeigt:
Fig. 1 ein System zum Erzeugen eines ein 3D-Modell repräsentierendes Voxel- Modells;
Fig. 2 ein Beispiel eines Voxel-Models mit einer dazugehörigen Baumstruktur;
Fig. 3 eine beispielhafte Ebene eines Voxel-Models zur Verdeutlichung der Speicherung der Ab Standsattribute; und
Fig. 4 den zum Beispiel gemäß Fig. 3 dazugehörigen Ausschnitt einer Baumstruktur.
Detaillierte Beschreibung der Erfindung
Fig. 1 zeigt ein Beispiel eines Systems zum Erzeugen eines ein 3D-Modell repräsentierendes Voxel-Modells.
Das System besteht hier aus einer Datenverarbeitungseinrichtung und einem 3D- Drucker. Die Datenverarbeitungseinrichtung erzeugt Steueran Weisungen und übergibt diese an den 3D-Drucker. 3D-Drucker sind aus dem Stand der Technik allgemein bekannt. Mit Hilfe der Steueran Weisungen wird der 3D-Drucker veranlasst ein (physisches) Objekt zu drucken, d.h. herzustellen. Die Steueranweisungen werden von der Datenverarbeitungseinrichtung in Abhängigkeit von dem jeweils verwendeten 3D-Drucker erzeugt.
Von der Datenverarbeitungseinrichtung sind in Fig. 1 nur die für das erfmdungsge- mäße Verfahren notwendigen Komponenten gezeigt, nämlich eine Speichereinrichtung, die hier als Arbeitsspeicher ausgeführt ist, und ein oder mehrere Prozessoren. Unter dem Begriff "mehrere Prozessoren" ist hier auch ein Prozessor mit mehreren Prozessorkernen zu verstehen.
Wegen der vorteilhaften Ausgestaltung des Voxel-Modells, wie es weiter unten näher beschrieben wird, kann das erfindungsgemäße Verfahren aber auch auf einem Prozessor mit nur einem Prozessorkern effizient ausgeführt werden. Mehrere Prozessoren und/oder Prozessoren mit mehreren Prozessorkernen sind jedoch hinsichtlich der parallelen Verarbeitung von Vorteil, etwa wenn auf das 3D-Modell, das durch eine oder mehrere Baum Strukturen repräsentiert wird, Transformationen oder andere das 3D-Modell modifizierende Operationen ausgeführt werden müssen. Mehrere Baum Strukturen können so parallel verarbeitet werden.
Im Arbeitsspeicher werden die das 3D-Modell repräsentierenden Baum Strukturen gespeichert.
Das erfindungsgemäße Voxel-Modell bzw. die das Voxel-Modell speichernden Baumstrukturen sind so ausgestaltet, dass einerseits ein effizientes Speichern des Voxel-Modells und andererseits ein effizientes Bearbeiten des Voxel-Modells gewährleistet werden. Wie weiter unten näher ausgeführt wird, muss nicht jedes Voxel des Voxel-Modells gespeichert werden, was zu einer erheblichen Reduktion der zu speichernden Daten und damit einhergehend zu einer erheblich performanteren Berechnung von auf das Voxel-Modell auszuführenden Operationen führt.
Fig. 2 zeigt ein Beispiel eines erfindungsgemäßen Voxel-Modells mit einer dazugehörigen Baumstruktur.
Das Voxel-Modell umfasst einen Volumenbereich VB, der hier einen würfelförmigen Raum beschreibt, in dem das 3D-Modell angeordnet ist (bzw. in dem das zu druckende Objekt modelliert wird).
Bei größeren zu druckenden Objekten können auch mehrere Volumenbereiche VB vorgesehen sein, die jeweils einen Teil des 3D-Modells umfassen. Dies hat den technischen Vorteil, dass die mehreren Volumenbereiche parallel verarbeitet werden können, etwa wenn Operationen, z.B. Transformationen, auf dem 3D-Modell ausgeführt werden.
Der Volumenbereich VB wird mit Hilfe einer Baumstruktur beschrieben bzw. in einer Baumstruktur gespeichert, wobei ein Wurzelknoten WK der Baumstruktur den Volumenbereich VB als solches repräsentiert. Die Baumstruktur weist mehrere Hierarchieebenen HEI, HE2, HE3 auf, wobei der Wurzelknoten die oberste bzw. die erste Hierarchieebenen HEI repräsentiert.
In dem Wurzelknoten können die Position (etwa die 3D-Koordinaten) und gegebenenfalls die räumliche Ausrichtung und die räumliche Ausdehnung des Volumenbereiches VB gespeichert werden. Basierend auf diesen Daten kann die Position der Voxel in den darunter liegenden Hierarchieebenen HE2, HE3 berechnet werden, sodass in den Voxeln der darunter liegenden Hierarchieebenen ihre jeweilige Position nicht gespeichert werden muss.
In einer vorteilhaften Ausgestaltung der Erfindung weist das Voxel-Modell bzw. die dazugehörige Baumstruktur drei Hierarchieebenen auf.
Der Volumenbereich VB weist eine Anzahl erster Teilvolumenbereiche TVB1 auf, wobei jeder Teilvolumenbereich TVB1 ein Voxel der zweiten Hierarchieebne HE2 repräsentiert. In Fig. 2 sind der besseren Übersicht halber 8 Teilvolumenbereiche TVB1 gezeigt. Besonders vorteilhaft ist es aber, wenn der Volumenbereich VB 4096 Teilvolumenbereiche TVB1 aufweist, wobei in jede Richtung 16 Teilvolumenbereiche vorgesehen sind (also 16 x 16 x 16 Teilvolumenbereiche).
Jeder Teilvolumenbereich TVB1 wird in der Baumstruktur durch einen Knoten der zweiten Hierarchieebene HE2 repräsentiert. Bei den Knoten der zweiten Hierarchieebene HE2 handelt es sich um Sohnknoten des Wurzelknotens WK. Sind in der zweiten Hierarchieebene des Voxel-Modells 4096 Teilvolumenbereiche TVB1 vorgesehen, dann weist die Baumstruktur in der zweiten Hierarchieebene ebenfalls 4096 Knoten auf.
Jeder Teilvolumenbereich TVB1 der zweiten Hierarchieebene kann eine Anzahl zweiter Teilvolumenbereiche TVB2 aufweisen, wobei jeder Teilvolumenbereich TVB2 ein Voxel der dritten Hierarchieebne HE3 repräsentiert. Jeder Teilvolumenbereich TVB2 wird in der Baumstruktur durch einen Knoten der dritten Hierarchieebene HE3 repräsentiert. Bei den Knoten der dritten Hierarchieebene HE3 handelt es sich um Sohnknoten des jeweiligen Knotens der zweiten Hierarchieebene.
Gemäß einer vorteilhaften Ausgestaltung der Erfindung muss nicht jeder Teilvolumenbereich TVB1 der zweiten Hierarchieebene in Teilvolumenbereiche TVB2 auf der dritten Hierarchieebene unterteilt werden, wie sich aus der nachfolgenden Beschreibung ergibt.
Bei dem in Fig. 2 gezeigten Beispiel ist nur der mit der Ziffer 2 gekennzeichnete Teilvolumenbereich TVB1 der zweiten Hierarchieebene in Teilvolumenbereiche TVB2 der dritten Hierarchieebene unterteilt. In Fig. 2 sind der besseren Übersicht halber für den mit der Ziffer 2 gekennzeichneten Teilvolumenbereich 8 Teilvolumenbereiche TVB2 in der dritten Hierarchieebene HE3 gezeigt. Besonders vorteilhaft ist es aber, wenn die Teilvolumenbereiche TVB1 jeweils 4096 Teilvolumenbereiche TVB2 aufweisen, wobei in jede Richtung 16 Teilvolumenbereiche vorgesehen sind (also 16 x 16 x 16 Teilvolumenbereiche).
Sind in der dritten Hierarchieebene HE3 des Voxel-Modells für einen Teilvolumenbereich TVB1 der zweiten Hierarchieebene 4096 Teilvolumenbereiche TVB2 der dritten Hierarchieebene vorgesehen, dann weist die Baumstruktur in der dritten Hierarchieebene HE3 zu diesem Teilvolumenbereich ebenfalls 4096 Knoten auf.
Sofern alle Teilvolumenbereiche TVB1 der zweiten Hierarchieebene 4096 Teilvolumenbereiche TVB2 der dritten Hierarchieebene aufweisen, dann weist die dritte Hierarchieebene ca. 16 Millionen Teilvolumenbereiche TVB2 auf (d.h. 4096 x 4096 Teilvolumenbereiche). Der gesamte Volumenbereich VB, in dem das 3D-Mo- dell modelliert wird, kann demnach in etwa 16 Millionen Teilvolumenbereiche TVB2 unterteilt werden.
Für die meisten praktischen Anwendungen ist diese Auflösung des Volumenbereiches VB in der Regel ausreichend. Sofern eine größere Detailgenauigkeit beim ausgedruckten Objekt gewünscht ist, kann die räumliche Ausdehnung des Volumenbereichs VB reduziert werden, was zu kleineren Voxeln auf der zweiten und dritten
Hierarchieebene führt. Gegebenenfalls muss ein Teil des 3D-Modells mittels weitere Volumenbereiche beschrieben werden.
Erfindungsgemäß ist es vorgesehen, dass jedem Voxel ein Ab Standsattribut zugeordnet ist, in dem der Abstand des jeweiligen Voxels zur Oberfläche des Objektes, d.h. zur Oberfläche des 3D-Modells speicherbar ist. Der Wert des Ab Standsattributs wird in dem jeweiligen den Knoten der Baumstruktur gespeichert.
Sind in den Knoten auf der dritten Hierarchieebene HE3 Abstandswerte gespeichert, muss in den dazugehörigen Knoten der zweiten Hierarchieebene HE2 kein Abstandswert gespeichert werden.
Weisen hingegen alle Voxel eines Teilvolumenbereichs TVB2 in der dritten Hierarchieebene HE3 denselben Abstand zur Oberfläche des 3D-Modells auf, kann auf das Speichern des Abstandes in den entsprechenden Knoten der Baumstruktur verzichtet werden - hier ist es ausreichend, den Abstand lediglich in dem dazugehörigen Knoten der zweiten Hierarchieebene HE2 zu speichern. Die entsprechenden Konten in der dritten Hierarchieebene HE3 können leer bleiben und müssen nicht gespeichert werden - dies kann einerseits zu einer erheblichen Reduktion des Speicherbedarfs führen, andererseits können Operationen auf der Baumstruktur erheblich beschleunigt werden. Ein konkretes Beispiel hierzu wird unten mit Bezug auf Fig. 3 beschrieben.
Bei dem in Fig. 2 gezeigten Beispiel des Voxel-Modells befindet sind das 3D-Mo- dell vollständig in dem mit der Ziffer 2 gekennzeichneten Voxel der zweiten Hierarchieeben HE2. Die übrigen Voxel der zweiten Hierarchieeben HE2 befinden sich demnach alle außerhalb des 3D-Modells und gehören somit nicht zum 3D-Modell. Entsprechend ist es vorteilhaft, die Abstandswerte nur für jene Voxel der dritten Hierarchieeben HE3 in der Baumstruktur (in den Sohnknoten, die zu dem mit der Ziffer 2 gekennzeichneten Knoten der zweiten Hierarchieebene HE2 gehören) zu
speichem, die zu dem mit der Ziffer 2 gekennzeichneten Voxel der zweiten Hierarchieeben HE2 gehören. Für alle übrigen Knoten der zweiten Hierarchieebene HE2 kann auf das Speichern von Sohnknoten (Knoten der dritten Hierarchieebene HE3) verzichtet werden. Bei dem in Fig. 2 gezeigten Beispiel mit jeweils maximal 8 Knoten in der dritten Hierarchieebene HE3 müssen anstelle von 64 Knoten lediglich 8 Knoten der dritten Hierarchieebene HE3 gespeichert werden.
Insgesamt erhält man auf diese Weise eine speicheroptimierte Baumstruktur, mit der sich das 3D-0bjekt dennoch präzise modellieren lässt. Die Vorteile dieser Baumstruktur machen sich insbesondere bei 3D-Modellen bemerkbar, bei denen der Volumenbereich VB Teilvolumenbereiche TVB1 aufweist, die nicht zum 3D- Modell gehören - je mehr solcher Teilvolumenbereiche TVB1 vorhanden sind, umso geringer ist der Speicherbedarf für das Speichern der gesamten Baumstruktur.
Es kann vorgesehen sein, dass für die Voxel des 3D-Modells zusätzlich zu den Abstandswerten weitere Attribute gespeichert werden müssen, beispielsweise ein Attribut, das die Farbe der Voxel und/oder das Material, mit dem das Voxel gedruckt werden soll, angibt.
Erfindungsgemäß werden die Werte der zusätzlichen Attribute in einer separaten Baumstruktur gespeichert, wobei es vorteilhaft ist, wenn für jedes Attribut eine separate Baumstruktur vorgesehen wird. Jede weitere Baumstruktur weist die gleiche Anzahl von Hierarchieebenen auf, wie die Baumstruktur, in der Ab Standsattribute gespeichert werden. Alle Baumstrukturen repräsentieren hierbei denselben Volumenbereich.
Das Speichern der Attributswerte der weiteren Attribute in den Knoten der jeweiligen Baumstruktur erfolgt in analoger Weise wie vorstehend mit Bezug auf das Abstandsattribut erläutert. Insbesondere kann auf das Speichern von Attributswerten in der dritten Hierarchieebene HE3 verzichtet werden, wenn die zu einem Teilvolumenbereich TVB1 gehörenden Voxel alle denselben Attributswert (z.B. dieselbe
Farbe oder dasselbe Material) aufweisen - es ist dann ausreichend, wenn der entsprechende Attributswert n dem dazugehörigen Knoten der zweiten Hierarchieebene HE2 gespeichert wird.
Das Speichern von unterschiedlichen Attributen in getrennten Baumstrukturen hat den Vorteil, dass das 3D-Modell hinsichtlich eines Attributs unabhängig von den anderen Attributen verarbeitet werden kann. Ein weiterer wesentlicher Vorteil liegt darin, dass die Baumstruktur für jedes Attribut speicheroptimiert erzeugt werden kann - weisen beispielweise die Voxel eines Teilvolumenbereichs TVB2 verschiedene Abstandswerte aber identische Farbwerte auf, dann werden die Abstandswerte in den Knoten der dritten Hierarchieebene HE3 gespeichert und der Farbewert kann in dem dazugehörigen Knoten der zweiten Hierarchieebene HE2 gespeichert werden, auf das Speichern der Farbwerte in den Knoten der dritten Hierarchieebene HE3 kann verzichtet werden.
Fig. 3 zeigt eine beispielhafte Ebene eines Voxel-Modells (Schnitt durch das Vo- xel-Modell) zur Verdeutlichung der Speicherung der Ab Standsattribute und Fig. 4 zeigt den zum Beispiel gemäß Fig. 3 dazugehörigen Ausschnitt einer Baumstruktur.
Das dem Fig. 3 und Fig. 4 zugrundeliegende Voxel-Modell weist 64 Voxel in der zweiten Hierarchieebene (4 Voxel in jeder Dimension) und für jedes Voxel der zweiten Hierarchieebene jeweils 64 Voxel in der dritten Hierarchieebene (4 Voxel in jeder Dimension) auf.
Die hier gezeigte Ebene umfasst einen Ausschnitt eines 3D-Modells, das einen entsprechenden Ausschnitt des zu druckenden Objektes repräsentiert.
Die hier gezeigte Ebene des Voxel-Modells umfasst 16 Voxel VI bis VI 6 in der zweiten Hierarchieebene HE2. Entsprechend weist die Baum Struktur auch 16 Knoten Kl bis K16 in der zweiten Hierarchieebene auf. Die übrigen Knoten der zweiten Hierarchieebene sind in Fig. 4 nicht gezeigt.
Die Voxel V6, V7, VI 0 und VI 1 umfassen den Ausschnitt des 3D-Modells. Diese Voxel weisen jeweils 16 Voxel in der dritten Hierarchieebene auf, wobei in diesem Beispiel davon ausgegangen wird, dass die jeweiligen Voxel in der dritten Hierarchieebene zumindest teilweise verschiedene Abstände zur Oberfläche des 3D-Mo- dells aufweisen. Dementsprechend weist die Baumstruktur zu den entsprechenden Knoten K6, K7, K10 und Kl l jeweils 16 Unterknoten auf der dritten Hierarchieebene auf, die die Voxel in der dritten Hierarchieebene repräsentieren. In Fig. 4 sind für den Knoten K6 alle 16 Unterknoten 1 bis 16 der dritten Hierarchieebene gezeigt, während aus Gründen der Übersichtlichkeit für die Knoten K7, K10 und Kl l jeweils nur die Unterknoten 1 und 16 der dritten Hierarchieebene gezeigt sind. In den Unterknoten 1 bis 16 des Knotens K6 wird der jeweilige Abstand zur Oberfläche des 3D-Modells gespeichert, sodass in den Unterknoten 1, 2, 5, 6, 9, 10, 13 und 14 der Wert +co (= das jeweilige Voxel liegt außerhalb des 3D-Modells) gespeichert wird, in den Unterknoten 8, 12 und 16 der Wert -co (= das jeweilige Voxel liegt innerhalb der Oberfläche des 3D-Modells) gespeichert wird, und in den Unterknoten 3, 4, 7, 11 und 15 der konkrete Abstandswert (hier beispielhaft der Wert 0) gespeichert wird. Für die Unterknoten der Knoten K7, K10 und Kl 1 wird analog verfahren.
Die übrigen Voxel VI bis V5, V8, V9, und V12 bis V16 liegen vollständig außerhalb der Oberfläche des 3D-Modell. Erfindungsgemäß weisen daher die Voxel VI bis V5, V8, V9, und V12 bis V16 der zweiten Hierarchieebene keine Voxel in der dritten Hierarchieebene auf, sodass auf entsprechende Knoten in der dritten Hierarchieebene der Baumstruktur verzichtet werden kann. In den dazugehörigen Knoten Kl bis K5, K8, K9, und K12 bis K16 der zweiten Hierarchieebene der Baumstruktur wird daher der Abstandswert +co (= vorbestimmten erste Abstand) gespeichert, wobei +co angibt, dass das entsprechende Voxel der zweiten Hierarchieebene außerhalb des 3D-Modells liegt und damit nicht zum zu druckenden Objekt gehört.
Wie aus diesem Beispiel hervorgeht, müssen für die hier gezeigte Ebene des Voxel- Modells lediglich zu den Knoten K6, K7, K10 und Kl l jeweils 16 Unterknoten (insgesamt also 64 Knoten der Hierarchieebene HE3) in der Baumstruktur gespeichert werden. Für die übrigen Knoten Kl bis K5, K8, K9, und K12 bis K16 kann auf die jeweils 16 Unterknoten (insgesamt 192 Knoten der Hierarchieebene HE3) verzichtet werden.
Basierend auf dem Voxel-Modell bzw. basierend auf der Baumstruktur werden die Steueran Weisungen zur Steuerung des 3D-Druckers abgeleitet bzw. erzeugt. In einer Ausgestaltung der Erfindung werden hierbei für jede Ebene des Voxel-Modells Ebenes entsprechende Steueran Weisungen erzeugt, wobei die Steueran Weisungen angeben, welches Voxel zum zu druckenden Objekt gehört. Hierzu können die in der Baumstruktur gespeicherten Abstandswerte verwendet werden - ist der Abstandswert verschieden von ±co gehört das entsprechende Voxel zum zu druckenden Objekt.
Vorteilhaft ist es hierbei, wenn zunächst die zweite Hierarchieebene der Baumstruktur verarbeitet wird: ist in einem Knoten der zweiten Hierarchieebene ein Abstandswert gespeichert, wird davon ausgegangen, dass auch sämtliche Unterknoten dieses Knotens diesen Abstandswert aufweisen (auch wenn diese Unterknoten in der Baumstruktur nicht gespeichert sind). Erfindungsgemäß werden dann für diese in der Baumstruktur nicht gespeicherten Knoten entsprechende Steueran Weisungen erzeugt. Eine Iteration über die Unterknoten wird so vermieden. ist in einem Knoten der zweiten Hierarchieebene kein Abstandswert gespeichert, müssen diese in den dazugehörigen Unterknoten gespeichert sein. Basierend auf den in den Unterknoten gespeicherten Ab standwerten werden dann entsprechende Steueran Weisungen generiert.
Die Steueran Weisungen können in der Datenverarbeitungseinrichtung zur Übertragung an den 3D-Drucker gespeichert werden.