DE102021004026A1 - Physikbasierte Manipulation - Google Patents

Physikbasierte Manipulation Download PDF

Info

Publication number
DE102021004026A1
DE102021004026A1 DE102021004026.0A DE102021004026A DE102021004026A1 DE 102021004026 A1 DE102021004026 A1 DE 102021004026A1 DE 102021004026 A DE102021004026 A DE 102021004026A DE 102021004026 A1 DE102021004026 A1 DE 102021004026A1
Authority
DE
Germany
Prior art keywords
simulation
scene
steps
manipulation
physical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021004026.0A
Other languages
English (en)
Inventor
Jui-Hsien Wang
Jeremie Dumas
Daniel Kaufman
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.)
Adobe Inc
Original Assignee
Adobe 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 Adobe Inc filed Critical Adobe Inc
Publication of DE102021004026A1 publication Critical patent/DE102021004026A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04815Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/24Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2004Aligning objects, relative positioning of parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2016Rotation, translation, scaling

Abstract

Beschrieben werden Systeme und Verfahren zum 3D-Modellieren (3D dreidimensional). Ausführungsformen des erfinderischen Konzeptes sind konfiguriert zum Empfangen einer Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung, Durchführen einer physikalischen Simulation auf Grundlage der Manipulationseingabe, wobei die physikalische Simulation mehrere Simulationsschritte umfasst, die auf Grundlage eines Satzes von Bewegungsrandbedingungen, die für die statisch 3D-modellierende Anwendung konfiguriert sind, durchgeführt werden, und Vornehmen einer Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage der physikalischen Simulation.

Description

  • Hintergrund
  • Das Nachfolgende betrifft allgemein das technologische Gebiet des 3D-Modellierens (3D dreidimensional).
  • Das 3D-Modellieren oder die 3D-Computergrafik ist eine Technologie zum Entwickeln einer mathematischen Darstellung einer beliebigen Oberfläche eines Objektes in drei Dimensionen unter Nutzung von angepasster Software. 3D-Modellierende Computersoftware wird zum Erzeugen von 3D-Modellen benutzt. In einigen Fällen stellen 3D-Modelle einen physischen bzw. physikalischen Körper unter Nutzung einer Sammlung von Punkten in einem dreidimensionalen Raum dar. Diese Punkte werden durch verschiedene geometrische Entitäten, so beispielsweise Dreiecke, Linien, gekrümmte Oberflächen und dergleichen, verbunden. 3D-Modelle können auf verschiedenen Gebieten der Industrie benutzt werden, darunter Computerspiele, die medizinische Forschung, die Architektur und das computergestützte Design (CAD). Die Designer von 3D-Modellen können ein erstelltes 3D-Modell aus verschiedenen Richtungen und von verschiedenen Betrachtungspunkten aus betrachten und Änderungen oder Verbesserungen auf Grundlage des 3D-Modells vornehmen.
  • Das Bearbeiten von 3D-Modellen mit herkömmlichen 3D-Modellierungswerkzeugen ist ein zeitintensiver Prozess. 3D-Modellierungswerkzeuge können beispielsweise erfordern, dass ein Nutzer Positions- und Orientierungsvariablen manuell bearbeitet. Des Weiteren verhindern herkömmliche 3D-Modellierungswerkzeuge nicht, dass Objekte einander überlappen. Daher benötigt das Anordnen von mehreren Objekten in einer 3D-Szene gegebenenfalls viele Bearbeitungsiterationen, um sicherzustellen, dass die Objekte auf natürliche Weise angeordnet werden. Es besteht im Stand der Technik daher Bedarf an verbesserten 3D-Modellierungswerkzeugen, die ermöglichen, dass Nutzer Objekte in einer 3D-Szene schnell und leicht manipulieren.
  • Zusammenfassung
  • Die vorliegende Offenbarung beschreibt Systeme und Verfahren zum Bearbeiten einer 3D-Szene (3D dreidimensional). Ausführungsformen des erfinderischen Konzeptes erfassen das Bearbeiten von Eingaben von einer 3D-modellierenden Anwendung (3D-Modellierungsanwendung), das Übersetzen der Eingaben in Simulationsparameter für eine Physik-Engine und das Durchführen einer randbedingungsbehafteten Simulation an Objekten in der 3D-Szene. Die Randbedingungen der Simulation sind insbesondere dafür konfiguriert, eine 3D-Szene beispielsweise dadurch zu bearbeiten, dass eine Bewegung gedämpft, die Übertragung eines Impulses zwischen Objekten beschränkt, die Überlappung von Objekten verhindert und dabei versucht wird, die angeforderte Transformation zu erfüllen. Sobald die Simulation fertiggestellt ist, werden die Ergebnisse benutzt, um die Position und Orientierung von Objekten in der 3D-Szene zu modifizieren.
  • Beschrieben werden ein Verfahren, eine Einrichtung und ein nichttemporäres computerlesbares Medium zum 3D-Modellieren. Ausführungsformen des Verfahrens, der Einrichtung und des nichttemporären computerlesbaren Mediums sind konfiguriert zum Empfangen einer Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung, Durchführen einer physikalischen Simulation auf Grundlage der Manipulationseingabe, wobei die physikalische Simulation mehrere Simulationsschritte umfasst, die auf Grundlage eines Satzes von Bewegungsrandbedingungen, die für die statisch 3D-modellierende Anwendung konfiguriert sind, durchgeführt werden, und Vornehmen einer Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage der physikalischen Simulation.
  • Beschrieben werden ein Verfahren, eine Einrichtung und ein nichttemporäres computerlesbares Medium zum 3D-Modellieren. Ausführungsformen des Verfahrens, der Einrichtung und des nichttemporären computerlesbaren Mediums sind konfiguriert zum Empfangen einer Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung, Identifizieren eines Satzes von Bewegungsrandbedingungen, Durchführen von mehreren Simulationsschritten auf Grundlage der Manipulationseingabe und der Bewegungsrandbedingungen, wobei jeder der mehreren Simulationsschritte auf Grundlage eines anderen Satzes von Simulationsparametern durchgeführt wird, und Vornehmen einer Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage eines Ergebnisses der mehreren Simulationsschritte.
  • Beschrieben werden eine Einrichtung und ein Verfahren zum 3D-Modellieren. Ausführungsformen der Einrichtung und des Verfahrens beinhalten eine 3D-modellierende Anwendung mit Konfigurierung zum Darstellen einer 3D-Szene, eine Physik-Engine mit Konfigurierung zum Durchführen einer physikalischen Simulation an der 3D-Szene auf Grundlage einer Manipulationseingabe von der 3D-modellierenden Anwendung, wobei die physikalische Simulation mehrere Simulationsschritte umfasst, die auf Grundlage eines Satzes von Bewegungsrandbedingungen durchgeführt werden, und eine Schnittstellenkomponente mit Konfigurierung zum Umwandeln der Manipulationseingabe von der 3D-modellierenden Anwendung in einen Satz von Parametern zum Durchführen der physikalischen Simulation.
  • Figurenliste
    • 1 zeigt ein Beispiel für einen Prozess zum 3D-Modellieren (3D dreidimensional) entsprechend Aspekten der vorliegenden Offenbarung.
    • 2 zeigt ein Beispiel für ein System zum 3D-Modellieren entsprechend Aspekten der vorliegenden Offenbarung.
    • 3 zeigt ein Beispiel für einen 3D-Manipulationsprozess entsprechend Aspekten der vorliegenden Offenbarung.
    • 4 und 5 zeigen Beispiele für das Bearbeiten einer 3D-Szene entsprechend Aspekten der vorliegenden Offenbarung.
    • 6 zeigt ein Beispiel für einen Algorithmus zur physikalischen Simulation entsprechend Aspekten der vorliegenden Offenbarung.
    • 7 zeigt ein Beispiel für einen Prozess zum 3D-Modellieren entsprechend Aspekten der vorliegenden Offenbarung.
    • 8 zeigt ein Beispiel für einen Prozess zum Durchführen einer physikalischen Simulation entsprechend Aspekten der vorliegenden Offenbarung.
    • 9 zeigt ein Beispiel für einen Prozess zum Durchführen von Simulationsschritten entsprechend Aspekten der vorliegenden Offenbarung.
    • 10 zeigt ein Beispiel für einen Prozess zum Validieren eines Simulationsschrittes entsprechend Aspekten der vorliegenden Offenbarung.
    • 11 zeigt ein Beispiel für einen Prozess zum 3D-Modellieren entsprechend Aspekten der vorliegenden Offenbarung.
  • Detailbeschreibung
  • Die vorliegende Offenbarung beschreibt Systeme und Verfahren zum Bearbeiten einer 3D-Szene (3D dreidimensional). Ausführungsformen des erfinderischen Konzeptes erfassen ein Bearbeiten von Eingaben von einer 3D-modellierenden Anwendung, ein Übersetzen der Eingaben in Simulationsparameter für eine Physik-Engine und ein Durchführen einer randbedingungsbehafteten Simulation an Objekten in der 3D-Szene. Die Randbedingungen der Simulation sind insbesondere konfiguriert zum Bearbeiten einer 3D-Szene beispielsweise durch Dämpfen einer Bewegung, Beschränken der Übertragung eines Impulses zwischen Objekten und Verhindern einer Überlappung von Objekten und ein dabei erfolgendes Versuchen, die angeforderte Transformation zu erfüllen. Sobald die Simulation fertiggestellt ist, werden die Ergebnisse benutzt, um die Position und Orientierung von Objekten in der 3D-Szene zu modifizieren.
  • Das Anordnen von Szenen mit 3D-Modellierungswerkzeugen ist problematisch. Der Bearbeitungsprozess erfordert das Durchführen einer detaillierten Untersuchung und von vielen auf niedriger Ebene gegebenen Bearbeitungen der Position und Orientierung von mehreren einzelnen Objekten (beispielsweise Kamerabewegungen, Hineinzoomen und Herauszoomen). Ansprechende, natürliche und einander nicht überschneidende Verteilungen zu erhalten, ist schwierig, da herkömmliche 3D-Modellierungswerkzeuge physikbasierte Randbedingungen nicht berücksichtigen.
  • Es ist daher sogar für erfahrene 3D-Bearbeiter zeitaufwändig, die Platzierung von nur einigen wenigen Objekten (beispielsweise eines Satzes von Lehrbüchern, die an einer Oberfläche aufeinandergestapelt sind) anzuordnen. Zusätzlich können herkömmliche 3D-Modellierungswerkzeuge dynamische Anordnungen, so beispielsweise eine Anordnung, die sich daraus ergibt, dass mehrere Objekte fallen, nicht simulieren. In vielen Fällen sind die simulierten Verhaltensweisen aus diesen 3D-Modellierungswerkzeugen für die direkte Manipulation zu empfindlich. Kleine Änderungen können beispielsweise bewirken, dass fliegende Objekte in unerwünschte Richtungen geschickt werden oder dass sie voneinander abprallen.
  • Daher ermöglicht die simulierte Bewegung, die von herkömmlichen 3D-Modellierungswerkzeugen erzeugt wird, nicht, dass Nutzer natürliche Bearbeitungen durchführen, indem sie Objekte an einen gewünschten Ort schieben oder ziehen. Im Gegensatz hierzu werden natürliche Anordnungen in der realen Welt bequemerweise dadurch verwirklicht, dass Objekte einfach aufeinander fallen und aufgrund der Schwerkraft und Trägheit angestoßen werden.
  • Gleichwohl können herkömmliche 3D-Modellierungswerkzeuge natürliche und effiziente Bearbeitungen, die sich der Vorteile der physikalischen Intuition eines Nutzers bedienen, nicht durchführen, da bestehende Physik-Engines sekundäre Effekte zeigen, die sie für das 3D-Modellieren ungeeignet machen. Dies bedeutet, dass technische Probleme bislang verhindert haben, dass 3D-Software auf bestehende Physik-Engines zum Durchführen von natürlicheren Bearbeitungen zurückgreift. Bei der Benutzung einer Physik-Engine zum Simulieren einer Bewegung kann der Impuls, der einem Objekt verliehen wird, beispielsweise bewirken, dass sich dieses länger als erwünscht bewegt oder dass dieses eine Bewegung auf Objekte überträgt, deren Bewegung der Nutzer nicht wünscht.
  • Daher stellt die vorliegende Offenbarung Systeme und Verfahren zum Integrieren von 3D-Modellierungswerkzeugen mit einer Physik-Engine bereit, um das Bearbeiten von 3D-Szenen einfacher und effizienter zu machen. Ausführungsformen des vorliegenden erfinderischen Konzeptes überwinden die technischen Probleme, die mit der Nutzung einer physikalischen Simulation zum Bearbeiten einer 3D-Szene einhergehen, indem sie Simulationsparameter und Randbedingungen, die zum 3D-Modellieren geeignet sind, einführen und Validierungsprüfungen während des Simulationsprozesses durchführen. Entsprechend integriert ein verbessertes 3D-Modellierungswerkzeug entsprechend Ausführungsformen des erfinderischen Konzeptes automatisch die physikalische Simulation mit interaktiven Nutzermanipulationsanforderungen und reguliert das Ausmaß der Physik, die wirken soll, während jeder Manipulation auf Grundlage einer Nutzerrückmeldung.
  • Einige Ausführungsformen beinhalten eine Starrkörperphysik-Engine, die eine physikalische Simulation an einer 3D-Szene auf Grundlage einer Manipulationseingabe und eines Satzes von Bewegungsrandbedingungen durchführen kann. Das System integriert die physikalische Simulation mit interaktiven Nutzermanipulationsanforderungen von der 3D-Modellierungssoftware. Eine Schnittstelle zwischen der 3D-modellierenden Anwendung und der Physik-Engine kann dasjenige, wie viel Physik während jeder Bearbeitung wirken sollte, auf Grundlage einer Nutzerrückmeldung regulieren, um stabile Änderungen und vollständig steuer- bzw. regelbare Bewegungen sicherzustellen.
  • Im Ergebnis ermöglicht das verbesserte 3D-Modellierungswerkzeug der vorliegenden Offenbarung, dass sich Nutzer auf auf hoher Ebene gegebene Ziele zur Manipulation konzentrieren, während die physikalische Simulation des Werkzeuges auf niedriger Ebene gegebene natürliche Anpassungen automatisch bereitstellt und verhindert, dass Objekte einander überschneiden. Bei einigen Beispielen kann ein verbessertes 3D-Modellierungssystem oder eine solche Vorrichtung als PBM-System (Physics-Based Manipulation PBM, physikbasierte Manipulation) beschrieben werden. Ein PBM-System kann eine 3D-Manipulationseingabe, darunter eine Translation, eine Rotation und eine Skalierung, an eine physikbasierte Manipulation binden. Das PBM-System nimmt eine physikalisch relevante Manipulation vor, um eine intuitive Anordnungssteuerung bzw. Regelung derart bereitzustellen, dass Nutzer ein detailliertes auf niedriger Ebene gegebenes Feinabstimmen vermeiden können. Im Ergebnis ist die Verteilung oder Platzierung von digitalen Objekten in 3D-Szenen nahe an der Bequemheit und dem natürlichen Aussehen von Manipulationen in der realen Welt.
  • 1 zeigt ein Beispiel für einen Prozess des 3D-Modellierens entsprechend Aspekten der vorliegenden Offenbarung. Bei einigen Beispielen werden diese Vorgänge von einem System durchgeführt, das einen Prozessor beinhaltet, der einen Satz von Codes zum Steuern bzw. Regeln von funktionellen Elementen einer Einrichtung ausführt. Zusätzlich oder alternativ werden gewisse Prozesse unter Nutzung einer Spezialzweckhardware durchgeführt. Allgemein werden diese Vorgänge entsprechend Verfahren und Prozessen durchgeführt, die entsprechend Aspekten der vorliegenden Offenbarung beschrieben werden. In einigen Fällen setzen sich die hier beschriebenen Vorgänge aus verschiedenen Teilschritten zusammen oder werden in Zusammenwirkung mit anderen Vorgängen durchgeführt.
  • Bei Vorgang 100 erstellt ein Nutzer ein 3D-Modell einer Szene. Die 3D-Szene beinhaltet einen Satz von Objekten. Entsprechend einem Beispiel beinhaltet die 3D-Szene vier Bücher. In einigen Fällen betreffen die Vorgänge dieses Schrittes einen Nutzer, wie anhand 2 beschrieben wird, oder können von einem solchen durchgeführt werden.
  • Bei Vorgang 105 bearbeitet der Nutzer das 3D-Modell. Der Nutzer kann mit physikalischen Dynamiken im Zusammenhang mit dem Satz von Objekten in dem 3D-Modell (das heißt in der 3D-Szene) interagieren. Der Nutzer kann den Satz von Objekten in eine beliebige Richtung bewegen und drehen. Jedes Objekt weist zur einfachen Richtungsbenennung x-, y- und z-Achsen (als Pfeilmarken gezeigt) auf. Der Nutzer kann das bearbeitete 3D-Modell durch die Nutzerschnittstelle der 3D-modellierenden Anwendung betrachten. In einigen Fällen betreffen die Vorgänge dieses Schrittes einen Nutzer, wie anhand 2 beschrieben wird, oder können von einem solchen durchgeführt werden.
  • Bei Vorgang 110 führt das System eine physikalische Simulation durch, um den Bearbeitungsbefehl auszuführen. Das System führt die physikalische Simulation auf Grundlage von Manipulationsbefehlen von dem Nutzer durch. Das System führt die physikalische Simulation entsprechend einigen Randbedingungen aus, um den Satz von Objekten vor unerwünschten physikalischen Phänomenen zu schützen. Eines der Bücher kann beispielsweise mit einem anderen Buch zusammenprallen, wobei die Reaktion des Zusammenpralls auf den Tisch wirkt (das heißt, es erfolgt kein Abprallen infolge sekundärer physikalischer Effekte). Zusätzlich weisen die Bücher eine nicht überschneidende Verteilung auf, was wie bei einer Manipulation in der realen Welt natürlich aussieht. Bei dem vorgenannten Beispiel zieht der Nutzer die Bücher mittels Dragging zusammen, um sie aufeinander zu stapeln. Der Nutzer kann diese Änderungen an den Objekten in der 3D-Szene einfach steuern bzw. regeln. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Physik-Engine, wie anhand 2 und 3 beschrieben ist, oder werden von einer solchen ausgeführt.
  • Bei Vorgang 115 generiert der Nutzer ein Bild auf Grundlage des bearbeiteten 3D-Modells. Das generierte Bild wird als bearbeitete 3D-Szene bezeichnet. In einigen Fällen weist die bearbeitete 3D-Szene denselben Satz von Objekten wie die ursprüngliche 3D-Szene auf. Beim obigen Beispiel weist die bearbeitete 3D-Szene vier Bücher auf, die aufeinander gestapelt sind. Die Verteilung der Bücher sieht natürlich und überschneidungsfrei aus. Das System steuert bzw. regelt das detaillierte Feinabstimmen der Bücher (beispielsweise mit Blick auf Position, Schwerkraft, Trägheit, Bewegung). Daher benötigt der Nutzer weniger Zeit zur Fertigstellung der 3D-Bearbeitung.
  • In einigen Fällen werden das verbesserte 3D-Modellierungssystem oder eine solche Vorrichtung zum Generieren von Standbildern oder einer Sequenz von Standbildern, die einen Film bilden, benutzt. In wieder anderen Fällen ist das generierte Ergebnis aus dem verbesserten 3D-Modellierungssystem eine 3D-Digitalgeometrie für andere Nutzungen. In einigen Fällen betreffen die Vorgänge von Schritt 115 einen Nutzer, wie anhand 2 beschrieben ist, oder können von einem solchen durchgeführt werden. In wieder anderen Fällen betreffen die Vorgänge dieses Schrittes eine 3D-modellierende Anwendung, wie anhand 2 und 3 beschrieben ist, oder können von einer solchen durchgeführt werden.
  • 2 zeigt ein Beispiel für ein System zum 3D-Modellieren (3D dreidimensional) entsprechend Aspekten der vorliegenden Offenbarung. Das gezeigte Beispiel beinhaltet einen Nutzer 200 und eine Nutzervorrichtung 205. Bei einem Beispiel beinhaltet die Nutzervorrichtung 205 eine Prozessoreinheit 210, eine Speichereinheit 215 und ein 3D-Manipulationswerkzeug 220. Bei einer Ausführungsform beinhaltet das 3D-Manipulationswerkzeug 220 eine 3D-modellierende Anwendung 225, eine Schnittstellenkomponente 230 und eine Physik-Engine 235.
  • Der Nutzer 200 kann mit der Nutzervorrichtung 205 kommunizieren. Der Nutzer 200 kann Manipulationsbefehle mit Blick auf einen Satz von Objekten in einer 3D-Szene in eine Nutzerschnittstelle des 3D-Manipulationswerkzeuges 220 eingeben. Die Manipulationsbefehle können angeforderte Transformationen des Satzes von Objekten in der 3D-Szene (beispielsweise Rotation, Bewegung) beinhalten. Der Nutzer kann die bearbeitete 3D-Szene auf der Nutzervorrichtung 205 betrachten, nachdem das 3D-Manipulationswerkzeug 220 eine physikalische Simulation auf Grundlage der Manipulationseingabe von dem Nutzer 200 durchgeführt hat.
  • Die Nutzervorrichtung 205 kann ein PC, ein Laptop-Computer, ein Mainframe-Computer, ein Palmtop-Computer, ein persönlicher Assistent, eine mobile Vorrichtung oder eine beliebige andere geeignete Verarbeitungsvorrichtung sein.
  • Die Prozessoreinheit 210 ist eine intelligente Hardwarevorrichtung (beispielsweise eine Allzweckverarbeitungskomponente, ein digitaler Signalprozessor (DSP), eine zentrale Verarbeitungseinheit (CPU), eine graphische Verarbeitungseinheit (GPU), ein Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), eine programmierbare Logikvorrichtung, ein diskretes Gate oder eine Transistorlogikkomponente, eine diskrete Hardwarekomponente oder eine beliebige Kombination hieraus). In einigen Fällen ist die Prozessoreinheit 210 zum Betreiben eines Speicherarrays unter Nutzung eines Speichercontrollers konfiguriert. In anderen Fällen ist ein Speichercontroller in die Prozessoreinheit 210 integriert. In einigen Fällen ist die Prozessoreinheit 210 dafür konfiguriert, computerausführbare Anweisungen, die in einem Speicher gespeichert sind, auszuführen, um verschiedene Funktionen zu übernehmen. Bei einigen Ausführungsformen beinhaltet die Prozessoreinheit 210 Spezialzweckkomponenten zur Modemverarbeitung, Basisbandverarbeitung, Digitalsignalverarbeitung oder Übertragungsverarbeitung.
  • Beispiele für eine Speichereinheit 215 beinhalten einen Speicher mit wahlfreiem Zugriff (RAM), einen Nur-Lese-Speicher (ROM) oder eine Festplatte. Beispiele für eine Speichereinheit 215 beinhalten einen Solid-State-Speicher und ein Festplattenlaufwerk. Bei einigen Beispielen wird eine Speichereinheit 215 benutzt, um computerlesbare, computerausführbare Software zu speichern, die Anweisungen beinhaltet, die bei Ausführung veranlasst, dass ein Prozessor verschiedene hier beschriebene Funktionen übernimmt. In einigen Fällen enthält die Speichereinheit 215 unter anderem ein BIOS (Basic Input/Output System BIOS), das den grundlegenden Betrieb der Hardware und Software, so beispielsweise die Interaktion mit Peripheriekomponenten oder solchen Vorrichtungen, steuert bzw. regelt. In einigen Fällen betreibt der Speichercontroller Speicherzellen. Der Speichercontroller kann einen Reihendecoder, einen Spaltendecoder oder beides beinhalten. In einigen Fällen speichern Speicherzellen innerhalb einer Speichereinheit 215 Information in Form eines logischen Zustandes.
  • Entsprechend einigen Ausführungsformen empfängt die 3D-modellierende Anwendung 225 eine Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung. Die 3D-modellierende Anwendung 225 nimmt eine Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage der physikalischen Simulation vor. Die 3D-modellierende Anwendung 225 generiert ein Standbild der Szene auf Grundlage der vorgenommenen Änderung. Bei einigen Beispielen empfängt die 3D-modellierende Anwendung 225 von dem Nutzer 200 eine Modusauswahleingabe zur Auswahl eines Simulationsmodus aus einem Satz von Modi, der den Simulationsmodus und einen Direktmanipulationsmodus beinhaltet, wobei die physikalische Simulation auf Grundlage der Auswahl des Simulationsmodus durchgeführt wird und der Direktmanipulationsmodus die physikalische Simulation nicht einsetzt. Bei einigen Beispielen beinhaltet die Szene einen Satz von Objekten, beruht die physikalische Simulation auf dem Satz von Objekten und beinhaltet die Änderung an der Szene ein Anpassen einer Position oder einer Orientierung eines jeden aus dem Satz von Objekten. Bei einigen Beispielen beinhaltet die Manipulationseingabe einen Direktmanipulationsbefehl für die statisch 3D-modellierende Anwendung unabhängig von der physikalischen Simulation. Bei einigen Beispielen erfasst die 3D-modellierende Anwendung 225 eine oder mehrere Bewegungseingaben von einer Eingabevorrichtung, wobei die Manipulationseingabe die eine oder die mehreren Bewegungseingaben beinhaltet.
  • Entsprechend einigen Ausführungsformen empfängt die 3D-modellierende Anwendung 225 eine Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung. Die 3D-modellierende Anwendung 225 nimmt eine Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage eines Ergebnisses des Satzes von Simulationsschritten vor. Bei einigen Beispielen empfängt die 3D-modellierende Anwendung 225 eine Eingabe von einem Nutzer 200 zur Spezifizierung einer oder mehrerer der Bewegungsrandbedingungen, wobei eine physikalische Simulation auf Grundlage der empfangenen Eingabe durchgeführt wird.
  • Entsprechend einigen Ausführungsformen ist die 3D-modellierende Anwendung 225 konfiguriert zum Darstellen einer 3D-Szene (das heißt einer ursprünglichen 3D-Szene). Werden neue Transformationen berechnet, so werden diese neuen Transformationen an die 3D-modellierende Anwendung 225 zurückgereicht, wobei die 3D-modellierende Anwendung 225 zum Darstellen einer bearbeiteten 3D-Szene konfiguriert ist. In einigen Fällen beinhaltet die bearbeitete 3D-Szene denselben Satz von Objekten wie in der ursprünglichen 3D-Szene. Gleichwohl werden geometrische/ortstechnische Attribute in Bezug auf wenigstens eines aus dem Satz von Objekten geändert (beispielsweise Drehung, Bewegung). Entsprechend einem Beispiel beinhaltet die ursprüngliche 3D-Szene vier Bücher, die voneinander beabstandet sind. Nach der Durchführung der physikalischen Simulation beinhaltet die bearbeitete 3D-Szene dieselben vier Bücher, die jedoch aufeinander gestapelt sind. Die 3D-modellierende Anwendung 225 ist ein Beispiel für das entsprechende Element, das anhand 3 beschrieben wird, oder beinhaltet Aspekte hiervon.
  • Entsprechend einigen Ausführungsformen identifiziert die Schnittstellenkomponente 230 eine Schwellenanzahl von Simulationsschritten und eine Zielbedingung. Die Schnittstellenkomponente 230 identifiziert einen Satz von Simulationsparametern für jeden aus dem Satz von Simulationsschritten, wobei der Satz von Simulationsschritten auf Grundlage des entsprechenden Satzes von Simulationsparametern durchgeführt wird. Der Satz von Simulationsparametern beinhaltet einen Zielort und eine Federkraft. Bei einigen Beispielen identifiziert die Schnittstellenkomponente 230 einen ersten Satz von Simulationsparametern auf Grundlage der Manipulationseingabe. Die Schnittstellenkomponente 230 identifiziert einen zweiten Satz von Simulationsparametern auf Grundlage der Manipulationseingabe, der Ausgabe des ersten Simulationsschrittes und der Bestimmung, dass die Ausgabe des ersten Simulationsschrittes valide ist.
  • Entsprechend einigen Ausführungsformen identifiziert die Schnittstellenkomponente 230 einen Satz von Bewegungsrandbedingungen. Die Bewegungsrandbedingungen verhindern, dass verschiedene Objekte denselben Raum einnehmen. Alternativ oder zusätzlich verhindern die Bewegungsrandbedingungen, dass ein Impuls von einem Objekt auf ein anderes Objekt übertragen wird. Bei einigen Beispielen beinhalten die Bewegungsrandbedingungen eine Rayleigh-Dämpfungsparameter, der eine Geschwindigkeit wenigstens eines der Objekte um über 90% während eines jeden aus dem Satz von Simulationsschritten verringert.
  • Entsprechend einigen Ausführungsformen ist die Schnittstellenkomponente 230 konfiguriert zum Umwandeln der Manipulationseingabe von der 3D-modellierenden Anwendung 225 in einen Satz von Parametern zum Durchführen der physikalischen Simulation. Bei einigen Beispielen ist die Schnittstellenkomponente 230 des Weiteren konfiguriert zum Umwandeln einer Ausgabe der physikalischen Simulation in einen Änderungsbefehl innerhalb der 3D-modellierenden Anwendung 225. Die Schnittstellenkomponente 230 ist ein Beispiel für das entsprechende Element, das anhand 3 beschrieben wird, oder beinhaltet Aspekte hiervon.
  • Entsprechend einer Ausführungsform ist die Schnittstellenkomponente 230 konfiguriert zum Dämpfen der physikalischen Simulation, um eine quasistatische Bewegung zu erhalten. Geschwindigkeiten werden schnell gebremst, und die Aufprallreaktion beinhaltet keine Wiederherstellung. Dies bewirkt, dass manipulierte Objekte auf intuitive Weisen auf Kontakt mit der Schwerkraft reagieren (beispielsweise dreht sich eine Stange, die gegen eine Kante gezogen wird, um diese), wobei die Reaktion gleichzeitig stabil ist. Sekundäre physikalische Effekte werden vermieden, sodass das 3D-Manipulationswerkzeug 220 diese Änderungen leicht steuern bzw. regeln kann (die Änderung von Bewegungen wird beispielsweise nicht fortgesetzt, sobald die Manipulation vorbei ist; Kontakte reagieren nicht mit einem Abprallen). Daher erhält das 3D-Manipulationswerkzeug 220 eine stabile und reaktionsfähige Physik aus der Nutzereingabe.
  • Entsprechend einigen Ausführungsformen führt die Physik-Engine 235 eine physikalische Simulation auf Grundlage der Manipulationseingabe durch, wobei die physikalische Simulation einen Satz von Simulationsschritten beinhaltet, der auf Grundlage eines Satzes von Bewegungsrandbedingungen, die für die statisch 3D-modellierende Anwendung konfiguriert sind, durchgeführt wird. Die Physik-Engine 235 führt den Satz von Simulationsschritten durch. Bei einigen Beispielen bestimmt die Physik-Engine 235, dass die Schwellenanzahl von Simulationsschritten erfüllt worden ist oder dass die Zielbedingung erfüllt worden ist. Die Physik-Engine 235 beendet die physikalische Simulation auf Grundlage der Bestimmung. Bei einigen Beispielen führt die Physik-Engine 235 einen ersten Simulationsschritt des Satzes von Simulationsschritten auf Grundlage des ersten Satzes von Simulationsparametern durch. Die Physik-Engine 235 bestimmt, dass eine Ausgabe des ersten Simulationsschrittes valide ist. Bei einigen Ausführungsformen führt die Physik-Engine 235 einen zweiten Simulationsschritt auf Grundlage des zweiten Satzes von Simulationsparametern durch. Bei einigen Beispielen führt die Physik-Engine 235 eine Randbedingungsminimierungsberechnung an der Ausgabe des ersten Simulationsschrittes durch, wobei die Bestimmung, dass die Ausgabe des ersten Simulationsschrittes valide ist, auf der Randbedingungsminimierungsberechnung beruht. Bei einigen Beispielen führt die Physik-Engine 235 einen ersten Simulationsschritt des Satzes von Simulationsschritten auf Grundlage des ersten Satzes von Simulationsparametern durch. Die Physik-Engine 235 bestimmt, dass eine Ausgabe des ersten Simulationsschrittes nicht valide ist. Die Physik-Engine 235 präzisiert die Ausgabe des ersten Simulationsschrittes auf Grundlage der Bestimmung, dass die Ausgabe des ersten Simulationsschrittes nicht valide ist. Bei einigen Beispielen führt die Physik-Engine 235 eine Randbedingungsminimierungsberechnung an der Ausgabe des ersten Simulationsschrittes durch, wobei die Bestimmung, dass die Ausgabe des ersten Simulationsschrittes nicht valide ist, auf der Randbedingungsminimierungsberechnung beruht.
  • Entsprechend einigen Ausführungsformen führt die Physik-Engine 235 einen Satz von Simulationsschritten auf Grundlage der Manipulationseingabe und der Bewegungsrandbedingungen durch, wobei jeder aus dem Satz von Simulationsschritten auf Grundlage eines anderen Satzes von Simulationsparametern durchgeführt wird.
  • Entsprechend einigen Ausführungsformen ist die Physik-Engine 235 konfiguriert zum Durchführen einer physikalischen Simulation an der 3D-Szene auf Grundlage einer Manipulationseingabe von der 3D-modellierenden Anwendung 225, wobei die physikalische Simulation einen Satz von Simulationsschritten umfasst, der auf Grundlage des Satzes von Bewegungsrandbedingungen durchgeführt wird. Die Physik-Engine 235 ist ein Beispiel für das entsprechende Element, das anhand 3 beschrieben wird, oder beinhaltet Aspekte hiervon.
  • In einigen Fällen ist die Verwendung eines einzigen Simulationsschrittes zur Fertigstellung einem beabsichtigten Ziels (das heißt einer Zieltransformation) nicht stabil und/oder sieht nicht natürlich aus. Dies tritt auf, wenn die aktuellen Geometrien in einem Abstand vom Bearbeitungsziel sind. Entsprechend einer Ausführungsform unterteilt das 3D-Manipulationswerkzeug 220, um Bearbeitungen und Manipulationen in einer praktischen Größe zu unterstützen, jede angeforderte Transformation in eine Sequenz von kleineren Teilschritten, deren Interpolation zu der endgültigen angeforderten Transformation (pro Gruppe von Objekten oder pro einzelnes Objekt) führt.
  • Entsprechend einer Ausführungsform wird das federbasierte Ziel sequenziell entlang dieses Weges bewegt, wobei für jeden Schritt ein Simulationszeitschritt gelöst wird. Ruft das 3D-Manipulationswerkzeug 220 den Simulationszeitschritt auf, so wird eine nummerische Optimierungsaufgabe auf Grundlage dessen gelöst, dass das gedämpfte physikalische Modell, das von der Feder gezogen wird, erfüllt wird, wobei gleichzeitig beliebige Aufprallrandbedingungen, die bei Kontaktgeometrien gelten, gelöst werden.
  • 3 zeigt ein Beispiel für einen 3D-Manipulationsprozess entsprechend Aspekten der vorliegenden Offenbarung. Das gezeigte Beispiel beinhaltet eine 3D-modellierende Anwendung 300, eine Manipulationseingabe 305, eine Schnittstellenkomponente 310, Bewegungsrandbedingungen 315, eine Physik-Engine 320, ein Simulationsergebnis 325 und eine Bearbeitungsausgabe 330.
  • Entsprechend einigen Ausführungsformen empfängt die 3D-modellierende Anwendung 330 eine Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung. Die 3D-modellierende Anwendung 300 nimmt eine Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage der physikalischen Simulation vor. Bei einigen Beispielen beinhaltet die Szene einen Satz von Objekten, beruht die physikalische Simulation auf dem Satz von Objekten und beinhaltet die Änderung an der Szene ein Anpassen einer Position oder einer Orientierung eines jeden aus dem Satz von Objekten. Die 3D-modellierende Anwendung 300 ist ein Beispiel für das entsprechende Element, das anhand 2 beschrieben wird, oder beinhaltet Aspekte hiervon.
  • Entsprechend einer Ausführungsform verfolgt das 3D-Manipulationswerkzeug einen Satz von 3D-Starrkörpergeometrien
    Figure DE102021004026A1_0001
    , die jeweils durch ein Dreiecksnetz in einer Anfangskonfiguration (kanonisch) definiert sind, wobei das Massenzentrum hiervon zu Beginn am Ursprung platziert und derart orientiert ist, dass die drei Hauptachsen mit den Achseln in 3D ausgerichtet sind. Jede aktuelle Position und Orientierung des Starrkörpers wird sodann durch eine starre Transformation T festgelegt, die diese Geometrie aus der kanonischen heraus transformiert (beispielsweise rotiert und translatiert).
  • Alle angeforderten Vorgänge zum Manipulieren dieser Geometrien werden als Satz von angeforderten Transformationen für Körper empfangen. Eine Nutzermanipulation wird als Vorgangssatz
    Figure DE102021004026A1_0002
    weitergereicht, der Paare (o,T) enthält, wobei o ∈
    Figure DE102021004026A1_0003
    ein Starrkörper in der Szene mit der zugehörigen angeforderten Transformation T ist, wie durch den Vorgang, der von einem Nutzer in einer Nutzerschnittstelle des 3D-Werkzeuges vorgenommen wird, spezifiziert wird.
  • Ohne eine physikbasierte Verteilung werden alle Starrkörperkonfigurationen (das heißt Position und Orientierung) auf Positionen aktualisiert, die durch die entsprechende angeforderte Transformation in
    Figure DE102021004026A1_0004
    gegeben sind. Entsprechend einigen Ausführungsformen ist das 3D-Manipulationswerkzeug konfiguriert zum Durchführen eines physikbasierten Verteilens oder Manipulierens (siehe Algorithmus 1 von 6), um neue Transformationen für alle Starrkörper in
    Figure DE102021004026A1_0005
    , die die angeforderten Bewegungs- und physikalischen Randbedingungen erfüllen, zu berechnen. Nach der Berechnung werden anstatt dessen die neuen Transformationen
    Figure DE102021004026A1_0006
    angewendet, wobei die zu Beginn angeforderten überschrieben werden. Diese werden wiederum an die 3D-modellierende Anwendung 300 des 3D-Manipulationswerkzeuges weitergereicht und als endgültige Transformationen für alle Körper, die durch den angeforderten Vorgang manipuliert worden sind, behandelt.
  • Entsprechend einer Ausführungsform ist die Schnittstellenkomponente 310 konfiguriert zum Umwandeln der Manipulationseingabe von der 3D-modellierenden Anwendung 300 in einen Satz von Parametern zum Durchführen der physikalischen Simulation. In einigen Fällen wird die Schnittstellenkomponente 310 auch als Interaktionsschicht bezeichnet. Die Schnittstellenkomponente 310 identifiziert eine Schwellenanzahl von Simulationsschritten und eine Zielbedingung. Bei einer Ausführungsform identifiziert die Schnittstellenkomponente 310 einen Satz von Simulationsparametern für jeden aus dem Satz von Simulationsschritten, wobei der Satz von Simulationsschritten auf Grundlage des entsprechenden Satzes von Simulationsparametern durchgeführt wird. Die Schnittstellenkomponente 310 ist ein Beispiel für das entsprechende Element, das anhand 2 beschrieben wird, oder beinhaltet Aspekte hiervon.
  • Entsprechend einer Ausführungsform wird eine Interaktion durch Überladen (overloading) einer jeden angeforderten Zustandsänderung der Manipulation durchgeführt. Anstelle der direkten Durchführung des angeforderten Vorganges (beispielsweise von Manipulationsbefehlen von dem Nutzer zur Ausführung an einem Objekt oder einer Gruppe von Objekten) an den Eingabegeometrien (beispielsweise Lehrbücher, Vasen), reicht das 3D-Manipulationswerkzeug diese Befehle an eine Interaktionsschicht (beispielsweise die Schnittstellenkomponente 310) weiter, die zwischen einer angepassten Physiksimulations-Engine (das heißt der Physik-Engine 320) und einer Grafikschnittstelle vermittelt. Die Interaktionsschicht lokalisiert einen neuen Satz von Transformationen, der die angeforderte auf hoher Ebene gegebene geometrische Änderung (beispielsweise eine Drehung) erfüllt und dabei der Physik ohne Überschneidungen genügt. Sobald diese neuen Transformationen berechnet worden sind, werden sie anstelle der direkten Transformationen an die Nutzerschnittstelle (UI) zurückgeleitet.
  • Entsprechend einer Ausführungsform werden Transformationen für jede Interaktion als starke Federn gewählt, die inkrementell eine einzelne Geometrie oder eine Gruppe von Geometrien (wenn die Auswahl einer Gruppe aktiviert ist) von Objekten hin zu den beabsichtigten Zielen (das heißt der Zielbedingung) ziehen. Die beabsichtigten Ziele sind Konfigurationen (beispielsweise eine Rotation und/oder eine Translation), die die Geometrien aufweisen würden, wenn keine Vermittlung über die physikalische Verteilung vorgenommen würde.
  • Eine Physik-Engine, die simulierte Dynamiken durchführt, ist während 3D-Digitalmanipulationen gegebenenfalls nicht empfindlich und nicht stabil. Um eine stabile, reaktionsfähige Physik aus der Nutzereingabe zu erhalten, wird bei einer Ausführungsform der vorliegenden Offenbarung die physikalische Simulation stark gedämpft, um eine quasistatische Bewegung zu erhalten. Geschwindigkeiten werden schnell gebremst, und eine Aufprallreaktion beinhaltet keine Wiederherstellung. Das 3D-Manipulationswerkzeug bewirkt, dass manipulierte Objekte auf intuitive Weisen auf Kontakt mit der Trägheit reagieren (beispielsweise dreht sich eine Stange, die gegen eine Kante gezogen wird, um diese), wobei gleichzeitig sichergestellt wird, dass die Reaktion stabil ist. Sekundäre physikalische Effekte werden vermieden, sodass das 3D-Manipulationswerkzeug mit diesen Änderungen leicht umgehen kann. Änderungen einer Bewegung werden beispielsweise nicht fortgesetzt, sobald die Manipulation vorüber ist; Kontakte zwischen Objekten reagieren nicht mit einem Abprallen an einer Oberfläche oder innerhalb eines Behälters und dergleichen.
  • Die Verwendung eines einzelnen simulierten Schrittes zur Fertigstellung eines beabsichtigten Ziels (das heißt einer Zieltransformation oder Position) ist nicht stabil. In einigen Fällen erreicht die Verwendung eines einzelnen simulierten Schrittes die Zielbedingung gegebenenfalls nicht oder kommt gegebenenfalls nicht nahe an diese heran. Eine Physik-Engine, die beispielsweise einen einzigen simulierten Schritt verwendet, kann über die Zielbedingung hinausschießen (overshoot). Dies tritt auf, wenn aktuelle Geometrien in einem Abstand von der Zieltransformation befindlich sind. Um Bearbeitungen und Manipulationen in einer praktischen Größe zu unterstützen, unterteilt die Schnittstellenkomponente 310 (das heißt die Interaktionsschicht) jede angeforderte Transformation in eine Sequenz von kleineren Teilschritten, deren Interpolation zu der endgültigen angeforderten Transformation (pro Gruppe von Objekten oder pro einzelnes Objekt) führt.
  • Entsprechend einer Ausführungsform wird das federbasierte Ziel sequenziell entlang dieses Weges bewegt, wobei für jeden Schritt ein Simulationszeitschritt gelöst wird. Ruft das System den Simulationszeitschritt auf, so wird eine nummerische Optimierungsaufgabe auf Grundlage dessen gelöst, dass das gedämpfte physikalische Modell, das die Feder zieht, erfüllt ist, wobei gleichzeitig beliebige Aufprallrandbedingungen, die bei Kontaktgeometrien gelten, gelöst werden.
  • In einigen Fällen garantiert eine Lösung beim Lösen einer randbedingungsbehafteten physikalischen Aufgabe nicht, dass die Simulation mit einer stabilen und nutzbaren Lösung endet. Entsprechend einer Ausführungsform der vorliegenden Offenbarung misst die Physik-Engine 320 die potenzielle Nutzbarkeit der Ausgabe eines jeden Zeitschrittes durch Betrachten des Rests (Fehlers) der Optimierung nach dem Lösen des Zeitschrittes. Ist das Maß zu groß, so wird die Zeitschrittlösung wiederholt, ohne dass das Ziel zum nächsten Inkrement vorzurücken. Ist der Zeitschrittlösungsrest unter einer Toleranzschwelle, so rückt die Physik-Engine 320 das Ziel zum nächsten Inkrement vor. Wird entweder die vollständige Sequenz von Teilschritten vervollständigt oder ist die Toleranzschwelle bei drei aufeinanderfolgenden Teilschritten (das heißt der Schwellenanzahl von Simulationsschritten) nicht erfüllt, so reicht die Schnittstellenkomponente 310 (das heißt die Interaktionsschicht) die sich ergebende endgültige simulierte Transformationsaktualisierung als angeforderte physikalische Manipulationsaktualisierung zurück. In einigen Fällen ist die Schwellenanzahl von Simulationsschritten nicht auf drei beschränkt, sondern kann auf Grundlage des Nutzers und/oder der Nutzervorrichtung als andere Zahlen gewählt sein. Die sich ergebende endgültige simulierte Transformationsaktualisierung wird auch als Bearbeitungsausgabe 330 bezeichnet. Die Bearbeitungsausgabe 330 wird in die 3D-modellierende Anwendung eingegeben, um die bearbeitete 3D-Szene zu generieren. Die bearbeitete 3D-Szene beinhaltet Änderungen aus den angeforderten physikalischen Manipulationsbefehlen.
  • Die Physik-Engine 320 ist konfiguriert zum Durchführen einer physikalischen Simulation an der 3D-Szene auf Grundlage einer Manipulationseingabe von der 3D-modellierenden Anwendung 300, wobei die physikalische Simulation einen Satz von Simulationsschritten umfasst, der auf Grundlage eines Satzes von Bewegungsrandbedingungen durchgeführt wird. Die Physik-Engine 320 führt den Satz von Simulationsschritten durch. Bei einigen Beispielen bestimmt die Physik-Engine 320, dass die Schwellenanzahl von Simulationsschritten erfüllt ist oder dass die Zielbedingung erfüllt ist. Die Physik-Engine 320 beendet die physikalische Simulation auf Grundlage der Bestimmung. Entsprechend einer Ausführungsform erzeugt die Physik-Engine 320 ein Simulationsergebnis 325 auf Grundlage des Satzes von Simulationsschritten, und es wird das Simulationsergebnis 325 in die Schnittstellenkomponente 310 eingegeben. Die Physik-Engine 320 ist ein Beispiel für das entsprechende Element, das anhand 2 beschrieben wird, oder beinhaltet Aspekte hiervon.
  • Entsprechend einigen Ausführungsformen führt, wenn eine Starrkörpergeometrie mit einer aktuellen Transformation T0 und einer nutzerseitig angewendeten Transformation T1 gegeben ist, die Physik-Engine 320 eine Teilschrittphysik auf Grundlage einer Verteilung hin zu der Zieltransformation in N Teilschritten aus, die entweder durch den Abstand zwischen der Anfangs- und Endtransformation oder durch eine feste Größen heuristisch bestimmt sind. Sobald N ausgewählt ist, interpoliert die Physik-Engine 320 folgendermaßen zwischen den beiden starren Transformation T0 und T1. Die Physik-Engine 320 zerlegt jede Transformation in ihre separate Translationskomponente Ti,t und Rotationskomponenten Ti,r. Die Translationen werden durch ℝ3-Vektoren dargestellt, während die Rotationen durch Quaternionen dargestellt werden.
  • Quaternionen sind ein Zahlensystem, das die komplexen Zahlen erweitert und das bei der Mechanik in einem 3D-Raum und Berechnungen, die 3D-Rotationen implizieren, angewendet wird. Eine Quaternion ist als Quotient von zwei gerichteten Linien in einem dreidimensionalen Raum oder gleichwertig als Quotient von zwei Vektoren definiert. Alternativ oder zusätzlich können Quaternionen in Abhängigkeit von der Anwendung zusammen mit Verfahren wie Eulerschen Winkeln und Drehmatrizen benutzt werden. Die Physik-Engine 320 führt eine Interpolation durch, um die Translations- und Rotationskomponenten der Ziele für jeden Teilschritt j ∈ [0, N] jeweils zu bewegen zu: T t ( j ) lerp ( T 0, t , T 1, t )
    Figure DE102021004026A1_0007
    T r ( j ) slerp ( T 0, r , T 1, r )
    Figure DE102021004026A1_0008
  • Hierbei ist lerp(·) der standardmäßige lineare Interpolationsvorgang, während slerp(·) die standardmäßige sphärische Linearinterpolation mittels Quaternionen bezeichnet.
  • Wie in 6 dargestellt ist (Algorithmus 1), rückt jeder Aufruf zu einem Vorwärtszeitschritt das Starrkörpersystem um einen einzelnen Schritt, der Kontaktrandbedingungen und Federkräften unterliegt, vorwärts. Entsprechend einer Ausführungsform wird die LCP-Starrkörperkontaktlösung (Linear Complementarity Programing LCP) benutzt. Jeder Zeitschritt berechnet die Lösung einer lokalen LCP-Optimierungsaufgabe, wobei Algorithmus 1 eine Lösung für unbekannte, Randbedingungen auferlegende Impulse y ∈ ℝm, die neue Transformationsaktualisierungen ergeben, bietet. Um Randbedingungsimpulse bei jedem Schritt zu erhalten, werden die LCP-Bedingungen gelöst: 0 A y + b y 0
    Figure DE102021004026A1_0009
  • Hierbei bezeichnet für a, b ∈ ℝm die Notation a ⊥ b die Komplementaritätsbedingung aibi = 0,∀i ∈ [1, m]. Jede Reihe der Ungleichung Ay + b ≥ 0 definiert sodann eine einzelne zu erfüllende Randbedingung des physikalischen Systems, während die Komplementaritätsbeziehungen Konsistenzbedingungen auferlegen, um sicherzustellen, dass Impulse physikalisch richtig sind (das bei Kontakten ein Schieben und kein Ziehen erfolgt).
  • Entsprechend einer Ausführungsform nutzt die Lösung der Physik-Engine den projizierten Ansatz von Gauss-Seidel (PGS). Ein Gauss-Seidel-Splitting von A = L + U in ein unteres Dreieck L und ein streng oberes Dreieck U kommt hier zum Einsatz. Die Lösung geht sodann zum sequenziellen Besuchen einer jeden Randbedingungsreihe i ∈ [1, m] über, aktualisiert deren entsprechendes unbekanntes yi und hält dabei alle anderen Unbekannten fest. Konkret führt dies zu mehreren äußeren Iterationen (die hier mit k indexiert sind), die jeweils durch alle Randbedingungsreihen (die mit i indexiert sind) laufen. Für die Reihe i bei der Iteration k lautet die Aktualisierung folgendermaßen. Δ y i k + 1 = max ( 0, 1 a i i ( b 1 j = 1 i 1 a i i y j k + 1 j = i + 1 n a i i y j k ) ) y i k
    Figure DE102021004026A1_0010
  • Lokal ergibt diese vorgenommene Änderung des Randbedingungsimpulses für die Reihe i auch den Fehler, der weiterhin in der Randbedingung i vorhanden ist. Wird der Fehler zum Verschwinden gebracht, so geht dieser Term auf Null und stellt den reihenweise gegebenen Restfehler folgendermaßen bereit: r i k = ( y i k + 1 y i k ) 2 = ( Δ y i k + 1 ) 2
    Figure DE102021004026A1_0011
  • Bei Algorithmus 1 (siehe 6) nimmt die Physik-Engine 320 am Ende der Zeitschrittlösung die inf-Norm (die auch als Unendlichkeitsnorm oder Max-Norm bekannt ist) an dem Restvektor vor: r max i [ 1, m ] r i
    Figure DE102021004026A1_0012
  • Dies definiert den größten Randbedingungsfehler in der aktuellen Lösung und misst, wie viel die aktuelle Zeitschrittlösung (so sie akzeptiert wird) die Kontakt- und Federrandbedingungen verletzt. In einigen Fällen wird eine aggressive Schwelle von thres = 10 benutzt. Ist der Restfehler zu groß, so nimmt die Physik-Engine 320 einen weiteren Zeitschritt vor, ohne das Ziel vorzurücken. Die Lösung der zugrunde liegenden Physik-Engine ist iterativ (recall-PGS-basiert), was effektiv eine Verringerung des Fehlers genau dann wiederaufnimmt, wenn die vorherige Zeitschrittlösung beendet ist, und einen Warmstart der nachfolgenden Zeitschrittlösung mit der Ausgabe aus der vorherigen letzten Lösung ausführt.
  • 4 zeigt ein Beispiel für das Bearbeiten einer 3D-Szene entsprechend Aspekten der vorliegenden Offenbarung. Das gezeigte Beispiel beinhaltet eine ursprüngliche 3D-Szene 400 und eine bearbeitete 3D-Szene 405. 4 zeigt ein Beispiel, bei dem mehrere Objekte effizient auf nichtüberlappende Weise unter Nutzung einer randbedingungsbehafteten physikalischen Simulation angeordnet werden.
  • Entsprechend einigen Ausführungsformen integriert das 3D-Manipulationswerkzeug die physikalische Simulation mit interaktiven Nutzermanipulationsanforderungen (das heißt Manipulationseingaben). Das 3D-Manipulationswerkzeug reguliert dasjenige, wie viel Physik ein Nutzer während jeder Bearbeitung einbringt, auf Grundlage einer Nutzerrückmeldung, um stabile Änderungen und vollständig steuer- bzw. regelbare Bewegungen sicherzustellen. Das 3D-Manipulationswerkzeug ermöglicht, dass sich der Nutzer auf auf hoher Ebene gegebene Ziele zur Manipulation konzentriert, während die physikalische Simulation selbst auf niedriger Ebene gegebene natürliche Anpassungen bereitstellt und die Überschneidung von Objekten verhindert.
  • Entsprechend einer Ausführungsform beinhaltet das 3D-Manipulationswerkzeug eine 3D-modellierende Anwendung, eine Physik-Engine und eine Schnittstellenkomponente. Die 3D-modellierende Anwendung ist zum Darstellen der ursprünglichen 3D-Szene 400 konfiguriert. Der Nutzer kann die ursprüngliche 3D-Szene 400 auf der Nutzervorrichtung betrachten. Die Physik-Engine ist konfiguriert zum Durchführen einer physikalischen Simulation an der ursprünglichen 3D-Szene 400 auf Grundlage einer Manipulationseingabe von der 3D-modellierenden Anwendung (ein Nutzer klickt beispielsweise ein Objekt an, zieht das Objekt in eine Richtung, dreht ein Objekt), wobei die physikalische Simulation einen Satz von Simulationsschritten umfasst, der auf Grundlage eines Satzes von Bewegungsrandbedingungen durchgeführt wird. Eine Schnittstellenkomponente ist konfiguriert zum Umwandeln der Manipulationseingabe von der 3D-modellierenden Anwendung in einen Satz von Parametern zum Durchführen der physikalischen Simulation. Die Schnittstellenkomponente ist des Weiteren konfiguriert zum Umwandeln einer Ausgabe der physikalischen Simulation in einen Änderungsbefehl innerhalb der 3D-modellierenden Anwendung. Die 3D-modellierende Anwendung wendet den Änderungsbefehl auf Objekte der ursprünglichen 3D-Szene 400 an, um die bearbeitete 3D-Szene 405 herzustellen.
  • Entsprechend einem Beispiel beinhaltet die ursprüngliche 3D-Szene 400 einen Satz von vier Lehrbüchern, die voneinander beabstandet sind. Die Lehrbücher können verschiedene Abmessungen und Gewichte aufweisen. Der Nutzer kann das 3D-Manipulationswerkzeug nutzen, um die 3D-Szene zu bearbeiten (beispielsweise ein Objekt anklicken, das Objekt in eine beliebige Richtung ziehen, das Objekt um eine Achse drehen, Winkel des Objektes in Bezug auf ein anderes Objekt anpassen). Der Nutzer kann beispielsweise den Satz von Büchern drehen, den Satz von Büchern auseinander bewegen, den Satz von Büchern zusammen bewegen, eines der Bücher auf ein anderes stapeln und dergleichen mehr.
  • Beim vorliegenden Beispiel nutzt der Nutzer das 3D-Manipulationswerkzeug, um die Bücher aufeinander zu stapeln. Die bearbeitete 3D-Szene 405 beinhaltet ein Buch, das unten befindlich ist, zwei Bücher, die nebeneinander auf dem Buch unten liegen, und ein viertes Buch, das oben aufgestapelt ist. In der bearbeiteten 3D-Szene 405 sind die gestapelten Bücher stabil, wobei das vierte Buch oben nicht einfach so infolge der Schwerkraft herabrutscht, da das 3D-Manipulationswerkzeug keine sekundären physikalischen Effekte empfängt, die es erschweren, diese Änderungen zu steuern bzw. zu regeln (die Änderung von Bewegungen wird beispielsweise nicht fortgesetzt, sobald die Manipulation vorüber ist; Kontakte reagieren nicht mit einem Abprallen). Zusätzlich sieht die Verteilung der Bücher natürlich aus, und die Bücher schneiden einander nicht. Auf diese Weise ermöglicht das 3D-Manipulationswerkzeug, dass sich der Nutzer auf auf hoher Ebene gegebene Bearbeitungsziele zur Manipulation konzentriert, während die physikalische Simulation der Physik-Engine auf niedriger Ebene gegebene natürliche Anpassungen bereitstellt und eine Überschneidung von Objekten verhindert.
  • 5 zeigt ein Beispiel für das Bearbeiten einer 3D-Szene entsprechend Aspekten der vorliegenden Offenbarung. Das gezeigte Beispiel beinhaltet eine ursprüngliche 3D-Szene 500 und eine bearbeitete 3D-Szene 505. Insbesondere zeigt 5 ein Beispiel, bei dem eine Schwerkraftsimulation zum Generieren einer natürlichen Anordnung von Objekten benutzt wird.
  • Bei einigen Beispielen beinhaltet die 3D-Szene einen Satz von Objekten, beruht die physikalische Simulation auf dem Satz von Objekten, und beinhaltet die Änderung an der 3D-Szene ein Anpassen einer Position oder einer Orientierung eines jeden aus dem Satz von Objekten. Entsprechend einem Beispiel beinhaltet die ursprüngliche 3D-Szene 500 einen Tisch, eine flache Schüssel, die an der Oberfläche des Tisches angeordnet ist, und einen Satz von Früchten. In der ursprünglichen 3D-Szene 500 fällt der Satz von Früchten (das heißt der Apfel, die Banane) infolge der Schwerkraft in die Schüssel. Bei diesem Beispiel wird das 3D-Manipulationswerkzeug benutzt, um den Prozess des in die Schüssel erfolgenden Fallens des Satzes von Früchten (das heißt die Manipulationseingabe) zu simulieren. Die bearbeitete 3D-Szene 505 beinhaltet denselben Tisch und dieselbe flache Schüssel, die an der Oberfläche des Tisches angeordnet ist. Auf Grundlage der Manipulationseingabe des Nutzers wird der Satz von Früchten in der Schüssel angeordnet und ist statisch.
  • Fällt der Satz von Früchten in die Schüssel, so können die Früchte aufeinander prallen. Entsprechend einer Ausführungsform ist die Reaktion jedoch stabil, da das 3D-Manipulationswerkzeug keine sekundären physikalischen Effekte empfängt, die es erschweren, diese Änderungen zu steuern bzw. zu regeln (die Änderung von Bewegungen wird beispielsweise nicht fortgesetzt, sobald die Manipulation vorbei ist; Kontakte reagieren nicht mit einem Abprallen). Der Satz von Früchten prallt nicht auf die Oberfläche der Schüssel oder auf andere Objekte aus der Schüssel, und zwar infolge der Physik, so beispielsweise infolge der Schwerkraft, der Trägheit und der Bewegung. Auf diese Weise kann der Nutzer leicht mit den Objekten umgehen und mit der Bearbeitung der Szene und dem Manipulieren des Satzes von Objekten auf Grundlage der bearbeiteten 3D-Szene 505 fortfahren. Der Nutzer kann beispielsweise eine der Früchte (jetzt in der Schale) anklicken, diese Frucht von den anderen Früchten wegbewegen oder diese Frucht aus der Schüssel bewegen.
  • 6 zeigt ein Beispiel für einen Algorithmus zur physikalischen Simulation entsprechend Aspekten der vorliegenden Offenbarung. Ein erster Algorithmus 600 zeigt ein physikbasiertes Verteilungsschrittverfahren (das heißt ein Verfahren zur physikalischen Simulation). Die Eingabe in den ersten Algorithmus 600 ist ein Vorgangssatz
    Figure DE102021004026A1_0013
    , der Paare (o,T) enthält, wobei o ∈
    Figure DE102021004026A1_0014
    ein Starrkörper in der 3D-Szene mit zugehöriger angeforderter Transformation T ist. Die angeforderte Transformation T stammt von einem Nutzer, der die 3D-Szene bearbeitet. Die Eingabe in den ersten Algorithmus 600 beinhaltet zudem maxIte und thres (Zeile 1). maxlte ist die Anzahl von Teilschritten, wobei der Algorithmus zur physikalischen Simulation die Anzahl von Teilschritten hin zur Zieltransformation verwendet. maxlte ist durch den Abstand zwischen der Anfangs- und der Endtransformation bestimmt. In einigen Fällen ist maxlte durch eine Heuristik fester Größe bestimmt, thres ist eine Schwellenanzahl der Simulationsschritte. Für jeden Starrkörper in der Szene initialisiert der erste Algorithmus 600 den Interpolator/Substepper (Teilschrittbilder) Δo des Starrkörpers unter Nutzung der aktuellen Transformation c und der Zieltransformation T (Zeilen 2 bis 3). Zwei Variablen r und j werden initialisiert und auf Null gesetzt. Der erste Algorithmus 600 beinhaltet eine Bedingungsprüfung (das heißt, driftet das Ziel zu weit ab, so wird die Transformation bei diesem Schritt beendet). Der erste Algorithmus 600 beendet die Transformation bei der vierten Iteration, da i um 1 bei jeder Schleifeniteration (Zeile 5) erhöht und j nicht inkrementiert wird. Daher gilt i - j > 3 (Zeile 6). In einigen Fällen wird auch j für wenigstens eine der vorherigen Iterationen um 1 inkrementiert (Zeile 14). Für jeden Starrkörper in der Szene berechnet der erste Algorithmus 600 die j-te interpolierte Transformation für den aktuellen Teilschritt mit Δο. Der erste Algorithmus 600 setzt zudem eine 6DOF-Randbedingungsposition (sechs Freiheitsgrade 6DOF) von o relativ zu x (Zeilen 8, 9 und 10). Die Freiheitsgrade (DOF) werden beim Auswählen der geeigneten Randbedingungen zum Definieren der Bewegungsfähigkeit eines Mechanismus benutzt. Die Anzahl der DOF stellt die Anzahl von unabhängigen Parametern dar, die zum Spezifizieren der Position oder Bewegung eines jeden Körpers in dem System (beispielsweise dem 3D-Modellierungssystem) benötigt werden. Ein vordefinierter Randbedingungssatz definiert eine Verbindung zwischen zwei Körpern. Die Randbedingungen in dem Satz fungieren als Einschränkungen bei der Bewegung von Körpern relativ zueinander und verringern die insgesamt möglichen Freiheitsgrade DOF des Systems. Jede Randbedingung beschränkt die Bewegung auf spezifische Weise. Eine 6DOF-Randbedingung wird verwendet, um eine Verbindung anzugeben, die drei Rotations- und drei Translationsbewegungsachsen aufweist. Die Bewegung der Komponenten relativ zueinander in dem System ändert sich nicht, da keine aktuellen Randbedingungen angewendet werden. Ein vollständig randbedingungsfreier Körper weist sechs Freiheitsgrade auf, nämlich drei der Translation und drei der Rotation. Bei einigen Beispielen gibt 6DOF an, dass ein Objekt des Systems in eine beliebige Richtung rotieren und translatieren kann.
  • Der erste Algorithmus 600 ruft den Vorwärtszeitschritt auf (Zeile 11). Jeder Aufruf zu dem Vorwärtszeitschritt rückt das Starrkörpersystem um einen einzelnen Schritt, der Kontaktrandbedingungen und Federkräften unterliegt, vor. Entsprechend einer Ausführungsform wird eine LCP-Starrkörperkontaktlösung (Linear Complementarity Programing LCP, Programmieren mit linearer Komplementarität) benutzt. Jeder Zeitschritt berechnet die Lösung einer lokalen LCP-Optimierungsaufgabe, wobei der erste Algorithmus 600 unbekannte, Randbedingungen auferlegende Impulse löst, die neue Transformationsaktualisierungen bereitstellen.
  • Es wird eine weitere Variable r initiiert. Der erste Algorithmus 600 berechnet den Rest (Fehler) des aktuellen Simulationsschrittes und weist den Rest der Variable r zu (Zeile 12). Ist der Rest r kleiner als ein Schwellenwert thres, so wird j um 1 inkrementiert (Zeile 14). Ein Wiederaufruf von j kann zusammen mit i inkrementiert werden, um eine Beendigung bei der Bedingungsprüfung zu vermeiden (Zeile 6). Schließlich gibt der erste Algorithmus 600 alle verwirklichten Transformationen eines jeden Objektes aus und wandelt sie für die 3D-modellierende Anwendung des 3D-Manipulationswerkzeuges um.
  • Entsprechend einer Ausführungsform misst der erste Algorithmus 600, um die randbedingungsbehaftete physikalische Aufgabe zu lösen, die mögliche Nutzbarkeit der Ausgabe eines jeden Zeitschrittes durch Verweisen auf den Rest (Fehler) der Optimierung nach dem Lösen des Zeitschrittes. Ist dieses Maß zu groß, so wird die Zeitschrittlösung wiederholt, ohne das Ziel zum nächsten Inkrement vorzurücken. Ist der Zeitschrittlösungsrest r unter einer Toleranzschwelle thres (Zeilen 13 und 14), so rückt der erste Algorithmus 600 das Ziel zum nächsten Inkrement vor. Ist entweder die vollständige Sequenz von Teilschritten (das heißt maxIte) beendet oder ist die Toleranzschwelle (das heißt thres) bei drei aufeinanderfolgenden Teilschritten nicht erfüllt (Zeile 6), so reicht die Interaktionsschicht die sich ergebende endgültige simulierte Transformationsaktualisierung als angeforderte physikalische Manipulationsaktualisierung zurück (Zeile 7, „Break“, die Transformation wird beendet). Man beachte, dass r max i [ 1, m ] r i
    Figure DE102021004026A1_0015
    den größten Randbedingungsfehler in der aktuellen Lösung definiert und misst, wie viel die aktuelle Zeitschrittlösung (so sie akzeptiert wird) die Kontakt- und Federrandbedingungen verletzt. Bei einigen Beispielen wird eine aggressive Schwelle von thres = 10 benutzt. Ist der Restfehler r zu groß, so verwendet der erste Algorithmus 600 einen weiteren Zeitschritt, ohne das Ziel vorzurücken. Die Lösung der zugrunde liegenden Physik-Engine ist iterativ (recall-PGS-basiert) und nimmt das Verringern des Fehlers genau dann wieder auf, wenn die vorherige Zeitschrittlösung beendet ist, und führt einen Warmstart der nächsten Zeitschrittlösung mit der Ausgabe der vorherigen Lösung durch.
  • 7 zeigt ein Beispiel für einen Prozess des 3D-Modellierens entsprechend Aspekten der vorliegenden Offenbarung. Bei einigen Beispielen werden diese Vorgänge von einem System ausgeführt, das einen Prozessor beinhaltet, der einen Satz von Codes zum Steuern bzw. Regeln von funktionellen Elementen einer Einrichtung ausführt. Zusätzlich oder alternativ werden gewisse Prozesse unter Nutzung einer Spezialzweckhardware durchgeführt. Allgemein werden diese Vorgänge entsprechend Verfahren und Prozessen durchgeführt, die entsprechend Aspekten der vorliegenden Offenbarung beschrieben werden. In einigen Fällen setzen sich die hier beschriebenen Vorgänge aus verschiedenen Teilschritten zusammen oder werden in Zusammenwirkung mit anderen Vorgängen durchgeführt.
  • Bei dem Vorgang 700 empfängt das System eine Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung. Die Szene beinhaltet einen Satz von Objekten, die physikalische Simulation beruht auf dem Satz von Objekten, und die Änderung an der Szene beinhaltet ein Anpassen einer Position oder einer Orientierung eines jeden aus dem Satz von Objekten. Entsprechend einer Ausführungsform nutzt das System physikbasierte Verteilungsverfahren, um die 3D-Manipulationseingabe, so beispielsweise eine Translation, eine Rotation und eine Skalierung, an eine physikbasierte Manipulation zu binden. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine 3D-modellierende Anwendung, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden.
  • Entsprechend einer Ausführungsform verfolgt eine 3D-modellierende Anwendung einen Satz von 3D-Starrkörpergeometrien, und es wird jeder Starrkörper durch ein Dreiecksnetz in einer Anfangskonfiguration (kanonisch) definiert, wobei das Massenzentrum hiervon zu Beginn im Ursprung platziert und derart orientiert ist, dass dessen drei Hauptachsen mit den Achsen in 3D ausgerichtet sind. Die aktuelle Position und Orientierung eines jeden Starrkörpers wird durch eine starre Transformation eingestellt, die diese Geometrie aus der kanonischen heraus transformiert (beispielsweise rotiert und translatiert).
  • Bei Vorgang 705 führt das System eine physikalische Simulation auf Grundlage der Manipulationseingabe durch, wobei die physikalische Simulation einen Satz von Simulationsschritten beinhaltet, der auf Grundlage eines Satzes von Bewegungsrandbedingungen, die für die statisch 3D-modellierende Anwendung konfiguriert sind, durchgeführt werden. Entsprechend einigen Ausführungsformen führt die Physik-Engine des Systems die Physiksimulation auf Grundlage der Manipulationseingabe durch. Die Physik-Engine führt den Satz von Simulationsschritten durch. Die Physik-Engine bestimmt, dass die Schwellenanzahl von Simulationsschritten erfüllt worden ist oder dass die Zielbedingung erfüllt worden ist. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Physik-Engine, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden.
  • Entsprechend einer Ausführungsform integriert das System die physikalische Simulation mit interaktiven Nutzermanipulationsanforderungen. Die Physik-Engine reguliert dasjenige, wie viel Physik während jeder Bearbeitung wirken soll, auf Grundlage einer Nutzerrückmeldung. Bei einer weiteren Ausführungsform wird eine Interaktion durch ein Überladen (overloading) der angeforderten Zustandsänderung einer jeden Manipulation durchgeführt. Anstelle des direkten Durchführens des angeforderten Vorganges an den Eingabegeometrien (das heißt an den 3D-Digitalobjekten), reicht das System Manipulationsbefehle an eine Interaktionsschicht weiter, die zwischen einer angepassten Physiksimulations-Engine und einer Grafikschnittstelle vermittelt. Die Interaktionsschicht ist zum Lokalisieren eines neuen Satzes von Transformationen konfiguriert, die zwischen der angeforderten auf hoher Ebene gegebenen Geometrieänderung (das heißt einer Rotation) und einer Physik ohne Überschneidungen einen Ausgleich herstellen. Werden die neuen Transformationen berechnet, so werden sie anstelle der üblichen direkten Transformationen an die Nutzerschnittstelle UI zurückgereicht.
  • Bei Vorgang 710 nimmt das System eine Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage der physikalischen Simulation vor. Die 3D-modellierende Anwendung nimmt die Änderung an der Szene in der statischen 3D-modellierenden Anwendung auf Grundlage eines Ergebnisses des Satzes von Simulationsschritten vor. Die statisch 3D-modellierende Anwendung generiert eine bearbeitete 3D-Szene. Bei einigen Beispielen besteht die bearbeitete 3D-Szene aus demselben Satz von Objekten wie die ursprüngliche 3D-Szene vor der Manipulation und vor der physikalischen Simulation. Der Satz von Objekten liegt jedoch in einer anderen Position und/oder Verteilung vor. Die ursprüngliche 3D-Szene beinhaltet beispielsweise vier Bücher, die voneinander beabstandet sind. Die bearbeitete 3D-Szene beinhaltet dieselben vier Bücher, die aufeinander gestapelt sind. Bei diesem Beispiel ist die Verteilung der vier Bücher natürlich und überschneidungsfrei. Ein Nutzer kann mit der Manipulation der bearbeiteten 3D-Szene fortfahren (eines der Objekte anklicken, ein Objekt in eine beliebige Richtung ziehen, eines der Objekte drehen). In einigen Fällen betreffen die Vorgänge dieses Schrittes eine 3D-modellierende Anwendung, wie anhand 2 und 3 beschrieben ist, oder können von einer solchen durchgeführt werden.
  • 8 zeigt ein Beispiel für einen Prozess der Durchführung einer physikalischen Simulation entsprechend Aspekten der vorliegenden Offenbarung. Bei einigen Beispielen werden diese Vorgänge von einem System durchgeführt, das einen Prozessor beinhaltet, der einen Satz von Codes zum Steuern bzw. Regeln von funktionellen Elementen einer Einrichtung beinhaltet. Zusätzlich oder alternativ werden bestimmte Prozesse unter Nutzung einer Spezialzweckhardware durchgeführt. Allgemein werden diese Vorgänge entsprechend Verfahren und Prozessen durchgeführt, die entsprechend Aspekten der vorliegenden Offenbarung beschrieben werden. In einigen Fällen sind die hier beschriebenen Vorgänge aus verschiedenen Teilschritten zusammengesetzt oder werden in Zusammenwirkung mit anderen Vorgängen durchgeführt.
  • Bei Vorgang 800 identifiziert das System eine Schwellenanzahl von Simulationsschritten und eine Zielbedingung. Entsprechend einigen Ausführungsformen identifiziert die Schnittstellenkomponente des Systems eine Schwellenanzahl von Simulationsschritten und eine Zielbedingung. Die Schnittstellenkomponente identifiziert einen Satz von Simulationsparametern für jeden aus dem Satz von Simulationsschritten, wobei der Satz von Simulationsschritten auf Grundlage des entsprechenden Satzes von Simulationsparametern durchgeführt wird. Bei einigen Beispielen beinhaltet der Satz von Simulationsparametern einen Zielort und eine Federkraft. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Schnittstellenkomponente, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden.
  • Entsprechend einer Ausführungsform werden für jede Interaktion Transformationen als starke Federn gewählt, die eine einzelne Geometrie oder eine Gruppe (wenn die Auswahl einer Gruppe aktiviert ist) von Objekten inkrementell hin zu beabsichtigten Zielen (das heißt einer Zielbedingung) ziehen. Die beabsichtigten Ziele sind die Konfigurationen (beispielsweise Rotation und/oder Translation), die die Geometrien erreichen würden, wenn keine Vermittlung durch eine physikalische Verteilung angewendet würde.
  • Bei Vorgang 805 führt das System den Satz von Simulationsschritten aus. Entsprechend einer Ausführungsform ist ein einziger Simulationsschritt zur Fertigstellung eines beabsichtigten Zieles nicht stabil oder sieht nicht natürlich aus. Dies tritt auf, wenn aktuelle Geometrien in einem Abstand vom Bearbeitungsziel befindlich sind. Um Bearbeitungen und Manipulationen in einer praktischen Größe zu unterstützen, unterteilt die Interaktionsschicht (das heißt die Schnittstellenkomponente) jede angeforderte Transformation in eine Sequenz von kleineren Teilschritten, deren Interpolation zu der endgültigen angeforderten Transformation (pro Gruppe von Objekten oder pro einzelnes Objekt) führt.
  • Entsprechend einer Ausführungsform bewegt das System das federbasierte Ziel sequenziell entlang dieses Weges und löst für jeden Schritt einen Simulationszeitschritt. Ruft das System den Simulationszeitschritt auf, so wird eine neue nummerische Optimierungsaufgabe durch Erfüllen eines gedämpften physikalischen Modells, das von der Feder gezogen wird, gelöst, wobei gleichzeitig beliebige Aufprallrandbedingungen, die von Kontaktgeometrien angewendet werden, gelöst werden. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Physik-Engine, wie anhand 2 und 3 beschrieben ist, oder können von einer solchen durchgeführt werden.
  • Bei Vorgang 810 bestimmt das System, dass die Schwellenanzahl von Simulationsschritten erfüllt worden ist oder dass die Zielbedingung erfüllt worden ist. Entsprechend einer Ausführungsform misst das System die mögliche Nutzbarkeit der Ausgabe eines jeden Zeitschrittes durch Betrachten des Restes (des Fehlers) der Optimierung nach dem Lösen des Zeitschrittes. Ist dieses Maß zu groß, so wird die Zeitschrittlösung wiederholt, ohne das Ziel zum nächsten Inkrement vorzurücken. In einigen Fällen rückt das System, wenn der Zeitschrittlösungsrest unter dem Toleranzschwellenwert ist, das Ziel zum nächsten Inkrement vor. Wird entweder die vollständige Sequenz von Teilschritten beendet oder ist die Toleranz bei drei aufeinanderfolgenden Teilschritten nicht erfüllt, so reicht die Interaktionsschicht die sich ergebende endgültige simulierte Transformationsaktualisierung als angeforderte physikalische Manipulationsaktualisierung zurück. Gleichwohl sind Ausführungsformen der vorliegenden Offenbarung nicht auf drei aufeinanderfolgende Teilschritte (das heißt die Schwellenanzahl von Simulationsschritten) beschränkt. In einigen Fällen kann die Schwellenanzahl von Simulationsschritten zehn betragen. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Physik-Engine, wie anhand 2 und 3 beschrieben wird, oder werden von einer solchen durchgeführt.
  • Bei Vorgang 815 beendet das System die physikalische Simulation auf Grundlage der Bestimmung. Ist entweder die vollständige Sequenz von Teilschritten beendet oder ist die Toleranz bei drei aufeinanderfolgenden Teilschritten nicht erfüllt, so reicht die Interaktionsschicht die sich ergebende endgültige simulierte Transformation an die 3D-modellierende Anwendung weiter. Die 3D-modellierende Anwendung stellt die bearbeitete 3D-Szene für den Nutzer bereit. Die bearbeitete 3D-Szene besteht aus demselben Satz von Objekten. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Physik-Engine, wie in 2 und 3 beschrieben ist, oder können von einer solchen durchgeführt werden.
  • 9 zeigt ein Beispiel für einen Prozess zum Durchführen von Simulationsschritten entsprechend Aspekten der vorliegenden Offenbarung. Bei einigen Beispielen werden diese Vorgänge von einem System durchgeführt, das einen Prozessor beinhaltet, der einen Satz von Codes zum Steuern bzw. Regeln von funktionellen Elementen einer Einrichtung ausführt. Zusätzlich oder alternativ werden gewisse Prozesse unter Nutzung einer Spezialzweckhardware durchgeführt. Allgemein werden diese Vorgänge entsprechend Verfahren und Prozessen durchgeführt, die entsprechend Aspekten der vorliegenden Offenbarung beschrieben werden. In einigen Fällen setzen sich die hier beschriebenen Vorgänge aus verschiedenen Teilschritten zusammen oder werden in Zusammenwirkung mit anderen Vorgängen durchgeführt.
  • Bei Vorgang 900 identifiziert das System einen ersten Satz von Simulationsparametern auf Grundlage der Manipulationseingabe. Entsprechend einigen Ausführungsformen identifiziert eine Schnittstellenkomponente des Systems eine Schwellenanzahl von Simulationsschritten und eine Zielbedingung. Die Schnittstellenkomponente identifiziert einen ersten Satz von Simulationsparametern für einen ersten Simulationsschritt des Satzes von Simulationsschritten, wobei die Simulationsschritte auf Grundlage des entsprechenden Satzes von Simulationsparametern durchgeführt werden. Der erste Satz von Simulationsparametern beinhaltet einen Zielort und eine Federkraft. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Schnittstellenkomponente, wie anhand 2 und 3 beschrieben ist, oder können von einer solchen durchgeführt werden.
  • Bei Vorgang 905 führt das System einen ersten Simulationsschritt des Satzes von Simulationsschritten auf Grundlage des ersten Satzes von Simulationsparametern durch. Entsprechend einigen Ausführungsformen identifiziert das System einen Satz von Bewegungsrandbedingungen. Die Bewegungsrandbedingungen verhindern, dass verschiedene Objekte denselben Raum einnehmen. Alternativ oder zusätzlich verhindern die Bewegungsrandbedingungen, dass ein Impuls von einem Objekt auf ein anderes Objekt übertragen wird. Bei einigen Beispielen beinhalten die Bewegungsrandbedingungen einen Rayleigh-Dämpfungsparameter, der eine Geschwindigkeit wenigstens eines der Objekte um 90% während eines jeden aus dem Satz von Simulationsschritten verringert. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Physik-Engine, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden.
  • Entsprechend einer Ausführungsform rückt, wie bei Algorithmus 1 dargestellt ist, jeder Funktionsaufruf zu einem Vorwärtszeitschritt das Starrkörpersystem um einen einzelnen Schritt, der Kontaktrandbedingungen und Federkräften unterliegt, vor. Bei einigen Beispielen wird eine LCP-Starrkörperkontaktlösung benutzt. Jeder Zeitschritt berechnet die Lösung einer lokalen LCP-Optimierungsaufgabe, wobei das System unbekannte, Randbedingungen auferlegende Impulse löst, die neue Transformationsaktualisierungen bereitstellen. Um Randbedingungsimpulse bei jedem Schritt zu erhalten, werden die LCP-Bedingungen gelöst.
  • Bei Vorgang 910 bestimmt das System, dass eine Ausgabe des ersten Simulationsschrittes valide ist. Eine Ausführungsform der vorliegenden Offenbarung misst die mögliche Nutzbarkeit der Ausgabe eines jeden Zeitschrittes durch Betrachtung des Restes (des Fehlers) der Optimierung nach dem Lösen des Zeitschrittes. Ist dieses Maß zu groß, so wird die Zeitschrittlösung wiederholt, ohne das Ziel zum nächsten Inkrement vorzurücken. Ist der Zeitschrittlösungsrest unter einer Toleranzschwelle, so rückt das System das Ziel zum nächsten Inkrement vor. Ist entweder die vollständige Sequenz von Teilschritten beendet oder ist die Toleranzschwelle bei drei aufeinanderfolgenden Teilschritten nicht erfüllt, so reicht die Interaktionsschicht (das heißt die Schnittstellenkomponente) die sich ergebende endgültige simulierte Transformationsaktualisierung als angeforderte physikalische Manipulationsaktualisierung zurück. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Physik-Engine, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden.
  • Bei Vorgang 915 identifiziert das System einen zweiten Satz von Simulationsparametern auf Grundlage der Manipulationseingabe, der Ausgabe des ersten Simulationsschrittes und der Bestimmung, dass die Ausgabe des ersten Simulationsschrittes valide ist. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Schnittstellenkomponente, wie anhand 2 und 3 beschrieben wird, und können von einer solchen durchgeführt werden.
  • Bei Vorgang 920 führt das System einen zweiten Simulationsschritt auf Grundlage des zweiten Satzes von Simulationsparametern durch. Die Schnittstellenkomponente des Systems identifiziert einen zweiten Satz von Simulationsparametern für einen zweiten Simulationsschritt des Satzes von Simulationsschritten, wobei der Satz von Simulationsschritten auf Grundlage des entsprechenden Satzes von Simulationsparametern durchgeführt wird. Der zweite Satz von Simulationsparametern beinhaltet einen Zielort und eine Federkraft. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Physik-Engine, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden.
  • 10 zeigt ein Beispiel für einen Prozess des Validierens eines Simulationsschrittes entsprechend Aspekten der vorliegenden Offenbarung. Bei einigen Beispielen werden diese Vorgänge von einem System durchgeführt, das einen Prozessor beinhaltet, der einen Satz von Codes zum Steuern bzw. Regeln von funktionellen Elementen einer Einrichtung ausführt. Zusätzlich oder alternativ werden gewisse Prozesse unter Nutzung von Spezialzweckhardware durchgeführt. Allgemein werden diese Vorgänge entsprechend den Verfahren und Prozessen durchgeführt, die entsprechend Aspekten der vorliegenden Offenbarung beschrieben werden. In einigen Fällen setzen sich die hier beschriebenen Vorgänge aus verschiedenen Teilschritten zusammen oder werden in Zusammenwirkung mit anderen Vorgängen durchgeführt.
  • Bei Vorgang 1000 identifiziert das System einen ersten Satz von Simulationsparametern auf Grundlage der Manipulationseingabe. Entsprechend einer Eingabe werden angeforderte Vorgänge zum Manipulieren von Geometrien als Satz von angeforderten Transformationen für Körper empfangen. Die Manipulationseingabe beinhaltet einen Vorgangssatz mit Informationspaaren. Das Informationspaar beinhaltet einen Starrkörper in einer ursprünglichen 3D-Szene und dessen entsprechende angeforderte Transformation. Die angeforderte Transformation kann durch einen Vorgang spezifiziert werden, der von einem Nutzer in einer Nutzerschnittstelle, die dem 3D-Manipulationswerkzeug zugeordnet ist, vorgenommen wird. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Schnittstellenkomponente, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden
  • Entsprechend einigen Ausführungsformen identifiziert eine Schnittstellenkomponente des Systems eine Schwellenanzahl von Simulationsschritten und eine Zielbedingung. Die Schnittstellenkomponente identifiziert einen ersten Satz von Simulationsparametern für einen ersten Simulationsschritt des Satzes von Simulationsschritten, wobei die Simulationsschritte auf Grundlage des entsprechenden Satzes von Simulationsparametern durchgeführt werden. Der erste Satz von Simulationsparametern beinhaltet einen Zielort und eine Federkraft. Der erste Satz von Simulationsparametern wird zum Berechnen von neuen Transformationen für alle Starrkörper in der 3D-Szene benutzt, wobei der erste Satz von Simulationsparametern die angeforderte Bewegung und die angeforderten physikalischen Randbedingungen erfüllt.
  • Bei Vorgang 1005 führt das System einen ersten Simulationsschritt des Satzes von Simulationsschritten auf Grundlage des ersten Satzes von Simulationsparametern durch. Entsprechend einer Ausführungsform rückt jeder Funktionsaufruf zu dem Vorwärtszeitschritt das Starrkörpersystem um einen einzelnen Schritt, der Kontaktrandbedingungen und Federkräften unterliegt, vor, wie bei Algorithmus 1 dargestellt ist. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Physik-Engine, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden.
  • Bei Vorgang 1010 bestimmt das System, dass eine Ausgabe des ersten Simulationsschrittes nicht valide ist. Eine Ausführungsform der vorliegenden Offenbarung misst die potenzielle Nutzbarkeit der Ausgabe eines jeden Zeitschrittes durch Betrachten des Restes (des Fehlers) der Optimierung nach dem Lösen des Zeitschrittes. Ist dieses Maß zu groß, so wird die Zeitschrittlösung wiederholt, ohne das Ziel zum nächsten Inkrement vorzurücken. Ist der Zeitschrittlösungsrest unter einer Toleranzschwelle, so rückt das System das Ziel zum nächsten Inkrement vor. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Physik-Engine, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden.
  • Bei Vorgang 1015 präzisiert das System die Ausgabe des ersten Simulationsschrittes auf Grundlage einer Bestimmung, dass die Ausgabe des ersten Simulationsschrittes nicht valide ist. Das System definiert den größten Randbedingungsfehler in der aktuellen Lösung und misst, wie viel die aktuelle Zeitschrittlösung (so sie akzeptiert wird) die Kontakt- und Federrandbedingungen verletzen würde. Bei einigen Beispielen wird eine aggressive Schwelle von thres = 10 benutzt. Ist der Rest (Fehler) zu groß, so verwendet das System einen weiteren Zeitschritt, ohne das Ziel vorzurücken. Die Lösung der zugrunde liegenden Physik-Engine ist iterativ (recall-PGS-basiert) und nimmt das Verringern des Fehlers genau dann wieder auf, wenn die vorherige Zeitschrittlösung beendet ist, und nimmt einen Warmstart der nächsten Lösung mit der Ausgabe der vorherigen Lösung vor. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Physik-Engine, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden.
  • 11 zeigt ein Beispiel für einen Prozess des 3D-Modellierens entsprechend Aspekten der vorliegenden Offenbarung. Bei einigen Beispielen werden diese Vorgänge von einem System durchgeführt, das einen Prozessor beinhaltet, der einen Satz von Codes zum Steuern bzw. Regeln von funktionellen Elementen einer Einrichtung ausführt. Zusätzlich oder alternativ werden gewisse Prozesse unter Nutzung von Spezialzweckhardware durchgeführt. Allgemein werden diese Vorgänge entsprechend Verfahren und Prozessen durchgeführt, die entsprechend Aspekten der vorliegenden Offenbarung beschrieben werden. In einigen Fällen setzen sich die hier beschriebenen Vorgänge aus verschiedenen Teilschritten zusammen oder werden in Zusammenwirkung mit anderen Vorgängen durchgeführt.
  • Bei Vorgang 1100 empfängt das System eine Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung. Ein Nutzer gibt Manipulationsbefehle an der Nutzerschnittstelle des 3D-Manipulationswerkzeuges ein. Die ursprüngliche 3D-Szene beinhaltet beispielsweise einen Satz von Büchern, die voneinander beabstandet sind. Der Nutzer fordert geometrische Transformationen an den Büchern dahingehend an, dass die Bücher aufeinander gestapelt werden (beispielsweise klickt er die Bücher an und zieht sie aufeinander zu). In einigen Fällen betreffen die Vorgänge dieses Schrittes eine 3D-modellierende Anwendung, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden.
  • Bei Vorgang 1105 identifiziert das System einen Satz von Bewegungsrandbedingungen. Entsprechend einigen Ausführungsformen identifiziert eine Schnittstellenkomponente des Systems einen Satz von Bewegungsrandbedingungen. Die Bewegungsrandbedingungen verhindern, dass verschiedene Objekte denselben Raum einnehmen. Die Bewegungsrandbedingungen verhindern, dass ein Impuls von einem Objekt auf ein anderes Objekt übertragen wird. Bei einigen Beispielen beinhalten die Bewegungsrandbedingungen einen Rayleigh-Dämpfungsparameter, der eine Geschwindigkeit wenigstens eines der Objekte um über 90% während eines jeden aus dem Satz von Simulationsschritten verringert. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Schnittstellenkomponente, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden.
  • Entsprechend einer Ausführungsform dämpft das System die physikalische Simulation, um eine quasistatische Bewegung zu erhalten, um wiederum eine stabile, reaktionsfähige Physik aus der Nutzereingabe zu erhalten. Geschwindigkeiten werden schnell gebremst, und eine Aufprallreaktion beinhaltet keine Wiederherstellung. Das System ermöglicht, dass manipulierte Objekte auf intuitive Weisen auf einen Kontakt mit der Trägheit reagieren (beispielsweise dreht sich eine Stange, die gegen eine Kante gezogen wird, um diese), wobei gleichzeitig die Reaktion stabil ist. Sekundäre physikalische Effekte werden vermieden, sodass das System diese Änderungen auf einfache Weise steuern bzw. regeln kann (die Änderung von Bewegungen setzt sich beispielsweise nicht fort, sobald die Manipulation beendet ist; Kontakte reagieren nicht mit einem Abprallen).
  • Bei Vorgang 1110 führt das System einen Satz von Simulationsschritten auf Grundlage der Manipulationseingabe und der Dämpfungsrandbedingungen aus, wobei jeder aus dem Satz von Simulationsschritten auf Grundlage eines anderen Satzes von Simulationsparametern durchgeführt wird. Das Verwenden eines einzelnen simulierten Schrittes zum Fertigstellen eines beabsichtigten Ziels ist nicht stabil und sieht nicht natürlich aus. Dies tritt auf, wenn aktuelle Geometrien in einem Abstand vom Bearbeitungsziel befindlich sind. Um Bearbeitungen und Manipulationen in einer praktischen Größe zu unterstützen, unterteilt das System jede angeforderte Transformation in eine Sequenz von kleineren Teilschritten, deren Interpolation zu der endgültigen angeforderten Transformation (pro Gruppe von Objekten oder pro einzelnes Objekt) führt. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine Physik-Engine, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden.
  • Bei Vorgang 1115 nimmt das System eine Änderung an der Szene in der statisch 3D-modellierenden Anwendung aufgrund eines Ergebnisses des Satzes von Simulationsschritten vor. Das System erzeugt eine bearbeitete 3D-Szene, die denselben Satz von Objekten wie die ursprüngliche 3D-Szene beinhaltet. Gleichwohl werden der Ort, der Winkel und/oder der Abstand eines jeden Objektes von dem System auf Grundlage der Manipulationseingabe geändert. Der Nutzer kann die bearbeitete 3D-Szene weiter manipulieren. Die Änderung an der 3D-Szene ist zu der angeforderten auf hoher Ebene gegebenen Geometrieänderung (beispielsweise zu der Rotation) und der Physik ohne Überschneidungen konsistent. Auf diese Weise konzentriert sich der Nutzer auf auf hoher Ebene gegebene Bearbeitungsaufgaben und vermeidet ein detailliertes Feinabstimmen. In einigen Fällen betreffen die Vorgänge dieses Schrittes eine 3D-modellierende Anwendung, wie anhand 2 und 3 beschrieben wird, oder können von einer solchen durchgeführt werden.
  • Entsprechend beinhaltet die vorliegende Offenbarung wenigstens die nachfolgenden Ausführungsformen.
  • Beschrieben wird ein Verfahren zum 3D-Modellieren (3D dreidimensional). Ausführungsformen des Verfahrens sind konfiguriert zum Empfangen einer Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung, Durchführen einer physikalischen Simulation auf Grundlage der Manipulationseingabe, wobei die physikalische Simulation mehrere Simulationsschritte umfasst, die auf Grundlage eines Satzes von Bewegungsrandbedingungen, die für die statisch 3D-modellierende Anwendung konfiguriert sind, durchgeführt werden, und Vornehmen einer Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage der physikalischen Simulation.
  • Beschrieben wird eine Einrichtung zum 3D-Modellieren. Die Einrichtung beinhaltet einen Prozessor, einen Speicher in elektronischer Kommunikation mit dem Prozessor und Anweisungen, die in dem Speicher gespeichert sind. Die Anweisungen sind betreibbar zum Veranlassen des Prozessors zum Empfangen einer Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung, Durchführen einer physikalischen Simulation auf Grundlage der Manipulationseingabe, wobei die physikalische Simulation mehrere Simulationsschritte umfasst, die auf Grundlage eines Satzes von Bewegungsrandbedingungen, die für die statisch 3D-modellierende Anwendung konfiguriert sind, durchgeführt werden, und Vornehmen einer Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage der physikalischen Simulation.
  • Beschrieben wird ein nichttemporäres computerlesbares Medium, das Code zum 3D-Modellieren speichert. Bei einigen Beispielen umfasst der Code Anweisungen, die von einem Prozessor ausführbar sind, zum: Empfangen einer Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung, Durchführen einer physikalischen Simulation auf Grundlage der Manipulationseingabe, wobei die physikalische Simulation mehrere Simulationsschritte umfasst, die auf Grundlage eines Satzes von Bewegungsrandbedingungen, die für die statisch 3D-modellierende Anwendung konfiguriert sind, durchgeführt werden, und Vornehmen einer Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage der physikalischen Simulation.
  • Einige Beispiele für das Verfahren, die Einrichtung und das nichttemporäre computerlesbare Medium, die vorstehend beschrieben worden sind, beinhalten zudem ein Identifizieren einer Schwellenanzahl von Simulationsschritten und einer Zielbedingung. Einige Beispiele beinhalten des Weiteren ein Durchführen der mehreren Simulationsschritte. Einige Beispiele beinhalten des Weiteren ein Bestimmen, dass die Schwellenanzahl von Simulationsschritten nicht erfüllt worden ist oder dass die Zielbedingung nicht erfüllt worden ist. Einige Beispiele beinhalten des Weiteren ein Beenden der physikalischen Simulation auf Grundlage der Bestimmung.
  • Einige Beispiele für das Verfahren, die Einrichtung und das nichttemporäre computerlesbare Medium, die vorstehend beschrieben worden sind, beinhalten des Weiteren ein Identifizieren eines Satzes von Simulationsparametern für jeden der mehreren Simulationsschritte, wobei die mehreren Simulationsschritte auf Grundlage des entsprechenden Satzes von Simulationsparametern durchgeführt werden. Bei einigen Beispielen beinhaltet der Satz von Simulationsparametern einen Zielort und eine Federkraft.
  • Einige Beispiele für das Verfahren, die Einrichtung und das nichttemporäre computerlesbare Medium, die vorstehend beschrieben worden sind, beinhalten des Weiteren ein Identifizieren eines ersten Satzes von Simulationsparametern auf Grundlage der Manipulationseingabe. Einige Beispiele beinhalten des Weiteren ein Durchführen eines ersten Simulationsschrittes der mehreren Simulationsschritte auf Grundlage des ersten Satzes von Simulationsparametern. Einige Beispiele beinhalten des Weiteren ein Bestimmen, dass eine Ausgabe des ersten Simulationsschrittes valide ist. Einige Beispiele beinhalten des Weiteren ein Identifizieren eines zweiten Satzes von Simulationsparametern auf Grundlage der Manipulationseingabe, der Ausgabe des ersten Simulationsschrittes und der Bestimmung, dass die Ausgabe des ersten Simulationsschrittes valide ist. Einige Beispiele beinhalten des Weiteren ein Durchführen eines zweiten Simulationsschrittes auf Grundlage des zweiten Satzes von Simulationsparametern.
  • Einige Beispiele für das Verfahren, die Einrichtung und das nichttemporäre computerlesbare Medium, die vorstehend beschrieben worden sind, beinhalten des Weiteren ein Durchführen einer Randbedingungsminimierungsberechnung an der Ausgabe des ersten Simulationsschrittes, wobei die Bestimmung, dass die Ausgabe des ersten Simulationsschrittes valide ist, auf der Randbedingungsminimierungsberechnung beruht.
  • Einige Beispiele für das Verfahren, die Einrichtung und das nichttemporäre computerlesbare Medium, die vorstehend beschrieben worden sind, beinhalten des Weiteren ein Identifizieren eines ersten Satzes von Simulationsparametern auf Grundlage der Manipulationseingabe. Einige Beispiele beinhalten des Weiteren ein Durchführen eines ersten Simulationsschrittes der mehreren Simulationsschritte auf Grundlage des ersten Satzes von Simulationsparametern. Einige Beispiele beinhalten des Weiteren ein Bestimmen, dass eine Ausgabe des ersten Simulationsschrittes nicht valide ist. Einige Beispiele beinhalten des Weiteren ein Präzisieren der Ausgabe des ersten Simulationsschrittes auf Grundlage der Bestimmung, dass die Ausgabe des ersten Simulationsschrittes nicht valide ist.
  • Einige Beispiele für das Verfahren, die Einrichtung und das nichttemporäre computerlesbare Medium, die vorstehend beschrieben worden sind, beinhalten des Weiteren ein Durchführen einer Randbedingungsminimierungsberechnung an der Ausgabe des ersten Simulationsschrittes, wobei die Bestimmung, dass die Ausgabe des ersten Simulationsschrittes nicht valide ist, auf der Randbedingungsminimierungsberechnung beruht.
  • Einige Beispiele für das Verfahren, die Einrichtung und das nichttemporäre computerlesbare Medium, die vorstehend beschrieben worden sind, beinhalten des Weiteren ein Generieren eines Standbildes der Szene auf Grundlage der vorgenommenen Änderung.
  • Einige Beispiele für das Verfahren, die Einrichtung und das nichttemporäre computerlesbare Medium, die vorstehend beschrieben worden sind, beinhalten des Weiteren ein Empfangen einer Nutzermodusauswahleingabe, die einen Simulationsmodus aus einem Satz von Modi, der den Simulationsmodus und einen Direktmanipulationsmodus beinhaltet, auswählt, wobei die physikalische Simulation auf Grundlage der Auswahl des Simulationsmodus durchgeführt wird und der Direktmanipulationsmodus die physikalische Simulation nicht einsetzt.
  • Bei einigen Beispielen beinhaltet die Szene mehrere Objekte, beruht die physikalische Simulation auf den mehreren Objekten, und beinhaltet die Änderung an der Szene ein Anpassen einer Position oder einer Orientierung eines jeden der mehreren Objekte.
  • Bei einigen Beispielen umfasst die Manipulationseingabe einen Direktmanipulationsbefehl für die statisch 3D-modellierende Anwendung unabhängig von der physikalischen Simulation.
  • Einige Beispiele für das Verfahren, die Einrichtung und das nichttemporäre computerlesbare Medium, die vorstehend beschrieben worden sind, beinhalten des Weiteren ein Erfassen einer oder mehrerer Bewegungseingaben von einer Eingabevorrichtung, wobei die Manipulationseingabe die eine oder die mehreren Bewegungseingaben beinhaltet.
  • Beschrieben wird ein Verfahren zum 3D-Modellieren. Ausführungsformen des Verfahrens sind konfiguriert zum Empfangen einer Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung, Identifizieren eines Satzes von Bewegungsrandbedingungen, Durchführen von mehreren Simulationsschritten auf Grundlage der Manipulationseingabe und der Bewegungsrandbedingungen, wobei jeder der mehreren Simulationsschritte auf Grundlage eines anderen Satzes von Simulationsparametern durchgeführt wird, und Vornehmen einer Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage eines Ergebnisses der mehreren Simulationsschritte.
  • Beschrieben wird eine Einrichtung zum 3D-Modellieren. Die Einrichtung beinhaltet einen Prozessor, einen Speicher in elektronischer Kommunikation mit dem Prozessor und Anweisungen, die in dem Speicher gespeichert sind. Die Anweisungen sind betreibbar zum Veranlassen des Prozessors zum Empfangen einer Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung, Identifizieren eines Satzes von Bewegungsrandbedingungen, Durchführen von mehreren Simulationsschritten auf Grundlage der Manipulationseingabe und der Bewegungsrandbedingungen, wobei jeder der mehreren Simulationsschritte auf Grundlage eines anderen Satzes von Simulationsparametern durchgeführt wird, und Vornehmen einer Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage eines Ergebnisses der mehreren Simulationsschritte.
  • Beschrieben wird ein nichttemporäres computerlesbares Medium, das Code zum 3D-Modellieren speichert. Bei einigen Beispielen umfasst der Code Anweisungen, die von einem Prozessor ausführbar sind, zum: Empfangen einer Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung, Identifizieren eines Satzes von Bewegungsrandbedingungen, Durchführen von mehreren Simulationsschritten auf Grundlage der Manipulationseingabe und der Bewegungsrandbedingungen, wobei jeder der mehreren Simulationsschritte auf Grundlage eines anderen Satzes von Simulationsparametern durchgeführt wird, und Vornehmen einer Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage eines Ergebnisses der mehreren Simulationsschritte.
  • Einige Beispiele für das Verfahren, die Einrichtung und das nichttemporäre computerlesbare Medium, die vorstehend beschrieben worden sind, beinhalten des Weiteren ein Empfangen einer Eingabe von einem Nutzer, die eine oder mehrere der Bewegungsrandbedingungen spezifiziert, wobei eine physikalische Simulation auf Grundlage der empfangenen Eingabe durchgeführt wird.
  • Bei einigen Beispielen verhindern die Bewegungsrandbedingungen, dass verschiedene Objekte denselben Raum einnehmen. Bei einigen Beispielen verhindern die Bewegungsrandbedingungen, dass ein Impuls von einem Objekt auf ein anderes Objekt übertragen wird.
  • Bei einigen Beispielen umfassen die Bewegungsrandbedingungen einen Rayleigh-Dämpfungsparameter, der eine Geschwindigkeit wenigstens eines der Objekte um über 90% während eines jeden der mehreren Simulationsschritte verringert.
  • Beschrieben wird eine Einrichtung zum 3D-Modellieren. Die Einrichtung beinhaltet eine 3D-modellierende Anwendung mit Konfigurierung zum Darstellen einer 3D-Szene, eine Physik-Engine mit Konfigurierung zum Durchführen einer physikalischen Simulation an der 3D-Szene auf Grundlage einer Manipulationseingabe von der 3D-modellierenden Anwendung, wobei die physikalische Simulation mehrere Simulationsschritte umfasst, die auf Grundlage eines Satzes von Bewegungsrandbedingungen durchgeführt werden, und eine Schnittstellenkomponente mit Konfigurierung zum Umwandeln der Manipulationseingabe von der 3D-modellierenden Anwendung in einen Satz von Parametern zum Durchführen der physikalischen Simulation.
  • Beschrieben wird ein Verfahren zum Bereitstellen einer Einrichtung zum 3D-Modellieren. Das Verfahren beinhaltet eine 3D-modellierende Anwendung mit Konfigurierung zum Darstellen einer 3D-Szene, eine Physik-Engine mit Konfigurierung zum Durchführen einer physikalischen Simulation an der 3D-Szene auf Grundlage einer Manipulationseingabe von der 3D-modellierenden Anwendung, wobei die physikalische Simulation mehrere Simulationsschritte umfasst, die auf Grundlage eines Satzes von Bewegungsrandbedingungen durchgeführt werden, und eine Schnittstellenkomponente mit Konfigurierung zum Umwandeln der Manipulationseingabe von der 3D-modellierenden Anwendung in einen Satz von Parametern zum Durchführen der physikalischen Simulation.
  • Bei einigen Beispielen ist die Schnittstellenkomponente des Weiteren konfiguriert zum Umwandeln einer Ausgabe der physikalischen Simulation in einen Änderungsbefehl innerhalb der 3D-modellierenden Anwendung.
  • Die Beschreibung und die Figuren, die hier angegeben sind, stellen exemplarische Konfigurierungen und nicht alle Implementierungen innerhalb des Umfanges der Ansprüche dar. Die Vorgänge und Schritte können beispielsweise umgeordnet, kombiniert oder auf andere Weise abgewandelt werden. Strukturen und Vorrichtungen können zudem in Form von Blockdiagrammen dargestellt werden, um die Beziehung zwischen Komponenten darzustellen und ein Unklarwerden der beschriebenen Konzepte zu vermeiden. Ähnliche Komponenten oder Merkmale können denselben Namen tragen, können jedoch mit verschiedenen Bezugszeichen entsprechend verschiedenen Figuren bezeichnet sein.
  • Einige Abwandlungen an der Offenbarung erschließen sich einem Fachmann auf dem Gebiet ohne Weiteres, wobei die hier definierten Prinzipien auch auf andere Abwandlungen angewendet werden können, ohne vom Umfang der Offenbarung abzugehen. Die Offenbarung ist nicht auf die hier beschriebenen Beispiele und Ausgestaltungen beschränkt, sondern soll für den breitesten Umfang, der mit den hier offenbarten Prinzipien und neuartigen Merkmalen konsistent ist, gelten.
  • Die beschriebenen Verfahren können von Vorrichtungen implementiert oder durchgeführt werden, die einen Allzweckprozessor, einen digitalen Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA) oder eine andere programmierbare Logikvorrichtung, ein diskretes Gate oder eine Transistorlogik, diskrete Hardwarekomponenten oder eine beliebige Kombination hieraus umfassen. Ein Allzweckprozessor kann ein Mikroprozessor, ein herkömmlicher Prozessor, ein Controller, ein Mikrocontroller oder eine Zustandsmaschine (state machine) sein. Implementiert sein kann ein Prozessor auch als Kombination aus Rechenvorrichtungen (beispielsweise als Kombination eines DSP und eines Mikroprozessors, mehrerer Mikroprozessoren, eines oder mehrerer Mikroprozessoren in Zusammenwirkung mit einem DSP-Kern oder einer beliebigen anderen derartigen Konfiguration). Daher können die hier beschriebenen Funktionen in Hardware oder Software implementiert sein und können von einem Prozessor, einer Firmware oder einer beliebigen Kombination hieraus ausgeführt werden. Bei Implementierung in Software, die von einem Prozessor ausgeführt wird, können die Funktionen in Form von Anweisungen oder Code auf einem computerlesbaren Medium gespeichert sein.
  • Computerlesbare Medien beinhalten sowohl nichttemporäre Computerspeichermedien wie auch Kommunikationsmedien, darunter ein beliebiges Medium, das den Transfer von Code oder Daten erleichtert. Ein nichttemporäres Speichermedium kann ein beliebiges verfügbares Medium sein, auf das ein Computer zugreifen kann. Umfassen können nichttemporäre computerlesbare Medien beispielsweise einen Speicher mit wahlfreiem Zugriff (RAM), einen Nur-Lese-Speicher (ROM), einen elektrisch löschbaren, programmierbaren Nur-Lese-Speicher (EEPROM), eine Compact-Disc (CD) oder einen anderen optischen Plattenspeicher, einen magnetischen Plattenspeicher oder ein beliebiges anderes nichttemporäres Medium zum Tragen oder Speichern von Daten oder Code.
  • Zudem können verbindende Komponenten korrekterweise auch als computerlesbare Medien bezeichnet werden. Werden beispielsweise Code oder Daten von einer Webseite, einem Server oder einer anderen Remote-Quelle unter Nutzung eines Koaxialkabels, eines faseroptischen Kabels, einer Twisted-Pair-Verbindung, einer digitalen Teilnehmerleitung (DSL) oder einer Drahtlostechnologie wie infrarote, funkbasierte oder Mikrowellensignale übertragen, so sind auch das Koaxialkabel, das faseroptische Kabel, die Twisted-Pair-Verbindung, die DSL oder die Drahtlostechnologie in der Definition des Mediums beinhaltet. Kombinationen aus Medien sind ebenfalls in computerlesbaren Medien beinhaltet.
  • In der vorliegenden Offenbarung und den nachfolgenden Ansprüchen bezeichnet das Wort „oder“ eine inklusive Liste, weshalb beispielsweise eine Liste mit X, Y oder Z Folgendes bezeichnet: X oder Y oder Z oder XY oder XZ oder YZ oder XYZ. Der Ausdruck „auf Grundlage von / beruhen auf“ wird zudem nicht zur Darstellung eines geschlossenen Satzes von Bedingungen benutzt. Ein Schritt, der derart beschrieben ist, dass er „auf Grundlage einer Bedingung A“ gegeben ist oder „auf einer Bedingung A beruht“, kann beispielsweise sowohl auf der Bedingung A wie auch einer Bedingung B beruhen. Mit anderen Worten, der Ausdruck „auf Grundlage von / beruhen auf“ soll derart gedeutet werden, dass er „wenigstens teilweise auf Grundlage von / wenigstens teilweise beruhen auf bedeutet. Zudem bedeuten die Wörter „ein(e)“ „wenigstens ein(e)“.

Claims (20)

  1. Verfahren zum 3D-Modellieren (3D dreidimensional), umfassend: Empfangen einer Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung; Durchführen einer physikalischen Simulation auf Grundlage der Manipulationseingabe, wobei die physikalische Simulation mehrere Simulationsschritte umfasst, die auf Grundlage eines Satzes von Bewegungsrandbedingungen, die für die statisch 3D-modellierende Anwendung konfiguriert sind, durchgeführt werden; und Vornehmen einer Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage der physikalischen Simulation.
  2. Verfahren nach Anspruch 1, des Weiteren umfassend: Identifizieren einer Schwellenanzahl von Simulationsschritten und einer Zielbedingung; Darstellen der mehreren Simulationsschritte; Bestimmen, dass die Schwellenanzahl von Simulationsschritten erfüllt worden ist oder dass die Zielbedingung erfüllt worden ist; und Beenden der physikalischen Simulation auf Grundlage der Bestimmung.
  3. Verfahren nach Anspruch 1 oder 2, des Weiteren umfassend: Identifizieren eines Satzes von Simulationsparametern für jeden der mehreren Simulationsschritte, wobei die Simulationsschritte auf Grundlage eines entsprechenden Satzes von Simulationsparametern durchgeführt werden.
  4. Verfahren nach Anspruch 3, wobei: der Satz von Simulationsparametern einen Zielort und eine Federkraft beinhaltet.
  5. Verfahren nach einem der vorhergehenden Ansprüche, des Weiteren umfassend: Identifizieren eines ersten Satzes von Simulationsparametern auf Grundlage der Manipulationseingabe; Durchführen eines ersten Simulationsschrittes der mehreren Simulationsschritte auf Grundlage des ersten Satzes von Simulationsparametern; Bestimmen, dass eine Ausgabe des ersten Simulationsschrittes valide ist; Identifizieren eines zweiten Satzes von Simulationsparametern auf Grundlage der Manipulationseingabe, der Ausgabe des ersten Simulationsschrittes und der Bestimmung, dass die Ausgabe des ersten Simulationsschrittes valide ist; und Durchführen eines zweiten Simulationsschrittes auf Grundlage des zweiten Satzes von Simulationsparametern.
  6. Verfahren nach Anspruch 5, des Weiteren umfassend: Durchführen einer Randbedingungsminimierungsberechnung an der Ausgabe des ersten Simulationsschrittes, wobei die Bestimmung, dass die Ausgabe des ersten Simulationsschrittes valide ist, auf der Randbedingungsminimierungsberechnung beruht.
  7. Verfahren nach einem der vorhergehenden Ansprüche, des Weiteren umfassend: Identifizieren eines ersten Satzes von Simulationsparametern auf Grundlage der Manipulationseingabe; Durchführen eines ersten Simulationsschrittes der mehreren Simulationsschritte auf Grundlage des ersten Satzes von Simulationsparametern; Bestimmen, dass eine Ausgabe des ersten Simulationsschrittes nicht valide ist; und Präzisieren der Ausgabe des ersten Simulationsschrittes auf Grundlage der Bestimmung, dass die Ausgabe des ersten Simulationsschrittes nicht valide ist.
  8. Verfahren nach Anspruch 7, des Weiteren umfassend: Durchführen einer Randbedingungsminimierungsberechnung an der Ausgabe des ersten Simulationsschrittes, wobei die Bestimmung, dass die Ausgabe des ersten Simulationsschrittes nicht valide ist, auf der Randbedingungsminimierungsberechnung beruht.
  9. Verfahren nach einem der vorhergehenden Ansprüche, des Weiteren umfassend: Generieren eines Standbildes der Szene auf Grundlage der vorgenommenen Änderung.
  10. Verfahren nach einem der vorhergehenden Ansprüche, des Weiteren umfassend: Empfangen einer Nutzermodusauswahleingabe, die einen Simulationsmodus aus einem Satz von Modi, der den Simulationsmodus und einen Direktmanipulationsmodus beinhaltet, auswählt, wobei die physikalische Simulation auf Grundlage der Auswahl des Simulationsmodus durchgeführt wird und der Direktmanipulationsmodus die physikalische Simulation nicht einsetzt.
  11. Verfahren nach einem der vorhergehenden Ansprüche, wobei: die Szene mehrere Objekte beinhaltet, die physikalische Simulation auf den mehreren Objekten beruht und die Änderung an der Szene ein Anpassen einer Position oder einer Orientierung eines jeden der mehreren Objekte beinhaltet.
  12. Verfahren nach einem der vorhergehenden Ansprüche, wobei: die Manipulationseingabe einen Direktmanipulationsbefehl für die statisch 3D-modellierende Anwendung unabhängig von der physikalischen Simulation umfasst.
  13. Verfahren nach einem der vorhergehenden Ansprüche, des Weiteren umfassend: Erfassen einer oder mehrerer Bewegungseingaben von einer Eingabevorrichtung, wobei die Manipulationseingabe die eine oder die mehreren Bewegungseingaben beinhaltet.
  14. Verfahren zum 3D-Modellieren (3D dreidimensional), umfassend: Empfangen einer Manipulationseingabe zum Bearbeiten einer Szene in einer statisch 3D-modellierenden Anwendung; Identifizieren eines Satzes von Bewegungsrandbedingungen; Durchführen von mehreren Simulationsschritten auf Grundlage der Manipulationseingabe und der Bewegungsrandbedingungen, wobei jeder der mehreren Simulationsschritte auf Grundlage eines anderen Satzes von Simulationsparametern durchgeführt wird; und Vornehmen einer Änderung an der Szene in der statisch 3D-modellierenden Anwendung auf Grundlage eines Ergebnisses der mehreren Simulationsschritte.
  15. Verfahren nach Anspruch 14, des Weiteren umfassend: Empfangen einer Eingabe von einem Nutzer, die eine oder mehrere der Bewegungsrandbedingungen spezifiziert, wobei eine physikalische Simulation auf Grundlage der empfangenen Eingabe durchgeführt wird.
  16. Verfahren nach Anspruch 14 oder 15, wobei: die Bewegungsrandbedingungen verhindern, dass verschiedene Objekte denselben Raum einnehmen.
  17. Verfahren nach einem der Ansprüche 14 bis 16, wobei: die Bewegungsrandbedingungen verhindern, dass ein Impuls von einem Objekt auf ein anderes Objekt übertragen wird.
  18. Verfahren nach einem der Ansprüche 14 bis 17, wobei: die Bewegungsrandbedingungen einen Rayleigh-Dämpfungsparameter umfassen, der eine Geschwindigkeit wenigstens eines Objektes um über 90% während eines jeden der mehreren Simulationsschritte verringert.
  19. Einrichtung zum 3D-Modellieren (3D dreidimensional), umfassend: eine 3D-modellierende Anwendung, die zum Darstellen einer 3D-Szene konfiguriert ist; eine Physik-Engine, die zum Durchführen einer physikalischen Simulation an der 3D-Szene auf Grundlage einer Manipulationseingabe von der 3D-modellierenden Anwendung konfiguriert ist, wobei die physikalische Simulation mehrere Simulationsschritte umfasst, die auf Grundlage eines Satzes von Bewegungsrandbedingungen durchgeführt werden; und eine Schnittstellenkomponente, die zum Umwandeln der Manipulationseingabe von der 3D-modellierenden Anwendung in einen Satz von Parametern zum Durchführen der physikalischen Simulation konfiguriert ist.
  20. Einrichtung nach Anspruch 19, wobei: die Schnittstellenkomponente des Weiteren konfiguriert ist zum Umwandeln einer Ausgabe der physikalischen Simulation in einen Änderungsbefehl innerhalb der 3D-modellierenden Anwendung.
DE102021004026.0A 2020-10-16 2021-08-04 Physikbasierte Manipulation Pending DE102021004026A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/072,729 US11657588B2 (en) 2020-10-16 2020-10-16 Physics based manipulation
US17/072,729 2020-10-16

Publications (1)

Publication Number Publication Date
DE102021004026A1 true DE102021004026A1 (de) 2022-04-21

Family

ID=78049482

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021004026.0A Pending DE102021004026A1 (de) 2020-10-16 2021-08-04 Physikbasierte Manipulation

Country Status (5)

Country Link
US (1) US11657588B2 (de)
CN (1) CN114373053A (de)
AU (1) AU2021215129A1 (de)
DE (1) DE102021004026A1 (de)
GB (1) GB2601595A (de)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788071B2 (en) * 2004-12-03 2010-08-31 Telekinesys Research Limited Physics simulation apparatus and method
US8000947B1 (en) * 2008-05-22 2011-08-16 Electronic Arts Inc. Particle-based cloth simulation using verlet integration with fixed and stiff-spring constraints supporting collision detection and reaction with projectiles in sports video games
US20140078144A1 (en) * 2012-09-14 2014-03-20 Squee, Inc. Systems and methods for avatar creation
US9741148B2 (en) * 2015-09-24 2017-08-22 Unity IPR ApS Onion skin animation platform and time bar tool
WO2018017626A2 (en) 2016-07-18 2018-01-25 Patrick Baudisch System and method for editing 3d models
DE112020000725T5 (de) 2019-02-08 2022-01-05 Apple Inc. Objektpositionierung und bewegung in dreidimensionalem inhalt
US11875094B2 (en) * 2019-09-19 2024-01-16 Microsoft Technology Licensing, Llc Minimization function for friction solving
WO2021067438A1 (en) * 2019-09-30 2021-04-08 Mako Surgical Corp. Systems and methods for guiding movement of a tool

Also Published As

Publication number Publication date
CN114373053A (zh) 2022-04-19
AU2021215129A1 (en) 2022-05-05
US11657588B2 (en) 2023-05-23
GB2601595A (en) 2022-06-08
US20220122334A1 (en) 2022-04-21

Similar Documents

Publication Publication Date Title
DE60008264T2 (de) Datenaustausch zwischen cad-systemen
DE112019005750T5 (de) Erlernen des Erzeugens synthetischer Datensätze zum Trainieren neuronalerNetze
DE69534331T2 (de) Verfahren und Vorrichtung zur Hervorhebung der Einzelheit einer Baumstruktur
DE102018126342A1 (de) Transformieren von faltenden neuronalen netzen zum lernen von visuellen sequenzen
DE10004372A1 (de) Gestaltung von Kraftempfindungen für Computeranwendungen mit Geräuschen
DE112012005657T5 (de) Computerprogrammprodukt und Verfahren zum Erzeugen und Simulieren eines Modells eines Objekts
DE102018001136A1 (de) Interaktive Farbpalettenschnittstelle zum digitalen Malen
DE102019005517A1 (de) Von änderungsbasierten Heuristiken getriebene automatische und interaktive Animation
DE102020007465A1 (de) Steuern bzw. Regeln eines neuronalen Netzwerkes durch zwischengeschaltete Latenträume
DE19637463A1 (de) Verfahren zur Anzeige von geometrischen Objektoberflächen
DE10333087A1 (de) Verfahren zum automatischen Zerlegen von dynamischen Systemmodellen in Teilmodelle
DE60024514T2 (de) Aufzeichnungsmedium, Verfahren und Einrichtung zur Bildverarbeitung mit integrierten Daten zur Formmodellierung
DE102022106057A1 (de) Authentifikatorintegriertes generatives adversariales netzwerk (gan) zur sicheren deepfake-erzeugung
DE202017007534U1 (de) Multiskalige 3D-Textursynthese
DE102022003003A1 (de) Automatische Fotobearbeitung mittels sprachlicher Anweisung
DE69930352T2 (de) Verfahren und Vorrichtung zur Animierung von Videospezialeffekten
DE112021005739T5 (de) Erzeugung von peptid-basiertem impfstoff
DE60024357T2 (de) Reflexionslinienkontrolle
DE102021004026A1 (de) Physikbasierte Manipulation
DE19817583B4 (de) Verfahren und System zur Datenverarbeitung für dreidimensionale Objekte
DE3921300A1 (de) Verfahren zum drehen eines objekts in dreidimensionaler darstellung
CN109461215A (zh) 角色插画的生成方法、装置、计算机设备及存储介质
DE112020005930T5 (de) Initialisierung von arbeitsspeicher-netzwerken
DE112020007352T5 (de) Führungseinrichtung, programm und führungsverfahren
DE102022133123A1 (de) Neuronale netzwerke zum erzeugen von roboteraufgabendemonstrationen

Legal Events

Date Code Title Description
R012 Request for examination validly filed